Properties: Panopticon
The Panopticon.properties file located in the DatawatchVDDAppdata folder (i.e., c:\vizserverdata), contains majority of properties for controlling the configuration of the Panopticon Visualization Server. The following properties can be overridden by updating the file.
|
|
|||||||
|
Property |
Access |
||||||
|
Attribute |
access.administrator.groups |
||||||
|
Description |
The role that is mapped to the administrator group. |
||||||
|
Default Value |
admin |
||||||
|
Property |
Access |
||||||
|
Attribute |
access.default.roles |
||||||
|
Description |
The default roles applied to all users of the server. For example, if access.default.roles=DESIGNER,ADMINISTRATOR and a user with a VIEWER role logs on to the server, then the user will simultaneously have a VIEWER, DESIGNER, and ADMINISTRATOR roles. However, if no default roles are wanted, then leave the property blank. NOTE: The roles that can be assigned in this property can only be ADMINISTRATOR, VIEWER, ANONYMOUS, and/or DESIGNER. This property is case sensitive. |
||||||
|
Default Value |
VIEWER |
||||||
|
Property |
Access |
||||||
|
Attribute |
access.designer.groups |
||||||
|
Description |
The role that is mapped to the designer group. |
||||||
|
Default Value |
designer |
||||||
|
Property |
Access |
||||||
|
Attribute |
access.viewer.groups |
||||||
|
Description |
The role that is assigned to the viewer group. |
||||||
|
Default Value |
|
||||||
|
Property |
Alert |
||||||
|
Attribute |
alert.creation.only.by.administrators |
||||||
|
Description |
Enable or disable whether only the Administrators can create alerts. |
||||||
|
Default Value |
false |
||||||
|
Property |
Alert |
||||||
|
Attribute |
alert.detailed.logging |
||||||
|
Description |
Enables or disables extra alert logging. |
||||||
|
Default Value |
false |
||||||
|
Property |
Access |
||||||
|
Attribute |
access.list.delimiter |
||||||
|
Description |
The value delimiter to use when parsing access groups. Examples: access.list.delimiter=, access.administrator.groups=group1,group2
The groups are mapped to {'group1', 'group2'}
access.list.delimiter=, access.administrator.groups=group1;group2,group3
The groups are mapped to {'group1;group2', 'group3'}
access.list.delimiter=; access.administrator.groups=group1;group2,group3
The groups are mapped to {'group1', 'group2,group3'} |
||||||
|
Default Value |
',' (comma) |
||||||
|
Property |
Cache |
||||||
|
Attribute |
cache.purge.condition |
||||||
|
Description |
Defines the condition for when the cache will be purged. Allowed values: NONE, MEMORY |
||||||
|
Default Value |
MEMORY |
||||||
|
Property |
Cache |
||||||
|
Attribute |
cache.purge.condition.memory.threshold |
||||||
|
Description |
Defines a percentual memory threshold for cache purging, when the cache.purge.condition = MEMORY. |
||||||
|
Default Value |
80 |
||||||
|
Property |
Cache |
||||||
|
Attribute |
cache.purge.enabled |
||||||
|
Description |
Enables scheduled cache purging. |
||||||
|
Default Value |
true |
||||||
|
Property |
Cache |
||||||
|
Attribute |
cache.serialization.size |
||||||
|
Description |
Data query result cache size in entries. |
||||||
|
Default Value |
100 |
||||||
|
Property |
Cache |
||||||
|
Attribute |
cache.serialization.type |
||||||
|
Description |
Data query result cache type. Allowed values: IN_MEMORY, NONE. |
||||||
|
Default Value |
IN_MEMORY |
||||||
|
Property |
Cache |
||||||
|
Attribute |
cache.service.enabled |
||||||
|
Description |
Enables or disables the service cache. |
||||||
|
Default Value |
true |
||||||
|
Property |
Cache |
||||||
|
Attribute |
cache.service.type |
||||||
|
Description |
The service cache mechanism being used. |
||||||
|
Default Value |
IN_MEMORY |
||||||
|
Property |
Cache |
||||||
|
Attribute |
cache.schedule.clear.enabled |
||||||
|
Description |
Enable the cache clearing schedule. This is scheduling the clear cache operation which will remove all the expired cache entries. |
||||||
|
Default Value |
true |
||||||
|
Property |
Cache |
||||||
|
Attribute |
cache.plugin.id |
||||||
|
Description |
The ID of the plugin that will be used to store data extracts. Possible values: BinaryTableFile-Cache. |
||||||
|
Default Value |
BinaryTableFile-Cache |
||||||
|
Property |
Cache |
||||||
|
Attribute |
cache.data.plugin.connection.type |
||||||
|
Description |
The data table cache type. Allowed values: IN_MEMORY, NONE. |
||||||
|
Default Value |
IN_MEMORY |
||||||
|
Property |
Cache |
||||||
|
Attribute |
cache.datasource.type |
||||||
|
Description |
The data source cache type. Allowed values: IN_MEMORY, NONE. |
||||||
|
Default Value |
IN_MEMORY |
||||||
|
Property |
Client Cache |
||||||
|
Attribute |
client.cache.control.age.max |
||||||
|
Description |
Controls the cache-control max-age header for static content. |
||||||
|
Default Value |
31536000 |
||||||
|
Property |
Client Data |
||||||
|
Attribute |
client.data.load.transport |
||||||
|
Description |
Configure the transportation protocol for loading data from the Web client. Possible values: WEBSOCKET, LONG_POLLING. NOTE: This property has been deprecated. Refer to Setting the Transportation Protocol for more information. |
||||||
|
Default Value |
WEBSOCKET |
||||||
|
Property |
Host Lookup |
||||||
|
Attribute |
connector.host.lookup.script.timeout |
||||||
|
Description |
The timeout (in milliseconds) to wait for the host lookup script to run and return the host info. |
||||||
|
Default Value |
5000 |
||||||
|
Property |
Host Lookup |
||||||
|
Attribute |
connector.host.lookup.scripts |
||||||
|
Description |
List of comma-separated key-value pairs, where key and value are separated by an equals sign. · Key is any name given to a host lookup script. Used inside connectors UI as Host Lookup Script. NOTE: The Host Lookup Script value can be parameterized. When a key is used in the connector, it is searched in the Panopticon.properties file and the corresponding shell script is run to get the host information. An exception is thrown if the key used in the connector is not configured in the Panopticon.properties file. · Value is the full path of the shell script that is accessible on the server. Examples: · For Windows connector. host.lookup.scripts=local=E://Data/host.bat,formatted=E://Data/hostFormatted.bat There are two keys specified in this property which are local and formatted. The shell script for the local key is host.bat which is: @echo off echo %1 After executing the host lookup script, the received connection details will be the values entered in the connector UI.
{ "host": "localhost", "port": 5001, "username": "", "password": "" } NOTES: · The port should be a number and has no double quotes. This is done to avoid unwanted casts. · Only host and port are mandatory. The shell script for the formatted key is hostFormatted.bat which is: @echo off echo { echo "host":"localhost", echo "port":5001, echo "username":"john", echo "password":" Pass1w0rd" echo } Specifying the formatted key as the Host Lookup Script value, the Host, Port, User Id, and Password entries will be disregarded.
The connection details from the host lookup script will be used instead. { "host": "localhost", "port": 5001, "username": "john", "password": "●●●●" } · For Linux connector.host.lookup.scripts=local=/etc/panopticon/appdata/host.sh,formatted=/etc/panopticon/appdata/hostFormatted.sh There are two keys specified in this property which are local and formatted. The shell script for the local key is host.sh which is: echo $@ After executing the host lookup script, the received connection details will be the values entered in the connector UI.
{ "host": "localhost", "port": 5001, "username": "", "password": "" } The shell script for the formatted key is hostFormatted.sh which is:
echo { echo \"host\":\"192.168.1.172\", echo \"port\":5001, echo \"username\":\"john\", echo \"password\":\"Pass1w0rd\" echo } Specifying the formatted key as the Host Lookup Script value, the Host, Port, User Id, and Password entries will be disregarded.
The connection details from the host lookup script will be used instead. { "host": "localhost", "port": 5001, "username": "john", "password": "●●●●" }
NOTE: Backslash is not supported in the Panopticon.properties file. Forward slash is used instead in the path of the scripts. |
||||||
|
Default Value |
|
||||||
|
Property |
Amazon Kinesis – Data Streams connector |
||||||
|
Attribute |
connector.kinesis.datastreams.accesskeyid |
||||||
|
Description |
The Access Key ID from the AWS account. |
||||||
|
Default Value |
|
||||||
|
Property |
Amazon Kinesis – Data Streams connector |
||||||
|
Attribute |
connector.kinesis.datastreams.secretaccesskey |
||||||
|
Description |
The Secret Access Key ID from the AWS account. |
||||||
|
Default Value |
|
||||||
|
Property |
Python connector |
||||||
|
Attribute |
|||||||
|
Description |
The default Python Pyro instance host address. NOTES: For connector.python.host, connector.python.password, connector.python.port, and connector.python.serializertype properties: · If set in the Panopticon.properties file, these fields will be hidden in the Python connector and will be applied to the Python transform as well. · These default Visualization Server connection properties will be applied at runtime. · These default Visualization Server connection properties will override old Python connection settings. |
||||||
|
Default Value |
|
||||||
|
Property |
Python connector |
||||||
|
Attribute |
|||||||
|
Description |
The default HMAC Key. |
||||||
|
Default Value |
|
||||||
|
Property |
Python connector |
||||||
|
Attribute |
|||||||
|
Description |
The default Python Pyro host port. |
||||||
|
Default Value |
|
||||||
|
Property |
Python connector |
||||||
|
Attribute |
connector.python.serializertype |
||||||
|
Description |
The default Python serialization type. Possible values are serpent or pickle. |
||||||
|
Default Value |
|
||||||
|
Property |
Rserve connector |
||||||
|
Attribute |
connector.rserve.host |
||||||
|
Description |
The default Rserve host address. NOTES: For connector.rserve.host, connector.rserve.password, connector.rserve.port, and connector.rserve.userid properties: · If set in the Panopticon.properties file, these fields will be hidden in the Rserve connector and will be applied to the R transform as well. · These default Visualization Server connection properties will be applied at runtime. · These default Visualization Server connection properties will override old Rserve connection settings. |
||||||
|
Default Value |
|
||||||
|
Property |
Rserve connector |
||||||
|
Attribute |
connector.rserve.password |
||||||
|
Description |
The default password that will be used to connect to the Rserve service. |
||||||
|
Default Value |
|
||||||
|
Property |
Rserve connector |
||||||
|
Attribute |
connector.rserve.port |
||||||
|
Description |
The default Rserve host port. |
||||||
|
Default Value |
|
||||||
|
Property |
Rserve connector |
||||||
|
Attribute |
connector.rserve.userid |
||||||
|
Description |
The default user Id that will be used to connect to the Rserve service. |
||||||
|
Default Value |
|
||||||
|
Property |
Error |
||||||
|
Attribute |
error.default.message |
||||||
|
Description |
Defines a generic error message override. |
||||||
|
Default Value |
|
||||||
|
Property |
Service authentication level |
||||||
|
Attribute |
authentication.role |
||||||
|
Description |
The authentication role. |
||||||
|
Default Value |
|
||||||
|
Property |
Service authentication level |
||||||
|
Attribute |
Authentication.required |
||||||
|
Description |
The property that will make the authentication required. It will force the user to login in order to use any of the services provided by the server. |
||||||
|
Default Value |
true |
||||||
|
Property |
Service authentication level |
||||||
|
Attribute |
authentication.type |
||||||
|
Description |
The type of the authentication mechanism that will be used on the Server. |
||||||
|
Default Value |
BASIC |
||||||
|
Example |
authentication.type=SAML |
||||||
|
Property |
Service authentication level |
||||||
|
Attribute |
authentication.domain |
||||||
|
Description |
The default domain information for user authentication. |
||||||
|
Default Value |
|
||||||
|
Example |
authentication.domain=company.com |
||||||
|
Property |
Authentication: Filter Token |
||||||
|
Attribute |
authentication.filter.authenticate.token |
||||||
|
Description |
Applies only if authentication.type is set to FILTER or is blank. If this property is set to true, the server will validate the token on incoming requests. If set to false, it ignores the token and authenticates based on the rest of the request instead. |
||||||
|
Default Value |
false |
||||||
|
Property |
Service authentication login request |
||||||
|
Attribute |
authentication.timeout.callback |
||||||
|
Description |
The timeout (in milliseconds) for the user between initiated login and callback. The default value is five minutes. |
||||||
|
Default Value |
300000 |
||||||
|
Property |
Authentication: SAML |
||||||
|
Attribute |
authentication.saml.serviceprovider.id |
||||||
|
Description |
The ID of the service provider configured in the IdP. |
||||||
|
Default Value |
|
||||||
|
Example |
authentication.saml.serviceprovider.id=DwchFrontLocal8080 |
||||||
|
Property |
Authentication: SAML |
||||||
|
Attribute |
authentication.saml.assertionconsumerservice.url |
||||||
|
Description |
The
URL to the Panopticon assertion consumer service. Example: http://localhost:8080/panopticon/server/rest/auth/login |
||||||
|
Default Value |
|
||||||
|
Example |
authentication.saml.assertionconsumerservice.url=http://localhost:8080/panopticon/server/rest/auth/login |
||||||
|
Property |
Authentication: SAML |
||||||
|
Attribute |
authentication.saml.identityprovider.url |
||||||
|
Description |
The URL to the IdP login service. |
||||||
|
Default Value |
|
||||||
|
Example |
authentication.saml.identityprovider.url=https://192.168.99.100:443/simplesaml/saml2/idp/SSOService.php |
||||||
|
Property |
Authentication: SAML |
||||||
|
Attribute |
authentication.saml.assertion.username |
||||||
|
Description |
User attribute for username configured in the IdP. |
||||||
|
Default Value |
|
||||||
|
Example |
authentication.saml.assertion.username=name |
||||||
|
Property |
Authentication: SAML |
||||||
|
Attribute |
authentication.saml.assertion.roles |
||||||
|
Description |
User attribute for roles configured in the IdP. |
||||||
|
Default Value |
|
||||||
|
Example |
authentication.saml.assertion.roles=roles |
||||||
|
Property |
Authentication: SAML |
||||||
|
Attribute |
authentication.saml.certificate.name |
||||||
|
Description |
The name of the certificate used to validate signature and/or sign outgoing SAML messages |
||||||
|
Default Value |
|
||||||
|
Example |
authentication.saml.certificate.name=saml-cert |
||||||
|
Property |
Authentication: SAML |
||||||
|
Attribute |
authentication.saml.certificate.password |
||||||
|
Description |
The password of the certificate used to validate signature and/or sign outgoing SAML messages. |
||||||
|
Default Value |
|
||||||
|
Example |
authentication.saml.certificate.password=samlpassword |
||||||
|
Property |
Authentication: SAML |
||||||
|
Attribute |
authentication.saml.identityprovider.logout.url |
||||||
|
Description |
The URL to the IdP logout service. |
||||||
|
Default Value |
|
||||||
|
Property |
Authentication: SAML |
||||||
|
Attribute |
authentication.saml.keystore.file |
||||||
|
Description |
The location of the Keystore file that contains the certificate. |
||||||
|
Default Value |
|
||||||
|
Example |
authentication.saml.keystore.file=D:/SAML/mykeystore.jks |
||||||
|
Property |
Authentication: SAML |
||||||
|
Attribute |
authentication.saml.keystore.password |
||||||
|
Description |
The password to the Keystore file. |
||||||
|
Default Value |
|
||||||
|
Example |
authentication.saml.keystore.password=samlpassword |
||||||
|
Property |
Authentication: SAML |
||||||
|
Attribute |
authentication.saml.challenge.required |
||||||
|
Description |
This property determines whether the IdP-first authentication with SAML is enabled or not. To enable, set this property to false. |
||||||
|
Default Value |
true |
||||||
|
Property |
Authentication: SAML |
||||||
|
Attribute |
authentication.saml.identityprovider.certificate.file |
||||||
|
Description |
Takes a file path to a certificate file that contains the IdP’s public key. |
||||||
|
Default Value |
|
||||||
|
Property |
Authentication: SAML |
||||||
|
Attribute |
authentication.saml.identityprovider.signature.validation.required |
||||||
|
Description |
Specifies whether to require a valid IdP signature to be present on the SAML response. Default value is false. |
||||||
|
Default Value |
false |
||||||
|
Property |
Authentication: SAML |
||||||
|
Attribute |
authentication.saml.provider |
||||||
|
Description |
The IdP provider. Possible values are OPENSAML, OPENAM. |
||||||
|
Default Value |
OPENSAML |
||||||
|
Property |
Authentication: SAML |
||||||
|
Attribute |
authentication.saml.keystore.type |
||||||
|
Description |
The key store type. Possible values are JKS, JCEKS, PKCS12. |
||||||
|
Default Value |
JKS |
||||||
|
Property |
Authentication: SAML |
||||||
|
Attribute |
authentication.saml.login.redirect.url |
||||||
|
Description |
Redirects the user to the specified URL after successfully logging in. This property can be left blank, in which case the user is redirected to the URL they requested to access. |
||||||
|
Default Value |
|
||||||
|
Property |
Authentication: SAML |
||||||
|
Attribute |
authentication.saml.logout.redirect.url |
||||||
|
Description |
Redirects the user back to the specified URL after logging out. This is mainly used with a proxy. In which case, the Panopticon Visualization Server does not know the endpoint which the user is going towards to, and therefore cannot redirect the user back to the Overview page. If you are using OpenAM this is required, otherwise this property can be left blank. |
||||||
|
Default Value |
|
||||||
|
Property |
Authentication: SAML |
||||||
|
Attribute |
authentication.saml.openam.meta.alias |
||||||
|
Description |
The meta alias for the IdP if you are using OpenAM. |
||||||
|
Default Value |
|
||||||
|
Property |
Authentication: SAML |
||||||
|
Attribute |
authentication.saml.protocolbinding |
||||||
|
Description |
Protocol binding for the use of SAML authentication. Possible values are HTTP-Redirect, HTTP-POST, HTTP-Artifact, HTTP-POST-SimpleSign, or SOAP. |
||||||
|
Default Value |
HTTP-Redirect |
||||||
|
Property |
Authentication: Token |
||||||
|
Attribute |
authentication.token.cookie |
||||||
|
Description |
The name of the cookie used to store the authentication cookie. Must be unique for each server instance on the host. |
||||||
|
Default Value |
|
||||||
|
Property |
Authentication: Token |
||||||
|
Attribute |
authentication.token.domain |
||||||
|
Description |
Specifies the token cookie domain. |
||||||
|
Default Value |
|
||||||
|
Property |
Authentication: Token |
||||||
|
Attribute |
authentication.token.persistence |
||||||
|
Description |
This property is used to determine if the token should persist if the browser is closed or if it should only last while the browser is open. There are two possible values: PERSISTENT and SESSION. PERSISTENT will persist the token in the browser even if the browser has been closed and reopened. SESSION will remove the token from the browser if it is shutdown. IMPORTANT: After modifying the property value to SESSION, ensure to clear the AppData/Token folder before starting the server. |
||||||
|
Default Value |
PERSISTENT |
||||||
|
Property |
Authentication: Token |
||||||
|
Attribute |
authentication.token.refreshable |
||||||
|
Description |
This property determines if the token can refresh itself. The Web client can identify if the token is about to expire and then request a new token with the existing token. A token is refreshable if the property is set to true. The token will expire and invalidate the user session if the property is set to false. |
||||||
|
Default Value |
true |
||||||
|
Property |
Authentication: Token |
||||||
|
Attribute |
authentication.token.secret |
||||||
|
Description |
The secret is used to sign the token. The secret will be auto-generated when the server starts for the first time. NOTE: This value should be kept a secret. |
||||||
|
Default Value |
Auto-generated |
||||||
|
Property |
Authentication: Token |
||||||
|
Attribute |
authentication.token.validity.seconds |
||||||
|
Description |
The number of seconds that the token should be valid. |
||||||
|
Default Value |
604800 |
||||||
|
Property |
Authentication: Token |
||||||
|
Attribute |
authentication.token.cookie.httponly |
||||||
|
Description |
This property determines how the browser will treat the cookie. If set to true, the cookie will be stored in the browser as a HttpOnly cookie and will not be available to the JavaScript. If set to false (default), the cookie will be stored in the browser as https and will be accessible to the JavaScript. |
||||||
|
Default Value |
false |
||||||
|
Property |
Authentication: Token |
||||||
|
Attribute |
authentication.token.cookie.secure |
||||||
|
Description |
The property determines how the browser will treat the cookie depending on the security of the connection. If set to true, when the browser receives a secure cookie (HttpOnly cookie), you will not be able to transmit it unless the connection is secure. |
||||||
|
Default Value |
false |
||||||
|
Property |
Authentication: Token |
||||||
|
Attribute |
authentication.token.in.login.response.body |
||||||
|
Description |
This property determines if the REST login response body should contain a token info. NOTE: Does not affect the SOAP login response body. |
||||||
|
Default Value |
false |
||||||
|
Property |
SOAP |
||||||
|
Attribute |
soap.enabled |
||||||
|
Description |
Enable or disable the SOAP interface |
||||||
|
Default Value |
true |
||||||
|
Property |
Authentication: Header |
||||||
|
Attribute |
authentication.header.username |
||||||
|
Description |
The name of the header that contains the username |
||||||
|
Default Value |
|
||||||
|
Property |
Authentication: Header |
||||||
|
Attribute |
authentication.header.validate.token |
||||||
|
Description |
If set to true, the authentication will validate the token. If set to false, the authentication of every request will be based on headers. |
||||||
|
Default Value |
|
||||||
|
Property |
Authentication: Logout |
||||||
|
Attribute |
authentication.logout.redirect.url |
||||||
|
Description |
Takes a URL as a parameter. Clicking the logout button redirects the user to the specified URL. If this property is not set, user will be returned to the start page of Panopticon. |
||||||
|
Default Value |
|
||||||
|
Property |
Authentication: Header |
||||||
|
Attribute |
authentication.header.roles |
||||||
|
Description |
The name of the header that contains all the roles. |
||||||
|
Default Value |
|
||||||
|
Property |
Authentication: Header |
||||||
|
Attribute |
authentication.header.rolesdynamic |
||||||
|
Description |
Supports the ability to create dynamic roles using free form patterns or string replacement. To create dynamic roles, use '{header value to be used}'. Example: authentication.header.rolesdynamic={HEADER_ROLES},financials,role_for_company_{HEADER_COMPANY}
Given this table:
Then the roles to create the authentication token will be the following: · designer · watcher · financials · role_for_company_industrials · role_for_company_consumers |
||||||
|
Default Value |
|
||||||
|
Property |
Authentication: Header |
||||||
|
Attribute |
authentication.header.role.delimiter |
||||||
|
Description |
The delimiter used to separate the roles. Example: role1,role2,role3 |
||||||
|
Default Value |
, (Comma) |
||||||
|
Property |
Authentication: OAuth 2.0 |
||||||
|
Attribute |
authentication.oauth2.client.id |
||||||
|
Description |
The ID of the OAuth 2.0 client. |
||||||
|
Default Value |
|
||||||
|
Property |
Authentication: OAuth 2.0 |
||||||
|
Attribute |
authentication.oauth2.client.secret |
||||||
|
Description |
The secret used by the OAuth 2.0 client. |
||||||
|
Default Value |
|
||||||
|
Property |
Authentication: OAuth 2.0 |
||||||
|
Attribute |
authentication.oauth2.identity.attribute.roles |
||||||
|
Description |
The attribute that will be extracted from the identity response and used as the role. |
||||||
|
Default Value |
|
||||||
|
Property |
Authentication: OAuth 2.0 |
||||||
|
Attribute |
authentication.oauth2.identity.attribute.roles.pattern |
||||||
|
Description |
Takes regex used to extract the roles from the OAuth 2.0 server identity response. For example, the returned string: cn=admin,ou=groups,dc=openam,dc=openidentityplatform,dc=org,cn=designer,ou=groups,dc=openam,dc=openidentityplatform,dc=org contains two roles, admin and designer The regex to extract the roles is cn=([^,]+). |
||||||
|
Default Value |
|
||||||
|
Property |
Authentication: OAuth 2.0 |
||||||
|
Attribute |
authentication.oauth2.identity.attribute.username |
||||||
|
Description |
The attribute that will be extracted from the identity response and used as the username. |
||||||
|
Default Value |
|
||||||
|
Property |
Authentication: OAuth 2.0 |
||||||
|
Attribute |
authentication.oauth2.identity.url |
||||||
|
Description |
The URL to the REST service that provides details about the authenticated user. |
||||||
|
Default Value |
|
||||||
|
Property |
Authentication: OAuth 2.0 |
||||||
|
Attribute |
authentication.oauth2.login.callback.url |
||||||
|
Description |
The callback URL. The URL should be the same as one of the specified callback URLs used by the client. The URL should refer to the Panopticon Visualization Server |
||||||
|
Default Value |
|
||||||
|
Property |
Authentication: OAuth 2.0 |
||||||
|
Attribute |
authentication.oauth2.login.response.type |
||||||
|
Description |
The response type. The only response type that is currently supported is code. |
||||||
|
Default Value |
|
||||||
|
Property |
Authentication: OAuth 2.0 |
||||||
|
Attribute |
authentication.oauth2.login.scope |
||||||
|
Description |
The requested scope. |
||||||
|
Default Value |
|
||||||
|
Property |
Authentication: OAuth 2.0 |
||||||
|
Attribute |
authentication.oauth2.login.state |
||||||
|
Description |
The requested state. |
||||||
|
Default Value |
|
||||||
|
Property |
Authentication: OAuth 2.0 |
||||||
|
Attribute |
authentication.oauth2.login.url |
||||||
|
Description |
The URL to the OAuth 2.0 login resource. |
||||||
|
Default Value |
|
||||||
|
Property |
Authentication: OAuth 2.0 |
||||||
|
Attribute |
authentication.oauth2.logout.url |
||||||
|
Description |
The URL to the OAuth 2.0 logout resource. |
||||||
|
Default Value |
|
||||||
|
Property |
Authentication: OAuth 2.0 |
||||||
|
Attribute |
authentication.oauth2.token.method |
||||||
|
Description |
The method on how the token should be retrieved. Supported values are QUERY, BODY, and HEADER. |
||||||
|
Default Value |
|
||||||
|
Property |
Authentication: OAuth 2.0 |
||||||
|
Attribute |
authentication.oauth2.token.url |
||||||
|
Description |
The URL to the OAuth 2.0 token resource. |
||||||
|
Default Value |
|
||||||
|
Property |
Authentication: OAuth 2.0 |
||||||
|
Attribute |
authentication.oauth2.login.redirect.url |
||||||
|
Description |
Redirects the user to the specified URL after successfully logging in. This property can be left blank, in which case the user is redirected to the URL they requested to access. |
||||||
|
Default Value |
|
||||||
|
Property |
Authentication: OAuth 2.0 |
||||||
|
Attribute |
authentication.oauth2.logout.redirect.url |
||||||
|
Description |
Logging out revokes the token from the authentication server if the property authentication.oauth2.logout.url is set to the revocation URL. If this property is not set, the server will only remove its own token. If none of these properties are set, the server will attempt to redirect to the start page of the Panopticon when logging out. |
||||||
|
Default Value |
|
||||||
|
Property |
Subscription |
||||||
|
Attribute |
subscription.limitation.action |
||||||
|
Description |
Controls the behavior when the subscription.limitation.limit is reached. Allowed values: EXCEPTION, PURGE |
||||||
|
Default Value |
EXCEPTION |
||||||
|
Property |
Subscription |
||||||
|
Attribute |
subscription.limitation.enabled |
||||||
|
Description |
Enables limitation of subscriptions. |
||||||
|
Default Value |
false |
||||||
|
Property |
Subscription |
||||||
|
Attribute |
subscription.limitation.limit |
||||||
|
Description |
Defines a subscription limit. |
||||||
|
Default Value |
100 |
||||||
|
Property |
Subscription |
||||||
|
Attribute |
subscription.log.slow.data.loads.seconds |
||||||
|
Description |
Logs a subscription that has been loading data for more than X seconds at a WARNING level. NOTES: · Any integer less than 1 (or an empty value) will disable the logging. · If a slow data load has been logged and then returns data, a log message at INFO level will be printed stating that a previously logged slow data load has returned data. |
||||||
|
Default Value |
60 |
||||||
|
Property |
Subscription |
||||||
|
Attribute |
subscription.maximum.failure |
||||||
|
Description |
The amount of time a subscription is allowed to fail in a row before it should be cancelled. The number will be reset to zero if data loading is successful. The maximum failure limit is used so that invalid subscription will not loop forever and fill the logs with error messages. The value -1 will disable the fail mechanism. This means that a subscription can fail endless of times and not be cancelled. |
||||||
|
Default Value |
5 |
||||||
|
Property |
Subscription |
||||||
|
Attribute |
subscription.purge.condition |
||||||
|
Description |
Defines the condition for when subscriptions will be purged. Allowed values: NONE, MEMORY |
||||||
|
Default Value |
NONE |
||||||
|
Property |
Subscription |
||||||
|
Attribute |
subscription.purge.condition.memory.threshold |
||||||
|
Description |
Defines a percentual memory threshold for subscription purging, when the subscription.purge.condition = MEMORY. |
||||||
|
Default Value |
80 |
||||||
|
Property |
Subscription |
||||||
|
Attribute |
subscription.purge.enabled |
||||||
|
Description |
Enables subscription purging. |
||||||
|
Default Value |
true |
||||||
|
Property |
Subscription |
||||||
|
Attribute |
subscription.purge.post.restart |
||||||
|
Description |
Option to re-start active subscriptions after purge. Only valid when subscription.purge.scope = ALL |
||||||
|
Default Value |
|
||||||
|
Property |
Subscription |
||||||
|
Attribute |
subscription.purge.rate |
||||||
|
Description |
Defines a fixed rate, in milliseconds. for subscription purging. |
||||||
|
Default Value |
10000 |
||||||
|
Property |
Subscription |
||||||
|
Attribute |
subscription.purge.scope |
||||||
|
Description |
Defines the scope of subscriptions to purge. Allowed values: NON_PERSISTENT_ORPHANS, ALL. |
||||||
|
Default Value |
NON_PERSISTENT_ORPHANS |
||||||
|
Property |
Subscription |
||||||
|
Attribute |
subscription.compression.enabled |
||||||
|
Description |
Enable or disable compression and encoding of subscription broadcast messages. |
||||||
|
Default Value |
true |
||||||
|
Property |
Request parameter mapping |
||||||
|
Attribute |
request.cookie.parameters.mapping.required |
||||||
|
Description |
The parameters that are required to be updated with certain cookie values. This property will only affect incoming parameters. The operation will fail if configured cookie values are not present in the request. The property should be formatted as follows: Parameter name (Value delimiter) Cookie name. |
||||||
|
Default Value |
|
||||||
|
Property |
Request parameter mapping |
||||||
|
Attribute |
request.cookie.parameters.mapping.optional |
||||||
|
Description |
The parameters that could be updated with certain cookie values. This property will only affect incoming parameters. The operation will not fail if the cookie values are not present in the request. The parameters will keep their default value instead of the configured cookie value if the cookie is not present. The property should be formatted as follows: Parameter name (Value delimiter) Cookie name. |
||||||
|
Default Value |
|
||||||
|
Property |
Request parameter mapping |
||||||
|
Attribute |
request.cookie.parameters.mapping.entry.delimiter |
||||||
|
Description |
The delimiter that separates the configuration entries. This property will only affect incoming parameters. |
||||||
|
Default Value |
, (Comma) |
||||||
|
Property |
Request parameter mapping |
||||||
|
Attribute |
request.cookie.parameters.mapping.value.delimiter |
||||||
|
Description |
The delimiter that separates the parameter name and the cookie name. This property will only affect incoming parameters. |
||||||
|
Default Value |
: (Colon) |
||||||
|
Property |
Request parameter mapping |
||||||
|
Attribute |
request.header.parameters.mapping.required |
||||||
|
Description |
The parameters that are required to be updated with certain header values. This property will only affect incoming parameters. The operation will fail if a configured header values are not present in the request. The property should be formatted as follows: Parameter name (Value delimiter) Header name. |
||||||
|
Default Value |
|
||||||
|
Property |
Request parameter mapping |
||||||
|
Attribute |
request.header.parameters.mapping.optional |
||||||
|
Description |
The parameters that could be updated with certain header values. This property will only affect incoming parameters. The operation will not fail if the header values are not present in the request. The parameters will keep their default value instead of the configured header value if the header is not present. The property should be formatted as follows: Parameter name (Value delimiter) Header name. |
||||||
|
Default Value |
|
||||||
|
Property |
Request parameter mapping |
||||||
|
Attribute |
request.header.parameters.mapping.entry.delimiter |
||||||
|
Description |
The delimiter that separates the configuration entries. This property will only affect incoming parameters. |
||||||
|
Default Value |
, (Comma) |
||||||
|
Property |
Request parameter mapping |
||||||
|
Attribute |
request.header.parameters.mapping.value.delimiter |
||||||
|
Description |
The delimiter that separates the parameter name and the header name. This property will only affect incoming parameters. |
||||||
|
Default Value |
: (Colon) |
||||||
|
Property |
Response parameter mapping |
||||||
|
Attribute |
response.operation.parameters.mapping.entry.delimiter |
||||||
|
Description |
The delimiter that separates the configuration entries. This property will only affect outgoing parameters. |
||||||
|
Default Value |
, (Comma) |
||||||
|
Property |
Response parameter mapping |
||||||
|
Attribute |
response.operation.parameters.mapping.optional |
||||||
|
Description |
The parameters that could be updated with certain Header values. This property will only affect outgoing parameters. The operation will not fail if the Header values are not present in the request. The parameters will keep their default value instead of the configured Header value if the Header is not present. The property should be formatted as follows: Parameter name (Value delimiter) Header name. |
||||||
|
Default Value |
|
||||||
|
Property |
Response parameter mapping |
||||||
|
Attribute |
response.operation.parameters.mapping.required |
||||||
|
Description |
The parameters that are required to be updated with certain Header values. This property will only affect outgoing parameters. The operation will fail if configured Header values are not present in the request. The property should be formatted as follows: Parameter name (Value delimiter) Header name. |
||||||
|
Default Value |
|
||||||
|
Property |
Response parameter mapping |
||||||
|
Attribute |
response.operation.parameters.mapping.value.delimiter |
||||||
|
Description |
The delimiter that separates the parameter name and the Header name. This property will only affect incoming parameters. |
||||||
|
Default Value |
: (Colon) |
||||||
|
Property |
REST |
||||||
|
Attribute |
rest.response.error.stacktrace.included |
||||||
|
Description |
Include the error stack trace in REST responses. |
||||||
|
Default Value |
false |
||||||
|
Property |
REST Documentation |
||||||
|
Attribute |
documentation.enabled |
||||||
|
Description |
Enable or disable the OpenAPI Specification documentation for the REST interface. |
||||||
|
Default Value |
false |
||||||
|
Property |
Alert |
||||||
|
Attribute |
email.address |
||||||
|
Description |
The email address where the alert will be sent from. |
||||||
|
Default Value |
|
||||||
|
Property |
Alert |
||||||
|
Attribute |
email.password |
||||||
|
Description |
The email password, if available. |
||||||
|
Default Value |
|
||||||
|
Property |
|
||||||
|
Attribute |
email.port |
||||||
|
Description |
The port number used by the email server. |
||||||
|
Default Value |
|
||||||
|
Property |
|
||||||
|
Attribute |
email.host |
||||||
|
Description |
The host name used by the email server. |
||||||
|
Default Value |
|
||||||
|
Property |
|
||||||
|
Attribute |
|||||||
|
Description |
The server endpoint address. This will be used to generate links in emails sent by the server, so it should be the server's or load balancer's public URL and needs to be resolvable from the email recipient's machine. For example: server.host=http://www.company.com/dashboards/ |
||||||
|
Default Value |
|
||||||
|
Property |
PDF and Image generation |
||||||
|
Attribute |
server.host.internal |
||||||
|
Description |
The local server endpoint address. To generate PDFs and images, the server fires up an external process which then makes HTTP calls to the server itself. This URL needs to be resolvable on the server itself. For example: server.host.internal=http://127.0.0.1:8080/panopticon/ |
||||||
|
Default Value |
|
||||||
|
Property |
Server |
||||||
|
Attribute |
server.id |
||||||
|
Description |
Specifies an id for the current server. The value of this property will be part of each metric entry so that it can be tied to a specific server if a server cluster is used. If no value is specified, the MAC address of the localhost network will be attempted to be used to identify the server. If this is not possible, a UUID will be generated. |
||||||
|
Default Value |
|
||||||
|
Property |
|
||||||
|
Attribute |
email.security.mode |
||||||
|
Description |
The security mode used when sending emails. Possible values: NONE, SSL, TLS. |
||||||
|
Default Value |
NONE |
||||||
|
Property |
|
||||||
|
Attribute |
email.username |
||||||
|
Description |
Email account username. |
||||||
|
Default Value |
|
||||||
|
Property |
File Upload |
||||||
|
Attribute |
file.upload.size.max.bytes |
||||||
|
Description |
Limit for files size to be uploaded through the web browser (i.e., workbooks, streams applications, streams data sources). |
||||||
|
Default Value |
30000000 |
||||||
|
Property |
Copy Image |
||||||
|
Attribute |
image.client.copy.file.timeout.seconds |
||||||
|
Description |
Specifies a timeout when producing an image or PDF. If it takes longer than the timeout, the process will be interrupted, and the image/PDF will not be produced. |
||||||
|
Default Value |
600 |
||||||
|
Property |
kdb+ Connection Pooling |
||||||
|
Attribute |
kdb.connection.pool.max.size |
||||||
|
Description |
Checks the maximum number of connections in the pool. Setting this property to 0 disables the connection pool. |
||||||
|
Default Value |
10 |
||||||
|
Property |
kdb+ Connection Pooling |
||||||
|
Attribute |
kdb.connection.pool.ttl |
||||||
|
Description |
Time to live in milliseconds for each connection instance created. |
||||||
|
Default Value |
30000 |
||||||
|
Property |
Image export |
||||||
|
Attribute |
export.image.height |
||||||
|
Description |
The default height for an exported image. |
||||||
|
Default Value |
768 |
||||||
|
Property |
Image export |
||||||
|
Attribute |
export.image.width |
||||||
|
Description |
The default width for an exported image. |
||||||
|
Default Value |
1024 |
||||||
|
Property |
Log level |
||||||
|
Attribute |
logger.level.file |
||||||
|
Description |
Controls the level that is logged to file. |
||||||
|
Default Value |
INFO |
||||||
|
Property |
Server Metrics |
||||||
|
Attribute |
metrics.authorization.level |
||||||
|
Description |
Specifies the required authorization level to get server metrics. Available values are ANONYMOUS, VIEWER, DESIGNER, ADMINISTRATOR. NOTE: This property is case sensitive. |
||||||
|
Default Value |
ADMINISTRATOR |
||||||
|
Property |
Server Metrics |
||||||
|
Attribute |
metrics.collection.rate |
||||||
|
Description |
Specifies the rate at which metrics are collected in milliseconds. |
||||||
|
Default Value |
1000 |
||||||
|
Property |
Server Metrics |
||||||
|
Attribute |
metrics.file.flush.rate |
||||||
|
Description |
Specifies how often metrics should be saved to disk in milliseconds. Only used if the metrics.publisher.type is set to FILE. |
||||||
|
Default Value |
10000 |
||||||
|
Property |
Server Metrics |
||||||
|
Attribute |
metrics.memory.queue.size |
||||||
|
Description |
Specifies how many metric entries are stored in memory. When the number of metrics goes above the specifies value, the oldest value is removed to make room for the newest one (FIFO). Only used if the metrics.publisher.type is set to MEMORY. |
||||||
|
Default Value |
1000 |
||||||
|
Property |
Server Metrics |
||||||
|
Attribute |
metrics.publisher.type |
||||||
|
Description |
Specifies the current metric publisher that is used. Available values are NONE, MEMORY, FILE, EMAIL, INFLUX_DB, JDBC, KAFKA, KDB, MQTT, REST, TEXT. |
||||||
|
Default Value |
MEMORY |
||||||
|
Property |
Server Metrics |
||||||
|
Attribute |
metrics.publisher.configuration |
||||||
|
Description |
Specifies the id for which metric publisher configuration to use. |
||||||
|
Default Value |
|
||||||
|
Property |
Authorization |
||||||
|
Attribute |
statistics.authorization.level |
||||||
|
Description |
Allows users to set the authorization level for the statistics and diagnostic REST services. Possible values include: ANONYMOUS, VIEWER, DESIGNER, ADMINISTRATOR. NOTE: This property is case sensitive. |
||||||
|
Default Value |
ADMINISTRATOR |
||||||
|
Property |
Licensing |
||||||
|
Attribute |
license.hwu.hosted |
||||||
|
Description |
Boolean stating if you wish to use Hosted or Local Altair Units licensing. Set to true if you wish to use hosted licensing. |
||||||
|
Default Value |
false |
||||||
|
Property |
Licensing |
||||||
|
Attribute |
license.hwu.hosted.authorization.username |
||||||
|
Description |
Username to the Altair One account. |
||||||
|
Default Value |
|
||||||
|
Property |
Licensing |
||||||
|
Attribute |
license.hwu.hosted.authorization.password |
||||||
|
Description |
Password to the Altair One account. |
||||||
|
Default Value |
|
||||||
|
Property |
Licensing |
||||||
|
Attribute |
license.hwu.hosted.authorization.token |
||||||
|
Description |
An authorization token generated through the Altair One admin portal. Used to authorize a machine to the Hosted Altair Units system. |
||||||
|
Default Value |
|
||||||
|
Property |
Licensing |
||||||
|
Attribute |
license.hwu.operating.system |
||||||
|
Description |
The operating system where the Panopticon Visualization Server is installed. Possible values are: WIN_X86, WIN_X64, MAC, LINUX_X64, or LINUX_ARM64 NOTE: If the Java bitness (e.g., 32-bit) is different from the operating system (e.g., 64-bit), it is recommended to add the Java bitness in this property (e.g., WIN_X86). |
||||||
|
Default Value |
|
||||||
|
Property |
Licensing |
||||||
|
Attribute |
license.hwu.uri |
||||||
|
Description |
The path where the License Server is running e.g., 6200@191.255.255.0 where the syntax is PORTNUMBER@HOST. If multiple servers are used, they should be separated by ‘;’. NOTES: Multiple License Servers are not supported when the Panopticon Visualization Server is on a Linux machine. If value is not set in the Panopticon.properties, the environment variable ALTAIR_LICENSE_PATH serves as the backup path and will be used. |
||||||
|
Default Value |
|
||||||
|
Property |
Licensing |
||||||
|
Attribute |
license.hwu.version |
||||||
|
Description |
Value must match the license version found in the Altair Units license file. |
||||||
|
Default Value |
19.0 |
||||||
|
Property |
Licensing |
||||||
|
Attribute |
license.mode |
||||||
|
Description |
The license mode. Possible values are: FILE or HWU. To use the Altair Units license, set this property to HWU. |
||||||
|
Default Value |
FILE |
||||||
|
Property |
Workbook repository |
||||||
|
Attribute |
repository.communication.secret |
||||||
|
Description |
When creating a cluster, all of the servers must have the same value set in this property. The value can be any random hard password (no specific requirements) that will be used by the servers to encrypt and decrypt a secret that enables them to create a valid token used to authenticate calls to the repository services. |
||||||
|
Default Value |
|
||||||
|
Property |
Workbook repository |
||||||
|
Attribute |
repository.migrate.archive.path |
||||||
|
Description |
Use this property if you have an older (pre 2020) server and wish to start the new server with the same workbook content as the old one, and also to import the workbooks' change history from the old server. Set the property to the absolute path to the old server's <AppData>/Archive/ directory, delete the new server's <AppData>/.repository/ directory, and start the new server. You typically use this property with the repository.migrate.workbooks.path property. See also the section on migration to the 2021 server. |
||||||
|
Default Value |
|
||||||
|
Property |
Workbook repository |
||||||
|
Attribute |
|||||||
|
Description |
Starting with version 21.0, data extracts are stored inside the repository. If this property is set to GlobalCaches (default value), or to an absolute path, the server will migrate data extracts into the repository on startup as long as the repository does not contain any previous data extracts. |
||||||
|
Default Value |
GlobalCaches |
||||||
|
Property |
Workbook repository |
||||||
|
Attribute |
repository.migrate.workbooks.path |
||||||
|
Description |
Use this property if you have an older (pre 2020) server and wish to start the new server with the same workbook content as the old one. Set the property to the absolute path to the old server's <AppData>/Workbooks/ directory, delete the new server's <AppData>/.repository/ directory, and start the new server. See also the section on migration to the 2021 server. |
||||||
|
Default Value |
|
||||||
|
Property |
Workbook repository |
||||||
|
Attribute |
repository.pack.enabled |
||||||
|
Description |
The repository tracks all changes to all workbooks. If you have a very large number of workbooks, or have kept the repository for a very long time, the sheer number of files inside the .repository subdirectory could cause the repository to become slower. Set this property to true to have the repository pack all the files into fewer larger ones for faster access. |
||||||
|
Default Value |
false |
||||||
|
Property |
Workbook repository |
||||||
|
Attribute |
repository.remote.url |
||||||
|
Description |
In a cluster, set this on the follower nodes to point to the leader node. It should be the base URL of the Panopticon web application, e.g., http://leader_server:8080/panopticon. |
||||||
|
Default Value |
|
||||||
|
Property |
Repository |
||||||
|
Attribute |
|||||||
|
Description |
Use this property with the repository.startup.apply.permissions.path to reset all existing workbook permissions on the server before applying the template. If you set it to true, the server will remove all permissions, then give users full permissions to their private folders, and the "Everyone" group full permissions to public folders. |
||||||
|
Default Value |
false |
||||||
|
Property |
Repository |
||||||
|
Attribute |
|||||||
|
Description |
Use this property with the repository.startup.apply.permissions.path to create empty workbook folders for any folders that are in the template file but do not yet exist on the server. If you don't set it to true, these folders from the template will be ignored. |
||||||
|
Default Value |
true |
||||||
|
Property |
Repository |
||||||
|
Attribute |
|||||||
|
Description |
Use this property to make the server apply workbook folder permissions from a template JSON file on startup. Workbook folder permissions in the template will overwrite any existing permissions on the server. This property will not migrate permissions from an older (pre 2020) server, you need to use the PCLI convertpermissions to generate a template file from the old permissions first. See also repository.startup.apply.permissions.clean and repository.startup.apply.permissions.create. |
||||||
|
Default Value |
|
||||||
|
Property |
Repository Import |
||||||
|
Attribute |
repository.startup.import.paths |
||||||
|
Description |
NOTE: Use this property to make the server import content at startup. This is imported on top of the existing content and will always overwrite anything that is already there. This property can be useful for example, if you have multiple servers with different content but you want the latest version of a standard set of workbooks to be deployed on all of them. This property only has effect on a stand-alone or leader server. This property is the list of paths to directories and files, separated by the system specific path separator “;” on Windows and “:” on Linux. Each directory is scanned and imported keeping its local tree structure. For example, workbooks to be imported are placed in a folder and in this property, the absolute path to that folder is specified. ADDITIONAL NOTES: · User-specific folders (e.g. “~john/”) can be targeted this way, but only if they already exist on the server. · Bundles (exz files) directly listed in the property or found in directories listed are also imported, but always to the root, with their internal structure preserved. · Files that are not legacy workbooks or bundles are ignored. · The same set of workbooks will get imported over and over (startup, user edit, restart) and for bundles (nothing changes in the history the second time), but legacy workbooks change their meta data. · The import always overwrites local changes (it resets the workbooks in the repository). · Permissions are not supported, and any folders created will have “SYSTEM” as owner. |
||||||
|
Default Value |
|
||||||
|
Property |
Timeout Session |
||||||
|
Attribute |
timeout.session.enabled |
||||||
|
Description |
Boolean value stating if timeout functionality should be used or not. |
||||||
|
Default Value |
false |
||||||
|
Property |
Timeout Session |
||||||
|
Attribute |
timeout.session.exception.delimiter |
||||||
|
Description |
The delimiter to use for the usernames stated in the timeout.session.exception.usernames property. |
||||||
|
Default Value |
, (comma) |
||||||
|
Property |
Timeout Session |
||||||
|
Attribute |
timeout.session.exception.usernames |
||||||
|
Description |
Usernames that should be excluded from the timeout functionality. Separated by the delimiter stated in the timeout.session.exception.delimiter property. |
||||||
|
Default Value |
|
||||||
|
Property |
Timeout Session |
||||||
|
Attribute |
timeout.session.minutes |
||||||
|
Description |
Minutes of inactivity before a user session is terminated by logging out the user. |
||||||
|
Default Value |
480 |
||||||
|
Property |
Timeout Session |
||||||
|
Attribute |
timeout.session.notification.minutes |
||||||
|
Description |
Minutes before a timeout that a notification about session timeout is sent to the user. |
||||||
|
Default Value |
1 |
||||||
|
Property |
WebSocket Connection |
||||||
|
Attribute |
transport.buffer.size.max.bytes |
||||||
|
Description |
Maximum size of message buffer for the WebSocket connections. |
||||||
|
Default Value |
10000000 |
||||||
|
Property |
WebSocket Connection |
||||||
|
Attribute |
transport.message.size.max.bytes |
||||||
|
Description |
Maximum size of messages for the WebSocket connections. |
||||||
|
Default Value |
1000000 |
||||||






