monit alerting - how to chain rule conditions - conditional-statements

is it possible to chain a rule condition, for example,
right now I have a filesystem disk usage check
check filesystem test-/ with path /
if space usage > 80% then alert
If I want a an alert at 80, 85, 90, 95%, I need to write 4 diff lines,
check filesystem test-/ with path /
if space usage > 80% then alert
if space usage > 85% then alert
etc..
Is there a way to chain these conditions into 1 line, maybe something like this?
check filesystem test-/ with path /
if space usage > 80%, 90%, 95% then alert
Thanks.

Related

Monit - Check if process exists and kill when consuming X memory

I have 'someprocess' running on some hosts, and want a single monit check for hosts with and without 'someprocess' running, which kills someprocess when memory usage exceeds a threshold.
Below check works, but on hosts not running someprocess monit continually logs "process is not running" in /var/log/monit.log.
check process someprocess
matching "someprocess"
if memory usage > 2% for 1 cycle then exec "/usr/bin/kill someprocess"
I want to also include 'if exists' but keep getting monit systax errors, Im not sure I can have more than one if statement.
Does anyone know if I can do this, so have something along the lines of:
if exists AND memory usage > 2% for 1 cycle then exec "/usr/bin/kill someprocess"
You can add an additional test and disable the monitoring if the application is not available, to prevent floating the logs with messages.
check process someprocess matching "someprocess"
if memory usage > 2% for 1 cycle then exec "/usr/bin/kill someprocess"
if not exist for 5 cycles then unmonitor
This will disable the check, if the application is not available for 5 monitor cycles. To enable the monitoring again, use "monit monitor someprocess".
See https://mmonit.com/monit/documentation/monit.html#EXISTENCE-TESTS

Why is df command showing incorrect size?

