mirror of
https://github.com/gryf/wmtemp.git
synced 2026-05-10 16:33:03 +02:00
Compare commits
16 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 68c7c63532 | |||
| 95550e120a | |||
| 53b145f044 | |||
| 4e87d06d7e | |||
| 2615761d59 | |||
| fb2374178c | |||
| d029966151 | |||
| 85bd74b4f5 | |||
| e707cf4d33 | |||
| c8ac94080c | |||
| 53e3358e73 | |||
| 4e3058820d | |||
| ac503a1ee5 | |||
| 4e92b6f5ca | |||
| 0c442e8e90 | |||
| 28d2a7fd2e |
@@ -1,4 +0,0 @@
|
|||||||
This is dead simple Windo Wmaker app for monitoring CPU and GPU temperature.
|
|
||||||
Hardcoded Core2 and Nvidia GPU support. Based on WMTempMon dockapp.
|
|
||||||
|
|
||||||
author: roman.dobosz@gmail.com
|
|
||||||
+69
@@ -0,0 +1,69 @@
|
|||||||
|
wmtemp
|
||||||
|
======
|
||||||
|
|
||||||
|
This is dead simple Window Maker app for monitoring CPU and GPU temperature.
|
||||||
|
Based on WMTempMon dockapp, although it was heavily reworked.
|
||||||
|
|
||||||
|
.. image:: /images/wmtemp.gif?raw=true
|
||||||
|
:alt: wmtemp transitions
|
||||||
|
|
||||||
|
Compile
|
||||||
|
-------
|
||||||
|
|
||||||
|
To build the dockapp, perform the commands:
|
||||||
|
|
||||||
|
.. code:: shell-session
|
||||||
|
|
||||||
|
$ cd wmtemp
|
||||||
|
$ make
|
||||||
|
$ sudo make install
|
||||||
|
|
||||||
|
Binary will be installed in ``/usr/local/bin`` directory.
|
||||||
|
|
||||||
|
Configuration
|
||||||
|
-------------
|
||||||
|
|
||||||
|
To use the dockapp, you'll need to prepare configuration file, otherwise you'll
|
||||||
|
see 0 values for every core/gpu.
|
||||||
|
|
||||||
|
Wmtemp will look for configuration file in home directory. Here is sample
|
||||||
|
content of such file:
|
||||||
|
|
||||||
|
.. code:: shell-session
|
||||||
|
|
||||||
|
$ cat ~/.wmtemp
|
||||||
|
# wmtemp conf file
|
||||||
|
|
||||||
|
cpu1_path = /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp2_input
|
||||||
|
cpu1_critical = 80
|
||||||
|
cpu1_warning = 65
|
||||||
|
cpu2_path = /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp3_input
|
||||||
|
cpu2_critical = 80
|
||||||
|
cpu2_warning = 65
|
||||||
|
cpu3_path = /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp4_input
|
||||||
|
cpu3_critical = 80
|
||||||
|
cpu3_warning = 65
|
||||||
|
cpu4_path = /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp5_input
|
||||||
|
cpu4_critical = 80
|
||||||
|
cpu4_warning = 65
|
||||||
|
gpu_path = /sys/devices/virtual/hwmon/hwmon1/temp4_input
|
||||||
|
gpu_critical = 70
|
||||||
|
gpu_warning = 60
|
||||||
|
|
||||||
|
|
||||||
|
Every core have three options to change:
|
||||||
|
|
||||||
|
* ``[core]_path`` - path to temperature file to read from. The content of such
|
||||||
|
file contains a number of temperature in mili-Celsius.
|
||||||
|
* ``[core]_critical`` - temperature in °C, on which (and beyond) red color would
|
||||||
|
be used for highlight the entry.
|
||||||
|
* ``[core]_warninf`` - temperature in °C, on which (and beyond) orange color
|
||||||
|
would be used for highlight the entry.
|
||||||
|
|
||||||
|
In main directory there is a ``wmtemp_sample`` file, which can be copied to
|
||||||
|
``~/.wmtemp`` and tweaked according to the needs and hardware.
|
||||||
|
|
||||||
|
Licence
|
||||||
|
-------
|
||||||
|
|
||||||
|
This software is licensed under GPL2 license. See COPYING file for details.
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 8.3 KiB |
@@ -366,7 +366,7 @@ void setMaskXY(int x, int y) {
|
|||||||
/*******************************************************************************\
|
/*******************************************************************************\
|
||||||
|* openXwindow *|
|
|* openXwindow *|
|
||||||
\*******************************************************************************/
|
\*******************************************************************************/
|
||||||
void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bits, int pixmask_width, int pixmask_height) {
|
void openXwindow(int argc, char *argv[], char *pixmap_bytes[], const char *pixmask_bits, int pixmask_width, int pixmask_height) {
|
||||||
|
|
||||||
unsigned int borderwidth = 1;
|
unsigned int borderwidth = 1;
|
||||||
XClassHint classHint;
|
XClassHint classHint;
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ Display *display;
|
|||||||
void AddMouseRegion(int index, int left, int top, int right, int bottom);
|
void AddMouseRegion(int index, int left, int top, int right, int bottom);
|
||||||
int CheckMouseRegion(int x, int y);
|
int CheckMouseRegion(int x, int y);
|
||||||
|
|
||||||
void openXwindow(int argc, char *argv[], char **, char *, int, int);
|
void openXwindow(int argc, char *argv[], char **, const char *, int, int);
|
||||||
void RedrawWindow(void);
|
void RedrawWindow(void);
|
||||||
void RedrawWindowXY(int x, int y);
|
void RedrawWindowXY(int x, int y);
|
||||||
|
|
||||||
|
|||||||
@@ -1,25 +1,25 @@
|
|||||||
# By RedSeb 1999, Liverbugg 2002
|
# By RedSeb 1999, Liverbugg 2002
|
||||||
|
|
||||||
|
|
||||||
SRC = wmtempnv.c ../wmgeneral/wmgeneral.c ../wmgeneral/misc.c ../wmgeneral/list.c
|
SRC = wmtemp.c ../wmgeneral/wmgeneral.c ../wmgeneral/misc.c ../wmgeneral/list.c
|
||||||
|
|
||||||
EXE = wmtempnv
|
EXE = wmtemp
|
||||||
|
|
||||||
OBJ = $(SRC:.c=.o)
|
OBJ = $(SRC:.c=.o)
|
||||||
|
|
||||||
CFLAGS = -Wall -O3
|
CFLAGS = -Wall -O3
|
||||||
|
|
||||||
LIB = -L/usr/X11R6/lib -lXpm -lXext -lX11 -lsensors
|
LIB = -L/usr/X11R6/lib -lXpm -lXext -lX11
|
||||||
|
|
||||||
INSTALL = /usr/bin/install
|
INSTALL = /usr/bin/install
|
||||||
|
|
||||||
CC = gcc
|
CC = gcc
|
||||||
|
|
||||||
all: $(OBJ)
|
all: $(OBJ)
|
||||||
$(CC) -o $(EXE) $(OBJ) $(LIB)
|
$(CC) $(CFLAGS) -o $(EXE) $(OBJ) $(LIB)
|
||||||
strip $(EXE)
|
strip $(EXE)
|
||||||
|
|
||||||
$(OBJ): %.o : %.c
|
$(OBJ): %.o : %.c
|
||||||
$(CC) $(CFLAGS) -c -o $@ $<
|
$(CC) $(CFLAGS) -c -o $@ $<
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
+363
@@ -0,0 +1,363 @@
|
|||||||
|
/*
|
||||||
|
* wmtemp: a temperature monitor for WindowMaker. This little app is mainly
|
||||||
|
* based on wmsensormon and other simple dockapps, although it doesn't use
|
||||||
|
* lmsensors, just provided information from kernel via /sys filesystem.
|
||||||
|
*
|
||||||
|
* version = 0.5
|
||||||
|
*
|
||||||
|
* licence: GPL2
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <sys/param.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
#include "standards.h"
|
||||||
|
#include <X11/Xlib.h>
|
||||||
|
#include <X11/xpm.h>
|
||||||
|
#include <X11/extensions/shape.h>
|
||||||
|
|
||||||
|
#include "../wmgeneral/wmgeneral.h"
|
||||||
|
#include "../wmgeneral/misc.h"
|
||||||
|
#include "../wmgeneral/misc.h"
|
||||||
|
#include "wmtemp_master.xpm"
|
||||||
|
#include "wmtemp_mask.xbm"
|
||||||
|
|
||||||
|
#define MAXLEN 200
|
||||||
|
#define MAXFNAME 70
|
||||||
|
#define MAXCORENUM 4
|
||||||
|
|
||||||
|
struct entry {
|
||||||
|
char *path;
|
||||||
|
long critical;
|
||||||
|
long warning;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct config {
|
||||||
|
struct entry cpu1;
|
||||||
|
struct entry cpu2;
|
||||||
|
struct entry cpu3;
|
||||||
|
struct entry cpu4;
|
||||||
|
struct entry gpu;
|
||||||
|
};
|
||||||
|
|
||||||
|
char cpu1_path[100];
|
||||||
|
int cpu1_warn = 0;
|
||||||
|
int cpu1_crit = 0;
|
||||||
|
char cpu2_path[100];
|
||||||
|
int cpu2_warn = 0;
|
||||||
|
int cpu2_crit = 0;
|
||||||
|
char cpu3_path[100];
|
||||||
|
int cpu3_warn = 0;
|
||||||
|
int cpu3_crit = 0;
|
||||||
|
char cpu4_path[100];
|
||||||
|
int cpu4_warn = 0;
|
||||||
|
int cpu4_crit = 0;
|
||||||
|
char gpu1_path[100];
|
||||||
|
int gpu1_warn = 0;
|
||||||
|
int gpu1_crit = 0;
|
||||||
|
|
||||||
|
typedef struct _core {
|
||||||
|
int temp;
|
||||||
|
/* offset is one of 0 (normal), 7 (critical), 14 (warning) */
|
||||||
|
short offset;
|
||||||
|
} core;
|
||||||
|
|
||||||
|
Display *display;
|
||||||
|
|
||||||
|
char *vcopy(char *str);
|
||||||
|
int get_gpu_temp(char *path, Display *disp);
|
||||||
|
int get_temp(struct entry *etr);
|
||||||
|
short get_offset(short temp, struct entry *etr);
|
||||||
|
void conf_read(char *filename);
|
||||||
|
void display_help(char *progname);
|
||||||
|
void display_values(int, short, short);
|
||||||
|
void draw_cpu_temp(short core_no, core *cpu);
|
||||||
|
void draw_gpu_temp(core *gpu);
|
||||||
|
void read_file_into(char *filepath, int *output);
|
||||||
|
void set_defaults(struct config *conf);
|
||||||
|
char *strip(char * string);
|
||||||
|
void parse_config(struct config *conf);
|
||||||
|
|
||||||
|
int main(int argc, char **argv){
|
||||||
|
int i;
|
||||||
|
short counter = 0;
|
||||||
|
struct config conf;
|
||||||
|
|
||||||
|
set_defaults(&conf);
|
||||||
|
|
||||||
|
parse_config(&conf);
|
||||||
|
|
||||||
|
display = XOpenDisplay(NULL);
|
||||||
|
core gpu, *cpus = malloc(MAXCORENUM * sizeof (core));
|
||||||
|
|
||||||
|
if (argc > 1) {
|
||||||
|
if (argc > 2) {
|
||||||
|
display_help(argv[0]);
|
||||||
|
exit(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (argc == 2 &&
|
||||||
|
(strcmp(argv[1], "--help") == 0 ||
|
||||||
|
strcmp(argv[1], "-h") == 0)) {
|
||||||
|
display_help(argv[0]);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
openXwindow(argc, argv, wmtemp_master, wmtemp_mask_bits,
|
||||||
|
wmtemp_mask_width, wmtemp_mask_height);
|
||||||
|
|
||||||
|
while(TRUE){
|
||||||
|
if (counter < 1){
|
||||||
|
counter = 5;
|
||||||
|
cpus[0].temp = get_temp(&conf.cpu1);
|
||||||
|
cpus[0].offset = get_offset(cpus[0].temp, &conf.cpu1);
|
||||||
|
cpus[1].temp = get_temp(&conf.cpu2);
|
||||||
|
cpus[1].offset = get_offset(cpus[1].temp, &conf.cpu2);
|
||||||
|
cpus[2].temp = get_temp(&conf.cpu3);
|
||||||
|
cpus[2].offset = get_offset(cpus[2].temp, &conf.cpu3);
|
||||||
|
cpus[3].temp = get_temp(&conf.cpu4);
|
||||||
|
cpus[3].offset = get_offset(cpus[3].temp, &conf.cpu4);
|
||||||
|
gpu.temp = get_temp(&conf.gpu);
|
||||||
|
gpu.offset = get_offset(gpu.temp, &conf.gpu);
|
||||||
|
}
|
||||||
|
|
||||||
|
// cpu's
|
||||||
|
for (i=0; i < 4; i++){
|
||||||
|
draw_cpu_temp(i, &cpus[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// gpu
|
||||||
|
draw_gpu_temp(&gpu);
|
||||||
|
|
||||||
|
RedrawWindow();
|
||||||
|
counter--;
|
||||||
|
usleep(100000);
|
||||||
|
}
|
||||||
|
free(conf.cpu1.path);
|
||||||
|
free(conf.cpu2.path);
|
||||||
|
free(conf.cpu3.path);
|
||||||
|
free(conf.cpu4.path);
|
||||||
|
free(conf.gpu.path);
|
||||||
|
}
|
||||||
|
|
||||||
|
void set_defaults(struct config *conf) {
|
||||||
|
struct config configuration;
|
||||||
|
configuration = *conf;
|
||||||
|
configuration.cpu1.critical = 80;
|
||||||
|
configuration.cpu1.warning = 65;
|
||||||
|
configuration.cpu2.critical = 80;
|
||||||
|
configuration.cpu2.warning = 65;
|
||||||
|
configuration.cpu3.critical = 80;
|
||||||
|
configuration.cpu3.warning = 65;
|
||||||
|
configuration.cpu4.critical = 80;
|
||||||
|
configuration.cpu4.warning = 65;
|
||||||
|
configuration.gpu.critical = 80;
|
||||||
|
configuration.gpu.warning = 65;
|
||||||
|
|
||||||
|
configuration.cpu1.path = malloc(sizeof(char));
|
||||||
|
strcpy(configuration.cpu1.path, "");
|
||||||
|
configuration.cpu2.path = malloc(sizeof(char));
|
||||||
|
strcpy(configuration.cpu2.path, "");
|
||||||
|
configuration.cpu3.path = malloc(sizeof(char));
|
||||||
|
strcpy(configuration.cpu3.path, "");
|
||||||
|
configuration.cpu4.path = malloc(sizeof(char));
|
||||||
|
strcpy(configuration.cpu4.path, "");
|
||||||
|
configuration.gpu.path = malloc(sizeof(char));
|
||||||
|
strcpy(configuration.gpu.path, "");
|
||||||
|
*conf = configuration;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *strip(char * string) {
|
||||||
|
char *string1 = string,
|
||||||
|
*string2 = &string[strlen (string) - 1];
|
||||||
|
|
||||||
|
/* Strip right side */
|
||||||
|
while ((isspace(*string2)) && (string2 >= string1))
|
||||||
|
string2--;
|
||||||
|
|
||||||
|
*(string2+1) = '\0';
|
||||||
|
|
||||||
|
/* Strip left side */
|
||||||
|
while ((isspace(*string1)) && (string1 < string2))
|
||||||
|
string1++;
|
||||||
|
|
||||||
|
strcpy (string, string1);
|
||||||
|
return string;
|
||||||
|
}
|
||||||
|
|
||||||
|
void parse_config(struct config *conf) {
|
||||||
|
char *item,
|
||||||
|
*conf_file,
|
||||||
|
buff[256],
|
||||||
|
name[MAXLEN],
|
||||||
|
value[MAXLEN];
|
||||||
|
struct config cfg;
|
||||||
|
FILE *fp;
|
||||||
|
|
||||||
|
conf_file = malloc(strlen(getenv("HOME")) + strlen("/.wmtemp") + 1);
|
||||||
|
sprintf(conf_file, "%s/.wmtemp", getenv("HOME"));
|
||||||
|
|
||||||
|
cfg = *conf;
|
||||||
|
fp = fopen (conf_file, "r");
|
||||||
|
if (fp == NULL) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
while ((item = fgets (buff, sizeof buff, fp)) != NULL) {
|
||||||
|
if (buff[0] == '\n' || buff[0] == '#')
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/* Parse name/value pair from item */
|
||||||
|
item = strtok(buff, "=");
|
||||||
|
strip(item);
|
||||||
|
if (item == NULL)
|
||||||
|
continue;
|
||||||
|
else
|
||||||
|
strncpy (name, item, MAXLEN);
|
||||||
|
|
||||||
|
item = strtok (NULL, "=");
|
||||||
|
if (item == NULL)
|
||||||
|
continue;
|
||||||
|
else
|
||||||
|
strncpy (value, item, MAXLEN);
|
||||||
|
strip(value);
|
||||||
|
|
||||||
|
if (!strcmp(name, "cpu1_path")){
|
||||||
|
free(cfg.cpu1.path);
|
||||||
|
cfg.cpu1.path = malloc(sizeof(value) + 1);
|
||||||
|
strcpy(cfg.cpu1.path, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!strcmp(name, "cpu2_path")){
|
||||||
|
free(cfg.cpu2.path);
|
||||||
|
cfg.cpu2.path = malloc(sizeof(value) + 1);
|
||||||
|
strcpy(cfg.cpu2.path, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!strcmp(name, "cpu1_path")){
|
||||||
|
free(cfg.cpu3.path);
|
||||||
|
cfg.cpu3.path = malloc(sizeof(value) + 1);
|
||||||
|
strcpy(cfg.cpu3.path, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!strcmp(name, "cpu1_path")){
|
||||||
|
free(cfg.cpu4.path);
|
||||||
|
cfg.cpu4.path = malloc(sizeof(value) + 1);
|
||||||
|
strcpy(cfg.cpu4.path, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!strcmp(name, "gpu_path")){
|
||||||
|
free(cfg.gpu.path);
|
||||||
|
cfg.gpu.path = malloc(sizeof(value) + 1);
|
||||||
|
strcpy(cfg.gpu.path, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!strcmp(name, "cpu1_critical"))
|
||||||
|
cfg.cpu1.critical = atoi(value);
|
||||||
|
if (!strcmp(name, "cpu2_critical"))
|
||||||
|
cfg.cpu2.critical = atoi(value);
|
||||||
|
if (!strcmp(name, "cpu3_critical"))
|
||||||
|
cfg.cpu3.critical = atoi(value);
|
||||||
|
if (!strcmp(name, "cpu4_critical"))
|
||||||
|
cfg.cpu4.critical = atoi(value);
|
||||||
|
if (!strcmp(name, "gpu_critical"))
|
||||||
|
cfg.gpu.critical = atoi(value);
|
||||||
|
|
||||||
|
if (!strcmp(name, "cpu1_warning"))
|
||||||
|
cfg.cpu1.warning = atoi(value);
|
||||||
|
if (!strcmp(name, "cpu2_warning"))
|
||||||
|
cfg.cpu2.warning = atoi(value);
|
||||||
|
if (!strcmp(name, "cpu3_warning"))
|
||||||
|
cfg.cpu3.warning = atoi(value);
|
||||||
|
if (!strcmp(name, "cpu4_warning"))
|
||||||
|
cfg.cpu4.warning = atoi(value);
|
||||||
|
if (!strcmp(name, "gpu_warning"))
|
||||||
|
cfg.gpu.warning = atoi(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
*conf = cfg;
|
||||||
|
fclose (fp);
|
||||||
|
free(conf_file);
|
||||||
|
}
|
||||||
|
|
||||||
|
short get_offset(short temp, struct entry *etr){
|
||||||
|
if(temp >= etr->critical){
|
||||||
|
return 7; // Alert
|
||||||
|
}else if(temp >= etr->warning){
|
||||||
|
return 14; // Warning
|
||||||
|
}else{
|
||||||
|
return 0; // Normal
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void display_values(int temp, short offset, short core2_offset){
|
||||||
|
char text[5], num1, num2, num3, num4;
|
||||||
|
|
||||||
|
sprintf(text, "%03d", temp);
|
||||||
|
num1 = (text[0] - '0');
|
||||||
|
num2 = (text[1] - '0');
|
||||||
|
num3 = (text[2] - '0');
|
||||||
|
num4 = (text[3] - '0');
|
||||||
|
if(num1)
|
||||||
|
copyXPMArea(5 * num1, 65 + core2_offset, 5, 7, 31, 7 + offset);
|
||||||
|
else
|
||||||
|
copyXPMArea(60, 65 + core2_offset, 5, 7, 31, 7 + offset);
|
||||||
|
copyXPMArea(5 * num2, 65 + core2_offset, 5, 7, 38, 7 + offset);
|
||||||
|
copyXPMArea(5 * num3, 65 + core2_offset, 5, 7, 45, 7 + offset);
|
||||||
|
copyXPMArea(5 * num4, 65 + core2_offset, 5, 7, 51, 7 + offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
int get_temp(struct entry *etr){
|
||||||
|
int core_temp = 0;
|
||||||
|
read_file_into(etr->path, &core_temp);
|
||||||
|
return core_temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
void read_file_into(char *filepath, int *output) {
|
||||||
|
// Read an integer from the provided filepath and write it in the address
|
||||||
|
FILE *fp;
|
||||||
|
if((fp = fopen(filepath, "r")) != NULL){
|
||||||
|
if(fscanf(fp, "%d", output) != EOF){
|
||||||
|
*output = *output / 1000;
|
||||||
|
fclose(fp);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
*output = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void draw_cpu_temp(short core_no, core *cpu) {
|
||||||
|
// Copy prepared bitmap for the core. Cores are enumerated from 0. offset
|
||||||
|
// is warning/critical (orange/red) shift in the bitmap
|
||||||
|
|
||||||
|
short y_offset = core_no * 9;
|
||||||
|
|
||||||
|
copyXPMArea(0, 87 + cpu->offset, 23, 7, 4, 7 + y_offset); // "CPU"
|
||||||
|
// number of cpu
|
||||||
|
copyXPMArea(5 + core_no * 5, 65 + cpu->offset, 5, 7, 22, 7 + y_offset);
|
||||||
|
copyXPMArea(66, 65 + cpu->offset, 9, 7, 51, 7 + y_offset); // "°C"
|
||||||
|
display_values(cpu->temp, y_offset, cpu->offset); // temp
|
||||||
|
}
|
||||||
|
|
||||||
|
void draw_gpu_temp(core *gpu) {
|
||||||
|
copyXPMArea(23, 87 + gpu->offset, 23, 7, 4, 49);
|
||||||
|
copyXPMArea(66, 65 + gpu->offset , 9, 7, 51, 49);
|
||||||
|
display_values(gpu->temp, 42, gpu->offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
void display_help(char *progname){
|
||||||
|
printf("Dockapp for monitoring CPU and Nvidia GPU temperatures.\n");
|
||||||
|
printf("Usage:\n\t%s [full path for temp in sysfs]\n\n", progname);
|
||||||
|
printf("As an optional parameter you can provide `temp_input' ");
|
||||||
|
printf("full path from sysfs,\ncorresponding to your gfx card ");
|
||||||
|
printf("to read temperature from. Otherwise\nfunctionality of ");
|
||||||
|
printf("nv-control will be used (package nvidia-settings).\n");
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
#define wmtemp_mask_width 64
|
||||||
|
#define wmtemp_mask_height 64
|
||||||
|
static char wmtemp_mask_bits[] = {
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
|
||||||
|
0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
|
||||||
|
0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
|
||||||
|
0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
|
||||||
|
0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
|
||||||
|
0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
|
||||||
|
0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
|
||||||
|
0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
|
||||||
|
0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
|
||||||
|
0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
|
||||||
|
0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
|
||||||
|
0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
|
||||||
|
0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
|
||||||
|
0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
|
||||||
|
0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
|
||||||
|
0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
|
||||||
|
0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
|
||||||
|
0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, };
|
||||||
@@ -0,0 +1,384 @@
|
|||||||
|
/* XPM */
|
||||||
|
static char *wmtemp_master[] = {
|
||||||
|
/* columns rows colors chars-per-pixel */
|
||||||
|
"93 122 256 2 ",
|
||||||
|
" c black",
|
||||||
|
". c #0A3F00",
|
||||||
|
"X c #202020",
|
||||||
|
"o c #440000",
|
||||||
|
"O c #660000",
|
||||||
|
"+ c #542A00",
|
||||||
|
"@ c #177700",
|
||||||
|
"# c #7F7F07",
|
||||||
|
"$ c #004941",
|
||||||
|
"% c #007D71",
|
||||||
|
"& c #A50000",
|
||||||
|
"* c #A80000",
|
||||||
|
"= c #BF3F03",
|
||||||
|
"- c #C90000",
|
||||||
|
"; c #DF1F01",
|
||||||
|
": c #E00000",
|
||||||
|
"> c red",
|
||||||
|
", c #FA0400",
|
||||||
|
"< c #F50900",
|
||||||
|
"1 c #F10D00",
|
||||||
|
"2 c #EC1201",
|
||||||
|
"3 c #E81601",
|
||||||
|
"4 c #E31B01",
|
||||||
|
"5 c #DA2402",
|
||||||
|
"6 c #D62802",
|
||||||
|
"7 c #D12D02",
|
||||||
|
"8 c #CC3203",
|
||||||
|
"9 c #C83603",
|
||||||
|
"0 c #C33B03",
|
||||||
|
"q c #9F5F05",
|
||||||
|
"w c #BA4404",
|
||||||
|
"e c #B64804",
|
||||||
|
"r c #B14D04",
|
||||||
|
"t c #A85500",
|
||||||
|
"y c #AD5105",
|
||||||
|
"u c #A85605",
|
||||||
|
"i c #A35B05",
|
||||||
|
"p c #9A6406",
|
||||||
|
"a c #966806",
|
||||||
|
"s c #916D06",
|
||||||
|
"d c #8D7107",
|
||||||
|
"f c #887607",
|
||||||
|
"g c #847A07",
|
||||||
|
"h c #27B500",
|
||||||
|
"j c #3FBF0B",
|
||||||
|
"k c #5F9F09",
|
||||||
|
"l c #7A8408",
|
||||||
|
"z c #768808",
|
||||||
|
"x c #718D08",
|
||||||
|
"c c #6D9109",
|
||||||
|
"v c #689609",
|
||||||
|
"b c #649A09",
|
||||||
|
"n c #5BA30A",
|
||||||
|
"m c #56A80A",
|
||||||
|
"M c #51AD0A",
|
||||||
|
"N c #4DB10B",
|
||||||
|
"B c #48B60B",
|
||||||
|
"V c #44BA0B",
|
||||||
|
"C c #1FDF0D",
|
||||||
|
"Z c #3BC30C",
|
||||||
|
"A c #36C80C",
|
||||||
|
"S c #32CC0C",
|
||||||
|
"D c #2DD10D",
|
||||||
|
"F c #28D60D",
|
||||||
|
"G c #24DA0D",
|
||||||
|
"H c #1BE30E",
|
||||||
|
"J c #16E80E",
|
||||||
|
"K c #12EC0E",
|
||||||
|
"L c #0DF10F",
|
||||||
|
"P c #09F50F",
|
||||||
|
"I c #04FA0F",
|
||||||
|
"U c #00FF0F",
|
||||||
|
"Y c #3FFF00",
|
||||||
|
"T c #FF8200",
|
||||||
|
"R c blue",
|
||||||
|
"E c #188A86",
|
||||||
|
"W c #20B2AE",
|
||||||
|
"Q c #20B6AE",
|
||||||
|
"! c gray78",
|
||||||
|
"~ c black",
|
||||||
|
"^ c black",
|
||||||
|
"/ c black",
|
||||||
|
"( c black",
|
||||||
|
") c black",
|
||||||
|
"_ c black",
|
||||||
|
"` c black",
|
||||||
|
"' c black",
|
||||||
|
"] c black",
|
||||||
|
"[ c black",
|
||||||
|
"{ c black",
|
||||||
|
"} c black",
|
||||||
|
"| c black",
|
||||||
|
" . c black",
|
||||||
|
".. c black",
|
||||||
|
"X. c black",
|
||||||
|
"o. c black",
|
||||||
|
"O. c black",
|
||||||
|
"+. c black",
|
||||||
|
"@. c black",
|
||||||
|
"#. c black",
|
||||||
|
"$. c black",
|
||||||
|
"%. c black",
|
||||||
|
"&. c black",
|
||||||
|
"*. c black",
|
||||||
|
"=. c black",
|
||||||
|
"-. c black",
|
||||||
|
";. c black",
|
||||||
|
":. c black",
|
||||||
|
">. c black",
|
||||||
|
",. c black",
|
||||||
|
"<. c black",
|
||||||
|
"1. c black",
|
||||||
|
"2. c black",
|
||||||
|
"3. c black",
|
||||||
|
"4. c black",
|
||||||
|
"5. c black",
|
||||||
|
"6. c black",
|
||||||
|
"7. c black",
|
||||||
|
"8. c black",
|
||||||
|
"9. c black",
|
||||||
|
"0. c black",
|
||||||
|
"q. c black",
|
||||||
|
"w. c black",
|
||||||
|
"e. c black",
|
||||||
|
"r. c black",
|
||||||
|
"t. c black",
|
||||||
|
"y. c black",
|
||||||
|
"u. c black",
|
||||||
|
"i. c black",
|
||||||
|
"p. c black",
|
||||||
|
"a. c black",
|
||||||
|
"s. c black",
|
||||||
|
"d. c black",
|
||||||
|
"f. c black",
|
||||||
|
"g. c black",
|
||||||
|
"h. c black",
|
||||||
|
"j. c black",
|
||||||
|
"k. c black",
|
||||||
|
"l. c black",
|
||||||
|
"z. c black",
|
||||||
|
"x. c black",
|
||||||
|
"c. c black",
|
||||||
|
"v. c black",
|
||||||
|
"b. c black",
|
||||||
|
"n. c black",
|
||||||
|
"m. c black",
|
||||||
|
"M. c black",
|
||||||
|
"N. c black",
|
||||||
|
"B. c black",
|
||||||
|
"V. c black",
|
||||||
|
"C. c black",
|
||||||
|
"Z. c black",
|
||||||
|
"A. c black",
|
||||||
|
"S. c black",
|
||||||
|
"D. c black",
|
||||||
|
"F. c black",
|
||||||
|
"G. c black",
|
||||||
|
"H. c black",
|
||||||
|
"J. c black",
|
||||||
|
"K. c black",
|
||||||
|
"L. c black",
|
||||||
|
"P. c black",
|
||||||
|
"I. c black",
|
||||||
|
"U. c black",
|
||||||
|
"Y. c black",
|
||||||
|
"T. c black",
|
||||||
|
"R. c black",
|
||||||
|
"E. c black",
|
||||||
|
"W. c black",
|
||||||
|
"Q. c black",
|
||||||
|
"!. c black",
|
||||||
|
"~. c black",
|
||||||
|
"^. c black",
|
||||||
|
"/. c black",
|
||||||
|
"(. c black",
|
||||||
|
"). c black",
|
||||||
|
"_. c black",
|
||||||
|
"`. c black",
|
||||||
|
"'. c black",
|
||||||
|
"]. c black",
|
||||||
|
"[. c black",
|
||||||
|
"{. c black",
|
||||||
|
"}. c black",
|
||||||
|
"|. c black",
|
||||||
|
" X c black",
|
||||||
|
".X c black",
|
||||||
|
"XX c black",
|
||||||
|
"oX c black",
|
||||||
|
"OX c black",
|
||||||
|
"+X c black",
|
||||||
|
"@X c black",
|
||||||
|
"#X c black",
|
||||||
|
"$X c black",
|
||||||
|
"%X c black",
|
||||||
|
"&X c black",
|
||||||
|
"*X c black",
|
||||||
|
"=X c black",
|
||||||
|
"-X c black",
|
||||||
|
";X c black",
|
||||||
|
":X c black",
|
||||||
|
">X c black",
|
||||||
|
",X c black",
|
||||||
|
"<X c black",
|
||||||
|
"1X c black",
|
||||||
|
"2X c black",
|
||||||
|
"3X c black",
|
||||||
|
"4X c black",
|
||||||
|
"5X c black",
|
||||||
|
"6X c black",
|
||||||
|
"7X c black",
|
||||||
|
"8X c black",
|
||||||
|
"9X c black",
|
||||||
|
"0X c black",
|
||||||
|
"qX c black",
|
||||||
|
"wX c black",
|
||||||
|
"eX c black",
|
||||||
|
"rX c black",
|
||||||
|
"tX c black",
|
||||||
|
"yX c black",
|
||||||
|
"uX c black",
|
||||||
|
"iX c black",
|
||||||
|
"pX c black",
|
||||||
|
"aX c black",
|
||||||
|
"sX c black",
|
||||||
|
"dX c black",
|
||||||
|
"fX c black",
|
||||||
|
"gX c black",
|
||||||
|
"hX c black",
|
||||||
|
"jX c black",
|
||||||
|
"kX c black",
|
||||||
|
"lX c black",
|
||||||
|
"zX c black",
|
||||||
|
"xX c black",
|
||||||
|
"cX c black",
|
||||||
|
"vX c black",
|
||||||
|
"bX c black",
|
||||||
|
"nX c black",
|
||||||
|
"mX c black",
|
||||||
|
"MX c black",
|
||||||
|
"NX c black",
|
||||||
|
"BX c black",
|
||||||
|
"VX c black",
|
||||||
|
"CX c black",
|
||||||
|
"ZX c black",
|
||||||
|
"AX c black",
|
||||||
|
"SX c black",
|
||||||
|
"DX c black",
|
||||||
|
"FX c black",
|
||||||
|
"GX c black",
|
||||||
|
"HX c black",
|
||||||
|
"JX c black",
|
||||||
|
"KX c black",
|
||||||
|
"LX c black",
|
||||||
|
"PX c #57627A",
|
||||||
|
"IX c #B4B4B4",
|
||||||
|
"UX c white",
|
||||||
|
/* pixels */
|
||||||
|
"R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X X Q Q Q X X % Q Q Q X X % $ $ $ % X X $ $ $ % X X X X X $ $ $ X X X X $ $ $ X X X X $ $ $ X X X Q X X X Q Q Q X X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X Q X X X Q X Q X X X Q X Q X X X Q X $ X X X Q X X X X $ X X X $ X X $ X X X $ X X $ X X X $ X Q X Q X Q X X X Q X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X Q X X X $ X Q X X X Q X Q X X X Q X $ X X X Q X X X X $ X X X $ X X $ X X X $ X X $ X X X $ X X Q X X Q X X X $ X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X % $ $ $ X X % Q Q Q X X % $ $ $ % X X $ $ $ % X X X X X $ $ $ X X X X $ $ $ X X X X $ $ $ X X X X X X % $ $ $ X X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X Q X X X $ X Q X X X $ X Q X X X Q X $ X X X Q X X X X $ X X X $ X X $ X X X $ X X $ X X X $ X X X X X Q X X X $ X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X Q X X X Q X Q X X X $ X Q X X X Q X $ X X X Q X X X X $ X X X $ X X $ X X X $ X X $ X X X $ X X X X X Q X X X Q X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X X Q Q Q X X % $ $ $ X X % Q Q Q % X X $ $ $ % X X X X X $ $ $ X X X X $ $ $ X X X X $ $ $ X X X X X X X Q Q Q X X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X X Q Q Q X X % Q Q Q X X % $ $ $ % X % Q Q Q % X X X X X $ $ $ X X X X $ $ $ X X X X $ $ $ X X X Q X X X Q Q Q X X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X Q X X X Q X Q X X X Q X Q X X X Q X $ X X X Q X X X X $ X X X $ X X $ X X X $ X X $ X X X $ X Q X Q X Q X X X Q X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X Q X X X $ X Q X X X Q X Q X X X Q X $ X X X Q X X X X $ X X X $ X X $ X X X $ X X $ X X X $ X X Q X X Q X X X $ X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X % $ $ $ X X % Q Q Q X X % $ $ $ % X % Q Q Q % X X X X X $ $ $ X X X X $ $ $ X X X X $ $ $ X X X X X X % $ $ $ X X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X Q X X X $ X Q X X X $ X Q X X X Q X Q X X X $ X X X X $ X X X $ X X $ X X X $ X X $ X X X $ X X X X X Q X X X $ X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X Q X X X Q X Q X X X $ X Q X X X Q X Q X X X $ X X X X $ X X X $ X X $ X X X $ X X $ X X X $ X X X X X Q X X X Q X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X X Q Q Q X X % $ $ $ X X X Q Q Q X X % Q Q Q % X X X X X $ $ $ X X X X $ $ $ X X X X $ $ $ X X X X X X X Q Q Q X X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X X Q Q Q X X % Q Q Q X X % $ $ $ % X % Q Q Q % X X X X X $ $ $ X X X X $ $ $ X X X X $ $ $ X X X Q X X X Q Q Q X X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X Q X X X Q X Q X X X Q X Q X X X Q X $ X X X Q X X X X $ X X X $ X X $ X X X $ X X $ X X X $ X Q X Q X Q X X X Q X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X Q X X X $ X Q X X X Q X Q X X X Q X $ X X X Q X X X X $ X X X $ X X $ X X X $ X X $ X X X $ X X Q X X Q X X X $ X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X % $ $ $ X X % Q Q Q X X % $ $ $ % X % Q Q Q % X X X X X $ $ $ X X X X $ $ $ X X X X $ $ $ X X X X X X % $ $ $ X X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X Q X X X $ X Q X X X $ X Q X X X Q X $ X X X Q X X X X $ X X X $ X X $ X X X $ X X $ X X X $ X X X X X Q X X X $ X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X Q X X X Q X Q X X X $ X Q X X X Q X $ X X X Q X X X X $ X X X $ X X $ X X X $ X X $ X X X $ X X X X X Q X X X Q X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X X Q Q Q X X % $ $ $ X X X Q Q Q X X % Q Q Q % X X X X X $ $ $ X X X X $ $ $ X X X X $ $ $ X X X X X X X Q Q Q X X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X X Q Q Q X X % Q Q Q X X % $ $ $ % X % $ $ $ % X X X X X $ $ $ X X X X $ $ $ X X X X $ $ $ X X X Q X X X Q Q Q X X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X Q X X X Q X Q X X X Q X Q X X X Q X Q X X X Q X X X X $ X X X $ X X $ X X X $ X X $ X X X $ X Q X Q X Q X X X Q X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X Q X X X $ X Q X X X Q X Q X X X Q X Q X X X Q X X X X $ X X X $ X X $ X X X $ X X $ X X X $ X X Q X X Q X X X $ X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X % $ $ $ X X % Q Q Q X X % $ $ $ % X % Q Q Q % X X X X X $ $ $ X X X X $ $ $ X X X X $ $ $ X X X X X X % $ $ $ X X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X Q X X X $ X Q X X X $ X Q X X X Q X $ X X X Q X X X X $ X X X $ X X $ X X X $ X X $ X X X $ X X X X X Q X X X $ X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X Q X X X Q X Q X X X $ X Q X X X Q X $ X X X Q X X X X $ X X X $ X X $ X X X $ X X $ X X X $ X X X X X Q X X X Q X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X X Q Q Q X X % $ $ $ X X X Q Q Q X X X $ $ $ % X X X X X $ $ $ X X X X $ $ $ X X X X $ $ $ X X X X X X X Q Q Q X X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X X Q Q Q % X % Q Q Q X X % $ $ $ % X X $ $ $ X X X X X X $ $ $ X X X X $ $ $ X X X X $ $ $ X X X Q X X X Q Q Q X X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X Q X X X $ X Q X X X Q X Q X X X Q X $ X X X $ X X X X $ X X X $ X X $ X X X $ X X $ X X X $ X Q X Q X Q X X X Q X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X Q X X X $ X Q X X X Q X Q X X X Q X $ X X X $ X X X X $ X X X $ X X $ X X X $ X X $ X X X $ X X Q X X Q X X X $ X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X % $ $ Q Q X % Q Q Q X X % $ $ $ % X X $ $ $ X X X X X X $ $ $ X X X X $ $ $ X X X X $ $ $ X X X X X X % $ $ $ X X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X Q X X X Q X Q X X X $ X Q X X X Q X $ X X X $ X X X X $ X X X $ X X $ X X X $ X X $ X X X $ X X X X X Q X X X $ X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X Q X X X Q X Q X X X $ X Q X X X Q X $ X X X $ X X X X $ X X X $ X X $ X X X $ X X $ X X X $ X X X X X Q X X X Q X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X X Q Q Q X X % $ $ $ X X X Q Q Q X X X $ $ $ X X X X X X $ $ $ X X X X $ $ $ X X X X $ $ $ X X X X X X X Q Q Q X X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X . . . X X O O O X X X X X X R X X X X X X X X X X X X X X X X X X X X X X X X X R R ",
|
||||||
|
"X W W W X X $ $ $ E E W W W E E W W W E W $ $ $ W E W W W E E W W W E E W W W E E W W W E E W W W E . @ h @ . O & - & O X $ $ $ X R X Q X X X Q Q Q X X % Q % X % $ $ $ % X X W W W X R R ",
|
||||||
|
"W X X X W $ X X X W $ X X X W $ X X X W W X X X W W X X X $ W X X X $ $ X X X W W X X X W W X X X W . h Y h . O - > - O $ X X X $ R Q X Q X Q X X X Q X Q X $ X Q X X X Q X W X X X W R R ",
|
||||||
|
"W X X X W $ X X X W $ X X X W $ X X X W W X X X W W X X X $ W X X X $ $ X X X W W X X X W W X X X W . @ h @ . O & - & O $ X X X $ R X Q X X Q X X X $ X Q X $ X Q X X X Q X W X X X W R R ",
|
||||||
|
"E $ $ $ E X $ $ $ E E W W W E X W W W E E W W W E W W W W E E W W W E X $ $ $ E E W W W E E W W W E X . . . X X O O O X X $ $ $ X R X X X X % $ $ $ X X % Q % X % $ $ $ % X E $ $ $ E R R ",
|
||||||
|
"W X X X W $ X X X W W X X X $ $ X X X W $ X X X W $ X X X W W X X X W $ X X X W W X X X W $ X X X W R R R R R R R R R R $ X X X $ R X X X X Q X X X $ X Q X $ X Q X X X Q X W X X X W R R ",
|
||||||
|
"W X X X W $ X X X W W X X X $ $ X X X W $ X X X W $ X X X W W X X X W $ X X X W W X X X W $ X X X W R X W R X X R R R R $ X X X $ R X X X X Q X X X Q X Q X $ X % Q X Q % X W X X X W R R ",
|
||||||
|
"X W W W X X $ $ $ E E W W W E E W W W E X $ $ $ E E W W W E E W W W E X $ $ $ W E W W W E E W W W E R E W R X X R R R R X $ $ $ X R X X X X X Q Q Q X X X $ X X X % Q % X X X W W W X R R ",
|
||||||
|
"X : : : X X o o o * * : : : * * : : : * : o o o : * : : : * * : : : * * : : : * * : : : * * : : : * R R R R R R R R R R X o o o X R X : X X X : : : X X * : * X R R R R R R R R R R R R R ",
|
||||||
|
": X X X : o X X X : o X X X : o X X X : : X X X : : X X X o : X X X o o X X X : : X X X : : X X X : R R R R R R R R R R o X X X o R : X : X : X X X : X : X o X R R R R R R R R R R R R R ",
|
||||||
|
": X X X : o X X X : o X X X : o X X X : : X X X : : X X X o : X X X o o X X X : : X X X : : X X X : R R R R R R R R R R o X X X o R X : X X : X X X o X : X o X R R R R R R R R R R R R R ",
|
||||||
|
"* o o o * X o o o * * : : : * X : : : * * : : : * : : : : * * : : : * X o o o * * : : : * * : : : * R R R R R R R R R R X o o o X R X X X X * o o o X X * : * X R R R R R R R R R R R R R ",
|
||||||
|
": X X X : o X X X : : X X X o o X X X : o X X X : o X X X : : X X X : o X X X : : X X X : o X X X : R R R R R R R R R R o X X X o R X X X X : X X X o X : X o X R R R R R R R R R R R R R ",
|
||||||
|
": X X X : o X X X : : X X X o o X X X : o X X X : o X X X : : X X X : o X X X : : X X X : o X X X : R X : R X X R R R R o X X X o R X X X X : X X X : X : X o X R R R R R R R R R R R R R ",
|
||||||
|
"X : : : X X o o o * * : : : * * : : : * X o o o * * : : : * * : : : * X o o o : * : : : * * : : : * R * : R X X R R R R X o o o X R X X X X X : : : X X X o X X R R R R R R R R R R R R R ",
|
||||||
|
"X T T T X X + + + t t T T T t t T T T t T + + + T t T T T t t T T T t t T T T t t T T T t t T T T t R R R R R R R R R R X + + + X R X T X X X T T T X X t T t X R R R R R R R R R R R R R ",
|
||||||
|
"T X X X T + X X X T + X X X T + X X X T T X X X T T X X X + T X X X + + X X X T T X X X T T X X X T R R R R R R R R R R + X X X + R T X T X T X X X T X T X + X R R R R R R R R R R R R R ",
|
||||||
|
"T X X X T + X X X T + X X X T + X X X T T X X X T T X X X + T X X X + + X X X T T X X X T T X X X T R R R R R R R R R R + X X X + R X T X X T X X X + X T X + X R R R R R R R R R R R R R ",
|
||||||
|
"t + + + t X + + + t t T T T t X T T T t t T T T t T T T T t t T T T t X + + + t t T T T t t T T T t R R R R R R R R R R X + + + X R X X X X t + + + X X t T t X R R R R R R R R R R R R R ",
|
||||||
|
"T X X X T + X X X T T X X X + + X X X T + X X X T + X X X T T X X X T + X X X T T X X X T + X X X T R R R R R R R R R R + X X X + R X X X X T X X X + X T X + X R R R R R R R R R R R R R ",
|
||||||
|
"T X X X T + X X X T T X X X + + X X X T + X X X T + X X X T T X X X T + X X X T T X X X T + X X X T R X T R X X R R R R + X X X + R X X X X T X X X T X T X + X R R R R R R R R R R R R R ",
|
||||||
|
"X T T T X X + + + t t T T T t t T T T t X + + + t t T T T t t T T T t X + + + T t T T T t t T T T t R t T R X X R R R R X + + + X R X X X X X T T T X X X + X X R R R R R R R R R R R R R ",
|
||||||
|
"R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"X Q Q Q X X % Q Q Q X X % $ $ $ % X X $ $ $ X X Q Q Q % X % Q Q Q X X % $ $ $ % X X $ $ $ X % Q Q Q % X X Q Q Q X X % $ $ $ % X X $ $ $ X X $ $ $ E X E W W W E R R R R R R R R R R R R R ",
|
||||||
|
"Q X X X Q X Q X X X Q X Q X X X Q X $ X X X $ Q X X X $ X Q X X X Q X Q X X X Q X $ X X X $ Q X X X $ X Q X X X Q X Q X X X Q X $ X X X $ $ X X X W X $ X X X W R R R R R R R R R R R R R ",
|
||||||
|
"Q X X X $ X Q X X X Q X Q X X X Q X $ X X X $ Q X X X $ X Q X X X Q X Q X X X Q X $ X X X $ Q X X X $ X Q X X X Q X Q Q X X Q X $ X X X $ $ X X X W X $ X X X W R R R R R R R R R R R R R ",
|
||||||
|
"% $ $ $ X X % Q Q Q X X % $ $ $ % X X $ $ $ X % $ $ Q Q X % Q Q Q X X % $ $ $ % X X $ $ $ X % Q Q Q X X % Q Q Q % X % $ Q $ % X X $ $ $ X X $ $ $ E X E W W W E R R R R R R R R R R R R R ",
|
||||||
|
"Q X X X $ X Q X X X $ X Q X X X Q X $ X X X $ Q X X X Q X Q X X X $ X Q X X X Q X $ X X X $ Q X X X $ X Q X X X Q X Q X X Q Q X $ X X X $ $ X X X W X W X X X $ R R R R R R R R R R R R R ",
|
||||||
|
"Q X X X Q X Q X X X $ X Q X X X Q X $ X X X $ Q X X X Q X Q X X X $ X Q X X X Q X $ X X X $ Q X X X $ X Q X X X Q X Q X X X Q X $ X X X $ $ X X X W X W X X X $ R R R R R R R R R R R R R ",
|
||||||
|
"X Q Q Q X X % $ $ $ X X % Q Q Q % X X $ $ $ X X Q Q Q X X % $ $ $ X X X Q Q Q X X X $ $ $ X % $ $ $ X X % $ $ $ % X % $ $ $ % X X $ $ $ X X $ $ $ E X E W W W E R R R R R R R R R R R R R ",
|
||||||
|
"X : : : X X * : : : X X * o o o * X X o o o X X : : : * X * : : : X X * o o o * X X o o o X * : : : * X X : : : X X * o o o * X X o o o X X o o o * X * : : : * R R R R R R R R R R R R R ",
|
||||||
|
": X X X o X : X X X : X : X X X : X o X X X o : X X X o X : X X X : X : X X X : X o X X X o : X X X o X : X X X : X : X X X : X o X X X o o X X X : X o X X X : R R R R R R R R R R R R R ",
|
||||||
|
": X X X o X : X X X : X : X X X : X o X X X o : X X X o X : X X X : X : X X X : X o X X X o : X X X o X : X X X : X : : X X : X o X X X o o X X X : X o X X X : R R R R R R R R R R R R R ",
|
||||||
|
"* o o o X X * : : : X X * o o o * X X o o o X * o o : : X * : : : X X * o o o * X X o o o X * : : : X X * : : : * X * o : o * X X o o o X X o o o * X * : : : * R R R R R R R R R R R R R ",
|
||||||
|
": X X X o X : X X X o X : X X X : X o X X X o : X X X : X : X X X o X : X X X : X o X X X o : X X X o X : X X X : X : X X : : X o X X X o o X X X : X : X X X o R R R R R R R R R R R R R ",
|
||||||
|
": X X X o X : X X X o X : X X X : X o X X X o : X X X : X : X X X o X : X X X : X o X X X o : X X X o X : X X X : X : X X X : X o X X X o o X X X : X : X X X o R R R R R R R R R R R R R ",
|
||||||
|
"X : : : X X * o o o X X X : : : X X X o o o X X : : : X X * o o o X X X : : : X X X o o o X * o o o X X * o o o * X * o o o * X X o o o X X o o o * X * : : : * R R R R R R R R R R R R R ",
|
||||||
|
"X T T T X X t T T T X X t + + + t X X + + + X X T T T t X t T T T X X t + + + t X X + + + X t T T T t X X T T T X X t + + + t X X + + + X X + + + t X t T T T t R R R R R R R R R R R R R ",
|
||||||
|
"T X X X + X T X X X T X T X X X T X + X X X + T X X X + X T X X X T X T X X X T X + X X X + T X X X + X T X X X T X T X X X T X + X X X + + X X X T X + X X X T R R R R R R R R R R R R R ",
|
||||||
|
"T X X X + X T X X X T X T X X X T X + X X X + T X X X + X T X X X T X T X X X T X + X X X + T X X X + X T X X X T X T T X X T X + X X X + + X X X T X + X X X T R R R R R R R R R R R R R ",
|
||||||
|
"t + + + X X t T T T X X t + + + t X X + + + X t + + T T X t T T T X X t + + + t X X + + + X t T T T X X t T T T t X t + T + t X X + + + X X + + + t X t T T T t R R R R R R R R R R R R R ",
|
||||||
|
"T X X X + X T X X X + X T X X X T X + X X X + T X X X T X T X X X + X T X X X T X + X X X + T X X X + X T X X X T X T X X T T X + X X X + + X X X T X T X X X + R R R R R R R R R R R R R ",
|
||||||
|
"T X X X + X T X X X + X T X X X T X + X X X + T X X X T X T X X X + X T X X X T X + X X X + T X X X + X T X X X T X T X X X T X + X X X + + X X X T X T X X X + R R R R R R R R R R R R R ",
|
||||||
|
"X T T T X X t + + + X X X T T T X X X + + + X X T T T X X t + + + X X X T T T X X X + + + X t + + + X X t + + + t X t + + + t X X + + + X X + + + t X t T T T t R R R R R R R R R R R R R ",
|
||||||
|
"R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"U U I P L K J H C G F D S A Z j V B N M m n k b v c x z l # g f d s a p q i u y r e w = 0 9 8 7 6 5 ; 4 3 2 1 < , > R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"U U I P L K J H C G F D S A Z j V B N M m n k b v c x z l # g f d s a p q i u y r e w = 0 9 8 7 6 5 ; 4 3 2 1 < , > R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"U U I P L K J H C G F D S A Z j V B N M m n k b v c x z l # g f d s a p q i u y r e w = 0 9 8 7 6 5 ; 4 3 2 1 < , > R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"U U I P L K J H C G F D S A Z j V B N M m n k b v c x z l # g f d s a p q i u y r e w = 0 9 8 7 6 5 ; 4 3 2 1 < , > R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"U U I P L K J H C G F D S A Z j V B N M m n k b v c x z l # g f d s a p q i u y r e w = 0 9 8 7 6 5 ; 4 3 2 1 < , > R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"U U I P L K J H C G F D S A Z j V B N M m n k b v c x z l # g f d s a p q i u y r e w = 0 9 8 7 6 5 ; 4 3 2 1 < , > R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ",
|
||||||
|
"X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R "
|
||||||
|
};
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
# wmtemp conf file
|
||||||
|
|
||||||
|
cpu1_path = /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp2_input
|
||||||
|
cpu1_critical = 80
|
||||||
|
cpu1_warning = 65
|
||||||
|
cpu2_path = /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp3_input
|
||||||
|
cpu2_critical = 80
|
||||||
|
cpu2_warning = 65
|
||||||
|
cpu3_path = /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp4_input
|
||||||
|
cpu3_critical = 80
|
||||||
|
cpu3_warning = 65
|
||||||
|
cpu4_path = /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp5_input
|
||||||
|
cpu4_critical = 80
|
||||||
|
cpu4_warning = 65
|
||||||
|
gpu_path = /sys/devices/virtual/hwmon/hwmon1/temp4_input
|
||||||
|
gpu_critical = 70
|
||||||
|
gpu_warning = 60
|
||||||
@@ -1,134 +0,0 @@
|
|||||||
/*
|
|
||||||
* wmtempnv: a sensor monitor for WindowMaker. this little app is mainly based
|
|
||||||
* on wmsensormon and other simple dockapps.
|
|
||||||
*
|
|
||||||
* version = 0.1
|
|
||||||
* date: Fri Oct 31 20:41:14 CET 2008 @861 /Internet Time/
|
|
||||||
* author: Roman 'gryf' Dobosz
|
|
||||||
* requirements: configured lm_sensors and sensor program, nvidia-settings, cut,
|
|
||||||
* grep.
|
|
||||||
* licence: gpl
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <sys/param.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include "standards.h"
|
|
||||||
#include <X11/Xlib.h>
|
|
||||||
#include <X11/xpm.h>
|
|
||||||
#include <X11/extensions/shape.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include "../wmgeneral/wmgeneral.h"
|
|
||||||
#include "../wmgeneral/misc.h"
|
|
||||||
#include "wmtempnv_master2.xpm"
|
|
||||||
#include "wmtempnv_mask.xbm"
|
|
||||||
|
|
||||||
#define MAXSTRLEN 8
|
|
||||||
#define TEMP 40
|
|
||||||
#define TEMP_OVER 47
|
|
||||||
#define GPU_T 70
|
|
||||||
#define GPU_T_OVER 85
|
|
||||||
|
|
||||||
void display_values(int, int, int);
|
|
||||||
int get_temp(int core_number);
|
|
||||||
int get_offset(int temp, int cpu);
|
|
||||||
|
|
||||||
int main(int argc, char **argv){
|
|
||||||
int temp1=0, temp2=0, temp3=0;
|
|
||||||
/* offset is one of 0 (normal), 7 (alert), 14 (warning) */
|
|
||||||
int offset1=0, offset2=0, offset3=0;
|
|
||||||
int counter = 0;
|
|
||||||
|
|
||||||
openXwindow(argc, argv, wmtempnv_master2_xpm, wmtempnv_mask_bits, wmtempnv_mask_width, wmtempnv_mask_height);
|
|
||||||
|
|
||||||
while(TRUE){
|
|
||||||
if(counter==0){
|
|
||||||
temp1 = get_temp(0);
|
|
||||||
offset1 = get_offset(temp1, 1);
|
|
||||||
temp2 = get_temp(1);
|
|
||||||
offset2 = get_offset(temp2, 1);
|
|
||||||
temp3 = get_temp(2);
|
|
||||||
offset3 = get_offset(temp3, 0);
|
|
||||||
counter = 200;
|
|
||||||
}
|
|
||||||
|
|
||||||
// core 1
|
|
||||||
copyXPMArea(0, 87 + offset1, 23, 7, 4, 7); // LCD: "CPU"
|
|
||||||
copyXPMArea(69, 87 + offset1, 5, 7, 22, 7); // LCD: number of cpu
|
|
||||||
copyXPMArea(66, 65 + offset1, 9, 7, 51, 7); // LCD: "°C"
|
|
||||||
display_values(temp1, 0, offset1);
|
|
||||||
|
|
||||||
// core 2
|
|
||||||
copyXPMArea(0, 87 + offset2, 23, 7, 4, 21);
|
|
||||||
copyXPMArea(75, 87 + offset2, 5, 7, 22, 21);
|
|
||||||
copyXPMArea(66, 65 + offset2, 9, 7, 51, 21);
|
|
||||||
display_values(temp2, 14, offset2);
|
|
||||||
|
|
||||||
// gpu
|
|
||||||
copyXPMArea(23, 87 + offset3, 23, 7, 4, 35);
|
|
||||||
copyXPMArea(66, 65 + offset3, 9, 7, 51, 35);
|
|
||||||
display_values(temp3, 28, offset3);
|
|
||||||
RedrawWindow();
|
|
||||||
counter--;
|
|
||||||
usleep(5000);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int get_offset(int temp, int cpu){
|
|
||||||
int alt, wrn;
|
|
||||||
if(cpu == 1){
|
|
||||||
wrn = TEMP;
|
|
||||||
alt = TEMP_OVER;
|
|
||||||
}else{
|
|
||||||
wrn = GPU_T;
|
|
||||||
alt = GPU_T_OVER;
|
|
||||||
}
|
|
||||||
if(temp >= alt){
|
|
||||||
return 7; // Alert
|
|
||||||
}else if(temp >= wrn){
|
|
||||||
return 14; // Warning
|
|
||||||
}else{
|
|
||||||
return 0; // Normal
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void display_values(int temp, int offset, int offset2){
|
|
||||||
char text[5], num1, num2, num3, num4;
|
|
||||||
|
|
||||||
sprintf(text, "%03d", temp);
|
|
||||||
num1 = (text[0] - '0');
|
|
||||||
num2 = (text[1] - '0');
|
|
||||||
num3 = (text[2] - '0');
|
|
||||||
num4 = (text[3] - '0');
|
|
||||||
if(num1)
|
|
||||||
copyXPMArea(5 * num1, 65 + offset2, 5, 7, 31, 7 + offset);
|
|
||||||
else
|
|
||||||
copyXPMArea(60, 65 + offset2, 5, 7, 31, 7 + offset);
|
|
||||||
copyXPMArea(5 * num2, 65 + offset2, 5, 7, 38, 7 + offset);
|
|
||||||
copyXPMArea(5 * num3, 65 + offset2, 5, 7, 45, 7 + offset);
|
|
||||||
copyXPMArea(5 * num4, 65 + offset2, 5, 7, 51, 7 + offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
int get_temp(int core_number){
|
|
||||||
// Core temperature. argument is core number. core no.2 is GPU
|
|
||||||
FILE *file;
|
|
||||||
int core=0;
|
|
||||||
char cmd[] = " ";
|
|
||||||
if(core_number==2){
|
|
||||||
sprintf(cmd, "echo `nvidia-settings -q 'GPUCoreTemp'|grep Attribute|cut -d ':' -f 3|cut -d '.' -f 1`");
|
|
||||||
}else{
|
|
||||||
sprintf(cmd, "echo `sensors |grep 'Core %d'|cut -d ':' -f 2|cut -d '.' -f 1`", core_number);
|
|
||||||
}
|
|
||||||
file = popen(cmd, "r");
|
|
||||||
while (! feof(file)) {
|
|
||||||
char line[MAXSTRLEN + 1];
|
|
||||||
bzero(line, MAXSTRLEN + 1);
|
|
||||||
fgets(line, MAXSTRLEN, file);
|
|
||||||
if(line[0] != 0){
|
|
||||||
sscanf(line, "%d", &core);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
pclose(file);
|
|
||||||
|
|
||||||
return core;
|
|
||||||
}
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
#define wmtempnv_mask_width 64
|
|
||||||
#define wmtempnv_mask_height 64
|
|
||||||
static unsigned char wmtempnv_mask_bits[] = {
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
|
|
||||||
0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff,
|
|
||||||
0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
|
|
||||||
0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff,
|
|
||||||
0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
|
|
||||||
0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff,
|
|
||||||
0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
|
|
||||||
0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff,
|
|
||||||
0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff,
|
|
||||||
0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
|
|
||||||
0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff,
|
|
||||||
0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
|
|
||||||
0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff,
|
|
||||||
0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
|
|
||||||
0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff,
|
|
||||||
0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
|
|
||||||
0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff,
|
|
||||||
0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
|
|
||||||
0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff,
|
|
||||||
0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
|
|
||||||
0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff,
|
|
||||||
0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
|
|
||||||
0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff,
|
|
||||||
0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
|
|
||||||
0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff,
|
|
||||||
0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
|
|
||||||
0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff,
|
|
||||||
0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
|
|
||||||
0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff,
|
|
||||||
0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
|
|
||||||
0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff,
|
|
||||||
0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
|
||||||
@@ -1,205 +0,0 @@
|
|||||||
/* XPM */
|
|
||||||
static char * wmtempnv_master2_xpm[] = {
|
|
||||||
"93 122 80 1",
|
|
||||||
" c None",
|
|
||||||
". c #0000FF",
|
|
||||||
"+ c #000000",
|
|
||||||
"@ c #202020",
|
|
||||||
"# c #C7C7C7",
|
|
||||||
"$ c #20B6AE",
|
|
||||||
"% c #007D71",
|
|
||||||
"& c #004941",
|
|
||||||
"* c #0A3F00",
|
|
||||||
"= c #660000",
|
|
||||||
"- c #20B2AE",
|
|
||||||
"; c #188A86",
|
|
||||||
"> c #177700",
|
|
||||||
", c #27B500",
|
|
||||||
"' c #A50000",
|
|
||||||
") c #C90000",
|
|
||||||
"! c #3FFF00",
|
|
||||||
"~ c #FF0000",
|
|
||||||
"{ c #E00000",
|
|
||||||
"] c #440000",
|
|
||||||
"^ c #A80000",
|
|
||||||
"/ c #FF8200",
|
|
||||||
"( c #542A00",
|
|
||||||
"_ c #A85500",
|
|
||||||
": c #00FF0F",
|
|
||||||
"< c #04FA0F",
|
|
||||||
"[ c #09F50F",
|
|
||||||
"} c #0DF10F",
|
|
||||||
"| c #12EC0E",
|
|
||||||
"1 c #16E80E",
|
|
||||||
"2 c #1BE30E",
|
|
||||||
"3 c #1FDF0D",
|
|
||||||
"4 c #24DA0D",
|
|
||||||
"5 c #28D60D",
|
|
||||||
"6 c #2DD10D",
|
|
||||||
"7 c #32CC0C",
|
|
||||||
"8 c #36C80C",
|
|
||||||
"9 c #3BC30C",
|
|
||||||
"0 c #3FBF0B",
|
|
||||||
"a c #44BA0B",
|
|
||||||
"b c #48B60B",
|
|
||||||
"c c #4DB10B",
|
|
||||||
"d c #51AD0A",
|
|
||||||
"e c #56A80A",
|
|
||||||
"f c #5BA30A",
|
|
||||||
"g c #5F9F09",
|
|
||||||
"h c #649A09",
|
|
||||||
"i c #689609",
|
|
||||||
"j c #6D9109",
|
|
||||||
"k c #718D08",
|
|
||||||
"l c #768808",
|
|
||||||
"m c #7A8408",
|
|
||||||
"n c #7F7F07",
|
|
||||||
"o c #847A07",
|
|
||||||
"p c #887607",
|
|
||||||
"q c #8D7107",
|
|
||||||
"r c #916D06",
|
|
||||||
"s c #966806",
|
|
||||||
"t c #9A6406",
|
|
||||||
"u c #9F5F05",
|
|
||||||
"v c #A35B05",
|
|
||||||
"w c #A85605",
|
|
||||||
"x c #AD5105",
|
|
||||||
"y c #B14D04",
|
|
||||||
"z c #B64804",
|
|
||||||
"A c #BA4404",
|
|
||||||
"B c #BF3F03",
|
|
||||||
"C c #C33B03",
|
|
||||||
"D c #C83603",
|
|
||||||
"E c #CC3203",
|
|
||||||
"F c #D12D02",
|
|
||||||
"G c #D62802",
|
|
||||||
"H c #DA2402",
|
|
||||||
"I c #DF1F01",
|
|
||||||
"J c #E31B01",
|
|
||||||
"K c #E81601",
|
|
||||||
"L c #EC1201",
|
|
||||||
"M c #F10D00",
|
|
||||||
"N c #F50900",
|
|
||||||
"O c #FA0400",
|
|
||||||
"................................................................+............................",
|
|
||||||
"................................................................+............................",
|
|
||||||
"................................................................+............................",
|
|
||||||
"................................................................+............................",
|
|
||||||
"................................................................+............................",
|
|
||||||
"..++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..+............................",
|
|
||||||
"..+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#..+............................",
|
|
||||||
"..+@@$$$@@%$$$@@%&&&%@@&&&%@@@@@&&&@@@@&&&@@@@&&&@@@$@@@$$$@@#..+............................",
|
|
||||||
"..+@$@@@$@$@@@$@$@@@$@&@@@$@@@@&@@@&@@&@@@&@@&@@@&@$@$@$@@@$@#..+............................",
|
|
||||||
"..+@$@@@&@$@@@$@$@@@$@&@@@$@@@@&@@@&@@&@@@&@@&@@@&@@$@@$@@@&@#..+............................",
|
|
||||||
"..+@%&&&@@%$$$@@%&&&%@@&&&%@@@@@&&&@@@@&&&@@@@&&&@@@@@@%&&&@@#..+............................",
|
|
||||||
"..+@$@@@&@$@@@&@$@@@$@&@@@$@@@@&@@@&@@&@@@&@@&@@@&@@@@@$@@@&@#..+............................",
|
|
||||||
"..+@$@@@$@$@@@&@$@@@$@&@@@$@@@@&@@@&@@&@@@&@@&@@@&@@@@@$@@@$@#..+............................",
|
|
||||||
"..+@@$$$@@%&&&@@%$$$%@@&&&%@@@@@&&&@@@@&&&@@@@&&&@@@@@@@$$$@@#..+............................",
|
|
||||||
"..+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#..+............................",
|
|
||||||
"..+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#..+............................",
|
|
||||||
"..############################################################..+............................",
|
|
||||||
"................................................................+............................",
|
|
||||||
"................................................................+............................",
|
|
||||||
"..++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..+............................",
|
|
||||||
"..+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#..+............................",
|
|
||||||
"..+@@$$$@@%$$$@@%&&&%@%$$$%@@@@@&&&@@@@&&&@@@@&&&@@@$@@@$$$@@#..+............................",
|
|
||||||
"..+@$@@@$@$@@@$@$@@@$@&@@@$@@@@&@@@&@@&@@@&@@&@@@&@$@$@$@@@$@#..+............................",
|
|
||||||
"..+@$@@@&@$@@@$@$@@@$@&@@@$@@@@&@@@&@@&@@@&@@&@@@&@@$@@$@@@&@#..+............................",
|
|
||||||
"..+@%&&&@@%$$$@@%&&&%@%$$$%@@@@@&&&@@@@&&&@@@@&&&@@@@@@%&&&@@#..+............................",
|
|
||||||
"..+@$@@@&@$@@@&@$@@@$@$@@@&@@@@&@@@&@@&@@@&@@&@@@&@@@@@$@@@&@#..+............................",
|
|
||||||
"..+@$@@@$@$@@@&@$@@@$@$@@@&@@@@&@@@&@@&@@@&@@&@@@&@@@@@$@@@$@#..+............................",
|
|
||||||
"..+@@$$$@@%&&&@@@$$$@@%$$$%@@@@@&&&@@@@&&&@@@@&&&@@@@@@@$$$@@#..+............................",
|
|
||||||
"..+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#..+............................",
|
|
||||||
"..+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#..+............................",
|
|
||||||
"..############################################################..+............................",
|
|
||||||
"................................................................+............................",
|
|
||||||
"................................................................+............................",
|
|
||||||
"..++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..+............................",
|
|
||||||
"..+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#..+............................",
|
|
||||||
"..+@@$$$%@%$$$@@%&&&%@@&&&@@@@@@&&&@@@@&&&@@@@&&&@@@$@@@$$$@@#..+............................",
|
|
||||||
"..+@$@@@&@$@@@$@$@@@$@&@@@&@@@@&@@@&@@&@@@&@@&@@@&@$@$@$@@@$@#..+............................",
|
|
||||||
"..+@$@@@&@$@@@$@$@@@$@&@@@&@@@@&@@@&@@&@@@&@@&@@@&@@$@@$@@@&@#..+............................",
|
|
||||||
"..+@%&&$$@%$$$@@%&&&%@@&&&@@@@@@&&&@@@@&&&@@@@&&&@@@@@@%&&&@@#..+............................",
|
|
||||||
"..+@$@@@$@$@@@&@$@@@$@&@@@&@@@@&@@@&@@&@@@&@@&@@@&@@@@@$@@@&@#..+............................",
|
|
||||||
"..+@$@@@$@$@@@&@$@@@$@&@@@&@@@@&@@@&@@&@@@&@@&@@@&@@@@@$@@@$@#..+............................",
|
|
||||||
"..+@@$$$@@%&&&@@@$$$@@@&&&@@@@@@&&&@@@@&&&@@@@&&&@@@@@@@$$$@@#..+............................",
|
|
||||||
"..+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#..+............................",
|
|
||||||
"..+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#..+............................",
|
|
||||||
"..############################################################..+............................",
|
|
||||||
"................................................................+............................",
|
|
||||||
"................................................................+............................",
|
|
||||||
"..++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..+............................",
|
|
||||||
"..+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#..+............................",
|
|
||||||
"..+@@@&&&@@@&&&@@@&&&@@@&&&@@@@@@@&&&@@@@&&&@@@@&&&@@@@&&&@@@#..+............................",
|
|
||||||
"..+@@&@@@&@&@@@&@&@@@&@&@@@&@@@@@&@@@&@@&@@@&@@&@@@&@@&@@@&@@#..+............................",
|
|
||||||
"..+@@&@@@&@&@@@&@&@@@&@&@@@&@@@@@&@@@&@@&@@@&@@&@@@&@@&@@@&@@#..+............................",
|
|
||||||
"..+@@@&&&@@@&&&@@@&&&@@@&&&@@@@@@@&&&@@@@&&&@@@@&&&@@@@&&&@@@#..+............................",
|
|
||||||
"..+@@&@@@&@&@@@&@&@@@&@&@@@&@@@@@&@@@&@@&@@@&@@&@@@&@@&@@@&@@#..+............................",
|
|
||||||
"..+@@&@@@&@&@@@&@&@@@&@&@@@&@@@@@&@@@&@@&@@@&@@&@@@&@@&@@@&@@#..+............................",
|
|
||||||
"..+@@@&&&@@@&&&@@@&&&@@@&&&@@@@@@@&&&@@@@&&&@@@@&&&@@@@&&&@@@#..+............................",
|
|
||||||
"..+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#..+............................",
|
|
||||||
"..+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#..+............................",
|
|
||||||
"..############################################################..+............................",
|
|
||||||
"................................................................+............................",
|
|
||||||
"................................................................+............................",
|
|
||||||
"................................................................+............................",
|
|
||||||
"................................................................+............................",
|
|
||||||
"................................................................+............................",
|
|
||||||
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@***@@===@@@@@@.@@@@@@@@@@@@@@@@@@@@@@@@@..",
|
|
||||||
"@---@@&&&;;---;;---;-&&&-;---;;---;;---;;---;;---;*>,>*=')'=@&&&@.@$@@@$$$@@%$%@%&&&%@@---@..",
|
|
||||||
"-@@@-&@@@-&@@@-&@@@--@@@--@@@&-@@@&&@@@--@@@--@@@-*,!,*=)~)=&@@@&.$@$@$@@@$@$@&@$@@@$@-@@@-..",
|
|
||||||
"-@@@-&@@@-&@@@-&@@@--@@@--@@@&-@@@&&@@@--@@@--@@@-*>,>*=')'=&@@@&.@$@@$@@@&@$@&@$@@@$@-@@@-..",
|
|
||||||
";&&&;@&&&;;---;@---;;---;----;;---;@&&&;;---;;---;@***@@===@@&&&@.@@@@%&&&@@%$%@%&&&%@;&&&;..",
|
|
||||||
"-@@@-&@@@--@@@&&@@@-&@@@-&@@@--@@@-&@@@--@@@-&@@@-..........&@@@&.@@@@$@@@&@$@&@$@@@$@-@@@-..",
|
|
||||||
"-@@@-&@@@--@@@&&@@@-&@@@-&@@@--@@@-&@@@--@@@-&@@@-.@-.@@....&@@@&.@@@@$@@@$@$@&@%$@$%@-@@@-..",
|
|
||||||
"@---@@&&&;;---;;---;@&&&;;---;;---;@&&&-;---;;---;.;-.@@....@&&&@.@@@@@$$$@@@&@@@%$%@@@---@..",
|
|
||||||
"@{{{@@]]]^^{{{^^{{{^{]]]{^{{{^^{{{^^{{{^^{{{^^{{{^..........@]]]@.@{@@@{{{@@^{^@.............",
|
|
||||||
"{@@@{]@@@{]@@@{]@@@{{@@@{{@@@]{@@@]]@@@{{@@@{{@@@{..........]@@@].{@{@{@@@{@{@]@.............",
|
|
||||||
"{@@@{]@@@{]@@@{]@@@{{@@@{{@@@]{@@@]]@@@{{@@@{{@@@{..........]@@@].@{@@{@@@]@{@]@.............",
|
|
||||||
"^]]]^@]]]^^{{{^@{{{^^{{{^{{{{^^{{{^@]]]^^{{{^^{{{^..........@]]]@.@@@@^]]]@@^{^@.............",
|
|
||||||
"{@@@{]@@@{{@@@]]@@@{]@@@{]@@@{{@@@{]@@@{{@@@{]@@@{..........]@@@].@@@@{@@@]@{@]@.............",
|
|
||||||
"{@@@{]@@@{{@@@]]@@@{]@@@{]@@@{{@@@{]@@@{{@@@{]@@@{.@{.@@....]@@@].@@@@{@@@{@{@]@.............",
|
|
||||||
"@{{{@@]]]^^{{{^^{{{^@]]]^^{{{^^{{{^@]]]{^{{{^^{{{^.^{.@@....@]]]@.@@@@@{{{@@@]@@.............",
|
|
||||||
"@///@@(((__///__///_/(((/_///__///__///__///__///_..........@(((@.@/@@@///@@_/_@.............",
|
|
||||||
"/@@@/(@@@/(@@@/(@@@//@@@//@@@(/@@@((@@@//@@@//@@@/..........(@@@(./@/@/@@@/@/@(@.............",
|
|
||||||
"/@@@/(@@@/(@@@/(@@@//@@@//@@@(/@@@((@@@//@@@//@@@/..........(@@@(.@/@@/@@@(@/@(@.............",
|
|
||||||
"_(((_@(((__///_@///__///_////__///_@(((__///__///_..........@(((@.@@@@_(((@@_/_@.............",
|
|
||||||
"/@@@/(@@@//@@@((@@@/(@@@/(@@@//@@@/(@@@//@@@/(@@@/..........(@@@(.@@@@/@@@(@/@(@.............",
|
|
||||||
"/@@@/(@@@//@@@((@@@/(@@@/(@@@//@@@/(@@@//@@@/(@@@/.@/.@@....(@@@(.@@@@/@@@/@/@(@.............",
|
|
||||||
"@///@@(((__///__///_@(((__///__///_@(((/_///__///_._/.@@....@(((@.@@@@@///@@@(@@.............",
|
|
||||||
".............................................................................................",
|
|
||||||
"@$$$@@%$$$@@%&&&%@@&&&@@$$$%@%$$$@@%&&&%@@&&&@%$$$%@@$$$@@%&&&%@@&&&@@&&&;@;---;.............",
|
|
||||||
"$@@@$@$@@@$@$@@@$@&@@@&$@@@&@$@@@$@$@@@$@&@@@&$@@@&@$@@@$@$@@@$@&@@@&&@@@-@&@@@-.............",
|
|
||||||
"$@@@&@$@@@$@$@@@$@&@@@&$@@@&@$@@@$@$@@@$@&@@@&$@@@&@$@@@$@$$@@$@&@@@&&@@@-@&@@@-.............",
|
|
||||||
"%&&&@@%$$$@@%&&&%@@&&&@%&&$$@%$$$@@%&&&%@@&&&@%$$$@@%$$$%@%&$&%@@&&&@@&&&;@;---;.............",
|
|
||||||
"$@@@&@$@@@&@$@@@$@&@@@&$@@@$@$@@@&@$@@@$@&@@@&$@@@&@$@@@$@$@@$$@&@@@&&@@@-@-@@@&.............",
|
|
||||||
"$@@@$@$@@@&@$@@@$@&@@@&$@@@$@$@@@&@$@@@$@&@@@&$@@@&@$@@@$@$@@@$@&@@@&&@@@-@-@@@&.............",
|
|
||||||
"@$$$@@%&&&@@%$$$%@@&&&@@$$$@@%&&&@@@$$$@@@&&&@%&&&@@%&&&%@%&&&%@@&&&@@&&&;@;---;.............",
|
|
||||||
"@{{{@@^{{{@@^]]]^@@]]]@@{{{^@^{{{@@^]]]^@@]]]@^{{{^@@{{{@@^]]]^@@]]]@@]]]^@^{{{^.............",
|
|
||||||
"{@@@]@{@@@{@{@@@{@]@@@]{@@@]@{@@@{@{@@@{@]@@@]{@@@]@{@@@{@{@@@{@]@@@]]@@@{@]@@@{.............",
|
|
||||||
"{@@@]@{@@@{@{@@@{@]@@@]{@@@]@{@@@{@{@@@{@]@@@]{@@@]@{@@@{@{{@@{@]@@@]]@@@{@]@@@{.............",
|
|
||||||
"^]]]@@^{{{@@^]]]^@@]]]@^]]{{@^{{{@@^]]]^@@]]]@^{{{@@^{{{^@^]{]^@@]]]@@]]]^@^{{{^.............",
|
|
||||||
"{@@@]@{@@@]@{@@@{@]@@@]{@@@{@{@@@]@{@@@{@]@@@]{@@@]@{@@@{@{@@{{@]@@@]]@@@{@{@@@].............",
|
|
||||||
"{@@@]@{@@@]@{@@@{@]@@@]{@@@{@{@@@]@{@@@{@]@@@]{@@@]@{@@@{@{@@@{@]@@@]]@@@{@{@@@].............",
|
|
||||||
"@{{{@@^]]]@@@{{{@@@]]]@@{{{@@^]]]@@@{{{@@@]]]@^]]]@@^]]]^@^]]]^@@]]]@@]]]^@^{{{^.............",
|
|
||||||
"@///@@_///@@_(((_@@(((@@///_@_///@@_(((_@@(((@_///_@@///@@_(((_@@(((@@(((_@_///_.............",
|
|
||||||
"/@@@(@/@@@/@/@@@/@(@@@(/@@@(@/@@@/@/@@@/@(@@@(/@@@(@/@@@/@/@@@/@(@@@((@@@/@(@@@/.............",
|
|
||||||
"/@@@(@/@@@/@/@@@/@(@@@(/@@@(@/@@@/@/@@@/@(@@@(/@@@(@/@@@/@//@@/@(@@@((@@@/@(@@@/.............",
|
|
||||||
"_(((@@_///@@_(((_@@(((@_((//@_///@@_(((_@@(((@_///@@_///_@_(/(_@@(((@@(((_@_///_.............",
|
|
||||||
"/@@@(@/@@@(@/@@@/@(@@@(/@@@/@/@@@(@/@@@/@(@@@(/@@@(@/@@@/@/@@//@(@@@((@@@/@/@@@(.............",
|
|
||||||
"/@@@(@/@@@(@/@@@/@(@@@(/@@@/@/@@@(@/@@@/@(@@@(/@@@(@/@@@/@/@@@/@(@@@((@@@/@/@@@(.............",
|
|
||||||
"@///@@_(((@@@///@@@(((@@///@@_(((@@@///@@@(((@_(((@@_(((_@_(((_@@(((@@(((_@_///_.............",
|
|
||||||
".............................................................................................",
|
|
||||||
"::<[}|1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNO~...................................",
|
|
||||||
"::<[}|1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNO~...................................",
|
|
||||||
"::<[}|1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNO~...................................",
|
|
||||||
"::<[}|1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNO~...................................",
|
|
||||||
"::<[}|1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNO~...................................",
|
|
||||||
"::<[}|1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNO~...................................",
|
|
||||||
".............................................................................................",
|
|
||||||
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@..................................",
|
|
||||||
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@..................................",
|
|
||||||
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@..................................",
|
|
||||||
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@..................................",
|
|
||||||
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@..................................",
|
|
||||||
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.................................."};
|
|
||||||
Reference in New Issue
Block a user