From 5ece291a561296d201410ebe972e7430c1dbce46 Mon Sep 17 00:00:00 2001 From: Chris Berkhout Date: Tue, 29 Oct 2024 10:29:28 +1100 Subject: [PATCH] [cyberarkpas] Collect monitoring data (#11478) Has the `audit` data stream collect monitoring data and route it to the `monitor` data stream. A new dashboard is added to visualize monitoring information. --- .../cyberarkpas/_dev/build/docs/README.md | 25 +- .../docker/sample_logs/audit/monitor.log | 30 + packages/cyberarkpas/changelog.yml | 5 + ...st-105-add-file-category.log-expected.json | 18 +- ...106-update-file-category.log-expected.json | 18 +- ...107-delete-file-category.log-expected.json | 3 +- .../test-124-rename-file.log-expected.json | 3 +- ...est-125-rename-file-cont.log-expected.json | 3 +- .../test-126-unlock-file.log-expected.json | 3 +- ...130-cpm-disable-password.log-expected.json | 3 +- ...t-178-get-user-s-details.log-expected.json | 3 +- .../test-180-add-user.log-expected.json | 36 +- .../test-181-update-safe.log-expected.json | 3 +- .../test-185-add-safe.log-expected.json | 6 +- .../test-187-add-folder.log-expected.json | 6 +- ...-full-gateway-connection.log-expected.json | 27 +- ...rtial-gateway-connection.log-expected.json | 3 +- ...kup-files-deletion-start.log-expected.json | 3 +- ...ackup-files-deletion-end.log-expected.json | 3 +- ...t-22-cpm-verify-password.log-expected.json | 6 +- ...23-action-on-closed-safe.log-expected.json | 9 +- ...t-24-cpm-change-password.log-expected.json | 12 +- ...est-259-add-update-group.log-expected.json | 12 +- ...est-265-add-group-member.log-expected.json | 42 +- ...-266-remove-group-member.log-expected.json | 6 +- .../test-273-remove-owner.log-expected.json | 3 +- .../test-278-add-rule.log-expected.json | 3 +- ...lear-users-history-start.log-expected.json | 6 +- ...-clear-users-history-end.log-expected.json | 6 +- ...lear-safes-history-start.log-expected.json | 3 +- ...-clear-safes-history-end.log-expected.json | 3 +- .../test-294-store-password.log-expected.json | 30 +- ...st-295-retrieve-password.log-expected.json | 39 +- .../test-300-psm-connect.log-expected.json | 51 +- .../test-302-psm-disconnect.log-expected.json | 48 +- ...304-psm-upload-recording.log-expected.json | 3 +- .../test-308-use-password.log-expected.json | 33 +- ...309-undefined-user-logon.log-expected.json | 15 +- ...1-cpm-reconcile-password.log-expected.json | 3 +- ...tor-dr-replication-start.log-expected.json | 6 +- ...nitor-dr-replication-end.log-expected.json | 6 +- ...ord-detailed-information.log-expected.json | 3 +- ...-317-reset-user-password.log-expected.json | 3 +- .../test-32-add-owner.log-expected.json | 48 +- ...cpm-auto-detection-start.log-expected.json | 3 +- ...7-cpm-auto-detection-end.log-expected.json | 3 +- .../test-33-update-owner.log-expected.json | 21 +- ...se-expiration-date-start.log-expected.json | 3 +- ...ense-expiration-date-end.log-expected.json | 3 +- ...7-monitor-fw-rules-start.log-expected.json | 6 +- ...358-monitor-fw-rules-end.log-expected.json | 6 +- .../test-359-sql-command.log-expected.json | 30 +- ...st-361-keystroke-logging.log-expected.json | 21 +- ...m-verify-password-failed.log-expected.json | 45 +- ...5-blservice-audit-record.log-expected.json | 15 +- ...st-4-user-authentication.log-expected.json | 6 +- .../test-411-window-title.log-expected.json | 3 +- ...st-412-keystroke-logging.log-expected.json | 3 +- ...t-414-cpm-verify-ssh-key.log-expected.json | 3 +- .../test-427-store-ssh-key.log-expected.json | 3 +- ...est-428-retrieve-ssh-key.log-expected.json | 9 +- ...eate-discovery-succeeded.log-expected.json | 3 +- .../test-459-general-audit.log-expected.json | 9 +- ...thentication-was-updated.log-expected.json | 3 +- ...ault-certificate-is-sha1.log-expected.json | 6 +- ...bulk-operation-succeeded.log-expected.json | 3 +- .../test-50-store-file.log-expected.json | 18 +- .../test-51-retrieve-file.log-expected.json | 9 +- .../test-52-delete-file.log-expected.json | 30 +- ...m-change-password-failed.log-expected.json | 3 +- ...st-59-clear-safe-history.log-expected.json | 9 +- ...econcile-password-failed.log-expected.json | 27 +- ...t-62-create-file-version.log-expected.json | 24 +- .../pipeline/test-7-logon.log-expected.json | 36 +- .../pipeline/test-8-logoff.log-expected.json | 45 +- .../test-88-set-password.log-expected.json | 54 +- ...-98-open-file-write-only.log-expected.json | 12 +- .../test-99-open-file.log-expected.json | 3 +- .../_dev/test/pipeline/test-common-config.yml | 5 +- .../test-legacysyslog.log-expected.json | 3 +- .../test-rfc5424syslog.log-expected.json | 12 +- .../elasticsearch/ingest_pipeline/audit.yml | 1253 +++++++++++ .../elasticsearch/ingest_pipeline/default.yml | 1193 +--------- .../data_stream/audit/manifest.yml | 10 +- .../data_stream/audit/routing_rules.yml | 7 + .../_dev/test/pipeline/test-common-config.yml | 4 + .../_dev/test/pipeline/test-monitor.log | 30 + .../pipeline/test-monitor.log-expected.json | 1504 +++++++++++++ .../elasticsearch/ingest_pipeline/default.yml | 276 +++ .../monitor/fields/base-fields.yml | 20 + .../data_stream/monitor/fields/beats.yml | 12 + .../data_stream/monitor/fields/fields.yml | 53 + .../data_stream/monitor/manifest.yml | 3 + .../data_stream/monitor/sample_event.json | 79 + packages/cyberarkpas/docs/README.md | 137 +- packages/cyberarkpas/img/monitoring.png | Bin 0 -> 205860 bytes ...-1c083996-84f6-472f-a818-4ad5060efc81.json | 1965 +++++++++++++++++ packages/cyberarkpas/manifest.yml | 22 +- 98 files changed, 6113 insertions(+), 1552 deletions(-) create mode 100644 packages/cyberarkpas/_dev/deploy/docker/sample_logs/audit/monitor.log create mode 100644 packages/cyberarkpas/data_stream/audit/elasticsearch/ingest_pipeline/audit.yml create mode 100644 packages/cyberarkpas/data_stream/audit/routing_rules.yml create mode 100644 packages/cyberarkpas/data_stream/monitor/_dev/test/pipeline/test-common-config.yml create mode 100644 packages/cyberarkpas/data_stream/monitor/_dev/test/pipeline/test-monitor.log create mode 100644 packages/cyberarkpas/data_stream/monitor/_dev/test/pipeline/test-monitor.log-expected.json create mode 100644 packages/cyberarkpas/data_stream/monitor/elasticsearch/ingest_pipeline/default.yml create mode 100644 packages/cyberarkpas/data_stream/monitor/fields/base-fields.yml create mode 100644 packages/cyberarkpas/data_stream/monitor/fields/beats.yml create mode 100644 packages/cyberarkpas/data_stream/monitor/fields/fields.yml create mode 100644 packages/cyberarkpas/data_stream/monitor/manifest.yml create mode 100644 packages/cyberarkpas/data_stream/monitor/sample_event.json create mode 100644 packages/cyberarkpas/img/monitoring.png create mode 100644 packages/cyberarkpas/kibana/dashboard/cyberarkpas-1c083996-84f6-472f-a818-4ad5060efc81.json diff --git a/packages/cyberarkpas/_dev/build/docs/README.md b/packages/cyberarkpas/_dev/build/docs/README.md index d3d37123eb3..d9893b5570a 100644 --- a/packages/cyberarkpas/_dev/build/docs/README.md +++ b/packages/cyberarkpas/_dev/build/docs/README.md @@ -1,9 +1,12 @@ # CyberArk Privileged Access Security -The CyberArk Privileged Access Security integration collects audit logs from [CyberArk's Vault](https://docs.cyberark.com/Product-Doc/OnlineHelp/Portal/Content/Resources/_TopNav/cc_Portal.htm) server. -## Audit +The CyberArk Privileged Access Security integration collects audit logs and monitoring data from [CyberArk's Vault](https://docs.cyberark.com/Product-Doc/OnlineHelp/Portal/Content/Resources/_TopNav/cc_Portal.htm) server. -The `audit` dataset receives Vault Audit logs for User and Safe activities over the syslog protocol. +## Data streams + +The `audit` data stream receives Vault Audit logs for User and Safe activities over the syslog protocol. + +It will also receive **monitoring** data from the server and route it to the `monitor` data stream (e.g. `logs-cyberarkpas.monitor-default`). ### Vault Configuration @@ -16,20 +19,28 @@ the `Server\Syslog` folder. ```ini [SYSLOG] -UseLegacySyslogFormat=No +UseLegacySyslogFormat=no SyslogTranslatorFile=Syslog\elastic-json-v1.0.xsl SyslogServerIP= SyslogServerPort= SyslogServerProtocol=TCP +SendMonitoringMessage=yes ``` For proper timestamping of events, it's recommended to use the newer RFC5424 Syslog format (`UseLegacySyslogFormat=No`). To avoid event loss, use `TCP` or `TLS` protocols instead of `UDP`. -### Example event +The sample configuration above will include monitoring data. For more information about monitoring, see +[Monitor the Vault in SIEM Applications Using Syslog](https://docs.cyberark.com/pam-self-hosted/latest/en/content/pasimp/monitoring-the-vault-using-syslog.htm). -{{event "audit"}} +### Example audit event -**Exported fields** +{{event "audit"}} {{fields "audit"}} + +### Example monitor event + +{{event "monitor"}} + +{{fields "monitor"}} diff --git a/packages/cyberarkpas/_dev/deploy/docker/sample_logs/audit/monitor.log b/packages/cyberarkpas/_dev/deploy/docker/sample_logs/audit/monitor.log new file mode 100644 index 00000000000..2d62f027633 --- /dev/null +++ b/packages/cyberarkpas/_dev/deploy/docker/sample_logs/audit/monitor.log @@ -0,0 +1,30 @@ +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:00:00","IsoTimestamp":"2024-10-15T00:00:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0000","AverageExecutionTime":"10","MaxExecutionTime":"149","AverageQueueTime":"0","MaxQueueTime":"37","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"316","CPUUsage":"7","MemoryUsage":"63","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:01:00","IsoTimestamp":"2024-10-15T00:01:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0001","AverageExecutionTime":"10","MaxExecutionTime":"196","AverageQueueTime":"0","MaxQueueTime":"12","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"302","CPUUsage":"14","MemoryUsage":"64","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:02:00","IsoTimestamp":"2024-10-15T00:02:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0002","AverageExecutionTime":"12","MaxExecutionTime":"113","AverageQueueTime":"2","MaxQueueTime":"5","NumberOfParallelTasks":"0","MaxParallelTasks":"20","TransactionCount":"315","CPUUsage":"2","MemoryUsage":"63","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:03:00","IsoTimestamp":"2024-10-15T00:03:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0003","AverageExecutionTime":"10","MaxExecutionTime":"127","AverageQueueTime":"0","MaxQueueTime":"20","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"300","CPUUsage":"4","MemoryUsage":"63","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:04:00","IsoTimestamp":"2024-10-15T00:04:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0004","AverageExecutionTime":"10","MaxExecutionTime":"199","AverageQueueTime":"0","MaxQueueTime":"47","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"117","CPUUsage":"14","MemoryUsage":"63","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"1"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:05:00","IsoTimestamp":"2024-10-15T00:05:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0005","AverageExecutionTime":"11","MaxExecutionTime":"132","AverageQueueTime":"1","MaxQueueTime":"67","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"307","CPUUsage":"5","MemoryUsage":"64","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:06:00","IsoTimestamp":"2024-10-15T00:06:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0006","AverageExecutionTime":"10","MaxExecutionTime":"110","AverageQueueTime":"0","MaxQueueTime":"95","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"316","CPUUsage":"1","MemoryUsage":"64","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:07:00","IsoTimestamp":"2024-10-15T00:07:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0007","AverageExecutionTime":"10","MaxExecutionTime":"194","AverageQueueTime":"0","MaxQueueTime":"44","NumberOfParallelTasks":"0","MaxParallelTasks":"20","TransactionCount":"302","CPUUsage":"14","MemoryUsage":"63","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:08:00","IsoTimestamp":"2024-10-15T00:08:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0008","AverageExecutionTime":"13","MaxExecutionTime":"154","AverageQueueTime":"3","MaxQueueTime":"17","NumberOfParallelTasks":"2","MaxParallelTasks":"20","TransactionCount":"315","CPUUsage":"8","MemoryUsage":"63","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"1"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:09:00","IsoTimestamp":"2024-10-15T00:09:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0009","AverageExecutionTime":"10","MaxExecutionTime":"99","AverageQueueTime":"0","MaxQueueTime":"5","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"300","CPUUsage":"0","MemoryUsage":"64","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:10:00","IsoTimestamp":"2024-10-15T00:10:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0010","AverageExecutionTime":"10","MaxExecutionTime":"179","AverageQueueTime":"0","MaxQueueTime":"15","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"117","CPUUsage":"12","MemoryUsage":"63","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:11:00","IsoTimestamp":"2024-10-15T00:11:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0011","AverageExecutionTime":"10","MaxExecutionTime":"175","AverageQueueTime":"0","MaxQueueTime":"41","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"307","CPUUsage":"11","MemoryUsage":"63","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:12:00","IsoTimestamp":"2024-10-15T00:12:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0012","AverageExecutionTime":"11","MaxExecutionTime":"98","AverageQueueTime":"1","MaxQueueTime":"64","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"205","CPUUsage":"0","MemoryUsage":"64","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:13:00","IsoTimestamp":"2024-10-15T00:13:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0013","AverageExecutionTime":"10","MaxExecutionTime":"159","AverageQueueTime":"0","MaxQueueTime":"68","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"402","CPUUsage":"9","MemoryUsage":"63","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:14:00","IsoTimestamp":"2024-10-15T00:14:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0014","AverageExecutionTime":"10","MaxExecutionTime":"191","AverageQueueTime":"0","MaxQueueTime":"51","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"333","CPUUsage":"13","MemoryUsage":"63","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"1"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:15:00","IsoTimestamp":"2024-10-15T00:15:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0015","AverageExecutionTime":"10","MaxExecutionTime":"106","AverageQueueTime":"0","MaxQueueTime":"23","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"316","CPUUsage":"1","MemoryUsage":"63","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:16:00","IsoTimestamp":"2024-10-15T00:16:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0016","AverageExecutionTime":"9","MaxExecutionTime":"138","AverageQueueTime":"0","MaxQueueTime":"6","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"302","CPUUsage":"5","MemoryUsage":"63","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:17:00","IsoTimestamp":"2024-10-15T00:17:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0017","AverageExecutionTime":"10","MaxExecutionTime":"199","AverageQueueTime":"0","MaxQueueTime":"10","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"315","CPUUsage":"14","MemoryUsage":"63","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:18:00","IsoTimestamp":"2024-10-15T00:18:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0018","AverageExecutionTime":"10","MaxExecutionTime":"122","AverageQueueTime":"0","MaxQueueTime":"33","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"300","CPUUsage":"3","MemoryUsage":"64","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:19:00","IsoTimestamp":"2024-10-15T00:19:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0019","AverageExecutionTime":"10","MaxExecutionTime":"118","AverageQueueTime":"0","MaxQueueTime":"59","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"117","CPUUsage":"2","MemoryUsage":"63","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:20:00","IsoTimestamp":"2024-10-15T00:20:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0020","AverageExecutionTime":"12","MaxExecutionTime":"198","AverageQueueTime":"2","MaxQueueTime":"69","NumberOfParallelTasks":"0","MaxParallelTasks":"20","TransactionCount":"307","CPUUsage":"14","MemoryUsage":"64","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:21:00","IsoTimestamp":"2024-10-15T00:21:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0021","AverageExecutionTime":"10","MaxExecutionTime":"143","AverageQueueTime":"0","MaxQueueTime":"57","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"316","CPUUsage":"6","MemoryUsage":"63","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:22:00","IsoTimestamp":"2024-10-15T00:22:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0022","AverageExecutionTime":"10","MaxExecutionTime":"103","AverageQueueTime":"0","MaxQueueTime":"30","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"302","CPUUsage":"0","MemoryUsage":"62","DriveFreeSpaceInGB":"20","DriveTotalSpaceInGB":"40","SyslogQueueSize":"2"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:23:00","IsoTimestamp":"2024-10-15T00:23:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0023","AverageExecutionTime":"11","MaxExecutionTime":"187","AverageQueueTime":"1","MaxQueueTime":"8","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"315","CPUUsage":"13","MemoryUsage":"62","DriveFreeSpaceInGB":"20","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:24:00","IsoTimestamp":"2024-10-15T00:24:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0024","AverageExecutionTime":"10","MaxExecutionTime":"165","AverageQueueTime":"0","MaxQueueTime":"7","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"300","CPUUsage":"9","MemoryUsage":"61","DriveFreeSpaceInGB":"20","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:25:00","IsoTimestamp":"2024-10-15T00:25:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0025","AverageExecutionTime":"10","MaxExecutionTime":"98","AverageQueueTime":"0","MaxQueueTime":"27","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"117","CPUUsage":"0","MemoryUsage":"62","DriveFreeSpaceInGB":"20","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:26:00","IsoTimestamp":"2024-10-15T00:26:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0026","AverageExecutionTime":"14","MaxExecutionTime":"170","AverageQueueTime":"4","MaxQueueTime":"54","NumberOfParallelTasks":"0","MaxParallelTasks":"20","TransactionCount":"307","CPUUsage":"10","MemoryUsage":"60","DriveFreeSpaceInGB":"20","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:27:00","IsoTimestamp":"2024-10-15T00:27:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0027","AverageExecutionTime":"10","MaxExecutionTime":"184","AverageQueueTime":"0","MaxQueueTime":"102","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"316","CPUUsage":"12","MemoryUsage":"60","DriveFreeSpaceInGB":"20","DriveTotalSpaceInGB":"40","SyslogQueueSize":"1"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:28:00","IsoTimestamp":"2024-10-15T00:28:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0028","AverageExecutionTime":"11","MaxExecutionTime":"101","AverageQueueTime":"1","MaxQueueTime":"62","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"302","CPUUsage":"0","MemoryUsage":"63","DriveFreeSpaceInGB":"20","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:29:00","IsoTimestamp":"2024-10-15T00:29:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0029","AverageExecutionTime":"10","MaxExecutionTime":"148","AverageQueueTime":"0","MaxQueueTime":"37","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"315","CPUUsage":"7","MemoryUsage":"62","DriveFreeSpaceInGB":"20","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} diff --git a/packages/cyberarkpas/changelog.yml b/packages/cyberarkpas/changelog.yml index ddafea479d7..484570e1b78 100644 --- a/packages/cyberarkpas/changelog.yml +++ b/packages/cyberarkpas/changelog.yml @@ -1,4 +1,9 @@ # newer versions go on top +- version: "2.24.0" + changes: + - description: Collect monitoring data. + type: enhancement + link: https://github.com/elastic/integrations/pull/11478 - version: "2.23.0" changes: - description: Improve efficiency of `event.duration` calculation. diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-105-add-file-category.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-105-add-file-category.log-expected.json index 5aafd25fe49..fc3a2532642 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-105-add-file-category.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-105-add-file-category.log-expected.json @@ -65,7 +65,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -132,7 +133,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -199,7 +201,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -267,7 +270,8 @@ "ip": "67.43.156.14" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -334,7 +338,8 @@ "ip": "67.43.156.14" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -402,7 +407,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-106-update-file-category.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-106-update-file-category.log-expected.json index e29d39ebc8f..b4b6a88d21f 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-106-update-file-category.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-106-update-file-category.log-expected.json @@ -65,7 +65,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -132,7 +133,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -199,7 +201,8 @@ "ip": "67.43.156.14" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -267,7 +270,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -335,7 +339,8 @@ "ip": "67.43.156.15" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -403,7 +408,8 @@ "ip": "67.43.156.15" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-107-delete-file-category.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-107-delete-file-category.log-expected.json index a6ebc83be5d..a000b894894 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-107-delete-file-category.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-107-delete-file-category.log-expected.json @@ -66,7 +66,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-124-rename-file.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-124-rename-file.log-expected.json index 51817e80c6e..55b6c6b3b60 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-124-rename-file.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-124-rename-file.log-expected.json @@ -64,7 +64,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-125-rename-file-cont.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-125-rename-file-cont.log-expected.json index 6106dfce3e5..2982d49d088 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-125-rename-file-cont.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-125-rename-file-cont.log-expected.json @@ -64,7 +64,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-126-unlock-file.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-126-unlock-file.log-expected.json index 387f5616ef8..d36a580ef90 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-126-unlock-file.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-126-unlock-file.log-expected.json @@ -54,7 +54,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-130-cpm-disable-password.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-130-cpm-disable-password.log-expected.json index 7ad47c6453b..4ba385cc7d7 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-130-cpm-disable-password.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-130-cpm-disable-password.log-expected.json @@ -92,7 +92,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager", diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-178-get-user-s-details.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-178-get-user-s-details.log-expected.json index 0cfd769725d..ee1b692a02f 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-178-get-user-s-details.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-178-get-user-s-details.log-expected.json @@ -54,7 +54,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-180-add-user.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-180-add-user.log-expected.json index 024815e3747..11681cf23e1 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-180-add-user.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-180-add-user.log-expected.json @@ -70,7 +70,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "target": { @@ -148,7 +149,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "target": { @@ -226,7 +228,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "target": { @@ -304,7 +307,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "target": { @@ -382,7 +386,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "target": { @@ -460,7 +465,8 @@ "ip": "67.43.156.14" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "target": { @@ -538,7 +544,8 @@ "ip": "67.43.156.14" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "target": { @@ -617,7 +624,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "target": { @@ -696,7 +704,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "target": { @@ -775,7 +784,8 @@ "ip": "67.43.156.15" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "target": { @@ -854,7 +864,8 @@ "ip": "67.43.156.15" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "target": { @@ -933,7 +944,8 @@ "ip": "67.43.156.15" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "target": { diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-181-update-safe.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-181-update-safe.log-expected.json index f31a9e780ad..0cd1d19d17c 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-181-update-safe.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-181-update-safe.log-expected.json @@ -59,7 +59,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-185-add-safe.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-185-add-safe.log-expected.json index 66dee32f9ab..403ad537488 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-185-add-safe.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-185-add-safe.log-expected.json @@ -59,7 +59,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -122,7 +123,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-187-add-folder.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-187-add-folder.log-expected.json index f03fdcb21ee..2912f56965e 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-187-add-folder.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-187-add-folder.log-expected.json @@ -63,7 +63,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -121,7 +122,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-19-full-gateway-connection.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-19-full-gateway-connection.log-expected.json index b0062b70280..352220fd238 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-19-full-gateway-connection.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-19-full-gateway-connection.log-expected.json @@ -76,7 +76,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PVWAGWUser" @@ -167,7 +168,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PVWAGWUser" @@ -258,7 +260,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PVWAGWUser" @@ -339,7 +342,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PVWAGWUser" @@ -421,7 +425,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PVWAGWUser" @@ -513,7 +518,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PSMPGW_VAGRANT" @@ -605,7 +611,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PSMPGW_VAGRANT" @@ -697,7 +704,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PVWAGWUser" @@ -798,7 +806,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PSMPGW_SSH" diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-20-partial-gateway-connection.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-20-partial-gateway-connection.log-expected.json index e42b3168de1..3178202c995 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-20-partial-gateway-connection.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-20-partial-gateway-connection.log-expected.json @@ -51,7 +51,8 @@ "ip": "10.0.0.15" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-202-old-backup-files-deletion-start.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-202-old-backup-files-deletion-start.log-expected.json index 69169493a52..7c0514105f9 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-202-old-backup-files-deletion-start.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-202-old-backup-files-deletion-start.log-expected.json @@ -49,7 +49,8 @@ "ip": "0.0.0.0" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-203-old-backup-files-deletion-end.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-203-old-backup-files-deletion-end.log-expected.json index 644b375e2e6..4bb6fa1597b 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-203-old-backup-files-deletion-end.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-203-old-backup-files-deletion-end.log-expected.json @@ -49,7 +49,8 @@ "ip": "0.0.0.0" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-22-cpm-verify-password.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-22-cpm-verify-password.log-expected.json index c92803fe828..509cd366c0f 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-22-cpm-verify-password.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-22-cpm-verify-password.log-expected.json @@ -90,7 +90,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager" @@ -205,7 +206,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager" diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-23-action-on-closed-safe.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-23-action-on-closed-safe.log-expected.json index 8efaf2ffdc0..b1d68d1ab7f 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-23-action-on-closed-safe.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-23-action-on-closed-safe.log-expected.json @@ -62,7 +62,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -119,7 +120,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -185,7 +187,8 @@ "ip": "67.43.156.15" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-24-cpm-change-password.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-24-cpm-change-password.log-expected.json index 4d092ce10c4..6ed6f955fd8 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-24-cpm-change-password.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-24-cpm-change-password.log-expected.json @@ -81,7 +81,8 @@ "ip": "10.2.0.4" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager", @@ -184,7 +185,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager", @@ -287,7 +289,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager", @@ -391,7 +394,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager", diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-259-add-update-group.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-259-add-update-group.log-expected.json index 6a87cfb74cb..73233f5bb68 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-259-add-update-group.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-259-add-update-group.log-expected.json @@ -59,7 +59,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -121,7 +122,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -183,7 +185,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -245,7 +248,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-265-add-group-member.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-265-add-group-member.log-expected.json index 180e4a845af..054e73efc74 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-265-add-group-member.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-265-add-group-member.log-expected.json @@ -60,7 +60,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -123,7 +124,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -186,7 +188,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -249,7 +252,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -312,7 +316,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -375,7 +380,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -438,7 +444,8 @@ "ip": "67.43.156.14" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -501,7 +508,8 @@ "ip": "67.43.156.14" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -564,7 +572,8 @@ "ip": "67.43.156.14" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -628,7 +637,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -692,7 +702,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -756,7 +767,8 @@ "ip": "67.43.156.15" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -820,7 +832,8 @@ "ip": "67.43.156.15" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -884,7 +897,8 @@ "ip": "67.43.156.15" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-266-remove-group-member.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-266-remove-group-member.log-expected.json index f896aa253f5..edd06458d83 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-266-remove-group-member.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-266-remove-group-member.log-expected.json @@ -60,7 +60,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -123,7 +124,8 @@ "ip": "67.43.156.14" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-273-remove-owner.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-273-remove-owner.log-expected.json index 5525a9ab6e1..cd13d96370d 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-273-remove-owner.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-273-remove-owner.log-expected.json @@ -60,7 +60,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-278-add-rule.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-278-add-rule.log-expected.json index b446e7edf08..5d31529f741 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-278-add-rule.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-278-add-rule.log-expected.json @@ -57,7 +57,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-288-auto-clear-users-history-start.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-288-auto-clear-users-history-start.log-expected.json index 68cf6d1a251..891efbee063 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-288-auto-clear-users-history-start.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-288-auto-clear-users-history-start.log-expected.json @@ -49,7 +49,8 @@ "ip": "0.0.0.0" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -94,7 +95,8 @@ "ip": "0.0.0.0" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-289-auto-clear-users-history-end.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-289-auto-clear-users-history-end.log-expected.json index 97dbbb8feb5..8d940b5ee56 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-289-auto-clear-users-history-end.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-289-auto-clear-users-history-end.log-expected.json @@ -49,7 +49,8 @@ "ip": "0.0.0.0" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -94,7 +95,8 @@ "ip": "0.0.0.0" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-290-auto-clear-safes-history-start.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-290-auto-clear-safes-history-start.log-expected.json index 2b353c8ecd5..9e70ce8080e 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-290-auto-clear-safes-history-start.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-290-auto-clear-safes-history-start.log-expected.json @@ -49,7 +49,8 @@ "ip": "0.0.0.0" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-291-auto-clear-safes-history-end.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-291-auto-clear-safes-history-end.log-expected.json index d7859036428..97e5da8c6cc 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-291-auto-clear-safes-history-end.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-291-auto-clear-safes-history-end.log-expected.json @@ -49,7 +49,8 @@ "ip": "0.0.0.0" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-294-store-password.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-294-store-password.log-expected.json index 1254976849f..e2753467fb2 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-294-store-password.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-294-store-password.log-expected.json @@ -64,7 +64,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -130,7 +131,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -208,7 +210,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -275,7 +278,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -341,7 +345,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -407,7 +412,8 @@ "ip": "67.43.156.14" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -485,7 +491,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -553,7 +560,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -632,7 +640,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -714,7 +723,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-295-retrieve-password.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-295-retrieve-password.log-expected.json index 31f344f7194..e0f8bf2962a 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-295-retrieve-password.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-295-retrieve-password.log-expected.json @@ -80,7 +80,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Prov_PVWA" @@ -180,7 +181,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "adm2" @@ -274,7 +276,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -380,7 +383,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager" @@ -466,7 +470,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager" @@ -568,7 +573,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Prov_COMPONENTS" @@ -663,7 +669,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -758,7 +765,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -864,7 +872,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager" @@ -950,7 +959,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager" @@ -1046,7 +1056,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -1140,7 +1151,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PVWAAppUser" @@ -1234,7 +1246,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-300-psm-connect.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-300-psm-connect.log-expected.json index a414807e3ca..44a2d02402e 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-300-psm-connect.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-300-psm-connect.log-expected.json @@ -92,7 +92,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -209,7 +210,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -326,7 +328,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -443,7 +446,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -560,7 +564,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -677,7 +682,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -794,7 +800,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -925,7 +932,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -1056,7 +1064,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -1185,7 +1194,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -1314,7 +1324,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -1443,7 +1454,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -1568,7 +1580,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -1693,7 +1706,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -1827,7 +1841,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -1961,7 +1976,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -2095,7 +2111,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-302-psm-disconnect.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-302-psm-disconnect.log-expected.json index 4004700c152..c5ddc6c6aa3 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-302-psm-disconnect.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-302-psm-disconnect.log-expected.json @@ -94,7 +94,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -213,7 +214,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -332,7 +334,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -451,7 +454,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -570,7 +574,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -689,7 +694,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -808,7 +814,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -941,7 +948,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -1074,7 +1082,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -1205,7 +1214,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -1336,7 +1346,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -1467,7 +1478,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -1594,7 +1606,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -1721,7 +1734,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -1857,7 +1871,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -1993,7 +2008,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-304-psm-upload-recording.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-304-psm-upload-recording.log-expected.json index 65eb542d620..2f8d0acc7d0 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-304-psm-upload-recording.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-304-psm-upload-recording.log-expected.json @@ -67,7 +67,8 @@ "ip": "10.0.0.15" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-308-use-password.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-308-use-password.log-expected.json index b87dddc0258..8eed9692a7b 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-308-use-password.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-308-use-password.log-expected.json @@ -87,7 +87,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "adm2" @@ -195,7 +196,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -303,7 +305,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -411,7 +414,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -519,7 +523,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -627,7 +632,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -735,7 +741,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -856,7 +863,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -975,7 +983,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -1099,7 +1108,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -1223,7 +1233,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-309-undefined-user-logon.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-309-undefined-user-logon.log-expected.json index d9995434ae1..b0da0a4f72b 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-309-undefined-user-logon.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-309-undefined-user-logon.log-expected.json @@ -68,7 +68,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "adriansr" @@ -142,7 +143,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "adriansra" @@ -217,7 +219,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PSMAdmin" @@ -301,7 +304,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "adrian" @@ -394,7 +398,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "testark" diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-31-cpm-reconcile-password.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-31-cpm-reconcile-password.log-expected.json index 2831bba6af3..d8046bee543 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-31-cpm-reconcile-password.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-31-cpm-reconcile-password.log-expected.json @@ -83,7 +83,8 @@ "ip": "10.2.0.4" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager", diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-310-monitor-dr-replication-start.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-310-monitor-dr-replication-start.log-expected.json index 8f39a4f9406..7761b06f9fa 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-310-monitor-dr-replication-start.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-310-monitor-dr-replication-start.log-expected.json @@ -49,7 +49,8 @@ "ip": "0.0.0.0" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -94,7 +95,8 @@ "ip": "0.0.0.0" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-311-monitor-dr-replication-end.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-311-monitor-dr-replication-end.log-expected.json index 2054f987ba1..156995656ec 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-311-monitor-dr-replication-end.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-311-monitor-dr-replication-end.log-expected.json @@ -49,7 +49,8 @@ "ip": "0.0.0.0" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -94,7 +95,8 @@ "ip": "0.0.0.0" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-316-reset-user-password-detailed-information.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-316-reset-user-password-detailed-information.log-expected.json index 5ca43e0e52f..20ba04a1519 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-316-reset-user-password-detailed-information.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-316-reset-user-password-detailed-information.log-expected.json @@ -60,7 +60,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-317-reset-user-password.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-317-reset-user-password.log-expected.json index bc51adb6019..eb8adfa496f 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-317-reset-user-password.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-317-reset-user-password.log-expected.json @@ -59,7 +59,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-32-add-owner.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-32-add-owner.log-expected.json index ef7afc9c964..a16a6c4acb4 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-32-add-owner.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-32-add-owner.log-expected.json @@ -72,7 +72,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator", @@ -152,7 +153,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator", @@ -233,7 +235,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator", @@ -314,7 +317,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator", @@ -395,7 +399,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator", @@ -476,7 +481,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator", @@ -557,7 +563,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator", @@ -638,7 +645,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator", @@ -719,7 +727,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator", @@ -800,7 +809,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator", @@ -881,7 +891,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator", @@ -962,7 +973,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator", @@ -1043,7 +1055,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator", @@ -1124,7 +1137,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator", @@ -1205,7 +1219,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator", @@ -1286,7 +1301,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator", diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-326-cpm-auto-detection-start.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-326-cpm-auto-detection-start.log-expected.json index 497367a38af..f4a66ff602a 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-326-cpm-auto-detection-start.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-326-cpm-auto-detection-start.log-expected.json @@ -61,7 +61,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-327-cpm-auto-detection-end.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-327-cpm-auto-detection-end.log-expected.json index db4acafb6da..1f356b125a2 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-327-cpm-auto-detection-end.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-327-cpm-auto-detection-end.log-expected.json @@ -61,7 +61,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-33-update-owner.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-33-update-owner.log-expected.json index 4a4f4b87c35..0ad612ddfe8 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-33-update-owner.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-33-update-owner.log-expected.json @@ -72,7 +72,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator", @@ -153,7 +154,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator", @@ -234,7 +236,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator", @@ -315,7 +318,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator", @@ -396,7 +400,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator", @@ -477,7 +482,8 @@ "ip": "67.43.156.14" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator", @@ -559,7 +565,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PSMPApp_VAGRANT", diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-355-monitor-license-expiration-date-start.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-355-monitor-license-expiration-date-start.log-expected.json index ad684276bfa..1280edead49 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-355-monitor-license-expiration-date-start.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-355-monitor-license-expiration-date-start.log-expected.json @@ -49,7 +49,8 @@ "ip": "0.0.0.0" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-356-monitor-license-expiration-date-end.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-356-monitor-license-expiration-date-end.log-expected.json index 5e741ac481c..81b02384819 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-356-monitor-license-expiration-date-end.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-356-monitor-license-expiration-date-end.log-expected.json @@ -49,7 +49,8 @@ "ip": "0.0.0.0" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-357-monitor-fw-rules-start.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-357-monitor-fw-rules-start.log-expected.json index f92147eab77..696fddd0838 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-357-monitor-fw-rules-start.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-357-monitor-fw-rules-start.log-expected.json @@ -49,7 +49,8 @@ "ip": "0.0.0.0" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -94,7 +95,8 @@ "ip": "0.0.0.0" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-358-monitor-fw-rules-end.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-358-monitor-fw-rules-end.log-expected.json index c5a4930cdf7..950af209d6f 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-358-monitor-fw-rules-end.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-358-monitor-fw-rules-end.log-expected.json @@ -49,7 +49,8 @@ "ip": "0.0.0.0" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -94,7 +95,8 @@ "ip": "0.0.0.0" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-359-sql-command.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-359-sql-command.log-expected.json index 985c64d66b2..510f35cbe20 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-359-sql-command.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-359-sql-command.log-expected.json @@ -112,7 +112,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -230,7 +231,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -348,7 +350,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -466,7 +469,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -584,7 +588,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -702,7 +707,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -820,7 +826,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -938,7 +945,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -1056,7 +1064,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -1174,7 +1183,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-361-keystroke-logging.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-361-keystroke-logging.log-expected.json index a77dcaa10bb..40ad0aafb6e 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-361-keystroke-logging.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-361-keystroke-logging.log-expected.json @@ -94,7 +94,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -227,7 +228,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -358,7 +360,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -489,7 +492,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -620,7 +624,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -756,7 +761,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -892,7 +898,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-38-cpm-verify-password-failed.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-38-cpm-verify-password-failed.log-expected.json index 97085773e81..d93115d88af 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-38-cpm-verify-password-failed.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-38-cpm-verify-password-failed.log-expected.json @@ -113,7 +113,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager" @@ -233,7 +234,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager" @@ -352,7 +354,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager" @@ -472,7 +475,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager" @@ -592,7 +596,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager" @@ -700,7 +705,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager" @@ -810,7 +816,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager" @@ -920,7 +927,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager" @@ -1030,7 +1038,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager" @@ -1141,7 +1150,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager" @@ -1254,7 +1264,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager" @@ -1367,7 +1378,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager" @@ -1476,7 +1488,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager" @@ -1596,7 +1609,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager" @@ -1716,7 +1730,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager" diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-385-blservice-audit-record.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-385-blservice-audit-record.log-expected.json index 90024e594a3..5a462fe7652 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-385-blservice-audit-record.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-385-blservice-audit-record.log-expected.json @@ -60,7 +60,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -123,7 +124,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -186,7 +188,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -249,7 +252,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -312,7 +316,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-4-user-authentication.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-4-user-authentication.log-expected.json index 3dd8d16ac48..b45a9b1efbb 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-4-user-authentication.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-4-user-authentication.log-expected.json @@ -68,7 +68,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -143,7 +144,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-411-window-title.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-411-window-title.log-expected.json index 2f858857a91..ed64cc84c28 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-411-window-title.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-411-window-title.log-expected.json @@ -105,7 +105,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "adm2" diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-412-keystroke-logging.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-412-keystroke-logging.log-expected.json index 13b399fddbf..c8015e63381 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-412-keystroke-logging.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-412-keystroke-logging.log-expected.json @@ -110,7 +110,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-414-cpm-verify-ssh-key.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-414-cpm-verify-ssh-key.log-expected.json index ea5ca24bd83..6c98032299a 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-414-cpm-verify-ssh-key.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-414-cpm-verify-ssh-key.log-expected.json @@ -104,7 +104,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager" diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-427-store-ssh-key.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-427-store-ssh-key.log-expected.json index 4bad48d91de..3ec9e33363a 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-427-store-ssh-key.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-427-store-ssh-key.log-expected.json @@ -64,7 +64,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-428-retrieve-ssh-key.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-428-retrieve-ssh-key.log-expected.json index 1c0bd619527..4774ff14ebc 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-428-retrieve-ssh-key.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-428-retrieve-ssh-key.log-expected.json @@ -111,7 +111,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -231,7 +232,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -347,7 +349,8 @@ } }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-449-create-discovery-succeeded.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-449-create-discovery-succeeded.log-expected.json index 30d8c4376a7..4446d0c9ba0 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-449-create-discovery-succeeded.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-449-create-discovery-succeeded.log-expected.json @@ -51,7 +51,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-459-general-audit.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-459-general-audit.log-expected.json index 4b2e26ae32f..0d6bf60ba8f 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-459-general-audit.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-459-general-audit.log-expected.json @@ -78,7 +78,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -159,7 +160,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -241,7 +243,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-467-the-component-public-key-for-jwt-authentication-was-updated.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-467-the-component-public-key-for-jwt-authentication-was-updated.log-expected.json index 9a9f43bb00b..aef3ae73bc7 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-467-the-component-public-key-for-jwt-authentication-was-updated.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-467-the-component-public-key-for-jwt-authentication-was-updated.log-expected.json @@ -49,7 +49,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-479-security-warning-the-signature-hash-algorithm-of-the-vault-certificate-is-sha1.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-479-security-warning-the-signature-hash-algorithm-of-the-vault-certificate-is-sha1.log-expected.json index 8c01881e357..94b37f0f423 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-479-security-warning-the-signature-hash-algorithm-of-the-vault-certificate-is-sha1.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-479-security-warning-the-signature-hash-algorithm-of-the-vault-certificate-is-sha1.log-expected.json @@ -52,7 +52,8 @@ "ip": "0.0.0.0" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -100,7 +101,8 @@ "ip": "0.0.0.0" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-482-update-existing-add-account-bulk-operation-succeeded.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-482-update-existing-add-account-bulk-operation-succeeded.log-expected.json index 2da4601f888..286d7762fdd 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-482-update-existing-add-account-bulk-operation-succeeded.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-482-update-existing-add-account-bulk-operation-succeeded.log-expected.json @@ -49,7 +49,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-50-store-file.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-50-store-file.log-expected.json index 3f1a0cd407d..a58e2851ef1 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-50-store-file.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-50-store-file.log-expected.json @@ -54,7 +54,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -120,7 +121,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -177,7 +179,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -243,7 +246,8 @@ "ip": "67.43.156.14" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -310,7 +314,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -377,7 +382,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-51-retrieve-file.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-51-retrieve-file.log-expected.json index 330468f36df..9cb8f2badcd 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-51-retrieve-file.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-51-retrieve-file.log-expected.json @@ -54,7 +54,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -111,7 +112,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -173,7 +175,8 @@ "ip": "10.2.1.12" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-52-delete-file.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-52-delete-file.log-expected.json index 29af0ba5f95..bbb0979357f 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-52-delete-file.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-52-delete-file.log-expected.json @@ -71,7 +71,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -146,7 +147,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -203,7 +205,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -270,7 +273,8 @@ "ip": "67.43.156.14" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -337,7 +341,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -412,7 +417,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -485,7 +491,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -558,7 +565,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -635,7 +643,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -712,7 +721,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-57-cpm-change-password-failed.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-57-cpm-change-password-failed.log-expected.json index f5fdd39aded..f7609191716 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-57-cpm-change-password-failed.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-57-cpm-change-password-failed.log-expected.json @@ -103,7 +103,8 @@ "ip": "10.0.0.15" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager", diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-59-clear-safe-history.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-59-clear-safe-history.log-expected.json index c33362d5251..e27529108cd 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-59-clear-safe-history.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-59-clear-safe-history.log-expected.json @@ -50,7 +50,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -96,7 +97,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -149,7 +151,8 @@ "ip": "0.0.0.0" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-60-cpm-reconcile-password-failed.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-60-cpm-reconcile-password-failed.log-expected.json index 593884c5338..44247506b78 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-60-cpm-reconcile-password-failed.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-60-cpm-reconcile-password-failed.log-expected.json @@ -107,7 +107,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager", @@ -224,7 +225,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager", @@ -339,7 +341,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager", @@ -456,7 +459,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager", @@ -573,7 +577,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager", @@ -689,7 +694,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager", @@ -807,7 +813,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager", @@ -923,7 +930,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager", @@ -1042,7 +1050,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager", diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-62-create-file-version.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-62-create-file-version.log-expected.json index 9221c081524..91073734e3b 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-62-create-file-version.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-62-create-file-version.log-expected.json @@ -63,7 +63,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -129,7 +130,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -195,7 +197,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -261,7 +264,8 @@ "ip": "67.43.156.14" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -319,7 +323,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -386,7 +391,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -452,7 +458,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -519,7 +526,8 @@ "ip": "67.43.156.15" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-7-logon.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-7-logon.log-expected.json index 62ad0a9b776..ac9a0410dde 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-7-logon.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-7-logon.log-expected.json @@ -60,7 +60,8 @@ "ip": "10.2.0.6" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "adm2" @@ -126,7 +127,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager" @@ -192,7 +194,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "SCIM-user" @@ -258,7 +261,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PVWAGWUser" @@ -324,7 +328,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Prov_COMPONENTS" @@ -390,7 +395,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PVWAAppUser" @@ -465,7 +471,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -549,7 +556,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -633,7 +641,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -708,7 +717,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PSMP_ADB_localhost.localdomain" @@ -783,7 +793,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PSMPApp_localhost.localdomain" @@ -858,7 +869,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PSMPGW_localhost.localdomain" diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-8-logoff.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-8-logoff.log-expected.json index 118cb303fd6..8a5bab8c716 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-8-logoff.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-8-logoff.log-expected.json @@ -60,7 +60,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -126,7 +127,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -192,7 +194,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager" @@ -258,7 +261,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Prov_COMPONENTS" @@ -324,7 +328,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PVWAGWUser" @@ -390,7 +395,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PVWAAppUser" @@ -465,7 +471,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -540,7 +547,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PSMP_ADB_localhost.localdomain" @@ -615,7 +623,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PSMPGW_localhost.localdomain" @@ -690,7 +699,8 @@ "ip": "67.43.156.14" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -775,7 +785,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -860,7 +871,8 @@ "ip": "10.0.2.2" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -936,7 +948,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PSMPGW_VAGRANT" @@ -1012,7 +1025,8 @@ "ip": "67.43.156.15" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" @@ -1106,7 +1120,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "Administrator" diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-88-set-password.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-88-set-password.log-expected.json index 76eab1296f7..195c4bd6578 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-88-set-password.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-88-set-password.log-expected.json @@ -49,7 +49,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -101,7 +102,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -146,7 +148,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -198,7 +201,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -250,7 +254,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -311,7 +316,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -372,7 +378,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -433,7 +440,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -494,7 +502,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -555,7 +564,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -616,7 +626,8 @@ "ip": "67.43.156.14" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -677,7 +688,8 @@ "ip": "67.43.156.14" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -739,7 +751,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -801,7 +814,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -863,7 +877,8 @@ "ip": "67.43.156.15" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -925,7 +940,8 @@ "ip": "67.43.156.15" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -987,7 +1003,8 @@ "ip": "67.43.156.15" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -1049,7 +1066,8 @@ "ip": "67.43.156.15" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-98-open-file-write-only.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-98-open-file-write-only.log-expected.json index fb90f3f0776..d8603fea4fe 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-98-open-file-write-only.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-98-open-file-write-only.log-expected.json @@ -54,7 +54,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -120,7 +121,8 @@ "ip": "67.43.156.13" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -186,7 +188,8 @@ "ip": "67.43.156.14" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -253,7 +256,8 @@ "ip": "127.0.0.1" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-99-open-file.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-99-open-file.log-expected.json index 1817370df08..97265809646 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-99-open-file.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-99-open-file.log-expected.json @@ -54,7 +54,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-common-config.yml b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-common-config.yml index 80145382e3e..ecd26d50036 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-common-config.yml +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-common-config.yml @@ -1,5 +1,4 @@ -dynamic_fields: - "@timestamp": "^[0-9]{4}(-[0-9]{2}){2}T[0-9]{2}(:[0-9]{2}){2}\\.[0-9]{3}Z$" fields: tags: - - preserve_original_event + - forwarded + - cyberarkpas-audit diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-legacysyslog.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-legacysyslog.log-expected.json index f66bbb6fde7..6e034470f6e 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-legacysyslog.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-legacysyslog.log-expected.json @@ -47,7 +47,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] } ] diff --git a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-rfc5424syslog.log-expected.json b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-rfc5424syslog.log-expected.json index 62c6e9da18f..6b1842bd521 100644 --- a/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-rfc5424syslog.log-expected.json +++ b/packages/cyberarkpas/data_stream/audit/_dev/test/pipeline/test-rfc5424syslog.log-expected.json @@ -60,7 +60,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PVWAGWUser" @@ -126,7 +127,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PasswordManager" @@ -186,7 +188,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ] }, { @@ -249,7 +252,8 @@ "ip": "10.0.1.20" }, "tags": [ - "preserve_original_event" + "forwarded", + "cyberarkpas-audit" ], "user": { "name": "PVWAAppUser" diff --git a/packages/cyberarkpas/data_stream/audit/elasticsearch/ingest_pipeline/audit.yml b/packages/cyberarkpas/data_stream/audit/elasticsearch/ingest_pipeline/audit.yml new file mode 100644 index 00000000000..0221b1cd405 --- /dev/null +++ b/packages/cyberarkpas/data_stream/audit/elasticsearch/ingest_pipeline/audit.yml @@ -0,0 +1,1253 @@ +--- +description: Pipeline for CyberArk PAS audit +processors: + # + # Set ECS version. + # + - set: + tag: set_ecs_version + field: ecs.version + value: '8.11.0' + # + # Set event.original from message, unless reindexing. + # + - rename: + tag: rename_message + field: message + target_field: event.original + if: ctx.event?.original == null + ignore_missing: true + # + # Parse syslog headers (if any) and extract JSON payload. + # + - grok: + tag: grok_event_original + field: event.original + patterns: + # RFC5424 from CyberArk. + # UseLegacySyslogFormat=No + # <5>1 2021-03-04T17:28:23Z VAULT {"format":"elastic","version":"1.0",...} + - "^<%{NONNEGINT:log.syslog.priority:long}>%{NONNEGINT} %{TIMESTAMP_ISO8601:_tmp.syslog_ts} %{SYSLOGHOST:_tmp.hostname} %{JSON_PAYLOAD:_tmp.payload}" + + # Legacy format. + # UseLegacySyslogFormat=Yes + # Mar 08 02:57:42 VAULT {"format":"elastic","version":"1.0",...} + - "^%{SYSLOGTIMESTAMP:_tmp.syslog_ts} %{SYSLOGHOST:_tmp.hostname} %{JSON_PAYLOAD:_tmp.payload}" + + # Catch-all mode, just JSON payload. + - "%{JSON_PAYLOAD:_tmp.payload}" + pattern_definitions: + JSON_PAYLOAD: '{"format":"elastic","version":"1.0",.*}' + on_failure: + - fail: + message: "unexpected event format: {{{_ingest.on_failure_message}}}" + + - json: + tag: json_tmp_payload + field: _tmp.payload + target_field: _tmp.json + on_failure: + - fail: + message: "malformed JSON event: {{{_ingest.on_failure_message}}}" + + - rename: + tag: rename_tmp_json_syslog_audit_record + field: _tmp.json.syslog.audit_record + target_field: cyberarkpas.audit + on_failure: + - fail: + message: "unexpected event structure: {{{_ingest.on_failure_message}}}" + + + # + # Remove all empty fields + # + - script: + tag: script_removes_empty_audit_fields + lang: painless + description: 'Removes empty audit fields' + source: >- + ctx.cyberarkpas.audit.entrySet().removeIf(entry -> entry.getValue() == ""); + + - rename: + tag: rename_tmp_json_raw + field: _tmp.json.raw + target_field: cyberarkpas.audit.raw + ignore_missing: true + + # The following processors populate @timestamp from the different sources that can exist in an event. + # In the following order of precedence: + # - IsoTimestamp field (expected ISO8601). Present when new syslog format is used (rfc5424: yes). + # - Timestamp (expected MMM dd HH:mm:ss). Also present only when new syslog format is used. + # - Syslog header timestamp. Either ISO8601 or legacy MMM dd HH:mm:ss, depending on the syslog format in use. + # - Original @timestamp from Filebeat. + - date: + tag: date_cyberarkpas_audit_isotimestamp + if: ctx.cyberarkpas.audit.IsoTimestamp != null + field: cyberarkpas.audit.IsoTimestamp + target_field: _tmp.timestamp + formats: + - ISO8601 + on_failure: + - append: + field: error.message + value: "failed to parse ISO timestamp field: {{{cyberarkpas.audit.IsoTimestamp}}}: {{{_ingest.on_failure_message}}}" + + - date: + tag: date_cyberarkpas_audit_timestamp + if: 'ctx._tmp.timestamp == null && ctx.cyberarkpas.audit.Timestamp != null' + field: cyberarkpas.audit.Timestamp + target_field: _tmp.timestamp + formats: + # This is the default format. + - 'MMM dd HH:mm:ss' + # Drop a few other formats in case the above fails. + - ISO8601 + - 'MMM d HH:mm:ss' + - "EEE MMM dd HH:mm:ss" + - "EEE MMM d HH:mm:ss" + - "MMM d HH:mm:ss z" + - "MMM dd HH:mm:ss z" + - "EEE MMM d HH:mm:ss z" + - "EEE MMM dd HH:mm:ss z" + - "MMM d yyyy HH:mm:ss" + - "MMM dd yyyy HH:mm:ss" + - "EEE MMM d yyyy HH:mm:ss" + - "EEE MMM dd yyyy HH:mm:ss" + - "MMM d yyyy HH:mm:ss z" + - "MMM dd yyyy HH:mm:ss z" + - "EEE MMM d yyyy HH:mm:ss z" + - "EEE MMM dd yyyy HH:mm:ss z" + on_failure: + - append: + field: error.message + value: "failed to parse timestamp field: {{{cyberarkpas.audit.Timestamp}}}: {{{_ingest.on_failure_message}}}" + + - date: + tag: date_tmp_syslog_ts + if: ctx._tmp.timestamp == null && ctx._tmp.syslog_ts != null && ctx.event?.timezone == null + field: _tmp.syslog_ts + target_field: _tmp.timestamp + formats: + # This is the default format. + - 'MMM dd HH:mm:ss' + # Drop a few other formats in case the above fails. + - ISO8601 + - 'MMM d HH:mm:ss' + - "EEE MMM dd HH:mm:ss" + - "EEE MMM d HH:mm:ss" + - "MMM d HH:mm:ss z" + - "MMM dd HH:mm:ss z" + - "EEE MMM d HH:mm:ss z" + - "EEE MMM dd HH:mm:ss z" + - "MMM d yyyy HH:mm:ss" + - "MMM dd yyyy HH:mm:ss" + - "EEE MMM d yyyy HH:mm:ss" + - "EEE MMM dd yyyy HH:mm:ss" + - "MMM d yyyy HH:mm:ss z" + - "MMM dd yyyy HH:mm:ss z" + - "EEE MMM d yyyy HH:mm:ss z" + - "EEE MMM dd yyyy HH:mm:ss z" + on_failure: + - append: + field: error.message + value: "failed to parse legacy syslog timestamp: {{{_tmp.syslog_ts}}}: {{{_ingest.on_failure_message}}}" + + - date: + tag: date_tmp_syslog_ts_2 + if: ctx._tmp.timestamp == null && ctx._tmp.syslog_ts != null && ctx.event?.timezone != null + field: _tmp.syslog_ts + target_field: _tmp.timestamp + timezone: '{{{event.timezone}}}' + formats: + # This is the default format. + - 'MMM dd HH:mm:ss' + # Drop a few other formats in case the above fails. + - ISO8601 + - 'MMM d HH:mm:ss' + - "EEE MMM dd HH:mm:ss" + - "EEE MMM d HH:mm:ss" + - "MMM d HH:mm:ss z" + - "MMM dd HH:mm:ss z" + - "EEE MMM d HH:mm:ss z" + - "EEE MMM dd HH:mm:ss z" + - "MMM d yyyy HH:mm:ss" + - "MMM dd yyyy HH:mm:ss" + - "EEE MMM d yyyy HH:mm:ss" + - "EEE MMM dd yyyy HH:mm:ss" + - "MMM d yyyy HH:mm:ss z" + - "MMM dd yyyy HH:mm:ss z" + - "EEE MMM d yyyy HH:mm:ss z" + - "EEE MMM dd yyyy HH:mm:ss z" + on_failure: + - append: + field: error.message + value: "failed to parse legacy syslog timestamp: {{{_tmp.syslog_ts}}}: {{{_ingest.on_failure_message}}}" + + - set: + tag: set_timestamp + field: '@timestamp' + value: '{{{_tmp.timestamp}}}' + ignore_empty_value: true + override: true + + # This script ensures that CAProperties.CAProperty is an array. + # When there's a single property, it is serialised as an object instead + # of a single element array. + - script: + tag: script_converts_caproperties_into_an_array_if_necessary + lang: painless + description: "Converts CAProperties into an array if necessary" + source: > + def props = ctx.cyberarkpas?.audit?.CAProperties?.CAProperty; + if (props instanceof Map) { + ctx.cyberarkpas.audit.CAProperties.CAProperty = [ props ]; + } + + # This script converts the nested object under cyberarkpas.audit.CAProperties.CAProperty + # into an object under cyberarkpas.audit.CAProperties: + # + # input: + # "cyberarkpas.audit.CAProperties.CAProperty": [ + # { + # "Name": "PolicyID", + # "Value": "LINUX-SSH" + # }, + # { + # "Name": "UserName", + # "Value": "test12" + # } + # output: + # "cyberarkpas.audit.CAProperties": + # { + # "PolicyID": "LINUX-SSH", + # "UserName": "test12" + # } + - foreach: + tag: foreach_cyberarkpas_audit_caproperties_caproperty + field: cyberarkpas.audit.CAProperties.CAProperty + ignore_missing: true + processor: + set: + tag: set_cyberarkpas_audit_caproperties_ingest_value_name + field: 'cyberarkpas.audit.CAProperties.{{{_ingest._value.Name}}}' + value: '{{{_ingest._value.Value}}}' + on_failure: + - append: + field: error.message + value: "failed to process CAProperties array: {{{_ingest.on_failure_message}}}" + - remove: + tag: remove_cyberarkpas_audit_caproperties_caproperty + field: cyberarkpas.audit.CAProperties.CAProperty + ignore_missing: true + + # Parse key-value pairs at ExtraDetails: + # input: + # "cyberarkpas.audit.ExtraDetails": "Command=ls \"/var/tmp\";ConnectionComponentId=PSMP-SSH;DstHost=[...]", + # + # output: + # "cyberarkpas.audit.ExtraDetails": + # { + # "Command": "ls \"/var/tmp\"", + # "ConnectionComponentId": "PSMP-SSH", + # "DstHost": [...] + # + # The original string can contain escaped separators, \= and \; + - kv: + tag: kv_cyberarkpas_audit_extradetails + field: cyberarkpas.audit.ExtraDetails + field_split: '(? + String to_snake_case(String s) { + /* faster code path for strings that won't need an underscore */ + if (s.chars().skip(1).noneMatch(Character::isUpperCase)) { + return s.toLowerCase(); + } + int run = 0; + boolean first = true; + StringBuilder result = new StringBuilder(); + for (char c : s.toCharArray()) { + char o = Character.toLowerCase(c); + if (c != o) { + if (run == 0 && !first) { + result.append('_'); + } + run ++; + } else { + if (run > 1) { + char prev = result.charAt(result.length()-1); + result.setCharAt(result.length()-1, (char)'_'); + result.append(prev); + } + run = 0; + first = false; + } + result.append(o); + } + return result.toString(); + } + def keys_to_snake_case_recursive(Map object) { + return object.entrySet().stream().collect( + Collectors.toMap( + e -> to_snake_case(e.getKey()), + e -> e.getValue() instanceof Map ? keys_to_snake_case_recursive(e.getValue()) : e.getValue() + ) + ); + } + ctx.cyberarkpas.audit = keys_to_snake_case_recursive(ctx.cyberarkpas.audit); + + # + # Convert rfc5424 field to boolean. + # + - script: + tag: script_converts_the_rfc5424_audit_field_to_a_boolean + description: 'Converts the rfc5424 audit field to a boolean' + lang: painless + source: > + def value = ctx.cyberarkpas.audit.rfc5424; + ctx.cyberarkpas.audit["rfc5424"] = value == 'yes'; + + ######################################################## + # ECS enrichment + # + # All processors from this point use the snake_case form + # to access CyberArk fields. + ######################################################## + + - set: + tag: set_event_kind + field: event.kind + value: event + + - lowercase: + tag: lowercase_cyberarkpas_audit_action + field: cyberarkpas.audit.action + target_field: event.action + ignore_missing: true + + # Severity to number + # + # Possible values: + # Info -> 0 + # Error -> 7 + # Critical -> 10 + - set: + tag: set_event_severity + field: event.severity + value: 2 + if: 'ctx.cyberarkpas.audit.severity == "Info"' + - set: + tag: set_event_severity_2 + field: event.severity + value: 7 + if: 'ctx.cyberarkpas.audit.severity == "Error"' + - set: + tag: set_event_severity_3 + field: event.severity + value: 10 + if: 'ctx.cyberarkpas.audit.severity == "Critical"' + - set: + tag: set_event_type + field: event.type + value: [error] + if: ctx.event?.severity != null && ctx.event.severity > 6 + + - rename: + tag: rename_cyberarkpas_audit_message_id + field: cyberarkpas.audit.message_id + target_field: event.code + ignore_missing: true + + - set: + tag: set_source_address + field: source.address + value: '{{{cyberarkpas.audit.station}}}' + ignore_empty_value: true + + - set: + tag: set_destination_address + field: destination.address + value: '{{{cyberarkpas.audit.gateway_station}}}' + ignore_empty_value: true + + - set: + tag: set_file_path + field: file.path + value: '{{{cyberarkpas.audit.file}}}' + if: ctx.cyberarkpas.audit?.file != null + + # + # Observer fields + # + - rename: + tag: rename_cyberarkpas_audit_vendor + field: cyberarkpas.audit.vendor + target_field: observer.vendor + ignore_missing: true + - rename: + tag: rename_cyberarkpas_audit_product + field: cyberarkpas.audit.product + target_field: observer.product + ignore_missing: true + - rename: + tag: rename_cyberarkpas_audit_version + field: cyberarkpas.audit.version + target_field: observer.version + ignore_missing: true + - rename: + tag: rename_cyberarkpas_audit_hostname + field: cyberarkpas.audit.hostname + target_field: observer.hostname + ignore_missing: true + # Use hostname from syslog if audit record's Hostname field is missing. + - rename: + tag: rename_tmp_hostname + field: _tmp.hostname + target_field: observer.hostname + ignore_missing: true + if: ctx.observer?.hostname == null + # + # Enrichment based on message_id + # + # This script is overly complicated (read_field) because at this time + # there is no processor that allows to set one field from a source + # field using indirection (it is possible with rename, but that + # removes the original field). + # + # Once something like this is possible: + # set: + # target_field: '{{{_ingest.value.to}}}' + # copy_from: '{{{_ingest.value.from}}}' + # + # ... this script can be updated to just create two output lists, one + # for value-to pairs, another for value-from pairs. + # + - script: + tag: script_ecs_enrichment_based_on_message_id + lang: painless + description: 'ECS enrichment based on message_id' + params: + # 4 - User Authentication + # + # Always a failure. + "4": + - set: user.name + from: cyberarkpas.audit.issuer + - set: event.category + value: ["authentication"] + - set: event.type + value: ["start"] + - set: event.action + value: "authentication_failure" + - set: event.outcome + value: "failure" + + # 7 - Logon + # + # User logged on to the PVWA. + "7": + - set: user.name + from: cyberarkpas.audit.issuer + - set: event.category + value: ["authentication", "session"] + - set: event.type + value: ["start"] + - set: event.action + value: "authentication_success" + - set: event.outcome + value: "success" + + # 8 - Logoff + # + # User logged of from the PVWA. + "8": # Logoff + - set: user.name + from: cyberarkpas.audit.issuer + - set: event.category + value: ["authentication", "session"] + - set: event.type + value: ["end"] + - set: event.outcome + value: "success" + + # 19 - Full gateway connection. + "19": + - set: source.user.name + from: cyberarkpas.audit.source_user + - set: user.name + from: cyberarkpas.audit.source_user + - set: destination.user.name + from: cyberarkpas.audit.issuer + - set: event.category + value: ["network"] + - set: event.type + value: ["start"] + - set: event.outcome + value: "success" + + # 22 - CPM Verify Password + # + # Password on a target host is verified. + "22": + # Address of device that hosts the account. + - set: destination.address + from: cyberarkpas.audit.ca_properties.address + - set: event.outcome + from: cyberarkpas.audit.ca_properties.cpm_status + - set: destination.user.name + from: cyberarkpas.audit.ca_properties.user_name + - set: source.user.name + from: cyberarkpas.audit.issuer + - set: user.name + from: cyberarkpas.audit.issuer + - set: event.category + value: ["iam"] + - set: event.type + value: ["admin", "info"] + + # 23 - Action on closed safe + # + # Nothing remarkable. + # + # "23": + + # 24 - CPM Change Password + "24": + - set: destination.address # This could be host.* or user.target.* (doesn't exists). + from: cyberarkpas.audit.ca_properties.address + - set: event.outcome + from: cyberarkpas.audit.ca_properties.cpm_status + - set: user.target.name + from: cyberarkpas.audit.ca_properties.user_name + - set: user.name + from: cyberarkpas.audit.issuer + - set: event.category + value: ["iam"] + - set: event.type + value: ["user", "change"] + + # 31 - CPM Reconcile Password + # + "31": + - set: destination.address # This could be host.* or user.target.* (doesn't exists). + from: cyberarkpas.audit.ca_properties.address + - set: event.outcome + from: cyberarkpas.audit.ca_properties.cpm_status + - set: user.target.name + from: cyberarkpas.audit.ca_properties.user_name + - set: user.name + from: cyberarkpas.audit.issuer + - set: event.category + value: ["iam"] + - set: event.type + value: ["user", "change"] + + # 32 - Add Owner + # + # Change owner of a Safe. + # source_user performs the action, docs suggest otherwise. + "32": + - set: user.name + from: cyberarkpas.audit.issuer + - set: user.target.name + from: cyberarkpas.audit.source_user + - set: event.category + value: ["iam"] # How to best model Vault/Safes? An IAM system? A Database? + - set: event.type + value: ["admin", "change"] + - set: event.outcome + value: "success" + + # 33 - Update Owner + # + # Same as above + "33": + - set: user.name + from: cyberarkpas.audit.issuer + - set: user.target.name + from: cyberarkpas.audit.source_user + - set: event.category + value: ["iam"] # How to best model Vault/Safes? An IAM system? A Database? + - set: event.type + value: ["admin", "change"] + - set: event.outcome + value: "success" + + # 38 - CPM Verify Password Failed + # + # Like 22 but failed. + "38": + # Address of device that hosts the account. + - set: destination.address + from: cyberarkpas.audit.ca_properties.address + - set: event.outcome + value: "failure" + - set: event.reason + from: cyberarkpas.audit.ca_properties.cpm_error_details + - set: destination.user.name + from: cyberarkpas.audit.ca_properties.user_name + - set: source.user.name + from: cyberarkpas.audit.issuer + - set: user.name + from: cyberarkpas.audit.issuer + - set: event.category + value: ["iam"] + - set: event.type + value: ["admin", "info"] + + # 50 - Store File + # + # I don't think it makes much sense to enrich Vault file events as "file" category. + # This will involve probably constructing a file.path prefixed by the safe name. + # Then these file events may be treated as file events in SIEM, which can have + # unwanted consequences. + # "50": + + # 57 - CPM Change Password Failed + "57": + - set: destination.address # This could be host.* or user.target.* (doesn't exists). + from: cyberarkpas.audit.ca_properties.address + - set: event.outcome + value: "failure" + - set: user.target.name + from: cyberarkpas.audit.ca_properties.user_name + - set: user.name + from: cyberarkpas.audit.issuer + - set: event.category + value: ["iam"] + - set: event.type + value: ["user", "change"] + - set: event.reason + from: cyberarkpas.audit.ca_properties.cpm_error_details + + # 60 - CPM Reconcile Password Failed + "60": + - set: destination.address # This could be host.* or user.target.* (doesn't exists). + from: cyberarkpas.audit.ca_properties.address + - set: event.outcome + value: "failure" + - set: user.target.name + from: cyberarkpas.audit.ca_properties.user_name + - set: user.name + from: cyberarkpas.audit.issuer + - set: event.category + value: ["iam"] + - set: event.type + value: ["user", "change"] + - set: event.reason + from: cyberarkpas.audit.ca_properties.cpm_error_details + + # 130 - CPM Disable Password + "130": + - set: event.outcome + value: "failure" + - set: user.target.name + from: cyberarkpas.audit.ca_properties.user_name + - set: user.name + from: cyberarkpas.audit.issuer + - set: event.category + value: ["iam"] + - set: event.type + value: ["user", "change"] + - set: event.reason + from: cyberarkpas.audit.ca_properties.cpm_error_details + - set: event.outcome + from: cyberarkpas.audit.ca_properties.cpm_status + + # 174 - Change User (untested) + "174": + - set: user.target.name + from: cyberarkpas.audit.source_user + - set: event.type + value: ["user", "change"] + - set: event.category + value: ["iam"] + - set: event.outcome + value: "success" + + # 175 - Change Your User (untested) + "175": + - set: user.target.name + from: cyberarkpas.audit.source_user + - set: event.type + value: ["user", "change"] + - set: event.category + value: ["iam"] + - set: event.outcome + value: "success" + + # 176 - Delete User (untested) + "176": + - set: user.target.name + from: cyberarkpas.audit.source_user + - set: event.type + value: ["user", "deletion"] + - set: event.category + value: ["iam"] + - set: event.outcome + value: "success" + + # 177 - Delete Your User (untested) + "177": + - set: user.target.name + from: cyberarkpas.audit.source_user + - set: event.type + value: ["user", "deletion"] + - set: event.category + value: ["iam"] + - set: event.outcome + value: "success" + + # 173 - Add User (alternative to 180, untested) + "173": + - set: user.target.name + from: cyberarkpas.audit.source_user + - set: event.type + value: ["user", "creation"] + - set: event.category + value: ["iam"] + - set: event.outcome + value: "success" + + # 180 - Add User + "180": + - set: user.target.name + from: cyberarkpas.audit.source_user + - set: event.type + value: ["user", "creation"] + - set: event.category + value: ["iam"] + - set: event.outcome + value: "success" + + # 295 - Retrieve Password succeeded + "295": + - set: destination.address + from: cyberarkpas.audit.ca_properties.address + - set: destination.user.name + from: cyberarkpas.audit.ca_properties.user_name + - set: source.user.name + from: cyberarkpas.audit.issuer + - set: user.name + from: cyberarkpas.audit.issuer + - set: event.category + value: ["iam", "authentication"] + - set: event.type + value: ["admin", "start"] + - set: event.outcome + value: "success" + - set: event.reason + from: cyberarkpas.audit.reason + + # 300 - PSM Connect + "300": + - set: destination.address + from: cyberarkpas.audit.extra_details.dst_host + - set: destination.user.name + from: cyberarkpas.audit.extra_details.user + - set: source.address + from: cyberarkpas.audit.extra_details.src_host + - set: source.user.name + from: cyberarkpas.audit.issuer + - set: user.name + from: cyberarkpas.audit.issuer + - set: network.application + from: cyberarkpas.audit.extra_details.protocol + - set: event.category + value: ["session"] + - set: event.type + value: ["start"] + - set: event.outcome + value: "success" + + # 302 - PSM Disconnect + "302": + - set: destination.address + from: cyberarkpas.audit.extra_details.dst_host + - set: destination.user.name + from: cyberarkpas.audit.extra_details.user + - set: source.address + from: cyberarkpas.audit.extra_details.src_host + - set: source.user.name + from: cyberarkpas.audit.issuer + - set: user.name + from: cyberarkpas.audit.issuer + - set: network.application + from: cyberarkpas.audit.extra_details.protocol + - set: _tmp.duration_hms + from: cyberarkpas.audit.extra_details.session_duration + - set: event.category + value: ["session"] + - set: event.type + value: ["end"] + - set: event.outcome + value: "success" + + # 308 - Use Password + "308": + - set: destination.address + from: cyberarkpas.audit.ca_properties.address + - set: destination.user.name + from: cyberarkpas.audit.ca_properties.user_name + - set: source.user.name + from: cyberarkpas.audit.issuer + - set: user.name + from: cyberarkpas.audit.issuer + - set: event.category + value: ["iam", "authentication"] + - set: event.type + value: ["admin", "start"] + - set: event.outcome + from: cyberarkpas.audit.ca_properties.cpm_status + - set: event.reason + from: cyberarkpas.audit.reason + + # 309 - Undefined user logon + # + "309": + - set: user.name + from: cyberarkpas.audit.issuer + - set: event.category + value: ["authentication"] + - set: event.type + value: ["start"] + - set: event.action + value: "authentication_failure" + - set: event.outcome + value: "failure" + + # 361 - Keystroke logging + "361": + - set: destination.address + from: cyberarkpas.audit.extra_details.dst_host + - set: destination.user.name + from: cyberarkpas.audit.extra_details.user + - set: source.address + from: cyberarkpas.audit.extra_details.src_host + - set: source.user.name + from: cyberarkpas.audit.issuer + - set: user.name + from: cyberarkpas.audit.issuer + - set: network.application + from: cyberarkpas.audit.extra_details.protocol + - set: event.category + value: ["session"] + - set: event.type + value: ["info"] + + # 412 - Keystroke logging (same as 361?) + "412": + - set: destination.address + from: cyberarkpas.audit.extra_details.dst_host + - set: destination.user.name + from: cyberarkpas.audit.extra_details.user + - set: source.address + from: cyberarkpas.audit.extra_details.src_host + - set: source.user.name + from: cyberarkpas.audit.issuer + - set: user.name + from: cyberarkpas.audit.issuer + - set: network.application + from: cyberarkpas.audit.extra_details.protocol + - set: event.category + value: ["session"] + - set: event.type + value: ["info"] + + # 359 - SQL Command + "359": + - set: destination.address + from: cyberarkpas.audit.extra_details.dst_host + - set: destination.user.name + from: cyberarkpas.audit.extra_details.user + - set: source.address + from: cyberarkpas.audit.extra_details.src_host + - set: source.user.name + from: cyberarkpas.audit.issuer + - set: user.name + from: cyberarkpas.audit.issuer + - set: network.application + from: cyberarkpas.audit.extra_details.protocol + - set: event.category + value: ["database"] + - set: event.type + value: ["access"] + - set: event.outcome + from: cyberarkpas.audit.ca_properties.cpm_status + + # 411 - Window Title + "411": + - set: destination.address + from: cyberarkpas.audit.extra_details.dst_host + - set: destination.user.name + from: cyberarkpas.audit.extra_details.user + - set: source.address + from: cyberarkpas.audit.extra_details.src_host + - set: source.user.name + from: cyberarkpas.audit.issuer + - set: user.name + from: cyberarkpas.audit.issuer + - set: network.application + from: cyberarkpas.audit.extra_details.protocol + - set: process.pid + from: cyberarkpas.audit.extra_details.process_id + - set: process.name + from: cyberarkpas.audit.extra_details.process_name + - set: event.category + value: ["process"] + - set: event.type + value: ["access", "info"] + + # 414 - CPM Verify SSH Key + # + # SSH-key on a target host is verified. + "414": + # Address of device that hosts the account. + - set: destination.address + from: cyberarkpas.audit.ca_properties.address + - set: event.outcome + from: cyberarkpas.audit.ca_properties.cpm_status + - set: destination.user.name + from: cyberarkpas.audit.ca_properties.user_name + - set: source.user.name + from: cyberarkpas.audit.issuer + - set: user.name + from: cyberarkpas.audit.issuer + - set: event.category + value: ["iam"] + - set: event.type + value: ["admin", "info"] + + # 428 - Retrieve SSH Key + "428": + - set: destination.address + from: cyberarkpas.audit.ca_properties.address + - set: destination.user.name + from: cyberarkpas.audit.ca_properties.user_name + - set: source.user.name + from: cyberarkpas.audit.issuer + - set: user.name + from: cyberarkpas.audit.issuer + - set: event.category + value: ["iam", "authentication"] + - set: event.type + value: ["admin", "start"] + - set: event.outcome + value: "success" + - set: event.reason + from: cyberarkpas.audit.reason + + source: > + def clone(def val) { + return val instanceof List ? new ArrayList(val) : val; + } + def read_field(def map, String name) { + if (map == null || !(map instanceof Map)) return null; + int pos = name.indexOf("."); + return pos == -1 ? map[name] + : read_field(map[name.substring(0, pos)], name.substring(pos+1)); + } + String msgID = ctx.event?.code; + def actions = params.get(msgID); + if (actions == null) return; + List values = new ArrayList(); + for (def item : actions) { + def val = item.value; + if (val == null && (val = read_field(ctx, item.from)) == null || val == "") continue; + values.add([ + "to": item.set, + "value": clone(val) + ]); + } + if (!values.isEmpty()) ctx._tmp["values"] = values; + + - foreach: + tag: foreach_tmp_values + field: _tmp.values + ignore_missing: true + processor: + set: + tag: set_ingest_value_to + field: '{{{_ingest._value.to}}}' + copy_from: '_ingest._value.value' + ignore_empty_value: true + override: true + + # + # Force event.outcome: unknown in case it gets a value other than one of the allowed. + # + - set: + tag: set_event_outcome + field: event.outcome + value: 'unknown' + if: 'ctx.event?.outcome != null && !["success", "failure"].contains(ctx.event.outcome)' + + + # + # Set event.duration from the session duration ("hh:mm:ss") present in some messages. + # + - script: + tag: script_set_event_duration_from_the_session_duration_hh_mm_ss + lang: painless + description: 'Set event.duration from the session duration ("hh:mm:ss")' + if: ctx._tmp?.duration_hms != null + source: > + long parse_hms(String s) { + long cur = 0, total = 0; + for (int i = 0, n = s.length(); i < n; i++) { + char c = s.charAt(i); + if (c >= (char)'0' && c <= (char)'9') { + cur = (cur*10) + (long)(c - (char)'0'); + } else if (c == (char)':') { + total = (total + cur) * 60; + cur = 0; + } else { + return 0; + } + } + return total + cur; + } + long nanos = parse_hms(ctx._tmp.duration_hms) * 1000000000L; + ctx.event['duration'] = nanos; + + # + # Populate ip/domain fields from address. + # + - convert: + tag: convert_source_address + field: source.address + target_field: source.ip + type: ip + ignore_missing: true + on_failure: + - set: + field: source.domain + copy_from: source.address + - convert: + tag: convert_destination_address + field: destination.address + target_field: destination.ip + type: ip + ignore_missing: true + on_failure: + - set: + field: destination.domain + copy_from: destination.address + + # + # Populate related.ip + # + - append: + tag: append_related_ip + field: related.ip + value: '{{{source.ip}}}' + if: ctx.source?.ip != null + allow_duplicates: false + - append: + tag: append_related_ip_2 + field: related.ip + value: '{{{destination.ip}}}' + if: ctx.destination?.ip != null + allow_duplicates: false + - append: + tag: append_related_ip_3 + field: related.ip + value: '{{{cyberarkpas.audit.station}}}' + if: ctx.cyberarkpas.audit.station != null + allow_duplicates: false + - append: + tag: append_related_ip_4 + field: related.ip + value: '{{{cyberarkpas.audit.gateway_station}}}' + if: ctx.cyberarkpas.audit.gateway_station != null + allow_duplicates: false + + # + # Populate related.user + # + - append: + tag: append_related_user + field: related.user + value: '{{{user.name}}}' + if: ctx.user?.name != null + allow_duplicates: false + - append: + tag: append_related_user_2 + field: related.user + value: '{{{source.user.name}}}' + if: ctx.source?.user?.name != null + allow_duplicates: false + - append: + tag: append_related_user_3 + field: related.user + value: '{{{destination.user.name}}}' + if: ctx.destination?.user?.name != null + allow_duplicates: false + - append: + tag: append_related_user_4 + field: related.user + value: '{{{user.target.name}}}' + if: ctx.user?.target?.name != null + allow_duplicates: false + + # + # sometimes application is capitalized. + # + - lowercase: + tag: lowercase_network_application + field: network.application + ignore_missing: true + + - geoip: + tag: geoip_source_ip + field: source.ip + target_field: source.geo + ignore_missing: true + + - geoip: + tag: geoip_destination_ip + field: destination.ip + target_field: destination.geo + ignore_missing: true + + # + # Set host.name + # This sets host.name from observer.hostname when the original event from Filebeat didn't + # have a host.name. This is the case of forwarded events (the tag "forwarded" is present). + # + - set: + tag: set_host_name + field: host.name + value: '{{{observer.hostname}}}' + ignore_empty_value: true + if: ctx.host?.name == null + + - network_direction: + tag: network_direction + ignore_missing: true + internal_networks: + - loopback + - private + - unspecified + + - convert: + tag: convert_process_pid + field: process.pid + type: long + ignore_missing: true + + # + # Save only interesting fields under extra_fields and ca_properties + # to prevent mapping explosion. Keep the rest under .other (type flattened). + # + - script: + tag: script_map_interesting_fields_from_ca_properties_and_extra_details + lang: painless + description: Map interesting fields from ca_properties and extra_details. + params: + ca_properties: + - address + - cpm_disabled + - cpm_error_details + - cpm_status + - creation_method + - customer + - database + - device_type + - dual_account_status + - group_name + - in_process + - index + - last_fail_date + - last_success_change + - last_success_reconciliation + - last_success_verification + - last_task + - logon_domain + - policy_id + - port + - privcloud + - reset_immediately + - retries_count + - sequence_id + - tags + - user_dn + - user_name + - virtual_username + extra_details: + - ad_process_id + - ad_process_name + - application_type + - command + - connection_component_id + - dst_host + - logon_account + - managed_account + - process_id + - process_name + - protocol + - psmid + - session_duration + - session_id + - src_host + - username + source: > + Map audit = ctx.cyberarkpas.audit; + params.entrySet().stream().filter(e -> audit.containsKey(e.getKey())).forEach(lst -> { + Map base = audit[lst.getKey()], + selected = new HashMap(); + lst.getValue().stream().filter(fld -> base.containsKey(fld)).forEach(fld -> { + selected[fld] = base.remove(fld); + }); + selected['other'] = base; + audit[lst.getKey()] = selected; + }); + # + # Cleanup + # + - remove: + tag: remove_tmp + field: _tmp + ignore_missing: true + +on_failure: + - set: + tag: set_event_kind_on_failure + field: event.kind + value: pipeline_error + - append: + tag: append_error_message + field: error.message + value: >- + Processor '{{{ _ingest.on_failure_processor_type }}}' + {{{#_ingest.on_failure_processor_tag}}}with tag '{{{ _ingest.on_failure_processor_tag }}}' + {{{/_ingest.on_failure_processor_tag}}}failed with message '{{{ _ingest.on_failure_message }}}' + - remove: + tag: remove_tmp_on_failure + field: _tmp + ignore_missing: true diff --git a/packages/cyberarkpas/data_stream/audit/elasticsearch/ingest_pipeline/default.yml b/packages/cyberarkpas/data_stream/audit/elasticsearch/ingest_pipeline/default.yml index ddeaed45804..d4dcbb9d73e 100644 --- a/packages/cyberarkpas/data_stream/audit/elasticsearch/ingest_pipeline/default.yml +++ b/packages/cyberarkpas/data_stream/audit/elasticsearch/ingest_pipeline/default.yml @@ -1,1187 +1,22 @@ --- -description: Pipeline for CyberArk PAS +description: Pipeline for CyberArk PAS audit, wrapper processors: - # - # Set ECS version. - # - - set: - field: ecs.version - value: '8.11.0' - # - # Set event.original from message, unless reindexing. - # - - rename: - field: message - target_field: event.original - if: ctx.event?.original == null - ignore_missing: true - # - # Parse syslog headers (if any) and extract JSON payload. - # - - grok: - field: event.original - patterns: - # RFC5424 from CyberArk. - # UseLegacySyslogFormat=No - # <5>1 2021-03-04T17:28:23Z VAULT {"format":"elastic","version":"1.0",...} - - "^<%{NONNEGINT:log.syslog.priority:long}>%{NONNEGINT} %{TIMESTAMP_ISO8601:_tmp.syslog_ts} %{SYSLOGHOST:_tmp.hostname} %{JSON_PAYLOAD:_tmp.payload}" - - # Legacy format. - # UseLegacySyslogFormat=Yes - # Mar 08 02:57:42 VAULT {"format":"elastic","version":"1.0",...} - - "^%{SYSLOGTIMESTAMP:_tmp.syslog_ts} %{SYSLOGHOST:_tmp.hostname} %{JSON_PAYLOAD:_tmp.payload}" - - # Catch-all mode, just JSON payload. - - "%{JSON_PAYLOAD:_tmp.payload}" - pattern_definitions: - JSON_PAYLOAD: '{"format":"elastic","version":"1.0",.*}' - on_failure: - - fail: - message: "unexpected event format: {{{_ingest.on_failure_message}}}" - - - json: - field: _tmp.payload - target_field: _tmp.json - on_failure: - - fail: - message: "malformed JSON event: {{{_ingest.on_failure_message}}}" - - - rename: - field: _tmp.json.syslog.audit_record - target_field: cyberarkpas.audit - on_failure: - - fail: - message: "unexpected event structure: {{{_ingest.on_failure_message}}}" - - - # - # Remove all empty fields - # - - script: - lang: painless - description: 'Removes empty audit fields' - source: >- - ctx.cyberarkpas.audit.entrySet().removeIf(entry -> entry.getValue() == ""); - - - rename: - field: _tmp.json.raw - target_field: cyberarkpas.audit.raw - ignore_missing: true - - # The following processors populate @timestamp from the different sources that can exist in an event. - # In the following order of precedence: - # - IsoTimestamp field (expected ISO8601). Present when new syslog format is used (rfc5424: yes). - # - Timestamp (expected MMM dd HH:mm:ss). Also present only when new syslog format is used. - # - Syslog header timestamp. Either ISO8601 or legacy MMM dd HH:mm:ss, depending on the syslog format in use. - # - Original @timestamp from Filebeat. - - date: - if: ctx.cyberarkpas.audit.IsoTimestamp != null - field: cyberarkpas.audit.IsoTimestamp - target_field: _tmp.timestamp - formats: - - ISO8601 - on_failure: - - append: - field: error.message - value: "failed to parse ISO timestamp field: {{{cyberarkpas.audit.IsoTimestamp}}}: {{{_ingest.on_failure_message}}}" - - - date: - if: 'ctx._tmp.timestamp == null && ctx.cyberarkpas.audit.Timestamp != null' - field: cyberarkpas.audit.Timestamp - target_field: _tmp.timestamp - formats: - # This is the default format. - - 'MMM dd HH:mm:ss' - # Drop a few other formats in case the above fails. - - ISO8601 - - 'MMM d HH:mm:ss' - - "EEE MMM dd HH:mm:ss" - - "EEE MMM d HH:mm:ss" - - "MMM d HH:mm:ss z" - - "MMM dd HH:mm:ss z" - - "EEE MMM d HH:mm:ss z" - - "EEE MMM dd HH:mm:ss z" - - "MMM d yyyy HH:mm:ss" - - "MMM dd yyyy HH:mm:ss" - - "EEE MMM d yyyy HH:mm:ss" - - "EEE MMM dd yyyy HH:mm:ss" - - "MMM d yyyy HH:mm:ss z" - - "MMM dd yyyy HH:mm:ss z" - - "EEE MMM d yyyy HH:mm:ss z" - - "EEE MMM dd yyyy HH:mm:ss z" - on_failure: - - append: - field: error.message - value: "failed to parse timestamp field: {{{cyberarkpas.audit.Timestamp}}}: {{{_ingest.on_failure_message}}}" - - - date: - if: ctx._tmp.timestamp == null && ctx._tmp.syslog_ts != null && ctx.event?.timezone == null - field: _tmp.syslog_ts - target_field: _tmp.timestamp - formats: - # This is the default format. - - 'MMM dd HH:mm:ss' - # Drop a few other formats in case the above fails. - - ISO8601 - - 'MMM d HH:mm:ss' - - "EEE MMM dd HH:mm:ss" - - "EEE MMM d HH:mm:ss" - - "MMM d HH:mm:ss z" - - "MMM dd HH:mm:ss z" - - "EEE MMM d HH:mm:ss z" - - "EEE MMM dd HH:mm:ss z" - - "MMM d yyyy HH:mm:ss" - - "MMM dd yyyy HH:mm:ss" - - "EEE MMM d yyyy HH:mm:ss" - - "EEE MMM dd yyyy HH:mm:ss" - - "MMM d yyyy HH:mm:ss z" - - "MMM dd yyyy HH:mm:ss z" - - "EEE MMM d yyyy HH:mm:ss z" - - "EEE MMM dd yyyy HH:mm:ss z" - on_failure: - - append: - field: error.message - value: "failed to parse legacy syslog timestamp: {{{_tmp.syslog_ts}}}: {{{_ingest.on_failure_message}}}" - - - date: - if: ctx._tmp.timestamp == null && ctx._tmp.syslog_ts != null && ctx.event?.timezone != null - field: _tmp.syslog_ts - target_field: _tmp.timestamp - timezone: '{{{event.timezone}}}' - formats: - # This is the default format. - - 'MMM dd HH:mm:ss' - # Drop a few other formats in case the above fails. - - ISO8601 - - 'MMM d HH:mm:ss' - - "EEE MMM dd HH:mm:ss" - - "EEE MMM d HH:mm:ss" - - "MMM d HH:mm:ss z" - - "MMM dd HH:mm:ss z" - - "EEE MMM d HH:mm:ss z" - - "EEE MMM dd HH:mm:ss z" - - "MMM d yyyy HH:mm:ss" - - "MMM dd yyyy HH:mm:ss" - - "EEE MMM d yyyy HH:mm:ss" - - "EEE MMM dd yyyy HH:mm:ss" - - "MMM d yyyy HH:mm:ss z" - - "MMM dd yyyy HH:mm:ss z" - - "EEE MMM d yyyy HH:mm:ss z" - - "EEE MMM dd yyyy HH:mm:ss z" - on_failure: - - append: - field: error.message - value: "failed to parse legacy syslog timestamp: {{{_tmp.syslog_ts}}}: {{{_ingest.on_failure_message}}}" - - - set: - field: '@timestamp' - value: '{{{_tmp.timestamp}}}' - ignore_empty_value: true - override: true - - # This script ensures that CAProperties.CAProperty is an array. - # When there's a single property, it is serialised as an object instead - # of a single element array. - - script: - lang: painless - description: "Converts CAProperties into an array if necessary" - source: > - def props = ctx.cyberarkpas?.audit?.CAProperties?.CAProperty; - if (props instanceof Map) { - ctx.cyberarkpas.audit.CAProperties.CAProperty = [ props ]; - } - - # This script converts the nested object under cyberarkpas.audit.CAProperties.CAProperty - # into an object under cyberarkpas.audit.CAProperties: - # - # input: - # "cyberarkpas.audit.CAProperties.CAProperty": [ - # { - # "Name": "PolicyID", - # "Value": "LINUX-SSH" - # }, - # { - # "Name": "UserName", - # "Value": "test12" - # } - # output: - # "cyberarkpas.audit.CAProperties": - # { - # "PolicyID": "LINUX-SSH", - # "UserName": "test12" - # } - - foreach: - field: cyberarkpas.audit.CAProperties.CAProperty - ignore_missing: true - processor: - set: - field: 'cyberarkpas.audit.CAProperties.{{{_ingest._value.Name}}}' - value: '{{{_ingest._value.Value}}}' - on_failure: - - append: - field: error.message - value: "failed to process CAProperties array: {{{_ingest.on_failure_message}}}" - - remove: - field: cyberarkpas.audit.CAProperties.CAProperty - ignore_missing: true - - # Parse key-value pairs at ExtraDetails: - # input: - # "cyberarkpas.audit.ExtraDetails": "Command=ls \"/var/tmp\";ConnectionComponentId=PSMP-SSH;DstHost=[...]", - # - # output: - # "cyberarkpas.audit.ExtraDetails": - # { - # "Command": "ls \"/var/tmp\"", - # "ConnectionComponentId": "PSMP-SSH", - # "DstHost": [...] - # - # The original string can contain escaped separators, \= and \; - - kv: - field: cyberarkpas.audit.ExtraDetails - field_split: '(? - String to_snake_case(String s) { - /* faster code path for strings that won't need an underscore */ - if (s.chars().skip(1).noneMatch(Character::isUpperCase)) { - return s.toLowerCase(); - } - int run = 0; - boolean first = true; - StringBuilder result = new StringBuilder(); - for (char c : s.toCharArray()) { - char o = Character.toLowerCase(c); - if (c != o) { - if (run == 0 && !first) { - result.append('_'); - } - run ++; - } else { - if (run > 1) { - char prev = result.charAt(result.length()-1); - result.setCharAt(result.length()-1, (char)'_'); - result.append(prev); - } - run = 0; - first = false; - } - result.append(o); - } - return result.toString(); - } - def keys_to_snake_case_recursive(Map object) { - return object.entrySet().stream().collect( - Collectors.toMap( - e -> to_snake_case(e.getKey()), - e -> e.getValue() instanceof Map ? keys_to_snake_case_recursive(e.getValue()) : e.getValue() - ) - ); - } - ctx.cyberarkpas.audit = keys_to_snake_case_recursive(ctx.cyberarkpas.audit); - - # - # Convert rfc5424 field to boolean. - # - - script: - description: 'Converts the rfc5424 audit field to a boolean' - lang: painless - source: > - def value = ctx.cyberarkpas.audit.rfc5424; - ctx.cyberarkpas.audit["rfc5424"] = value == 'yes'; - - ######################################################## - # ECS enrichment - # - # All processors from this point use the snake_case form - # to access CyberArk fields. - ######################################################## - - - set: - field: event.kind - value: event - - - lowercase: - field: cyberarkpas.audit.action - target_field: event.action - ignore_missing: true - - # Severity to number - # - # Possible values: - # Info -> 0 - # Error -> 7 - # Critical -> 10 - - set: - field: event.severity - value: 2 - if: 'ctx.cyberarkpas.audit.severity == "Info"' - - set: - field: event.severity - value: 7 - if: 'ctx.cyberarkpas.audit.severity == "Error"' - - set: - field: event.severity - value: 10 - if: 'ctx.cyberarkpas.audit.severity == "Critical"' - - set: - field: event.type - value: [error] - if: ctx.event?.severity != null && ctx.event.severity > 6 - - - rename: - field: cyberarkpas.audit.message_id - target_field: event.code - ignore_missing: true - - - set: - field: source.address - value: '{{{cyberarkpas.audit.station}}}' - ignore_empty_value: true - - - set: - field: destination.address - value: '{{{cyberarkpas.audit.gateway_station}}}' - ignore_empty_value: true - - - set: - field: file.path - value: '{{{cyberarkpas.audit.file}}}' - if: ctx.cyberarkpas.audit?.file != null - - # - # Observer fields - # - - rename: - field: cyberarkpas.audit.vendor - target_field: observer.vendor - ignore_missing: true - - rename: - field: cyberarkpas.audit.product - target_field: observer.product - ignore_missing: true - - rename: - field: cyberarkpas.audit.version - target_field: observer.version - ignore_missing: true - - rename: - field: cyberarkpas.audit.hostname - target_field: observer.hostname - ignore_missing: true - # Use hostname from syslog if audit record's Hostname field is missing. - - rename: - field: _tmp.hostname - target_field: observer.hostname - ignore_missing: true - if: ctx.observer?.hostname == null - # - # Enrichment based on message_id - # - # This script is overly complicated (read_field) because at this time - # there is no processor that allows to set one field from a source - # field using indirection (it is possible with rename, but that - # removes the original field). - # - # Once something like this is possible: - # set: - # target_field: '{{{_ingest.value.to}}}' - # copy_from: '{{{_ingest.value.from}}}' - # - # ... this script can be updated to just create two output lists, one - # for value-to pairs, another for value-from pairs. - # - - script: - lang: painless - description: 'ECS enrichment based on message_id' - params: - # 4 - User Authentication - # - # Always a failure. - "4": - - set: user.name - from: cyberarkpas.audit.issuer - - set: event.category - value: ["authentication"] - - set: event.type - value: ["start"] - - set: event.action - value: "authentication_failure" - - set: event.outcome - value: "failure" - - # 7 - Logon - # - # User logged on to the PVWA. - "7": - - set: user.name - from: cyberarkpas.audit.issuer - - set: event.category - value: [ "authentication", "session"] - - set: event.type - value: [ "start"] - - set: event.action - value: "authentication_success" - - set: event.outcome - value: "success" - - # 8 - Logoff - # - # User logged of from the PVWA. - "8": # Logoff - - set: user.name - from: cyberarkpas.audit.issuer - - set: event.category - value: [ "authentication", "session"] - - set: event.type - value: ["end"] - - set: event.outcome - value: "success" - - # 19 - Full gateway connection. - "19": - - set: source.user.name - from: cyberarkpas.audit.source_user - - set: user.name - from: cyberarkpas.audit.source_user - - set: destination.user.name - from: cyberarkpas.audit.issuer - - set: event.category - value: ["network"] - - set: event.type - value: ["start"] - - set: event.outcome - value: "success" - - # 22 - CPM Verify Password - # - # Password on a target host is verified. - "22": - # Address of device that hosts the account. - - set: destination.address - from: cyberarkpas.audit.ca_properties.address - - set: event.outcome - from: cyberarkpas.audit.ca_properties.cpm_status - - set: destination.user.name - from: cyberarkpas.audit.ca_properties.user_name - - set: source.user.name - from: cyberarkpas.audit.issuer - - set: user.name - from: cyberarkpas.audit.issuer - - set: event.category - value: ["iam"] - - set: event.type - value: ["admin", "info"] - - # 23 - Action on closed safe - # - # Nothing remarkable. - # - # "23": - - # 24 - CPM Change Password - "24": - - set: destination.address # This could be host.* or user.target.* (doesn't exists). - from: cyberarkpas.audit.ca_properties.address - - set: event.outcome - from: cyberarkpas.audit.ca_properties.cpm_status - - set: user.target.name - from: cyberarkpas.audit.ca_properties.user_name - - set: user.name - from: cyberarkpas.audit.issuer - - set: event.category - value: ["iam"] - - set: event.type - value: ["user", "change"] - - # 31 - CPM Reconcile Password - # - "31": - - set: destination.address # This could be host.* or user.target.* (doesn't exists). - from: cyberarkpas.audit.ca_properties.address - - set: event.outcome - from: cyberarkpas.audit.ca_properties.cpm_status - - set: user.target.name - from: cyberarkpas.audit.ca_properties.user_name - - set: user.name - from: cyberarkpas.audit.issuer - - set: event.category - value: ["iam"] - - set: event.type - value: ["user", "change"] - - # 32 - Add Owner - # - # Change owner of a Safe. - # source_user performs the action, docs suggest otherwise. - "32": - - set: user.name - from: cyberarkpas.audit.issuer - - set: user.target.name - from: cyberarkpas.audit.source_user - - set: event.category - value: ["iam"] # How to best model Vault/Safes? An IAM system? A Database? - - set: event.type - value: ["admin", "change"] - - set: event.outcome - value: "success" - - # 33 - Update Owner - # - # Same as above - "33": - - set: user.name - from: cyberarkpas.audit.issuer - - set: user.target.name - from: cyberarkpas.audit.source_user - - set: event.category - value: ["iam"] # How to best model Vault/Safes? An IAM system? A Database? - - set: event.type - value: ["admin", "change"] - - set: event.outcome - value: "success" - - # 38 - CPM Verify Password Failed - # - # Like 22 but failed. - "38": - # Address of device that hosts the account. - - set: destination.address - from: cyberarkpas.audit.ca_properties.address - - set: event.outcome - value: "failure" - - set: event.reason - from: cyberarkpas.audit.ca_properties.cpm_error_details - - set: destination.user.name - from: cyberarkpas.audit.ca_properties.user_name - - set: source.user.name - from: cyberarkpas.audit.issuer - - set: user.name - from: cyberarkpas.audit.issuer - - set: event.category - value: ["iam"] - - set: event.type - value: ["admin", "info"] - # 50 - Store File - # - # I don't think it makes much sense to enrich Vault file events as "file" category. - # This will involve probably constructing a file.path prefixed by the safe name. - # Then these file events may be treated as file events in SIEM, which can have - # unwanted consequences. - # "50": + - pipeline: + tag: pipeline_audit + name: '{{ IngestPipeline "audit" }}' + if: | + !ctx.message.contains('"Product":"VaultMonitor"') - # 57 - CPM Change Password Failed - "57": - - set: destination.address # This could be host.* or user.target.* (doesn't exists). - from: cyberarkpas.audit.ca_properties.address - - set: event.outcome - value: "failure" - - set: user.target.name - from: cyberarkpas.audit.ca_properties.user_name - - set: user.name - from: cyberarkpas.audit.issuer - - set: event.category - value: ["iam"] - - set: event.type - value: ["user", "change"] - - set: event.reason - from: cyberarkpas.audit.ca_properties.cpm_error_details - - # 60 - CPM Reconcile Password Failed - "60": - - set: destination.address # This could be host.* or user.target.* (doesn't exists). - from: cyberarkpas.audit.ca_properties.address - - set: event.outcome - value: "failure" - - set: user.target.name - from: cyberarkpas.audit.ca_properties.user_name - - set: user.name - from: cyberarkpas.audit.issuer - - set: event.category - value: ["iam"] - - set: event.type - value: ["user", "change"] - - set: event.reason - from: cyberarkpas.audit.ca_properties.cpm_error_details - - # 130 - CPM Disable Password - "130": - - set: event.outcome - value: "failure" - - set: user.target.name - from: cyberarkpas.audit.ca_properties.user_name - - set: user.name - from: cyberarkpas.audit.issuer - - set: event.category - value: ["iam"] - - set: event.type - value: ["user", "change"] - - set: event.reason - from: cyberarkpas.audit.ca_properties.cpm_error_details - - set: event.outcome - from: cyberarkpas.audit.ca_properties.cpm_status - - # 174 - Change User (untested) - "174": - - set: user.target.name - from: cyberarkpas.audit.source_user - - set: event.type - value: ["user", "change"] - - set: event.category - value: ["iam"] - - set: event.outcome - value: "success" - - # 175 - Change Your User (untested) - "175": - - set: user.target.name - from: cyberarkpas.audit.source_user - - set: event.type - value: ["user", "change"] - - set: event.category - value: ["iam"] - - set: event.outcome - value: "success" - - # 176 - Delete User (untested) - "176": - - set: user.target.name - from: cyberarkpas.audit.source_user - - set: event.type - value: ["user", "deletion"] - - set: event.category - value: ["iam"] - - set: event.outcome - value: "success" - - # 177 - Delete Your User (untested) - "177": - - set: user.target.name - from: cyberarkpas.audit.source_user - - set: event.type - value: ["user", "deletion"] - - set: event.category - value: ["iam"] - - set: event.outcome - value: "success" - - # 173 - Add User (alternative to 180, untested) - "173": - - set: user.target.name - from: cyberarkpas.audit.source_user - - set: event.type - value: ["user", "creation"] - - set: event.category - value: ["iam"] - - set: event.outcome - value: "success" - - # 180 - Add User - "180": - - set: user.target.name - from: cyberarkpas.audit.source_user - - set: event.type - value: ["user", "creation"] - - set: event.category - value: ["iam"] - - set: event.outcome - value: "success" - - # 295 - Retrieve Password succeeded - "295": - - set: destination.address - from: cyberarkpas.audit.ca_properties.address - - set: destination.user.name - from: cyberarkpas.audit.ca_properties.user_name - - set: source.user.name - from: cyberarkpas.audit.issuer - - set: user.name - from: cyberarkpas.audit.issuer - - set: event.category - value: ["iam", "authentication"] - - set: event.type - value: ["admin", "start"] - - set: event.outcome - value: "success" - - set: event.reason - from: cyberarkpas.audit.reason - - # 300 - PSM Connect - "300": - - set: destination.address - from: cyberarkpas.audit.extra_details.dst_host - - set: destination.user.name - from: cyberarkpas.audit.extra_details.user - - set: source.address - from: cyberarkpas.audit.extra_details.src_host - - set: source.user.name - from: cyberarkpas.audit.issuer - - set: user.name - from: cyberarkpas.audit.issuer - - set: network.application - from: cyberarkpas.audit.extra_details.protocol - - set: event.category - value: ["session"] - - set: event.type - value: ["start"] - - set: event.outcome - value: "success" - - # 302 - PSM Disconnect - "302": - - set: destination.address - from: cyberarkpas.audit.extra_details.dst_host - - set: destination.user.name - from: cyberarkpas.audit.extra_details.user - - set: source.address - from: cyberarkpas.audit.extra_details.src_host - - set: source.user.name - from: cyberarkpas.audit.issuer - - set: user.name - from: cyberarkpas.audit.issuer - - set: network.application - from: cyberarkpas.audit.extra_details.protocol - - set: _tmp.duration_hms - from: cyberarkpas.audit.extra_details.session_duration - - set: event.category - value: ["session"] - - set: event.type - value: ["end"] - - set: event.outcome - value: "success" - - # 308 - Use Password - "308": - - set: destination.address - from: cyberarkpas.audit.ca_properties.address - - set: destination.user.name - from: cyberarkpas.audit.ca_properties.user_name - - set: source.user.name - from: cyberarkpas.audit.issuer - - set: user.name - from: cyberarkpas.audit.issuer - - set: event.category - value: ["iam", "authentication"] - - set: event.type - value: ["admin", "start"] - - set: event.outcome - from: cyberarkpas.audit.ca_properties.cpm_status - - set: event.reason - from: cyberarkpas.audit.reason - - # 309 - Undefined user logon - # - "309": - - set: user.name - from: cyberarkpas.audit.issuer - - set: event.category - value: ["authentication"] - - set: event.type - value: ["start"] - - set: event.action - value: "authentication_failure" - - set: event.outcome - value: "failure" - - # 361 - Keystroke logging - "361": - - set: destination.address - from: cyberarkpas.audit.extra_details.dst_host - - set: destination.user.name - from: cyberarkpas.audit.extra_details.user - - set: source.address - from: cyberarkpas.audit.extra_details.src_host - - set: source.user.name - from: cyberarkpas.audit.issuer - - set: user.name - from: cyberarkpas.audit.issuer - - set: network.application - from: cyberarkpas.audit.extra_details.protocol - - set: event.category - value: ["session"] - - set: event.type - value: ["info"] - - # 412 - Keystroke logging (same as 361?) - "412": - - set: destination.address - from: cyberarkpas.audit.extra_details.dst_host - - set: destination.user.name - from: cyberarkpas.audit.extra_details.user - - set: source.address - from: cyberarkpas.audit.extra_details.src_host - - set: source.user.name - from: cyberarkpas.audit.issuer - - set: user.name - from: cyberarkpas.audit.issuer - - set: network.application - from: cyberarkpas.audit.extra_details.protocol - - set: event.category - value: ["session"] - - set: event.type - value: ["info"] - - # 359 - SQL Command - "359": - - set: destination.address - from: cyberarkpas.audit.extra_details.dst_host - - set: destination.user.name - from: cyberarkpas.audit.extra_details.user - - set: source.address - from: cyberarkpas.audit.extra_details.src_host - - set: source.user.name - from: cyberarkpas.audit.issuer - - set: user.name - from: cyberarkpas.audit.issuer - - set: network.application - from: cyberarkpas.audit.extra_details.protocol - - set: event.category - value: ["database"] - - set: event.type - value: ["access"] - - set: event.outcome - from: cyberarkpas.audit.ca_properties.cpm_status - - # 411 - Window Title - "411": - - set: destination.address - from: cyberarkpas.audit.extra_details.dst_host - - set: destination.user.name - from: cyberarkpas.audit.extra_details.user - - set: source.address - from: cyberarkpas.audit.extra_details.src_host - - set: source.user.name - from: cyberarkpas.audit.issuer - - set: user.name - from: cyberarkpas.audit.issuer - - set: network.application - from: cyberarkpas.audit.extra_details.protocol - - set: process.pid - from: cyberarkpas.audit.extra_details.process_id - - set: process.name - from: cyberarkpas.audit.extra_details.process_name - - set: event.category - value: ["process"] - - set: event.type - value: ["access", "info"] - - # 414 - CPM Verify SSH Key - # - # SSH-key on a target host is verified. - "414": - # Address of device that hosts the account. - - set: destination.address - from: cyberarkpas.audit.ca_properties.address - - set: event.outcome - from: cyberarkpas.audit.ca_properties.cpm_status - - set: destination.user.name - from: cyberarkpas.audit.ca_properties.user_name - - set: source.user.name - from: cyberarkpas.audit.issuer - - set: user.name - from: cyberarkpas.audit.issuer - - set: event.category - value: ["iam"] - - set: event.type - value: ["admin", "info"] - - # 428 - Retrieve SSH Key - "428": - - set: destination.address - from: cyberarkpas.audit.ca_properties.address - - set: destination.user.name - from: cyberarkpas.audit.ca_properties.user_name - - set: source.user.name - from: cyberarkpas.audit.issuer - - set: user.name - from: cyberarkpas.audit.issuer - - set: event.category - value: ["iam", "authentication"] - - set: event.type - value: ["admin", "start"] - - set: event.outcome - value: "success" - - set: event.reason - from: cyberarkpas.audit.reason - - source: > - def clone(def val) { - return val instanceof List ? new ArrayList(val) : val; - } - def read_field(def map, String name) { - if (map == null || !(map instanceof Map)) return null; - int pos = name.indexOf("."); - return pos == -1 ? map[name] - : read_field(map[name.substring(0, pos)], name.substring(pos+1)); - } - String msgID = ctx.event?.code; - def actions = params.get(msgID); - if (actions == null) return; - List values = new ArrayList(); - for (def item : actions) { - def val = item.value; - if (val == null && (val = read_field(ctx, item.from)) == null || val == "") continue; - values.add([ - "to": item.set, - "value": clone(val) - ]); - } - if (!values.isEmpty()) ctx._tmp["values"] = values; - - - foreach: - field: _tmp.values - ignore_missing: true - processor: - set: - field: '{{{_ingest._value.to}}}' - copy_from: '_ingest._value.value' - ignore_empty_value: true - override: true - - # - # Force event.outcome: unknown in case it gets a value other than one of the allowed. - # - - set: - field: event.outcome - value: 'unknown' - if: 'ctx.event?.outcome != null && !["success", "failure"].contains(ctx.event.outcome)' - - - # - # Set event.duration from the session duration ("hh:mm:ss") present in some messages. - # - - script: - lang: painless - description: 'Set event.duration from the session duration ("hh:mm:ss")' - if: ctx._tmp?.duration_hms != null - source: > - long parse_hms(String s) { - long cur = 0, total = 0; - for (int i = 0, n = s.length(); i < n; i++) { - char c = s.charAt(i); - if (c >= (char)'0' && c <= (char)'9') { - cur = (cur*10) + (long)(c - (char)'0'); - } else if (c == (char)':') { - total = (total + cur) * 60; - cur = 0; - } else { - return 0; - } - } - return total + cur; - } - long nanos = parse_hms(ctx._tmp.duration_hms) * 1000000000L; - ctx.event['duration'] = nanos; - - # - # Populate ip/domain fields from address. - # - - convert: - field: source.address - target_field: source.ip - type: ip - ignore_missing: true - on_failure: - - set: - field: source.domain - copy_from: source.address - - convert: - field: destination.address - target_field: destination.ip - type: ip - ignore_missing: true - on_failure: - - set: - field: destination.domain - copy_from: destination.address - - # - # Populate related.ip - # - - append: - field: related.ip - value: '{{{source.ip}}}' - if: ctx.source?.ip != null - allow_duplicates: false - - append: - field: related.ip - value: '{{{destination.ip}}}' - if: ctx.destination?.ip != null - allow_duplicates: false - - append: - field: related.ip - value: '{{{cyberarkpas.audit.station}}}' - if: ctx.cyberarkpas.audit.station != null - allow_duplicates: false - - append: - field: related.ip - value: '{{{cyberarkpas.audit.gateway_station}}}' - if: ctx.cyberarkpas.audit.gateway_station != null - allow_duplicates: false - - # - # Populate related.user - # - - append: - field: related.user - value: '{{{user.name}}}' - if: ctx.user?.name != null - allow_duplicates: false - - append: - field: related.user - value: '{{{source.user.name}}}' - if: ctx.source?.user?.name != null - allow_duplicates: false - - append: - field: related.user - value: '{{{destination.user.name}}}' - if: ctx.destination?.user?.name != null - allow_duplicates: false - - append: - field: related.user - value: '{{{user.target.name}}}' - if: ctx.user?.target?.name != null - allow_duplicates: false - - # - # sometimes application is capitalized. - # - - lowercase: - field: network.application - ignore_missing: true - - - geoip: - field: source.ip - target_field: source.geo - ignore_missing: true - - - geoip: - field: destination.ip - target_field: destination.geo - ignore_missing: true - - # - # Set host.name - # This sets host.name from observer.hostname when the original event from Filebeat didn't - # have a host.name. This is the case of forwarded events (the tag "forwarded" is present). - # - - set: - field: host.name - value: '{{{observer.hostname}}}' - ignore_empty_value: true - if: ctx.host?.name == null - - - network_direction: - ignore_missing: true - internal_networks: - - loopback - - private - - unspecified - - - convert: - field: process.pid - type: long - ignore_missing: true - - # - # Save only interesting fields under extra_fields and ca_properties - # to prevent mapping explosion. Keep the rest under .other (type flattened). - # - - script: - lang: painless - description: Map interesting fields from ca_properties and extra_details. - params: - ca_properties: - - address - - cpm_disabled - - cpm_error_details - - cpm_status - - creation_method - - customer - - database - - device_type - - dual_account_status - - group_name - - in_process - - index - - last_fail_date - - last_success_change - - last_success_reconciliation - - last_success_verification - - last_task - - logon_domain - - policy_id - - port - - privcloud - - reset_immediately - - retries_count - - sequence_id - - tags - - user_dn - - user_name - - virtual_username - extra_details: - - ad_process_id - - ad_process_name - - application_type - - command - - connection_component_id - - dst_host - - logon_account - - managed_account - - process_id - - process_name - - protocol - - psmid - - session_duration - - session_id - - src_host - - username - source: > - Map audit = ctx.cyberarkpas.audit; - params.entrySet().stream().filter(e -> audit.containsKey(e.getKey())).forEach(lst -> { - Map base = audit[lst.getKey()], - selected = new HashMap(); - lst.getValue().stream().filter(fld -> base.containsKey(fld)).forEach(fld -> { - selected[fld] = base.remove(fld); - }); - selected['other'] = base; - audit[lst.getKey()] = selected; - }); - # - # Cleanup - # - - remove: - field: _tmp - ignore_missing: true on_failure: - - append: - field: error.message - value: '{{{_ingest.on_failure_message}}}' - - remove: - field: _tmp - ignore_missing: true - set: + tag: set_event_kind_on_failure field: event.kind value: pipeline_error + - append: + tag: append_error_message + field: error.message + value: >- + Processor '{{{ _ingest.on_failure_processor_type }}}' + {{{#_ingest.on_failure_processor_tag}}}with tag '{{{ _ingest.on_failure_processor_tag }}}' + {{{/_ingest.on_failure_processor_tag}}}failed with message '{{{ _ingest.on_failure_message }}}' diff --git a/packages/cyberarkpas/data_stream/audit/manifest.yml b/packages/cyberarkpas/data_stream/audit/manifest.yml index 0b264b174f2..3282753215d 100644 --- a/packages/cyberarkpas/data_stream/audit/manifest.yml +++ b/packages/cyberarkpas/data_stream/audit/manifest.yml @@ -1,11 +1,15 @@ type: logs title: CyberArk PAS audit logs +dataset: cyberarkpas.audit +elasticsearch: + dynamic_dataset: true + dynamic_namespace: true streams: - input: logfile enabled: false template_path: log.yml.hbs title: CyberArk PAS audit logs - description: Collect CyberArk PAS audit logs from files. + description: Collect CyberArk PAS audit logs (and monitoring data) from files. vars: - name: paths type: text @@ -43,7 +47,7 @@ streams: enabled: true template_path: tcp.yml.hbs title: CyberArk PAS audit logs (TCP) - description: Collect CyberArk PAS audit logs using TCP input + description: Collect CyberArk PAS audit logs (and monitoring data) using TCP input vars: - name: syslog_host type: text @@ -96,7 +100,7 @@ streams: enabled: true template_path: udp.yml.hbs title: CyberArk PAS audit logs (UDP) - description: Collect CyberArk PAS audit logs using UDP input + description: Collect CyberArk PAS audit logs (and monitoring data) using UDP input vars: - name: syslog_host type: text diff --git a/packages/cyberarkpas/data_stream/audit/routing_rules.yml b/packages/cyberarkpas/data_stream/audit/routing_rules.yml new file mode 100644 index 00000000000..32e305e0faa --- /dev/null +++ b/packages/cyberarkpas/data_stream/audit/routing_rules.yml @@ -0,0 +1,7 @@ +- source_dataset: cyberarkpas.audit + rules: + - target_dataset: cyberarkpas.monitor + if: ctx.message?.contains('"Product":"VaultMonitor"') == true + namespace: + - "{{data_stream.namespace}}" + - default diff --git a/packages/cyberarkpas/data_stream/monitor/_dev/test/pipeline/test-common-config.yml b/packages/cyberarkpas/data_stream/monitor/_dev/test/pipeline/test-common-config.yml new file mode 100644 index 00000000000..ecd26d50036 --- /dev/null +++ b/packages/cyberarkpas/data_stream/monitor/_dev/test/pipeline/test-common-config.yml @@ -0,0 +1,4 @@ +fields: + tags: + - forwarded + - cyberarkpas-audit diff --git a/packages/cyberarkpas/data_stream/monitor/_dev/test/pipeline/test-monitor.log b/packages/cyberarkpas/data_stream/monitor/_dev/test/pipeline/test-monitor.log new file mode 100644 index 00000000000..2d62f027633 --- /dev/null +++ b/packages/cyberarkpas/data_stream/monitor/_dev/test/pipeline/test-monitor.log @@ -0,0 +1,30 @@ +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:00:00","IsoTimestamp":"2024-10-15T00:00:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0000","AverageExecutionTime":"10","MaxExecutionTime":"149","AverageQueueTime":"0","MaxQueueTime":"37","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"316","CPUUsage":"7","MemoryUsage":"63","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:01:00","IsoTimestamp":"2024-10-15T00:01:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0001","AverageExecutionTime":"10","MaxExecutionTime":"196","AverageQueueTime":"0","MaxQueueTime":"12","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"302","CPUUsage":"14","MemoryUsage":"64","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:02:00","IsoTimestamp":"2024-10-15T00:02:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0002","AverageExecutionTime":"12","MaxExecutionTime":"113","AverageQueueTime":"2","MaxQueueTime":"5","NumberOfParallelTasks":"0","MaxParallelTasks":"20","TransactionCount":"315","CPUUsage":"2","MemoryUsage":"63","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:03:00","IsoTimestamp":"2024-10-15T00:03:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0003","AverageExecutionTime":"10","MaxExecutionTime":"127","AverageQueueTime":"0","MaxQueueTime":"20","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"300","CPUUsage":"4","MemoryUsage":"63","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:04:00","IsoTimestamp":"2024-10-15T00:04:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0004","AverageExecutionTime":"10","MaxExecutionTime":"199","AverageQueueTime":"0","MaxQueueTime":"47","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"117","CPUUsage":"14","MemoryUsage":"63","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"1"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:05:00","IsoTimestamp":"2024-10-15T00:05:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0005","AverageExecutionTime":"11","MaxExecutionTime":"132","AverageQueueTime":"1","MaxQueueTime":"67","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"307","CPUUsage":"5","MemoryUsage":"64","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:06:00","IsoTimestamp":"2024-10-15T00:06:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0006","AverageExecutionTime":"10","MaxExecutionTime":"110","AverageQueueTime":"0","MaxQueueTime":"95","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"316","CPUUsage":"1","MemoryUsage":"64","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:07:00","IsoTimestamp":"2024-10-15T00:07:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0007","AverageExecutionTime":"10","MaxExecutionTime":"194","AverageQueueTime":"0","MaxQueueTime":"44","NumberOfParallelTasks":"0","MaxParallelTasks":"20","TransactionCount":"302","CPUUsage":"14","MemoryUsage":"63","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:08:00","IsoTimestamp":"2024-10-15T00:08:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0008","AverageExecutionTime":"13","MaxExecutionTime":"154","AverageQueueTime":"3","MaxQueueTime":"17","NumberOfParallelTasks":"2","MaxParallelTasks":"20","TransactionCount":"315","CPUUsage":"8","MemoryUsage":"63","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"1"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:09:00","IsoTimestamp":"2024-10-15T00:09:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0009","AverageExecutionTime":"10","MaxExecutionTime":"99","AverageQueueTime":"0","MaxQueueTime":"5","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"300","CPUUsage":"0","MemoryUsage":"64","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:10:00","IsoTimestamp":"2024-10-15T00:10:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0010","AverageExecutionTime":"10","MaxExecutionTime":"179","AverageQueueTime":"0","MaxQueueTime":"15","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"117","CPUUsage":"12","MemoryUsage":"63","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:11:00","IsoTimestamp":"2024-10-15T00:11:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0011","AverageExecutionTime":"10","MaxExecutionTime":"175","AverageQueueTime":"0","MaxQueueTime":"41","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"307","CPUUsage":"11","MemoryUsage":"63","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:12:00","IsoTimestamp":"2024-10-15T00:12:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0012","AverageExecutionTime":"11","MaxExecutionTime":"98","AverageQueueTime":"1","MaxQueueTime":"64","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"205","CPUUsage":"0","MemoryUsage":"64","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:13:00","IsoTimestamp":"2024-10-15T00:13:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0013","AverageExecutionTime":"10","MaxExecutionTime":"159","AverageQueueTime":"0","MaxQueueTime":"68","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"402","CPUUsage":"9","MemoryUsage":"63","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:14:00","IsoTimestamp":"2024-10-15T00:14:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0014","AverageExecutionTime":"10","MaxExecutionTime":"191","AverageQueueTime":"0","MaxQueueTime":"51","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"333","CPUUsage":"13","MemoryUsage":"63","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"1"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:15:00","IsoTimestamp":"2024-10-15T00:15:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0015","AverageExecutionTime":"10","MaxExecutionTime":"106","AverageQueueTime":"0","MaxQueueTime":"23","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"316","CPUUsage":"1","MemoryUsage":"63","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:16:00","IsoTimestamp":"2024-10-15T00:16:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0016","AverageExecutionTime":"9","MaxExecutionTime":"138","AverageQueueTime":"0","MaxQueueTime":"6","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"302","CPUUsage":"5","MemoryUsage":"63","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:17:00","IsoTimestamp":"2024-10-15T00:17:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0017","AverageExecutionTime":"10","MaxExecutionTime":"199","AverageQueueTime":"0","MaxQueueTime":"10","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"315","CPUUsage":"14","MemoryUsage":"63","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:18:00","IsoTimestamp":"2024-10-15T00:18:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0018","AverageExecutionTime":"10","MaxExecutionTime":"122","AverageQueueTime":"0","MaxQueueTime":"33","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"300","CPUUsage":"3","MemoryUsage":"64","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:19:00","IsoTimestamp":"2024-10-15T00:19:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0019","AverageExecutionTime":"10","MaxExecutionTime":"118","AverageQueueTime":"0","MaxQueueTime":"59","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"117","CPUUsage":"2","MemoryUsage":"63","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:20:00","IsoTimestamp":"2024-10-15T00:20:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0020","AverageExecutionTime":"12","MaxExecutionTime":"198","AverageQueueTime":"2","MaxQueueTime":"69","NumberOfParallelTasks":"0","MaxParallelTasks":"20","TransactionCount":"307","CPUUsage":"14","MemoryUsage":"64","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:21:00","IsoTimestamp":"2024-10-15T00:21:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0021","AverageExecutionTime":"10","MaxExecutionTime":"143","AverageQueueTime":"0","MaxQueueTime":"57","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"316","CPUUsage":"6","MemoryUsage":"63","DriveFreeSpaceInGB":"21","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:22:00","IsoTimestamp":"2024-10-15T00:22:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0022","AverageExecutionTime":"10","MaxExecutionTime":"103","AverageQueueTime":"0","MaxQueueTime":"30","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"302","CPUUsage":"0","MemoryUsage":"62","DriveFreeSpaceInGB":"20","DriveTotalSpaceInGB":"40","SyslogQueueSize":"2"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:23:00","IsoTimestamp":"2024-10-15T00:23:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0023","AverageExecutionTime":"11","MaxExecutionTime":"187","AverageQueueTime":"1","MaxQueueTime":"8","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"315","CPUUsage":"13","MemoryUsage":"62","DriveFreeSpaceInGB":"20","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:24:00","IsoTimestamp":"2024-10-15T00:24:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0024","AverageExecutionTime":"10","MaxExecutionTime":"165","AverageQueueTime":"0","MaxQueueTime":"7","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"300","CPUUsage":"9","MemoryUsage":"61","DriveFreeSpaceInGB":"20","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:25:00","IsoTimestamp":"2024-10-15T00:25:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0025","AverageExecutionTime":"10","MaxExecutionTime":"98","AverageQueueTime":"0","MaxQueueTime":"27","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"117","CPUUsage":"0","MemoryUsage":"62","DriveFreeSpaceInGB":"20","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:26:00","IsoTimestamp":"2024-10-15T00:26:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0026","AverageExecutionTime":"14","MaxExecutionTime":"170","AverageQueueTime":"4","MaxQueueTime":"54","NumberOfParallelTasks":"0","MaxParallelTasks":"20","TransactionCount":"307","CPUUsage":"10","MemoryUsage":"60","DriveFreeSpaceInGB":"20","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:27:00","IsoTimestamp":"2024-10-15T00:27:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0027","AverageExecutionTime":"10","MaxExecutionTime":"184","AverageQueueTime":"0","MaxQueueTime":"102","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"316","CPUUsage":"12","MemoryUsage":"60","DriveFreeSpaceInGB":"20","DriveTotalSpaceInGB":"40","SyslogQueueSize":"1"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:28:00","IsoTimestamp":"2024-10-15T00:28:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0028","AverageExecutionTime":"11","MaxExecutionTime":"101","AverageQueueTime":"1","MaxQueueTime":"62","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"302","CPUUsage":"0","MemoryUsage":"63","DriveFreeSpaceInGB":"20","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} +{"format":"elastic","version":"1.0","syslog":{"monitor_record":{"Timestamp":"Oct 15 00:29:00","IsoTimestamp":"2024-10-15T00:29:00Z","Hostname":"VAULT","Vendor":"Cyber-Ark","Product":"VaultMonitor","Version":"11.7.0029","AverageExecutionTime":"10","MaxExecutionTime":"148","AverageQueueTime":"0","MaxQueueTime":"37","NumberOfParallelTasks":"1","MaxParallelTasks":"20","TransactionCount":"315","CPUUsage":"7","MemoryUsage":"62","DriveFreeSpaceInGB":"20","DriveTotalSpaceInGB":"40","SyslogQueueSize":"0"}}} diff --git a/packages/cyberarkpas/data_stream/monitor/_dev/test/pipeline/test-monitor.log-expected.json b/packages/cyberarkpas/data_stream/monitor/_dev/test/pipeline/test-monitor.log-expected.json new file mode 100644 index 00000000000..2b29acb7b08 --- /dev/null +++ b/packages/cyberarkpas/data_stream/monitor/_dev/test/pipeline/test-monitor.log-expected.json @@ -0,0 +1,1504 @@ +{ + "expected": [ + { + "@timestamp": "2024-10-15T00:00:00.000Z", + "cyberarkpas": { + "monitor": { + "average_execution_time": 10, + "average_queue_time": 0, + "cpu_usage": 7, + "drive_free_space_in_gb": 21, + "drive_total_space_in_gb": 40, + "iso_timestamp": "2024-10-15T00:00:00Z", + "max_execution_time": 149, + "max_parallel_tasks": 20, + "max_queue_time": 37, + "memory_usage": 63, + "number_of_parallel_tasks": 1, + "syslog_queue_size": 0, + "timestamp": "Oct 15 00:00:00", + "transaction_count": 316, + "version": "11.7.0000" + } + }, + "ecs": { + "version": "8.11.0" + }, + "event": { + "kind": "metric", + "original": "{\"format\":\"elastic\",\"version\":\"1.0\",\"syslog\":{\"monitor_record\":{\"Timestamp\":\"Oct 15 00:00:00\",\"IsoTimestamp\":\"2024-10-15T00:00:00Z\",\"Hostname\":\"VAULT\",\"Vendor\":\"Cyber-Ark\",\"Product\":\"VaultMonitor\",\"Version\":\"11.7.0000\",\"AverageExecutionTime\":\"10\",\"MaxExecutionTime\":\"149\",\"AverageQueueTime\":\"0\",\"MaxQueueTime\":\"37\",\"NumberOfParallelTasks\":\"1\",\"MaxParallelTasks\":\"20\",\"TransactionCount\":\"316\",\"CPUUsage\":\"7\",\"MemoryUsage\":\"63\",\"DriveFreeSpaceInGB\":\"21\",\"DriveTotalSpaceInGB\":\"40\",\"SyslogQueueSize\":\"0\"}}}" + }, + "host": { + "cpu": { + "usage": 0.07 + }, + "name": "VAULT" + }, + "observer": { + "hostname": "VAULT", + "product": "VaultMonitor", + "vendor": "Cyber-Ark", + "version": "11.7.0000" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] + }, + { + "@timestamp": "2024-10-15T00:01:00.000Z", + "cyberarkpas": { + "monitor": { + "average_execution_time": 10, + "average_queue_time": 0, + "cpu_usage": 14, + "drive_free_space_in_gb": 21, + "drive_total_space_in_gb": 40, + "iso_timestamp": "2024-10-15T00:01:00Z", + "max_execution_time": 196, + "max_parallel_tasks": 20, + "max_queue_time": 12, + "memory_usage": 64, + "number_of_parallel_tasks": 1, + "syslog_queue_size": 0, + "timestamp": "Oct 15 00:01:00", + "transaction_count": 302, + "version": "11.7.0001" + } + }, + "ecs": { + "version": "8.11.0" + }, + "event": { + "kind": "metric", + "original": "{\"format\":\"elastic\",\"version\":\"1.0\",\"syslog\":{\"monitor_record\":{\"Timestamp\":\"Oct 15 00:01:00\",\"IsoTimestamp\":\"2024-10-15T00:01:00Z\",\"Hostname\":\"VAULT\",\"Vendor\":\"Cyber-Ark\",\"Product\":\"VaultMonitor\",\"Version\":\"11.7.0001\",\"AverageExecutionTime\":\"10\",\"MaxExecutionTime\":\"196\",\"AverageQueueTime\":\"0\",\"MaxQueueTime\":\"12\",\"NumberOfParallelTasks\":\"1\",\"MaxParallelTasks\":\"20\",\"TransactionCount\":\"302\",\"CPUUsage\":\"14\",\"MemoryUsage\":\"64\",\"DriveFreeSpaceInGB\":\"21\",\"DriveTotalSpaceInGB\":\"40\",\"SyslogQueueSize\":\"0\"}}}" + }, + "host": { + "cpu": { + "usage": 0.14 + }, + "name": "VAULT" + }, + "observer": { + "hostname": "VAULT", + "product": "VaultMonitor", + "vendor": "Cyber-Ark", + "version": "11.7.0001" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] + }, + { + "@timestamp": "2024-10-15T00:02:00.000Z", + "cyberarkpas": { + "monitor": { + "average_execution_time": 12, + "average_queue_time": 2, + "cpu_usage": 2, + "drive_free_space_in_gb": 21, + "drive_total_space_in_gb": 40, + "iso_timestamp": "2024-10-15T00:02:00Z", + "max_execution_time": 113, + "max_parallel_tasks": 20, + "max_queue_time": 5, + "memory_usage": 63, + "number_of_parallel_tasks": 0, + "syslog_queue_size": 0, + "timestamp": "Oct 15 00:02:00", + "transaction_count": 315, + "version": "11.7.0002" + } + }, + "ecs": { + "version": "8.11.0" + }, + "event": { + "kind": "metric", + "original": "{\"format\":\"elastic\",\"version\":\"1.0\",\"syslog\":{\"monitor_record\":{\"Timestamp\":\"Oct 15 00:02:00\",\"IsoTimestamp\":\"2024-10-15T00:02:00Z\",\"Hostname\":\"VAULT\",\"Vendor\":\"Cyber-Ark\",\"Product\":\"VaultMonitor\",\"Version\":\"11.7.0002\",\"AverageExecutionTime\":\"12\",\"MaxExecutionTime\":\"113\",\"AverageQueueTime\":\"2\",\"MaxQueueTime\":\"5\",\"NumberOfParallelTasks\":\"0\",\"MaxParallelTasks\":\"20\",\"TransactionCount\":\"315\",\"CPUUsage\":\"2\",\"MemoryUsage\":\"63\",\"DriveFreeSpaceInGB\":\"21\",\"DriveTotalSpaceInGB\":\"40\",\"SyslogQueueSize\":\"0\"}}}" + }, + "host": { + "cpu": { + "usage": 0.02 + }, + "name": "VAULT" + }, + "observer": { + "hostname": "VAULT", + "product": "VaultMonitor", + "vendor": "Cyber-Ark", + "version": "11.7.0002" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] + }, + { + "@timestamp": "2024-10-15T00:03:00.000Z", + "cyberarkpas": { + "monitor": { + "average_execution_time": 10, + "average_queue_time": 0, + "cpu_usage": 4, + "drive_free_space_in_gb": 21, + "drive_total_space_in_gb": 40, + "iso_timestamp": "2024-10-15T00:03:00Z", + "max_execution_time": 127, + "max_parallel_tasks": 20, + "max_queue_time": 20, + "memory_usage": 63, + "number_of_parallel_tasks": 1, + "syslog_queue_size": 0, + "timestamp": "Oct 15 00:03:00", + "transaction_count": 300, + "version": "11.7.0003" + } + }, + "ecs": { + "version": "8.11.0" + }, + "event": { + "kind": "metric", + "original": "{\"format\":\"elastic\",\"version\":\"1.0\",\"syslog\":{\"monitor_record\":{\"Timestamp\":\"Oct 15 00:03:00\",\"IsoTimestamp\":\"2024-10-15T00:03:00Z\",\"Hostname\":\"VAULT\",\"Vendor\":\"Cyber-Ark\",\"Product\":\"VaultMonitor\",\"Version\":\"11.7.0003\",\"AverageExecutionTime\":\"10\",\"MaxExecutionTime\":\"127\",\"AverageQueueTime\":\"0\",\"MaxQueueTime\":\"20\",\"NumberOfParallelTasks\":\"1\",\"MaxParallelTasks\":\"20\",\"TransactionCount\":\"300\",\"CPUUsage\":\"4\",\"MemoryUsage\":\"63\",\"DriveFreeSpaceInGB\":\"21\",\"DriveTotalSpaceInGB\":\"40\",\"SyslogQueueSize\":\"0\"}}}" + }, + "host": { + "cpu": { + "usage": 0.04 + }, + "name": "VAULT" + }, + "observer": { + "hostname": "VAULT", + "product": "VaultMonitor", + "vendor": "Cyber-Ark", + "version": "11.7.0003" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] + }, + { + "@timestamp": "2024-10-15T00:04:00.000Z", + "cyberarkpas": { + "monitor": { + "average_execution_time": 10, + "average_queue_time": 0, + "cpu_usage": 14, + "drive_free_space_in_gb": 21, + "drive_total_space_in_gb": 40, + "iso_timestamp": "2024-10-15T00:04:00Z", + "max_execution_time": 199, + "max_parallel_tasks": 20, + "max_queue_time": 47, + "memory_usage": 63, + "number_of_parallel_tasks": 1, + "syslog_queue_size": 1, + "timestamp": "Oct 15 00:04:00", + "transaction_count": 117, + "version": "11.7.0004" + } + }, + "ecs": { + "version": "8.11.0" + }, + "event": { + "kind": "metric", + "original": "{\"format\":\"elastic\",\"version\":\"1.0\",\"syslog\":{\"monitor_record\":{\"Timestamp\":\"Oct 15 00:04:00\",\"IsoTimestamp\":\"2024-10-15T00:04:00Z\",\"Hostname\":\"VAULT\",\"Vendor\":\"Cyber-Ark\",\"Product\":\"VaultMonitor\",\"Version\":\"11.7.0004\",\"AverageExecutionTime\":\"10\",\"MaxExecutionTime\":\"199\",\"AverageQueueTime\":\"0\",\"MaxQueueTime\":\"47\",\"NumberOfParallelTasks\":\"1\",\"MaxParallelTasks\":\"20\",\"TransactionCount\":\"117\",\"CPUUsage\":\"14\",\"MemoryUsage\":\"63\",\"DriveFreeSpaceInGB\":\"21\",\"DriveTotalSpaceInGB\":\"40\",\"SyslogQueueSize\":\"1\"}}}" + }, + "host": { + "cpu": { + "usage": 0.14 + }, + "name": "VAULT" + }, + "observer": { + "hostname": "VAULT", + "product": "VaultMonitor", + "vendor": "Cyber-Ark", + "version": "11.7.0004" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] + }, + { + "@timestamp": "2024-10-15T00:05:00.000Z", + "cyberarkpas": { + "monitor": { + "average_execution_time": 11, + "average_queue_time": 1, + "cpu_usage": 5, + "drive_free_space_in_gb": 21, + "drive_total_space_in_gb": 40, + "iso_timestamp": "2024-10-15T00:05:00Z", + "max_execution_time": 132, + "max_parallel_tasks": 20, + "max_queue_time": 67, + "memory_usage": 64, + "number_of_parallel_tasks": 1, + "syslog_queue_size": 0, + "timestamp": "Oct 15 00:05:00", + "transaction_count": 307, + "version": "11.7.0005" + } + }, + "ecs": { + "version": "8.11.0" + }, + "event": { + "kind": "metric", + "original": "{\"format\":\"elastic\",\"version\":\"1.0\",\"syslog\":{\"monitor_record\":{\"Timestamp\":\"Oct 15 00:05:00\",\"IsoTimestamp\":\"2024-10-15T00:05:00Z\",\"Hostname\":\"VAULT\",\"Vendor\":\"Cyber-Ark\",\"Product\":\"VaultMonitor\",\"Version\":\"11.7.0005\",\"AverageExecutionTime\":\"11\",\"MaxExecutionTime\":\"132\",\"AverageQueueTime\":\"1\",\"MaxQueueTime\":\"67\",\"NumberOfParallelTasks\":\"1\",\"MaxParallelTasks\":\"20\",\"TransactionCount\":\"307\",\"CPUUsage\":\"5\",\"MemoryUsage\":\"64\",\"DriveFreeSpaceInGB\":\"21\",\"DriveTotalSpaceInGB\":\"40\",\"SyslogQueueSize\":\"0\"}}}" + }, + "host": { + "cpu": { + "usage": 0.05 + }, + "name": "VAULT" + }, + "observer": { + "hostname": "VAULT", + "product": "VaultMonitor", + "vendor": "Cyber-Ark", + "version": "11.7.0005" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] + }, + { + "@timestamp": "2024-10-15T00:06:00.000Z", + "cyberarkpas": { + "monitor": { + "average_execution_time": 10, + "average_queue_time": 0, + "cpu_usage": 1, + "drive_free_space_in_gb": 21, + "drive_total_space_in_gb": 40, + "iso_timestamp": "2024-10-15T00:06:00Z", + "max_execution_time": 110, + "max_parallel_tasks": 20, + "max_queue_time": 95, + "memory_usage": 64, + "number_of_parallel_tasks": 1, + "syslog_queue_size": 0, + "timestamp": "Oct 15 00:06:00", + "transaction_count": 316, + "version": "11.7.0006" + } + }, + "ecs": { + "version": "8.11.0" + }, + "event": { + "kind": "metric", + "original": "{\"format\":\"elastic\",\"version\":\"1.0\",\"syslog\":{\"monitor_record\":{\"Timestamp\":\"Oct 15 00:06:00\",\"IsoTimestamp\":\"2024-10-15T00:06:00Z\",\"Hostname\":\"VAULT\",\"Vendor\":\"Cyber-Ark\",\"Product\":\"VaultMonitor\",\"Version\":\"11.7.0006\",\"AverageExecutionTime\":\"10\",\"MaxExecutionTime\":\"110\",\"AverageQueueTime\":\"0\",\"MaxQueueTime\":\"95\",\"NumberOfParallelTasks\":\"1\",\"MaxParallelTasks\":\"20\",\"TransactionCount\":\"316\",\"CPUUsage\":\"1\",\"MemoryUsage\":\"64\",\"DriveFreeSpaceInGB\":\"21\",\"DriveTotalSpaceInGB\":\"40\",\"SyslogQueueSize\":\"0\"}}}" + }, + "host": { + "cpu": { + "usage": 0.01 + }, + "name": "VAULT" + }, + "observer": { + "hostname": "VAULT", + "product": "VaultMonitor", + "vendor": "Cyber-Ark", + "version": "11.7.0006" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] + }, + { + "@timestamp": "2024-10-15T00:07:00.000Z", + "cyberarkpas": { + "monitor": { + "average_execution_time": 10, + "average_queue_time": 0, + "cpu_usage": 14, + "drive_free_space_in_gb": 21, + "drive_total_space_in_gb": 40, + "iso_timestamp": "2024-10-15T00:07:00Z", + "max_execution_time": 194, + "max_parallel_tasks": 20, + "max_queue_time": 44, + "memory_usage": 63, + "number_of_parallel_tasks": 0, + "syslog_queue_size": 0, + "timestamp": "Oct 15 00:07:00", + "transaction_count": 302, + "version": "11.7.0007" + } + }, + "ecs": { + "version": "8.11.0" + }, + "event": { + "kind": "metric", + "original": "{\"format\":\"elastic\",\"version\":\"1.0\",\"syslog\":{\"monitor_record\":{\"Timestamp\":\"Oct 15 00:07:00\",\"IsoTimestamp\":\"2024-10-15T00:07:00Z\",\"Hostname\":\"VAULT\",\"Vendor\":\"Cyber-Ark\",\"Product\":\"VaultMonitor\",\"Version\":\"11.7.0007\",\"AverageExecutionTime\":\"10\",\"MaxExecutionTime\":\"194\",\"AverageQueueTime\":\"0\",\"MaxQueueTime\":\"44\",\"NumberOfParallelTasks\":\"0\",\"MaxParallelTasks\":\"20\",\"TransactionCount\":\"302\",\"CPUUsage\":\"14\",\"MemoryUsage\":\"63\",\"DriveFreeSpaceInGB\":\"21\",\"DriveTotalSpaceInGB\":\"40\",\"SyslogQueueSize\":\"0\"}}}" + }, + "host": { + "cpu": { + "usage": 0.14 + }, + "name": "VAULT" + }, + "observer": { + "hostname": "VAULT", + "product": "VaultMonitor", + "vendor": "Cyber-Ark", + "version": "11.7.0007" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] + }, + { + "@timestamp": "2024-10-15T00:08:00.000Z", + "cyberarkpas": { + "monitor": { + "average_execution_time": 13, + "average_queue_time": 3, + "cpu_usage": 8, + "drive_free_space_in_gb": 21, + "drive_total_space_in_gb": 40, + "iso_timestamp": "2024-10-15T00:08:00Z", + "max_execution_time": 154, + "max_parallel_tasks": 20, + "max_queue_time": 17, + "memory_usage": 63, + "number_of_parallel_tasks": 2, + "syslog_queue_size": 1, + "timestamp": "Oct 15 00:08:00", + "transaction_count": 315, + "version": "11.7.0008" + } + }, + "ecs": { + "version": "8.11.0" + }, + "event": { + "kind": "metric", + "original": "{\"format\":\"elastic\",\"version\":\"1.0\",\"syslog\":{\"monitor_record\":{\"Timestamp\":\"Oct 15 00:08:00\",\"IsoTimestamp\":\"2024-10-15T00:08:00Z\",\"Hostname\":\"VAULT\",\"Vendor\":\"Cyber-Ark\",\"Product\":\"VaultMonitor\",\"Version\":\"11.7.0008\",\"AverageExecutionTime\":\"13\",\"MaxExecutionTime\":\"154\",\"AverageQueueTime\":\"3\",\"MaxQueueTime\":\"17\",\"NumberOfParallelTasks\":\"2\",\"MaxParallelTasks\":\"20\",\"TransactionCount\":\"315\",\"CPUUsage\":\"8\",\"MemoryUsage\":\"63\",\"DriveFreeSpaceInGB\":\"21\",\"DriveTotalSpaceInGB\":\"40\",\"SyslogQueueSize\":\"1\"}}}" + }, + "host": { + "cpu": { + "usage": 0.08 + }, + "name": "VAULT" + }, + "observer": { + "hostname": "VAULT", + "product": "VaultMonitor", + "vendor": "Cyber-Ark", + "version": "11.7.0008" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] + }, + { + "@timestamp": "2024-10-15T00:09:00.000Z", + "cyberarkpas": { + "monitor": { + "average_execution_time": 10, + "average_queue_time": 0, + "cpu_usage": 0, + "drive_free_space_in_gb": 21, + "drive_total_space_in_gb": 40, + "iso_timestamp": "2024-10-15T00:09:00Z", + "max_execution_time": 99, + "max_parallel_tasks": 20, + "max_queue_time": 5, + "memory_usage": 64, + "number_of_parallel_tasks": 1, + "syslog_queue_size": 0, + "timestamp": "Oct 15 00:09:00", + "transaction_count": 300, + "version": "11.7.0009" + } + }, + "ecs": { + "version": "8.11.0" + }, + "event": { + "kind": "metric", + "original": "{\"format\":\"elastic\",\"version\":\"1.0\",\"syslog\":{\"monitor_record\":{\"Timestamp\":\"Oct 15 00:09:00\",\"IsoTimestamp\":\"2024-10-15T00:09:00Z\",\"Hostname\":\"VAULT\",\"Vendor\":\"Cyber-Ark\",\"Product\":\"VaultMonitor\",\"Version\":\"11.7.0009\",\"AverageExecutionTime\":\"10\",\"MaxExecutionTime\":\"99\",\"AverageQueueTime\":\"0\",\"MaxQueueTime\":\"5\",\"NumberOfParallelTasks\":\"1\",\"MaxParallelTasks\":\"20\",\"TransactionCount\":\"300\",\"CPUUsage\":\"0\",\"MemoryUsage\":\"64\",\"DriveFreeSpaceInGB\":\"21\",\"DriveTotalSpaceInGB\":\"40\",\"SyslogQueueSize\":\"0\"}}}" + }, + "host": { + "cpu": { + "usage": 0.0 + }, + "name": "VAULT" + }, + "observer": { + "hostname": "VAULT", + "product": "VaultMonitor", + "vendor": "Cyber-Ark", + "version": "11.7.0009" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] + }, + { + "@timestamp": "2024-10-15T00:10:00.000Z", + "cyberarkpas": { + "monitor": { + "average_execution_time": 10, + "average_queue_time": 0, + "cpu_usage": 12, + "drive_free_space_in_gb": 21, + "drive_total_space_in_gb": 40, + "iso_timestamp": "2024-10-15T00:10:00Z", + "max_execution_time": 179, + "max_parallel_tasks": 20, + "max_queue_time": 15, + "memory_usage": 63, + "number_of_parallel_tasks": 1, + "syslog_queue_size": 0, + "timestamp": "Oct 15 00:10:00", + "transaction_count": 117, + "version": "11.7.0010" + } + }, + "ecs": { + "version": "8.11.0" + }, + "event": { + "kind": "metric", + "original": "{\"format\":\"elastic\",\"version\":\"1.0\",\"syslog\":{\"monitor_record\":{\"Timestamp\":\"Oct 15 00:10:00\",\"IsoTimestamp\":\"2024-10-15T00:10:00Z\",\"Hostname\":\"VAULT\",\"Vendor\":\"Cyber-Ark\",\"Product\":\"VaultMonitor\",\"Version\":\"11.7.0010\",\"AverageExecutionTime\":\"10\",\"MaxExecutionTime\":\"179\",\"AverageQueueTime\":\"0\",\"MaxQueueTime\":\"15\",\"NumberOfParallelTasks\":\"1\",\"MaxParallelTasks\":\"20\",\"TransactionCount\":\"117\",\"CPUUsage\":\"12\",\"MemoryUsage\":\"63\",\"DriveFreeSpaceInGB\":\"21\",\"DriveTotalSpaceInGB\":\"40\",\"SyslogQueueSize\":\"0\"}}}" + }, + "host": { + "cpu": { + "usage": 0.12 + }, + "name": "VAULT" + }, + "observer": { + "hostname": "VAULT", + "product": "VaultMonitor", + "vendor": "Cyber-Ark", + "version": "11.7.0010" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] + }, + { + "@timestamp": "2024-10-15T00:11:00.000Z", + "cyberarkpas": { + "monitor": { + "average_execution_time": 10, + "average_queue_time": 0, + "cpu_usage": 11, + "drive_free_space_in_gb": 21, + "drive_total_space_in_gb": 40, + "iso_timestamp": "2024-10-15T00:11:00Z", + "max_execution_time": 175, + "max_parallel_tasks": 20, + "max_queue_time": 41, + "memory_usage": 63, + "number_of_parallel_tasks": 1, + "syslog_queue_size": 0, + "timestamp": "Oct 15 00:11:00", + "transaction_count": 307, + "version": "11.7.0011" + } + }, + "ecs": { + "version": "8.11.0" + }, + "event": { + "kind": "metric", + "original": "{\"format\":\"elastic\",\"version\":\"1.0\",\"syslog\":{\"monitor_record\":{\"Timestamp\":\"Oct 15 00:11:00\",\"IsoTimestamp\":\"2024-10-15T00:11:00Z\",\"Hostname\":\"VAULT\",\"Vendor\":\"Cyber-Ark\",\"Product\":\"VaultMonitor\",\"Version\":\"11.7.0011\",\"AverageExecutionTime\":\"10\",\"MaxExecutionTime\":\"175\",\"AverageQueueTime\":\"0\",\"MaxQueueTime\":\"41\",\"NumberOfParallelTasks\":\"1\",\"MaxParallelTasks\":\"20\",\"TransactionCount\":\"307\",\"CPUUsage\":\"11\",\"MemoryUsage\":\"63\",\"DriveFreeSpaceInGB\":\"21\",\"DriveTotalSpaceInGB\":\"40\",\"SyslogQueueSize\":\"0\"}}}" + }, + "host": { + "cpu": { + "usage": 0.11 + }, + "name": "VAULT" + }, + "observer": { + "hostname": "VAULT", + "product": "VaultMonitor", + "vendor": "Cyber-Ark", + "version": "11.7.0011" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] + }, + { + "@timestamp": "2024-10-15T00:12:00.000Z", + "cyberarkpas": { + "monitor": { + "average_execution_time": 11, + "average_queue_time": 1, + "cpu_usage": 0, + "drive_free_space_in_gb": 21, + "drive_total_space_in_gb": 40, + "iso_timestamp": "2024-10-15T00:12:00Z", + "max_execution_time": 98, + "max_parallel_tasks": 20, + "max_queue_time": 64, + "memory_usage": 64, + "number_of_parallel_tasks": 1, + "syslog_queue_size": 0, + "timestamp": "Oct 15 00:12:00", + "transaction_count": 205, + "version": "11.7.0012" + } + }, + "ecs": { + "version": "8.11.0" + }, + "event": { + "kind": "metric", + "original": "{\"format\":\"elastic\",\"version\":\"1.0\",\"syslog\":{\"monitor_record\":{\"Timestamp\":\"Oct 15 00:12:00\",\"IsoTimestamp\":\"2024-10-15T00:12:00Z\",\"Hostname\":\"VAULT\",\"Vendor\":\"Cyber-Ark\",\"Product\":\"VaultMonitor\",\"Version\":\"11.7.0012\",\"AverageExecutionTime\":\"11\",\"MaxExecutionTime\":\"98\",\"AverageQueueTime\":\"1\",\"MaxQueueTime\":\"64\",\"NumberOfParallelTasks\":\"1\",\"MaxParallelTasks\":\"20\",\"TransactionCount\":\"205\",\"CPUUsage\":\"0\",\"MemoryUsage\":\"64\",\"DriveFreeSpaceInGB\":\"21\",\"DriveTotalSpaceInGB\":\"40\",\"SyslogQueueSize\":\"0\"}}}" + }, + "host": { + "cpu": { + "usage": 0.0 + }, + "name": "VAULT" + }, + "observer": { + "hostname": "VAULT", + "product": "VaultMonitor", + "vendor": "Cyber-Ark", + "version": "11.7.0012" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] + }, + { + "@timestamp": "2024-10-15T00:13:00.000Z", + "cyberarkpas": { + "monitor": { + "average_execution_time": 10, + "average_queue_time": 0, + "cpu_usage": 9, + "drive_free_space_in_gb": 21, + "drive_total_space_in_gb": 40, + "iso_timestamp": "2024-10-15T00:13:00Z", + "max_execution_time": 159, + "max_parallel_tasks": 20, + "max_queue_time": 68, + "memory_usage": 63, + "number_of_parallel_tasks": 1, + "syslog_queue_size": 0, + "timestamp": "Oct 15 00:13:00", + "transaction_count": 402, + "version": "11.7.0013" + } + }, + "ecs": { + "version": "8.11.0" + }, + "event": { + "kind": "metric", + "original": "{\"format\":\"elastic\",\"version\":\"1.0\",\"syslog\":{\"monitor_record\":{\"Timestamp\":\"Oct 15 00:13:00\",\"IsoTimestamp\":\"2024-10-15T00:13:00Z\",\"Hostname\":\"VAULT\",\"Vendor\":\"Cyber-Ark\",\"Product\":\"VaultMonitor\",\"Version\":\"11.7.0013\",\"AverageExecutionTime\":\"10\",\"MaxExecutionTime\":\"159\",\"AverageQueueTime\":\"0\",\"MaxQueueTime\":\"68\",\"NumberOfParallelTasks\":\"1\",\"MaxParallelTasks\":\"20\",\"TransactionCount\":\"402\",\"CPUUsage\":\"9\",\"MemoryUsage\":\"63\",\"DriveFreeSpaceInGB\":\"21\",\"DriveTotalSpaceInGB\":\"40\",\"SyslogQueueSize\":\"0\"}}}" + }, + "host": { + "cpu": { + "usage": 0.09 + }, + "name": "VAULT" + }, + "observer": { + "hostname": "VAULT", + "product": "VaultMonitor", + "vendor": "Cyber-Ark", + "version": "11.7.0013" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] + }, + { + "@timestamp": "2024-10-15T00:14:00.000Z", + "cyberarkpas": { + "monitor": { + "average_execution_time": 10, + "average_queue_time": 0, + "cpu_usage": 13, + "drive_free_space_in_gb": 21, + "drive_total_space_in_gb": 40, + "iso_timestamp": "2024-10-15T00:14:00Z", + "max_execution_time": 191, + "max_parallel_tasks": 20, + "max_queue_time": 51, + "memory_usage": 63, + "number_of_parallel_tasks": 1, + "syslog_queue_size": 1, + "timestamp": "Oct 15 00:14:00", + "transaction_count": 333, + "version": "11.7.0014" + } + }, + "ecs": { + "version": "8.11.0" + }, + "event": { + "kind": "metric", + "original": "{\"format\":\"elastic\",\"version\":\"1.0\",\"syslog\":{\"monitor_record\":{\"Timestamp\":\"Oct 15 00:14:00\",\"IsoTimestamp\":\"2024-10-15T00:14:00Z\",\"Hostname\":\"VAULT\",\"Vendor\":\"Cyber-Ark\",\"Product\":\"VaultMonitor\",\"Version\":\"11.7.0014\",\"AverageExecutionTime\":\"10\",\"MaxExecutionTime\":\"191\",\"AverageQueueTime\":\"0\",\"MaxQueueTime\":\"51\",\"NumberOfParallelTasks\":\"1\",\"MaxParallelTasks\":\"20\",\"TransactionCount\":\"333\",\"CPUUsage\":\"13\",\"MemoryUsage\":\"63\",\"DriveFreeSpaceInGB\":\"21\",\"DriveTotalSpaceInGB\":\"40\",\"SyslogQueueSize\":\"1\"}}}" + }, + "host": { + "cpu": { + "usage": 0.13 + }, + "name": "VAULT" + }, + "observer": { + "hostname": "VAULT", + "product": "VaultMonitor", + "vendor": "Cyber-Ark", + "version": "11.7.0014" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] + }, + { + "@timestamp": "2024-10-15T00:15:00.000Z", + "cyberarkpas": { + "monitor": { + "average_execution_time": 10, + "average_queue_time": 0, + "cpu_usage": 1, + "drive_free_space_in_gb": 21, + "drive_total_space_in_gb": 40, + "iso_timestamp": "2024-10-15T00:15:00Z", + "max_execution_time": 106, + "max_parallel_tasks": 20, + "max_queue_time": 23, + "memory_usage": 63, + "number_of_parallel_tasks": 1, + "syslog_queue_size": 0, + "timestamp": "Oct 15 00:15:00", + "transaction_count": 316, + "version": "11.7.0015" + } + }, + "ecs": { + "version": "8.11.0" + }, + "event": { + "kind": "metric", + "original": "{\"format\":\"elastic\",\"version\":\"1.0\",\"syslog\":{\"monitor_record\":{\"Timestamp\":\"Oct 15 00:15:00\",\"IsoTimestamp\":\"2024-10-15T00:15:00Z\",\"Hostname\":\"VAULT\",\"Vendor\":\"Cyber-Ark\",\"Product\":\"VaultMonitor\",\"Version\":\"11.7.0015\",\"AverageExecutionTime\":\"10\",\"MaxExecutionTime\":\"106\",\"AverageQueueTime\":\"0\",\"MaxQueueTime\":\"23\",\"NumberOfParallelTasks\":\"1\",\"MaxParallelTasks\":\"20\",\"TransactionCount\":\"316\",\"CPUUsage\":\"1\",\"MemoryUsage\":\"63\",\"DriveFreeSpaceInGB\":\"21\",\"DriveTotalSpaceInGB\":\"40\",\"SyslogQueueSize\":\"0\"}}}" + }, + "host": { + "cpu": { + "usage": 0.01 + }, + "name": "VAULT" + }, + "observer": { + "hostname": "VAULT", + "product": "VaultMonitor", + "vendor": "Cyber-Ark", + "version": "11.7.0015" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] + }, + { + "@timestamp": "2024-10-15T00:16:00.000Z", + "cyberarkpas": { + "monitor": { + "average_execution_time": 9, + "average_queue_time": 0, + "cpu_usage": 5, + "drive_free_space_in_gb": 21, + "drive_total_space_in_gb": 40, + "iso_timestamp": "2024-10-15T00:16:00Z", + "max_execution_time": 138, + "max_parallel_tasks": 20, + "max_queue_time": 6, + "memory_usage": 63, + "number_of_parallel_tasks": 1, + "syslog_queue_size": 0, + "timestamp": "Oct 15 00:16:00", + "transaction_count": 302, + "version": "11.7.0016" + } + }, + "ecs": { + "version": "8.11.0" + }, + "event": { + "kind": "metric", + "original": "{\"format\":\"elastic\",\"version\":\"1.0\",\"syslog\":{\"monitor_record\":{\"Timestamp\":\"Oct 15 00:16:00\",\"IsoTimestamp\":\"2024-10-15T00:16:00Z\",\"Hostname\":\"VAULT\",\"Vendor\":\"Cyber-Ark\",\"Product\":\"VaultMonitor\",\"Version\":\"11.7.0016\",\"AverageExecutionTime\":\"9\",\"MaxExecutionTime\":\"138\",\"AverageQueueTime\":\"0\",\"MaxQueueTime\":\"6\",\"NumberOfParallelTasks\":\"1\",\"MaxParallelTasks\":\"20\",\"TransactionCount\":\"302\",\"CPUUsage\":\"5\",\"MemoryUsage\":\"63\",\"DriveFreeSpaceInGB\":\"21\",\"DriveTotalSpaceInGB\":\"40\",\"SyslogQueueSize\":\"0\"}}}" + }, + "host": { + "cpu": { + "usage": 0.05 + }, + "name": "VAULT" + }, + "observer": { + "hostname": "VAULT", + "product": "VaultMonitor", + "vendor": "Cyber-Ark", + "version": "11.7.0016" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] + }, + { + "@timestamp": "2024-10-15T00:17:00.000Z", + "cyberarkpas": { + "monitor": { + "average_execution_time": 10, + "average_queue_time": 0, + "cpu_usage": 14, + "drive_free_space_in_gb": 21, + "drive_total_space_in_gb": 40, + "iso_timestamp": "2024-10-15T00:17:00Z", + "max_execution_time": 199, + "max_parallel_tasks": 20, + "max_queue_time": 10, + "memory_usage": 63, + "number_of_parallel_tasks": 1, + "syslog_queue_size": 0, + "timestamp": "Oct 15 00:17:00", + "transaction_count": 315, + "version": "11.7.0017" + } + }, + "ecs": { + "version": "8.11.0" + }, + "event": { + "kind": "metric", + "original": "{\"format\":\"elastic\",\"version\":\"1.0\",\"syslog\":{\"monitor_record\":{\"Timestamp\":\"Oct 15 00:17:00\",\"IsoTimestamp\":\"2024-10-15T00:17:00Z\",\"Hostname\":\"VAULT\",\"Vendor\":\"Cyber-Ark\",\"Product\":\"VaultMonitor\",\"Version\":\"11.7.0017\",\"AverageExecutionTime\":\"10\",\"MaxExecutionTime\":\"199\",\"AverageQueueTime\":\"0\",\"MaxQueueTime\":\"10\",\"NumberOfParallelTasks\":\"1\",\"MaxParallelTasks\":\"20\",\"TransactionCount\":\"315\",\"CPUUsage\":\"14\",\"MemoryUsage\":\"63\",\"DriveFreeSpaceInGB\":\"21\",\"DriveTotalSpaceInGB\":\"40\",\"SyslogQueueSize\":\"0\"}}}" + }, + "host": { + "cpu": { + "usage": 0.14 + }, + "name": "VAULT" + }, + "observer": { + "hostname": "VAULT", + "product": "VaultMonitor", + "vendor": "Cyber-Ark", + "version": "11.7.0017" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] + }, + { + "@timestamp": "2024-10-15T00:18:00.000Z", + "cyberarkpas": { + "monitor": { + "average_execution_time": 10, + "average_queue_time": 0, + "cpu_usage": 3, + "drive_free_space_in_gb": 21, + "drive_total_space_in_gb": 40, + "iso_timestamp": "2024-10-15T00:18:00Z", + "max_execution_time": 122, + "max_parallel_tasks": 20, + "max_queue_time": 33, + "memory_usage": 64, + "number_of_parallel_tasks": 1, + "syslog_queue_size": 0, + "timestamp": "Oct 15 00:18:00", + "transaction_count": 300, + "version": "11.7.0018" + } + }, + "ecs": { + "version": "8.11.0" + }, + "event": { + "kind": "metric", + "original": "{\"format\":\"elastic\",\"version\":\"1.0\",\"syslog\":{\"monitor_record\":{\"Timestamp\":\"Oct 15 00:18:00\",\"IsoTimestamp\":\"2024-10-15T00:18:00Z\",\"Hostname\":\"VAULT\",\"Vendor\":\"Cyber-Ark\",\"Product\":\"VaultMonitor\",\"Version\":\"11.7.0018\",\"AverageExecutionTime\":\"10\",\"MaxExecutionTime\":\"122\",\"AverageQueueTime\":\"0\",\"MaxQueueTime\":\"33\",\"NumberOfParallelTasks\":\"1\",\"MaxParallelTasks\":\"20\",\"TransactionCount\":\"300\",\"CPUUsage\":\"3\",\"MemoryUsage\":\"64\",\"DriveFreeSpaceInGB\":\"21\",\"DriveTotalSpaceInGB\":\"40\",\"SyslogQueueSize\":\"0\"}}}" + }, + "host": { + "cpu": { + "usage": 0.03 + }, + "name": "VAULT" + }, + "observer": { + "hostname": "VAULT", + "product": "VaultMonitor", + "vendor": "Cyber-Ark", + "version": "11.7.0018" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] + }, + { + "@timestamp": "2024-10-15T00:19:00.000Z", + "cyberarkpas": { + "monitor": { + "average_execution_time": 10, + "average_queue_time": 0, + "cpu_usage": 2, + "drive_free_space_in_gb": 21, + "drive_total_space_in_gb": 40, + "iso_timestamp": "2024-10-15T00:19:00Z", + "max_execution_time": 118, + "max_parallel_tasks": 20, + "max_queue_time": 59, + "memory_usage": 63, + "number_of_parallel_tasks": 1, + "syslog_queue_size": 0, + "timestamp": "Oct 15 00:19:00", + "transaction_count": 117, + "version": "11.7.0019" + } + }, + "ecs": { + "version": "8.11.0" + }, + "event": { + "kind": "metric", + "original": "{\"format\":\"elastic\",\"version\":\"1.0\",\"syslog\":{\"monitor_record\":{\"Timestamp\":\"Oct 15 00:19:00\",\"IsoTimestamp\":\"2024-10-15T00:19:00Z\",\"Hostname\":\"VAULT\",\"Vendor\":\"Cyber-Ark\",\"Product\":\"VaultMonitor\",\"Version\":\"11.7.0019\",\"AverageExecutionTime\":\"10\",\"MaxExecutionTime\":\"118\",\"AverageQueueTime\":\"0\",\"MaxQueueTime\":\"59\",\"NumberOfParallelTasks\":\"1\",\"MaxParallelTasks\":\"20\",\"TransactionCount\":\"117\",\"CPUUsage\":\"2\",\"MemoryUsage\":\"63\",\"DriveFreeSpaceInGB\":\"21\",\"DriveTotalSpaceInGB\":\"40\",\"SyslogQueueSize\":\"0\"}}}" + }, + "host": { + "cpu": { + "usage": 0.02 + }, + "name": "VAULT" + }, + "observer": { + "hostname": "VAULT", + "product": "VaultMonitor", + "vendor": "Cyber-Ark", + "version": "11.7.0019" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] + }, + { + "@timestamp": "2024-10-15T00:20:00.000Z", + "cyberarkpas": { + "monitor": { + "average_execution_time": 12, + "average_queue_time": 2, + "cpu_usage": 14, + "drive_free_space_in_gb": 21, + "drive_total_space_in_gb": 40, + "iso_timestamp": "2024-10-15T00:20:00Z", + "max_execution_time": 198, + "max_parallel_tasks": 20, + "max_queue_time": 69, + "memory_usage": 64, + "number_of_parallel_tasks": 0, + "syslog_queue_size": 0, + "timestamp": "Oct 15 00:20:00", + "transaction_count": 307, + "version": "11.7.0020" + } + }, + "ecs": { + "version": "8.11.0" + }, + "event": { + "kind": "metric", + "original": "{\"format\":\"elastic\",\"version\":\"1.0\",\"syslog\":{\"monitor_record\":{\"Timestamp\":\"Oct 15 00:20:00\",\"IsoTimestamp\":\"2024-10-15T00:20:00Z\",\"Hostname\":\"VAULT\",\"Vendor\":\"Cyber-Ark\",\"Product\":\"VaultMonitor\",\"Version\":\"11.7.0020\",\"AverageExecutionTime\":\"12\",\"MaxExecutionTime\":\"198\",\"AverageQueueTime\":\"2\",\"MaxQueueTime\":\"69\",\"NumberOfParallelTasks\":\"0\",\"MaxParallelTasks\":\"20\",\"TransactionCount\":\"307\",\"CPUUsage\":\"14\",\"MemoryUsage\":\"64\",\"DriveFreeSpaceInGB\":\"21\",\"DriveTotalSpaceInGB\":\"40\",\"SyslogQueueSize\":\"0\"}}}" + }, + "host": { + "cpu": { + "usage": 0.14 + }, + "name": "VAULT" + }, + "observer": { + "hostname": "VAULT", + "product": "VaultMonitor", + "vendor": "Cyber-Ark", + "version": "11.7.0020" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] + }, + { + "@timestamp": "2024-10-15T00:21:00.000Z", + "cyberarkpas": { + "monitor": { + "average_execution_time": 10, + "average_queue_time": 0, + "cpu_usage": 6, + "drive_free_space_in_gb": 21, + "drive_total_space_in_gb": 40, + "iso_timestamp": "2024-10-15T00:21:00Z", + "max_execution_time": 143, + "max_parallel_tasks": 20, + "max_queue_time": 57, + "memory_usage": 63, + "number_of_parallel_tasks": 1, + "syslog_queue_size": 0, + "timestamp": "Oct 15 00:21:00", + "transaction_count": 316, + "version": "11.7.0021" + } + }, + "ecs": { + "version": "8.11.0" + }, + "event": { + "kind": "metric", + "original": "{\"format\":\"elastic\",\"version\":\"1.0\",\"syslog\":{\"monitor_record\":{\"Timestamp\":\"Oct 15 00:21:00\",\"IsoTimestamp\":\"2024-10-15T00:21:00Z\",\"Hostname\":\"VAULT\",\"Vendor\":\"Cyber-Ark\",\"Product\":\"VaultMonitor\",\"Version\":\"11.7.0021\",\"AverageExecutionTime\":\"10\",\"MaxExecutionTime\":\"143\",\"AverageQueueTime\":\"0\",\"MaxQueueTime\":\"57\",\"NumberOfParallelTasks\":\"1\",\"MaxParallelTasks\":\"20\",\"TransactionCount\":\"316\",\"CPUUsage\":\"6\",\"MemoryUsage\":\"63\",\"DriveFreeSpaceInGB\":\"21\",\"DriveTotalSpaceInGB\":\"40\",\"SyslogQueueSize\":\"0\"}}}" + }, + "host": { + "cpu": { + "usage": 0.06 + }, + "name": "VAULT" + }, + "observer": { + "hostname": "VAULT", + "product": "VaultMonitor", + "vendor": "Cyber-Ark", + "version": "11.7.0021" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] + }, + { + "@timestamp": "2024-10-15T00:22:00.000Z", + "cyberarkpas": { + "monitor": { + "average_execution_time": 10, + "average_queue_time": 0, + "cpu_usage": 0, + "drive_free_space_in_gb": 20, + "drive_total_space_in_gb": 40, + "iso_timestamp": "2024-10-15T00:22:00Z", + "max_execution_time": 103, + "max_parallel_tasks": 20, + "max_queue_time": 30, + "memory_usage": 62, + "number_of_parallel_tasks": 1, + "syslog_queue_size": 2, + "timestamp": "Oct 15 00:22:00", + "transaction_count": 302, + "version": "11.7.0022" + } + }, + "ecs": { + "version": "8.11.0" + }, + "event": { + "kind": "metric", + "original": "{\"format\":\"elastic\",\"version\":\"1.0\",\"syslog\":{\"monitor_record\":{\"Timestamp\":\"Oct 15 00:22:00\",\"IsoTimestamp\":\"2024-10-15T00:22:00Z\",\"Hostname\":\"VAULT\",\"Vendor\":\"Cyber-Ark\",\"Product\":\"VaultMonitor\",\"Version\":\"11.7.0022\",\"AverageExecutionTime\":\"10\",\"MaxExecutionTime\":\"103\",\"AverageQueueTime\":\"0\",\"MaxQueueTime\":\"30\",\"NumberOfParallelTasks\":\"1\",\"MaxParallelTasks\":\"20\",\"TransactionCount\":\"302\",\"CPUUsage\":\"0\",\"MemoryUsage\":\"62\",\"DriveFreeSpaceInGB\":\"20\",\"DriveTotalSpaceInGB\":\"40\",\"SyslogQueueSize\":\"2\"}}}" + }, + "host": { + "cpu": { + "usage": 0.0 + }, + "name": "VAULT" + }, + "observer": { + "hostname": "VAULT", + "product": "VaultMonitor", + "vendor": "Cyber-Ark", + "version": "11.7.0022" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] + }, + { + "@timestamp": "2024-10-15T00:23:00.000Z", + "cyberarkpas": { + "monitor": { + "average_execution_time": 11, + "average_queue_time": 1, + "cpu_usage": 13, + "drive_free_space_in_gb": 20, + "drive_total_space_in_gb": 40, + "iso_timestamp": "2024-10-15T00:23:00Z", + "max_execution_time": 187, + "max_parallel_tasks": 20, + "max_queue_time": 8, + "memory_usage": 62, + "number_of_parallel_tasks": 1, + "syslog_queue_size": 0, + "timestamp": "Oct 15 00:23:00", + "transaction_count": 315, + "version": "11.7.0023" + } + }, + "ecs": { + "version": "8.11.0" + }, + "event": { + "kind": "metric", + "original": "{\"format\":\"elastic\",\"version\":\"1.0\",\"syslog\":{\"monitor_record\":{\"Timestamp\":\"Oct 15 00:23:00\",\"IsoTimestamp\":\"2024-10-15T00:23:00Z\",\"Hostname\":\"VAULT\",\"Vendor\":\"Cyber-Ark\",\"Product\":\"VaultMonitor\",\"Version\":\"11.7.0023\",\"AverageExecutionTime\":\"11\",\"MaxExecutionTime\":\"187\",\"AverageQueueTime\":\"1\",\"MaxQueueTime\":\"8\",\"NumberOfParallelTasks\":\"1\",\"MaxParallelTasks\":\"20\",\"TransactionCount\":\"315\",\"CPUUsage\":\"13\",\"MemoryUsage\":\"62\",\"DriveFreeSpaceInGB\":\"20\",\"DriveTotalSpaceInGB\":\"40\",\"SyslogQueueSize\":\"0\"}}}" + }, + "host": { + "cpu": { + "usage": 0.13 + }, + "name": "VAULT" + }, + "observer": { + "hostname": "VAULT", + "product": "VaultMonitor", + "vendor": "Cyber-Ark", + "version": "11.7.0023" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] + }, + { + "@timestamp": "2024-10-15T00:24:00.000Z", + "cyberarkpas": { + "monitor": { + "average_execution_time": 10, + "average_queue_time": 0, + "cpu_usage": 9, + "drive_free_space_in_gb": 20, + "drive_total_space_in_gb": 40, + "iso_timestamp": "2024-10-15T00:24:00Z", + "max_execution_time": 165, + "max_parallel_tasks": 20, + "max_queue_time": 7, + "memory_usage": 61, + "number_of_parallel_tasks": 1, + "syslog_queue_size": 0, + "timestamp": "Oct 15 00:24:00", + "transaction_count": 300, + "version": "11.7.0024" + } + }, + "ecs": { + "version": "8.11.0" + }, + "event": { + "kind": "metric", + "original": "{\"format\":\"elastic\",\"version\":\"1.0\",\"syslog\":{\"monitor_record\":{\"Timestamp\":\"Oct 15 00:24:00\",\"IsoTimestamp\":\"2024-10-15T00:24:00Z\",\"Hostname\":\"VAULT\",\"Vendor\":\"Cyber-Ark\",\"Product\":\"VaultMonitor\",\"Version\":\"11.7.0024\",\"AverageExecutionTime\":\"10\",\"MaxExecutionTime\":\"165\",\"AverageQueueTime\":\"0\",\"MaxQueueTime\":\"7\",\"NumberOfParallelTasks\":\"1\",\"MaxParallelTasks\":\"20\",\"TransactionCount\":\"300\",\"CPUUsage\":\"9\",\"MemoryUsage\":\"61\",\"DriveFreeSpaceInGB\":\"20\",\"DriveTotalSpaceInGB\":\"40\",\"SyslogQueueSize\":\"0\"}}}" + }, + "host": { + "cpu": { + "usage": 0.09 + }, + "name": "VAULT" + }, + "observer": { + "hostname": "VAULT", + "product": "VaultMonitor", + "vendor": "Cyber-Ark", + "version": "11.7.0024" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] + }, + { + "@timestamp": "2024-10-15T00:25:00.000Z", + "cyberarkpas": { + "monitor": { + "average_execution_time": 10, + "average_queue_time": 0, + "cpu_usage": 0, + "drive_free_space_in_gb": 20, + "drive_total_space_in_gb": 40, + "iso_timestamp": "2024-10-15T00:25:00Z", + "max_execution_time": 98, + "max_parallel_tasks": 20, + "max_queue_time": 27, + "memory_usage": 62, + "number_of_parallel_tasks": 1, + "syslog_queue_size": 0, + "timestamp": "Oct 15 00:25:00", + "transaction_count": 117, + "version": "11.7.0025" + } + }, + "ecs": { + "version": "8.11.0" + }, + "event": { + "kind": "metric", + "original": "{\"format\":\"elastic\",\"version\":\"1.0\",\"syslog\":{\"monitor_record\":{\"Timestamp\":\"Oct 15 00:25:00\",\"IsoTimestamp\":\"2024-10-15T00:25:00Z\",\"Hostname\":\"VAULT\",\"Vendor\":\"Cyber-Ark\",\"Product\":\"VaultMonitor\",\"Version\":\"11.7.0025\",\"AverageExecutionTime\":\"10\",\"MaxExecutionTime\":\"98\",\"AverageQueueTime\":\"0\",\"MaxQueueTime\":\"27\",\"NumberOfParallelTasks\":\"1\",\"MaxParallelTasks\":\"20\",\"TransactionCount\":\"117\",\"CPUUsage\":\"0\",\"MemoryUsage\":\"62\",\"DriveFreeSpaceInGB\":\"20\",\"DriveTotalSpaceInGB\":\"40\",\"SyslogQueueSize\":\"0\"}}}" + }, + "host": { + "cpu": { + "usage": 0.0 + }, + "name": "VAULT" + }, + "observer": { + "hostname": "VAULT", + "product": "VaultMonitor", + "vendor": "Cyber-Ark", + "version": "11.7.0025" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] + }, + { + "@timestamp": "2024-10-15T00:26:00.000Z", + "cyberarkpas": { + "monitor": { + "average_execution_time": 14, + "average_queue_time": 4, + "cpu_usage": 10, + "drive_free_space_in_gb": 20, + "drive_total_space_in_gb": 40, + "iso_timestamp": "2024-10-15T00:26:00Z", + "max_execution_time": 170, + "max_parallel_tasks": 20, + "max_queue_time": 54, + "memory_usage": 60, + "number_of_parallel_tasks": 0, + "syslog_queue_size": 0, + "timestamp": "Oct 15 00:26:00", + "transaction_count": 307, + "version": "11.7.0026" + } + }, + "ecs": { + "version": "8.11.0" + }, + "event": { + "kind": "metric", + "original": "{\"format\":\"elastic\",\"version\":\"1.0\",\"syslog\":{\"monitor_record\":{\"Timestamp\":\"Oct 15 00:26:00\",\"IsoTimestamp\":\"2024-10-15T00:26:00Z\",\"Hostname\":\"VAULT\",\"Vendor\":\"Cyber-Ark\",\"Product\":\"VaultMonitor\",\"Version\":\"11.7.0026\",\"AverageExecutionTime\":\"14\",\"MaxExecutionTime\":\"170\",\"AverageQueueTime\":\"4\",\"MaxQueueTime\":\"54\",\"NumberOfParallelTasks\":\"0\",\"MaxParallelTasks\":\"20\",\"TransactionCount\":\"307\",\"CPUUsage\":\"10\",\"MemoryUsage\":\"60\",\"DriveFreeSpaceInGB\":\"20\",\"DriveTotalSpaceInGB\":\"40\",\"SyslogQueueSize\":\"0\"}}}" + }, + "host": { + "cpu": { + "usage": 0.1 + }, + "name": "VAULT" + }, + "observer": { + "hostname": "VAULT", + "product": "VaultMonitor", + "vendor": "Cyber-Ark", + "version": "11.7.0026" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] + }, + { + "@timestamp": "2024-10-15T00:27:00.000Z", + "cyberarkpas": { + "monitor": { + "average_execution_time": 10, + "average_queue_time": 0, + "cpu_usage": 12, + "drive_free_space_in_gb": 20, + "drive_total_space_in_gb": 40, + "iso_timestamp": "2024-10-15T00:27:00Z", + "max_execution_time": 184, + "max_parallel_tasks": 20, + "max_queue_time": 102, + "memory_usage": 60, + "number_of_parallel_tasks": 1, + "syslog_queue_size": 1, + "timestamp": "Oct 15 00:27:00", + "transaction_count": 316, + "version": "11.7.0027" + } + }, + "ecs": { + "version": "8.11.0" + }, + "event": { + "kind": "metric", + "original": "{\"format\":\"elastic\",\"version\":\"1.0\",\"syslog\":{\"monitor_record\":{\"Timestamp\":\"Oct 15 00:27:00\",\"IsoTimestamp\":\"2024-10-15T00:27:00Z\",\"Hostname\":\"VAULT\",\"Vendor\":\"Cyber-Ark\",\"Product\":\"VaultMonitor\",\"Version\":\"11.7.0027\",\"AverageExecutionTime\":\"10\",\"MaxExecutionTime\":\"184\",\"AverageQueueTime\":\"0\",\"MaxQueueTime\":\"102\",\"NumberOfParallelTasks\":\"1\",\"MaxParallelTasks\":\"20\",\"TransactionCount\":\"316\",\"CPUUsage\":\"12\",\"MemoryUsage\":\"60\",\"DriveFreeSpaceInGB\":\"20\",\"DriveTotalSpaceInGB\":\"40\",\"SyslogQueueSize\":\"1\"}}}" + }, + "host": { + "cpu": { + "usage": 0.12 + }, + "name": "VAULT" + }, + "observer": { + "hostname": "VAULT", + "product": "VaultMonitor", + "vendor": "Cyber-Ark", + "version": "11.7.0027" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] + }, + { + "@timestamp": "2024-10-15T00:28:00.000Z", + "cyberarkpas": { + "monitor": { + "average_execution_time": 11, + "average_queue_time": 1, + "cpu_usage": 0, + "drive_free_space_in_gb": 20, + "drive_total_space_in_gb": 40, + "iso_timestamp": "2024-10-15T00:28:00Z", + "max_execution_time": 101, + "max_parallel_tasks": 20, + "max_queue_time": 62, + "memory_usage": 63, + "number_of_parallel_tasks": 1, + "syslog_queue_size": 0, + "timestamp": "Oct 15 00:28:00", + "transaction_count": 302, + "version": "11.7.0028" + } + }, + "ecs": { + "version": "8.11.0" + }, + "event": { + "kind": "metric", + "original": "{\"format\":\"elastic\",\"version\":\"1.0\",\"syslog\":{\"monitor_record\":{\"Timestamp\":\"Oct 15 00:28:00\",\"IsoTimestamp\":\"2024-10-15T00:28:00Z\",\"Hostname\":\"VAULT\",\"Vendor\":\"Cyber-Ark\",\"Product\":\"VaultMonitor\",\"Version\":\"11.7.0028\",\"AverageExecutionTime\":\"11\",\"MaxExecutionTime\":\"101\",\"AverageQueueTime\":\"1\",\"MaxQueueTime\":\"62\",\"NumberOfParallelTasks\":\"1\",\"MaxParallelTasks\":\"20\",\"TransactionCount\":\"302\",\"CPUUsage\":\"0\",\"MemoryUsage\":\"63\",\"DriveFreeSpaceInGB\":\"20\",\"DriveTotalSpaceInGB\":\"40\",\"SyslogQueueSize\":\"0\"}}}" + }, + "host": { + "cpu": { + "usage": 0.0 + }, + "name": "VAULT" + }, + "observer": { + "hostname": "VAULT", + "product": "VaultMonitor", + "vendor": "Cyber-Ark", + "version": "11.7.0028" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] + }, + { + "@timestamp": "2024-10-15T00:29:00.000Z", + "cyberarkpas": { + "monitor": { + "average_execution_time": 10, + "average_queue_time": 0, + "cpu_usage": 7, + "drive_free_space_in_gb": 20, + "drive_total_space_in_gb": 40, + "iso_timestamp": "2024-10-15T00:29:00Z", + "max_execution_time": 148, + "max_parallel_tasks": 20, + "max_queue_time": 37, + "memory_usage": 62, + "number_of_parallel_tasks": 1, + "syslog_queue_size": 0, + "timestamp": "Oct 15 00:29:00", + "transaction_count": 315, + "version": "11.7.0029" + } + }, + "ecs": { + "version": "8.11.0" + }, + "event": { + "kind": "metric", + "original": "{\"format\":\"elastic\",\"version\":\"1.0\",\"syslog\":{\"monitor_record\":{\"Timestamp\":\"Oct 15 00:29:00\",\"IsoTimestamp\":\"2024-10-15T00:29:00Z\",\"Hostname\":\"VAULT\",\"Vendor\":\"Cyber-Ark\",\"Product\":\"VaultMonitor\",\"Version\":\"11.7.0029\",\"AverageExecutionTime\":\"10\",\"MaxExecutionTime\":\"148\",\"AverageQueueTime\":\"0\",\"MaxQueueTime\":\"37\",\"NumberOfParallelTasks\":\"1\",\"MaxParallelTasks\":\"20\",\"TransactionCount\":\"315\",\"CPUUsage\":\"7\",\"MemoryUsage\":\"62\",\"DriveFreeSpaceInGB\":\"20\",\"DriveTotalSpaceInGB\":\"40\",\"SyslogQueueSize\":\"0\"}}}" + }, + "host": { + "cpu": { + "usage": 0.07 + }, + "name": "VAULT" + }, + "observer": { + "hostname": "VAULT", + "product": "VaultMonitor", + "vendor": "Cyber-Ark", + "version": "11.7.0029" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] + } + ] +} \ No newline at end of file diff --git a/packages/cyberarkpas/data_stream/monitor/elasticsearch/ingest_pipeline/default.yml b/packages/cyberarkpas/data_stream/monitor/elasticsearch/ingest_pipeline/default.yml new file mode 100644 index 00000000000..fbae1d65041 --- /dev/null +++ b/packages/cyberarkpas/data_stream/monitor/elasticsearch/ingest_pipeline/default.yml @@ -0,0 +1,276 @@ +--- +description: Pipeline for CyberArk PAS monitor +processors: + # + # Set ECS version. + # + - set: + tag: set_ecs_version + field: ecs.version + value: '8.11.0' + # + # Set event.original from message, unless reindexing. + # + - rename: + tag: rename_message + field: message + target_field: event.original + if: ctx.event?.original == null + ignore_missing: true + + - json: + tag: json_event_original + field: event.original + target_field: _tmp.json + on_failure: + - fail: + message: "malformed JSON event: {{{_ingest.on_failure_message}}}" + + - rename: + tag: rename_tmp_json_syslog_monitor_record + field: _tmp.json.syslog.monitor_record + target_field: cyberarkpas.monitor + on_failure: + - fail: + message: "unexpected event structure: {{{_ingest.on_failure_message}}}" + + # + # Remove all empty fields + # + - script: + tag: script_removes_empty_monitor_fields + lang: painless + description: 'Removes empty monitor fields' + source: >- + ctx.cyberarkpas.monitor.entrySet().removeIf(entry -> entry.getValue() == ""); + + - rename: + tag: rename_tmp_json_raw + field: _tmp.json.raw + target_field: cyberarkpas.monitor.raw + ignore_missing: true + + - date: + tag: date_cyberarkpas_monitor_isotimestamp + field: cyberarkpas.monitor.IsoTimestamp + target_field: '@timestamp' + formats: + - ISO8601 + on_failure: + - append: + field: error.message + value: "failed to parse ISO timestamp field: {{{cyberarkpas.monitor.IsoTimestamp}}}: {{{_ingest.on_failure_message}}}" + + # + # Convert field names from CamelCase to snake_case. + # + - script: + tag: script_converts_monitor_fields_names_from_camelcase_to_snake_case + lang: painless + description: "Converts monitor field's names from CamelCase to snake_case" + source: > + String to_snake_case(String s) { + /* faster code path for strings that won't need an underscore */ + if (s.chars().skip(1).noneMatch(Character::isUpperCase)) { + return s.toLowerCase(); + } + int run = 0; + boolean first = true; + StringBuilder result = new StringBuilder(); + for (char c : s.toCharArray()) { + char o = Character.toLowerCase(c); + if (c != o) { + if (run == 0 && !first) { + result.append('_'); + } + run ++; + } else { + if (run > 1) { + char prev = result.charAt(result.length()-1); + result.setCharAt(result.length()-1, (char)'_'); + result.append(prev); + } + run = 0; + first = false; + } + result.append(o); + } + return result.toString(); + } + def keys_to_snake_case_recursive(Map object) { + return object.entrySet().stream().collect( + Collectors.toMap( + e -> to_snake_case(e.getKey()), + e -> e.getValue() instanceof Map ? keys_to_snake_case_recursive(e.getValue()) : e.getValue() + ) + ); + } + ctx.cyberarkpas.monitor = keys_to_snake_case_recursive(ctx.cyberarkpas.monitor); + + ######################################################## + # All processors from this point use the snake_case form + # to access CyberArk fields. + ######################################################## + + # + # Parse integers + # + - convert: + tag: convert_cyberarkpas_monitor_average_execution_time + field: cyberarkpas.monitor.average_execution_time + type: integer + ignore_missing: true + - convert: + tag: convert_cyberarkpas_monitor_max_execution_time + field: cyberarkpas.monitor.max_execution_time + type: integer + ignore_missing: true + - convert: + tag: convert_cyberarkpas_monitor_average_queue_time + field: cyberarkpas.monitor.average_queue_time + type: integer + ignore_missing: true + - convert: + tag: convert_cyberarkpas_monitor_max_queue_time + field: cyberarkpas.monitor.max_queue_time + type: integer + ignore_missing: true + - convert: + tag: convert_cyberarkpas_monitor_number_of_parallel_tasks + field: cyberarkpas.monitor.number_of_parallel_tasks + type: integer + ignore_missing: true + - convert: + tag: convert_cyberarkpas_monitor_max_parallel_tasks + field: cyberarkpas.monitor.max_parallel_tasks + type: integer + ignore_missing: true + - convert: + tag: convert_cyberarkpas_monitor_transaction_count + field: cyberarkpas.monitor.transaction_count + type: integer + ignore_missing: true + - convert: + tag: convert_cyberarkpas_monitor_cpu_usage + field: cyberarkpas.monitor.cpu_usage + type: integer + ignore_missing: true + - convert: + tag: convert_cyberarkpas_monitor_memory_usage + field: cyberarkpas.monitor.memory_usage + type: integer + ignore_missing: true + - convert: + tag: convert_cyberarkpas_monitor_drive_free_space_in_gb + field: cyberarkpas.monitor.drive_free_space_in_gb + type: integer + ignore_missing: true + - convert: + tag: convert_cyberarkpas_monitor_drive_total_space_in_gb + field: cyberarkpas.monitor.drive_total_space_in_gb + type: integer + ignore_missing: true + - convert: + tag: convert_cyberarkpas_monitor_syslog_queue_size + field: cyberarkpas.monitor.syslog_queue_size + type: integer + ignore_missing: true + + ######################################################## + # ECS enrichment + ######################################################## + + - set: + tag: set_event_kind + field: event.kind + value: metric + + # + # Rewrite the default tag + # + - script: + tag: script_rewrite_the_default_tag + lang: painless + description: 'Rewrite the default tag' + if: ctx.tags instanceof List + source: >- + def i = ctx.tags.indexOf("cyberarkpas-audit"); + if (i != -1) ctx.tags.set(i, "cyberarkpas-monitor"); + + # + # Observer fields + # + - rename: + tag: rename_cyberarkpas_monitor_vendor + field: cyberarkpas.monitor.vendor + target_field: observer.vendor + ignore_missing: true + - rename: + tag: rename_cyberarkpas_monitor_product + field: cyberarkpas.monitor.product + target_field: observer.product + ignore_missing: true + - set: + tag: set_observer_version + field: observer.version + copy_from: cyberarkpas.monitor.version + ignore_empty_value: true + - rename: + tag: rename_cyberarkpas_monitor_hostname + field: cyberarkpas.monitor.hostname + target_field: observer.hostname + ignore_missing: true + + # + # Populate related.hosts + # + - append: + tag: append_related_hosts + field: related.hosts + value: '{{{observer.hostname}}}' + if: ctx.observer?.hostname != null + allow_duplicates: false + + # + # Set host fields, unless already set + # + - script: + tag: script_set_host_cpu_usage + lang: painless + description: 'Set host.cpu.usage' + if: ctx.host?.cpu?.usage == null + source: >- + if (ctx.host == null) ctx.host = [:]; + if (ctx.host.cpu == null) ctx.host.cpu = [:]; + ctx.host.cpu.usage = ctx.cyberarkpas.monitor.cpu_usage/100.0; + - set: + tag: set_host_name + field: host.name + value: '{{{observer.hostname}}}' + ignore_empty_value: true + if: ctx.host?.name == null + + # + # Cleanup + # + - remove: + tag: remove_tmp + field: _tmp + ignore_missing: true + +on_failure: + - set: + tag: set_event_kind_on_failure + field: event.kind + value: pipeline_error + - append: + tag: append_error_message + field: error.message + value: >- + Processor '{{{ _ingest.on_failure_processor_type }}}' + {{{#_ingest.on_failure_processor_tag}}}with tag '{{{ _ingest.on_failure_processor_tag }}}' + {{{/_ingest.on_failure_processor_tag}}}failed with message '{{{ _ingest.on_failure_message }}}' + - remove: + tag: remove_tmp_on_failure + field: _tmp + ignore_missing: true diff --git a/packages/cyberarkpas/data_stream/monitor/fields/base-fields.yml b/packages/cyberarkpas/data_stream/monitor/fields/base-fields.yml new file mode 100644 index 00000000000..3f833eb979a --- /dev/null +++ b/packages/cyberarkpas/data_stream/monitor/fields/base-fields.yml @@ -0,0 +1,20 @@ +- name: data_stream.type + type: constant_keyword + description: Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: Data stream namespace. +- name: event.module + type: constant_keyword + description: Name of the module this data is coming from. + value: cyberarkpas +- name: event.dataset + type: constant_keyword + description: Event dataset + value: cyberarkpas.monitor +- name: '@timestamp' + type: date + description: Event timestamp. diff --git a/packages/cyberarkpas/data_stream/monitor/fields/beats.yml b/packages/cyberarkpas/data_stream/monitor/fields/beats.yml new file mode 100644 index 00000000000..582ff946c0d --- /dev/null +++ b/packages/cyberarkpas/data_stream/monitor/fields/beats.yml @@ -0,0 +1,12 @@ +- name: input.type + type: keyword + description: Type of Filebeat input. +- name: log.flags + type: keyword + description: Flags for the log file. +- name: log.offset + type: long + description: Offset of the entry in the log file. +- name: log.source.address + type: keyword + description: Source address from which the log event was read / sent from. diff --git a/packages/cyberarkpas/data_stream/monitor/fields/fields.yml b/packages/cyberarkpas/data_stream/monitor/fields/fields.yml new file mode 100644 index 00000000000..b3a9f46fe5a --- /dev/null +++ b/packages/cyberarkpas/data_stream/monitor/fields/fields.yml @@ -0,0 +1,53 @@ +- name: cyberarkpas.monitor + type: group + fields: + - name: timestamp + type: keyword + description: The timestamp, in MMM DD HH:MM:SS format. + - name: iso_timestamp + type: date + description: The timestamp, in ISO timestamp format (RFC 3339). + - name: version + type: version + description: A static value that represents the version of the Vault. + - name: average_execution_time + type: integer + description: The average time it has taken the Vault to complete the execution of a transaction in the last minute, in milliseconds. + - name: max_execution_time + type: integer + description: The maximum time it has taken the Vault to complete the execution of a transaction, in the last minute, in milliseconds. + - name: average_queue_time + type: integer + description: The average time that a transaction waited in the Vault's queue for execution in the last minute, in milliseconds. + - name: max_queue_time + type: integer + description: The maximum time that a transaction waited in the Vault's queue for execution in the last minute, in millisecond. + - name: number_of_parallel_tasks + type: integer + description: Number of Vault transactions that are currently running. + - name: max_parallel_tasks + type: integer + description: The maximum number of Vault transactions that can run concurrently, based on the TasksCount parameter in DBParm.ini. + - name: transaction_count + type: integer + description: Number of Vault transactions in the last minute. + - name: cpu_usage + type: integer + description: Percent of CPU usage on the Vault machine. + - name: memory_usage + type: integer + description: Percent of used physical memory on the Vault machine. + - name: drive_free_space_in_gb + type: integer + description: Number of GB available on the drive of the Vault installation folder. + - name: drive_total_space_in_gb + type: integer + description: Total number of GB on the drive of the Vault installation folder. + - name: syslog_queue_size + type: integer + description: The size of the syslog queue. + - name: raw + type: keyword + description: | + Raw XML for the original audit record. Only present when XSLT file has debugging enabled. + ignore_above: 4096 diff --git a/packages/cyberarkpas/data_stream/monitor/manifest.yml b/packages/cyberarkpas/data_stream/monitor/manifest.yml new file mode 100644 index 00000000000..43c4d51627c --- /dev/null +++ b/packages/cyberarkpas/data_stream/monitor/manifest.yml @@ -0,0 +1,3 @@ +type: logs +title: CyberArk PAS monitor Events +dataset: cyberarkpas.monitor diff --git a/packages/cyberarkpas/data_stream/monitor/sample_event.json b/packages/cyberarkpas/data_stream/monitor/sample_event.json new file mode 100644 index 00000000000..d674eb94432 --- /dev/null +++ b/packages/cyberarkpas/data_stream/monitor/sample_event.json @@ -0,0 +1,79 @@ +{ + "@timestamp": "2024-10-15T00:29:00.000Z", + "agent": { + "name": "elastic-agent-85013", + "id": "0a6fa575-a3ed-463b-b47f-9c3e3a07e56f", + "ephemeral_id": "c2d94886-0c83-475b-b25b-7e136a32240d", + "type": "filebeat", + "version": "8.14.3" + }, + "cyberarkpas": { + "monitor": { + "syslog_queue_size": 0, + "iso_timestamp": "2024-10-15T00:29:00Z", + "drive_free_space_in_gb": 20, + "drive_total_space_in_gb": 40, + "max_parallel_tasks": 20, + "transaction_count": 315, + "memory_usage": 62, + "average_queue_time": 0, + "max_execution_time": 148, + "version": "11.7.0029", + "average_execution_time": 10, + "max_queue_time": 37, + "number_of_parallel_tasks": 1, + "cpu_usage": 7, + "timestamp": "Oct 15 00:29:00" + } + }, + "data_stream": { + "namespace": "22830", + "type": "logs", + "dataset": "cyberarkpas.monitor" + }, + "ecs": { + "version": "8.11.0" + }, + "elastic_agent": { + "id": "0a6fa575-a3ed-463b-b47f-9c3e3a07e56f", + "version": "8.14.3", + "snapshot": false + }, + "event": { + "agent_id_status": "verified", + "ingested": "2024-10-21T07:32:45Z", + "timezone": "+00:00", + "kind": "metric", + "dataset": "cyberarkpas.monitor" + }, + "host": { + "name": "VAULT", + "cpu": { + "usage": 0.07 + } + }, + "input": { + "type": "log" + }, + "log": { + "file": { + "path": "/tmp/service_logs/monitor.log" + }, + "offset": 15547 + }, + "observer": { + "product": "VaultMonitor", + "hostname": "VAULT", + "vendor": "Cyber-Ark", + "version": "11.7.0029" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] +} \ No newline at end of file diff --git a/packages/cyberarkpas/docs/README.md b/packages/cyberarkpas/docs/README.md index 201fe1a4caf..f6e494919f5 100644 --- a/packages/cyberarkpas/docs/README.md +++ b/packages/cyberarkpas/docs/README.md @@ -1,9 +1,12 @@ # CyberArk Privileged Access Security -The CyberArk Privileged Access Security integration collects audit logs from [CyberArk's Vault](https://docs.cyberark.com/Product-Doc/OnlineHelp/Portal/Content/Resources/_TopNav/cc_Portal.htm) server. -## Audit +The CyberArk Privileged Access Security integration collects audit logs and monitoring data from [CyberArk's Vault](https://docs.cyberark.com/Product-Doc/OnlineHelp/Portal/Content/Resources/_TopNav/cc_Portal.htm) server. -The `audit` dataset receives Vault Audit logs for User and Safe activities over the syslog protocol. +## Data streams + +The `audit` data stream receives Vault Audit logs for User and Safe activities over the syslog protocol. + +It will also receive **monitoring** data from the server and route it to the `monitor` data stream (e.g. `logs-cyberarkpas.monitor-default`). ### Vault Configuration @@ -16,17 +19,21 @@ the `Server\Syslog` folder. ```ini [SYSLOG] -UseLegacySyslogFormat=No +UseLegacySyslogFormat=no SyslogTranslatorFile=Syslog\elastic-json-v1.0.xsl SyslogServerIP= SyslogServerPort= SyslogServerProtocol=TCP +SendMonitoringMessage=yes ``` For proper timestamping of events, it's recommended to use the newer RFC5424 Syslog format (`UseLegacySyslogFormat=No`). To avoid event loss, use `TCP` or `TLS` protocols instead of `UDP`. -### Example event +The sample configuration above will include monitoring data. For more information about monitoring, see +[Monitor the Vault in SIEM Applications Using Syslog](https://docs.cyberark.com/pam-self-hosted/latest/en/content/pasimp/monitoring-the-vault-using-syslog.htm). + +### Example audit event An example event for `audit` looks as following: @@ -128,8 +135,6 @@ An example event for `audit` looks as following: **Exported fields** -**Exported fields** - | Field | Description | Type | |---|---|---| | @timestamp | Event timestamp. | date | @@ -213,3 +218,121 @@ An example event for `audit` looks as following: | log.offset | Offset of the entry in the log file. | long | | log.source.address | Source address from which the log event was read / sent from. | keyword | + +### Example monitor event + +An example event for `monitor` looks as following: + +```json +{ + "@timestamp": "2024-10-15T00:29:00.000Z", + "agent": { + "name": "elastic-agent-85013", + "id": "0a6fa575-a3ed-463b-b47f-9c3e3a07e56f", + "ephemeral_id": "c2d94886-0c83-475b-b25b-7e136a32240d", + "type": "filebeat", + "version": "8.14.3" + }, + "cyberarkpas": { + "monitor": { + "syslog_queue_size": 0, + "iso_timestamp": "2024-10-15T00:29:00Z", + "drive_free_space_in_gb": 20, + "drive_total_space_in_gb": 40, + "max_parallel_tasks": 20, + "transaction_count": 315, + "memory_usage": 62, + "average_queue_time": 0, + "max_execution_time": 148, + "version": "11.7.0029", + "average_execution_time": 10, + "max_queue_time": 37, + "number_of_parallel_tasks": 1, + "cpu_usage": 7, + "timestamp": "Oct 15 00:29:00" + } + }, + "data_stream": { + "namespace": "22830", + "type": "logs", + "dataset": "cyberarkpas.monitor" + }, + "ecs": { + "version": "8.11.0" + }, + "elastic_agent": { + "id": "0a6fa575-a3ed-463b-b47f-9c3e3a07e56f", + "version": "8.14.3", + "snapshot": false + }, + "event": { + "agent_id_status": "verified", + "ingested": "2024-10-21T07:32:45Z", + "timezone": "+00:00", + "kind": "metric", + "dataset": "cyberarkpas.monitor" + }, + "host": { + "name": "VAULT", + "cpu": { + "usage": 0.07 + } + }, + "input": { + "type": "log" + }, + "log": { + "file": { + "path": "/tmp/service_logs/monitor.log" + }, + "offset": 15547 + }, + "observer": { + "product": "VaultMonitor", + "hostname": "VAULT", + "vendor": "Cyber-Ark", + "version": "11.7.0029" + }, + "related": { + "hosts": [ + "VAULT" + ] + }, + "tags": [ + "forwarded", + "cyberarkpas-monitor" + ] +} +``` + +**Exported fields** + +| Field | Description | Type | +|---|---|---| +| @timestamp | Event timestamp. | date | +| cyberarkpas.monitor.average_execution_time | The average time it has taken the Vault to complete the execution of a transaction in the last minute, in milliseconds. | integer | +| cyberarkpas.monitor.average_queue_time | The average time that a transaction waited in the Vault's queue for execution in the last minute, in milliseconds. | integer | +| cyberarkpas.monitor.cpu_usage | Percent of CPU usage on the Vault machine. | integer | +| cyberarkpas.monitor.drive_free_space_in_gb | Number of GB available on the drive of the Vault installation folder. | integer | +| cyberarkpas.monitor.drive_total_space_in_gb | Total number of GB on the drive of the Vault installation folder. | integer | +| cyberarkpas.monitor.iso_timestamp | The timestamp, in ISO timestamp format (RFC 3339). | date | +| cyberarkpas.monitor.max_execution_time | The maximum time it has taken the Vault to complete the execution of a transaction, in the last minute, in milliseconds. | integer | +| cyberarkpas.monitor.max_parallel_tasks | The maximum number of Vault transactions that can run concurrently, based on the TasksCount parameter in DBParm.ini. | integer | +| cyberarkpas.monitor.max_queue_time | The maximum time that a transaction waited in the Vault's queue for execution in the last minute, in millisecond. | integer | +| cyberarkpas.monitor.memory_usage | Percent of used physical memory on the Vault machine. | integer | +| cyberarkpas.monitor.number_of_parallel_tasks | Number of Vault transactions that are currently running. | integer | +| cyberarkpas.monitor.raw | Raw XML for the original audit record. Only present when XSLT file has debugging enabled. | keyword | +| cyberarkpas.monitor.syslog_queue_size | The size of the syslog queue. | integer | +| cyberarkpas.monitor.timestamp | The timestamp, in MMM DD HH:MM:SS format. | keyword | +| cyberarkpas.monitor.transaction_count | Number of Vault transactions in the last minute. | integer | +| cyberarkpas.monitor.version | A static value that represents the version of the Vault. | version | +| data_stream.dataset | Data stream dataset. | constant_keyword | +| data_stream.namespace | Data stream namespace. | constant_keyword | +| data_stream.type | Data stream type. | constant_keyword | +| event.dataset | Event dataset | constant_keyword | +| event.module | Name of the module this data is coming from. | constant_keyword | +| input.type | Type of Filebeat input. | keyword | +| log.flags | Flags for the log file. | keyword | +| log.offset | Offset of the entry in the log file. | long | +| log.source.address | Source address from which the log event was read / sent from. | keyword | + diff --git a/packages/cyberarkpas/img/monitoring.png b/packages/cyberarkpas/img/monitoring.png new file mode 100644 index 0000000000000000000000000000000000000000..fc972f1e1b22f8673620765df3a7c9ab6697499b GIT binary patch literal 205860 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
|uOG zO0n%^u$=Lqt?tWA^KLWvliB;cQ#m0D&c$r6%tLK^QsVmz@Cg_#^r^yfn#RV6G&Oev z?!UdccM*~I^EKiSEPmdSa%r9hlffXDkZ7n%Mp7DwCYMqB3HQuxJ1eHr(=D@moCP}~ zFY#O{%)Z}dGL1WDlyd+u)xCp*AELn<(e>x$fA8K;P5m?M;e(rJdvm;qLm>pp7k9XF zYI0u=6_!0O>9c1;|M1T*i-<7i%Zir=+<(nH?18n@R`KzFK3V2RF8p|fo;&&3jzsRg z=jhg{p7@92ZO&Ut|DEc`AJNm&NMX3NZ@0+7Nm<2yXkC%<_9b!Vv>Z9Sa*?3&JtW|t z7Ww&o(vCxC`lrX9K9&3W0`2+#+lxsHgl%4`?t`$qi(5vrq6#uM4}`F(uPuyYU73*5 z$L|w_Ud)yK7^x{DvRtFXOG#=D5JN3y?Apy=Ce6^Abc&V86H)d5HP7$UeJrnq)ZJiF zKt)1gZdO!Y-Zs|Xf1jM3yw`w(D6s9^J}MmkUz49kj(?SCD%BKCdzd!lmtS9B&voW_ zGFSTj5|kbPb7WsKOQDkmi*7bn7;<67XY*EX*JOwWzav?GkhTYz~n$qgAYwhf2EA_^;nZ3Mh%`P#)mpuXh?HX;GXE|MN7{ z7YVtXc7F*bZ=aE~a2@QLEy|{$|D9nsCo_afu59+tS>&TBDfu2&#`h7W>I{6dp(F4b z@+b~}hOtDzzPImC@P`$`s>-C)OEf)`n7yzRFr;*D`aL#MQpJVYptPFe>0h$}1{Ni_ z`M^NR{t$=gQ79j6g!gwTn?osmirCJT;?nYFM9ZB}6Pb)1Q?zh)>DJ7ZFx`Tf*pd@b zjD~^=C%#E5*lPAqksnVO1u9>aeU(1!>+N3Y^na$NZf0#$*3#dfDTUF9&t|>;32C4G zhc(Z}R$9+s1z0~Zt8er&w3oMxiWK-G$bZLQ*!!NoHY%@X;M-{wn@7lVG{1?I zxRw|N(el=T9@5gTH{G#YItY4$I0p3tyvIW0Z{!pfhBpTW&L%ZZo4&HMmxBFc(2!Ee z!Z$@#fV2zHVJYzed{{ z-p{NlWY~teIXG0Dx(I}QOYjuq>UfHv(~o7?Hhs)C?5)Vwb%L*Vd~ae(p`Rdc>!46| zf1G&$v!WuBqnY8K%i2WMC*sm7_t4Of=Uu2()A0&SMMS7xzR8=6v^ttoruEOCNEQuz zr@Ygn&r0%KPdYL%@@LpT(?`6Go#Y;EjW3tt;Kt9V8Tz`qOhcRH;dvJye}=ba+SUE@ zEk8fC=z{3imjBC4wQtf6zxemQp4!wG7oe+s!Y?W*C~;Nz>{nQl?DfyNoyy~z?iQZ~ zsQI$e3)j2zs!snuhB5taY5pGwgGxbHZ%}ZDGMqQ5rPw$@syn?Rn&Szq!0yhzww~|Q z#MGx*CQDHHRJzuyyE}VDA!tY9F^F|+JeGIIah8n&a9iFD`Jb81@Y`Mpeb2~^YzC^* zSEY$8a+2l5)*bHb<+6UfdJn!8vY2tJb{)A+_B4Wnk$>b(KB$YW6%!PflfxenKE#xa zX3|;@zZFDzLBhtyHqEv8dMtlVX-NBD1N~k6cn!uf#2uDnw4DBVrDAu}0dsy~g5%zm z4aS{yzIPP}^4RYAf${x|CH31!b~W#Z2rZj`y_1UP_L8NCiPyU{-=e}PkdIevuYcuq z`XtF6Mv*2)%VF2qbT{DBKXxnKO7cYH@Few$B1E#(f|214iONi{qNR~kvM5aPrD#}* zR)x~3>9}!&s;ys3ads8|)WeP4{vz)3^>IN+T65EN=XV={Yx`J8Z$F3a+DPA5I#iU< zOmG9i_@fD;*zmUcVV+VmGoGNxAAfZ1?CvGIbNd5Az@yaVxwAKKHxCysEDt6K28N2? zs=B$mGhf6cyPdrh3r(srx~O-=%d+pubmK55y1s6h=B;8e9WyuR*l`!+1BFY%v*l)! zbDO+2TbOuIC&hQZa!=Qwjw=hHP}FLx|8puzp>iqAllYd z@_B2bI=bvgD(B*CFijPEs@y_*n;7=|i)CiN&M$0~B6IQI-tQbeo*ocT-ZP>n`{amm zK;X_sjr(G7_0rsxM!p(V+jnF2tBw40t45*W_VMW7?p z)DzK+rk*{L4K?|Ca$&JLaC+)u-QqE;Xm^=oa^(Y`taB&UrFQ-CCPZ_@R*?!IkYm{0 ziEbhz$C;Na7(cI?;RaI-%|p! zZ*r1PD*oUW)tb=if`-%m^fD8yk#x&BjVeV(km6~6Yq4^ysCmOhq+c-*@GUB`XCgM9 zWQf*V+uTI8(zS|rFwGj*g|h(dm6{3BNyUm{cA*-9#}!?H_F8tTFH6O3yS2is+DJnZ zV&yu4jgs@1lk$A{9^^b0I+xg%(N$O9nlVnTE?XI8Ap8RS3)?Fn|L7(Ps3D-=#!GY0 zrj?n94EoP+1y25Qr}5S0Tt(Tao+C}9=m-Xcx$a`SxZ01Q1Bck8btAV zzBp!rH%OEQmz=w3);BU^1J)pTJ@JQq&hj%WyvI6j^nmHxrGP204Yx9{LUu@1EUdqq zqVJi|pS(BGT#oJ8sNB}GAr-T62IXo$KQk7!ZkvwZf6Bn0NkQ|)m;;t7imQorys4~p zflbh`YNy8ufxp!3LDe5UYY^5*kdQQ-WeJ?1rt$<_jM^{btXi5hc=>rDdk4AHtUuwh zAaX1P*oQ3Z4x~JszP#apm>7$!7Lr0O=`NZtoJUBpcyu}^bW1Wrk8zZd)mp?Ucbi+ z8bh3T5oaHN<~r)qpPn(ypLb_g;})Wo{@H%V;)*vl|CcVaOy#8yK68S%>BYoWS=4@Q zl*dDy4ywnim&Q`;Oy+Vrg^2@#0v4`9>Gvna3RNr3Cu;%;b9wd_IYO0mW3GlRL18vJ zV9j)~+Z5lWN@RA~8OuZTUhlPFVx5*cTp56eKsi;Z^XG?c%O*jDT#Uf3<9%wrkoa5< z#~B#Sa3d;~Elui zDal~_{N+21K*{wMug zus&Cb4L)Z$J_E6M;PBu28hp<9UIO3eB30hWY>XR5IviHhP;iS%06)6DFM|6(WcOQc z66Df;;VJBVomfUp6#o%PlNa9X+X1RI8~Rd%tKK|5Xhc+$XheJP>0HkM{(}z@t~>5A zZ+&SXrxxu@us9B{A2>UWSSPz)`Q{78Nucl!5J*cVTn75_cE3$ap8vX*yxLPp7ZDlT zW?nfbg)B&P-u1deA>fbz_|EpHa#=pk3`G0+r3Fx-S+&p}Pc) z-`hV~4HKhEmEGNe^u{9@85QzZa#@5cs19e4!oRvE{e7vbqG1>o=<{7!nyusGzH_id zjHZVAi?gFZ%iDNR@4`Z!$~hN~7T-C&nU2+$DE5U27XP3iI@TX_vchM#DW`}Nx}3`M zCtTwUvA7tIieq(M)XI4adOmw_*h-J>qNotTF`+(6jUMPI&GS!+rih7=tz0ToZ8I~o z&c42vpQ+`OvQI@<<|ng6hf17v&p{BfW4HcGXeB)enn}pRnudlv4U?(*{$TGcf70VD zU1eq(bZmjDR$o+*JHxhUh_}aQW`e)f*iTfOHrgZnBf`?t6P|!v4KOf(U8q%yb+0!9 zkIi62JT+D43^sNt*Vbq~%+2p;(ie|HN~NSx^H|LGFE%RJ^b~p49c__-?pLmdMI2iP zw*4B}J%E1}-2UgCK;x(0JYYyfb@`#4id3|OiA|P?v-)aRL zLCB)c5*x`q!Q&&zqjiDr50ODS$8q-W+T#-w`%cUSV)%5~0V5w4pf6mg$D`Xj&t)mq zx@Iy963vu~g>_vwGMxsKTl^VVgs$2m)hqYM5W58A#F|_7V210D2DCXjJF_pOImRG| zr5?ir4&?{xL<*B;Vvd(M+l8-4=1{D@&WFS*)bQ0wYe6fNIPAjyzT=#`0AP_IGB#ds zqbe1oloh8>cj?L$EyN9FuH-FvkK6Ps6J4=&WUf>&VcSnABDr_-N}~A|R7aT1rc0J! zI&rI8s3QC);iFDKw{z!Cwrc7Ln4C04F=5KI#YXFQqb|#TpThz1r-t*s|I>?!sR=Ds z5>_(YiOH45=@Uv`?=HQ?euPCC81Egdvu?ZcU~gmP&`rHER_Um?F>E^FTyPDpD`I`%!P zFJA3npUV`b{h=|5)AIKN56>$XtJ6;F%_S@^&n&81Y5@TOGxHm;WX>&=+2nnXA*0rI zBg~fSO^ipAS!GN_I1&;sIE_a6X|GWcbugrxrep2eV2+y zhyw>=xE3hJgU-t*5Eka_%q5IZApet`LXWcgthEKHq=|RDG1lHT>F{MAGEN zHpf_0)V9f73xC5pHbMffEU;_$v#)c}?P)@9ASCB2STNEED8|OB1i4d%rdMv#CB~o0 zG;*-ot8O0RR%=5vrQ?2i?s?hmuZsik9Sx1k_;>n4(2s^4!XcApSWO@plQ!fLJmlx) z<^Iw4#dl46&0i{l{pgfoMU4@qWtn>1+&OlyJ3ILv3$Et%^hfy%U7QR8>_s>o@B( zVHui@v(qp{A7mtNVc^e4B!}g7;l0Kc(Z$6@5KK;!?>MQdsbO{c0Chob_~<_2STEo% zos=_+Uk);xRVngn)FAu7%%&EJsihx(ce*T7fbo~ENn*23{_K}A&luT$NjWWlSE zG+L9!y~=lX8za{Np@@1@SN;kCMV9{d)dQ?=N&JM;Qf7iIbq5-r+eCq10nLah`e0xF zo(isEx!G)tGY$~}B|#|Mp4wq+s$&q9=`WfT@`Uw=sHf~J!Rg$Em6hi8&Oi9{kidXu zo#F?C1Y+ANx1i41t|k){7&?g42Qh*P1fPsVAegiiUJ> zfk4re<2(7(Qc8hz(NYi>r$Gw_#MzqaX=nW*ZB{xvsL%gg$G-AZQR;J^{{?Ya0mlcwt0aCJ=&JR2FKs~T@E%OC(i zc#NtkyJy-RlIRN3jWIK>E&GSZbU#+BBclUqh@!*eqdU4s$@wTrrPba%rI!)?o!wHs zUe9%T^#^2Ili`O#i2@aLMFwXDM}I@QHu=2JX2_>seB=`1yd-zPx zRrg1FJHJcS)rsYSKj{deTs!rTct)QEf;7;y9C+g_lhPi!@=ctA$VpRaOFEqd9pQK z9y%?0ECDLpB+{@TN=1+i%FmzOL>pKQBC6*#nAT1rA`|;M2 zE4p=SG#x%?0l>9;3*LpwM{9RYrJ=wD2E+5A^%1W|QXiU9sRcnfx~W{2%mZJVkcT8r z&QMorGOqb!Yu(9Go`km##Ymyn>^ykuvTHKt5F^5|?*onJAs~M5urn$=g(G`c~H;P`(Mv1YljMw+NSEKa~H7-eR#IYwD`eO_B;Lf9T}8N?Xv zq*7+oKV6-{81cE_y_F;kVa{Va9L)1*!r*eZp&Mi!JV;g?aJx_P|LVCR={^*-rG54+@}TVA$R3iBb%prxV&|PrB-k*8e-H0YOA{Nc zmM7ov#f*S0+-Ap6>RtVP%oiFVe@)LC%}-o9+1n-m@l+9+p%^M7$nWwD_svGh`dnfL zzoy5=Xgwe7fYUkCmWwttnOFVsx-tndy&;5RYnv3T(+UN%ohg24udeOQ5Se^Eig~4D zOSU#PIvYXNTT`wcR|~$zh?;lVy0`p7{99)GLqfJytq0UAS?xYhkC{!Fxz{OZNefQT zOjOviT;Pcg=9JxO!qGsuo_v+hQg{q@Q3Ts6l|LNvUjd9Hj-7u1;90Ke6SNvI&zn0f zw14t9Kp(cLu3dh{a(QjTb>Nsg2#}&B`ivyj$n7BK)7LI1e?+xjLH768Ocp^0g##Zm zbVuF!B$obkIRdF%;YR!7#ToJumKR#Yq+9k3vGHmzpH%YoTTeh*5i-B4X(yLcS5;LL z92LF<}; zPpW(MrE1TWTL62WG-U{VI)~}oR$7GAr7cTWEZ;rj&+qU(;6gL`a#Gk8rECXFUgrA_ z)lRc+b8qm!UyoA6UVU&i3yL%>lR;XjI~i;(338ph6OP*>&5{)(n%dbH6JvAT5v;JN ztvk2YPf_7g1gwkQU|#?*9b`OtvgIZgZalVBU<5n_b*;UVIH&eQC33s9$`KzH@$n~% ztQqqMBxgDA<2KjFkwbemUfD@e(966#n87d>mD%BnI9W3r$=ehrWkj zf}*g!wF9oLsnX<$Doi34bqP1O)MIOEOO}HJDYMy{z}9rVirp#I$7r|a75XCo{NV*j zPZ}DIToL#FwS^s@=qv#o)G7GZBY+5N@sVDGH3K;Cei!kuQZ0-F)QnIB@OBpy(C@P> zaQ->uGN%a0PkdRr#{7(dKZ-_7w#aJ#KrUD>SDxMvKwbA*wr=TNDxwNCcP&V8v4pQo z_z{jf&4^)2F)?hQPV#m)DG^61q8tJMezzL>)lz?Mf^LXGZt5%&g!57ow)6{Ku*6-@ zLzv6f@ zUB^#)uk=3_-}&@6gtPe?#AGW&PHIPx<6lm_F`uTT=4%cOu|Y=e-ql)ys``Ol?vQSW z^HnhN?!D)y)+e%cM+c@9{1mVCK5;f)HDCfuVH#}B!oqTW41I$pRJF|>y_wFjCaHY$mv4N27cw!pPH>};13_{dbOmncc#BT1O$S@6I^`u3Fr^6^3Lw<%+bJ~ zM97g0Rtgjp6kKw$phBwvT1{5i0c!8%rL>38bldMkPE1WL?(FzfMjLuI&_($3%qA+$ zZ~h`oAE>cxwUU$T-)ruOI6dmI1U1)7CkwZrd}cExq<~AI%y_cy(;9@hu>ye8-jDZh z$8hU1Q%hg^jFfSdnOIvqjD3l4ct}XtGLLqK6MVEe6TF=Mh}&#RVMF(CeD)L93Lgj< zx}3o+t$Owzjui^*!X9|gCplq4H7%(qj(Gx7ER9-4yt#%a-it@^Ow z!XJ!uZ-A^=ZH%=+2GtQL5))IA9)9O~p&&;oP^LSLN;2%9cAmDKYq`Acz@K$r<5H<) zh$r*P_{{kH+gg%qz-|L7EDRY!$H5qpG*e4tbhvmZTdLc^Oa)(5hM;4Z9;_HHO%~ho zAZJmxQOGHQqd!BDLwGaTucG@Yt5LHL>yX#<)9h}TASl&JUWf{HIWD;V!a|(0u+V!n zq|TU&~( zI_AWUhG=R{hoso`&Crs4BXnQgVcx{=?}|ckaC2&Z)3*B7PL0;2hQW*X*S*J%UzSKq zsgYg7-qAlT9J$88c3x;h>4I2~95h{{nrhP|o(ri+K|xuy((Xw}*=^r!#;q&JvJjn^ z*mAfut3Qns8tr5q8P0FD#|na;tvv%m0nvtMOur&xzW2uOy0;?=g?w`ZZL2B%;t|pr z{6nPEYAlD4Mc5&&AL}uzy^DCF*$nNl$)c=Wc6NqeObfVkAT-v&W?a9kM;(dtdGy+k zmy9T)c9Jl{J~FjhurHUm-f7jo`gZ5p4S4N$Jyob(p^8K?4wuPm{F0&s>()HbL;( zbmFo1{_bUAFB0c0uslJKvh9Fy(`cwH<=+H7q1M>j?e*)S9J%9I{u28$Od7eb>c~4y zn-WG|-xwk;F;3lwY)+_nTcvr9G7N$PUZ}a$TNhQXg{byRfh#rDB>H_i#UH}IetfA0W#RqnuRN@F0I7oac4>h-wkuOw?6GWQfpF>Qt{+rP<7!p=SpT~m2C0WoaV1G{9#agU%p zwXN*{*-*YIh1o|x-rmt+Jh?Zc4$5_V0h!--5V|0Z<*TaZB}9z1O(q@nPUk*|{P$Wb zl9B^$ZIdYz4oRa4U7g*vcOUwzHPi_b?EA+$DcHWK$PW$N{_OYXz)66ZTDAC26B*1x z&tNSq(p(O|$QxW)d6JI3^zi4xnu3`tXpa;f$2#eI^nVhS;w#_dqJk&Q+J{n3^}K51 zF-RWM$V>K0180Xp6&%-AU|3X?atcDf{2R&v&0MK<>mjd1mY{-A```QY=}UU>I4Il zR~!_+H404f(aFh`c8$6he8Q)Ti2Yv1BqN#`9;yGdbFRMC-AicO`ng1NeQs-W`>UcX zcmF9e8yjg_vN1z$RlfjP8d_S68?=S@J7|xp+8eBf*?vMwEQmoM$nkust>xfyQ-O@}*I;mbe$`bqGAp)I%~yq5vm;ydQ|?&kh6EK59k!JJ6J6!)lG;=P;? zqoc$^s&x#yr^s8xg!Rt z|JN72+?PgD?>d0)$iK%*>$gbVl23LI{(Ix8obdljn9KhU?nos4?*H?P(wD|>18?=G z8-~Xu$XFz03+e*xs)u1cdH{J5?Ta(2miT@~aTj?rj~NFQy?z+o-TAKAMK7uH#K>%&p7JHu_wE+1;<^FRwH*7IPc|SH-WTPo>I9d*Csc| z$v(EVqoTU_O>XjyyvNO*r;D6W^ES=U?54qtGRZymWZO}RDbn!0-N$j;D<9mt^Qm|@4rh~Cs$o6u z!xf&n;c|I__8_v?ErTu~A*j_+;0|(O3&p;>DIn1=b?u-KOQi@}zz`++7osL!EGIu; zwVCe-7Na+zR5K8zY7?%DlU>8Bsn5Lp{GY76Zv~TGJ?}wjcxL%x_r-DRqdcuN+_$Ae zDEPVsEE_)#EfBg2)jF*A(i5}~r@2F z7O6iE?&|77n+MW7Papqe9&Ws#@+hQ}&Q$j;xal0gAU#oLY@5Fwm9w`Vv$2JN6Q^Mvw{K+roYrQL##Ccb=PA<8 zN5%9K?`5#&6CI(CLGyZ|P`FLhfkXrkK1KT{!$6W;O%N}b>h0BFCMTY0&uJ)~7I(a) zz0i0*qG`e~X>HRo6Y}8qk2`3u?Qz_$ijCMH&?~{@esxzlp7bX?xV4e>7bltr&T8c+ z)L18*AGHuMA8DNSW5w>8ZI0KHn~o7*Q-JJaXSvuv7VL!rfTn;4SfsPUAWQ-ERIhb7 z9P~nRxKHVAU||n8!Zk}uN+ufIu_2q|mY7;i9x$^@LxSD93t=wPv3WR4Bhc--i-hvV zZEYo>cld>dt`$5)mY`norct>(U}2G+bvmS6?Y$!P@a+)n51|xTpDO1V8X5vZM>&H^ z<9X`XO@D^)Kwt(&DF8=pOuHi!A$c056%&V7f0q2uBzhdoo#wAymFx6g=ynKerkWlP z{uEQHu_L9~X^7aFsbSwAW{F`xM#!lT;LO11#Hrlog?H)=F#+xnNTHDV_>{ODtF#Lr z3KlRkgD^5df}nlCLz-Pcg_kxsk*d3R``%vVHT;r(j&-9rI_7eF3w_&U{O){fS0{dA zAutu6VE;g$#EWwjk-DqMVPldh4_WBN7f&zCbltTbCZ(bW9)Ro{9ngV8fih6h${hR- zj_GS$I9x7V9%5BgnI#d?&UCs$AH|~jC0M$-G8N9G@&8w4vuj?{`<|X?QrG8_ z8nAU|AH2p`{T>wElP4*iFl;=k#kqV$mGeY!-N^>8Fv<+Q*?xl+ndO{OlSE90Y>aj~ z3|0hr?G`g`jvY7)KE7Ni(CtKL)jxQaOoZezj|3e&t9y15F43oZKuPK()wM!(b9CLlJ5KcU^*O9wK_TZy>uuYWxNFh3a7baBi4&8P)|-3rXY*H%cekJn3}hZP z_J?9kw=gm1=e1Kj7@N9kz$F9(v>jOnPe!tbzwV>~Og0GQ;L8<;*vB^;&Hu{y7?R8@4eE_< zOtZ=0?Y|Dei?IYg=uoP@fWbggU|}I%<^9H3n7gZPu@VrEVy&pC05VY#K!&eWr|mri z>;50S<jNS+wzOK@W{wMo`@`)rJ{vPFdjgTVn?WEac?e_whJ|S92nwX zeo_gZ^6+rPj~}n1uFtR~QI}re88v-5v&~lJnW&kUIDpfT>-KMM?rKtckYnMMoT#5} z3L0GTrhOVed;>_MSJw@bT6%f{{RxDBX|Y~9)?GfEndXBQ9SuO0N{pU>w(I{HB){9p ztv*$1cNT|^0BKTC*$D#G5%!4iMunkL)s8pF8xZ(7Rq$WODom%`bS|o_jH6C)=X2CG z*qO*v*^CVu_xbt3k(8Zp@20B3ZZ@JC6I5;q!9`gVl#JqBxftte*)iaad zdJSg=49(5uXRy`Km_DKkGZookI%$X#%IijO)r%I+Tz-OsYyPUIh=>VwVfp0?IshH$ zo;%KgU&70T3uLs8b6hsPHdO_o-WajuXSB4D73L}&>ziE=;1u`@>{La*3yj_y5=$N| zHFUgIs|mU>ziW$gKNsNpw;TE?5k)3_P$u;TpKJF6MUwmZnuV|8og0~-@X$w}n77=m zZ@6(#wuk;5hyc){1&cYO1cPlkSvvj8qd|hGY>1ba(E9p1C>ny? zETECrEVk!%&vxN^54kJ2-GtT;1Bq&ZSb_FQ=-e<^=NgjFFkWP5-vxaj>h<5GxpINhhm6z9R&*TD?M{ z=N_l0m~^o7Tco6tJ4tHFYN)0FlDlOYPIZ(2p)T%&kfRL4n#5Hy%fx*Gjx5RFe#k8Npk*@#N1}HKK zUOwK1vnBzhI0HgiiBfU=j7;}F0CBkVVHhNt^i$uK!Z~jDpT5GD3 zqpQE4`M6=$#Zb^(;7AALoO_=94*W_jD22FRZ-hu8#uK{K%RcXq;|Q&wblD#hSdyGJ z+z;0uTS~mzm^Ed^3xgU# zjAG6okwR}^v&GsibihT1SS|lyYe*7I#1<23j^!{`@hJZ(HB^bdP*}umKkc2B1Ht;|>A+F_eb<#x5k2tTAIeUO~unpHeOJ zg7D_)fTMb30|@=xg^ zs+&-M=?DTAO)z*b(-gy)AKwnB*M9fNb(buHM0aGub$o(+U$O}3SeW^fNp4MWoy^w$ z{Q3Aj!MA>7$FGg|s^2mj2KbVe`V*@UcM`R==IU4Go6{i61D4oLDR0Gw^Jtivnfu&- z%cVN8U8|LP+rydkQL}KP!{Dcr$JVYHgql|3x8ax7cRaF_A|}cYSsW}7onM@X2S-Nq zhUZXwbdOp4oKCicV$wSdL_{!Mk(9li2+3%GIbntGa3&<&)swjLAJ6@ijn9+-^{TPg z(--`Y5c`eWYza{0wz!&u0Dmh;h7yrdSQzT#gT<^b$zlCV9CEUA{FIwJ1UhDsUZSe* zbDug_uA}=iTy8R-nMPFl(i(V^EE>1b2#-t=Fz@;OxA#AmG8~pQUeVvw% z4(K!D##ijQ*Y;P9n~5AoL0MgQbRv-nydp09;gNaQx%1rOr=_3Ou*4iRf?kNZ{SpSR>kc}|Lu9H11D$nUMT_aWK0K&H2IyUjnTB|ii~q~yuUBCv0cme*vp$)A z2bqG6^Gi6N+2~J#0dPH4Muv-PH2sqbvevKp?CIi_&W)ZO`VYXez|euJHKmTfKKK11 z69NigOAL3>uuelV zD=DjfEc%gVbK&VdYj3|f0(dUSfl|SAoxSfGiw50A68$y**O&>C_t6ZVnFhbpr&eDI zC^c$xj44F*Caw6Vq`b~Ck4g3RPUPR`<6Z8UnD7ItrJ|w7^Rrh-+q2Pv&xu5R56Uy4pKn%OUX@)c9@~wPkzrjhuyVHwCKv_@A$;ky0g&gkZxU_V1qWW`J z*!N4Fd+xuFV)Ch|;0E5H&h#mYmORkwEsTu&Ck|jL;RY;?&E+=lAW4GmqH6{2d^Sgz z6%O3rU&sdl>0A!2L2-a12}>_1D~PVypQ&<=fBja}daYjw2-6P^4H@hW4q;+rXDMa< z!>|wNT|^YRqc8#MQxW^n()>55L^YTkXLlqq*~^2%+~e6vmW8-GpUs&0FwL~hxMk7NE~HW zOEQA?;K%Ij0RYbUvz?5j_4^$C!CD-x6bTRdha)XX3K`WxnHxU1Y=u!mC+OCRF5tCT zNbZA|xU9Ufv$Olu4TS#sf|L*0I61ZY&1CcPnMN&o0LFE!VCJ?*S{jC^kB>=5R#sLA z3PvfGB-l>D=kg_)|Kx{u1o!1Gl2onHS~CAoK!7+M7zwpnScGqA9h%c=XZ$9Q#m5{y z>$?KPpC(bwUSgM}?!-XHD^HC(RG9;|REV2fRNmK-k8nJ592btfqDf0VbzL$skh!4F zRb&>CmyZC9Ci|<>ufmnOzcY6=q1AuiHNTwDJgtzHgb*>SyjF7J4JIF58sL&t;%{TeS^3_GxWVT1iRDgoZ4fhWC6Gm8K zc-x90w=@&mnZPR(D022 zZj_E+CeEk=Tnf7F(l^E(9&c`M|OdkvC8ypjsTXe#w3oIcM3QR!G|*RiIN ze-}|vuoS(3k-ezmzqe=Qur>X5eCH~*(Mmb47*b|3gz3~s(g{Uee>St6Q9hQ z8s~e$XJlm5R5|w?-yW67pIZWNySoD9tk55I>BPH@K~B%>i}mjHTQDnq zbkVRQb;EP9=lc^~yHUR0-p^_WI)43Xsdm}M`XQbaY5U@BbTUFdUnTNhTl9FVcg0+J z=C)%#07Ea&sb9pfnWCAZrbSxL?Vl^;iRbKdnka=%+7cH7Gw0%fimkt>8yp|c(r&5Q znyuH=pZoEuZBS7_l{|90;!Yt3hS#SGdJU9_fBpXN(wO%mBHlKCPJP!#2M2FdFzIEJ z9+Lc=qG18Xx_D$UFeF5w-}H3B+1}2ssHCK+W9{qI?(6@gEFL^9)ssa30LC~&0pZ#1 zh%%6)Z|>B@%KokiCXj^?mX_9!fiN#rYDUIae+jDT+|LWZ@B-`ql$crLNpd;iN>8-3 zT;m+$=&ZJXeeuC67Z4=F1CQ`24NdIEx@U;Y@5;Q4j7Xg=Yinx?ez$uco;?~!sQ;!% zUFaqDXSQ5^3K!HE#t)UelUG0$Qw?O7T3f$(D{PwkDKz`T?AMGyL%59_FpwcvXWG%&_qdAZ!6x>?dXuDTJGDP?A}m^5!&o?XPn zt=yV#lhlmdW+Bj^k20ilcXwamg75!Uoa|v27N&wi;cd>+^2wX5G{6P{TKy+LqM8Q{ zZMn}hRnSuFM=#p{2*UU!gqi0;98a@f{vctl(OxomN<%0#QZQH5<}Hx~0URP9Xi1~1 zezf)~MO&l>bkW-L_`UZZVBl|x)hWS>2B%nE=3R| zq#GnQ9n#H~ZZ^{0xascvCeQmm=bY=iF8>H?ZPuP^&Jp*x$2}mDI}brZ*_Ti<2i(3! zge9%|M+ljjnPd5SaYW-qN;&ov57w_gp~c(+GKYrGs=F@t_7x3{2k&tPJ{(4(c6Xe} zOXQD)5?%Tv^`)B|511t#t~gt$-L29MlK$5ouRT^WWg(Frs}i%C}qj%(%R~AKM;OR9~M9-=)bcDUsX| z7Z)!)Su0lhP)^V@Bf>*pYqQV*x&WVod0_NPb;Go2Jg*@#aVn`+{TS;tz?(6uTmA18 zogUli5u_JCl{$}3Hpk;SWz+$`#^^7zMks(z95?LBjXrEF)&}>nkIxr@0Z1J&c`*OA z;QP;6>hmCg=&b*N4c_S5eB)E;IEDbPwinX?d$GT31G>rFX+mC@2Il5H>x`3ND0Q|% zS!qF6TB2;RX0}#z`sa{YGB1&35Cin_?TxYf&OP}BouPQS zCf{jxZroVsJ<)zcbO_0Wy~8pV8AEXyMf(FUA9MD#&7pztZ=nhG=V`6T;jLTA#?i6D z$^Pt@V>oNM-8}`Fh_7h6phuni=Cg;60Cm8|oo;Zw3;_>PVX}>3yZGR6*=ubVTRW&R zDJbkJ*HZuM7=U*u=&d31N6>9_Hn^L!P;n^=1D75i9^yDV=D5LFfEUxRuM?#N5#!cG z0pi=`wy#REzkEg;_(bjwm|1;pL4chlwR$y>wp$>3#Eb7}G}!lbtZ;Ma7A2C`?e1j_ zpnj0?1p+)JhrrI-nhEITp!}5IC6ek34-d~*DHr^4Wb}%@oQ=nLXTuPINvG*E03{*Y z7hxTF1qHoLe9D9zb*x~CXx=cT9vrygFlr@Ie7WZE$~CJHVp5K-+mP7C@w|UcB;ZMa zgmTh0GV&R$2^KKMm^QP&oc|Q7sL!cRR?(BiGH9j(d~luQJ8~L{X0sy}mzCNoIJY3Q zl$+*&B!Z#Q=v$L_Yfia2Ag0QdJN#+CEGp=J@$L8Tx4E942Jvib8l0rNjQ{IW3Exm= z87Y(cc`nXIj(o7LWK5@if=1MuREZCeDST4DD~j%w7owzKxjim6*pW$g%73w;yyB$} z1gR{@uv%M$w87WzU#0`z##_#I&QA&}&%0nRX4G#VOr-{*`(euP{bp<8N2z);2_?%X zNlp*pWfKhz5JqCk6MIQ1=XLJEZanemC^_+CNirjtr<=;>6#x!W@|#lDUXlMvUp_VJ zq#y{o-iQFlB3+>L`od%i;b@J0X!A#)ukV9$?SIU+jsU;pPwT1+=Q{q}FD0sbtdm(-(=|KkEgzp*A# zBmA#R4ZQgL|NUB{RQK`wf3E*F;CguEQnSzh)>}t#FlC~>#PKo}L+asol>PtS<&7)a z-UfyyyjYdMc#NLNVa)#eJ8o-72X7u2;tVeBQQ~;4@z2M3;K;Uk$MccIJ$$406aNem1J|z< z9kEb;HYwsBKJ4ZO4k6!1=c17=ZZhaegA&X7!@s+@1gPgZUdGS2B;m|#!xOzOhf*GU ztT2`lr2njjHy7Z!Yk=7e=-cBRy?^v}S6Oshx}NKcth~G2H$Ei4jX64rgQBB%PQq9x zyUt(7N{D|rJejW4Azn;S@;#X<*CAa@_~?7ICe_x~<|x?mYlAL`WIhbu>BH3MLOEHb zU>d7m?}#iS0)4pSV~fwVE0`Fc@hPH*=zkyK4iErEk)MBrIMzFp6XOuPUH*(gA5RQ9 z3~!0e(<37%?wnmhc*gg7v5W8FuRZ*L*iSzc-(@K7(1(5<4olCnSbb8@EldwpQ zBm#`j>VTV1W^Xf;xrsE$=SAD{;e@{^_;*a$1p_bNOr`g7Y$}ErxDtP86O>X*P?rT}wX0*-Raqr^$%hDAW_}4#V2lk-;ySYE5fKcpc<*Qx%xPGxYg{O;E zWI%v##X4Z!Mc;sf5M}r-YM*z@3DX~M$Ruv|w5rNtP35Kkd}JA|SMduzsh9r$_yEd> zX5I%U3doo#CUCYlZzRisut@aqFZcuhC$dWOD-Yt(<| z@bz#jWLz4UT87F@k67%d_EuF@(P`DaLZI;oEBIK7rjUM>pN8;;tNIm_;MT1b_V_{& zdAyXzReyEWDSPjAOSqG^x4x){HIs(c^h-RlIL6g$r9Q?+wN>MPAIIfx)Hf0}B;vQu z;VnOG21f=eNO8C=b7*V0^SWIH@^U7MIxTU1RHp> z*FM(QG*VOy-~JWcZ36Zj9wH+9?K7d4>)e8w(~C>t?#$0Jq3ag6?^xFh61v5MkFVm$ zFLk5sR#PMPW#}-`(btD!Q0f{R;e8h^u}AgyH(zCvLjF0T?w8AqwTR;je&po((;ZlO z-FWW7P0PPyw5uFld$|r}JocDiEF38RnOfL`XKI=|kbFq&WO|!k0@ppCc_Fw%U6%k-n999Y;3!Fkk!PJuP_2CbPl&P+*LErZYL@ld9ZFT`B~ zX#%x!{{3Jj@Rctvo3q{`q7>GtiK?s9_QR&{g4O!&705(nFYlB0O2?et2Eoh;@Szpd zr90ZQEp$(23hv2@O!Naq?9wP+QHG7Ok{6)i<5A{GV*bZ&N4*B4I0^W@nb1?JGL7L2 zbB*`@e@lFq_U5noNRz>a&8*?UGEDWjB=Chx*dJgJ>*CM_(Bx+OG^7QaC36&)pXw zrQyFBi+3;%Li$;fEtX=Z1zy}dN%;2VbA1}w^v+!7`@iNS;Gj7|d!`65+!r7Hw8-SJ zBsVKGd&_*Cg|Or4%q(MsO(_Hr#tl9bJOG+8+}GFhfIyE_qr#d?QSncbXX(5b#=)Q) zX}(?&JAl(nEaxeGOo#N|o~I)@@uMBaP1oMP0KnqK8ii?+Y9v1h&&A-jx8Q2jbY(NM z%S+*L02CJNs3p|eiE%dXMP<_-0)&u0zD(zowtAcU0XrNW0;7qfXWS$&Q|mu~FbzD1 z_h_DQM`tH}t&q7fc)TB=EFn&0O3_L@-u>iNC)eAJn| z(Qp)xi0f9(Bn9M+JG;l(c0V(APd|+XhCs7RAYb8j*cXSvcB8_th|!7JBiL7c2WtRT zeZ=4Eocw65xAIdzraNh-?R+voI88OtG8`35^NO1!tR}5mC;VIstt)FPsQrAktExUB z1bkEg-GY4HYrKozvxxp!RI~tPrvNpgSYviVBBF!-A9_s7; z`gpnwmM1#9RQMvVlns6#er4O@A%%Y3wqYf8?Mp|=olFJWQyl6e)6Q<2wS z%6KQ-^vv&jW(`X{)eZk+@gS$aom7Q0e8z;JE#d+FtZ^6qS0zr1Mn*6B_W9eHUgAeKEEdJKlXtJl_ zG-Y1;LuGfix6oE$Qgmr{&4Msfv;F9IX_{XYY$g;A(+8rxN-R1}vVcE;%UH+u%a4_W z6j#^X*x1;?$?kW@A=Sfq02ywp@rpTsxI$9AkZ8QZO!n`-=rp+#IyrHI2KNt!a8cPL z?i6AkJ7WtAsl^3di>aTbN6mmmP+|Y)*-(1pTZ4};hQ2-Vo$ zb!@YefQV?M$^q#iN3J=$?msq60ixYXP(2%f&_^tzh?$RA)~w^E=|}1lHR`PCG0!n4Zd< z!g?RuO2WIT>6!eh{)%<0I?$}$B_1?Zq8$U$R)bIG`Hmu_XERa&tL$5Sz|}%tejwz| zfgV)@cNYlt>P~M)0r_e{_@+)jQNRur zytd&yH=cE0KfCFnML)at$$i`iWWZHvoB$OTrt$4mt+4+1GQ-QhY6S1aQceW3yJJxq z8OFiuO7#p1ordBI@lsF=(CLde?X2+V)f*i%l2i~PUq}G4k4m9RIt9|Tk)2(hH&pw6 zy0=SC+v9Kq--=OY=Kg}z26|63UBkEJk_gZ`l;2~UPD%VeEM(Xcqg7I0RQBsTWz-y& zmarCD&>pGz+aRb5N~L_5`FB9KzM_exNZq?RF$ zfYXw|Iww0@ zthu3@cgclU>XH3@K)VLORtt>y-rkx`1&eTo>>eM&)U(F+de=w}_}hZQQ#?+lhyna% zIqq!s_C9@$i(N5&dj(Q-vUA6&oC|B6Jja!fK;D>MHH%Ap*btr1SirdSgYFDsk8_sK z6(%z5&L8zt)1K3K?XB%8x}-}Lbb24I;Ch}DKcfq}kx$|d{(79dx~0WF?W%lE*yuX= zGFL96zxf)oCjpiW`ie%Xq}o3%CR{iIb@@@K9p=^f?mJo8u)am~3@Qm)vm2xZ1s?+w z+hV0V!|6$-I}WDAKeV;jWZ0b{X6J+-D{LDg?tjFWvb$n*_1!wQUtfv&W4D-Y(40BQ{=IOI4_(8vld4rWWRS@oJe9Y(7HSnV?a zuo=3ClAFJkrU@9>*#%3H8GD}Xh>jPQ-f%cRax(KUGBf)Q`N{|E^yZ8)0?74~*lZss z6D27#vhvR4@WUaQU>*~iNb%r+D*)&!%4V+0+Xoxvc6 z3_`B9C@8m`aT~RQbR3iX-Hj`lKRjG}&jzaSo0GLD+}sl+LY~oz#)2BPu7n@H^FqtK z{y6fxsCX0mo?fBn%BFoO(A491G0z*J0g%QrTwdfQ4#~jE>mv8VmDiPKcjQic8)jHEG!X-U&IY8;}hu9V}{577;YYMp%HO}%5AG>LLj{$mm**@e+(KTbG0WU z9s{H5y{-jdsP0gc<58h7o7o86H~H!*9!|MN7KZZP-hy9(!3u@O(JRJb=A zU*GcJFl%Y7!_{PDWJ<0_jaPt%`gHmb06i@o_HK&0IAm zkg$QgyXDu=)THZ=X@m!%5%+Uuz)v>kajh5`0gYEd8h*NPz|}3Yir)LCu6=NnBhJv=Y`|f=9 zm_+V%^*E~LpQVB3CL9 z?GyVwa`oj-h7mI)bg8z|3pG-4;JK$jPXaT*XSyM3L0ggG&pKf+O#Fm3kcKwjSM}lR z3U#Uab(*CeB+}t6@^$TxYa3^!+*F}YW9gfl)2Wx~b(c9SWy}MEzvLum z01<0tO$EWf+KMNusHh)sB;thR3ss#U^9u7CQyK_b+;*}t zU8jf_CKqpA_xawIB=3QU2+4n04CNPyDNA*sAApepkl1jU9VT!t4A>#-{c-CDe*k~h zLu>tuMYCtM`LW#db+2YnQR$Aj&66!1)cyrJa|;il`rR#d*eECP^~`(NoWsv{Wm?PJ&b-Dg&$dmJZxEVGqc-}-{Et|NVHGn;Y9?@m1( zC~KMe9QV^nerDe!r~<95bTSreH-;H~c#iaOyo95HpI-;+8^ZySaa`%JV9{^s%0*|4 zYag*vDU*gRe9^q^ev<1cFRhM7-r&2+4UTOX5xd6p-r42uw_AgX(|G2TksK)`6T8`? z^*%?S02M)cuaH!w{mYyW*kwfzJ5Y&7BfYyze~y7+IG%hOc4P8lvC6j8yDT|bt61Zd zcF|{68X}R|z@D7^SMCh1mUcbbMMDm9baM*}`pAAsfdXyVOf@kW*=)MGGQF|Qc=xJU zBaM3Ix_eNWFmStH1yUCD(phl&%8_3#^bbW_Z@ep{Q7t~j;tSj*taK6 z@dklRmMp?Ty;GzaEPa%E8O|*P`*k9@nJz02$QFrPo0&Jd2rr26LgBH~9o^m8V8%V2 zC&N(srNC<$9HgJ1QrmRoH<;DQs8Xs4D&wPhccJO&l&HJx4sS$Uc6z~jT$;GgJZDJb zb>JT~Q_^DJ-rin~?Gw7pJP|Z*blJ@(DHQ}MLj;*XZ~1B-HR8or0l#HO`QTR-k}B3{ z_X3S5(1RCoyTKXron3USi#RL^Vo~cDvt&AddpO5&zUsR_1=j>yaLwe{$M&E)mb{mC z6>7lnZ%lJ4>=khtWBiy3-P8L``{ohD{8-G;%sUk>2X|-Pz0$+ zE}D5n4T9l?z?5!P6Dc>V89xw#_I<@b2x~f{(z$l@?p^C#^SQqob4nqJdV!HgSa^7y z<7q?RSqCPM1s@=#pc9WN658gLl*p}$pYl4Leb#dEokHsD8Ga!rCuc3Z!Iuw#JmdzC zkx^)yCbGm&3qdAva0DR-beNTl-NvWSp8d7Sw>*cvBtJ!PVp{TFWb^~gn_ud@_TNQQ z#IvwKG^-3~9*$(={6cpsANwPnI`<^NGAKaX?X@!ctR2_an|^IfUV9B{9w5(1@8jyX zG7|mzj76tDYa__U&@ck%&pE-FySA4UKZ}X7adLK!S5sEfkka&tD$TDz@lo z4y6i}saZ2P;4x+$U7buH$1*80N!?^iphIpWLmv+(Il<|*b5)}G=&dG8(^sk$)eE9K z|BQ?n4b=6fLhXT?J>4^WmYkOg;K%fErJ$vy7o|GQL!d5N=LAo8Je~OY(|}CS{e5L_ zq1a(zV`BkYNQ=GVAw{XC@_5KB_)K{NgBJ=JSD$#h)^gx?vNGbv7gL*@aErNL=^U3R z2G-UcH}#{j`r@%p^zEnHwTV!BLbv?|S`Y(;;`SGedol9$E;zmZ&KTntlFVb(QE3JP z35R<9;LwnoNwU9SS65x*tc=KmM3u(?xrQ6HToDZl&t8 zL1~Iu+SvHH!t$aiIS zBNINNdG+dJeMzX*hq!HUT;2iuoZ4tFRpLJ8K~q5Nq&0FKc6)IC4RCTmV5;gH`HeMZ zvc-nsp1W9EKB{d<_KYCqtd&wd#o^EQ?$)wDqa&uKCHqrzO|+!abh%km_HYt2pJpfS z-y|oC--E5|vfZD!(kXr&9Q5L-oN(K)usG(u;2LEm=~;gIfwEqW@^$8)C=yRk6o0#C z2@1yhRfOi-!@m^|A@I^b!%j+*D&krF$O!kaJ_rajlaS zuQ@|-w(p7T?)ZbSVQyt?WAnBC^16IB;9V%P;1#AUKMpfs0`>-vb)@53prSo%o9W}| zb+xi$e1wgME>$G&0>dRIFT1&4OsPHWo(XS4eG1~2_|M3s4`JUliX;blL{RP%2UMY$ zm$Mz9To{{EJ1-nd$o@IYO=E>^4->Fk9>_SMaP^6E#p@?ekjpJk`PIraGuCdYX|zB+ zNwdj-=6gcv3J)wPFgSQsspgH3ryE4n1K*@E$9__%z{_Oy3Mo`%NRiOR=qo&5vpmEQnJWn^O# zB8KR7a^fu2)P@)ky4K#ko0FLt5VwA91He?kSyRe(jrn9OCF^TO-4&bf<(IpzY;^I_ z;N#3>qvmK32!Vfj^t(>n)uSqpHdUEVBcG+sB1^46W_d zeKqfMbUtrQe}i(f-#Rn9oM0AriF_iQcySXPPW?;BX$ zkePM#A{7x)pVtTPdf}FHIk{t{24~d21G=$$dKXD0Mwc8aO!_nu#uqxb4%=@M^y$?s z$rbCdkdNr@o>;H%v{lvykQ~={hdoER7;NVHFxXN$9>0&=Vl)I1Ll~=Il`aZY6??wM zZuWj%TvoU;#i?bXxY;F0{`I^g$5>f9z_F5>Bkd4A&doiMh{?%t;>_~Mr-!T@Mla&>cZ2UhuLrCN?F>WCx{VU<~Je(k|NCZx?_Lm?lZfbM@aJ z;(e@kls{P>R3?#`7-^olMd=-wU+(V8ly^#E|G4%S6TJKLeIxFEn|k*4Hm0Vr;dH!2 zIc6Vf6PF{qxa70X2%M<9EQy?s4$1kx$Qta_?_np^*k}eP6|DGNLw&PHzF;q%Zcl2^ zP}jbB8C25M**x?wC$nva&#cdu$sTul1 zq?Q$*wGT2fF(PWL?*x)Ahj)aN=``mFl%tc*&44*gEU?hKiK&N)Oca_ZYgJoI1F|mY z88PcBzI@;Po)JIx5(k7efKI~Ndp3zGVx@U1+y70$CszR9F-y|W48xt2hKA;ezP?CY zU;zKQq*1gGi#%63E^gY189h~3#639(z5svlvnX;JLMPjN@m*CfIIzhCq+$$01D){B?M<8YUv<9gmdX=K zE}`G=)-ADLV0E2N!Y*&;$Z}QezJx2zjJA5Cdbf*S+@>0JZga$6Zt9oTNPB4Z-<&Y2 zr+ih9I07ZWDIz%J9b(cG3fi9Pmlo5v8i%P?dUWd_h)4TDvB=VOC>0pJUCgo(p0Afm zP}fO45wqpEY=26Nt3#OHmq)MN@3_B#VqN7ypJFlk@y8Ltby(I)vo-0XR6KxTratF8 zJP0t-%kS_5!zl#4Pk5yiuw7IOl(1OKsQNBZ-jySC0S{s+=mR-LYI`pkB=rF7cdEiC?YAoXL=xArPBeL(s z9r2!sJJ7p(Q>Ksdf{?J+ZLvm)=6+>$wcdAi;`&%aGg`zj(;ri}*;5P>Yz-onj_xlR z`;2ktnMFn4GZu?*)ScxR#S!G>J}6NGGOb5y!+BnAP;Q?CVZ^&|Pmoir{SIhnQwmyQY4qYk^B|U)j>9KSB-sHMe=(@bN zmdcMIWGYOlO76>I1rP4L zX;}!D+e?>?h=e(9jTb>=a}aeJ9XNY^?G}R^kD#0kvmhz+ccP$;OFu9hN>?X*NkT~Y zb+R>^;dnk*Jk2b+f!)f|GUw`U+@~v7!kOl^>4&{?-*(eDzx%zJU=S7DUZ3_vA0t10 zvdrg0k=>pdfjlcMGveX!qP0|y7G=o z)D$Bd6aTYF&c>%9p^~mpRw+r9$7E)%Sa_t6ophjh*MX^Mc7lBxhKJum||r{~;z^M1c4pp&Ng zLqj6>9d}5+*mjGn2UdkB9KktBvW4Ljuk{ybIfCDI>1AT^c8-}xOE zqMp%uGj}KfN>BApaI${2n|IwAzLFfQ8d(gbao@sHVSszN+U>e{baN?F^P0N+WwY;X z&|==e%3ultgDO+xVv#zN{vk?fDK6;Ar2yqIK%oYLe<4P#cb65@$j_!KPc!_0bPeXZPTxZ`epa4wC2I$YC_vTDtbbw` z?KU3;(r_+$YH8bdJ>5znqFu8`&AY}N^yEnnb-fn{A1*`P!Q|rXubPUEk+#o37K=ve zTY%Bf2q7o@_z1#^fpG=|tE0aJM{pP?Z*f&tRzvLW4V~{UY0=QprvQ&XGt&?>$g&L9 zJUUI6+UnBz>5udvm^CmE#-PeT)A%!nAEx0Vcaqo!>KEl6qn5?dglbH}3QlGUiXJ6- zMKYP9@`PmLQSpQKJDF11{IQJM(Q+wnjz?o2mg65u8}Lb9_TAH9+^<>iws1#&*5^F_ zjE^wBlWL*PwC<69T3toBKM@v1TXS@!OZSlI-m6-Ll&Y0pZ$#0*#DDK`%Yx(NBi7Z( zB_j?%K(6+JKym9i{*^SXheZ!?X&%g;P(CI>6LmTB} z18LAeU}9G;XCKG;jLh055oV{Apvzzj>qHRpBuzWv{VBB}E^IWjZb6fgc|K9BBMDfS z4-5i*arvc%W)#4kNOA1c2c;&wp_B+f{0u@PZ%=fH`7=6d3=kR+FC&Ih&wymo{iNsN z9)pD&NS$iIKpW^&k|yXXgg`oRU?HHYV>ocp%cN14N;dDOHk2Jt1U&2Cp>$CIq-oZy zV1f>#{@ZKJB%xIvV7}C*^Gwm*;>#|+w2Dbo0zl65d`A>UCX%O73({|>99eMfx$+ZC z(m^nb^e~Z4+9U&YLie7snpBII#ZCujP?EAOu@CiV<1W4c5W8d>ssm#yv zZ)~!z*la)(&Hc3t6F!TMY0oeA2Z**SoHXKVeSIIbGsu3j^%u!@X5D^Jw0BhiesG~` zQQJ-u6mlUv5{mUofy|gDg1mFy>zt5h+3ztja*>apTG5ttUc~Oy5llW8mYlInFjmkF zaxv9@d;<%M0Qi_@SjGi07`)7+%OT+bLnj*k4jQ$7fwCm1RP}+(?oXwcS;Nhoa3{Ak z=EK?y9OcNDY%ysyMK4ozIUG-rn!;|JiUtZEaU||6HzcibLZt|ZgXKaE- z9F_c^i7|Qanr9eHwic+6P|n)so1X!+!f-BdkxsLMAbdnp{Y6~oNgb)NAqH7Z$HUtn z9{zMW!nf9+w?Lu=(Co2rkDZN7V6T?hJ)R}7(u!zSKb&boVnQQx^B;Sw@Au*XHv$yQ z>wItVgoR<{6*Vd}_Y2;`vs|1&0}e0(o%-TbWqFj#Fq#LF_T3Z)W-;V&wX9zwn zz6`1pakZM>n{iHq&)QDwM$b4|JWa%M_^2G-;UL+N($sOOZzFB6#t|uXj3wvSY4{2? zr}#hJ3`r(k(+a85IrHoK{>$K`+BqNo!&@R;A&$4$z3e=kso>rT2aC9Ujk6Io!ZR2W zz`k1eM(&tEm)WLE)gl!99}#Q$A>;ZsH72p|z55S2Htq1brIsA>y~o{>qQx0dFICh4 ziWQ!%ILdvpF%d#OQ`6hp6L`_YtXC0@O$*E6Tl@q#E%b_6=D7p7^c}(fA;peC4+eIi z=OBtp;x;A&_V(j+X=Y|?q=(S4*ePZBPNFU1Ox8QOC}VrWd^Ar2*weM3^9-%aB!7v%K&5*}mtUjYa_6_~3nhfv^0uoV z%wKTAJlKCa&ohOKaO3Sf=f%c3V(Fe`73e?rSX9v~V(FYKAC>1ve`ncEyuHDm@9g8- z*re@I(xq+{zj9d8Vv$mM1rfYmC+`ot@)1RX#3of#L>_P(O0r zJl}wq^`$z; zbhJYWSe=jO8(rVaD8~Sz)$;cBGbAJ*&}h9AqEMaKqnw6GV@u=Tz zno*yAI@jxD`v}@`3L7AT!8+oJiEGP)DBsn=uR7k8SzW67TqiDbv^i(Bqh zCa=c!Z+(Y2rI7;Bu>F+ixnBY+@!q<;)$u;X(UoKFQnLvCqS&`DRDHG0i?e##`0=jA zE$S3=$k6hWf1}MZ^>t_W2dpdZAKnwau=4nn88|cnQ^R9b1YriZ=soi_<@>yH12xA} zZQ{R%VOH2Q>30cMh%ik@I6*tZo1Th`#bz&w-^3z2)+H4=cXJxPE0;d&)mJT&$V50y z>6urggM$Q`1z6DZ`N3*`xU2wF-vluVGZJcl_h!AX@NBEEWS44vzduq?g=q$EyB(I4 zZWx~qO;>c_o^SpQxJfKfPjQRmF+a@pptIi4BXqYRdUYK#ofa~aqt}ZV7UTLuG$Kg- z<0cDn?Ihm5DS}Ttt62B0dJj$hOS*gnI5t4cKo&-p=ERRf(Zc)Su@v@gE%s`Srkkw4 ziGSNUT!FBH@`5tWJ;Ke6-a|K^>=A*}eQUO?NM3v{&Do_*o#QUvdSCq7aMXRihTfkq zt9#87IIgbLycf*h)r*Zgek_1!1kC8Z*h{H`6H4P?9b%-Z;DNI6juWH4`#K%|4G!Z_ zWWh+FsK@A?C|mUvlvOKgDgWu2*W#z;apSddo}8w*tt_QOhw}HiBVF|npVF)AUk6+4 z2t>T`AlJebF1TyURSPSeOVo$$tgIB}71w!03$s*LP~SQq&zgxz)a!aV^*%djS!=?rUGo;=Q{O zMp(p=;^%s=mI@6pMs*cz>Vrm>(yLbu4qQ2TT?WwBPMs}1LjXs0IeqamW~zf9d?*3!tax(Dx|z*RS)Kb$oiAZ;Dh;j#s|2 zPH2ubHrb?@?ku<^Vj26<@>0icjpH<NscK2O`B7&aBV$?9A$gv@=^cJV z2Is$IZ`tu2MIXRT-57VH1B6WnK(T4UAj@=Hq<9=0IGiJOBt{|<2lyh!5+`OecE%gi zrxI1zEe;uiz66)WxKiDK4l7F}kXR5Sp;)UnQJj9qCvdQacQ06nM(6pdZW?c3>?&BT zSi$1CK-Q{JlD8?$>@@RydiE_%#3=EX$}ao=@S-02IRRsHq;c^hji>DL!fmjMn_ISa0tO#xmSk5_LS&o} z#|&OcqJx3f=Qde7SW{LC4dTh>aiC4Otn;eYMx%e z3Sbms{a9cmd_5_hGpU&275G8I(B?<5^d(8<>0C)_KfUqO2x*_p7}j@crvtZB3B#*` zjQ@5Vd}08-N`D7#(vXjH{}hM`XuYwM&BNH$;Pra~$S)C~Wf1qSqCY^an^4G*VO7x7 z9=_L3@|~)-ervyd;Ctu?t%n159oQkRHat0E`dOQEC+z4Y0bxYXEafufFRt~&L4 z7Pf0{Bv1cbd+C;KjdlF{uO+74r0a56eYc0&|1j2_iHL{*bkyO0C-gufLb^KdsCN8| zaV%Aq&{76Ey!c~i(ah}cZHw={1VGaxACa={4_&anu@dSTA*$L2xn?~ee)AQoOzEi` zQ~xuF8dc8jo;uxGbWoePNyt%P`8>?I!k4QXn2uPXD9}ei+pIqJ>ftdzK=YbF{|XhU zuH`KLU=+d2U{b$cv0i=XbCZ#R;{AswEeB5;{aIx&)cpv9k09!W=%;WV#CJH%N|Ki|Gku?V0^Z>$9$&=RWgKtl$xb{@ z5Nk@G8#*H+B(LD)Hc8c1rb%1qY_2VvCLkT0*BR+Le{@@S`S-P_)=ZcJK}G7kcmua- zTS1y2hVLMV)0Au99x4>F0)Pqn)GvLpF;NQZFGl^YmJo~4(4xKuF`Qe0>gLeb8(nuk z?EEM!G<^9lai>`k4YG`hnmOSJAcruP0zK$2jE}|tM(A0#P_z(qBO8q{3|DjZYDZFbVT8_L=|wAUM3PX@X^Lc-*3&s7=C60Buh3#rcE zQwB;Zt2n>W^|e*_a^=FtHFzgt-H}jW@Q#-Irasl*|E=dKsi?P(w|p>l;0sM^vhc_n zbL#2niu;AD-?IwWuVRU(iIUlhb$lq>vO->I)$2+~$e2Jk%*QDjl2p_6VX*-wTWqVL z_?T3mJret0(jxVZwaT-ywo(*gpO~p%qd8gpUVGkn@Z7KeudHPX=XuM3VWE%ASex`{ z;?fVdX;&X%CUT7m7O4L87m>^)*OK=PO}Cto9jBiSFYM+J$Kza)+AN2=}lB-R=*6ZX6KqhhOFU2fSp+{7mpOR_Sx7 z|NK|xDGiZEpPjb7J>RkJCpfK?o$e>)*bsp|e`8<2SB%{b-I)f5K2W_Ty}3OgXf!vp zv#>KX09d;Ye|NqbO%A5>A%h-Ex?>+8LPD^=;For!DJ6w^x;6d|Dl9bII{$(CCciue zi}3PA0&D8$prD4HD=>}$Xb?QR2ThUr`LK_wC6BEbpNAb0J=4|Q+c>VsiHDg(7OjTER9clUash78w>YmD^d@>ZnD1A z67;;mk-*qxs`ZJF8~%08>%Kt%`U9T`ix3ArIUR1+rgh%hct%LL>F1AlxjqX?!)_7` zj#V&v9#VIY094*Z7lr3#PUn65FYO1<`AuQE13vLlQ31I@{KX~AKu_f97=XgZEWGYk zaBKGGzF(h{e}=(9L7RVLp@hoQc^?gEEz!}_XX!Qbe=NwMbm1Qz1!b%Qhl@+(SNt?j zfD!yMGB z1t4(O?EbRsq^xqS!X~zzKB{)V-b1RfJEgDmNq`*n5Q{!Dx6G&F7REXaKS4xrI1FL4 zHJ}@>*#yIo!3r`Z@p16F-`Sf%FaX)-xS3S9qUo+M0h1Lx?N1fo(3?3f3Yr3Cb zy(Z$eJd#mzIJpdkq$-PR>h6|_49*S@nQ`|I#u`6lKbh)yOtVDWCW4c0M#PPx;#?J%oM_g2$&ufnlA(N3jc6zw)55;bVc@SKxtc+*IP$~P- z(NFtrG9oZ)z>C55zacMfr7+Y06eS?!I9w?K5FcwDK}t%pw|aVHEq90;^OZ%CI?wS+ zewS#wu^YU#dt+@7*wH~vB67(Cz^*UtD6TggBA!4;2Mu^(x*|HKey!Tgz(Zppzm3R6 z&`I)EN)by2A9ihceWREzT~A;rWuw zfC}u|7l}k3vl*CtmWF!imDsy?h?CxS23h9>J-u=F2L+7r%>ES>96&kqU~|;$;mD*@ z(JpN)&wr#>sgaSMt%S3(&p8Puzp)K0P;OEzh<*mXkiqFp_{9z1lhtmIIDQ+{5Gev7 zQ;wG}vHw6~1Wr!3DQURz;P>@m#E9>vstj?7#uD~WP9uNjm?aqImq*G~D6f zz(Pa&jhM70(L&4hw^lMC$bz1(8se$d7+p8colfCvK@^7lQ?4JDaF*iJAvf?A;pYKfNCZI5o2s||CePeYZH zD0pRH+yu)Qg8OT8wB5*3sm*8OXKyUulANU`gFo(&YKJ5d9a%= z?AgHy_lQ!Nsxn37>99b_qn&9Wf%prVDhRzzvW#NxXee!NX=ly9U=-f^rxg$E8xhth zBVc}h!$c4kR>h6xgG!#FfAXB@QAy6fVK`N`~5NE<|_>PQ{jPR zuGT!*pBGPCT5>(sLq+ChYQHvGX#<=2SW%xwi|$8s^5SLl#;jf(L&4Hm$SuK}Uu7LW zddJNH00RBp+Dp2t(`a}&GOm+~+&#Y7u53;m@D@Ra*zECKQzx^GoLqYwRPASpj5;rG zz47=Kde0y(nL7tHHAy`8kfe-^gu6R6lTB(Au%|$bpmn5+kb+{R8|Md&?<>C%g#D1w zKQ%t;y!>vz1A93SZ#pMiw!wW*(VCF-p$Hl?yvEx#^GbG%CEvcG5bW`h)nM!{uS}4F zVT&jk8O%6;I|?c{fa1~)$vm6EPg>CFLibWZ()@9dS441HHgUt*!SA5(*$*r9*4;xs z2L!SA6DnmbVg?qgOwKHbzgye8mnX{cNzw#a2^n*Et#J zp2IRS>T_d?|1tbD?BFN}e5lU6m%;khX-^LhnE|(u5RxCW=IfK&#d>Te$FMwDsstcY z{^@HGYH%g@$ELlHuiH1K9r~#UhKG=_OMcR|k`SnCtY12WUUKSz>7T^A^ImUXz3_c` zKc~;=WvAbaL=`>nxMDy@WJ(YN5+UM&i%&%?WIl8*!1VC8{ zsMosvuE5oA6klk;4ogkdao*g)m{pso^X^nwBcQg?*HBX8@H`_7lTtRt)h?w5l`iq{ zt?`4F;a^Wia+qIpp?i8ZP}%{p+*u@i7Yza2Zsbj zWi8MZ$m5^S$I;k5rI)c~DJggCm1WZ9MGu#4@yo|~=nVd`*ox^R^d%tVO)(h1{1zD9 zx4!LtcV8ry`MlXcOtEzNU45#-hjnEIo6Ycs&NfB8Z1MLbE5h@?^1->e;sv9JckL1? zB}!k3VSD4-weE*UxN1z=2*C6aY)rPt72Sz)784N?0sl^ecU%3k(o|mDC%bHZwot8r z(!mee*zA|oU3h`8fm z(+vK;ghoDmIoe1tuw{HZ^Jo4ysfFzNQnwLn#_;@n1p*#JqPh8*ResYR;c=B_ z@`ykDgm(q(aez?_43QFhFD~3sfh*htc=G#t^9XDAY@{L%{NN_Tj)Qj>C!3r#wzFUI z6*4+}d78ak#J)TcPvrL@n<&$LVzWCVYE1R86FptF4gQ`;fz#hTVbcg?9Yjf{8gV%| zI3y)y+t^?Z!=vM^bJNOEDU81XOJkXj0qT`!36WM>e`gUGC~j~QXt6Q&2N#G#y*Dy? z>AEL;V3JxA{^R;+tNgrU^P7U??+(;#MTnybAWRab)a<+r-9Ewui(L6N6rUuBY+m4<+JH9Rb2x12ZhvX-Gw1}O61)*EF4nT|FT0%g zx4Nzo_3#3m};kn4pd^KuU7kXXYov<6??o3rzkPG9-=9$UKIad9{FUnQ|`T2D1|Btq>jH)W? z);@@I3KEhc(hbrjAR^MBgfs|9gLIdGGy>Ay-QC^Y-QC@B*YUmY82A4-z8{{U$9?u* zd#$-Bszk-G4FX2WWzLGceo;=xwU(GeaiJWQ@2 z!m!L(&x>6k4v;E}10OL)H7hy!^~aHf(Jm~HG^qCvzO@ci z5Q8$9KX6Y|MN!xo!684Xa^t<{piQ>?U%v_gRc4dl2-Y?gav7zuUrz8$-$icL7nd3P zrFF@WQ&L6}E|OjMwS@ykXMMPSNg>!eT<%Ac`z1%s#Px$%SF_dnhv--W-5yP=(7%7Z zLCM!EDS^TIAas+5%yee1W)A`?@x|6BAdJ2tn6usY20jd>6#js>-|hLUKE+$WZ0SF%2w!RT&1-WY&az8IzCkXQr(xTU%5)L)G|%yNp8}nf7X?@ts;)>2!!-y5 z&;zv%x`?%G8KjBp>Yg7i3Vn}PwVb1*q|m)9Z2KfG<@-ll9hG=GPdKEBo>B1n-eiB; z>UoJJ((w3~uIv@qUp`%-DMmQ#fkZ5jSk2BjL90XHZjp)zX^^z}o_iEZ zo2Hls^sPxKnJs@@R;Q-f5NtmfDQo2fy;>N~mKo?1I~%eysZMrM3MVu^+i*>U%>H^UXELmTFslSlRz-x0GKWqyQ_2~lBNzX$W$FrCFQeHst0y%b5Thsq$IMRc z0X`5DIXo_|k3K(PI>`NXC%!K5YMJ*GO{aY^%K%j{>WaQi(iq1Mv;A)QpBz3_Tlk zuKlB(F&iL8?9-^X?|5{&^klibaOOF?5)_^@ookG$usY}j%LnEM29|#YKs&u#fBA?q zgIBpc-7qe>dpepy(bqm`U#xeaDtE5lvY)Iwl8ua`TaH|)cZgF_<}KOY#s@C|OjjA> z0s=Eh$dI?Vw77P`ob~rEnMa0`>N;!E*Qfl9>XjeY=V^?Z-^=_tT3zd+hOR}Ob4Li6 z{tH5n{#-r6%i94}MoBP3gzvsb3|}?b?-+5+8`sOKX=`8Auzrhp|5{6tVXjyr%7r4c zq!?QA7IiCF7Z7y4{{cIB|LKI|^ksAGI7J%8E8-&HnY z%vl;3D9Hi9MqoUAeZ9S5_WQtxW&@K16%Ttp0qCQcG#mASRnZETCRSEcbIuu!jEd?4 z0IlwQ)jAelF-{JLT@zctRT-K1hphByJ9=7YXs@;MXu7ZV694rHKBY{;064+d=5lz% z;>n=8(&plNc~1dd`4Cb;?LcuQO61)Npl|*>{C(**Qu`(L>lz(=eg7YjmmK1@PIc^e8`W0Jn^-MhNi!zCjss1{#$T*jdaA9OXOgy zolcmiso88&3sGYBqmup z-zLrB40yt!R6m)|*Y^b{^gc;pSw6AMHSRHkn|AxkOdmdUz0wWr=%graiZorWd=b?Z z$YOiEy|h1brnKRT+Efe7N1@d6*cN`J^#)~Rcz7T1b!Os4^J0Jy8t%L@Y0)9=+%jNu zwdGK)w&s@*?|BMRlcfr{BWdqY`7__-mLw`B#@5-$6hh%0(=_c{H&yT(c}dlo$?)*X z^#`67aE10~D#W+VJ4)do?!(21%$>`dwD->o)#oNs8dNzY`CVRpx|An$_xC#)qy#?Y8R^Ly>D@mjC{N*a!X~V z+L=LtP!B-G>QVT|w9E0$3^Ob1`!@KG^Cgh?2v?WFa}{Q$zUk@T>)oDS^z_i!1JSOv zw#7r%9cd*pGRpn!eEezm{H6Y6eu=DI->oL4$Zx-aq|8SR3w*V?s+Gi9m>csy9OjFt ze?)6DBfY_m_?#ZGhq_=1~TZa$gbP!eEE{3>PUyfn)dNuu4;v!gDd~ z#-3s!iJz(Dt5R!=^pY74BMZE&H5#ZR#%n6{IXHLB};b$@_3`b%pH zTs?e_aabj$1gM{vlA7-cJelDPRk!E9zin^mF$xP!q2V)V>@mayadhNiW@m?yt!0&y z?UcZFlN*i41FuwEY1U#BfQF9b>t_iIVkV0zz?Z-DhLMp395vGk;Ro@?Y^CK($F(w} zzqG|Al`oO025f|9OO>vrKD};2r_FXl2Cx*w1{f5`fqMMO@`~>I=H_R0^N37orrQPa zIL=@9{u&LgzO^>ivQi2l3O}_dFB7_cxW7#^7Q_27(VtYJu2hFR+7#ivV--ct!y~<4 z=~>TL|AYxwmKg+rn8xp8;+~jZy>WXcelyZq&qA;I4(^yDWQ-L8sk-zL!wtSFuYj(c>rMch-GSIKQ zqTDFi%J=?mpJ0Oh&%;Kek~|6QdwJG`Hc{^-x912>gx!68DUR$Q|Cts5=0r$Q5#9^_ z+&wk**-M<4vJJ8DtZZe++&s8rTZ{;hk|nQdF1p;&O_t+}S}K}A5NKO>>Pnf0edu+c(u1h$YZ&)Ge_#L$`!csPW^3z_ZfCzYh-64RgHB!| zp+HzzN&pEAnx{x>N@gZtE>-{XFsdH-H`NC82Eduf^|N&-yhK|_ZlZdOk0;7MnF;Ju zawfxE7gACpya+;tL^$(7cO?*(>3T~XkatD}xdSpfI#>iJRY`n7tO_GTG8&p!AaQzG zu;9NSz)bAs_R~Ja^g|RBy@OqbtM;S;3V)= z>!eR%{xK_oyr!Z;0oiDfKzLg!9e;Tczfxv~a=3`*osfX$`~bVml3ewvdesM#ote`U zv=JE*;R)tXYvFVCi*OdopD8qlwN^L&q+wxUE6Z=^KhXoF1KLEU#4%Y;6@U}V@1>-0 zz>;+L_lMoCbZnyKCCiJ$m9nzRPRaTPS6W1cj;5n^n-kd>Zat5(l?Io!`hVSHvAN~D zx4Kl$F?(Y?o*i6WZU5b1>%CmbHRGL}T++yVJuuBjgnEKfeR=xo;+0vq2TvGBOU{fC&*7YeBy}-iq07_Tuhpfzg z8Mb0jo6V0`f%u z5#!c}LNJi|8oWW9tcZv%NN9Y#XByQY8A!V8OA(|f*D2f|;VRS$vF>LSAO zthn+9k@T{N!lX1>*V$qg>-mM*r=dZ+tvG(DtBSlcNLscR^mcvgp99bHyv-@t%9fbHo|;%%6=7RMsQ3pxJ%3BcW9 zZ9p}tAP%Gn@9$xU)10=j)(pX0_eBkMf#e2&puPZgnm8$N>pS85m<@6yReZ*4iML#uJN9HaXm(7il!CG)lZ~ z8YvdFV!OUsc>lN8=o+Mc3cU%o8>=KEUIJ5@h*w#VU-IMR^Znhr;4kkbv8G1;YHSpMlpBDfG`Dp}(|$Ye=yuCJ2`l zvLv8ZF)Vu9D=Ag58H0!$tu8Wh`1&V?YMx>cR;6BsWB0=r9k-y_0uo%(kQmBYC!{$j zFS29JZ=tfn3yo+$Kly7J4{%zwfP;*`#$G&K?AAECRZ?1t74cV;^xD<0u>GgdDb8SI zh+NW&(*tg%RPPf%ElUWD{rQ2Ee)=yjv7u$hX5w2TIgR3XS zxb}M@lZa4>hGD;IS@oPKix`Ims@=d?+p6&2!K_AzkYrA z|uWwY37y z=O3(-SW7|1+~9%yK3 z-%wKGe*Wwam@3>;g!t2$x~F1=y#(>Aa8l9D z;&N@U;sfiAdxN?JpTnu73Bm38VKArpqV`py*PFd(UWd!08^+A0Z|4!`S{C3ugzPLX z??ubYOK2~HGU7a{YNoniUX!z7gZ~&#b#TS|MAx?o>X_g-e-3@bRF0wHvOz%7&MQcv z#u+%g!!xfo=Rb~tepz5q6K&SqVL05333P&Ti3u5q@`*s+G|H&1^iv#AB9u?&92_QC z3kEH!VXKsISYmay3|w60ou#(X{rl#{Vfn%#$v)%Ykmn5FAm74h_jSO}Dnv;2}NpCQ1D;X#<^ZsqV zrI(J$;qmdU17T|KWB1ytBKR#+1zbAY#9B`@Yj%AzrKEu4#$?lQ!f#Vs?g0B+0F!*( zU~D|we_A+b0#s**>CY)AGUzyyvy(w)tH|a<%dZcsl?Cz{tXRnW))Jp2Jssf=H33Zok zy}6=~`_^jEaP~vX>J9Kicx2S+iyMyZ}XWDL=`U-dU`OyfM>!~@t>WUXQgG>h6 z|47F3p@14z)O58HID6smk33zm_1f(Db3Zht_!JTNWh-mcPMK(A!6(Q(3VItz$43iT z!2lv{+OKMGtYxK`SXhjwO2c|uo>!l)!J+=1Qub;mrk7ESnr+~zKcUMdiF=Ohv@AL-F>!sVBvd^;3RL`cDC`@Wo!_5xd;WmnxVmtMp0NTKMbN-1 zD#c~K^cN&nT z*N&KyWef!ArgEFxtM!2!lql`3ZGWIyG6bZBdjnF0)axDYU_h-NG)@y;F3@_%+2 zi$w$0yEB9VA69m>5+NjB=+iVTq&dwkNk}5^nkA6V)4XS`b!`lX0_xy`LjQ`}8ZPAZ z=?eDv$e2fbKK;+1KTB+;$j*0WkSb94L;nI#x7cFGvEA(zE%|8+_V$k{+9lX)wCFhY zk6Oe0z<+#0#)4$NS%*dkwxL*z!39ROP3uo)9x-5)j$hznU!VdVx*0mK31$f{+m5>%?bZwft|aviu~a zWv2rT!=X5u$O2^q2X1b__tWYWkGILBHt0PvG0_>;w5ioMxe(3eKuN%9_RITBKiMFu zMGYU=Sd+zKWaBB*PN?G;73CXDtTs|$ECzIm$ZE-8BKIo*+~{a+iiDOwLoOz}ckez*$(`h>04_Rw7%yX#ZKK}s8y)?6=v zSz(9Wnw61h2zS}zzv2>5UD;|XXh8UXb!rpw8*$|-6$OW94eCrC!e)P~=#665tfQ1&qXBrt=g+Du%md`eeYGd!MVq6P>Zt-rkwoF( zOcp8${lt5+zvfZae?)D0A0mJ?Hr=Gjgpa?yHoSs8U24h+3Nzb#Qyt|w*drC)AL!pd zUMERQUmiEPVnb_LL1Umi_FeCLiOvKM$T79e=hNUaM)$bj0qBnMQ5g{^DRm60-~EY* z_nfULXYMtohCe@|;3xp6Upvn5iU5-8SZ7MLoY@Q15vzYrkhb}thT6}2+Z?X@fMB~A zILLt2GTDrnKd0(pvK&Buk$`8x1t6Xv1co6=LQp3*1vy9{ey*wu-wI+WFArw}VSR&J zrk>zIQ_$p;!r(}T0%!rvXbRVb{2R!Ufl*^xupu%Y{G!68{f{^C*-B%2ZdMCm4TR0# zaR4O-;xz5qZslz;IZM!vu=Ub(Z@J7BMIR^wqujq>%ofg|I=1oxquK(v<&72lI9XtX zpg$r?pJF};;fPRCcUufDu$0TMc@F*mt4e}O!&tw3iAYiF$4~op58b}opyo80zvMTs z1{1GZ<#`!ZYkt+ZCab8}ntwwF1L26=+@7py7*_tYT6wV009$z^;7Q&!)Y>ge%3tfR zK}v^Zd1JZ1?(p{QTkV-$28eqske=S>GG?gn#pi5ywmlmVWLED*HM4Vab;_fA75LGiqqoZ#H1zQ*d7Ub7?wq)8copRv%h&-JaKF`t#`SCal%MgZyk&g(9j`) z1)O#ZB`#Ml(layK(mlv(?QC!eD^rIj3gOE1Go#tvaMm|AmPe`x*T3tXTrP-RBg_N+ zz~gzie#N}KREHAF!Liv1d3nYEJD@C;)|7dUakHOCSq>is|j^^8z(7-2S+h20h_Zn}Zb(nIr*`k00U5 zeK0(?j)n9H+&=1O4!`AwSe#!Q?t?)0acc1IPGdStYagMH&uuif%P7W@o#^R#(-uCf z399@3sU4`$kLQWuX$n8S4AFG{_~01k_G|2c1j-%WeIyZk*PywJ_FfpW+~!LSRA=jK z?tYic{etOYF%~!Xje2;KjSi6|Nd1hI4QX*rS9t- zca5}#0#zbNjUaE=Igjby(ckyKyGQPl0bjnfe_FwQiG!nMZVU&>{vr+svc1id3BFpo zdck0D`?GeahK8?(b5)2%;4j;oWD?0wR}|`9&tMjKs>HCze7LOl=`|W1QA9=IP`Aha z65jJM3cR43G!rp0B8VqaO(_UxfGl?o)E#3~qXAL4`mPZuo?JpuF>fXN&%{{?@e2eDXTwETTDD?KlNO}foJrZoy3c2@7?;nt~ zJl&@NyE-LO5zYEARM0~;Xg9WduxDlU_NvE%Txi; zw&CQ$VOA+Ln`3)t$PHU|rJ*UxnSLf>J+bHSyAbWEUM!hMCzv}$MUcqy0tIYgAt4gC zfjH0YXfBgQS4hC-W{A_>?gejuEDtW!gwz_b5xgQK3t<66#|0NY^LULRKxk*l=H1)V zqum)XBD^E_MHW+>Go(w*@gt>T;eyY2IcRcZOnws7(b}~Qk`>_W1v2E*XK5jJsf(g6 zkOHR3*#UE&plZ9N!4*hI@C;IF_0!_Am0c2_7j+8OEGoVQ`aU#P*e)g$H@hP(T0x3u2Nce30at7#gqvVIY8fc(tRCv%3dp z`JfI%xzZ5@@|rHdcY69cc+)<+LSAH14vQK=L&j<%YB-0Bafc)#zf=B~L zeDDnsJ>ccH$cXr7z?X(VbR~1`k?lGd=Hsc$xkX&}2y`uMO}r}yZG|mg9xkc^J;wd+ zdQ@3Cqm&>vj=iPsij;x_BJjUqY{y)RDbvwp0`q(=HatZ3i|mJw`j5Yef&%xf`qoyl|3pW$ z+N1>ic18urZ~%)zM00b$1(cu3jWCDL#X!x==QR@s? zHjR27C7$ca{gb8JU@*f-os*c+JvopBS7t}pQ0T<}3Y8}~V8=uVNo=_Za1D)$5>us8 zHREe&(1{)?i*gAWn3&%h^@uoXR&x0iDECmirWdsB~cJ5b>V zLbiPpFqEw+BcX#|yOcK#^hD>@wz9Rg)#Hpf^onlI&`sBnTFAe?H<^r5M%Ef(}2@`KyJy#D+8-^ZiYe|Ouze|D1w{#Ua94dTWN zSc-pt`_G3P^MAF@zag$;d_;5q_qYFi+_z-I{AZp1vsi-o>=0fct6d?`%|K;Ju zScDM0@83harb9mc>o$T&BjVtI3W_@vK52LS&9;eSo%&6Ot9A)0dx$su z;!aIUIh-BBhASs|&i^~v z!mfg&7ynUG|2zNpk^f&;huOgpmK8o-?>iX_H!OFJ=cyz%u+OjH9Jqhv=B4__e$J`N za16mbIL^{gk!Z%+fVW-Hcz)i4!>3f^< z3-dIsgEEtxKOBRY0WGIh0X*+!LGIsEvlq#KeR-FWbM@Kejbz`lkcv<+t*CIfc|m3- z0SKx>V|tia=qH?hg$lwzKmC3FJxd|hv8Wxsxjh1Pd^lf?5{dj*Xi`qC4{ew{+hz?I5L;Z5}LYS7oaF5?{{RE-f`G!_rUSTB5PNuuN`+k2t zH0do+x}4^4ZBLyH?No1JAh}9o@9Q`&Es85Z2_DDp^z6fYNc&pXQ>s@T9bo9VEDINL zeUqDqctZ=Sv|YhTzbb7_xp*rcXL`s)WnDzOle~N1dbQ>2S zCnp8KMtoF4o@jz6+T!-~@7E^4hJO2o&zDT~&!i^`IQi|t*kRh!JrD0h6Pw6=H;D8C zmjE~T>S!rV?8 zquCce7gEEmr4*Y3n!i9lqND_R$a@`~)M>}h;29+)mdeEzEcH~9LO*|guE|(i&tdx= z6eP0L*x*g_C7#P6R-*65jWKfW(apx?*6}^~iOU@ZmdaFxlR21+U5O|+&(%%z=n6G3a3oDhlh5H+Gv?5@YfS|FvhXkg213kh;{{%ymGv!#naf(I z6u67lh^B;hCU-+;_Yp5#?{LP8Lr%51I8;6FzT(moo7 zpR?P4rn|9(qZ-TO*ZYp_rq>$vy$CFL{#@K$nW>>d2CuUl<@@-yb>PVCF3-cI+(ny}&H-M+(jJ-vtam*NKf+kXJ)yA$xjxBDQ~;yf#e zWnUicOjNZcKV~evh5MPrTT|uj>B%SDMjB!4NEcf$XRFiNP6MFu6q1DO&va4iuJ%QS z79Rk1>uG;oNL<`6FN>bx8wB$09p_eLPByjfhJVI%odMPOL|&vS&tr`R5@fix!t3}{ zILP%WLIhR|6d_`|R1!Ts%~lrbuI9JE#FM>yw@;P%iD#kCMhKh;0svTw=g&N*Exsr{ za08Ah0IeVejhq1h8WG+e6+Wbk=_`@osX%M0s8!*jf})~lYU-P-836F|%}C2$4wVH= zqb(yNB&DS{RqNU-FSZxcFu>DNK+*;9bS=jg3D(*k1#NFf%O9mxJ03gjbvE2x>OT0K z8bavzk5|%!lR}8N6)8_f8*pfXM#o8;R$Y9PmTbTw4fmm>G#JRGZRN2_9r9XN5Y5I?L}N@WTX!ORJ~yoAPIQ<=D$Iw7`5Z-PcD`4K`%Cx2_z{fcc3W5{I{UHuB56` zlGNjp^&cCM*3x#g2~tjSg$1a-gr}`HW0MmG0K=;t$bw5^nPjs){db3ub&nGZDJeX>Es}obJ#+bgu>k5Vv9T(wu;kd2=FP7!HwRRqfZiemX7H;@`ySRw zu>172zPH{wq3ZjIi|d5Ajc;2*N6+taOInq`Ex>EN-wST719YGsnpA9QWMwctJ)dU~ z$=(2Jpro>Iu)4~ZFE67SJ0v1YCPut2saWV-tJhwB4|#HV^V1nuu`)kVNF?&_-wprl}@c6>lmSG&$BX zQ>Uw&%rA6>E!kSW?-1C3@D1zR0bzgH#GYLQ{-Mm(_6?PvO=9_l22l8H%&hu87lb8% zp`5J~f9>Qtzo|Sf0zfV2&zwbr`G!)s2l_Fgcn^_v;!Aw` zqy?_Xw@ZQvWZBvCdj=r5I^YYFp~MH_K9nr;lduiw>jUI$yuan zf3=(fbmX393!9aHGl@{1KZ6QQAR#->w?t4&-QDHXGM%ku;dL^AzC0*z;_HU>HKwmI zetOECFpe<{-!$o)B&O%)_6{OpOMJy?)C;7tbVRp7MMvk2ZvMLC=h2It=IWDh=%}NZ z$jDNlBMBm6k7S{&F~QqjFn}nLGN@OEsWxh@=$JV)!FW|W(;eD_lxcK90=Dt^bYMnC zMu|+4V3{L4n)mKqDsrI$EIhjQTBnQ-{Kw9G)ewRGku|rNyC~zyZI(3^fG5=rWD$JY z%QxlagpN5M95(Rq@~x=`IA^Fd#uOzrO+Uz~Uz|mJZBUwjSakOg`8TDgsA0;BpRGvc z=J~&@IDVOREaQ?IppP-swMx+oJ2YtjyW)Af8CygO&eQ2t+Dc0<6_Yt#AO9J@qK1kK zbiTI=`R7X+)t#U_*Y{U7d zuBIJ`G^GSxVb)Was97NLc zm6~9x7{QL+*w`qUFm{f1Krx2ykiD5aQm6B6763X%!p?%K16(YEPJo?^R*1XI2L|)d zQRqt1t+6!s3YqSk+sg>hw&}Kntc_0vc8wBf9-#IAaF?6)L6rb6o}Df5#yXXIn%FcO z9S3gD3A=YWP5LF{-WinX59xy54uLE^7ZKG<{Q`R&$bY9mN$>Y~IM8(cW5%d?OT{eE z1(b>t2&f|s|AO}t7azYJswU=a&FE=pV!$~A0D>|e?f0CRFmDE6D14wu`D}bWA6Jr4qM&YHenA1KfNJM!lvTD{OU81MyniJ0V>6J%QE74<;4xV&MWgIQV;N2p z1cphsxtXkc@bR{D5YT>VCl_JpuK6G$BDQx1sW$Su+4GSUYFv1ig_AEfIE4tf@IyMa zKvnySoK$OU(^Tyiv?qrFkw0*5@j+#{BV9bT>jiPb(^~*=Bmg^iG5r;fHD>=nEU>Yt zBO@%?s#WNcgfXw*tO|gg*t~Y~0*k=^_995Osqw`}`{34zyvAevVT@q(OXVt8Y}>=x zwvISZDr*x9PEoBY%vP&mg~xd1@$`6yfnDDvtXjtbDl338au62sF_^>`Ok8nQl_+4d zHJe9VUafIpLxlROvAMLA()b}5q=K!w%b38=MJD#GQ*{CrptZ#YOvrn!VFnNqG!Inp zgJWkNx?M7<>Z%5k$0PyCs#PqexA{6}3&X<@BO@cO^9}LSG_eqnCU5#NKOKQWj)~Y# z5|VCJ{T74+0F<*iEIZW0iBc^e(Lf76rjCT%C=T^ zziO7-8Tx`0Sbt1i@)tuHadDWCE|H)&7vmdrN+6L0Yj<^NVPgZn^er-XRpJrX(~Jc( zV?a8~RrL{i_Kx390H77z8(kdJ)ay97><&rkRVuOE*Bx`y_Y^#WiRVwp@a+R6=pfeH z%NjZ}jJ^H&uRzJw5703{CmDF;!WS*9rB(W8~ZteZ?d^2#yd_<5zth}^6(x`t=1U_ytM{-*K2^i1*HiwVt)SqXl{fT zSLDDQsw{v&?2h0A7BD8hx>14?|A%hk8)(!EF2A^z6wGnOMlUpDS^M#q`L$UW>s^rM;{lQIZwZ*V7|=M^9w4yMDz=!))769WQ7{;BtE&aa)Z%<<-GJx04vs zwYCC0+3oop*syQ~X46|qKy}>OmL>>LJy7&McbS2(s%qR^=fngY(E4gF__!n<`T6t! zPyU9NS4@XkJ|aei4dj^PZ${&`z-&Md6Xartknnm`2oMhE8)65Z6L=i|Mg(k$=n&=$ zxA5fbY{VoRLW`AEJ#fsBXst8Y)2EgPQd{*#59I8Lz(xYx11K5|jzJ^3^#BtT(i2|) zCpOZ@axoke2dBdu?~2#zHc+M74x8*SwnSga~f)AMaie9+r6}F!cAwYL9*}hsIsxVnI+SDK0}i0y{f+!59iy zieKJ(bkOT)X=xErLflRBBB!fYp7s~)>=iB^5svNRMq&;-77;z8$d+~dkXebSX$$vk zoEDI$Tuy2cc83}`Q&V53sv-RD#VYESy^JW`k&I233g>uuusr1#9}Bb!3(qV+nmW7w zWHlNdKDNFdFC(zV&6Oa{cby~#JZlnLUdFm}EWW#Wl}<@w z$O8App_X1v3ua=z*lLgURPubRyUPBfP#ABX9p=ijD#|F>x` zDk`L*x__?fsQJivQm6MO{A3w5C#j>>W{+j7tfu<0)_DD*>Fkn_tFq{e+5G}1%JR>N zlukL=x(0$g#RrVJ%7f;@1vl-zNmDM@UOAjHxNGjH-Z!H!Qg^zTOu0;-*awZ!-_z5%MpFgA>pun& zdC+Vn;aMYoHZr0e6fk}xaOX_&S)%WFWM3wEY{z26TVcH^PdW?b)*15L15Ev@dUH5=Jxab!>NRJ#W(1?OxKx{(kE_(eSep#*`&+z6fgv0ZAgN&|4;yY zL!IqG=T26T;VC|k`kQ!Zys)r9h`ZZ@C4ZyxF>!A%fg2aqE|y5-)*qgYjnPNbrAGC% zxeh-uQBl2Vn_rGh>6z(1_v#s4exK$o=NO{-Zit9@obi`j@Awm4HfhfHXJDHik2v>d z6o_o+T$Z}fZ@4C|A4-p#7oKJg*OqMG7_brW9+?vpCZ{BG&FRgbG@H@T)&PB2H%+Gnd zBX#9kYwob{aEsaKkyBBN;;YK0fGmyQbw@R%0k}_)s4?%}-p}(FMZAOwzXeaG+hCF~ zAo1*m&oo>P(CQy=Rf}g1xX$`Zz?vo(yB%E~%&ukNCACEss9N5>!e-V1;r99p!bw#V zvG3ebbTGfuWpbyS*X%bcDAz}c2*Ul672BU|i4TgI)~QP^TU2F@#+&JL#SR=xt6JefT&`@)SL^HcOC;P%-E?BaK$|gPOxTGw$6*b=SC_Xj9 zLuW#gTazF&{hX*{#g2rEG50}GNnT!l{i<|S-gs#(nX3t>iiUd&$X|0FQ;EV&n*_lQkqN^wL*y{k8O={7FT=Kaef0MrZaOwf1a#|OaS;(E7)yp3f; zT}0i*l;_$3n#z}0WnG=IOxt93m;jFr7J!sk3`alAyWTN;0*pou@mNP&@2C2^Fi3vs zh8zS`>`m&P)@*4tyEm<5B}Mkmk-6Gk(@^Pdj>#m0-cD2)q(Mx0&OuZpZqMHz>v|l8 zN?1zIr--aAtA-pdth)_eMjQ*?^@rngm{8Z+9r-}lu;y%Y?Q+gct~}|e{sC7q!IA9t zf*03Lx()?c;ZEYJC9L!4^?)P8H-4Eg%{dB8?PY99CO@5ogakShEeUX)D=-}!NEDcA zA&_;A=VO^mL55>Tkw;B#PcRNDAtVbhkdJ9{0+=}mY-@cRKU2UFAs{sGfhkPu0xU_G z$SBAVh=ao@oHfWdLf-YF2m189Rew%JK?M%eAh}!XAV3ZstLj~Fa7H00ng|#qM%LO) z0CC>$v{DBo{>xVtfRj?AiQ8)X z$?0PvuereH;2FnH8HqD^JecHwtR-zQ=NfKn49>?ZCesJD>swpmLoEj%a}2h-S-Q^Q zApnw+taOxk>U}{bgFPEA{c7UJ0yy9PKmxiik<7dwd2j{#61MoQm z?UwE!M~zo7tZZx+NBnkh3Cuh;yWZE=;oSB|4;UvKo<){mcT!Uy>%aAO6nK9;Wx+)m z{!a9B{p9FqdH~YVQawplk^nrOIv1Q~zot74o*JrGi#tkYyl+;bGb$u>>n2X=>sL7E zKwD8bsO<)*aoVNG&}hih;pYw~jAW6!H=!IrkRT8Q{-Xp2)v7n#+$w|H-2**Hb-}Vn z-ir;6a1Z?KKxw5r1uLxD#O zB<-p>ug0r3esiI7Jvet#xBFKZg121gqynC;!aLW6`&>BpXFW>tVK1_hY-yol;dJ>@ zci~o$*=+t50B4}xEnaeJ-*fR@UWZ@*xTMOqnh^Jb8RTk^gD_8@y%<^NP!Jd1%!z74yA3*w9-oX}`RElBTXnJm?NwzK#F4pDCJK{+TPLTNt2|v-9%8 zC0GLdkzpWLOLm-%PiAD$Kbu2wUU!EL5|5Wwcjz>*d6koXZVNU{i7tl@_^6Ixe>Cg- zY1A$NKW=h3rjUj>ze0tFp78;(&MD^agSm{ZA4`Sm;dh*zK#0NFdh6YBxkW0Jro@n& zv(0Vsy-WRgL(Q4*&dYu723XOyyrKp_KkUKw$pN?Jo-WeAQF{8~2zsD| z>Ed+N^TbFShMsFB@PN4FR)x9rXa@s*x3Zzc@okn5Jxh}XbIf*!c#w1hZT~>TXZ^fS(Z27b zQT?1vn%E&se{NwCjgaSgPmlQZZl3ov=rr&8i=mzo!8z>9s<@Vj?13dSx;J$H$ZjrC7W6$WeHO=Yy?a>c(363ahpj#nj$mNTL> zz2^=h``o=6t|kP`v&Q`94x@wP_f7I2myqwvzyGPHzqh2l-U@H>OJt%dJvOnJ;3_dU!6X#R;9uhkI&!xLdl%qwPmRQo3{6&O+~ zERHy|HXpPOjDW@#jDV(=n=Pr%+^E&szj|uK z=;&}dSyx~aA;}U}XS+i_-|)Xym-Cqe)t&@iJE5YfJ|RJhkHHb}#y~UFW#^VYg8-Bu zi`o6#cpiOle(GCNR~Rc<$AukmRNrwI!tqk}%ynPAdjSc81)Qc3(a`mrtVEBtmFBvm zdOzK}%N7)-#=y^Iudt~CeS5yQIvowQVhG;<#?!EW6+YC2D9EJl142Wc?h~(*y`rX- z+CB4D_Nhhp5WyH&-!_;8Xo&|FG>FYq_rUG6T|f;bmDQ$+(TH@;4-#_pN@ z(lGyF-DIX-m+Deyt6XQx50WN;mjq-x_Ge38AzU7Gdbogmm|%waw~lwq0JN+-Rk#3p zg6BD}ID-Ap@?#ltU;G`Z@%|@_z>_n{An((g`qN%xm@2ug7)86~W+CUMZ3Mn6H>U2s z;GG4+1Rk6AUQI>qTlK5eNY$fujv*luNT&4P(yc^?&8On;Jt5V1iwMj&_W`ns-zL{B z+b>-jjtNn@U72Scr0hdRCWJjGu%Gx#p;4u( zStDpmWXpp4RQ#Nd|KTC>{u*1udFO9(2x0JoMo`(H0LGSNBc|X}{r`~n)?Zb1U)<(;*g`SM?x|23T>`;W}iik-S%UEX+W zYHPo5K1ir~8=sLA@_U$s{dr&gg8$OO=*~&QNu4#h`>%&-Ja3UQGR~=iOX+l?bBp1P zTk>J{jii60rzgXYe~C!4HA$#=^#S+J4RY{muL| zUy6DC4xt;cfnZ+s&f%ZIjS7n$LC=}}_M6TU{rjsmJozi3J@@66lvwXVB~Ou&QWjl8 z317{6Fn$|I55wO|9OefPU|{^=z5FPOVBl2`7;DryPD!pgv;7d@TOL~UJ}&&ESKoHz zI(H|5n=z|L14YKpJNDlXquI;5Z?3^%oUeXw`3sHL?2J{|ez5S)dr*_KARbQTB>^ZW z$Y`=UG~5`NnQchyTWTF*b2;uo7l+?0{YE;nlh(YBwXl#rIb%Mw0ChBv>x z4OEx9R=sgt?>DZn{!KcVE_B~2Lxl7_`n|8Me-}~1^RRA##3)~QY?Y03}!kE}GeFx;q4A_#E?qo>2Gh)QR79R5#)s^4gxF zGVjXIU`slnlADZ%=X&7h%bp&G#`KIlo+|+Q0k^ z+9~fIw-`9;FLnfos>9i4m-~7KYTFmJR!A+M2%sT|5tXDao7$BhV>y(*IU>%TpP-g5 znXi4xe;ge%)7_Umi2&%@8C)&-%_?)G8>srjT|RZx`EQ?}1TTlR8wZ{EUxhMfriEg2 z{So}4rmFgN&ao}XujjOz%y>}2-o7;L9xC)ojV976(-X_WV%_5=FiG>pi^%6My=Z%A zrrP^f)41&l(tb&fSs5NQZ*bmOEYjOUhL;{k7C7Wi)RG>zdm7CoWU8NVT3<#3A0555 z&H2Q;V1sB|00#m=to%p3X97$SQbc(3{#>}!!XeC=UTC7NxaIAqgiY=rc~d4!lPJx@ znc8k#Lqi+3E(R)n)*U_eN~6IvXk+0o?(S(4M>t^14?EcpOuzryYxtQm5OAuL+k5pp z$o6QyS{;x;_Rm&F?t$ES9G8YH+Hq<9e2BK1Bqmr+IZrte&Q|lHtIN-ecU2o6SCzrB z85vOrWE>8>uJS|9^rSypqPg1iY%JS7jtHNn4CytxkN`>IwwuO3m+T781l<&f{BAs1 z?F0=+@3ckf)Xvda4qn%~%gPcTZRhCco&k&VpHbRBB{O{(fwv9h1PPLlrhJfe`N7)} zofkk9qxI_daj1nMK&Q(&I~S(L9ZWl?z7xH5Db606`h|d+8h-Js!&gqt3wjkM4@fz$ zm^N2~wDt7h?u&jjGy0#B&j+ig>+Hq$8?H%>)-bigR)1vC^{~QwiY7UK?A$>H&7TWI zPFV}ul9DDM9-SO+P{S&}UEN6Z(6wq(n8%=QtGV zy#FMiaheZD4#khkzDMHrF^F=HdUMoG4%&Rl-)z73oLN;D2ghG@-ffCsmE51{PH|7Y z^jC5C-tmS#EP?&Tk2NUMg;z5DH-+T+AHH*H#ZaLo4-)1~ANqenQ67I7le#22o)kaB z?h)?~f!`$l?bOU^+&DXvr9F-?HvC1u9RbxeZrUZ^c8p^GTbiU7UOcq^yQUK(m!(3+ zT_CoA$NzX%@}e2nv(fWxkh2@2V7 zAl*+!Ih1(%@S$+p$%Ee(?zMO=bK+u?h64I2~-#HKQr8sEq`_KGa<Iy5v{VhQOvE8aG~q07oWtGxufa zo8k0;J0&1c?2p-e;89}ZS1Gx#xi(p57=34!gcdxWAV`sOB{B?a?}_hg()p-s+kRPV z$lt=pxA9~8hzSU!q&HDR1t12nN_V^K0UKiNz8JN=ZBwFmgneLz3;VS-v59izIa$jx5 zjI7C9edg;cA!t7vVeLLo`SIjnx{|29Tt9q(vsG`bZM8D2*Y+^$op1%$*&n-c+L6+b zS1~SnX^vp!2V1_FdLr_6pH1FU zUbL+Jm)4rO6$~Qf&=1N?EDKP}@3PQl&Kcp6Sh;!>67oa8+JQkbS%U2OOFtOey-jrJ z%&fy*ui1|Q$4jE@rbljb`ZEng`#Yq-ZJ8%3WH#H%_+6Nf{RvfrSw1TB-ml8A1x2y7Ybm)&4Gvi zq!A?ki$HS+0h&?Q3XoW0tKENtb@$(QKf@UwXwb_ILQQRZCddQ0!Q@_7OAtgeN7i9k ziwsSc%)!6QgIW&I3i$r%t{7B57b&nKXtEYU1iii~yH8KMlAtihrJx>YfuCk_|AY z@wK|n0P(eT<(@iYzZVQiK8MK)vZb(SXW1W<$wNA4>r(S7nauV3Mdk-Eh%#o`-}|FsKyjI~;Dv}lckjB<@H!<&{^p*P6UN=Q zYTj>He1jeB34YDtCQ_Jx!m}UU-cNa*W^U($^<>`RFWpWYo~@g2KV!xWd|lU28R`-UGY>7#=7v1kwrN3nF~Vt+~w>45~)%7dv7 z)2a*%%2N5kwd7oYH6VEZTQ`F@y%a-ZpG);j#E~p-GDq6%7u?s=n$|XLlNludcWm8M;dr z17{DMZ7Iv4j9{W59C%)Tm_+xbbGL;yu~bI&qWilUYQ~Fk$#PUV`AUFSn9LFBJ zG@gnlAJ;7y1$ca~ay-v}zQ5#NZg{10eUo@?c~zN@RCa-u=3*x{RCkbi5*!1WY!{S} zR{HlV+r<3(`))QZTD|h8%f!#xdZ|u1?cvAG^ao3SUyJ?~;?(VFps@P;nou}8e`UqYb!(h)G4;Xk)&^VF zHqat3f=Y-JytfU#EXZq(3bRl2aO~8yp6oGRPF|GYw(EuLrfcp62A)F(J#G#S>n+3g z+Qj2_=Ig3jIE**yK0(X*nf?GmQx-oOEQa6#Ek>%%dj=7dk~jxGhZOrwx6Xi_u^eQ} ziAr}5i$XZ-{=T;p(;qKu@g~kni#pYkZ+Tl@WY?Z35Vza2 z`%kA-)^>U_pPQ*4Nw)kQ+c>tzoA({ibQ@%##|r8Zrnj*j{=`puFmyp}eC^IN{(by# zWQP+OuIrqxB0Fot2SXS-w(u_RflSAgv9A)sVznpg+gW9fz(Umatmrh2TknV}uD?}a zNrv<@oqNdep$@yG)9RtmFQCzFBGpIrlk`*Zxid|noQ<2*=S!=@f|GIG!)cW9@2vsXc83$ill?N3smd=Q-LngI#6xPJa-9%80 zO)_k=xeUwj`>`DT|6bXOJkazYu8wY(&VhWOPBUFJ2DwfpN`ro~#N~|6K~S|?s&tv7 zpef`3vBbF#(4f>Yg7A8!Lf!Qo+~=)VjvU@lqM@zx?^O1qu1s`(Lo3?{UJ%l(1#Fha z?YR9DOz~ffZeRvgP$cMxtohIRAW4o@==OYZ{Zr1MJ8ipD;iXV$xnsv6i^-k!f^MoG zNBZ9{7)AhY7wZU(mT4~c`X4GpR!jCuOc1;)?Mj$PDJd7Iobq~KZ}1eUt`eP&;D4`f z46v33&X7h9j&wT|uj>o#)tXgRs8nZ}wOr|#P1wCy_iLppr9^d^L5>Oe-^(lzhOqq6 zfTEW(uGtP{fzS9N$1A)cU7k0->FjzlxiYoKm{KxQe|ta66pilxECw+H4kVZ}PL2Xy ztH6tkYVj0l1gAbUSPj(eWl=!~{AX@VTp~bjgug}q;SFtb*C_!+KNtEb+AJUxr2AS|VPc%~{Y}mX&O0!Z%%X)!X zad1jgC@#teMeErtm%Kq9Y{hKsG`!d@E$(6HW~RNy54`*<~-;PXdAH^?=3(A(Yw zBrSt`Fl!?uA6H9gpS^bAcGAW_9I{myxtX+SHIsPp8{h;9Z|#xb!ED7x--F(#l!X6# zp(r)*z(fR)T@nYX$8PPcd2VRjQj`m%ahc(&V2g+FwGcdCnzewuPTe!=VA3Knsp&}4 z&64mpy1UmW?u<-GLutkYsq{esKB;iW=rM;ek*_+t5w&TUF9oOP;5?b7sCWuj17tCV0+#G}+o&LGqiOb|f-_2g&qKA?bm`c@m|GvJB(#^b1 zw~d?Rc*!+(c%Q%8+R@_24o+UtY~ZauS1hezPK3&TqD>2y76FvZf+jjx&M(Bs<8iq- zh}U;_#nLXqfWpSjz!?OOPHaJwM*+{kM5O=z-b#_AiMB0!+g?)h5Rz`9h9dS4UYEz# zu?r}nBdGLB##yR0rdzn`Uk~I=byAPB?*MX1XYw#AU>^J zMCQC9cRwN)BR-FrYIOJ`%p;fLqQ_b(9&#U6S1^bZd?y+!!(s(_@rvZ6qwLNhZF9-%-vG$>|&&&5s; z(vYEP@*Ljf1j8u)+4eD9`3L{5;T||7IBQT=ANZ__RxJfmwi}-G5{@*)5hZ;#-)KOqg&_G!sBokDXG_MZf7dkk9#~VE!fvo!+DN-Yis3F^ zc5bV*aG=mCFB5XZWa!2cq414jbyevqnP8o{sO6iP;>taEo$r><WSr4 zbW6O<;?3!WJMOx#b^zF8E-HClKfWfByQh-Lm*+zU<*3ou?sKH*hyM_<>wxGM}f+3adP zj>AtpY>#w@c)x?q>VhIf=kj=jY=wD5!>plsQtU_vnCMtx7}JdC*d8_AI$v}FM&-9L&UONPZXhN z-Qvfj{dov968BuX(_|yV%kqhQ=5(jW2T0;?x48c}WMbMzVsrUdvlgkg5{4s}c?lf@ zZMwo*IFXH>MQ!)=$f22(0zND%WOU*HHhh$s2|7%KY|~-WtX%hiS^x_uY*aWTyOAkG ziv&f`Ol!71EuIqkSL<89hat#`h~RRhG|L^Mu9@+5s>fL615*lL8mW%N63Jnf{T_B!&7*GOtzm?T?vB$a|SnS7)4>AjH*5_*bof!X>NqcTk zv;;I_=FfW&6GiREFA1Iz*CeAnO3J-Jg#w9lnBP1K zixB03>7fw8?7bi~tS}^Se!Vya2-Nrzt2ummv0?TXQ2*uJ?<-iQB%BflN&h&X|Ef#q za^&w(@_!!I-O(U_Wd1M*bpTUY`t zFj5IfJMtYLB*)E{lHo-UZ31=S1(Q$7L-#+A)$F z+LUtE4|z*ifpK$=z5!+VZ*2C%X@7uvg%Tcug%5gSVMsg2iVYn;4;9F!dl9HJ%e164&?bv!!oNO{8`=1~Jy0$GiK%IZ z&)jiBu_BjOz|w0`}9YNkn!OW`(d=e0L>KWvJQ z5t04D=)|i_)hO{2lE;T|1mWM3uIfunDV)Ufz6f%RmGK+Kq<&<)P5YRDsgiJSoy2l& zW4*VYY;7ZZK3_aJ1c|8UNU`06;ZA|s;J(X2&c)QkC1!yNbkMT=@tL-1;SaoeLU9m^ zOtA2(pAmHWucZGV3!Em+!BDnf&NgE-oRI)iE37rknDeo{6RgoIEQ z4D+U5sFAV3Rhv|q-R^kgTqJTSxNX3!bv`C-%=|Lt_mSc8@m2OPMsA*+aZ3_a9G`}P zsrJd`ittN=^}~Iu$ohXm3>E_%=$pnTahUK~)`!=@@YfQk(`65lxdRAI9JAQZR5(*` z5Gz_EP)wHZ7X5wI2LVYp$kNaO|HdXV+$-yI+gO#6HZO>cb2@dyPelrgCaD~jm3!v- z&A(7;nihBe>`#Gri3ea#`j0=aDR&G@FB!y%f1Vth#Gdf(c?t*jr}5a2>49-oSbw%> z?m-#`y6+@gy;)wC5824qb3V;~jQtad(tuOSCc@zW*qkF*8gjoCJeh$VA5SkkG{Y17l&w7bu+84TwS5 zqO+NDC08uW;~{uhf*7pHTRiwY^BC9)uS}EEFvtYHD@E7z(lWx^H)#XPy@*&E>S(SeCU55KL9CUmFLfc@sZN5o(PD7w6 zESSk9`ba?Sd|DZZYuYd0bB@XDO3Y|UVH!xo*f{#Hr7!5H85a8~7GTMZ#3D0V_c!HK z5`X6B6=!`{+VJs>(tLR$Bdfp#lxsnaGFJS0FgX&T5?a<~Y?3V&HM~zzKp7_83?8$0 znh-|q?@7_eQtYyD$j3ZBEWOqd#|9vO?rG7$Lo1w7N){8a@)pX(*$-4?ta- z_3VdFs3DPdlxZ*`;D1F5ISLoF%~0`yyN#<@xWsJfz3EG@oHTJtMm)kZy`*Ul=}!Mp zMUVi0Qs2;2ZQ4J;%}o7g-B zaQ|}6SUv=y-P;WY4Hpr6Z(j{H-6I!Sk=;BIU0b)zvE7K8u5A{kO;wW}iU3YSrAV%7 zAvjw&O<$U4{t8;98%{KpPJGU<=zlN$%#vQ%Xj~ATjhz&Wff|L7^EGQSJvoY&!8#mx zBu3hVTJOy{LU8C>V~f zIk)T|p*^Sd4wzemJNSH2q8R|~i(k;3kpi@WJ`jIAIVjTbXrA{SSZ2Do+QLtKtb#7&137j;sM$c?WeLxL{G{SWai~;=gX$R{^zQ6d;?(d&?#AkBdCCH4F-NajuR?~9plK~~s+CeFzs*~QxGsW}DQ`oYCF5>GV$0uI>eX*2dm zSaL~Q+FSomG|(t3m&Dq&*2g~uWu;Fdt6%QV<$n-I74EIT)&Ag%-G%1Dz!Hqsq94`K z{~5Is?}xcun2G5bjx-unXyJ9+vqwJBPSZq!GD6OzrA)ng%=b~##<}7SClx6E$&A+l z66d{AQir2_4SQce!^QV#r#*3*y35(DR;JgPsbh`W=$nK@Jg-gs2U8^Qm~ki|l>`#+ zu)nKe17BGD25k&Un%uU?T^s!o42c8b;o2fwD>xav=vJ z)%t_iFJ2lMMR2}ostMT>bKzcF5a^+W^OzMT2CzNggBS*tvB^I4MbK3bxQmTHL2>`O zW(s0PfsD`!n@Ji$V6wB4SYq$#X0zui#Jt#an(Wfw2-3_XcRjZE`ueWv(4xtcY3oGW zMpF_)R*AJfCWm(b^Bpzoe_Q~K-R20o^^M1(D)2(oS>LZ=d8xQRyE5N?_0}#(z&Bp2 z8A(+8rH2Ge6i0W#&n}ZXJ?E+G=+*Y6>k!tDJ;;z~9akp;cI~wEp6_TE+tGA8zB+3a zWtp^ZJFaZ3PL~?@jXJ$WGK`!d;VtW-CVn=vQIq&5-St1y++7Ux957NMm+zhCQEr1z zyKY>>?i>p5&sC2o8P~i2k;#~0Bbp}J=ZY$m$fT^R9LDQSPf*DiFb$9v+r0}^TX+9F zjMt|rsFC7MCKiEhA~6JL`M?T#_UG z2}x!W|6SG%kjM;K*&ajB2PiM#zuj!BAT2sxO^=aFy>;cYCz0#l{=@Wcw=Vv(x8=(a zZ=%2+4gUz1J}5#T(D^1rN3fujfwL=PYEou$ zmj3E&Va8S8J650T4^d4`!HX6tE&(Fe_#koihg8Otj(E z-x)xhwug}kY0B6Q>hCMlFAKd|RRn<#@;enaBz@6~SvJaQCoymRpj#=ZPqd%&{(aPUCb0 zKLEsdspN3}VhDuD#2*!5Dzgqjb{iBZE?{^dewa(!2vstkiMu9uG8_f;^mxd^s z)n*zGkm9nOF1@b@*G!;kb_k|NRdO%I^l0}x9PoH)Kqnqs6mW5$2&~v zoQML>>a~?(gU$yjA={UsFN5&msAIRW;rJMv`?a(b$VV0wR+XV*cdNWj5j&1AuOdkl@Ne zaA*-SDeQcNet@dA+2#zzm@9seNy4y7ud32?gmYds$;lhlhCx{~w0_swYXq9F*2Sg8lvMu`w|a)L=C$6`MipWdKlnP4N)Oq61X%XFo@)DgB>A*4H^_)$6g=l$+^w&+Wn4NO4#@oWDj|tNl6@CO~ga& zG{06ZrEGzmP=%ojei zZ~xq^u_ssF(tYzRG}?c-I!;-YU<>gj~K&wPy>0|)pIXU8`{`dyP zC8Sj|`wZe1sI^uqn=uN!M#ug6xhJD1N4@Ps>m@E=sIw3Djts;eJdeo?KUS_T>KPb# zMhZRCMtY<*#DE1tFVn}_4C!Ojh8*hcoOf8{SC?TOF`(1rEU(T;3#dTzrcX|Labi) zMJU2Cvh7c-(T)M^1d4i*KJ^mNj|h zlINY-W@W{mNyuEa>EL#5QZ4lOU(=synZA)uTH-&XczsRZ8~>|*UwUUmnJ>Gh{~e*q zJ=MMo_=q~b4F3{jQg9LueVlno<#G#?&KvqUlaUJ_@SWnaf<(91*1trkHf(RdFI(E} zTLbZOtDkli?5zTg9WI$FYf#0d`r?#QP)szJgb>5vTV?>8x=3^XxR48aRrP>p_eSL; z9`h0p<~%X+BwvUhM3l>K8a6hHij%m)N?}!|@mG?uiCzy|zK@pm8D=^n zwo>cMVcK{gX%jj(MVLtSG45wUAsWFs3KZG5na*JW?Q`=X$7B;FK_-CDNZW0f`tR5$5(9_oe#Hw`dDqhd6-UYR8k?DCA5af zyuHxYZiR8?fbmG}b`-ZK;n*1rByWj7#RW)8LEPR|D8AJT0TNP6mkG~BI``Yd*a#qg zG^71yzcJ*|mpgGuWVJge-nD$o7q&0d#`$X z$ik|$-?jJuEO5l|FkYJ5rp&#~zl_ffGH7o|b_s6CY*_e(ISLZz$k!Q;XjytU?K)IE z4)YE09j+sDoON`T^;6?^)<)<12&YRtOfA<(%n~BIH|)Kt9c{c~Z1x>o;y$5T`=^ax zvMdm7?OeP#9208iNP_GPsND&SENq8u4nD~6pBcuw@>s{!c~e;f3;4%Jfp_$phOcb5 zK1NB@e^}x!-q7Nlzn1+8V6y!{rd>%h3p6^pq4tFUawL#^A9$u|`pwqS{{vuV!7woq zzc}W2ERIpS+l{sDpJ@8&j;rcT4%|y%#DTQFrbs|%%TLs^>7?*BGWZCd1mnnq zR`@Pe)u!cT@}8ckfGrxJ(_Z$C?038Tl4Ps%z6jB)CW$A}_u&ivd)*NV8Sepj2^hH0 zdzt8{y>MxDHWGB>b!B6MqD8-0Prjf7N!fV)JcOp-cm0P?&(KUCYx2#* z4%4BMl6J$o{I$CAqAYZi$bMRQ_VdgDKQD_69E2(=z%3-To7C4Z5rtSxIN_h!vCxvB z#n2Ari$8srqVn2Fd|G*siB2uMdHEB~$;8-f2aJ%o_M8RH;J-aLXj)Bxu81pRmTaK9p4#XM7@E z5{U%=nVFCABao`#f$|v$-ndabCC*iNwl!8ug1hvi*SLv1CUD4=)OG8I0#Z6yj@xwc z?MP<)t(E$hW+^1!jj1VOd$qF#c38>Sy^otZHLZTOf0t(>=pltcO?+nxl!V5lt{gGE zT*4?Hve*5o$$DBSnZ1+ih>KZ;*R6tfwMTsymF+nR3+c%B|M!5qPh5bkh*(kyc zs`yOm-SIECj&{W7avn7>c#Y{4eL_kzlYY;4_4}D9%}h4EG;=N^)!ieu)~U%rqkJ$u zxwoIkrOW((Dc(I|42;Ffh3!fVslQrxjTKS2{Y8X*tClH%Pa=%hX&>_iNol6yJ%Z7L z_#|BT6KNK&cWu3W|HC%cCk@t8I<2Db$S|lYVkjt3lhrTKr^SGMxupEP=G3o^MlF>1 zsT!Nz-;JO?U_$6~zfHIAU#SS8r5h+(T#yLV_Q|vevU0Xi!27E-;}ap|nEZ;#NrAnN zU+Vi7xiu(ya%fq32Ku8~F?>*$QIQ!ail9oe|v%KM|;a8(HHiLcs88MXjz; z4BM@=#%x1dk^Boxr=U(%HHf7YYtb>5#UPkH&+fPr%){i;z=eHgLA?;yP4!g=DAn4? zFFr_?d;5S3=1*1n5@ zI1%#Z6y|;W$A;*uuU+lWf!MWi&A@j#yROy?KaoI!eVMiCGs_;0RT-(oMZ6XC z{S%%fmSkz;H77!Du*`A;?N`q?6M!dVfgo;dK!w=Z*`2oweooi9tNc^FDxnZ zLJ8>P6P6&`X0KJzE~lG@5yz@uKCY^UVAd`d{Zn_T9;W-)TBP2?A=@=wQN<<5TE6Pa z0_Czsvj)l6p`U|<*pKv|py@Z)Es2+v_XWg@979iB-+82#E^0QZ0P5EP9a;5@tIz3- zkL%7XQ|^p$so-l3mN*1G^pL`}z-Iw@JFa#{1&Jdh&Ka;7QUqWUCdQc;91y|J#s_eAVZX()F>Y-Dvxp1HWKqIxo2!Koj2gwCb+~16?tcVq% zWVY>c=9~S6D_gI8yy~%4I`NgJR{uT4ca<-Ki=C#8-Y@R)y?r* z%II(mWu!8Cc*)xZg;Zd`I-VQ*hu7NPA~IH53ksd3%cpXHA-ul)+f9+583w*7pvSiu zGqGyh#HwY>lG=Dx!4x!BJ=<&2v-qspoiMopL<@pa*MJ1DHA`u4^$e@X#0D9ARg@g} zpXTHk%_G52P8=Q?A7O*?AE@4#X>j8C3)=ir8$TP~@uDIfHPaJw`hqQ3K^+P?#z)wu z#`A5qWMcCl`t+ZWN-EH^(s<0ZUdGud^B@dXAM4brv|-@njx*I6dLoKh#7Lw8aOa3w zae;%-pkOycs+h%*X4FoS^ZXL0wUaZ!5Iy|$Id*%3zaTjdOYg}0)+RJ`JeqGEPlCZ1 zMRlOZ*=hal(3;$LDC_O*Bd@$w`+H!4-={*6F#pI!%_DQGs_OttkZn?u!HS@OA;DX# zu|ej@0#nUqsItfK} ze#i61S*`s;0Ff9boYsj``u<)pi;#GQBab7632L$B9n|VtNS)&6Sumnsg9&S zN2G*!pn?a_Td7WG@91vFwubwyMOi0Ensh7SX?E>god2FrLckmd`ZA>;Q7w$|fu5`$ zS{}D(2mLJGHk_ug$E3}Bab0!sut$rGT%P$vw?d!&$=6L9&ZBVdKDW zL(d{t25gxJeOWCDd2tc^i2PgQhu5fGe_#O{JIR&Q_7L<`GTPsLpKHhClhU~ zdZ8@VPC}FB033u#-ePHoRc1>tP(vt2iSg!NmphQTJq{rw_aPD%uJYHvN^KW#pDQ1H zdYpL^Hwb)r)YP?%4(N`wDyM`30j|aAu`1G{J*WMoefH!72N(hrl7W^jH=zHKU5nu7 zZbgA@&ApN*ZuT#FS&Qj0a`;!Dn%f3aA<_3I<21>3gM=|%4{;mHw3w0Xg342rlmOK4 zYnZKU{r-7-F{esy$-i#h0KLXFw5SSOZh5eX8w~bM(?#LJ4dj4Dm8^*}Ou&&zI_h5x zL(dG6(g-C-=`X6+i&*Lx(p=zHPfTcAhOdQ+%3;1Q!ghg0jY!qc%zOtnqvw z5GvhDA?7rURh{lV9DhK!LeHirt!%zoh&c-DS1A)ZDF0Br$dRD+07Ja zXY~CDc+z(bDWJPT5(V0(cKx~z%j(tE=wI1Y;{iW@m>W6wo%fC;sZsyGt8Y>)Qq7d& zlQ)F0?(9=G(RO%R3ID%Ad8ugiCqTF`WB7rO4*??^0#@YhvqWx4v4}>=I#X;)K zYaIvS>IRc0;O0libj9q>8`nD-KJRB{XB~keO1R8EGn0Gf@_JA>J)8-It1lI$ATGP- zkh!bi#S*fD5g2qEmNhrfavY-y&-uKPlQ6Zg(=wey`$?woZA*2f*?Rd<-MuBw3kv_8 zC3L?1RuU_9VVcb0Yf8xJ|Kf2ydqT#MGnu}a^e zKJ3;!1Qw&9W&&-#OtESKI(UOqr~Y+0w&dB#3<;nlrMd0L$c(iDKfnI*$CZ;W!84W* z#S75V6n}m2M&KqWjcLHv=Yqb7vA?@Gz^I~#Mw)?TE1X5S_cxz`|CfmG>#~<` z4wQa*1V)SAa-uDo-aSBu!#WJXUcv=4BrGp?Cl@MiH$^zdQ7t_C3q$QIKCC+dK$1SNE3_Dm>Sq|Ld-_B4 zD+lB;o2;p*s3;vxtMIowk2GFY8MQ@*T;RJFpH?JG{baVX45VQ%Pf7Pwdfw3TNnoj< zNu5#djvC&_r&ggRioq@W=6B>c8DzK1fjuZUPDVh2K#uRMf&xx}CKq1y1SC;+o`%!K zuvaO+2X-HkH4B*-Bv-u_xhyA9hfXIBrrSLBBHhP8UkO~A*_^U6+ymc3f*@RqdAm6< zFay)$YU}x7S2X*w!)t`^Z4)M>@zPZO;N`;lB?+L8w2Vi*9ICUZ)ZAy~8R0|Sg!SS` zhiMdWxwOEfEg?bzf>_bFNmj!756;{ith8|>LPdA$KWW}!ylwW(&tmT^j=>|HGhfg@ zbh?4U+S)oYamefTMA%-(r}v|Emr;ah+KD1>!N7hTm+WJdylhq&>2+klQzTM->pr%6 zF(WjShuU6&HRclkEJ0ap{4J6s1zb58UNFD3w+5Lk6PjpR7T4Y0$8R%#x(87{kWj^R zvW6cIPVQzjJM<8#O9U6OQGHqRA%-khz)20hgBX6j6D0uFe*zJ`+XU6|X=x7@3i zyg_nb^tuN}dw8}W^tq3tgCer;%>Q&)Of<~PcU8Tr)k;VrX4D&f%S0~zi$E72(Xr7fCvfUuyPT5Ym~V&TVacAWw`0RMq74sW^9sVN(%qV3mRJH z2=r;)|2UAY#;j*Yt7>W3yJxu6Ykjofe%tz6BIBEZanY;lnGUl&1`dvU!Fc!Obl)Afo)?<)&gQFtzaB6SR{aAzQ)Dbr+cjBhpWD z`oA9++dcd2zl8BvdK_L?6_;c(u+o}#3kSg=|n~R`eg|| zYT9#}+4ZtMhbZdJ;4&r@syZLr{De1v@q|*MuX0Qby2f-1V%hjMhSB&;w5t0TN_)bY ztQfobSPg_7fL&IDT;cuJ9DVFG1FXN3ZG@oS?yz8)@++KbY6}@^xK}+N<2Zy*$&>j6 z6P{Ryl%=Jz@UuVB4Hq3CtH^C<+f>hVbwS;IonGBa>lBgJ6ScQYYU!LEF*4Vh+J<<7 z;elWdLff~8sm$re5qk>P%PfkmF49_@6Tt-s=&=lg^ z`W6mSIkw^z%HCD(U!8ro{By8G#*~A3-}efY0K!Ch9J~%1aD$9Hx~e7LWZ43Iex7q1Q&tNfp9&93uATENKD7I7t4xseRDd|neL)O$4o?z0LG0hZhSAv5E3?iTr0bI}(cq&Y9(Lr& z!rGW0G(Hd^J=TJ=Di5$7X8JD$_J^_E^%FfF^%eHoMbY(%(fi8>&gH`}fu-^u_VU)q z`$9h9-6}5;9ZwV>$j$9U&uPPckW@j@YZJx984lqa(~3E=Wz1IMTJhiWFg;*;L?cCH zL@H9wh{E)93Dl`midP+4J2g_{P>ADudNykGu5+iTz6Jx3k5=13bM0Dan@x?>tZql0@kEh7dfA%inAoRuqVaiTgHXPi^d-h1Gs)9wo z6s@q4Bnt;D#S9!vdG$=IMCjJ47)Z&iW5;dW(OyKCNl=>dbG;{oY$v{eEf`~Hkl$)> zt>316ggde;Np}IxyEt0gWG0}`_YRllrta8m({9l9k1{f*4<}n z3dzi7e_#^{eZGzOj|*U^A(s84k>-mZiY39F(Dx_-QMOWZ~9x@&)@BBUXP4XA?Z(LId9N&Xx~+Rq&e_YP@M&d;=G$DgoDAAGCx{w7u1R}({qrZg zs*3dECIJ_5^vbCxXnHIIg4pew@=US0EUQ8QCU-bji)*mZubLI@5Rn3aIEF4}_+!AZ zNxSK%4m;O6l*n)f1L6}AR^4Iw=#P(7E57OSQ8_WdjuJ2wS@Mu5Kd>!jR?}`=c}D=W z^u>=pT%7SND8W+dlwhI66wr4x$h9_q?RA0dZRa^((pva0+x`MS2UpL0empJ}$NpK^ zFYkH4X6xDgNXnBWY)kV z!?KbLA}i>(EUW{-PFb>uM(Mb8JR{vZx|B&u`cV_qm%-wYj%*0 z-}>+7-K-)iv~=FKGo7^MqPM^m@{IWy->xYj`1{_VUr&QTFz zjd(EfK)X#rhq2&63)@pFnn%6{J?O(=5=O7rTk31Nv~?kIWHo#0w!`D6dP+J4tj-W3 zWw@wr87(cwAu@jQ{>;w_yJO(m-fV-0;|$TPDXWnzyDo!IOGq(V$O*bZpN}(!-K>N0 zVK^b+Pq3Jm?CCjy55V>`{8vl*iLd5R3b9Fiz9Wn{aB1Mw!y3IQpgVHqVkAVk5M=La z3Vs$mG<^1B!~YieoEV{$pT|mF%=~{I>Hg?aR3n6eXzJhW5VwY6E_)zPu>V zv?(_YN3N`Yaey}(_0#KY1Pf->-7OWgZ)Oj{+Hm^!yIMr`E>EktbK(tW&v}2Q#qaMb zkVUw(#8EBt{Pe>1v}uGu$qoXbmXXZO;%S{)1dp@rRzM{~B&L_@Gmbt7a-01P1=#Fy zXtMBUc-?a6_k%|8!414#W1e;o?sRNg=;rTUMl<3G+*gq5=untlS|=;TQ0|b93J4_P zu|&P_>X>@?aM%fMn6JqBjllaEt2;ccBfQR@YnNsd6=un-EbEvfZ~KY`fP-D%XEc-@ zGnWYa0`qAxNk!^EKgoN@4XfKu&>GQ4c`lD;RS{R7Z5X0xlP~aCkzbemDKoQ;*2SkU znDTZ1IHT!-K}2-fo6FHcH>dTH`{z`_zk5+tdRb7IY#wzPgaTEP$pVl7A%mP(@4vku z*AnsGe)VaDeCB;@izTU3iOi%7P%~!$09dTvyv!5`V{;HibcNA;02z0DCwI;YQ7W4W zab`&d97Rd9n$UrnPYvz=B zJ2igms_9XMU<@?emCc{_W{PHO3dqpgc#RODiN@jayePnM``q{h`5W+Gyzd~{ltT81 zr^ZhHwuWBF&(d@{|*mx9?~_J>}7%HFtXQpq;{fo^3ceE5l!or1p}1G|+Lqd7-eP6uXoO;9sq zEZ{Sin^4~)@s}Nm!wFtcEjqXtl`{IcxFKIoCP08#fhj5LDKn4b7bf;?Eqi=g88hgm zgSIP;?kk=H2g14He=$+l;j(l~rNQzsG7=30JVZaDb4eLQr<7n3gB1}GK^sLO5}?l| zw0sOZbt2Z3LxTTKct)nOWc!F0M=xTdDA!Tv8 z-8rg%KWu|u`GPZxd|k|uaNp4@Y7FCaYYX!Ls~8CbVw3|Q8XQB+x@xLMgaWYV#8NyN zxm&$eqf_TNtcAp~*MRT_Kmt2WnTufFr9cnmZ{Qh*Y!jNTKp#D?9^zJA8o7LCaM--h zUbr0_cDY%DyFx}dnlEpgu8;2A{Sw^~AZqO|Ry;K@e;mz)|LT1kmV|ema`2@J*YV&9 zlaT3O{rPx~=!%U)Pt8%#n&I@^SJ~^W2?+oi-r0R}AahV69EBZg7dB+m^S&hvdC{*s z{%}U?1{?TW`EOw8pSHkiWN;&)wHOU`^GV-@oeQ1E!KZwZ<$}e>$z1d`-)jICejxLG|2^}hz}l_> zS%v39bkBrxH@wwI?;fe8qT3w1C?EWPFM>Ckf z^+ry8Ec*(Wk{$xl0tob9=mzls+$expswOvrAKYXfDD`^(Ux7v{SC*}O z>UOMFK@O+3-ZZ5v8kaNRy)#*iJkH=oO6opw%3J{`f*8WjPMn?v{p67+<;kHgy#bf92_;+e&3w z`nSVUuo;|>u3<)bm=Svc;gALJd|y&fHt2OZIrr_NI8T7oMOCCb++ZG(F@oq^06?VcGNPYkz z&r!q2*M+kPgOqKl_C$KgHPX4i0@w-|$afvdtH*Lz)*_i8T0Sc&NM8018WBE=Y_B|`V2 zLsp~!&{@^Ac9gwM_lCOXB(2QzYDC~((;HtT6%jkSpleJ^4N8&Vg(P+&K4$nE z`^t_a;Cij!(ex_Ax8W>uSGz5nm|TEt*V@{1y_Dd3CrB`vC5js^;$0h6&OyIy6YCee z&Jwk|WOAgW!_T_IqD)fMWpx`s4VdQh^ zH?xmxN~aCSg=2Ut60m|TODyODCtM_oSFBZjdUw675VwAu(+k0Ye37DdQ{He9W>h5& z)8XY*{qwlDm!SP`*?nXe^ULclZLTMI#V%T~r@CMM%g-#Vhn1`u4Qe$|(S+SGuls*U zR@mP;RA{peq>7R~-2FrQ?Eg-HYFPC*+M7>~a(RX^zdY`tmOX=VAE?^5#?3@48>2<0 zh7Scvr!TVS7;fyav@&nejmVcVKe+N*{39p*w_hi8sIBJ<*A%M-2cUJ4H297nVDw+6 zSXf*T!=WY~zp%sbKtG~7BCxZG(QUq-9xmXwq1i?~otUxS;TY`NX+F}fyHohSo5IYr za;?LBLZ=wg|MESBCLtXoK7xPdTdcii=|8c<_bYlxv9d_2P%we4?SK26U76yvFIA4B zTV&sb?*D)hGZ_r$j6@id97>*z@Ic_DU1dvW1Kz^f+81w_1_H&9UYz9SLyR(R&|?T$ zlFW7E+8bJry>OfhrVCflPw%@}Pw$uBGLP~Zj}EzedLOu54E;G3>rEL)K3Uv_&p33X z;)DEG+^_xduoJryOc`BR`}Yb=TbCyGeKdg752@%>@IRj!{sN|#}Wzn zmceL+;Z(GYCJIA){?+a_Kl#GC7cv4waT$UHvQ=oNMK3eB7=fdOTB37@6wqh75q@6~ zKWK1uWpB2+!e#Q4azYn#zykAp>=Y0__@KaBpcV_Z>R`8Tj{wuweFrZLh|^GWivW6H z?)rpY!S-5#w54>)JZN^6KzD5oz~F};p^NOH27U)g+4z2iipw})48Iu$auKzFiiVI^ z(ij~-e<98+yt7hAQnEUl8u} z$9RPSlUn9j0(oJ!`$ktPdR%Tp-A5rT3W?a`X+pF1dop#sX(&8$ zoaxP)LiXt1$z|klrQN8kqAIpOWApd^Ua)Y0oqvu}|Ea#Vn+}?l&X6$U^q<^58l8Tk zX!~W^G}{tJCk{TY%!R0Om4krd#@TXKc5*)s@mPbR*NP231Bag|^O2I+ zcfd$mE&`raq=Nk0c9OU7hO<}b%2;IHf2vL)T6qa1dL~|b=2fY^iPjYC5>H$xkbuF z9Voe`9RHyF%NXt|zVmN?@sZ%i!Q%_`;nYY-@{P9h^(QcsqXXJp<~$sSTkhiqnlsp7 zM9Y}owsW`)4~nk>Ya=i(1cIhKlPwAec4Sn^8o>3gSg_=OC!d)$wfgSn%%^3|?gfic(GVD1`1WL&_^-W`!y{k3gX`_>s6l)wQ} zp#c6&&}oKGKi|dF`-_F%Xx!E(?GhI=qX9P=^v31Dj`e1&^q)N2D*_ks!?wVkZml_p zO_f*MJYg!Hd=$LChe$4WGf|<8yE`VO&NW|yK2|6OWq5P5KJ$hP@moed0shtNQw=Md zcQjydEpMqx+jS8|cx_)m0?kEC!lB4$la_vT_=ccQ4SMng}%ly28 z0(UE#2CSIn&gaOE!7cETPd2F^54q31+7AUiAB}P*rCIXIK4OuJMCxrDpaaC*J~&e) ztfBpz9Racm&W{_;#??B1{(jH-to|WQ{6nln3mw^eIuIBzzh`Uy?a2G+P|`EDNJg`b zu5LLY{daS{k9+){al~-emUw1&_j>Kx;W>rs50+KH6Zoh%E}Bmxzj(6pK}-$8B=Ec+ zt}WnE%c<GR)RO& zjGlAYuby1^`tDlqdTx(s*|CTt{pt@94O5ORPyy6*3ikJR#gW3&NM=7|L~Sz~Mm*m@ zuoe_+Tt_ZoW1LCD!cf~-1;M7z z+>uOT9lzeX>@R=68y2jgBSdn`!_wM(4ew?lnhU3*uM2%8CeU!;mSnG@eV}q8%vL@^ z(0M*KY+oZ{TqOcR_Sqgy-uRHO;+-LWEe=6sHkuQ0>4eii^KA1`1Pw;Wit7?roUHK( zeIJOnjOM6hn_dE43I+Y{^#E(_(!{2xPb}CLdXf{Cc>Ma6Co~13c`q_CbGlPq77LEW z4%>i}Hhv?M$vyt(LIW9#(z-gWb9Dv8-eI6eEfn$qkG;bX9LFQ~2LlyCBlkvV$ZHJl z;N#%c{^?&^$Ms&!Wz*BIL{29-?ieM-#l3-|j%Ia2AarMioYauP&R*R0naU3}SvfKU zdl3;(v#t4~=}BQ5i9u2$0-vHudU3e!zPV{``BSM>nor~U20SqmL3l@sg}`)vOYq`l zEB=IOnEgV;bV(XDLmB%L`Xt(l4p!Ddotqu*z6!5u99z^yfZ?Z(^kKR$N~|I z<@yWKXxTEI5DoA5E#s~~^~0Q{=PNeFX#NX*pPs^Pf{=y}as#ES5LZ79jF!oBi{4LP zWWFGh?N~L@n03}9;rl}v4i*f%>~jNpyp3-hbARQnmImpaytzRIxg)dokv@~-@%kwz zilh)+VZ$Uovi__4VBH)-U{kUA(+uK^L&113%PxH$_Q|attMrrQ24Ge^t3SM4oxuW| z_dRaTh>Eaxof?RPYfO@&G}op8gqk)U1^uWQ^ZApIFbPinLEDWHz?F3>DukdH>!LN@$UJ;l z@$C6xLev8ltCgigmWMAK4bJL*>n z#0g$GwvU}#gqFnh{5@N;E918cno>YlYvzl!Y*8DgvhpgIfX|vt)nhv@|I^vAs&U%a zm)=mfje?MkUX*NR=W7Hv9d<_FefIdN_~3wxVHddvm;_X zxRTVP?Qz8`|1Uu&H6IB{HmRmAD^wifVVc2Frw;Z!TrEZ19k<|Ng~8hinB~zUu4y@Z zH;U7Q0F2lJ=fPTCK{Si_>|jav&D(l|_BAj;Y|pHQA}(W568K#XCfzcH(b65OkCNq# zuHmBYLk`udhp*@W8&co9a!y1vnv9lJF`xQ#asi5xuGnwxLi%$XjZV=5YC(*u9KnB$ zU$yioqe8XjbcpA-nem*mCv>y;XJJ8~{NC4~!uU+DwiQtm;P^)2vT|KfpsgTNAZ=o@ zBI+MJqfSz=Omg@GGx$q?Xx|oeb}QO?h#}k61ZBM^oKGs!*HZ5Pf{DA!;-MhOD8TIM zR`Nb9b!{2db?mwYcAJ{aZEBocn>|4?sh(Vy&;HuDxn}BRNIGLg3Od3A=6`an-dTT1 zP;w6_k}P8V}o$xmGUO03t?x0xjQ+-WhT+iCdn5r%l$0R5$6X zQSan2tCM^G7sLgqzp^i(=u9ya<<+gflt|~QMXlzb?I|@c2QC%-go25 zPAhlg?LKb+#?ZOOijTqa-E47*hn)R`*Cn!C=ER$vFC)^_gjeT15_&i%)-fJNPNNWl zN)cdp8m#Y2!exPQ$t~rBh|!kn(^b7<=r`zGD+IR} z7NVX9*8^+_&Byia4=rk;idGCbrqcGgt@Xl?Ie%+8pVt7N?tvUYAN;mq$f^(upFWEf zGfH^=Hd8adqJmY+?|~hVqJ1Gt`(nN6*iQ;{OCTX!@y*50=Ld?PIp8TtEX zNi&?}V+{!$gbJPNL3QEkYM1D#`(Ce1;mX0ld1FV(t#23}c&2dm>JDN5riVIK+f=g( zD$uoecflHqORMabswYDbLpPoBm0CEyu==MU~f4Myn3x^%~Q7 zAm$%`B)PD8;dd~oLft~5|Kn+Yduo2XOaf{H!K(9b8C*QQ?G!{XzpK=pN$0>gjwf+~`qo?wB?bNO>Z#m}I|*;63o zl#X1=@RRtBC^QxIQdc|I66m3W2;qpkFnAv2pP!5ep!u{F;~VgpIr8R%Y6JcWs=uBC zgb2;9#cqsbRk_e5{Ld&TD|Zk18F5%vf8yOGkg2mD)Kd$VWwpYO6Tw{c&Js*VQd+cV zbh%;|KAJRw7nNEp8#0!4vX*-ba4Wu73js_Sx@b*{0iYBNo3s>*r4~t5{FG}v?*;g1 zn@;wBEIWhL&FL8Wn|N?}I>`Nt-S5!aJ$|%pLIKUTy?7<=&h(N72$?r{7WkhS0T|-9 zo|S6Ow$6@MoKlS6){aCAdYcG0Os*@WJ#G4m!D2W`@RNY{3wofJELl%`T!)=z$_^Fu z%4WJ^1k(jVLN`kKU|o&yUett z#VDv?Nv_u0*_0S(Tz!VtzJ#%whC$#$ME|8pC>EseAebEn+H2aXflnA*I0RCx;B@{_ z!Ga*I%%T*H5-eEpG`b!q_%Zb*o{RdV`31RxDC;+-nBFNP!4A_}DaM2jD;|?h?Be)@ zguefU?Shz%V&1!4b@(fAwI))bCR|vKZ(#4)xy#AL`jf-C5ST~|&K)nB2LBfuJfD}L z81GUT8>84o8uiVa^JX_9fj3v*4893OyC2Qfi=Y(nR30>zY9 zYg@j?1kr3ZwrNcL**avnyQ9J;#sipCQ=p)RVq>$LX@zz&n^Vr(gkJA&FRTOhQm~S% z;SW2YRj@u)RD6O0{Vp3vcwlPJ?ywI;KVeAyeyGtfsV>PXQT7l*Il^HcT@d4)0`;>{DG2u z7WMF4U040nUT=*I!ULp8Vrua;%**qH3?8I z;6~pQLlNV?@BiEqf@r_GmSF(6Ky)4CM0gBz-_dT4I+UJtlX@F)i&kQN25;e*yjrmY z9Av~;)dBMQZythF`Xp{8ko0Fb(j&o!&J7rg7;FX(7bze;hO_@)I@CpF{P&aZpxXO^ zQQd}QfvSqdOa6lJNOnoB?7%_k^yuEX4En1YKm+a>BRs-_UFQOKLqIOP)LhO(eM?pd zW@#T%)F6o))Z#B+CglTI) zef6MZix6tBvmqj&%5~aspvfBRsA(IkWLXVEAS|fZa=7E~`( z)+|=u`Kh=tka}r6KS~O~9;;&-e9=0)gO%vd?LT&bF14U(d8v@&1PTV}1XXvcUw4NB z6==ue7oo%Zi`#${yka%zAgd+xoPV_%{{w*;T-|-lNeThx2 zh;qw?saV^+b^dEbkuEW;XhLKTa!ni}bq?ar-m_qA_7>nVx!q9yxh3{*719{PY)9WE=7|Fw<#PCDnuhN2PT#ly|jhIzeM&7I}~P11o@8^(Nn zADUL(8*u1V99JHcMfqF^ZyEaYk8eJw7yW|L(%vG+sTHI8rSOE}R?LQ_Anb*2u%dTC zR&ZoVE`axZ0v!?T_U}0;MI+<~g<&=5?7I}u7vZ%RmJF}6v{~Jbqa1cI!^}S!^`L`E zxas&eh5vmc9(aZ2e*P#d=uq+IPAkXxX=vN?-Nazd*C;4*!w|xyVxOe*PJ+~(umH2J zp*D7Go^0T<0VL)ms@uq|xoiekD#p~mm^!31V-zik#Psb?M4dk5r~7$-qtH^|g`SLY z$gb|!y!(v^JHR&=(ndv3}IRKzj8AYeeiGW*!^g~(qg(k*P$4v$jbK~F{ zZTEzLt276g|EDxW0OSw2^xs~P3(cc6jk5+*aoE2`g>Zd^vKFcqd0SdYJ+(edB$Buv zcuqXUo_Rj-rwWpGH2%#8HvQpbZBLc(%YOBQ@V8gpMU%F0WeNzex{+AcpheP4ftqU8 z_@B5qsd|-dfqx}XCgAMcy@wSVl|+J6NW1OC=h&02Ox_OR$=LH}_nFFp6t|0S{+=>l zv~Ts&(~5?6sg`mk|F6L+-_LbCYA??3Ew@&J4{a+xV^QNYy@`{j*=j_TD()>L;@nPJ zGL4&eg@Z!-ZBCENbh5G0`jFBQ^mWUTffK!!e5KvmP`WOVCW zhCdmb2ebQ+FV?+%e}=xf15ju2k29_+QL=e44IVPsp~Yx#=|QInbgu4>UP_p392;C> zXM63men9ym9rl*KVCw2$PI$jhfb7@Uz%i8lxTk?nf z%h(f@hU0=|0W-xP&N6pCnR}*zq`|kJxhh2G3qqtKD7jkpa5$N>fu>a3#EY?{wm|q* zqi_cLlV<7@GSGNL;%&L_1{4sUc}fk3m5g^YL5Qth0xa$mRMDFF?55!S`1<4L<1Vms zLX~f`*xOtvw|EMpTW6OQMWjT0p@|+& zr{vB&Bmgv+AxVtOi*V%SAl?Qlz(C~0+x{LwDz18DEBM{K7X|e0lBxsTgcCjDF8<-&#hH;g? zu1Or+v>p$#jZa|sLkdd>&0gG?`KJnxm2TTLv1&k4#vwEs3>~2(6(QRsNU*ZAg99qG zCotQeC8*@W(S23Vil4;-N41~X(h;AQ9#CA%QZavxqXOVcHto}POHfBi@9_InB(zvr z#av9H2qQk6|2vR)Lb!s`$zY`(frb4N=VR7Tfo!SzygV?G2LB5rwHW@HIMG-J$*IQty({R%P zY78hFae-&K(znf5-9z900npP2S4a|fi6}cD;LZ%eIib9AV{GbuF$0>^VG4b&<6ChV z!<3=M5y9P`ehOBVxI+U@7E`F6Ke}vGuNmJVa8mhJr{-AzpqjA-|T+TKIBkEQ7mIi!@=1T%z5)J?8oA6hwc88 ze0onb_){!M`hKz0$@JMnsLBv1*@7CpcA_~z!{L==CHR5oI4}cEA#CLmEVz{8US-!R1Xd&EtSS}|uC+Q{i?kGgItTtu zhnwwJoG%_LRfUNw_kDOYI46~6cf%12{4|gexU50xT7k%QdPSuLBHc-rdVo1H&Nb5E zsXqaAji>wz>X|MI^t7=dcYca5|2hN;Tp;p_Kb4y;>!5bogZMT@(`8n3Gp>(xza&Sa z@GQprN#`ts4g-SKr&U6iS*}^~ikWmJrq^wE>(1Y&_Tv+2U^ySK>?@UFA8GV@!rs|R zH;zFaUb^6!5gk76C+>Si+rVqB9J>(2e&;vQ$F1iZx4t;zO5XvsjFT)Ps6t+0-t|NV zXlL9`#`g|(cg^K2P z63<&Y{~CP(3q~50KlnQoKS^3)IzR5j6_-h<1o4D`RSCU<6Ezd!d0zU-D^vzggwPG0 z>+J$)!ibx-MgS)xy7g}I0on5#G~h>UkG7RK9*-d}tuNwVbE=DFLuP!JG!b_saMa8; z^iwn;cZo<4{-&JNHZ!lvx= zmIznsD9Du=$P^-j`@@zj0){M5Uux}%@!}*~L1Ie{nsUB6K}J3?^JSaGkG@WdvP4m= zc#uP9*S=)`(!F_;L@n64pBn{grGE_L)e{<1DOg#if$7e%wFQnN5&c=bsm~z{i59%L zAJx~nJ}ylfmd+W1%jpKQ|5=*TsOi=w9s2x&e)euMU3Z2*sZ*I@TvRB1)$bipJRG=W zr%|Yh3_B@ZTaWsSFJ zfK*V`3y@at%o1GbW1_TZ_`N~@m2hRMoiu{+tFB(t-ztQOo4B6z*!?#wxd8mc{&W*w zY9|3e;tqtqWGQBwuT2L#r=(;CNv7FT&4k$i< z0C8#G=19?du!nF=^|$o~{qq5S7LBnmOAt6a;8ceL z;qVhqG|c1ph$RThVO5v#* zgMt9&Rg4cmnic6#?5rqC;;l@b0XR)Erx3#s(ww?HU`GX_;s^PHD^+U}UaMTk|5@@E z%AWGsl>{XhEx^N%KL>&eW~YSr7w1~d|MpB#5aIrR^)sud|EGSY5;;(2pi}4Ssa^ry z$<{eiYH(a*j}2^Ut=X@;i#K(ZEr7MsPZ9tiR=sf}(2wi2ZZmHAYF+#jVhqr(EV^z(X&LJtyXIZ?3!3FXKt8|Q1G!yv4hm1whnONM~+vd=U zMHi}$I#=iu4T?bvI~yu<)SGudFek(?v#`inTML7W{bU@X5oo@`kSIE<=V7EE(7FOG-zBn>wU3LRE@_8j2-8UQr?m)TiOd3SJHKc1Aivec8>jL5VF;v3;N|_ zkK04OUlhAMt#8(a+^&UMjr5`s&mHCL4dAiJ#UeMOs6yn6JLg#?daGVx(};`nkDKC! zEc_DxFos1#eTthSg1h~1s0ZXRmsywM6v`Vu`!BP9R=f zz%SBVbMLIFIkobnRo4D9_WVkGvo@x$~!soMF64_PP@+N2yRJ6m3#pT^{$4XJ>V#RU#;Jkgyaxm|Y0#=)F;D$L7;yB4ms!-N9hCH;25DQ)A z96e~KGwZD_WatVUali*Ox}>-o*vmg4#y8nll$S5ha5w~`6$2uP;4zoRyeq}VxwO4DYdK^_{xpZJ5ZP?cX{ znk?=2{)+={FK3#Lx$=!XXvW6IMoJ6N9U4z<0L2?K!#o8bS{X%E9@$vvu#HdLHE+hd z25Ecm;?O{AVrReuBq9PjU-#}v%t}vF%<`i9rxkR^k1=k)_p@o&iL~~^q4%&^q2GV^Q8r&Dc38rTX!~{l$jC_e z!h#*RUpHpA>MJF87;?}e8VJp6BE0!QXzcsFG|!-G0&_k^3ri~Xo5=7=^;f;0@vlbU z4l$=zavB>O4ffB%zOzEX?rzBfl?BL;ye7rQeLOUEVXje|nR*LK@Z$?lely~e@L0Jc z@fGsz%=fYufvX3fiSo=~&6MBQB0#ruiqiJy%2&EjJa~4X$93!H0{fCj%r_10_smNd ztUuU3zbJ3JC8zW{*oE#h6d^VgDus+yz4p1@WeE?4TkzZeH?jWGZ=l!(8LEZ_J6ZHG zH9P}fGw`JXLFyCEpJZM8aQ7-&X~(xQ1uXlQS;mi5T{x~<75a3j z&ikv+Bh`#FLNzVB!!lR<%Ue&Iz_%O_e}+)NZIfNCGs5u4d#TYI4jO9M`^9jF#H zu$s{5vkv-gnVp}H^rgm*AG1bWya+Z*?n4!E|F$S*f>ZrhlMx$s1u|JBrdKP)o!mpMc z>SYTxe`aObr_Z8slOGKw_(-}k28sKFMPUvw5W5B4cSmS1=NHSkihVl8`=zFTk8ZQS z=ltaR$#i(>AxU(5FL>(P-(DgA{{DY&qmSD7^?%?E4uZxHCz4U$cW=L%G-?%NUQ;s2 z`u0`acSYbyPro7XyK!d)2YKLvkp3y0<{MR>j3S>r57SN!SSu&~m7MgD< zn+g_%SGCV`Ais5G@klVwlFN}RRYyim#BLef^E=ug%4+_p>jdE=k*jsWOa1S3hxo($ zvFSpwdw$r90zlZ4M8MAu4siX1S=UKBxYAl2G%m1uR|rxW;Ev+HgHSaPHP`2B0LB#v zdj5Is0;srfUx|0L_C4!>PZnkAuB;N*JFfZt0DwWVKy`=phzS&w6a|2Tte_*~E*Q|8 z9_kfTa2)*sx#o>ji1x2+73Oo^4qN!$1O;Kr;YNcmeO&?7F(An1>)Nqo;i>w!)-Si_ zWmif>hyx^+Z&hM?@ltPDDM(7-sS5Ea#hrr^Cg*JzYK)G>y1vopKCW6fE0{copygHJ{^{1sF>Fq zGQ7Q5|Aed6`+x9{4sd`Q`=8Delc1A{uOGn44=%?ey9&j3`q~RF>i0~0(TAx)8t+rW z@gz`3xhvFSTYlM$N=9hB(ue>J|M>(M!;-i+e=2F;4C;zCUVj9SVZpcet>T+EZ+6W< zbJ{Wf4gd$nx<%iQA(haMR=gMiR_pg%8V#Sf-gQ{=ph5XrmS>|^xvMM*wI2PD!d{cj z7nc-dwb8{7)ek19GktSEnvG45!IpfKe4a_=Y^^}xwHO4;TG%Thm7dU;RHv&ze}OLDhX6b(>w6eDtR)$R>p#L~QgHB*Mt;B}aEx!}sd>=?BF^S{^1xC~*PJ%{xJr%i0{ z0!toc5j^4&BnSSS*M#b5)u@T^Wo@9pJbh(Xg;-Ce6=^W$H_CzZ+n zxnP76mjI==`HKc}tg@CZG@q78m&d_I2Z7E62Em$YHqD06^6FTUo4C39=PuR;l^NIz zYWQmfspwfD1Qs1+P!p#u7R}}UY;|l@w1Z9?1E)sS)9({8*kP-U1j%V1l9)kC6r1XX z?Ac5leV8*;PFddoMD@(7|6e#pRTIrgA-CfYV2kbm86+_*bgd>lfiQG^f$G>SMO>&g zJscJfgBag#X@Lz71#8g)vmG&NZPCVNdYa~lKOUb%_VFH zqO}l2n7I?bH(03JvZ{uVL|1mql!H8k-_B?b8QR%-5({`Kad71m1AQ>aXX18wMCd1v z1jfsfM;DcG&u1&<(z&z`*uM@WLkR(N{8e-)K!7lo`(aJLMZy|Es(29*WIC}}#n*01 z!C8uDVFP)w+Ugu?gmW*FtXVGk&kLUk#lAtDEJHK-+P}dZFZ}8XhjOr&4Cl+qTtdh} zY^ESA2@rDoL+#V%Azq@zx^ecywTIGYg)+2=78C+snoJa|dRmN{DJPDuju6{(>5_jz zZG16ok@MnI$O`P+YJ|SZ0|V&1Kybcg2L9da??NAbb>6^#Tkp{gYI+cScSQwUI1Tfc zs5A5~h#lXz?F7byH&JEr1_9O{gtP*#q3@U~_0N(nl=JW)1h=I6m|L(U{jbqk&e^-E&~7t`vj;+#4y|zk~C8W?)Ube;DAWMhdB$9XWIf0Ho>Z_dxC@h zVJByl#Zio5(M2{sLk!@P<9><@?R*^uN=w>J!-nj_zOTx;h^GT=;YT$QSa7?_uE5hm zWm9+C`I*a?M1?%*Od)WL%=j$#6tz6+SqGHLu2*Mv`JNZF*;6wx2m}uj|nf4kDhr@1T%C&d%fc?mL0*82}iN z-}dyxNP@N#-1<5$IV&21u9H)+qbGAKR>Wqk2IByRY<=GwS`wAQJvG~r{4^8-l_rm< z;lHD4Uw+@yY@HZa=z%rheQR6cR%R9jy22VNYT|r1mq|ImwA?D_~2JcD;;MD0d|}L`B69wH7qH>YJ~eZ zUVLzNR*&-W#@f{`MM@*_Q`-0Mh>EO*QyLU5~5TFz%O6gG!-q-|E>Fd z%5%tH_B}RJ%)=FPdNSCVD#ZaC(vu-kDsbzzM8~v|UzeuNGb46XFiAQwEeM*0;n)d~ z>2p*c#uQ>4rbIE^2_wUy82LXT0OahrZI#+G_JF@Ey z5%rN}%m}XE%Qkfri!A0cGlK&}?bs{)enC1XsB z5M3Bk1wB-cTSq@HB9I$W0m|?MhnpzDc^*WmysmW7522vdhS~pIzz;S54N%VVl0SWm zTk7dx`mwTDZz$j9=Sy71@sIgK&k?wEvy7t$5tc*&?IS?=$)k42rZcvqQeZV2?Sadq zloKl=Jn&V{-zABY=%<#wOiNGj&x0MkDUA@Y#rt3AT}Q;Xr`pl6j~+fyt2jhB~lf*g3$5C2ASwnZ#{zFhswn*Yo{ zJI&ZV3&>;YwN`Slm&|`Rf2X5_P(!C7Nqg)t1KwAl6ks&BUdFLbw!_#-K3zoMifRQD zTYWF-6VO9y1*c{YtF^(~tKCwe0sNks%l~;#6>hU{nAuqs{QNk&e#ZJY$1yF%!2pGi==gZ=si`Ujw&sIM8$7!6fT2X1dcZ?mk0e~vzR66Jb;6@!^&eEH>;?c3+C z2Hv(18Jb@3kGHZ?qXkoTb$N;soD@jYgoXU4MnU69tf$ERSw%`~vV9$d=O_lD<{o&0 z|7wPmCCDvUcPulk|MIbLYK^=T&bURuqa7n_DGsTW#NCGXY~%l->#d`*>Y{hi{l0W} zH&W8wB@zmVpfpH#NJ@7~i*$oXcQ?Fr3y737NJ)3Y+4%j=ICq?T?-=rjW5C{PuQlhh zo;l~U<{G(E0#AH^Inf?3%*MTK^UDcCrcZx=#KEHj9Bn6rKJzD@Y5g+aW_=n!=lxQu z>oZ5MT*CK+d|>mJ$&K&$IcB@`lVD@r7_7K%#Ehv0SpdDEj8~tvyDFa)7(7m;^&d0p zUUP=+RlbCMockmt!WXy77o4i`O51OqBtr=c)au0zMuO3@@$7gfTVk4`8S-E+C)j1h zZzR=02o$ao)>Nb*0h(7=M!$YduO_B#aqDVXt%02{j73bjM}Ww>`=oqxc0SIu9qKP3 zf+(qT+~TCQX1v?Uct8TBfUyl@NCp=QF>pa87&NCb+S6FI_0N9ODkOTHI9fw+x`J&0oAp)4u^h)$k^ zKkDobt|Ydr%l>aPps>PD68w$ssqchesg0t*HUfnN)lDd6&#^P9(ItLxYs2v6=zx4B zWMoNibqq5xXMQxtU^cw8^ZGw1{Ktri@Q%Q{vRIxX8?1lM=&1gYM38G|q)*xkuI*SA9trA!F>sjg=frJ*X1S)g9& zvSAMvJH6mxs@5;gTYV(Dw7Hx926z_$u)XXcQ_2!2-6Z-mHB2z2t?$(im0al@Q!3zz zrGJudbv0f-$U)h4j+b^(O6ksvBHshZZ$dt!fePB(UP!s%v1{V`1^~}Ap;%N0^7?3Z zME%-v+w!XROp{m8{7VXJ5gti|)?bB+g=%Tz&oppPPxGMQevS+#lfKCJx@~uQR-Mfy z#b#!PFjDy@|4-)>Q05JiMRibjXU%m<0)R13K;xm^eN2Z@Pi1E^@2cqDoGY?~%|ayE zmTs7Y>p`G2ZJ)w0Rew%*|MC5ABi3Z!XI8tU_A4tYtonCMyxJ5?ddEVEY~P}%6km>6 zPu`%|9EHmdI=~I4X)aul_hRP*>eLtYpBV!+2~ogI#FsH5!ib>;!M+`v!7FK=o zSPmEzQ8+TdOM(hl4$OcLi9xtPf-u@MC^cL1^PZ}#?8)f95EFZ#Z`%yMkZuJ$5A=!j z^s&ZuYgHw|oD6n2@^x;;q#6%OM}s`T5Rm=3rS@ZCUA`_&A4ydH*eQRQcCd{2Ir(Qmp^&W%#5T6ohmVWjq}Xh z@@9|*lI8P`ev{c5_X?Ry6-=(C*Nnk-3fKY_83J|1xtOU@Xz<2zW5oOm9&Ycx^j{$Z zL?daz;V16^Nf|Aa_B%%oz+m^{!_@^r5-3L+%?L}<^F%6AMb&9I?5ciG_%i29ZY3 zbG?Zt#gNE%SoZg_F1Lm3@_x;g7v2P4yCsFtpqv?)^9BNA;TgBcQ1k_(m02MP?=ZWG zFL~gT(c4)UORb2Yr#bNy^nfs1RFc31k=wMv*>;nBhv&)uqPq0a0p|WXSS0+ zdf)hJHrk5^bYed|T*b9wO8masA(YNlVNDib+4Vj-0kVme%wR|RnLf=diJ5h6lG6n^mKCF8>HJ`= z1OdU1ByJB1R-5ZzQ?Ju2#%!u+3Ev)F-fZm5P?6o;%pHcwx}437&D`8j3T&245EwD= z6aCrER^EI@_!dTB^pLr&wxW#PQJ z6_JI^?l&GEmJY46#$sHTZvjL&fzC1MiLd1kB}^+HJE9d43{Sl&}wECF}(+=$V_vN0_aY|kc2M)%V=|u`06@)$rZ_g&a*$vXeqzO9uDEome z(`OUG>zrjvGVk4LjIReg1w{t(6cA0XU?O_=&-FIq3Nn07k|lTlT-(Jj z_n{FXlao%WA5rJmPGXtMae6a;sEzh?u_T(`_DH-IX@A|6BJ?85AtL$dX6Peq)?u9A zbnk?X7HLv)uCU?$J--zDsCur>67mdX;16@qvzJJIQWbA40+9T)%MihTX%hF6+XW0k z*eYVT3krcB-!mtG(dlkzqrhOuE`%DW0p$Yly@i0Y6AvWW6wlorF^LTZ)LbqZwt#a5 zKPexXp3bA8tIh+JtO|3FnY;9&&1Se{_rPmd^ukarUJ7pnw@AbNo2aXsye;GYBu{0bB67zRbg+A2*W_4xfDGe^ z|IAi@Z2t6!o`2KlAUGyAZga7Z+~~_n?zQWLQG{*5MV<) zr&}Jaik;3E=-^c$hNZfdH8`p%)B)uDW|hCZel4A zYT1t$AywO_Iq}2TVT`L-{X%o6Dt~7&4%d$b-xX2DYP>|Ix%<1b^FlNemK$@2V^)LG zu;c}&q~(DN_8i$98C*&gA$;`Q!4S;&cy|#4Do?{v(T=+3%lnHMvpzFsdf>R;p9yfL zL|z?yT86^VQBy?B84j8bUw|qoU59J=0eVhIasrAqBE0o8l2V!=DU8z>wJf-Mt}XgT z-SSsITaXMMcX^&4lqA`9NIfr4u=|GKrxphu()<{Ml%tHy6O%^sGaSSceFY_9oK<`H zEZZA$3W^VcyQP!kQ>F!geb8(%Yq=Cjb_0TDq!=*2I1+43A_vKSksI`m{UzsDNf52x zvG2)<%`a&it(HTvx4oBxdo}=U^)Q*h!~^QRrK2EZ;POzyFYE3s$->r_$~jWo4~3@x z+wR9J@%Ed9n&Zh9U*r_Ukn7W}qZ_Z~j-6B*I}K2Kcl_H9)7_?bZn$b~Z$q@)>Wq6o zbs{H_{`s3>wPAwKba=>&9u-vgxVnr~)kt+eJ@5B;*Zd7Pq}?lSaM=K_)oaFE?+ir- z2T)@6t-M_QI{}Uqa>oTYka-__fpjGzz+iJkSl4&m_G+}^uvg2RoygT;9a#sZ5Amh0 zL8u>c8)Jg4q0vg1YMMzp1w!b7mu(2WNR)_=6u*zN@IEt;4lN0;JI*rvRfu&CH zc3ovX_36V#bx#|OU|;BGjazXW`6wi%9>S9 zVFu{m@3JHf8*&mK{Vf*g)k6i*Y|Yj83eAL@#OFN169AYKP(OXDyV~l=#C11aN1M5= zhIlgr-CgQ{Oa6RH6S)QSGg0cC5GC;QQumuGaB@_mo-Ur`9e@s3HGE7cTDI(LXkFP&o3H<&oax}^UnrVS=-ST5>u84L^etdD=4Q7(T zoA1TkC85vQR;kNd zE|^ONFBKPVBbLDzQM-}d1>`e^UvMUky);`+ZLmv4%kycisz^iwf}gSk*%@WA_Z zjfneog_!9cfAj7ol`tDgX1~Dgt6Q>S+i3vEZd4Nqic)qH6xCAXg?Il%aOq=c&>`!y zex1XM^zT8!U;w zrmb`caCCh)do{=qk53fQT7BHz`H~v$OdUWKgAa=FX8@GrDbpv|?5A|?fPsA({n*!V zEdr5BZ;9#2J1*zkUUL1IPl069-Rrq}F!a%_BoJkW`ifoaFI)%esJs`$m{~mXri**6 zn1kg7`ctw3$1VR4!FAQUt+0-;ws?opLed2&`DY#~sQhzPD57d&(d}D=#NXQ2oT_#C zbUJ>ag}>kd4X`H}PYDz7XR#0C@cdRgM_H2nNOmI#oA&#mt~Y|u`L4uDSHeihh`?f( z*NVgPm@n&QbsvFv2shxT#-WrzGK1%*6}$r|Z4WltsOjMJ(`1Z(4_PD&S!B@#24==c z=bkIouB$nrRKdFJ{i6aOI4*vI=<^=rQQHSD;cbx)c7@8X z!>4>*xh{Juk@;3*ejIUNh4N6cFRNL`Kp%Sr3QNJAKbUTftMFmbQ~+0y}v^n)Ay%WAPj4(bqI{fL1&H7 zLvW==Es#jH6xqFqDh_+d%h5d-6HSIB0+rq-(DsBqoYg0Q=&IwbtS`zy@F#BG1$ zLo|5AG3xZwRA2HZSL5mf_CYazjvql4n;OhTS~bF{%(fYJLSgFW z*Z}8T{?=KmO+@W@AWyR!F%)`+m@3ttsfdsrdz)2f6o>dG8fX?ZB<4l@F~)&VGE>?; zcHj+&iHQMzk9U{ucNhM*_BWOVpIf=5kXOf^4Eg2^iR$HCwPl812}zc-d_FN#`u1Xy zR`~4@g!2V)QzXx053Nf&0JDN=!KM@yL0?=}~*Wc}XEAVhNpVehz0{uK?Ezxy@k@bQ- z3A|QV&?Ras2@L58iOv0}s? z=pK$M9+jU)mYI= zQ2+O{!~uNryUo>pCVQHQhE?*DvB8{m(P~=kE!ud4L2R6 zdfv1d9Sbgb-NLEHCzyQP-L5s>t^d&YxFoWAd~t3Iw#xwJnMJ*jcb0YUH&Q_;FW8IGR(!gCTrvkmNI#m8&l(lDDdo z&9sWH5i-4F=ld4twi@-&uNVo}4B9}W+k{l>=>e%A`C?&ddQf+08rc6#Dc#|w$cQZr zTgvUc>-6o#t#FFs+NRE-^oI{+*}HDL8FiZNdvrE;&I+6LW%I6vbI&7klm}Ea4PL03 zB4G0I=j3Z^drno-;86uq&nl}FehIq-#=rMHF;o2~X4)z$r@!afeg5DpdFc7f1R=Y- z|E&nmI2j;}@Nt6h9dkm!#Q6O0kGy|l6&Yl7acF|R9Cv+x2j>Gz!%X~6T8vSLq?cc( zYGl0;`23!hBk13r5}=3*HAGeK%JWSHH<90^ZSOY zrY1-?7>VHk&9emwjj%BHv0%!dw6);Mb%S>T0sv(U5nw+-uVE71aWTa6tuzAMYmQo$ z7ecG6-&G|!C~~4(lqIa0Xl1*Kd9wg>*sS_KdzjZo7+&}9ytDk;t)l?P1d|f^Ylh!% zP5q|=7$2^YNwKK>7nh>ejL7m;-w;|0fwbHonike!=2F?OVUpt*R z+M`+8+Z_vY2gvLdma=uKhsQLY;YXXcPg~uDGI+;CUAS4h09`v45 zKAIqMg~GTf5gRo^vY%J<+K@su&JOVI>%r>GGhsBo1x(kt;^Px>$WHM)@aS;V>uR+; zFFd})^5q(=!`2#7ii{6W(bDn4qh8-e(g)Tiu>x>gLi@jW_yAGgq&6}N3YWX{;{pI+ zZ$RpJJT-3I`jKW(muz_GVyf*!vB>^wD%t?~6(y&j`d_|zf% zP%!FS-7(ki{D!v)+dW->^`52OyEjiLON1~=vf%lMhpuaUc)o7*t<*?CiK+TxWz1!B zZm!RRQ4M0*4{G5>Lq+Ca7{Wfa{V{(8=O47#m zgEPs9p>LhXyuQW$kb@F7 zf7lu$P3v#L8?t!rDf2-e%;RnTND1>i@Wl4@xXNn0`*})}q{-*P5Kr>0E0Sfe>6(&% zVsPEZoz;an^rfHo=Gq|s!j8*yj&^Mm^&e_%7wkyv!?!coY+FItQUlWbl~CoOvb+@j zSvUL#6cXU#V1{Yu^7WJme9-md&krnF(j`FcJcZz6$=0`lX&tV2IwBZZKJ{Av2FwBV zr*8M0q?lc{uUy{Wo%W5?(Dy_GDou{1MpA`dj(@t}jwZYHZUciYO@|A|7c-o=HeXEF zx#Dq{O@{U!``4`@$(%n3K7X4hBB|y}VzDt$H`_4JMxoXfoWB&Z5mGgeR=?#*?gB#r>sz~f_`8Ujb+HigXq_J*j_K#tszo4v@ zsi{_XhrJqx3P^rw0>1ugB}-jr+RsPR>4Lsgd7f4I8v1s>VAZNd*3du4z$YTgsmVoq zyln8zZuj9}CFJ=bbciq~msI5auMiA!UPRp=nO%_miNN;P^7pr7y9hD*O#f~`<7npFkC4bcI#cn=I6n!A z71$OMKd39MDN5@@nhWFPOQF7 zJ^YY>>?|0U%Wd*SnHHbJ5@RCxQKcz7V88jt-sVqKod@ z<(Qp1zLX;@;M)Y#!Cfbt+ik|wY(s}(vRn*SjMsQjC}UE0;Ra(m9<2fN1`I8AO&L@{ zcvEH@-8s~#0xJ3sFuGSGveOG(jNfvGfH0UVi<0oQdm@oQ>;q z6rNV1&<|?ip?ho{hth%zsnAt62o>@t`EXb%BJW0wcF}mmwheaz_Iw#2=9S zDi7LCFb~IGfX|MU^Tcf+@ZU;#VoQ&syz;D1)(Yml;4;W))jE+pfxu(AEFNlv7@ z?WN&%D)O3?#6gZceK;3-sOyTBnB~FEuIDbU=W)&F)q2chQTOu>D-BypcK2kMqwl`M z2V3LA>4)@Bo0d%M)j1`@{!>(?a;${?0v!%TvkHHtlNcj^bNfIgX|%Z^lFySmONT=l zi32C8Mr$)1qcDgSSVfV{Y!qsgJxNcB#@@D~V;r-ru-|uO+6hf8VO7z?jAKm{7fye3Ruk5>Jneb6{FX|E+ z4@5M=|Fd|6tunv<{oeJ*JAoy))5Vc}W;OADD>4*bBcls$Y3XKvkE$Sej~#^(illA< zT!LPPdQeIJ5mw%#N9|ev=Uw}dfkSKDZ!+^V( zL8Ur^61)xYcYhMfI%N=5roI~RBHCi%fZMIf%Dqd1PdHL`{=of59 z#pb_5!w!SJTgF>I7VSM-E0f!sXG;`d%?}eqU&^RI4CNJ~On(vO8 z0(J-uCgD*N6?ZCY#F+Nw-}o^D5HJai#(sn7B`)#zua(2(WqB`4MZ5o_=N|{r%e&#H zrrJH)gkTy+wqVk5@T-gwN1%WUB?}Pz8xDKBEOnj5gziA3_{=69`4|X#mqpez{60vppW}x5kYnd_ot!CQii(3y`95#R#%p?we za9tVUQIgTqqhxPBDtU5Wx4mP=UTs_u47pb7pqvy}$hh1o;H6eEwh8R~Xz%YWd5R}C z3>mggjurF=V3FQ-!V5G@nSr(tvu;@_a1xNmc(bFXsaK1IjoX{Y;B|M(rEo0;o{tRTvC^%-&wz#MkZ=Cpn7{@IY10AzqWPtD5ar+l4{41=mU z5xQwBn6}(M!TBAg^-a0j5QJF&22(8d;+EG( z%CsF>4|271YaN@F6@$icg{t@AoB{Nb59!|1JAmKKO`GOvXXsNtlE4Ox$i=Q6GCKSQ zEdXE^70rHrbOr#_EAEkZ1-uZObfa0=^~0KXCgF96K7a_?u%D{&?e_wfe zRI>@*oGKMuBdv)gcEaH-vN$ko{2+2Qh}D7ArpI{lRC59|4uZyN3a<7`ZYZ!Tqmh|x zo^6FkyPfujV|?aQnOZ`Fq9de$WYHpW*Cn5q9rGf>`?JlqL^lT>4&e<}eO?oR-sglcv4d&+j>Z+@&jPFEN&9r2jubI> zW(z@V#G>E<4IUv?RNbN(stR#qJ-vZmoqM~QK_x*m{Av2PMn6rv9N&RnPGEuscyqn} z4B*3@)u>j^C9(fG$D7so!)P$+>7s3X8Oa#TA5v34Gkqtlh&jG$E2SV z{YYp)^OA($=8p%i{ULz8s;7|S-!a%^yJOYIU1Fa#bb7u7fNw8VV2Hziz>yjdoDg^w z=TXR?IXx8G4koPbZr*qYXeW3XO?QQz6uTZQMBP%kVT-sPAOZ`Iu)vi0;LYQ!@!!+_ z`r=1K0~?OI=Vc0Dtpxplik6ow)daAei)`5=0$i!jXU9!Q)MUB@D8HcSXCYC#p=L%w zDTqlXp z$c$a2+ft5wlGD=GQLn_8i zh;QSCSl^{Xf|-4A?w2u+jdi|B^Uig!F|)T3rG{l>%57MiIITA!8;ImD5whjLN~okA zV6t^}{uu{=`i&OKmhd3k35H2gxT0i_-#$V{tRa4?SeIM*ge%5L?}}iT-T>FY;-S-~o3vI8^Iyp>`50n&T-jSCPN1+5BPLD%_eTEEoK51`%8lhrWi(^qX z;OpMFfLU>MFYQ0o+5x}Z`QYZ?3!#2J-*E6X(Y0cBYp=V-Gl$n99b|qowOdIi$71Jf z$*L-}bLV01qARX1%_+z!6%4(lJyhjMB1!4JRs|RQiCH~9E_EyO`hx}YJYB><*~WW) zZrgnF&Ltz!l^39Em zeUqqtv*^>_Dd0+&>2pEADr|_^DlQStTemi^p__W@9ybUdkLo_X-c7N78@W?`gUY}P+D~NzDJKLHXk>Fu)UJ#!xFYRBpb{>e(#~Rp`M&K8?r^SX8`bX zpx8ibEPlb(zCDUQcpM;sUo4dZQrjYx{s!uDlLBE=Zwrq*#j$i~61}?Z$n5;!>P6)4 z4yO4r8l5*Z9DQ2j%Xh!KiDHQX9(10I)WPfB-Z9@R#h;VM^ndGKicu5|@#1Ti65r8C zh>D{j_Tq}nof&J_2tm;VZ;Zt^VAbVBiV970IK20jWlreg)9}HN&w~<}(kK64^*2i> zC+JXWHq&52GJ^dr@uv+lr5`)5G*;#!yB@xpvB0iKp|mEw08;~L6v5&giyZ$#9i2QJZKZy#8mc7v89j)W3@)TV48&!5v^ZWwNyuh)wqRf z!^0X9Vui%u^Q1-2E>zwby?#_AuyB@Z+N!ebLh=JQ<3<%5BcB{cQo!SQw5-sIv%K8M9toc*{=zn{`@mINuC$%!nOV;9!h4IeRumF=KL3^td;y2ccm-Cy zKNF|UDO&AW8y91nt46lvX_cbDB(ubT?u9y_Ap)$S_R1j`(Dnx9;sdx(JBhMwea>$i zJWmoKp*j;%4-bzXy$}m^^)UiZ6rtxcX%5Y{#eXiD|Df4gJ+WuJIMfv7kl|uhu9rOJ zNdB{vorT0xk$?XwJ8+*Q{OEmvSmsBrh zy?H^a14;iFL%mBE^f}@J>;;S6m4eFyUi;$Fr&pS#brMSWpx2vWS?#&(HYRR!Yx=#2Nw!QN{;Avl)b0X~8!IXd6iD$N1|Lw#%Dqz)vCWyzY7O3e=AhwbHBn+U( zJO}Vw?uiUS`~bg8VzAbLDycyo4$ghuJMq6xrWXM3Qx%8i&#b}!*2V;xfS-yONU0t{ za`BPKsu;|Wl0RibH^t%U@XvA_-)T*+C+2$14sIMzPpbocrTx8nS;_t2Su7`3{dV2z zUA$8_Yikx}W@fso_VQ@M!yiIc5Kz(5MZzC%2=}eZpk%WLeRNiGa+ORc+mgr~$_d14 zCU0E?#eJslBZOAlHavMm8^olaxEN^5A(oneKeIwOE1n4b`~)EJ;1w-s)-!hSz}}T3 z7BgeQOZGU!r3J04?e#aW=y2_u7X*L)3NL!kxaGB!nMpZta>D&6puBACMRiDGDZ)PW z98gWVe^-VepDiNUpFs>1Jb;1k&_$Jl*Wj#2QWa!+(TeIx9Ng^K9f96zzcWMt_=Q*F zj%4uQT`pWwKb##&I9%s#y=2eT^!pO#_oSaN32;9@zpS+F|Hwpus_S_^qoSgR3j7~e z7AkM_qW_z}wS@Uoqe=^{Kq8#|tssw^(RZ&LK`_f0??`fHb?l>7wcmfir3C$<$`h^$ z?y-5Y^yL0@U@%a~#uIfTnz3WAeg`OrmW4J?@Q1vh-h1$kLzP=zdjk&pRVRn9i`=F! z3qIvDKak})XPK+q$*NADh?+nm~xz>mvoKry_f4>v`ZLQ^Hat zy&9d)2>dcWTDB5qH$d&d_U)&$;ZTSF!f+5e@t(kg+dm$E-o8^~3?2-d%0Bn51K<^f z|L>Yp)L)@l?}I*WWV%UimNfu7yTNp3CnoxaJWLf!w38Ts6%)A*NLva6Hnq31-k3$; zS&6ndzy4|@Y8{B?3pUsjWYhd1mW5E$1SwMY$^?U91QZZotmT{B+;w(0V5v1b&@f@~ zo7^W^bh76}NnUh%yO*eyEf7R*E0fET3{XeGN|hNyMPsfXLW~DhGIAG3RYzX0o+~n& zNQv|lU!>W5dWQf$9DI+^#RTQkmqF_4KN*ZRM}gX8vdM-sgB9}P))x&X1p>*d_FM_7 z*E^x-wrQp@RW{QPw`CZjlyBb_nZm(hMfHmKF}0UpWpx}nq`ig%tEPcvlmlM}aU_;V z42mB|v`sgCp1F%A_1n@X6jsaF4;=L8C{dZIY0G*&bW`X7_i&Oq(-OaqY2y%G?1)9M z=2Q~(-j~Oi&-*HjkhOv-#vTXXntRpyH5|$?*H3>MrhPtguaI8F)38F%Z zKGtZDRJyh(zZXLQR<>Po%K0y8s39Fl?-?|JZ48cC^@;WdQ=X%%O*pW@nI(N6jzoJ~ z8wKZVh}h#qX2)`sGlBu{RNT2wx7gB-ITZGqzq^ofY~xtW^8)tG=yy9An5lXu)WOmt z+74>Ae%*w=Gn?uRs_W zc)3*VqeFAOp@oYYs^#$ihx6m3{&VF&)f2w5sy08f=ZRh<38a&Jk1e^k9a##T93IUD zkH}Q*Qti_jXn?fYH5;YmSI^yFi3Prs*RTUg^jJ4sFjy2$;AN*7`ssODCnSdla1;2& zp%y`7{*8lt{=37u5;Bc6_E!2Q<{v`4zi4901U-e+)7#SHwx07_D=)8sS@nBLbA0;3H%Tf(7~5H*pn;y;vW>L(nhqv<8rEn;*nMylQ3rOS6)7+5NxQw71< z$5%&g9C2hR2?P5-I~Gd(Z)0?_Y1w@RCkZNd%ar57NeIlqw55&p9_7UPEb6NwbinWp zn^`_f3@>1lWC0A+Lt;#*VCsxDkNPr@y2mFv2^Qq2{v$RTU5I|qY=%uPA4?Jj9(+ri z-lIYQ5lj)eGr>>}R7nqrff~+xh+CnP2^;L)0+{-aIc2jm{38SlU(k$X>=CT+s$Iysnre7^sP#A!Qfs?G+Y{clI~QQBj=)*NCW zdz`5(adU(k`|=f3G8F*jT;QrOVE!XMN8fsSR82R8k?F`4z6ntby)u22NMz8DZgymd zFST>nx@+unj}y7MY0C zJQ8QkW0sbO|J*AbzxfX|V89ZuUHkP;>)Ah#4YGEgQUG5)F|Lk| zY++F!d<4C4l56D^>t5SEN)X<*eRP43_E=U#tCWU=o#5=jffn~~Tm#ZCpEen6y~;Q{ zilqUSL(j@Ul*i(5bP#%4%dJ^A-;9=FB-=iI;BHI4RbdfJaq1Ye=TPQlzRRW^NAGGn?Z@ z(yd@h=cqkbHc&>X;+5(PCc5zTx4keEtv`KMmGp0RC|{j2XM#w;W!M|=8dQ;`MWcIm z+=D*&odUdsc7Zt`!%ZjA64sKc3nn{~-80`IBTKA3P^dn{L*U(wk!k7h z9mx-W{J}SwQ%JEx6Uj8Z!V((+MeO5?a`hV~v$cQA2Cf zrdb)1HCN9=04f`%0_|Dn4mEi*yYiiH4~@bOANx}iK}86rAqlDoZ(v3(i(1MH>h4;I zIWu4jf?C(_pM!U|UgslmoKvdE=5(KvuxyB)lsq8a!Tkp*Zgq|I$e^Et-aWl%LFU{_ zv-qH+!G8Z&0#M!>=Hj7%9#}b^i}a}@{K$C6$=;<1B!e$>6jUHPD!6T~JjXt5W~LYC zYhVq14J%vZ1%kf#w{HtW0ZmQa;Iu7vB%oBdk>W#6E*A3B#133Z{xim<54DA0Ptlvi zXJBsmKAJBw4nplc`uY$~uoB}c&N~B09(QU@*8bWCwYMuldep7K0_+c3U#Ez{hfXLF$ZAu7?OFnH-e~6{PSDHu* z2k5o_sw6o7v3J{q!#&<*MaGN@9@fUaGBAH+hJl4=0Cwi^4uZ@{-~&{ySMoTeF%owl zmlQN)BMIHQCECL=SOo9@sA=*KZl;YvWp%S7%a3o5LL9L!5hDQ<7vMo zSFzF?Qg+pAZns(_mKD}U#~rQP>V^ueWR$Ue?n!Ao{r!OktW(S?S|xwFHe$Dvwvpu< zD%F-=dkv-~pd(`!JlzsX$?BiIdatg}i{G;-+x(;^ev>^sj6P<6MSHbwtxucyYBhdc z-hShRG*%-e?dKU~@P0Y=^q$Qyybr63)Dc}+12-P+_c38iI6#T1d}twGg~?&GlpgT& zo$(E~r)BSZ5?f+-| zaH=KMVj*&SK3p>&`kJbhY_0tWz((EzL!5fp;6Znz7?pCj9dhD1sj?T2JoP_j_#q zdWs%#qSO9dwX)uy)mG`cdQn9TmbJ0o3oh6k2anKF>8is;b%twBZy9RC*yiN=1d8&o}rgEqflHeR^pP z_wfFa1bWO=YDMue)rom?mU(>7bv1T>*P&;t2aCToXxNHq#kvlyM~^+WaX3+_mr8xV zr)6H-e)D)E(C zZNtkDuH3H3G<9;ui=VQ47pLaylinX@r~Y(h5(x@WA3BA+9p z_vBjGyXH*HM_u?KQM{lM4%7n+)bYEcOcNw3`8>v7I|E1+aG1~5cVlezSp(kw##~#k z4-{Of!V+F0JzBZ;);YRsXDh73U;T4J%F338Xx#2Gdm4hvMQ%SovAr*=1IxH>zc#{& z-;QLON>%>G^X;dFOkESQT3>+S*j8ll(Xaf5%96C}Tz8o%MK7m5+QN+y2{I6yD0N*> z^dxHW#`YE?iOA~La_iw5-G4a#(oz^FwO{v3yVkP7avR4v$q`%e2P-OJKZ4$6;Fx;w zAk=Ru?H1rawOEbsi;2O& z^{Z0lcG5|x0vMBc2z(K&DEM6|JNwI!Do2+hFS3a^_-%S4FmzN*S^boRoL}K8^?;K| zc|r`UC2|dgn-w##?^b!Cw9$1S!rar0!OcLS*M1iMNftDS`>sMwZh!EXL9fjK4JANNP|AnS^Idnk zyT!38F2=z_&hlQDWBNP2DB&^!u&_Eys?gol_VAU2GMVK~_kyj(i$vUIASvdAdGC))i0Tce zHlG1N4LenE-zwb4BH{L-@HZGPdsdDRK&hCl0Ai38)`);eaL~H#W^oewaA_v0GGr>~ zQ%%tSwtkJQKryhJ=tXe>5}}y)ili*V{3i+k-!iJvWApX12kKql+Xj`Fv-P- zjW7KtUqVj{C}OT<61p=%nYLuja39d30q+=>i$3(ML1r3l}yA*LbFYp;K%Y{)qW zrW^Lirkn_^(CvdfLX|#fi%`{sUSETxy^CV!E>XOX9JSdmClp(XO=Bf!Z7^Af7v(g9 z8L7^low=y%+gE1kuPDD<8;o0W5$0P`L5L*33G$BL87<_RSGKJDrfcV~og=BCK@=Vl zf%BSfoX|dZ?yw6I1Gf(utIVMRRJTVPZEjGy5xMfc7?4{V%_x@yYw->#iu!$AXH;fV zG4K=#vio!+x!X{BwT(MCCn!*Ic>Z+L#K0kmxww5>RneD(la$-_f6=g$z&u-v*!Yab z?OP5FC7%bV>p@c}=ImGZ7ph0yP8gxW*W;)`TCt4FU$1>V3Cag6Cno|jqSb908qiTO zL%F9^KWi&+4V|0C|5dziw_CCx&Y+1u!LkS6}~acgzX{ln?y@%Tx_hSwuv1BLHmmCvs+4O^wNTcH!#?(PLp;)I+8olpzJ}2Y2YOEH=cEfCK3^7*?P%dtyl0neX$STOzwp8Y?B)Vanys9_&*zB*=+z>KBKPDXyXB_b5?Ep|z0p8P+*V|o zO5-l8e8$IfuSXumr62WvD5VX6Wcx^-o9SOW_I?iS2SxOtKxzBM*q8p6eav)W;~$@Y zxNk(t2w__rovxY^8IA1A-Z#FZZs!VWw?~M4wZERshaaLR`q07fVUSW^z-;x7IZ9)a#-0%Z` z&0@KRcBz{0_bzxR0$47L4r4 ziSvBR%dS4ifS~W+oHVPT97vc7eufdLadf*C?Q7luDsK* z96XvpuA!WI?)IKqy!e#T)~?g$JNHota_&fRZxN3|RZcq`4`bAFgm0O=|6E+z6VZ7+ znJ3aIrU42vxNBF-ciV;5rSA$Jc<#LW5%2aR?a0q{eV3acu_n;rA#3}a?-Ot44sKTu zvg=Z9XQ!tky~~wKZI?p-7j%dNT64{L&1+t3EiR_*yK~)? z!3H*U?uKuAN5BE}1ODlnT9OwvO{4|m4LcK=9*h&(rS5Y_w`fu+iCbj*l(7&@evfId zdmn32`6!yPOkp{QHeH16KH%w1BGC!slti|?R@iwgB`sQfA2gz?lUHk`tKHW7 z`hF&P<8ro6ak~KkL4$XLYsXS|d8~D{nb=vH(B-VXHppzc9I+i2HsguaJF@Fgv0P6n zEM!T`n^4mvXu_Kl|KL3i;$XIkwSE2!8YZ>lQ1Pnd?b22P{Xsbe=z7w17Bt9}^Dy1H zQN+u$_x|1kWopKAn290Dn%S)}n+7{0DWs3&>B{H%B12ZdzabFyL1Ec_pzfrzP~^`n z$1Z#O*n8$+sr1a`j26R3dp(7&Wea2xpZ+d>d@tMT_U=rOWAxQiL_g`yZ=bim^6E!? zlKShsJ@)qpO4G&12{qO!{dcGeu&t$o7erP)Uj;r%ojkb@SxnTFH|VhquNl$M5GD?m z%XvOri->yJJ#~$=Ge^==+n=tkyf$L{i}`WK5dwGW+T_Ys3xMI!d3ec8f+zAeb9A%Eb=M5O5r{Z3O5Kw>q2vpbQJAR<#*xuDnA&HP-oU+Si8 z4iceKh@oja0^SssQ~fAF+E!)rZG*%7!+48=7tZ`Xpi!7h9UG^zwB5xZk!S%v&&eHg zUbLZLq3qV21$z{(P1*^YG~a4@6gis^+w}Pxc3EzwKft}bo;~VNv)KHg*w;X{5i?& z$fGc5>@o=cK!Q^Phw_zGxu#9_lb-Qb@Gjn5o}9y*2F2ec2jq!tbk32gX9$tC9DIeH zxBkV20uj@4!OkD#tvH{nF5LrNp#4a1!UK4L~>hu3;_q*ih&dAIrw4~7MFIn zA&_;&lu#9vGa^yotQf|UmO}0vEQlzW7{ZVB^KVwhCP1GRj(!IqLVmOH2(tL~T0eaX z{+DKUCoRvBgwA{Ki6O(kHp8c}4GJ0s>=D#66Ck2xbm@G_HW};CqF8!zog&}UA%S8* zNS@+kIah^ww%|^0-3-$bMl4%^lLrmi!5STxXTO?V!5jkS->qno){QafK0pM_#75_bg=SueerOU9;nI@hnZg9KO<&$?H!jf zNcGzEojn5fK0Jc+?6wYqCkkyk@t0NJ6+WM$F9FD|1)y-Riv8q)GJx;Sl50?5Zd|~B zUmZtHa6Q9`;LW%R6#_vCGnk$_R&E(Nnz6uz5S0ez#F=t`K{PC_m9qV!)q}3(Cf$|2 zYDT-XvH%>j^BB;e%s@X`JuF5J**9!|=kUez!+p2?!_QU_AEC80lp-qq0oqfpsSlkX z?4m#@<_?~Lc@9R^K;2o0`+>=t?<3Bek%ihX3OW@Qu7v;VO-y)nS#V#4iFhEBswaL2 zo`wH1l3&N|7)9ivYG&z+1nu>r33_}6u?DbJ{sg^ zqMr<51K1U>|2D8zGV1xnyNDy#|nH1 z(6d!UXR;E$Xe>axjhn-81X-|r?s9>uS!SQcx1$TR1BR-Zq_Xz;Ao4Im8Wl$HnC=F! z5$JFBKaX-t$CzM@3)e!k~qD9H1ET^w*$8mHL<^) zP1Kq*VzxK7>}=$pi7vFmdR|`tuv3eAjZm>oc!p+xiN#k=DNg?t-eKKdPHn&K%q3Cj z@b5tXs-n)^T?NNM9A*CCqxHT{<4l5ud?DQ7Jp@_v#g#7PMNu}xI+CqtV~~ZRJ%|yy zzqd4Zj!0GhwzG-Sq7Wupoc?z8_d}g(e&>ov1dGn|6iGtMT#d{U7-*ss-pID4mDp7xTE_G+KbuCP);xr*y zu-5=^G_0M4sB}NIG(~X03>mhJy*ZvAJYTqB|0L(?I4;KjI1e9)v;fJ|5h+WyKZziR z-*Y=SUD9<29Xp{_2Cm!qh*x)!q=>q$RJV zebv&YND_eTOYP%#Jtn7bxw4}mrieJe*2~;G{f5(i_EtzdTM!ottHp9QO+cig7 z(q^eGFdOkGQiO3w9;2tQ_!|zKGOrsUz4ZpH#nrHQ(WLO1N%a|i`Mhb!g=ExgE4IE( zgq)OA&$eKr%2yD|!!UT8qwXV%7yf}dM@`G5|IHAs@$z@b^Mcfu-cMIe zuDOh#hf3j;lsLLQ7iA*^pH1jB#DMZflpbHH%N#bw zG4~cLTV)=;kX;fx*kvv`cA%+FJzfEq1TM{y6=Cn?75XZWcui%XBKrG_JV}*tum;&_ z$H^(3c~xBf5~sw<^OUD=Z8j+3yvxC~?^%7J+WYTTieIj8 z(s$QB6a4ysYk)RhUndZ?61&v}U#MQY3|jwi_a*!Em})?^6Zy3xR{t1hRd@KSz^(u& zQ&{`=?~KoXsL4n~ePezb&=vV(jBw>M9-BmC0r|GjsgXaF07E3qD@s1xw7dxdEzJJG zLqM&c*YPZkT;Hksd#jQ3^}V~*3VZ}BVJpKDOyjdM&Z?#tzEvHbF3jkwXzHWFnCpGUPru`+ zThw&V?Cn6y^mt>uDNBc)Hf!$0*9#`AW^ZwO*Q-h%d0RM<%_4HD9=^el&l|R~U_6GF z^(gY&Be@N=AfIEsU77o8=;$vcUCRtQ*@6tjAKk&t3VO;w#W44i_IUpOm)I{fG~cS~ z;gruXpApFDdZpR((P0tC|?j7nw2+p0Z@)P9xpfeRzHm zH^}X`es+FW-J;e1nK$b5EVuqwN43Hy@QpPmcdX-*(fB+J-o>?zwwCOdoG({_^>+@#I$X!JtcT4B33?w{j0P}k=zi4M^ZAr@<7a! zzB|#?EL;nt>*KjBt0wi0nMR-YkZVrT^z@L&HW%&eKMu$RYy71YwFrYI=uav+h<@JK zSXDbaR2(yJOssGH=1(qe7LDZF<6V1*^C6&QAynIHch{OmNV{dKYs4-)DllZho?ZxJ z`dmFT)SD;LGP2ffjHN)fx0*&(2>G9TXBhm5M;d0jc06KU4~|*o%3DT?%LWq1$b|?gI(?J3G`!iqnD)J`-@qFyKO_Mbft!!s58hx z)F9VGN2uNtMY^CVA%dU@4C^cMx#{`Y5>7`s^u-SrEh7eLHfb}|)a?Xkho6V+k8*U^ zYZI!sh53$7uWlN0Q4Q#}eiwBPLy1PuZx8`twQaqsW-jIWXJjStoe$yC_tzC>bh&I) z+(oO+jztM_4)VyU*omJf**r{(OagWg|A+WKZV>a4GnCy{?jI8P=*C?te-{TD^IL4j#Y=#Si9b5(FIi{{)RgQf3IJyWH zZiGihJU!L80*8_W&DZ6Oo<>>p7LVH_a!iM{Lq(7zfd)@_1-5Zqs&f z2~Br%^bVNjDS*LW2I50H8@{ht&ll_popKtTmI%)^W1Q?21Ws9+o-@Oj-ciA7y|NqR z4o8oa*AX0nt2~`G-=)(IBo6(S-;bm}VaR(688D)Y3UtN1G3W^P{lxqxdAQ44c{lMl z!|wKAMZyuWa4C-Hyxu^3M#jeGv#x6e-)|vx?+0KyR7hP zRl207<5bHaoZESWh}gU0arDi)hdi(9J`nq2oV=e%MU#;1-XGaeufeD2UCo2Ky8jA> z0Q3M=^|dAM z9Q#j;JG$PmwWO)*QRw(c(?(X~uLRL~cH#AU2Kh_+8>VNC4&J!#OdhC4GjA))D&y?z z?0oorg;E8dL~Aj^aqQ@x!IW_&6t}cw0UM%l`GIjXsVg2aUUt~f+#1hAc~Q?hc)@P0 z+)9>CFx6y)v#Z62maaFKn2aS7+-ux6k&7QLJW1iBqL)fTmp!0R$L4}L=9P%k^3x3Q zrdsKQd#0X@AT&uk&_ftC;;-Czb%)tOceP5nr{Z@{TBk0$R*8aK?bu(3Fee@pE7P1Y zQV@~{eU6kvZxJT66$nz%qh)P&k2|EH0>?ch^5jFlMMn>GvCibF3co_>dTwH22W8GtppE3#3iD7r=>xKp8WaZYwoRyvVz8e`H9Gtcl825!Fkn-8&YW)s^ za5pux%~8TpeS+mLH@&`p|DJ&8e?0GD!_v%hr3y{#6?w@~vQd+C#tMa8nvHWQGPBp zxp##07gVMSExP=)NobU3uP)OB+{3)zVH`~dJcIBH2rRFz#&6c$&c^_QKMQ4kh@KlKqL0`<$uT7|jm=!N&!?oDX&haco8C8(& zJ8@vjdy&iUBXXX&*o+eRxDJf9hX%({u{7&H2=6$`vEhkj)%W#n6tU9cDPsY%PqSG2 zyM!$jo3v)Ew1i%lZrtKLk8}0oSev4!u%yW4&R~>BczFF4X=_|A25|1`24ck=g=+N- z4@hTlt)Y#Lbg*eCzbz9t{4TqS48s}$x$}{pNmhIT=4TjMX<1o@M=fXcu><{K&Y5Bd z2}2iw;$;YZBmy5N7`yX@Y&NO^MZpt|Fg$wkz<>q?J3G#8-|E-R)~t|MPJ6KZGQ8va zZY+a>dBajYmb$)0tR`2UQ?>45kb-f`^p}m(7haa*IeK$ig<5!6Ekkn%M$*Ob*74Y^ zEMq#w6v>i39M$QGnNj4L8MX21wQ>`kFcqhXd;RGOd_Ace;p$dhU$nPeqan0!=Md#v$t*|-N z4fFJ}spcrQlh?bSs{H(y6W|;zZS^D*vrTjsBMa{}Uf#SBDXpI9#wug`f7|9%2R#YY z!*C@cis*-0t%Fynv;>Xvu83V&AI!6SC$k3lcL`f%i9MbmcPhJ*UfJ0())uONe(w~{ z)>eI)%WSWNopI@vz8IRBNh7KT%_r*2W4Cu^8`JDeuAv@Yqke-kfq}KJ;=+pHZXssv zLtL)YWFOy_D7-%NM>#*7$@?O$Q#G*0{c-hm5P|*Rr|U0YByz6!{eg+@A3LnqzVx(p za%%g)&3V0!PA1~?p!#v=lS2i4VG)&_r}`Df0?&lb3~kK1({tV4bRoO=K8#g)B;`|BP!=gA*$g7R zhr#bf72Qp_DFMtUfyage1lNw%*3_m(3hL5Vnomvoj&CEH!T`Z^#YZ^=?;u12YK>Pg zZVgV^{aLKYrNwK}G1~kNkAkB0B6#VJqj&rvtWTrscq`!9&a}M`b+?jMmo+zuJw84P z$*%&F3)9SyH1>LDN{9g>Oyt%%K~A>Dja!#Z;uYvTJmn60e0Nb8U@%!jl}Hn9aC~3a z{CsL3LI1*10UH&%n;!DqrWIacF&E-?_S^W{ujtFp zr2J9N!zu6md#s7PRG?Yog)?7(9GJ36DDsGi?O<*-!DD|23E_9T!nbL<6s`ghmGe~S z9kv2ykl6wmW;)65SokE1pJ#y`f3fszo0qA&;XXH5!g> z^xV9j7ED<8+@KRiy!tO1NtEDS|A}`86~L4GFZ#C^QfEIRTd9RlKS@JCzb$QU4t)(? zg8VAc#*>!DfROP1XphLGmyzSOJABKK=EZ^QV==K@>%xKR(-*_E`k~|W)CtS8iV`^9 z8aLL|5;}!;;GIm+uF7@T0Tg-s_%XmL?{Yk?Z^~fs&?I*Ep|Dni^uCj)THjqbwkC=O^Ty1|u|oXA z$;`kYhLGJ9nk3X~-v>^2pJ@{%i_HCCxf2o)7-%xB3~<&DoS`8l$d{d2%$7s%@yDdj z1OTxP4Tb$G)@1EAB8vDc^FPlRkt%c%h=n?DOL)f@iJQ4n0_fDhZ;Od|j&1enN+nmn z&uM8m^`}|F(obDhyzkgt;Xp9lF_w#Sgnv|kQ*mNpac$Ir4P;ie75v8QdZ5o_<>X9f zPIccFYos#8piR}#egO_Egbq*DE4lwS7+{Oph=?~HR~L68BO_&%luVJI+s_dfrqjsf z?0ai$=f3ZK5!y|8C_mJz2@A&WpfPfZ#ys5bHn5OaQQ?fr8Tzh%=FhmhZMBI6Adm$) zUG?$Rur&@NLlFM6AlD$*KY$xRZWRU!CJMO`Bd`{K1a9*C87C7qJhJo1oPRt|X?N=i zN*9lgiKGE7;x>Pq7CWfQ=35NHDtd5incd*s@0ms}rS>3s-ep|dYEy<1s(`^r#lgY6T|du*Kct|Y10rQZ}tsrB;_aG9|icjli|Sk4DrI$GE=9kW2! zS(W%qE-HwR1l&)Bld5+OV2K7!aDf+N7$mQ&6wG<8rdruCk&DL(&+i`Z`UOL|nAMT} zYgR)1pEeknC+*v&F#?Wzi1ou_lzAjrD&_;cM`+ z-kwT`YDiR@vMsy!pH5qfh^jHeOZzZzI6X^E&;Gi=t_vBlIuG^i)*DJ`?h)6WCOm#E zvDY(Cz5YXIp1xl+$URbyL%Hzta;mWuhf-n8a_TG_h#*^bkIx)1OJ`$C?LqX+lzWLI zEs?c9ZV+bwdMcSFX zrlLaM)Oz(eEX--@RCN{)*CGR8h%*v!SM9_q_nwJ1#DRV3m5Z@XF_xS})>GY}kj~66 z7FE~yXA&J+410k+jZ%N`hCrzM6d@$IUNGWYvckCux->3h-H?B`0e6zEqwPRd$#QCd z2HKye{<&$*X*pHV<2%O;2IUh)siEZhkf=-%y}jZZexcRA7m^Z(S_(SC5pUFGm3Wuo z+nrre&=0NvCd# zwYx5ODPs`$+*Q3>cyyL16zDF%_8-F_GZF>0$o%&}WXY)fcaG!$TQ2#aY0YEj(4HUs zk&&UU0(7{zwcV35#QP4;*%BPgRo958D5-~ z*zF~~%6-aIR4Pwk+_x7hC@6IGa&+5&1qMG$U`CJe_;D0;H}}uWW&eJ8@>*`PNas5V z37WJgmR8Rb%RPmQz*C!4Zd=sGkb5DkuL#RnT{T`C)b~l#H=nLD*ZtWpOV7xd;Ml6I zQAroSAJ7kRi8)ReuP3aq9KR%?Vq#=Jw&%O%ECiabtEIe0%Aa;6%_TdSCdW6%Tw33Y9AsVD_<)SXk)Ot_8 zBqgQlg9$27ZNJWzO3oSbSy@bTLn$j7A(6#!9~0APN*_>$)qF}yO6VeF1zE|oRA-So zjp*kSUz}r8|u2fJJQjigJQ5fZgq}vN9zXtU49py$X}D*i%%i?o+2nn zpBIE|mxJYv!9?s!l#hDA-$r+t({*SQd2Lcmr?xZa+r*xJ3r*r(Uwc0n0eXf`IU&g3 zAA?+|3WJm4Xf7Z)*l6~=gr!8&(2$B%yE0QP37dwN)}$^K@BsC_T;?McxZ-KM(v|rH z0xla*gq-2IZolP(#f%{jw|*M}IBjQD2wcL_+ALU2wQD|o^Kjn4e1@Vt(?`n1-3|Su z9lX8Nex0R1mgNEsd~8=JG9M!C)ZQVh`aEgycyA8x^&TE>Z%@&>6wk-s*+`$yJCn8j zqh^=NT*TM&{)L)Qwtg$mt6nqE`orNqHO*751O<=l!8?iE7Lpe&`P}B?L4i?pM!ZB< zR)f_|6nRL|n^mar9K1+?IaAoZI!8IJS6yEj0tPb60H%fVY4l8Nf3%-k!0z}-<;U@k zA%kvZE-%xTD6}z}m>>eQO)w^*B)rB)YemPqXEX-~Q_AW(zbvQfLO}cQe91-N{3Sz?KS9g>cSTmi_Tr*z8lpO#+m@O%CNKVBzA#v zZ<@m0T?m{T5;H<4ArX{31zpd%@El5ZMdyyJc+eiGZXFn|ya@Mxx4g2Vc=GZ0p)qBj zCzYXMU-Ut)Mchy{yMF3#i}6F3>eN{FY(Fe7zk?OgTu($*ZFz|ey~65I*$M}VqQmAa zZstfwcbZ4nahmB`->JQLXUl^-=qD9d1?uo72Tuh$)#4pyF+0K*@b~=_K1TExFcw@! znOc>EpwLiQu814^v?R_UkLaX8Wo2P*jR{5a&@Gzw&0j^{H8K>|8AAgaye}!^wr5 zP+yl=UuMNbWP7vSTIbtB9pA7N3gg~Lv2u~HyAP8frPg!JZ}U~~e6Y!=h+Ofbz?e9e>Se(^?$Ym9U!;5_Q;t@TYFn(;=!Z>SuTo~`NWy2{It;beA^)aU+#5PuZG-dz=<-KW`)oC`CYYaW4zo z{7zpCGq=r1EEt+esF_V-mE**4uU9HZs4QNy$tFB_W3o(SWP~GD_-t}T1c1%6A6kvr zRx{3YtCs=~jZ?&(_GUXX!yRw?hJ@F8D16LJW16$Sh}eAc$Fr5Lu(GS|>1-(MK{tDs zr)-hn!+2p6tytH*r*`j5Ypc~?i-nPky#%i12Ice4bfva{yu<^AVth!oH6r}{{0@cZ z>a+f8dM76*55!>HRg>{Eo{w*bKZ*DjJ>zpq%TP?J-anu>+CO3*OtNWEa&X{Q#vxI7 z^@_@V{krX(y?Logu#%YboVd#W%X8xmOvqL34m)r#Bt%3+T9qGL}rIQ3l05z-(CiVu6R@X;n~9;uwzlSPC?C} z!eO}V&G)iAR8PBpL~}%+o@5&upr7tc$%7c-hY<2!dJNbp*5>eQJI-NIu^>jVoJPSM z9Zhc~e?Jo;FA$N6t>+K{;mQUhCk0)ES9JkdSu`Ji=bLYWJX>kOOWE%5m$_f_IVuIk z9+tZof4$Rg)$vq~Egpm?U)`)fwg}AIOs~eeXeL-^o5b}n&y3$?|0(-J zZwj&IQ4gW_RKamq#j^kuW%*NX$$dS9O_iH4-@hMdK3yIZoHth4Ad2|*kB(G_9!H=?F-Q3T*o?XehsOb%bY^U5R7Kqi z#G{AYyFb-hpDDKZD{rh&r!r9`yWs=ya8>?0G<=fMl4y$?i!TNfdCsjy*y9IHvF>Wu ziQF)-Ci1mUO$A2fDsj0F=_sWNO9JcmX4A%QIcFEmRVyF_Y(Y4YUwEmd^J%hcG~>!} zG`zWed^|RwM`mp(MOi}P4y}A_#c{B*Ol?uE2FHYDw^p%^W|j5*E(43FRGfc-SdB;G z=9eiQZofNSsSuv2zaSbyisUgt?E?o&s>beK#2u_p9^fVO+j8nIV?2LiDXXB+HZp?Z zqb`m0ek2n1#a}vS)6Al@QfCl=t7snUU*F<4o|q0NbdM?H7!1u`yvpr5+_1tmL>A)sBJWsIP)#tS)%zHD^U=;F58GXD5h`C_!t zJ~zzcXxI76mz|ETyT!Wo;5$5SP zDD7JIC0@HUz|&lm(*jUp&w4`w0`F9XIi^20d28nsI=~JQ?&0AjeDq4GG+VLEX^Al4tZ3%GJAkQjI}HMXb#%=P~bxbMcP^9d}yHj6~Zm+-6UXj~D%W z@i?AfB?~#Hip5=bo_-_eZfJg)Be2@h8wIe}QcMK(lY_%xG7+~B*(mR)Yd1Et% z=lBV4!|lCV6$m)f5zhxqf-#nGz@17M-=P(;xibx>!>99oTyWrq%i`^6GfVD(bBPe# zRIxh@g~VDa-0k@!MMp}S#OnJwq3jAV1M;BG$_|3D z_FGz7)toTC%~eY4To@+8#kKfZpzbV6&J`ONmGkL%gF~trL71zQQdN;wpV}_fbSMZu zZLa)kAORYi7EGWVIGhLNsH@3I=H?g5y|U&`WSO~-RS5BEZWap*!``$rt}RE2O%rn7 zYT;Y(>h4lZvS!(yWt`*4S`#;-s~v5hOTn4a&DF)26g5G%nL2IySa2Fw^cowj*^pFPKdYP42VZ- zjUzTkr`nm5jb`ljYeQyxvlmaWsyqa4Fd?XY(X9qDwekfX7j_VxI{Z}Fh1|#a0u7Ew zJ|LiQTJJo8fTk1n2v*OtF#O0hnbVGGOyz_2$%7skI!lgG+jF$F?fvB5r%9#q$PPxh zDD@ED-P;?n;H}>`lG*JO-Jg|4dWt%zU15SaeI&n-o}QZgP-N&J6GOAcAQcw-o|2Lh z?E0r?;rjHlFQx!x|3s1UmxqVPJxomK0F}qdmKv{a+V#Z5gg;1)?qYicS!wg`&$L~< zEqE6L5Es;Bn|IzFDUMAk+E$(&EZ|_k2kVciw44~6d+4K@tAz5%P4L&Ksf|rINE1*{ zOfN2NzifK?M`q3I`$=tZt)s-BY#^KWDSOyIZ&9b`S z5zfZhoH|DHX!ca8EnX`r@6xVr(B;Wi&i4As%EQ^7a8qc4TEVyuWixwOSsC}oU*BT9 z*^OXg{Vv~URxGD0zNVQC4slMbI_+T&zTBH>Fk!}{S6pf>P7$c_CNdJe=o!tq4R_zg zV%b(!dsT(^Ur_hQ=;zrzCPEzVeXXx2O$#Si{_x?Fe>PtcL(pL-Xyn6p5V0E$-1_YG zaL7dsH|?)FWczn2{7cx`)%uwG$s!Za!pH;+HQ_Mal2YSd%Gy|Mn^-lye632kruD)? zJDYrM`YRO>xBmLZtPUY$eissfByH_Z3&}8A$H>zyAbh_*ghxmy)$VsTR_7>RWrbkx zw{qC~6~U1f+IaJ6%Gaf){%GO!k)@Rt@y`-w&AS@9$I3{Q#~=I*bA~n*B+u z%2El$Z_U#QyHs-F5UEg-(L5vfWy2Lvz-#U9CiN})43b3<3Jp3Jm<2xVe>17yovDPC z0Q__q^G5h`Lmc=V*~IHp?5$Ri%f$=3G7&IE8?6mPIT8jeXUd-`Hq$ARpgn4Mk4KF> zD>rckIXksJxyePNc~sY=o;TrghPZzMmva-0SPe2G{)$rsn~#qV>n_?%wg3LbZVefUJZgT)}|MPf!59q^Rh8 zh51~NTEWE6JR^T@brgv3WF=;rr)b!w*tLS8;bX+yy1g3r(gNH()B?K&^4RCme; zgas~bj2Ho2CON^D5*S?H*B$un1b?$Hu@zlm3n4;Ok^*2XB z@LQd(wBQGXHt~9s52p!)-<>yvz`Mk_FFG&Q2_}kLt9}Q=W^t;u{hp9>Sc;JIdmEc! zZJRK;3HE}T_X`q{YJueOUcreqfXy z1ejUQ9ZZT%{+c|OfWV_5nUM_;TRpO3#WT>JCdYn8aj1=#{2i z+}q0m1O_^ldNJhA6JCesATP*x_4UEdJTxvVOCr_lBSdUCK6XiVplEh(PNU+JC}`a3 zXtw+<&;ws~a1=sm{_Ds4x*K+3v1lNf#_(<)y$#_&M}p;XDeDz4jO$aZD+nC2&8Jh# zCq|+ORNs`(aC%R9gRc)lNKTjtnC~7gNvGKfaz|HLX=zu@K)dmgN1SfJk+cV!x`)$iFD7X*Y-tx}Qz(AT=RC2O{hX*PKHbvH3 zM)s>~uBNL61B?D6@yjE)Uy;J)dqU~3)bx)rFDP6~(P-uH*SFz0P#fg?RQDYHuz4Ze zi0|K>U(0zse6ST!JUCO24>h~~67I~{bm4>wCWp(x*Z0C)8=EuJ{&8_c_GZIbrlDH{ zSFVI392_BDXRK}~JE<_Y6hX(QjEsRG$EY*@gkXP>DfRHewJZGAW;_vR_6N(7f{t4) z-@hK&Iy<*_cPE*vHg~trg_h}uto+Pq4{^DW1o$t)q`0?e7K5?G3c%X!l40Kaz*hYp z!q8(jvey+$!tK%mW|@bQ1^UaIW9_fbZ2{KlT$XG$c0qS}XM14!@}-FR zXcouz_;r5?rnmgq=?F$9F))n#fq@|7wi#H9wy)unnyVox(W=bx+r! zbfv<^#@1YW#LmucI-K~jD3K?g4@qSB-N*%O4)tLs$FUeTu5A(%x5sOS!lHTTPiw}i zdubLcz+5nk`FyJ~;?BDtEkOj{!0q0@MOx2!4+6WiDQUlT{ksC5+d@lEZ@=Zh&?Guv zQ&)EgoF#>4p%CzsurX!Ph9ax4JCnU&La$uBAD;VdvR7?%eQDr!M&6SCS@{4Ax#<)i z2V-F6Hs8^3zIR}dlIzWv@MZy5*REy_Hm z;OHXB9+_Z%jZ@KIFsfUlRME+MA$^zFL$f50OdWQo6E2#s9=zx$9JF!QKH2^av)nkC zr7(&L0-~jnbiNF({<``}Z~c|8IHYe^V9ZzkW>*6}I(1T7du7!p(pE%KxKYW2*iW z?Gd9TI8VDHN*QPH%>wqW_EE1im_BChU95mi-~{PH>%>ITXXTTXC4a%(?P`lNy;Nf1 zOoUQ+|TfcZ4# zsLY7|-j)!jmGs>yLgFWgC zT_3nrGCTwTFLc-{owl;KCl$P=IC^}&Hq#4f;I}MQN(Z!n&(ELGhO1^iesVWD-I?tD z0Pf}zU7`VLO7E8-;Yx%7dBj0~Nw8+E8@VdIxA+Sm?^wj!Jy7@%>Sa7QIKUzn{OcM6 zTQioHjt;lsJr^mTmB|2orukT%WLWnj61P~s`5PZ`|FA3zu<11F`jD={L~$eNGp3nf zPL*zF5LV5G{mM*tn+tV*|HYBkkV}<5%LQz$R?^_B-9Wr3XVsBF~ER2?2djulWuOEy}$&NxHAY#dWlg#cr1`6XQ`gQ8cTRtwRs0q(0~J=Vg+1* zS(-aw4P<~aQfgsd5kqa|N$J6^zo zA|fJ=_zZTZi3DjLi%|Plv&EFstQc<|l1!%g*EvxMQ~fpE?F9rA-7d)XVe{9`Y#`DO zJ0UYN%v?YId~Rr140+wCML^;9g9`|=T7arRKCTT^HSSrA-^jz$_Y$nlCV#%Hu$dv@ zG6k~0sb=IOvB7vniB*$#B^PlgNb4-MepBZIxj=k!P?nu->+KCB`CVW-eY4$03pqb` z8LLwpUoarANrfcwn%{Ym^ltFBLw07oA7zewX*CEQ`LJ3asEYFBX8GGJ{~cW1GSmfy zcm)8At*vR}MNjIv)ir@KOlHFSJb3s`c^190gZmS8b@l#3@D@7|ueQf+431)vEEn`# zeY#XscJ%_CAGpgls>L86E}{=V^dbSE^6K1U0O7Dbl2%j0Pl&vsN4rEfskH%$2vVCy z8_-w8SNOwNWZ#PQ0e9x&wZWxn-QPYp7b(_%H#$RUH}TFphVG+wee|a^#&HjP?1q0f zl2BDYqoRt0F~39k2}Kx9&F|rpr`Yv2faJ#qCO|AJE8Ef4iCXH?o0cp{E;qx=3X&8l zy@$G>#_?@(l0UXY<9vQvw24K+}Hil2bti5AOI2%IW2&;FaBK0ggET{N z7GGV##dlQKyXw`4Cnsw?BSv5cp!+`d>%(Y^%gZ4J1nqF41L>d9Two{8lXZ^u zCUY?btZ3+{=`!6C7TBwX?AiZ>>w8OWI$o+ZbztvTyem zAJWt$x;gEKMgFoUOm{ODqeMFlV4*sgen?si(F%Q*rs?y^Ly2l>7gGao;K(`2{R1jT zfb>zofHMKWe02y3PoZ*W%b|c4yiA&c=4nfsZvE+K#?i`El?&tP=_wZQIg~j=i_?`Z zmuK6OA2x`qtmneOoM^rl40fJZa%I@%!^;5=JKQRjkjVNbm$GyQ#vU9M*MzhdPU0(E zO@lR$R4d~^!qWJAcWN=qXNM+j7s_4xy&(+(AMea(HeEB6T0 z<^i`^J{24gpur3%nWpPYE)wn^!N7}wHnQVT%Kc`FfoLG%T?!K^{N{-!YnMcRBJ$nX z0`9Ttw_iQWRG+-OL1)CZf`IeOMfjmj4=2IZh%&oP( z0nz8p($W&PkG{FSheyL$Ww4yF>MZo%Wfj&)WHoz6XE9R&@gUgujfSxYHd%80>3{Ij&+4!AFT2xl6$tG84@mGa9!RUe$Z$VmzxEY_>P zYkZZQP3fID7)|Mgx(HhmCq93BI(*$92F9YNkug^wdsI>Xl1#u&SQoLh9i@%_jv;MV zl$5V-;qa(UvU%O3RKVEC2>2Hih)(TeP~XxihKpxC2SA2~G*2B_Tf={}-<|?@bI*e+ zHJ)D?VEIKO|4OBxfJjJ6YhOz0G_TIhwLb(NwVK=J1_A*kAr`%IZbfZStD7lV@Y1eT zF-WWe>4VYe*%-vdaWy!09eth^bZmtC@a}4KUkoa%`WNK&@D{ff;J2Xe!=exX@uGLV z>K*ocv;(7Od~y}jI>)V^Idk6(0E;a}zUWhE$HqQ2x7H^tGp$3{puzkDU#y-(!i8sP z`=|2l40r1coOY-CJsm%S{DiCj5XjijO0Bf-No4|vp!8{}O_Gdk#}P9ophtwE^p&et z^~a%U$JP+Uq0p^xa-@NggM&jMLC_bVgwN6Ug;WMpp*}XvNvJQnv8@>Ni!Bq0-Bev; zm=ZFXpQ|teXFKa|&6f-4@}IfRI8B$Pj|<+F81>wiH5p*Ji6Cj$^VsC6bJ~27G|tMPJB?vf9uXYZHsyKER#XT|;Z)qmERciy z2VeaBIGpE8Vx>O-u50wLGd7?S8mP=|DzH2F?*vym>oqZ=lke(q+Yl5gHO~77xQCN# zbfq!_^*mG8e&xN+x!z}W{5a8&HztRVS`UFB5U<^wZjXT@P9^oHQpwu+ zw^00wW}FS6fOUP3uSVU3JTvf`;`Qy_k4AQ4(IDL?S84(%G0pI z=xd2)&6NN^#G>S2YJc@COQ9zs3e_MV0EvSUdi`(TzImxcXrupe%xIAAu#~4i;OUkV zd9RzuqUgeMvvQ@wx@lB2U^HTz4_-tl+*V@Fving!j8`1!5+EV5S7jlpxvy^FZ6Y3n zjH~IW`ihvzz`B09h%r4-)f{h4g~sWT*{LJ&0lQLQEUTQObP-#7M07YTW&!v$3L)Rm zpfWxR+OhGgEG4^SDj9ZG>#R^KFR?mr4_vOn^Zk=^}67)R~Wb?mu0O&o{?=H3tjq0)xsxb4X6U6QC^97xNP2A;#-q`P2!AUTsLw`b%e41Zh=*;qncOr{Oir&^hB5t-$;tmMlbe(E>U)FosKt^O506yY*ny?DH>aMW z5X3Vk40p8Dy-tR`Er*$HCNY5f^xoXQxorawD`A*E|Cke%%JJ$BiPJywQe4K!|JHGb z_M1yXiHkdQsX3X#vW$)N!hmFOkK@$ouJD{LceQ?&Yf^*tV1$5KySe;-NEz)ahCqQ1&zUETzD^|7O8=ILE8}&J6rzQL^%T9W zzWy82*<5>j)>EewW_XMbj@9G;XRYJ#fgtc-g}T+L-tUSH2lJa5wRxY8HATc_p4+u? zUwL@Cl-oGxs}LIAOAIJVCz0LNWwYJXS zhKup~$*HNM4Qd=9`L6|Qj|kqsf6s!jK)=2`?dt8#OZQi0VAZ=4%9clr*4Sop_aALl z&HxFTQkrN=CVPQ(cgmVluMk+f;CfQYH`(ZpV6 zSuIn~x2xgg^uulDU+TEcdxeI|iUj|^5=ilKN9@xhpOU6jAMY1WF^R5Cr{+6@FsRKPugm0qfPGauqt;+kL~xXV6NW7reBpcV$xQ z9wrEzl4}aPnWlfQ$mN(bUb;P&&K?#Z=kgoX{timSUj0dRoQ1C&8+= z-v$4Jy0`v|a_ioJZ$gj|6s1c=xGcq&xeeb>3TGzVPwf0tBI)8$8+fWLc3%)yJGCo!8noDx8x~>+I znSr;EvslfDIz1Y?Ya<8LV?d8a;IxxuJQYdn4FqLfHT!ymi(S@nFF#;|GUt4wJ1XCx z=Ul1_1pw@H(s6O?RneC~bUo{4t(>8%bAeCN6_#Aj;t7b~@58&ET?ss!WwYZzDi{EU z;HE%3+872>t%(J2yiU1l6n=r^cauW!+gv90EeqpG7j7XQj>-uuKqCq?o%ekJvISDB z9=j$Nz;35_@84|AIeI8fTsH5^CDJ)&%_~kTS~h;Tp)3uX!jP=6 zF%j0BQf^U^)5SDp-;52s(|!>C6X~&Vjck5@@m)$2`Xr76sbX}J-c&a~X3c7Ejd z`?q4?wF;7%g~j}I|74<8XkdO9((^h8=Z+;wn``P};8S*6RkLSSR6H`f=AA58gURwa zzE~&cMH#AhW)HYW*%}!x{G+C(rr*BH{o!zY4GVPElV5D#7Rp<0aY}`8v>P5i5a>Mb znTo^KklCL0yWEuNa6lk7f=0Z=?O1al(fNI#=Mw<}i}50G;A_yAhn>sYR*ijwu$!ks zk&$O`Et{nXiPUDZ=VewiPEA)EWB*6YkK^Z+j5Cu+b{u4;;`jej3(GOp@$l!Sb*fv4$ z%aAJ-EV=`IJjfFMcJhSLP#qv=l$J=u8SeRERIv0Yrw+_1koqwRi;>a;W6 z?}NPFKRreGwoAP{+^Pk_EJwI*;x`4y5+B zJ`_Bdf8#*Mh6SmrsO*o93@#!Nou><)?Yw&419|XRPU|h(0xkHbm0q>H%PU!N1)P8Ch5i=IR`a*2J0F;Rj?i65;ebh3q48g8n=fI2@gnZ3(H+UKv8XDJ6L^SKb94>tIxTQsAz1hpF>1cB%Ha*?I z&fcC7>@Aiw@Uy=LK%t1FWMhN8FL@)L#>N z-uYFv23s@8L6|xV5e9X~BqoQ^p8oOaVo-?Z>!2c&*_zS@hd>v-ov(K&BKvm5f08}CIBeJmXqZLgdBs^i&^ImFJ78aI5 z%5CByrNZIH%x^d6r~%V(hgi3VwZE*Ju)lb2wO@x2|#wO|C^w=y*Q_f6+LfSbz$&s#CzS(sn$qY;M_YY;G2* z3@K#+tyZ7ugWJVsF1OTz-gM_e~4teyP<7YSr1;SZ>(JCmJf#a&(b zi1pm=03jMJwP!2$U{iCNA*S65VQlFWp=4$&cIySt8#G`{f+#2`(n&8O*wf}LR!Uqo3ss&0GwT&>jPShFa>o3(nr%tx$PL(hm# zmSSOJUtxH>b7dxMWaI2I_^ou1inrInl$f?x|8~QPYARYtWl9`feH-nbZgF6$o@#r>8G1Gt4agHf?IYc#@I|?w@7gQoKxS=fpUIVfcVU>l49a ze4S52Z1d_FwuDaPURusp#5Y`dtR~qLf%?%>SufaW>P59c!0iC-xDuCGT{^M7^rrgr z{>QB6;5Fzmq?QdW98kQN;^y%eu(lDxsH6phBgI}Dbo(OZ&PMqbnItVQFJC`sG2c)N zQY>&xdX2>&%3qzG)h~;kYlFP56S!DeO>kCL z2rZ||qC-M(FQ`YtC*w%c&Q0w)ccnz;6N3iYX@h;DqSWC+@7|i7r;|`pW;MkxRNGKP z>+9sThN9$;zjz1E4Taj zhY)IBBEYwEah0oI{UPAu;^Iu~_c*-{hXfBtAKn_pd(ps;+s8Pg%WTL!8ldiW*&d7C zJ2}bDtcaqO63))d^s}C;%e^F(882H+OA~RNS#0rDuU&G6s;p)P2-S4j-f^1_os z-Bj=6#A^$uS037eH|~E(k=MJhFxY##<<9Vx7R;TMN#F&RKWlY$b)|vZKRCd)Zd{?W zZup}K78Dx@x2D~Z;qmqZ8s@3<9)=G(C+B?z;)Fwqk*5Uf>xp{@pQooaWd&`gL7>qz zWTpE~%5Gyr@Q}de1nhS@?)s33>?=?ZZzn{rH8@5^#q6EtjTxCDO59I%V?#Z&X{as> z!oQcw-L(bBRfd}AiDMW$X^d}sRw*=G9pv9ag4^ZFJ!sbWwwq-y>0xmx zMq{>|z$btc?t0%q(9@@_uAalaYYzMehd5_Dm(-Krnj#*w1y=F}Z1r~ao$SBTft)JvibX{5~lZ0WRIO{vi`I1i3CE z-AmM2l7ufUfzs1uy&b^;_N7>h7+pQ&U-=s^c>Z@pSw+S6SS7Zae+Nv1nSBH7xPB;Pt3s2nFBg z(a}fN+8=@54oO?R;3Sp5IXjPVG@b0E=i)ApdwGstd7XV{g4=6W9Rg5M%2Bs_ZH+3 zmzNhq@h3+|8Sh7q$Bq!5+UtXZ1M|{i#~ZiG?X%^aj{{StWhUGF1A?2{9TdC~rm3DN zHa0d+yHmZ!YTEs2PiXjT=Ecl!$jHbT%Vgy9jC78yV?5uNsxz>%0&!66j?nM7YbiaE zwA5Ou?z&!wMfb@FP(^HQ-{m)Hv5X(&Y!=lf#Ok?*5~sK)6l__>cpQDHle7Kem_GbX zzmxe+d%O7e-%hn{@|*X@$~d{O9EpI0d9Kln5Tk_ z#{Ie0if4zzX5w$STHzAAR?MFe(h)5oOk=?U8^Z!ze4OP^m%Bge>b^>`)ki8AcG!bV zNkK!E6MLg-pvDf{1`PT|evEh%3@t`n>$b^KXh8CX~f z+D}e|XBeW|i-5DCpqg1&NWI)?3}#InKLoMiG3@jLzgIz9El>Si$k8Cg$KEg~N$nrT;R`a&A-c5SkO z>>-STbGFW`omUFzoA9CI<6~`}8%+Qp(D!qPn^%7o8ePN^MLt8}QOn&Zwv;yKY+IQtN&_kMr}+qwSeM z;92_;DmQC(k(g7p_QVV9*Iy}bte@0MM7qt&&-fL^$HzlPrpEbJZjC8>dmrnZ<^JYS z#~zG?OKDte$KL+RMsWOVSB2j0?hj+9h?E;@UrhX`xe}4biPh`$L&bV}Ah?Wq+SwoO z0n>5RZuhgz(3EDuPCGoIWA}#jsud|zU+*2JN~dsi{NePwzhq`N9&ft1z1`myE*KCV zj&C}-`cvUohi2ywf9Lt^rVej#$ywLV8_M6Vz+pk7`y9;7!#$DGx? zL|(WPGT&&5IXFB5Xvw-#Pg?r<&~srR^E{Zb@t(Y(mQqn6q>%_)oJfTuCiI#RAyeh* zmFD+$y-VUiz8OyKeHD+n0}q@NsJ;!B8@4(^C&tt*lbGZ9;bC2q^nPnSO*$7sU=f5+ z2`To|DOQ|LiF2OL+5>I;3P@p}2-F{M?)~bf|JYg)KRUt7;n1bOQ`65sxCxk%QO}c| z-e!YRX#Cf`l9-_?-T;Q>dC;pe+BpX@wDeH-rk;j`5Zp5?WyY=K$d!TA^_+!F?sp>^aF9SVOCz( zt1J7%oWm5nCeOJ|q?bdcatxm*s5g1s`M7sV`*>I84Pq%0(g&aCU8wL$NFdAZfBEG$ zl^O1oF#^6j1mv~Aqf;D_aA(WWFfl16`yE$|4E_xh*zK5^NyJ(0x2n9kgV3Vi6I>ac zN^(5W4kPFN($~jACru(DX~#wWdn8_X*{G;ygX}l2b$VSM83-!|2I<4Dn;_3N6ul5n zaXA3d-6qg&b~#5=?Q7k6%*<^QSsMaq!|d-duSUh%{v zXB#6UtHr*-NRFCZz`YM{oR?eq)FpAOA!NfBqL~1y00C=yyx@nY&`3`5P`U%*VrD!& z0R=@L0Jnq1aO42Eg{}hb0R?(J=W&3E?vs(VO0mOxJWpZ2Xk#^DW_`&5Idh#dsa~k$ zFD#!4dD4JEvyZ#>nxEx!ad)?$5IVI588OF)p65+S6GjDvh(1AEjIlAEB)bhu*+j<| z-pJa|=>`@idLG&o^Hr|S&VX(WloD1&h@ww~dNOu*|LSayNNM^4(2HX|w;^?NPqcT& z#3tzr%b#r)&;B82G-?mn+297kx4C$JQ4>+4?qI8cjZLMVd#V-SgeV8+aCXzGs$yn# z)F(Gc+5)xIG-2k*f#^w94 ziu?NYXV?8KwOac>Lcovl3tw;Hd=~wjOr`ZbvX1+G>q|R3J5t{F*rq9-Z1k!8i2(r^ zY;}7c&6+29BkPkTPm<|VJUZ4blJw-8KPMKn46OZRpmICoq;lDNfQ@}pec1rjiHRGO zs>gY6-;0{+DM^Iwwvp~`SMoUV=Qmn-Fzi}o%f^R*CZ7e5OG*siS30kz;sI7)O|fXC z!?A9P#-w(O3Z!y-I1w(MaR&{mXB+u8nwCmS4=XDx`{G=&b5fiz3_E0( zI;p))044(FQBk*B=eSwBed2%18X->sHDw<88w@ZChucxti$Qi^E2h9!9yed*7cT;* zPeV)V&#G1ZzBI1(EFH(?W{#KAE2xy1h^U7+)w>VGRR$&|gPD_UTylOtKpO=|&`4BF z-%MK+ts*aX=$;6NId1YUuB^1v660LeFr=q4i0MM7q z`ifX)X69atyG`Xq3>z(9{BVXu*?ZBty4EN~WM+W}=$>pop3rHFR?`ucmJZ?P9R>Lt zx4>$OyKLfw6k@xdM=fRWD}4N*XOp_b;#BzJNOooPyX@m<&*BhzZi(ABTYvLFuSfODLPCWH3Wx#P_K&@9SiI9}EJFvBf>(IeWBDuV1Qui&odtu88&jc0Fjg0UZ}$go)foWl+09r=EN{s(`RI0JYn8m}N7Lkw zVxua6%~;>S6W__a`;(LEWm0ScL0&y>G1p&yp+VA8tFf<%x z|3(=B2q5l#u7u5*{vY$vrKu>5OVcx1Qn~s0G~CRIlW}IKXlNSnC&{;A2WJ2lE}N3tRI5QhV&LOk5#n!ZV-ISJxK zDRw4ZD=rZW-XLIdPJLnQ#2bq@?XzRr%ef`xxW7SZ$=oJ`Puba1Pv>vG)$i7(`uVv~ zc`WM63J%-y#egGqY%{&CkDbBZ46XZ0IUnn-6rEVR0cHX>GhhO^=dHQx)SUV!Z*rc{ zHiI)3`ICw?4QK&1X8(O397_I1;xBmaGBFYG`P&l%|M?GPI6CD2zxQjc&me~X{rwFw z9g4`m9|fPU5PcuPG5tApU_qJ{VUDE2rJ=#bak- zMem~A+?6D5S(8~?nzQrjm8()qLjL41S9=qnA(X>EQNH`+*Ra_POuz-1RqeVl?C%$V zj@EVd%1o_DeTjkfz=)4}Npq ztVvFdPrVTQ(W1|Z<>g5EHo0$IAtT@_MxP8kzQQob|l>9X2IM4{!|ns zP9>EgZU3HMnZCZdYR+FlYKF^6I6@qrBQGGYs};Gt zJd3^k;Xk{(z0F8Z{ENxH0&Nf6CO`jxids3EZ%Qg1zMF9RSzezB*|>?kMxi3}n-_*S zFw>j1sm4HC)!p~o!t(~DAWeS*M37RKr_FU)apW5s4p**k&hAhhEb9!X#KuY}D?f5; z1pA~ptGO#EJODMR%%87(MPW_XT2-v=wSrZDB;5SP%RkmE<7zm=;HOBf_Kqb>Hkb*8 z;qve2Fu1_X;laUOY%GbK5!b(0JLWftRBtmgGyP^C6inBOkAHLYV!7vHt}*XFpb~#? z%h>o^5n^Cs%d)XS&}le3g_z4pSQh8z0um$P=g*&bQ}8w`8#A-V?CfCk5SQ?zh2-se z=UqD1LW{-#G-YK~g8TP}RyS*ME}d((#l*zWF))6wjUgrc!lrMkrj0%L9WHT#y9e3- zwu|ke%Dbh7bf&sS3)sYa|5_e_-&i_o!Ts;2(+q9iQ)gj?hkzsHXbPQsc^E6GQo}Z& zMbXpwbmV2?uGfC7z@gK~rbm2+V z&9n0OBDPkQWYFlr6|{mm>+T^}X{s7MGBgA||-hwSeK;@zbZx&ATfxWBOWT@GY-|_~py79+=AKd0`V)1gyPHIIjiDRaL zVYX#mY+>nf1%ZqYl zcXxMxKi6W8kWxNAm&j+jZX89VPR{uj`gVkHkf@Szy{Y+DQ{|AN zjE)jk{e7J|8}9<6o?oRdt~@KtbRC^sF7n^IeRG%e=p>YFcdfCKZUqX(>hRyQ)Ibc9wG;V?|GLRkF~0GFNFTH)P)X5 zzI!$ANFGD~@Bl%81vz0$R+&{|azhrIg|y9t{m6j-hCti3XV98SKlqbSluVY9tt%7S z5Cf@CvaCw^`BTb%y$ zh=vAy+JX}^4U-Gn_N7m`i~0iJW2ZQG=;~@|h-Z-K_?KjJ|KNIVbLGErc39;tG}NCE z3y}+bd#7UMEDPfO_UgCqKC+#NbzG54yK}p87WCUgp#O>E6o4VCi|`z3eMstaGNqLg zhdE?++8|{_)r?o{I#k?2qmjY78;|`x3I*q17!W80o>|$%k`y}nMFGC#6iua$H7N`+ zFrzqIo&;OF(4m#A@EKG67e_4Zy@Q5Ax45BgwD+28;L%T}v4`s4vl};r+5lU$Wn za_2%DB5U}9br(ah9J_>|Z+(?G=oMl)g6r=~jF>>G-@u^#HyCtQ(?Lch^L2{~T4$U%ND zUIAqbn+__!r0cJII5H#)x>c^qdn&xD(w8;;oWh8}`hMNl6o>eXL{^ShrZ& zO=OV5PE?a}yL%+!?OA3QWQt0rCRVR7HmykeQfe?#R*Nj;<&|3U8iWc4=OiTGJvUrZ zT3=wDzaw;O{^%kmCUnNe`SjmrSNO_ zF)|E%vNdI>gd5;ta>iG|3^Pp4DP601r4>no{lM@fAGa?^$oa8C>gEM8kUqIxV)V7! z(=%1$dYfom5jhs!3=`-=lN%CJcrh=C#*w3Vsc89R_D4lh)NxVQ#y^no8CMrI;EkiHkv3Px zvLe>+%et!aX78*!1*~2ADoEY0iL6eQh0ns-oot@{h6Qoj=7xNg`XT2M(mSYU%vs9s z&2DjUTAIs{BbKN-(L6Hic(05}O2hE7zPrfsBGTH_m=k7<6#X_Id;85GDU-L#h+d4_ z#mN8F`{tS$w2&DZ(m+{RS)-$)_o==A>Q!AgnzP!#FP~uIMGfc3v0FFnNT#Ph)i}DS z2Rq!dT1;e@n;-M<)NZOWF)_PtA3INdYa&gq=A}=4p3H~n6J8Q_NkE6@{`#<9$}zg% z;hiu75=YU0q&TDn1{d{w~j$(vV!8+1;g<)a&3BLOD+LwfADp~i_gEs+z)JN*~LPIUt zyG_B;v&+LPDP>3u6`Nw2F8ho!w?s-B+ZtE%sMS*MIYn4ud+qIHI3jf&|FA<~T1C_A zM}%H}-s(|&L1dz&t<_%bUcI+H&+2!6!OhPW9Z|}N8zOkcTand4HvV_lSf)j|D)w)+ znG`OzshKnZw0>ExspE?TS0PO7i#r>osrzSvm(&*o@!SDxs5`e0Bg|7FCL+XD0H=n(HS z;RX=SVb|+SugusOu{VoTe9-0V9FdUF*O}@C`tya`><0x~qhs~niizFv#k{A?jiFYc z?msUvC}7hBHvBedk-;J5G%(8 z$<^K8mx{)mAEq(Cv##YDMZ7uFLh~uR|8~YM;ZCAp1Wz9N)#rO&XB!?IV-xR-ij~l& zH08M{E4_cQgeca5hRoDZS>BkI=RN;kZ8vgWT#?p(QuSFc7MG-Vr|hW( zhDwVtb{?}j9QOVAlG_!_V#rWhJ5Q^u8VCF%FuQ&y4K3SGKY($(chJTb63zJef56w; zYVgnR+2$_v)gw|_FGs$7%lP-ee@>}Jc2-3S&QG5ZH@0PvQpRpLe6bE~@2k6x2li>U zpOpZ{`2lA)_`wf^XPmsF<)s{nmB7TSVZK~StS}QxL}$qMt)C+rOMVXLzZj~*$Xe?Xy8X5#aFKrymg+MFVULzSEUU`Q!D&G8z+mzmW zn#(*;oSu`3&Hp{;y9BQNV@?KrRsxlUz`yv8a6BINysE?j6i9c zFN#JU8tfT*%iJNPqZvlFB%GpXVi^0cu{8C~6(QZ&a zFni~H`sNhTT~X>83SYw|#V-{yd`m&~MW48vv?@ofIx$YQ(O|dc{+)y})^5n|>{A35 zZiw{a!KdZ3;tHQzhp$v3C)AmD)d=ARzf&wnt2e+piO73SUTZU^2>kH==`c4-HYV`v zBm~LN;-hXS=k14el;3XIc`$cZ*NFSnQs8YMN;8n?>|Z4ADru;Qd1$j#if6Pf8kyb# z&eB0hSu&?0X+%b&k!R?Hj=O6Sho{OF>~VO)`6BTKKLOPzs}jWU%s%BAgA`^tBj^SD z6y6Z|OZ~hb9R}kSZ=}0lIBpblWF#LXN8O?7=G!0+&TT5Gos~N7pT#? z_0?jr0Emm9KGlBMWi_BPvG|tw*E;zFsf8eQwhdT-(27_=_n>|oQW^~4R0%Bj-etM| zAy-)C+%5>GSUhLcOVdnL>erO#V=F$#ja@y!@%PPzzCvUS%)R7#p~1xnQqf>+ zupJ_x{l&02)O{U4eflKfuobk&ae$Ms3b(eje8yhvv-cu98pzi(*i zqCDx7B=0MzXkp{im3Xj9-W>85+4pv5w^SH+jYux_8^hPHU$wbfj(^yl@|>;bq{a!G z)MtKvFYm`RqwN8>M^l@k2fQAsG+3apNCFj-rE-?E&0T6P4jl| z)Vw@%PW&{mVGdA>ybbc&(Uku;L$gF;sgFj^v4Eaknz6JA!0nt?% zXd61a(1f9Z-P1slE^^VqYB_Vlu0$6qP)0wAayzI|-OX*5D8(Z9MiA4h#B5xVZSLHV zen~!*r&k48d|a4mhCK!kz4(PX+=5s0A!cR>leFM8gg~%poa27(Y^r2!bR>%U4@ZnN z9lDTzQm3Vl{^uARJh|*j-@%D6%gtV!pLx$OZ_V>Y634~#lIdukpXJ`MEG0K9%hzGs zT->jc&-gND9vri0r2F-Y@fCDUzq8c8tA?BMGYq~{QD5*4Q_WjWCOIDXq#ZIxf=_N} zf0|I9q5In^_J}|)h*wIg9{X0_xqQps_q1^+;T;B9U5wKabw4bA!R&fM*UY@KL30N!6$icRs zQMqnufCH-fmE;7QD-YS10ex;fyt&KaG9-d=?_f5zz33V62#nl}q(0+Yw6tilz0!G1 z_Pw~xk7sTw`yk5%G|-_JUGh=&fhbF* zbBMMY;CA60j2MXEo=&oHkyn1|n@*tBUk(_E^v(6*3``+6ig{&&4QMs$Mpb6-a})Q zgrr=N`u9*{$SfFm#($!`dY{GeVwhPl;dUqnQGTL_M!VBB6Fn~)=0F<~HruM@g9-=v zSXmP0jK%&c1AYKtw27fdH4W^iH*xCF%I^=w}xM z6oh1~tZI%=sxnvU4bjs*_FG<3`f`e;@A^l$DrWVtwF9P}QXZU-A>-is;o#yrUa)D0 z9tsQI?f(2jDcQ^N(3R*miT%@%!34!6sx_zc!v4m2HOASmGD4PBpt26~1t|oZR^M8h~;!2Z&n@vd3qtFq)UJ@A3v7rSm`n~Kaq8{3~ z5bUNZ2^LfMI%kB_W`O15WPSZl3icCzY~!(=T2F~@8VWtrs1_gP7!h;YQEi)AYQO0P z1H|GoLHAO6A?44ZNViR)b{jE&se3BR4zbNz9FBYQ z$*Z;);?Ik#I#JocZy0fIb~O)hutByHjk#OvUv_|<;(gA#qgMj~X`Gz1#@*o-1`R*c zDb;P=UkJPjalIDCVlKO$r(6%C7JC#yP8Z@6tK%_V*^n?(2O(aW1&}$~bq)QM|x#-1xa%_3zFS z;Ao(a-9DvBYb|5dz&L_3hQX3}zII$#b?5Bzd!(h#iL3W}PRyPj(3>N;WY74i@a;{u zNV)`IlO~H%3p_FO3ww5EAzD5(7=ZK+iOl}Xk862B?;}4=t zDmPg_e)2L2IEKF}(VPrS3L{<=*xmA5NkFwf6&ul?Z^J^z(VQy9CfHfmSP?Scs5o|= zo>8Y@mxg;P)6MR;W?pxGhl|^|`2i&j8%GpoxInZX*UgHr_r#w237#rq*U)<5!843N z0mqQWmG*|yL35~xnro^sIQW)eYAwy6gCF2IXfK{C@>x}8DTCh5vh zafnNJX@X;c{N|Eq{_b-F*i+Za>EBgV9Sr_CyAM9tn1kX(v#!L(LPQ09&Ix$B$@jOV z2>wRz;EDaPahP*O>QDxCo1y#O?`+r<@IB-+$R+tX9&gWdvZSTVfP z?}HNkx7p<(F82)<6OVf>g;mTrK7N;X7A;D2mmcd`h^rh*Gi4RBN=#c@mh``01;l#` zrj6D|C9KSv%c~{~>b}r%-i}vI7>@2WtfILEMcH$PHD%tI8wK$1(XRERvEMpM;-1N* z-2A9OsJ<|UKJ(mFGv-u4jESVp53MfCbdUj555`l`gxs=Zp1Y;$a(q@E5xFcdQe;we zaWOn84=xxe?+XI~q({1Pqagu|YTO2hMZX5acYe(IWV6VqQ7oiQ{1{osyWBt7?zMA5 z{idSO<72%~1&8||e)dI;e>tGJF(bfw2Y4X!Q1Pd&Z44}IDpFp-U!~S(X3oV#rpYoM zr8G%oHs&@qHBns_Yw#=Hgk?6SUqRhMbZjX0(P}J4rM(8H zTT=N1Mz`mk^wL0+DEt1&fr)JDAAl+yEpC#mh;I`aaf$1-vu=bGP+J&`2DJoUP1f-T zxABsI%+b#~ZJKJs=AP#BRH^%7*r1{xOG;PVj`5r6GX6uD7IFUeAFvl znQ#Z%H0vpHvD(B=2^S=XiEfsCbWUD~cj7_gV8AUYO42sw9A2DT+*9vI^9d`Hz{~Mg z=?5IbJz>A8otf#2aoXmcI$?0(G+jB-#$y|n(FroB;5j)D4#YI^^eG3#K2y{q7+UnQ zX}*)Zah~VYTU-oFtWrfpX*J!WW_iPh&74Jo@t8D74%PCU0;!Kxj?(@$Rvd} zOa)zqcj6{^!~+5&>&sO<;*5fx;cwlQ>f4tR*lqa@+&{cis5gxJr*3xdIL1k@Q)mw6 zTrKx*qb({^czb7g;INkjNC93`)MdCi^nsF7HS7j-MBi>+il)CamBVSK52xX`u4P5z z7_DYpTR~)8r{nee@_iL){A3;+Zyr4LUNt_Su_b9d9}@L)teqJwHuIX33LRrXIpREC;!k6N7sVnHGD*S&rkC#TmC#YesI6>B-m$i5an)4BBuPVRsYuA(|gTw2+`VF zBE!b4_UqXP3=bR7M$H6mGGE$t%29P*N;NHpxl>6LPuPzcBmS(ch#7dWfMZt?1MaE6 zIwd+A_{xX6v2W!K;Aw)|K91gj0`HM_l{`U1dAk$QwaG5DdSDMKH1GRSeatyJ)BhM? zS1I=Rn0#t_+(ymMWUGAX?XOHYdR2?()xR_IYw@mAEMcUIf+XOKWiI{{ z@Z6C>Y1X{wt=7tO(Zrx{>0Y zv*-8#HVcdqS*fDF;O|;Ry?Z+5M5|BBY_4DJBKuB=$cLEs`bRgoGs8qJw&C}Xe7$>z zuztSLyoyWbb?3e!LE?tgBNg>S{ zvor6|quB{AL!fW?&+{W5g9L(syLtc`)vVO)nc|Ae=-XD!Qh401z=4^tiZaTCCchmx zfazNuMjjxGvbanMgy$dGTB{gdW&K(N=~|Y9Rz3jQTJkR^*#P4BX0GC;W%!{OU3~`9 zKdePY9c<0w#i0C*x{-amb;nGri1nZA`rW5&*RW^%6E%XUIUmM; zg-szbO0LRo>?&<@6>f80*mo3l08yMZ9=O?18ZNsZTsK)I#Dx4?Tw`v8+t4IR+V8gp zzxrdFl*)hfjp}Bc{Dy|9EHTk-qV^p|8o9DoA4!8_VcC3zHdc)$D~dH~pTcJWO?1V+ zd&dxoL*a7Y+$e4{S@kJeLXoRa)4H>rE?nWw1?DaKff-v)WKvrJQf>bgfTRV=YLK<- zAo>MER@U^9=)ESMdYg(Av?29{I`o$>IM97s6C{u4Pbxqv@(!vK+ zs2A-l=xUh)yCi0=GOplbx=~R>9bZIqOCj3AH+ zhMF8cm}V}>{qw1HfZyUDz&nO~ks8aC!_K^UGfcb z5?*VEdaLAQbV#S5uL^n_XESsA^A0MNwReM@f*C7R#IdH?H}uVE%5e)wtz+*|blR`O z_gBZ^B#)ve&4&q`6^S7%>v)u(#@#QUYoY)0CH3hsU`1YxPr#ZxMP!mmZ>1lPC!!N} z=3)@pL z4|NKo4WWT(`4X>z5$97)J+3+y)45wUbtBwu=nW|Sc=cX{drKb7P3Np~F-t-cAh|Io z)UPMdmqD8tM@)NEn)t^YLS!>tkThOtcBH9FOkE@X_LMrs$8tu3lwwd?8Wd3lqb5Bk|zfiW&ke!9k=9*=*A zRT5muirIZF8E#Od3e1e=e8jBrAtu`90on%H9qVL0eQ!tqnTyP>!U|T%Kn;l_6Yrvl-jI+=-)xP7w?dUS zo@v>z-6sGXoqgfVXk+sy`?>dp#({D-(}~(*EnQ{LFyzg&5E$ zA$WJK$Fk8?|8qB3A4>>+ssfUL_|2zmJ_x_27QIIN-Wz^mXw>eB{}xjxjt|2TW_dw7>5j-^q{Y}n<5k?=Svkb0fJtV(p)>}!Ic-AvZy;S0ymic#jxjILWHd1p zd#1bJD5El}n4Drj_*Hk`^7eyqu*MVdzi|JpKTxl2d}mR=6GenJZFwh6t(G-^KsWW7<;v|{!1O+REr#e7e+76ie&|b&aB{e861_MLdPPn;f;#j!| zFAu2bdE$0|^QT1iMgd$6Y@>5ADrlr|SzBLTc(fg-&E8ZH=N{LoY<#eG9)8W-T>AqR ze458Ms&I#X|mMs16kbcvS&651UK@x|GEcl%_+aw>O z5_W$6|4Tc){89|OLOMXT;39-Dvx(t^_Dj2%sme7TMPJh} zT~}Yr_NodoV}#zBv;I+cALXB5YrJ78v&R?6g~c4kR3T;MzKF&PRV28mvt@|Mcvf27Oe^V&GwVs59yvGu}o z7f#Btb%T|BL6-!tp&AiEVT*F6<6Xtc>uXf-!?lWQiD@rh7Z*_GJ9;f{a2xx<>z^u- z%COpSW7<@EoEFHVH0rq{evMHh%(y=Zj*pucm3P!;{F-3WEVcF!BUoYgfOHxg(az{W z;0h>6k--9;O*!eU^YvGJ4dANNv@m z*!ks0AA62TeXX*MW&;R+H1Kha<_+!_oC+iyFk)-Xj(48<#=mxaq^L|U$ejG^*Mt9P zkOJM*@$KFZM6|C=oT;PF@AVu(p!kr#KFr*oXMG zfrE-M4-}C3g5l%qiyqTXxyKKjHhh$o30<>G(km)7!tiL@E~BJvM)qVtMbW#rDIKAQ zgD)=XthKloa$Y;tOa+>K@EWQHxj8Lo`^K5y$c1M}e4%(?r5L_Fw@@=aPKk|&1*X^R z+vq(x1#8y@I>*q^uUB|!<2%DfPf!p%&zyC1U|vQjc(+5dzTuCxot&=JKGq%)DX#_5 zv&-KhdYhXY5y{S}TgfGSpFInoYh#p4xFq6kS6K6FQkdqQ0{sfD0<>QV>(`f-)>$bd zV$ZY0u=QJ4>reTsR)IR*=1G|EVcBtahFSn`Qx3g*DlPvZH-G$Ou_Af}AbmqS zkE)S_P)fuG3rv6?&Tzo=KP^Bf^8++Avu|mbnP%BPG{_6KPDfDS35U~&BbL374La*M z3i~*VX?G$7uR>E|#SkWUN;kz=ar?y|8p%l8qe^K{<-V3X>xqaRxb@6AsDd3)98bPhw(5{qNb+}cJ12p&?9?%lMmGNuRXB)Dk(!G zrxK0^k7c%ogjb?+p=M@mMg;a`XwNZ^PPj)xq!^PaPCnDF{t5 zb^QY?W;QSyT*mF}H(>gn(x=CKzxKpzx{L!=9d%LpOE;mPEL?Pfx-@Mjxoy&ED&2vMS1P)yC}M>is1J%d5KK=^-WXKNLPrBZfqrXM@mPTH;iAM5%%?j!>cd zm-hHNUR-OLT2mZnfl>R`MVvv`qm$|%8g@<&rIK8~ua84a2nVh1lN*R#^U zM}0b=$I)@FQmbyjx{85U1XFud=xk}Ib-yPo&~hOy%Jsr-$!)yk_IH^c@}G45wnl3k zkiHJXPYY;A-1vu1DW4=+EPXU}yPXlxG}el$A8HP|v>t$eRK;!NrB>#+$BagEOf8;C z3XW6q_eE^6)d%ZKuoFPeCA zc1qkp{C+x*NQ2i-NQ#Jhv4_O&|E+hwkGHjb+iU4v)L>6V&f^@@))u}L;#;ZDg@v7Q zn<5KoF5`<)U44oWGgc6NYQX>&BK&0MwG8UzLaDd(9p|aKb6si?cZ#EzG&lzy!=)~m7*6#{%qRmPZ zP40%0*8Uv)^R>c8BvoU>^Bd(+4o#}F{)Z?E{%}p(O3U)%d+()0ykYU!@@fM$4mi~` z2tRa8vm&zjBT*>DY$}l=od7dC`C-T8xWo0v0Hiwd_8W}CWzKs1DSpuv?Uj}>PSh*{ z7TT2?Te%Tah<`SZkN#E-C7b=Lm)h`XxeinE!ODWMVvywll`>8HM@vRzTT4t zC=zyGV8*|_X`BMp$IRONi^LMT$y2Onqdo?X{_f+R z7!Db8OWdVW2IY;jljlcOETEWP46^tbw)x5Q4d}y14DD@uZ)zB7MNPRhD)kW~cU%Xa zMg|?aduSM#aD3Hz|6VuuiOW9f7-|3=&VhyLMeuw69M(UuwF;3J87%3~+7-qV-Zl=R zK$FjHgw_i!mD=tYfBn&;`IOE>^N-rc#JIV^jkc`OOU-ppkp`aCE63&s_bxHB2PS?F zj854{392FZ1H40~~=Xc)NW|U8;~!-Mn zcq_U)3wmEFwMm*}!I@e64er^6JMZ|gj$AOx?35GYLhFu0PAB|F4XP6{YD3XhJs7Ar z$q;*$l&R>+#BtZ+@)FI*3F-U<8bs5n3*#%Mm2bbEThrge9xr9$K-VihB`of+7W~*G zl~Lth*{A=S_zC{Y)oO=|S?Y%V=)}0)C{yppOtJx5JqC+BHE`y{gZ;Ee;D|5x6__q8 zC&U7=mBr4X&*t{&yz9imiw4)(z`^clsCVUHhHH`9LUWNc{K3f&P&%x<(+I##qG0YAvQlg>1cU(oh-U8 znJ%_2NbTk$P3=Eo_UhuCxKst{H4I>2+wbp8(4t}!(Bd-wRqBL}_~9~6&ICSbvon!Tg+i7S+4=2IC;oL zX#LMBp4kgIw{Ej8ul`-ki<9oqdU8XE^b<&5_c6u0kP#vfbBAhn&&a*!Zbcd2Vj)vM z6nHQHXKq=D-(Vf~)0|Au4Ib}TJZLugq;LGs4(ASFBUUpcDhG#_dSbfI-16>9J9|nd z!Z%6HyxCb-CQ`8>7}UtHl5eqI-n1WTIoSA&qYa9;iN!`7(;y_{i51>Or{<9N!}QV_ zp%C-2^#$DUdBSir<+rL_n7Weeq1$h|6~haePYnLxv(^O#_{hSviA$P^I~`aTcQiS$ zLa={6MT4JY9)6~#_TYQ4Ti>%kdr7yHt5Vi|5g%wM-LCRm`^t6 z>gaRp#U>9{;fC%_fk=9+Aln%*C;-Kw)ilnwX>)1Nk2d6om8|Fcm*!SriJk58X#k4l zDttlJV1e<`tMe&}LR4WYd+^AJ+>el+w4UsJd-2_qP8vkU)@K?7WHv^HTmwG(=p86@ zWNn2SQMtLMIsE23t;A^Nj|Zs>I2W2!d!L!1F(-Lv0x$fO;sg;MN)&oA=x@T?x37V) zIOI+bUe^}pN}C1$lC;)fP|tQ32U}Kz8(ZvfgB%ij;lE2s!7d-iEg$E)GSb)Aw#fji zpnocZLeEy@UrD%}PD%hTp5$(0aN`bE-Eu2hhDfK47$@07$;@~IVL!)FXb>gFUsXPc z!hRNsWKYtOXlrfrit&-#dT_Uu(0mY+7=_pAa7-5yPK1g$=b-B~{rp_hcV=eY(LDeLX&Skm%b%Uj&G`5)G$scO-1W3ZB}SeT z@pJQSoKh9!V-ldO4aujoAB)2vbTYrHQxfaG&p`EQgv*DkrO^jlOPJ5K@R%7%e*E3& zxehi8PW*E2;+9YGUOm{=c!w{Msr;DCxZ)dIlr|Onr1KXQ4-3Yo73049#^}4<8KKnh z-i^E)BhfA2_K>q5MtT{buCOhZhbcgKb;|!@ckC``K-3mY_%IB)&7gA@HJ$&JnDwkX zIVb0++sl8C%IS68NL9}J3KIbTx`PeMWVb^aAM+cBqd#&0+(#&oV9tYvJe7ZIr8Nw6 zFj}Rd@R`^$V~M4`4#G!XWPy+4Cb8bsGEUwJ5}<>TTB8+9j3Il+R_FRt9eHfm$49{vP-K{PeDV+Lhv(Es)SOYb$r zTo#k$hyTMf!mS*IpL||QSLj5vSo8juQp5ZG!)f+k;SZRh-k#ON9Ak5sxYricDt*$j zHuBjr;}0S$@F2EZ8@V*6nAV%wNUpLbTAIn)o@7m?O1r}$2;tId7)~g4L0aB)h8Gzn zVQ<6&;-KMQO2tr}*wb93Q2OhvHQ?&%@b{hiVbZfJj-+BP{KA;7Hdm8gs|G4?g}!QemQ#B} zvkM{J`5*N|Op)wmjb5p)eg}?74;Q2;GW774xXFZW@N&p%p+>)U4zG49m@Vritw&a7 zxY%u4sd*^!7&_29q0BF`^tlcB6Uvm2FMV%EMRuWDUR`asuFm~ZgmbAvFyDipR`IIK zzU1aYqU74zu0dH#RZS8m+LLT>*L;Us*d|&;75XY7Fodu86)L{t4uedDAFJg@FrvM7 z%|zAvlp(;mt(VpwVc$wF1S|jfu_Up1Q17WB+glJ7984>|r$#WI;!QQ$hpI$4HG3Aa zL&|Q450cY72v_NeSO- z$@{IxCMG-}5#rk2iLKXUMG4w>mUzBFE|Uu^Gkd_g%c*uc0{AMd;%Yno=c|K(`xoEF zMlG~i+F@9oD0g2i(1W<-lvFF}JDC|ht2;2Qz`*WsXFR1r+{X&>CU&LKO_6)pnHz_V z$TUNwLF}Rs%_0rL`n_>pSzY`JpP)3V29|=RlHf^%YV2U7X_SF<;Azpwm?!t?p=7C-^hhT_C zuOveh8c!g>%>prqOB5I3X$@f%R3GBV&{Na6G%oQ}suLR^N;!vONH?Lc8R?SS@TyPzmO=`A&b<6xV3=*5Pa}17$gJ;7T6)a=^d^Wz7R6A9Tc+zJh)wKWk^C~+~FYQ zUi;mnj*{O@kC#ngBTr(`~{T`nEVK9|@ zr_MvTJA)4+$<&KMl9ur0i`~c;f4`1(ck}BDwRIjPep#FfX3T7H)1NcMMvqFiMOL6? zToqm+>kYXXXbgvT!Za43n-_T{3q5ix}9!SGzqkys@ z3h8HuQ!qRQ=utMPnwNB{_Nf8lwVul9ljnXF7>;dZvTv+8w}x@3JDVp_$dk%aBL0_d-BB@;jqK)j;!5 zjO<})wx7i1dj55D|9sVSai`H>{7Rah1HDdO43ft}xK(y_{ekJR`8;CYzRy2Sx=V@J zI*u1`cv~CK$OaSD34eJhzjY-IH^$7KKr^F%d%rXc!7~LOow$M?>YZrZ5<2J#^+Eo5 zKwLPq-rg}SKPMQ@k0-496MeEBwGj~rx|#W`)RR}UBj1XxeEtlK0w=TrcwauRe#Pi} zzIZE=H-hToZg@P+%P7gJuTc4a$yaw05ed;C-pRtzFzHQU8j;Bfsvm}mGT(R%J53 zA35=3G0+p+KwmVH9#SVD^mA(|+-juAn(wr@Vzp?%iBOSjXOOM&mb6A>IBfv6nAjf* z;iE!5MQsz>lCk{wBK)-d%@1=#1dsWyQ@OtKq#%F0J^wmw0pQd2FMo?c>tVi)I?KJ4 zORY7}R-~ z2h{6UZh)uo?A%i3k=QHLmVc{IBq4c1MHn{~9O}{%#hVlm3cjOj*P!SZggsh{caiu& z(vBQzHK`&Sk`lr+ZXjLiui{0F+P81l4z^w3r-lAO04t&2(Dx4CfxlWM`S)`jyN^^P z$xjOkA8cWaq4WbtfD66dfcizIDynKw-kXTLv?k{)e`GDe7JS+-F=o#_I{f|vCBi}$ zZV-zs1 z80jsnZ1&Yu*}%z)_y`E3(qIq&?c{snsOFuS_cd5E|}KR77y_aKzc$wTNyU}l|71AEdYrE-RhA+J9QAg5(ze zed6UO(ZEoNNYJg?>bV%OA_;OcwL%(qy`f0t9;(1TY)}wCMFelu74{Q{)=CbdWY4d> zW5|YHX(3WHSPHb$-zvV)&OsMtmw}#nV3=tbG}h2V7w0t)+vIq`E~N~FcLCP(s|S~F zVzW?T%Ez#6_moLmx_r<{yqRFZRWC2{e~&_+_*NLUSH;`XITl!Bxw!r*+h%AdW)@&& zq@T8E-*j1epOmSjYZn>+7h0Y+=#3W_h{nckGDQ3x)U-q~3r$LbD9GP4i{GJ?q(L|i z=BCT((z7bOl!f^`lKI0uFfhvU93%UlUFQ~mDPz}UiBEiFf*-EymVpXB47NBvMiMCf zrVrJgi~&vVHEO&y)N2XGO89^df|}ZQRXhX0_?Z2HS_l4v2}{AU=>K+)9!r+ijs&9d zl9<&$Vwep$MI|L8o3CgIXOxzvwKUa_xxOTvALnjmqQGO6<`pr1&Y|!F4^FpBX7+|V zSU(6gz6zrFkd&Y5vakhNm3<+bhY}@jdTu+Y-g;h?&%e&lD6 z)Tp8cF%e3(Pdh@a&q${AeohX*RX75~(0|hn5vA^02>h$E1TAY6KBgL*>AjGk?<&47 z9G*%JYBd`%{4l=nx{xCWNIC;RN{xQpIs5+fUa^pMc4>T8Qk1UAON=S+Ejc?oF&tc6 zqysGNLlWbYqNGpdffrIS;Gv2nQHJ)0F#xr+>I`W9q8qf%k) z{?^GeW>00HMB$+r^HD1EU+W8m;dP?@k`G9XDZ5o^AbKJKjv`dWx^Ic15bP$0AV@%S zxnI0-I0Pq)sw|rholK%uJijK!CM6mA?v0T>ed0;K-?B9Pp@bRas%~f=5x~V>ot!6m z2Jmok_3XCZVncjs0~CULuB4>P4x0Cn_9!eT9*K};vF)C~Frb7V5gnIwAGSLUM|XQhAcy7vr_hU2!NO zPFox^z8aFS!V$OMN-@BO(c`h+uNT`jK56Q#aj@xm1h*HJfd1B$qy7+pe6bKXGzf8J zn9jF?B-PL^i*8C1w)u~gHu=zp|xtVaqe0|=v2xe8ieOz{n4tblG}3Bv*mGXOAi+& zk~Z&C=EmMzpmKimrVKJ2Cw`k7xt2;e4L_ij zF7W191ho1^hbF2WL`rnj1xVga99)_vgPyiNM>+c62i+m)gMT$famx*@cm{#iCso<3 zM}F?oyvUO(p8bC(HMJVLJsy`%7WCzGZoW2=JRdons4Yh$H+pp!OkvKbxmR;_LT>Mn zQFnPl#kbVZw>Q?9MSm|QQfiixT*jTb?v?_ZA#{%X#Y*p&brvjyLO?G1Bip>hgpRsw=p6R`a+j=-QAZbd_UuW*`xKxjb`?FJ5! zMWIttQs%~acek#oq}=vsSbj`X0a0mio^AVH=&}TKn1UML0Yu|~HG*nUfunC0#uF=J)|Tj^GtzGgj&a8@z82% z#nf&3yZO&ePxkLa^0ho&6E*(i$3Yq&AaYn z!+yeI9E%!{EiM^K%DSjzr$lCe5Q`wgW0Aq}C5t6!GgC>06+Zi^X^D}2lscjaJLxiX zi6J(0sS05>laisA3Jr40%`mB_{~@d6_`pG_KbrY5g4$7s%Q?jtwZ-TPHdb!6{ z5HcwJqpuH)E|@Ej;u#`du*D^YFuvVs-^&T!oHo(akNFlPH);7_X4FIC-#KqUssdsq zb||JLmkgjbZUL9JJ@ZEuj$NEFT>mnwsHp?ceNN8KqS3ke86Ki%-(_wcSWO7O3ql<8?J~6S$4W6QeefH_YucW9Bt-{&4o!M&5D5CMIr<29{SEe%P50Ro*ZJ2B$0`Au^VxEh_{X zs6Oitn7^Z%{(=^oPhGG4+6CUYkdx5W&8iNyz?I_K@k>&&=uz!e+l?BF|T$ zjTq3+*|(ur>0zb;RE;t1VV9d~7p%ME)BDHcea&U!aa<>7vEO0P854v2>XR_B2Jw|u zMXAhsjtp4V)}g?JhlOXNj{^%$R+i;snde(ln*JTUHcvM!QJmbPiW8TjQ1mN%l-yrb z9=G0H;J#HvlSlvaZUfh*`=(Ma@qOqOwPEmacdX529|<0E`ybB7zDYYa?Dn801ARqu z9)%Oc(3-AAG_#r;KRdWAuRNZ4t_>0Ih=~miS@V6Pi4MKY7nhoHCcA-|(s@rC8zp9N zU!J1k-up5U6EjG>?0HR~KpU{ERB~qT89e1w6ShlIK+VqmSV@T^)0aW`1`we4Zv9@- z?j-x-ANUq6juQZ;$fuOT4RFgvmzdv={NPk(xa zmldCHAMYtigzN2!@yZp$f1pM{jx4oe5m$w!8KG&-ANEN{B;Fv+3e=kGWaXMPbCOy*pQQWtsCsN_H zw`F^^@dx7c0YeNdqzuJ8_e}{`gi*IZ^!oN#j~R&Qog*gpNTHQ$^q9 z?D5AB+F4h}8tmWydcROHw8?rRd4vCWbKTUXboymq4CrIo34-*>001Q05KI?KW4Dbm zOTFOgM2sP;@TWL@pNNP|70;)eOX?s!sy*dY8@*bBa}TV91^(iJA%RZagtUg+F#kT4A#4p)>Fy;GDUsrV64!ra?c9nh$J=cfZG`Hs&Sv_%7F+gQj z9DrO;?q8BOauqNBCg2cjFB~MmFiYe!YvJFh)$C<>yTfTZ zVeYAymOQ{jMjMnQ5a2{jO^ukPe}b8P)R2rC|A{DNLf}^?52p9NLA^twE-@b=X1082 z=SmHjE7y0X3Lr59i7rMyuJ^wBA5tv!#}TP1q&6EE#bBG_cy?SviP5qr6thMqPMme5TT_r6cM zJyko(Z6hS%D^Cm((s$f9Y$1M3BZft8d`5?~QG>VEdEVujb-oIHLaIonl^b&at&M!8 zH8SA(A{XT3AbK`7paZ0NtxMhnrdg;`yU9t58uOI)lEkE+2g1K8{auZrbav!bIm3NfjC!hAJ^W(<1F)j>`#`9DXU9arBnY~$1@$B zrL{av%SF3S*6zGeNaGM&}R~Bt>I@6Dk=0DO4ulfI^ir8zA^46&Mkk!Kn#6XO5|XmH;Bil zP8Sp$uq+D2otVODYOM_yUf)VZ;!_363f@CPitsKA1vNEpTE8pGe!m^;(mo^(n`8(1 zhHkKst`IHtpdVJ>^5P!GynA=;DrVSX2QEs`Puc-$gvg8!H!x~@lR>qv;|~cJL(j_@ zh_L3tNCmhkb@vS_rYjg`Wv88Ky9}g=KTHRGu@MI}2(Q?xkynyvaDw%+rl$zsx_%!( z0JH=VIH-7iFMQLA%EvR->lz~-;`_FD3enu(Tm&DnlHpaJ{@R2F7pR8%R#r`G=6kt# z6y)VujCe$LnlFWo+=qS7Jo|PHlK!D)bLaEcP4j94b3qEe^OE2D=j6ypWGETV#0l1h zb;ouEqL#2`zBo3F*ljTkkL=~N65A5BKGQ%liO}A{CGK$LBR}NfnkF;5;b`lJu|I-H zt)ZGkviS*zBDwhG_b7Pm-n0A3Fs!`{)V0L7Q2+cwq^bfD^c?8+P<7wv^%HeE#AqRW znITk!c4+-uC-l7bh#9|=T#zts z_)L%S!qq=@AYj+kJZi++GIU1)abwS2y8uf^ghjtLzO`A+33Rr=)XNcm*+hp1ZL#iR zE*usSTo4^?<`90GjY^3~ad|(sbJWesukSeMi$aQ6H%3jJVUWw{D{XL7=lAT;CU+ zj8{MQ_YBXo$&dOj_w|!h#lSO*u`uin+X|+-w5g%g2I1{yFVTQ!;loE{Ki2MNTHLBaP~luJNs@+ zbDpy}Zqy8|Y2Sfm$-Qbd=LH7+(6a4^vwj1eg6t2d8nJqPOnhMrxIa{w)D>JIPQ{TE zS9j>k2YVBlM^101oa^s&Wr$~wt#_hpeQE;)X?hi#Imo!%{)f-Pe7D}%?9ETp&)v5(uQI~kD|Nif3D0itpAq)_7re4l;s-bCB@9zu-tMRT3;&UUx{P~3Dl)- zEjV7DZoIj)8IpDTq(0H&kLjEyM3oh|Utpi5MHg_uB7FT79iy2x$@mpdq=YB*|B-Zy z(|{o|AyVNdq}Rz}7y<`YUYgaKZeeL7z-dlL&x?eCp z-@RF`P+MjUvK^-O+VAc!han&Yzg9S$881*Y{|x^F5%l*HBw-kVN(8BjKfGEXdbJQw z)X9LpLjeEo-Gsee!_7X@{+SP*Vtx(6>vMrwA2ObQg}A(-2Qu#-V@3SBen%7yxS2-cjN_kW6-0TDX`*On8e!1I(Rz$!7-4&NjC8Sk zOIF}DD##rA%x9*sbCq}E@;1MbaA_p?{~}Tf%RYBaubQ;`S6R~wR2_e1AVIs+@loWP zwMZ`Oyu5Z>cxnV;rYl4cOnJ`ArJBNwMyqP;B_#2}HjYI_*X$d|5)nc8{%}tg(uq}i zPI;9ozmo^opPq2ih5oorqtTQJK!5Y0LkD>b;#dWF0qDB-l*b`Yx51|5C6iu8I%vfBcj+>MqFW*W!)9>cFUOyQCpQ`wr|1ux*U$vfeOGHV5?vFg;o*NNh zq_)}mm-nK#O&)s#wR5T6}@>@S%B)pii+EnqQ4O5rRMf2Bk6G)Jk!*yYgphlmJ=d)C|j^Y@iL`c4Srmyzg zgxvmG>T3cM6m~9p2lhO+)<7M|RNUPKTglAy3E%*)N}%g4k(oh8QWIMk39>N0ofU0% zIh;%R1&xm5=LJv7g^kjbWqLTA^@fMX%AK}-l0Hc z4l!UkyruBU!!9tf*_t%0Vx}v%%Cvbv7FxwcIdt>&-t3uUyp{U;>}@s)l$JZr@Nl@* zlU)_6g&Y8e) zW>@Qn!`HIwm;MF@Ai{1u-NOGgHEyw)&{!s7Fn=5l1u70N8JZ)cm`GasiC*Op$-cz` zv-Rfp$F7~tt4BuZM-03%r}-Eo%$k!CFEUIwUMjE>#f%sa@vY?)j|lr3{0?*e)E5e; zkI)ePxJX92%+!}t&B~ccGR1KzL0+z-?5&t$))u6C#{8L+5C%&e@*)8j%ntTp7g9w- zxDr8P*y8Y~SP|)@^FAtqgbeQyUd<5NO7J zJo3$4(9*rU-E(E`xYy~^nwudBprR$bZlcoD9sf&pPVxaLp?0?GDvFoX7qjKK9_W}T z>r{%%+j_$D(b$Xj{)dTH?*E7ij;~iA{>M_7#8GYI9HtqS^D6#q@Y-B(t&{nrrc(6e z#|3ZeRS;9GXl~aSoA*P~y>APyf|MwXtNR%;(m`*Ntu4I;Z)xPKJu~hofKQadYEs>7 zGAdFc$v0%OTJz<4K#JO1kOZ3ZyCso4STlNcv))*DnR#pRdu3v85+vo!Chw9vXzLg( z{DrJa8koInh=qbu^_pldH5BWhmW+-}82u}~zIHkS1|sZ^e1ZAtM{$c!pQxxiGO`^wczrz?Z#(mfROK~5LWov(_*#kVV&)U)y^s#R_^op z`JV$HNt>n75{A(dlr9aHzcFROIe^Q?o%Nx5Oe;q8))g&H_%>RrJ1ZhGlJnKo`l2v9 z#7XirnJ6#+`A=uT_Emh&Ow{k?=z1w!{MqoMLP9?t0N8LsYA*PasFR3@1Manv`B8xida{oPw%hhlNGt!6c3<_2&?)_?i}ie@Ka=`11={j-XbC z|L}s{$bYoJt|SbZL$#3PKNTx6xW*q$7KK53d+GI{k+FQ-&dlDa^wi!_)#3j9wYQt} zZtv)v`D)pWkLQBlHzzQzist{NB8?rE4BTE=)p;m?+s_?$@mf;GQc-uh@xs@bi_NyL1&h4|`ZiVms3 zt=kLYsM~v2Txq`aq$vF~pXBiZ_zE=$2Ta?7LC*&7{}K5cfH#<^_u!w^JL7@c7AiUx zDlCU{<9;?9>Xs@iOT2le`#hG1Fg(Rvme}m8Y zsHwiy<;@rF&$M;(zLrqynz->7IoNCJYsWa0HK-Q9`=$O(sX!1tIS!R5ey#>@+JJou+* zuM4?LUNArYmsp-q33^?O=s%B^%km3s&#Ts*$M;{}S~i`J`K^sqqBeM~M{i4bE%qE! zX&T)>eUgm~qYY&RFz3HphFktU7@9x4jL&$FUfUD=MEWHzI=UL0ERCbyi*z&^0!9*& zU?Uiv+1qint);cx-ly@Z{YK9vH=smu==~d~AA9c6oFGGFmc!rTs^JyH8-IU{(*cID zjM)vn*}Er&Lhtcgd9KkpHi$o7u=VN6Zt_MQl=b|J`{z&9pa3RbsVW-mZ3Nl3=Sk{a zPTteuVsTRFP~G(yC4?w0Z>FrSR#$CZ!QuWFK^tHLoyltJnL+Rra3mUfdWcHPSQT%v zR15w+CD@587QR_-sNri0j<3AJcf@$m<+g(SR-XroAf?z19E$fILGrdtx9E30qLaQcDtjik8+~!a?SQ z$KaFbZRDl_%|EJrd7FaHdHdy)2D|J^6eWBLphH*a3-6ixBpD?)i_$37@-#|GcFem~ zphOm?8YCxZCnxxkNrHTCQK@0!Ttjd7jqEjQ9R*1NV+C$KBtmbdnzXOW_Ldmvy z8PttwFJviY;XUM87kcLf+iSnvb#ygkC+)7C^N;(>h0G?dSOQ+@Q{#QLd7<9}0}N;( zJ$P^#Xn8&t1>u;7E(GJXM=`OY>cS)5XItr zCx_}qp{3FSoK@&$T|U%vf-0O0OhQazDJF6Q6I_D#MqMD4veq2NLXY7EaV zvz#U>+&ogbei3lhl9~}P&?}sK^ieos&=Zp1CGzkZMQZ}o`vY`%fRi6tGXpD->0%@L zVc#t==!qQOmmc_ms?fJghYT6iMsK!+G=4oG*u!=-UrekD?FZF^OxMlJi+d*O3hQ)~ zMgC5|VTI$H{ATdLqisKS3_@ze?${0DRQd{yHjdn3{033&5ZD%~^=ZCg{r6X%_y0XG zV1r3hLlGlvOiZYN7(LnLRonCpoZcgmx_H6y;DG@D`cVR()!rRDiCXy~HuU6h+jv{U zMBcSM)u-qP#{^10qx~^;?0RNdLk>3byM84&S%wE!54{4NxihGPEPeV}tT?KbL1oKy zsy-`lXiajKQL~T>JC-*e{f_}qkK6R>BuaZBefViP38Z1`<_hlS-T{}3Sx0x)USGK( z5mu*3W9GvK^N~VJ{`tKC9}sizw?EEuBZ2&-q-S5PT5kO@3}Qz_4NBwAG<#{l*8)&h=_?-PuAoRPu8D%qI0>QDGuC$+_9Ix)ltRQ^T{NM`AgaVyX)zky zel-`+3Y%&4?tV_56?G8FDS5j{RkvBQsrjXqluG0}@^Uxx%|@z0zyHqNX%Pnu{~sVK zv(3A2d~$cEVYM|vArC^}@+Jp?iLnI0)ENnF6UP+)OWKM9Q}^WI^)%}^GR1NJocv?y zhZt$6_R1c-*Q3NFSI!MP?p9XT`P)~@m`A7x>DdO`cVdLG4E@lv2amb?b>)=$y%NSI zKlkFnDV5sP2VWCFW;)3mID0@xWK86Q7e|DW`wGLXew^i!e}t$URA>XCJ*krD;J_bP zp%sRink2;hDW>`srLAPjrQ3}uPR7K?U%+tbL`x@kUprR(N%+p+gEaJN0=_u%U;i}vJUrhPzU z{a4NW6j&SA@0!8)rau6G8We=0DsG8_K_DvWR1GlVH|wg!*Wp=V(iGR@_BQ|10<`Iq z^jMlLnA=H6U%C&52#D{sn6tlj#ZsWOs7pG$>J7=}*}h%|LNN8k>Ua738$OVtVcISE8@avZ z>DB#HX+yWZeyY?aQw5A$X|kDs)7$y|GuJ*fT@;9uvv{~sm(aY~*j$RUsAxFqGUY#; zZ)ZoTp62>s@-7)x?eWeG2~ZQubRacK5o5BzAFO8j-kaqrMtVv0+kf$?sN$0 zMp2L$x?8#t>Aq+DeD5#TUDvhd4}p2#6Z`CV_Othq2{!#^CBgK$adfy|&kDf-P^vX2 z+Jz57X+lR7cI0>6{JAYt?*qc`)pOm^y+bL|D{_- z)+F17VU&SD;X@x};bFoWI^}YUfZ3Mm^dz7P+(Tg|)26_@a$>$E!{cupAGO7DcycCJ zq#jw?l1B9L(yU~9`Kff3!NJ~aZ8rB>C~s|K%sx}8mCVbB2468aNA}L`Uczv(*XY3t z*E0b0cGL||csR%wB`)rki#7c~^JF4`TQ$m#*oemMp?2-e_sb?M za+gUi=%`s&EI?4kibv8y@;(9Ypk(^vjOfd5Dg=(Lt=bER#w&do?ksWV>svSEDiSsjz8omqLIW_V}o}Ys5 z2!OtMPv#BGsKNcIXBv~qTbvykn>m6_H z5IW}PvYl5RKc@mBjrT(-eg3y8Wy2$Fl=d-p8jW8SHS#Iz5)b z?z-9%4OD}ku6pmfx>!c~YF>_bJ+jq7xO7B5leQoM7g$Dp{u~ZEJ1m9^NVN86V`t=z zen@RNn$IfyEG@wv+4o3arO%g>>{(*Xx(9Mo<7>0~x_XNHpd6q*)NMX!!F%`aol^bV zs*=dj&64;yUcX~)sq4Uiy{oLTa@S>wn7G)?vNEV6Qi$O6Aqo$zqNnnd@DQML@Dp%I zT*kIK2qT_x0;fZDxP?s*a2&mwcO-*2?Rw`-l zLpek_kQF)Y)Dm|VBWMz<_eW%H?v(X&|9W8kx-Na`qj2MpSA}^nqU_8k4>B;%fhzR; z2>8?y7RGe<0sQz9JHy}!ZrSJ0WH*0ULg>s*JgyCD>(B!$ciU*?*%FEA(D;^oIp^;t zcbfl*NNp(d?sScbi_0!Bdcdei76OpkVps9di7>l7qyDu?P?*dG0$#1&f8;%O zMrGmBiNo0@--Q9$`;s99(l$l!fqQ7J1e{s>Ej-OfR5Eg%fuhG3-DL@E39dVd>+A|V zU#6)LT|e0w5w#Yh3yUeu-G)XacciIx)F~M_mINWJSH)PlPy^-*K#IM?@-_OAqJCCG5*w+096?J^cFt zOX!B3z}o540%vBUyI7R=goU^={CK9B4^{!qq=OyoG*AnZJzueKSOTy251` zbe-`Ab+z5BUzuP`iun%z4DGx~evd14y`M*419jLOi0t5wO6|qBjn(qqM zW5YkMN0-s1eGYdUW`gN(ZvXfkDM9b9IOEax<_5MD8k$0v5jXDl;!xi2MF zg4E(OaH7h*cAs$P>d^NLENhIzd(38yfSmM@nv%SYd90x*T72t$GR7~g;$kbV!9dQbR@Trika(a6KWw61h^kTr>i0En0yDQ zhhSIVJ|51iwUYAgE5VGmfdUR^ zLk{iID^gJLJN7?AA41yQLt|s?P5#2ZM_VAFfAj({69p@eADnm{-|q=p=fkHEl>Coh zO)3w3r*oQ=q4{cO!7xDBlCiKL=@rZ0uDphesv}OTZVBJbgNmQTag7G*Zr)qv-N#OZ z3YsufQRE0$1E&c^;rrj{wVQ~5@0X^k8V5bP;Y3B{#F%;?{47lsD#-1caR)JFe9i$G`gUqgi=4kObXmUT;n;HBtVf}RuEZv6Z91L~ zp4v?aH>tUZ03QMfjlb;Fqbq+bG7Ac*EoXU+7Fp2VVH|oEfWt7jG})gW`F%vkD5>4H zvLnkmPX8(I{3;Yf2NiwF!KIHz{KRG6@>m+UlN#24A6Xvy(Eyk8Hmu+DS=AhdN>s;{8&LA~*b!V3 zLg%fb;^RaAH>r)J3IMsvxey@`m8Tk@P%zkQE)WakQe~tq7`{>w9IOr8N=z&-RHk|C z+obIGuPqh*XMhp>ytl$%%Z5Sz=uwYsegyTPQN)U~0&HcTLOmMZBLYkK%_*M@D`*!L zz;;Whd-E!$RKV?e&(n=7K1sz=H8cwT#TlD6L-c0Caa9-3RN0i?JKR!ABPyS)$bA>m zhvXoOA?`$2f-s4J*3_6WpYng+}e;iSZ5Pf*I z@x{n%oA=H&+Re63P6Z~Y}qWQ^x1Xx?4PFEkFx&Q!$^UWuO-rp zX6Zv$14^>++doB;BP4tFR?z*Ra!H|)glneZOqJmWBkOAm2^1(}j5;1VF)9pu1gMz$ z@Pt-TakX>1LKDpP=?c`Pkdt%Nfl zaD06mTojq5(LunOIB7|Ui>B27)vfkth!A!q1T~v)ek#N*#wCs|{){IDS;h{#|6xpm zdNsl8T&(`h!&=)(hF`yWS{v^ff4hh`wyS_=MBg>#TiHo;_dRKQaPs|00z*y(TF4)P zCc+?<1=!LL9CY5@9T~UVionz1m+N3W!Ve)eeYel*gXiQ!>O&y;V%POKopP{|U%6as zk6fo;pRR=vv(*}-yT=c_Bm}}ysaC|r(*rWX zGz8yB{al9`;pUj(xz;YgF#KjFZ7>yuCR$mw(*l?o}MpUUET%$jI25fLzNYi)u zCIS?0P1tQkZ$X-%lMD#RCGcQ2$po#T92d8njT#8RDGQ!ZKNd3_E>X??7adkB1Jr!4 z{ks>}@0ib^Ve_9gGZl1x*HAfrG#72HkO&|jKOBMu8x2d+p^@%1G@g#?2@?3O7Z@xP|xj z__N!St_Fwz+nWfN_*`!s(~HY5I!u_)x&W-TNYFaXFO0#-!ErC>>hv}vD0O*Lb-1Z* zt4f4EfKbiF+#%>m@tEuuwxal^`(uAMB4{2kHEayY(PBdZWa0*dKB2ca1z=E7u^j|i zrSNI#UZ1>qryrAhQ(hfm#3Bggek8@Oiq>T4gYb*U;14s6raHMCYQ$Zs5nFsqBQJ}F zVQWN_ReS_6P~Y!K1{}^pwpLJl-1Nc~`ndd|t`G20Ot%s~aZ;RKv;QMq7e0GP^yT~o zhGVJ^hO6sWmzk;|PS+pKAPt32)^D=;7p)?+(a0>IzXAHLx5Cj_9g=>1wfZgBEH~x* z=Uz{^nJD@aU)ZlnxIrJJk@Q+Cj(1s~b3f1;AxAv4RWlQ(qx($}%h))A{W43Llu1pt z5Tn1N4lAK5wBdCi=JyA`n__Vp!}c6a;>9skQwa%$p0W|EO%-AETUPuYzRC1^g?y-r z{T&(wgnl%0u<8Ecj}Y@DlZl{;03*V`FDkkD_1_quficpImOMXZHW1~1Lj>AzpskeY zk4Z(JUVPT-RR{vTHyEh%SGJm{K9h_D-u?%}Cf_RsrTBar2x-CHgtbLgW-PL(9cX&< zW1WM@#MipvPlRzf`7#)tH%Bi@v_y(Aa_=*-1l+HzvG^b?!-hla7W6R{_KPa1@v|4( z9iw*pUCY9GV+Xd2)#-{q0Hl})t&P4}7PG#N5cRB;(fa2^rFMR1LNoCefZlqRuS~u1 zWnh&Uh`=XYC4GcKcUSpZQzW`+-$1S#7Yhr^-l)i~S(lJiR#};3Xf*FnbXy0YsiL7@ zZfTU+*=&r^j)#_`rF;7UBN2WBP@k;UE>l7K<6`lxr2Im1h5-gQY{>#`5HktE=J^ zGSU!d{=StWWX`UVTNbbyCxpStwI4BON6&QQ?Kb&{IzsveVyjA3%KdY_iSBuj0bnOf zJ}>-NGaQE*AdX&Ud2pUiKyhOl;szd1m}P-y!lsNm%jz1;E_{re{X zJ+dW6SOpO#q6419KCh{#tU72SfEOhU!mpg!PbrzrA@Z zH)@B!M-gLYjb6wfI!c&N0QrP_=$wig;on%>Ys# z$p7e>lq>ai`7j7HK4B>?iaNgDn(^^A7)ia}i~RC4uEx9j>B3w3D8lEoH|@qVD^>L~ za&zCk>c`T5G?Sp5Slyy*kjIv~&OhWaIrvlo2X4Wp$ZWy)qu>6_jXLIjd4P8>5)Z^m~fj zhI2HBa4SAYi%Y%OTu~DUZtcDo5h8wzG$mV`rx&-i=B%DxZu{2HLWmbbEy&w`KWeaM zhVQj+d7GIcyldTkYEtqmp4-Ohg3u5HY*o?a8RJz2;D!R2Ys;J*oTj?UBsoWi2T?ywT=Uu)H zp-N4VSZ>d+8?)aDS*qG-6_^KGniV!Gq+RReVAC=l3l^_DE{3QU$r0M9wwNtU(Jmpx zn@+IOida7U!pmc&JT@6ZGvuctA{{+ECy~)HCYB2t z^Tv5wLWsi06yZhXL&Ycm%Lump_rN#B;-2z?zPV>2tR1x4PQeCGv%Y z-jy38nphcC28fV$b(rA0K1g&w?6?St)bhHV6WiFD&R!pyI(WsSGRDDP4ySz+k5A{Vrp8kky@#mxtdHf0~nHaZB)$ny-(?0+=RX{DwbffGoX znlxgl4bJ>8iU^XUHe;v$Qc2z{UoVfpqCa1f2VrG+yl}8nN}b)> zlsDuU+Mne&)qY4?$m5!4P8>DB0)3`#LgGSrc;Tq1fFe&weC1?FrU^wHIU}&)(7qVa zurm^@#L>0wy1t;2QhX$I{ycgo=#LsQU`b9WRT(M1YtJTRDxq+n22#C>kXR2mo3=-o&2*KA6(Sm59IeJ)Kk21+%VGPs%Lwn35k_{dA=}fv@Y2opD+h z@O!=>)Bc8)oz?=PsgA4^F#%DuD_x#~=)azY)5%hs>J7Tf?-sz#!Df z&XIP9v1g#` zGq%9iNL)6zU^ljf>7e~?WuZc_pQ94)T$Fz8HNd2^$>B9uEaq1~EWw#!7AYoABe)+R zJdco$6W{rgIOH*UKF21PG&`E5`tZGBi%W&FU|_5vd;X+;GGCB!Lv>@FQs|M1>AF7z zEnA!)5r`cgxJBnUfZj~t^O?#G=<*A^bmkGX>G~Bz07?BW+i5%xG`gw_J?L-Sl;^+A z<4>mW{-sC09?xU$WZ5M%?09YMSw3&uO1lCRj7)?jef{0YgphaP42ot&P-Vf*_c6Fa zcrUI9l4soXsahKCbsjm z9JI2IU7~PXCyO?+3~46XQ9k&Xum9E-lZ1x*m#kdQbq>I4$x2nK=&q8^U(>Np|DBm@ z92Fzb>D^?d;M3HK^%EUi6{vx{P6M(7FHw>`8hn3|Wn?DllSLQSMvW6MYqTwK}6Gu)U~_2I2tLN9n2j& zbiv4NtTUGJoL;+npK`ah?KjntxUu8Dndo&N;Lsej*y; z=sMhd-yZZ}9q(57$%WLnGOElI45qft%H7PDf!Fkb64Xbs!S=^0Scod(z>7}D?zkHF zj#RJBw3ZnTxuntYf+1y*pIVRw6U=kdz={qF^GxQv`g*s%<-;Gl_jsBT0h&q?3*kqF%blE@Z^J#cWBN6Wt z&gPqI74MI0Yiy>_d)|P(@IcnmE#iZC;MvJRy*JasK?d{wRU+`&$W-3u5ht1;>x@M1 zbopGr`r+eLk(@M~l3(xs(1gZq^UKhps?)LK&zD@Nv@G*tB!(uUkzi46sB!5A5@(5LXJ=K;-~5}7&PXp8 zf&zHJ_psu$&#cLn0V{TDv8qFx2QJ;A}SQl^$#jdd?YB z57(>oPE8D8)eaCl$@kNAUEVXQ2z5oqDoNrBDxgGnQIkB7h7$GP)GaH=>lvp>cZC(M z9Udrql+V7;fKl5W7`Er2oxi2?7bb5 zg{Ix>_t?ZFD23blSv-B-rItPKgLV@_N@;?o2c(0hL+%^rBd2BuXdG+#PRpJA5Akf% z#S~cMI7Y@wFFpZ-rJe3oo#GB*0}|CI+0pe@hS0;q(#ufLZgp6JqbaK|=xFF{{N3uh zS$d;lA97A}gBcDn!r-lMD`v0LqQwJ&>AlQEfFe%OvKSPmf|<&NL&rG8IQy?0Htmv<^6aEN5n5=#k$tAE45jB7vlh zBK_o}LC(9Q^S5(BK(Bq%;b`@pK0=6-oDhopKoM^MCI;Me^AS~c6{hOz`&E5#g;jI@ z@HMhr;xg)Q22u-l+)?>(P7myi*jP;v$X0NzT3I9zr_1`@n-_(dK5RtUL+X`2VGVd? zRo@JNFDdNbv_XJx>nOFe>S)}c9XxiJw$TX7;84JbddX9IFGw(GY;9ID3*OJehtb++ z__tGC1qLCA(C)8__+gl1-L^8aZciJP*c5q`Dxib*ko!a%jJLNd*a9vNDNTlH#-{UB zj8BM=hRvGM?$>W3ZMW%Ey4J&V3X-X}V9;_XRHm2{_@s{}XX_Thdibo^-}-6c9EXTp zH*OJ_({VT{q;Dc^fqf?cG$l)ZlJjn+zo*rXQ+7UfQ?%w~F}XG@LF5Zp+mw*c)3Ohb z4(d^N-?!gZs@X{5qI`8=e!qzC<^53{#H}3)4_nD*Rn@Mq75pQx@p`*<|G<^eO~W2W zkz3gpL|N)a{sZrF)8G(9XXrm*8vykDXk_4po7~{_`9?gwTztSz_r@+w|Ek2fP4|7j z#k}}~>EL^n{u8e{Be$nV3PG2f&4#)9r%eHuXA`A?rB2sV@tQxmNFdeG8&LP#npTtk z^vS(E`t@IWquSSU>d6ALf*DMlIg-4hS)C!wgdakL>e@pyqi`j8-alR@M_6J+`G#V| znExTYxq8X2tOe;;VtG@MAQESikgCp*wbWse59yMm;CYpuEM$#6c-kD)vwy8`o40Zr z1VJ&y8nYf*C0BUzv9)s;z3|zd{JTv-H^X|fo)Ma!|z($@P_w9-o zN}Or~IyXeB!;(`G4VR}FtxJZF@k>#g1NXXSZ~PFI80dmj)xUDdvs;F2=P^%0n81Vc zTi9qv;H!QyfuHCU}z4A`jJ13{!8t35b+ ze==@aLGtRzZlo%2)|D#lrcgH6K${Vb{R;^QQhg*95f&*Z<4-T3Ql<0eYPe6@WA?X% zL|!D9@uW*z|BZi!p>HzZ=*^YsM6XlhB0;|FD^tw~=gP;c0$T0V1R?lsWL&dT=?xj3 z1pj+>X%kgi(e7(KKAl~x#V9%6$nms%qW9FR1#;?URXPAT@r6s#RWm0UP$KakuKoSVb;ABH7ZES7GIiAi8jbt-~;yJ3a zvricRS({#;G;fWMeiPRC^v9IahlBVIQ*5?Sv{3xhJ{WH?lil_>+)xs-_Ha%WZE*$L z)*vjqT5su#v4`8r*bAf!^7&#|t~gd&XCzDAY#4BfFAl`hI@_H9|ugk70j%3kJ zVJ?0h*%W$kUFH4cU$t`*F^AR5+`#3clu^{uib$zpMNgr2%0lIV4m;SOha_v}x7C6l zK5$s`H&Abc_p@6bkNc-0whPvx2m4@DdUCP$k6-NZ%QIi;V`TxvLW&MUG8r^oY^Yzk zIny)NvwAG}luqC~E5d|-(yWNW%)A!%@l`S;hR!W0C#{zrt z3mI_q7^&N=Y0~mn793&yfY}MxL2%zs*L|32BH8HhgV6BQ-RIHTy$N;-vB@@`Sw25X zzFno%+@xnM{L+*{@%ODTEV+m<*PB5r5}WVt%|dC9wsvfL>t`=}pHLv-oW@l`V|lo( z-{7p!wjhS;N3Zgozvsh3ycy(Gx9Hk2)HWM*6tbOQM+~nuHcJzK_$fxnNHy`oU=Spf z610O8e0dJc-QaqDnr2cb1hv1D7>W5X08dr7zvioA>V^6HWiV}e+p^{=ks!W(!m-L@ zfgEl?`@C>2R*3R(38WY-FH{{XUx+JNoQ%jRnc)I)wBa8Aq!1!7nFW%af{Vu3!(Sef zBTh}2DsJ8&K|tW2st-`T&;H`KQcXP?+nr^U6LuZ-Z^(-oo+X@nnp8~m{Ois4?@~1x zZ1g=upRaeT%UOWVq8=sFBu<`MkbGf8#|t|Cm-Zc|>GU?*4m%iep$sOpNlM(_6}5j$ z7>J;wC42}u_wjLVNL3vRw7m&`ybRJFXi=tbfMjK_T(7ov9B_YT=}*>2 zF2`C-B%~rL_~7Msl({k5alk*2KFoU0&O#gVJa^NCWVW~ADGm*uoJ1LZk4w^G2m8oTSHg!=x=py~nU>uHGFITR zI-7R9wS$b#(K?Uehx{9YmdFvWo{P4YF+sdq_u?4-a7#TYu5ptu zobST_H0W`%0Gd(mK#y~)$tB9o6h`aJzZToMC)XH94=>YzCO>61_tiIif8oPWo7LZf z``PA%vc+DV9GUFfVWS67@EDxA@6%6{^-}kr>V#moJzz^2jr(H#HF@IMcYBsky(y(5 zTAJ!C&=y`?EuM1(Xk&yGYcy54uLUI;Ag0*Bo8@GCl1inOc!rmc*HuczMK-oCU-+>= z26hWCw09V3kF>)1=~sd{pFw9ZUX^t0qk=)Sn`BS^%ag)m2H0w_4T4_ zMa$Uu3B&K^j@gyDa84rSgOI--u@0x{1$M z`t=%tFJ+CSdUR%7uvQ1xt>7Fb&2YFC-olm zr{E62)wz@9%=zKve9z=C?Jo5ip!nvS?>Y2f)*8@SuQ6<#noN_HLe0$s$yORlk19#d z+b0lw8hsENZnr<{`74hHGWcwS2>BW@1-@e3fFT4_e!0aoKz~KKp&SfO^h-7Q;jP^2 zsn(dLo}&TiaPN1<&xe%&2x>fY+MbtEQ?ZFJDQByUsXtK!ZBI9+*<(f%8Q+#!7*kB` zZY~)(t$~RDt+6Bn@IdGiNrY7xfzPY8u-&50qS&>CX>Ub`#XNGeRwA3Y?3Ay#sshis zkQH)Efmv(Y^p@M4JJt7*YgZ5#ppb1keJ2cs9?ch{_LGHR@{r8ue@(OraF5|Hf z0w$7-SSm22=53If8o>O4Us9nBCBbO_M`3*c8~fZ>BV^1^WQ6jd7-dk3H8d$NTA|7F zVH>?E+A!TzG3ap!4}?bPJ#`@Lmjf?ocFCS=LZeeAut##Mpogfw?Z$y?pE5FFb%bc~ z_YZ$DE#>ajmuVQ|+kMqoHT%0LNUAp1wCx=-LM;%>ig zM(1oA`?~596Ew8QAZLB$z`H6r8cS5tU6A-gzt%VI-B${n{*qM5%E@kyS4KTG_L&4hK88#+ zK;&wArv{>)+khmQ=Kn{&Rd*h8+qvxqED4GF9x6{O--j4w2a?^Xs_1r`6Ed zIOjb#gIW$c-s%c~h}K*7@bD;kVy~fB9Xcn1;)wR6t~#na+M=_qI36#%%ly)ZkyZKN zIUoLFYb_*bJ$fszZrg2nCWOG~WN+o?gSjLdAv6pSC?1L_g?^Zz#+!VZdu$>y(eB%! zo5M7?ImWCtVx?N40xDP;6Rqtw0a&I*H=oPwCz)eqpjKt_v>?yZfasjWs_^O_V4fk! zRKiccCaxUZv#{CQup3Xr;1AO5JRSFj!`M6mZEq+&y6HhAM4F&}z<`%L)a&k*YsW!#PBi2CB`Soh{d2??x83%;|hR9nQnj z1sfBm;>0mw_?0VJ-ralxZm)A_lx<~x&opS*9(rklm2s;3sxqSJ$O#tF_aI>u^M}8~ zq{1*vFu4yYD3`{PpEiA(cYo%pp5D)db^q{BuE+c>dRC(Cn@|Pni9FV8PhQw3U>B9N zpq*RoZ3pUU_>A-D(Aid71bLEo)(BZZz?1$JP(FQj@uNF*{g{ybnhmuwkCwu}E$-VQ^ z*ZIx&waqJ%SQ9Mp{-oUTfO;)u9NzSb%{$8t)>9kMPv~&5K?OK-GitcPrmw+-= zoHCK9K-9S3jC>*Tx8+Fs1Z=$IqZ;!zerqLE#-RrLMLIuNgrq(_+}&9pIjD|XYOzvu z(mI}HNrPJ334-&HRV66J7~I3 z?&+j`DHZh$$vGKwsyq+*uBIh4(>WD>yq7FWNBJsY%)x_5JScM!pcdQeE&jg|whV_1 zB~!v)Rj)JOvz12r%$(8vUaHk2pU~70*|_ZBj(Eu#bK1K>w)biJV-o;~XT0g}Xyv&k z%{^;3n6ex{x^K1W9Xo_{rq4@w(MR$9#<+9ke4Db-jAORRZG!2*4u zkPuI{&%l~d&54*h!Wf~)0{_LL16h}gB)|V(wEW*<)V?6=(nJSt-T`fu zAMqh-t&$U(qAVG`-bfd?Bm{9Qoz9Ir)?GTX8FH$~QkTE%IlhG*%-4>FoKFCHS3cO|a$(hZJalO1IHnfD zp#zfD)s9mok)`7K^XK>c!e36;?>P&8`S$8>DiE4<|4k1zy~Z;8Re{+(>+#b1Jl{Gu z-p?$D7i3o9aENvYWD9D**Kue9pR%zj`GVS62D#Os0}TDZKd-WSHBu26 z11Bar+x9uMKUtyN;W|Id1T#Ps+3Vm=X2yTJ=*A^=zhRi3^3{*ZnK35jLyFkqr{7y% za`%N(Rb$m+DoJh(_Ca4t6w-iqg=5NmD7J7rUjX*ONxJt7^lZJVFD;j(JAPvm$RK;X zMsc5rL2nUrfIA2J(7Pmobkjw^)M3N*X<%VKSK*e1fKoKbR7#MyPE7Pak>ACny3O9h z*;caCupY@5<85D2{-zE!wBv(mM&v+4)r>{vg0#Fh-};Na)zi4)*3K}gsg}Z<57^vC z*oYO%pKF76-E%>7CS}K`-v3FtDC(nei_7h zUy>k}wuf8|mT*Ig(jGWDaR5yR7i zJPNoZdWZ$UdnMzkfOArX%17I#934g5{2GUgYQEl|?g5|$F!FAAWlb*%1SYTquk?E| z;he=iZjc6uv5tKc4FXWXTv80%aM4D%Glc;H?G$BX5kW6|Rs^aE&TB4}B=5jX`?uis zj<9Np90@kJUbsoc9FzuVcp$eUCG;x2HyLt!p@aAg;DiXGh?J zFOiy__l3u(8+72bWtw9Z&%_o3zr7Ip=h_#(f(RD}(>zBF!%-v%b(TL^Olfs!#iME0)-C@-YF9)|UrzvmJ-=DksBRcU-_>Q_07#l>09vcfK zjJBPj30`&=(3hUkMFCGTT0Jv373{G&WW9eH6s?(jR0Yx>0u{nTU%XkRSFM>z?szf0 ze%^qN-5mOWtpdO(ePM3!|2&W!JkVmCbp8$|B0SAIqr$JO#oUckO4g0w7Q+p$)8*L`rrR+sD!jTH!-T-+Y7pBFgA+wJ0MyODxlyCFE|&-YSop zN$O%q5Dmm*Y%p5%lQhN8k6SZe`Y->{P&gU~0+U+|+J)Bm!uL4yn=xNR&|hvg%QBOO z#x9jJ5$~roL_CAm*rfLo@K3KsC2P_{?wv;wgHj068H{1Q15Y{}YP)Fj~gk9@^X(BZSf|M;53%ksL~r zAH>YT2Lu3Cn*R~SE}+EZn0YE6NlS(F^nc=kx~C4F-80otlIw+f@F9gUtnpz(DXjli zP#7+$sJ}j?ahx!v zGyZvXOvKoMC>@FE^P=e~7|(IOY+rTlq2v(SS{17%lpb6>n)= z^?yC5@z=DY@ljXK|7SuK2*yi?HJ-i-c7U;~C1`9O6$l9CU<*SkxNLkDs<4DwM@j`< zKK*TXX0mWF!8@kFA&8+HWr7m?^W3rKdyP`{TV7N&pCefh`qEo;?Hubg%5}dC4?TU= z<4}_eD2NQK&;(qRIY$6i=o04%Ae*Ol%vBa?1g*>Ae7F$kotX}qx}vQ&XpQ3WeXkhs zL`Fs@zntz*RxP6(a??n0%{^i4Bd0;?MWL()2&NEir}YLX`I`r`FqCXd+}BhWjN9tk zP623LvR_mnP9b!Lydhs_Xi7i&I*qGIYsSw{L69y?+6=(HdvUzaKS=N^Niv2Uu(#$; z!KrSCZpxEUBxed4Ai62-?m`(<<>Ii`CElNX5bx5jllNvnWL@`tH%G>HRj#JCJqajp zhh(>1iIKNw4-}-7*xovovJh%s?nfX$cxW7cm;a4bH-q4a-86RsBNWR{PpfV=H?1Ul7^^7>Ou{}p#{K!7B39^r1X*+&AM)F@Z74=5@*vi(J)cr~?7b#*44 zO)k-<@_Nr&(N!=7H~1l#4oGwaYicd4bKYg{K2@X-=QJE zxf?$6OHE6w@-)EuTc)tbj=GYYpTg1M`qng{jOW=Xg)d%R5a6Nx*8(Dq{@u?aYFs*B z`hrG^ZnIdDxr!LJIhu{_8_bTDu*Romjh@9ti#F36)o(pJJiW9nDN&j&Axm#5bt)~w zy*{PMHVvl`x*sY{audg*pakUPKto?5g_5RaK|tteIg3OI|6L>Q@&t5_+t~iDf|SdO zDN=^$)d0i~K;M!g$Op-dLhv=0(foy^wKMa#-;=~ds>FS`uWzIf%_|4*sd8o@f}V#f zvHe@@j+bhu0Zq1!scLZ`YB}L?5-pOJO;<&8txjfl#EJ?PkSfdkU{{Whx3xSxQ11^5 z4OhU^8^-cMNM7=POK0tR3XM!BoD*KwtM!g?bnH2gKQPgX-DphvnqsozU4eUjb{;@5 zGU~nL*$^t+LSED-B0kV3F?pgKuTh>LQYQISL71eojI?n)e9oEz^k6pA>Cb* zusza99fzTf&tq9LktR%$`kVVs*VKKhUP8r!n2qmsvtgoQ1?vFxAgSO{R^7|mm`;4e;SO76z3h3zlRXq-~NAEKs8!f z;*dTya6>LP4cIoiG8q`uMYKr_DT-@|LyzNhj02?XuH5sp1`3qL_pDQWy8xbP)Nr)s zH8zuD%9-;fo^3!@;vi6nD&qCdR7H)Bj!A_~z@_+h%Utu>(mNV*mtQ#}uBZoO`0Hq- zA=R&bWNUunvqG_w3s3C>+a=fj0LOsFLSkeUb6u$VF{T$vtA#ysmoo*FF_E0 z<=Xe=Y_sY1dcMS2oNd$WS8t>uaUJQHlfPP!pOPS+CU#r`MxL(e;o)yL z30P8@|Es+#4@)v@``Aoln>90)Ihi??OHE_ixRnYvEt;8H?zxd#xscL`D~L2X)jOG4 zAmb;P}E+|r&%V=tff~i36Au0+Yf(Y-yn(unw@B04u)<3@M9iKl`I6TkcoO}75 z`~KbM#HSr77ujfUS;AVdCtlEwXSf_z(aN~(n4?t!9z?g$97dq z(v1~;0SoE5T!L4K81+X_SC{W^M|U+CZ18XHU^d~TvuRd`b{t#?7pk!rJCYIuje<8U zewB!$PU>12sQq*;=kDCJeDPry!}M#M&+m+>@qrl=#Z)$#)(iaouLQOj-0rS(&GYk4 zP&cU$l#ZtxHyPs=@0WuKyWyKWL;C6Vu+Qh&^e6{Ajp)~1_F8JrP-!r@-2r7bMacyd zigppUR8`$z0m7VLW>?}McA4C6eCSYMcx0rG97-3h7C?8gv4nH-x;Y#U`;tF_FMGg? zvXpUQIv^sw7%i(!Ok{=4I`2a+2uM(ziJ!dn29Sj zX+o0e%AJ}r`bt?@S6atsj<*)a`MvQw*ha85qv!KqN#20#f*zRR{8;%f?#I5l9D~XL zv?1$Kz4ovgFSEI77Y{&O*5bqmWEMR%?AL1SY?~Fw;-3)X1WWxSghR)YmH$D?vi(ih z9btF1ILY^uXef1)0ZARdedt+ATlgE_n@_SCFCS@f?llwWBnI=xec2_1ux`M80Zf-* zuDQmoM!)`nf&3uac0d@X!!)qcD zA+AU`Rl`AdAA84wXEl;PvdLn;dZW3K>;|r9Xn*)@_ZM1?>_rbx$ANvG>3M}jc0P+0 z7sBf+MB;e)pdLulw_1~4S5q+^eaeOjrFhf@`tsR^c~wOiBvEymdSv~0XNuPJ%v3jv z1#8a)QL>R+`aZjD_Lyx-X+T^|Zy`OHZZF&6vp;B<;a4^=O18?#nDTt48>W|Tsb<@~ z*`d@SwLYzldxQUSdx|96a$<_+!WE8FkVqtzH7Kc^kuT+@AEek3ByVbRBQy8s{a(-R zrK86LDmutCp0LWZOf=}lyC}|1(-JN$aPmB790S~vTzACYh4FJlDWl3!`&rGXIQuq& zU28NUO>B6ga^TBVKLfh*e1lw;C{d0z1Do@`m~6Q>P+?&F3|Ogh*trDZ@4|hXmChej za~v0;#!VOHtmxW1=8`qWrj2Z)fcA7)D^}&O^W=QY{9$lrSH-%o;>|9P{bb{4XGaPS zE<&+bLx0o%S`&`FqdGNE7J`iWXv!$-imIQ}538B7$Y@ZTd)rMYw*2}X5{Jt@AkE*T z4R0GoqzX|f64I#$V8~9y)VVqW6YzH6g1@}qVh#c5D*r~}PI0y;s<*B}IP)cWzO{)j~q_ ziVDl!bZTsQYGc{4A7NJ$Z>3$q-e%uwvS~4*) zDZn6s_%WfF-V3Pj<^oaC(?V0>M{j;dCU0G>9Y#IPi{bH z+etm%Mr3#~3bJ(2dJCeZ@aYIsE}&N}5d#Ax%r~fu);@Fe0qhd!;44GO8pacBgAy z(!^3`0Cs2!HokM-OBCViQi$#NF$6ty(WW~d!Qebg zQC=~XIVgv!P_j^8GNrvur&isjq4St~jo-taUQ5+lLA3Sy2-e`?Fjp5&VSs6HdwbL= zJQ|JeWzsUF#o6AjW$t;_nwV4I;b3Y=U~722)5&FQPzK~teLnk+ncoTi0%u~^g&%G* zT8-`@4rYW!1JnWk?5AkQ%Nl_hg2PcDB{gw++7MyIHyPvqX%E{CQ~6AhM4k7}uoJ3p z(=Y8VPCslImGWXMu#9Q@*j!|l7q6y<)y4VKbd$y@g-{_wGX=JMfz}A(CSq`tAO=KP^hEUw_PM$-3d?DU=eUt!iNst zkLanFPWT^W#ty*eliaHIswQwoiaSBVW84#<#h~Up8tE`Bc`&p}i-QzdmXMMx_NDD- znMoggu`P&OIW1vr!WE{zF#Ntl{!ux+<+*l0r554NnN4w9J`P{z2RL(usiUNywhBCw zpQt12ZIutahwo3**L#o9-YWX66uq}1^jM;od&q*BrQW{2yLIiR^^(=VyxQ`~7kv^o z&kb|UNrAGrbydFD)>21CK~Bytm5m#NK^-;N$AgQh4?q%wDL%bD&J%SCmxHU8xq>C2 zE7m*fK@}BO`y5HQ8s^+0 zc?0(7U-@}-4N&P%eia)}mgSkx(>-}DV__U7&&)nQGnslJT%ktn7!*IdoitM@R8WTj z`ORqPFgT9wDJaW5tE^Fdav}=_7{R*KYAbIh=Kg>sbz!W{84kKGdv*RKb$K}v)ajI_ zrs`nFhu4n^>3g>)PHtkbi%cso(_S>8y(NX~@ni3z1|x_jm(gcK(`>ilhP_CgHp|8@ zh@i?^+JOra#sqL%8qypV#Y&Lp{)v8xtFDGAFxZzbVZfO1xojU|ZjzaE8a9|Dl||cf z$R0#jjhde(u%M9c`F8cmki(hODk5B7J07VKvls^4AYPNl6>*C86ZaO3NxY*hAEmUV zajN|{GMqX?dkFF{f1xdPa zp)q1Uk%-+T7Aw+k)8@!K+MU}VcVBOB1nai3zX7+p_9}J_B;mt!RAkG@FWg1{q+~51 zZ^H8RuoAd@=BrY(u&0W8zxD`R_sf@$E_DRbbPrfq1L}Rc31#*cE0(K~g{23XMRSzM zLk>}siF%%6bJY>AYBYOZuNG)E4tU5vP;t33nNn8l@IkcbkLFW&I*k8hXKZvr_a^qy9!SGjW)D<%o7*Dn1tA{-i>Ky$_zVA&ml*sBC_+KSi$ z;!cW~8i=Yb0O}Jsk*D?r+=|Oh9oGRS!ls)Lx@?&RP_0KzY@tGw!Gh#$vj*xnA6YZk zO!i<8C>60#ly%lH4`4-}aC#XNGjHi8C)Nwvard-B0O+ol5eZH%E-A7RYk6*b>J;&T z??<7Yr;v%np6d!cZ7FUvRty?m3wS0XR{Y#oFsDU^JY5g!)&NWYrhHjlxM>kU;r!8M zgr@`*`yr<}qA%y>Njx9{6dIQ%*xS;Kgu*2wl$9sn-@$_91Hy_9_$}*hMoch8Tz;qb z6Ho?XD%qw6F$gU=TXJ?K?gt`&APoL2FigI>z`r^4Q^mm1VSTTMiZ3Sl@G$=rUNLq+ zB>;lNYiW@E3X6)N_$PZdnja@p=TcwaE2s>`Sj)vDa2vc-cGb+hR@(*?J)U`Yn;DvR zU}-*BFVoWPnCxntqzz$=Av{bsjf!L~LI1>L7iV01Ik>L}SmjO%*jvwk3K(2bY{4UY zi_nxwZt(haUC8;z?z!FNR!T=|&SOtC15G*wG|3=f;YYBqZJw{@09ah4rw7~MebrWD zv*&-}&p*A=$5d%_`>Nqxt-Xa6FOKm`1I!v7BnboprmCw-Zn}ZiAP=7p!C)|~MlOlL z?#bn5ccoDmIit<#dB#N`bQx0Gjvwx%zWeV12DJ`GEpn2A#auqM#rSI_2Urxz_nw3@Tv%mJOWph|U&+4Zzt* zMga6nzCS#1`fWDUsS|mJAe>#?+{u~K&AzV{Gq_V_W8h5DeDp*>|Fftm|q}5^2Xdy*Y<~VfaH~n3?mzl&+y|(v|CvWYNF+w%hP`k6BgXOV@~j?QCZP1 zV3Hg|_iD(?-Tx#xZQ?|vkC-P8eMd7d_^wpN#4dnuHu~WU;miK!2<|klcf`RWKR3z3 zS$D@aeHS)zsGcmmgP9kRxIMs6i>RUtHO$anM(-q9J=6`rusg8erzV&CODyGVZ2zLv zmOM*sletBhNkU|o;}Evf5=r}x);NDoee82a7k->K3r`qcru1wrO0~z(CYT|821+Nj^lG?43V)@_izD ztk)ELpCqp0Gevvciu&(+Ec#%V?EnxN^EOgC4b6hWNG81#6cw)1kbACsE@X=`*Xb7p zFjv}p=O|s*`ui>Io}SARI@6Z|c=+vwpn83chCtok#8zBkH9>D8KmdS3EM z0Z|Efw!*@%JyP>Ij{|a~=fAwV;#wg`R_|F!AcFsXP*eK;(~D1+7DB!bqSl5OXjl zkk+#~Tv~zBc~bM!BL-f{HcAkK?Kp#y$zVo7l|ObBqz`x~V7k_M6Tpo!wj+9b4c%8- zr9+`GV^ew}+8o&Mt69LZLB!zC_jG$N;!7x_~UfL z;&b4*3}JyE=#KlR?le`vwr+u(0w!ouw7Q2j;iUC##_R>q_n1L@l2LDQPT8fmqKk_5 zVBSFY743KYId~6Z*A@FJe;QMRegB;?{Xdwdzi#=zC-Q%d=2HakIMDc>!=BtWd20EYk0;gB3(8~v(=pzR|6}9+(O7u5<`Msj) zzvKti2a-Y|kX1yR<3BsE5G(!~sDE8y_m8 literal 0 HcmV?d00001 diff --git a/packages/cyberarkpas/kibana/dashboard/cyberarkpas-1c083996-84f6-472f-a818-4ad5060efc81.json b/packages/cyberarkpas/kibana/dashboard/cyberarkpas-1c083996-84f6-472f-a818-4ad5060efc81.json new file mode 100644 index 00000000000..983004aaf32 --- /dev/null +++ b/packages/cyberarkpas/kibana/dashboard/cyberarkpas-1c083996-84f6-472f-a818-4ad5060efc81.json @@ -0,0 +1,1965 @@ +{ + "attributes": { + "description": "Monitoring data from CyberArk PAS.", + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "optionsJSON": { + "hidePanelTitles": false, + "syncColors": false, + "syncCursor": true, + "syncTooltips": false, + "useMargins": true + }, + "panelsJSON": [ + { + "embeddableConfig": { + "description": "", + "enhancements": {}, + "hidePanelTitles": true, + "savedVis": { + "data": { + "aggs": [], + "searchSource": { + "filter": [], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "description": "", + "id": "", + "params": { + "fontSize": 12, + "markdown": "**CyberArk PAS Monitoring**\n\nPerformance and resource usage statistics from the Vault application. \nFor PAS audit data, see the [[Logs CyberArk PAS] Overview](#/dashboard/cyberarkpas-eb12ef60-96f6-11eb-bbf8-d77aef8ad7a6) dashboard.", + "openLinksInNewTab": false + }, + "title": "", + "type": "markdown", + "uiState": {} + } + }, + "gridData": { + "h": 5, + "i": "7460163e-e9fc-4613-8a77-a778b46267e2", + "w": 24, + "x": 0, + "y": 0 + }, + "panelIndex": "7460163e-e9fc-4613-8a77-a778b46267e2", + "title": "", + "type": "visualization" + }, + { + "embeddableConfig": { + "attributes": { + "description": "Percent of used physical memory on the Vault machine.", + "references": [ + { + "id": "logs-*", + "name": "indexpattern-datasource-layer-7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "type": "index-pattern" + } + ], + "state": { + "adHocDataViews": {}, + "datasourceStates": { + "formBased": { + "currentIndexPatternId": "logs-*", + "layers": { + "7ced0369-1bbd-46ec-9a35-e6f4cee16397": { + "columnOrder": [ + "cfb24880-96b1-462a-a86c-ddfbcf3edbda", + "0122f82f-1c65-47c9-9d93-c7633abef4d5" + ], + "columns": { + "0122f82f-1c65-47c9-9d93-c7633abef4d5": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "\"cyberarkpas.monitor.syslog_queue_size\": *" + }, + "isBucketed": false, + "label": "Average", + "operationType": "last_value", + "params": { + "sortField": "@timestamp" + }, + "scale": "ratio", + "sourceField": "cyberarkpas.monitor.syslog_queue_size" + }, + "cfb24880-96b1-462a-a86c-ddfbcf3edbda": { + "customLabel": true, + "dataType": "date", + "isBucketed": true, + "label": "Time", + "operationType": "date_histogram", + "params": { + "dropPartials": true, + "includeEmptyRows": true, + "interval": "auto" + }, + "scale": "interval", + "sourceField": "@timestamp" + } + }, + "ignoreGlobalFilters": false, + "incompleteColumns": {}, + "indexPatternId": "logs-*", + "sampling": 1 + } + } + }, + "indexpattern": { + "layers": {} + }, + "textBased": { + "layers": {} + } + }, + "filters": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "field": "data_stream.dataset", + "index": "35e33553-a087-4ff7-8b47-ef12af692d8c", + "key": "data_stream.dataset", + "negate": false, + "params": { + "query": "cyberarkpas.monitor" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "data_stream.dataset": "cyberarkpas.monitor" + } + } + } + ], + "internalReferences": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "axisTitlesVisibilitySettings": { + "x": false, + "yLeft": true, + "yRight": true + }, + "curveType": "LINEAR", + "emphasizeFitting": true, + "endValue": "Nearest", + "fittingFunction": "Linear", + "layers": [ + { + "accessors": [ + "0122f82f-1c65-47c9-9d93-c7633abef4d5" + ], + "colorMapping": { + "assignments": [], + "colorMode": { + "type": "categorical" + }, + "paletteId": "eui_amsterdam_color_blind", + "specialAssignments": [ + { + "color": { + "type": "loop" + }, + "rule": { + "type": "other" + }, + "touched": false + } + ] + }, + "layerId": "7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "layerType": "data", + "position": "top", + "seriesType": "line", + "showGridlines": false, + "xAccessor": "cfb24880-96b1-462a-a86c-ddfbcf3edbda", + "yConfig": [ + { + "color": "#54b399", + "forAccessor": "0122f82f-1c65-47c9-9d93-c7633abef4d5" + } + ] + } + ], + "legend": { + "horizontalAlignment": "right", + "isInside": true, + "isVisible": false, + "position": "bottom", + "showSingleSeries": false, + "verticalAlignment": "bottom" + }, + "preferredSeriesType": "line", + "showCurrentTimeMarker": false, + "title": "Empty XY chart", + "valueLabels": "hide", + "valuesInLegend": false, + "yTitle": "Queue Size" + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "description": "The size of the syslog queue.", + "enhancements": {} + }, + "gridData": { + "h": 5, + "i": "e84df042-b589-4ee9-b3df-8ff9eaa87795", + "w": 24, + "x": 24, + "y": 0 + }, + "panelIndex": "e84df042-b589-4ee9-b3df-8ff9eaa87795", + "title": "Syslog Queue Size", + "type": "lens" + }, + { + "embeddableConfig": { + "attributes": { + "description": "Percent of used physical memory on the Vault machine.", + "references": [ + { + "id": "logs-*", + "name": "indexpattern-datasource-layer-7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "type": "index-pattern" + } + ], + "state": { + "adHocDataViews": {}, + "datasourceStates": { + "formBased": { + "currentIndexPatternId": "logs-*", + "layers": { + "7ced0369-1bbd-46ec-9a35-e6f4cee16397": { + "columnOrder": [ + "cfb24880-96b1-462a-a86c-ddfbcf3edbda", + "87e32354-2170-4e0f-b380-b7ae49548675", + "0122f82f-1c65-47c9-9d93-c7633abef4d5" + ], + "columns": { + "0122f82f-1c65-47c9-9d93-c7633abef4d5": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "\"cyberarkpas.monitor.average_execution_time\": *" + }, + "isBucketed": false, + "label": "Average", + "operationType": "last_value", + "params": { + "sortField": "@timestamp" + }, + "scale": "ratio", + "sourceField": "cyberarkpas.monitor.average_execution_time" + }, + "87e32354-2170-4e0f-b380-b7ae49548675": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "\"cyberarkpas.monitor.max_execution_time\": *" + }, + "isBucketed": false, + "label": "Maximum", + "operationType": "last_value", + "params": { + "sortField": "@timestamp" + }, + "scale": "ratio", + "sourceField": "cyberarkpas.monitor.max_execution_time" + }, + "cfb24880-96b1-462a-a86c-ddfbcf3edbda": { + "customLabel": true, + "dataType": "date", + "isBucketed": true, + "label": "Time", + "operationType": "date_histogram", + "params": { + "dropPartials": true, + "includeEmptyRows": true, + "interval": "auto" + }, + "scale": "interval", + "sourceField": "@timestamp" + } + }, + "ignoreGlobalFilters": false, + "incompleteColumns": {}, + "indexPatternId": "logs-*", + "sampling": 1 + } + } + }, + "indexpattern": { + "layers": {} + }, + "textBased": { + "layers": {} + } + }, + "filters": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "field": "data_stream.dataset", + "index": "35e33553-a087-4ff7-8b47-ef12af692d8c", + "key": "data_stream.dataset", + "negate": false, + "params": { + "query": "cyberarkpas.monitor" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "data_stream.dataset": "cyberarkpas.monitor" + } + } + } + ], + "internalReferences": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "axisTitlesVisibilitySettings": { + "x": false, + "yLeft": true, + "yRight": true + }, + "curveType": "LINEAR", + "emphasizeFitting": true, + "endValue": "Nearest", + "fittingFunction": "Linear", + "layers": [ + { + "accessors": [ + "87e32354-2170-4e0f-b380-b7ae49548675", + "0122f82f-1c65-47c9-9d93-c7633abef4d5" + ], + "colorMapping": { + "assignments": [], + "colorMode": { + "type": "categorical" + }, + "paletteId": "eui_amsterdam_color_blind", + "specialAssignments": [ + { + "color": { + "type": "loop" + }, + "rule": { + "type": "other" + }, + "touched": false + } + ] + }, + "layerId": "7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "layerType": "data", + "position": "top", + "seriesType": "line", + "showGridlines": false, + "xAccessor": "cfb24880-96b1-462a-a86c-ddfbcf3edbda", + "yConfig": [ + { + "color": "#6092c0", + "forAccessor": "87e32354-2170-4e0f-b380-b7ae49548675" + }, + { + "color": "#54b399", + "forAccessor": "0122f82f-1c65-47c9-9d93-c7633abef4d5" + } + ] + } + ], + "legend": { + "horizontalAlignment": "right", + "isInside": true, + "isVisible": false, + "position": "bottom", + "showSingleSeries": false, + "verticalAlignment": "bottom" + }, + "preferredSeriesType": "line", + "showCurrentTimeMarker": false, + "title": "Empty XY chart", + "valueLabels": "hide", + "valuesInLegend": false, + "yTitle": "Execution Time (ms)" + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "description": "The maximum and average time it has taken the Vault to complete the execution of a transaction, in the last minute, in milliseconds.", + "enhancements": {} + }, + "gridData": { + "h": 12, + "i": "832f4af4-271f-42a4-b450-0c0f8bc3aeef", + "w": 12, + "x": 0, + "y": 5 + }, + "panelIndex": "832f4af4-271f-42a4-b450-0c0f8bc3aeef", + "title": "Execution Time (Average vs Max, ms)", + "type": "lens" + }, + { + "embeddableConfig": { + "attributes": { + "description": "Percent of used physical memory on the Vault machine.", + "references": [ + { + "id": "logs-*", + "name": "indexpattern-datasource-layer-7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "type": "index-pattern" + } + ], + "state": { + "adHocDataViews": {}, + "datasourceStates": { + "formBased": { + "currentIndexPatternId": "logs-*", + "layers": { + "7ced0369-1bbd-46ec-9a35-e6f4cee16397": { + "columnOrder": [ + "cfb24880-96b1-462a-a86c-ddfbcf3edbda", + "87e32354-2170-4e0f-b380-b7ae49548675", + "0122f82f-1c65-47c9-9d93-c7633abef4d5" + ], + "columns": { + "0122f82f-1c65-47c9-9d93-c7633abef4d5": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "\"cyberarkpas.monitor.average_queue_time\": *" + }, + "isBucketed": false, + "label": "Average", + "operationType": "last_value", + "params": { + "sortField": "@timestamp" + }, + "scale": "ratio", + "sourceField": "cyberarkpas.monitor.average_queue_time" + }, + "87e32354-2170-4e0f-b380-b7ae49548675": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "\"cyberarkpas.monitor.max_queue_time\": *" + }, + "isBucketed": false, + "label": "Maximum", + "operationType": "last_value", + "params": { + "sortField": "@timestamp" + }, + "scale": "ratio", + "sourceField": "cyberarkpas.monitor.max_queue_time" + }, + "cfb24880-96b1-462a-a86c-ddfbcf3edbda": { + "customLabel": true, + "dataType": "date", + "isBucketed": true, + "label": "Time", + "operationType": "date_histogram", + "params": { + "dropPartials": true, + "includeEmptyRows": true, + "interval": "auto" + }, + "scale": "interval", + "sourceField": "@timestamp" + } + }, + "ignoreGlobalFilters": false, + "incompleteColumns": {}, + "indexPatternId": "logs-*", + "sampling": 1 + } + } + }, + "indexpattern": { + "layers": {} + }, + "textBased": { + "layers": {} + } + }, + "filters": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "field": "data_stream.dataset", + "index": "35e33553-a087-4ff7-8b47-ef12af692d8c", + "key": "data_stream.dataset", + "negate": false, + "params": { + "query": "cyberarkpas.monitor" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "data_stream.dataset": "cyberarkpas.monitor" + } + } + } + ], + "internalReferences": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "axisTitlesVisibilitySettings": { + "x": false, + "yLeft": true, + "yRight": true + }, + "curveType": "LINEAR", + "emphasizeFitting": true, + "endValue": "Nearest", + "fittingFunction": "Linear", + "layers": [ + { + "accessors": [ + "87e32354-2170-4e0f-b380-b7ae49548675", + "0122f82f-1c65-47c9-9d93-c7633abef4d5" + ], + "colorMapping": { + "assignments": [], + "colorMode": { + "type": "categorical" + }, + "paletteId": "eui_amsterdam_color_blind", + "specialAssignments": [ + { + "color": { + "type": "loop" + }, + "rule": { + "type": "other" + }, + "touched": false + } + ] + }, + "layerId": "7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "layerType": "data", + "position": "top", + "seriesType": "line", + "showGridlines": false, + "xAccessor": "cfb24880-96b1-462a-a86c-ddfbcf3edbda", + "yConfig": [ + { + "color": "#6092c0", + "forAccessor": "87e32354-2170-4e0f-b380-b7ae49548675" + }, + { + "color": "#54b399", + "forAccessor": "0122f82f-1c65-47c9-9d93-c7633abef4d5" + } + ] + } + ], + "legend": { + "horizontalAlignment": "right", + "isInside": true, + "isVisible": false, + "position": "bottom", + "showSingleSeries": false, + "verticalAlignment": "bottom" + }, + "preferredSeriesType": "line", + "showCurrentTimeMarker": false, + "title": "Empty XY chart", + "valueLabels": "hide", + "valuesInLegend": false, + "yTitle": "Queue Time (ms)" + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "description": "The maximum and average time that a transaction waited in the Vault's queue for execution in the last minute, in milliseconds.", + "enhancements": {} + }, + "gridData": { + "h": 12, + "i": "509a034f-fa72-46f5-baf8-8cfbb379ea93", + "w": 12, + "x": 12, + "y": 5 + }, + "panelIndex": "509a034f-fa72-46f5-baf8-8cfbb379ea93", + "title": "Queue Time (Average vs Max, ms)", + "type": "lens" + }, + { + "embeddableConfig": { + "attributes": { + "description": "Percent of used physical memory on the Vault machine.", + "references": [ + { + "id": "logs-*", + "name": "indexpattern-datasource-layer-7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "type": "index-pattern" + } + ], + "state": { + "adHocDataViews": {}, + "datasourceStates": { + "formBased": { + "currentIndexPatternId": "logs-*", + "layers": { + "7ced0369-1bbd-46ec-9a35-e6f4cee16397": { + "columnOrder": [ + "cfb24880-96b1-462a-a86c-ddfbcf3edbda", + "87e32354-2170-4e0f-b380-b7ae49548675", + "0122f82f-1c65-47c9-9d93-c7633abef4d5" + ], + "columns": { + "0122f82f-1c65-47c9-9d93-c7633abef4d5": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "\"cyberarkpas.monitor.number_of_parallel_tasks\": *" + }, + "isBucketed": false, + "label": "Average", + "operationType": "last_value", + "params": { + "sortField": "@timestamp" + }, + "scale": "ratio", + "sourceField": "cyberarkpas.monitor.number_of_parallel_tasks" + }, + "87e32354-2170-4e0f-b380-b7ae49548675": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "\"cyberarkpas.monitor.max_parallel_tasks\": *" + }, + "isBucketed": false, + "label": "Maximum", + "operationType": "last_value", + "params": { + "sortField": "@timestamp" + }, + "scale": "ratio", + "sourceField": "cyberarkpas.monitor.max_parallel_tasks" + }, + "cfb24880-96b1-462a-a86c-ddfbcf3edbda": { + "customLabel": true, + "dataType": "date", + "isBucketed": true, + "label": "Time", + "operationType": "date_histogram", + "params": { + "dropPartials": true, + "includeEmptyRows": true, + "interval": "auto" + }, + "scale": "interval", + "sourceField": "@timestamp" + } + }, + "ignoreGlobalFilters": false, + "incompleteColumns": {}, + "indexPatternId": "logs-*", + "sampling": 1 + } + } + }, + "indexpattern": { + "layers": {} + }, + "textBased": { + "layers": {} + } + }, + "filters": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "field": "data_stream.dataset", + "index": "35e33553-a087-4ff7-8b47-ef12af692d8c", + "key": "data_stream.dataset", + "negate": false, + "params": { + "query": "cyberarkpas.monitor" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "data_stream.dataset": "cyberarkpas.monitor" + } + } + } + ], + "internalReferences": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "axisTitlesVisibilitySettings": { + "x": false, + "yLeft": true, + "yRight": true + }, + "curveType": "LINEAR", + "emphasizeFitting": true, + "endValue": "Nearest", + "fittingFunction": "Linear", + "layers": [ + { + "accessors": [ + "87e32354-2170-4e0f-b380-b7ae49548675", + "0122f82f-1c65-47c9-9d93-c7633abef4d5" + ], + "colorMapping": { + "assignments": [], + "colorMode": { + "type": "categorical" + }, + "paletteId": "eui_amsterdam_color_blind", + "specialAssignments": [ + { + "color": { + "type": "loop" + }, + "rule": { + "type": "other" + }, + "touched": false + } + ] + }, + "layerId": "7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "layerType": "data", + "position": "top", + "seriesType": "line", + "showGridlines": false, + "xAccessor": "cfb24880-96b1-462a-a86c-ddfbcf3edbda", + "yConfig": [ + { + "color": "#6092c0", + "forAccessor": "87e32354-2170-4e0f-b380-b7ae49548675" + }, + { + "color": "#54b399", + "forAccessor": "0122f82f-1c65-47c9-9d93-c7633abef4d5" + } + ] + } + ], + "legend": { + "horizontalAlignment": "right", + "isInside": true, + "isVisible": false, + "position": "bottom", + "showSingleSeries": false, + "verticalAlignment": "bottom" + }, + "preferredSeriesType": "line", + "showCurrentTimeMarker": false, + "title": "Empty XY chart", + "valueLabels": "hide", + "valuesInLegend": false, + "yTitle": "Parallel Tasks" + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "description": "Number of Vault transactions that are currently running, and the maximum configured via the TasksCount parameter.", + "enhancements": {} + }, + "gridData": { + "h": 12, + "i": "a484e3cf-b085-4eb3-a948-9b6c525431d2", + "w": 12, + "x": 24, + "y": 5 + }, + "panelIndex": "a484e3cf-b085-4eb3-a948-9b6c525431d2", + "title": "Parallel Tasks (Current vs Max)", + "type": "lens" + }, + { + "embeddableConfig": { + "attributes": { + "description": "Percent of used physical memory on the Vault machine.", + "references": [ + { + "id": "logs-*", + "name": "indexpattern-datasource-layer-7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "type": "index-pattern" + } + ], + "state": { + "adHocDataViews": {}, + "datasourceStates": { + "formBased": { + "currentIndexPatternId": "logs-*", + "layers": { + "7ced0369-1bbd-46ec-9a35-e6f4cee16397": { + "columnOrder": [ + "cfb24880-96b1-462a-a86c-ddfbcf3edbda", + "0122f82f-1c65-47c9-9d93-c7633abef4d5" + ], + "columns": { + "0122f82f-1c65-47c9-9d93-c7633abef4d5": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "\"cyberarkpas.monitor.transaction_count\": *" + }, + "isBucketed": false, + "label": "Average", + "operationType": "last_value", + "params": { + "sortField": "@timestamp" + }, + "scale": "ratio", + "sourceField": "cyberarkpas.monitor.transaction_count" + }, + "cfb24880-96b1-462a-a86c-ddfbcf3edbda": { + "customLabel": true, + "dataType": "date", + "isBucketed": true, + "label": "Time", + "operationType": "date_histogram", + "params": { + "dropPartials": true, + "includeEmptyRows": true, + "interval": "auto" + }, + "scale": "interval", + "sourceField": "@timestamp" + } + }, + "ignoreGlobalFilters": false, + "incompleteColumns": {}, + "indexPatternId": "logs-*", + "sampling": 1 + } + } + }, + "indexpattern": { + "layers": {} + }, + "textBased": { + "layers": {} + } + }, + "filters": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "field": "data_stream.dataset", + "index": "35e33553-a087-4ff7-8b47-ef12af692d8c", + "key": "data_stream.dataset", + "negate": false, + "params": { + "query": "cyberarkpas.monitor" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "data_stream.dataset": "cyberarkpas.monitor" + } + } + } + ], + "internalReferences": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "axisTitlesVisibilitySettings": { + "x": false, + "yLeft": true, + "yRight": true + }, + "curveType": "LINEAR", + "emphasizeFitting": true, + "endValue": "Nearest", + "fittingFunction": "Linear", + "layers": [ + { + "accessors": [ + "0122f82f-1c65-47c9-9d93-c7633abef4d5" + ], + "colorMapping": { + "assignments": [], + "colorMode": { + "type": "categorical" + }, + "paletteId": "eui_amsterdam_color_blind", + "specialAssignments": [ + { + "color": { + "type": "loop" + }, + "rule": { + "type": "other" + }, + "touched": false + } + ] + }, + "layerId": "7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "layerType": "data", + "position": "top", + "seriesType": "line", + "showGridlines": false, + "xAccessor": "cfb24880-96b1-462a-a86c-ddfbcf3edbda", + "yConfig": [ + { + "color": "#54b399", + "forAccessor": "0122f82f-1c65-47c9-9d93-c7633abef4d5" + } + ] + } + ], + "legend": { + "horizontalAlignment": "right", + "isInside": true, + "isVisible": false, + "position": "bottom", + "showSingleSeries": false, + "verticalAlignment": "bottom" + }, + "preferredSeriesType": "line", + "showCurrentTimeMarker": false, + "title": "Empty XY chart", + "valueLabels": "hide", + "valuesInLegend": false, + "yTitle": "Transactions" + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "description": "Number of Vault transactions in the last minute.", + "enhancements": {} + }, + "gridData": { + "h": 12, + "i": "53040586-54a3-47e6-b8fe-af231c5bce9e", + "w": 12, + "x": 36, + "y": 5 + }, + "panelIndex": "53040586-54a3-47e6-b8fe-af231c5bce9e", + "title": "Transaction Count", + "type": "lens" + }, + { + "embeddableConfig": { + "attributes": { + "description": "Percent of CPU usage on the Vault machine.", + "references": [ + { + "id": "logs-*", + "name": "indexpattern-datasource-layer-7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "type": "index-pattern" + } + ], + "state": { + "adHocDataViews": {}, + "datasourceStates": { + "formBased": { + "currentIndexPatternId": "logs-*", + "layers": { + "7ced0369-1bbd-46ec-9a35-e6f4cee16397": { + "columnOrder": [ + "0fcb1edb-48a5-4342-83d7-f273dbf52e02" + ], + "columns": { + "0fcb1edb-48a5-4342-83d7-f273dbf52e02": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "\"cyberarkpas.monitor.cpu_usage\": *" + }, + "isBucketed": false, + "label": " ", + "operationType": "last_value", + "params": { + "format": { + "id": "number", + "params": { + "compact": false, + "decimals": 0, + "suffix": " %" + } + }, + "sortField": "@timestamp" + }, + "scale": "ratio", + "sourceField": "cyberarkpas.monitor.cpu_usage" + } + }, + "ignoreGlobalFilters": false, + "incompleteColumns": {}, + "indexPatternId": "logs-*", + "sampling": 1 + } + } + }, + "indexpattern": { + "layers": {} + }, + "textBased": { + "layers": {} + } + }, + "filters": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "field": "data_stream.dataset", + "index": "35e33553-a087-4ff7-8b47-ef12af692d8c", + "key": "data_stream.dataset", + "negate": false, + "params": { + "query": "cyberarkpas.monitor" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "data_stream.dataset": "cyberarkpas.monitor" + } + } + } + ], + "internalReferences": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "accessor": "0fcb1edb-48a5-4342-83d7-f273dbf52e02", + "layerId": "7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "layerType": "data" + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsLegacyMetric" + }, + "description": "Percent of CPU usage on the Vault machine.", + "enhancements": {} + }, + "gridData": { + "h": 4, + "i": "cc1bc152-4275-4280-8fb4-f74d18a25953", + "w": 16, + "x": 0, + "y": 17 + }, + "panelIndex": "cc1bc152-4275-4280-8fb4-f74d18a25953", + "title": "CPU Usage (Last)", + "type": "lens" + }, + { + "embeddableConfig": { + "attributes": { + "description": "Percent of CPU usage on the Vault machine.", + "references": [ + { + "id": "logs-*", + "name": "indexpattern-datasource-layer-7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "type": "index-pattern" + } + ], + "state": { + "adHocDataViews": {}, + "datasourceStates": { + "formBased": { + "currentIndexPatternId": "logs-*", + "layers": { + "7ced0369-1bbd-46ec-9a35-e6f4cee16397": { + "columnOrder": [ + "0fcb1edb-48a5-4342-83d7-f273dbf52e02" + ], + "columns": { + "0fcb1edb-48a5-4342-83d7-f273dbf52e02": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "\"cyberarkpas.monitor.memory_usage\": *" + }, + "isBucketed": false, + "label": " ", + "operationType": "last_value", + "params": { + "format": { + "id": "number", + "params": { + "compact": false, + "decimals": 0, + "suffix": " %" + } + }, + "sortField": "@timestamp" + }, + "scale": "ratio", + "sourceField": "cyberarkpas.monitor.memory_usage" + } + }, + "ignoreGlobalFilters": false, + "incompleteColumns": {}, + "indexPatternId": "logs-*", + "sampling": 1 + } + } + }, + "indexpattern": { + "layers": {} + }, + "textBased": { + "layers": {} + } + }, + "filters": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "field": "data_stream.dataset", + "index": "35e33553-a087-4ff7-8b47-ef12af692d8c", + "key": "data_stream.dataset", + "negate": false, + "params": { + "query": "cyberarkpas.monitor" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "data_stream.dataset": "cyberarkpas.monitor" + } + } + } + ], + "internalReferences": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "accessor": "0fcb1edb-48a5-4342-83d7-f273dbf52e02", + "layerId": "7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "layerType": "data" + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsLegacyMetric" + }, + "description": "Percent of used physical memory on the Vault machine.", + "enhancements": {} + }, + "gridData": { + "h": 4, + "i": "25d902a2-fc52-4180-a8a2-10d068503a1a", + "w": 16, + "x": 16, + "y": 17 + }, + "panelIndex": "25d902a2-fc52-4180-a8a2-10d068503a1a", + "title": "Memory Usage (Last)", + "type": "lens" + }, + { + "embeddableConfig": { + "attributes": { + "description": "Percent of CPU usage on the Vault machine.", + "references": [ + { + "id": "logs-*", + "name": "indexpattern-datasource-layer-7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "type": "index-pattern" + } + ], + "state": { + "adHocDataViews": {}, + "datasourceStates": { + "formBased": { + "currentIndexPatternId": "logs-*", + "layers": { + "7ced0369-1bbd-46ec-9a35-e6f4cee16397": { + "columnOrder": [ + "0fcb1edb-48a5-4342-83d7-f273dbf52e02" + ], + "columns": { + "0fcb1edb-48a5-4342-83d7-f273dbf52e02": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "\"cyberarkpas.monitor.drive_free_space_in_gb\": *" + }, + "isBucketed": false, + "label": " ", + "operationType": "last_value", + "params": { + "format": { + "id": "number", + "params": { + "compact": false, + "decimals": 0, + "suffix": " GB" + } + }, + "sortField": "@timestamp" + }, + "scale": "ratio", + "sourceField": "cyberarkpas.monitor.drive_free_space_in_gb" + } + }, + "ignoreGlobalFilters": false, + "incompleteColumns": {}, + "indexPatternId": "logs-*", + "sampling": 1 + } + } + }, + "indexpattern": { + "layers": {} + }, + "textBased": { + "layers": {} + } + }, + "filters": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "field": "data_stream.dataset", + "index": "35e33553-a087-4ff7-8b47-ef12af692d8c", + "key": "data_stream.dataset", + "negate": false, + "params": { + "query": "cyberarkpas.monitor" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "data_stream.dataset": "cyberarkpas.monitor" + } + } + } + ], + "internalReferences": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "accessor": "0fcb1edb-48a5-4342-83d7-f273dbf52e02", + "layerId": "7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "layerType": "data" + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsLegacyMetric" + }, + "description": "Percent of used physical memory on the Vault machine.", + "enhancements": {} + }, + "gridData": { + "h": 4, + "i": "759f216f-a69f-411b-bfd0-b80bf4df48ef", + "w": 16, + "x": 32, + "y": 17 + }, + "panelIndex": "759f216f-a69f-411b-bfd0-b80bf4df48ef", + "title": "Disk Space Free (Last)", + "type": "lens" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "logs-*", + "name": "indexpattern-datasource-layer-7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "type": "index-pattern" + } + ], + "state": { + "adHocDataViews": {}, + "datasourceStates": { + "formBased": { + "currentIndexPatternId": "logs-*", + "layers": { + "7ced0369-1bbd-46ec-9a35-e6f4cee16397": { + "columnOrder": [ + "cfb24880-96b1-462a-a86c-ddfbcf3edbda", + "0fcb1edb-48a5-4342-83d7-f273dbf52e02" + ], + "columns": { + "0fcb1edb-48a5-4342-83d7-f273dbf52e02": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "\"cyberarkpas.monitor.cpu_usage\": *" + }, + "isBucketed": false, + "label": "CPU Usage (%)", + "operationType": "last_value", + "params": { + "sortField": "@timestamp" + }, + "scale": "ratio", + "sourceField": "cyberarkpas.monitor.cpu_usage" + }, + "cfb24880-96b1-462a-a86c-ddfbcf3edbda": { + "customLabel": true, + "dataType": "date", + "isBucketed": true, + "label": "Time", + "operationType": "date_histogram", + "params": { + "dropPartials": true, + "includeEmptyRows": true, + "interval": "auto" + }, + "scale": "interval", + "sourceField": "@timestamp" + } + }, + "ignoreGlobalFilters": false, + "incompleteColumns": {}, + "indexPatternId": "logs-*", + "sampling": 1 + } + } + }, + "indexpattern": { + "layers": {} + }, + "textBased": { + "layers": {} + } + }, + "filters": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "field": "data_stream.dataset", + "index": "35e33553-a087-4ff7-8b47-ef12af692d8c", + "key": "data_stream.dataset", + "negate": false, + "params": { + "query": "cyberarkpas.monitor" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "data_stream.dataset": "cyberarkpas.monitor" + } + } + } + ], + "internalReferences": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "axisTitlesVisibilitySettings": { + "x": false, + "yLeft": true, + "yRight": true + }, + "curveType": "LINEAR", + "emphasizeFitting": true, + "endValue": "Nearest", + "fittingFunction": "Linear", + "layers": [ + { + "accessors": [ + "0fcb1edb-48a5-4342-83d7-f273dbf52e02" + ], + "colorMapping": { + "assignments": [], + "colorMode": { + "type": "categorical" + }, + "paletteId": "eui_amsterdam_color_blind", + "specialAssignments": [ + { + "color": { + "type": "loop" + }, + "rule": { + "type": "other" + }, + "touched": false + } + ] + }, + "layerId": "7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "layerType": "data", + "position": "top", + "seriesType": "line", + "showGridlines": false, + "xAccessor": "cfb24880-96b1-462a-a86c-ddfbcf3edbda", + "yConfig": [ + { + "axisMode": "auto", + "forAccessor": "0fcb1edb-48a5-4342-83d7-f273dbf52e02" + } + ] + } + ], + "legend": { + "isVisible": true, + "position": "right" + }, + "preferredSeriesType": "line", + "showCurrentTimeMarker": false, + "title": "Empty XY chart", + "valueLabels": "hide" + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "description": "Percent of CPU usage on the Vault machine.", + "enhancements": {} + }, + "gridData": { + "h": 12, + "i": "1d64da78-4a54-4f44-845c-387062f6aef4", + "w": 16, + "x": 0, + "y": 21 + }, + "panelIndex": "1d64da78-4a54-4f44-845c-387062f6aef4", + "title": "CPU Usage (%)", + "type": "lens" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "logs-*", + "name": "indexpattern-datasource-layer-7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "type": "index-pattern" + } + ], + "state": { + "adHocDataViews": {}, + "datasourceStates": { + "formBased": { + "currentIndexPatternId": "logs-*", + "layers": { + "7ced0369-1bbd-46ec-9a35-e6f4cee16397": { + "columnOrder": [ + "cfb24880-96b1-462a-a86c-ddfbcf3edbda", + "0fcb1edb-48a5-4342-83d7-f273dbf52e02" + ], + "columns": { + "0fcb1edb-48a5-4342-83d7-f273dbf52e02": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "\"cyberarkpas.monitor.memory_usage\": *" + }, + "isBucketed": false, + "label": "Memory Usage (%)", + "operationType": "last_value", + "params": { + "sortField": "@timestamp" + }, + "scale": "ratio", + "sourceField": "cyberarkpas.monitor.memory_usage" + }, + "cfb24880-96b1-462a-a86c-ddfbcf3edbda": { + "customLabel": true, + "dataType": "date", + "isBucketed": true, + "label": "Time", + "operationType": "date_histogram", + "params": { + "dropPartials": true, + "includeEmptyRows": true, + "interval": "auto" + }, + "scale": "interval", + "sourceField": "@timestamp" + } + }, + "ignoreGlobalFilters": false, + "incompleteColumns": {}, + "indexPatternId": "logs-*", + "sampling": 1 + } + } + }, + "indexpattern": { + "layers": {} + }, + "textBased": { + "layers": {} + } + }, + "filters": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "field": "data_stream.dataset", + "index": "35e33553-a087-4ff7-8b47-ef12af692d8c", + "key": "data_stream.dataset", + "negate": false, + "params": { + "query": "cyberarkpas.monitor" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "data_stream.dataset": "cyberarkpas.monitor" + } + } + } + ], + "internalReferences": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "axisTitlesVisibilitySettings": { + "x": false, + "yLeft": true, + "yRight": true + }, + "curveType": "LINEAR", + "emphasizeFitting": true, + "endValue": "Nearest", + "fittingFunction": "Linear", + "layers": [ + { + "accessors": [ + "0fcb1edb-48a5-4342-83d7-f273dbf52e02" + ], + "colorMapping": { + "assignments": [], + "colorMode": { + "type": "categorical" + }, + "paletteId": "eui_amsterdam_color_blind", + "specialAssignments": [ + { + "color": { + "type": "loop" + }, + "rule": { + "type": "other" + }, + "touched": false + } + ] + }, + "layerId": "7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "layerType": "data", + "position": "top", + "seriesType": "line", + "showGridlines": false, + "xAccessor": "cfb24880-96b1-462a-a86c-ddfbcf3edbda", + "yConfig": [ + { + "axisMode": "auto", + "forAccessor": "0fcb1edb-48a5-4342-83d7-f273dbf52e02" + } + ] + } + ], + "legend": { + "isVisible": true, + "position": "right" + }, + "preferredSeriesType": "line", + "showCurrentTimeMarker": false, + "title": "Empty XY chart", + "valueLabels": "hide" + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "description": "Percent of used physical memory on the Vault machine.", + "enhancements": {} + }, + "gridData": { + "h": 12, + "i": "3d6ec074-8d18-4544-b572-6405d01b7cee", + "w": 16, + "x": 16, + "y": 21 + }, + "panelIndex": "3d6ec074-8d18-4544-b572-6405d01b7cee", + "title": "Memory Usage (%)", + "type": "lens" + }, + { + "embeddableConfig": { + "attributes": { + "description": "Percent of used physical memory on the Vault machine.", + "references": [ + { + "id": "logs-*", + "name": "indexpattern-datasource-layer-7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "type": "index-pattern" + } + ], + "state": { + "adHocDataViews": {}, + "datasourceStates": { + "formBased": { + "currentIndexPatternId": "logs-*", + "layers": { + "7ced0369-1bbd-46ec-9a35-e6f4cee16397": { + "columnOrder": [ + "cfb24880-96b1-462a-a86c-ddfbcf3edbda", + "0fcb1edb-48a5-4342-83d7-f273dbf52e02", + "395f62cf-4f8f-44a0-802f-a8af7be49214" + ], + "columns": { + "0fcb1edb-48a5-4342-83d7-f273dbf52e02": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "\"cyberarkpas.monitor.drive_total_space_in_gb\": *" + }, + "isBucketed": false, + "label": "Total", + "operationType": "last_value", + "params": { + "sortField": "@timestamp" + }, + "scale": "ratio", + "sourceField": "cyberarkpas.monitor.drive_total_space_in_gb" + }, + "395f62cf-4f8f-44a0-802f-a8af7be49214": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "\"cyberarkpas.monitor.drive_free_space_in_gb\": *" + }, + "isBucketed": false, + "label": "Free", + "operationType": "last_value", + "params": { + "sortField": "@timestamp" + }, + "scale": "ratio", + "sourceField": "cyberarkpas.monitor.drive_free_space_in_gb" + }, + "cfb24880-96b1-462a-a86c-ddfbcf3edbda": { + "customLabel": true, + "dataType": "date", + "isBucketed": true, + "label": "Time", + "operationType": "date_histogram", + "params": { + "dropPartials": true, + "includeEmptyRows": true, + "interval": "auto" + }, + "scale": "interval", + "sourceField": "@timestamp" + } + }, + "ignoreGlobalFilters": false, + "incompleteColumns": {}, + "indexPatternId": "logs-*", + "sampling": 1 + } + } + }, + "indexpattern": { + "layers": {} + }, + "textBased": { + "layers": {} + } + }, + "filters": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "field": "data_stream.dataset", + "index": "35e33553-a087-4ff7-8b47-ef12af692d8c", + "key": "data_stream.dataset", + "negate": false, + "params": { + "query": "cyberarkpas.monitor" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "data_stream.dataset": "cyberarkpas.monitor" + } + } + } + ], + "internalReferences": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "axisTitlesVisibilitySettings": { + "x": false, + "yLeft": true, + "yRight": true + }, + "curveType": "LINEAR", + "emphasizeFitting": true, + "endValue": "Nearest", + "fittingFunction": "Linear", + "layers": [ + { + "accessors": [ + "0fcb1edb-48a5-4342-83d7-f273dbf52e02", + "395f62cf-4f8f-44a0-802f-a8af7be49214" + ], + "colorMapping": { + "assignments": [], + "colorMode": { + "type": "categorical" + }, + "paletteId": "eui_amsterdam_color_blind", + "specialAssignments": [ + { + "color": { + "type": "loop" + }, + "rule": { + "type": "other" + }, + "touched": false + } + ] + }, + "layerId": "7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "layerType": "data", + "position": "top", + "seriesType": "area", + "showGridlines": false, + "xAccessor": "cfb24880-96b1-462a-a86c-ddfbcf3edbda", + "yConfig": [ + { + "axisMode": "auto", + "color": "#b7b7b7", + "forAccessor": "0fcb1edb-48a5-4342-83d7-f273dbf52e02" + }, + { + "color": "#54b399", + "forAccessor": "395f62cf-4f8f-44a0-802f-a8af7be49214" + } + ] + } + ], + "legend": { + "isInside": true, + "isVisible": true, + "position": "bottom" + }, + "preferredSeriesType": "area", + "showCurrentTimeMarker": false, + "title": "Empty XY chart", + "valueLabels": "hide", + "yTitle": "Storage Space (GB)" + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "description": "Number of GB total vs available, on the drive of the Vault installation folder.", + "enhancements": {} + }, + "gridData": { + "h": 12, + "i": "ee37b252-2ae6-4833-a2e2-c27d918b5562", + "w": 16, + "x": 32, + "y": 21 + }, + "panelIndex": "ee37b252-2ae6-4833-a2e2-c27d918b5562", + "title": "Disk Space Utilization (Free vs Total, GB)", + "type": "lens" + } + ], + "timeRestore": false, + "title": "[Logs CyberArk PAS] Monitoring", + "version": 2 + }, + "coreMigrationVersion": "8.8.0", + "created_at": "2024-10-21T07:43:41.449Z", + "id": "cyberarkpas-1c083996-84f6-472f-a818-4ad5060efc81", + "managed": false, + "references": [ + { + "id": "logs-*", + "name": "e84df042-b589-4ee9-b3df-8ff9eaa87795:indexpattern-datasource-layer-7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "type": "index-pattern" + }, + { + "id": "logs-*", + "name": "832f4af4-271f-42a4-b450-0c0f8bc3aeef:indexpattern-datasource-layer-7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "type": "index-pattern" + }, + { + "id": "logs-*", + "name": "509a034f-fa72-46f5-baf8-8cfbb379ea93:indexpattern-datasource-layer-7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "type": "index-pattern" + }, + { + "id": "logs-*", + "name": "a484e3cf-b085-4eb3-a948-9b6c525431d2:indexpattern-datasource-layer-7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "type": "index-pattern" + }, + { + "id": "logs-*", + "name": "53040586-54a3-47e6-b8fe-af231c5bce9e:indexpattern-datasource-layer-7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "type": "index-pattern" + }, + { + "id": "logs-*", + "name": "cc1bc152-4275-4280-8fb4-f74d18a25953:indexpattern-datasource-layer-7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "type": "index-pattern" + }, + { + "id": "logs-*", + "name": "25d902a2-fc52-4180-a8a2-10d068503a1a:indexpattern-datasource-layer-7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "type": "index-pattern" + }, + { + "id": "logs-*", + "name": "759f216f-a69f-411b-bfd0-b80bf4df48ef:indexpattern-datasource-layer-7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "type": "index-pattern" + }, + { + "id": "logs-*", + "name": "1d64da78-4a54-4f44-845c-387062f6aef4:indexpattern-datasource-layer-7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "type": "index-pattern" + }, + { + "id": "logs-*", + "name": "3d6ec074-8d18-4544-b572-6405d01b7cee:indexpattern-datasource-layer-7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "type": "index-pattern" + }, + { + "id": "logs-*", + "name": "ee37b252-2ae6-4833-a2e2-c27d918b5562:indexpattern-datasource-layer-7ced0369-1bbd-46ec-9a35-e6f4cee16397", + "type": "index-pattern" + } + ], + "type": "dashboard", + "typeMigrationVersion": "10.2.0" +} \ No newline at end of file diff --git a/packages/cyberarkpas/manifest.yml b/packages/cyberarkpas/manifest.yml index 7df4e044449..be3472217de 100644 --- a/packages/cyberarkpas/manifest.yml +++ b/packages/cyberarkpas/manifest.yml @@ -1,32 +1,36 @@ name: cyberarkpas title: CyberArk Privileged Access Security -version: "2.23.0" +version: "2.24.0" description: Collect logs from CyberArk Privileged Access Security with Elastic Agent. type: integration format_version: "3.0.3" categories: ["security", "iam"] conditions: kibana: - version: "^8.13.0" + version: "^8.14.0" screenshots: - src: /img/filebeat-cyberarkpas-overview.png title: filebeat cyberarkpas overview size: 1792x2496 type: image/png + - src: /img/monitoring.png + title: cyberarkpas monitoring + size: 1280x1323 + type: image/png policy_templates: - name: cyberarkpas title: CyberArk Privileged Access Security audit logs - description: Collect logs from Vault instances + description: Collect data from Vault instances inputs: - type: tcp - title: 'Collect Vault audit logs via TCP' - description: 'Collecting Vault audit logs from CyberArk PAS via TCP' + title: 'Collect Vault data via TCP' + description: 'Collecting Vault data from CyberArk PAS via TCP' - type: udp - title: 'Collect Vault audit logs via UDP' - description: 'Collecting Vault audit logs from CyberArk PAS via UDP' + title: 'Collect Vault data via UDP' + description: 'Collecting Vault data from CyberArk PAS via UDP' - type: logfile - title: 'Collect Vault audit logs via file' - description: 'Collecting Vault audit logs from CyberArk PAS via file' + title: 'Collect Vault data via file' + description: 'Collecting Vault data from CyberArk PAS via file' icons: - src: /img/logo.svg title: CyberArk logo