diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2024-06-03 19:56:39 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2024-06-03 19:56:39 +0800 |
| commit | ca968c4e5040f1ff4b5b5e12d9312360d807dcc1 (patch) | |
| tree | 9900920e8f566794560c1519678e344351d2803b /dot-config/polybar/modules.ini | |
| parent | 5f3deaff0bf006a1a353e57b82ad48c0e8f143bc (diff) | |
added submodules, change . -> dot (see man stow --dotfiles)
Diffstat (limited to 'dot-config/polybar/modules.ini')
| -rw-r--r-- | dot-config/polybar/modules.ini | 824 |
1 files changed, 824 insertions, 0 deletions
diff --git a/dot-config/polybar/modules.ini b/dot-config/polybar/modules.ini new file mode 100644 index 00000000..e451de2e --- /dev/null +++ b/dot-config/polybar/modules.ini @@ -0,0 +1,824 @@ +[module/volume] +type = internal/pulseaudio + +; Sink to be used, if it exists (find using `pacmd list-sinks`, name field) +; If not, uses default sink +;sink = alsa_output.pci-0000_12_00.3.analog-stereo +sink = + +; Use PA_VOLUME_UI_MAX (~153%) if true, or PA_VOLUME_NORM (100%) if false Default: true +use-ui-max = false + +; Interval for volume increase/decrease (in percent points) +; Default: 5 +interval = 1 + +format-volume = <ramp-volume> <label-volume> + +format-muted = <label-muted> +format-muted-prefix = 婢 +format-muted-prefix-font = 2 +format-muted-prefix-foreground = ${color.RED} + +label-volume = %percentage%% +label-muted = " Mute" +label-muted-foreground = ${color.ALTFOREGROUND} + +ramp-volume-0 = 奄 +ramp-volume-1 = 奄 +ramp-volume-2 = 奄 +ramp-volume-3 = 奔 +ramp-volume-4 = 奔 +ramp-volume-5 = 奔 +ramp-volume-6 = 墳 +ramp-volume-7 = 墳 +ramp-volume-8 = 墳 +ramp-volume-9 = 墳 +ramp-volume-font = 2 +ramp-volume-foreground = ${color.BLUE} + +ramp-headphones-0 = +ramp-headphones-1 = + +;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ + +[module/bna] +type = custom/text + +content = " NA" +content-prefix = +content-prefix-font = 2 +content-prefix-foreground = ${color.RED} +content-padding = 0 + +;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ + +[module/backlight] +type = internal/xbacklight + +card = intel_backlight + +format = <ramp> <label> + +label = %percentage%% + +ramp-0 = +ramp-1 = +ramp-2 = +ramp-3 = +ramp-4 = +ramp-5 = +ramp-6 = +ramp-7 = +ramp-8 = +ramp-9 = +ramp-font = 2 +ramp-foreground = ${color.MAGENTA} + +;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ + +[module/brightness] +type = internal/backlight + +card = ${system.sys_graphics_card} + +enable-scroll = true + +format = <ramp> <label> + +label = %percentage%% + +ramp-0 = +ramp-1 = +ramp-2 = +ramp-3 = +ramp-4 = +ramp-5 = +ramp-6 = +ramp-7 = +ramp-8 = +ramp-9 = +ramp-font = 2 +ramp-foreground = ${color.MAGENTA} + +;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ + +[module/battery] +type = internal/battery + +full-at = 99 + +battery = ${system.sys_battery} +adapter = ${system.sys_adapter} + +poll-interval = 2 +time-format = %H:%M + +format-charging = <animation-charging> <label-charging> +format-charging-prefix = + +format-discharging = <ramp-capacity> <label-discharging> + +format-full = <label-full> +format-full-prefix = " " +format-full-prefix-font = 2 +format-full-prefix-foreground = ${color.RED} + +label-charging = %percentage%% +label-discharging = %percentage%% +label-full = %percentage%% + +ramp-capacity-0 = +ramp-capacity-1 = +ramp-capacity-2 = +ramp-capacity-3 = +ramp-capacity-4 = +ramp-capacity-font = 2 +ramp-capacity-foreground = ${color.YELLOW} + +animation-charging-0 = +animation-charging-1 = +animation-charging-2 = +animation-charging-3 = +animation-charging-4 = +animation-charging-font = 2 +animation-charging-foreground = ${color.GREEN} +animation-charging-framerate = 750 + +;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ + +[module/workspaces] +type = internal/bspwm + +pin-workspaces = true +inline-mode = false + +enable-click = true +enable-scroll = true +reverse-scroll = true + +fuzzy-match = true + +; ws-icon-[0-9]+ = label;icon +; Note that the label needs to correspond with the bspwm workspace name +ws-icon-0 = 1; +ws-icon-1 = 2; +ws-icon-2 = 3; +ws-icon-3 = 4; +ws-icon-4 = 5; +ws-icon-5 = 6; +ws-icon-6 = 7; +ws-icon-7 = 8; +ws-icon-8 = 9; +ws-icon-9 = 10; +ws-icon-default = + +format = <label-state> +format-font = 2 + +label-monitor = %name% + +; If any values for label-dimmed-N are defined, the workspace/mode +; colors will get overridden with those values if the monitor is out of focus +; To only override workspaces in a specific state, use: +; label-dimmed-focused +; label-dimmed-occupied +; label-dimmed-urgent +; label-dimmed-empty +;label-dimmed-foreground = ${color.FOREGROUND} +;label-dimmed-underline = ${color.YELLOW} +;label-dimmed-focused-background = ${color.BACKGROUND} + +label-focused = %name% +label-focused-foreground = ${color.ACCENT} +label-focused-background = ${color.BACKGROUND} +label-focused-underline = ${color.ACCENT} +label-focused-padding = 1 + +label-occupied = %name% +label-occupied-foreground = ${color.GREEN} +label-occupied-background = ${color.BACKGROUND} +;label-occupied-underline = ${color.GREEN} +label-occupied-padding = 1 + +label-urgent = %name% +label-urgent-foreground = ${color.RED} +label-urgent-background = ${color.BACKGROUND} +label-urgent-underline = ${color.RED} +label-urgent-padding = 1 + +label-empty = %name% +label-empty-foreground = ${color.FOREGROUND} +label-empty-padding = 1 + +; Separator in between workspaces +label-separator = "|" +label-separator-padding = 0 +label-separator-foreground = ${color.ALTBACKGROUND} + +;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ + +[module/mod] +type = internal/bspwm + +format = <label-mode> +format-background = ${color.BACKGROUND} +#format-foreground = ${color.FOREGROUND} +format-foreground = ${color.YELLOW} +format-padding = 1 + +label-monocle = "Monocle" +label-tiled = "Tiled" + +label-floating = " | Float" +label-pseudotiled = " | Pseudo" +label-fullscreen = " | Full" + +label-locked = " | Locked" +label-sticky = " | Sticky" +label-private = " | Private" + +;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ + +[module/date] +type = internal/date + +# doesnt work for some reson ##locale = zh_CN.UTF-8 + +interval = 1.0 + +time = %I:%M:%S %p +time-alt = %a, %d %b %Y + +format = <label> +format-prefix = " " +format-prefix-font = 3 +format-prefix-foreground = ${color.RED} + +label = %time% +label-font = 4 + +;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ + +[module/mpd] +type = internal/mpd + +;;host = 127.0.0.1 +;;port = 6600 +;;password = mysecretpassword + +interval = 2 + +format-online = <label-song> <icon-prev> <toggle> <icon-next> +format-online-prefix = " " +format-online-prefix-foreground = ${color.GREEN} + +format-playing = ${self.format-online} +format-paused = <label-song> <toggle> + +format-offline = <label-offline> +format-offline-prefix = " " +format-offline-prefix-foreground = ${color.RED} +label-offline = "Offline" + +label-song = "%title% | %artist%" +label-song-maxlen = 40 +label-song-ellipsis = true + +icon-play = +icon-play-font = 2 +icon-play-foreground = ${color.GREEN} +icon-pause = +icon-pause-font = 2 +icon-pause-foreground = ${color.YELLOW} +icon-stop = +icon-stop-foreground = ${color.RED} +icon-prev = 玲 +icon-prev-font = 2 +icon-prev-foreground = ${color.CYAN} +icon-next = 怜 +icon-next-font = 2 +icon-next-foreground = ${color.CYAN} + +;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ + +; If you use both a wired and a wireless network, add both modules in config. +[module/ethernet] +type = internal/network +interface = ${system.sys_network_interface} + +interval = 1.0 +accumulate-stats = true +unknown-as-up = true + +format-connected = <label-connected> +format-connected-prefix = " " +format-connected-prefix-font = 3 +format-connected-prefix-foreground = ${color.CYAN} + +format-disconnected = <label-disconnected> +format-disconnected-prefix = " " +format-disconnected-prefix-font = 3 +format-disconnected-prefix-foreground = ${color.RED} +format-disconnected-foreground = ${color.ALTFOREGROUND} + +label-connected = "%{A1:nmd &:}%downspeed% | %upspeed%%{A}" +label-disconnected = "%{A1:nmd &:}Offline%{A}" + +;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ + +[module/network] +type = internal/network +# interface = ${system.sys_network_interface} +interface = enp3s0 + +interval = 1.0 + +;;ping-interval = 3 +;;udspeed-minwidth = 5 + +accumulate-stats = true +unknown-as-up = true + +format-connected = <ramp-signal> <label-connected> + +format-disconnected = <label-disconnected> +format-disconnected-prefix = " " +format-disconnected-prefix-font = 3 +format-disconnected-prefix-foreground = ${color.RED} +format-disconnected-foreground = ${color.ALTFOREGROUND} + +label-connected = "%{A1:nmd &:}%essid%%{A}" +label-disconnected = "%{A1:nmd &:}Disconnected%{A}" + + +ramp-signal-0 = +ramp-signal-1 = +ramp-signal-2 = +ramp-signal-3 = +ramp-signal-4 = +ramp-signal-font = 3 +ramp-signal-foreground = ${color.CYAN} + +[module/speedtest] +type = custom/script +exec-if = hash speedtest +exec = "$HOME/.config/polybar/scripts/polybar-speedtest" +interval = 90 + +[module/cava] +type = custom/script +exec-if = cava +exec = "$HOME/.config/polybar/scripts/polybar-cava.sh" +tail = true +#interval = 0 + +[module/wifi-up] +type = internal/network + +interface = wlan0 + +label-connected = "%upspeed:7%" + +#format-connected = <label-connected> + +format-connected-prefix = " " + +format-connected-prefix-foreground = #cb410b + +#format-connected-foreground = ${colors.foreground} + +#format-connected-background = ${colors.background} + +format-connected-underline = #006600 + +[module/wifi-down] +type = internal/network + +interface = wlan0 + +label-connected = "%downspeed:7%" + +format-connected = <label-connected> + +format-connected-prefix = " " + +format-connected-prefix-foreground = #7c0a02 + +#format-connected-foreground = ${colors.foreground} + +#format-connected-background = ${colors.background} + +format-connected-underline = #006600 + +;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ + +[module/polywins] +type = custom/script +exec = $HOME/.config/polybar/scripts/polywins.sh 2>/dev/null +label-padding = 1 +tail = true +interval = 0 + +;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ + +#[module/archicon] +#type = custom/text +#content = "" +#click-left = $HOME/.config/bspwm/scripts/rofi_launcher +[module/archicon] +type = custom/text + +content = +content-font = 6 +content-foreground = ${color.BLUE} +content-padding = 0 + +click-left = $HOME/.config/rofi/scripts/rofi_launcher +click-right = $HOME/.config/rofi/scripts/rofi_runner + +[module/warp-vpn] +type = custom/script +exec = $HOME/.config/polybar/scripts/warp-vpn.sh --icon + +click-left = $HOME/.config/polybar/scripts/warp-vpn.sh --toggle +#click-middle = $HOME/.config/polybar/scripts/warp-vpn.sh --disconnect +#click-right = $HOME/.config/polybar/scripts/warp-vpn.sh --status +click-middle = $HOME/.config/polybar/scripts/warp-vpn.sh --status +click-right = warp-gui + +interval = 1 + +[module/powermenu] +type = custom/text + +content = ⏻ +content-font = 6 +content-foreground = ${color.WHITE} +content-padding = 0 + +click-left = $HOME/.config/rofi/scripts/rofi_powermenu +click-right = $HOME/.config/rofi/scripts/rofi_shutdown + +[module/changewallpaper] +type = custom/text +content-foreground = ${color.CYAN} +content-font = 6 + +content = " " +#click-left = /usr/bin/feh --bg-fill '/home/system/Pictures/wallpapers/' --randomize +#click-left = notify-send "Changing wallpaper, Please wait..." & killall backgroundblur & exec $HOME/scripts/runbgblur.sh & +click-left = killall runtransani.sh; exec $HOME/scripts/runtransani.sh & + + +;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ + +[module/used-memory] +type = custom/script + +exec = free -m | grep 'Mem:' | tr -s ' ' | cut -d ' ' -f3 + +tail = true +interval = 3 + +format = <label> +format-background = ${color.BACKGROUND} +format-padding = 1 + +format-prefix = +format-prefix-font = 2 +format-prefix-foreground = ${color.CYAN} + +label = " %output% MB" + +click-left = alacritty --class 'alacritty-float,alacritty-float' --config-file $HOME/.config/alacritty/alacritty.yml -e "top" & + + + +[module/memory-info] +type = internal/memory + +; Seconds to sleep between updates +; Default: 1 +interval = 0.5 + +; Default: 90 +; New in version 3.6.0 +warn-percentage = 85 +; Available tags: +; <label> (default) +; <bar-used> +; <bar-free> +; <ramp-used> +; <ramp-free> +; <bar-swap-used> +; <bar-swap-free> +; <ramp-swap-used> +; <ramp-swap-free> +format = <label> +format-prefix = " " + +; Format used when RAM reaches warn-percentage +; If not defined, format is used instead. +; Available tags: +; <label-warn> +; <bar-used> +; <bar-free> +; <ramp-used> +; <ramp-free> +; <bar-swap-used> +; <bar-swap-free> +; <ramp-swap-used> +; <ramp-swap-free> +; New in version 3.6.0 +format-warn = <label-warn> +format-warn-prefix = + + +; Available tokens: +; %percentage_used% (default) +; %percentage_free% +; %used% (Switches between KiB, MiB, and GiB) (New in version 3.6.0) +; %free% (Switches between KiB, MiB, and GiB) (New in version 3.6.0) +; %total% (Switches between KiB, MiB, and GiB) (New in version 3.6.0) +; %gb_used% +; %gb_free% +; %gb_total% +; %mb_used% +; %mb_free% +; %mb_total% +; %percentage_swap_used% +; %percentage_swap_free% +; %swap_total% (Switches between KiB, MiB, and GiB) (New in version 3.6.0) +; %swap_free% (Switches between KiB, MiB, and GiB) (New in version 3.6.0) +; %swap_used% (Switches between KiB, MiB, and GiB) (New in version 3.6.0) +; %gb_swap_total% +; %gb_swap_free% +; %gb_swap_used% +; %mb_swap_total% +; %mb_swap_free% +; %mb_swap_used% +label = %percentage_used%% + +; Available tokens: +; %percentage_used% (default) +; %percentage_free% +; %used% (Switches between KiB, MiB, and GiB) (New in version 3.6.0) +; %free% (Switches between KiB, MiB, and GiB) (New in version 3.6.0) +; %total% (Switches between KiB, MiB, and GiB) (New in version 3.6.0) +; %gb_used% +; %gb_free% +; %gb_total% +; %mb_used% +; %mb_free% +; %mb_total% +; %percentage_swap_used% +; %percentage_swap_free% +; %swap_total% (Switches between KiB, MiB, and GiB) (New in version 3.6.0) +; %swap_free% (Switches between KiB, MiB, and GiB) (New in version 3.6.0) +; %swap_used% (Switches between KiB, MiB, and GiB) (New in version 3.6.0) +; %gb_swap_total% +; %gb_swap_free% +; %gb_swap_used% +; %mb_swap_total% +; %mb_swap_free% +; %mb_swap_used% +; New in version 3.6.0 +label-warn = %percentage_used%% +label-warn-foreground = #f00 + +; Only applies if <bar-used> is used +bar-used-indicator = +bar-used-width = 50 +bar-used-foreground-0 = #55aa55 +bar-used-foreground-1 = #557755 +bar-used-foreground-2 = #f5a70a +bar-used-foreground-3 = #ff5555 +bar-used-fill = ▐ +bar-used-empty = ▐ +bar-used-empty-foreground = #444444 + +; Only applies if <ramp-used> is used +;ramp-used-0 = ▁ +;ramp-used-1 = ▂ +;ramp-used-2 = ▃ +;ramp-used-3 = ▄ +;ramp-used-4 = ▅ +;ramp-used-5 = ▆ +;ramp-used-6 = ▇ +;ramp-used-7 = █ + +; Only applies if <ramp-free> is used +ramp-free-0 = ▁ +ramp-free-1 = ▂ +ramp-free-2 = ▃ +ramp-free-3 = ▄ +ramp-free-4 = ▅ +ramp-free-5 = ▆ +ramp-free-6 = ▇ +ramp-free-7 = █ + + +[module/bluetooth] +type = custom/script +exec = $HOME/.config/polybar/scripts/bluetooth.sh +interval = 1 +tail = true +format = <label> +format-padding = 0 +label = %output% +click-left = $HOME/.config/rofi/scripts/rofi_bluetooth & +click-right = if bluetoothctl show | grep -q "Powered: yes"; then bluetoothctl power off; else bluetoothctl power on; fi + +[module/cpu-info-script] +type = custom/script +exec = $HOME/.config/polybar/scripts/cpu.sh +click-left = $HOME/.config/polybar/scripts/cpu.sh --popup +#format-underline = ${colors.primary} + +[module/cpu-info] +type = internal/cpu + +; Seconds to sleep between updates +; Default: 1 +interval = 0.5 + +; Default: 80 +; New in version 3.6.0 +warn-percentage = 90 +; Available tags: +; <label> (default) +; <bar-load> +; <ramp-load> +; <ramp-coreload> +format = <label> +format-prefix = " " +;format-prefix-foreground = ${color.YELLOW} + +format-warn-prefix = +format-warn = <label-warn> + +; Format used when average CPU load (same as %percentage%) reaches warn-percentage +; If not defined, format is used instead. +; Available tags: +; <label-warn> +; <bar-load> +; <ramp-load> +; <ramp-coreload> +; New in version 3.6.0 +; format-warn = <label-warn> + +; Available tokens: +; %percentage% (default) - total cpu load averaged over all cores +; %percentage-sum% - Cumulative load on all cores +; %percentage-cores% - load percentage for each core +; %percentage-core[1-9]% - load percentage for specific core +label = "%percentage%%" + +; Available tokens: +; %percentage% (default) - total cpu load averaged over all cores +; %percentage-sum% - Cumulative load on all cores +; %percentage-cores% - load percentage for each core +; %percentage-core[1-9]% - load percentage for specific core +; New in version 3.6.0 +label-warn = "%percentage%%" +label-warn-foreground = #f00 + +; Spacing (number of spaces, pixels, points) between individual per-core ramps +#ramp-coreload-spacing = 1 +#ramp-coreload-0 = ▁ +#ramp-coreload-1 = ▂ +#ramp-coreload-2 = ▃ +#ramp-coreload-3 = ▄ +#ramp-coreload-4 = ▅ +#ramp-coreload-5 = ▆ +#ramp-coreload-6 = ▇ +#ramp-coreload-7 = █ + +[module/temp-info-script] +type = custom/script +exec = $HOME/.config/polybar/scripts/temp.sh +click-left = $HOME/.config/polybar/scripts/temp.sh --popup +interval = 1 +#format-underline = ${colors.primary} + +[module/temp-info] +type = internal/temperature + +; Seconds to sleep between updates +; Default: 1 +interval = 0.5 + +; Thermal zone to use +; To list all the zone types, run +; $ for i in /sys/class/thermal/thermal_zone*; do echo "$i: $(<$i/type)"; done +; Default: 0 +thermal-zone = 0 + +; Full path of temperature sysfs path +; Use `sensors` to find preferred temperature source, then run +; $ for i in /sys/class/hwmon/hwmon*/temp*_input; do echo "$(<$(dirname $i)/name): $(cat ${i%_*}_label 2>/dev/null || echo $(basename ${i%_*})) $(readlink -f $i)"; done +; to find path to desired file +; Default reverts to thermal zone setting +# hwmon-path = /sys/devices/platform/coretemp.0/hwmon/hwmon5/temp1_input +hwmon-path = /sys/devices/platform/coretemp.0/hwmon/hwmon5/temp1_input + +; Base temperature for where to start the ramp (in degrees celsius) +; Default: 0 +base-temperature = 20 + +; Threshold temperature to display warning label (in degrees celsius) +; Default: 80 +warn-temperature = 95 +; Whether or not to show units next to the temperature tokens (°C, °F) +; Default: true +units = true + +; Available tags: +; <label> (default) +; <ramp> +format = <ramp> <label> + +; Available tags: +; <label-warn> (default) +; <ramp> +format-warn = <ramp> <label-warn> + +; Available tokens: +; %temperature% (deprecated) +; %temperature-c% (default, temperature in °C) +; %temperature-f% (temperature in °F) +label = "%temperature-c%" + +; Available tokens: +; %temperature% (deprecated) +; %temperature-c% (default, temperature in °C) +; %temperature-f% (temperature in °F) +label-warn = "%temperature-c%" +label-warn-foreground = #f00 + +; Requires the <ramp> tag +; The icon selection will range from `base-temperature` to `warn-temperature`, +; temperatures at and above `warn-temperature` will use the last icon +; and temperatures at and below `base-temperature` will use `ramp-0`. +; All other icons are distributed evenly between the two temperatures. +#ramp-0 = A +#ramp-1 = B +#ramp-2 = C +#ramp-foreground = #55 + +; Requires the <ramp> tag +; The icon selection will range from 0 to `warn-temperature` +; with the current temperature as index. +ramp-0 = +ramp-1 = +ramp-2 = +ramp-3 = +ramp-4 = +ramp-5 = +ramp-6 = +ramp-7 = +ramp-8 = +ramp-9 = +#ramp-foreground = ${color.YELLOW} +;;ramp-foreground = #55 + +[module/gpu-info] +type = custom/script +interval = 1 +tail = true +exec-if = nvidia-smi +exec = echo " $(nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader,nounits)%" + +[module/musics] +type = custom/script +exec = $HOME/scripts/bin/NekoMC --hook +tail = true +click-left = $HOME/scripts/bin/NekoMC --toggle +#click-right = $HOME/scripts/bin/NekoMC --next +scroll-up = $HOME/scripts/bin/NekoMC --previous +scroll-down = $HOME/scripts/bin/NekoMC --next +format-font = 7 + +[module/arrow] + type = custom/text + content = #use this if it looks small : content = %{T2}%{T-} + content-background = ${colors.background} + content-foreground = ${colors.primary} + click-right = $HOME/.config/polybar/scripts/sysTray.py + +[module/gmail] +type = custom/script +exec = bar-gmail -sm -f polybar +interval = 10 +click-left = $BROWSER --profile-directory="Profile 1" https://mail.google.com/mail/u/0/\#inbox + + +;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ +;; __________ ______ +;; / ____/ __ \/ ____/ +;; / __/ / / / / /_ +;; / /___/ /_/ / __/ +;; /_____/\____/_/ +;; +;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ |
