The generic HSP host is provided to allow a user to fully specify a client file transfer interface to an HSP server. If at all possible, use a pre-configured host specific to the target server; this will save the effort of having to research, specify, and then debug the interface.
The following action commands are available in the VersaLex application:
Command | Purpose | Underlying HSP method | |
---|---|---|---|
Host commands | PUT | Send one or more files to the host | POST |
Local commands | SET | Change an action property value | - |
CLEAR | Clears an action string property value | - | |
SYSTEM | Execute a local system command | - | |
WAIT | Pause | - | |
LCOPY | Copy one or more local files | - | |
LDELETE | Delete one or more local files | - | |
LREPLACE | Replaces bytes in one or more local files | - | |
CHECK | Check for a transfer, file, or directory (VLTrader and Harmony only) | - | |
SCRIPT | Execute a JavaScript File (VLTrader and Harmony only) | - |
HSP configuration tips
HSP transfer speeds are limited by certain configurations, including certain system settings, network card configuration and hardware (CPU, RAM, disk and network card). For Windows systems, transfer speeds are also influenced by whether Windows is running as a standalone instance or on a VM.
These tips can help you improve your system's transfer speeds.
Running in a VM
If you are running the Cleo Harmony or Cleo VLTrader application in a VM, use Linux for the HSP receiver where possible. If using Linux is not feasible, use the most recent version of Windows Server (with up-to-date drivers from the VM provider) for the HSP receiver.Network card configuration
If running the Cleo Harmony or Cleo VLTrader application in either a VM or a native OS, ensure that your network cards support Receive Side Scaling and that Receive Side Scaling is enabled in the network card configuration. If Receive Side Scaling is not enabled, individual HSP channels will not be able to scale, that is, increase the amount of data it is capable of receiving over time, which results in slow overall transfer speeds.
Windows-specific configuration
- Ensure that Windows has downloaded and applied the latest Windows updates
- Ensure the following network configuration parameters are set correctly.
Note: You can view your current network configuration by opening a command prompt and running this command as administrator:
netsh int tcp show global
- Receive Window Auto-Tuning Level
- Set the value of this parameter to normal.
- Receive-Side Scaling State
- Set the value of this parameter to enabled.
HSP Configuration
A host is configured using parameters that specify its location and how it is reached.
First activate either a trading partner-specific host or the generic HSP preconfigured host. The generic HSP host provides an interface over non-secure HSP or Secure Socket Layer (SSL) over HSP.
HSP host configuration
A host is configured using parameters that specify its location and how it is reached.
HSP Host: General Tab
- Server Address
- The address where your trading partner's server receives requests. Either a fully qualified name (recommended) or an IP address.
- Port
- The port where your trading partner's server receives requests. You can specify either a specific port number or -1 to indicate the default port for HTTP (80) or HTTP/s (443).
- Connection Type
- The kind of connection you want to use for this host.
- Forward Proxy
- The address of the forward proxy you want to use for this host.
- Default Directories
- Modify the default directories, if necessary. You can use macro variables from the drop-down lists. See Using Macro Variables for a list of the applicable macros (Default Host Directory context) and example usage. For VLTrader and Harmony, see URI File System interface overview for information about you can use a Cleo-provided or custom URI for the Inbox and/or Outbox. See Specifying default host directories for information about setting up system-level directories and custom directory macro variables.
- Inbox
- Default directory for incoming files. Enter a value directly or click … to navigate to and select a directory.
- Outbox
- Default directory for outgoing files. Enter a value directly or click … to navigate to and select a directory.
- Sentbox
- If specified, default directory for retaining sent files. Files are a copy of the original source file; any file manipulations performed as part of the send are not reflected in the sentbox copies. Enter a value directly or click … to navigate to and select a directory.
- Receivedbox
- If specified, default directory for retaining received files. Files are a copy of the final destination file; any file manipulations performed as part of the receive are reflected in the receivedbox copies. Enter a value directly or click … to navigate to and select a directory.
HSP Host: HTTP Tab
Use the HTTP tab to provide information about how your HSP host uses HTTP and HTTP/s.
- Outbound
-
- HTTP
- HTTP/s
- If the HSP server requires use of the Secure Socket Layer (SSL), select HTTP/s. Otherwise, select HTTP.
- Check certificate server name
- Indicates the system should verify that the server name in the received SSL server certificate matches the server name connected to.
- Inbound
-
- HTTP/s only
- Require your trading partner to use Secure Socket Layer (SSL) for inbound file transfers.
- Command
- The commands supported by the server. In this case, the PUT command.
- Method
- The methods unlying the the supported commands.
- Path
- The server Path for the PUT command. The Path depends on your trading partner's server Resource Path configuration defined in their HSP Service Panel. See Local Listener HSP Service.
- Parameters
- Headers
- Add custom Parameters and additional Headers as needed. The values for these fields are available on the receiving side either through the properties passed to the
ILexiComIncoming
Java API OR by accessingISessionScript.getTrigger()
in a JavaScript action scheduled for a new file arrives event.
HSP Host: Advanced Tab
See Setting advanced host properties for information about how to use and set the properties supported in all protocols. Properties available for HSP include:
- Add Mailbox Alias Directory to Inbox
- Possible values:
On
orOff
- Add Mailbox Alias Directory to Outbox
- Appends a subdirectory at the end of the host's configured outbox directory. This allows files to be sent through different mailboxes to be kept separate.
- Add Mailbox Alias Directory to Receivedbox
- Appends a subdirectory at the end of the host's configured receivedbox directory. This allows files that have been sent through different mailboxes to be kept separate.
- Add Mailbox Alias Directory to Sentbox
- Appends a subdirectory at the end of the host's configured sentbox directory. This allows files that have been sent through different mailboxes to be kept separate.
- Allow Actions To Run Concurrently
- Normally, actions and host actions within the same host are allowed to run concurrently. You can use this property to not allow actions and host actions to run concurrently.
Note: This is a Cleo Harmony and Cleo VLTrader option.
- Buffer Size (kbytes)
- The size of the data blocks (in kbytes) used to transfer the message over each channel.
- Command Retries
- If an error or exception occurs during a command, the number of times the command should be retried.
Note: Command Retries does not apply to exceptions related to TCP/IP or ISDN dial-up connections. This is because dial-up connections are managed by the framework so that they can be shared across actions.
- Connection Timeout
- The amount of time allowed for each read operation.
- Do Not Send Zero Length Files
- Indicates whether zero length files to be sent to the server should be ignored rather than processed. If the
-DEL
option is being used, any zero length file ignored will also be deleted. - Email On Check Conditions Met
- Send an email notification after running a CHECK command where the overall conditions of the check are met. See Configuring email or execute based on results.
Note: This is a Cleo Harmony and Cleo VLTrader option.
- Email On Check Conditions Not Met
- Send an email notification after running a CHECK command where the overall conditions of the check are not met. See Configuring email or execute based on results.
Note: This is a Cleo Harmony and Cleo VLTrader option.
- Email On Fail
- If an error occurs during a command, email the error condition. See Configuring email or execute based on results.
- Email On Flag
- If a flagged event occurs, email the event. See Configuring email or execute based on results.
- Email On Repetitive Action Failures
- When "Email On Fail" is enabled and the same failure occurs each time an action is run for a specific host, leaving this option unchecked suppresses emailing of the same alert multiple times. If the same email alert continues to be suppressed after 24 hours, the suppressed email alert will be sent every 24 hours and after every system restart if the failure occurs again. When the failure is resolved an email alert will be sent.
Note: This feature only suppresses multiple emails if the same failure occurs multiple times in a row. Suppression is not maintained across synchronized hosts.
- Email On Successful Copy
- Send an email notification after copying a file using LCOPY. See Configuring email or execute based on results.
- Email On Successful Receive
- Send an email notification after successfully receiving a file. See Configuring email or execute based on results.
- Email On Successful Send
- Send an email notification after successfully sending a file. See Configuring email or execute based on results.
- Execute On Check Conditions Met
- After executing a CHECK command where the overall conditions are met, run a system command. See Configuring email or execute based on results.
Note: This is a Cleo Harmony and Cleo VLTrader option.Note: Note that if multiple files contribute to the conditions being met, and one of the file macros is in the command (e.g., %file%), the system command will be executed repeatedly - once for each file.
- Execute On Check Conditions Not Met
- After executing a CHECK command where the overall conditions are not met, run a system command. See Configuring email or execute based on results.
Note: This is a Cleo Harmony and Cleo VLTrader option.
- Execute On Fail
- If an error occurs during a command, run a system command. See Configuring email or execute based on results.
- Execute On Repetitive Action Failures
-
When Execute On Fail is enabled and the same failure occurs each time an action is run for a specific host, leaving this option unchecked suppresses multiple executions of the Execute On Fail command. If suppression of execution of the command for this failure continues after 24 hours, the suppressed Execute On Fail command will be executed every 24 hours and after a system restart if the failure occurs again. When the failure is resolved, the Execute On Fail command will be executed again. Users must account for this by including the %status% macro variable for the Execute On Fail command (see Using macro variables) and then checking for a success or failure.
Note: This feature only suppresses multiple executions of the Execute On Fail command if the same failure occurs multiple times in a row. Suppression is not maintained across synchronized hosts. - Execute On Successful Copy
- After successfully copying a file using LCOPY, run a system command. This command may be used for post-processing the file. See Configuring email or execute based on results.
- Execute On Successful Receive
- After successfully receiving a file, run a system command. This command may be used for post-processing the file. See Configuring email or execute based on results.
- Execute On Successful Send
- After successfully sending a file, run a system command. This command may be used for post-processing the file. See Configuring email or execute based on results.
- Include Failure In Subject Of Email
- When specified, the exception message will be included in the email that is generated on failure.
Note: If the exception message exceeds 256 characters, it will be truncated.
- Integrity Algorithm
- When
NONE
is not specified, the content of the message will be hashed using the desired algorithm when sending and will be verified by the HSP using the same algorithm to validate the content has not been changed while in-transit. - LCOPY Archive
- If specified, contains the directory for archiving LCOPY source files.
- Log Individual LCOPY Results To Transfer Logging
- When this option is enabled, a
<send>
and<receive>
result is logged to the transfer log for each file copied.Note: This is a Cleo Harmony and Cleo VLTrader option. - Macro Date Format
- Specifies the date format to be used when the
%date%
macro is used. - Macro Time Format
- Specifies the time format to be used when the
%time%
macro is used. - Maximum Incoming Transfer Rate (kbytes/s)
- Sets the maximum incoming transfer rate in Kbytes (1024 bytes) per second for each mailbox or host. The default value of
0
does not limit the transfer rate. The Maximum Incoming Transfer Rate system setting might also limit the transfer rates. The system Maximum Incoming Transfer Rate value is used unless this setting is more restrictive. For simultaneous transfers, the number of active transfers also affects individual transfer rates. See Advanced system options. - Maximum Outgoing Transfer Rate (kbytes/s)
- Sets the maximum outgoing transfer rate in Kbytes (1024 bytes) per second for each mailbox or host. The default value of
0
does not limit the transfer rate. The system setting might also limit the transfer rates. The system Maximum Outgoing Transfer Rate value is used unless this setting is more restrictive. For simultaneous transfers, the number of active transfers will also affect individual transfer rates. See Advanced system options for more information about Maximum Outgoing Transfer Rate. - Minimum Size Per Channel (kbytes)
- Reduces the number of requested channels depending on the overall size of the file. This helps balance the efficiency of the protocol for small files. If the file is smaller than the value you set, a single request is used to transfer the file.
- Outbox Sort
- Controls the order in which multiple files are transferred for a PUT command. If
System Default
is specified, the value set on the tab takes precedence. ForAlphabetical
ordering, the file extensions are not used to determine the sorted order unless they are needed to make the filenames unique. - Partner Email Address
- The email address of the trading partner for this trading relationship. When set, this address is automatically used to send your local profile information and/or certificates to your trading partner. See Emailing a profile to your trading partner.
- Reset Connection After Timeout On Response
- When enabled will cause an immediate reset on the socket (instead of a graceful close) when a SocketTimeoutException occurs.
- Resume Failed Transfers
- When selected and a transfer fails (and Command Retries > 0), attempt to resume the transfer on a retry. If OpenPGP is enabled on the packaging tab (see Configuring mailbox packaging), the entire file is transferred instead of resuming with a partial file. The server must support the
FEAT
,SIZE
, andREST STREAM
extensions to FTP. For more information, visit http://tools.ietf.org/html/rfc3659. - Retry Delay
- The amount of time (in seconds) before a retry should be attempted.
- Reuse SSL Sessions Across Actions
- If selected, SSL sessions from previous connections to the same destination (address and port number) may be resumed to avoid costly negotiation. If unselected, only SSL sessions used in the current action to the same destination may be resumed. When unselected, a new SSL session is created for the initial command port connection.
- SSL Allow Legacy Renegotiation
- When selected, legacy renegotiation is allowed. If this property is not selected, the extension described in RFC5746 is used for renegotiation and the server must also support this extension. See RFC5746 for a description of the extension and the vulnerability it addresses.
- SSL Cipher
- Indicates a specific cipher to be used with the server for SSL key exchange, encryption, and hashing. If not set, the list of supported ciphers is presented to the server and the server picks one.
- SSL Maximum Protocol Version
- Specifies the maximum protocol version allowed. By default, this field is blank, designating that Cleo Harmony, Cleo VLTrader, or Cleo LexiCom will select the most recent version (currently TLS 1.2).
- SSL Minimum Encryption Key Size
- Specifies the minimum encryption key size allowed when selecting an SSL cipher. To prevent use of low- or medium-strength ciphers, change from the default value of
0
to112
,128
, or256
(depending on the requirement). Note that if this value is set too high, all ciphers are filtered out causing theNo suitable cipher suites are enabled
exception to occur. - SSL Minimum Protocol Version
- Specifies the minimum protocol version allowed. SSL 3.0 is the default value for compatibility with servers that do not support the more recent TLS versions 1.0, 1.1, and 1.2.
- SSL Use Record Splitting
- Indicates whether to use 1/n-1 record splitting in CBC mode as a countermeasure against the Rizzo/Duong BEAST (Browser Exploit Against SSL/TLS) attack against the SSL 3.0 / TLS 1.0 protocol. Must be turned off if the SSL library on the other side of the connection does not support the feature.
- Terminate On Fail
- If an error occurs during a command, stop the action.
Note:
Regarding non-CHECK commands: When
Terminate On Fail
is on, if a command fails,Email On Fail
andExecute On Fail
, if set, are processed, and then the action stops. WhenTerminate On Fail
is off, if a command fails,Email On Fail
andExecute On Fail
, if set, are processed, and the action continues.Regarding CHECK commands:
Terminate On Fail
is only honored if theConditionsMet
parameter is set and the result of the CHECK is classified asError
. The CHECK command is only available in the Cleo Harmony and Cleo VLTrader applications. - Unzip Use Path
- Indicates whether or not zip entry paths should be used for LCOPY -UNZIP operations. When enabled, the entry's path is added to the destination path, unless the entry contains an absolute path. In this case, the absolute path is used in place of the destination path.
- Wait For Execute On
- Indicates whether execution should wait for processing to complete within an Execute On Fail, Execute On Successful Copy,Execute On Successful Receive, or Execute On Successful Send command. Note that this option does not apply to native AS400 execution.
- Zip Comment
- Specifies the comment to be added to the zip archive file in LCOPY -ZIP operations.
- Zip Compression Level
- Controls the level of compression for LCOPY -ZIP operations. If
System Default
is specified, the value set on the takes precedence - Zip Subdirectories Into Individual Zip Files
- Indicates whether or not subdirectories should be bundled for LCOPY –ZIP –REC operations. When enabled, each first-level subdirectory (and all of its descendents) will be bundled together into an individual zip file. The name of this zip file may optionally reflect the subdirectory name if an asterisk (
*
) is placed in the destination path. Any files that are directly off the source root directory will not be copied.
HSP mailbox configuration
Configure a mailbox using parameters that allow access to the host system.
HSP Mailbox: HTTP Tab
In the mailbox's HTTP tab, the parameters and headers listed are those identified in the host HSP tab that do not have static values or special %file
and %dir
associations.
Provide Default Values for any of the parameters and headers for which it makes sense at the mailbox level. Unless an overriding value is specified within the command in an action, the default value specified here is used.
HSP Mailbox: Certificates Tab
Unlike other protocols that use signing certificates, the HSP protocol requires that a unique partner signing certificate be defined for each trading relationship. If multiple mailboxes are created for the same trading partner, a different partner signing certificate must be assigned to each mailbox.
The Certificates tab allows you to associate a trading partner's signing certificate with this mailbox and override your own Local Listener's signing certificate as necessary.
Prior to completing this tab for HSP mailbox, you must acquire your trading partner's signing certificate and create and/or provide to your trading partner your signing certificate.
- Trading Partner's Certificates
-
- Signing Certificate
- The unique partner signing certificate for this mailbox.
- My Certificates
-
- Override Local Listener Certificates
- Enables fields where you specify a signing certificate to use instead of the certificates you configured for the Local Listener. See Configuring certificates for Local Listener.
- Signing Certificate Alias
- Password
- The name of your signing certificate.
Overriding HSP Local Listener Certificates
By default, the signing certificate configured on the Certificates tab of the Local Listener panel will be the certificate used to authenticate messages sent to your trading partner. See Configuring certificates for Local Listener.
Use Override Local Listener Certificates to select alternate certificates for signing and decrypting messages with this trading partner. If you override the default certificates, do not forget to export and exchange these alternate certificates with your trading partner.
HSP Action
An action's parameters capture a repeatable transaction for your mailbox on the host system.
HSP Action: Action Tab
Use the HSP Action's Action tab to compose actions for the HSP mailbox.
Any commands specified in the host HSP tab (as well as the local commands) are available for use. See Composing an action. See also HSP Command Reference.
\s
must be used to represent the space within the command (e.g. %OPQ\scompany
represents %OPQ company
). This is done automatically in the dialog editor. If a space is left in the value, the command is not parsed correctly.HSP Command Reference
CHECK
See CHECK Command for information about this command.
CLEAR
Clear an action property string value. The cleared value only affects the commands that follow the CLEAR.
CLEAR property
- property
- Action property name with no embedded spaces.
HSP Comment
#text...
Lines in the action starting with a #
character are considered comments and will be ignored when the action executes. Lines starting with#
are generally used for documentation purposes.
LCOPY
Copy one or more files locally.
LCOPY –DEL -REC {–UNI|–APE} {-ZIP|-UNZ} "source" "destination"
- -DEL
- If the command is successful, delete the local file.
- -REC
- Recursively search all subdirectories.
- -UNI
- Ensure the copied filename is unique.
- -APE
- Append copied file to existing destination file.
- -ZIP
- Zip all the files into one or more ZIP archive files, depending on the destination specified.
- Specify ZIP comment and compression level through Zip Comment and Zip Compression Level properties. See Setting advanced host properties.
- The ZIP archive files created through the LCOPY command conform to the standard ZIP file format. Visit http://docs.oracle.com/javase/6/docs/api/java/util/zip/package-summary.html. The ZIP file format should not be confused with other popular file compression/archive formats such as GZIP, TAR, RAR, etc. The LCOPY command works only with ZIP-formatted files. In addition to the VersaLex application, there are many other software packages that can read/write ZIP-formatted files, for example, WinZip (Windows), File Roller (Linux), PKZIP and Info-ZIP (Windows/Linux/other Unix).
- In addition to standard ZIP-formatted archives, the VersaLex application also supports password-based AES- encrypted ZIP files (128-bit, 192-bit, and 256-bit). See Cryptographic Services.
- -UNZ
- Unzip the source file(s).
- All source files must be ZIP archive files.
- You cannot use this option with the
-REC
option. - Use ZIP entry paths if Unzip Use Path is set. See Setting advanced host properties.
- The ZIP archive files created through the LCOPY command conform to the standard ZIP file format (reference http://docs.oracle.com/javase/6/docs/api/java/util/zip/package-summary.html). The ZIP file format should not be confused with other popular file compression/archive formats such as GZIP, TAR, RAR, etc. The LCOPY command works only with ZIP-formatted files. In addition to the application, there are many other software packages that can read/write ZIP-formatted files, for example, WinZip (Windows), File Roller (Linux), PKZIP and Info-ZIP (Windows/Linux/other Unix).
- In addition to standard ZIP-formatted archives, the VersaLex application also supports password-based AES- encrypted ZIP files (128-bit, 192-bit, and 256-bit). See Encryption of Zip Files for more information on this capability.
- "source"
- Source path
- Path can be to a filename or to a directory
- You can use
*
and?
, or a regular expression when you specify a filename. See Using wildcards and regular expressions for additional information. - If you specify a relative path, the command uses the default inbox.
- You can use macro variables. See Using macro variables (Source File context) for a list of the applicable macros.
- If the path contains a space, dash (-), comma (,), or equal sign (=), it must be enclosed with double quotes ("...").
- "destination"
- Destination path.
- Path can be to a filename or to a directory.
- If you specify a relative path, the command uses the default inbox.
- You can use macro variables. See Using macro variables (Source File context) for a list of the applicable macros.
- You can use a single
*
within the destination path. In this context, it is not a wildcard. Rather, it is used to substitute a source file name or a source subdirectory name. When*
is used in conjunction with both the-REC
and-ZIP
options, andZip Subdirectories Into Individual Zip Files
is enabled, then*
is substituted with each first-level subdirectory name. When*
is not used for bundling zipped subdirectories, then it is used as a shortcut for the%sourcefilename%
or%srcfilename%
macro. Only one*
is allowed in the destination path. See Setting advanced host properties. - When copying a file without the
-APE
option, or when copying a file with the-APE
option where the destination file does not already exist, a temporary file name is used while the copy operation is taking place. This temporary file is placed in the destination directory. Its name begins with the product name and ends with .tmp. Once the copy completes successfully, the temporary file is renamed to the destination name. - If the path contains a space, dash (-), comma (,), or equal sign (=), it must be enclosed with double quotes ("...").
LDELETE
Delete one or more files locally.
LDELETE "source"
- "source"
- Source path.
- Path can be a filename or a directory.
- You can use
*
and?
, or a regular expression when you specify a filename. See Using wildcards and regular expressions for additional information. - If you specify a relative path, the command uses the default inbox.
- Use of macro variables is supported. See Using macro variables (Source File context) for a list of the applicable macros.
- If the path contains a space, dash (-), comma (,), or equal sign (=), it must be enclosed with double quotes ("...").
LREPLACE
Replace bytes in one or more files locally.
LREPLACE "source" Replace="input bytes" With="output bytes"
- "source"
- Source path.
- Path can be to a filename or to a directory.
- You can use
*
and?
, or a regular expression when you specify a filename. See Using wildcards and regular expressions for additional information. - If you specify a relative path, the command uses the default inbox.
- You can use macro variables. See Using macro variables (Source File context) for a list of the applicable macros.
- If the path contains a space, dash (-), comma (,), or equal sign (=), it must be enclosed with double quotes ("...").
- "input bytes"
- List of bytes to be replaced.
- Comma separated list of byte values (0-255).
- All bytes in comma-separated list must be found in the file in listed sequence in order to be replaced.
- "output bytes"
- List of bytes to be substituted for original
input bytes
.- Comma separated list of byte values (0-255).
- If
With
parameter is omitted, then theinput bytes
are deleted from the file.
PUT
Send one or more files to the host.
PUT -DEL -UNI "source" "destination" name=value,...
-DEL
- If the PUT is successful, delete the local file.
-UNI
- Ensure the host filename is unique.
"source"
-
Local source path.
- Path can be to a filename or to a directory.
*
and?
, or a regular expression, are supported in filename. See Using wildcards and regular expressions for additional information.- If you specify a relative path, it uses default outbox.
- Use of macro variables is supported. See Using macro variables (Source File context) for a list of the applicable macros.
If the path contains a space, dash (-), comma (,), or equal sign (=), it must be enclosed with double quotes ("...").
"destination"
- Remote destination path
If the path contains a space, dash (-), comma (,), or equal sign (=), it must be enclosed with double quotes ("...").
name=value,...
- HSP parameter=value and header=value pairs
If the underlying HSP method for the command on the server is POST, then the argument is not applicable and cannot be used. See HTTP Configuration.
SCRIPT
See SCRIPT command for information about this command.
SET
Change an action property value. The new value only affects the commands that follow the SET.
SET property=value
- property = value
- Action property and new value
- The property name must have no embedded spaces.
- The value specified remains in effect until it is set again or until the end of action.
- To reset property back to default value (host-level or system-level), specify
SET property
or
SET property=
- To clear a string property, use the CLEAR command
SYSTEM
Execute a local system command.
SYSTEM "path"
- "path"
- Local command path with arguments.
- If you specify a relative path or no path, the command uses the home directory.
- See Using operating system commands in actions for additional information
WAIT
Pause execution.
WAIT seconds
- Seconds
- Number of seconds to pause.
Comments
0 comments
Please sign in to leave a comment.