I am using a 64 MB QSPI formatted in some UBI partitions.
df is an applet of busybox 1.27.2
Actually,
~ # df -h
Filesystem Size Used Available Use% Mounted on
/dev/ubi0_0 3.1T 1.9T 1.2T 63% /
/dev/ubi1_0 1.6T 21.8G 1.5T 1% /conf
But, obviously, the size cannot be that! Anyway, the use % seems to be correct, for the files contained in the partitions weight few MB.
How do you explain that?
I have been able to fix the issue.
Busybox 1.28.0 commit d1535216 substitutes use of statfs with statvfs (https://github.com/mirror/busybox/commit/d1535216ca27047e3962d61b975bd2a638aa45a2).
I applied the commit to my project using Busybox 1.27.2 and, now, sizes are correct!
Thanks anyway.

Optimising applescript to decrease energy impact

I have this script that I created for a battery indicator widget that will show on my (Macbook pro) touch bar and have it set to re-run every 3 secs (to update the text and logo), but it is eating a lot of energy just running in the background and I was wondering if maybe there was a way to make it more efficient in some way in order to decrease battery consumption.
Here is the script:
(Keep in mind that the images for the icon are in base64 because I plan on sharing this widget with people who might know nothing about computers and therefor I can't have them download and save an image in a specific directory etc..)
set bat_empty_icon to "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAA3XAAAN1wFCKJt4AAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAAALzUlEQVR4Ae3dv69lVRUH8IdMDAxQTYjAWFAQEwsrAWNCYkFoJsgQO7UxYvQPoFWgMDYWxEYrbfzVAoUNgcRkEg2MFcWEhIIYYGhomOFXjOD6jjnkcmfemzez7ptz9r2fnay59915+9y1P/vsNeec+2P29jQCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINAXuKm/iUtbuLX+fLjioYqTFfes3N5R9zUC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"
set bat_low_icon to "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAGAGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMTgtMTItMTJUMDA6MDk6NTcrMDE6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDE4LTEyLTEyVDAwOjI0OjA1KzAxOjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDE4LTEyLTEyVDAwOjI0OjA1KzAxOjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjJmOGJiM2NlLTYxOTYtNDg2ZC1hNTAxLTNhZDVlNGZlZDlkNSIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmM4N2E0ZWM5LTRhOGQtYzM0Yy05MjU0LTA2Y2FhOGUzYjAxMSIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjBlYjhjMWMxLWI0MmEtNGUyOC04ODM0LTAzYWQyZGEwN2YwZSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MGViOGMxYzEtYjQyYS00ZTI4LTg4MzQtMDNhZDJkYTA3ZjBlIiBzdEV2dDp3aGVuPSIyMDE4LTEyLTEyVDAwOjA5OjU3KzAxOjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MmY4YmIzY2UtNjE5Ni00ODZkLWE1MDEtM2FkNWU0ZmVkOWQ1IiBzdEV2dDp3aGVuPSIyMDE4LTEyLTEyVDAwOjI0OjA1KzAxOjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz471XDCAAAI4klEQVR4nO3dvYsd1wGG8Wd3ReLVSpWKaOUULkwgRapYCgFDwMaNUCyTLlETYhP/ASZdYpsQ3KgwbpIqbpyPVnLhxlgQECRYSuVCGFyYIGnVqNHqkxBtiqMrr1ar1d09c++Zmff5wbD6YK/OFfc8e2bmztyFjY0NJGVabD0ASe0YACmYAZCCGQApmAGQghkAKZgBkIIZACmYAZCCGQApmAGQghkAKZgBkIIZACmYAZCCGQApmAGQghkAKZgBkIIZACmY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"
set bat_half_icon to "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"
set bat_three_quarters_icon to "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"
set bat_full_icon to "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"
set bat_charging_icon to "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAGGmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHRpZmY6T3JpZW50YXRpb249IjEiIHhtcDpDcmVhdGVEYXRlPSIyMDE4LTEyLTEyVDAwOjMwOjU5KzAxOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOC0xMi0xMlQwMDozNjowNyswMTowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOC0xMi0xMlQwMDozNjowNyswMTowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyMmUzY2RlNS0xNjNjLTRkMmQtYmNjZi04YmNhOTMxYzUwMWQiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo0NGVmZWJjMi1iM2E5LTM2NDMtOGFmMi1kZTI5NTVlNWNjMzgiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo4YTRiMzc2MS1hMjhlLTQzOGYtYjFiZi1iZDg5ZjE4M2JjZGIiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo4YTRiMzc2MS1hMjhlLTQzOGYtYjFiZi1iZDg5ZjE4M2JjZGIiIHN0RXZ0OndoZW49IjIwMTgtMTItMTJUMDA6MzY6MDcrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChNYWNpbnRvc2gpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDoyMmUzY2RlNS0xNjNjLTRkMmQtYmNjZi04YmNhOTMxYzUwMWQiIHN0RXZ0OndoZW49IjIwMTgtMTItMTJUMDA6MzY6MDcrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChNYWNpbnRvc2gpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmmDgZ0AABSESURBVHic7d17kJ1lYcfx7zl7kt0km01YEhODGMItggWMgFwcixquIjfBDpS2YrUXe3Ha2nHaqp1p60z5B23/kFptx+lFabUUW1GRKZcACYpYQK4BAsQkQpLNdZNNstnd0z9++3ZPNns557z3fX6fmTMLuZzz5Jzz/t7n/lTq9TpmFqZq3gUws/w4AMwC5gAwC5gDwCxgDgCzgDkAzALmADALmAPALGAO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"
set chargeState to do shell script "pmset -g batt | awk '{printf \"%s %s\\n\", $4,$5;exit}'"
set percentLeft to do shell script "pmset -g batt | egrep -ow '([0-9]{1,3})[%]'" as text
set percentcheck to (item 1 of words of percentLeft as integer)
on new_icon(base64Code)
set percentLeft to do shell script "pmset -g batt | egrep -ow '([0-9]{1,3})[%]'" as text
tell application "BetterTouchTool"
update_touch_bar_widget "482F2657-A978-4D25-B9D6-EABFAD7E3B0A" text percentLeft icon_data base64Code
end tell
end new_icon
if (chargeState contains "AC") then
my new_icon(bat_charging_icon)
else if percentcheck ≥ 85 then
my new_icon(bat_full_icon)
else if (percentcheck < 85) and (percentcheck ≥ 65) then
my new_icon(bat_three_quarters_icon)
else if (percentcheck < 65) and (percentcheck ≥ 31) then
my new_icon(bat_three_quarters_icon)
else if percentcheck < 31 then
my new_icon(bat_low_icon)
else if percentcheck ≤ 10 then
my new_icon(bat_empty_icon)
end if
Your first step should be to increase the intervals at which you run the script. There is no need to have it run every 3 seconds (!). Even once a minute would be sufficient but I, personally, would set it to something such as once every ten minutes, since the battery level doesn't tends to only change once within a ten minute window. Even if it changed twice (e.g. dropping from 97% to 96% then to 95%), there would be no negative consequences from your script registering the level going from 97% straight down to 95% in a ten minute interval.
The next thing you can do is store those base 64 strings in properties rather than variables. Properties are set once and stored between subsequent runs of a script. If the values of the properties aren't altered, then the script doesn't need to read a new set of values each time it executes. As they are set at compile time, the overhead is reduced at run time.
The next thing you can do is get rid of the do shell script commands. They incur a lot of overhead. Instead, you can use AppleScriptObjC calls to obtain the information you need. There is still a slight overhead in implementing AppleScriptObjC compared to vanilla AppleScript, but it won't be as great as the cost of creating multiple shell processes:
property bat_empty_icon : "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAA3XAAAN1wFCKJt4AAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAAALzUlEQVR4Ae3dv69lVRUH8IdMDAxQTYjAWFAQEwsrAWNCYkFoJsgQO7UxYvQPoFWgMDYWxEYrbfzVAoUNgcRkEg2MFcWEhIIYYGhomOFXjOD6jjnkcmfemzez7ptz9r2fnay59915+9y1P/vsNeec+2P29jQCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINAXuKm/iUtbuLX+fLjioYqTFfes3N5R9zUC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"
property bat_low_icon : "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAGAGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMTgtMTItMTJUMDA6MDk6NTcrMDE6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDE4LTEyLTEyVDAwOjI0OjA1KzAxOjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDE4LTEyLTEyVDAwOjI0OjA1KzAxOjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjJmOGJiM2NlLTYxOTYtNDg2ZC1hNTAxLTNhZDVlNGZlZDlkNSIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmM4N2E0ZWM5LTRhOGQtYzM0Yy05MjU0LTA2Y2FhOGUzYjAxMSIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjBlYjhjMWMxLWI0MmEtNGUyOC04ODM0LTAzYWQyZGEwN2YwZSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MGViOGMxYzEtYjQyYS00ZTI4LTg4MzQtMDNhZDJkYTA3ZjBlIiBzdEV2dDp3aGVuPSIyMDE4LTEyLTEyVDAwOjA5OjU3KzAxOjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MmY4YmIzY2UtNjE5Ni00ODZkLWE1MDEtM2FkNWU0ZmVkOWQ1IiBzdEV2dDp3aGVuPSIyMDE4LTEyLTEyVDAwOjI0OjA1KzAxOjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz471XDCAAAI4klEQVR4nO3dvYsd1wGG8Wd3ReLVSpWKaOUULkwgRapYCgFDwMaNUCyTLlETYhP/ASZdYpsQ3KgwbpIqbpyPVnLhxlgQECRYSuVCGFyYIGnVqNHqkxBtiqMrr1ar1d09c++Zmff5wbD6YK/OFfc8e2bmztyFjY0NJGVabD0ASe0YACmYAZCCGQApmAGQghkAKZgBkIIZACmYAZCCGQApmAGQghkAKZgBkIIZACmYAZCCGQApmAGQghkAKZgBkIIZACmY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"
property bat_half_icon : "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"
property bat_three_quarters_icon : "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"
property bat_full_icon : "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"
property bat_charging_icon : "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAGGmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHRpZmY6T3JpZW50YXRpb249IjEiIHhtcDpDcmVhdGVEYXRlPSIyMDE4LTEyLTEyVDAwOjMwOjU5KzAxOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOC0xMi0xMlQwMDozNjowNyswMTowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOC0xMi0xMlQwMDozNjowNyswMTowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyMmUzY2RlNS0xNjNjLTRkMmQtYmNjZi04YmNhOTMxYzUwMWQiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo0NGVmZWJjMi1iM2E5LTM2NDMtOGFmMi1kZTI5NTVlNWNjMzgiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo4YTRiMzc2MS1hMjhlLTQzOGYtYjFiZi1iZDg5ZjE4M2JjZGIiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo4YTRiMzc2MS1hMjhlLTQzOGYtYjFiZi1iZDg5ZjE4M2JjZGIiIHN0RXZ0OndoZW49IjIwMTgtMTItMTJUMDA6MzY6MDcrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChNYWNpbnRvc2gpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDoyMmUzY2RlNS0xNjNjLTRkMmQtYmNjZi04YmNhOTMxYzUwMWQiIHN0RXZ0OndoZW49IjIwMTgtMTItMTJUMDA6MzY6MDcrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChNYWNpbnRvc2gpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmmDgZ0AABSESURBVHic7d17kJ1lYcfx7zl7kt0km01YEhODGMItggWMgFwcixquIjfBDpS2YrUXe3Ha2nHaqp1p60z5B23/kFptx+lFabUUW1GRKZcACYpYQK4BAsQkQpLNdZNNstnd0z9++3ZPNns557z3fX6fmTMLuZzz5Jzz/t7n/lTq9TpmFqZq3gUws/w4AMwC5gAwC5gDwCxgDgCzgDkAzALmADALmAPALGAOALOAOQDMAuYAMAuYA8AsYA4As4A5AMwC5gAwC5gDwCxgDgCzgDkAzALmADALmAPALGAOALOAOQDMAuYAMAuYA8AsYA4As4A5AMwC5gAwC5gDwCxgDgCzgDkAzALmADALmAPALGAOALOAOQDMAuYAMAuYA8AsYA4As4A5AMwC5gAwC5gDwCxgDgCzgDkAzALmADALmAPALGAOALOAOQDMAuYAMAuYA8AsYA4As4A5AMwC5gAwC5gDwCxgDgCzgDkAzALmADALmAPALGAOALOAOQDMAuYAMAuYA8AsYA4As4A5AMwC5gAwC5gDwCxgDgCzgDkAzALmADALmAPALGAOALOAOQDMAlbLuwBFV6lU8i5Cu2rAsaOPTmAbsCXrQtTr9axf0lrgGsDMNRt4F3ABCoE6UNo0s3Q4AGaeCrr4zwJ+BbgU1QYO5VkoK6ZazCpuN7AQeAtwIbAKWAwsGv3ZHbN8oXov8HSbf3cWsBK4FrgMeALYDOxGtYDIp4A/a7eAzSpxEyoyAuwEtgN9wKvAD4GngF2jj8HcShdTu30A3cCpwMXAlcC5qJ3pGkUy4vTNzEefy3XAAqAf2AoMj/tz84DeGK8TkkXo+x4ZBt4AHgDuBR4CNuZQrtha/aJ1Ar8A/CZwIwoCX/TJi9NzdgzwbuBE4ACwATg8wZ8bifEaoesAjgNuRs2s9cBtwHeBn+dYrpa1EgCnArcAHwWWplIai2sp8EFUI+sAXgKeY+IAsPii9s1K4HZg7ejPe1GTq/CaDYArgL8AzsE9yUXVBVwN/Aa6O+1HF/9mYCjHcoWiBlwEnAF8C/grchh2bdV01fcuVMW5Hd1VfPEXUyfqgL0EOB3d/fcCm4AduLqfpV7URP47NBJTaFMFQC/qKf5b4IRMSmPtqAGnoV7/Mxt+/TCwBwWBAyBbFeAq4B/QMGxhTdYEmA/8PvCn6O5ixdWJJvxcBry14dcH0d1/N0ePAFg2zgFuRWH8QM5lmdBkNYAPAZ/GF3/R1VCVf/Xoz66G3xtEY9e7sy+WNVgFfAaNyhTO+ACooDHkW4G52RfHWnQK8Nto4tCscb93EI3/H8y4THa01cBfUsB5F+MD4CTg83iYr+gqaAbmJajn/00T/Jnd+O5fJNcDf5h3IcZrDIC5qMf/7JzKYs3rBT6Axvx7Jvj9qPrvu39xdAEfRouzCqMxAE4DPoKXCBddB2rvX4OGZsd/XiOo538bJZ6jPkOdCnwi70I0igKgB/gYHu4ruhqwBPX6r0LNgPHNuGG0eGUXngBUNBXUH3BtzuX4f9GX5yRUPbFimGzCVQ+alXklRw75NTqMVq1tZ+oA6Gi7dBbHMtTULsT7X0MFuRiN/SdlP1qIMoCqoZ5B2Lwqk7fdlwM3AOehNf8TOYxqADuZeg1AtLTVk4QmV0Ft9y60sjKpi/ZtaI7AjxJ6vrbVgDmoWpLEmH8/sAYthvgpmou+C72RDoHmVDi67V5FQ34fRhf/VEO0Q4zVAKYKgC+jmWres2tidTS0ehxa7HM+qrq/PYHnPgF9jrkHAKj6vwP9g+M8ngV+By8RTsMitHnHKygcpvoctgFfAN7JkRODLL4zgH9Ctau418vXKEgz4KNou6g4/5gNwPvxXT4Nc1ET7Qc091n8HPgs6iNwECevF82ViRsA69DIW66qaCgpzhdlF1owdD+uTiathu7k16CNWJoxhGp0u3D7Pg07ga+izT/iWE5BAmAp8QJgLXBHMsWxcWajNeZXMvFsv4kMoi9pf1qFMjYCXyLeTMseCjA1uIral+1W3ftR1XRHYiWySA9qVl0OrKD5CVp7UABYup4FHo7x96MNdXNtNkcTS9otxF7gBVzVTMMq4OM0v6lE1LbchYZgLV07gRdjPkc3OTebazRftZxIP+oAtOTMRp/J5Wh4ttmt1evAPjQK4ABI3z7if/dXouHAdm6gFfSZH0LzRg7RRtMvmgfQrkPojbDkvBl1+l1Ea5/NMLr7b8eHgGRld8y//yEU9O3Mk6mg4NiHmn196AyIR9AuxetpYi2IF/4UT3Soxxm0Nk48ggOgbGYz+YzOZi1Ak5VA28HfAryGNib9T9REn7SZ4QAojhoaGnoPGvpr9VSlYXRH8jLgcHWgQDgL3UiuBr4C/AeqJRzFAVAcPeiwlWuYeI3/dOqMVQVdA7AutGr0dLTHx+eZ4NASzxQrhipK7RtR1b+dUZkRxmoADgCLdKNt425Hw8lHcA0gfzXUdrsJOD7G80QbgezATQA7UgXVLPcAf4D6igDXAIpgGWqrXU28JdlRDaAPHwVmE7sJ+CQNHY8OgPxU0VTQ89BS0yXE+zyifQC8BsAmMwvt/HVZ9AsOgPzU0KYQ1wInJ/B8+1D13/sA2lSORzWBeeAAyNNCNAnkSuDYGM8TjfHuRH0AXpJt03k/uvHMcgDkYwnqlFlNMltNDaApwPvwkmyb3hLgfUCnAyB7VeBC1BZbmcDz1dH87z68BsCadzJwoYcBszUbTcy4FHgHyezDWGfsHICBBJ7PwnAicJFrANl6KzrR53ySnYOxD08Bttb0Aic4ALL1DnRu/OkktyFk1ATYhrZjN2vGXGCJmwDZ6ETHQl2K9vaLuwKs0QhjAeCl2eWyBW2d30FrI3IV1N+zgvb7kSrAIgdANpag3ZevYnT8NWH96Chw9wGUyz3A59BKzlaGbyto89dfA26L8fpdDoB0dQDHoHHXK0nn2HUvAiqvfuD1GH8/9t6P7gNI13y0vv8q4m29NpVoEdDelJ7f0tOBpue2K/YN3AGQrhWo1/89JHv2YqP9eATA2uQmQDqqaHrvOaOPXtI5BqrO2EGgngFoLXMNIB2zUbv/etT7n9YZcPvRIRWv4va/tcE1gHQchy7+i0j3gM4DqO1fReO6Q+Qb6nXUQ11Dbds68XfOtRQ5AJJVQact/xJwAemfztuJZhdeh7YUGya/E2frqOYzB9VMtqH1CXHP0LMUOQCSNR91+n2Esa2a0zQXeBsKnWF098+rBjCCAq8TNUu+R/yTcyxlDoDkdANnopV+y8lmXX4HCp2i7QHQgWa4PZt3QWxqDoDknILG+88mmVV+zSjahT+COiPXAg+hAyqswBwAyagC56JdVpbnW5Rc7UFV/zuATXh/gsJzAMQ3Bx3AcAUa8gvZG8B3gAfwxV8KngcQ30rgE8DFeRckZwfROXTP4Yu/NFwDaF90tPrFwHtp/Sy/mWQIWIcOo3wt36JYK1wDaF8P2tX3cto7y28m6Qf+G1X/Wzqf3vLlAGjfCuCDaK7/nJzLkqd+dC79Y0xyAq0VlwOgPcuAX0RDfgtyLkvenkc9/0edPGvF5wBoXQ24AbgFeHO+RcldHbX970QjAFYy7gRsTRdwGhrvPzPfouRuENiAAuC1fIti7XIAtOYs4JfRrr6h2wD8O/BU3gWx9jkAmlNBG3teiu7+i3MtTf4GgceBu/Ddv9TcB9CcbtThdy5a5Rfq+xbtOrQNTfh5BZ9GXGquAUxvGbr4b0Yn+uS13r4IKugI8ruBNfggktJzAExvFVrldzUa789r773odSvjfmbtReAbwJN4H8LScwBMbwWwEG29tRXd9fK4+Opo04/6aHkWow1BsjKCdh9+BF38nu8/AzgApncIfeG3jP73ALoIs+wHGBl9zcHR/z4DWE22AbAbeBBV/Q9n+LqWIgfA9B5j7Oy2YbTwJdr8Mit1xmoAg6gdHnVIZiXa3+9R3PE3YzgApvd03gUYZwQ4efRnFuqo1vM4mvQT+zgqKw4HwPSyutCaNRvNSchq27EDwMNotd+2jF7TMhLqeHZZ1dD6gxVktwLxDXSK7f349OEZxzWAcqmhvQe6SX8+QtTnsBFN+tme8utZDlwDKJcaGgLsIf0AGEFLfe9GW33ZDOQaQLnU0P4DC0g/AA4A96Idfn33n6EcAOUyC9UAFpJeANTROP/zaNLP6ym9jhWAmwDlEjUB5pNeeA+j04b/B3iZ4h0+YglyAJRL1AnYQ7qf3ZNo0s9GPN9/RnMToFw6SLcPoI5mGa4D/hfP95/xHADlEtUA0gqA19HW3g/jiz8IbgKUyyx08c8j+c9uBFX9vwmsx23/ILgGUC5dQC/pfG770ISf5/GMv2A4AMplPhoFSNpuNOS3BvUBWCDcBCiPCqr+d6Xw3BuBf0Ntfy/1DYhrAOUxDzgGrQZMyjCq+kdLfX20V2BcAyiHKqr+95BsaA+g4b51+FDPIDkAyqGKLv5jSDYA9qJz/R5E/QAWGDcByqEDBcBCNBSYhDra1/8+1AcwnNDzWvMGibe/4sG4BXAAlENUA1hAMgFwGI31fwcd8eWLPx8rgStQB2+rtfGDwLtivn7dAVAOUQD0kkwA7AG+jU719eEe+bkEHTZTofWJV8PE3xW63wFQDo1NgCQ+s22o8+81irfnYUg6yW5vx/GGgG3uBCyHJGsAG9FGH0/jiz9k+4CtDoByaBwGjBMAI2jG3zeATQmUy8prK/CcmwDlEAXAAtpvAgyhD/0B4McJlcvK62XgHgdAOURNgHkxnuN1tLX3c4mUyMqsjhZ9vegmQDlEqwDjTAN+AS31fSmRElmZPYNGgIZdAyiH+WgWYLtr9Pej+f73owNOLWzfA36E5wGUQgUN/7V7EtAutMx3DQnMHLPSexD4OqN7PboJUHzziDf+vwEt9f0J3uUndG8At9Nw4K1rAMUXLQNuZ8LIMPAiOuK8L8lCWekcAP4a+FbjLzoAiq2CzgHspfWNQIaBJ9C4/9aEy2Xl0gfcCvz9+N9wABRbFdUA2hkB2Inaet/GO/yG7AngCzS0+xs5AIqtgkYAemm+CVBHnX0/Qaf7+GivML0E/AD4Z6aY+OUAKL5u1AnYbA3gEFrquwYt+rEwHEAbum4Gfora+uuYZofnGvEWhFTxSEKaGmsAzfYBDKA7//fRjj+WnriHs2xGE7SqtD5CU0H9PHtQc68PVffXotOcm9rctYa+JO2OMc8BFuNOprRU0Hu8kOZqAHX0WTwCPItX+6WpAiyN+RzfBD5NjhuyVIl38fYAJydUFptY1Ak4XQ1gBG3xdTeqAg7hAEjTMcBJMZ9jLzkfvhoFQLuFWACcTXpn1YcuGgZcgD6rqT6nATTL607c9s/CIuCdMf7+EJqlmWtIV1Hbod1CdAIfQHubWfIq6E4zv+H/x4tCYQea7/803uYrbTVgNfECYB8F2Im5Svxtoc4E/oh4S1VtYnNQAExX/d+B2v1P4jH/LFwA/DHxRtH60NTcXFXRcVBDMZ6jBlwP/B7xO0XsSD2oCTDVF60CPAX8K1rrn2ubcoarAe8GPgWcGPO5XkZ9Nbl7E+o8qsd8DKCtpi4AlhF/x9LQ1VAV804mf89HUB/OZ3ANLC3RmYzHAR9nbHQl7vXyxSz/EZOpobbIQ8By4o3pzwFuQm2j+9Eb9Ryqnraz7fFMVUXt9Ok66jpRDWCqGYC70Syvp5h8nf9q9IWtAGfQ3GdcRbsGh6yO9l88HjgFuHD0kcTkuT7UX1MIFeBm9AWKm2p+NPe4uYnPZTFqWt3H5HecHwMfQ3enyQI273+rH0c/HgNWTPJ5ZSoaWlqLmgGWjWb6XKJlwJNN0hpGbchovn89maJZyoaAHwKv5l0QGKsObgG+hM+GL5I5aALQRH0pA4wt9tmMJ/yUyfNoU45CiALgMJpB9liOZbEjRQEwUQ3gFdTh+jC+85fJftSp+0LeBYk0dgj9DNUCduVUFjtSFxPPAaij6uOj+O5fNo8CX8m7EI0aA2AEVSn/K6ey2JHmcvRmoIPo4n8cBbaVx2bgaxRsf4bxQ0J9wJ+jOeWWr6gG0NgH0I8C+i40vGrlcBD4G9RsK5SJxoQ3oWmO6zMuix0pGgWImgB11Pb/LppHcDincllrhoEvo+Z14Uw2KeQJNN3xxQzLYkeaizoBO9CX6Geo068Qw0fWtK8Dt1HQMxkmC4ARdHrI76JthSxb0U5APaP/P4jmanwfb+9dFofQXf+zqP1fSFNNC62jTsFfRzvLWnbmoIs/6gA8gPb4exRv81UGW4HPAX9CwY9hb2Ze83rgk6jqeQOaG23pmg8ci9r//ajq/yhe5190B9D07K+i05jirLLNRLMLGzahvcvuA34LOB/NVbfk1VDbfzFq/z+Dvkxb8iyUTWkE3SjvAv6REk2rb2Vl0xDqgb4XuBH4VbQn2vFo1ZQlYyHwdvTe1lGH7ANo51crll1oB95H0PLeZ/ItTuvaWdp4GPgX4A60OcL7gPPQ6qalaPjK5w1Mbaodfo4FTkNr0DejL5XH/IvhILroo+2816JwLu1oWZwLdQgtSNkA3IPWSq9CVddFoz+74xZwhpqqI68bBekm9MV6gnjbRjfWHBbS/L4MnhIuI+g93I5GYF5Fq/meQu9Rqd+nSr3utSRTqVQy38fkLOA6NPS3Dm2ssj3rQiTF369icwBMI4cAeAvaZXkvOt+tnxwPjojL369icwBMI4cA6EHt/wEKsG98XP5+FZsDwCxgPtjTLGAOALOAOQDMAuYAMAuYA8AsYA4As4A5AMwC5gAwC5gDwCxgDgCzgDkAzALmADALmAPALGAOALOAOQDMAuYAMAuYA8AsYA4As4A5AMwC5gAwC5gDwCxgDgCzgDkAzALmADALmAPALGAOALOAOQDMAuYAMAuYA8AsYA4As4A5AMwC5gAwC5gDwCxgDgCzgDkAzALmADALmAPALGAOALOAOQDMAuYAMAuYA8AsYA4As4A5AMwC5gAwC5gDwCxgDgCzgDkAzALmADALmAPALGAOALOA/R+GatypVlYrzAAAAABJRU5ErkJggg=="
global percentage
set [percentage, powersource] to [|current capacity|, ¬
|power source state|] of battery's info()
if powersource contains "AC" then
new_icon(bat_charging_icon)
else if percentage ≥ 85 then
new_icon(bat_full_icon)
else if percentage ≥ 65 then
new_icon(bat_three_quarters_icon)
else if percentage ≥ 31 then
new_icon(bat_three_quarters_icon)
else if percentage ≥ 11 then
new_icon(bat_low_icon)
else
new_icon(bat_empty_icon)
end if
on new_icon(base64Code)
global percentage
tell application "BetterTouchTool"
update_touch_bar_widget ¬
"482F2657-A978-4D25-B9D6-EABFAD7E3B0A" text ¬
"" & percentage & "%" icon_data base64Code
end tell
end new_icon
script battery
use framework "IOKit"
on info()
current application's IOPSCopyPowerSourcesInfo() as record
end info
end script
Additionally, I tidied up the if...then...else block so it doesn't do more number comparisons than necessary.

Why received ZFS dataset uses less space than original?

I have a dataset on the server1 that I want to back up to the second server2.
Server1 (original):
zfs list -o name,used,avail,refer,creation,usedds,usedsnap,origin,compression,compressratio,refcompressratio,mounted,atime,lused storage/iscsi/webhost-old produces:
NAME USED AVAIL REFER CREATION USEDDS USEDSNAP ORIGIN COMPRESS RATIO REFRATIO MOUNTED ATIME LUSED
storage/iscsi/webhost-old 67,8G 1,87T 67,8G Út kvě 31 6:54 2016 67,8G 16K - lz4 1.00x 1.00x - - 67,4G
Sending volume to the 2nd server:
zfs send storage/iscsi/webhost-old | pv | ssh -c arcfour,aes128-gcm#openssh.com root#10.0.0.2 zfs receive -Fduv pool/bkp-storage
received 69,6GB stream in 378 seconds (189MB/sec)
Server2 zfs list produces:
NAME USED AVAIL REFER CREATION USEDDS USEDSNAP ORIGIN COMPRESS RATIO REFRATIO MOUNTED ATIME LUSED
pool/bkp-storage/iscsi/webhost-old 36,1G 3,01T 36,1G Pá pro 29 10:25 2017 36,1G 0 - lz4 1.15x 1.15x - - 28,4G
Why is there such a difference in sizes? Thanks.
From what you posted, I noticed 3 things that seemed odd:
the compressratio is 1.15x on system 2, but 1.00x on system 1
on system 2, used is 1.27x higher than logicalused
the logicalused and the number zfs receive report are ~2.3x higher on system 1 than system 2
These terms are all defined in the man page, but are still confusing to reverse-engineer explanations for in practice.
(1) could happen if you enabled compression on the source dataset after you wrote all the data to it, since ZFS doesn't rewrite the data to compress it when you enable that setting. The data sent by zfs send is uncompressed unless you use -c, but system 2 will try to compress it as it runs zfs receive if the setting is enabled on the destination dataset. If both system 1 and system 2 had the same compression settings before the data was written, they would have the same compressratio as well.
(2) can happen due to metadata written along with your data, but in this case it's too high for "normal" metadata, which accounts for 1-2% of most pools. It's probably caused by a pool-wide setting, like configuring RAID-Z, or a weird combination of striping and mirroring (like 4 stripes, but with one of them being a mirror).
For (3), I re-read the man page to try to figure it out:
logicalused
The amount of space that is "logically" consumed by this dataset and
all its descendents. See the used property. The logical space
ignores the effect of the compression and copies properties, giving a
quantity closer to the amount of data that applications see.
If you were sending a dataset (instead of a single iSCSI volume) and the send size matched system 2's logicalused value (instead of system 1's), I would guess you forgot to send some child datasets (i.e. by using zfs send -R). However, neither of those are true in this case.
I had to do some additional digging -- this blog post from 2005 might contain the explanation. If system 1 didn't have compression enabled when the data was written (like I guessed above for (1)), the function responsible for not writing zeroed-out blocks (zio_compress_data) would not be run, so you probably have a bunch of empty blocks written to disk, and accounted for in the logicalused size. However, since lz4 is configured on system 2, it would run there, and those blocks would not be counted.

Apache httpd rotatelogs: is it possible to create a new file every day?

I want to make a new logs for my website every 00:00:01 (= each new day).
The problem with rotatelogs is that you can either precise the max size of the logs before creating a new one, or precise the rotation time in seconds. It's not possible to precise an hour of rotation.
They talk about "cronjobs", but I don't get it. Could someone please explain if it's possible, and if so, give an example?
Thank you very much
Following is the help of the rotatelogs utility:
/ # /opt/httpd/bin/rotatelogs --help Incorrect number of arguments
Usage: /opt/httpd/bin/rotatelogs [-l] [-f] {|} [offset minutes from UTC]
Add this:
TransferLog "|/opt/httpd/bin/rotatelogs /some/where 86400"
or
TransferLog "|/opt/httpd/bin/rotatelogs /some/where 5M"
to httpd.conf. The generated name will be /some/where.nnnn where nnnn
is the system time at which the log nominally starts (N.B. if using a
rotation time, the time will always be a multiple of the rotation
time, so you can synchronize cron scripts with it). At the end of each
rotation time or when the file size is reached a new log is started. /
#
According to this section of the manual page for rotatelogs:
rotationtime
The time between log file rotations in seconds. The rotation
occurs at the beginning of this interval. For example, if the
rotation time is 3600, the log file will be rotated at the
beginning of every hour; if the rotation time is 86400, the log
file will be rotated every night at midnight.
setting 86400 as the period will do what you want (new file started at midnight every day).
Also use the -l option if you want "midnight" to be in your local timezone rather than UTC.
The case when a cronjob would be needed is if you wanted a period of one day but at a different time than midnight. More general tools like logrotate (outside apache) are typically used for that.