Module: check_mk
Branch: master
Commit: 86697ed309af9cc60558c86152f98be438a09bdf
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=86697ed309af9c…
Author: Bastian Kuhn <bk(a)mathias-kettner.de>
Date: Thu Nov 28 18:16:13 2013 +0100
liebert_chiller_status: New check for Liebert Chiller devices
---
.werks/101 | 8 +++++++
ChangeLog | 14 ++-----------
checkman/liebert_chiller_status | 9 ++++++++
checks/liebert_chiller_status | 44 +++++++++++++++++++++++++++++++++++++++
4 files changed, 63 insertions(+), 12 deletions(-)
diff --git a/.werks/101 b/.werks/101
new file mode 100644
index 0000000..3f401d1
--- /dev/null
+++ b/.werks/101
@@ -0,0 +1,8 @@
+Title: liebert_chiller_status: New check for Liebert Chiller devices
+Level: 1
+Component: checks
+Version: 1.2.3i7
+Date: 1385658944
+Class: feature
+
+
diff --git a/ChangeLog b/ChangeLog
index 495e69d..024feab 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -23,9 +23,9 @@
* 0070 cmciii_lcp_airin cmciii_lcp_airout cmciii_lcp_fans cmciii_lcp_waterflow cmciii_lcp_waterin cmciii_lcp_waterout: new checks for the Rittal CMC-III LCP device
* 0098 apc_inrow_airflow, apc_inrow_fanspeed, apc_inrow_temp: New checks for APC inrow devices
* 0099 apc_mod_pdu_modules: New check for APC Modular Power Distribution Unit
- * 0100 juniper_cpu: New check for CPU utilization on Juniper switches
- * 0070 cmciii_lcp_airin cmciii_lcp_airout cmciii_lcp_fans cmciii_lcp_waterflow cmciii_lcp_waterin cmciii_lcp_waterout: new checks for the Rittal CMC-III LCP device
* 0072 cmciii_pu_access cmciii_pu_canbus cmciii_pu_io cmciii_pu_temp: New checks for the Rittal CMC-III PU Unit
+ * 0100 juniper_cpu: New check for CPU utilization on Juniper switches
+ * 0101 liebert_chiller_status: New check for Liebert Chiller devices
* 0024 FIX: cisco_wlc: removed check configuration parameter ap_model...
* 0065 FIX: veeam_client: check behaviour improved when backup is in progress
* 0066 FIX: veeam_jobs: check behaviour improved when backup is in progress
@@ -95,16 +95,6 @@
* 0233 FIX: Fixed missing entries in log file and availability view...
- * 0026 FIX: snmptd_mkevent.py: fixed crash on startup
- * 0036 FIX: fixed bug in multisite command execution...
-
- Livestatus:
- * 0067 livedump: new option to mark the mode at the beginning of the dump and documentation fixes...
- * 0023 FIX: Fixed incorrect starttime of table statehist entries...
- * 0034 FIX: Availability no longer showes incorrect entries when only one logfile exists...
- * 0233 FIX: Fixed missing entries in log file or availability view...
-
-
1.2.3i6:
Core & Setup:
* 0041 FIX: setup.py now handles non existing wwwuser gracefully...
diff --git a/checkman/liebert_chiller_status b/checkman/liebert_chiller_status
new file mode 100644
index 0000000..dbc072a
--- /dev/null
+++ b/checkman/liebert_chiller_status
@@ -0,0 +1,9 @@
+title: Liebert Chiller
+agents: snmp
+catalog: hw/environment
+license: GPL
+distribution: check_mk
+description:
+ This check monitors the current state of a Liebert Chiller Device
+ It will returns {CRIT} if device is in an not OK state
+
diff --git a/checks/liebert_chiller_status b/checks/liebert_chiller_status
new file mode 100644
index 0000000..75e5b52
--- /dev/null
+++ b/checks/liebert_chiller_status
@@ -0,0 +1,44 @@
+#!/usr/bin/python
+# -*- encoding: utf-8; py-indent-offset: 4 -*-
+# +------------------------------------------------------------------+
+# | ____ _ _ __ __ _ __ |
+# | / ___| |__ ___ ___| | __ | \/ | |/ / |
+# | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
+# | | |___| | | | __/ (__| < | | | | . \ |
+# | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
+# | |
+# | Copyright Mathias Kettner 2013 mk(a)mathias-kettner.de |
+# +------------------------------------------------------------------+
+#
+# This file is part of Check_MK.
+# The official homepage is at http://mathias-kettner.de/check_mk.
+#
+# check_mk is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation in version 2. check_mk is distributed
+# in the hope that it will be useful, but WITHOUT ANY WARRANTY; with-
+# out even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU General Public License for more de-
+# ails. You should have received a copy of the GNU General Public
+# License along with GNU Make; see the file COPYING. If not, write
+# to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+# Boston, MA 02110-1301 USA.
+
+def inventory_liebhert_chiller_status(info):
+ return [(None,None)]
+
+def check_liebhert_chiller_status(_no_item, _no_params, info):
+ status = info[0][0]
+ if status not in [ "5", "7" ]:
+ return 2, "Device is in a non OK state"
+ return 0, "Device is in a OK state"
+
+
+check_info["liebhert_chiller_status"] = {
+ "check_function" : check_liebhert_chiller_status,
+ "inventory_function" : inventory_liebhert_chiller_status,
+ "service_description" : "Chiller status",
+ "has_perfdata" : False,
+ "snmp_scan_function" : lambda oid: oid(".1.3.6.1.2.1.1.2.0").startswith(".1.3.6.1.4.1.476.1.42.4.3.20"),
+ "snmp_info" : (".1.3.6.1.4.1.476.1.42.4.3.20.1.1.20", [ 2 ])
+}
Module: check_mk
Branch: master
Commit: 75f9586d18910ce7c015c11c44a97590bd43057f
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=75f9586d18910c…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Thu Nov 28 16:13:58 2013 +0100
Fixed conflicts in ChangeLog
---
ChangeLog | 97 -------------------------------------------------------------
1 file changed, 97 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index d6e929e..b939f1f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -99,103 +99,6 @@
* 0233 FIX: Fixed missing entries in log file and availability view...
-<<<<<<< HEAD
- * 0236 windows_agent: each script can now be configured to run sync / async...
-=======
- * 0072 cmciii_pu_access cmciii_pu_canbus cmciii_pu_io cmciii_pu_temp: New checks for the Rittal CMC-III PU Unit
- * 0100 juniper_cpu: New check for CPU utilization on Juniper switches
->>>>>>> 24701069454e2677c48a43158a0f615e9b8824fb
- * 0024 FIX: cisco_wlc: removed check configuration parameter ap_model...
- * 0003 FIX: ps: Remove exceeding [ and ] in service description when using process inventory...
- * 0037 FIX: checkman browser (cmk -m) was not working properly in network subtree...
- * 0283 FIX: Interface Checks: ignore invalid error counts while interface is down...
- * 0081 FIX: Fixed corruption in SNMP walks created with cmk --snmpwalk...
-
- Multisite:
- * 0001 New filters for selecting several host/service-groups at once...
- * 0050 New concept of favorite hosts and services plus matching filters and views...
- * 0211 GUI Notify: Added notify method "popup" to really create popup windows...
- * 0215 Added option to make HTML escape in plugin outputs configurable...
- * 0071 livedump: new option to include contact_groups instead of contacts when dumping configuration
- * 0043 FIX: LDAP: Improved error reporting during synchronisation...
- * 0044 FIX: LDAP: Fixed error with empty groups during non nested group sync...
- * 0045 FIX: LDAP: Fixed error when synchronizing non nested groups to roles...
- * 0046 FIX: Fixed editing contactgroup assignments of hosts or folders with "-" in names...
- * 0049 FIX: Fixed useless I/O during page processing...
- * 0203 FIX: Changed sidebar reload interval to be more random...
- * 0204 FIX: Reduced I/O on logins with access time recording or failed login counts...
- * 0206 FIX: Fixed logwatch permission check when using liveproxy for normal users...
- * 0210 FIX: LDAP: Fixed problem syncing contactgroups of a user with umlauts in CN
- * 0035 FIX: http[s] links are display again in the plugin output...
- * 0006 FIX: Checkboxes for hosts/services were missing on modified views...
- * 0284 FIX: Context help toggled on/off randomly...
- * 0285 FIX: Fixed bookmarking of absolute URLs or PNP/NagVis URLs in sidebar snapin...
-
- WATO:
- * 0053 New rule for configuring the display_name of a service...
- * 0216 Supporting float values as SNMP timeout value now...
- * 0082 Improved online help for LDAP connections...
- * 0048 FIX: Tests on host diagnose page are executed parallel now...
- * 0033 FIX: Fixed problem when saving settings in WATOs host diagnostic page...
- * 0205 FIX: NagVis related permissions of roles can be edited again...
- * 0207 FIX: Explicit communities were not saved in all cases...
- * 0094 FIX: Hide SNMPv3 credentials in WATO...
- * 0212 FIX: Fixed broken site edit page in case a TCP socket has been configured...
- * 0095 FIX: Fixed problem with portnumber in Wato Distributed Monitoring dialog
- * 0213 FIX: LDAP: Various small improvements for handling the LDAP user connector...
- * 0039 FIX: Fixed exception on displaying WATO helptexts in the global settings...
- * 0219 FIX: Fixed display problems in WATO folders with long contact group names
- * 0220 FIX: Added HTML escaping to several global settings attributes...
- * 0234 FIX: Improved handling of interface inventory states / types...
-
- Notifications:
- * 0005 Added notification script for sending SMS via mobilant.com...
- * 0032 FIX: Fixed problem when forwarding notification mails in windows...
- * 0218 FIX: Fixed rendering of HTML mails for Outlook (at least 2013)...
-
- Reporting & Availability:
- * 0051 Option for showing timeline directly in availability table...
- * 0052 Visual colorization of availability according to levels...
- * 0054 New labelling options for availability table...
- * 0055 Allow grouping by host, host group or service group...
- * 0056 New concept of service periods in availability reporting...
- * 0002 You can now annotate events in the availability reporting...
-
- Event Console:
- * 0026 FIX: snmptd_mkevent.py: fixed crash on startup
- * 0036 FIX: Fixed bug where multsite commands did not work properly...
-
- Livestatus:
- * 0067 livedump: new option to mark the mode at the beginning of the dump and documentation fixes...
- * 0023 FIX: Fixed incorrect starttime of table statehist entries...
- * 0034 FIX: Availability no longer showes incorrect entries when only one logfile exists...
- * 0233 FIX: Fixed missing entries in log file and availability view...
-
-
-<<<<<<< HEAD
-<<<<<<< HEAD
- * 0026 FIX: snmptd_mkevent.py: fixed crash on startup
- * 0036 FIX: fixed bug in multisite command execution...
-
- Livestatus:
- * 0067 livedump: new option to mark the mode at the beginning of the dump and documentation fixes...
- * 0023 FIX: table statehist: code cleanup / minor performance improvements
- * 0034 FIX: table statehist: no more missing entries if only one logfile exists
- * 0233 FIX: Fixed missing entries in log file and availability view...
-=======
- * 0026 FIX: snmpd_mkevent.py: fixed crash on startup
- * 0036 FIX: Fixed bug where multsite commands did not work properly...
-
- Livestatus:
- * 0067 livedump: new option to mark the mode at the beginning of the dump and documentation fixes...
- * 0023 FIX: Fixed incorrect starttime of table statehist entries...
- * 0034 FIX: Availability no longer showes incorrect entries when only one logfile exists...
- * 0233 FIX: Fixed missing entries in log file or availability view...
->>>>>>> 76d0c2c483e7807fec360708fb2ad5b03479dead
-
-
-=======
->>>>>>> 24701069454e2677c48a43158a0f615e9b8824fb
1.2.3i6:
Core & Setup:
* 0041 FIX: setup.py now handles non existing wwwuser gracefully...
Module: check_mk
Branch: master
Commit: 9ab3d8cbdd92dd2bca17ec6727c8ca0d49d68ff1
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=9ab3d8cbdd92dd…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Thu Nov 28 12:10:12 2013 +0100
FIX Error messages of datasource programs (e.g. VSphere Agent) are now visible within WATO
In previous versions, the error messages produced by datasource programs, e.g. during service
inventory or host diagnose, were not visible in WATO. The messages are now processed to be
shown in the GUI when an error occured.
---
.werks/288 | 10 ++++++++++
ChangeLog | 1 +
modules/check_mk_base.py | 14 ++++++++------
3 files changed, 19 insertions(+), 6 deletions(-)
diff --git a/.werks/288 b/.werks/288
new file mode 100644
index 0000000..49913ea
--- /dev/null
+++ b/.werks/288
@@ -0,0 +1,10 @@
+Title: Error messages of datasource programs (e.g. VSphere Agent) are now visible within WATO
+Level: 1
+Component: core
+Version: 1.2.3i7
+Date: 1385636887
+Class: fix
+
+In previous versions, the error messages produced by datasource programs, e.g. during service
+inventory or host diagnose, were not visible in WATO. The messages are now processed to be
+shown in the GUI when an error occured.
diff --git a/ChangeLog b/ChangeLog
index f7c377c..70ba72e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,7 @@
1.2.3i7:
Core & Setup:
* 0217 FIX: More verbose error output for SNMP errors on the command line...
+ * 0288 FIX: Error messages of datasource programs (e.g. VSphere Agent) are now visible within WATO...
Checks & Agents:
* 0060 cisco_fantray: new check for monitoring fan trays of Cisco Nexus switches
diff --git a/modules/check_mk_base.py b/modules/check_mk_base.py
index a1a5f60..e2aed27 100644
--- a/modules/check_mk_base.py
+++ b/modules/check_mk_base.py
@@ -613,21 +613,23 @@ def get_agent_info(hostname, ipaddress, max_cache_age):
# Get data in case of external program
def get_agent_info_program(commandline):
+ import subprocess
if opt_verbose:
sys.stderr.write("Calling external program %s\n" % commandline)
try:
- sout = os.popen(commandline + " 2>/dev/null")
- output = sout.read()
- exitstatus = sout.close()
+ p = subprocess.Popen(commandline, shell = True, stdout = subprocess.PIPE, stderr = subprocess.PIPE)
+ exitstatus = p.wait()
+ stdout = p.stdout.read()
+ stderr = p.stderr.read()
except Exception, e:
raise MKAgentError("Could not execute '%s': %s" % (commandline, e))
if exitstatus:
- if exitstatus >> 8 == 127:
+ if exitstatus == 127:
raise MKAgentError("Program '%s' not found (exit code 127)" % (commandline,))
else:
- raise MKAgentError("Agent exited with code %d" % (exitstatus >> 8,))
- return output
+ raise MKAgentError("Agent exited with code %d: %s" % (exitstatus, stderr))
+ return stdout
# Get data in case of TCP
def get_agent_info_tcp(hostname, ipaddress, port = None):
Module: check_mk
Branch: master
Commit: 380d49f1aad9853edc96c4170f016feab1c92c40
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=380d49f1aad985…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Thu Nov 28 12:00:00 2013 +0100
Updated bug entries #2092
---
.bugs/2092 | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/.bugs/2092 b/.bugs/2092
new file mode 100644
index 0000000..298da6b
--- /dev/null
+++ b/.bugs/2092
@@ -0,0 +1,10 @@
+Title: Impossible to change availability time range when too long to process the page
+Component: multisite
+State: open
+Date: 2013-11-28 11:58:45
+Targetversion: 1.2.3i6
+Class: bug
+
+It is impossible to fix time ranges set by the user in the GUI, when the currently choosen
+range results in a never loading availability page, since the settings can only be changed
+that page that never loads.
Module: check_mk
Branch: master
Commit: cf469d7c09f12114683ac926a0625ee1c2fa3cd4
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=cf469d7c09f121…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Thu Nov 28 10:22:01 2013 +0100
FIX Fixed assuming states of services with backslashes in descriptions
There was a bug which prevented assumind states for services with backslashes
in the service descriptions. In former versions, this was not possible. One
could click on the assumption icon, but after reloading the page, the
assumed state had not been set.
---
.werks/287 | 11 +++++++++++
ChangeLog | 3 +++
web/htdocs/bi.py | 2 +-
3 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/.werks/287 b/.werks/287
new file mode 100644
index 0000000..72e6b69
--- /dev/null
+++ b/.werks/287
@@ -0,0 +1,11 @@
+Title: Fixed assuming states of services with backslashes in descriptions
+Level: 1
+Component: bi
+Version: 1.2.3i7
+Date: 1385630366
+Class: fix
+
+There was a bug which prevented assumind states for services with backslashes
+in the service descriptions. In former versions, this was not possible. One
+could click on the assumption icon, but after reloading the page, the
+assumed state had not been set.
diff --git a/ChangeLog b/ChangeLog
index 0930012..f7c377c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -75,6 +75,9 @@
* 0032 FIX: Fixed problem when forwarding notification mails in windows...
* 0218 FIX: Fixed rendering of HTML mails for Outlook (at least 2013)...
+ BI:
+ * 0287 FIX: Fixed assuming states of services with backslashes in descriptions...
+
Reporting & Availability:
* 0051 Option for showing timeline directly in availability table...
* 0052 Visual colorization of availability according to levels...
diff --git a/web/htdocs/bi.py b/web/htdocs/bi.py
index fc6d18c..85a841c 100644
--- a/web/htdocs/bi.py
+++ b/web/htdocs/bi.py
@@ -1531,7 +1531,7 @@ def render_assume_icon(site, host, service):
(_("Assume another state for this item (reload page to activate)"),
# MIST: DAS HIER MUSS verfünftig für Javascript encodiert werden.
# Das Ausgangsmaterial sind UTF-8 kodierte str-Objekte.
- site, host, service != None and service or '')
+ site, host, service != None and service.replace('\\', '\\\\') or '')
current = str(ass).lower()
return u'<img state="%s" class=assumption %s src="images/assume_%s.png">\n' % (current, mousecode, current)
Better handling for non existant ramdisks
Message-ID: <5296ed9e.LswVwPStO3p8F6Fa%lm(a)mathias-kettner.de>
User-Agent: Heirloom mailx 12.4 7/29/08
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Module: check_mk
Branch: master
Commit: ec3a9b11fd5940f293a32bb1c2b21a6ea7b2b9a3
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=ec3a9b11fd5940…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Thu Nov 28 08:01:37 2013 +0100
FIX esx_vsphrere_counters.ramdisk: Better handling for non existant ramdisks
We sadly do not get the total ramdisk sizes from the ESX host, so we need to assume
that equal named ramdisks on the ESX hosts are all of the same size. The known
disks are configured in the check.
In the past, all ramdisks changed to <tt>UNKNOWN</tt>, once at least one ramdisk
was not known to the check. This has been changed now, to show only the not handled
ramdisk as UNKNOWN.
---
.werks/286 | 14 ++++++++++++++
ChangeLog | 1 +
checks/esx_vsphere_counters | 8 +++++++-
3 files changed, 22 insertions(+), 1 deletion(-)
diff --git a/.werks/286 b/.werks/286
new file mode 100644
index 0000000..975b0c9
--- /dev/null
+++ b/.werks/286
@@ -0,0 +1,14 @@
+Title: esx_vsphrere_counters.ramdisk: Better handling for non existant ramdisks
+Level: 1
+Component: checks
+Version: 1.2.3i7
+Date: 1385621928
+Class: fix
+
+We sadly do not get the total ramdisk sizes from the ESX host, so we need to assume
+that equal named ramdisks on the ESX hosts are all of the same size. The known
+disks are configured in the check.
+
+In the past, all ramdisks changed to <tt>UNKNOWN</tt>, once at least one ramdisk
+was not known to the check. This has been changed now, to show only the not handled
+ramdisk as UNKNOWN.
diff --git a/ChangeLog b/ChangeLog
index a8cf663..0930012 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -31,6 +31,7 @@
* 0037 FIX: checkman browser (cmk -m) was not working properly in network subtree...
* 0283 FIX: Interface Checks: ignore invalid error counts while interface is down...
* 0081 FIX: Fixed corruption in SNMP walks created with cmk --snmpwalk...
+ * 0286 FIX: esx_vsphrere_counters.ramdisk: Better handling for non existant ramdisks...
Multisite:
* 0001 New filters for selecting several host/service-groups at once...
diff --git a/checks/esx_vsphere_counters b/checks/esx_vsphere_counters
index fd04735..eaabcbd 100644
--- a/checks/esx_vsphere_counters
+++ b/checks/esx_vsphere_counters
@@ -282,6 +282,8 @@ check_info['esx_vsphere_counters.uptime'] = {
# +----------------------------------------------------------------------+
# We assume that all ramdisks have the same size (in mb) on all hosts
+# -> To get size infos about unknown ramdisks, connect to the ESX host via
+# SSH and check the size of the disk via "du" command
esx_vsphere_counters_ramdisk_sizes = {
'root': 32,
'etc': 28,
@@ -289,6 +291,7 @@ esx_vsphere_counters_ramdisk_sizes = {
'hostdstats': 319,
'snmptraps': 1,
'upgradescratch': 300,
+ #'ibmscratch': ,
}
def inventory_esx_vsphere_counters_ramdisk(info):
@@ -309,7 +312,10 @@ def check_esx_vsphere_counters_ramdisk(item, params, info):
try:
size_mb = esx_vsphere_counters_ramdisk_sizes[name]
except KeyError:
- return 3, 'Unhandled ramdisk found (%s)' % name
+ if item == name:
+ return 3, 'Unhandled ramdisk found (%s)' % name
+ else:
+ continue
used_mb = float(counter) / 1000
avail_mb = size_mb - used_mb
ramdisks.append((name, size_mb, avail_mb))
Module: check_mk
Branch: master
Commit: 9d2270d6fe8386c0c854d179b046618b986a395c
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=9d2270d6fe8386…
Author: Andreas Boesl <ab(a)mathias-kettner.de>
Date: Wed Nov 27 19:27:25 2013 +0100
windows_agent: each script can now be configured to run sync / async
The windows agent got two new configuration options <br>
For the <tt>[local]</tt> and <tt>plugins</tt> sections the parameter
<tt>execution</tt>, which allows to configure if a script should be executed
afterwards or while the agent collect its general data.
<br>
The <tt>[global]</tt> section now has the parameter <tt>async_script_execution</tt>
where you can configure whether 'delayed' scripts should be executed sequential or parallel.
You can find more information in our official documentation at the page "Monitoring Windows".
---
.werks/236 | 16 ++
ChangeLog | 32 +--
agents/windows/check_mk_agent.cc | 433 +++++++++++++++++++++----------------
agents/windows/check_mk_agent.exe | Bin 151040 -> 152064 bytes
agents/windows/install_agent.exe | Bin 146758 -> 146971 bytes
5 files changed, 259 insertions(+), 222 deletions(-)
Diff: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commitdiff;h=9d2270d6fe…