pev/0000755000175000017500000000000013034271604010366 5ustar useruserpev/LICENSE0000644000175000017500000004325413034014706011401 0ustar useruser GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. pev/src/0000755000175000017500000000000013034272345011160 5ustar useruserpev/src/malloc_s.c0000644000175000017500000000040213034014706013104 0ustar useruser#include #include void *malloc_s(size_t size) { if (!size) return NULL; void *new_mem = malloc(size); if (!new_mem) { fprintf(stderr, "fatal: memory exhausted (malloc of %zu bytes)\n", size); exit(-1); } return new_mem; } pev/src/pedis.c0000644000175000017500000002527213034023565012436 0ustar useruser/* pev - the PE file analyzer toolkit pedis.c - PE disassembler Copyright (C) 2012 - 2017 pev authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #include "common.h" #include "../lib/libudis86/udis86.h" #include #include #include "plugins.h" #define PROGRAM "pedis" #define SPACES 32 // spaces # for text-based output #define SYN_ATT 1 #define SYN_INTEL 0 typedef struct { bool all_sections; char *section; bool syntax; uint64_t offset; uint64_t nbytes; // limit the number of bytes instructions. 0 means no limit. uint64_t ninstructions; // limit the number of disassembled instructions. 0 means no limit. bool entrypoint; bool offset_is_rva; uint16_t mode; } options_t; static void usage(void) { static char formats[255]; output_available_formats(formats, sizeof(formats), '|'); printf("Usage: %s OPTIONS FILE\n" "Disassemble PE sections and functions (by default, until found a RET or LEAVE instruction)\n" "\nExample: %s -r 0x4c4df putty.exe\n" "\nOptions:\n" " --att set AT&T syntax\n" " -e, --entrypoint disassemble entrypoint\n" " -f, --format <%s> change output format (default: text)\n" " -m, --mode <16|32|64> disassembly mode (default: auto)\n" " -i, number of instructions to be disassembled\n" " -n, number of bytes to be disassembled\n" " -o, --offset disassemble at specified file offset\n" " -r, --rva disassemble at specified RVA\n" " -s, --section disassemble entire section given\n" " -V, --version show version and exit\n" " --help show this help and exit\n", PROGRAM, PROGRAM, formats); } static void free_options(options_t *options) { if (options == NULL) return; if (options->section != NULL) free(options->section); free(options); } static options_t *parse_options(int argc, char *argv[]) { options_t *options = malloc_s(sizeof(options_t)); memset(options, 0, sizeof(options_t)); /* Parameters for getopt_long() function */ static const char short_options[] = "em:i:n:o:r:s:f:V"; static const struct option long_options[] = { { "help", no_argument, NULL, 1 }, { "att", no_argument, NULL, 2 }, { "", required_argument, NULL, 'n' }, { "entrypoint", no_argument, NULL, 'e' }, { "mode", required_argument, NULL, 'm' }, { "offset", required_argument, NULL, 'o' }, { "rva", required_argument, NULL, 'r' }, { "section", required_argument, NULL, 's' }, { "format", required_argument, NULL, 'f' }, { "version", no_argument, NULL, 'V' }, { NULL, 0, NULL, 0 } }; options->syntax = SYN_INTEL; int c, ind; while ((c = getopt_long(argc, argv, short_options, long_options, &ind))) { if (c < 0) break; switch (c) { case 1: // --help option usage(); exit(EXIT_SUCCESS); case 2: options->syntax = SYN_ATT; break; case 'e': options->entrypoint = true; break; case 'm': options->mode = strtol(optarg, NULL, 10); switch (options->mode) { default: EXIT_ERROR("Bad argument for mode."); case 16: break; case 32: break; case 64: break; } break; case 'i': options->ninstructions = strtol(optarg, NULL, 0); if (errno == ERANGE) EXIT_ERROR("number of instructions value would underflow or overflow"); break; case 'n': options->nbytes = strtol(optarg, NULL, 0); if (errno == ERANGE) EXIT_ERROR("number of bytes value would underflow or overflow"); break; case 'o': options->offset = strtol(optarg, NULL, 0); if (errno == ERANGE) EXIT_ERROR("offset value would underflow or overflow"); options->offset_is_rva = false; break; case 'r': options->offset = strtol(optarg, NULL, 0); if (errno == ERANGE) EXIT_ERROR("rva value would underflow or overflow"); options->offset_is_rva = true; break; case 's': options->section = strdup(optarg); break; case 'V': printf("%s %s\n%s\n", PROGRAM, TOOLKIT, COPY); exit(EXIT_SUCCESS); case 'f': if (output_set_format_by_name(optarg) < 0) EXIT_ERROR("invalid format option"); break; default: fprintf(stderr, "%s: try '--help' for more information\n", PROGRAM); exit(EXIT_FAILURE); } } return options; } static char *insert_spaces(const char *s) { size_t size; char *new; size = strlen(s); if (!size) return NULL; size = size + (size/2); new = malloc_s(size+1); memset(new, 0, size+1); for (unsigned int i=0, j=0, pos=0; i < size; i++) { if (pos==2) { new[i] = ' '; pos=0; } else { new[i] = s[j++]; pos++; } } return new; } static bool is_ret_instruction(unsigned char opcode) { switch (opcode) { case 0xc9: // leave //case 0xc2: // ret case 0xc3: // ret case 0xca: // retf //case 0xcb: // retf return true; default: return false; } } static void disassemble_offset(pe_ctx_t *ctx, const options_t *options, ud_t *ud_obj, uint64_t offset) { if (ctx == NULL || offset == 0) return; uint64_t instr_counter = 0; // counter for disassembled instructions uint64_t byte_counter = 0; // counter for disassembled bytes while (ud_disassemble(ud_obj)) { char ofs[MAX_MSG], value[MAX_MSG], *bytes; const uint8_t *opcode = ud_insn_ptr(ud_obj); instr_counter++; // increment instruction counter byte_counter += ud_insn_len(ud_obj); if (options->nbytes && byte_counter >= options->nbytes) return; const ud_mnemonic_code_t mnic = ud_insn_mnemonic(ud_obj); const ud_operand_t *operand = ud_insn_opr(ud_obj, 0); const ud_type_t op_type = operand != NULL ? operand->type : 0; snprintf(ofs, MAX_MSG, "%"PRIx64, (options->offset_is_rva ? ctx->pe.imagebase : 0) + offset + ud_insn_off(ud_obj)); bytes = insert_spaces(ud_insn_hex(ud_obj)); if (!bytes) return; // correct near operand addresses for calls and jumps if (op_type && (op_type != UD_OP_MEM) && (mnic == UD_Icall || (mnic >= UD_Ijo && mnic <= UD_Ijmp))) { char *instr_asm = strdup(ud_insn_asm(ud_obj)); char *instr = strtok(instr_asm, "0x"); snprintf(value, MAX_MSG, "%s%*c%s%#"PRIx64, bytes, SPACES - (int) strlen(bytes), ' ', instr ? instr : "", ctx->pe.imagebase + offset + ud_insn_off(ud_obj) + ud_obj->operand[0].lval.sdword + ud_insn_len(ud_obj) ); free(instr_asm); } else snprintf(value, MAX_MSG, "%s%*c%s", bytes, SPACES - (int) strlen(bytes), ' ', ud_insn_asm(ud_obj)); free(bytes); output(ofs, value); // for sections, we stop at end of section if (options->section && instr_counter >= options->ninstructions) break; else if (instr_counter >= options->ninstructions && options->ninstructions) break; else if (options->entrypoint) { // search for LEAVE or RET insrtuctions for (unsigned int i=0; i < ud_insn_len(ud_obj); i++) if (is_ret_instruction(opcode[i])) return; } } } int main(int argc, char *argv[]) { pev_config_t config; PEV_INITIALIZE(&config); if (argc < 2) { usage(); exit(EXIT_FAILURE); } output_set_cmdline(argc, argv); options_t *options = parse_options(argc, argv); // opcoes const char *path = argv[argc-1]; pe_ctx_t ctx; pe_err_e err = pe_load_file(&ctx, path); if (err != LIBPE_E_OK) { pe_error_print(stderr, err); return EXIT_FAILURE; } err = pe_parse(&ctx); if (err != LIBPE_E_OK) { pe_error_print(stderr, err); return EXIT_FAILURE; } if (!pe_is_pe(&ctx)) EXIT_ERROR("not a valid PE file"); IMAGE_OPTIONAL_HEADER *optional = pe_optional(&ctx); if (optional == NULL) return EXIT_FAILURE; ud_t ud_obj; // libudis86 object ud_init(&ud_obj); uint8_t mode_bits = 0; switch (optional->type) { default: EXIT_ERROR("Unsupported architecture."); return EXIT_FAILURE; case MAGIC_PE32: mode_bits = 32; break; case MAGIC_PE64: mode_bits = 64; break; } // set disassembly mode according with PE architecture ud_set_mode(&ud_obj, options->mode ? options->mode : mode_bits); uint64_t offset = 0; // offset to start disassembly if (options->entrypoint) offset = pe_rva2ofs(&ctx, ctx.pe.entrypoint); else if (options->offset) offset = options->offset_is_rva ? pe_rva2ofs(&ctx, options->offset) : options->offset; else if (options->section) { IMAGE_SECTION_HEADER *section = pe_section_by_name(&ctx, options->section); if (section) { // section found offset = section->PointerToRawData; if (!options->ninstructions) options->ninstructions = section->SizeOfRawData; } else EXIT_ERROR("invalid section name"); } else { usage(); return EXIT_FAILURE; } if (!offset) { fprintf(stderr, "unable to reach file offset (%#"PRIx64")\n", offset); return EXIT_FAILURE; } output_open_document(); ud_set_syntax(&ud_obj, options->syntax ? UD_SYN_ATT : UD_SYN_INTEL); ud_set_input_buffer(&ud_obj, ctx.map_addr, pe_filesize(&ctx)); //ud_set_input_file(&ud_obj, ctx.stream); ud_input_skip(&ud_obj, offset); disassemble_offset(&ctx, options, &ud_obj, offset); output_close_document(); // libera a memoria free_options(options); // free err = pe_unload(&ctx); if (err != LIBPE_E_OK) { pe_error_print(stderr, err); return EXIT_FAILURE; } PEV_FINALIZE(&config); return EXIT_SUCCESS; } pev/src/pehash.c0000644000175000017500000005103113034017416012570 0ustar useruser/* pev - the PE file analyzer toolkit pehash.c - calculate hashes of PE pieces Copyright (C) 2012 - 2017 pev authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #include "common.h" #include #include #include "../lib/libfuzzy/fuzzy.h" #include "plugins.h" #include "utlist.h" #include "utils.h" #include "ordlookup.h" #define PROGRAM "pehash" #define IMPHASH_FLAVOR_MANDIANT 1 #define IMPHASH_FLAVOR_PEFILE 2 unsigned pefile_warn = 0; typedef struct { bool all; bool content; struct { bool all; bool dos; bool coff; bool optional; } headers; struct { char *name; uint16_t index; } sections; } options_t; /* By liw. */ static char *last_strstr(const char *haystack, const char *needle) { if (*needle == '\0') return (char *) haystack; char *result = NULL; for (;;) { char *p = strstr(haystack, needle); if (p == NULL) break; result = p; haystack = p + 1; } return result; } static void usage(void) { static char formats[255]; output_available_formats(formats, sizeof(formats), '|'); printf("Usage: %s OPTIONS FILE\n" "Calculate hashes of PE pieces\n" "\nExample: %s -s '.text' winzip.exe\n" "\nOptions:\n" " -f, --format <%s> change output format (default: text)\n" " -a, --all hash file, sections and headers with md5, sha1, sha256, ssdeep and imphash\n" " -c, --content hash only the file content (default)\n" " -h, --header hash only the header with the specified name\n" " -s, --section hash only the section with the specified name\n" " --section-index hash only the section at the specified index (1..n)\n" " -V, --version show version and exit\n" " --help show this help and exit\n", PROGRAM, PROGRAM, formats); } static void parse_header_name(options_t *options, const char *optarg) { if (strcmp(optarg, "dos") == 0) options->headers.dos = true; else if (strcmp(optarg, "coff") == 0) options->headers.coff = true; else if (strcmp(optarg, "optional") == 0) options->headers.optional = true; else EXIT_ERROR("invalid header name option"); } static void free_options(options_t *options) { if (options == NULL) return; if (options->sections.name != NULL) free(options->sections.name); free(options); } static options_t *parse_options(int argc, char *argv[]) { options_t *options = malloc_s(sizeof(options_t)); memset(options, 0, sizeof(options_t)); // parameters for getopt_long() function static const char short_options[] = "f:a:c:h:s:V"; static const struct option long_options[] = { { "help", no_argument, NULL, 1 }, { "format", required_argument, NULL, 'f' }, { "all", no_argument, NULL, 'a' }, { "content", no_argument, NULL, 'c' }, { "header", required_argument, NULL, 'h' }, { "section-name", required_argument, NULL, 's' }, { "section-index", required_argument, NULL, 2 }, { "version", no_argument, NULL, 'V' }, { NULL, 0, NULL, 0 } }; // Setting the default option options->content = true; int c, ind; while ((c = getopt_long(argc, argv, short_options, long_options, &ind))) { if (c < 0) break; switch (c) { case 1: // --help option usage(); exit(EXIT_SUCCESS); case 'f': if (output_set_format_by_name(optarg) < 0) EXIT_ERROR("invalid format option"); break; case 'a': options->all = true; break; case 'c': // default options->all = false; //TODO remover? options->content = true; break; case 's': options->all = false; options->headers.all = false; // TODO: How do we need to handle non-ascii names? options->sections.name = strdup(optarg); break; case 2: options->all = false; options->headers.all = false; options->sections.index = strtol(optarg, NULL, 10); if (options->sections.index < 1 || options->sections.index > MAX_SECTIONS) { EXIT_ERROR("Bad argument for section-index,"); } break; case 'V': printf("%s %s\n%s\n", PROGRAM, TOOLKIT, COPY); exit(EXIT_SUCCESS); case 'h': options->all = false; options->headers.all = false; parse_header_name(options, optarg); break; default: fprintf(stderr, "%s: try '--help' for more information\n", PROGRAM); exit(EXIT_FAILURE); } } // TODO: Warn about simultaneous usage of -h, -s, and --section-index. return options; } static void calc_hash(const char *alg_name, const unsigned char *data, size_t size, char *output) { if (strcmp("ssdeep", alg_name) == 0) { fuzzy_hash_buf(data, size, output); return; } const EVP_MD *md = EVP_get_digestbyname(alg_name); //assert(md != NULL); // We already checked this in parse_hash_algorithm() unsigned char md_value[EVP_MAX_MD_SIZE]; unsigned int md_len; EVP_MD_CTX md_ctx; // FIXME: Handle errors - Check return values. EVP_MD_CTX_init(&md_ctx); EVP_DigestInit_ex(&md_ctx, md, NULL); EVP_DigestUpdate(&md_ctx, data, size); EVP_DigestFinal_ex(&md_ctx, md_value, &md_len); EVP_MD_CTX_cleanup(&md_ctx); for (unsigned int i=0; i < md_len; i++) sprintf(&output[i * 2], "%02x", md_value[i]); } static void print_basic_hash(const unsigned char *data, size_t size) { char *basic_hashes[] = { "md5", "sha1", "sha256", "ssdeep" }; char hash_value[EVP_MAX_MD_SIZE * 2 + 1]; if (!data || !size) return; for (unsigned i=0; i < sizeof(basic_hashes) / sizeof(char *); i++) { calc_hash(basic_hashes[i], data, size, hash_value); output(basic_hashes[i], hash_value); } } typedef struct element { char *dll_name; char *function_name; //struct element *prev; /* needed for a doubly-linked list only */ struct element *next; /* needed for singly- or doubly-linked lists */ } element; static void imphash_load_imported_functions(pe_ctx_t *ctx, uint64_t offset, char *dll_name, struct element **head, int flavor) { uint64_t ofs = offset; char hint_str[16]; char fname[MAX_FUNCTION_NAME]; bool is_ordinal; memset(hint_str, 0, sizeof(hint_str)); memset(fname, 0, sizeof(fname)); while (1) { switch (ctx->pe.optional_hdr.type) { case MAGIC_PE32: { const IMAGE_THUNK_DATA32 *thunk = LIBPE_PTR_ADD(ctx->map_addr, ofs); if (!pe_can_read(ctx, thunk, sizeof(IMAGE_THUNK_DATA32))) { // TODO: Should we report something? return; } // Type punning const uint32_t thunk_type = *(uint32_t *)thunk; if (thunk_type == 0) return; is_ordinal = (thunk_type & IMAGE_ORDINAL_FLAG32) != 0; if (is_ordinal) { snprintf(hint_str, sizeof(hint_str)-1, "%"PRIu32, thunk->u1.Ordinal & ~IMAGE_ORDINAL_FLAG32); } else { const uint64_t imp_ofs = pe_rva2ofs(ctx, thunk->u1.AddressOfData); const IMAGE_IMPORT_BY_NAME *imp_name = LIBPE_PTR_ADD(ctx->map_addr, imp_ofs); if (!pe_can_read(ctx, imp_name, sizeof(IMAGE_IMPORT_BY_NAME))) { // TODO: Should we report something? return; } snprintf(hint_str, sizeof(hint_str)-1, "%d", imp_name->Hint); strncpy(fname, (char *)imp_name->Name, sizeof(fname)-1); // Because `strncpy` does not guarantee to NUL terminate the string itself, this must be done explicitly. fname[sizeof(fname) - 1] = '\0'; //size_t fname_len = strlen(fname); } ofs += sizeof(IMAGE_THUNK_DATA32); break; } case MAGIC_PE64: { const IMAGE_THUNK_DATA64 *thunk = LIBPE_PTR_ADD(ctx->map_addr, ofs); if (!pe_can_read(ctx, thunk, sizeof(IMAGE_THUNK_DATA64))) { // TODO: Should we report something? return; } // Type punning const uint64_t thunk_type = *(uint64_t *)thunk; if (thunk_type == 0) return; is_ordinal = (thunk_type & IMAGE_ORDINAL_FLAG64) != 0; if (is_ordinal) { snprintf(hint_str, sizeof(hint_str)-1, "%llu", thunk->u1.Ordinal & ~IMAGE_ORDINAL_FLAG64); } else { uint64_t imp_ofs = pe_rva2ofs(ctx, thunk->u1.AddressOfData); const IMAGE_IMPORT_BY_NAME *imp_name = LIBPE_PTR_ADD(ctx->map_addr, imp_ofs); if (!pe_can_read(ctx, imp_name, sizeof(IMAGE_IMPORT_BY_NAME))) { // TODO: Should we report something? return; } snprintf(hint_str, sizeof(hint_str)-1, "%d", imp_name->Hint); strncpy(fname, (char *)imp_name->Name, sizeof(fname)-1); // Because `strncpy` does not guarantee to NUL terminate the string itself, this must be done explicitly. fname[sizeof(fname) - 1] = '\0'; //size_t fname_len = strlen(fname); } ofs += sizeof(IMAGE_THUNK_DATA64); break; } } if (!dll_name) continue; // Beginning of imphash logic - that's the weirdest thing I've even seen... for (unsigned i=0; i < strlen(dll_name); i++) dll_name[i] = tolower(dll_name[i]); char *aux = NULL; //TODO use a reverse search function instead if (flavor == IMPHASH_FLAVOR_MANDIANT) aux = last_strstr(dll_name, "."); else if (flavor == IMPHASH_FLAVOR_PEFILE) { aux = last_strstr(dll_name, ".dll"); if (aux) *aux = '\0'; aux = last_strstr(dll_name, ".ocx"); if (aux) *aux = '\0'; aux = last_strstr(dll_name, ".sys"); if (aux) *aux = '\0'; } if (aux) *aux = '\0'; for (unsigned i=0; i < strlen(fname); i++) fname[i] = tolower(fname[i]); struct element *el = (struct element *) malloc(sizeof(struct element)); el->dll_name = strdup(dll_name); if (flavor == IMPHASH_FLAVOR_MANDIANT) { el->function_name = strdup(is_ordinal ? hint_str : fname); } else if (flavor == IMPHASH_FLAVOR_PEFILE) { int hint = strtoul(hint_str, NULL, 10); if ( strncmp(dll_name, "oleaut32", 8) == 0 && is_ordinal) { for (unsigned i=0; i < sizeof(oleaut32_arr) / sizeof(ord_t); i++) if (hint == oleaut32_arr[i].number) el->function_name = strdup(oleaut32_arr[i].fname); } else if ( strncmp(dll_name, "ws2_32", 6) == 0 && is_ordinal) { for (unsigned i=0; i < sizeof(ws2_32_arr) / sizeof(ord_t); i++) if (hint == ws2_32_arr[i].number) el->function_name = strdup(ws2_32_arr[i].fname); } else { char ord[MAX_FUNCTION_NAME]; memset(ord, 0, MAX_FUNCTION_NAME); if (is_ordinal) { snprintf(ord, MAX_FUNCTION_NAME, "ord%s", hint_str); el->function_name = strdup(ord); } else { el->function_name = strdup(fname); } } } for (unsigned i=0; i < strlen(el->function_name); i++) el->function_name[i] = tolower(el->function_name[i]); LL_APPEND(*head, el); } } static void imphash(pe_ctx_t *ctx, int flavor) { const IMAGE_DATA_DIRECTORY *dir = pe_directory_by_entry(ctx, IMAGE_DIRECTORY_ENTRY_IMPORT); if (dir == NULL) return; const uint64_t va = dir->VirtualAddress; if (va == 0) { fprintf(stderr, "import directory not found\n"); return; } uint64_t ofs = pe_rva2ofs(ctx, va); element *elt, *tmp, *head = NULL; int count = 0; while (1) { IMAGE_IMPORT_DESCRIPTOR *id = LIBPE_PTR_ADD(ctx->map_addr, ofs); if (!pe_can_read(ctx, id, sizeof(IMAGE_IMPORT_DESCRIPTOR))) { // TODO: Should we report something? output_close_scope(); return; } if (!id->u1.OriginalFirstThunk && !id->FirstThunk) break; ofs += sizeof(IMAGE_IMPORT_DESCRIPTOR); const uint64_t aux = ofs; // Store current ofs ofs = pe_rva2ofs(ctx, id->Name); if (ofs == 0) break; const char *dll_name_ptr = LIBPE_PTR_ADD(ctx->map_addr, ofs); // Validate whether it's ok to access at least 1 byte after dll_name_ptr. // It might be '\0', for example. if (!pe_can_read(ctx, dll_name_ptr, 1)) { // TODO: Should we report something? break; } char dll_name[MAX_DLL_NAME]; strncpy(dll_name, dll_name_ptr, sizeof(dll_name)-1); // Because `strncpy` does not guarantee to NUL terminate the string itself, this must be done explicitly. dll_name[sizeof(dll_name) - 1] = '\0'; //output_open_scope("Library", OUTPUT_SCOPE_TYPE_OBJECT); //output("Name", dll_name); ofs = pe_rva2ofs(ctx, id->u1.OriginalFirstThunk ? id->u1.OriginalFirstThunk : id->FirstThunk); if (ofs == 0) { output_close_scope(); // Library break; } imphash_load_imported_functions(ctx, ofs, dll_name, &head, flavor); ofs = aux; // Restore previous ofs } LL_COUNT(head, elt, count); //printf("%d number of elements in list outside\n", count); size_t imphash_string_size = sizeof(char) * count * MAX_DLL_NAME + MAX_FUNCTION_NAME; char *imphash_string = (char *) malloc_s(imphash_string_size); memset(imphash_string, 0, imphash_string_size); LL_FOREACH_SAFE(head, elt, tmp) \ sprintf(imphash_string, "%s%s.%s,", imphash_string, elt->dll_name, elt->function_name); \ LL_DELETE(head, elt); free(elt); imphash_string_size = strlen(imphash_string); imphash_string[imphash_string_size-1] = '\0'; // remove the last comma sign //puts(imphash_string); // DEBUG char imphash[32]; calc_hash("md5", (unsigned char *)imphash_string, strlen(imphash_string), imphash); free(imphash_string); if (flavor == IMPHASH_FLAVOR_MANDIANT) output("imphash (Mandiant)", imphash); else if (flavor == IMPHASH_FLAVOR_PEFILE) output("imphash", imphash); } int main(int argc, char *argv[]) { pev_config_t config; PEV_INITIALIZE(&config); if (argc < 2) { usage(); return EXIT_FAILURE; } output_set_cmdline(argc, argv); OpenSSL_add_all_digests(); options_t *options = parse_options(argc, argv); pe_ctx_t ctx; pe_err_e err = pe_load_file(&ctx, argv[argc-1]); if (err != LIBPE_E_OK) { pe_error_print(stderr, err); return EXIT_FAILURE; } err = pe_parse(&ctx); if (err != LIBPE_E_OK) { pe_error_print(stderr, err); return EXIT_FAILURE; } if (!pe_is_pe(&ctx)) EXIT_ERROR("not a valid PE file"); const IMAGE_SECTION_HEADER *section_ptr = NULL; const unsigned char *data = NULL; uint64_t data_size = 0; unsigned c = pe_sections_count(&ctx); IMAGE_SECTION_HEADER ** const sections = pe_sections(&ctx); data = ctx.map_addr; data_size = pe_filesize(&ctx); output_open_document(); if (options->headers.all || options->headers.dos || options->headers.coff || options->headers.optional || options->sections.name || options->sections.index) { options->all = false; options->content = false; } if (options->all) { options->content = true; options->headers.all = true; } if (options->content) { output_open_scope("file", OUTPUT_SCOPE_TYPE_OBJECT); output("filepath", ctx.path); print_basic_hash(data, data_size); //imphash(&ctx, IMPHASH_FLAVOR_MANDIANT); imphash(&ctx, IMPHASH_FLAVOR_PEFILE); output_close_scope(); // file if (!options->all) // whole file content only goto BYE; } if (options->headers.all) { options->headers.dos = true; options->headers.coff = true; options->headers.optional = true; } if (options->headers.all || options->headers.dos || options->headers.coff || options->headers.optional) output_open_scope("headers", OUTPUT_SCOPE_TYPE_ARRAY); if (options->headers.all || options->headers.dos) { const IMAGE_DOS_HEADER *dos_hdr = pe_dos(&ctx); data = (const unsigned char *)dos_hdr; data_size = sizeof(IMAGE_DOS_HEADER); output_open_scope("header", OUTPUT_SCOPE_TYPE_OBJECT); output("header_name", "IMAGE_DOS_HEADER"); print_basic_hash(data, data_size); output_close_scope(); // header } if (options->headers.all || options->headers.coff) { const IMAGE_COFF_HEADER *coff_hdr = pe_coff(&ctx); data = (const unsigned char *)coff_hdr; data_size = sizeof(IMAGE_COFF_HEADER); output_open_scope("header", OUTPUT_SCOPE_TYPE_OBJECT); output("header_name", "IMAGE_COFF_HEADER"); print_basic_hash(data, data_size); output_close_scope(); // header } if (options->headers.all || options->headers.optional) { const IMAGE_OPTIONAL_HEADER *opt_hdr = pe_optional(&ctx); switch (opt_hdr->type) { case MAGIC_ROM: // Oh boy! We do not support ROM. Abort! fprintf(stderr, "ROM image is not supported\n"); break; case MAGIC_PE32: if (!pe_can_read(&ctx, opt_hdr->_32, sizeof(IMAGE_OPTIONAL_HEADER_32))) { // TODO: Should we report something? break; } data = (const unsigned char *)opt_hdr->_32; data_size = sizeof(IMAGE_OPTIONAL_HEADER_32); break; case MAGIC_PE64: if (!pe_can_read(&ctx, opt_hdr->_64, sizeof(IMAGE_OPTIONAL_HEADER_64))) { // TODO: Should we report something? break; } data = (const unsigned char *)opt_hdr->_64; data_size = sizeof(IMAGE_OPTIONAL_HEADER_64); break; } output_open_scope("header", OUTPUT_SCOPE_TYPE_OBJECT); output("header_name", "IMAGE_OPTIONAL_HEADER"); print_basic_hash(data, data_size); output_close_scope(); // header } if (options->headers.all || options->headers.dos || options->headers.coff || options->headers.optional) output_close_scope(); // headers if (options->all || options->sections.name || options->sections.index) output_open_scope("sections", OUTPUT_SCOPE_TYPE_ARRAY); if (options->all) { for (unsigned int i=0; iSizeOfRawData; data = LIBPE_PTR_ADD(ctx.map_addr, sections[i]->PointerToRawData); if (!pe_can_read(&ctx, data, data_size)) { EXIT_ERROR("Unable to read section data"); } output_open_scope("section", OUTPUT_SCOPE_TYPE_OBJECT); output("section_name", (char *)sections[i]->Name); if (data_size) { print_basic_hash(data, data_size); } output_close_scope(); // section } //output_close_scope(); // sections } else if (options->sections.name != NULL) { const IMAGE_SECTION_HEADER *section = pe_section_by_name(&ctx, options->sections.name); if (section == NULL) { EXIT_ERROR("The requested section could not be found on this binary"); } section_ptr = section; } else if (options->sections.index > 0) { const uint16_t num_sections = pe_sections_count(&ctx); if (num_sections == 0 || options->sections.index > num_sections) { EXIT_ERROR("The requested section could not be found on this binary"); } IMAGE_SECTION_HEADER ** const sections = pe_sections(&ctx); const IMAGE_SECTION_HEADER *section = sections[options->sections.index - 1]; section_ptr = section; } if (section_ptr != NULL) { if (section_ptr->SizeOfRawData > 0) { const uint8_t *section_data_ptr = LIBPE_PTR_ADD(ctx.map_addr, section_ptr->PointerToRawData); // printf("map_addr = %p\n", ctx.map_addr); // printf("section_data_ptr = %p\n", section_data_ptr); // printf("SizeOfRawData = %u\n", section_ptr->SizeOfRawData); if (!pe_can_read(&ctx, section_data_ptr, section_ptr->SizeOfRawData)) { EXIT_ERROR("The requested section has an invalid size"); } data = (const unsigned char *)section_data_ptr; data_size = section_ptr->SizeOfRawData; } else { data = (const unsigned char *)""; data_size = 0; } } if (!options->all && data != NULL) { output_open_scope("section", OUTPUT_SCOPE_TYPE_OBJECT); output("section_name", options->sections.name); print_basic_hash(data, data_size); output_close_scope(); } if (options->all || options->sections.name || options->sections.index) output_close_scope(); BYE: output_close_document(); // free free_options(options); err = pe_unload(&ctx); if (err != LIBPE_E_OK) { pe_error_print(stderr, err); return EXIT_FAILURE; } EVP_cleanup(); // Clean OpenSSL_add_all_digests. PEV_FINALIZE(&config); return EXIT_SUCCESS; } pev/src/pepack.c0000644000175000017500000001775513034014706012601 0ustar useruser/* pev - the PE file analyzer toolkit pepack.c - search packers in PE files Copyright (C) 2012 - 2017 pev authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #include "common.h" #include "plugins.h" #define PROGRAM "pepack" #define MAX_SIG_SIZE 2048 typedef struct { char *dbfile; } options_t; static void usage(void) { static char formats[255]; output_available_formats(formats, sizeof(formats), '|'); printf("Usage: %s FILE\n" "Search for packers in PE files\n" "\nExample: %s putty.exe\n" "\nOptions:\n" " -d, --database use database file (default: ./userdb.txt)\n" " -f, --format <%s> change output format (default: text)\n" " -V, --version show version and exit\n" " --help show this help and exit\n", PROGRAM, PROGRAM, formats); } static void free_options(options_t *options) { if (options == NULL) return; if (options->dbfile != NULL) free(options->dbfile); free(options); } static options_t *parse_options(int argc, char *argv[]) { options_t *options = malloc_s(sizeof(options_t)); memset(options, 0, sizeof(options_t)); /* Parameters for getopt_long() function */ static const char short_options[] = "d:f:V"; static const struct option long_options[] = { { "database", required_argument, NULL, 'd' }, { "format", required_argument, NULL, 'f' }, { "help", no_argument, NULL, 1 }, { "version", no_argument, NULL, 'V' }, { NULL, 0, NULL, 0 } }; int c, ind; while ((c = getopt_long(argc, argv, short_options, long_options, &ind))) { if (c < 0) break; switch (c) { case 1: // --help option usage(); exit(EXIT_SUCCESS); case 'd': options->dbfile = strdup(optarg); break; case 'f': if (output_set_format_by_name(optarg) < 0) EXIT_ERROR("invalid format option"); break; case 'V': printf("%s %s\n%s\n", PROGRAM, TOOLKIT, COPY); exit(EXIT_SUCCESS); default: fprintf(stderr, "%s: try '--help' for more information\n", PROGRAM); exit(EXIT_FAILURE); } } return options; } /* MEW Packer and others basically stores the entrypoint in a section marked only as readable (without executable and/or writable flags) Windows Loader still executes the binary */ static bool generic_packer(pe_ctx_t *ctx, uint64_t entrypoint) { IMAGE_SECTION_HEADER *section = pe_rva2section(ctx, entrypoint); if (section == NULL) return false; // we count the flags for the section and if there is more than // 2 it means we don't have the mew_packer const SectionCharacteristics invalid_flags[] = { IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE }; // MEW never leave EP in .text section if (memcmp(section->Name, ".text", 5) == 0) return false; unsigned short flags_count = 0; for (size_t i=0; i < LIBPE_SIZEOF_ARRAY(invalid_flags); i++) { if (section->Characteristics & invalid_flags[i]) flags_count++; } return flags_count < 3; } static bool loaddb(FILE **fp, const options_t *options) { const char *dbfile = options->dbfile ? options->dbfile : "userdb.txt"; *fp = fopen(dbfile, "r"); // FIXME(jweyrich): Granted read permission to the informed dbfile, this will succeed even if it's a directory! if (!*fp) { *fp = fopen(SHAREDIR "/userdb.txt", "r"); } return *fp != NULL; } static bool match_peid_signature(const unsigned char *data, char *sig) { unsigned char byte_str[3], byte; // add null terminator byte_str[2] = '\0'; while (*sig) { // ignore '=' and blank spaces if (*sig == '=' || *sig == ' ') { sig++; continue; } // match "??" if (*sig == '?') { sig += 2; data++; continue; } memcpy(byte_str, sig, 2); byte = strtoul((char *) byte_str, NULL, 16); if (*data++ != byte) return false; sig += 2; // next two characters of signature } return true; } static bool compare_signature(const unsigned char *data, uint64_t ep_offset, FILE *dbfile, char *packer_name, size_t packer_name_len) { if (!dbfile || !data) return false; char *buff = malloc_s(MAX_SIG_SIZE); //memset(buff, 0, MAX_SIG_SIZE); while (fgets(buff, MAX_SIG_SIZE, dbfile)) { // line length size_t len = strlen(buff); // ifgore comments and blank lines if (*buff == ';' || *buff == '\n' || *buff == '\r') continue; // remove newline from buffer if (*(buff+len-1) == '\n') *(buff+len-1) = '\0'; // removing carriage return, if present if (*(buff+len-2) == '\r') { *(buff+len-2) = '\0'; //*(buff+len-1) = '\0'; len--; // update line length } // line have [packer name]? Fill packer_name pointer if (*buff == '[' && *(buff+len-2) == ']') { *(buff+len-2) = '\0'; // remove square brackets strncpy(packer_name, buff+1, packer_name_len); packer_name[packer_name_len-1] = '\0'; // Guarantee it's Null-terminated. } // check if signature match if (!strncasecmp(buff, "signature", 9)) { if (match_peid_signature(data + ep_offset, buff+9)) { free(buff); return true; } } } free(buff); return false; } int main(int argc, char *argv[]) { pev_config_t config; PEV_INITIALIZE(&config); if (argc < 2) { usage(); exit(EXIT_FAILURE); } output_set_cmdline(argc, argv); options_t *options = parse_options(argc, argv); // opcoes const char *path = argv[argc-1]; pe_ctx_t ctx; pe_err_e err = pe_load_file(&ctx, path); if (err != LIBPE_E_OK) { pe_error_print(stderr, err); return EXIT_FAILURE; } err = pe_parse(&ctx); if (err != LIBPE_E_OK) { pe_error_print(stderr, err); return EXIT_FAILURE; } if (!pe_is_pe(&ctx)) EXIT_ERROR("not a valid PE file"); const uint64_t ep_offset = pe_rva2ofs(&ctx, ctx.pe.entrypoint); if (ep_offset == 0) EXIT_ERROR("unable to get entrypoint offset"); FILE *dbfile = NULL; if (!loaddb(&dbfile, options)) fprintf(stderr, "warning: without valid database file, %s will search in generic mode only\n", PROGRAM); char value[MAX_MSG]; // TODO(jweyrich): Create a new API to retrieve map_addr. // TODO(jweyrich): Should we use `LIBPE_PTR_ADD(ctx->map_addr, ep_offset)` instead? const unsigned char *pe_data = ctx.map_addr; // packer by signature if (compare_signature(pe_data, ep_offset, dbfile, value, sizeof(value))) ; // generic detection else if (generic_packer(&ctx, ep_offset)) snprintf(value, MAX_MSG, "generic"); else snprintf(value, MAX_MSG, "no packer found"); output_open_document(); output("packer", value); output_close_document(); if (dbfile != NULL) fclose(dbfile); // libera a memoria free_options(options); // free err = pe_unload(&ctx); if (err != LIBPE_E_OK) { pe_error_print(stderr, err); return EXIT_FAILURE; } PEV_FINALIZE(&config); return EXIT_SUCCESS; } pev/src/ofs2rva.c0000644000175000017500000000631113034014706012702 0ustar useruser/* pev - the PE file analyzer toolkit ofs2rva.c - converts raw file offset to RVA Copyright (C) 2012 - 2017 pev authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #include "common.h" #define PROGRAM "ofs2rva" static void usage(void) { printf("Usage: %s FILE\n" "Convert raw file offset to RVA\n" "\nExample: %s 0x1b9b8 calc.exe\n" "\nOptions:\n" " -V, --version show version and exit\n" " --help show this help and exit\n", PROGRAM, PROGRAM); } static void parse_options(int argc, char *argv[]) { /* Parameters for getopt_long() function */ static const char short_options[] = "V"; static const struct option long_options[] = { { "help", no_argument, NULL, 1 }, { "version", no_argument, NULL, 'V' }, { NULL, 0, NULL, 0 } }; int c, ind; while ((c = getopt_long(argc, argv, short_options, long_options, &ind))) { if (c < 0) break; switch (c) { case 1: // --help option usage(); exit(EXIT_SUCCESS); case 'V': printf("%s %s\n%s\n", PROGRAM, TOOLKIT, COPY); exit(EXIT_SUCCESS); default: fprintf(stderr, "%s: try '--help' for more information\n", PROGRAM); exit(EXIT_FAILURE); } } } int main(int argc, char *argv[]) { //PEV_INITIALIZE(); if (argc != 3) { usage(); return EXIT_FAILURE; } parse_options(argc, argv); // opcoes pe_ctx_t ctx; pe_err_e err = pe_load_file(&ctx, argv[2]); if (err != LIBPE_E_OK) { pe_error_print(stderr, err); return EXIT_FAILURE; } uint64_t ofs = (uint64_t)strtoll(argv[1], NULL, 0); if (!ofs) EXIT_ERROR("invalid offset"); err = pe_parse(&ctx); if (err != LIBPE_E_OK) { pe_error_print(stderr, err); return EXIT_FAILURE; } if (!pe_is_pe(&ctx)) EXIT_ERROR("not a valid PE file"); printf("%#"PRIx64"\n", pe_ofs2rva(&ctx, ofs)); // libera a memoria pe_unload(&ctx); //PEV_FINALIZE(); return EXIT_SUCCESS; } pev/src/output.c0000644000175000017500000002132013034251576012665 0ustar useruser/* pev - the PE file analyzer toolkit output.c - Symbols and APIs to be used to output data in multiple formats. Copyright (C) 2012 - 2014 pev authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #include "output.h" #include "output_plugin.h" #include "stack.h" #include "compat/strlcat.h" #include "compat/sys/queue.h" #include "utils.h" #include #include // // Global variables // #define FORMAT_ID_FOR_TEXT 3 static bool g_is_document_open = false; static const format_t *g_format = NULL; static STACK_TYPE *g_scope_stack = NULL; static int g_argc = 0; static char **g_argv = NULL; static char *g_cmdline = NULL; typedef struct _format_entry { const format_t *format; SLIST_ENTRY(_format_entry) entries; } format_entry_t; static SLIST_HEAD(_format_t_list, _format_entry) g_registered_formats = SLIST_HEAD_INITIALIZER(g_registered_formats); // // Definition of internal functions // static format_entry_t *_lookup_format_entry_by_id(format_id_t id) { format_entry_t *entry; SLIST_FOREACH(entry, &g_registered_formats, entries) { if (entry->format->id == id) return entry; } return NULL; } static const format_t *_lookup_format_by_id(format_id_t id) { const format_entry_t *entry = _lookup_format_entry_by_id(id); if (entry == NULL) return NULL; return entry->format; } static void _unregister_all_formats(void) { while (!SLIST_EMPTY(&g_registered_formats)) { format_entry_t *entry = SLIST_FIRST(&g_registered_formats); SLIST_REMOVE_HEAD(&g_registered_formats, entries); free(entry); } } // // API // int output_plugin_register_format(const format_t *format) { format_entry_t *entry = malloc(sizeof *entry); if (entry == NULL) { //fprintf(stderr, "output: allocation failed for format entry\n"); return -1; } memset(entry, 0, sizeof *entry); entry->format = format; SLIST_INSERT_HEAD(&g_registered_formats, entry, entries); return 0; } void output_plugin_unregister_format(const format_t *format) { format_entry_t *entry = _lookup_format_entry_by_id(format->id); if (entry == NULL) return; SLIST_REMOVE(&g_registered_formats, entry, _format_entry, entries); free(entry); } void output(const char *key, const char *value) { output_keyval(key, value); } void output_init(void) { g_format = _lookup_format_by_id(FORMAT_ID_FOR_TEXT); g_scope_stack = STACK_ALLOC(15); if (g_scope_stack == NULL) abort(); } void output_term(void) { if (g_cmdline != NULL) { free(g_cmdline); g_cmdline = NULL; } const uint16_t scope_depth = STACK_COUNT(g_scope_stack); if (scope_depth > 0) { fprintf(stderr, "output: terminating the output while there are open scopes will cause memory leaks"); } // TODO(jweyrich): Should we loop to pop + close + output every scope? if (g_scope_stack != NULL) free(g_scope_stack); _unregister_all_formats(); } const char *output_cmdline(void) { return g_cmdline; } void output_set_cmdline(int argc, char *argv[]) { g_argc = argc; g_argv = argv; if (g_cmdline != NULL) free(g_cmdline); g_cmdline = utils_str_array_join(g_argv, g_argc, ' '); if (g_cmdline == NULL) { fprintf(stderr, "output: allocation failed for utils_str_array_join\n"); abort(); } //printf("cmdline = %s\n", g_cmdline); } const format_t *output_format(void) { return g_format; } const format_t *output_parse_format(const char *format_name) { const format_t *format = NULL; format_entry_t *entry; SLIST_FOREACH(entry, &g_registered_formats, entries) { // TODO(jweyrich): Should we use strcasecmp? Conforms to 4.4BSD and POSIX.1-2001, but not to C89 nor C99. if (strcmp(format_name, entry->format->name) == 0) { format = entry->format; break; } } return format; } void output_set_format(const format_t *format) { g_format = format; } int output_set_format_by_name(const char *format_name) { const format_t *format = output_parse_format(format_name); if (format == NULL) return -1; output_set_format(format); return 0; } size_t output_available_formats(char *buffer, size_t size, char separator) { size_t total_available = 0; size_t consumed = 0; bool truncated = false; memset(buffer, 0, size); format_entry_t *entry; SLIST_FOREACH(entry, &g_registered_formats, entries) { if (!truncated) { const char *format_name = entry->format->name; consumed = bsd_strlcat(buffer, format_name, size); if (consumed > size) { // TODO(jweyrich): Handle truncation. total_available++; truncated = true; continue; } if (consumed < size - 1) { buffer[consumed++] = separator; } } total_available++; } buffer[consumed - 1] = '\0'; return total_available; } void output_open_document(void) { output_open_document_with_name(NULL); } void output_open_document_with_name(const char *document_name) { assert(g_format != NULL); // Cannot open a new document while there's one already open. assert(!g_is_document_open); const char *key = document_name; const output_scope_type_e scope_type = OUTPUT_SCOPE_TYPE_DOCUMENT; output_open_scope(key, scope_type); g_is_document_open = true; } void output_close_document(void) { assert(g_format != NULL); // Closing a document without first opening it is an error. assert(g_is_document_open); const output_scope_t *scope = NULL; int ret = STACK_PEEK(g_scope_stack, (void *)&scope); if (ret < 0) { fprintf(stderr, "output: cannot close a scope that has not been opened.\n"); abort(); } if (scope->type != OUTPUT_SCOPE_TYPE_DOCUMENT) { fprintf(stderr, "output: trying to close a document, but the current scope is of a different type.\n"); abort(); } output_close_scope(); g_is_document_open = false; } void output_open_scope(const char *scope_name, output_scope_type_e scope_type) { assert(g_format != NULL); const char *key = scope_name; const char *value = NULL; const output_type_e type = OUTPUT_TYPE_SCOPE_OPEN; const uint16_t scope_depth = STACK_COUNT(g_scope_stack); output_scope_t * const scope = malloc(sizeof *scope); if (scope == NULL) abort(); // Abort because it failed miserably! scope->name = scope_name == NULL ? NULL : strdup(scope_name); scope->type = scope_type; scope->depth = scope_depth + 1; if (scope_depth > 0) { output_scope_t * const parent_scope = NULL; STACK_PEEK(g_scope_stack, (void *)&parent_scope); scope->parent_type = parent_scope->type; } //printf("DEBUG: output_open_scope: scope_depth=%d\n", STACK_COUNT(g_scope_stack)); if (g_format != NULL) g_format->output_fn(g_format, type, scope, key, value); int ret = STACK_PUSH(g_scope_stack, (void *)scope); if (ret < 0) abort(); // Abort because it failed miserably! } void output_close_scope(void) { assert(g_format != NULL); output_scope_t * const scope = NULL; int ret = STACK_POP(g_scope_stack, (void *)&scope); if (ret < 0) { fprintf(stderr, "output: cannot close a scope that has not been opened.\n"); abort(); } const char *key = NULL; const char *value = NULL; const output_type_e type = OUTPUT_TYPE_SCOPE_CLOSE; //printf("DEBUG: output_open_scope: scope_depth=%d\n", STACK_COUNT(g_scope_stack)); if (g_format != NULL) g_format->output_fn(g_format, type, scope, key, value); free(scope); } void output_keyval(const char *key, const char *value) { assert(g_format != NULL); const uint16_t scope_depth = STACK_COUNT(g_scope_stack); const output_scope_t *scope = NULL; if (scope_depth > 0) STACK_PEEK(g_scope_stack, (void *)&scope); const output_type_e type = OUTPUT_TYPE_ATTRIBUTE; if (g_format != NULL) g_format->output_fn(g_format, type, scope, key, value); } pev/src/dylib.h0000644000175000017500000000433013034014706012427 0ustar useruser/* The MIT License (MIT) Copyright (c) 2013, Jardel Weyrich Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #pragma once typedef struct dylib { char *path; void *handle; int loaded; } dylib_t; const char *dylib_error(dylib_t *lib); int dylib_load(dylib_t *lib, const char *path); int dylib_unload(dylib_t *lib); void *dylib_get_symbol(dylib_t *lib, const char *symbol); int dylib_has_symbol(dylib_t *lib, const char *symbol); pev/src/peres.c0000644000175000017500000006137413034014706012450 0ustar useruser/* pev - the PE file analyzer toolkit peres.c - retrive informations and binary data of resources Copyright (C) 2012 - 2017 pev authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #include "common.h" #include #define PROGRAM "peres" typedef enum { RDT_LEVEL1 = 1, RDT_LEVEL2 = 2, RDT_LEVEL3 = 3 } NODE_LEVEL_PERES; typedef enum { RDT_RESOURCE_DIRECTORY = 1, RDT_DIRECTORY_ENTRY = 2, RDT_DATA_STRING = 3, RDT_DATA_ENTRY = 4 } NODE_TYPE_PERES; typedef struct _NODE_PERES { NODE_TYPE_PERES nodeType; NODE_LEVEL_PERES nodeLevel; union { IMAGE_RESOURCE_DIRECTORY *resourceDirectory; // nodeType == 1 IMAGE_RESOURCE_DIRECTORY_ENTRY *directoryEntry; // nodeType == 2 IMAGE_RESOURCE_DATA_STRING *dataString; // nodeType == 3 IMAGE_RESOURCE_DATA_ENTRY *dataEntry; // nodeType == 4 } resource; struct _NODE_PERES *nextNode; struct _NODE_PERES *lastNode; struct _NODE_PERES *rootNode; } NODE_PERES; static const RESOURCE_ENTRY resource_types[] = { { "RT_CURSOR", 1, ".cur", "cursors" }, { "RT_BITMAP", 2, ".bmp", "bitmaps" }, { "RT_ICON", 3, ".ico", "icons" }, { "RT_MENU", 4, ".rc", "menus" }, { "RT_DIALOG", 5, ".dlg", "dialogs" }, { "RT_STRING", 6, ".rc", "strings" }, { "RT_FONTDIR", 7, ".fnt", "fontdirs" }, { "RT_FONT", 8, ".fnt", "fonts" }, { "RT_ACCELERATOR", 9, ".rc", "accelerators" }, { "RT_RCDATA", 10, ".rc", "rcdatas" }, { "RT_MESSAGETABLE", 11, ".mc", "messagetables" }, { "RT_GROUP_CURSOR", 12, ".cur", "groupcursors" }, { "RT_GROUP_ICON", 14, ".ico", "groupicons" }, { "RT_VERSION", 16, ".rc", "versions" }, { "RT_DLGINCLUDE", 17, ".rc", "dlgincludes" }, { "RT_PLUGPLAY", 19, ".rc", "plugplays" }, { "RT_VXD", 20, ".rc", "xvds" }, { "RT_ANICURSOR", 21, ".rc", "anicursors" }, { "RT_ANIICON", 22, ".rc", "aniicons" }, { "RT_HTML", 23, ".html", "htmls" }, { "RT_MANIFEST", 24, ".xml", "manifests" }, { "RT_DLGINIT", 240, ".rc", "dlginits" }, { "RT_TOOLBAR", 241, ".rc", "toolbars" } }; const char *resourceDir = "resources"; #include "../lib/libudis86/udis86.h" #include #include #include #include typedef struct { bool all; bool extract; bool info; bool statistics; bool version; bool help; } options_t; static void usage(void) { static char formats[255]; output_available_formats(formats, sizeof(formats), '|'); printf("Usage: %s OPTIONS FILE\n" "Show information about resource section and extract it\n" "\nExample: %s -a putty.exe\n" "\nOptions:\n" " -a, --all Show all information, statistics and extract resources\n" " -f, --format <%s> change output format (default: text)\n" " -i, --info Show resources information\n" " -s, --statistics Show resources statistics\n" " -x, --extract Extract resources\n" " -v, --file-version Show File Version from PE resource directory\n" " -V, --version show version and exit\n" " --help Show this help and exit\n", PROGRAM, PROGRAM, formats); } static void free_options(options_t *options) { if (options == NULL) return; free(options); } static options_t *parse_options(int argc, char *argv[]) { options_t *options = malloc_s(sizeof(options_t)); memset(options, 0, sizeof(options_t)); /* Parameters for getopt_long() function */ static const char short_options[] = "a:f:isxvV"; static const struct option long_options[] = { { "all", required_argument, NULL, 'a' }, { "format", required_argument, NULL, 'f' }, { "info", no_argument, NULL, 'i' }, { "statistics", no_argument, NULL, 's' }, { "extract", no_argument, NULL, 'x' }, { "file-version", no_argument, NULL, 'v' }, { "version", no_argument, NULL, 'V' }, { "help", no_argument, NULL, 1 }, { NULL, 0, NULL, 0 } }; int c, ind; while ((c = getopt_long(argc, argv, short_options, long_options, &ind))) { if (c < 0) break; switch (c) { case 'a': options->all = true; break; case 'f': if (output_set_format_by_name(optarg) < 0) EXIT_ERROR("invalid format option"); break; case 'i': options->info = true; break; case 's': options->statistics = true; break; case 'x': options->extract = true; break; case 'v': options->version = true; break; case 'V': printf("%s %s\n%s\n", PROGRAM, TOOLKIT, COPY); exit(EXIT_SUCCESS); case 1: // --help option usage(); exit(EXIT_SUCCESS); default: fprintf(stderr, "%s: try '--help' for more information\n", PROGRAM); exit(EXIT_FAILURE); } } return options; } static void showNode(const NODE_PERES *node) { char value[MAX_MSG]; switch (node->nodeType) { default: output("ShowNode", "ERROR - Invalid Node Type"); break; case RDT_RESOURCE_DIRECTORY: { const IMAGE_RESOURCE_DIRECTORY * const resourceDirectory = node->resource.resourceDirectory; snprintf(value, MAX_MSG, "Resource Directory / %d", node->nodeLevel); output("\nNode Type / Level", value); snprintf(value, MAX_MSG, "%d", resourceDirectory->Characteristics); output("Characteristics", value); snprintf(value, MAX_MSG, "%d", resourceDirectory->TimeDateStamp); output("Timestamp", value); snprintf(value, MAX_MSG, "%d", resourceDirectory->MajorVersion); output("Major Version", value); snprintf(value, MAX_MSG, "%d", resourceDirectory->MinorVersion); output("Minor Version", value); snprintf(value, MAX_MSG, "%d", resourceDirectory->NumberOfNamedEntries); output("Named entries", value); snprintf(value, MAX_MSG, "%d", resourceDirectory->NumberOfIdEntries); output("Id entries", value); break; } case RDT_DIRECTORY_ENTRY: { const IMAGE_RESOURCE_DIRECTORY_ENTRY * const directoryEntry = node->resource.directoryEntry; snprintf(value, MAX_MSG, "Directory Entry / %d", node->nodeLevel); output("\nNode Type / Level", value); snprintf(value, MAX_MSG, "%d", directoryEntry->DirectoryName.name.NameOffset); output("Name offset", value); snprintf(value, MAX_MSG, "%d", directoryEntry->DirectoryName.name.NameIsString); output("Name is string", value); snprintf(value, MAX_MSG, "%x", directoryEntry->DirectoryData.data.OffsetToDirectory); output("Offset to directory", value); snprintf(value, MAX_MSG, "%d", directoryEntry->DirectoryData.data.DataIsDirectory); output("Data is directory", value); break; } case RDT_DATA_STRING: { const IMAGE_RESOURCE_DATA_STRING * const dataString = node->resource.dataString; snprintf(value, MAX_MSG, "Data String / %d", node->nodeLevel); output("\nNode Type / Level", value); snprintf(value, MAX_MSG, "%d", dataString->length); output("String len", value); snprintf(value, MAX_MSG, "%d", dataString->string[0]); output("String", value); break; } case RDT_DATA_ENTRY: { const IMAGE_RESOURCE_DATA_ENTRY * const dataEntry = node->resource.dataEntry; snprintf(value, MAX_MSG, "Data Entry / %d", node->nodeLevel); output("\nNode Type / Level", value); snprintf(value, MAX_MSG, "%x", dataEntry->offsetToData); output("OffsetToData", value); snprintf(value, MAX_MSG, "%d", dataEntry->size); output("Size", value); snprintf(value, MAX_MSG, "%d", dataEntry->codePage); output("CodePage", value); snprintf(value, MAX_MSG, "%d", dataEntry->reserved); output("Reserved", value); break; } } } static void freeNodes(NODE_PERES *currentNode) { if (currentNode == NULL) return; while (currentNode->nextNode != NULL) { currentNode = currentNode->nextNode; } while (currentNode != NULL) { if (currentNode->lastNode == NULL) { free(currentNode); break; } else { currentNode = currentNode->lastNode; if (currentNode->nextNode != NULL) free(currentNode->nextNode); } } } static NODE_PERES * createNode(NODE_PERES *currentNode, NODE_TYPE_PERES typeOfNextNode) { assert(currentNode != NULL); NODE_PERES *newNode = malloc_s(sizeof(NODE_PERES)); newNode->lastNode = currentNode; newNode->nextNode = NULL; newNode->nodeType = typeOfNextNode; currentNode->nextNode = newNode; return newNode; } static const NODE_PERES * lastNodeByType(const NODE_PERES *currentNode, NODE_TYPE_PERES nodeTypeSearch) { assert(currentNode != NULL); if (currentNode->nodeType == nodeTypeSearch) return currentNode; while (currentNode != NULL) { currentNode = currentNode->lastNode; if (currentNode != NULL && currentNode->nodeType == nodeTypeSearch) return currentNode; } return NULL; } /* static const NODE_PERES * firstNodeByType(const NODE_PERES *currentNode, NODE_TYPE_PERES nodeTypeSearch) { assert(currentNode != NULL); const NODE_PERES *firstNode = NULL; if (currentNode->nodeType == nodeTypeSearch) firstNode = currentNode; while (currentNode != NULL) { currentNode = currentNode->lastNode; if (currentNode != NULL && currentNode->nodeType == nodeTypeSearch) firstNode = currentNode; } return firstNode; } */ static const NODE_PERES * lastNodeByTypeAndLevel(const NODE_PERES *currentNode, NODE_TYPE_PERES nodeTypeSearch, NODE_LEVEL_PERES nodeLevelSearch) { assert(currentNode != NULL); if (currentNode->nodeType == nodeTypeSearch && currentNode->nodeLevel == nodeLevelSearch) return currentNode; while (currentNode != NULL) { currentNode = currentNode->lastNode; if (currentNode != NULL && currentNode->nodeType == nodeTypeSearch && currentNode->nodeLevel == nodeLevelSearch) return currentNode; } return NULL; } static const RESOURCE_ENTRY * getResourceEntryByNameOffset(uint32_t nameOffset) { for (size_t i = 0; i < LIBPE_SIZEOF_ARRAY(resource_types); i++) { if (resource_types[i].nameOffset == nameOffset) return &resource_types[i]; } return NULL; } static void saveResource(pe_ctx_t *ctx, const NODE_PERES *node) { assert(node != NULL); const NODE_PERES *dataEntryNode = lastNodeByType(node, RDT_DATA_ENTRY); if (dataEntryNode == NULL) return; const uint64_t offsetData = pe_rva2ofs(ctx, dataEntryNode->resource.dataEntry->offsetToData); const size_t dataEntrySize = dataEntryNode->resource.dataEntry->size; const char *buffer = LIBPE_PTR_ADD(ctx->map_addr, offsetData); if (!pe_can_read(ctx, buffer, dataEntrySize)) { // TODO: Should we report something? return; } struct stat statDir; if (stat(resourceDir, &statDir) == -1) mkdir(resourceDir, 0700); char dirName[100]; memset(dirName, 0, sizeof(dirName)); uint32_t nameOffset = node->rootNode->resource.directoryEntry->DirectoryName.name.NameOffset; const RESOURCE_ENTRY *resourceEntry = getResourceEntryByNameOffset(nameOffset); if (resourceEntry != NULL) { snprintf(dirName, sizeof(dirName), "%s/%s", resourceDir, resourceEntry->dirName); } else { snprintf(dirName, sizeof(dirName), "%s", resourceDir); } // TODO(jweyrich): Would it make sense to hardcode `RDT_LEVEL2` rather than use `node->nodeLevel-1` ? const NODE_PERES *nameNode = lastNodeByTypeAndLevel(node, RDT_DIRECTORY_ENTRY, node->nodeLevel - 1); //printf("%d\n", nameNode->resource.directoryEntry->DirectoryName.name.NameOffset); if (stat(dirName, &statDir) == -1) mkdir(dirName, 0700); char relativeFileName[100]; memset(relativeFileName, 0, sizeof(relativeFileName)); snprintf(relativeFileName, sizeof(relativeFileName), "%s/" "%" PRIu32 "%s", dirName, nameNode->resource.directoryEntry->DirectoryName.name.NameOffset, resourceEntry != NULL ? resourceEntry->extension : ".bin"); FILE *fp = fopen(relativeFileName, "wb+"); if (fp == NULL) { // TODO: Should we report something? return; } fwrite(buffer, dataEntrySize, 1, fp); fclose(fp); output("Save On", relativeFileName); } static void extractResources(pe_ctx_t *ctx, const NODE_PERES *node) { assert(node != NULL); int count = 0; while (node->lastNode != NULL) { node = node->lastNode; } while (node != NULL) { if (node->nodeType != RDT_DATA_ENTRY) { node = node->nextNode; continue; } count++; saveResource(ctx, node); node = node->nextNode; } } static void showVersion(pe_ctx_t *ctx, const NODE_PERES *node) { assert(node != NULL); int count = 0; const NODE_PERES *dataEntryNode; uint32_t nameOffset; bool found = false; while (node->lastNode != NULL) { node = node->lastNode; } while (node != NULL) { if (node->nodeType != RDT_DATA_ENTRY) { node = node->nextNode; continue; } count++; //if (count==19) dataEntryNode = lastNodeByType(node, RDT_DATA_ENTRY); if (dataEntryNode == NULL) return; nameOffset = node->rootNode->resource.directoryEntry->DirectoryName.name.NameOffset; if (nameOffset == 16) { found = true; break; } node = node->nextNode; } if (!found) return; const uint64_t offsetData = pe_rva2ofs(ctx, dataEntryNode->resource.dataEntry->offsetToData); const size_t dataEntrySize = dataEntryNode->resource.dataEntry->size; const char *buffer = LIBPE_PTR_ADD(ctx->map_addr, 32 + offsetData); if (!pe_can_read(ctx, buffer, dataEntrySize)) { // TODO: Should we report something? return; } VS_FIXEDFILEINFO *info = (VS_FIXEDFILEINFO *) buffer; char value[MAX_MSG]; //snprintf(value, MAX_MSG, "%d", totalCount); snprintf(value, MAX_MSG, "%u.%u.%u.%u", (unsigned int)(info->dwProductVersionMS & 0xffff0000) >> 16, (unsigned int)info->dwProductVersionMS & 0x0000ffff, (unsigned int)(info->dwProductVersionLS & 0xffff0000) >> 16, (unsigned int)info->dwProductVersionLS & 0x0000ffff); output("File Version", value); } static void showInformations(const NODE_PERES *node) { assert(node != NULL); while (node->lastNode != NULL) { node = node->lastNode; } while (node != NULL) { showNode(node); node = node->nextNode; } } static void showStatistics(const NODE_PERES *node) { while (node->lastNode != NULL) { node = node->lastNode; } int totalCount = 0; int totalResourceDirectory = 0; int totalDirectoryEntry = 0; int totalDataString = 0; int totalDataEntry = 0; while (node != NULL) { totalCount++; switch (node->nodeType) { case RDT_RESOURCE_DIRECTORY: totalResourceDirectory++; break; case RDT_DIRECTORY_ENTRY: totalDirectoryEntry++; break; case RDT_DATA_STRING: totalDataString++; break; case RDT_DATA_ENTRY: totalDataEntry++; break; } node = node->nextNode; } char value[MAX_MSG]; snprintf(value, MAX_MSG, "%d", totalCount); output("Total Structs", value); snprintf(value, MAX_MSG, "%d", totalResourceDirectory); output("Total Resource Directory", value); snprintf(value, MAX_MSG, "%d", totalDirectoryEntry); output("Total Directory Entry", value); snprintf(value, MAX_MSG, "%d", totalDataString); output("Total Data String", value); snprintf(value, MAX_MSG, "%d", totalDataEntry); output("Total Data Entry", value); } static NODE_PERES * discoveryNodesPeres(pe_ctx_t *ctx) { #ifdef LIBPE_ENABLE_OUTPUT_COMPAT_WITH_V06 typedef struct { ImageDirectoryEntry entry; const char * const name; } ImageDirectoryEntryName; static const ImageDirectoryEntryName directoryEntryNames[] = { { IMAGE_DIRECTORY_ENTRY_EXPORT, "Export Table" }, // "Export directory", { IMAGE_DIRECTORY_ENTRY_IMPORT, "Import Table" }, // "Import directory", { IMAGE_DIRECTORY_ENTRY_RESOURCE, "Resource Table" }, // "Resource directory", { IMAGE_DIRECTORY_ENTRY_EXCEPTION, "Exception Table" }, // "Exception directory", { IMAGE_DIRECTORY_ENTRY_SECURITY, "Certificate Table" }, // "Security directory", { IMAGE_DIRECTORY_ENTRY_BASERELOC, "Base Relocation Table" }, // "Base relocation table", { IMAGE_DIRECTORY_ENTRY_DEBUG, "Debug" }, // "Debug directory", { IMAGE_DIRECTORY_ENTRY_ARCHITECTURE, "Architecture" }, // "Architecture-specific data", { IMAGE_DIRECTORY_ENTRY_GLOBALPTR, "Global Ptr" }, // "Global pointer", { IMAGE_DIRECTORY_ENTRY_TLS, "Thread Local Storage (TLS)"}, // "Thread local storage (TLS) directory", { IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG, "Load Config Table" }, // "Load configuration directory", { IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT, "Bound Import" }, // "Bound import directory", { IMAGE_DIRECTORY_ENTRY_IAT, "Import Address Table (IAT)"}, // "Import address table (IAT)", { IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT, "Delay Import Descriptor" }, // "Delay import table", { IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR, "CLR Runtime Header" }, // "COM descriptor table" { IMAGE_DIRECTORY_RESERVED, "" } // "Reserved" }; //static const size_t max_directory_entry = LIBPE_SIZEOF_ARRAY(names); #endif const IMAGE_DATA_DIRECTORY * const resourceDirectory = pe_directory_by_entry(ctx, IMAGE_DIRECTORY_ENTRY_RESOURCE); if (resourceDirectory == NULL || resourceDirectory->Size == 0) return NULL; uint64_t resourceDirOffset = pe_rva2ofs(ctx, resourceDirectory->VirtualAddress); /*char s[MAX_MSG]; if (resourceDirectory->Size != 0) { snprintf(s, MAX_MSG, "%#x (%d bytes)", resourceDirectory->VirtualAddress, resourceDirectory->Size); #ifdef LIBPE_ENABLE_OUTPUT_COMPAT_WITH_V06 output(directory_names[IMAGE_DIRECTORY_ENTRY_RESOURCE], s); // Resource table #else output(pe_directory_name(IMAGE_DIRECTORY_ENTRY_RESOURCE), s); // Resource table #endif //printf("Offset by RVA: 0x%x\n\n", resourceDirOffset); }*/ uintptr_t offset = resourceDirOffset; void *ptr = LIBPE_PTR_ADD(ctx->map_addr, offset); if (!pe_can_read(ctx, ptr, sizeof(IMAGE_RESOURCE_DIRECTORY))) { // TODO: Should we report something? return NULL; } NODE_PERES *node = malloc_s(sizeof(NODE_PERES)); node->lastNode = NULL; // root node->nodeType = RDT_RESOURCE_DIRECTORY; node->nodeLevel = RDT_LEVEL1; node->resource.resourceDirectory = ptr; //showNode(node); for (int i = 1, offsetDirectory1 = 0; i <= (lastNodeByTypeAndLevel(node, RDT_RESOURCE_DIRECTORY, RDT_LEVEL1)->resource.resourceDirectory->NumberOfNamedEntries + lastNodeByTypeAndLevel(node, RDT_RESOURCE_DIRECTORY, RDT_LEVEL1)->resource.resourceDirectory->NumberOfIdEntries); i++) { offsetDirectory1 += (i == 1) ? 16 : 8; offset = resourceDirOffset + offsetDirectory1; ptr = LIBPE_PTR_ADD(ctx->map_addr, offset); if (!pe_can_read(ctx, ptr, sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY))) { // TODO: Should we report something? goto _error; } node = createNode(node, RDT_DIRECTORY_ENTRY); NODE_PERES *rootNode = node; node->rootNode = rootNode; node->nodeLevel = RDT_LEVEL1; node->resource.directoryEntry = ptr; //showNode(node); const NODE_PERES * lastDirectoryEntryNodeAtLevel1 = lastNodeByTypeAndLevel(node, RDT_DIRECTORY_ENTRY, RDT_LEVEL1); if (lastDirectoryEntryNodeAtLevel1->resource.directoryEntry->DirectoryData.data.DataIsDirectory) { offset = resourceDirOffset + lastDirectoryEntryNodeAtLevel1->resource.directoryEntry->DirectoryData.data.OffsetToDirectory; ptr = LIBPE_PTR_ADD(ctx->map_addr, offset); if (!pe_can_read(ctx, ptr, sizeof(IMAGE_RESOURCE_DIRECTORY))) { // TODO: Should we report something? goto _error; } node = createNode(node, RDT_RESOURCE_DIRECTORY); node->rootNode = (NODE_PERES *)lastDirectoryEntryNodeAtLevel1; node->nodeLevel = RDT_LEVEL2; node->resource.resourceDirectory = ptr; //showNode(node); for (int j = 1, offsetDirectory2 = 0; j <= (lastNodeByTypeAndLevel(node, RDT_RESOURCE_DIRECTORY, RDT_LEVEL2)->resource.resourceDirectory->NumberOfNamedEntries + lastNodeByTypeAndLevel(node, RDT_RESOURCE_DIRECTORY, RDT_LEVEL2)->resource.resourceDirectory->NumberOfIdEntries); j++) { offsetDirectory2 += (j == 1) ? 16 : 8; offset = resourceDirOffset + lastNodeByTypeAndLevel(node, RDT_DIRECTORY_ENTRY, RDT_LEVEL1)->resource.directoryEntry->DirectoryData.data.OffsetToDirectory + offsetDirectory2; ptr = LIBPE_PTR_ADD(ctx->map_addr, offset); if (!pe_can_read(ctx, ptr, sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY))) { // TODO: Should we report something? goto _error; } node = createNode(node, RDT_DIRECTORY_ENTRY); node->rootNode = rootNode; node->nodeLevel = RDT_LEVEL2; node->resource.directoryEntry = ptr; //showNode(node); offset = resourceDirOffset + node->resource.directoryEntry->DirectoryData.data.OffsetToDirectory; // posiciona em 0x72 ptr = LIBPE_PTR_ADD(ctx->map_addr, offset); if (!pe_can_read(ctx, ptr, sizeof(IMAGE_RESOURCE_DIRECTORY))) { // TODO: Should we report something? goto _error; } node = createNode(node, RDT_RESOURCE_DIRECTORY); node->rootNode = rootNode; node->nodeLevel = RDT_LEVEL3; node->resource.resourceDirectory = ptr; //showNode(node); offset += sizeof(IMAGE_RESOURCE_DIRECTORY); for (int y = 1; y <= (lastNodeByTypeAndLevel(node, RDT_RESOURCE_DIRECTORY, RDT_LEVEL3)->resource.resourceDirectory->NumberOfNamedEntries + lastNodeByTypeAndLevel(node, RDT_RESOURCE_DIRECTORY, RDT_LEVEL3)->resource.resourceDirectory->NumberOfIdEntries); y++) { ptr = LIBPE_PTR_ADD(ctx->map_addr, offset); if (!pe_can_read(ctx, ptr, sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY))) { // TODO: Should we report something? goto _error; } node = createNode(node, RDT_DIRECTORY_ENTRY); node->rootNode = rootNode; node->nodeLevel = RDT_LEVEL3; node->resource.directoryEntry = ptr; //showNode(node); offset = resourceDirOffset + node->resource.directoryEntry->DirectoryName.name.NameOffset; ptr = LIBPE_PTR_ADD(ctx->map_addr, offset); if (!pe_can_read(ctx, ptr, sizeof(IMAGE_RESOURCE_DATA_STRING))) { // TODO: Should we report something? goto _error; } node = createNode(node, RDT_DATA_STRING); node->rootNode = rootNode; node->nodeLevel = RDT_LEVEL3; node->resource.dataString = ptr; //showNode(node); offset = resourceDirOffset + node->lastNode->resource.directoryEntry->DirectoryData.data.OffsetToDirectory; ptr = LIBPE_PTR_ADD(ctx->map_addr, offset); if (!pe_can_read(ctx, ptr, sizeof(IMAGE_RESOURCE_DATA_ENTRY))) { // TODO: Should we report something? goto _error; } node = createNode(node, RDT_DATA_ENTRY); node->rootNode = rootNode; node->nodeLevel = RDT_LEVEL3; node->resource.dataEntry = ptr; //showNode(node); offset += sizeof(IMAGE_RESOURCE_DATA_ENTRY); } } } } return node; _error: if (node != NULL) freeNodes(node); return NULL; } int main(int argc, char **argv) { pev_config_t config; PEV_INITIALIZE(&config); if (argc < 3) { usage(); exit(EXIT_FAILURE); } output_set_cmdline(argc, argv); options_t *options = parse_options(argc, argv); // opcoes const char *path = argv[argc-1]; pe_ctx_t ctx; pe_err_e err = pe_load_file(&ctx, path); if (err != LIBPE_E_OK) { pe_error_print(stderr, err); return EXIT_FAILURE; } err = pe_parse(&ctx); if (err != LIBPE_E_OK) { pe_error_print(stderr, err); return EXIT_FAILURE; } if (!pe_is_pe(&ctx)) EXIT_ERROR("not a valid PE file"); output_open_document(); NODE_PERES *node = discoveryNodesPeres(&ctx); if (node == NULL) { fprintf(stderr, "this file has no resources\n"); return EXIT_SUCCESS; } if (options->all) { showInformations(node); showStatistics(node); extractResources(&ctx, node); showVersion(&ctx, node); } else { if (options->extract) extractResources(&ctx, node); if (options->info) showInformations(node); if (options->statistics) showStatistics(node); if (options->version) showVersion(&ctx, node); } output_close_document(); freeNodes(node); // libera a memoria free_options(options); // free err = pe_unload(&ctx); if (err != LIBPE_E_OK) { pe_error_print(stderr, err); return EXIT_FAILURE; } PEV_FINALIZE(&config); return EXIT_SUCCESS; } pev/src/Makefile0000644000175000017500000001217513034266337012632 0ustar useruser####### Platform specifics # cut is necessary for Cygwin export PLATFORM_OS := $(shell uname | cut -d_ -f1) ####### Makefile Conventions - Directory variables srcdir = . prefix = /usr/local exec_prefix = $(prefix) sysconfdir = $(prefix)/etc includedir = $(prefix)/include datarootdir = $(prefix)/share localstatedir = $(prefix)/var bindir = $(exec_prefix)/bin libdir = $(exec_prefix)/lib libexecdir = $(exec_prefix)/libexec sbindir = $(exec_prefix)/sbin datadir = $(datarootdir) docdir = $(datarootdir)/doc/pev infodir = $(datarootdir)/info localedir = $(datarootdir)/locale mandir = $(datarootdir)/man manext = .1 man1dir = $(mandir)/man1 man1ext = .1 export pluginsdir = $(DESTDIR)$(libdir)/pev/plugins ####### Makefile Conventions - Utilities export CC ?= gcc export LINK = $(CC) export CHK_DIR_EXISTS = test -d export CHK_FILE_EXISTS = test -f export INSTALL = install export INSTALL_DATA = ${INSTALL} -m 644 export INSTALL_PROGRAM = ${INSTALL} export SYMLINK = ln -sf export MKDIR = mkdir -p export RM = rm -f export RM_DIR = rm -rf ifeq ($(PLATFORM_OS), Darwin) export STRIP = strip -x else export STRIP = strip --strip-unneeded endif ####### Compiler options override LDFLAGS += -L$(LIBPE) -lpe -ldl override CFLAGS += -I$(LIBPE) -I"../include" -W -Wall -Wextra -std=c99 -pedantic override CPPFLAGS += -D_GNU_SOURCE -DSHAREDIR="\"$(SHAREDIR)"\" ifeq ($(PLATFORM_OS), Darwin) # We disable warnings for deprecated declarations since Apple deprecated OpenSSL in Mac OS X 10.7 override CFLAGS += -Wno-deprecated-declarations endif ifeq ($(PLATFORM_OS), CYGWIN) override CPPFLAGS += -D_XOPEN_SOURCE=600 endif SRC_DIRS = $(srcdir) $(srcdir)/compat $(srcdir)/../lib/libfuzzy PROGS = readpe rva2ofs ofs2rva pehash pesec pescan pepack pestr pedis peres PLUGINS_DIR = $(srcdir)/plugins SHAREDIR = $(datadir)/pev export LIBPE = $(realpath $(srcdir)/../lib/libpe) LIBUDIS86 = $(srcdir)/../lib/libudis86 LIBFUZZY = $(srcdir)/../lib/libfuzzy MANDIR = $(srcdir)/../doc/manpages export pev_BUILDDIR = ./build pev_SRCS_FILTER = $(wildcard ${dir}/*.c) pev_SRCS = $(foreach dir, ${SRC_DIRS}, ${pev_SRCS_FILTER}) pev_OBJS = $(addprefix ${pev_BUILDDIR}/, $(addsuffix .o, $(basename ${pev_SRCS}))) pev_COMMON_DEPS = \ $(pev_BUILDDIR)/compat/strlcat.o \ $(pev_BUILDDIR)/config.o \ $(pev_BUILDDIR)/dylib.o \ $(pev_BUILDDIR)/malloc_s.o \ $(pev_BUILDDIR)/utils.o \ $(pev_BUILDDIR)/plugins.o \ $(pev_BUILDDIR)/output_plugin.o \ $(pev_BUILDDIR)/output.o \ $(pev_BUILDDIR)/pev_api.o ####### Build rules .PHONY: plugins install installdirs uninstall clean all: $(PROGS) plugins plugins: cd $(PLUGINS_DIR) && $(MAKE) $@ ofs2rva: $(pev_BUILDDIR)/ofs2rva.o $(pev_OBJS) $(CC) $< -o $(pev_BUILDDIR)/$@ $(pev_COMMON_DEPS) $(LDFLAGS) pedis: CPPFLAGS += -DHAVE_STRING_H pedis: CFLAGS += -I$(LIBUDIS86) pedis: $(pev_BUILDDIR)/pedis.o $(pev_OBJS) $(CC) $< -o $(pev_BUILDDIR)/$@ $(pev_COMMON_DEPS) $(LDFLAGS) $(CFLAGS) $(CPPFLAGS) $(LIBUDIS86)/libudis86/*.c pehash: LDFLAGS += -lssl -lcrypto pehash: CFLAGS += -I$(LIBFUZZY) pehash: $(pev_BUILDDIR)/pehash.o $(pev_OBJS) $(CC) $< -o $(pev_BUILDDIR)/$@ $(pev_COMMON_DEPS) $(LDFLAGS) $(CFLAGS) $(CPPFLAGS) $(LIBFUZZY)/*.c pepack: $(pev_BUILDDIR)/pepack.o $(pev_OBJS) $(CC) $< -o $(pev_BUILDDIR)/$@ $(pev_COMMON_DEPS) $(LDFLAGS) $(CFLAGS) $(CPPFLAGS) peres: $(pev_BUILDDIR)/peres.o $(pev_OBJS) $(CC) $< -o $(pev_BUILDDIR)/$@ $(pev_COMMON_DEPS) $(LDFLAGS) $(CFLAGS) $(CPPFLAGS) pescan: LDFLAGS += -lm pescan: $(pev_BUILDDIR)/pescan.o $(pev_OBJS) $(CC) $< -o $(pev_BUILDDIR)/$@ $(pev_COMMON_DEPS) $(LDFLAGS) $(CFLAGS) $(CPPFLAGS) pesec: LDFLAGS += -lcrypto pesec: $(pev_BUILDDIR)/pesec.o $(pev_OBJS) $(CC) $< -o $(pev_BUILDDIR)/$@ $(pev_COMMON_DEPS) $(LDFLAGS) $(CFLAGS) $(CPPFLAGS) pestr: $(pev_BUILDDIR)/pestr.o $(pev_OBJS) $(CC) $< -o $(pev_BUILDDIR)/$@ $(pev_COMMON_DEPS) $(LDFLAGS) $(CFLAGS) $(CPPFLAGS) readpe: $(pev_BUILDDIR)/readpe.o $(pev_OBJS) $(CC) $< -o $(pev_BUILDDIR)/$@ $(pev_COMMON_DEPS) $(LDFLAGS) $(CFLAGS) $(CPPFLAGS) rva2ofs: $(pev_BUILDDIR)/rva2ofs.o $(pev_OBJS) $(CC) $< -o $(pev_BUILDDIR)/$@ $(pev_COMMON_DEPS) $(LDFLAGS) $(CFLAGS) $(CPPFLAGS) # Generic rule matching sources $(pev_BUILDDIR)/%.o: %.c @$(CHK_DIR_EXISTS) $(dir $@) || $(MKDIR) $(dir $@) $(CC) -c -o $@ $< $(CFLAGS) $(CPPFLAGS) $(INCPATH) install: installdirs for prog in $(PROGS); do \ $(INSTALL_PROGRAM) $(pev_BUILDDIR)/$$prog $(DESTDIR)$(bindir); \ $(CHK_FILE_EXISTS) $(MANDIR)/$$prog$(man1ext) && \ gzip -c -9 $(MANDIR)/$$prog$(man1ext) > $(DESTDIR)$(man1dir)/$$prog$(man1ext).gz || \ echo -n; \ done $(INSTALL_DATA) $(srcdir)/userdb.txt $(DESTDIR)$(SHAREDIR) cd $(PLUGINS_DIR) && $(MAKE) $@ installdirs: @$(CHK_DIR_EXISTS) $(DESTDIR) || $(MKDIR) $(DESTDIR) @$(CHK_DIR_EXISTS) $(DESTDIR)$(bindir) || $(MKDIR) $(DESTDIR)$(bindir) @$(CHK_DIR_EXISTS) $(DESTDIR)$(man1dir) || $(MKDIR) $(DESTDIR)$(man1dir) @$(CHK_DIR_EXISTS) $(DESTDIR)$(SHAREDIR) || $(MKDIR) $(DESTDIR)$(SHAREDIR) uninstall: for prog in $(PROGS); do \ $(RM) $(DESTDIR)$(bindir)/$$prog; \ $(RM) $(DESTDIR)$(man1dir)/$$prog$(man1ext).gz; \ done $(RM_DIR) $(DESTDIR)$(SHAREDIR) cd $(PLUGINS_DIR) && $(MAKE) $@ clean: $(RM_DIR) $(pev_BUILDDIR) $(RM) $(PROGS) cd $(PLUGINS_DIR) && $(MAKE) $@ pev/src/dylib.c0000644000175000017500000000660313034014706012427 0ustar useruser/* The MIT License (MIT) Copyright (c) 2013, Jardel Weyrich Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #include "dylib.h" #include "common.h" #include #include #include inline const char *dylib_error(dylib_t *lib) { UNUSED(lib); return dlerror(); } int dylib_load(dylib_t *lib, const char *path) { if (lib->loaded) { fprintf(stderr, "Can't load library because it's already loaded: %s\n", lib->path); return -1; } lib->handle = dlopen(path, RTLD_LAZY | RTLD_GLOBAL); lib->loaded = lib->handle != NULL; if (!lib->loaded) { fprintf(stderr, "Failed to load library %s: %s\n", path, dylib_error(lib)); return -1; } lib->path = strdup(path); return 0; } int dylib_unload(dylib_t *lib) { int ret; if (!lib->loaded || lib->handle == NULL) { fprintf(stderr, "Can't unload library '%s' because it's not loaded\n", lib->path); return -1; } ret = dlclose(lib->handle); if (ret != 0) { fprintf(stderr, "Failed to unload library %s: %s\n", lib->path, dylib_error(lib)); return -1; } lib->handle = NULL; free(lib->path); lib->path = NULL; lib->loaded = 0; return 0; } void *dylib_get_symbol(dylib_t *lib, const char *symbol) { void *addr = dlsym(lib->handle, symbol); if (addr == NULL) { fprintf(stderr, "Symbol '%s' not found in '%s': %s\n", symbol, lib->path, dylib_error(lib)); } return addr; } int dylib_has_symbol(dylib_t *lib, const char *symbol) { void *addr = dlsym(lib->handle, symbol); return addr != NULL; } pev/src/plugins/0000755000175000017500000000000013034014706012634 5ustar useruserpev/src/plugins/Makefile0000644000175000017500000000504513034014706014300 0ustar useruser####### Compiler options override CFLAGS += -I$(LIBPE) -I"../../include" -W -Wall -Wextra -std=c99 -pedantic -fPIC override CPPFLAGS += -D_GNU_SOURCE PLUGINS = csv html text xml json VERSION = 1.0 plugins_BUILDDIR = ../$(pev_BUILDDIR)/plugins csv_srcdir = $(CURDIR) csv_SRCS = csv.c csv_OBJS = $(addprefix ${plugins_BUILDDIR}/, $(addsuffix .o, $(basename ${csv_SRCS}))) csv_LIBNAME = csv_plugin html_srcdir = $(CURDIR) html_SRCS = html.c html_OBJS = $(addprefix ${plugins_BUILDDIR}/, $(addsuffix .o, $(basename ${html_SRCS}))) html_LIBNAME = html_plugin text_srcdir = $(CURDIR) text_SRCS = text.c text_OBJS = $(addprefix ${plugins_BUILDDIR}/, $(addsuffix .o, $(basename ${text_SRCS}))) text_LIBNAME = text_plugin xml_srcdir = $(CURDIR) xml_SRCS = xml.c xml_OBJS = $(addprefix ${plugins_BUILDDIR}/, $(addsuffix .o, $(basename ${xml_SRCS}))) xml_LIBNAME = xml_plugin json_srcdir = $(CURDIR) json_SRCS = json.c json_OBJS = $(addprefix ${plugins_BUILDDIR}/, $(addsuffix .o, $(basename ${json_SRCS}))) json_LIBNAME = json_plugin ####### Build rules .PHONY: plugins plugins: $(PLUGINS) csv: LIBNAME = $(csv_LIBNAME) csv: $(csv_OBJS) html: LIBNAME = $(html_LIBNAME) html: $(html_OBJS) text: LIBNAME = $(text_LIBNAME) text: $(text_OBJS) xml: LIBNAME = $(xml_LIBNAME) xml: $(xml_OBJS) json: LIBNAME = $(json_LIBNAME) json: $(json_OBJS) $(PLUGINS): ifeq ($(PLATFORM_OS), Linux) $(LINK) -shared -Wl,-soname,$(LIBNAME).so.1 $(LDFLAGS) -o ${plugins_BUILDDIR}/$(LIBNAME).so $^ else ifeq ($(PLATFORM_OS), Darwin) $(LINK) -headerpad_max_install_names -dynamiclib \ -undefined dynamic_lookup -fno-common \ -flat_namespace -install_name $(LIBNAME).$(VERSION).dylib \ -current_version $(VERSION) -compatibility_version $(VERSION) \ $(LDFLAGS) -o ${plugins_BUILDDIR}/$(LIBNAME).dylib $^ else ifeq ($(PLATFORM_OS), CYGWIN) $(LINK) -shared $(LDFLAGS) -o ${plugins_BUILDDIR}/$(LIBNAME).dll $^ endif $(plugins_BUILDDIR)/%.o: %.c @$(CHK_DIR_EXISTS) $(dir $@) || $(MKDIR) $(dir $@) $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $^ clean: $(RM_DIR) ${plugins_BUILDDIR} ### install: installdirs $(INSTALL_PROGRAM) -m 755 $(plugins_BUILDDIR)/$(csv_LIBNAME).* $(pluginsdir) $(INSTALL_PROGRAM) -m 755 $(plugins_BUILDDIR)/$(html_LIBNAME).* $(pluginsdir) $(INSTALL_PROGRAM) -m 755 $(plugins_BUILDDIR)/$(text_LIBNAME).* $(pluginsdir) $(INSTALL_PROGRAM) -m 755 $(plugins_BUILDDIR)/$(xml_LIBNAME).* $(pluginsdir) $(INSTALL_PROGRAM) -m 755 $(plugins_BUILDDIR)/$(json_LIBNAME).* $(pluginsdir) installdirs: @$(CHK_DIR_EXISTS) $(pluginsdir) || $(MKDIR) $(pluginsdir) uninstall: $(RM_DIR) $(pluginsdir) pev/src/plugins/text.c0000644000175000017500000000761713034014706013777 0ustar useruser/* pev - the PE file analyzer toolkit text.c - Principal implementation file for the TEXT output plugin Copyright (C) 2012 - 2014 pev authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #include #include #include #include "pev_api.h" #include "output_plugin.h" const pev_api_t *g_pev_api = NULL; static char *escape_text(const format_t *format, const char *str) { return g_pev_api->output->escape(format, str); } #define SPACES 32 // spaces # for text-based output static void to_format( const format_t *format, const output_type_e type, const output_scope_t *scope, const char *key, const char *value) { static int indent = 0; char * const escaped_key = format->escape_fn(format, key); char * const escaped_value = format->escape_fn(format, value); switch (type) { default: break; case OUTPUT_TYPE_SCOPE_OPEN: switch (scope->type) { default: break; case OUTPUT_SCOPE_TYPE_DOCUMENT: break; case OUTPUT_SCOPE_TYPE_OBJECT: if (key) { printf(INDENT(indent++, "%s\n"), escaped_key); } else { indent++; } break; case OUTPUT_SCOPE_TYPE_ARRAY: //putchar('\n'); if (key) { printf(INDENT(indent++, "%s\n"), escaped_key); } else { indent++; } break; } break; case OUTPUT_TYPE_SCOPE_CLOSE: indent--; break; case OUTPUT_TYPE_ATTRIBUTE: { const size_t key_size = key ? strlen(key) : 0; if (key && value) { printf(INDENT(indent, "%s:%*c%s\n"), escaped_key, (int)(SPACES - key_size), ' ', escaped_value); } else if (key) { printf(INDENT(indent, "%s\n"), escaped_key); } else if (value) { printf(INDENT(indent, "%*c%s\n"), (int)(SPACES - key_size + 1), ' ', escaped_value); } break; } } if (escaped_key != NULL) free(escaped_key); if (escaped_value != NULL) free(escaped_value); } // ---------------------------------------------------------------------------- #define FORMAT_ID 3 #define FORMAT_NAME "text" static const format_t g_format = { FORMAT_ID, FORMAT_NAME, &to_format, &escape_text, NULL }; #define PLUGIN_TYPE "output" #define PLUGIN_NAME FORMAT_NAME int plugin_loaded(void) { //printf("Loading %s plugin %s\n", PLUGIN_TYPE, PLUGIN_NAME); return 0; } void plugin_unloaded(void) { //printf("Unloading %s plugin %s\n", PLUGIN_TYPE, PLUGIN_NAME); } int plugin_initialize(const pev_api_t *api) { g_pev_api = api; int ret = g_pev_api->output->output_plugin_register_format(&g_format); if (ret < 0) return -1; return 0; } void plugin_shutdown(void) { g_pev_api->output->output_plugin_unregister_format(&g_format); } pev/src/plugins/csv.c0000644000175000017500000001414013034014706013573 0ustar useruser/* pev - the PE file analyzer toolkit csv.c - Principal implementation file for the CSV output plugin Copyright (C) 2012 - 2014 pev authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #include #include #include #include "pev_api.h" #include "output_plugin.h" const pev_api_t *g_pev_api = NULL; // REFERENCE: http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references // CSV entities ',', '"', '\n' static const entity_t g_entities[255] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "\\n", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "\"\"", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, }; static char *escape_csv(const format_t *format, const char *str) { if (str == NULL) return NULL; // If `str` contains a line-break, or a double-quote, or a comma, // escape and enclose the entire `str` with double quotes. return strpbrk(str, "\n\",") != NULL ? g_pev_api->output->escape_ex_quoted(str, format->entities_table) : g_pev_api->output->escape_ex(str, format->entities_table); } // // The CSV output encloses fields with double quotes if they contain // any of the following characters: // // a) line-break; // b) double-quote; // c) comma; // // Apart from the enclosing, any double-quote character found is escaped // to 2 double-quote characters. // // KNOWN BUG: // // Our CSV output still doesn't follow the following rule: // > Each record "should" contain the same number of comma-separated // > fields. // // REFERENCE: http://en.wikipedia.org/wiki/Comma-separated_values // static void to_format( const format_t *format, const output_type_e type, const output_scope_t *scope, const char *key, const char *value) { char * const escaped_key = format->escape_fn(format, key); char * const escaped_value = format->escape_fn(format, value); switch (type) { default: break; case OUTPUT_TYPE_SCOPE_OPEN: switch (scope->type) { default: break; case OUTPUT_SCOPE_TYPE_DOCUMENT: break; case OUTPUT_SCOPE_TYPE_OBJECT: case OUTPUT_SCOPE_TYPE_ARRAY: printf("\n%s\n", escaped_key); break; } break; case OUTPUT_TYPE_SCOPE_CLOSE: switch (scope->type) { default: break; case OUTPUT_SCOPE_TYPE_DOCUMENT: break; case OUTPUT_SCOPE_TYPE_OBJECT: case OUTPUT_SCOPE_TYPE_ARRAY: printf("\n"); break; } break; case OUTPUT_TYPE_ATTRIBUTE: if (key && value) printf("%s,%s\n", escaped_key, escaped_value); else if (key) printf("\n%s\n", escaped_key); else if (value) printf(",%s\n", escaped_value); break; } if (escaped_key != NULL) free(escaped_key); if (escaped_value != NULL) free(escaped_value); } // ---------------------------------------------------------------------------- #define FORMAT_ID 1 #define FORMAT_NAME "csv" static const format_t g_format = { FORMAT_ID, FORMAT_NAME, &to_format, &escape_csv, (entity_table_t)g_entities }; #define PLUGIN_TYPE "output" #define PLUGIN_NAME FORMAT_NAME int plugin_loaded(void) { //printf("Loading %s plugin %s\n", PLUGIN_TYPE, PLUGIN_NAME); return 0; } void plugin_unloaded(void) { //printf("Unloading %s plugin %s\n", PLUGIN_TYPE, PLUGIN_NAME); } int plugin_initialize(const pev_api_t *api) { g_pev_api = api; int ret = g_pev_api->output->output_plugin_register_format(&g_format); if (ret < 0) return -1; return 0; } void plugin_shutdown(void) { g_pev_api->output->output_plugin_unregister_format(&g_format); } pev/src/plugins/json.c0000644000175000017500000001170713034014706013757 0ustar useruser/* pev - the PE file analyzer toolkit json.c - Principal implementation file for the JSON output plugin Copyright (C) 2012 - 2014 pev authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #include #include #include #include #include "pev_api.h" #include "output_plugin.h" const pev_api_t *g_pev_api = NULL; static char *escape_json(const format_t *format, const char *str) { return g_pev_api->output->escape(format, str); } static void to_format( const format_t *format, const output_type_e type, const output_scope_t *scope, const char *key, const char *value) { static int indent = 0; static int num_attr = 0; char * const escaped_key = format->escape_fn(format, key); char * const escaped_value = format->escape_fn(format, value); const bool is_within_array = scope->parent_type == OUTPUT_SCOPE_TYPE_ARRAY; switch (type) { default: break; case OUTPUT_TYPE_SCOPE_OPEN: switch (scope->type) { default: break; case OUTPUT_SCOPE_TYPE_DOCUMENT: printf(INDENT(indent++, "{")); num_attr = 0; break; case OUTPUT_SCOPE_TYPE_OBJECT: // Already printed an attribute in the same scope? if (num_attr > 0) putchar(','); putchar('\n'); // NOTE: We don't want duplicate keys inside the array. if (key && !is_within_array) printf(INDENT(indent++, "\"%s\": {"), escaped_key); else printf(INDENT(indent++, "{")); num_attr = 0; break; case OUTPUT_SCOPE_TYPE_ARRAY: // Already printed an attribute in the same scope? if (num_attr > 0) putchar(','); putchar('\n'); // NOTE: We don't want duplicate keys inside the array. if (key && !is_within_array) printf(INDENT(indent++, "\"%s\": ["), escaped_key); else printf(INDENT(indent++, "[")); num_attr = 0; break; } break; case OUTPUT_TYPE_SCOPE_CLOSE: if (indent <= 0) { fprintf(stderr, "json: programming error? indent is <= 0"); abort(); } putchar('\n'); switch (scope->type) { default: break; case OUTPUT_SCOPE_TYPE_DOCUMENT: printf(INDENT(--indent, "}")); break; case OUTPUT_SCOPE_TYPE_OBJECT: printf(INDENT(--indent, "}")); break; case OUTPUT_SCOPE_TYPE_ARRAY: printf(INDENT(--indent, "]")); break; } // Increment the number of attributes because this scope is itself an // attribute. num_attr++; break; case OUTPUT_TYPE_ATTRIBUTE: // Already printed an attribute in the same scope? if (num_attr > 0) putchar(','); putchar('\n'); if (key && value) printf(INDENT(indent, "\"%s\": \"%s\""), escaped_key, escaped_value); else if (key) printf(INDENT(indent, "\"%s\""), escaped_key); else if (value) printf(INDENT(indent, "\"%s\""), escaped_value); num_attr++; break; } if (escaped_key != NULL) free(escaped_key); if (escaped_value != NULL) free(escaped_value); } // ---------------------------------------------------------------------------- #define FORMAT_ID 6 #define FORMAT_NAME "json" static const format_t g_format = { FORMAT_ID, FORMAT_NAME, &to_format, &escape_json, NULL }; #define PLUGIN_TYPE "output" #define PLUGIN_NAME FORMAT_NAME int plugin_loaded(void) { //printf("Loading %s plugin %s\n", PLUGIN_TYPE, PLUGIN_NAME); return 0; } void plugin_unloaded(void) { //printf("Unloading %s plugin %s\n", PLUGIN_TYPE, PLUGIN_NAME); } int plugin_initialize(const pev_api_t *api) { g_pev_api = api; int ret = g_pev_api->output->output_plugin_register_format(&g_format); if (ret < 0) return -1; return 0; } void plugin_shutdown(void) { g_pev_api->output->output_plugin_unregister_format(&g_format); } pev/src/plugins/xml.c0000644000175000017500000001466313034014706013612 0ustar useruser/* pev - the PE file analyzer toolkit xml.c - Principal implementation file for the XML output plugin Copyright (C) 2012 - 2014 pev authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #include #include #include "pev_api.h" #include "output_plugin.h" const pev_api_t *g_pev_api = NULL; // REFERENCE: http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references // XML entities '"', '&', '\'', '<', '>' static const entity_t g_entities[255] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, """,NULL, NULL, NULL, "&","'", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "<", NULL, ">", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, }; static char *escape_xml(const format_t *format, const char *str) { return g_pev_api->output->escape(format, str); } #define TEMPLATE_DOCUMENT_OPEN \ "\n" #define TEMPLATE_DOCUMENT_CLOSE \ "\n" static void to_format( const format_t *format, const output_type_e type, const output_scope_t *scope, const char *key, const char *value) { static int indent = 0; // FIXME(jweyrich): Somehow output the XML root element. char * const escaped_key = format->escape_fn(format, key); char * const escaped_value = format->escape_fn(format, value); // // Quoting http://www.w3schools.com/xml/xml_elements.asp // // XML Naming Rules // XML elements must follow these naming rules: // Names can contain letters, numbers, and other characters // Names cannot start with a number or punctuation character // Names cannot start with the letters xml (or XML, or Xml, etc) // Names cannot contain spaces // switch (type) { default: break; case OUTPUT_TYPE_SCOPE_OPEN: switch (scope->type) { default: break; case OUTPUT_SCOPE_TYPE_DOCUMENT: printf(TEMPLATE_DOCUMENT_OPEN, g_pev_api->output->output_cmdline()); indent++; break; case OUTPUT_SCOPE_TYPE_OBJECT: printf(INDENT(indent++, "\n"), escaped_key); break; case OUTPUT_SCOPE_TYPE_ARRAY: printf(INDENT(indent++, "\n"), escaped_key); break; } break; case OUTPUT_TYPE_SCOPE_CLOSE: if (indent <= 0) { fprintf(stderr, "xml: programming error? indent is <= 0"); abort(); } switch (scope->type) { default: break; case OUTPUT_SCOPE_TYPE_DOCUMENT: printf(TEMPLATE_DOCUMENT_CLOSE); break; case OUTPUT_SCOPE_TYPE_OBJECT: printf(INDENT(--indent, "\n")); break; case OUTPUT_SCOPE_TYPE_ARRAY: printf(INDENT(--indent, "\n")); break; } break; case OUTPUT_TYPE_ATTRIBUTE: if (key && value) { printf(INDENT(indent, "%s\n"), escaped_key, escaped_value); } else if (key) { printf(INDENT(indent, "\n"), escaped_key); } else if (value) { printf(INDENT(indent, "%s\n"), value); } break; } if (escaped_key != NULL) free(escaped_key); if (escaped_value != NULL) free(escaped_value); } // ---------------------------------------------------------------------------- #define FORMAT_ID 4 #define FORMAT_NAME "xml" static const format_t g_format = { FORMAT_ID, FORMAT_NAME, &to_format, &escape_xml, (entity_table_t)g_entities }; #define PLUGIN_TYPE "output" #define PLUGIN_NAME FORMAT_NAME int plugin_loaded(void) { //printf("Loading %s plugin %s\n", PLUGIN_TYPE, PLUGIN_NAME); return 0; } void plugin_unloaded(void) { //printf("Unloading %s plugin %s\n", PLUGIN_TYPE, PLUGIN_NAME); } int plugin_initialize(const pev_api_t *api) { g_pev_api = api; int ret = g_pev_api->output->output_plugin_register_format(&g_format); if (ret < 0) return -1; return 0; } void plugin_shutdown(void) { g_pev_api->output->output_plugin_unregister_format(&g_format); } pev/src/plugins/html.c0000644000175000017500000001620213034014706013745 0ustar useruser/* pev - the PE file analyzer toolkit html.c - Principal implementation file for the HTML output plugin Copyright (C) 2012 - 2014 pev authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #include #include #include #include "pev_api.h" #include "output_plugin.h" const pev_api_t *g_pev_api = NULL; // REFERENCE: http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references // HTML entities '"', '&', '\'', '<', '>', ... static const entity_t g_entities[255] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, """,NULL, NULL, NULL, "&","'", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "<", NULL, ">", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, }; static char *escape_html(const format_t *format, const char *str) { return g_pev_api->output->escape(format, str); } #define TEMPLATE_DOCUMENT_OPEN \ "\n" \ "\n" \ "\n" \ " \n" \ " %s\n" \ "\n" \ "\n" #define TEMPLATE_DOCUMENT_CLOSE \ "\n" \ "\n" static void to_format( const format_t *format, const output_type_e type, const output_scope_t *scope, const char *key, const char *value) { static int indent = 0; char * const escaped_key = format->escape_fn(format, key); char * const escaped_value = format->escape_fn(format, value); const bool is_within_array = scope->parent_type == OUTPUT_SCOPE_TYPE_ARRAY; switch (type) { default: break; case OUTPUT_TYPE_SCOPE_OPEN: { // NOTE: HTML doesn't allow `div` inside `ul`. If we're inside a `ul`, it // means the parent is an array, so we can safely replace `div` by `li`. const char * wrap_el = is_within_array ? "li" : "div"; switch (scope->type) { default: break; case OUTPUT_SCOPE_TYPE_DOCUMENT: printf(TEMPLATE_DOCUMENT_OPEN, g_pev_api->output->output_cmdline()); indent++; break; case OUTPUT_SCOPE_TYPE_OBJECT: printf(INDENT(indent++, "<%s class=\"object\">\n"), wrap_el); printf(INDENT(indent, "

%s

\n"), escaped_key); break; case OUTPUT_SCOPE_TYPE_ARRAY: printf(INDENT(indent++, "<%s class=\"array\">\n"), wrap_el); printf(INDENT(indent, "

%s

\n"), escaped_key); printf(INDENT(indent++, "
    \n")); break; } break; } case OUTPUT_TYPE_SCOPE_CLOSE: { if (indent <= 0) { fprintf(stderr, "html: programming error? indent is <= 0"); abort(); } // NOTE: HTML doesn't allow `div` inside `ul`. If we're inside a `ul`, it // means the parent is an array, so we can safely replace `div` by `li`. const char * wrap_el = is_within_array ? "li" : "div"; switch (scope->type) { default: break; case OUTPUT_SCOPE_TYPE_DOCUMENT: printf(TEMPLATE_DOCUMENT_CLOSE); break; case OUTPUT_SCOPE_TYPE_OBJECT: printf(INDENT(--indent, "\n"), wrap_el); break; case OUTPUT_SCOPE_TYPE_ARRAY: printf(INDENT(--indent, "
\n")); printf(INDENT(--indent, "\n"), wrap_el); break; } break; } case OUTPUT_TYPE_ATTRIBUTE: { const char * wrap_el = scope->type == OUTPUT_SCOPE_TYPE_ARRAY ? "li" : "p"; if (key && value) { printf(INDENT(indent, "<%s>%s: %s\n"), wrap_el, escaped_key, escaped_value, wrap_el); } else if (key) { putchar('\n'); printf(INDENT(indent, "<%s>%s\n"), wrap_el, escaped_key, wrap_el); } else if (value) { printf(INDENT(indent, "<%s>%s\n"), wrap_el, escaped_value, wrap_el); } break; } } if (escaped_key != NULL) free(escaped_key); if (escaped_value != NULL) free(escaped_value); } // ---------------------------------------------------------------------------- #define FORMAT_ID 2 #define FORMAT_NAME "html" static const format_t g_format = { FORMAT_ID, FORMAT_NAME, &to_format, &escape_html, (entity_table_t)g_entities }; #define PLUGIN_TYPE "output" #define PLUGIN_NAME FORMAT_NAME int plugin_loaded(void) { //printf("Loading %s plugin %s\n", PLUGIN_TYPE, PLUGIN_NAME); return 0; } void plugin_unloaded(void) { //printf("Unloading %s plugin %s\n", PLUGIN_TYPE, PLUGIN_NAME); } int plugin_initialize(const pev_api_t *api) { g_pev_api = api; int ret = g_pev_api->output->output_plugin_register_format(&g_format); if (ret < 0) return -1; return 0; } void plugin_shutdown(void) { g_pev_api->output->output_plugin_unregister_format(&g_format); } pev/src/windows/0000755000175000017500000000000013034014706012645 5ustar useruserpev/src/windows/Makefile0000644000175000017500000000023313034014706014303 0ustar useruserCFLAGS = -W -Wall -Wextra -std=c99 -pedantic pev_BUILDDIR = ../build/ all: cc $(CFLAGS) -o $(pev_BUILDDIR)/cpload.exe cpload.c clean: rm -f cpload.exe pev/src/windows/run.bat0000755000175000017500000000023213034014706014141 0ustar useruser@echo off set CYGWIN=nodosfilewarning echo Welcome to pev - the PE file analysis toolkit! echo. echo Available tools: echo. dir /b *.exe cmd /k rempev/src/windows/cpload.c0000644000175000017500000001015213034014706014252 0ustar useruser/* pev - the PE file analyzer toolkit cpload.c - CPL file loader Copyright (C) 2013 - 2014 pev authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #include #include #include typedef int (*cplapplet) (void*,int,void*,void*); int main(int argc, char* argv[]) { cplapplet _cplapplet; HINSTANCE dll; char* filename; CPLINFO cplinfo; NEWCPLINFO newcplinfo; char *msg; char* msgs[] = { "null", "init", "getcount", "inquire", "select", "dblclk", "stop", "exit", "newinquire", "null", "startwparms", "setup" }; if (argc == 2) filename = argv[1]; // cpload file.cpl else if (argc == 4) filename = argv[3]; // cpload -m MESSAGE file.cpl else { printf( "\nUsage:\n\tcpload [-m MESSAGE] \n\n" "If -m is present, MESSAGE should be:\n\n" "\tOption\t\tMessage\n" "\t------------------------------\n" "\tinit\t\tCPL_INIT\n" "\tgetcount\tCPL_GETCOUNT\n" "\tinquire\t\tCPL_INQUIRE\n" "\tselect\t\tCPL_SELECT\n" "\tdblclk\t\tCPL_DBLCLK\n" "\tstop\t\tCPL_STOP\n" "\texit\t\tCPL_EXIT\n" "\tnewinquire\tCPL_NEWINQUIRE\n" "\tstartwparms\tCPL_STARTWPARMS\n" "\tsetup\t\tCPL_SETUP\n" "\nOtherwise, cpload will send all messages to CPlApplet()\n" ); return 1; } printf("loading library...\n"); if (IsDebuggerPresent()) __asm__("int $3"); if (NULL == (dll = LoadLibrary(filename))) { fprintf(stderr, "file not found or not a valid CPL\n"); return 1; } printf("looking for CPlApplet()...\n"); _cplapplet = (cplapplet) GetProcAddress(dll, "CPlApplet"); if (!_cplapplet) { fprintf(stderr, "CPlApplet function not found. Aborting...\n"); return 1; } if (argc == 4) { msg = argv[2]; for (int i=1; i<=11; i++) { if (i==9) continue; if (!strncmp(msg, msgs[i], strlen(msgs[i]))) { if (IsDebuggerPresent()) __asm__("int $3"); printf("sending %s message...\n", msgs[i]); if (i == CPL_INQUIRE) _cplapplet(NULL, CPL_INQUIRE, 0, &cplinfo); // lParam1 is applet # - lParam2 is ptr to CPLINFO struct else if (i == CPL_NEWINQUIRE) _cplapplet(NULL, CPL_NEWINQUIRE, 0, &newcplinfo); else _cplapplet(NULL, i, NULL, NULL); break; } } } else // send all messages { if (IsDebuggerPresent()) __asm__("int $3"); _cplapplet(NULL, CPL_INIT, NULL, NULL); _cplapplet(NULL, CPL_GETCOUNT, NULL, NULL); _cplapplet(NULL, CPL_INQUIRE, 0, &cplinfo); // lParam1 is applet # - lParam2 is ptr to CPLINFO struct _cplapplet(NULL, CPL_SELECT, NULL, NULL); _cplapplet(NULL, CPL_DBLCLK, NULL, NULL); _cplapplet(NULL, CPL_STOP, NULL, NULL); _cplapplet(NULL, CPL_EXIT, NULL, NULL); _cplapplet(NULL, CPL_NEWINQUIRE, 0, &newcplinfo); _cplapplet(NULL, CPL_STARTWPARMS, NULL, NULL); _cplapplet(NULL, CPL_SETUP, NULL, NULL); } FreeLibrary(dll); return 0; } pev/src/compat/0000755000175000017500000000000013034014706012436 5ustar useruserpev/src/compat/strlcat.c0000644000175000017500000000323413034014706014260 0ustar useruser/* $OpenBSD: strlcat.c,v 1.13 2005/08/08 08:05:37 espie Exp $ */ /* * Copyright (c) 1998 Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include "compat/strlcat.h" #include /* * Appends src to string dst of size siz (unlike strncat, siz is the * full size of dst, not space left). At most siz-1 characters * will be copied. Always NUL terminates (unless siz <= strlen(dst)). * Returns strlen(src) + MIN(siz, strlen(initial dst)). * If retval >= siz, truncation occurred. */ size_t bsd_strlcat(char *dst, const char *src, size_t siz) { char *d = dst; const char *s = src; size_t n = siz; size_t dlen; /* Find the end of dst and adjust bytes left but don't go past end */ while (n-- != 0 && *d != '\0') d++; dlen = d - dst; n = siz - dlen; if (n == 0) return(dlen + strlen(s)); while (*s != '\0') { if (n != 1) { *d++ = *s; n--; } s++; } *d = '\0'; return(dlen + (s - src)); /* count does not include NUL */ } pev/src/lib/0000755000175000017500000000000013034016314011716 5ustar useruserpev/src/lib/libfuzzy/0000755000175000017500000000000013034016314013574 5ustar useruserpev/src/lib/libfuzzy/fuzzy.o0000644000175000017500000003141013034016314015142 0ustar useruserELF>ˆ/@@ UH‰åHƒìH‰}øH‹Eøº¾H‰ÇèÉÃUH‰åH‰}ø‰ðˆEôH‹Eø‹P H‹Eø‹@)ÂH‹Eø‰P H‹Eø‹H ¶Uô‰ÐÁà)ÐH‹Eø‰P H‹Eø‹P¶EôÂH‹Eø‰PH‹Eø‹pH‹Eø‹Hº%I’$‰È÷â‰È)ÐÑèÐÁè‰ÂÁâ)‰È)ÐH‹Uø‰À¶¶À)ƉòH‹Eø‰PH‹Eø‹Hº%I’$‰È÷â‰È)ÐÑèÐÁè‰ÂÁâ)‰È)ÐH‹Uø‰Á¶Eôˆ H‹Eø‹@PH‹Eø‰PH‹Eø‹@Áà‰ÂH‹Eø‰PH‹Eø‹P¶Eô1ÂH‹Eø‰P]ÃUH‰åH‰}øH‹Eø‹PH‹Eø‹@ ÂH‹Eø‹@Ð]ÃUH‰å‰ø‰uøˆEü‹EøiГ¶Eü1Ð]ÃUH‰åHƒì¿` èH‰EøHƒ}øu¸ë[H‹EøÇH‹EøÇ@H‹EøÇ@g(H‹EøÇ@ g(H‹EøÇ@PH‹EøHÇ€@ H‹EøHH H‰ÇèþÿÿH‹EøÉÃUH‰åHƒì H‰}èH‹Eè‹@ƒøvé•H‹Eè‹@…Àu¹º“¾¿èH‹Eè‹@ƒè‰ÂH‰ÐHÁàHÐHÀHÐHÁàH‹UèHÐHƒÀH‰EøH‹EøHƒÀLH‰EðH‹Eø‹H‹Eð‰H‹Eø‹PH‹Eð‰PH‹EðÇ@HH‹Eè‹@PH‹Eè‰PÉÃUH‰åHƒìH‰}øH‹Eø‹H‹Eø‹@9Âr¹ºž¾¿èH‹Eø‹PH‹Eø‹)‰ЃøwëoH‹Eø‹º‰ÁÓâ‰Ð‰ÀHÁàH‰ÂH‹EøH‹€@ H9ÂrëCH‹Eø‹ƒÀH‹Mø‰ÂH‰ÐHÁàHÐHÀHÐHÁàHƒÀ@HÈ‹@ƒøwëH‹Eø‹PH‹Eø‰ÉÃUH‰åHƒì H‰}è‰ðˆEä¶EäH‹UèHÂH ‰ÆH‰×èœüÿÿH‹EèHH H‰Çèýÿÿ‰ÀH‰EðH‹E苉Eüé¦H‹Mè‹UüH‰ÐHÁàHÐHÀHÐHÁàHÈ‹P¶Eä‰Ö‰Çèqýÿÿ‰ÆH‹Mè‹UüH‰ÐHÁàHÐHÀHÐHÁàHȉpH‹Mè‹UüH‰ÐHÁàHÐHÀHÐHÁàHÈ‹P ¶Eä‰Ö‰Çè ýÿÿ‰ÆH‹Mè‹UüH‰ÐHÁàHÐHÀHÐHÁàHȉp ƒEüH‹Eè‹@;Eü‡JÿÿÿH‹E苉EüéÛ‹Eüº‰ÁÓâ‰Ð‰ÁH‹EðºH÷ñ‹Eü¾‰ÁÓæ‰ðƒè‰ÀH9•À¶ÀH…Àté©H‹Mè‹UüH‰ÐHÁàHÐHÀHÐHÁàHƒÀ@HÈ‹@…À”À¶ÀH…Àt H‹EèH‰ÇèùüÿÿH‹Mè‹UüH‰ÐHÁàHÐHÀHÐHÁàHƒÀ@HÈ‹@ƒø>‡H‹Mè‹UüH‰ÐHÁàHÐHÀHÐHÁàHƒÀ@HÈ‹HqH‹}è‹UüH‰ÐHÁàHÐHÀHÐHÁàHƒÀ@Hø‰pH‹5H‹}è‹UüH‰ÐHÁàHÐHÀHÐHÁàHø‹@‰Àƒà?Hð¶0H‹}è‰É‹UüH‰ÐHÁàHÐHÀHÐHÁàHÈHø@ˆpH‹Mè‹UüH‰ÐHÁàHÐHÀHÐHÁàHÈÇ@g(H‹Mè‹UüH‰ÐHÁàHÐHÀHÐHÁàHƒÀ@HÈ‹@ƒøw3H‹Mè‹UüH‰ÐHÁàHÐHÀHÐHÁàHÈÇ@ g(ë H‹EèH‰ÇèVüÿÿƒEüH‹Eè‹@;Eü‡þÿÿÉÃUH‰åHƒì H‰}øH‰uðH‰UèH‹EøH‹@ H‹EèHÂH‹EøH‰@ ë"H‹Eð¶¶ÐH‹Eø‰ÖH‰Çè´üÿÿHƒEðHƒmèHƒ}èu׸ÉÃUH‰åHƒì0H‰}èH‰uà‰UÜ‹EÜHcÐH‹EàHÐH‰Eøƒ}Üy¹ºñ¾¿èH‹EàH;EøsH‹EèHPH‰UèH‹UàHJH‰MඈH‹EàH;EøsH‹EèHPH‰UèH‹UàHJH‰MඈH‹EàH;EøsH‹EèHPH‰UèH‹UàHJH‰MඈëjH‹Eà¶H‹EèHƒè¶8Âu7H‹Eà¶H‹EèHƒè¶8Âu!H‹Eà¶H‹EèHƒè¶8Âu HƒEàƒmÜëH‹EèHPH‰UèH‹UàHJH‰MඈH‹EàH;EørŒ‹EÜÉÃUH‰åHƒì0H‰}èH‰uà‰UÜH‹E苉EüH‹EèHH H‰Çèùÿÿ‰EðÇEô“ƒ}ütB‹Eüº‰ÁÓâ‰ÐÑè‰ÀHÁàH‰ÂH‹EèH‹€@ H9Âr¹º¾¿èëƒEüƒ}üvèÇK¸ÿÿÿÿéž‹Eüº‰ÁÓâ‰Ð‰ÀHÁàH‰ÂH‹EèH‹€@ H9ÂrºëƒmüH‹Eè‹@;EüvðëƒmüH‹Eè‹;Eüs*H‹Mè‹UüH‰ÐHÁàHÐHÀHÐHÁàHƒÀ@HÈ‹@ƒøvǃ}ütCH‹Mè‹UüH‰ÐHÁàHÐHÀHÐHÁàHƒÀ@HÈ‹@ƒøw¹º#¾¿è‹Eüº‰ÁÓâ‹EôHcðH‹Eà‰ÑºH‰Ç¸è‰Eøƒ}ø ¸ÿÿÿÿ餋Eø;Eô|¹º)¾¿è‹Eø)Eô‹EøH˜HEàH‹Mè‹UüH‰ÐHÁàHÐHÀHÐHÁàHƒÀ@HÈ‹@‰Eø‹Eø;Eô~¹º-¾¿è‹E܃à…Àt9‹UüH‰ÐHÁàHÐHÀHÐHÁàH‹UèHÐHH‹UøH‹EàH‰ÎH‰Çè{üÿÿ‰Eøë7‹EøHcÈ‹UüH‰ÐHÁàHÐHÀHÐHÁàH‹UèHÐHpH‹EàH‰ÊH‰Çè‹EøH˜HEà‹Eø)Eôƒ}ð„³ƒ}ô¹º6¾¿èH‹ H‹uè‹UüH‰ÐHÁàHÐHÀHÐHÁàHð‹@‰Àƒà?HȶH‹Eàˆ‹E܃à…ÀtHƒ}ø~BH‹Eà¶H‹EàHƒè¶8Âu,H‹Eà¶H‹EàHƒè¶8ÂuH‹Eà¶H‹EàHƒè¶8Ât HƒEàƒmôƒ}ô¹º@¾¿èH‹EàHPH‰UàÆ:ƒmôH‹Eè‹@ƒè;Eü†äƒEüH‹Mè‹UüH‰ÐHÁàHÐHÀHÐHÁàHƒÀ@HÈ‹@‰Eø‹E܃à…Àu ƒ}ø~ÇEø‹Eø;Eô~¹ºJ¾¿è‹E܃à…Àt9‹UüH‰ÐHÁàHÐHÀHÐHÁàH‹UèHÐHH‹UøH‹EàH‰ÎH‰ÇèŒúÿÿ‰Eøë7‹EøHcÈ‹UüH‰ÐHÁàHÐHÀHÐHÁàH‹UèHÐHpH‹EàH‰ÊH‰Çè‹EøH˜HEà‹Eø)Eôƒ}ð„ƒ}ô¹ºS¾¿è‹E܃à…Àt#H‹Mè‹UüH‰ÐHÁàHÐHÀHÐHÁàHÈ‹@ë!H‹Mè‹UüH‰ÐHÁàHÐHÀHÐHÁàHÈ‹@ ‰EðH‹‹Uðƒâ?HжH‹Eàˆ‹E܃à…ÀtLƒ}ø~FH‹Eà¶H‹EàHƒè¶8Âu0H‹Eà¶H‹EàHƒè¶8ÂuH‹Eà¶H‹EàHƒè¶8„¾HƒEàƒmôé°ƒ}ð„¦H‹Mè‹UüH‰ÐHÁàHÐHÀHÐHÁàHƒÀ@HÈ‹@…Àt¹ºb¾¿èƒ}ô¹ºc¾¿èH‹MàHAH‰EàH‹5H‹}è‹UüH‰ÐHÁàHÐHÀHÐHÁàHø‹@‰Àƒà?H𶈃môH‹EàÆ¸ÉÃUH‰åHƒìH‰}øH‹EøH‰ÇèÉÃUH‰åHƒì0H‰}è‰uäH‰UØÇEüÿÿÿÿèH‰EðHƒ}ðu¸ÿÿÿÿëP‹UäH‹MèH‹EðH‰ÎH‰Çè…Àyë%H‹MØH‹EðºH‰ÎH‰Çè…ÀyëÇEüH‹EðH‰Çè‹EüÉÃUH‰åHì0H‰½ØïÿÿH‰µÐïÿÿÇEüÿÿÿÿèH‰EðHƒ}ðu ¸ÿÿÿÿéŸH‹•ØïÿÿH…àïÿÿH‰Ñº¾H‰ÇèH‰EèHƒ}èuH‹…ØïÿÿH‰Çè…Àt&ë"H‹UèHàïÿÿH‹EðH‰ÎH‰Çè…Àyë,ëšë(H‹ÐïÿÿH‹EðºH‰ÎH‰Çè…ÀyëÇEüH‹EðH‰Çè‹EüÉÃUH‰åHƒì H‰}èH‰uàH‹EèH‰ÇèH‰EøH‹E躾H‰Çè…Ày¸ÿÿÿÿëBH‹UàH‹EèH‰ÖH‰Çè‰Eôƒ}ôu#H‹MøH‹EèºH‰ÎH‰Çè…Ày¸ÿÿÿÿë‹EôÉÃUH‰åHƒì H‰}èH‰uàH‹Eè¾H‰ÇèH‰EøHƒ}øu¸ÿÿÿÿë%H‹UàH‹EøH‰ÖH‰Çè‰EôH‹EøH‰Çè‹EôÉÃUH‰åHì@H‰½ÈþÿÿH‰µÀþÿÿH…ðþÿÿº¾H‰ÇèH…ÐþÿÿH‰Çè2ïÿÿÇEüëH‹EüHcÐH‹…ÈþÿÿHж¶ÐH…Ðþÿÿ‰ÖH‰Çè&ïÿÿH…ÐþÿÿH‰Çèðÿÿ‰Â‹EüH˜‰”…ðþÿÿƒEü‹EüHcÐH‹…ÈþÿÿHж„Àu¡‹Eü‰EôH…ÐþÿÿH‰ÇèµîÿÿÇEüéè‹EüHcÐH‹…ÀþÿÿHж¶ÐH…Ðþÿÿ‰ÖH‰Çè¦îÿÿH…ÐþÿÿH‰Çèïÿÿ‰Eðƒ}üé ÇEø鈋EøH˜‹„…ðþÿÿ…Àtt‹EøH˜‹„…ðþÿÿ;Eðuc‹EüH˜HPúH‹…ÀþÿÿHÐH‰ÇèHƒøvB‹EøH˜HPúH‹…ÈþÿÿH ‹EüH˜HPúH‹…ÀþÿÿHкH‰ÎH‰Çè…Àu¸ë4ƒEø‹Eø;EôŒlÿÿÿƒEü‹EüHcÐH‹…ÀþÿÿHж„À…ýþÿÿ¸ÉÃUH‰åHƒì0H‰}ØH‹EØH‰ÇèH‰EèHƒ}èu ¸ééH‹EØH‰ÇèH‰EàHƒ}àw H‹EèéÉHÇEðH‹EðH‰Eøé”H‹UØH‹EøHжH‹EøHHÿH‹EØHȶ8ÂuHH‹UØH‹EøHжH‹EøHHþH‹EØHȶ8Âu$H‹UØH‹EøHжH‹EøHHýH‹EØHȶ8Ât#H‹EðHPH‰UðH‹UèHÂH‹MØH‹EøHȶˆHƒEøH‹EøH;Eà‚^ÿÿÿH‹UèH‹EðHÐÆH‹EèÉÃUH‰åHƒì@H‰}ØH‰uЉUÌH‹EØH‰ÇèH‰EðH‹EÐH‰ÇèH‰EèHƒ}ð@wHƒ}è@v ¸éÑH‹UÐH‹EØH‰ÖH‰Çè¶üÿÿ…Àu ¸é°H‹Eè‰ÁH‹Eð‰ÆH‹UÐH‹EØH‰Çè‰Eü‹EüÁà‰ÁH‹UðH‹EèH4H‰ÈºH÷ö‰Eü‹EükÀdÁè‰Eüƒ}ücv¸ëV¸d+Eü‰Eü‹Mü‹E̺«ªªª÷â‰ÐÑè‰ÂH‹EðH9EèHFEèH¯ÂH9Áv‹E̺«ªªª÷âÑêH‹EðH9EèHFEè¯Â‰Eü‹EüÉÃUH‰åHƒìpH‰}˜H‰uÇEüHƒ}˜tHƒ}u ¸ÿÿÿÿé€HU¬H‹E˜¾H‰Ç¸èƒøuHU¨H‹E¾H‰Ç¸èƒøt ¸ÿÿÿÿé8‹U¬‹E¨9Ât$‹E¨‹E¬9Ât‹E¬‹E¨9Ât ¸é H‹E˜¾:H‰ÇèH‰E˜H‹E¾:H‰ÇèH‰EHƒ}˜tHƒ}u ¸ÿÿÿÿéÈH‹E˜HƒÀH‰ÇèÓüÿÿH‰EðHƒ}ðu ¸é£H‹EHƒÀH‰Çè®üÿÿH‰EèHƒ}èuH‹EðH‰Çè¸érH‹EðH‰EàH‹EèH‰EØH‹Eð¾:H‰ÇèH‰EÐH‹Eè¾:H‰ÇèH‰EÈHƒ}ÐtHƒ}Èu"H‹EðH‰ÇèH‹EèH‰Çè¸ÿÿÿÿéH‹EÐÆHƒEÐH‹EÈÆHƒEÈH‹Eо,H‰ÇèH‰EÀH‹EȾ,H‰ÇèH‰E¸Hƒ}ÀtH‹EÀÆHƒ}¸tH‹E¸Æ‹U¬‹E¨9ÂuD‹U¬H‹MØH‹EàH‰ÎH‰Çè½üÿÿ‰E´‹E¬H‹MÈH‹EÐH‰ÎH‰Çè¡üÿÿ‰E°‹E´9E°CE°‰EüëA‹E¨‹E¬9Âu‹U¬H‹MÈH‹EàH‰ÎH‰Çèlüÿÿ‰Eüë‹U¨H‹MØH‹EÐH‰ÎH‰ÇèQüÿÿ‰EüH‹EðH‰ÇèH‹EèH‰Çè‹EüÉÃ../lib/libfuzzy/fuzzy.cself->bhend > 0self->bhstart < self->bhendABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/n >= 0bi == 0 || (size_t)(((uint32_t)3) << (bi)) / 2 * 64 < self->total_size!(bi > 0 && self->bh[bi].dlen < 64 / 2)%u:i < remaini <= remainremain > 0self->bh[bi].dlen == 0rbfuzzy_try_fork_blockhashfuzzy_try_reduce_blockhashmemcpy_eliminate_sequencesfuzzy_digestGCC: (Debian 4.9.2-10) 4.9.2zRx $A†C _ <A†C  \#A†C ^ |A†C X œA†C | ¼´A†C ¯ Ü¿A†C º üA†C ü cA†C ^ <3A†C . \AA†C < |A†C U œƒA†C ~ ¼ÛA†C Ö Ü…A†C € üZA†C U ÔA†C Ï <A†C  \A†C  |±A†C ¬ .symtab.strtab.shstrtab.rela.text.rela.data.bss.rodata.comment.note.GNU-stack.rela.eh_frameñÿ $$*#&M/ë´H@aŸ¿|`•™^«Â3ƀߛ øÔ a!y /6j@GU_cbõAo€‰6› Pƒ¯ÓÛÁÇή…Þåëò3Z ")4—±BIfuzzy.croll_initroll_hashroll_sumsum_hashfuzzy_try_fork_blockhash__PRETTY_FUNCTION__.3054fuzzy_try_reduce_blockhash__PRETTY_FUNCTION__.3058b64fuzzy_engine_stepmemcpy_eliminate_sequences__PRETTY_FUNCTION__.3086__PRETTY_FUNCTION__.3099has_common_substringeliminate_sequencesscore_stringsmemsetfuzzy_newmalloc__assert_failfuzzy_updatefuzzy_digest__errno_locationsnprintfmemcpyfuzzy_freefreefuzzy_hash_buffuzzy_hash_streamfreadferrorfuzzy_hash_fileftellofseekfseekofuzzy_hash_filenamefopenfclosestrlenstrncmpstrdupedit_distnfuzzy_comparesscanfstrchrüÿÿÿÿÿÿÿxüÿÿÿÿÿÿÿ @ # (üÿÿÿÿÿÿÿ½ `Ç Ì (Ñüÿÿÿÿÿÿÿpüÿÿÿÿÿÿÿí €÷ ü ‰üÿÿÿÿÿÿÿ] ›g l qüÿÿÿÿÿÿÿ‚üÿÿÿÿÿÿÿ; ›E J ØO üÿÿÿÿÿÿÿl y  üÿÿÿÿÿÿÿ™ ›£ ¨ ­ üÿÿÿÿÿÿÿñ ›û  üÿÿÿÿÿÿÿ !üÿÿÿÿÿÿÿ£ ›­ ² · üÿÿÿÿÿÿÿ¾ üÿÿÿÿÿÿÿV ›` e j üÿÿÿÿÿÿÿà ›ê ï ô üÿÿÿÿÿÿÿn !üÿÿÿÿÿÿÿ’ ›œ ¡ ¦ üÿÿÿÿÿÿÿþ üÿÿÿÿÿÿÿ¬ ›¶ » &À üÿÿÿÿÿÿÿË ›Õ Ú ß üÿÿÿÿÿÿÿò üÿÿÿÿÿÿÿJ#üÿÿÿÿÿÿÿküÿÿÿÿÿÿÿ“üÿÿÿÿÿÿÿ±üÿÿÿÿÿÿÿÊ"üÿÿÿÿÿÿÿôüÿÿÿÿÿÿÿ,&üÿÿÿÿÿÿÿG'üÿÿÿÿÿÿÿgüÿÿÿÿÿÿÿŒüÿÿÿÿÿÿÿ¥"üÿÿÿÿÿÿÿÆ)üÿÿÿÿÿÿÿà*üÿÿÿÿÿÿÿþ%üÿÿÿÿÿÿÿ+üÿÿÿÿÿÿÿH =P-üÿÿÿÿÿÿÿu%üÿÿÿÿÿÿÿ„.üÿÿÿÿÿÿÿ»üÿÿÿÿÿÿÿß/üÿÿÿÿÿÿÿ0üÿÿÿÿÿÿÿu1üÿÿÿÿÿÿÿ–/üÿÿÿÿÿÿÿ”/üÿÿÿÿÿÿÿ¤/üÿÿÿÿÿÿÿý2üÿÿÿÿÿÿÿÏ Ü4üÿÿÿÿÿÿÿî û4üÿÿÿÿÿÿÿI5üÿÿÿÿÿÿÿ^5üÿÿÿÿÿÿÿÆ#üÿÿÿÿÿÿÿñ5üÿÿÿÿÿÿÿ5üÿÿÿÿÿÿÿ$#üÿÿÿÿÿÿÿ0#üÿÿÿÿÿÿÿc5üÿÿÿÿÿÿÿx5üÿÿÿÿÿÿÿ3#üÿÿÿÿÿÿÿ?#üÿÿÿÿÿÿÿ H @$`*€M jÀëàŸ^ _@Â`õ€6 PÀÓà®3 @a`y€— @H@¸#Ø +ˆ&@- 16¨>08GV\X˜W@¨-à ðfX  h!Ppev/src/lib/libfuzzy/edit_dist.o0000644000175000017500000000575013034016314015733 0ustar useruserELF>è@@ UH‰å‰}ü‰uø‰Uô‹Eü;Eø} ‹Eü9EôNEôë ‹Eô9EøNEø]ÃUH‰å‰}ü‰uø‹Eü9EøNEø]ÃUH‰åAWAVAUATSHìèH‰½ðÿÿ‰µðÿÿH‰•øïÿÿ‰ðÿÿHƒ½ðÿÿt ƒ½ðÿÿu/Hƒ½øïÿÿt ƒ½ðÿÿu ¸é‡‹¯…ðÿÿéuHƒ½øïÿÿt ƒ½ðÿÿu‹¯…ðÿÿéP‹…ðÿÿÀDp‹…ðÿÿ;…ðÿÿ~N½ðÿÿò~B‹…ðÿÿ‰EÄ‹…ðÿÿ‰…ðÿÿ‹Eĉ…ðÿÿH‹…ðÿÿH‰E¸H‹…øïÿÿH‰…ðÿÿH‹E¸H‰…øïÿÿ½ðÿÿò H…ðÿÿH‰EÈëIcÆHÁàH‰ÇèH‰EÈA¼D‰àD`H˜H…H‹EÈHH‹…ðÿÿ¶H‹…øïÿÿ¶8Âu¸ë¸‰Æ¿èrþÿÿ‰C4ƒè™A÷þ‰ÐH˜H…H‹EÈHÐD‹8»éžIcÄH…H‹EÈL,IcÄHÁàHPüH‹EÈHЋpCHcËH‹•ðÿÿHʶ H‹•øïÿÿ¶8Ñuºëº ‰ò‰Æ‰Ïè³ýÿÿA‰EIcÄH…H‹EÈHЋD9ø}IcÄH…H‹EÈHÐD‹8AƒÄƒÃ;ðÿÿŒVÿÿÿA½éA»éIcÄH…H‹EÈHÐH‰…ðïÿÿAƒýÿt/…ÛuAuë(C4ƒè™A÷þ‰ÐH˜H…H‹EÈHЋpësE…íuKë3ƒûÿt*‹…ðÿÿDàƒÀ™A÷þ‰ÐH˜H…H‹EÈHЋHëAME…ít0…Ût'‹…ðÿÿDàƒÀ™A÷þ‰ÐH˜H…H‹EÈHЋëD‰èë‰ØHcûH‹•ðÿÿHú¶:McÅH‹•øïÿÿL¶@8×uºëºЉò‰Î‰ÇèVüÿÿH‹µðïÿÿ‰HcÓH‹…ðÿÿHжIcÅHHÿH‹…øïÿÿHȶ8Â…¦…ÛŽžHcÃHPÿH‹…ðÿÿHжIcÍH‹…øïÿÿHȶ8ÂuvIcÄH…H‹EÈHÐH‰…ðïÿÿAƒýuCë,ƒûuAEë!AD$™A÷þ‰ÐH˜H…H‹EÈHЋƒÀIcÔH •H‹UÈHÊ‹‰Æ‰×è±ûÿÿH‹½ðïÿÿ‰IcÄH…H‹EÈHЋD9ø|…ÛuIcÄH…H‹EÈHÐD‹8AD$™A÷þA‰ÔƒÃ;ðÿÿŒÕýÿÿAƒÿd~ëAƒÅD;­ðÿÿŒ²ýÿÿC4ƒè™A÷þ‰ÐH˜H…H‹EÈHÐD‹(H…ðÿÿH9EÈt H‹EÈH‰ÇèD‰èHÄè[A\A]A^A_]ÃGCC: (Debian 4.9.2-10) 4.9.2zRx -A†C h <A†C Q ,\÷A†C PŽŒƒâ .symtab.strtab.shstrtab.rela.text.data.bss.comment.note.GNU-stack.rela.eh_frameñÿ --#/C÷:Aedit_dist.cmin3min2insert_costdelete_costedit_distnmallocfree£üÿÿÿÿÿÿÿÈd üÿÿÿÿÿÿÿ!üÿÿÿÿÿÿÿ @-`C @:@@` &|,„10„:¢O¨ˆJ@ H 0Yh  øFpev/src/pev_api.c0000644000175000017500000000344313034014706012746 0ustar useruser/* pev - the PE file analyzer toolkit pev_api.c - Symbols and APIs to be used by all plugins. Copyright (C) 2014 pev authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #include "pev_api.h" #include "output_plugin.h" #include #include pev_api_t *pev_api_ptr(void) { static bool initialized = false; static pev_api_t api; if (!initialized) { initialized = true; memset(&api, 0, sizeof(api)); api.output = output_plugin_api_ptr(); } return &api; } pev/src/config.c0000644000175000017500000001032613034014706012566 0ustar useruser/* pev - the PE file analyzer toolkit config.c Copyright (C) 2013 - 2014 pev authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #include "config.h" #include "error.h" // from libpe #include "utils.h" #include #include #if defined(__linux__) #include #elif defined(__NetBSD__) #include #elif defined(__APPLE__) #include #elif defined(__CYGWIN__) #include #endif #define DEFAULT_CONFIG_FILENAME "pev.conf" #if defined(__CYGWIN__) // Set current directory as default #define DEFAULT_CONFIG_PATH DEFAULT_CONFIG_FILENAME #define DEFAULT_PLUGINS_PATH "plugins" #else #define DEFAULT_CONFIG_PATH ".config/pev" DEFAULT_CONFIG_FILENAME #define DEFAULT_PLUGINS_PATH "/usr/local/lib/pev/plugins" #endif static bool _load_config_cb(pev_config_t * const config, const char *name, const char *value) { //printf("%s=%s\n", name, value); if (!strcmp("plugins_dir", name)) { config->plugins_path = strdup(value); return true; } return false; } static int _load_config_and_parse(pev_config_t * const config, const char *path, pev_config_parse_callback_t pev_cb) { FILE *fp = fopen(path, "r"); if (fp == NULL) return -1; char line[1024]; while (fgets(line, sizeof(line), fp) != NULL) { // comments if (*line == '#') continue; // remove newline for (size_t i=0; i < sizeof(line); i++) { if (line[i] == '\n' || i == sizeof(line) - 1) { line[i] = '\0'; break; } } char *param = strtok(line, "="); char *value = strtok(NULL, "="); const char *trimmed_param = utils_str_inplace_trim(param); const char *trimmed_value = utils_str_inplace_trim(value); //printf("DEBUG: '%s'='%s'\n", trimmed_param, trimmed_value); const bool processed = pev_cb(config, trimmed_param, trimmed_value); if (!processed && config->user_defined.parse_callback != NULL) config->user_defined.parse_callback(config->user_defined.data, trimmed_param, trimmed_value); } fclose(fp); return 0; } int pev_load_config(pev_config_t * const config) { char buff[PATH_MAX]; int ret = utils_is_file_readable(DEFAULT_CONFIG_FILENAME); if (ret == LIBPE_E_OK) { ret = _load_config_and_parse(config, DEFAULT_CONFIG_FILENAME, _load_config_cb); if (ret < 0) return ret; } snprintf(buff, sizeof(buff), "%s/%s", utils_get_homedir(), DEFAULT_CONFIG_PATH); ret = utils_is_file_readable(buff); if (ret == LIBPE_E_OK) { ret = _load_config_and_parse(config, buff, _load_config_cb); if (ret < 0) return ret; } // // Default values // if (config->plugins_path == NULL) config->plugins_path = strdup(DEFAULT_PLUGINS_PATH); return 0; } void pev_cleanup_config(pev_config_t * const config) { if (config == NULL) return; if (config->user_defined.data != NULL) { if (config->user_defined.cleanup_callback != NULL) config->user_defined.cleanup_callback(config->user_defined.data); } if (config->plugins_path != NULL) { free(config->plugins_path); config->plugins_path = NULL; } } pev/src/output_plugin.c0000644000175000017500000001231313034014706014235 0ustar useruser/* pev - the PE file analyzer toolkit output_plugin.c - Symbols and APIs to be used by output plugins. Copyright (C) 2014 pev authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #include "output_plugin.h" #include #include size_t escape_count_chars_ex(const char *str, size_t len, const entity_table_t entities) { size_t result = 0; for (size_t i = 0; i < len; i++) { const unsigned char index = (unsigned char)str[i]; const entity_t entity = entities[index]; result += entity == NULL ? 1 : strlen(entity); } return result; } // Returns a new copy of `str` enclosed with quotes. static char *strdup_quoted(const char *str) { if (str == NULL) return NULL; const size_t old_length = strlen(str); const size_t new_length = old_length + 2; char *new_str = malloc(new_length + 1); // Extra byte for NULL terminator if (new_str == NULL) return NULL; new_str[0] = '"'; new_str[new_length - 1] = '"'; new_str[new_length] = '\0'; memcpy(new_str + 1, str, old_length); return new_str; } #if 0 static size_t escape_count_chars(const format_t *format, const char *str, size_t len) { return escape_count_chars_ex(str, len, format->entities_table); } #endif char *escape_ex_quoted(const char *str, const entity_table_t entities) { if (str == NULL) return NULL; if (str[0] == '\0') return strdup("\"\""); if (entities == NULL) return strdup_quoted(str); const size_t old_length = strlen(str); const size_t new_length = escape_count_chars_ex(str, old_length, entities) + 2; // Extra bytes for quotes if (old_length == new_length - 2) return strdup_quoted(str); char *new_str = malloc(new_length + 1); // Extra byte for NULL terminator if (new_str == NULL) abort(); new_str[0] = '"'; new_str[new_length - 1] = '"'; new_str[new_length] = '\0'; // `consumed` starts in 1 because of the initial quote. size_t consumed = 1; for (size_t i = 0; i < old_length; i++) { const unsigned char index = (unsigned char)str[i]; const entity_t entity = entities[index]; if (entity == NULL) { new_str[consumed++] = str[i]; } else { const size_t entity_len = strlen(entity); memcpy(new_str + consumed, entity, entity_len); consumed += entity_len; } } return new_str; } char *escape_ex(const char *str, const entity_table_t entities) { if (str == NULL) return NULL; if (str[0] == '\0') return strdup(""); if (entities == NULL) return strdup(str); const size_t old_length = strlen(str); const size_t new_length = escape_count_chars_ex(str, old_length, entities); if (old_length == new_length) return strdup(str); char *new_str = malloc(new_length + 1); // Extra byte for NULL terminator if (new_str == NULL) abort(); new_str[new_length] = '\0'; size_t consumed = 0; for (size_t i = 0; i < old_length; i++) { const unsigned char index = (unsigned char)str[i]; const entity_t entity = entities[index]; if (entity == NULL) { new_str[consumed++] = str[i]; } else { const size_t entity_len = strlen(entity); memcpy(new_str + consumed, entity, entity_len); consumed += entity_len; } } return new_str; } char *escape(const format_t *format, const char *str) { return escape_ex(str, format->entities_table); } char *escape_quoted(const format_t *format, const char *str) { return escape_ex_quoted(str, format->entities_table); } // These 2 are implemented in `output.c`. extern int output_plugin_register_format(const format_t *format); extern void output_plugin_unregister_format(const format_t *format); output_plugin_api_t *output_plugin_api_ptr(void) { static output_plugin_api_t api = { .output_cmdline = output_cmdline, .output_plugin_register_format = output_plugin_register_format, .output_plugin_unregister_format = output_plugin_unregister_format, .escape_count_chars_ex = escape_count_chars_ex, .escape_ex = escape_ex, .escape_ex_quoted = escape_ex_quoted, .escape = escape, .escape_quoted = escape_quoted }; return &api; } pev/src/pestr.c0000644000175000017500000001443313034014706012461 0ustar useruser/* pev - the PE file analyzer toolkit pestr.c - search for strings in PE files. Copyright (C) 2012 - 2017 pev authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #include "common.h" #include #include #include #define PROGRAM "pestr" #define BUFSIZE 4 #define LINE_BUFFER 32768 typedef struct { unsigned short strsize; bool offset; bool section; } options_t; static void usage(void) { printf("Usage: %s OPTIONS FILE\n" "Search for strings in PE files\n" "\nExample: %s acrobat.exe\n" "\nOptions:\n" " -n, --min-length set minimun string length (default: 4)\n" " -o, --offset show string offset in file\n" " -s, --section show string section, if exists\n" " -V, --version show version and exit\n" " --help show this help and exit\n", PROGRAM, PROGRAM); } static void free_options(options_t *options) { if (options == NULL) return; free(options); } static options_t *parse_options(int argc, char *argv[]) { options_t *options = malloc_s(sizeof(options_t)); memset(options, 0, sizeof(options_t)); /* Parameters for getopt_long() function */ static const char short_options[] = "osn:V"; static const struct option long_options[] = { { "offset", no_argument, NULL, 'o' }, { "section", no_argument, NULL, 's' }, { "min-length", required_argument, NULL, 'n' }, { "help", no_argument, NULL, 1 }, { "version", no_argument, NULL, 'V' }, { NULL, 0, NULL, 0 } }; int c, ind; while ((c = getopt_long(argc, argv, short_options, long_options, &ind))) { if (c < 0) break; switch (c) { case 1: // --help option usage(); exit(EXIT_SUCCESS); case 'o': options->offset = true; break; case 's': options->section = true; break; case 'n': { unsigned long value = strtoul(optarg, NULL, 0); if (value == ULONG_MAX && errno == ERANGE) { fprintf(stderr, "The original (nonnegated) value would overflow"); exit(EXIT_FAILURE); } options->strsize = (unsigned char)value; break; } case 'V': printf("%s %s\n%s\n", PROGRAM, TOOLKIT, COPY); exit(EXIT_SUCCESS); default: fprintf(stderr, "%s: try '--help' for more information\n", PROGRAM); exit(EXIT_FAILURE); } } return options; } // TODO Move it to libpe static unsigned char *ofs2section(pe_ctx_t *ctx, uint64_t offset) { IMAGE_SECTION_HEADER **sections = pe_sections(ctx); for (uint16_t i=0; i < ctx->pe.num_sections; i++) { uint32_t sect_offset = sections[i]->PointerToRawData; uint32_t sect_size = sections[i]->SizeOfRawData; if (offset >= sect_offset && offset <= (sect_offset + sect_size)) { return (unsigned char *)sections[i]->Name; } } return NULL; } static void printb( pe_ctx_t *ctx, const options_t *options, const uint8_t *bytes, size_t pos, size_t length, unsigned long offset ) { if (options->offset) printf("%#lx\t", (unsigned long) offset); if (options->section) { char *s = (char *) ofs2section(ctx, offset); printf("%s\t", s ? s : "[none]"); } // print the string while (pos < length) { if (bytes[pos] == '\0') { // utf-8 printing pos++; continue; } putchar(bytes[pos++]); } putchar('\n'); } int main(int argc, char *argv[]) { if (argc < 2) { usage(); exit(EXIT_FAILURE); } options_t *options = parse_options(argc, argv); // opcoes const char *path = argv[argc-1]; pe_ctx_t ctx; pe_err_e err = pe_load_file(&ctx, path); if (err != LIBPE_E_OK) { pe_error_print(stderr, err); return EXIT_FAILURE; } err = pe_parse(&ctx); if (err != LIBPE_E_OK) { pe_error_print(stderr, err); return EXIT_FAILURE; } if (!pe_is_pe(&ctx)) EXIT_ERROR("not a valid PE file"); const uint64_t pe_size = pe_filesize(&ctx); const uint8_t *pe_raw_data = ctx.map_addr; uint64_t pe_raw_offset = 0; unsigned char buff[LINE_BUFFER]; memset(buff, 0, LINE_BUFFER); uint64_t buff_index = 0; uint32_t ascii = 0; uint32_t utf = 0; while (pe_raw_offset < pe_size) { const uint8_t byte = pe_raw_data[pe_raw_offset]; if (isprint(byte) && buff_index < LINE_BUFFER) { ascii++; buff[buff_index++] = byte; pe_raw_offset++; continue; } else if (ascii == 1 && byte == '\0' && buff_index < LINE_BUFFER) { utf++; buff[buff_index++] = byte; ascii = 0; pe_raw_offset++; continue; } else { if (ascii >= (options->strsize ? options->strsize : 4)) { printb(&ctx, options, buff, 0, ascii, pe_raw_offset - ascii); } else if (utf >= (options->strsize ? options->strsize : 4)) { printb(&ctx, options, buff, 0, utf*2, pe_raw_offset - utf*2); } ascii = utf = buff_index = 0; memset(buff, 0, LINE_BUFFER); } pe_raw_offset++; } // libera a memoria free_options(options); // free err = pe_unload(&ctx); if (err != LIBPE_E_OK) { pe_error_print(stderr, err); return EXIT_FAILURE; } return EXIT_SUCCESS; } pev/src/userdb.txt0000644000175000017500000235413013034014706013210 0ustar useruser; Made with Add Signature v2.00 by BoB / BobSoft .. ; 3520 Signatures in list .. [Native UD Packer 1.1 (Modded Poison Ivy Shellcode) -> okkixot] signature = 31 C0 31 DB 31 C9 EB 0E 6A 00 6A 00 6A 00 6A 00 FF 15 28 41 40 00 FF 15 94 40 40 00 89 C7 68 88 13 00 00 FF 15 98 40 40 00 FF 15 94 40 40 00 81 C7 88 13 00 00 39 F8 73 05 E9 84 00 00 00 6A 40 68 00 10 00 00 FF 35 04 30 40 00 6A 00 FF 15 A4 40 40 00 89 C7 FF 35 04 30 40 00 68 CA 10 40 00 50 FF 15 A8 40 40 00 6A 40 68 00 10 00 00 FF 35 08 30 40 00 6A 00 FF 15 A4 40 40 00 89 C6 68 00 30 40 00 FF 35 04 30 40 00 57 FF 35 08 30 40 00 50 6A 02 FF 15 4E 41 40 00 6A 00 6A 00 6A 00 56 6A 00 6A 00 FF 15 9C 40 40 00 50 6A 00 6A 00 6A 11 50 FF 15 4A 41 40 00 58 6A FF 50 FF 15 AC 40 40 00 6A 00 FF 15 A0 40 ep_only = true [Obsidium v1.3.0.0 -> Obsidium Software (h)] signature = EB 04 25 80 34 CA E8 29 00 00 00 EB 02 C1 81 EB 01 3A 8B 54 24 0C EB 02 32 92 83 82 B8 00 00 00 22 EB 02 F2 7F 33 C0 EB 04 65 7E 14 79 C3 EB 04 05 AD 7F 45 EB 04 05 65 0B E8 64 67 FF 36 00 00 EB 04 0D F6 A8 7F 64 67 89 26 00 00 EB 04 8D 68 C7 FB EB 01 6B 50 EB 03 8A 0B 93 33 C0 EB 02 28 B9 8B 00 EB 01 04 C3 EB 04 65 B3 54 0A E9 FA 00 00 00 EB 01 A2 E8 D5 FF FF FF EB 02 2B 49 EB 03 7C 3E 76 58 EB 04 B8 94 92 56 EB 01 72 64 67 8F 06 00 00 EB 02 23 72 83 C4 04 EB 02 A9 CB E8 47 26 00 00 ep_only = true [PESpin v0.1 -> Cyberbob] signature = EB 01 68 60 E8 00 00 00 00 8B 1C 24 83 C3 12 81 2B E8 B1 06 00 FE 4B FD 82 2C 24 5C CB 46 00 0B E4 74 9E 75 01 C7 81 73 04 D7 7A F7 2F 81 73 19 77 00 43 B7 F6 C3 6B B7 00 00 F9 FF E3 C9 C2 08 00 A3 68 72 01 FF 5D 33 C9 41 E2 17 EB 07 EA EB 01 EB EB 0D FF E8 01 00 00 00 EA 5A 83 EA 0B FF E2 8B 95 B3 28 40 00 8B 42 3C 03 C2 89 85 BD 28 40 00 41 C1 E1 07 8B 0C 01 03 CA 8B 59 10 03 DA 8B 1B 89 9D D1 28 40 00 53 8F 85 C4 27 40 00 BB ?? 00 00 00 B9 A5 08 00 00 8D BD 75 29 40 00 4F 30 1C 39 FE CB E2 F9 68 2D 01 00 00 59 8D BD AA 30 40 00 C0 0C 39 02 E2 FA E8 02 00 00 00 FF 15 5A 8D 85 07 4F 56 00 BB 54 13 0B 00 D1 E3 2B C3 FF E0 E8 01 00 00 00 68 E8 1A 00 00 00 8D 34 28 B8 ?? ?? ?? ?? 2B C9 83 C9 15 0F A3 C8 0F 83 81 00 00 00 8D B4 0D C4 28 40 00 8B D6 B9 10 00 00 00 AC 84 C0 74 06 C0 4E FF 03 E2 F5 E8 00 00 00 00 59 81 C1 1D 00 00 00 52 51 C1 E9 05 23 D1 FF ep_only = true [Private Personal Packer (PPP) v1.0.2 --> ConquestOfTroy.com] signature = E8 17 00 00 00 E8 68 00 00 00 FF 35 2C 37 00 10 E8 ED 01 00 00 6A 00 E8 2E 04 00 00 E8 41 04 00 00 A3 74 37 00 10 6A 64 E8 5F 04 00 00 E8 30 04 00 00 A3 78 37 00 10 6A 64 E8 4E 04 00 00 E8 1F 04 00 00 A3 7C 37 00 10 A1 74 37 00 10 8B 1D 78 37 00 10 2B D8 8B 0D 7C 37 00 10 2B C8 83 FB 64 73 0F 81 F9 C8 00 00 00 73 07 6A 00 E8 D9 03 00 00 C3 6A 0A 6A 07 6A 00 ep_only = true [PseudoSigner 0.1 [ACProtect 1.09] --> Anorganix] signature = 60 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 EB 02 00 00 90 90 90 04 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 EB 06 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 EB 06 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 EB 02 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 EB 08 00 90 90 90 EB 06 00 00 90 90 90 90 90 90 EB 06 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 04 90 90 90 90 90 90 90 90 90 90 90 90 90 90 00 01 E9 ep_only = true [PseudoSigner 0.1 [Borland Delphi 3.0] --> Anorganix] signature = 55 8B EC 83 C4 90 90 90 90 68 ?? ?? ?? ?? 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 00 01 E9 ep_only = true [PseudoSigner 0.1 [Borland Delphi 5.0 KOL/MCK] --> Anorganix] signature = 55 8B EC 90 90 90 90 68 ?? ?? ?? ?? 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 00 FF 90 90 90 90 90 90 90 90 00 01 90 90 90 90 90 90 90 90 90 EB 04 00 00 00 01 90 90 90 90 90 90 90 00 01 90 90 90 90 90 90 90 90 90 90 90 EB 08 00 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 EB 08 00 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 EB 08 00 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 EB 0E 00 90 90 90 90 90 00 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 EB 0A 00 00 00 90 90 90 90 90 00 00 00 01 E9 ep_only = true [PseudoSigner 0.1 [Microsoft Visual C++ 6.0 (Debug Version)] --> Anorganix] signature = 55 8B EC 51 90 90 90 01 01 90 90 90 90 68 ?? ?? ?? ?? 90 90 90 90 90 90 90 90 90 90 90 90 00 01 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 00 01 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 10 01 90 90 90 90 90 90 90 90 E8 00 00 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 EB 02 00 00 E9 ep_only = true [PseudoSigner 0.1 [Morphine 1.2] --> Anorganix] signature = 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 EB 06 00 90 90 90 90 90 90 90 90 EB 08 E8 90 00 00 00 66 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 51 66 90 90 90 59 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 EB 02 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 EB 02 E2 90 90 90 EB 08 82 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 EB 02 00 01 E9 ep_only = true [PseudoSigner 0.1 [Neolite 2.0] --> Anorganix] signature = E9 A6 00 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 00 01 E9 ep_only = true [PseudoSigner 0.1 [Pack Master 1.0 (PEX Clone)] --> Anorganix] signature = 60 E8 01 01 00 00 E8 83 C4 04 E8 01 90 90 90 E9 5D 81 ED D3 22 40 90 E8 04 02 90 90 E8 EB 08 EB 02 CD 20 FF 24 24 9A 66 BE 47 46 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 FF FF E9 ep_only = true [SimplePack 1.11 Method 1 -> bagie[TMX] (h)] signature = 60 E8 00 00 00 00 5B 8D 5B FA BD 00 00 ?? ?? 8B 7D 3C 8D 74 3D 00 8D BE F8 00 00 00 0F B7 76 06 4E 8B 47 10 09 C0 74 55 0F B7 47 22 09 C0 74 4D 6A 04 68 00 10 00 00 FF 77 10 6A 00 FF 93 38 03 00 00 50 56 57 89 EE 03 77 0C 8B 4F 10 89 C7 89 C8 C1 E9 02 FC F3 A5 89 C1 83 E1 03 F3 A4 5F 5E 8B 04 24 89 EA 03 57 0C E8 3F 01 00 00 58 68 00 40 00 00 FF 77 10 50 FF 93 3C 03 00 00 83 C7 28 4E 75 9E BE ?? ?? ?? ?? 09 F6 0F 84 0C 01 00 00 01 EE 8B 4E 0C 09 C9 0F 84 FF 00 00 00 01 E9 89 CF 57 FF 93 30 03 00 00 09 C0 75 3D 6A 04 68 00 10 00 00 68 00 10 00 00 6A 00 FF 93 38 03 00 00 89 C6 8D 83 6F 02 00 00 57 50 56 FF 93 44 03 00 00 6A 10 6A 00 56 6A 00 FF 93 48 03 00 00 89 E5 ep_only = true [Software Compress v1.2 -> BG Software Protect Technologies] signature = E9 BE 00 00 00 60 8B 74 24 24 8B 7C 24 28 FC B2 80 33 DB A4 B3 02 E8 6D 00 00 00 73 F6 33 C9 E8 64 00 00 00 73 1C 33 C0 E8 5B 00 00 00 73 23 B3 02 41 B0 10 E8 4F 00 00 00 12 C0 73 F7 75 3F AA EB D4 E8 4D 00 00 00 2B CB 75 10 E8 42 00 00 00 EB 28 AC D1 E8 74 4D 13 C9 EB 1C 91 48 C1 E0 08 AC E8 2C 00 00 00 3D 00 7D 00 00 73 0A 80 FC 05 73 06 83 F8 7F 77 02 41 41 95 8B C5 B3 01 56 8B F7 2B F0 F3 A4 5E EB 8E 02 D2 75 05 8A 16 46 12 D2 C3 33 C9 41 E8 EE FF FF FF 13 C9 E8 E7 FF FF FF 72 F2 C3 2B 7C 24 28 89 7C 24 1C 61 C3 60 FF 74 24 24 6A 40 FF 95 1A 0F 41 00 89 44 24 1C 61 C2 04 00 E8 00 00 00 00 81 2C 24 3A 10 41 00 5D E8 00 00 00 00 81 2C 24 31 01 00 00 8B 85 2A 0F 41 00 29 04 24 ep_only = true [Software Compress v1.4 LITE -> BG Software Protect Technologies (h)] signature = E8 00 00 00 00 81 2C 24 AA 1A 41 00 5D E8 00 00 00 00 83 2C 24 6E 8B 85 5D 1A 41 00 29 04 24 8B 04 24 89 85 5D 1A 41 00 58 8B 85 5D 1A 41 00 8B 50 3C 03 D0 8B 92 80 00 00 00 03 D0 8B 4A 58 89 8D 49 1A 41 00 8B 4A 5C 89 8D 4D 1A 41 00 8B 4A 60 89 8D 55 1A 41 00 8B 4A 64 89 8D 51 1A 41 00 8B 4A 74 89 8D 59 1A 41 00 68 00 20 00 00 E8 D2 00 00 00 50 8D 8D 00 1C 41 00 50 51 E8 1B 00 00 00 83 C4 08 58 8D 78 74 8D B5 49 1A 41 00 B9 18 00 00 00 F3 A4 05 A4 00 00 00 50 C3 60 8B 74 24 24 8B 7C 24 28 FC B2 80 33 DB A4 B3 02 E8 6D 00 00 00 73 F6 33 C9 E8 64 00 00 00 73 1C 33 C0 E8 5B 00 00 00 73 23 B3 02 41 B0 10 E8 4F 00 00 00 12 C0 73 F7 75 3F AA EB D4 E8 4D 00 00 00 2B CB 75 10 E8 42 00 00 00 EB 28 AC D1 E8 74 4D 13 C9 EB 1C 91 48 C1 E0 08 AC E8 2C 00 00 00 3D 00 7D 00 00 73 0A 80 FC 05 73 06 83 F8 7F 77 02 41 41 95 8B C5 B3 01 56 8B F7 2B F0 F3 A4 5E EB 8E 02 D2 75 05 8A 16 46 12 D2 C3 33 C9 41 E8 EE FF FF FF 13 C9 E8 E7 FF FF FF 72 F2 C3 2B 7C 24 28 89 7C 24 1C 61 C3 60 FF 74 24 24 6A 40 FF 95 4D 1A 41 00 89 44 24 1C 61 C2 04 ep_only = true [* PseudoSigner 0.1 [ACProtect 1.09] --> Anorganix] signature = 60 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 EB 02 00 00 90 90 90 04 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 ep_only = true [* PseudoSigner 0.1 [ACProtect 1.09] --> Anorganix] signature = 60 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 EB 02 00 00 90 90 90 04 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 ep_only = true [* PseudoSigner 0.1 [ASPack 2.xx Heuristic] --> Anorganix] signature = 90 90 90 90 68 ?? ?? ?? ?? 67 64 FF 36 00 00 67 64 89 26 00 00 F1 90 90 90 90 A8 03 00 00 61 75 08 B8 01 00 00 00 C2 0C 00 68 00 00 00 00 C3 8B 85 26 04 00 00 8D 8D 3B 04 00 00 51 50 FF 95 ep_only = true [* PseudoSigner 0.1 [ASPack 2.xx Heuristic] --> Anorganix] signature = 90 90 90 90 68 ?? ?? ?? ?? 67 64 FF 36 00 00 67 64 89 26 00 00 F1 90 90 90 90 A8 03 00 00 61 75 08 B8 01 00 00 00 C2 0C 00 68 00 00 00 00 C3 8B 85 26 04 00 00 8D 8D 3B 04 00 00 51 50 FF 95 ep_only = true [* PseudoSigner 0.1 [Borland Delphi 3.0] --> Anorganix] signature = 55 8B EC 83 C4 90 90 90 90 68 ?? ?? ?? ?? 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 ep_only = true [* PseudoSigner 0.1 [Borland Delphi 3.0] --> Anorganix] signature = 55 8B EC 83 C4 90 90 90 90 68 ?? ?? ?? ?? 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 ep_only = true [* PseudoSigner 0.1 [Borland Delphi 5.0 KOL/MCK] --> Anorganix] signature = 55 8B EC 90 90 90 90 68 ?? ?? ?? ?? 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 00 FF 90 90 90 90 90 90 90 90 00 01 90 90 90 90 90 90 90 90 90 EB 04 00 00 00 01 90 90 90 90 90 90 90 00 01 90 90 90 90 90 90 90 90 90 ep_only = true [* PseudoSigner 0.1 [Borland Delphi 5.0 KOL/MCK] --> Anorganix] signature = 55 8B EC 90 90 90 90 68 ?? ?? ?? ?? 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 00 FF 90 90 90 90 90 90 90 90 00 01 90 90 90 90 90 90 90 90 90 EB 04 00 00 00 01 90 90 90 90 90 90 90 00 01 90 90 90 90 90 90 90 90 90 ep_only = true [* PseudoSigner 0.1 [Borland Delphi 6.0 - 7.0] --> Anorganix] signature = 90 90 90 90 68 ?? ?? ?? ?? 67 64 FF 36 00 00 67 64 89 26 00 00 F1 90 90 90 90 53 8B D8 33 C0 A3 09 09 09 00 6A 00 E8 09 09 00 FF A3 09 09 09 00 A1 09 09 09 00 A3 09 09 09 00 33 C0 A3 09 09 09 00 33 C0 A3 09 09 09 00 E8 ep_only = true [* PseudoSigner 0.1 [Borland Delphi 6.0 - 7.0] --> Anorganix] signature = 90 90 90 90 68 ?? ?? ?? ?? 67 64 FF 36 00 00 67 64 89 26 00 00 F1 90 90 90 90 53 8B D8 33 C0 A3 09 09 09 00 6A 00 E8 09 09 00 FF A3 09 09 09 00 A1 09 09 09 00 A3 09 09 09 00 33 C0 A3 09 09 09 00 33 C0 A3 09 09 09 00 E8 ep_only = true [* PseudoSigner 0.1 [FSG 1.0] --> Anorganix] signature = 90 90 90 90 68 ?? ?? ?? ?? 67 64 FF 36 00 00 67 64 89 26 00 00 F1 90 90 90 90 BB D0 01 40 00 BF 00 10 40 00 BE 90 90 90 90 53 E8 0A 00 00 00 02 D2 75 05 8A 16 46 12 D2 C3 FC B2 80 A4 6A 02 5B E9 ep_only = true [* PseudoSigner 0.1 [FSG 1.0] --> Anorganix] signature = 90 90 90 90 68 ?? ?? ?? ?? 67 64 FF 36 00 00 67 64 89 26 00 00 F1 90 90 90 90 BB D0 01 40 00 BF 00 10 40 00 BE 90 90 90 90 53 E8 0A 00 00 00 02 D2 75 05 8A 16 46 12 D2 C3 FC B2 80 A4 6A 02 5B E9 ep_only = true [* PseudoSigner 0.1 [Macromedia Flash Projector 6.0] --> Anorganix] signature = 90 90 90 90 68 ?? ?? ?? ?? 67 64 FF 36 00 00 67 64 89 26 00 00 F1 90 90 90 90 83 EC 44 56 FF 15 24 81 49 00 8B F0 8A 06 3C 22 75 1C 8A 46 01 46 3C 22 74 0C 84 C0 74 08 8A 46 01 46 3C 22 75 F4 80 3E 22 75 0F 46 EB 0C E9 ep_only = true [* PseudoSigner 0.1 [Macromedia Flash Projector 6.0] --> Anorganix] signature = 90 90 90 90 68 ?? ?? ?? ?? 67 64 FF 36 00 00 67 64 89 26 00 00 F1 90 90 90 90 83 EC 44 56 FF 15 24 81 49 00 8B F0 8A 06 3C 22 75 1C 8A 46 01 46 3C 22 74 0C 84 C0 74 08 8A 46 01 46 3C 22 75 F4 80 3E 22 75 0F 46 EB 0C E9 ep_only = true [* PseudoSigner 0.1 [Microsoft Visual C++ 6.0 (Debug Version)] --> Anorganix] signature = 55 8B EC 51 90 90 90 01 01 90 90 90 90 68 ?? ?? ?? ?? 90 90 90 90 90 90 90 90 90 90 90 90 00 01 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 00 01 90 90 90 90 90 ep_only = true [* PseudoSigner 0.1 [Microsoft Visual C++ 6.0 (Debug Version)] --> Anorganix] signature = 55 8B EC 51 90 90 90 01 01 90 90 90 90 68 ?? ?? ?? ?? 90 90 90 90 90 90 90 90 90 90 90 90 00 01 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 00 01 90 90 90 90 90 ep_only = true [* PseudoSigner 0.1 [Morphine 1.2] --> Anorganix] signature = 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 EB 06 00 90 90 90 90 90 90 90 90 EB 08 E8 90 00 00 00 66 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 51 66 90 90 90 59 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 ep_only = true [* PseudoSigner 0.1 [Morphine 1.2] --> Anorganix] signature = 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 EB 06 00 90 90 90 90 90 90 90 90 EB 08 E8 90 00 00 00 66 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 51 66 90 90 90 59 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 ep_only = true [* PseudoSigner 0.1 [Neolite 2.0] --> Anorganix] signature = E9 A6 00 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 ep_only = true [* PseudoSigner 0.1 [Neolite 2.0] --> Anorganix] signature = E9 A6 00 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 ep_only = true [* PseudoSigner 0.1 [Pack Master 1.0 (PEX Clone)] --> Anorganix] signature = 60 E8 01 01 00 00 E8 83 C4 04 E8 01 90 90 90 E9 5D 81 ED D3 22 40 90 E8 04 02 90 90 E8 EB 08 EB 02 CD 20 FF 24 24 9A 66 BE 47 46 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 ep_only = true [* PseudoSigner 0.1 [Pack Master 1.0 (PEX Clone)] --> Anorganix] signature = 60 E8 01 01 00 00 E8 83 C4 04 E8 01 90 90 90 E9 5D 81 ED D3 22 40 90 E8 04 02 90 90 E8 EB 08 EB 02 CD 20 FF 24 24 9A 66 BE 47 46 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 ep_only = true [* PseudoSigner 0.1 [PECompact 1.4+] --> Anorganix] signature = 90 90 90 90 68 ?? ?? ?? ?? 67 64 FF 36 00 00 67 64 89 26 00 00 F1 90 90 90 90 EB 06 68 90 90 90 90 C3 9C 60 E8 02 90 90 90 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 ep_only = true [* PseudoSigner 0.1 [PECompact 1.4+] --> Anorganix] signature = 90 90 90 90 68 ?? ?? ?? ?? 67 64 FF 36 00 00 67 64 89 26 00 00 F1 90 90 90 90 EB 06 68 90 90 90 90 C3 9C 60 E8 02 90 90 90 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 ep_only = true [* PseudoSigner 0.1 [PEtite 2.x (level 0)] --> Anorganix] signature = 90 90 90 90 68 ?? ?? ?? ?? 67 64 FF 36 00 00 67 64 89 26 00 00 F1 90 90 90 90 B8 00 90 90 00 6A 00 68 90 90 90 00 64 FF 35 00 00 00 00 64 89 25 00 00 00 00 66 9C 60 50 8B D8 03 00 68 ep_only = true [* PseudoSigner 0.1 [PEtite 2.x (level 0)] --> Anorganix] signature = 90 90 90 90 68 ?? ?? ?? ?? 67 64 FF 36 00 00 67 64 89 26 00 00 F1 90 90 90 90 B8 00 90 90 00 6A 00 68 90 90 90 00 64 FF 35 00 00 00 00 64 89 25 00 00 00 00 66 9C 60 50 8B D8 03 00 68 ep_only = true [* PseudoSigner 0.1 [Ste@lth PE 1.01] --> Anorganix] signature = 0B C0 0B C0 0B C0 0B C0 0B C0 0B C0 0B C0 0B C0 BA ?? ?? ?? ?? FF E2 BA E0 10 40 00 B8 68 24 1A 40 89 02 83 C2 03 B8 40 00 E8 EE 89 02 83 C2 FD FF E2 2D 3D 5B 20 48 69 64 65 50 45 20 5D 3D 2D 90 00 00 00 ep_only = true [* PseudoSigner 0.1 [Ste@lth PE 1.01] --> Anorganix] signature = 0B C0 0B C0 0B C0 0B C0 0B C0 0B C0 0B C0 0B C0 BA ?? ?? ?? ?? FF E2 BA E0 10 40 00 B8 68 24 1A 40 89 02 83 C2 03 B8 40 00 E8 EE 89 02 83 C2 FD FF E2 2D 3D 5B 20 48 69 64 65 50 45 20 5D 3D 2D 90 00 00 00 ep_only = true [* PseudoSigner 0.1 [Video-Lan-Client] --> Anorganix] signature = 55 89 E5 83 EC 08 90 90 90 90 90 90 90 90 90 90 90 90 90 90 01 FF FF 01 01 01 00 01 90 90 90 90 90 90 90 90 90 90 90 90 90 90 00 01 00 01 00 01 90 90 00 01 E9 ep_only = true [* PseudoSigner 0.1 [Video-Lan-Client] --> Anorganix] signature = 55 89 E5 83 EC 08 90 90 90 90 90 90 90 90 90 90 90 90 90 90 01 FF FF 01 01 01 00 01 90 90 90 90 90 90 90 90 90 90 90 90 90 90 00 01 00 01 00 01 90 90 00 01 E9 ep_only = true [* PseudoSigner 0.2 [FSG 1.0] --> Anorganix] signature = 90 90 90 90 68 ?? ?? ?? ?? 67 64 FF 36 00 00 67 64 89 26 00 00 F1 90 90 90 90 BB D0 01 40 00 BF 00 10 40 00 BE 90 90 90 90 53 E8 0A 00 00 00 02 D2 75 05 8A 16 46 12 D2 C3 FC B2 80 A4 6A 02 5B ep_only = true [* PseudoSigner 0.2 [Macromedia Flash Projector 6.0] --> Anorganix] signature = 90 90 90 90 68 ?? ?? ?? ?? 67 64 FF 36 00 00 67 64 89 26 00 00 F1 90 90 90 90 83 EC 44 56 FF 15 24 81 49 00 8B F0 8A 06 3C 22 75 1C 8A 46 01 46 3C 22 74 0C 84 C0 74 08 8A 46 01 46 3C 22 75 F4 80 3E 22 75 0F 46 EB 0C ep_only = true [* PseudoSigner 0.2 [Video-Lan-Client] --> Anorganix] signature = 55 89 E5 83 EC 08 90 90 90 90 90 90 90 90 90 90 90 90 90 90 01 FF FF 01 01 01 00 01 90 90 90 90 90 90 90 90 90 90 90 90 90 90 00 01 00 01 00 01 90 90 00 01 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 53 56 52 56 51 9C 55 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 A7 72 45 00 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 55 9C 52 56 53 56 50 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 21 71 45 00 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 53 56 52 56 51 9C 55 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 A7 72 45 00 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 55 9C 52 56 53 56 50 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 21 71 45 00 C3 ep_only = true [ACProtect 1.09g -> Risco software Inc.] signature = 60 F9 50 E8 01 00 00 00 7C 58 58 49 50 E8 01 00 00 00 7E 58 58 79 04 66 B9 B8 72 E8 01 00 00 00 7A 83 C4 04 85 C8 EB 01 EB C1 F8 BE 72 03 73 01 74 0F 81 01 00 00 00 F9 EB 01 75 F9 E8 01 00 00 ep_only = true [ACProtect 1.09g -> Risco software Inc.] signature = 60 F9 50 E8 01 00 00 00 7C 58 58 49 50 E8 01 00 00 00 7E 58 58 79 04 66 B9 B8 72 E8 01 00 00 00 7A 83 C4 04 85 C8 EB 01 EB C1 F8 BE 72 03 73 01 74 0F 81 01 00 00 00 F9 EB 01 75 F9 E8 01 00 00 ep_only = true [Alloy 4.x -> PGWare LLC] signature = 9C 60 E8 02 00 00 00 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 07 30 40 00 87 DD 6A 04 68 00 10 00 00 68 00 02 00 00 6A 00 FF 95 A8 33 40 00 0B C0 0F 84 F6 01 00 00 89 85 2E 33 40 00 83 BD E8 32 40 00 01 74 0D 83 BD E4 32 40 00 01 74 2A 8B F8 EB 3E 68 ep_only = true [Alloy 4.x -> PGWare LLC] signature = 9C 60 E8 02 00 00 00 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 07 30 40 00 87 DD 6A 04 68 00 10 00 00 68 00 02 00 00 6A 00 FF 95 A8 33 40 00 0B C0 0F 84 F6 01 00 00 89 85 2E 33 40 00 83 BD E8 32 40 00 01 74 0D 83 BD E4 32 40 00 01 74 2A 8B F8 EB 3E 68 ep_only = true [Apex_c beta -> 500mhz] signature = 68 ?? ?? ?? ?? B9 FF FF FF 00 01 D0 F7 E2 72 01 48 E2 F7 B9 FF 00 00 00 8B 34 24 80 36 FD 46 E2 FA C3 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ep_only = true [Apex_c beta -> 500mhz] signature = 68 ?? ?? ?? ?? B9 FF FF FF 00 01 D0 F7 E2 72 01 48 E2 F7 B9 FF 00 00 00 8B 34 24 80 36 FD 46 E2 FA C3 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ep_only = true [Armadillo v3.01, v3.05] signature = 60 E8 00 00 00 00 5D 50 51 EB 0F B9 EB 0F B8 EB 07 B9 EB 0F 90 EB 08 FD EB 0B F2 EB F5 EB F6 F2 EB 08 FD EB E9 F3 EB E4 FC E9 59 58 50 51 EB 0F B9 EB 0F B8 EB 07 B9 EB 0F 90 EB 08 FD EB 0B F2 EB F5 EB F6 F2 EB 08 FD EB E9 F3 EB E4 FC E9 59 58 50 51 EB 0F ep_only = true [Armadillo v3.01, v3.05] signature = 60 E8 00 00 00 00 5D 50 51 EB 0F B9 EB 0F B8 EB 07 B9 EB 0F 90 EB 08 FD EB 0B F2 EB F5 EB F6 F2 EB 08 FD EB E9 F3 EB E4 FC E9 59 58 50 51 EB 0F B9 EB 0F B8 EB 07 B9 EB 0F 90 EB 08 FD EB 0B F2 EB F5 EB F6 F2 EB 08 FD EB E9 F3 EB E4 FC E9 59 58 50 51 EB 0F ep_only = true [Armadillo v3.10] signature = 55 8B EC 6A FF 68 E0 97 44 00 68 20 C0 42 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 53 56 57 89 65 E8 FF 15 4C 41 44 00 33 D2 8A D4 89 15 90 A1 44 00 8B C8 81 E1 FF 00 00 00 89 0D 8C A1 44 00 C1 E1 08 03 CA 89 0D 88 A1 44 00 C1 E8 10 A3 84 A1 ep_only = true [Armadillo v3.10] signature = 55 8B EC 6A FF 68 E0 97 44 00 68 20 C0 42 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 53 56 57 89 65 E8 FF 15 4C 41 44 00 33 D2 8A D4 89 15 90 A1 44 00 8B C8 81 E1 FF 00 00 00 89 0D 8C A1 44 00 C1 E1 08 03 CA 89 0D 88 A1 44 00 C1 E8 10 A3 84 A1 ep_only = true [ASProtect SKE 2.1x (dll) -> Alexey Solodovnikov (h)] signature = 60 E8 03 00 00 00 E9 EB 04 5D 45 55 C3 E8 01 00 00 00 EB 5D BB ED FF FF FF 03 DD 81 EB 00 ?? ?? ?? 80 7D 4D 01 75 0C 8B 74 24 28 83 FE 01 89 5D 4E 75 31 8D 45 53 50 53 FF B5 ED 09 00 00 8D 45 35 50 E9 82 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ep_only = true [ASProtect SKE 2.1x (dll) -> Alexey Solodovnikov (h)] signature = 60 E8 03 00 00 00 E9 EB 04 5D 45 55 C3 E8 01 00 00 00 EB 5D BB ED FF FF FF 03 DD 81 EB 00 ?? ?? ?? 80 7D 4D 01 75 0C 8B 74 24 28 83 FE 01 89 5D 4E 75 31 8D 45 53 50 53 FF B5 ED 09 00 00 8D 45 35 50 E9 82 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ep_only = true [ASProtect v1.23 RC4 build 08.07 (dll) -> Alexey Solodovnikov (h)] signature = 60 E8 03 00 00 00 E9 EB 04 5D 45 55 C3 E8 01 00 00 00 EB 5D BB ED FF FF FF 03 DD 81 EB 00 ?? ?? ?? 80 7D 4D 01 75 0C 8B 74 24 28 83 FE 01 89 5D 4E 75 31 8D 45 53 50 53 FF B5 D5 09 00 00 8D 45 35 50 E9 82 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ep_only = true [ASProtect v1.23 RC4 build 08.07 (dll) -> Alexey Solodovnikov (h)] signature = 60 E8 03 00 00 00 E9 EB 04 5D 45 55 C3 E8 01 00 00 00 EB 5D BB ED FF FF FF 03 DD 81 EB 00 ?? ?? ?? 80 7D 4D 01 75 0C 8B 74 24 28 83 FE 01 89 5D 4E 75 31 8D 45 53 50 53 FF B5 D5 09 00 00 8D 45 35 50 E9 82 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ep_only = true [beria v0.07 public WIP --> symbiont] signature = 83 EC 18 53 8B 1D 00 30 ?? ?? 55 56 57 68 30 07 00 00 33 ED 55 FF D3 8B F0 3B F5 74 0D 89 AE 20 07 00 00 E8 88 0F 00 00 EB 02 33 F6 6A 10 55 89 35 30 40 ?? ?? FF D3 8B F0 3B F5 74 09 89 2E E8 3C FE FF FF EB 02 33 F6 6A 18 55 89 35 D8 43 ?? ?? FF D3 8B F0 ep_only = true [beria v0.07 public WIP --> symbiont (h)] signature = 83 EC 18 53 8B 1D 00 30 ?? ?? 55 56 57 68 30 07 00 00 33 ED 55 FF D3 8B F0 3B F5 74 0D 89 AE 20 07 00 00 E8 88 0F 00 00 EB 02 33 F6 6A 10 55 89 35 30 40 ?? ?? FF D3 8B F0 3B F5 74 09 89 2E E8 3C FE FF FF EB 02 33 F6 6A 18 55 89 35 D8 43 ?? ?? FF D3 8B F0 ep_only = true [BeRo Tiny Pascal -> BeRo] signature = E9 ?? ?? ?? ?? 20 43 6F 6D 70 69 6C 65 64 20 62 79 3A 20 42 65 52 6F 54 69 6E 79 50 61 73 63 61 6C 20 2D 20 28 43 29 20 43 6F 70 79 72 69 67 68 74 20 32 30 30 36 2C 20 42 65 6E 6A 61 6D 69 6E 20 27 42 65 52 6F 27 20 52 6F 73 73 65 61 75 78 20 ep_only = true [BeRo Tiny Pascal -> BeRo] signature = E9 ?? ?? ?? ?? 20 43 6F 6D 70 69 6C 65 64 20 62 79 3A 20 42 65 52 6F 54 69 6E 79 50 61 73 63 61 6C 20 2D 20 28 43 29 20 43 6F 70 79 72 69 67 68 74 20 32 30 30 36 2C 20 42 65 6E 6A 61 6D 69 6E 20 27 42 65 52 6F 27 20 52 6F 73 73 65 61 75 78 20 ep_only = true [BeRo Tiny Pascal -> BeRo / Farbrausch] signature = E9 ?? ?? ?? ?? 20 43 6F 6D 70 69 6C 65 64 20 62 79 3A 20 42 65 52 6F 54 69 6E 79 50 61 73 63 61 6C 20 2D 20 28 43 29 20 43 6F 70 79 72 69 67 68 74 20 32 30 30 36 2C 20 42 65 6E 6A 61 6D 69 6E 20 27 42 65 52 6F 27 20 52 6F 73 73 65 61 75 78 20 ep_only = true [BobPack v1.00 --> BoB / BobSoft] signature = 60 E8 00 00 00 00 8B 0C 24 89 CD 83 E9 06 81 ED ?? ?? ?? ?? E8 3D 00 00 00 89 85 ?? ?? ?? ?? 89 C2 B8 5D 0A 00 00 8D 04 08 E8 E4 00 00 00 8B 70 04 01 D6 E8 76 00 00 00 E8 51 01 00 00 E8 01 01 ep_only = true [CICompress v1.0] signature = 6A 04 68 00 10 00 00 FF 35 9C 14 40 00 6A 00 FF 15 38 10 40 00 A3 FC 10 40 00 97 BE 00 20 40 00 E8 71 00 00 00 3B 05 9C 14 40 00 75 61 6A 00 6A 20 6A 02 6A 00 6A 03 68 00 00 00 C0 68 94 10 40 00 FF 15 2C 10 40 00 A3 F8 10 40 00 6A 00 68 F4 10 40 00 FF 35 ep_only = true [CICompress v1.0] signature = 6A 04 68 00 10 00 00 FF 35 9C 14 40 00 6A 00 FF 15 38 10 40 00 A3 FC 10 40 00 97 BE 00 20 40 00 E8 71 00 00 00 3B 05 9C 14 40 00 75 61 6A 00 6A 20 6A 02 6A 00 6A 03 68 00 00 00 C0 68 94 10 40 00 FF 15 2C 10 40 00 A3 F8 10 40 00 6A 00 68 F4 10 40 00 FF 35 ep_only = true [CipherWall Self-Extrator/Decryptor (Console) v1.5] signature = 90 61 BE 00 10 42 00 8D BE 00 00 FE FF C7 87 C0 20 02 00 0B 6E 5B 9B 57 83 CD FF EB 0E 90 90 90 90 8A 06 46 88 07 47 01 DB 75 07 8B 1E 83 EE FC 11 DB 72 ED B8 01 00 00 00 01 DB 75 07 8B 1E 83 EE FC 11 DB 11 C0 01 DB 73 EF 75 09 8B 1E 83 EE FC 11 DB 73 E4 ep_only = true [CipherWall Self-Extrator/Decryptor (Console) v1.5] signature = 90 61 BE 00 10 42 00 8D BE 00 00 FE FF C7 87 C0 20 02 00 0B 6E 5B 9B 57 83 CD FF EB 0E 90 90 90 90 8A 06 46 88 07 47 01 DB 75 07 8B 1E 83 EE FC 11 DB 72 ED B8 01 00 00 00 01 DB 75 07 8B 1E 83 EE FC 11 DB 11 C0 01 DB 73 EF 75 09 8B 1E 83 EE FC 11 DB 73 E4 ep_only = true [CipherWall Self-Extrator/Decryptor (GUI) v1.5] signature = 90 61 BE 00 10 42 00 8D BE 00 00 FE FF C7 87 C0 20 02 00 F9 89 C7 6A 57 83 CD FF EB 0E 90 90 90 90 8A 06 46 88 07 47 01 DB 75 07 8B 1E 83 EE FC 11 DB 72 ED B8 01 00 00 00 01 DB 75 07 8B 1E 83 EE FC 11 DB 11 C0 01 DB 73 EF 75 09 8B 1E 83 EE FC 11 DB 73 E4 ep_only = true [CipherWall Self-Extrator/Decryptor (GUI) v1.5] signature = 90 61 BE 00 10 42 00 8D BE 00 00 FE FF C7 87 C0 20 02 00 F9 89 C7 6A 57 83 CD FF EB 0E 90 90 90 90 8A 06 46 88 07 47 01 DB 75 07 8B 1E 83 EE FC 11 DB 72 ED B8 01 00 00 00 01 DB 75 07 8B 1E 83 EE FC 11 DB 11 C0 01 DB 73 EF 75 09 8B 1E 83 EE FC 11 DB 73 E4 ep_only = true [CreateInstall Stub vx.x] signature = 55 8B EC 81 EC 20 02 00 00 53 56 57 6A 00 FF 15 18 61 40 00 68 00 70 40 00 89 45 08 FF 15 14 61 40 00 85 C0 74 27 6A 00 A1 00 20 40 00 50 FF 15 3C 61 40 00 8B F0 6A 06 56 FF 15 38 61 40 00 6A 03 56 FF 15 38 61 40 00 E9 36 03 00 00 68 02 7F 00 00 33 F6 56 ep_only = true [CreateInstall Stub vx.x] signature = 55 8B EC 81 EC 20 02 00 00 53 56 57 6A 00 FF 15 18 61 40 00 68 00 70 40 00 89 45 08 FF 15 14 61 40 00 85 C0 74 27 6A 00 A1 00 20 40 00 50 FF 15 3C 61 40 00 8B F0 6A 06 56 FF 15 38 61 40 00 6A 03 56 FF 15 38 61 40 00 E9 36 03 00 00 68 02 7F 00 00 33 F6 56 ep_only = true [Crunch v4.0] signature = EB 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 E8 00 00 00 00 5D 81 ED 18 00 00 00 8B C5 55 60 9C 2B 85 E9 06 00 00 89 85 E1 06 00 00 FF 74 24 2C E8 BB 01 00 00 0F 82 92 05 00 00 E8 F1 03 00 00 49 0F 88 86 05 00 00 68 6C D9 B2 96 33 C0 50 E8 24 ep_only = true [Crunch v4.0] signature = EB 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 E8 00 00 00 00 5D 81 ED 18 00 00 00 8B C5 55 60 9C 2B 85 E9 06 00 00 89 85 E1 06 00 00 FF 74 24 2C E8 BB 01 00 00 0F 82 92 05 00 00 E8 F1 03 00 00 49 0F 88 86 05 00 00 68 6C D9 B2 96 33 C0 50 E8 24 ep_only = true [Crunch v5 -> Bit-Arts] signature = EB 15 03 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 68 00 00 00 00 55 E8 00 00 00 00 5D 81 ED 1D 00 00 00 8B C5 55 60 9C 2B 85 FC 07 00 00 89 85 E8 07 00 00 FF 74 24 2C E8 20 02 00 00 0F 82 94 06 00 00 E8 F3 04 00 00 49 0F 88 88 06 00 00 8B B5 E8 07 00 ep_only = true [Crunch v5 -> Bit-Arts] signature = EB 15 03 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 68 00 00 00 00 55 E8 00 00 00 00 5D 81 ED 1D 00 00 00 8B C5 55 60 9C 2B 85 FC 07 00 00 89 85 E8 07 00 00 FF 74 24 2C E8 20 02 00 00 0F 82 94 06 00 00 E8 F3 04 00 00 49 0F 88 88 06 00 00 8B B5 E8 07 00 ep_only = true [Crypto-Lock v2.02 (Eng) -> Ryan Thian] signature = 60 BE ?? 90 40 00 8D BE ?? ?? FF FF 57 83 CD FF EB 10 90 90 90 90 90 90 8A 06 46 88 07 47 01 DB 75 07 8B 1E 83 EE FC 11 DB 72 ED B8 01 00 00 00 01 DB 75 07 8B 1E 83 EE FC 11 DB 11 C0 01 DB 73 EF 75 09 8B 1E 83 EE FC 11 DB 73 E4 31 C9 83 E8 03 72 0D C1 E0 ep_only = true [Crypto-Lock v2.02 (Eng) -> Ryan Thian] signature = 60 BE 15 90 40 00 8D BE EB 7F FF FF 57 83 CD FF EB 10 90 90 90 90 90 90 8A 06 46 88 07 47 01 DB 75 07 8B 1E 83 EE FC 11 DB 72 ED B8 01 00 00 00 01 DB 75 07 8B 1E 83 EE FC 11 DB 11 C0 01 DB 73 EF 75 09 8B 1E 83 EE FC 11 DB 73 E4 31 C9 83 E8 03 72 0D C1 E0 ep_only = true [Crypto-Lock v2.02 (Eng) -> Ryan Thian] signature = 60 BE ?? 90 40 00 8D BE ?? ?? FF FF 57 83 CD FF EB 10 90 90 90 90 90 90 8A 06 46 88 07 47 01 DB 75 07 8B 1E 83 EE FC 11 DB 72 ED B8 01 00 00 00 01 DB 75 07 8B 1E 83 EE FC 11 DB 11 C0 01 DB 73 EF 75 09 8B 1E 83 EE FC 11 DB 73 E4 31 C9 83 E8 03 72 0D C1 E0 ep_only = true [Crypto-Lock v2.02 (Eng) -> Ryan Thian] signature = 60 BE 15 90 40 00 8D BE EB 7F FF FF 57 83 CD FF EB 10 90 90 90 90 90 90 8A 06 46 88 07 47 01 DB 75 07 8B 1E 83 EE FC 11 DB 72 ED B8 01 00 00 00 01 DB 75 07 8B 1E 83 EE FC 11 DB 11 C0 01 DB 73 EF 75 09 8B 1E 83 EE FC 11 DB 73 E4 31 C9 83 E8 03 72 0D C1 E0 ep_only = true [DBPE v2.10] signature = 9C 6A 10 73 0B EB 02 C1 51 E8 06 ?? ?? ?? C4 11 73 F7 5B CD 83 C4 04 EB 02 99 EB FF 0C 24 71 01 E8 79 E0 7A 01 75 83 C4 04 9D EB 01 75 68 5F 20 40 ?? E8 B0 EF FF FF 72 03 73 01 75 BE ep_only = true [DBPE v2.10] signature = 9C 6A 10 73 0B EB 02 C1 51 E8 06 ?? ?? ?? C4 11 73 F7 5B CD 83 C4 04 EB 02 99 EB FF 0C 24 71 01 E8 79 E0 7A 01 75 83 C4 04 9D EB 01 75 68 5F 20 40 ?? E8 B0 EF FF FF 72 03 73 01 75 BE ep_only = true [DEF 1.0 -> bart/xt] signature = BE ?? ?? 40 00 6A ?? 59 80 7E 07 00 74 11 8B 46 0C 05 00 00 40 00 8B 56 10 30 10 40 4A 75 FA 83 C6 28 E2 E4 68 ?? ?? 40 00 C3 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ep_only = true [DEF 1.0 -> bart/xt] signature = BE ?? ?? 40 00 6A ?? 59 80 7E 07 00 74 11 8B 46 0C 05 00 00 40 00 8B 56 10 30 10 40 4A 75 FA 83 C6 28 E2 E4 68 ?? ?? 40 00 C3 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ep_only = true [DEF v1.00 (Eng) -> bart/xt] signature = BE ?? 01 40 00 6A ?? 59 80 7E 07 00 74 11 8B 46 0C 05 00 00 40 00 8B 56 10 30 10 40 4A 75 FA 83 C6 28 E2 E4 68 ?? ?? 40 00 C3 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ep_only = true [DEF v1.00 (Eng) -> bart/xt] signature = BE ?? 01 40 00 6A ?? 59 80 7E 07 00 74 11 8B 46 0C 05 00 00 40 00 8B 56 10 30 10 40 4A 75 FA 83 C6 28 E2 E4 68 ?? ?? 40 00 C3 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ep_only = true [diPacker V1.X -> diProtector Software] signature = 0F 00 2D E9 01 00 A0 E3 68 01 00 EB 8C 00 00 EB 2B 00 00 EB 00 00 20 E0 1C 10 8F E2 8E 20 8F E2 00 30 A0 E3 67 01 00 EB 0F 00 BD E8 00 C0 8F E2 00 F0 9C E5 ep_only = true [diProtector V1.X -> diProtector Software] signature = 01 00 A0 E3 14 00 00 EB 00 00 20 E0 44 10 9F E5 03 2A A0 E3 40 30 A0 E3 AE 00 00 EB 30 00 8F E5 00 20 A0 E1 3A 0E 8F E2 00 00 80 E2 1C 10 9F E5 20 30 8F E2 0E 00 00 EB 14 00 9F E5 14 10 9F E5 7F 20 A0 E3 C5 00 00 EB 04 C0 8F E2 00 F0 9C E5 ep_only = true [DotFix NiceProtect vna] signature = 60 E8 55 00 00 00 8D BD 00 10 40 00 68 ?? ?? ?? 00 03 3C 24 8B F7 90 68 31 10 40 00 9B DB E3 55 DB 04 24 8B C7 DB 44 24 04 DE C1 DB 1C 24 8B 1C 24 66 AD 51 DB 04 24 90 90 DA 8D 77 10 40 00 DB 1C 24 D1 E1 29 ep_only = true [Dual's eXe 1.0] signature = 55 8B EC 81 EC 00 05 00 00 E8 00 00 00 00 5D 81 ED 0E 00 00 00 8D 85 08 03 00 00 89 28 33 FF 8D 85 7D 02 00 00 8D 8D 08 03 00 00 2B C8 8B 9D 58 03 00 00 E8 1C 02 00 00 8D 9D 61 02 00 00 8D B5 7C 02 00 00 46 80 3E 00 74 24 56 FF 95 0A 04 00 00 46 80 3E 00 ep_only = true [Dual's eXe 1.0] signature = 55 8B EC 81 EC 00 05 00 00 E8 00 00 00 00 5D 81 ED 0E 00 00 00 8D 85 08 03 00 00 89 28 33 FF 8D 85 7D 02 00 00 8D 8D 08 03 00 00 2B C8 8B 9D 58 03 00 00 E8 1C 02 00 00 8D 9D 61 02 00 00 8D B5 7C 02 00 00 46 80 3E 00 74 24 56 FF 95 0A 04 00 00 46 80 3E 00 ep_only = true [EmbedPE 1.13 -> cyclotron] signature = 83 EC 50 60 68 5D B9 52 5A E8 2F 99 00 00 DC 99 F3 57 05 68 B8 5E 2D C6 DA FD 48 63 05 3C 71 B8 5E 97 7C 36 7E 32 7C 08 4F 06 51 64 10 A3 F1 4E CF 25 CB 80 D2 99 54 46 ED E1 D3 46 86 2D 10 68 93 83 5C 46 4D 43 9B 8C D6 7C BB 99 69 97 71 2A 2F A3 38 6B 33 ep_only = true [EmbedPE 1.13 -> cyclotron] signature = 83 EC 50 60 68 5D B9 52 5A E8 2F 99 00 00 DC 99 F3 57 05 68 B8 5E 2D C6 DA FD 48 63 05 3C 71 B8 5E 97 7C 36 7E 32 7C 08 4F 06 51 64 10 A3 F1 4E CF 25 CB 80 D2 99 54 46 ED E1 D3 46 86 2D 10 68 93 83 5C 46 4D 43 9B 8C D6 7C BB 99 69 97 71 2A 2F A3 38 6B 33 ep_only = true [EP v1.0] signature = 50 83 C0 17 8B F0 97 33 C0 33 C9 B1 24 AC 86 C4 AC AA 86 C4 AA E2 F6 00 B8 40 00 03 00 3C 40 D2 33 8B 66 14 50 70 8B 8D 34 02 44 8B 18 10 48 70 03 BA 0C ?? ?? ?? ?? C0 33 FE 8B 30 AC 30 D0 C1 F0 10 C2 D0 30 F0 30 C2 C1 AA 10 42 42 CA C1 E2 04 5F E9 5E B1 ep_only = true [EP v1.0] signature = 50 83 C0 17 8B F0 97 33 C0 33 C9 B1 24 AC 86 C4 AC AA 86 C4 AA E2 F6 00 B8 40 00 03 00 3C 40 D2 33 8B 66 14 50 70 8B 8D 34 02 44 8B 18 10 48 70 03 BA 0C ?? ?? ?? ?? C0 33 FE 8B 30 AC 30 D0 C1 F0 10 C2 D0 30 F0 30 C2 C1 AA 10 42 42 CA C1 E2 04 5F E9 5E B1 ep_only = true [Exe Guarder v1.8 -> Exeicon.com (h)] signature = 55 8B EC 83 C4 D0 53 56 57 8D 75 FC 8B 44 24 30 25 00 00 FF FF 81 38 4D 5A 90 00 74 07 2D 00 10 00 00 EB F1 89 45 FC E8 C8 FF FF FF 2D B2 04 00 00 89 45 F4 8B 06 8B 40 3C 03 06 8B 40 78 03 06 8B C8 8B 51 20 03 16 8B 59 24 03 1E 89 5D F0 8B 59 1C 03 1E 89 ep_only = true [Exe Guarder v1.8 -> Exeicon.com (h)] signature = 55 8B EC 83 C4 D0 53 56 57 8D 75 FC 8B 44 24 30 25 00 00 FF FF 81 38 4D 5A 90 00 74 07 2D 00 10 00 00 EB F1 89 45 FC E8 C8 FF FF FF 2D B2 04 00 00 89 45 F4 8B 06 8B 40 3C 03 06 8B 40 78 03 06 8B C8 8B 51 20 03 16 8B 59 24 03 1E 89 5D F0 8B 59 1C 03 1E 89 ep_only = true [Exe Locker v1.0 --> IonIce] signature = E8 00 00 00 00 60 8B 6C 24 20 81 ED 05 00 00 00 3E 8F 85 6C 00 00 00 3E 8F 85 68 00 00 00 3E 8F 85 64 00 00 00 3E 8F 85 60 00 00 00 3E 8F 85 5C 00 00 00 3E 8F 85 58 00 00 00 3E 8F 85 54 00 00 ep_only = true [Exe Locker v1.0 --> IonIce] signature = E8 00 00 00 00 60 8B 6C 24 20 81 ED 05 00 00 00 3E 8F 85 6C 00 00 00 3E 8F 85 68 00 00 00 3E 8F 85 64 00 00 00 3E 8F 85 60 00 00 00 3E 8F 85 5C 00 00 00 3E 8F 85 58 00 00 00 3E 8F 85 54 00 00 ep_only = true [EXE Shield V0.5 -> Smoke] signature = E8 04 00 00 00 83 60 EB 0C 5D EB 05 45 55 EB 04 B8 EB F9 00 C3 E8 00 00 00 00 5D 81 ED BC 1A 40 00 EB 01 00 8D B5 46 1B 40 00 BA B3 0A 00 00 EB 01 00 8D 8D F9 25 40 00 8B 09 E8 14 00 00 00 83 EB 01 00 8B FE E8 00 00 00 00 58 83 C0 07 50 C3 00 EB 04 58 40 ep_only = true [EXE Shield V0.6 -> SMoKE] signature = E8 04 00 00 00 83 60 EB 0C 5D EB 05 45 55 EB 04 B8 EB F9 00 C3 E8 00 00 00 00 5D 81 ED D4 1A 40 00 EB 01 00 8D B5 5E 1B 40 00 BA A1 0B 00 00 EB 01 00 8D 8D FF 26 40 00 8B 09 E8 14 00 00 00 83 EB 01 00 8B FE E8 00 00 00 00 58 83 C0 07 50 C3 00 EB 04 58 40 ep_only = true [Exe Shield v2.7b] signature = EB 06 68 40 85 06 00 C3 9C 60 E8 02 00 00 00 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 3F 90 40 00 87 DD 8B 85 E6 90 40 00 01 85 33 90 40 00 66 C7 85 30 90 40 00 90 90 01 85 DA 90 40 00 01 85 DE 90 40 00 01 85 E2 90 40 00 BB 7B 11 00 00 03 9D EA 90 40 ep_only = true [Exe Shield v2.7b] signature = EB 06 68 40 85 06 00 C3 9C 60 E8 02 00 00 00 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 3F 90 40 00 87 DD 8B 85 E6 90 40 00 01 85 33 90 40 00 66 C7 85 30 90 40 00 90 90 01 85 DA 90 40 00 01 85 DE 90 40 00 01 85 E2 90 40 00 BB 7B 11 00 00 03 9D EA 90 40 ep_only = true [Exe Stealth 2.75a -> WebtoolMaster] signature = EB 58 53 68 61 72 65 77 61 72 65 2D 56 65 72 73 69 6F 6E 20 45 78 65 53 74 65 61 6C 74 68 2C 20 63 6F 6E 74 61 63 74 20 73 75 70 70 6F 72 74 40 77 65 62 74 6F 6F 6C 6D 61 73 74 65 72 2E 63 6F 6D 20 2D 20 77 77 77 2E 77 65 62 74 6F 6F 6C 6D 61 73 74 65 72 ep_only = true [ExeBundle v3.0 (small loader)] signature = 00 00 00 00 60 BE 00 F0 40 00 8D BE 00 20 FF FF 57 83 CD FF EB 10 90 90 90 90 90 90 8A 06 46 88 07 47 01 DB 75 07 8B 1E 83 EE FC 11 DB 72 ED B8 01 00 00 00 01 DB 75 07 8B 1E 83 EE FC 11 ep_only = true [ExeBundle v3.0 (small loader)] signature = 00 00 00 00 60 BE 00 F0 40 00 8D BE 00 20 FF FF 57 83 CD FF EB 10 90 90 90 90 90 90 8A 06 46 88 07 47 01 DB 75 07 8B 1E 83 EE FC 11 DB 72 ED B8 01 00 00 00 01 DB 75 07 8B 1E 83 EE FC 11 ep_only = true [ExeBundle v3.0 (standard loader)] signature = 00 00 00 00 60 BE 00 B0 42 00 8D BE 00 60 FD FF C7 87 B0 E4 02 00 31 3C 4B DF 57 83 CD FF EB 0E 90 90 90 90 8A 06 46 88 07 47 01 DB 75 07 8B 1E 83 EE FC 11 DB 72 ED B8 01 00 00 00 01 DB ep_only = true [ExeBundle v3.0 (standard loader)] signature = 00 00 00 00 60 BE 00 B0 42 00 8D BE 00 60 FD FF C7 87 B0 E4 02 00 31 3C 4B DF 57 83 CD FF EB 0E 90 90 90 90 8A 06 46 88 07 47 01 DB 75 07 8B 1E 83 EE FC 11 DB 72 ED B8 01 00 00 00 01 DB ep_only = true [ExeJoiner 1.0 -> Yoda f2f] signature = 68 00 10 40 00 68 04 01 00 00 E8 39 03 00 00 05 00 10 40 00 C6 00 5C 68 04 01 00 00 68 04 11 40 00 6A 00 E8 1A 03 00 00 6A 00 68 80 00 00 00 6A 03 6A 00 6A 01 68 00 00 00 80 68 04 11 40 00 E8 EC 02 00 00 83 F8 FF 0F 84 83 02 00 00 A3 08 12 40 00 6A 00 50 ep_only = true [ExeJoiner 1.0 -> Yoda f2f] signature = 68 00 10 40 00 68 04 01 00 00 E8 39 03 00 00 05 00 10 40 00 C6 00 5C 68 04 01 00 00 68 04 11 40 00 6A 00 E8 1A 03 00 00 6A 00 68 80 00 00 00 6A 03 6A 00 6A 01 68 00 00 00 80 68 04 11 40 00 E8 EC 02 00 00 83 F8 FF 0F 84 83 02 00 00 A3 08 12 40 00 6A 00 50 ep_only = true [ExeShield 3.6 -> www.exeshield.com] signature = B8 ?? ?? ?? 00 50 64 FF 35 00 00 00 00 64 89 25 00 00 00 00 33 C0 89 08 50 45 43 6F 6D 70 61 63 74 32 00 CE 1E 42 AF F8 D6 CC E9 FB C8 4F 1B 22 7C B4 C8 0D BD 71 A9 C8 1F 5F B1 29 8F 11 73 8F 00 D1 88 87 A9 3F 4D 00 6C 3C BF C0 80 F7 AD 35 23 EB 84 82 6F ep_only = true [ExeShield v3.7 -> ExeShield Team (h)] signature = B8 ?? ?? ?? 00 50 64 FF 35 00 00 00 00 64 89 25 00 00 00 00 33 C0 89 08 50 45 43 6F 6D 70 61 63 74 32 00 CE 1E 42 AF F8 D6 CC E9 FB C8 4F 1B 22 7C B4 C8 0D BD 71 A9 C8 1F 5F B1 29 8F 11 73 8F 00 D1 88 87 A9 3F 4D 00 6C 3C BF C0 80 F7 AD 35 23 EB 84 82 6F ep_only = true [EXEStealth v2.75a -> WebtoolMaster (h)] signature = EB 58 53 68 61 72 65 77 61 72 65 2D 56 65 72 73 69 6F 6E 20 45 78 65 53 74 65 61 6C 74 68 2C 20 63 6F 6E 74 61 63 74 20 73 75 70 70 6F 72 74 40 77 65 62 74 6F 6F 6C 6D 61 73 74 65 72 2E 63 6F 6D 20 2D 20 77 77 77 2E 77 65 62 74 6F 6F 6C 6D 61 73 74 65 72 ep_only = true [FixupPak v1.20] signature = 55 E8 00 00 00 00 5D 81 ED ?? ?? 00 00 BE 00 ?? 00 00 03 F5 BA 00 00 ?? ?? 2B D5 8B DD 33 C0 AC 3C 00 74 3D 3C 01 74 0E 3C 02 74 0E 3C 03 74 0D 03 D8 29 13 EB E7 66 AD EB F6 AD EB F3 AC 0F B6 C8 3C 00 74 06 3C 01 74 09 EB 0A 66 AD 0F B7 C8 EB 03 AD 8B C8 ep_only = true [FixupPak v1.20] signature = 55 E8 00 00 00 00 5D 81 ED ?? ?? 00 00 BE 00 ?? 00 00 03 F5 BA 00 00 ?? ?? 2B D5 8B DD 33 C0 AC 3C 00 74 3D 3C 01 74 0E 3C 02 74 0E 3C 03 74 0D 03 D8 29 13 EB E7 66 AD EB F6 AD EB F3 AC 0F B6 C8 3C 00 74 06 3C 01 74 09 EB 0A 66 AD 0F B7 C8 EB 03 AD 8B C8 ep_only = true [FreePascal 2.0.0 Win32 -> (Bérczi Gábor, Pierre Muller & Peter Vreman)] signature = C6 05 ?? ?? ?? ?? 01 E8 74 00 00 00 C6 05 00 80 40 00 00 E8 68 00 00 00 50 E8 00 00 00 00 FF 25 D8 A1 40 00 90 90 90 90 90 90 90 90 90 90 90 90 55 89 E5 83 EC 04 89 5D FC E8 92 00 00 00 E8 ED 00 00 00 89 C3 B9 ?? 70 40 00 89 DA B8 00 00 00 00 E8 0A 01 00 ep_only = true [FreePascal 2.0.0 Win32 -> (Bérczi Gábor, Pierre Muller & Peter Vreman)] signature = C6 05 00 80 40 00 01 E8 74 00 00 00 C6 05 00 80 40 00 00 E8 68 00 00 00 50 E8 00 00 00 00 FF 25 D8 A1 40 00 90 90 90 90 90 90 90 90 90 90 90 90 55 89 E5 83 EC 04 89 5D FC E8 92 00 00 00 E8 ED 00 00 00 89 C3 B9 ?? 70 40 00 89 DA B8 00 00 00 00 E8 0A 01 00 ep_only = true [FSG v1.00 (Eng) -> dulek/xt] signature = BB D0 01 40 00 BF 00 10 40 00 BE ?? ?? ?? 00 53 E8 0A 00 00 00 02 D2 75 05 8A 16 46 12 D2 C3 FC B2 80 A4 6A 02 5B FF 14 24 73 F7 33 C9 FF 14 24 73 18 33 C0 FF 14 24 73 21 B3 02 41 B0 10 FF 14 24 12 C0 73 F9 75 3F AA EB DC E8 43 00 00 00 2B CB 75 10 E8 38 ep_only = true [FSG v1.00 (Eng) -> dulek/xt] signature = BB D0 01 40 00 BF 00 10 40 00 BE ?? ?? ?? 00 53 E8 0A 00 00 00 02 D2 75 05 8A 16 46 12 D2 C3 FC B2 80 A4 6A 02 5B FF 14 24 73 F7 33 C9 FF 14 24 73 18 33 C0 FF 14 24 73 21 B3 02 41 B0 10 FF 14 24 12 C0 73 F9 75 3F AA EB DC E8 43 00 00 00 2B CB 75 10 E8 38 ep_only = true [FSG v1.10 (Eng) -> bart/xt] signature = BB D0 01 40 00 BF 00 10 40 00 BE ?? ?? ?? 00 53 E8 0A 00 00 00 02 D2 75 05 8A 16 46 12 D2 C3 B2 80 A4 6A 02 5B FF 14 24 73 F7 33 C9 FF 14 24 73 18 33 C0 FF 14 24 73 21 B3 02 41 B0 10 FF 14 24 12 C0 73 F9 75 3F AA EB DC E8 43 00 00 00 2B CB 75 10 E8 38 00 ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Borland C++)] signature = 23 CA EB 02 5A 0D E8 02 00 00 00 6A 35 58 C1 C9 10 BE 80 ?? ?? 00 0F B6 C9 EB 02 CD 20 BB F4 00 00 00 EB 02 04 FA EB 01 FA EB 01 5F EB 02 CD 20 8A 16 EB 02 11 31 80 E9 31 EB 02 30 11 C1 E9 11 80 EA 04 EB 02 F0 EA 33 CB 81 EA AB AB 19 08 04 D5 03 C2 80 EA ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Borland C++)] signature = 23 CA EB 02 5A 0D E8 02 00 00 00 6A 35 58 C1 C9 10 BE 80 ?? ?? 00 0F B6 C9 EB 02 CD 20 BB F4 00 00 00 EB 02 04 FA EB 01 FA EB 01 5F EB 02 CD 20 8A 16 EB 02 11 31 80 E9 31 EB 02 30 11 C1 E9 11 80 EA 04 EB 02 F0 EA 33 CB 81 EA AB AB 19 08 04 D5 03 C2 80 EA ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Borland Delphi / Borland C++)] signature = 2B C2 E8 02 00 00 00 95 4A 59 8D 3D 52 F1 2A E8 C1 C8 1C BE 2E ?? ?? 18 EB 02 AB A0 03 F7 EB 02 CD 20 68 F4 00 00 00 0B C7 5B 03 CB 8A 06 8A 16 E8 02 00 00 00 8D 46 59 EB 01 A4 02 D3 EB 02 CD 20 02 D3 E8 02 00 00 00 57 AB 58 81 C2 AA 87 AC B9 0F BE C9 80 ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Borland Delphi / Borland C++)] signature = 2B C2 E8 02 00 00 00 95 4A 59 8D 3D 52 F1 2A E8 C1 C8 1C BE 2E ?? ?? 18 EB 02 AB A0 03 F7 EB 02 CD 20 68 F4 00 00 00 0B C7 5B 03 CB 8A 06 8A 16 E8 02 00 00 00 8D 46 59 EB 01 A4 02 D3 EB 02 CD 20 02 D3 E8 02 00 00 00 57 AB 58 81 C2 AA 87 AC B9 0F BE C9 80 ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Borland Delphi / Microsoft Visual C++)] signature = 1B DB E8 02 00 00 00 1A 0D 5B 68 80 ?? ?? 00 E8 01 00 00 00 EA 5A 58 EB 02 CD 20 68 F4 00 00 00 EB 02 CD 20 5E 0F B6 D0 80 CA 5C 8B 38 EB 01 35 EB 02 DC 97 81 EF F7 65 17 43 E8 02 00 00 00 97 CB 5B 81 C7 B2 8B A1 0C 8B D1 83 EF 17 EB 02 0C 65 83 EF 43 13 ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Borland Delphi / Microsoft Visual C++)] signature = 1B DB E8 02 00 00 00 1A 0D 5B 68 80 ?? ?? 00 E8 01 00 00 00 EA 5A 58 EB 02 CD 20 68 F4 00 00 00 EB 02 CD 20 5E 0F B6 D0 80 CA 5C 8B 38 EB 01 35 EB 02 DC 97 81 EF F7 65 17 43 E8 02 00 00 00 97 CB 5B 81 C7 B2 8B A1 0C 8B D1 83 EF 17 EB 02 0C 65 83 EF 43 13 ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (MASM32 / TASM32)] signature = 03 F7 23 FE 33 FB EB 02 CD 20 BB 80 ?? 40 00 EB 01 86 EB 01 90 B8 F4 00 00 00 83 EE 05 2B F2 81 F6 EE 00 00 00 EB 02 CD 20 8A 0B E8 02 00 00 00 A9 54 5E C1 EE 07 F7 D7 EB 01 DE 81 E9 B7 96 A0 C4 EB 01 6B EB 02 CD 20 80 E9 4B C1 CF 08 EB 01 71 80 E9 1C EB ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (MASM32 / TASM32)] signature = 03 F7 23 FE 33 FB EB 02 CD 20 BB 80 ?? 40 00 EB 01 86 EB 01 90 B8 F4 00 00 00 83 EE 05 2B F2 81 F6 EE 00 00 00 EB 02 CD 20 8A 0B E8 02 00 00 00 A9 54 5E C1 EE 07 F7 D7 EB 01 DE 81 E9 B7 96 A0 C4 EB 01 6B EB 02 CD 20 80 E9 4B C1 CF 08 EB 01 71 80 E9 1C EB ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Microsoft Visual C++ 6.0 / 7.0)] signature = 0B D0 8B DA E8 02 00 00 00 40 A0 5A EB 01 9D B8 80 ?? ?? 00 EB 02 CD 20 03 D3 8D 35 F4 00 00 00 EB 01 35 EB 01 88 80 CA 7C 80 F3 74 8B 38 EB 02 AC BA 03 DB E8 01 00 00 00 A5 5B C1 C2 0B 81 C7 DA 10 0A 4E EB 01 08 2B D1 83 EF 14 EB 02 CD 20 33 D3 83 EF 27 ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Microsoft Visual C++ 6.0 / 7.0)] signature = 0B D0 8B DA E8 02 00 00 00 40 A0 5A EB 01 9D B8 80 ?? ?? 00 EB 02 CD 20 03 D3 8D 35 F4 00 00 00 EB 01 35 EB 01 88 80 CA 7C 80 F3 74 8B 38 EB 02 AC BA 03 DB E8 01 00 00 00 A5 5B C1 C2 0B 81 C7 DA 10 0A 4E EB 01 08 2B D1 83 EF 14 EB 02 CD 20 33 D3 83 EF 27 ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Microsoft Visual C++ 6.0)] signature = 03 DE EB 01 F8 B8 80 ?? 42 00 EB 02 CD 20 68 17 A0 B3 AB EB 01 E8 59 0F B6 DB 68 0B A1 B3 AB EB 02 CD 20 5E 80 CB AA 2B F1 EB 02 CD 20 43 0F BE 38 13 D6 80 C3 47 2B FE EB 01 F4 03 FE EB 02 4F 4E 81 EF 93 53 7C 3C 80 C3 29 81 F7 8A 8F 67 8B 80 C3 C7 2B FE ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Microsoft Visual C++ 6.0)] signature = 03 DE EB 01 F8 B8 80 ?? 42 00 EB 02 CD 20 68 17 A0 B3 AB EB 01 E8 59 0F B6 DB 68 0B A1 B3 AB EB 02 CD 20 5E 80 CB AA 2B F1 EB 02 CD 20 43 0F BE 38 13 D6 80 C3 47 2B FE EB 01 F4 03 FE EB 02 4F 4E 81 EF 93 53 7C 3C 80 C3 29 81 F7 8A 8F 67 8B 80 C3 C7 2B FE ep_only = true [FSG v1.20 (Eng) -> dulek/xt -> (Borland C++)] signature = C1 F0 07 EB 02 CD 20 BE 80 ?? ?? 00 1B C6 8D 1D F4 00 00 00 0F B6 06 EB 02 CD 20 8A 16 0F B6 C3 E8 01 00 00 00 DC 59 80 EA 37 EB 02 CD 20 2A D3 EB 02 CD 20 80 EA 73 1B CF 32 D3 C1 C8 0E 80 EA 23 0F B6 C9 02 D3 EB 01 B5 02 D3 EB 02 DB 5B 81 C2 F6 56 7B F6 ep_only = true [FSG v1.20 (Eng) -> dulek/xt -> (Borland C++)] signature = C1 F0 07 EB 02 CD 20 BE 80 ?? ?? 00 1B C6 8D 1D F4 00 00 00 0F B6 06 EB 02 CD 20 8A 16 0F B6 C3 E8 01 00 00 00 DC 59 80 EA 37 EB 02 CD 20 2A D3 EB 02 CD 20 80 EA 73 1B CF 32 D3 C1 C8 0E 80 EA 23 0F B6 C9 02 D3 EB 01 B5 02 D3 EB 02 DB 5B 81 C2 F6 56 7B F6 ep_only = true [FSG v1.20 (Eng) -> dulek/xt -> (Borland Delphi / Borland C++)] signature = 0F BE C1 EB 01 0E 8D 35 C3 BE B6 22 F7 D1 68 43 ?? ?? 22 EB 02 B5 15 5F C1 F1 15 33 F7 80 E9 F9 BB F4 00 00 00 EB 02 8F D0 EB 02 08 AD 8A 16 2B C7 1B C7 80 C2 7A 41 80 EA 10 EB 01 3C 81 EA CF AE F1 AA EB 01 EC 81 EA BB C6 AB EE 2C E3 32 D3 0B CB 81 EA AB ep_only = true [FSG v1.20 (Eng) -> dulek/xt -> (Borland Delphi / Borland C++)] signature = 0F BE C1 EB 01 0E 8D 35 C3 BE B6 22 F7 D1 68 43 ?? ?? 22 EB 02 B5 15 5F C1 F1 15 33 F7 80 E9 F9 BB F4 00 00 00 EB 02 8F D0 EB 02 08 AD 8A 16 2B C7 1B C7 80 C2 7A 41 80 EA 10 EB 01 3C 81 EA CF AE F1 AA EB 01 EC 81 EA BB C6 AB EE 2C E3 32 D3 0B CB 81 EA AB ep_only = true [FSG v1.20 (Eng) -> dulek/xt -> (Borland Delphi / Microsoft Visual C++)] signature = 0F B6 D0 E8 01 00 00 00 0C 5A B8 80 ?? ?? 00 EB 02 00 DE 8D 35 F4 00 00 00 F7 D2 EB 02 0E EA 8B 38 EB 01 A0 C1 F3 11 81 EF 84 88 F4 4C EB 02 CD 20 83 F7 22 87 D3 33 FE C1 C3 19 83 F7 26 E8 02 00 00 00 BC DE 5A 81 EF F7 EF 6F 18 EB 02 CD 20 83 EF 7F EB 01 ep_only = true [FSG v1.20 (Eng) -> dulek/xt -> (Borland Delphi / Microsoft Visual C++)] signature = 0F B6 D0 E8 01 00 00 00 0C 5A B8 80 ?? ?? 00 EB 02 00 DE 8D 35 F4 00 00 00 F7 D2 EB 02 0E EA 8B 38 EB 01 A0 C1 F3 11 81 EF 84 88 F4 4C EB 02 CD 20 83 F7 22 87 D3 33 FE C1 C3 19 83 F7 26 E8 02 00 00 00 BC DE 5A 81 EF F7 EF 6F 18 EB 02 CD 20 83 EF 7F EB 01 ep_only = true [FSG v1.20 (Eng) -> dulek/xt -> (MASM32 / TASM32)] signature = 33 C2 2C FB 8D 3D 7E 45 B4 80 E8 02 00 00 00 8A 45 58 68 02 ?? 8C 7F EB 02 CD 20 5E 80 C9 16 03 F7 EB 02 40 B0 68 F4 00 00 00 80 F1 2C 5B C1 E9 05 0F B6 C9 8A 16 0F B6 C9 0F BF C7 2A D3 E8 02 00 00 00 99 4C 58 80 EA 53 C1 C9 16 2A D3 E8 02 00 00 00 9D CE ep_only = true [FSG v1.20 (Eng) -> dulek/xt -> (MASM32 / TASM32)] signature = 33 C2 2C FB 8D 3D 7E 45 B4 80 E8 02 00 00 00 8A 45 58 68 02 ?? 8C 7F EB 02 CD 20 5E 80 C9 16 03 F7 EB 02 40 B0 68 F4 00 00 00 80 F1 2C 5B C1 E9 05 0F B6 C9 8A 16 0F B6 C9 0F BF C7 2A D3 E8 02 00 00 00 99 4C 58 80 EA 53 C1 C9 16 2A D3 E8 02 00 00 00 9D CE ep_only = true [FSG v1.20 (Eng) -> dulek/xt -> (Microsoft Visual C++ 6.0 / 7.0)] signature = EB 02 CD 20 EB 01 91 8D 35 80 ?? ?? 00 33 C2 68 83 93 7E 7D 0C A4 5B 23 C3 68 77 93 7E 7D EB 01 FA 5F E8 02 00 00 00 F7 FB 58 33 DF EB 01 3F E8 02 00 00 00 11 88 58 0F B6 16 EB 02 CD 20 EB 02 86 2F 2A D3 EB 02 CD 20 80 EA 2F EB 01 52 32 D3 80 E9 CD 80 EA ep_only = true [FSG v1.20 (Eng) -> dulek/xt -> (Microsoft Visual C++ 6.0 / 7.0)] signature = EB 02 CD 20 EB 01 91 8D 35 80 ?? ?? 00 33 C2 68 83 93 7E 7D 0C A4 5B 23 C3 68 77 93 7E 7D EB 01 FA 5F E8 02 00 00 00 F7 FB 58 33 DF EB 01 3F E8 02 00 00 00 11 88 58 0F B6 16 EB 02 CD 20 EB 02 86 2F 2A D3 EB 02 CD 20 80 EA 2F EB 01 52 32 D3 80 E9 CD 80 EA ep_only = true [FSG v1.20 (Eng) -> dulek/xt -> (Microsoft Visual C++ 6.0)] signature = C1 E0 06 EB 02 CD 20 EB 01 27 EB 01 24 BE 80 ?? 42 00 49 EB 01 99 8D 1D F4 00 00 00 EB 01 5C F7 D8 1B CA EB 01 31 8A 16 80 E9 41 EB 01 C2 C1 E0 0A EB 01 A1 81 EA A8 8C 18 A1 34 46 E8 01 00 00 00 62 59 32 D3 C1 C9 02 EB 01 68 80 F2 1A 0F BE C9 F7 D1 2A D3 ep_only = true [FSG v1.20 (Eng) -> dulek/xt -> (Microsoft Visual C++ 6.0)] signature = C1 E0 06 EB 02 CD 20 EB 01 27 EB 01 24 BE 80 ?? 42 00 49 EB 01 99 8D 1D F4 00 00 00 EB 01 5C F7 D8 1B CA EB 01 31 8A 16 80 E9 41 EB 01 C2 C1 E0 0A EB 01 A1 81 EA A8 8C 18 A1 34 46 E8 01 00 00 00 62 59 32 D3 C1 C9 02 EB 01 68 80 F2 1A 0F BE C9 F7 D1 2A D3 ep_only = true [FSG v1.3] signature = BB D0 01 40 00 BF 00 10 40 00 BE ?? ?? ?? ?? 53 E8 0A 00 00 00 02 D2 75 05 8A 16 46 12 D2 C3 B2 80 A4 6A 02 5B FF 14 24 73 F7 33 C9 FF 14 24 73 18 33 C0 FF 14 24 73 21 B3 02 41 B0 10 FF 14 24 12 C0 73 F9 75 3F AA EB DC E8 43 00 00 00 2B CB 75 10 E8 38 00 ep_only = true [FSG v1.3] signature = BB D0 01 40 00 BF 00 10 40 00 BE ?? ?? ?? ?? 53 E8 0A 00 00 00 02 D2 75 05 8A 16 46 12 D2 C3 B2 80 A4 6A 02 5B FF 14 24 73 F7 33 C9 FF 14 24 73 18 33 C0 FF 14 24 73 21 B3 02 41 B0 10 FF 14 24 12 C0 73 F9 75 3F AA EB DC E8 43 00 00 00 2B CB 75 10 E8 38 00 ep_only = true [FSG v1.30 (Eng) -> dulek/xt] signature = BB D0 01 40 00 BF 00 10 40 00 BE ?? ?? ?? 00 53 E8 0A 00 00 00 02 D2 75 05 8A 16 46 12 D2 C3 B2 80 A4 6A 02 5B FF 14 24 73 F7 33 C9 FF 14 24 73 18 33 C0 FF 14 24 73 21 B3 02 41 B0 10 FF 14 24 12 C0 73 F9 75 3F AA EB DC E8 43 00 00 00 2B CB 75 10 E8 38 00 ep_only = true [FSG v1.31 (Eng) -> dulek/xt] signature = BB D0 01 40 00 BF 00 10 40 00 BE ?? ?? ?? 00 53 BB ?? ?? ?? 00 B2 80 A4 B6 80 FF D3 73 F9 33 C9 FF D3 73 16 33 C0 FF D3 73 23 B6 80 41 B0 10 FF D3 12 C0 73 FA 75 42 AA EB E0 E8 46 00 00 00 02 F6 83 D9 01 75 10 E8 38 00 00 00 EB 28 AC D1 E8 74 48 13 C9 EB ep_only = true [FSG v1.31 (Eng) -> dulek/xt] signature = BB D0 01 40 00 BF 00 10 40 00 BE ?? ?? ?? 00 53 BB ?? ?? ?? 00 B2 80 A4 B6 80 FF D3 73 F9 33 C9 FF D3 73 16 33 C0 FF D3 73 23 B6 80 41 B0 10 FF D3 12 C0 73 FA 75 42 AA EB E0 E8 46 00 00 00 02 F6 83 D9 01 75 10 E8 38 00 00 00 EB 28 AC D1 E8 74 48 13 C9 EB ep_only = true [FSG v1.33 (Eng) -> dulek/xt] signature = BE A4 01 40 00 AD 93 AD 97 AD 56 96 B2 80 A4 B6 80 FF 13 73 F9 33 C9 FF 13 73 16 33 C0 FF 13 73 1F B6 80 41 B0 10 FF 13 12 C0 73 FA 75 3C AA EB E0 FF 53 08 02 F6 83 D9 01 75 0E FF 53 04 EB 26 AC D1 E8 74 2F 13 C9 EB 1A 91 48 C1 E0 08 AC FF 53 04 3D 00 7D ep_only = true [FSG v1.33 (Eng) -> dulek/xt] signature = BE A4 01 40 00 AD 93 AD 97 AD 56 96 B2 80 A4 B6 80 FF 13 73 F9 33 C9 FF 13 73 16 33 C0 FF 13 73 1F B6 80 41 B0 10 FF 13 12 C0 73 FA 75 3C AA EB E0 FF 53 08 02 F6 83 D9 01 75 0E FF 53 04 EB 26 AC D1 E8 74 2F 13 C9 EB 1A 91 48 C1 E0 08 AC FF 53 04 3D 00 7D ep_only = true [Fuck'n'Joy v1.0c -> UsAr] signature = 60 E8 00 00 00 00 5D 81 ED D8 05 40 00 FF 74 24 20 E8 8C 02 00 00 0B C0 0F 84 2C 01 00 00 89 85 6C 08 40 00 8D 85 2F 08 40 00 50 FF B5 6C 08 40 00 E8 EF 02 00 00 0B C0 0F 84 0C 01 00 00 89 85 3B 08 40 00 8D 85 3F 08 40 00 50 FF B5 6C 08 40 00 E8 CF 02 00 ep_only = true [Fuck'n'Joy v1.0c -> UsAr] signature = 60 E8 00 00 00 00 5D 81 ED D8 05 40 00 FF 74 24 20 E8 8C 02 00 00 0B C0 0F 84 2C 01 00 00 89 85 6C 08 40 00 8D 85 2F 08 40 00 50 FF B5 6C 08 40 00 E8 EF 02 00 00 0B C0 0F 84 0C 01 00 00 89 85 3B 08 40 00 8D 85 3F 08 40 00 50 FF B5 6C 08 40 00 E8 CF 02 00 ep_only = true [Goat's PE Mutilator 1.6] signature = E8 EA 0B 00 00 ?? ?? ?? 8B 1C 79 F6 63 D8 8D 22 B0 BF F6 49 08 C3 02 BD 3B 6C 29 46 13 28 5D 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ep_only = true [hmimys Protect v1.0] signature = E8 BA 00 00 00 ?? 00 00 00 00 ?? ?? 00 00 10 40 00 ?? ?? ?? 00 ?? ?? ?? 00 00 ?? ?? 00 ?? ?? ?? 00 ?? ?? ?? 00 ?? ?? ?? 00 ?? ?? ?? 00 ?? ?? ?? 00 ?? 00 00 00 00 00 00 00 ?? ?? ?? 00 00 00 00 00 00 00 00 00 ?? ?? ?? 00 ?? ?? ?? 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ?? ?? ?? 00 ?? ?? ?? 00 ?? ?? ?? 00 ?? ?? ?? 00 00 00 00 00 4B 65 72 6E 65 6C 33 32 2E 64 6C 6C 00 00 00 4C 6F 61 64 4C 69 62 72 61 72 79 41 00 00 00 47 65 74 50 72 6F 63 41 64 64 72 65 73 73 00 00 00 56 69 72 74 75 61 6C 46 72 65 65 00 00 00 56 69 72 74 75 61 6C 41 6C 6C 6F 63 00 5E 83 C6 64 AD 50 AD 50 83 EE 6C AD 50 AD 50 AD 50 AD 50 AD 50 E8 E7 07 00 00 AD 8B DE 8B F0 83 C3 44 AD 85 C0 74 32 8B F8 56 FF 13 8B E8 AC 84 C0 75 FB AC 84 C0 74 EA 4E AD A9 00 00 00 ep_only = true [InstallAnywhere 6.1 -> Zero G Software Inc] signature = 60 BE 00 A0 42 00 8D BE 00 70 FD FF 57 83 CD FF EB 10 90 90 90 90 90 90 8A 06 46 88 07 47 01 DB 75 07 8B 1E 83 EE FC 11 DB 72 ED B8 01 00 00 00 01 DB 75 07 8B 1E 83 EE FC 11 DB 11 C0 01 DB 73 EF 75 09 8B 1E 83 EE FC 11 DB 73 E4 31 C9 83 E8 03 72 0D C1 E0 ep_only = true [InstallAnywhere 6.1 ->Zero G Software Inc] signature = 60 BE 00 A0 42 00 8D BE 00 70 FD FF 57 83 CD FF EB 10 90 90 90 90 90 90 8A 06 46 88 07 47 01 DB 75 07 8B 1E 83 EE FC 11 DB 72 ED B8 01 00 00 00 01 DB 75 07 ep_only = true [InstallShield Custom] signature = 55 8B EC 83 EC 44 56 FF 15 ?? ?? 41 00 8B F0 85 F6 75 08 6A FF FF 15 ?? ?? 41 00 8A 06 57 8B 3D ?? ?? 41 00 3C 22 75 1B 56 FF D7 8B F0 8A 06 3C 22 74 04 84 C0 75 F1 80 3E 22 75 15 56 FF D7 8B ep_only = true [KGB SFX] signature = 60 BE 00 A0 46 00 8D BE 00 70 F9 FF 57 83 CD FF EB 10 90 90 90 90 90 90 8A 06 46 88 07 47 01 DB 75 07 8B 1E 83 EE FC 11 DB 72 ED B8 01 00 00 00 01 DB 75 07 8B 1E 83 EE FC 11 DB 11 C0 01 DB 73 ep_only = true [LaunchAnywhere v4.0.0.1] signature = 55 89 E5 53 83 EC 48 55 B8 FF FF FF FF 50 50 68 E0 3E 42 00 64 FF 35 00 00 00 00 64 89 25 00 00 00 00 68 C0 69 44 00 E8 E4 80 FF FF 59 E8 4E 29 00 00 E8 C9 0D 00 00 85 C0 75 08 6A FF E8 6E 2B 00 00 59 E8 A8 2C 00 00 E8 23 2E 00 00 FF 15 4C C2 44 00 89 C3 ep_only = true [Macromedia Windows Flash Projector/Player v5.0] signature = 83 EC 44 56 FF 15 70 61 44 00 8B F0 8A 06 3C 22 75 1C 8A 46 01 46 3C 22 74 0C 84 C0 74 08 8A 46 01 46 3C 22 75 F4 80 3E 22 75 0F 46 EB 0C 3C 20 7E 08 8A 46 01 46 3C 20 7F F8 8A 06 84 C0 74 0C 3C 20 7F 08 8A 46 01 46 84 C0 75 F4 8D 44 24 04 C7 44 24 30 00 ep_only = true [Microsoft Visual C# / Basic .NET] signature = FF 25 00 20 ?? ?? 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ep_only = true [Microsoft Visual C++ 6.0 SFX Custom] signature = E8 21 48 00 00 E9 16 FE FF FF 51 C7 01 08 B4 00 30 E8 A4 48 00 00 59 C3 56 8B F1 E8 EA FF FF FF F6 ?? ?? ?? ?? 74 07 56 E8 F6 04 00 00 59 8B C6 5E C2 04 00 8B 44 24 04 83 C1 09 51 83 C0 09 50 ep_only = true [Microsoft Visual C++ 7.0 Custom] signature = 60 BE 00 B0 44 00 8D BE 00 60 FB FF 57 83 CD FF EB 10 90 90 90 90 90 90 8A 06 46 88 07 47 01 DB 75 07 8B 1E 83 EE FC 11 DB 72 ED B8 01 00 00 00 01 DB 75 07 8B 1E 83 EE FC 11 DB 11 C0 01 DB 73 ep_only = true [Microsoft Visual C++ v7.0] signature = 6A 0C 68 88 BF 01 10 E8 B8 1C 00 00 33 C0 40 89 45 E4 8B 75 0C 33 FF 3B F7 75 0C 39 3D 6C 1E 12 10 0F 84 B3 00 00 00 89 7D FC 3B F0 74 05 83 FE 02 75 31 A1 98 36 12 10 3B C7 74 0C FF 75 10 56 ep_only = true [MinGW v3.2.x (Dll_main)] signature = 55 89 E5 83 EC 18 89 75 FC 8B 75 0C 89 5D F8 83 FE 01 74 5C 89 74 24 04 8B 55 10 89 54 24 08 8B 55 08 89 14 24 E8 96 01 00 00 83 EC 0C 83 FE 01 89 C3 74 2C 85 F6 75 0C 8B 0D 00 30 00 10 85 C9 75 10 31 DB 89 D8 8B 5D F8 8B 75 FC 89 EC 5D C2 0C 00 E8 59 00 ep_only = true [MinGW v3.2.x (Dll_mainCRTStartup)] signature = 55 89 E5 83 EC 08 6A 00 6A 00 6A 00 6A 00 E8 0D 00 00 00 B8 00 00 00 00 C9 C3 90 90 90 90 90 90 FF 25 38 20 00 10 90 90 00 00 00 00 00 00 00 00 FF FF FF FF 00 00 00 00 FF FF FF FF 00 00 00 00 00 ep_only = true [MinGW v3.2.x (Dll_WinMain)] signature = 55 89 E5 83 EC 18 89 75 FC 8B 75 0C 89 5D F8 83 FE 01 74 5C 89 74 24 04 8B 55 10 89 54 24 08 8B 55 08 89 14 24 E8 76 01 00 00 83 EC 0C 83 FE 01 89 C3 74 2C 85 F6 75 0C 8B 0D 00 30 00 10 85 C9 75 10 31 DB 89 D8 8B 5D F8 8B 75 FC 89 EC 5D C2 0C 00 E8 59 00 ep_only = true [MinGW v3.2.x (main)] signature = 55 89 E5 83 EC 08 C7 04 24 01 00 00 00 FF 15 E4 40 40 00 E8 68 00 00 00 89 EC 31 C0 5D C3 89 F6 55 89 E5 83 EC 08 C7 04 24 02 00 00 00 FF 15 E4 40 40 00 E8 48 00 00 00 89 EC 31 C0 5D C3 89 F6 55 89 E5 83 EC 08 8B 55 08 89 14 24 FF 15 00 41 40 00 89 EC 5D ep_only = true [MinGW v3.2.x (WinMain)] signature = 55 89 E5 83 EC 08 C7 04 24 01 00 00 00 FF 15 FC 40 40 00 E8 68 00 00 00 89 EC 31 C0 5D C3 89 F6 55 89 E5 83 EC 08 C7 04 24 02 00 00 00 FF 15 FC 40 40 00 E8 48 00 00 00 89 EC 31 C0 5D C3 89 F6 55 89 E5 83 EC 08 8B 55 08 89 14 24 FF 15 18 41 40 00 89 EC 5D ep_only = true [MinGW v3.2.x (_mainCRTStartup)] signature = 55 89 E5 83 EC 08 6A 00 6A 00 6A 00 6A 00 E8 0D 00 00 00 B8 00 00 00 00 C9 C3 90 90 90 90 90 90 FF 25 38 20 40 00 90 90 00 00 00 00 00 00 00 00 FF FF FF FF 00 00 00 00 FF FF FF FF 00 00 00 00 00 ep_only = true [NoodleCrypt v2.00 (Eng) -> NoodleSpa] signature = EB 01 9A E8 76 00 00 00 EB 01 9A E8 65 00 00 00 EB 01 9A E8 7D 00 00 00 EB 01 9A E8 55 00 00 00 EB 01 9A E8 43 04 00 00 EB 01 9A E8 E1 00 00 00 EB 01 9A E8 3D 00 00 00 EB 01 9A E8 EB 01 00 00 EB 01 9A E8 2C 04 00 00 EB 01 9A E8 25 00 00 00 EB 01 9A E8 02 ep_only = true [Nullsoft Install System v1.xx] signature = 55 8B EC 83 EC 2C 53 56 33 F6 57 56 89 75 DC 89 75 F4 BB A4 9E 40 00 FF 15 60 70 40 00 BF C0 B2 40 00 68 04 01 00 00 57 50 A3 AC B2 40 00 FF 15 4C 70 40 00 56 56 6A 03 56 6A 01 68 00 00 00 80 57 FF 15 9C 70 40 00 8B F8 83 FF FF 89 7D EC 0F 84 C3 00 00 00 ep_only = true [Nullsoft Install System v1.xx] signature = 83 EC 0C 53 56 57 FF 15 20 71 40 00 05 E8 03 00 00 BE 60 FD 41 00 89 44 24 10 B3 20 FF 15 28 70 40 00 68 00 04 00 00 FF 15 28 71 40 00 50 56 FF 15 08 71 40 00 80 3D 60 FD 41 00 22 75 08 80 C3 02 BE 61 FD 41 00 8A 06 8B 3D F0 71 40 00 84 C0 74 0F 3A C3 74 ep_only = true [Nullsoft Install System v2.0b2, v2.0b3] signature = 83 EC 0C 53 55 56 57 FF 15 ?? 70 40 00 8B 35 ?? 92 40 00 05 E8 03 00 00 89 44 24 14 B3 20 FF 15 2C 70 40 00 BF 00 04 00 00 68 ?? ?? ?? 00 57 FF 15 ?? ?? 40 00 57 FF 15 ep_only = true [Obsidium v1.2.5.0 -> Obsidium Software (h)] signature = E8 0E 00 00 00 8B 54 24 0C 83 82 B8 00 00 00 0D 33 C0 C3 64 67 FF 36 00 00 64 67 89 26 00 00 50 33 C0 8B 00 C3 E9 FA 00 00 00 E8 D5 FF FF FF 58 64 67 8F 06 00 00 83 C4 04 E8 2B 13 00 00 ep_only = true [Obsidium v1.2.5.0 -> Obsidium Software (h)] signature = E8 0E 00 00 00 8B 54 24 0C 83 82 B8 00 00 00 0D 33 C0 C3 64 67 FF 36 00 00 64 67 89 26 00 00 50 33 C0 8B 00 C3 E9 FA 00 00 00 E8 D5 FF FF FF 58 64 67 8F 06 00 00 83 C4 04 E8 2B 13 00 00 ep_only = true [Obsidium v1.3.0.0 -> Obsidium Software (h)] signature = EB 04 25 80 34 CA E8 29 00 00 00 EB 02 C1 81 EB 01 3A 8B 54 24 0C EB 02 32 92 83 82 B8 00 00 00 22 EB 02 F2 7F 33 C0 EB 04 65 7E 14 79 C3 EB 04 05 AD 7F 45 EB 04 05 65 0B E8 64 67 FF 36 00 00 EB 04 0D F6 A8 7F 64 67 89 26 00 00 EB 04 8D 68 C7 FB EB 01 6B ep_only = true [Obsidium v1.3.0.4 -> Obsidium Software] signature = EB 02 ?? ?? E8 25 00 00 00 EB 04 ?? ?? ?? ?? EB 01 ?? 8B 54 24 0C EB 01 ?? 83 82 B8 00 00 00 23 EB 01 ?? 33 C0 EB 02 ?? ?? C3 EB 02 ?? ?? EB 04 ?? ?? ?? ?? 64 67 FF 36 00 00 EB 03 ?? ?? ?? 64 67 89 26 00 00 EB 02 ?? ?? EB 01 ?? 50 EB 01 ?? 33 C0 EB 01 ?? 8B 00 EB 01 ?? C3 EB 02 ?? ?? E9 FA 00 00 00 EB 02 ?? ?? E8 D5 FF FF FF EB 03 ?? ?? ?? EB 04 ?? ?? ?? ?? 58 EB 02 ?? ?? EB 04 ?? ?? ?? ?? 64 67 8F 06 00 00 EB 03 ?? ?? ?? 83 C4 04 EB 01 ?? E8 3B 26 00 00 ep_only = true [ORiEN v2.11 (DEMO)] signature = E9 5D 01 00 00 CE D1 CE CE 0D 0A 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0A 2D 20 4F 52 69 45 4E 20 65 78 65 63 75 74 61 62 6C 65 20 66 69 6C 65 73 20 70 72 6F ep_only = true [ORiEN v2.11 - 2.12 -> Fisun Alexander] signature = E9 5D 01 00 00 CE D1 CE ?? 0D 0A 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0A 2D 20 4F 52 69 45 4E 20 65 78 65 63 75 74 61 62 6C 65 20 66 69 6C 65 73 20 70 72 6F ep_only = true [PassLock 2000 v1.0 (Eng) -> Moonlight-Software] signature = 55 8B EC 53 56 57 BB 00 50 40 00 66 2E F7 05 34 20 40 00 04 00 0F 85 98 00 00 00 E8 1F 01 00 00 C7 43 60 01 00 00 00 8D 83 E4 01 00 00 50 FF 15 F0 61 40 00 83 EC 44 C7 04 24 44 00 00 00 C7 44 24 2C 00 00 00 00 54 FF 15 E8 61 40 00 B8 0A 00 00 00 F7 44 24 ep_only = true [PC Guard for Win32 v5.00 -> SofPro/Blagoje Ceklic (h)] signature = FC 55 50 E8 00 00 00 00 5D 60 E8 03 00 00 00 83 EB 0E EB 01 0C 58 EB 01 35 40 EB 01 36 FF E0 0B 61 B8 ?? ?? ?? 00 EB 01 E3 60 E8 03 00 00 00 D2 EB 0B 58 EB 01 48 40 EB 01 35 FF E0 E7 61 2B E8 9C EB 01 D5 9D EB 01 0B 58 60 E8 03 00 00 00 83 EB 0E EB 01 0C ep_only = true [PC-Guard v5.00d] signature = FC 55 50 E8 00 00 00 00 5D 60 E8 03 00 00 00 83 EB 0E EB 01 0C 58 EB 01 35 40 EB 01 36 FF E0 0B 61 B8 30 D2 40 00 EB 01 E3 60 E8 03 00 00 00 D2 EB 0B 58 EB 01 48 40 EB 01 35 FF E0 E7 61 2B E8 9C EB 01 D5 9D EB 01 0B 58 60 E8 03 00 00 00 83 EB 0E EB 01 0C ep_only = true [PE Diminisher v0.1 -> Teraphy] signature = 53 51 52 56 57 55 E8 00 00 00 00 5D 8B D5 81 ED A2 30 40 00 2B 95 91 33 40 00 81 EA 0B 00 00 00 89 95 9A 33 40 00 80 BD 99 33 40 00 00 74 50 E8 02 01 00 00 8B FD 8D 9D 9A 33 40 00 8B 1B 8D 87 ep_only = true [PE Protector 0.9.3 --> CRYPToCRACk] signature = 5B 81 E3 00 FF FF FF 66 81 3B 4D 5A 75 33 8B F3 03 73 3C 81 3E 50 45 00 00 75 26 0F B7 46 18 8B C8 69 C0 AD 0B 00 00 F7 E0 2D AB 5D 41 4B 69 C9 DE C0 00 00 03 C1 75 09 83 EC 04 0F 85 DD 00 00 ep_only = true [PE Spin v0.b] signature = EB 01 68 60 E8 00 00 00 00 8B 1C 24 83 C3 12 81 2B E8 B1 06 00 FE 4B FD 82 2C 24 72 C8 46 00 0B E4 74 9E 75 01 C7 81 73 04 D7 7A F7 2F 81 73 19 77 00 43 B7 F6 C3 6B B7 00 00 F9 FF E3 C9 C2 08 00 A3 68 72 01 FF 5D 33 C9 41 E2 26 E8 01 00 00 00 EA 5A 33 C9 ep_only = true [Pe123 v2006.4.12] signature = 8B C0 60 9C E8 01 00 00 00 C3 53 E8 72 00 00 00 50 E8 1C 03 00 00 8B D8 FF D3 5B C3 8B C0 E8 00 00 00 00 58 83 C0 05 C3 8B C0 55 8B EC 60 8B 4D 10 8B 7D 0C 8B 75 08 F3 A4 61 5D C2 0C 00 E8 00 00 00 00 58 83 E8 05 C3 8B C0 E8 00 00 00 00 58 83 C0 05 C3 8B ep_only = true [Pe123 v2006.4.4] signature = 8B C0 EB 01 34 60 EB 01 2A 9C EB 02 EA C8 E8 0F 00 00 00 EB 03 3D 23 23 EB 01 4A EB 01 5B C3 8D 40 00 53 EB 01 6C EB 01 7E EB 01 8F E8 15 01 00 00 50 E8 67 04 00 00 EB 01 9A 8B D8 FF D3 5B C3 8B C0 E8 00 00 00 00 58 83 C0 05 C3 8B C0 55 8B EC 60 8B 4D 10 ep_only = true [PECompact v1.67] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 3F 90 40 87 DD 8B 85 E6 90 40 01 85 33 90 40 66 C7 85 90 40 90 90 01 85 DA 90 40 01 85 DE 90 40 01 85 E2 90 40 BB 8B 11 ep_only = true [PECompact v1.68 - v1.84] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 3F 90 40 87 DD 8B 85 E6 90 40 01 85 33 90 40 66 C7 85 90 40 90 90 01 85 DA 90 40 01 85 DE 90 40 01 85 E2 90 40 BB 7B 11 ep_only = true [PEiD-Bundle v1.00 - v1.01 --> BoB / BobSoft] signature = 60 E8 ?? 02 00 00 8B 44 24 04 52 48 66 31 C0 66 81 38 4D 5A 75 F5 8B 50 3C 81 3C 02 50 45 00 00 75 E9 5A C2 04 00 60 89 DD 89 C3 8B 45 3C 8B 54 28 78 01 EA 52 8B 52 20 01 EA 31 C9 41 8B 34 8A ep_only = true [PEiD-Bundle v1.00 --> BoB / BobSoft] signature = 60 E8 21 02 00 00 8B 44 24 04 52 48 66 31 C0 66 81 38 4D 5A 75 F5 8B 50 3C 81 3C 02 50 45 00 00 75 E9 5A C2 04 00 60 89 DD 89 C3 8B 45 3C 8B 54 28 78 01 EA 52 8B 52 20 01 EA 31 C9 41 8B 34 8A ep_only = true [PEiD-Bundle v1.01 --> BoB / BobSoft] signature = 60 E8 23 02 00 00 8B 44 24 04 52 48 66 31 C0 66 81 38 4D 5A 75 F5 8B 50 3C 81 3C 02 50 45 00 00 75 E9 5A C2 04 00 60 89 DD 89 C3 8B 45 3C 8B 54 28 78 01 EA 52 8B 52 20 01 EA 31 C9 41 8B 34 8A ep_only = true [PEiD-Bundle v1.02 --> BoB / BobSoft] signature = 60 E8 9C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 36 ?? ?? ?? 2E ?? ?? ?? 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 80 00 00 00 00 4B 65 72 6E 65 6C 33 32 2E 44 ep_only = true [PEnguinCrypt v1.0] signature = B8 93 ?? ?? 00 55 50 67 64 FF 36 00 00 67 64 89 26 00 00 BD 4B 48 43 42 B8 04 00 00 00 CC 3C 04 75 04 90 90 C3 90 67 64 8F 06 00 00 58 5D BB 00 00 40 00 33 C9 33 C0 ep_only = true [PESpin v0.1 -> Cyberbob (h)] signature = EB 01 68 60 E8 00 00 00 00 8B 1C 24 83 C3 12 81 2B E8 B1 06 00 FE 4B FD 82 2C 24 5C CB 46 00 0B E4 74 9E 75 01 C7 81 73 04 D7 7A F7 2F 81 73 19 77 00 43 B7 F6 C3 6B B7 00 00 F9 FF E3 C9 C2 08 00 A3 68 72 01 FF 5D 33 C9 41 E2 17 EB 07 EA EB 01 EB EB 0D FF ep_only = true [PESpin v0.3 (Eng) -> cyberbob] signature = EB 01 68 60 E8 00 00 00 00 8B 1C 24 83 C3 12 81 2B E8 B1 06 00 FE 4B FD 82 2C 24 B7 CD 46 00 0B E4 74 9E 75 01 C7 81 73 04 D7 7A F7 2F 81 73 19 77 00 43 B7 F6 C3 6B B7 00 00 F9 FF E3 C9 C2 08 00 A3 68 72 01 FF 5D 33 C9 41 E2 17 EB 07 EA EB 01 EB EB 0D FF ep_only = true [PESpin v0.7 -> Cyberbob (h)] signature = EB 01 68 60 E8 00 00 00 00 8B 1C 24 83 C3 12 81 2B E8 B1 06 00 FE 4B FD 82 2C 24 83 D5 46 00 0B E4 74 9E 75 01 C7 81 73 04 D7 7A F7 2F 81 73 19 77 00 43 B7 F6 C3 6B B7 00 00 F9 FF E3 C9 C2 08 00 A3 68 72 01 FF 5D 33 C9 41 E2 17 EB 07 EA EB 01 EB EB 0D FF ep_only = true [PESpin v1.1 -> Cyberbob (h)] signature = EB 01 68 60 E8 00 00 00 00 8B 1C 24 83 C3 12 81 2B E8 B1 06 00 FE 4B FD 82 2C 24 7D DE 46 00 0B E4 74 9E 75 01 C7 81 73 04 D7 7A F7 2F 81 73 19 77 00 43 B7 F6 C3 6B B7 00 00 F9 FF E3 C9 C2 08 00 A3 68 72 01 FF 5D 33 C9 41 E2 17 EB 07 EA EB 01 EB EB 0D FF ep_only = true [PESPin v1.3 -> Cyberbob (h)] signature = EB 01 68 60 E8 00 00 00 00 8B 1C 24 83 C3 12 81 2B E8 B1 06 00 FE 4B FD 82 2C 24 AC DF 46 00 0B E4 74 9E 75 01 C7 81 73 04 D7 7A F7 2F 81 73 19 77 00 43 B7 F6 C3 6B B7 00 00 F9 FF E3 C9 C2 08 00 A3 68 72 01 FF 5D 33 C9 41 E2 17 EB 07 EA EB 01 EB EB 0D FF ep_only = true [PESpin v1.304 -> Cyberbob (h)] signature = EB 01 68 60 E8 00 00 00 00 8B 1C 24 83 C3 12 81 2B E8 B1 06 00 FE 4B FD 82 2C 24 88 DF 46 00 0B E4 74 9E 75 01 C7 81 73 04 D7 7A F7 2F 81 73 19 77 00 43 B7 F6 C3 6B B7 00 00 F9 FF E3 C9 C2 08 00 A3 68 72 01 FF 5D 33 C9 41 E2 17 EB 07 EA EB 01 EB EB 0D FF ep_only = true [PESpin v1.3beta -> Cyberbob (h)] signature = EB 01 68 60 E8 00 00 00 00 8B 1C 24 83 C3 12 81 2B E8 B1 06 00 FE 4B FD 82 2C 24 71 DF 46 00 0B E4 74 9E 75 01 C7 81 73 04 D7 7A F7 2F 81 73 19 77 00 43 B7 F6 C3 6B B7 00 00 F9 FF E3 C9 C2 08 00 A3 68 72 01 FF 5D 33 C9 41 E2 17 EB 07 EA EB 01 EB EB 0D FF ep_only = true [Petite 1.2 -> (c)1998 Ian Luck (h)] signature = 66 9C 60 E8 CA 00 00 00 03 00 04 00 05 00 06 00 07 00 08 00 09 00 0A 00 0B 00 0D 00 0F 00 11 00 13 00 17 00 1B 00 1F 00 23 00 2B 00 33 00 3B 00 43 00 53 00 63 00 73 00 83 00 A3 00 C3 00 E3 00 02 01 00 00 00 00 00 00 00 00 00 00 00 00 01 01 01 01 02 02 02 ep_only = true [Petite 1.4 -> (c)1998-99 Ian Luck (h)] signature = ?? ?? ?? ?? ?? 66 9C 60 50 8B D8 03 00 68 54 BC 00 00 6A 00 FF 50 14 8B CC 8D A0 54 BC 00 00 50 8B C3 8D 90 ?? 16 00 00 68 00 00 ?? ?? 51 50 80 04 24 08 50 80 04 24 42 50 80 04 24 61 50 80 04 24 9D 50 80 04 24 BB 83 3A 00 0F 84 D8 14 00 00 8B 44 24 18 F6 ep_only = true [PeX v0.99 (Eng) -> bart/CrackPl] signature = E9 F5 00 00 00 0D 0A C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 ep_only = true [Private EXE Protector 1.8 -> SetiSoft] signature = A4 B3 02 E8 6D 00 00 00 73 F6 31 C9 E8 64 00 00 00 73 1C 31 C0 E8 5B 00 00 00 73 23 B3 02 41 B0 10 E8 4F 00 00 00 10 C0 73 F7 75 3F AA EB D4 E8 4D 00 00 00 29 D9 75 10 E8 42 00 00 00 EB 28 AC D1 E8 74 4D 11 C9 EB 1C 91 48 C1 E0 08 AC E8 2C 00 00 00 3D 00 7D 00 00 73 0A 80 FC 05 73 06 83 F8 7F 77 02 41 41 95 89 E8 B3 01 56 89 FE 29 C6 F3 A4 5E EB 8E 00 D2 75 05 8A 16 46 10 D2 C3 31 C9 41 E8 EE FF FF FF 11 C9 E8 E7 FF FF FF 72 F2 C3 31 FF 31 F6 C3 ep_only = false [Private EXE Protector 1.9.7 -> SetiSoft (h)] signature = 55 8B EC 83 C4 F4 FC 53 57 56 8B 74 24 20 8B 7C 24 24 66 81 3E 4A 43 0F 85 A5 02 00 00 83 C6 0A 33 DB BA 00 00 00 80 C7 44 24 14 08 00 00 00 43 8D A4 24 00 00 00 00 8B FF 03 D2 75 08 8B 16 83 C6 04 F9 13 D2 73 2C 8B 4C 24 10 33 C0 8D A4 24 00 00 00 00 05 00 00 00 00 03 D2 75 08 8B 16 83 C6 04 F9 13 D2 13 C0 49 75 EF 02 44 24 0C 88 07 47 EB C6 03 D2 75 08 8B 16 83 C6 04 F9 13 D2 0F 82 6E 01 00 00 03 D2 75 08 8B 16 83 C6 04 F9 13 D2 0F 83 DC 00 00 00 B9 04 00 00 00 33 C0 8D A4 24 00 00 00 00 8D 64 24 00 03 D2 75 08 8B 16 83 C6 04 F9 13 D2 13 C0 49 75 EF 48 74 B1 0F 89 EF 01 00 00 03 D2 75 08 8B 16 83 C6 04 F9 13 D2 73 42 BD 00 01 00 00 B9 08 00 00 00 33 C0 8D A4 24 00 00 00 00 05 00 00 00 00 03 D2 75 08 8B 16 83 C6 04 F9 13 D2 13 C0 49 75 EF 88 07 47 4D 75 D6 ep_only = false [PseudoSigner 0.2 [FSG 1.0] --> Anorganix] signature = 90 90 90 90 68 ?? ?? ?? ?? 67 64 FF 36 00 00 67 64 89 26 00 00 F1 90 90 90 90 BB D0 01 40 00 BF 00 10 40 00 BE 90 90 90 90 53 E8 0A 00 00 00 02 D2 75 05 8A 16 46 12 D2 C3 FC B2 80 A4 6A 02 5B ep_only = true [PseudoSigner 0.2 [Macromedia Flash Projector 6.0] --> Anorganix] signature = 90 90 90 90 68 ?? ?? ?? ?? 67 64 FF 36 00 00 67 64 89 26 00 00 F1 90 90 90 90 83 EC 44 56 FF 15 24 81 49 00 8B F0 8A 06 3C 22 75 1C 8A 46 01 46 3C 22 74 0C 84 C0 74 08 8A 46 01 46 3C 22 75 F4 80 3E 22 75 0F 46 EB 0C ep_only = true [PseudoSigner 0.2 [Video-Lan-Client] --> Anorganix] signature = 55 89 E5 83 EC 08 90 90 90 90 90 90 90 90 90 90 90 90 90 90 01 FF FF 01 01 01 00 01 90 90 90 90 90 90 90 90 90 90 90 90 90 90 00 01 00 01 00 01 90 90 00 01 ep_only = true [PUNiSHER v1.5 (DEMO) -> FEUERRADER/AHTeam] signature = EB 04 83 A4 BC CE 60 EB 04 80 BC 04 11 E8 00 00 00 00 81 2C 24 CA C2 41 00 EB 04 64 6B 88 18 5D E8 00 00 00 00 EB 04 64 6B 88 18 81 2C 24 86 00 00 00 EB 04 64 6B 88 18 8B 85 9C C2 41 00 EB 04 64 6B 88 18 29 04 24 EB 04 64 6B 88 18 EB 04 64 6B 88 18 8B 04 ep_only = true [RE-Crypt v0.7x -> Crudd [RET] (h1)] signature = 60 E8 00 00 00 00 5D 81 ED F3 1D 40 00 B9 7B 09 00 00 8D BD 3B 1E 40 00 8B F7 61 60 E8 00 00 00 00 5D 55 81 04 24 0A 00 00 00 C3 8B F5 81 C5 ?? ?? 00 00 89 6D 34 89 75 38 8B 7D 38 81 E7 00 FF FF FF 81 C7 48 00 00 00 47 03 7D 60 8B 4D 5C 83 F9 00 7E 0F 8B ep_only = true [RE-Crypt v0.7x -> Crudd [RET] (h2)] signature = 60 E8 00 00 00 00 5D 55 81 04 24 0A 00 00 00 C3 8B F5 81 C5 ?? ?? 00 00 89 6D 34 89 75 38 8B 7D 38 81 E7 00 FF FF FF 81 C7 48 00 00 00 47 03 7D 60 8B 4D 5C 83 F9 00 7E 0F 8B 17 33 55 58 89 17 83 C7 04 83 C1 FC EB EC 8B ep_only = true [Reflexive Arcade Wrapper] signature = 55 8B EC 6A FF 68 98 68 42 00 68 14 FA 41 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 53 56 57 89 65 E8 FF 15 F8 50 42 00 33 D2 8A D4 89 15 3C E8 42 00 8B C8 81 E1 FF 00 00 00 89 0D 38 E8 42 00 C1 E1 08 03 CA 89 0D 34 E8 42 00 C1 E8 10 A3 30 E8 ep_only = true [RLPack 1.0 beta -> ap0x] signature = 60 E8 00 00 00 00 8D 64 24 04 8B 6C 24 FC 8D B5 4C 02 00 00 8D 9D 13 01 00 00 33 FF EB 0F FF 74 37 04 FF 34 37 FF D3 83 C4 08 83 C7 08 83 3C 37 00 75 EB 8D 74 37 04 53 6A 40 68 00 10 00 00 68 ?? ?? ?? ?? 6A 00 FF 95 F9 01 00 00 89 85 48 02 00 00 5B FF B5 48 02 00 00 56 FF D3 83 C4 08 8B B5 48 02 00 00 8B C6 EB 01 40 80 38 01 75 FA 40 8B 38 83 C0 04 89 85 44 02 00 00 EB 7A 56 FF 95 F1 01 00 00 89 85 40 02 00 00 8B C6 EB 4F 8B 85 44 02 00 00 8B 00 A9 00 00 00 80 74 14 35 00 00 00 80 50 8B 85 44 02 00 00 C7 00 20 20 20 00 EB 06 FF B5 44 02 00 00 FF B5 40 02 00 00 FF 95 F5 01 00 00 89 07 83 C7 04 8B 85 44 02 00 00 EB 01 40 80 38 00 75 FA 40 89 85 44 02 00 00 80 38 00 75 AC EB 01 46 80 3E 00 75 FA 46 40 8B 38 83 C0 04 89 85 44 02 00 00 80 3E 01 75 81 68 00 40 00 00 68 ?? ?? ?? ?? FF B5 48 02 00 00 FF 95 FD 01 00 00 61 68 ?? ?? ?? ?? C3 60 8B 74 24 24 8B 7C ep_only = true [RLPack Full Edition 1.17 DLL [aPLib] -> Ap0x] signature = 80 7C 24 08 01 0F 85 ?? ?? ?? ?? 60 E8 00 00 00 00 8B 2C 24 83 C4 04 8D B5 53 03 00 00 8D 9D 02 02 00 00 33 FF E8 ?? ?? ?? ?? EB 0F FF 74 37 04 FF 34 37 FF D3 83 C4 08 83 C7 08 83 3C 37 00 75 ep_only = true [RLPack V1.0.beta -> ap0x] signature = 60 E8 00 00 00 00 8D 64 24 04 8B 6C 24 FC 8D B5 4C 02 00 00 8D 9D 13 01 00 00 33 FF EB 0F FF 74 37 04 FF 34 37 FF D3 83 C4 08 83 C7 08 83 3C 37 00 75 EB ep_only = true [SafeDisc/SafeCast 2.xx - 3.xx -> Macrovision] signature = 55 8B EC 60 BB ?? ?? ?? ?? 33 C9 8A 0D 3D ?? ?? ?? 85 C9 74 0C B8 ?? ?? ?? ?? 2B C3 83 E8 05 EB 0E 51 B9 ?? ?? ?? ?? 8B C1 2B C3 03 41 01 59 C6 03 E9 89 43 01 51 68 09 ?? ?? ?? 33 C0 85 C9 74 05 8B 45 08 EB 00 50 E8 76 00 00 00 83 C4 08 59 83 F8 00 74 1C C6 03 C2 C6 43 01 0C 85 C9 74 09 61 5D B8 00 00 00 00 EB 97 50 A1 29 ?? ?? ?? ?? D0 61 5D EB 46 80 7C 24 08 00 75 3F 51 8B 4C 24 04 89 0D ?? ?? ?? ?? B9 ?? ?? ?? ?? 89 4C 24 04 59 EB 28 50 B8 2D ?? ?? ?? ?? 70 08 8B 40 0C FF D0 B8 2D ?? ?? ?? ?? 30 8B 40 04 FF D0 58 FF 35 ?? ?? ?? ?? C3 72 16 61 13 60 0D E9 ?? ?? ?? ?? CC CC 81 EC E8 02 00 00 53 55 56 57 ep_only = true [SDProtect -> Randy Li] signature = 55 8B EC 6A FF 68 ?? ?? ?? ?? 68 88 88 88 08 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 58 64 A3 00 00 00 00 58 58 58 58 8B E8 E8 3B 00 00 00 E8 01 00 00 00 FF 58 05 ep_only = true [SDProtector 1.x -> Randy Li] signature = 55 8B EC 6A FF 68 1D 32 13 05 68 88 88 88 08 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 58 64 A3 00 00 00 00 58 58 58 58 8B E8 E8 3B 00 00 00 E8 01 00 00 00 FF 58 05 53 00 00 00 51 8B 4C 24 10 89 81 B8 00 00 00 B8 55 01 00 00 89 41 20 33 C0 89 41 04 89 41 ep_only = true [SDProtector Basic/Pro Edition 1.10 -> Randy Li (h)] signature = 55 8B EC 6A FF 68 1D 32 13 05 68 88 88 88 08 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 58 64 A3 00 00 00 00 58 58 58 58 8B E8 50 83 EC 08 64 A1 00 00 00 00 64 FF 35 00 00 00 00 64 89 25 00 00 00 00 83 C4 08 50 64 FF 35 00 00 00 00 64 89 25 00 00 00 00 64 ep_only = true [SDProtector Pro Edition 1.16 -> Randy Li (h)] signature = 55 8B EC 6A FF 68 1D 32 13 05 68 88 88 88 08 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 58 64 A3 00 00 00 00 58 58 58 58 8B E8 E8 3B 00 00 00 E8 01 00 00 00 FF 58 05 53 00 00 00 51 8B 4C 24 10 89 81 B8 00 00 00 B8 55 01 00 00 89 41 18 33 C0 89 41 04 89 41 ep_only = true [SmartE -> Microsoft] signature = EB 15 03 00 00 00 ?? 00 00 00 00 00 00 00 00 00 00 00 68 00 00 00 00 55 E8 00 00 00 00 5D 81 ED 1D 00 00 00 8B C5 55 60 9C 2B 85 8F 07 00 00 89 85 83 07 00 00 FF 74 24 2C E8 BB 01 00 00 0F 82 2F 06 00 00 E8 8E 04 00 00 49 0F 88 23 06 ep_only = true [Soft Defender v1.0 - v1.1] signature = 74 07 75 05 19 32 67 E8 E8 74 1F 75 1D E8 68 39 44 CD ?? 59 9C 50 74 0A 75 08 E8 59 C2 04 ?? 55 8B EC E8 F4 FF FF FF 56 57 53 78 0F 79 0D E8 34 99 47 49 34 33 EF 31 34 52 47 23 68 A2 AF 47 01 59 E8 ?? ?? ?? ?? 58 05 BA 01 ?? ?? 03 C8 74 BE 75 BC E8 ep_only = true [SoftDefender 1.x -> Randy Li] signature = 74 07 75 05 19 32 67 E8 E8 74 1F 75 1D E8 68 39 44 CD 00 59 9C 50 74 0A 75 08 E8 59 C2 04 00 55 8B EC E8 F4 FF FF FF 56 57 53 78 0F 79 0D E8 34 99 47 49 34 33 EF 31 34 52 47 23 68 A2 AF 47 01 59 E8 01 00 00 00 FF 58 05 E6 01 00 00 03 C8 74 BD 75 BB E8 00 ep_only = true [SOFTWrapper for Win9x/NT (Evaluation Version)] signature = E8 00 00 00 00 5D 8B C5 2D ?? ?? ?? 00 50 81 ED 05 00 00 00 8B C5 2B 85 03 0F 00 00 89 85 03 0F 00 00 8B F0 03 B5 0B 0F 00 00 8B F8 03 BD 07 0F 00 00 83 7F 0C 00 74 2B 56 57 8B 7F 10 03 F8 8B 76 10 03 F0 83 3F 00 74 0C 8B 1E 89 1F 83 C6 04 83 C7 04 EB EF ep_only = true [Special EXE Pasword Protector v1.01 (Eng) -> Pavol Cerven] signature = 60 E8 00 00 00 00 5D 81 ED 06 00 00 00 89 AD 8C 01 00 00 8B C5 2B 85 FE 75 00 00 89 85 3E 77 00 00 8D 95 C6 77 00 00 8D 8D FF 77 00 00 55 68 00 20 00 00 51 52 6A 00 FF 95 04 7A 00 00 5D 6A 00 FF 95 FC 79 00 00 8D 8D 60 78 00 00 8D 95 85 01 00 00 55 68 00 ep_only = true [SuperDAT] signature = 55 8B EC 6A FF 68 40 F3 42 00 68 A4 BF 42 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 53 56 57 89 65 E8 FF 15 08 F2 42 00 33 D2 8A D4 89 15 60 42 43 00 8B C8 81 E1 FF 00 00 00 89 0D ep_only = true [SVK Protector v1.32 (Eng) -> Pavol Cerven] signature = 60 E8 00 00 00 00 5D 81 ED 06 00 00 00 EB 05 B8 06 36 42 00 64 A0 23 00 00 00 EB 03 C7 84 E8 84 C0 EB 03 C7 84 E9 75 67 B9 49 00 00 00 8D B5 C5 02 00 00 56 80 06 44 46 E2 FA 8B 8D C1 02 00 00 5E 55 51 6A 00 56 FF 95 0C 61 00 00 59 5D 40 85 C0 75 3C 80 3E ep_only = true [SVK Protector v1.3x (Eng) -> Pavol Cerven] signature = 60 E8 00 00 00 00 5D 81 ED 06 00 00 00 EB 05 B8 ?? ?? 42 00 64 A0 23 00 00 00 EB 03 C7 84 E8 84 C0 EB 03 C7 84 E9 75 67 B9 49 00 00 00 8D B5 C5 02 00 00 56 80 06 44 46 E2 FA 8B 8D C1 02 00 00 5E 55 51 6A 00 56 FF 95 0C 61 00 00 59 5D 40 85 C0 75 3C 80 3E ep_only = true [themida 1.0.0.5 -> http://www.oreans.com] signature = B8 00 00 00 00 60 0B C0 74 58 E8 00 00 00 00 58 05 43 00 00 00 80 38 E9 75 03 61 EB 35 E8 00 00 00 00 58 25 00 F0 FF FF 33 FF 66 BB 19 5A 66 83 C3 34 66 39 18 75 12 0F B7 50 3C 03 D0 BB E9 44 ep_only = true [Themida 1.0.x.x - 1.8.0.0 (compressed engine) -> Oreans Technologies] signature = B8 ?? ?? ?? ?? 60 0B C0 74 58 E8 00 00 00 00 58 05 43 00 00 00 80 38 E9 75 03 61 EB 35 E8 00 00 00 00 58 25 00 F0 FF FF 33 FF 66 BB 19 5A 66 83 C3 34 66 39 18 75 12 0F B7 50 3C 03 D0 BB E9 44 00 00 83 C3 67 39 1A 74 07 2D 00 10 00 00 EB DA 8B F8 B8 ?? ?? ?? ?? 03 C7 B9 5A ?? ?? ?? 03 CF EB 0A B8 ?? ?? ?? ?? B9 5A ?? ?? ?? 50 51 E8 84 00 00 00 E8 00 00 00 00 58 2D 26 00 00 00 B9 EF 01 00 00 C6 00 E9 83 E9 05 89 48 01 61 E9 AF 01 ep_only = true [Themida 1.2.0.1 (compressed) -> Oreans Technologies (h)] signature = B8 00 00 ?? ?? 60 0B C0 74 58 E8 00 00 00 00 58 05 43 00 00 00 80 38 E9 75 03 61 EB 35 E8 00 00 00 00 58 25 00 F0 FF FF 33 FF 66 BB 19 5A 66 83 C3 34 66 39 18 75 12 0F B7 50 3C 03 D0 BB E9 44 00 00 83 C3 67 39 1A 74 07 2D 00 10 00 00 EB DA 8B F8 B8 ep_only = true [Themida 1.8.x.x -> Oreans Technologies] signature = B8 ?? ?? ?? ?? 60 0B C0 74 68 E8 00 00 00 00 58 05 53 00 00 00 80 38 E9 75 13 61 EB 45 DB 2D 37 ?? ?? ?? FF FF FF FF FF FF FF FF 3D 40 E8 00 00 00 00 58 25 00 F0 FF FF 33 FF 66 BB 19 5A 66 83 C3 34 66 39 18 75 12 0F B7 50 3C 03 D0 BB E9 44 00 00 83 C3 67 39 1A 74 07 2D 00 10 00 00 EB DA 8B F8 B8 ?? ?? ?? ?? 03 C7 B9 ?? ?? ?? ?? 03 CF EB 0A B8 ?? ?? ?? ?? B9 ?? ?? ?? ?? 50 51 E8 84 00 00 00 E8 00 00 00 00 58 2D 26 00 00 00 B9 EF 01 00 00 C6 00 E9 83 E9 05 89 48 01 61 E9 ep_only = true [Thinstall v2.460 -> Jitit] signature = 55 8B EC 51 53 56 57 6A 00 6A 00 FF 15 F4 18 40 00 50 E8 87 FC FF FF 59 59 A1 94 1A 40 00 8B 40 10 03 05 90 1A 40 00 89 45 FC 8B 45 FC FF E0 5F 5E 5B C9 C3 00 00 00 76 0C 00 00 D4 0C 00 00 1E ep_only = true [Upack 0.1x beta -> Dwing] signature = BE 48 01 40 00 AD 8B F8 95 A5 33 C0 33 C9 AB 48 AB F7 D8 B1 04 F3 AB C1 E0 0A B5 ?? F3 AB AD 50 97 51 AD 87 F5 58 8D 54 86 5C FF D5 72 5A 2C 03 73 02 B0 00 3C 07 72 02 2C 03 50 0F B6 5F FF C1 ep_only = true [Upack 0.20 beta -> Dwing] signature = BE 88 01 40 00 AD 8B F8 95 A5 33 C0 33 C9 AB 48 AB F7 D8 B1 04 F3 AB C1 E0 0A B5 ?? F3 AB AD 50 97 51 58 8D 54 85 5C FF 16 72 5A 2C 03 73 02 B0 00 3C 07 72 02 2C 03 50 0F B6 5F FF C1 E3 ?? B3 ep_only = true [Upack 0.21 beta -> Dwing] signature = BE 88 01 40 00 AD 8B F8 6A 04 95 A5 33 C0 AB 48 AB F7 D8 59 F3 AB C1 E0 0A B5 ?? F3 AB AD 50 97 51 58 8D 54 85 5C FF 16 72 5A 2C 03 73 02 B0 00 3C 07 72 02 2C 03 50 0F B6 5F FF C1 E3 ?? B3 00 ep_only = true [Upack 0.22 - 0.23 beta -> Dwing] signature = 6A 07 BE 88 01 40 00 AD 8B F8 59 95 F3 A5 AD B5 ?? F3 AB AD 50 97 51 58 8D 54 85 5C FF 16 72 59 2C 03 73 02 B0 00 3C 07 72 02 2C 03 50 0F B6 5F FF C1 E3 ?? B3 00 8D 1C 5B 8D 9C 9D 0C 10 00 00 ep_only = true [Upack 0.24 beta -> Dwing] signature = BE 88 01 40 00 AD 8B F8 95 AD 91 F3 A5 AD B5 ?? F3 AB AD 50 97 51 58 8D 54 85 5C FF 16 72 57 2C 03 73 02 B0 00 3C 07 72 02 2C 03 50 0F B6 5F FF C1 E3 ?? B3 00 8D 1C 5B 8D 9C 9D 0C 10 00 00 B0 ep_only = true [Upack v0.399 -> Dwing] signature = 0B 01 4C 6F 61 64 4C 69 62 72 61 72 79 41 00 00 18 10 00 00 10 00 00 00 00 ?? ?? 00 00 00 40 00 00 10 00 00 00 02 00 00 04 00 00 00 00 00 3A 00 04 00 00 00 00 00 00 00 00 ?? ?? 00 00 02 00 00 00 00 00 00 ?? 00 00 00 00 00 10 00 00 ?? 00 00 00 00 10 00 00 10 00 00 00 00 00 00 0A 00 00 00 00 00 00 00 00 00 00 00 EE ?? ?? 00 14 00 00 00 00 ?? ?? 00 ?? ?? 00 00 FF 76 38 AD 50 8B 3E BE F0 ?? ?? 00 6A 27 59 F3 A5 FF 76 04 83 C8 FF 8B DF AB EB 1C 00 00 00 00 47 65 74 50 72 6F 63 41 64 64 72 65 73 73 00 00 ?? ?? ?? 00 ?? 00 00 00 40 AB 40 B1 04 F3 AB C1 E0 0A B5 ep_only = true [UPX 2.90 [LZMA] -> Markus Oberhumer, Laszlo Molnar & John Reiser] signature = 60 BE ?? ?? ?? ?? 8D BE ?? ?? ?? ?? 57 83 CD FF EB 10 90 90 90 90 90 90 8A 06 46 88 07 47 01 DB 75 07 8B 1E 83 EE FC 11 DB 72 ED B8 01 00 00 00 01 DB 75 07 8B 1E 83 EE FC 11 DB 11 C0 01 DB ep_only = true [UPX Modified Stub b -> Farb-rausch Consumer Consulting] signature = 60 BE ?? ?? ?? ?? 8D BE ?? ?? ?? ?? 57 83 CD FF FC B2 80 31 DB A4 B3 02 E8 6D 00 00 00 73 F6 31 C9 E8 64 00 00 00 73 1C 31 C0 E8 5B 00 00 00 73 23 B3 02 41 B0 10 E8 4F 00 00 00 10 C0 73 F7 75 3F AA EB D4 E8 4D 00 00 00 29 D9 75 10 E8 42 00 00 00 EB 28 AC ep_only = true [UPX Modified Stub c -> Farb-rausch Consumer Consulting] signature = 60 BE ?? ?? ?? ?? 8D BE ?? ?? ?? ?? 57 83 CD FF FC B2 80 E8 00 00 00 00 5B 83 C3 66 A4 FF D3 73 FB 31 C9 FF D3 73 14 31 C0 FF D3 73 1D 41 B0 10 FF D3 10 C0 73 FA 75 3C AA EB E2 E8 4A 00 00 00 49 E2 10 E8 40 00 00 00 EB 28 AC D1 E8 74 45 11 C9 EB 1C 91 48 ep_only = true [Upx v1.2 -> Marcus & Lazlo] signature = 60 BE ?? ?? ?? ?? 8D BE ?? ?? ?? ?? 57 83 CD FF EB 05 A4 01 DB 75 07 8B 1E 83 EE FC 11 DB 72 F2 31 C0 40 01 DB 75 07 8B 1E 83 EE FC 11 DB 11 C0 01 DB 75 07 8B 1E 83 EE FC 11 DB 73 E6 31 C9 83 ep_only = true [UPX-SCRAMBLER 3.06 -> ©OnT®oL] signature = E8 00 00 00 00 59 83 C1 07 51 C3 C3 BE ?? ?? ?? ?? 83 EC 04 89 34 24 B9 80 00 00 00 81 36 ?? ?? ?? ?? 50 B8 04 00 00 00 50 03 34 24 58 58 83 E9 03 E2 E9 EB D6 ep_only = true [Vcasm-Protector 1.0] signature = 55 8B EC 6A FF 68 ?? ?? ?? 00 68 ?? ?? ?? 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 E8 03 00 00 00 C7 84 00 58 EB 01 E9 83 C0 07 50 C3 FF 35 E8 03 00 00 00 C7 84 00 58 EB 01 E9 83 C0 07 50 C3 FF 35 E8 07 00 00 00 C7 83 83 C0 13 EB 0B 58 EB 02 CD 20 83 ep_only = true [vfp&exeNc v6.00 -> Wang JianGuo] signature = 60 E8 01 00 00 00 63 58 E8 01 00 00 00 7A 58 2D 0D 10 40 00 8D 90 C1 10 40 00 52 50 8D 80 49 10 40 00 5D 50 8D 85 65 10 40 00 50 64 FF 35 00 00 00 00 64 89 25 00 00 00 00 CC ep_only = true [vprotector 1.2 -> vcasm] signature = EB 0B 5B 56 50 72 6F 74 65 63 74 5D 00 E8 24 00 00 00 8B 44 24 04 8B 00 3D 04 00 00 80 75 08 8B 64 24 08 EB 04 58 EB 0C E9 64 8F 05 00 00 00 00 74 F3 75 F1 EB 24 64 FF 35 00 00 00 00 EB 12 FF 9C 74 03 75 01 E9 81 0C 24 00 01 00 00 9D 90 EB F4 64 89 25 00 ep_only = true [VProtector V1.0E -> vcasm] signature = EB 0A 5B 56 50 72 6F 74 65 63 74 5D E8 24 00 00 00 8B 44 24 04 8B 00 3D 04 00 00 80 75 08 8B 64 24 08 EB 04 58 EB 0C E9 64 8F 05 00 00 00 00 74 F3 75 F1 EB 24 64 FF 35 00 00 00 00 ep_only = true [WinUpack v0.39 final (relocated image base) -> By Dwing (c)2005 (h2)] signature = 60 E8 09 00 00 00 ?? ?? ?? 00 E9 06 02 00 00 33 C9 5E 87 0E E3 F4 2B F1 8B DE AD 2B D8 AD 03 C3 50 97 AD 91 F3 A5 5E AD 56 91 01 1E AD E2 FB AD 8D 6E 10 01 5D 00 8D 7D 1C B5 ?? F3 AB 5E AD 53 50 51 97 58 8D 54 85 5C FF 16 72 57 2C 03 73 02 B0 00 3C 07 72 ep_only = true [WinZip Self-Extractor 2.2 personal edition -> WinZip Computing (h)] signature = 53 FF 15 58 70 40 00 B3 22 38 18 74 03 80 C3 FE 40 33 D2 8A 08 3A CA 74 10 3A CB 74 07 40 8A 08 3A CA 75 F5 38 10 74 01 40 52 50 52 52 FF 15 5C 70 40 00 50 E8 15 FB FF FF 50 FF 15 8C 70 40 00 5B ep_only = true [Wise Installer Stub] signature = 55 8B EC 81 EC 78 05 00 00 53 56 BE 04 01 00 00 57 8D 85 94 FD FF FF 56 33 DB 50 53 FF 15 34 20 40 00 8D 85 94 FD FF FF 56 50 8D 85 94 FD FF FF 50 FF 15 30 20 40 00 8B 3D 2C 20 40 00 53 53 6A 03 53 6A 01 8D 85 94 FD FF FF 68 00 00 00 80 50 FF D7 83 F8 FF ep_only = true [Wise Installer Stub v1.10.1029.1] signature = 55 8B EC 81 EC 40 0F 00 00 53 56 57 6A 04 FF 15 F4 30 40 00 FF 15 74 30 40 00 8A 08 89 45 E8 80 F9 22 75 48 8A 48 01 40 89 45 E8 33 F6 84 C9 74 0E 80 F9 22 74 09 8A 48 01 40 89 45 E8 EB EE 80 38 22 75 04 40 89 45 E8 80 38 20 75 09 40 80 38 20 74 FA 89 45 ep_only = true [Xtreme-Protector v1.06] signature = B8 ?? ?? ?? 00 B9 75 ?? ?? 00 50 51 E8 05 00 00 00 E9 4A 01 00 00 60 8B 74 24 24 8B 7C 24 28 FC B2 80 8A 06 46 88 07 47 BB 02 00 00 00 02 D2 75 05 8A 16 46 12 D2 73 EA 02 D2 75 05 8A 16 46 12 D2 73 4F 33 C0 02 D2 75 05 8A 16 46 12 D2 0F 83 DF 00 00 00 02 ep_only = true [yoda's Crypter 1.3 -> Ashkbiz Danehkar] signature = 55 8B EC 53 56 57 60 E8 00 00 00 00 5D 81 ED 6C 28 40 00 B9 5D 34 40 00 81 E9 C6 28 40 00 8B D5 81 C2 C6 28 40 00 8D 3A 8B F7 33 C0 EB 04 90 EB 01 C2 AC ep_only = true [yoda's Protector 1.0 beta -> Ashkbiz Danehkar] signature = 55 8B EC 53 56 57 60 E8 00 00 00 00 5D 81 ED 4C 32 40 00 E8 03 00 00 00 EB 01 ?? B9 EA 47 40 00 81 E9 E9 32 40 00 8B D5 81 C2 E9 32 40 00 8D 3A 8B F7 33 C0 E8 04 00 00 00 90 EB 01 ?? E8 03 00 ep_only = true [yoda's Protector 1.02 - 1.03 -> Ashkbiz Danehkar] signature = E8 03 00 00 00 EB 01 ?? BB 55 00 00 00 E8 03 00 00 00 EB 01 ?? E8 8F 00 00 00 E8 03 00 00 00 EB 01 ?? E8 82 00 00 00 E8 03 00 00 00 EB 01 ?? E8 B8 00 00 00 E8 03 00 00 00 EB 01 ?? E8 AB 00 00 ep_only = true [yoda's Protector v1.01 -> Ashkbiz Danehkar (h)] signature = 55 8B EC 53 56 57 E8 03 00 00 00 EB 01 ?? E8 86 00 00 00 E8 03 00 00 00 EB 01 ?? E8 79 00 00 00 E8 03 00 00 00 EB 01 ?? E8 A4 00 00 00 E8 03 00 00 00 EB 01 ?? E8 97 00 00 00 E8 03 00 00 00 EB 01 ?? E8 2D 00 00 00 E8 03 00 00 00 EB 01 ?? 60 E8 00 00 00 00 ep_only = true [yoda's Protector v1.03.2 (.exe,.scr,.com) -> Ashkbiz Danehkar (h)] signature = E8 03 00 00 00 EB 01 ?? BB 55 00 00 00 E8 03 00 00 00 EB 01 ?? E8 8F 00 00 00 E8 03 00 00 00 EB 01 ?? E8 82 00 00 00 E8 03 00 00 00 EB 01 ?? E8 B8 00 00 00 E8 03 00 00 00 EB 01 ?? E8 AB 00 00 00 E8 03 00 00 00 EB 01 ?? 83 FB 55 E8 03 00 00 00 EB 01 ?? 75 ep_only = true [Yoda's Protector v1.03.2 Beta2 -> Ashkbiz Danehkar] signature = E8 03 00 00 00 EB 01 ?? BB 55 00 00 00 E8 03 00 00 00 EB 01 ?? E8 8F 00 00 00 E8 03 00 00 00 EB 01 ?? E8 82 00 00 00 E8 03 00 00 00 EB 01 ?? E8 B8 00 00 00 ep_only = true [yoda's Protector v1.03.3 (.exe,.scr,.com) -> Ashkbiz Danehkar (h)] signature = E8 03 00 00 00 EB 01 ?? BB 55 00 00 00 E8 03 00 00 00 EB 01 ?? E8 8E 00 00 00 E8 03 00 00 00 EB 01 ?? E8 81 00 00 00 E8 03 00 00 00 EB 01 ?? E8 B7 00 00 00 E8 03 00 00 00 EB 01 ?? E8 AA 00 00 00 E8 03 00 00 00 EB 01 ?? 83 FB 55 E8 03 00 00 00 EB 01 ?? 75 ep_only = true [yoda's Protector v1.0b -> Ashkbiz Danehkar (h)] signature = 55 8B EC 53 56 57 60 E8 00 00 00 00 5D 81 ED 4C 32 40 00 E8 03 00 00 00 EB 01 ?? B9 EA 47 40 00 81 E9 E9 32 40 00 8B D5 81 C2 E9 32 40 00 8D 3A 8B F7 33 C0 E8 04 00 00 00 90 EB 01 ?? E8 03 00 00 00 EB 01 ep_only = true [* PseudoSigner 0.1 [Armadillo 3.00] --> Anorganix] signature = 60 E8 2A 00 00 00 5D 50 51 EB 0F B9 EB 0F B8 EB 07 B9 EB 0F 90 EB 08 FD EB 0B F2 EB F5 EB F6 F2 EB 08 FD EB E9 F3 EB E4 FC E9 59 58 50 51 EB 85 E9 ep_only = true [* PseudoSigner 0.1 [Armadillo 3.00] --> Anorganix] signature = 60 E8 2A 00 00 00 5D 50 51 EB 0F B9 EB 0F B8 EB 07 B9 EB 0F 90 EB 08 FD EB 0B F2 EB F5 EB F6 F2 EB 08 FD EB E9 F3 EB E4 FC E9 59 58 50 51 EB 85 E9 ep_only = true [* PseudoSigner 0.1 [CodeSafe 2.0] --> Anorganix] signature = 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 EB 0B 83 EC 10 53 56 57 E8 C4 01 00 85 E9 ep_only = true [* PseudoSigner 0.1 [CodeSafe 2.0] --> Anorganix] signature = 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 EB 0B 83 EC 10 53 56 57 E8 C4 01 00 85 E9 ep_only = true [* PseudoSigner 0.1 [DEF 1.0] --> Anorganix] signature = BE 00 01 40 00 6A 05 59 80 7E 07 00 74 11 8B 46 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 83 C1 01 E9 ep_only = true [* PseudoSigner 0.1 [DEF 1.0] --> Anorganix] signature = BE 00 01 40 00 6A 05 59 80 7E 07 00 74 11 8B 46 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 83 C1 01 E9 ep_only = true [* PseudoSigner 0.1 [DxPack 1.0] --> Anorganix] signature = 60 E8 00 00 00 00 5D 8B FD 81 ED 90 90 90 90 2B B9 00 00 00 00 81 EF 90 90 90 90 83 BD 90 90 90 90 90 0F 84 00 00 00 00 E9 ep_only = true [* PseudoSigner 0.1 [DxPack 1.0] --> Anorganix] signature = 60 E8 00 00 00 00 5D 8B FD 81 ED 90 90 90 90 2B B9 00 00 00 00 81 EF 90 90 90 90 83 BD 90 90 90 90 90 0F 84 00 00 00 00 E9 ep_only = true [* PseudoSigner 0.1 [ExeSmasher] --> Anorganix] signature = 9C FE 03 90 60 BE 90 90 41 90 8D BE 90 10 FF FF 57 83 CD FF EB 10 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 FE 0B E9 ep_only = true [* PseudoSigner 0.1 [ExeSmasher] --> Anorganix] signature = 9C FE 03 90 60 BE 90 90 41 90 8D BE 90 10 FF FF 57 83 CD FF EB 10 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 FE 0B E9 ep_only = true [* PseudoSigner 0.1 [Gleam 1.00] --> Anorganix] signature = 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 EB 0B 83 EC 0C 53 56 57 E8 24 02 00 FF E9 ep_only = true [* PseudoSigner 0.1 [Gleam 1.00] --> Anorganix] signature = 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 EB 0B 83 EC 0C 53 56 57 E8 24 02 00 FF E9 ep_only = true [* PseudoSigner 0.1 [JDPack 1.x / JDProtect 0.9] --> Anorganix] signature = 60 E8 22 00 00 00 5D 8B D5 81 ED 90 90 90 90 2B 95 90 90 90 90 81 EA 06 90 90 90 89 95 90 90 90 90 83 BD 45 00 01 00 01 E9 ep_only = true [* PseudoSigner 0.1 [JDPack 1.x / JDProtect 0.9] --> Anorganix] signature = 60 E8 22 00 00 00 5D 8B D5 81 ED 90 90 90 90 2B 95 90 90 90 90 81 EA 06 90 90 90 89 95 90 90 90 90 83 BD 45 00 01 00 01 E9 ep_only = true [* PseudoSigner 0.1 [LCC Win32 DLL] --> Anorganix] signature = 55 89 E5 53 56 57 83 7D 0C 01 75 05 E8 17 90 90 90 FF 75 10 FF 75 0C FF 75 08 A1 ?? ?? ?? ?? E9 ep_only = true [* PseudoSigner 0.1 [LCC Win32 DLL] --> Anorganix] signature = 55 89 E5 53 56 57 83 7D 0C 01 75 05 E8 17 90 90 90 FF 75 10 FF 75 0C FF 75 08 A1 ?? ?? ?? ?? E9 ep_only = true [* PseudoSigner 0.1 [Lockless Intro Pack] --> Anorganix] signature = 2C E8 EB 1A 90 90 5D 8B C5 81 ED F6 73 90 90 2B 85 90 90 90 90 83 E8 06 89 85 FF 01 EC AD E9 ep_only = true [* PseudoSigner 0.1 [Lockless Intro Pack] --> Anorganix] signature = 2C E8 EB 1A 90 90 5D 8B C5 81 ED F6 73 90 90 2B 85 90 90 90 90 83 E8 06 89 85 FF 01 EC AD E9 ep_only = true [* PseudoSigner 0.1 [Microsoft Visual Basic 6.0 DLL] --> Anorganix] signature = 90 90 90 90 68 ?? ?? ?? ?? 67 64 FF 36 00 00 67 64 89 26 00 00 F1 90 90 90 90 5A 68 90 90 90 90 68 90 90 90 90 52 E9 90 90 FF ep_only = true [* PseudoSigner 0.1 [Microsoft Visual Basic 6.0 DLL] --> Anorganix] signature = 90 90 90 90 68 ?? ?? ?? ?? 67 64 FF 36 00 00 67 64 89 26 00 00 F1 90 90 90 90 5A 68 90 90 90 90 68 90 90 90 90 52 E9 90 90 FF ep_only = true [* PseudoSigner 0.1 [Microsoft Visual C++ 6.20] --> Anorganix] signature = 90 90 90 90 68 ?? ?? ?? ?? 67 64 FF 36 00 00 67 64 89 26 00 00 F1 90 90 90 90 55 8B EC 83 EC 50 53 56 57 BE 90 90 90 90 8D 7D F4 A5 A5 66 A5 8B ep_only = true [* PseudoSigner 0.1 [Microsoft Visual C++ 6.20] --> Anorganix] signature = 90 90 90 90 68 ?? ?? ?? ?? 67 64 FF 36 00 00 67 64 89 26 00 00 F1 90 90 90 90 55 8B EC 83 EC 50 53 56 57 BE 90 90 90 90 8D 7D F4 A5 A5 66 A5 8B ep_only = true [* PseudoSigner 0.1 [Microsoft Visual C++ 7.0 DLL] --> Anorganix] signature = 55 8D 6C 01 00 81 EC 00 00 00 00 8B 45 90 83 F8 01 56 0F 84 00 00 00 00 85 C0 0F 84 ?? ?? ?? ?? E9 ep_only = true [* PseudoSigner 0.1 [Microsoft Visual C++ 7.0 DLL] --> Anorganix] signature = 55 8D 6C 01 00 81 EC 00 00 00 00 8B 45 90 83 F8 01 56 0F 84 00 00 00 00 85 C0 0F 84 ?? ?? ?? ?? E9 ep_only = true [* PseudoSigner 0.1 [PE Intro 1.0] --> Anorganix] signature = 8B 04 24 9C 60 E8 14 00 00 00 5D 81 ED 0A 45 40 90 80 BD 67 44 40 90 90 0F 85 48 FF ED 0A E9 ep_only = true [* PseudoSigner 0.1 [PE Intro 1.0] --> Anorganix] signature = 8B 04 24 9C 60 E8 14 00 00 00 5D 81 ED 0A 45 40 90 80 BD 67 44 40 90 90 0F 85 48 FF ED 0A E9 ep_only = true [* PseudoSigner 0.1 [PENinja 1.31] --> Anorganix] signature = 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 E9 ep_only = true [* PseudoSigner 0.1 [PENinja 1.31] --> Anorganix] signature = 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 E9 ep_only = true [* PseudoSigner 0.1 [PESHiELD 0.25] --> Anorganix] signature = 60 E8 2B 00 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 CC CC E9 ep_only = true [* PseudoSigner 0.1 [PESHiELD 0.25] --> Anorganix] signature = 60 E8 2B 00 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 CC CC E9 ep_only = true [* PseudoSigner 0.2 [Armadillo 3.00] --> Anorganix] signature = 60 E8 2A 00 00 00 5D 50 51 EB 0F B9 EB 0F B8 EB 07 B9 EB 0F 90 EB 08 FD EB 0B F2 EB F5 EB F6 F2 EB 08 FD EB E9 F3 EB E4 FC E9 59 58 50 51 EB 85 ep_only = true [* PseudoSigner 0.2 [CodeSafe 2.0] --> Anorganix] signature = 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 EB 0B 83 EC 10 53 56 57 E8 C4 01 00 85 ep_only = true [* PseudoSigner 0.2 [DEF 1.0] --> Anorganix] signature = BE 00 01 40 00 6A 05 59 80 7E 07 00 74 11 8B 46 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 83 C1 01 ep_only = true [* PseudoSigner 0.2 [DxPack 1.0] --> Anorganix] signature = 60 E8 00 00 00 00 5D 8B FD 81 ED 90 90 90 90 2B B9 00 00 00 00 81 EF 90 90 90 90 83 BD 90 90 90 90 90 0F 84 00 00 00 00 ep_only = true [* PseudoSigner 0.2 [ExeSmasher] --> Anorganix] signature = 9C FE 03 90 60 BE 90 90 41 90 8D BE 90 10 FF FF 57 83 CD FF EB 10 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 FE 0B ep_only = true [* PseudoSigner 0.2 [Gleam 1.00] --> Anorganix] signature = 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 EB 0B 83 EC 0C 53 56 57 E8 24 02 00 FF ep_only = true [* PseudoSigner 0.2 [JDPack 1.x / JDProtect 0.9] --> Anorganix] signature = 60 E8 22 00 00 00 5D 8B D5 81 ED 90 90 90 90 2B 95 90 90 90 90 81 EA 06 90 90 90 89 95 90 90 90 90 83 BD 45 00 01 00 01 ep_only = true [* PseudoSigner 0.2 [PESHiELD 0.25] --> Anorganix] signature = 60 E8 2B 00 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 CC CC ep_only = true [* PseudoSigner 0.2 [ZCode 1.01] --> Anorganix] signature = E9 12 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 E9 FB FF FF FF C3 68 00 00 00 00 64 FF 35 00 00 00 00 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 55 57 51 9C 50 52 55 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 55 04 83 C5 08 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 55 53 9C 57 52 51 55 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 55 53 50 57 53 9C 51 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 57 9C 50 55 51 51 53 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 57 55 53 52 51 9C 50 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 57 55 52 9C 50 51 53 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 01 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 53 55 52 51 55 57 9C 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 55 04 83 C5 08 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 53 52 50 9C 51 55 54 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 53 51 55 9C 51 50 57 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 55 51 57 54 53 9C 50 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 55 50 51 57 50 52 53 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 53 57 52 50 51 51 9C 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 9C 50 57 55 51 52 51 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 51 50 52 54 9C 53 55 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 50 56 53 51 55 9C 55 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 55 04 83 C5 08 36 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 50 55 9C 56 53 51 50 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 51 53 56 55 50 9C 52 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 55 04 83 C5 08 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 51 53 55 50 55 56 52 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 51 52 53 56 9C 55 50 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 9C 53 52 50 51 55 57 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 9C 52 53 55 52 57 51 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 9C 51 55 52 51 57 50 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 8D 0C 85 ?? ?? ?? ?? FF 21 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 50 55 52 55 51 53 9C 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 24 85 ?? ?? ?? ?? 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 50 53 54 51 55 56 9C 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 50 52 53 56 57 9C 55 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 53 51 55 52 9C 57 50 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8A 06 8A 04 07 46 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 9C 52 53 50 51 51 57 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 9C 52 51 57 53 56 54 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 06 83 ED 04 8D 76 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 9C 52 51 50 53 53 56 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 01 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 9C 57 56 50 52 53 51 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 9C 57 51 50 52 53 56 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 9C 53 50 54 57 51 56 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 57 51 9C 56 53 51 50 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 57 50 56 51 52 53 50 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8B 45 00 8A 55 04 83 C5 06 88 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 57 50 52 53 52 51 9C 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 9C 51 55 56 53 52 50 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 57 9C 53 51 50 52 51 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 57 9C 51 56 53 52 50 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 50 51 53 57 52 9C 51 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 8D 0C 85 ?? ?? ?? ?? FF 21 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 52 57 53 57 55 9C 51 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 24 85 ?? ?? ?? ?? 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 52 55 50 57 51 53 9C 54 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 FF 24 85 ?? ?? ?? ?? 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 52 50 53 51 57 9C 57 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 53 51 52 9C 55 57 51 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 53 51 50 53 9C 57 52 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 52 9C 55 53 51 50 51 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 50 55 50 52 51 57 53 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 50 53 9C 51 57 52 57 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 24 85 ?? ?? ?? ?? 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 50 52 9C 52 51 57 53 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 55 04 83 C5 08 36 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 51 9C 57 52 50 50 53 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8B 45 00 83 C5 02 66 8B 00 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 51 53 54 57 55 50 9C 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 50 55 51 53 50 52 9C 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 53 51 56 52 50 9C 50 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 52 56 57 55 53 9C 51 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 52 56 50 9C 53 50 51 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 01 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 54 53 9C 55 52 50 56 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 53 56 55 55 9C 50 52 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 53 52 51 57 55 9C 56 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8B 06 83 EE FC 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 52 50 53 51 56 55 51 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 8D 0C 85 ?? ?? ?? ?? FF 21 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 51 56 9C 56 53 55 52 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 66 8B 06 8D 76 02 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 51 56 57 55 52 9C 53 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8A 06 83 ED 02 66 89 45 00 46 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 52 53 56 50 55 51 9C 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 52 53 54 55 51 50 9C 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 52 53 50 9C 56 53 55 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 55 52 50 56 9C 51 53 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 EC 59 5A 5B 59 9D 5E 58 5F 5D 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 56 52 50 51 56 55 53 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 56 57 55 52 50 53 51 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 53 56 56 50 55 51 57 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8B 45 00 83 C5 02 66 8B 00 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 8A 4D 04 83 ED 02 D3 E8 89 45 04 9C 8F 45 00 E9 01 7D 00 00 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 57 55 52 54 50 51 53 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 52 57 53 55 56 50 9C 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 53 57 52 9C 51 56 53 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 53 51 57 53 9C 52 55 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 57 56 52 53 55 53 50 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 53 56 52 51 50 9C 57 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8B 45 00 66 8B 55 04 83 C5 06 66 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 53 55 50 9C 55 56 57 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 51 9C 56 53 55 52 50 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 51 56 53 53 9C 52 55 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 52 51 57 56 55 56 53 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 51 57 56 52 55 50 53 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 51 50 53 53 52 57 9C 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 9C 51 56 52 56 55 50 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 55 52 57 50 57 51 9C 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 24 85 ?? ?? ?? ?? 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 55 51 9C 52 50 53 57 54 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 52 55 50 9C 51 57 53 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF 8D 0C 85 ?? ?? ?? ?? FF 21 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 50 55 57 53 52 9C 56 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 56 9C 57 50 53 55 57 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 FF 24 85 ?? ?? ?? ?? 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 56 55 9C 56 57 50 51 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 56 57 51 50 52 55 9C 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 56 50 56 52 57 9C 51 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 52 9C 56 50 53 57 51 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 50 55 55 9C 56 52 51 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8A 45 00 83 ED 02 00 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 52 51 56 57 50 50 53 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 24 85 ?? ?? ?? ?? 8B 45 00 8A 55 04 83 C5 06 88 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 51 53 50 52 56 55 57 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 50 56 57 53 55 51 52 54 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 55 53 51 57 9C 56 52 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 51 52 54 53 56 57 55 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 57 52 53 51 55 50 55 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 80 E0 3C 8B 14 07 83 ED 04 89 55 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 56 53 55 51 57 52 52 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 56 50 52 51 57 53 55 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8B 06 83 ED 04 83 C6 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 9C 55 52 51 56 57 51 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 9C 57 55 53 51 52 50 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 57 55 56 52 56 51 50 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 56 51 9C 57 55 52 50 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 51 52 50 56 53 57 9C 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 51 50 52 57 53 9C 50 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 50 51 9C 50 57 53 56 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 55 04 83 C5 08 36 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 51 50 55 57 56 57 53 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 50 55 9C 51 56 51 53 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 9C 57 50 55 52 56 53 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 55 50 52 57 56 51 9C 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 50 55 52 51 9C 52 57 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 57 53 9C 54 55 51 56 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 24 85 ?? ?? ?? ?? 8B 45 00 01 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 53 52 50 56 56 9C 51 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 52 9C 57 51 55 55 53 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8B 45 00 83 C5 02 66 8B 00 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 50 57 9C 51 53 52 50 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 57 52 51 9C 53 53 50 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 50 9C 55 53 56 52 53 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 89 EC 58 59 5B 5A 5E 58 5D 9D 58 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 53 9C 55 50 54 51 52 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 55 56 51 53 50 9C 53 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 55 04 83 C5 08 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 56 52 53 56 50 57 51 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 56 51 53 55 51 50 52 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 56 51 52 55 51 50 57 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 57 51 53 55 56 50 52 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 24 85 ?? ?? ?? ?? 8B 06 83 ED 04 89 45 00 8D 76 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 56 57 51 50 55 51 53 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 8D 0C 85 ?? ?? ?? ?? FF 21 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 56 53 51 55 52 50 52 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 55 50 52 56 51 50 53 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 EC 59 5F 5B 5A 59 5E 5A 58 5D 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 53 55 56 56 57 51 50 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 53 51 52 55 52 50 56 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 55 57 53 52 55 51 56 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 55 56 53 57 52 51 57 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8A 06 46 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 55 52 56 53 57 51 54 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 01 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 57 52 55 56 51 50 53 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 55 52 52 56 57 9C 53 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 53 57 51 56 57 52 55 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 24 85 ?? ?? ?? ?? 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 52 53 56 51 55 9C 51 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 55 53 50 56 53 51 57 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 53 56 55 56 9C 57 51 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 24 85 ?? ?? ?? ?? 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 55 9C 52 50 57 56 53 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 54 51 50 55 53 56 9C 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8A 55 04 83 C5 06 88 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 50 55 9C 54 56 53 57 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 55 52 57 51 9C 53 54 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 51 56 55 52 9C 57 53 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 24 85 ?? ?? ?? ?? 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 53 50 55 56 51 57 50 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 52 55 51 53 53 57 50 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 52 53 51 55 57 56 50 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 51 56 55 52 50 55 53 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 53 50 52 51 55 56 52 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 52 56 53 55 53 51 50 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 52 56 51 57 53 50 55 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 50 56 57 51 52 53 55 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 55 00 83 C5 02 8A 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 50 52 53 52 56 57 55 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 50 51 53 57 56 52 55 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 51 56 53 52 50 55 52 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 55 00 83 C5 02 36 8A 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 51 55 57 53 56 50 52 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 50 57 53 51 52 55 54 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF 8D 0C 85 ?? ?? ?? ?? FF 21 89 EC 58 5E 59 5D 5A 59 5B 5F 58 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 56 57 53 52 50 51 55 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 8B 55 04 8A 4D 08 83 C5 02 0F A5 D0 89 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 8B 55 04 8A 4D 08 83 C5 02 0F AD D0 89 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8D 47 50 39 C5 0F 87 ?? ?? ?? ?? 8D 4F 40 29 E1 8D 45 80 29 C8 89 C4 9C 56 89 FE 8D BD 40 FF FF FF 57 FC F3 A4 5F 5E 9D E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 56 53 57 52 51 50 53 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 53 57 50 55 56 57 51 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 51 52 56 50 53 56 55 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 06 83 ED 04 8D 76 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 53 57 55 56 51 50 9C 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 56 57 55 50 52 9C 56 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 55 04 83 C5 08 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 56 53 53 50 9C 52 57 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 51 52 53 50 9C 57 56 54 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 55 51 9C 56 50 57 51 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 53 9C 50 56 51 55 57 54 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 53 52 51 55 55 56 57 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 55 52 57 9C 56 50 55 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 57 52 53 51 55 9C 52 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 55 00 83 C5 02 8A 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 55 9C 52 53 51 52 56 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8A 55 04 83 C5 06 88 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 45 00 66 8B 55 02 F6 D0 F6 D2 83 ED 02 20 D0 66 89 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 45 00 8A 4D 02 83 ED 02 66 D3 E8 66 89 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 45 00 8A 4D 02 83 ED 02 66 D3 E0 66 89 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 56 52 53 55 55 9C 51 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 55 51 9C 55 52 53 56 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 57 52 53 57 51 55 50 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 56 55 54 52 51 9C 50 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 51 51 52 55 57 9C 53 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 9C 56 50 51 53 52 57 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 52 56 53 57 51 52 9C 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 53 55 51 9C 52 55 50 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 06 8D 76 04 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 53 52 51 55 9C 50 57 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 0F B6 06 83 ED 02 46 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 53 51 55 53 9C 57 52 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 0F B6 06 66 98 98 46 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 54 53 57 51 55 56 9C 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 53 9C 50 56 51 55 54 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 53 55 50 9C 56 54 57 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 55 50 57 53 56 9C 57 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 55 50 53 56 51 9C 50 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 55 04 83 C5 08 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 54 56 50 9C 55 53 57 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 52 50 56 57 51 9C 53 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 51 56 9C 56 53 57 50 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF 8D 0C 85 ?? ?? ?? ?? FF 21 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 51 56 53 55 57 9C 50 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 06 83 ED 04 83 EE FC 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 53 53 9C 57 55 51 50 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 55 04 83 C5 08 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 53 50 56 53 57 9C 55 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 EC 58 59 5D 9D 5F 5A 5E 58 5B 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 53 50 55 51 56 9C 55 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 55 56 51 9C 53 57 51 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 06 83 C6 04 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 57 56 51 50 9C 55 57 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 57 53 9C 50 50 56 55 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 57 50 53 51 56 55 9C 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 50 51 53 52 57 55 9C 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 50 51 51 9C 52 57 55 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 06 83 ED 04 83 EE FC 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 9C 56 53 55 57 54 50 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 55 9C 55 56 57 51 53 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 55 9C 50 51 57 53 51 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 55 56 9C 57 51 50 53 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 56 56 57 55 53 9C 50 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 56 53 51 50 9C 57 50 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 56 53 50 55 9C 57 51 54 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 51 55 57 53 9C 50 52 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 57 56 52 9C 50 53 55 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 8D 0C 85 ?? ?? ?? ?? FF 21 89 EC 59 5F 5D 5B 58 9D 5A 5E 59 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 57 52 56 53 50 55 9C 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 06 83 ED 04 83 EE FC 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 57 50 55 56 53 9C 56 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 01 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 9C 52 57 50 53 55 56 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 24 85 ?? ?? ?? ?? 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 9C 52 53 50 56 57 55 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 57 9C 50 53 56 51 52 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 56 52 9C 57 54 55 53 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 55 57 50 9C 56 52 50 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 55 53 57 50 52 50 9C 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 56 9C 50 55 53 54 52 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 56 57 52 55 50 9C 53 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 56 56 53 55 57 9C 52 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 8A 55 04 83 C5 06 88 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 9C 55 50 57 53 56 52 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 50 56 57 53 9C 57 55 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 50 55 56 9C 57 53 51 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 50 53 9C 55 51 54 56 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 51 53 50 57 9C 55 54 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 24 85 ?? ?? ?? ?? 89 EC 5B 5E 5D 5D 9D 5F 58 5B 59 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 51 50 56 55 53 57 50 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 50 9C 55 53 51 56 57 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8B 45 00 01 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 9C 56 50 52 57 57 55 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 66 8B 55 04 83 C5 06 66 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 9C 55 53 53 56 50 52 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 24 85 ?? ?? ?? ?? 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 9C 55 53 50 52 53 56 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 50 53 51 9C 55 54 57 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 9C 57 53 50 55 51 52 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 9C 57 50 50 56 53 52 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 9C 52 50 51 57 56 55 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 57 9C 56 50 51 55 52 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 57 56 51 50 9C 52 55 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 50 52 51 9C 57 53 52 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 9C 56 51 52 50 55 57 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 9C 53 56 51 57 55 52 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 56 9C 52 52 51 55 50 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 56 51 55 50 57 9C 52 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 55 9C 56 57 51 50 52 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 83 C5 02 66 8B 00 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 57 52 55 56 55 50 51 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 57 52 55 50 51 57 56 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 57 51 52 50 51 9C 56 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 8A 55 04 83 C5 06 36 88 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 50 57 52 51 9C 53 56 54 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 24 85 ?? ?? ?? ?? 8B 06 83 ED 04 89 45 00 83 C6 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 53 51 51 56 50 52 57 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 52 57 51 56 53 57 50 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 52 57 50 9C 53 56 52 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 55 04 83 C5 08 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 56 57 51 52 53 53 9C 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8A 55 04 83 C5 06 88 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 56 52 57 50 55 53 9C 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 24 85 ?? ?? ?? ?? 8A 06 46 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 53 52 9C 57 56 50 53 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 8D 0C 85 ?? ?? ?? ?? FF 21 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 51 53 57 52 57 56 50 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 51 53 51 56 52 9C 57 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 50 9C 56 52 51 53 51 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 51 9C 57 56 52 50 56 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 51 9C 53 56 50 56 57 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 51 9C 53 51 52 50 56 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 55 9C 50 57 57 51 56 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 8A 55 04 83 C5 06 88 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 50 9C 55 56 54 57 52 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 50 9C 54 51 57 52 56 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 50 9C 50 56 57 51 52 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 24 85 ?? ?? ?? ?? 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 51 52 55 56 55 57 50 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 51 50 9C 55 52 50 57 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8B 06 8D 76 04 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 51 50 52 52 57 55 56 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 50 57 53 9C 52 51 55 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 50 55 50 51 9C 52 56 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 50 54 9C 51 56 55 57 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 50 57 9C 56 51 52 55 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 8D 0C 85 ?? ?? ?? ?? FF 21 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 50 57 56 9C 55 52 51 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 50 57 56 55 51 9C 51 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 51 52 55 56 56 9C 57 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 52 57 55 56 51 55 9C 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 52 57 55 51 9C 56 50 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 52 57 50 55 51 9C 56 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 55 55 57 51 56 50 9C 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 06 83 ED 04 83 C6 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 55 52 57 57 50 9C 56 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 52 9C 55 57 50 51 55 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 24 85 ?? ?? ?? ?? 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 51 9C 52 57 55 50 56 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 51 56 50 57 55 52 9C 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 51 55 56 52 9C 57 50 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 52 56 9C 57 50 51 55 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 55 04 83 C5 08 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 52 55 9C 57 56 51 50 54 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 FF 24 85 ?? ?? ?? ?? 89 EC 5A 5E 58 59 5E 5F 9D 5D 5A 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 52 50 56 51 57 56 55 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8A 06 8A 04 07 83 ED 02 66 89 45 00 46 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 55 52 9C 53 56 57 50 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 24 85 ?? ?? ?? ?? 89 EC 5A 5B 58 5F 5E 5A 9D 5A 5D 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 9C 52 52 53 57 51 55 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 57 55 51 55 9C 56 53 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 57 53 57 52 56 51 55 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 9C 52 56 56 53 57 51 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF 8D 0C 85 ?? ?? ?? ?? FF 21 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 9C 52 53 55 51 56 56 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 24 85 ?? ?? ?? ?? 8B 06 83 ED 04 89 45 00 83 C6 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 9C 52 53 51 55 51 56 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 01 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 56 51 51 9C 52 55 57 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 24 85 ?? ?? ?? ?? 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 55 9C 56 57 57 51 52 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 66 8B 06 98 83 ED 04 8D 76 02 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 55 9C 53 57 51 52 56 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 56 53 51 55 57 52 53 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 56 53 50 55 9C 51 52 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 56 52 53 55 57 9C 51 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 9C 53 56 53 52 55 51 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 50 9C 56 53 57 55 52 54 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 50 9C 56 53 57 52 55 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 50 57 9C 53 53 55 52 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 52 55 9C 56 53 52 57 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 89 EC 5A 58 5F 5A 5B 5E 9D 5D 59 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 52 53 55 9C 55 56 57 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 24 85 ?? ?? ?? ?? 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 52 50 53 56 55 57 9C 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 9C 55 54 56 52 57 51 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF 8D 0C 85 ?? ?? ?? ?? FF 21 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 9C 54 55 56 52 53 51 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 9C 53 57 52 57 56 51 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 50 55 56 50 53 9C 57 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 0F B6 06 46 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 50 52 9C 53 57 50 55 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 9C 56 53 53 55 57 52 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8B 45 00 01 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 55 53 56 52 57 56 51 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 51 55 53 56 51 57 52 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 51 53 9C 52 56 55 57 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 24 85 ?? ?? ?? ?? 8B 06 83 ED 04 89 45 00 83 EE FC E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 51 53 54 57 56 52 55 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 51 56 9C 53 57 55 52 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 55 04 83 C5 08 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 51 56 53 55 57 52 9C 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 EC 59 5D 9D 5A 5F 5D 5B 5E 59 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 51 55 9C 57 57 56 52 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 51 52 53 9C 56 57 56 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 50 9C 53 55 57 52 51 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 66 8B 06 98 83 ED 04 89 45 00 83 C6 02 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 50 57 9C 55 52 56 51 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 51 53 52 55 9C 52 57 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 51 52 9C 50 53 57 55 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 51 52 57 56 55 53 9C 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 52 51 53 9C 55 56 53 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 55 04 83 C5 08 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 53 50 9C 51 57 52 55 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 06 83 EE FC 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 52 9C 55 53 57 51 53 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 52 9C 50 55 53 51 56 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8A 55 04 83 C5 06 88 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 53 57 52 52 9C 56 55 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 53 56 57 52 55 51 53 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 53 54 52 57 51 55 56 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 24 85 ?? ?? ?? ?? 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 52 56 53 57 51 9C 52 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 52 53 53 55 9C 57 51 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 52 51 9C 56 53 57 51 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 52 57 9C 54 53 55 56 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 52 57 56 57 9C 51 55 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 52 56 9C 53 54 57 55 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 55 57 51 9C 50 52 55 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 55 04 83 C5 08 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 55 53 9C 57 52 51 55 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 55 53 50 57 53 9C 51 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 57 9C 50 55 51 51 53 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 57 55 53 52 51 9C 50 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 57 55 52 9C 50 51 53 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 01 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 53 55 52 51 55 57 9C 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 55 04 83 C5 08 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 53 52 50 9C 51 55 54 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 53 51 55 9C 51 50 57 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 55 51 57 54 53 9C 50 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 55 50 51 57 50 52 53 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 53 57 52 50 51 51 9C 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 9C 50 57 55 51 52 51 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 51 50 52 54 9C 53 55 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 50 56 53 51 55 9C 55 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 55 04 83 C5 08 36 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 50 55 9C 56 53 51 50 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 51 53 56 55 50 9C 52 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 55 04 83 C5 08 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 51 53 55 50 55 56 52 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 51 52 53 56 9C 55 50 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 9C 53 52 50 51 55 57 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 9C 52 53 55 52 57 51 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 9C 51 55 52 51 57 50 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 8D 0C 85 ?? ?? ?? ?? FF 21 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 50 55 52 55 51 53 9C 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 24 85 ?? ?? ?? ?? 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 50 53 54 51 55 56 9C 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 50 52 53 56 57 9C 55 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 53 51 55 52 9C 57 50 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8A 06 8A 04 07 46 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 9C 52 53 50 51 51 57 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 9C 52 51 57 53 56 54 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 06 83 ED 04 8D 76 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 9C 52 51 50 53 53 56 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 01 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 9C 57 56 50 52 53 51 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 9C 57 51 50 52 53 56 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 9C 53 50 54 57 51 56 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 57 51 9C 56 53 51 50 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 57 50 56 51 52 53 50 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8B 45 00 8A 55 04 83 C5 06 88 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 57 50 52 53 52 51 9C 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 9C 51 55 56 53 52 50 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 57 9C 53 51 50 52 51 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 57 9C 51 56 53 52 50 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 50 51 53 57 52 9C 51 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 8D 0C 85 ?? ?? ?? ?? FF 21 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 52 57 53 57 55 9C 51 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 24 85 ?? ?? ?? ?? 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 52 55 50 57 51 53 9C 54 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 FF 24 85 ?? ?? ?? ?? 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 52 50 53 51 57 9C 57 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 53 51 52 9C 55 57 51 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 53 51 50 53 9C 57 52 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 52 9C 55 53 51 50 51 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 50 55 50 52 51 57 53 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 50 53 9C 51 57 52 57 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 24 85 ?? ?? ?? ?? 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 50 52 9C 52 51 57 53 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 55 04 83 C5 08 36 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 51 9C 57 52 50 50 53 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8B 45 00 83 C5 02 66 8B 00 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 51 53 54 57 55 50 9C 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 50 55 51 53 50 52 9C 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 53 51 56 52 50 9C 50 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 52 56 57 55 53 9C 51 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 52 56 50 9C 53 50 51 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 01 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 54 53 9C 55 52 50 56 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 53 56 55 55 9C 50 52 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 53 52 51 57 55 9C 56 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8B 06 83 EE FC 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 52 50 53 51 56 55 51 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 8D 0C 85 ?? ?? ?? ?? FF 21 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 51 56 9C 56 53 55 52 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 66 8B 06 8D 76 02 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 51 56 57 55 52 9C 53 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8A 06 83 ED 02 66 89 45 00 46 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 52 53 56 50 55 51 9C 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 52 53 54 55 51 50 9C 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 52 53 50 9C 56 53 55 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 55 52 50 56 9C 51 53 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 EC 59 5A 5B 59 9D 5E 58 5F 5D 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 56 52 50 51 56 55 53 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 56 57 55 52 50 53 51 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 53 56 56 50 55 51 57 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8B 45 00 83 C5 02 66 8B 00 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 8A 4D 04 83 ED 02 D3 E8 89 45 04 9C 8F 45 00 E9 01 7D 00 00 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 57 55 52 54 50 51 53 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 52 57 53 55 56 50 9C 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 53 57 52 9C 51 56 53 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 53 51 57 53 9C 52 55 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 57 56 52 53 55 53 50 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 53 56 52 51 50 9C 57 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8B 45 00 66 8B 55 04 83 C5 06 66 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 53 55 50 9C 55 56 57 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 51 9C 56 53 55 52 50 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 51 56 53 53 9C 52 55 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 52 51 57 56 55 56 53 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 51 57 56 52 55 50 53 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 51 50 53 53 52 57 9C 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 9C 51 56 52 56 55 50 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 55 52 57 50 57 51 9C 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 24 85 ?? ?? ?? ?? 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 55 51 9C 52 50 53 57 54 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 52 55 50 9C 51 57 53 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF 8D 0C 85 ?? ?? ?? ?? FF 21 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 50 55 57 53 52 9C 56 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 56 9C 57 50 53 55 57 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 FF 24 85 ?? ?? ?? ?? 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 56 55 9C 56 57 50 51 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 56 57 51 50 52 55 9C 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 56 50 56 52 57 9C 51 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 52 9C 56 50 53 57 51 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 50 55 55 9C 56 52 51 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8A 45 00 83 ED 02 00 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 52 51 56 57 50 50 53 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 24 85 ?? ?? ?? ?? 8B 45 00 8A 55 04 83 C5 06 88 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 51 53 50 52 56 55 57 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 50 56 57 53 55 51 52 54 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 55 53 51 57 9C 56 52 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 51 52 54 53 56 57 55 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 57 52 53 51 55 50 55 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 80 E0 3C 8B 14 07 83 ED 04 89 55 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 56 53 55 51 57 52 52 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 56 50 52 51 57 53 55 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8B 06 83 ED 04 83 C6 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 9C 55 52 51 56 57 51 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 9C 57 55 53 51 52 50 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 57 55 56 52 56 51 50 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 56 51 9C 57 55 52 50 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 51 52 50 56 53 57 9C 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 51 50 52 57 53 9C 50 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 50 51 9C 50 57 53 56 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 55 04 83 C5 08 36 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 51 50 55 57 56 57 53 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 50 55 9C 51 56 51 53 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 9C 57 50 55 52 56 53 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 55 50 52 57 56 51 9C 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 50 55 52 51 9C 52 57 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 57 53 9C 54 55 51 56 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 24 85 ?? ?? ?? ?? 8B 45 00 01 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 53 52 50 56 56 9C 51 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 52 9C 57 51 55 55 53 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8B 45 00 83 C5 02 66 8B 00 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 50 57 9C 51 53 52 50 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 57 52 51 9C 53 53 50 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 50 9C 55 53 56 52 53 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 89 EC 58 59 5B 5A 5E 58 5D 9D 58 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 53 9C 55 50 54 51 52 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 55 56 51 53 50 9C 53 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 55 04 83 C5 08 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 56 52 53 56 50 57 51 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 56 51 53 55 51 50 52 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 56 51 52 55 51 50 57 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 57 51 53 55 56 50 52 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 24 85 ?? ?? ?? ?? 8B 06 83 ED 04 89 45 00 8D 76 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 56 57 51 50 55 51 53 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 8D 0C 85 ?? ?? ?? ?? FF 21 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 56 53 51 55 52 50 52 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 55 50 52 56 51 50 53 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 EC 59 5F 5B 5A 59 5E 5A 58 5D 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 53 55 56 56 57 51 50 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 53 51 52 55 52 50 56 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 55 57 53 52 55 51 56 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 55 56 53 57 52 51 57 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8A 06 46 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 55 52 56 53 57 51 54 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 01 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 57 52 55 56 51 50 53 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 55 52 52 56 57 9C 53 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 53 57 51 56 57 52 55 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 24 85 ?? ?? ?? ?? 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 52 53 56 51 55 9C 51 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 55 53 50 56 53 51 57 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 53 56 55 56 9C 57 51 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 24 85 ?? ?? ?? ?? 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 55 9C 52 50 57 56 53 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 54 51 50 55 53 56 9C 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8A 55 04 83 C5 06 88 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 50 55 9C 54 56 53 57 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 55 52 57 51 9C 53 54 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 51 56 55 52 9C 57 53 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 24 85 ?? ?? ?? ?? 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 53 50 55 56 51 57 50 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 52 55 51 53 53 57 50 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 52 53 51 55 57 56 50 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 51 56 55 52 50 55 53 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 53 50 52 51 55 56 52 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 52 56 53 55 53 51 50 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 52 56 51 57 53 50 55 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 50 56 57 51 52 53 55 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 55 00 83 C5 02 8A 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 50 52 53 52 56 57 55 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 50 51 53 57 56 52 55 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 51 56 53 52 50 55 52 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 55 00 83 C5 02 36 8A 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 51 55 57 53 56 50 52 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 50 57 53 51 52 55 54 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF 8D 0C 85 ?? ?? ?? ?? FF 21 89 EC 58 5E 59 5D 5A 59 5B 5F 58 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 56 57 53 52 50 51 55 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 8B 55 04 8A 4D 08 83 C5 02 0F A5 D0 89 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 8B 55 04 8A 4D 08 83 C5 02 0F AD D0 89 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8D 47 50 39 C5 0F 87 ?? ?? ?? ?? 8D 4F 40 29 E1 8D 45 80 29 C8 89 C4 9C 56 89 FE 8D BD 40 FF FF FF 57 FC F3 A4 5F 5E 9D E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 56 53 57 52 51 50 53 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 53 57 50 55 56 57 51 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9C 51 52 56 50 53 56 55 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 06 83 ED 04 8D 76 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 53 57 55 56 51 50 9C 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 56 57 55 50 52 9C 56 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 55 04 83 C5 08 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 56 53 53 50 9C 52 57 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 51 52 53 50 9C 57 56 54 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 55 51 9C 56 50 57 51 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 53 9C 50 56 51 55 57 54 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 53 52 51 55 55 56 57 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 55 52 57 9C 56 50 55 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 57 52 53 51 55 9C 52 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 55 00 83 C5 02 8A 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 55 9C 52 53 51 52 56 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8A 55 04 83 C5 06 88 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 45 00 66 8B 55 02 F6 D0 F6 D2 83 ED 02 20 D0 66 89 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 45 00 8A 4D 02 83 ED 02 66 D3 E8 66 89 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 45 00 8A 4D 02 83 ED 02 66 D3 E0 66 89 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 56 52 53 55 55 9C 51 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 55 51 9C 55 52 53 56 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 57 52 53 57 51 55 50 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 57 56 55 54 52 51 9C 50 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 51 51 52 55 57 9C 53 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 9C 56 50 51 53 52 57 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 52 56 53 57 51 52 9C 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 53 55 51 9C 52 55 50 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 06 8D 76 04 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 53 52 51 55 9C 50 57 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 0F B6 06 83 ED 02 46 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 56 53 51 55 53 9C 57 52 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 0F B6 06 66 98 98 46 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 54 53 57 51 55 56 9C 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 53 9C 50 56 51 55 54 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 53 55 50 9C 56 54 57 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 55 50 57 53 56 9C 57 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 55 50 53 56 51 9C 50 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 55 04 83 C5 08 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 54 56 50 9C 55 53 57 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 52 50 56 57 51 9C 53 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 51 56 9C 56 53 57 50 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF 8D 0C 85 ?? ?? ?? ?? FF 21 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 51 56 53 55 57 9C 50 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 06 83 ED 04 83 EE FC 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 53 53 9C 57 55 51 50 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 55 04 83 C5 08 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 53 50 56 53 57 9C 55 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 EC 58 59 5D 9D 5F 5A 5E 58 5B 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 53 50 55 51 56 9C 55 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 55 56 51 9C 53 57 51 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 06 83 C6 04 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 57 56 51 50 9C 55 57 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 57 53 9C 50 50 56 55 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 57 50 53 51 56 55 9C 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 50 51 53 52 57 55 9C 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 50 51 51 9C 52 57 55 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 06 83 ED 04 83 EE FC 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 9C 56 53 55 57 54 50 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 55 9C 55 56 57 51 53 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 55 9C 50 51 57 53 51 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 55 56 9C 57 51 50 53 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 56 56 57 55 53 9C 50 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 56 53 51 50 9C 57 50 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 56 53 50 55 9C 57 51 54 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 51 55 57 53 9C 50 52 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 57 56 52 9C 50 53 55 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 8D 0C 85 ?? ?? ?? ?? FF 21 89 EC 59 5F 5D 5B 58 9D 5A 5E 59 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 57 52 56 53 50 55 9C 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 06 83 ED 04 83 EE FC 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 57 50 55 56 53 9C 56 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 01 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 9C 52 57 50 53 55 56 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 24 85 ?? ?? ?? ?? 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 9C 52 53 50 56 57 55 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 57 9C 50 53 56 51 52 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 56 52 9C 57 54 55 53 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 55 57 50 9C 56 52 50 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 55 53 57 50 52 50 9C 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 56 9C 50 55 53 54 52 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 56 57 52 55 50 9C 53 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 56 56 53 55 57 9C 52 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 8A 55 04 83 C5 06 88 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 9C 55 50 57 53 56 52 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 50 56 57 53 9C 57 55 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 50 55 56 9C 57 53 51 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 50 53 9C 55 51 54 56 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 51 53 50 57 9C 55 54 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 24 85 ?? ?? ?? ?? 89 EC 5B 5E 5D 5D 9D 5F 58 5B 59 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 51 50 56 55 53 57 50 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 50 9C 55 53 51 56 57 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8B 45 00 01 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 9C 56 50 52 57 57 55 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 66 8B 55 04 83 C5 06 66 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 9C 55 53 53 56 50 52 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 24 85 ?? ?? ?? ?? 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 9C 55 53 50 52 53 56 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 52 50 53 51 9C 55 54 57 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 9C 57 53 50 55 51 52 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 9C 57 50 50 56 53 52 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 9C 52 50 51 57 56 55 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 57 9C 56 50 51 55 52 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 57 56 51 50 9C 52 55 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 50 52 51 9C 57 53 52 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 9C 56 51 52 50 55 57 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 9C 53 56 51 57 55 52 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 56 9C 52 52 51 55 50 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 56 51 55 50 57 9C 52 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 55 9C 56 57 51 50 52 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 83 C5 02 66 8B 00 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 57 52 55 56 55 50 51 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 57 52 55 50 51 57 56 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 57 51 52 50 51 9C 56 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 8A 55 04 83 C5 06 36 88 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 50 57 52 51 9C 53 56 54 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 24 85 ?? ?? ?? ?? 8B 06 83 ED 04 89 45 00 83 C6 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 53 51 51 56 50 52 57 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 52 57 51 56 53 57 50 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 52 57 50 9C 53 56 52 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 55 04 83 C5 08 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 56 57 51 52 53 53 9C 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8A 55 04 83 C5 06 88 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 56 52 57 50 55 53 9C 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 24 85 ?? ?? ?? ?? 8A 06 46 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 53 52 9C 57 56 50 53 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 8D 0C 85 ?? ?? ?? ?? FF 21 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 51 53 57 52 57 56 50 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 51 53 51 56 52 9C 57 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 50 9C 56 52 51 53 51 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 51 9C 57 56 52 50 56 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 51 9C 53 56 50 56 57 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 51 9C 53 51 52 50 56 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 55 9C 50 57 57 51 56 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 8A 55 04 83 C5 06 88 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 50 9C 55 56 54 57 52 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 50 9C 54 51 57 52 56 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 50 9C 50 56 57 51 52 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 24 85 ?? ?? ?? ?? 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 51 52 55 56 55 57 50 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 51 50 9C 55 52 50 57 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8B 06 8D 76 04 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 51 50 52 52 57 55 56 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 50 57 53 9C 52 51 55 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 50 55 50 51 9C 52 56 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 50 54 9C 51 56 55 57 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 50 57 9C 56 51 52 55 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 8D 0C 85 ?? ?? ?? ?? FF 21 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 50 57 56 9C 55 52 51 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 50 57 56 55 51 9C 51 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 51 52 55 56 56 9C 57 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 52 57 55 56 51 55 9C 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 52 57 55 51 9C 56 50 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 52 57 50 55 51 9C 56 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 55 55 57 51 56 50 9C 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 06 83 ED 04 83 C6 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 55 52 57 57 50 9C 56 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 52 9C 55 57 50 51 55 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 24 85 ?? ?? ?? ?? 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 51 9C 52 57 55 50 56 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 51 56 50 57 55 52 9C 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 51 55 56 52 9C 57 50 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 52 56 9C 57 50 51 55 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 55 04 83 C5 08 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 52 55 9C 57 56 51 50 54 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 FF 24 85 ?? ?? ?? ?? 89 EC 5A 5E 58 59 5E 5F 9D 5D 5A 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 52 50 56 51 57 56 55 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8A 06 8A 04 07 83 ED 02 66 89 45 00 46 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 55 52 9C 53 56 57 50 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 24 85 ?? ?? ?? ?? 89 EC 5A 5B 58 5F 5E 5A 9D 5A 5D 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 9C 52 52 53 57 51 55 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 57 55 51 55 9C 56 53 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 57 53 57 52 56 51 55 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 66 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 9C 52 56 56 53 57 51 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF 8D 0C 85 ?? ?? ?? ?? FF 21 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 9C 52 53 55 51 56 56 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 24 85 ?? ?? ?? ?? 8B 06 83 ED 04 89 45 00 83 C6 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 9C 52 53 51 55 51 56 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 8B 45 00 01 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 56 51 51 9C 52 55 57 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 24 85 ?? ?? ?? ?? 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 55 9C 56 57 57 51 52 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 66 8B 06 98 83 ED 04 8D 76 02 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 55 9C 53 57 51 52 56 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 56 53 51 55 57 52 53 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 56 53 50 55 9C 51 52 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 56 52 53 55 57 9C 51 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 9C 53 56 53 52 55 51 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 50 9C 56 53 57 55 52 54 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 50 9C 56 53 57 52 55 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 50 57 9C 53 53 55 52 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 52 55 9C 56 53 52 57 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 89 EC 5A 58 5F 5A 5B 5E 9D 5D 59 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 52 53 55 9C 55 56 57 50 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 24 85 ?? ?? ?? ?? 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 52 50 53 56 55 57 9C 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 9C 55 54 56 52 57 51 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF 8D 0C 85 ?? ?? ?? ?? FF 21 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 9C 54 55 56 52 53 51 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 9C 53 57 52 57 56 51 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 50 55 56 50 53 9C 57 52 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 24 85 ?? ?? ?? ?? 0F B6 06 46 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 51 50 52 9C 53 57 50 55 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 9C 56 53 53 55 57 52 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 8B 45 00 01 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 55 53 56 52 57 56 51 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 51 55 53 56 51 57 52 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 51 53 9C 52 56 55 57 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 24 85 ?? ?? ?? ?? 8B 06 83 ED 04 89 45 00 83 EE FC E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 51 53 54 57 56 52 55 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 51 56 9C 53 57 55 52 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 55 04 83 C5 08 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 51 56 53 55 57 52 9C 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 EC 59 5D 9D 5A 5F 5D 5B 5E 59 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 51 55 9C 57 57 56 52 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 51 52 53 9C 56 57 56 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 50 9C 53 55 57 52 51 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 24 85 ?? ?? ?? ?? 66 8B 06 98 83 ED 04 89 45 00 83 C6 02 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 50 57 9C 55 52 56 51 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 C6 01 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 51 53 52 55 9C 52 57 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 51 52 9C 50 53 57 55 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 51 52 57 56 55 53 9C 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 8D 76 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 52 51 53 9C 55 56 53 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 24 85 ?? ?? ?? ?? 8B 45 00 8B 55 04 83 C5 08 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 53 50 9C 51 57 52 55 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 06 83 EE FC 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 52 9C 55 53 57 51 53 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 52 9C 50 55 53 51 56 57 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8A 55 04 83 C5 06 88 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 53 57 52 52 9C 56 55 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 53 56 57 52 55 51 53 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 8D 0C 85 ?? ?? ?? ?? FF 21 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 53 54 52 57 51 55 56 9C 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 24 85 ?? ?? ?? ?? 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 52 56 53 57 51 9C 52 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 46 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 52 53 53 55 9C 57 51 56 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 46 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 52 51 9C 56 53 57 51 55 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 C6 01 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 52 57 9C 54 53 55 56 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 8D 76 01 0F B6 C0 8D 0C 85 ?? ?? ?? ?? FF 21 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 52 57 56 57 9C 51 55 53 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 83 EE FF 0F B6 C0 FF 34 85 ?? ?? ?? ?? C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 50 52 56 9C 53 54 57 55 51 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 0F B6 C0 83 EE FF FF 34 85 ?? ?? ?? ?? C3 ep_only = true [*** Protector v1.1.11 (DDeM->PE Engine v0.9, DDeM->CI v0.9.2)] signature = 53 51 56 E8 00 00 00 00 5B 81 EB 08 10 00 00 8D B3 34 10 00 00 B9 F3 03 00 00 BA 63 17 2A EE 31 16 83 C6 04 ep_only = true [*** Protector v1.1.11 (DDeM->PE Engine v0.9, DDeM->CI v0.9.2)] signature = 53 51 56 E8 00 00 00 00 5B 81 EB 08 10 00 00 8D B3 34 10 00 00 B9 F3 03 00 00 BA 63 17 2A EE 31 16 83 C6 04 ep_only = true [.NET executable] signature = FF 25 00 20 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ep_only = true [ACProtect 1.4x -> RISCO soft] signature = 47 65 74 50 72 6F 63 41 64 64 72 65 73 73 00 00 00 47 65 74 4D 6F 64 75 6C 65 48 61 6E 64 6C 65 41 00 00 00 4C 6F 61 64 4C 69 62 72 61 72 79 41 00 00 00 45 78 69 74 50 72 6F 63 65 73 73 00 00 00 4D 65 73 73 61 67 65 42 6F 78 41 00 90 4D 69 6E 65 49 6D 70 ep_only = false [ACProtect 1.4x -> RISCO soft] signature = 47 65 74 50 72 6F 63 41 64 64 72 65 73 73 00 00 00 47 65 74 4D 6F 64 75 6C 65 48 61 6E 64 6C 65 41 00 00 00 4C 6F 61 64 4C 69 62 72 61 72 79 41 00 00 00 45 78 69 74 50 72 6F 63 65 73 73 00 00 00 4D 65 73 73 61 67 65 42 6F 78 41 00 90 4D 69 6E 65 49 6D 70 ep_only = false [ActiveMARK 5.x -> Trymedia Systems,Inc. (h)] signature = 20 2D 2D 4D 50 52 4D 4D 47 56 41 2D 2D 00 75 73 65 72 33 32 2E 64 6C 6C 00 4D 65 73 73 61 67 65 42 6F 78 41 00 54 68 69 73 20 61 70 70 6C 69 63 61 74 69 6F 6E 20 63 61 6E 6E 6F 74 20 72 75 6E 20 77 69 74 68 20 61 6E 20 61 63 74 69 76 65 20 64 65 62 75 67 ep_only = false [ActiveMARK 5.x -> Trymedia Systems,Inc. (h)] signature = 20 2D 2D 4D 50 52 4D 4D 47 56 41 2D 2D 00 75 73 65 72 33 32 2E 64 6C 6C 00 4D 65 73 73 61 67 65 42 6F 78 41 00 54 68 69 73 20 61 70 70 6C 69 63 61 74 69 6F 6E 20 63 61 6E 6E 6F 74 20 72 75 6E 20 77 69 74 68 20 61 6E 20 61 63 74 69 76 65 20 64 65 62 75 67 ep_only = false [AHpack 0.1 -> FEUERRADER (h)] signature = 60 68 54 ?? ?? ?? B8 48 ?? ?? ?? FF 10 68 B3 ?? ?? ?? 50 B8 44 ?? ?? ?? FF 10 68 00 ?? ?? ?? 6A 40 FF D0 89 05 CA ?? ?? ?? 89 C7 BE 00 10 ?? ?? 60 FC B2 80 31 DB A4 B3 02 E8 6D 00 00 00 73 F6 31 C9 E8 64 00 00 00 73 1C 31 C0 E8 5B 00 00 00 73 23 B3 02 41 ep_only = true [AHpack 0.1 -> FEUERRADER (h)] signature = 60 68 54 ?? ?? ?? B8 48 ?? ?? ?? FF 10 68 B3 ?? ?? ?? 50 B8 44 ?? ?? ?? FF 10 68 00 ?? ?? ?? 6A 40 FF D0 89 05 CA ?? ?? ?? 89 C7 BE 00 10 ?? ?? 60 FC B2 80 31 DB A4 B3 02 E8 6D 00 00 00 73 F6 31 C9 E8 64 00 00 00 73 1C 31 C0 E8 5B 00 00 00 73 23 B3 02 41 ep_only = true [Alex Protector 1.0 beta 2 by Alex] signature = 60 E8 00 00 00 00 5D 81 ED 06 10 40 00 E8 24 00 00 00 EB 01 E9 8B 44 24 0C EB 03 EB 03 C7 EB FB E8 01 00 00 00 A8 83 C4 04 83 80 B8 00 00 00 02 33 C0 EB 01 E9 C3 58 83 C4 04 EB 03 EB 03 C7 EB FB E8 01 00 00 00 A8 83 C4 04 50 64 FF 35 00 00 00 00 64 89 25 ep_only = false [Alex Protector 1.0 beta 2 by Alex] signature = 60 E8 00 00 00 00 5D 81 ED 06 10 40 00 E8 24 00 00 00 EB 01 E9 8B 44 24 0C EB 03 EB 03 C7 EB FB E8 01 00 00 00 A8 83 C4 04 83 80 B8 00 00 00 02 33 C0 EB 01 E9 C3 58 83 C4 04 EB 03 EB 03 C7 EB FB E8 01 00 00 00 A8 83 C4 04 50 64 FF 35 00 00 00 00 64 89 25 ep_only = false [Alex Protector v0.4 beta 1 by Alex] signature = 60 E8 01 00 00 00 C7 83 C4 04 33 C9 E8 01 00 00 00 68 83 C4 04 E8 01 00 00 00 68 83 C4 04 B9 ?? 00 00 00 E8 01 00 00 00 68 83 C4 04 E8 00 00 00 00 E8 01 00 00 00 C7 83 C4 04 8B 2C 24 83 C4 04 E8 01 00 00 00 A9 83 C4 04 81 ED 3C 13 40 00 E8 01 00 00 00 68 ep_only = false [Alex Protector v0.4 beta 1 by Alex] signature = 60 E8 01 00 00 00 C7 83 C4 04 33 C9 E8 01 00 00 00 68 83 C4 04 E8 01 00 00 00 68 83 C4 04 B9 ?? 00 00 00 E8 01 00 00 00 68 83 C4 04 E8 00 00 00 00 E8 01 00 00 00 C7 83 C4 04 8B 2C 24 83 C4 04 E8 01 00 00 00 A9 83 C4 04 81 ED 3C 13 40 00 E8 01 00 00 00 68 ep_only = false [ARM Protector v0.1 by SMoKE] signature = E8 04 00 00 00 83 60 EB 0C 5D EB 05 45 55 EB 04 B8 EB F9 00 C3 E8 00 00 00 00 5D EB 01 00 81 ED 5E 1F 40 00 EB 02 83 09 8D B5 EF 1F 40 00 EB 02 83 09 BA A3 11 00 00 EB 01 00 8D 8D 92 31 40 00 8B 09 E8 14 00 00 00 83 EB 01 00 8B FE E8 00 00 00 00 58 83 C0 ep_only = false [ARM Protector v0.1 by SMoKE] signature = E8 04 00 00 00 83 60 EB 0C 5D EB 05 45 55 EB 04 B8 EB F9 00 C3 E8 00 00 00 00 5D EB 01 00 81 ED 5E 1F 40 00 EB 02 83 09 8D B5 EF 1F 40 00 EB 02 83 09 BA A3 11 00 00 EB 01 00 8D 8D 92 31 40 00 8B 09 E8 14 00 00 00 83 EB 01 00 8B FE E8 00 00 00 00 58 83 C0 ep_only = false [Armadillo 3.00a -> Silicon Realms Toolworks] signature = 60 E8 00 00 00 00 5D 50 51 EB 0F ?? EB 0F ?? EB 07 ?? EB 0F ?? EB 08 FD EB 0B F2 EB F5 EB F6 F2 EB 08 FD EB E9 F3 EB E4 FC ?? 59 58 50 51 EB 0F ?? EB 0F ?? EB 07 ?? EB 0F ?? EB 08 FD EB 0B F2 EB F5 EB F6 F2 EB 08 FD EB E9 F3 EB E4 FC ?? 59 58 50 51 EB 0F ep_only = true [Armadillo 3.00a -> Silicon Realms Toolworks] signature = 60 E8 00 00 00 00 5D 50 51 EB 0F ?? EB 0F ?? EB 07 ?? EB 0F ?? EB 08 FD EB 0B F2 EB F5 EB F6 F2 EB 08 FD EB E9 F3 EB E4 FC ?? 59 58 50 51 EB 0F ?? EB 0F ?? EB 07 ?? EB 0F ?? EB 08 FD EB 0B F2 EB F5 EB F6 F2 EB 08 FD EB E9 F3 EB E4 FC ?? 59 58 50 51 EB 0F ep_only = true [Armadillo 4.30a -> Silicon Realms Toolworks (h)] signature = 44 64 65 44 61 74 61 20 69 6E 69 74 69 61 6C 69 7A 65 64 20 28 41 4E 53 49 29 2C 20 61 70 70 20 73 74 72 69 6E 67 73 20 61 72 65 20 27 25 73 27 20 61 6E 64 20 27 25 73 27 00 00 00 44 64 65 44 61 74 61 20 69 6E 69 74 69 61 6C 69 7A 65 64 20 28 55 4E 49 43 ep_only = false [Armadillo 4.30a -> Silicon Realms Toolworks (h)] signature = 44 64 65 44 61 74 61 20 69 6E 69 74 69 61 6C 69 7A 65 64 20 28 41 4E 53 49 29 2C 20 61 70 70 20 73 74 72 69 6E 67 73 20 61 72 65 20 27 25 73 27 20 61 6E 64 20 27 25 73 27 00 00 00 44 64 65 44 61 74 61 20 69 6E 69 74 69 61 6C 69 7A 65 64 20 28 55 4E 49 43 ep_only = false [Armadillo 4.40 -> Silicon Realms Toolworks (h)] signature = 31 2E 31 2E 34 00 00 00 C2 E0 94 BE 93 FC DE C6 B6 24 83 F7 D2 A4 92 77 40 27 CF EB D8 6F 50 B4 B5 29 24 FA 45 08 04 52 D5 1B D2 8C 8A 1E 6E FF 8C 5F 42 89 F1 83 B1 27 C5 69 57 FC 55 0A DD 44 BE 2A 02 97 6B 65 15 AA 31 E9 28 7D 49 1B DF B5 5D 08 A8 BA A8 ep_only = false [Armadillo 4.40 -> Silicon Realms Toolworks (h)] signature = 31 2E 31 2E 34 00 00 00 C2 E0 94 BE 93 FC DE C6 B6 24 83 F7 D2 A4 92 77 40 27 CF EB D8 6F 50 B4 B5 29 24 FA 45 08 04 52 D5 1B D2 8C 8A 1E 6E FF 8C 5F 42 89 F1 83 B1 27 C5 69 57 FC 55 0A DD 44 BE 2A 02 97 6B 65 15 AA 31 E9 28 7D 49 1B DF B5 5D 08 A8 BA A8 ep_only = false [Armadillo v1.60a] signature = 55 8B EC 6A FF 68 98 71 40 00 68 48 2D 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v1.60a] signature = 55 8B EC 6A FF 68 98 71 40 00 68 48 2D 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v1.77] signature = 55 8B EC 6A FF 68 B0 71 40 00 68 6C 37 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v1.77] signature = 55 8B EC 6A FF 68 B0 71 40 00 68 6C 37 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v1.80] signature = 55 8B EC 6A FF 68 E8 C1 00 00 68 F4 86 00 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v1.80] signature = 55 8B EC 6A FF 68 E8 C1 00 00 68 F4 86 00 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v1.82] signature = 55 8B EC 6A FF 68 E0 C1 40 00 68 74 81 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v1.82] signature = 55 8B EC 6A FF 68 E0 C1 40 00 68 74 81 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v1.83] signature = 55 8B EC 6A FF 68 E0 C1 40 00 68 64 84 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v1.83] signature = 55 8B EC 6A FF 68 E0 C1 40 00 68 64 84 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v1.84] signature = 55 8B EC 6A FF 68 E8 C1 40 00 68 F4 86 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v1.84] signature = 55 8B EC 6A FF 68 E8 C1 40 00 68 F4 86 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v1.90] signature = 55 8B EC 6A FF 68 10 F2 40 00 68 64 9A 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v1.90] signature = 55 8B EC 6A FF 68 10 F2 40 00 68 64 9A 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v1.90a] signature = 55 8B EC 64 FF 68 10 F2 40 00 68 14 9B 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v1.90a] signature = 55 8B EC 64 FF 68 10 F2 40 00 68 14 9B 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v1.90b1] signature = 55 8B EC 6A FF 68 E0 C1 40 00 68 04 89 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v1.90b1] signature = 55 8B EC 6A FF 68 E0 C1 40 00 68 04 89 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v1.90b2] signature = 55 8B EC 6A FF 68 F0 C1 40 00 68 A4 89 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v1.90b2] signature = 55 8B EC 6A FF 68 F0 C1 40 00 68 A4 89 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v1.90b3] signature = 55 8B EC 6A FF 68 08 E2 40 00 68 94 95 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v1.90b3] signature = 55 8B EC 6A FF 68 08 E2 40 00 68 94 95 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v1.90b4] signature = 55 8B EC 6A FF 68 08 E2 40 00 68 B4 96 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v1.90b4] signature = 55 8B EC 6A FF 68 08 E2 40 00 68 B4 96 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v1.90c] signature = 55 8B EC 6A FF 68 10 F2 40 00 68 74 9D 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v1.90c] signature = 55 8B EC 6A FF 68 10 F2 40 00 68 74 9D 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v2.00] signature = 55 8B EC 6A FF 68 00 02 41 00 68 C4 A0 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v2.00] signature = 55 8B EC 6A FF 68 00 02 41 00 68 C4 A0 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v2.00b2-2.00b3] signature = 55 8B EC 6A FF 68 00 F2 40 00 68 C4 A0 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v2.00b2-2.00b3] signature = 55 8B EC 6A FF 68 00 F2 40 00 68 C4 A0 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v2.01] signature = 55 8B EC 6A FF 68 08 02 41 00 68 04 9A 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v2.01] signature = 55 8B EC 6A FF 68 08 02 41 00 68 04 9A 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v2.10b2] signature = 55 8B EC 6A FF 68 18 12 41 00 68 24 A0 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v2.10b2] signature = 55 8B EC 6A FF 68 18 12 41 00 68 24 A0 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v2.20] signature = 55 8B EC 6A FF 68 10 12 41 00 68 F4 A0 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v2.20] signature = 55 8B EC 6A FF 68 10 12 41 00 68 F4 A0 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v2.20b1] signature = 55 8B EC 6A FF 68 30 12 41 00 68 A4 A5 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v2.20b1] signature = 55 8B EC 6A FF 68 30 12 41 00 68 A4 A5 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 ep_only = true [Armadillo v2.50] signature = 55 8B EC 6A FF 68 B8 ?? ?? ?? 68 F8 ?? ?? ?? 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 53 56 57 89 65 E8 FF 15 20 ?? ?? ?? 33 D2 8A D4 89 15 D0 ep_only = true [Armadillo v2.50] signature = 55 8B EC 6A FF 68 B8 ?? ?? ?? 68 F8 ?? ?? ?? 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 53 56 57 89 65 E8 FF 15 20 ?? ?? ?? 33 D2 8A D4 89 15 D0 ep_only = true [Armadillo v2.53] signature = 55 8B EC 6A FF 68 ?? ?? ?? ?? 40 ?? ?? ?? ?? 68 54 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 53 56 57 89 65 E8 FF ?? ?? ?? 15 58 33 D2 8A D4 89 ep_only = true [Armadillo v2.53] signature = 55 8B EC 6A FF 68 ?? ?? ?? ?? 40 ?? ?? ?? ?? 68 54 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 53 56 57 89 65 E8 FF ?? ?? ?? 15 58 33 D2 8A D4 89 ep_only = true [Armadillo v2.5x - v2.6x] signature = 55 8B EC 6A FF 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 53 56 57 89 65 E8 FF 15 58 ?? ?? ?? 33 D2 8A D4 89 15 EC ep_only = true [Armadillo v2.5x - v2.6x] signature = 55 8B EC 6A FF 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 53 56 57 89 65 E8 FF 15 58 ?? ?? ?? 33 D2 8A D4 89 15 EC ep_only = true [Armadillo v3.00] signature = 60 E8 ?? ?? ?? ?? 5D 50 51 EB 0F B9 EB 0F B8 EB 07 B9 EB 0F 90 EB 08 FD EB 0B F2 EB F5 EB F6 F2 EB 08 FD EB E9 F3 EB E4 FC E9 59 58 60 33 C9 ep_only = true [Armadillo v3.00] signature = 60 E8 ?? ?? ?? ?? 5D 50 51 EB 0F B9 EB 0F B8 EB 07 B9 EB 0F 90 EB 08 FD EB 0B F2 EB F5 EB F6 F2 EB 08 FD EB E9 F3 EB E4 FC E9 59 58 60 33 C9 ep_only = true [Armadillo v3.00a] signature = 60 E8 ?? ?? ?? ?? 5D 50 51 EB 0F B9 EB 0F B8 EB 07 B9 EB 0F 90 EB 08 FD EB 0B F2 EB F5 EB F6 F2 EB 08 FD EB E9 F3 EB E4 FC E9 59 58 50 51 EB ep_only = true [Armadillo v3.00a] signature = 60 E8 ?? ?? ?? ?? 5D 50 51 EB 0F B9 EB 0F B8 EB 07 B9 EB 0F 90 EB 08 FD EB 0B F2 EB F5 EB F6 F2 EB 08 FD EB E9 F3 EB E4 FC E9 59 58 50 51 EB ep_only = true [Armadillo v3.xx] signature = 60 E8 ?? ?? ?? ?? 5D 50 51 EB 0F B9 EB 0F B8 EB 07 B9 EB 0F 90 EB 08 FD EB 0B F2 EB F5 EB F6 F2 EB 08 FD EB E9 F3 EB E4 FC E9 59 58 ep_only = true [Armadillo v3.xx] signature = 60 E8 ?? ?? ?? ?? 5D 50 51 EB 0F B9 EB 0F B8 EB 07 B9 EB 0F 90 EB 08 FD EB 0B F2 EB F5 EB F6 F2 EB 08 FD EB E9 F3 EB E4 FC E9 59 58 ep_only = true [ASPack v1.00b] signature = 60 E8 ?? ?? ?? ?? 5D 81 ED 92 1A 44 ?? B8 8C 1A 44 ?? 03 C5 2B 85 CD 1D 44 ?? 89 85 D9 1D 44 ?? 80 BD C4 1D 44 ep_only = true [ASPack v1.00b] signature = 60 E8 ?? ?? ?? ?? 5D 81 ED 92 1A 44 ?? B8 8C 1A 44 ?? 03 C5 2B 85 CD 1D 44 ?? 89 85 D9 1D 44 ?? 80 BD C4 1D 44 ep_only = true [ASPack v1.01b] signature = 60 E8 ?? ?? ?? ?? 5D 81 ED D2 2A 44 ?? B8 CC 2A 44 ?? 03 C5 2B 85 A5 2E 44 ?? 89 85 B1 2E 44 ?? 80 BD 9C 2E 44 ep_only = true [ASPack v1.01b] signature = 60 E8 ?? ?? ?? ?? 5D 81 ED D2 2A 44 ?? B8 CC 2A 44 ?? 03 C5 2B 85 A5 2E 44 ?? 89 85 B1 2E 44 ?? 80 BD 9C 2E 44 ep_only = true [ASPack v1.02a] signature = 60 E8 ?? ?? ?? ?? 5D 81 ED 3E D9 43 ?? B8 38 ?? ?? ?? 03 C5 2B 85 0B DE 43 ?? 89 85 17 DE 43 ?? 80 BD 01 DE 43 ?? ?? 75 15 FE 85 01 DE 43 ?? E8 1D ?? ?? ?? E8 79 02 ?? ?? E8 12 03 ?? ?? 8B 85 03 DE 43 ?? 03 85 17 DE 43 ?? 89 44 24 1C 61 FF ep_only = true [ASPack v1.02a] signature = 60 E8 ?? ?? ?? ?? 5D 81 ED 3E D9 43 ?? B8 38 ?? ?? ?? 03 C5 2B 85 0B DE 43 ?? 89 85 17 DE 43 ?? 80 BD 01 DE 43 ?? ?? 75 15 FE 85 01 DE 43 ?? E8 1D ?? ?? ?? E8 79 02 ?? ?? E8 12 03 ?? ?? 8B 85 03 DE 43 ?? 03 85 17 DE 43 ?? 89 44 24 1C 61 FF ep_only = true [ASPack v1.02b] signature = 60 E8 ?? ?? ?? ?? 5D 81 ED 96 78 43 ?? B8 90 78 43 ?? 03 C5 2B 85 7D 7C 43 ?? 89 85 89 7C 43 ?? 80 BD 74 7C 43 ep_only = true [ASPack v1.02b] signature = 60 E8 ?? ?? ?? ?? 5D 81 ED 96 78 43 ?? B8 90 78 43 ?? 03 C5 2B 85 7D 7C 43 ?? 89 85 89 7C 43 ?? 80 BD 74 7C 43 ep_only = true [ASPack v1.03b] signature = 60 E8 ?? ?? ?? ?? 5D 81 ED AE 98 43 ?? B8 A8 98 43 ?? 03 C5 2B 85 18 9D 43 ?? 89 85 24 9D 43 ?? 80 BD 0E 9D 43 ep_only = true [ASPack v1.03b] signature = 60 E8 ?? ?? ?? ?? 5D 81 ED AE 98 43 ?? B8 A8 98 43 ?? 03 C5 2B 85 18 9D 43 ?? 89 85 24 9D 43 ?? 80 BD 0E 9D 43 ep_only = true [ASPack v1.05b] signature = 60 E8 ?? ?? ?? ?? 5D 81 ED CE 3A 44 ?? B8 C8 3A 44 ?? 03 C5 2B 85 B5 3E 44 ?? 89 85 C1 3E 44 ?? 80 BD AC 3E 44 ep_only = true [ASPack v1.05b] signature = 60 E8 ?? ?? ?? ?? 5D 81 ED CE 3A 44 ?? B8 C8 3A 44 ?? 03 C5 2B 85 B5 3E 44 ?? 89 85 C1 3E 44 ?? 80 BD AC 3E 44 ep_only = true [ASPack v1.061b] signature = 60 E8 ?? ?? ?? ?? 5D 81 ED EA A8 43 ?? B8 E4 A8 43 ?? 03 C5 2B 85 78 AD 43 ?? 89 85 84 AD 43 ?? 80 BD 6E AD 43 ep_only = true [ASPack v1.061b] signature = 60 E8 ?? ?? ?? ?? 5D 81 ED EA A8 43 ?? B8 E4 A8 43 ?? 03 C5 2B 85 78 AD 43 ?? 89 85 84 AD 43 ?? 80 BD 6E AD 43 ep_only = true [ASPack v1.08.01] signature = 60 EB 0A 5D EB 02 FF 25 45 FF E5 E8 E9 E8 F1 FF FF FF E9 81 ?? ?? ?? 44 ?? BB 10 ?? 44 ?? 03 DD 2B 9D ep_only = true [ASPack v1.08.01] signature = 60 EB 0A 5D EB 02 FF 25 45 FF E5 E8 E9 E8 F1 FF FF FF E9 81 ?? ?? ?? 44 00 BB 10 ?? 44 00 03 DD 2B 9D ep_only = true [ASPack v1.08.01] signature = 60 EB 0A 5D EB 02 FF 25 45 FF E5 E8 E9 E8 F1 FF FF FF E9 81 ?? ?? ?? 44 ?? BB 10 ?? 44 ?? 03 DD 2B 9D ep_only = true [ASPack v1.08.01] signature = 60 EB 0A 5D EB 02 FF 25 45 FF E5 E8 E9 E8 F1 FF FF FF E9 81 ?? ?? ?? 44 00 BB 10 ?? 44 00 03 DD 2B 9D ep_only = true [ASPack v1.08.02] signature = 60 EB 0A 5D EB 02 FF 25 45 FF E5 E8 E9 E8 F1 FF FF FF E9 81 ED 23 6A 44 00 BB 10 ?? 44 00 03 DD 2B 9D 72 ep_only = true [ASPack v1.08.02] signature = 60 EB 0A 5D EB 02 FF 25 45 FF E5 E8 E9 E8 F1 FF FF FF E9 81 ED 23 6A 44 00 BB 10 ?? 44 00 03 DD 2B 9D 72 ep_only = true [ASPack v1.08.03] signature = 60 E8 00 00 00 00 5D 81 ED 0A 4A 44 00 BB 04 4A 44 00 03 DD 2B 9D B1 50 44 00 83 BD AC 50 44 00 00 89 9D BB 4E ep_only = true [ASPack v1.08.03] signature = 60 E8 00 00 00 00 5D 81 ED 0A 4A 44 00 BB 04 4A 44 00 03 DD 2B 9D B1 50 44 00 83 BD AC 50 44 00 00 89 9D BB 4E ep_only = true [ASPack v2.xx] signature = A8 03 00 00 61 75 08 B8 01 00 00 00 C2 0C 00 68 00 00 00 00 C3 8B 85 26 04 00 00 8D 8D 3B 04 00 00 51 50 FF 95 ep_only = true [ASPack v2.xx] signature = A8 03 00 00 61 75 08 B8 01 00 00 00 C2 0C 00 68 00 00 00 00 C3 8B 85 26 04 00 00 8D 8D 3B 04 00 00 51 50 FF 95 ep_only = true [ASProtect SKE 2.1x (exe) -> Alexey Solodovnikov (h)] signature = 90 60 E8 03 00 00 00 E9 EB 04 5D 45 55 C3 E8 01 00 00 00 EB 5D BB ED FF FF FF 03 DD 81 EB 00 ?? ?? ?? 80 7D 4D 01 75 0C 8B 74 24 28 83 FE 01 89 5D 4E 75 31 8D 45 53 50 53 FF B5 ED 09 00 00 8D 45 35 50 E9 82 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ep_only = false [ASProtect SKE 2.1x (exe) -> Alexey Solodovnikov (h)] signature = 90 60 E8 03 00 00 00 E9 EB 04 5D 45 55 C3 E8 01 00 00 00 EB 5D BB ED FF FF FF 03 DD 81 EB 00 ?? ?? ?? 80 7D 4D 01 75 0C 8B 74 24 28 83 FE 01 89 5D 4E 75 31 8D 45 53 50 53 FF B5 ED 09 00 00 8D 45 35 50 E9 82 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ep_only = false [ASProtect v1.23 RC4 build 08.07 (exe) -> Alexey Solodovnikov (h)] signature = 90 60 E8 03 00 00 00 E9 EB 04 5D 45 55 C3 E8 01 00 00 00 EB 5D BB ED FF FF FF 03 DD 81 EB ?? ?? ?? ?? 80 7D 4D 01 75 0C 8B 74 24 28 83 FE 01 89 5D 4E 75 31 8D 45 53 50 53 FF B5 D5 09 00 00 8D 45 35 50 E9 82 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ep_only = false [ASProtect v1.23 RC4 build 08.07 (exe) -> Alexey Solodovnikov (h)] signature = 90 60 E8 03 00 00 00 E9 EB 04 5D 45 55 C3 E8 01 00 00 00 EB 5D BB ED FF FF FF 03 DD 81 EB ?? ?? ?? ?? 80 7D 4D 01 75 0C 8B 74 24 28 83 FE 01 89 5D 4E 75 31 8D 45 53 50 53 FF B5 D5 09 00 00 8D 45 35 50 E9 82 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ep_only = false [ASProtect v?.? -> If you know this version, post on PEiD board (h2)] signature = 90 60 E8 03 00 00 00 E9 EB 04 5D 45 55 C3 E8 01 00 00 00 EB 5D BB ED FF FF FF 03 DD 81 EB 00 ?? ?? 00 80 7D 4D 01 75 0C 8B 74 24 28 83 FE 01 89 5D 4E 75 31 8D 45 53 50 53 FF B5 DD 09 00 00 8D 45 35 50 E9 82 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ep_only = false [ASProtect v?.? -> If you know this version, post on PEiD board (h2)] signature = 90 60 E8 03 00 00 00 E9 EB 04 5D 45 55 C3 E8 01 00 00 00 EB 5D BB ED FF FF FF 03 DD 81 EB 00 ?? ?? 00 80 7D 4D 01 75 0C 8B 74 24 28 83 FE 01 89 5D 4E 75 31 8D 45 53 50 53 FF B5 DD 09 00 00 8D 45 35 50 E9 82 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ep_only = false [BeRoEXEPacker v1.00 DLL [LZBRS] -> BeRo / Farbrausch] signature = 83 7C 24 08 01 0F 85 ?? ?? ?? ?? 60 BE ?? ?? ?? ?? BF ?? ?? ?? ?? FC AD 8D 1C 07 B0 80 3B FB 73 3B E8 ?? ?? ?? ?? 72 03 A4 EB F2 E8 ?? ?? ?? ?? 8D 51 FF E8 ?? ?? ?? ?? 56 8B F7 2B F2 F3 A4 5E EB DB 02 C0 75 03 AC 12 C0 C3 33 ep_only = true [BeRoEXEPacker v1.00 [LZBRS] -> BeRo / Farbrausch] signature = 60 BE ?? ?? ?? ?? BF ?? ?? ?? ?? FC AD 8D 1C 07 B0 80 3B FB 73 3B E8 ?? ?? ?? ?? 72 03 A4 EB F2 E8 ?? ?? ?? ?? 8D 51 FF E8 ?? ?? ?? ?? 56 8B F7 2B F2 F3 A4 5E EB DB 02 C0 75 03 AC 12 C0 C3 33 ep_only = true [BlackEnergy DDoS Bot Crypter] signature = 55 ?? ?? 81 EC 1C 01 00 00 53 56 57 6A 04 BE 00 30 00 00 56 FF 35 00 20 11 13 6A 00 E8 ?? 03 00 00 ?? ?? 83 C4 10 ?? FF 89 7D F4 0F ep_only = true [CExe v1.0a] signature = 55 8B EC 81 EC 0C 02 ?? ?? 56 BE 04 01 ?? ?? 8D 85 F8 FE FF FF 56 50 6A ?? FF 15 54 10 40 ?? 8A 8D F8 FE FF FF 33 D2 84 C9 8D 85 F8 FE FF FF 74 16 ep_only = true [CExe v1.0a] signature = 55 8B EC 81 EC 0C 02 ?? ?? 56 BE 04 01 ?? ?? 8D 85 F8 FE FF FF 56 50 6A ?? FF 15 54 10 40 ?? 8A 8D F8 FE FF FF 33 D2 84 C9 8D 85 F8 FE FF FF 74 16 ep_only = true [Com4mail v1.0] signature = 42 45 47 49 4E 3D 3D 3D 74 66 75 64 23 6F 66 5F 43 6F 6D 34 4D 61 69 6C 5F 66 69 6C 65 23 0D 0A ep_only = true [CreateInstall v2003.3.5] signature = 81 EC 0C 04 00 00 53 56 57 55 68 60 50 40 00 6A 01 6A 00 FF 15 D8 80 40 00 8B F0 FF 15 D4 80 40 00 3D B7 00 00 00 75 0F 56 FF 15 B8 80 40 00 6A 02 FF 15 A4 80 40 00 33 DB E8 F2 FE FF FF 68 02 7F 00 00 89 1D 94 74 40 00 53 89 1D 98 74 40 00 FF 15 E4 80 40 ep_only = false [CreateInstall v2003.3.5] signature = 81 EC 0C 04 00 00 53 56 57 55 68 60 50 40 00 6A 01 6A 00 FF 15 D8 80 40 00 8B F0 FF 15 D4 80 40 00 3D B7 00 00 00 75 0F 56 FF 15 B8 80 40 00 6A 02 FF 15 A4 80 40 00 33 DB E8 F2 FE FF FF 68 02 7F 00 00 89 1D 94 74 40 00 53 89 1D 98 74 40 00 FF 15 E4 80 40 ep_only = false [CRYPToCRACK's PE Protector V0.9.2 -> Lukas Fleischer] signature = E8 01 00 00 00 E8 58 5B 81 E3 00 FF FF FF 66 81 3B 4D 5A 75 37 84 DB 75 33 8B F3 03 ?? ?? 81 3E 50 45 00 00 75 26 ep_only = true [Dev-C++ 4.9.9.2 -> Bloodshed Software] signature = 55 89 E5 83 EC 08 C7 04 24 01 00 00 00 FF 15 ?? ?? ?? 00 E8 C8 FE FF FF 90 8D B4 26 00 00 00 00 55 89 E5 83 EC 08 C7 04 24 02 00 00 00 FF 15 ?? ?? ?? 00 E8 A8 FE FF FF 90 8D B4 26 00 00 00 00 55 8B 0D ?? ?? ?? 00 89 E5 5D FF E1 8D 74 26 00 55 8B 0D ep_only = true [DotFix Nice Protect 2.1 -> GPcH Soft] signature = E9 FF 00 00 00 60 8B 74 24 24 8B 7C 24 28 FC B2 80 33 DB A4 B3 02 E8 6D 00 00 00 73 F6 33 C9 E8 64 00 00 00 73 1C 33 C0 E8 5B 00 00 00 73 23 B3 02 41 B0 10 E8 4F 00 00 00 12 C0 73 F7 75 3F AA EB D4 E8 4D 00 00 00 2B CB 75 10 E8 42 00 00 00 EB 28 AC D1 E8 74 4D 13 C9 EB 1C 91 48 C1 E0 08 AC E8 2C 00 00 00 3D 00 7D 00 00 73 0A 80 FC 05 73 06 83 F8 7F 77 02 41 41 95 8B C5 B3 01 56 8B F7 2B F0 F3 A4 5E EB 8E 02 D2 75 05 8A 16 46 12 D2 C3 33 C9 41 E8 EE FF FF FF 13 C9 E8 E7 FF FF FF 72 F2 C3 2B 7C 24 28 89 7C 24 1C 61 C3 60 B8 ?? ?? ?? ?? 03 C5 50 B8 ?? ?? ?? ?? 03 C5 FF 10 BB ?? ?? ?? ?? 03 DD 83 C3 0C 53 50 B8 ?? ?? ?? ?? 03 C5 FF 10 6A 40 68 00 10 00 00 FF 74 24 2C 6A 00 FF D0 89 44 24 1C 61 C3 ep_only = false [DxPack V0.86 -> Dxd] signature = 60 E8 00 00 00 00 5D 8B FD 81 ED 06 10 40 00 2B BD 94 12 40 00 81 EF 06 00 00 00 83 BD 14 13 40 00 01 0F 84 2F 01 00 00 ep_only = true [DxPack V0.86 -> Dxd] signature = 60 E8 00 00 00 00 5D 8B FD 81 ED 06 10 40 00 2B BD 94 12 40 00 81 EF 06 00 00 00 83 BD 14 13 40 00 01 0F 84 2F 01 00 00 ep_only = true [DzA Patcher v1.3 Loader] signature = BF 00 40 40 00 99 68 48 20 40 00 68 00 20 40 00 52 52 52 52 52 52 52 57 E8 15 01 00 00 85 C0 75 1C 99 52 52 57 52 E8 CB 00 00 00 FF 35 4C 20 40 00 E8 D2 00 00 00 6A 00 E8 BF 00 00 00 99 68 58 20 40 00 52 52 68 63 10 40 00 52 52 E8 DB 00 00 00 6A FF FF 35 ep_only = false [DzA Patcher v1.3 Loader] signature = BF 00 40 40 00 99 68 48 20 40 00 68 00 20 40 00 52 52 52 52 52 52 52 57 E8 15 01 00 00 85 C0 75 1C 99 52 52 57 52 E8 CB 00 00 00 FF 35 4C 20 40 00 E8 D2 00 00 00 6A 00 E8 BF 00 00 00 99 68 58 20 40 00 52 52 68 63 10 40 00 52 52 E8 DB 00 00 00 6A FF FF 35 ep_only = false [Enigma protector 1.10 (unregistered)] signature = 60 72 80 72 88 72 8C 72 90 72 94 72 98 72 9C 72 A0 72 A4 59 A8 B0 5C E8 39 D5 39 E4 39 F1 31 F9 5C 3D 58 CA 5F 56 B1 2D 20 7A 2E 30 16 32 72 2B 72 36 1C A5 33 A9 9C AD 9C B1 9C B5 9C B9 9C BD 9C C1 9C C5 9C C9 9C CD 9C D1 9C D5 9C D9 9C DD 9C E1 9C E5 89 ep_only = false [Enigma protector 1.10 (unregistered)] signature = 60 72 80 72 88 72 8C 72 90 72 94 72 98 72 9C 72 A0 72 A4 59 A8 B0 5C E8 39 D5 39 E4 39 F1 31 F9 5C 3D 58 CA 5F 56 B1 2D 20 7A 2E 30 16 32 72 2B 72 36 1C A5 33 A9 9C AD 9C B1 9C B5 9C B9 9C BD 9C C1 9C C5 9C C9 9C CD 9C D1 9C D5 9C D9 9C DD 9C E1 9C E5 89 ep_only = false [Exe Shield v1.7] signature = EB 06 68 90 1F 06 00 C3 9C 60 E8 02 00 00 00 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 3F 90 ep_only = true [Exe Shield v1.7] signature = EB 06 68 90 1F 06 00 C3 9C 60 E8 02 00 00 00 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 3F 90 ep_only = true [Exe Shield v2.9] signature = 60 E8 00 00 00 00 5D 81 ED 0B 20 40 00 B9 EB 08 00 00 8D BD 53 20 40 00 8B F7 AC ?? ?? ?? F8 ep_only = true [Exe Shield v2.9] signature = 60 E8 00 00 00 00 5D 81 ED 0B 20 40 00 B9 EB 08 00 00 8D BD 53 20 40 00 8B F7 AC ?? ?? ?? F8 ep_only = true [EXE Stealth v2.5] signature = 60 90 EB 22 45 78 65 53 74 65 61 6C 74 68 20 2D 20 77 77 77 2E 77 65 62 74 6F 6F 6C 6D 61 73 74 65 72 2E 63 6F 6D E8 00 00 00 00 5D 81 ED 40 1E 40 00 B9 99 09 00 00 8D BD 88 1E 40 00 8B F7 AC ep_only = false [EXE Stealth v2.5] signature = 60 90 EB 22 45 78 65 53 74 65 61 6C 74 68 20 2D 20 77 77 77 2E 77 65 62 74 6F 6F 6C 6D 61 73 74 65 72 2E 63 6F 6D E8 00 00 00 00 5D 81 ED 40 1E 40 00 B9 99 09 00 00 8D BD 88 1E 40 00 8B F7 AC ep_only = false [EXE Stealth v2.73] signature = EB 00 EB 2F 53 68 61 72 65 77 61 72 65 20 2D 20 45 78 65 53 74 65 61 6C 74 68 00 EB 16 77 77 77 2E 77 65 62 74 6F 6F 6C 6D 61 73 74 65 72 2E 63 6F 6D 00 60 90 E8 00 00 00 00 5D 81 ED F0 27 40 00 B9 15 00 00 00 83 C1 05 EB 05 EB FE 83 C7 56 EB 00 83 E9 02 ep_only = false [EXE Stealth v2.73] signature = EB 00 EB 2F 53 68 61 72 65 77 61 72 65 20 2D 20 45 78 65 53 74 65 61 6C 74 68 00 EB 16 77 77 77 2E 77 65 62 74 6F 6F 6C 6D 61 73 74 65 72 2E 63 6F 6D 00 60 90 E8 00 00 00 00 5D 81 ED F0 27 40 00 B9 15 00 00 00 83 C1 05 EB 05 EB FE 83 C7 56 EB 00 83 E9 02 ep_only = false [EXE Stealth v2.74] signature = EB 00 EB 17 53 68 61 72 65 77 61 72 65 20 2D 20 45 78 65 53 74 65 61 6C 74 68 00 60 90 E8 00 00 00 00 5D 81 ED C4 27 40 00 B9 15 00 00 00 83 C1 04 83 C1 01 EB 05 EB FE 83 C7 56 EB 00 83 E9 02 81 C1 78 43 27 65 EB 00 81 C1 10 25 94 00 81 E9 63 85 00 00 B9 ep_only = false [EXE Stealth v2.74] signature = EB 00 EB 17 53 68 61 72 65 77 61 72 65 20 2D 20 45 78 65 53 74 65 61 6C 74 68 00 60 90 E8 00 00 00 00 5D 81 ED C4 27 40 00 B9 15 00 00 00 83 C1 04 83 C1 01 EB 05 EB FE 83 C7 56 EB 00 83 E9 02 81 C1 78 43 27 65 EB 00 81 C1 10 25 94 00 81 E9 63 85 00 00 B9 ep_only = false [EXECryptor 2.2.4 -> Strongbit/SoftComplete Development (h1)] signature = E8 F7 FE FF FF 05 ?? ?? 00 00 FF E0 E8 EB FE FF FF 05 ?? ?? 00 00 FF E0 E8 04 00 00 00 FF FF FF FF 5E C3 ep_only = true [EXECryptor 2.2.4 -> Strongbit/SoftComplete Development (h1)] signature = E8 F7 FE FF FF 05 ?? ?? 00 00 FF E0 E8 EB FE FF FF 05 ?? ?? 00 00 FF E0 E8 04 00 00 00 FF FF FF FF 5E C3 ep_only = true [EXECryptor 2.2.4 -> Strongbit/SoftComplete Development (h3)] signature = 6B 65 72 6E 65 6C 33 32 2E 64 6C 6C 00 00 00 00 00 00 47 65 74 4D 6F 64 75 6C 65 48 61 6E 64 6C 65 41 00 00 00 00 4C 6F 61 64 4C 69 62 72 61 72 79 41 00 00 00 00 47 65 74 50 72 6F 63 41 64 64 72 65 73 73 00 00 00 00 00 00 45 78 69 74 50 72 6F 63 65 73 73 ep_only = false [EXECryptor 2.2.4 -> Strongbit/SoftComplete Development (h3)] signature = 6B 65 72 6E 65 6C 33 32 2E 64 6C 6C 00 00 00 00 00 00 47 65 74 4D 6F 64 75 6C 65 48 61 6E 64 6C 65 41 00 00 00 00 4C 6F 61 64 4C 69 62 72 61 72 79 41 00 00 00 00 47 65 74 50 72 6F 63 41 64 64 72 65 73 73 00 00 00 00 00 00 45 78 69 74 50 72 6F 63 65 73 73 ep_only = false [EXECryptor v1.3.0.45] signature = E8 24 00 00 00 8B 4C 24 0C C7 01 17 00 01 00 C7 81 ?? ?? ?? ?? ?? ?? ?? 31 C0 89 41 14 89 41 18 80 A1 ep_only = true [EXECryptor v1.3.0.45] signature = E8 24 00 00 00 8B 4C 24 0C C7 01 17 00 01 00 C7 81 ?? ?? ?? ?? ?? ?? ?? 31 C0 89 41 14 89 41 18 80 A1 ep_only = true [EXECryptor v1.4.0.1] signature = E8 24 00 00 00 8B 4C 24 0C C7 01 17 00 01 00 C7 81 B8 00 00 00 00 ?? ?? 00 31 C0 89 41 14 89 41 18 80 ep_only = true [EXECryptor v1.4.0.1] signature = E8 24 00 00 00 8B 4C 24 0C C7 01 17 00 01 00 C7 81 B8 00 00 00 00 ?? ?? 00 31 C0 89 41 14 89 41 18 80 ep_only = true [EXECryptor v1.5.1.x] signature = E8 24 ?? ?? ?? 8B 4C 24 0C C7 01 17 ?? 01 ?? C7 81 B8 ?? ?? ?? ?? ?? ?? ?? 31 C0 89 41 14 89 41 18 80 A1 C1 ?? ?? ?? FE C3 31 C0 64 FF 30 64 89 20 CC C3 ep_only = true [EXECryptor v1.5.1.x] signature = E8 24 ?? ?? ?? 8B 4C 24 0C C7 01 17 ?? 01 ?? C7 81 B8 ?? ?? ?? ?? ?? ?? ?? 31 C0 89 41 14 89 41 18 80 A1 C1 ?? ?? ?? FE C3 31 C0 64 FF 30 64 89 20 CC C3 ep_only = true [EXECryptor v1.5.3] signature = E8 24 00 00 00 8B 4C 24 0C C7 01 17 00 01 00 C7 81 B8 00 00 00 00 ?? ?? 00 31 C0 89 41 14 89 41 18 80 A1 C1 00 00 00 FE C3 31 C0 64 FF 30 64 89 20 CC C3 ep_only = false [EXECryptor v1.5.3] signature = E8 24 00 00 00 8B 4C 24 0C C7 01 17 00 01 00 C7 81 B8 00 00 00 00 ?? ?? 00 31 C0 89 41 14 89 41 18 80 A1 C1 00 00 00 FE C3 31 C0 64 FF 30 64 89 20 CC C3 ep_only = false [EXEJoiner v1.0] signature = 68 00 10 40 00 68 04 01 00 00 E8 39 03 00 00 05 00 10 40 C6 00 5C 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 6A 00 E8 ep_only = true [EXEJoiner v1.0] signature = 68 00 10 40 00 68 04 01 00 00 E8 39 03 00 00 05 00 10 40 C6 00 5C 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 6A 00 E8 ep_only = true [ExeSafeguard v1.0 -> simonzh (h)] signature = C0 5D EB 4E EB 47 DF 69 4E 58 DF 59 74 F3 EB 01 DF 75 EE 9A 59 9C 81 C1 E2 FF FF FF EB 01 DF 9D FF E1 E8 51 E8 EB FF FF FF DF 22 3F 9A C0 81 ED 19 18 40 00 EB 48 EB 47 DF 69 4E 58 DF 59 79 EE EB 01 DF 78 E9 DF 59 9C 81 C1 E5 FF FF FF 9D FF E1 EB 51 E8 EE ep_only = false [ExeSafeguard v1.0 -> simonzh (h)] signature = C0 5D EB 4E EB 47 DF 69 4E 58 DF 59 74 F3 EB 01 DF 75 EE 9A 59 9C 81 C1 E2 FF FF FF EB 01 DF 9D FF E1 E8 51 E8 EB FF FF FF DF 22 3F 9A C0 81 ED 19 18 40 00 EB 48 EB 47 DF 69 4E 58 DF 59 79 EE EB 01 DF 78 E9 DF 59 9C 81 C1 E5 FF FF FF 9D FF E1 EB 51 E8 EE ep_only = false [ExeShield Protector V3.6 -> www.exeshield.com] signature = B8 ?? ?? ?? 00 50 64 FF 35 00 00 00 00 64 89 25 00 00 00 00 33 C0 89 08 50 45 43 6F 6D 70 61 63 74 32 00 CE 1E 42 AF F8 D6 CC ep_only = true [ExeShield Protector V3.6 -> www.exeshield.com] signature = B8 ?? ?? ?? 00 50 64 FF 35 00 00 00 00 64 89 25 00 00 00 00 33 C0 89 08 50 45 43 6F 6D 70 61 63 74 32 00 CE 1E 42 AF F8 D6 CC ep_only = true [eXPressor V1.0 -> CGSoftLabs] signature = E9 35 14 00 00 E9 31 13 00 00 E9 98 12 00 00 E9 EF 0C 00 00 E9 42 13 00 00 E9 E9 02 00 00 E9 EF 0B 00 00 E9 1B 0D 00 00 ep_only = true [eXPressor V1.0 -> CGSoftLabs] signature = E9 35 14 00 00 E9 31 13 00 00 E9 98 12 00 00 E9 EF 0C 00 00 E9 42 13 00 00 E9 E9 02 00 00 E9 EF 0B 00 00 E9 1B 0D 00 00 ep_only = true [eXpressor v1.1 -> CGSoftLabs] signature = E9 15 13 00 00 E9 F0 12 00 00 E9 58 12 00 00 E9 AF 0C 00 00 E9 AE 02 00 00 E9 B4 0B 00 00 E9 E0 0C 00 00 ep_only = true [eXpressor v1.1 -> CGSoftLabs] signature = E9 15 13 00 00 E9 F0 12 00 00 E9 58 12 00 00 E9 AF 0C 00 00 E9 AE 02 00 00 E9 B4 0B 00 00 E9 E0 0C 00 00 ep_only = true [eXPressor v1.2 -> CGSoftLabs (h)] signature = 55 8B EC 81 EC D4 01 00 00 53 56 57 EB 0C 45 78 50 72 2D 76 2E 31 2E 32 2E 2E B8 ?? ?? ?? ?? 2B 05 84 ?? ?? ?? A3 ?? ?? ?? ?? 83 3D ?? ?? ?? ?? 00 74 16 A1 ?? ?? ?? ?? 03 05 80 ?? ?? ?? 89 85 54 FE FF FF E9 ?? 07 00 00 C7 05 ?? ?? ?? ?? 01 00 00 00 68 04 ep_only = true [eXPressor v1.2 -> CGSoftLabs (h)] signature = 55 8B EC 81 EC D4 01 00 00 53 56 57 EB 0C 45 78 50 72 2D 76 2E 31 2E 32 2E 2E B8 ?? ?? ?? ?? 2B 05 84 ?? ?? ?? A3 ?? ?? ?? ?? 83 3D ?? ?? ?? ?? 00 74 16 A1 ?? ?? ?? ?? 03 05 80 ?? ?? ?? 89 85 54 FE FF FF E9 ?? 07 00 00 C7 05 ?? ?? ?? ?? 01 00 00 00 68 04 ep_only = true [eXPressor V1.4.5.1 -> CGSoftLabs] signature = 55 8B EC 83 EC 58 53 56 57 83 65 DC 00 F3 EB 0C 65 58 50 72 2D 76 2E 31 2E 34 2E 00 A1 00 ?? ?? 00 05 00 ?? ?? 00 A3 08 ?? ?? 00 A1 08 ?? ?? 00 B9 81 ?? ?? 00 2B 48 18 89 0D 0C ?? ?? 00 83 3D ep_only = true [eXPressor V1.4.5.1 -> CGSoftLabs] signature = 55 8B EC 83 EC 58 53 56 57 83 65 DC 00 F3 EB 0C 65 58 50 72 2D 76 2E 31 2E 34 2E 00 A1 00 ?? ?? 00 05 00 ?? ?? 00 A3 08 ?? ?? 00 A1 08 ?? ?? 00 B9 81 ?? ?? 00 2B 48 18 89 0D 0C ?? ?? 00 83 3D ep_only = true [eXPressor v1.4.5.1 -> CGSoftLabs (h)] signature = 55 8B EC 83 EC 58 53 56 57 83 65 DC 00 F3 EB 0C 65 58 50 72 2D 76 2E 31 2E 34 2E 00 A1 00 ?? ?? ?? 05 00 ?? ?? ?? A3 08 ?? ?? ?? A1 08 ?? ?? ?? B9 81 ?? ?? ?? 2B 48 18 89 0D 0C ?? ?? ?? 83 3D 10 ?? ?? ?? 00 74 16 A1 08 ?? ?? ?? 8B 0D 0C ?? ?? ?? 03 48 14 ep_only = true [eXPressor v1.4.5.1 -> CGSoftLabs (h)] signature = 55 8B EC 83 EC 58 53 56 57 83 65 DC 00 F3 EB 0C 65 58 50 72 2D 76 2E 31 2E 34 2E 00 A1 00 ?? ?? ?? 05 00 ?? ?? ?? A3 08 ?? ?? ?? A1 08 ?? ?? ?? B9 81 ?? ?? ?? 2B 48 18 89 0D 0C ?? ?? ?? 83 3D 10 ?? ?? ?? 00 74 16 A1 08 ?? ?? ?? 8B 0D 0C ?? ?? ?? 03 48 14 ep_only = true [eXPressor V1.4.5.x -> CGSoftLabs] signature = 55 8B EC 83 EC ?? 53 56 57 83 65 ?? 00 F3 EB 0C 65 58 50 72 2D 76 2E 31 2E 34 2E 00 A1 00 ?? ?? 00 05 00 ?? ?? 00 A3 ?? ?? ?? 00 A1 ?? ?? ?? 00 B9 ?? ?? ?? 00 2B 48 18 89 0D ?? ?? ?? 00 83 3D ep_only = true [eXPressor v1.5x -> CGSoftLabs (h)] signature = 55 8B EC 81 EC 58 02 00 00 53 56 57 83 A5 CC FD FF FF 00 F3 EB 0C 65 58 50 72 2D 76 2E 31 2E 35 2E 00 83 7D 0C 01 75 23 ep_only = true [EZIP v1.0] signature = E9 19 32 00 00 E9 7C 2A 00 00 E9 19 24 00 00 E9 FF 23 00 00 E9 1E 2E 00 00 E9 88 2E 00 00 E9 2C ep_only = true [EZIP v1.0] signature = E9 19 32 00 00 E9 7C 2A 00 00 E9 19 24 00 00 E9 FF 23 00 00 E9 1E 2E 00 00 E9 88 2E 00 00 E9 2C ep_only = true [FSG v1.0] signature = BB D0 01 40 00 BF 00 10 40 00 BE ?? ?? ?? ?? 53 E8 0A 00 00 00 02 D2 75 05 8A 16 46 12 D2 C3 FC B2 80 A4 6A 02 5B ep_only = true [FSG v1.0] signature = BB D0 01 40 00 BF 00 10 40 00 BE ?? ?? ?? ?? 53 E8 0A 00 00 00 02 D2 75 05 8A 16 46 12 D2 C3 FC B2 80 A4 6A 02 5B ep_only = true [FSG v1.2] signature = 4B 45 52 4E 45 4C 33 32 2E 64 6C 6C 00 00 4C 6F 61 64 4C 69 62 72 61 72 79 41 00 00 47 65 74 50 72 6F 63 41 64 64 72 65 73 73 00 ?? 00 00 00 00 00 ep_only = true [FSG v1.2] signature = 4B 45 52 4E 45 4C 33 32 2E 64 6C 6C 00 00 4C 6F 61 64 4C 69 62 72 61 72 79 41 00 00 47 65 74 50 72 6F 63 41 64 64 72 65 73 73 00 ?? 00 00 00 00 00 ep_only = true [FSG v1.31] signature = BB D0 01 40 00 BF 00 10 40 00 BE ?? ?? ?? ?? 53 BB ?? ?? ?? ?? B2 80 A4 B6 80 FF D3 73 F9 33 C9 ep_only = true [FSG v1.31] signature = BB D0 01 40 00 BF 00 10 40 00 BE ?? ?? ?? ?? 53 BB ?? ?? ?? ?? B2 80 A4 B6 80 FF D3 73 F9 33 C9 ep_only = true [Goats Mutilator v1.6 -> Goat/_e0f] signature = E8 EA 0B 00 00 ?? ?? ?? 8B 1C 79 F6 63 D8 8D 22 B0 BF F6 49 08 C3 02 BD 3B 6C 29 46 13 28 5D ep_only = true [Goats Mutilator v1.6 -> Goat/_e0f] signature = E8 EA 0B 00 00 ?? ?? ?? 8B 1C 79 F6 63 D8 8D 22 B0 BF F6 49 08 C3 02 BD 3B 6C 29 46 13 28 5D ep_only = true [GP-Install v5.0.3.32] signature = 55 8B EC 33 C9 51 51 51 51 51 51 51 53 56 57 B8 C4 1C 41 00 E8 6B 3E FF FF 33 C0 55 68 76 20 41 00 64 FF 30 64 89 20 BA A0 47 41 00 33 C0 E8 31 0A FF FF 33 D2 A1 A0 ep_only = false [GP-Install v5.0.3.32] signature = 55 8B EC 33 C9 51 51 51 51 51 51 51 53 56 57 B8 C4 1C 41 00 E8 6B 3E FF FF 33 C0 55 68 76 20 41 00 64 FF 30 64 89 20 BA A0 47 41 00 33 C0 E8 31 0A FF FF 33 D2 A1 A0 ep_only = false [HACKSTOP v1.10p1] signature = B4 30 CD 21 86 E0 3D 00 03 73 ?? B4 2F CD 21 B4 2A CD 21 B4 2C CD 21 B0 FF B4 4C CD 21 50 B8 ?? ?? 58 EB ep_only = true [HACKSTOP v1.10p1] signature = B4 30 CD 21 86 E0 3D 00 03 73 ?? B4 2F CD 21 B4 2A CD 21 B4 2C CD 21 B0 FF B4 4C CD 21 50 B8 ?? ?? 58 EB ep_only = true [Hardlock dongle (Alladin)] signature = 5C 5C 2E 5C 48 41 52 44 4C 4F 43 4B 2E 56 58 44 00 00 00 00 5C 5C 2E 5C 46 45 6E 74 65 44 65 76 ep_only = true [Hasp dongle (Alladin)] signature = 50 53 51 52 57 56 8B 75 1C 8B 3E ?? ?? ?? ?? ?? 8B 5D 08 8A FB ?? ?? 03 5D 10 8B 45 0C 8B 4D 14 8B 55 18 80 FF 32 ep_only = true [Hide PE 1.01 -> BGCorp] signature = ?? BA ?? ?? ?? 00 B8 ?? ?? ?? ?? 89 02 83 C2 04 B8 ?? ?? ?? ?? 89 02 83 C2 04 B8 ?? ?? ?? ?? 89 02 83 C2 F8 FF E2 0D 0A 2D 3D 5B 20 48 69 64 65 50 45 20 62 79 20 42 47 43 6F 72 70 20 5D 3D 2D ep_only = true [Hide PE 1.01 -> BGCorp] signature = ?? BA ?? ?? ?? 00 B8 ?? ?? ?? ?? 89 02 83 C2 04 B8 ?? ?? ?? ?? 89 02 83 C2 04 B8 ?? ?? ?? ?? 89 02 83 C2 F8 FF E2 0D 0A 2D 3D 5B 20 48 69 64 65 50 45 20 62 79 20 42 47 43 6F 72 70 20 5D 3D 2D ep_only = true [Inno Setup Module v1.09a] signature = 55 8B EC 83 C4 C0 53 56 57 33 C0 89 45 F0 89 45 C4 89 45 C0 E8 A7 7F FF FF E8 FA 92 FF FF E8 F1 B3 FF FF 33 C0 ep_only = true [Inno Setup Module v1.2.9] signature = 55 8B EC 83 C4 C0 53 56 57 33 C0 89 45 F0 89 45 EC 89 45 C0 E8 5B 73 FF FF E8 D6 87 FF FF E8 C5 A9 FF FF E8 E0 ep_only = true [iPBProtect v0.1.3] signature = 55 8B EC 6A FF 68 4B 43 55 46 68 54 49 48 53 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 68 53 56 57 89 65 FA 33 DB 89 5D F8 6A 02 EB 01 F8 58 5F 5E 5B 64 8B 25 00 00 00 00 64 8F 05 00 00 00 00 58 58 58 5D 68 9F 6F 56 B6 50 E8 5D 00 00 00 EB FF 71 78 ep_only = false [JDPack V2.00 -> JDPack] signature = 55 8B EC 6A FF 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 ?? ?? ?? E8 01 00 00 00 ?? ?? ?? ?? ?? ?? 05 00 00 00 00 83 C4 0C 5D 60 E8 00 00 00 00 5D 8B D5 64 FF 35 00 00 00 00 EB ep_only = true [kkrunchy -> Ryd] signature = BD 08 ?? ?? 00 C7 45 00 ?? ?? ?? 00 FF 4D 08 C6 45 0C 05 8D 7D 14 31 C0 B4 04 89 C1 F3 AB BF ?? ?? ?? 00 57 BE ?? ?? ?? 00 31 C9 41 FF 4D 0C 8D 9C 8D A0 00 00 00 FF D6 10 C9 73 F3 FF 45 0C 91 AA 83 C9 FF 8D 5C 8D 18 FF D6 74 DD E3 17 8D 5D 1C FF D6 74 10 ep_only = true [LameCrypt -> LaZaRus] signature = 60 66 9C BB 00 ?? ?? 00 80 B3 00 10 40 00 90 4B 83 FB FF 75 F3 66 9D 61 B8 ?? ?? 40 00 FF E0 ep_only = true [Launcher Generator v1.03] signature = 68 00 20 40 00 68 10 20 40 00 6A 00 6A 00 6A 20 6A 00 6A 00 6A 00 68 F0 22 40 00 6A 00 E8 93 00 00 00 85 C0 0F 84 7E 00 00 00 B8 00 00 00 00 3B 05 68 20 40 00 74 13 6A ?? 68 60 23 40 00 68 20 23 40 00 6A 00 E8 83 00 00 00 A1 58 20 40 00 3B 05 6C 20 40 00 ep_only = false [Macromedia Windows Flash Projector/Player v3.0] signature = 55 8B EC 83 EC 44 56 FF 15 94 13 42 00 8B F0 B1 22 8A 06 3A C1 75 13 8A 46 01 46 3A C1 74 04 84 C0 75 F4 38 0E 75 0D 46 EB 0A 3C 20 7E 06 ep_only = true [Macromedia Windows Flash Projector/Player v4.0] signature = 83 EC 44 56 FF 15 24 41 43 00 8B F0 8A 06 3C 22 75 1C 8A 46 01 46 3C 22 74 0C 84 C0 74 08 8A 46 01 46 3C 22 75 F4 80 3E 22 75 0F 46 EB 0C ep_only = true [Macromedia Windows Flash Projector/Player v6.0] signature = 83 EC 44 56 FF 15 24 81 49 00 8B F0 8A 06 3C 22 75 1C 8A 46 01 46 3C 22 74 0C 84 C0 74 08 8A 46 01 46 3C 22 75 F4 80 3E 22 75 0F 46 EB 0C ep_only = true [Metrowerks CodeWarrior (DLL) v2.0] signature = 55 89 E5 53 56 57 8B 75 0C 8B 5D 10 83 FE 01 74 05 83 FE 02 75 12 53 56 FF 75 08 E8 6E FF FF FF 09 C0 75 04 31 C0 EB 21 53 56 FF 75 08 E8 ?? ?? ?? ?? 89 C7 09 F6 74 05 83 FE 03 75 0A 53 56 FF 75 08 E8 47 FF FF FF 89 F8 8D 65 F4 5F 5E 5B 5D C2 0C 00 C9 ep_only = false [MEW 11 SE v1.2] signature = E9 ?? ?? ?? FF 0C ?? 00 00 00 00 00 00 00 00 00 00 ?? ?? ?? 00 0C ?? 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ep_only = false [Microsoft CAB SFX module] signature = 55 8B EC 83 EC 44 56 FF 15 ?? 10 00 01 8B F0 8A 06 3C 22 75 14 8A 46 01 46 84 C0 74 04 3C 22 75 F4 80 3E 22 75 0D ?? EB 0A 3C 20 ep_only = true [Microsoft Visual C# v7.0 / Basic .NET] signature = FF 25 00 20 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ep_only = false [Microsoft Visual C++ 6.0 - 8.0] signature = 68 ?? ?? ?? ?? 64 A1 00 00 00 00 50 8B 44 24 10 89 6C 24 10 8D 6C 24 10 2B E0 53 56 57 8B 45 F8 89 65 E8 50 8B 45 FC C7 45 FC FF FF FF FF 89 45 F8 8D 45 F0 64 A3 00 00 00 00 C3 8B 4D F0 64 89 0D 00 00 00 00 59 5F 5E 5B C9 51 C3 ep_only = false [Microsoft Visual C++ 6.0 - 8.0] signature = 3D 00 10 00 00 73 0E F7 D8 03 C4 83 C0 04 85 00 94 8B 00 50 C3 51 8D 4C 24 08 81 E9 00 10 00 00 2D 00 10 00 00 85 01 3D 00 10 00 00 73 EC 2B C8 8B C4 85 01 8B E1 8B 08 8B 40 04 50 C3 ep_only = false [Microsoft Visual C++ 6.0 - 8.0] signature = 68 ?? ?? ?? ?? 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 8B 44 24 10 89 6C 24 10 8D 6C 24 10 2B E0 53 56 57 8B 45 F8 89 65 E8 50 8B 45 FC C7 45 FC FF FF FF FF 89 45 F8 C3 8B 4D F0 64 89 0D 00 00 00 00 59 5F 5E 5B C9 51 C3 ep_only = false [Microsoft Visual C++ v7.1 DLL] signature = 55 8B EC 6A FF 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 C4 E4 53 56 57 89 65 E8 C7 45 E4 01 00 00 00 C7 45 FC ep_only = true [Microsoft Visual C++ v7.1 DLL] signature = 55 8B EC 53 8B 5D 08 56 8B 75 0C 85 F6 57 8B 7D 10 75 09 83 3D ?? ?? 40 00 00 EB 26 83 FE 01 74 05 83 FE 02 75 22 A1 ep_only = true [Microsoft Windows Update CAB SFX module] signature = E9 C5 FA FF FF 55 8B EC 56 8B 75 08 68 04 08 00 00 FF D6 59 33 C9 3B C1 75 0F 51 6A 05 FF 75 28 E8 2E 11 00 00 33 C0 EB 69 8B 55 0C 83 88 88 00 00 00 FF 83 88 84 00 00 00 FF 89 50 04 8B 55 10 89 50 0C 8B 55 14 89 50 10 8B 55 18 89 50 14 8B 55 1C 89 50 18 ep_only = false [MingWin32 v?.? (h)] signature = 55 89 E5 83 EC 08 C7 04 24 ?? 00 00 00 FF 15 ?? ?? ?? 00 E8 ?? FE FF FF 90 8D B4 26 00 00 00 00 55 ep_only = true [Morphine v3.3 -> Silent Software & Silent Shield (c)2005] signature = 28 ?? ?? ?? 00 00 00 00 00 00 00 00 40 ?? ?? ?? 34 ?? ?? ?? 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4C ?? ?? ?? 5C ?? ?? ?? 00 00 00 00 4C ?? ?? ?? 5C ?? ?? ?? 00 00 00 00 4B 65 52 6E 45 6C 33 32 2E 64 4C 6C 00 00 47 65 74 50 72 6F 63 41 64 64 72 65 73 73 00 00 4C 6F 61 64 4C 69 62 72 61 72 79 41 ep_only = false [nBinder v4.0] signature = 5C 6E 62 34 5F 74 6D 70 5F 30 31 33 32 34 35 34 33 35 30 5C 00 00 00 00 00 00 00 00 00 E9 55 43 4C FF 01 1A 00 00 00 00 96 30 07 77 2C 61 0E EE BA 51 09 99 19 C4 6D 07 8F F4 6A 70 35 A5 63 E9 A3 95 64 9E 32 88 DB 0E A4 B8 DC 79 ep_only = false [nMacro recorder 1.0] signature = 5C 6E 6D 72 5F 74 65 6D 70 2E 6E 6D 72 00 00 00 72 62 00 00 58 C7 41 00 10 F8 41 00 11 01 00 00 00 00 00 00 46 E1 00 00 46 E1 00 00 35 00 00 00 F6 88 41 00 ep_only = false [North Star PE Shrinker v1.3 by Liuxingping] signature = 9C 60 E8 00 00 00 00 5D B8 B3 85 40 00 2D AC 85 40 00 2B E8 8D B5 73 ?? FF FF 8B 06 83 F8 00 74 11 8D B5 7F ?? FF FF 8B 06 83 F8 01 0F 84 F1 01 00 00 C7 06 01 00 00 00 8B D5 8B 85 4F ?? FF FF 2B D0 89 95 4F ?? FF FF 01 95 67 ?? FF FF 8D B5 83 ?? FF FF 01 ep_only = false [nPack v1.1 150-200 Beta -> NEOx] signature = 83 3D 40 ?? ?? ?? 00 75 05 E9 01 00 00 00 C3 E8 41 00 00 00 B8 80 ?? ?? ?? 2B 05 08 ?? ?? ?? A3 3C ?? ?? 00 E8 5E 00 00 00 E8 E0 01 00 00 E8 EC 06 00 00 E8 F7 05 00 00 ep_only = true [nPack v1.1 250 Beta -> NEOx] signature = 83 3D 04 ?? ?? ?? 00 75 05 E9 01 00 00 00 C3 E8 46 00 00 00 E8 73 00 00 00 B8 2E ?? ?? ?? 2B 05 08 ?? ?? ?? A3 00 ?? ?? ?? E8 9C 00 00 00 E8 04 02 00 00 E8 FB 06 00 00 E8 1B 06 00 00 A1 00 ?? ?? ?? C7 05 04 ?? ?? ?? 01 00 00 00 01 05 00 ?? ?? ?? FF 35 00 ep_only = true [nPack V1.1.150.2006.Beta -> NEOx/[uinC]] signature = 83 3D 40 ?? ?? ?? 00 75 05 E9 01 00 00 00 C3 E8 41 00 00 00 B8 80 ?? ?? ?? 2B 05 08 ?? ?? ?? A3 3C ?? ?? ?? E8 5E 00 00 00 E8 E0 01 00 00 E8 EC 06 00 00 E8 F7 05 00 00 A1 3C ?? ?? ?? C7 05 40 ?? ?? ?? 01 00 00 00 01 05 00 ?? ?? ?? FF 35 00 ?? ?? ?? C3 C3 56 57 68 54 ?? ?? ?? FF 15 00 ?? ?? ?? 8B 35 08 ?? ?? ?? 8B F8 68 44 ?? ?? ?? 57 FF D6 68 38 ?? ?? ?? 57 A3 38 ?? ?? ?? FF D6 5F A3 34 ?? ?? ?? 5E C3 ep_only = true [nPack V1.1.150.2006.Beta -> NEOx/[uinC]] signature = 83 3D 40 ?? ?? ?? 00 75 05 E9 01 00 00 00 C3 E8 41 00 00 00 B8 80 ?? ?? ?? 2B 05 08 ?? ?? ?? A3 3C ?? ?? ?? E8 5E 00 00 00 E8 E0 01 00 00 E8 EC 06 00 00 E8 F7 05 00 00 A1 3C ?? ?? ?? C7 05 40 ?? ?? ?? 01 00 00 00 01 05 00 ?? ?? ?? FF 35 00 ?? ?? ?? C3 C3 ep_only = true [nPack V1.1.200.2006.Beta -> NEOx/[uinC]] signature = 83 3D 40 ?? ?? ?? 00 75 05 E9 01 00 00 00 C3 E8 41 00 00 00 B8 80 ?? ?? ?? 2B 05 08 ?? ?? ?? A3 3C ?? ?? ?? E8 5E 00 00 00 E8 EC 01 00 00 E8 F8 06 00 00 E8 03 06 00 00 A1 3C ?? ?? ?? C7 05 40 ?? ?? ?? 01 00 00 00 01 05 00 ?? ?? ?? FF 35 00 ?? ?? ?? C3 C3 ep_only = true [nPack v1.1.xxx -> NEOx] signature = 83 3D ?? ?? ?? 00 00 75 05 E9 01 00 00 00 C3 E8 46 00 00 00 E8 73 00 00 00 B8 ?? ?? ?? ?? 2B 05 08 ?? ?? ?? A3 ?? ?? ?? ?? E8 9C 00 00 00 E8 ?? 02 00 00 E8 ?? 06 00 00 E8 ?? 06 00 00 A1 ?? ?? ?? ?? C7 05 ?? ?? ?? 00 01 00 00 00 01 05 00 ?? ?? ?? FF 35 00 ep_only = true [NsPack v3.1 -> North Star (h)] signature = 9C 60 E8 00 00 00 00 5D 83 ED 07 8D 9D ?? ?? FF FF 8A 03 3C 00 74 10 8D 9D ?? ?? FF FF 8A 03 3C 01 0F 84 42 02 00 00 C6 03 01 8B D5 2B 95 ?? ?? FF FF 89 95 ?? ?? FF FF 01 95 ?? ?? FF FF 8D B5 ?? ?? FF FF 01 16 60 6A 40 68 00 10 00 00 68 00 10 00 00 6A 00 ep_only = true [NTkrnl Secure Suite -> NTkrnl Team (Blue)] signature = 68 29 19 43 00 E8 01 00 00 00 C3 C3 A2 A9 61 4E A5 0E C7 A6 59 90 6E 4D 4C DB 36 46 FB 6E C4 45 A3 C2 2E 0E 41 59 1A 50 17 39 62 4D B8 61 24 8E CF D1 0E 9E 7A 66 C0 8D 6B 9C 52 7E 96 46 80 AF ep_only = false [NTkrnl Secure Suite -> NTkrnl team (h)] signature = 34 10 00 00 28 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 41 10 00 00 50 10 00 00 00 00 00 00 4B 65 72 6E 65 6C 33 32 2E 64 6C 6C 00 00 00 4C 6F 61 64 4C 69 62 72 61 72 79 41 00 00 00 47 65 74 50 72 6F 63 41 64 64 72 65 73 73 ep_only = false [NTkrnl Secure Suite V0.1 -> NTkrnl Software] signature = 00 00 00 00 00 00 00 00 00 00 00 00 34 10 00 00 28 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 00 4B 65 72 6E 65 6C 33 32 2E 64 6C 6C 00 00 00 4C 6F 61 64 4C 69 62 72 61 72 79 41 00 00 00 47 65 74 50 72 6F 63 41 64 64 72 65 73 73 00 68 ?? ?? ?? ?? E8 01 00 00 00 C3 C3 ep_only = false [NTkrnl Secure Suite V0.1 DLL -> NTkrnl Software] signature = 00 00 00 00 00 00 00 00 00 00 00 00 34 10 00 00 28 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 00 4B 65 72 6E 65 6C 33 32 2E 64 6C 6C 00 00 00 4C 6F 61 64 4C 69 62 72 61 72 79 41 00 00 00 47 65 74 50 72 6F 63 41 64 64 72 65 73 73 00 8B 44 24 04 05 ?? ?? ?? ?? 50 E8 01 00 00 00 C3 C3 ep_only = false [NTKrnlPacker -> Ashkbiz Danehkar] signature = 00 00 00 00 00 00 00 00 00 00 00 00 34 10 00 00 28 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 41 10 00 00 50 10 00 00 00 00 00 00 4B 65 72 6E 65 6C 33 32 2E 64 6C 6C 00 00 00 4C 6F 61 64 4C 69 62 72 61 72 79 41 00 00 00 47 65 74 ep_only = false [Nullsoft Install System v2.0] signature = 83 EC 0C 53 55 56 57 C7 44 24 10 70 92 40 00 33 DB C6 44 24 14 20 FF 15 2C 70 40 00 53 FF 15 84 72 40 00 BE 00 54 43 00 BF 00 04 00 00 56 57 A3 A8 EC 42 00 FF 15 C4 70 40 00 E8 8D FF FF FF 8B 2D 90 70 40 00 85 C0 75 21 68 FB 03 00 00 56 FF 15 5C 71 40 00 ep_only = false [Nullsoft Install System v2.0 RC2] signature = 83 EC 10 53 55 56 57 C7 44 24 14 70 92 40 00 33 ED C6 44 24 13 20 FF 15 2C 70 40 00 55 FF 15 84 72 40 00 BE 00 54 43 00 BF 00 04 00 00 56 57 A3 A8 EC 42 00 FF 15 C4 70 40 00 E8 8D FF FF FF 8B 1D 90 70 40 00 85 C0 75 21 68 FB 03 00 00 56 FF 15 5C 71 40 00 ep_only = false [Nullsoft Install System v2.0a0] signature = 83 EC 0C 53 56 57 FF 15 B4 10 40 00 05 E8 03 00 00 BE E0 E3 41 00 89 44 24 10 B3 20 FF 15 28 10 40 00 68 00 04 00 00 FF 15 14 11 40 00 50 56 FF 15 10 11 40 00 80 3D E0 E3 41 00 22 75 08 80 C3 02 BE E1 E3 41 00 8A 06 8B 3D 14 12 40 00 84 C0 74 19 3A C3 74 ep_only = false [Nullsoft Install System v2.0b4] signature = 83 EC 14 83 64 24 04 00 53 55 56 57 C6 44 24 13 20 FF 15 30 70 40 00 BE 00 20 7A 00 BD 00 04 00 00 56 55 FF 15 C4 70 40 00 56 E8 7D 2B 00 00 8B 1D 8C 70 40 00 6A 00 56 FF D3 BF 80 92 79 00 56 57 E8 15 26 00 00 85 C0 75 38 68 F8 91 40 00 55 56 FF 15 60 71 ep_only = false [Nullsoft Install System v2.0b4] signature = 83 EC 10 53 55 56 57 C7 44 24 14 F0 91 40 00 33 ED C6 44 24 13 20 FF 15 2C 70 40 00 55 FF 15 88 72 40 00 BE 00 D4 42 00 BF 00 04 00 00 56 57 A3 60 6F 42 00 FF 15 C4 70 40 00 E8 9F FF FF FF 8B 1D 90 70 40 00 85 C0 75 21 68 FB 03 00 00 56 FF 15 60 71 40 00 ep_only = false [Obsidium 1.3.0.17 -> Obsidium software] signature = EB 02 ?? ?? E8 28 00 00 00 EB 04 ?? ?? ?? ?? EB 01 ?? 8B 54 24 0C EB 01 ?? 83 82 B8 00 00 00 25 EB 02 ?? ?? 33 C0 EB 03 ?? ?? ?? C3 EB 03 ?? ?? ?? EB 02 ?? ?? 64 67 FF 36 00 00 EB 01 ?? 64 67 89 26 00 00 EB 03 ?? ?? ?? EB 04 ?? ?? ?? ?? 50 EB 04 ep_only = true [Obsidium v1.3.0.37 -> Obsidium Software (h)] signature = EB 02 ?? ?? E8 26 00 00 00 EB 03 ?? ?? ?? EB 01 ?? 8B 54 24 0C EB 04 ?? ?? ?? ?? 83 82 B8 00 00 00 26 EB 01 ?? 33 C0 EB 02 ?? ?? C3 EB 01 ?? EB 04 ?? ?? ?? ?? 64 67 FF 36 00 00 EB 01 ?? 64 67 89 26 00 00 EB 01 ?? EB 03 ?? ?? ?? 50 EB 03 ?? ?? ?? 33 C0 EB 03 ?? ?? ?? 8B 00 EB 04 ?? ?? ?? ?? C3 EB 03 ?? ?? ?? E9 FA 00 00 00 EB 03 ?? ?? ?? E8 D5 FF FF FF EB 04 ?? ?? ?? ?? EB 01 ?? 58 EB 02 ?? ?? EB 03 ?? ?? ?? 64 67 8F 06 00 00 EB 01 ?? 83 C4 04 EB 03 ?? ?? ?? E8 23 27 ep_only = true [Obsidium v1.3.0.4 -> Obsidium Software (h)] signature = EB 02 ?? ?? E8 25 00 00 00 EB 04 ?? ?? ?? ?? EB 01 ?? 8B 54 24 0C EB 01 ?? 83 82 B8 00 00 00 23 EB 01 ?? 33 C0 EB 02 ?? ?? C3 EB 02 ?? ?? EB 04 ?? ?? ?? ?? 64 67 FF 36 00 00 EB 03 ?? ?? ?? 64 67 89 26 00 00 EB 02 ?? ?? EB 01 ?? 50 EB 01 ?? 33 C0 EB 01 ep_only = true [Obsidium v1.3.3.1 -> Obsidium Software (h)] signature = EB 01 ?? E8 29 00 00 00 EB 02 ?? ?? EB 03 ?? ?? ?? 8B 54 24 0C EB 02 ?? ?? 83 82 B8 00 00 00 24 EB 04 ?? ?? ?? ?? 33 C0 EB 02 ?? ?? C3 EB 02 ?? ?? EB 02 ?? ?? 64 67 FF 36 00 00 EB 04 ?? ?? ?? ?? 64 67 89 26 00 00 EB 01 ?? EB 02 ?? ?? 50 EB 01 ?? 33 C0 EB 04 ?? ?? ?? ?? 8B 00 EB 03 ?? ?? ?? C3 EB 03 ?? ?? ?? E9 FA 00 00 00 EB 02 ?? ?? E8 D5 FF FF FF EB 01 ?? EB 04 ?? ?? ?? ?? 58 EB 02 ?? ?? EB 04 ?? ?? ?? ?? 64 67 8F 06 00 00 EB 01 ?? 83 C4 04 EB 02 ?? ?? E8 5F 27 00 00 ep_only = true [Obsiduim 1.3.0.4 -> Obsiduim Software] signature = EB 02 ?? ?? E8 25 00 00 00 EB 04 ?? ?? ?? ?? EB 01 ?? 8B 54 24 0C EB 01 ?? 83 82 B8 00 00 00 23 EB 01 ?? 33 C0 EB 02 ?? ?? C3 EB 02 ?? ?? EB 04 ?? ?? ?? ?? 64 67 FF 36 00 00 EB 03 ?? ?? ?? 64 ep_only = true [Pack Master v1.0] signature = 60 E8 01 00 00 00 E8 83 C4 04 E8 01 00 00 00 E9 5D 81 ED D3 22 40 00 E8 04 02 00 00 E8 EB 08 EB 02 CD 20 FF 24 24 9A 66 BE 47 46 ep_only = true [Packanoid 1.0 -> ackanoid] signature = BF 00 ?? 40 00 BE ?? ?? ?? 00 E8 9D 00 00 00 B8 ?? ?? ?? 00 8B 30 8B 78 04 BB ?? ?? ?? 00 8B 43 04 91 E3 1F 51 FF D6 56 96 8B 13 8B 02 91 E3 0D 52 51 56 FF D7 5A 89 02 83 C2 04 EB EE 83 C3 08 5E EB DB B9 ?? ?? 00 00 BE 00 ?? ?? 00 EB 01 00 BF ?? ?? ?? 00 ep_only = true [Packanoid v1 -> Arkanoid] signature = BF ?? ?? ?? ?? BE ?? ?? ?? ?? E8 9D 00 00 00 B8 ?? ?? ?? ?? 8B 30 8B 78 04 BB ?? ?? ?? ?? 8B 43 04 91 E3 1F 51 FF D6 56 96 8B 13 8B 02 91 E3 0D 52 51 56 FF D7 5A 89 02 83 C2 04 EB EE 83 C3 08 ep_only = true [Packman 0.0.0.1 -> Bubbasoft (h)] signature = 0F 85 ?? FF FF FF 8D B3 ?? ?? ?? ?? EB 3D 8B 46 0C 03 C3 50 FF 55 00 56 8B 36 0B F6 75 02 8B F7 03 F3 03 FB EB 1B D1 C1 D1 E9 73 05 0F B7 C9 EB 05 03 CB 8D 49 02 50 51 50 FF 55 04 AB 58 83 C6 04 8B 0E 85 C9 75 DF 5E 83 C6 14 8B 7E 10 85 FF 75 BC 8D 8B 00 ep_only = false [PC PE Encryptor Alpha preview] signature = 53 51 52 56 57 55 E8 00 00 00 00 5D 8B CD 81 ED 33 30 40 ?? 2B 8D EE 32 40 00 83 E9 0B 89 8D F2 32 40 ?? 80 BD D1 32 40 ?? 01 0F 84 ep_only = true [PE Diminisher v0.1] signature = 53 51 52 56 57 55 E8 00 00 00 00 5D 8B D5 81 ED A2 30 40 00 2B 95 91 33 40 00 81 EA 0B 00 00 00 89 95 9A 33 40 00 80 BD 99 33 40 00 00 74 ep_only = true [PE Lock v1.06] signature = 00 00 00 00 00 00 00 00 ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 00 4C 6F 61 64 4C 69 62 72 61 72 79 41 00 00 56 69 72 74 75 61 6C 41 6C 6C 6F 63 00 4B 45 ep_only = true [PE Ninja v1.0 -> +DzA kRAker TNT] signature = BE 5B 2A 40 00 BF 35 12 00 00 E8 40 12 00 00 3D 22 83 A3 C6 0F 85 67 0F 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 ep_only = true [PE Protect v0.9] signature = E9 ?? 00 00 00 0D 0A 0D 0A C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 0D 0A 50 45 2D 50 52 4F 54 45 43 54 20 30 2E 39 20 28 43 29 6F ep_only = false [PE-Armor 0.46 -> China Cracking Group] signature = E8 AA 00 00 00 2D ?? ?? 00 00 00 00 00 00 00 00 00 3D ?? ?? 00 2D ?? ?? 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4B ?? ?? 00 5C ?? ?? 00 6F ?? ?? 00 00 00 00 00 4B 45 52 4E 45 4C 33 32 2E 64 6C 6C 00 00 00 00 47 65 74 50 72 6F 63 41 ep_only = true [PE-PaCK v1.0 -> (C) Copyright 1998 by ANAKiN (h)] signature = C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 0D 0A 20 2D 3D FE 20 50 45 2D 50 41 43 4B 20 76 31 2E 30 20 2D FE 2D 20 28 43 29 20 43 6F 70 ep_only = false [PeCompact 2.xx --> BitSum Technologies] signature = B8 ?? ?? ?? ?? 50 64 FF 35 00 00 00 00 64 89 25 00 00 00 00 33 C0 89 08 50 45 43 6F 6D 70 61 63 74 32 00 ep_only = true [PECompact v0.90] signature = EB 06 68 ?? ?? 40 00 C3 9C 60 BD ?? ?? 00 00 B9 02 00 00 00 B0 90 8D BD 7A 42 40 00 F3 AA 01 AD D9 43 40 00 FF B5 ep_only = true [PECompact v0.977] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB A0 86 40 ?? 87 DD 8B 85 2A 87 ep_only = true [PECompact v0.978] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 24 88 40 ?? 87 DD 8B 85 A9 88 ep_only = true [PECompact v0.978.1] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 49 87 40 ?? 87 DD 8B 85 CE 87 ep_only = true [PECompact v0.978.2] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB D1 84 40 ?? 87 DD 8B 85 56 85 ep_only = true [PECompact v0.98] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB D7 84 40 ?? 87 DD 8B 85 5C 85 ep_only = true [PECompact v0.99] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 2F 85 40 ?? 87 DD 8B 85 B4 85 ep_only = true [PECompact v1.00] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB C4 84 40 ?? 87 DD 8B 85 49 85 ep_only = true [PECompact v1.10b1] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 28 63 40 ?? 87 DD 8B 85 AD 63 ep_only = true [PECompact v1.10b2] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 0F 60 40 ?? 87 DD 8B 85 94 60 ep_only = true [PECompact v1.10b3] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 0F 60 40 ?? 87 DD 8B 85 95 60 40 ?? 01 85 03 60 40 ?? 66 C7 85 ?? 60 40 ?? 90 90 BB 95 ep_only = true [PECompact v1.10b4] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 0F 60 40 ?? 87 DD 8B 85 95 60 40 ?? 01 85 03 60 40 ?? 66 C7 85 ?? 60 40 ?? 90 90 BB 44 ep_only = true [PECompact v1.10b5] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 0F 60 40 ?? 87 DD 8B 85 95 60 40 ?? 01 85 03 60 40 ?? 66 C7 85 ?? 60 40 ?? 90 90 BB 49 ep_only = true [PECompact v1.10b6] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 0F 60 ?? 00 87 DD 8B 85 9A 60 40 ?? 01 85 03 60 40 ?? 66 C7 85 ?? 60 40 ?? 90 90 01 85 92 60 40 ?? BB B7 ep_only = true [PECompact v1.10b7] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 0F 60 40 ?? 87 DD 8B 85 9A 60 40 ?? 01 85 03 60 40 ?? 66 C7 85 ?? 60 40 ?? 90 90 01 85 92 60 40 ?? BB 14 ep_only = true [PECompact v1.20 - v1.20.1] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 0F 70 40 ?? 87 DD 8B 85 9A 70 40 ep_only = true [PECompact v1.22] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 0F 70 40 ?? 87 DD 8B 85 A6 70 40 ?? 01 85 03 70 40 ?? 66 C7 85 ?? 70 40 ?? 90 90 01 85 9E 70 40 ?? BB F3 08 ep_only = true [PECompact v1.23b3 - v1.24.1] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 0F 70 40 ?? 87 DD 8B 85 A6 70 40 ?? 01 85 03 70 40 ?? 66 C7 85 70 40 90 ?? 90 01 85 9E 70 40 BB ?? D2 08 ep_only = true [PECompact v1.24.2 - v1.24.3] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 0F 70 40 ?? 87 DD 8B 85 A6 70 40 ?? 01 85 03 70 40 ?? 66 C7 85 70 40 90 ?? 90 01 85 9E 70 40 BB ?? D2 09 ep_only = true [PECompact v1.25] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 0F 70 40 ?? 87 DD 8B 85 A6 70 40 ?? 01 85 03 70 40 ?? 66 C7 85 70 40 90 ?? 90 01 85 9E 70 40 BB ?? F3 0D ep_only = true [PECompact v1.26b1 - v1.26b2] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 0F 70 40 ?? 87 DD 8B 85 A6 70 40 ?? 01 85 03 70 40 ?? 66 C7 85 70 40 90 ?? 90 01 85 9E 70 40 BB ?? 05 0E ep_only = true [PECompact v1.33] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 0F 80 40 ?? 87 DD 8B 85 A6 80 40 ?? 01 85 03 80 40 ?? 66 C7 85 00 80 40 ?? 90 90 01 85 9E 80 40 ?? BB E8 0E ep_only = true [PECompact v1.34 - v1.40b1] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 0F 80 40 ?? 87 DD 8B 85 A6 80 40 ?? 01 85 03 80 40 ?? 66 C7 85 ?? 00 80 ?? 40 90 90 01 85 9E 80 ?? 40 BB F8 10 ep_only = true [PECompact v1.40 - v1.45] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 0F A0 40 ?? 87 DD 8B 85 A6 A0 40 ?? 01 85 03 A0 40 ?? 66 C7 85 ?? A0 40 ?? 90 90 01 85 9E A0 40 ?? BB C3 11 ep_only = true [PECompact v1.40b2 - v1.40b4] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 0F A0 40 ?? 87 DD 8B 85 A6 A0 40 ?? 01 85 03 A0 40 ?? 66 C7 85 ?? A0 40 ?? 90 90 01 85 9E A0 40 ?? BB 86 11 ep_only = true [PECompact v1.40b5 - v1.40b6] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 0F A0 40 ?? 87 DD 8B 85 A6 A0 40 ?? 01 85 03 A0 40 ?? 66 C7 85 ?? A0 40 ?? 90 90 01 85 9E A0 40 ?? BB 8A 11 ep_only = true [PECompact v1.46] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 0F A0 40 ?? 87 DD 8B 85 A6 A0 40 ?? 01 85 03 A0 40 ?? 66 C7 85 ?? A0 40 ?? 90 90 01 85 9E A0 40 ?? BB 60 12 ep_only = true [PECompact v1.47 - v1.50] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 0F A0 40 ?? 87 DD 8B 85 A6 A0 40 ?? 01 85 03 A0 40 ?? 66 C7 85 ?? A0 40 ?? 90 90 01 85 9E A0 40 ?? BB 5B 12 ep_only = true [PECompact v1.55] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 0F 80 40 ?? 87 DD 8B 85 A2 80 40 ?? 01 85 03 80 40 ?? 66 C7 85 ?? 80 40 ?? 90 90 01 85 9E 80 40 ?? BB 2D 12 ep_only = true [PECompact v1.56] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 0F 90 40 ?? 87 DD 8B 85 A2 90 40 ?? 01 85 03 90 40 ?? 66 C7 85 ?? 90 40 ?? 90 90 01 85 9E 90 40 ?? BB 2D 12 ep_only = true [PECompact v1.60 - v1.65] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 3F 80 40 ?? 87 DD 8B 85 D2 80 40 ?? 01 85 33 80 40 ?? 66 C7 85 ?? 80 40 ?? 90 90 01 85 CE 80 40 ?? BB BB 12 ep_only = true [PECompact v1.66] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 3F 90 40 ?? 87 DD 8B 85 E6 90 40 ?? 01 85 33 90 40 ?? 66 C7 85 ?? 90 40 ?? 90 90 01 85 DA 90 40 ?? 01 85 DE 90 40 ?? 01 85 E2 90 40 ?? BB 5B 11 ep_only = true [PECompact v2.00 alpha 38] signature = B8 ?? ?? ?? ?? 80 B8 BF 10 00 10 01 74 7A C6 80 BF 10 00 10 01 9C 55 53 51 57 52 56 8D 98 0F 10 00 10 8B 53 14 8B E8 6A 40 68 00 10 00 00 FF 73 04 6A 00 8B 4B 10 03 CA 8B 01 FF D0 8B F8 50 8B 33 8B 53 14 03 F2 8B 4B 0C 03 CA 8D 85 B7 10 00 10 FF 73 04 8F ep_only = false [PECompact v2.5 Retail -> Bitsum Technologies] signature = B8 ?? ?? ?? 01 50 64 FF 35 00 00 00 00 64 89 25 00 00 00 00 33 C0 89 08 50 45 43 6F 6D 70 61 63 74 32 00 ep_only = true [PeCompact2 2.53-2.76 --> BitSum Technologies] signature = B8 ?? ?? ?? ?? 55 53 51 57 56 52 8D 98 C9 11 00 10 8B 53 18 52 8B E8 6A 40 68 00 10 00 00 FF 73 04 6A 00 8B 4B 10 03 CA 8B 01 FF D0 5A 8B F8 50 52 8B 33 8B 43 20 03 C2 8B 08 89 4B 20 8B 43 1C 03 C2 8B 08 89 4B 1C 03 F2 8B 4B 0C 03 CA 8D 43 1C 50 57 56 FF ep_only = false [PEncrypt v3.0] signature = E8 00 00 00 00 5D 81 ED 05 10 40 00 8D B5 24 10 40 00 8B FE B9 0F 00 00 00 BB ?? ?? ?? ?? AD 33 C3 E2 FA ep_only = true [PENinja] signature = 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 ep_only = true [PENinja modified] signature = 5D 8B C5 81 ED B2 2C 40 00 2B 85 94 3E 40 00 2D 71 02 00 00 89 85 98 3E 40 00 0F B6 B5 9C 3E 40 00 8B FD ep_only = true [PEQuake v0.06 by fORGAT] signature = E8 A5 00 00 00 2D ?? 00 00 00 00 00 00 00 00 00 00 3D ?? 00 00 2D ?? 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4A ?? 00 00 5B ?? 00 00 6E ?? 00 00 00 00 00 00 6B 45 72 4E 65 4C 33 32 2E 64 4C 6C 00 00 00 47 65 74 50 72 6F 63 41 64 ep_only = false [PESpin V0.71 -> cyberbob] signature = EB 01 68 60 E8 00 00 00 00 8B 1C 24 83 C3 12 81 2B E8 B1 06 00 FE 4B FD 82 2C 24 83 D5 46 00 0B E4 74 9E ep_only = true [Petite 1.3 -> (c)1998 Ian Luck (h)] signature = ?? ?? ?? ?? ?? ?? 9C 60 50 8D 88 00 ?? ?? ?? 8D 90 ?? ?? 00 00 8B DC 8B E1 68 00 00 ?? ?? 53 50 80 04 24 08 50 80 04 24 42 50 80 04 24 61 50 80 04 24 9D 50 80 04 24 BB 83 3A 00 0F 84 DA 14 00 00 8B 44 24 18 F6 42 03 80 74 19 FD 80 72 03 80 8B F0 8B F8 03 ep_only = true [Petite 2.2 -> (c)1998-99 Ian Luck (h)] signature = ?? ?? ?? ?? ?? 68 ?? ?? ?? ?? 64 FF 35 00 00 00 00 64 89 25 00 00 00 00 66 9C 60 50 68 00 00 ?? ?? 8B 3C 24 8B 30 66 81 C7 80 07 8D 74 06 08 89 38 8B 5E 10 50 56 6A 02 68 80 08 00 00 57 6A ?? 6A 06 56 6A 04 68 80 08 00 00 57 FF D3 83 EE 08 59 F3 A5 59 66 ep_only = true [PEZip v1.0 by BaGIE] signature = D9 D0 F8 74 02 23 DB F5 F5 50 51 52 53 8D 44 24 10 50 55 56 57 D9 D0 22 C9 C1 F7 A0 55 66 C1 C8 B0 5D 81 E6 FF FF FF FF F8 77 07 52 76 03 72 01 90 5A C1 E0 60 90 BD 1F 01 00 00 87 E8 E2 07 E3 05 17 5D 47 E4 42 41 7F 06 50 66 83 EE 00 58 25 FF FF FF FF 51 ep_only = false [PocketPC ARM] signature = F0 40 2D E9 00 40 A0 E1 01 50 A0 E1 02 60 A0 E1 03 70 A0 E1 ?? 00 00 EB 07 30 A0 E1 06 20 A0 E1 05 10 A0 E1 04 00 A0 E1 ?? ?? ?? EB F0 40 BD E8 ?? 00 00 EA ?? 40 2D E9 ?? ?? 9F E5 ?? ?? ?? ?? ?? 00 ?? ?? ?? ?? ?? ?? ?? ?? 9F E5 00 ?? ?? ?? ?? 00 ep_only = true [PocketPC MIB] signature = E8 FF BD 27 14 00 BF AF 18 00 A4 AF 1C 00 A5 AF 20 00 A6 AF 24 00 A7 AF ?? ?? ?? 0C 00 00 00 00 18 00 A4 8F 1C 00 A5 8F 20 00 A6 8F ?? ?? ?? 0C 24 00 A7 8F ?? ?? ?? 0C 25 20 40 00 14 00 BF 8F 08 00 E0 03 18 00 BD 27 ?? FF BD 27 18 00 ?? AF ?? 00 ep_only = true [PocketPC SHA] signature = 86 2F 96 2F A6 2F B6 2F 22 4F 43 68 53 6B 63 6A 73 69 F0 7F 0B D0 0B 40 09 00 09 D0 B3 65 A3 66 93 67 0B 40 83 64 03 64 04 D0 0B 40 09 00 10 7F 26 4F F6 6B F6 6A F6 69 0B 00 F6 68 ?? ?? ?? 00 ?? ?? ?? 00 ?? ?? ?? 00 22 4F F0 7F 0A D0 06 D4 06 D5 0B 40 09 ep_only = true [PowerBASIC/CC 4.0] signature = 55 8B EC 53 56 57 BB 00 ?? 40 00 66 2E F7 05 ?? ?? 40 00 04 00 75 05 E9 68 05 00 00 E9 6E 03 ep_only = true [PowerBASIC/Win 8.00] signature = 55 8B EC 53 56 57 BB 00 ?? ?? 00 66 2E F7 05 ?? ?? 40 00 04 00 75 05 E9 14 04 00 00 E9 19 02 ep_only = true [PrincessSandy v1.0 eMiNENCE Process Patcher Patch] signature = 68 27 11 40 00 E8 3C 01 00 00 6A 00 E8 41 01 00 00 A3 00 20 40 00 8B 58 3C 03 D8 0F B7 43 14 0F B7 4B 06 8D 7C 18 18 81 3F 2E 4C 4F 41 74 0B 83 C7 28 49 75 F2 E9 A7 00 00 00 8B 5F 0C 03 1D 00 20 40 00 89 1D 04 20 40 00 8B FB 83 C7 04 68 4C 20 40 00 68 08 ep_only = false [Private exe Protector V1.8X-V1.9X -> SetiSoft Team] signature = 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4B 45 52 4E 45 4C 33 32 2E 44 4C 4C 00 ?? ?? ?? ?? 00 00 00 00 00 00 45 78 69 74 50 72 6F 63 65 73 73 ep_only = false [PseudoSigner 0.2 [Armadillo 3.00] --> Anorganix] signature = 60 E8 2A 00 00 00 5D 50 51 EB 0F B9 EB 0F B8 EB 07 B9 EB 0F 90 EB 08 FD EB 0B F2 EB F5 EB F6 F2 EB 08 FD EB E9 F3 EB E4 FC E9 59 58 50 51 EB 85 ep_only = true [PseudoSigner 0.2 [CodeSafe 2.0] --> Anorganix] signature = 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 EB 0B 83 EC 10 53 56 57 E8 C4 01 00 85 ep_only = true [PseudoSigner 0.2 [DEF 1.0] --> Anorganix] signature = BE 00 01 40 00 6A 05 59 80 7E 07 00 74 11 8B 46 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 83 C1 01 ep_only = true [PseudoSigner 0.2 [DxPack 1.0] --> Anorganix] signature = 60 E8 00 00 00 00 5D 8B FD 81 ED 90 90 90 90 2B B9 00 00 00 00 81 EF 90 90 90 90 83 BD 90 90 90 90 90 0F 84 00 00 00 00 ep_only = true [PseudoSigner 0.2 [ExeSmasher] --> Anorganix] signature = 9C FE 03 90 60 BE 90 90 41 90 8D BE 90 10 FF FF 57 83 CD FF EB 10 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 FE 0B ep_only = true [PseudoSigner 0.2 [Gleam 1.00] --> Anorganix] signature = 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 EB 0B 83 EC 0C 53 56 57 E8 24 02 00 FF ep_only = true [PseudoSigner 0.2 [JDPack 1.x / JDProtect 0.9] --> Anorganix] signature = 60 E8 22 00 00 00 5D 8B D5 81 ED 90 90 90 90 2B 95 90 90 90 90 81 EA 06 90 90 90 89 95 90 90 90 90 83 BD 45 00 01 00 01 ep_only = true [PseudoSigner 0.2 [PESHiELD 0.25] --> Anorganix] signature = 60 E8 2B 00 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 CC CC ep_only = true [PseudoSigner 0.2 [ZCode 1.01] --> Anorganix] signature = E9 12 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 E9 FB FF FF FF C3 68 00 00 00 00 64 FF 35 00 00 00 00 ep_only = true [R!SC's Process Patcher v1.4] signature = E8 E1 01 00 00 80 38 22 75 13 80 38 00 74 2E 80 38 20 75 06 80 78 FF 22 74 18 40 EB ED 80 38 00 74 1B EB 19 40 80 78 FF 20 75 F9 80 38 00 74 0D EB 0B 40 80 38 00 74 05 80 38 22 74 00 8B F8 B8 04 60 40 00 68 00 20 40 00 C7 05 A2 20 40 00 44 00 00 00 68 92 ep_only = false [R!SC's Process Patcher v1.5.1] signature = 68 00 20 40 00 E8 C3 01 00 00 80 38 00 74 0D 66 81 78 FE 22 20 75 02 EB 03 40 EB EE 8B F8 B8 04 60 40 00 68 C4 20 40 00 68 D4 20 40 00 6A 00 6A 00 6A 04 6A 00 6A 00 6A 00 57 50 E8 9F 01 00 00 85 C0 0F 84 39 01 00 00 BE 00 60 40 00 8B 06 A3 28 21 40 00 83 ep_only = false [RJcrush v1.00] signature = 06 FC 8C C8 BA ?? ?? 03 D0 52 BA ?? ?? 52 BA ?? ?? 03 C2 8B D8 05 ?? ?? 8E DB 8E C0 33 F6 33 FF B9 ep_only = true [RLPack -> Ap0x] signature = 60 E8 00 00 00 00 8B 2C 24 83 C4 04 8D B5 5A 0A 00 00 8D 9D 40 02 00 00 33 FF E8 ?? ?? ?? ?? 6A 40 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 6A 00 FF 95 EB 09 00 00 89 85 ?? ?? ?? ?? EB 14 60 FF B5 3A 0A ep_only = true [RLPack -> Ap0x] signature = 60 E8 00 00 00 00 8B 2C 24 83 C4 04 8D B5 2C 0A 00 00 8D 9D 22 02 00 00 33 FF E8 ?? ?? ?? ?? 6A 40 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 6A 00 FF 95 CD 09 00 00 89 85 ?? ?? ?? ?? EB 14 60 FF B5 14 0A ep_only = true [RLPack 1.17+] signature = 60 E8 00 00 00 00 8B 2C 24 83 C4 04 8D B5 ?? ?? 00 00 8D 9D ?? ?? 00 00 33 FF E8 ?? ?? ?? ?? EB 0F FF 74 37 04 FF 34 37 FF D3 ep_only = true [RLPack Full Edition 1.17 DLL [LZMA] -> Ap0x] signature = 80 7C 24 08 01 0F 85 ?? ?? ?? ?? 60 E8 00 00 00 00 8B 2C 24 83 C4 04 8D B5 5A 0A 00 00 8D 9D 40 02 00 00 33 FF E8 ?? ?? ?? ?? 6A 40 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 6A 00 FF 95 EB 09 00 00 89 85 ep_only = true [RLPack FullEdition V1.1X -> ap0x * Sign.By.fly] signature = 00 00 00 00 00 00 00 00 00 00 00 00 ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6B 65 72 6E 65 6C 33 32 2E 64 6C 6C 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 00 00 00 4C 6F 61 64 4C 69 62 72 61 72 79 41 00 00 47 65 74 50 72 6F 63 41 64 64 72 65 73 73 00 00 56 69 72 74 75 61 6C 41 6C 6C 6F 63 00 00 56 69 72 74 75 61 6C 46 72 65 65 00 00 56 69 72 74 75 61 6C 50 72 6F 74 65 63 74 00 00 47 65 74 4D 6F 64 75 6C 65 48 61 6E 64 6C 65 41 00 00 00 10 ep_only = false [RLPack v0.7.3beta -> ap0x (h)] signature = 60 8B DD E8 00 00 00 00 5D 95 32 C0 95 89 9D 80 00 00 00 B8 42 31 40 00 BB 41 30 40 00 2B C3 03 C5 33 D2 8A 10 40 B9 ?? ?? 00 00 8B F9 30 10 8A 10 40 49 75 F8 64 EF 86 3D 30 00 00 0F B9 FF 4B 89 52 5C 4C BD 77 C2 0C CE 88 4E 2D E8 00 00 00 5D 0D DB 5E 56 ep_only = false [RLPack V1.11 -> ap0x] signature = 60 E8 00 00 00 00 8B 2C 24 83 C4 04 8D B5 4A 02 00 00 8D 9D 11 01 00 00 33 FF EB 0F FF 74 37 04 FF 34 37 FF D3 83 C4 08 83 C7 08 83 3C 37 00 75 EB ep_only = true [SecuPack v1.5] signature = 55 8B EC 83 C4 F0 53 56 57 33 C0 89 45 F0 B8 CC 3A 40 ?? E8 E0 FC FF FF 33 C0 55 68 EA 3C 40 ?? 64 FF 30 64 89 20 6A ?? 68 80 ?? ?? ?? 6A 03 6A ?? 6A 01 ?? ?? ?? 80 ep_only = true [Setup Factory v6.0.0.3 Setup Launcher] signature = 55 8B EC 6A FF 68 90 61 40 00 68 70 3B 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 53 56 57 89 65 E8 FF 15 14 61 40 00 33 D2 8A D4 89 15 5C 89 40 00 8B C8 81 E1 FF 00 00 00 89 0D 58 89 40 00 C1 E1 08 03 CA 89 0D 54 89 40 00 C1 E8 10 A3 50 89 ep_only = false [Shrinker v3.4] signature = 83 3D B4 ?? ?? ?? ?? 55 8B EC 56 57 75 6B 68 00 01 00 00 E8 ?? 0B 00 00 83 C4 04 8B 75 08 A3 B4 ?? ?? ?? 85 F6 74 23 83 7D 0C 03 77 1D 68 FF ep_only = true [SimplePack 1.11 Method 2(NT) -> bagie[TMX] (h)] signature = 4D 5A 90 EB 01 00 52 E9 89 01 00 00 50 45 00 00 4C 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 E0 00 0F 03 0B 01 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 00 40 00 00 C0 4B 45 52 4E 45 4C 33 32 2E 44 4C 4C 00 00 00 4C 6F 61 64 4C 69 62 72 61 72 79 41 00 00 00 00 47 65 74 50 72 6F 63 41 64 64 72 65 73 73 00 00 00 00 56 69 72 74 75 61 6C 50 72 6F 74 65 63 74 00 00 EB 01 CD 64 A1 30 00 00 00 EB 01 CD 8B 48 0C E3 6F EB 01 CD 05 AC 00 00 00 EB 01 CD 66 81 38 93 08 EB 01 CD 75 0A EB 01 CD B8 38 FF FF FF EB 14 EB 01 CD 66 81 38 28 0A 75 4A EB 01 CD B8 1A FF FF FF EB 00 EB 01 CD 31 C9 EB 01 CD 51 EB 01 CD 51 EB 01 CD 6A 11 EB 01 CD 6A FE EB 01 CD E8 03 00 00 00 EB 01 CD 83 04 24 18 EB ep_only = true [SimplePack V1.0X -> bagie] signature = 60 E8 00 00 00 00 5B 8D 5B FA 6A 00 FF 93 ?? ?? 00 00 89 C5 8B 7D 3C 8D 74 3D 00 8D BE F8 00 00 00 8B 86 88 00 00 00 09 C0 ep_only = true [SimplePack V1.X (Method1) -> bagie] signature = 60 E8 00 00 00 00 5B 8D 5B FA BD ?? ?? ?? ?? 8B 7D 3C 8D 74 3D 00 8D BE F8 00 00 00 0F B7 76 06 4E 8B 47 10 09 C0 ep_only = true [SoftProtect -> SoftProtect.by.ru] signature = EB 01 E3 60 E8 03 ?? ?? ?? D2 EB 0B 58 EB 01 48 40 EB 01 35 FF E0 E7 61 60 E8 03 ?? ?? ?? 83 EB 0E EB 01 0C 58 EB 01 35 40 EB 01 36 FF E0 0B 61 EB 01 83 9C EB 01 D5 EB 08 35 9D EB 01 89 EB 03 0B EB F7 E8 ?? ?? ?? ?? 58 E8 ?? ?? ?? ?? 59 83 01 01 80 39 5C ep_only = true [SPEC b3] signature = 5B 53 50 45 43 5D E8 ?? ?? ?? ?? 5D 8B C5 81 ED 41 24 40 ?? 2B 85 89 26 40 ?? 83 E8 0B 89 85 8D 26 40 ?? 0F B6 B5 91 26 40 ?? 8B FD ep_only = true [Special EXE Password Protector v1.0] signature = 60 E8 00 00 00 00 5D 81 ED 06 00 00 00 89 AD 8C 01 00 00 8B C5 2B 85 FE 75 00 00 89 85 3E 77 ep_only = true [Stone's PE Encryptor v1.0] signature = 55 57 56 52 51 53 E8 ?? ?? ?? ?? 5D 8B D5 81 ED 63 3A 40 ?? 2B 95 C2 3A 40 ?? 83 EA 0B 89 95 CB 3A 40 ?? 8D B5 CA 3A 40 ?? 0F B6 36 ep_only = true [Stone's PE Encryptor v1.13] signature = 55 57 56 52 51 53 E8 ?? ?? ?? ?? 5D 8B D5 81 ED 97 3B 40 ?? 2B 95 2D 3C 40 ?? 83 EA 0B 89 95 36 3C 40 ?? 01 95 24 3C 40 ?? 01 95 28 ep_only = true [SVK-Protector v1.051] signature = 60 EB 03 C7 84 E8 EB 03 C7 84 9A E8 00 00 00 00 5D 81 ED 10 00 00 00 EB 03 C7 84 E9 64 A0 23 00 00 00 EB ep_only = true [tElock v0.41x] signature = 66 8B C0 8D 24 24 EB 01 EB 60 EB 01 EB 9C E8 00 00 00 00 5E 83 C6 50 8B FE 68 78 01 ?? ?? 59 EB 01 EB AC 54 E8 03 ?? ?? ?? 5C EB 08 ep_only = true [tElock v0.42] signature = C1 EE 00 66 8B C9 EB 01 EB 60 EB 01 EB 9C E8 00 00 00 00 5E 83 C6 52 8B FE 68 79 01 59 EB 01 EB AC 54 E8 03 5C EB 08 ep_only = true [tElock v0.4x - v0.5x] signature = C1 EE 00 66 8B C9 EB 01 EB 60 EB 01 EB 9C E8 00 00 00 00 5E 83 C6 ?? 8B FE 68 79 01 ?? ?? 59 EB 01 ep_only = true [tElock v0.51] signature = C1 EE 00 66 8B C9 EB 01 EB 60 EB 01 EB 9C E8 00 00 00 00 5E 83 C6 5E 8B FE 68 79 01 59 EB 01 EB AC 54 E8 03 5C EB 08 ep_only = true [tElock v0.99 Special Build -> heXer & forgot] signature = E9 5E DF FF FF 00 00 00 ?? ?? ?? ?? E5 ?? ?? 00 00 00 00 00 00 00 00 00 05 ?? ?? 00 F5 ?? ?? 00 ED ?? ?? 00 00 00 00 00 00 00 00 00 12 ?? ?? 00 FD ?? ?? 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1D ?? ?? 00 00 00 00 00 30 ?? ?? 00 00 ep_only = true [Themida/WinLicense V1.0.0.0-V1.8.0.0-> Oreans Technologies] signature = B8 00 00 00 00 60 0B C0 74 58 E8 00 00 00 00 58 05 ?? 00 00 00 80 38 E9 75 ?? 61 EB ?? E8 00 00 00 00 ep_only = true [Themida/WinLicense V1.8.0.2 + -> Oreans Technologies] signature = B8 00 00 00 00 60 0B C0 74 68 E8 00 00 00 00 58 05 ?? 00 00 00 80 38 E9 75 ?? 61 EB ?? DB 2D ?? ?? ?? ?? FF FF FF FF FF FF FF FF 3D 40 E8 00 00 00 00 ep_only = true [Thinstall 2.5 -> ??? (h)] signature = 55 8B EC B8 ?? ?? ?? ?? BB ?? ?? ?? ?? 50 E8 00 00 00 00 58 2D A7 1A 00 00 B9 6C 1A 00 00 BA 20 1B 00 00 BE 00 10 00 00 BF B0 53 00 00 BD EC 1A 00 00 03 E8 81 75 00 ?? ?? ?? ?? 81 75 04 ?? ?? ?? ?? 81 75 08 ?? ?? ?? ?? 81 75 0C ?? ?? ?? ?? 81 75 10 ep_only = true [Trainer Creation Kit v5 Trainer] signature = 6A 00 68 80 00 00 00 6A 02 6A 00 6A 00 68 00 00 00 40 68 25 45 40 00 E8 3C 02 00 00 50 6A 00 68 40 45 40 00 68 00 10 00 00 68 00 30 40 00 50 E8 54 02 00 00 58 50 E8 17 02 00 00 6A 00 E8 2E 02 00 00 A3 70 45 40 00 68 25 45 40 00 E8 2B 02 00 00 A3 30 45 40 ep_only = false [Upack 0.22 - 0.23 beta -> Dwing] signature = ?? ?? ?? ?? ?? ?? ?? AD 8B F8 59 95 F3 A5 AD B5 ?? F3 AB AD 50 97 51 58 8D 54 85 5C FF 16 72 ?? 2C 03 73 02 B0 00 3C 07 72 02 2C 03 50 0F B6 5F FF C1 E3 ?? B3 00 8D 1C 5B 8D 9C 9D 0C 10 00 00 ep_only = true [UPack v0.11] signature = BE 48 01 40 00 AD 8B F8 95 A5 33 C0 33 C9 AB 48 AB F7 D8 B1 04 F3 AB C1 E0 0A B5 1C F3 AB AD 50 97 51 AD 87 F5 58 8D 54 86 5C FF D5 72 5A 2C 03 73 02 B0 00 3C 07 72 02 2C 03 50 0F B6 5F FF C1 E3 03 B3 00 8D 1C 5B 8D 9C 9E 0C 10 00 00 B0 01 67 E3 29 8B D7 ep_only = false [Upack v0.37 beta -> Dwing] signature = BE B0 11 ?? ?? AD 50 FF 76 34 EB 7C 48 01 ?? ?? 0B 01 4C 6F 61 64 4C 69 62 72 61 72 79 41 00 00 18 10 00 00 10 00 00 00 00 ?? ?? ?? 00 00 ?? ?? 00 10 00 00 00 02 00 00 04 00 00 00 00 00 37 00 04 00 00 00 00 00 00 00 00 ?? ?? ?? 00 02 00 00 00 00 00 00 ep_only = true [Upack v0.38 beta -> Dwing] signature = BE B0 11 ?? ?? AD 50 FF 76 34 EB 7C 48 01 ?? ?? 0B 01 4C 6F 61 64 4C 69 62 72 61 72 79 41 00 00 18 10 00 00 10 00 00 00 00 ?? ?? ?? 00 00 ?? ?? 00 10 00 00 00 02 00 00 04 00 00 00 00 00 38 00 04 00 00 00 00 00 00 00 00 ?? ?? ?? 00 02 00 00 00 00 00 00 ep_only = true [Upack v0.399 -> Dwing] signature = BE B0 11 ?? ?? AD 50 FF 76 34 EB 7C 48 01 ?? ?? 0B 01 4C 6F 61 64 4C 69 62 72 61 72 79 41 00 00 18 10 00 00 10 00 00 00 00 ?? ?? ?? 00 00 ?? ?? 00 10 00 00 00 02 00 00 04 00 00 00 00 00 3A 00 04 00 00 00 00 00 00 00 00 ?? ?? ?? 00 02 00 00 00 00 00 00 ep_only = true [UPX + ECLiPSE layer] signature = B8 ?? ?? ?? ?? B9 ?? ?? ?? ?? 33 D2 EB 01 0F 56 EB 01 0F E8 03 00 00 00 EB 01 0F EB 01 0F 5E EB 01 ep_only = true [UPX Alternative stub] signature = 01 DB 07 8B 1E 83 EE FC 11 DB ED B8 01 00 00 00 01 DB 07 8B 1E 83 EE FC 11 DB 11 C0 01 DB 73 0B ep_only = true [UPX Inliner v1.0 by GPcH] signature = 9C 60 E8 00 00 00 00 5D B8 B3 85 40 00 2D AC 85 40 00 2B E8 8D B5 D5 FE FF FF 8B 06 83 F8 00 74 11 8D B5 E1 FE FF FF 8B 06 83 F8 01 0F 84 F1 01 00 00 C7 06 01 00 00 00 8B D5 8B 85 B1 FE FF FF 2B D0 89 95 B1 FE FF FF 01 95 C9 FE FF FF 8D B5 E5 FE FF FF 01 ep_only = false [UPX Modified stub] signature = 79 07 0F B7 07 47 50 47 B9 57 48 F2 AE 55 FF 96 84 ?? 00 00 09 C0 74 07 89 03 83 C3 04 EB D8 FF 96 88 ?? 00 00 61 E9 ?? ?? ?? FF ep_only = true [UPX v0.51] signature = 60 E8 00 00 00 00 58 83 E8 3D 50 8D B8 ?? ?? ?? FF 57 8D B0 D8 01 ?? ?? 83 CD FF 31 DB ?? ?? ?? ?? 01 DB 75 07 8B 1E 83 EE FC 11 DB 73 0B 8A 06 46 88 07 47 EB EB 90 ep_only = true [UPX v0.62] signature = 60 E8 00 00 00 00 58 83 E8 3D 50 8D B8 ?? ?? ?? FF 57 66 81 87 ?? ?? ?? ?? ?? ?? 8D B0 F0 01 ?? ?? 83 CD FF 31 DB 90 90 90 EB 08 90 90 8A 06 46 88 07 47 01 DB 75 07 ep_only = true [UPX v0.70] signature = 60 E8 00 00 00 00 58 83 E8 3D 50 8D B8 ?? ?? ?? FF 57 66 81 87 ?? ?? ?? ?? ?? ?? 8D B0 EC 01 ?? ?? 83 CD FF 31 DB EB 07 90 8A 06 46 88 07 47 01 DB 75 07 ep_only = true [UPX v0.81 - v0.84 Modified] signature = 01 DB ?? 07 8B 1E 83 EE FC 11 DB ?? ED B8 01 00 00 00 01 DB ?? 07 8B 1E 83 EE FC 11 DB 11 C0 01 DB 77 EF ep_only = true [UPX v0.89.6 - v1.02 / v1.05 - v1.22 Modified] signature = 01 DB ?? 07 8B 1E 83 EE FC 11 DB ?? ED B8 01 00 00 00 01 DB ?? 07 8B 1E 83 EE FC 11 DB 11 C0 01 DB 73 ?? 75 ep_only = true [UPX v1.03 - v1.04 Modified] signature = 01 DB ?? 07 8B 1E 83 EE FC 11 DB 8A 07 ?? EB B8 01 00 00 00 01 DB ?? 07 8B 1E 83 EE FC 11 DB 11 C0 01 DB 73 EF ep_only = true [UPX-Shit v0.1 -> 500mhz] signature = E8 00 00 00 00 5E 83 C6 14 AD 89 C7 AD 89 C1 AD 30 07 47 E2 FB AD FF E0 C3 00 ?? ?? 00 ?? ?? ?? 00 ?? ?? ?? ?? ?? ?? ?? 00 55 50 58 2D 53 68 69 74 20 76 30 2E 31 20 2D 20 77 77 77 2E 62 6C 61 63 6B 6C 6F 67 69 63 2E 6E 65 74 20 2D 20 63 6F 64 65 20 62 79 ep_only = true [UPX-Shit v0.1 -> 500mhz] signature = E8 00 00 00 00 5E 83 C6 14 AD 89 C7 AD 89 C1 AD 30 07 47 E2 FB AD FF E0 C3 00 ?? ?? 00 ?? ?? ?? 00 ?? ?? ?? 01 ?? ?? ?? 00 55 50 58 2D 53 68 69 74 20 76 30 2E 31 20 2D 20 77 77 77 2E 62 6C 61 63 6B 6C 6F 67 69 63 2E 6E 65 74 20 2D 20 63 6F 64 65 20 62 79 ep_only = true [VcAsm Protector -> VcAsm] signature = 55 8B EC 6A FF 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 E8 03 00 00 00 C7 84 00 58 EB 01 E9 83 C0 07 50 C3 ep_only = true [VcAsm Protector V1.0X-> VcAsm] signature = 55 8B EC 6A FF 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 E8 03 00 00 00 ep_only = true [VIRUS - I-Worm.Bagle] signature = 6A 00 E8 95 01 00 00 E8 9F E6 FF FF 83 3D 03 50 40 00 00 75 14 68 C8 AF 00 00 E8 01 E1 FF FF 05 88 13 00 00 A3 03 50 40 00 68 5C 57 40 00 68 F6 30 40 00 FF 35 03 50 40 00 E8 B0 EA FF FF E8 3A FC FF FF 83 3D 54 57 40 00 00 74 05 E8 F3 FA FF FF 68 E8 03 00 ep_only = false [VProtector V1.0 [Build 2004.12.13] test! -> vcasm] signature = 55 8B EC 6A FF 68 1A 89 40 00 68 56 89 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 E8 03 00 00 00 C7 84 00 58 EB 01 E9 83 C0 07 50 ep_only = true [VProtector V1.0A -> vcasm] signature = 55 8B EC 6A FF 68 8A 8E 40 00 68 C6 8E 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 E8 03 00 00 00 C7 84 00 58 EB 01 E9 83 C0 07 50 ep_only = true [VProtector V1.0B -> vcasm] signature = 55 8B EC 6A FF 68 CA 37 41 00 68 06 38 41 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 E8 03 00 00 00 C7 84 00 58 EB 01 E9 83 C0 07 50 ep_only = true [VProtector V1.0D -> vcasm] signature = 55 8B EC 6A FF 68 CA 31 41 00 68 06 32 41 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 E8 03 00 00 00 C7 84 00 58 EB 01 E9 83 C0 07 50 ep_only = true [VProtector V1.1 -> vcasm] signature = B8 1A ED 41 00 B9 EC EB 41 00 50 51 E8 74 00 00 00 E8 51 6A 00 00 58 83 E8 10 B9 B3 00 00 00 ep_only = true [VProtector V1.1A -> vcasm] signature = EB 0B 5B 56 50 72 6F 74 65 63 74 5D 00 E8 24 00 00 00 8B 44 24 04 8B 00 3D 04 00 00 80 75 08 8B 64 24 08 EB 04 58 EB 0C E9 64 8F 05 00 00 00 00 ep_only = true [Watcom C/C++] signature = E9 ?? ?? 00 00 03 10 40 00 57 41 54 43 4F 4D 20 43 2F 43 2B 2B 33 32 20 52 75 6E 2D 54 69 6D 65 20 73 79 73 74 65 6D 2E 20 28 63 29 20 43 6F 70 79 72 69 67 68 74 20 62 79 20 57 41 54 43 4F 4D 20 49 6E 74 65 72 6E 61 74 69 6F 6E 61 6C 20 43 6F 72 70 2E 20 ep_only = false [Winkript v1.0] signature = 33 C0 8B B8 00 ?? ?? ?? 8B 90 04 ?? ?? ?? 85 FF 74 1B 33 C9 50 EB 0C 8A 04 39 C0 C8 04 34 1B 88 04 39 41 3B CA 72 F0 58 ep_only = true [WinKript v1.0 -> Mr. Crimson (h)] signature = 33 C0 8B B8 00 ?? ?? ?? 8B 90 04 ?? ?? ?? 85 FF 74 1B 33 C9 50 EB 0C 8A 04 39 C0 C8 04 34 1B 88 04 39 41 3B CA 72 F0 58 83 C0 08 EB D5 61 E9 ?? ?? ?? ?? 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ep_only = true [WinUpack v0.39 final -> By Dwing (c)2005 (h1)] signature = BE B0 11 ?? ?? AD 50 FF 76 34 EB 7C 48 01 ?? ?? 0B 01 4C 6F 61 64 4C 69 62 72 61 72 79 41 00 00 18 10 00 00 10 00 00 00 00 ?? ?? ?? 00 00 ?? ?? 00 10 00 00 00 02 00 00 04 00 00 00 00 00 39 00 04 00 00 00 00 00 00 00 00 ?? ?? ?? 00 02 00 00 00 00 00 00 ep_only = true [WinZip 32-bit SFX v6.x module] signature = FF 15 ?? ?? ?? 00 B1 22 38 08 74 02 B1 20 40 80 38 00 74 10 38 08 74 06 40 80 38 00 75 F6 80 38 00 74 01 40 33 C9 ?? ?? ?? ?? FF 15 ep_only = true [WinZip 32-bit SFX v8.x module] signature = 53 FF 15 ?? ?? ?? 00 B3 22 38 18 74 03 80 C3 FE 8A 48 01 40 33 D2 3A CA 74 0A 3A CB 74 06 8A 48 01 40 EB F2 38 10 74 01 40 ?? ?? ?? ?? FF 15 ep_only = true [XJ / XPAL -> LiNSoN] signature = 55 8B EC 6A FF 68 ?? ?? 40 00 68 ?? ?? 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 44 53 56 57 66 9C ep_only = true [yC v1.3 by Ashkbiz Danehkar] signature = 55 8B EC 81 EC C0 00 00 00 53 56 57 8D BD 40 FF FF FF B9 30 00 00 00 B8 CC CC CC CC F3 AB 60 E8 00 00 00 00 5D 81 ED 84 52 41 00 B9 75 5E 41 00 81 E9 DE 52 41 00 8B D5 81 C2 DE 52 41 00 8D 3A 8B F7 33 C0 EB 04 90 EB 01 C2 AC ep_only = false [ZipWorxSecureEXE v2.5 -> ZipWORX Technologies LLC (h)] signature = E9 B8 00 00 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 00 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 53 65 63 75 72 65 45 58 45 20 45 78 65 63 75 74 61 62 6C 65 20 46 69 6C 65 20 50 72 6F 74 65 63 74 6F 72 0D 0A 43 6F 70 79 72 69 67 68 74 28 63 29 20 32 30 ep_only = true [[MSLRH] v0.1 -> emadicius] signature = 60 EB 05 E8 EB 04 40 00 EB FA E8 0A 00 00 00 E8 EB 0C 00 00 E8 F6 FF FF FF E8 F2 FF FF FF 83 C4 08 74 04 75 02 EB 02 EB 01 81 E8 0A 00 00 00 E8 EB 0C 00 00 E8 F6 FF FF FF E8 F2 FF FF FF 83 C4 08 74 04 75 02 EB 02 EB 01 81 E8 0A 00 00 00 E8 EB 0C 00 00 E8 ep_only = false [[MSLRH] v0.31a] signature = 60 D1 CB 0F CA C1 CA E0 D1 CA 0F C8 EB 01 F1 0F C0 C9 D2 D1 0F C1 C0 D3 DA C0 D6 A8 EB 01 DE D0 EC 0F C1 CB D0 CF 0F C1 D1 D2 DB 0F C8 EB 01 BC C0 E9 C6 C1 D0 91 0F CB EB 01 73 0F CA 87 D9 87 D2 D0 CF 87 D9 0F C8 EB 01 C1 EB 01 A2 86 CA D0 E1 0F C0 CB 0F ep_only = false [[MSLRH] v0.32a -> emadicius] signature = EB 05 E8 EB 04 40 00 EB FA E8 0A 00 00 00 E8 EB 0C 00 00 E8 F6 FF FF FF E8 F2 FF FF FF 83 C4 08 74 04 75 02 EB 02 EB 01 81 E8 0A 00 00 00 E8 EB 0C 00 00 E8 F6 FF FF FF E8 F2 FF FF FF 83 C4 08 74 04 75 02 EB 02 EB 01 81 50 E8 02 00 00 00 29 5A 58 6B C0 03 ep_only = false [[MSLRH] v0.32a -> emadicius (h)] signature = E8 EB 0C 00 00 E8 F6 FF FF FF E8 F2 FF FF FF 83 C4 08 74 04 75 02 EB 02 EB 01 81 74 04 75 02 EB 02 EB 01 81 0F 31 50 0F 31 E8 0A 00 00 00 E8 EB 0C 00 00 E8 F6 FF FF FF E8 F2 FF FF FF 83 C4 08 2B 04 24 74 04 75 02 EB 02 EB 01 81 83 C4 04 E8 0A 00 00 00 E8 ep_only = false [* PseudoSigner 0.1 --> Anorganix] signature = 90 90 90 90 68 ?? ?? ?? ?? 67 64 FF 36 00 00 67 64 89 26 00 00 F1 90 90 90 90 ep_only = true [* PseudoSigner 0.1 --> Anorganix] signature = 90 90 90 90 68 ?? ?? ?? ?? 67 64 FF 36 00 00 67 64 89 26 00 00 F1 90 90 90 90 ep_only = true [* PseudoSigner 0.1 [32Lite 0.03] --> Anorganix] signature = 60 06 FC 1E 07 BE 90 90 90 90 6A 04 68 90 10 90 90 68 ?? ?? ?? ?? E9 ep_only = true [* PseudoSigner 0.1 [32Lite 0.03] --> Anorganix] signature = 60 06 FC 1E 07 BE 90 90 90 90 6A 04 68 90 10 90 90 68 ?? ?? ?? ?? E9 ep_only = true [* PseudoSigner 0.1 [ASProtect] --> Anorganix] signature = 60 90 90 90 90 90 90 5D 90 90 90 90 90 90 90 90 90 90 90 03 DD E9 ep_only = true [* PseudoSigner 0.1 [ASProtect] --> Anorganix] signature = 60 90 90 90 90 90 90 5D 90 90 90 90 90 90 90 90 90 90 90 03 DD E9 ep_only = true [* PseudoSigner 0.1 [CD-Cops II] --> Anorganix] signature = 53 60 BD 90 90 90 90 8D 45 90 8D 5D 90 E8 00 00 00 00 8D 01 E9 ep_only = true [* PseudoSigner 0.1 [CD-Cops II] --> Anorganix] signature = 53 60 BD 90 90 90 90 8D 45 90 8D 5D 90 E8 00 00 00 00 8D 01 E9 ep_only = true [* PseudoSigner 0.1 [Code-Lock] --> Anorganix] signature = 43 4F 44 45 2D 4C 4F 43 4B 2E 4F 43 58 00 01 28 01 50 4B 47 05 4C 3F B4 04 4D 4C 47 4B E9 ep_only = true [* PseudoSigner 0.1 [Code-Lock] --> Anorganix] signature = 43 4F 44 45 2D 4C 4F 43 4B 2E 4F 43 58 00 01 28 01 50 4B 47 05 4C 3F B4 04 4D 4C 47 4B E9 ep_only = true [* PseudoSigner 0.1 [Crunch/PE Heuristic] --> Anorganix] signature = 55 E8 0E 00 00 00 5D 83 ED 06 8B C5 55 60 89 AD ?? ?? ?? ?? 2B 85 00 00 00 00 E9 ep_only = true [* PseudoSigner 0.1 [Crunch/PE Heuristic] --> Anorganix] signature = 55 E8 0E 00 00 00 5D 83 ED 06 8B C5 55 60 89 AD ?? ?? ?? ?? 2B 85 00 00 00 00 E9 ep_only = true [* PseudoSigner 0.1 [FSG 1.31] --> Anorganix] signature = BE 90 90 90 00 BF 90 90 90 00 BB 90 90 90 00 53 BB 90 90 90 00 B2 80 E9 ep_only = true [* PseudoSigner 0.1 [FSG 1.31] --> Anorganix] signature = BE 90 90 90 00 BF 90 90 90 00 BB 90 90 90 00 53 BB 90 90 90 00 B2 80 E9 ep_only = true [* PseudoSigner 0.1 [LCC Win32 1.x] --> Anorganix] signature = 64 A1 01 00 00 00 55 89 E5 6A FF 68 ?? ?? ?? ?? 68 9A 10 40 90 50 E9 ep_only = true [* PseudoSigner 0.1 [LCC Win32 1.x] --> Anorganix] signature = 64 A1 01 00 00 00 55 89 E5 6A FF 68 ?? ?? ?? ?? 68 9A 10 40 90 50 E9 ep_only = true [* PseudoSigner 0.1 [LTC 1.3] --> Anorganix] signature = 54 E8 00 00 00 00 5D 8B C5 81 ED F6 73 40 00 2B 85 87 75 40 00 83 E8 06 E9 ep_only = true [* PseudoSigner 0.1 [LTC 1.3] --> Anorganix] signature = 54 E8 00 00 00 00 5D 8B C5 81 ED F6 73 40 00 2B 85 87 75 40 00 83 E8 06 E9 ep_only = true [* PseudoSigner 0.1 [Microsoft Visual Basic 5.0 - 6.0] --> Anorganix] signature = 68 ?? ?? ?? ?? E8 0A 00 00 00 00 00 00 00 00 00 30 00 00 00 E9 ep_only = true [* PseudoSigner 0.1 [Microsoft Visual Basic 5.0 - 6.0] --> Anorganix] signature = 68 ?? ?? ?? ?? E8 0A 00 00 00 00 00 00 00 00 00 30 00 00 00 E9 ep_only = true [* PseudoSigner 0.1 [Microsoft Visual C++ 5.0+ (MFC)] --> Anorganix] signature = 55 8B EC 6A FF 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 64 A1 00 00 00 00 50 E9 ep_only = true [* PseudoSigner 0.1 [Microsoft Visual C++ 5.0+ (MFC)] --> Anorganix] signature = 55 8B EC 6A FF 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 64 A1 00 00 00 00 50 E9 ep_only = true [* PseudoSigner 0.1 [NorthStar PE Shrinker 1.3] --> Anorganix] signature = 9C 60 E8 00 00 00 00 5D B8 B3 85 40 00 2D AC 85 40 00 2B E8 8D B5 00 00 00 00 E9 ep_only = true [* PseudoSigner 0.1 [NorthStar PE Shrinker 1.3] --> Anorganix] signature = 9C 60 E8 00 00 00 00 5D B8 B3 85 40 00 2D AC 85 40 00 2B E8 8D B5 00 00 00 00 E9 ep_only = true [* PseudoSigner 0.1 [PE Pack 0.99] --> Anorganix] signature = 60 E8 11 00 00 00 5D 83 ED 06 80 BD E0 04 90 90 01 0F 84 F2 FF CC 0A E9 ep_only = true [* PseudoSigner 0.1 [PE Pack 0.99] --> Anorganix] signature = 60 E8 11 00 00 00 5D 83 ED 06 80 BD E0 04 90 90 01 0F 84 F2 FF CC 0A E9 ep_only = true [* PseudoSigner 0.1 [PE Protect 0.9] --> Anorganix] signature = 52 51 55 57 64 67 A1 30 00 85 C0 78 0D E8 07 00 00 00 58 83 C0 07 C6 90 C3 E9 ep_only = true [* PseudoSigner 0.1 [PE Protect 0.9] --> Anorganix] signature = 52 51 55 57 64 67 A1 30 00 85 C0 78 0D E8 07 00 00 00 58 83 C0 07 C6 90 C3 E9 ep_only = true [* PseudoSigner 0.1 [PENightMare 2 Beta] --> Anorganix] signature = 60 E9 10 00 00 00 EF 40 03 A7 07 8F 07 1C 37 5D 43 A7 04 B9 2C 3A E9 ep_only = true [* PseudoSigner 0.1 [PENightMare 2 Beta] --> Anorganix] signature = 60 E9 10 00 00 00 EF 40 03 A7 07 8F 07 1C 37 5D 43 A7 04 B9 2C 3A E9 ep_only = true [* PseudoSigner 0.1 [PEX 0.99] --> Anorganix] signature = 60 E8 01 00 00 00 55 83 C4 04 E8 01 00 00 00 90 5D 81 FF FF FF 00 01 E9 ep_only = true [* PseudoSigner 0.1 [PEX 0.99] --> Anorganix] signature = 60 E8 01 00 00 00 55 83 C4 04 E8 01 00 00 00 90 5D 81 FF FF FF 00 01 E9 ep_only = true [* PseudoSigner 0.1 [REALBasic] --> Anorganix] signature = 55 89 E5 90 90 90 90 90 90 90 90 90 90 50 90 90 90 90 90 00 01 E9 ep_only = true [* PseudoSigner 0.1 [REALBasic] --> Anorganix] signature = 55 89 E5 90 90 90 90 90 90 90 90 90 90 50 90 90 90 90 90 00 01 E9 ep_only = true [* PseudoSigner 0.1 [UPX 0.6] --> Anorganix] signature = 60 E8 00 00 00 00 58 83 E8 3D 50 8D B8 00 00 00 FF 57 8D B0 E8 00 00 00 E9 ep_only = true [* PseudoSigner 0.1 [UPX 0.6] --> Anorganix] signature = 60 E8 00 00 00 00 58 83 E8 3D 50 8D B8 00 00 00 FF 57 8D B0 E8 00 00 00 E9 ep_only = true [* PseudoSigner 0.2 [.BJFNT 1.1b] --> Anorganix] signature = EB 01 EA 9C EB 01 EA 53 EB 01 EA 51 EB 01 EA 52 EB 01 EA 56 90 ep_only = true [* PseudoSigner 0.2 [.BJFNT 1.2] --> Anorganix] signature = EB 02 69 B1 83 EC 04 EB 03 CD 20 EB EB 01 EB 9C EB 01 EB EB 00 ep_only = true [* PseudoSigner 0.2 [ASProtect] --> Anorganix] signature = 60 90 90 90 90 90 90 5D 90 90 90 90 90 90 90 90 90 90 90 03 DD ep_only = true [* PseudoSigner 0.2 [Borland C++ 1999] --> Anorganix] signature = EB 10 66 62 3A 43 2B 2B 48 4F 4F 4B 90 E9 90 90 90 90 A1 ?? ?? ?? ?? A3 ep_only = true [* PseudoSigner 0.2 [Borland Delphi DLL] --> Anorganix] signature = 55 8B EC 83 C4 B4 B8 90 90 90 90 E8 00 00 00 00 E8 00 00 00 00 8D 40 00 ep_only = true [* PseudoSigner 0.2 [Borland Delphi Setup Module] --> Anorganix] signature = 55 8B EC 83 C4 90 53 56 57 33 C0 89 45 F0 89 45 D4 89 45 D0 E8 00 00 00 00 ep_only = true [* PseudoSigner 0.2 [Code-Lock] --> Anorganix] signature = 43 4F 44 45 2D 4C 4F 43 4B 2E 4F 43 58 00 01 28 01 50 4B 47 05 4C 3F B4 04 4D 4C 47 4B ep_only = true [* PseudoSigner 0.2 [Crunch/PE Heuristic] --> Anorganix] signature = 55 E8 0E 00 00 00 5D 83 ED 06 8B C5 55 60 89 AD ?? ?? ?? ?? 2B 85 00 00 00 00 ep_only = true [* PseudoSigner 0.2 [FSG 1.31] --> Anorganix] signature = BE 90 90 90 00 BF 90 90 90 00 BB 90 90 90 00 53 BB 90 90 90 00 B2 80 ep_only = true [* PseudoSigner 0.2 [LCC Win32 1.x] --> Anorganix] signature = 64 A1 01 00 00 00 55 89 E5 6A FF 68 ?? ?? ?? ?? 68 9A 10 40 90 50 ep_only = true [* PseudoSigner 0.2 [LCC Win32 DLL] --> Anorganix] signature = 55 89 E5 53 56 57 83 7D 0C 01 75 05 E8 17 90 90 90 FF 75 10 FF 75 0C FF 75 08 A1 ep_only = true [* PseudoSigner 0.2 [Lockless Intro Pack] --> Anorganix] signature = 2C E8 EB 1A 90 90 5D 8B C5 81 ED F6 73 90 90 2B 85 90 90 90 90 83 E8 06 89 85 FF 01 EC AD ep_only = true [* PseudoSigner 0.2 [Microsoft Visual C++ 7.0 DLL] --> Anorganix] signature = 55 8D 6C 01 00 81 EC 00 00 00 00 8B 45 90 83 F8 01 56 0F 84 00 00 00 00 85 C0 0F 84 ep_only = true [* PseudoSigner 0.2 [NorthStar PE Shrinker 1.3] --> Anorganix] signature = 9C 60 E8 00 00 00 00 5D B8 B3 85 40 00 2D AC 85 40 00 2B E8 8D B5 00 00 00 00 ep_only = true [* PseudoSigner 0.2 [PE Intro 1.0] --> Anorganix] signature = 8B 04 24 9C 60 E8 14 00 00 00 5D 81 ED 0A 45 40 90 80 BD 67 44 40 90 90 0F 85 48 FF ED 0A ep_only = true [* PseudoSigner 0.2 [PE Pack 0.99] --> Anorganix] signature = 60 E8 11 00 00 00 5D 83 ED 06 80 BD E0 04 90 90 01 0F 84 F2 FF CC 0A ep_only = true [* PseudoSigner 0.2 [PE Protect 0.9] --> Anorganix] signature = 52 51 55 57 64 67 A1 30 00 85 C0 78 0D E8 07 00 00 00 58 83 C0 07 C6 90 C3 ep_only = true [* PseudoSigner 0.2 [PENightMare 2 Beta] --> Anorganix] signature = 60 E9 10 00 00 00 EF 40 03 A7 07 8F 07 1C 37 5D 43 A7 04 B9 2C 3A ep_only = true [* PseudoSigner 0.2 [PEX 0.99] --> Anorganix] signature = 60 E8 01 00 00 00 55 83 C4 04 E8 01 00 00 00 90 5D 81 FF FF FF 00 01 ep_only = true [* PseudoSigner 0.2 [REALBasic] --> Anorganix] signature = 55 89 E5 90 90 90 90 90 90 90 90 90 90 50 90 90 90 90 90 00 01 ep_only = true [* PseudoSigner 0.2 [UPX 0.6] --> Anorganix] signature = 60 E8 00 00 00 00 58 83 E8 3D 50 8D B8 00 00 00 FF 57 8D B0 E8 00 00 00 ep_only = true [* PseudoSigner 0.2 [Watcom C/C++ DLL] --> Anorganix] signature = 53 56 57 55 8B 74 24 14 8B 7C 24 18 8B 6C 24 1C 83 FF 03 0F 87 01 00 00 00 F1 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5E 58 5A 5D 5F 5B 5A 59 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5D 5F 5E 5B 9D 58 5B 59 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5D 5F 5A 5E 5D 5B 58 9D 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5E 59 5F 5B 5D 58 5A 9D 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5E 59 58 5F 5D 58 5B 9D 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5E 58 5F 5D 5B 5A 59 9D 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5B 5E 59 5A 58 9D 5D 5B 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5B 5E 58 5D 5F 9D 5A 59 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5A 9D 5E 5D 58 5F 5A 59 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5D 5F 59 59 5A 5E 5B 9D 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5B 5F 5B 9D 59 5A 5D 58 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5B 5F 58 5A 5E 9D 5D 59 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5E 5D 59 5B 5A 58 5F 9D 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 9D 59 5A 5F 5E 5D 5D 58 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5F 5F 5B 5A 9D 5E 5D 59 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5F 5E 9D 59 5A 5A 5B 58 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 9D 5D 5A 5B 58 5F 5E 5E 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 9D 5A 5F 5D 58 5B 58 59 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 9D 5A 58 5B 5F 59 5D 5E 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5F 58 5B 59 5E 5F 5D 5A 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5E 5F 9D 5D 5B 58 5E 5A 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5E 5D 5A 58 59 5B 5A 5F 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5F 5D 5E 58 5B 9D 59 5A 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5F 5A 5B 59 5D 9D 59 5E 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5F 58 5B 9D 5A 5D 5F 5E 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5A 5F 5F 58 5E 5D 9D 59 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5F 5B 5E 5B 5D 59 5A 9D 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5F 5A 5E 5E 59 9D 5D 5B 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5E 5F 5F 9D 59 5D 5A 5B 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5F 5E 9D 5D 58 5B 5A 5A 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5F 5E 5D 59 9D 5B 58 5A 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5F 5E 58 5D 5B 59 9D 5A 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5E 5A 5F 58 58 5D 59 5B 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5E 5A 59 5D 5B 58 5F 9D 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5E 59 5D 9D 58 5B 5A 5F 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5E 5F 5B 59 5D 58 9D 5A 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5E 5B 5D 5A 5F 58 59 58 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5E 5B 5A 59 5D 58 5F 9D 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 9D 58 5F 5F 5B 5A 59 5D 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 59 58 5B 5D 5F 5E 5A 5F 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 58 5F 5B 5D 5E 5B 5A 59 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 58 5F 59 5A 59 5E 5D 5B 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5A 5F 5B 58 59 5D 9D 5D 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 59 5A 9D 5F 5B 5B 5D 58 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 59 5A 9D 5E 58 5F 5D 59 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 58 5B 59 59 5E 5D 5F 5A 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 9D 5F 5D 5E 5B 58 59 5A 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 9D 5D 5E 58 59 5B 5F 5A 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 58 5B 9D 5A 5F 5D 5A 5E 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 58 5B 5A 5F 59 5D 5D 5E 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 58 5B 59 5F 5A 5E 5D 9D 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 58 5A 5B 5E 5F 9D 5D 5F 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 9D 5E 5F 5B 5D 58 5A 59 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 9D 5E 5A 58 5F 5D 5B 59 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 58 5F 5E 5B 59 5D 5A 9D 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 58 5F 5E 59 9D 5D 5B 59 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 58 5A 5E 5F 5B 5B 5D 59 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5F 59 59 5A 5B 9D 5E 58 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5E 9D 5A 5D 5F 58 5B 59 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5E 5F 58 5B 5A 59 5D 9D 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 9D 5A 59 5E 5D 5F 5B 5A 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5F 5B 9D 5D 5A 5E 58 5A 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5F 5A 59 5D 9D 5E 58 5B 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 59 5D 5A 58 9D 5B 5E 5F 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5B 5D 5E 5F 58 9D 5A 58 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5B 59 5E 5F 5D 5A 9D 58 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5A 9D 5B 5F 5E 5D 58 59 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5D 5A 5F 58 9D 5E 5B 59 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5D 59 9D 5A 5E 58 5B 5F 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5B 9D 58 59 58 5E 5D 5A 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 59 5F 5B 58 5A 9D 58 5E 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 59 5E 5F 5D 5A 5B 58 5A 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 59 5E 5A 5F 5B 9D 5B 58 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5A 5D 59 5D 5F 58 5E 5B 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5A 59 5E 5D 5F 9D 5E 5B 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5A 58 5B 59 5E 5D 5F 5F 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5E 5E 5B 58 9D 59 5D 5F 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5A 59 58 5D 5E 5D 5F 5B 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 59 5F 5F 5E 5D 5A 5B 9D 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 59 5F 5D 9D 5E 5B 5A 5A 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5A 5F 5E 58 5D 59 5D 5B 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5A 5B 5F 58 5D 5E 5D 59 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5A 5B 5D 5E 58 5F 59 5D 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 58 5B 5D 5E 5A 5E 59 9D 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 58 59 5E 9D 5F 59 5A 5B 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 9D 5F 58 5A 5E 5D 5E 5B 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 59 5D 5D 5A 5F 5E 58 9D 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 59 5A 5B 9D 58 5E 5F 58 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 58 9D 5B 5E 5A 5D 5F 5F 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5B 58 5A 59 5E 9D 5E 5D 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5D 9D 5A 5B 59 58 5E 58 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5D 5F 5B 5D 58 5E 5A 59 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5D 5E 58 5F 5A 59 5B 5B 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5E 5D 5B 5F 5E 59 58 9D 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5E 5B 5A 58 5D 59 5F 9D 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5E 5A 5F 5B 9D 58 5E 59 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5B 5A 9D 58 5F 5E 5E 59 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5B 59 9D 5D 5A 5E 58 5F 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5B 58 5D 58 9D 59 5A 5F 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5D 5E 58 5A 9D 5F 59 5B 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5B 9D 5F 5D 58 5A 5E 59 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5B 5E 59 5F 5D 5D 9D 58 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5D 5F 5E 58 9D 59 5A 5B 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 59 5B 58 5D 5F 9D 5A 5E 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 59 5A 5E 58 9D 5D 58 5B 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 58 9D 5B 5D 5E 5F 5A 59 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 59 5E 58 5D 5B 9D 5F 5A 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 59 5D 5F 5E 5A 5B 9D 5B 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 59 5B 9D 5E 5F 5A 58 5D 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 58 5B 5E 5D 58 5F 9D 59 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 58 5A 5D 5B 5E 59 5A 9D 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 58 59 5E 5D 5B 9D 5F 5A 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 58 5F 5B 5F 5D 59 5E 9D 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 58 5E 5A 59 5D 59 9D 5F 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 58 5B 5E 5D 9D 5B 59 5A 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5A 59 5B 5D 5A 5E 9D 5F 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5B 9D 59 5E 5D 5D 5F 5A 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5B 5E 5A 58 5F 58 59 9D 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5B 5D 59 5F 5E 58 9D 5A 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5D 59 9D 5D 58 5B 5E 5A 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5D 58 5A 5B 5D 9D 5F 5E 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5B 9D 5E 5A 5E 59 5F 5D 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5A 5E 5D 9D 5B 58 5F 59 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5A 5B 59 5D 5E 58 5F 9D 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5A 5B 58 9D 5E 5F 5D 59 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5B 5D 58 9D 59 5F 5E 59 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5A 9D 5E 5D 58 5F 5B 59 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5A 9D 5E 5B 5F 5B 58 5D 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 98 83 ED 04 8D 76 02 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 83 ED 02 66 89 45 00 83 EE FE E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 83 ED 02 66 89 45 00 83 C6 02 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 83 C6 02 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 8D 76 02 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 83 EE FE 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 83 ED 02 66 89 45 00 8D 76 02 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 83 EE FE 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 83 ED 02 66 89 45 00 83 EE FE E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 98 8D 76 02 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 98 83 C6 02 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 8D 76 02 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5E 58 5D 5A 5A 5F 5B 9D 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5E 58 59 5B 59 5A 5D 9D 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5D 59 5E 5A 58 5B 5F 59 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5B 5D 5F 5E 9D 58 5A 59 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 59 5D 5F 5B 5E 9D 58 5A 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5B 59 5D 9D 5E 5F 5A 5D 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5A 5E 5D 5B 9D 59 58 58 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5F 5E 9D 5F 59 5A 5D 58 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5F 9D 5B 59 5E 5B 5D 58 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5B 58 5D 5E 5F 9D 5A 59 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 58 9D 5F 5D 5E 5B 59 5A 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 9D 5A 5F 58 5B 59 5B 5D 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 59 58 5A 5F 5B 5E 5D 5D 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 58 5F 5E 59 5E 5D 5B 5A 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 58 5A 9D 5D 59 5B 59 5E 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5F 58 5B 5F 5A 59 5D 9D 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5D 5E 9D 58 5B 5F 59 58 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 59 5D 58 59 9D 5E 5A 5B 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5A 9D 5E 59 5D 5D 58 5B 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 58 5A 5D 5B 9D 59 5F 5F 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 9D 5D 59 5F 5E 58 58 5A 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5D 5E 5F 58 5B 5A 5A 59 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5B 5F 5A 59 58 5D 9D 5E 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5E 5A 5F 59 5B 5D 58 5B 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 58 5F 5E 5E 5A 5D 5B 59 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 58 59 5E 5F 5D 5B 5A 5A 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 9D 59 5A 5B 58 5B 5F 5E 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 59 59 58 5B 5E 5F 5A 9D 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5E 5E 5A 58 5D 9D 59 5F 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 59 5B 5F 5E 58 9D 5D 5A 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 59 5A 5B 5E 58 5D 5F 9D 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5B 5E 9D 58 5D 5F 5A 5D 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 59 5B 5E 5A 5F 58 5D 9D 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5D 5F 5A 5B 5E 58 9D 59 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5A 5F 58 59 5B 5D 5E 9D 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5E 5B 59 5D 5F 9D 5A 58 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5B 5A 5F 5E 5D 58 58 59 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5A 58 5B 5E 59 5D 9D 5F 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 9D 59 5D 5B 5F 58 5E 5A 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5B 9D 5A 5F 59 58 5D 5E 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5F 5A 5B 5E 5D 5B 9D 59 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5B 9D 58 5F 5E 59 5D 5D 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5F 5D 58 59 9D 5E 5B 5A 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5E 5D 5A 5F 59 58 9D 5B 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5D 5D 58 5F 59 5B 9D 5E 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5A 59 5F 59 58 9D 5E 5D 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 98 83 ED 04 83 C6 01 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 98 83 ED 04 46 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 98 83 C6 01 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 98 83 ED 04 89 45 00 8D 76 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 98 83 ED 04 89 45 00 83 C6 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 98 83 ED 04 83 EE FF 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 EE FF 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 EE FF 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C6 01 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 83 EE FF 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 83 C6 01 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 8D 76 01 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 98 83 ED 04 8D 76 01 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 EE FF 66 8B 55 00 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 ED 02 83 EE FF 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 ED 02 66 89 45 00 8D 76 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8A 04 07 46 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 EE FF 66 98 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 EE FF 66 8B 55 00 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 C6 01 66 8B 55 00 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 C6 01 66 8B 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 98 83 EE FF 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 ED 02 66 89 45 00 83 EE FF E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 C6 01 8A 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 C6 01 66 8B 55 00 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 8D 76 01 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5E 9D 5F 5D 5B 58 5D 59 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5E 9D 5D 5B 59 5A 58 5F 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5E 5F 58 59 9D 5F 5B 5D 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 9D 5D 59 58 5F 5A 5E 5B 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5F 9D 58 5B 5D 5A 5A 5E 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5F 5A 58 5E 5D 5B 9D 59 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5E 59 58 5F 5B 5D 5D 5A 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5E 58 5F 5D 5A 59 9D 5A 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5D 5B 58 5A 59 5F 9D 5E 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5E 5D 5B 5A 9D 58 5A 59 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5E 5D 58 59 58 9D 5A 5B 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5E 5A 59 9D 5F 5D 5B 58 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 9D 5D 5E 59 5B 58 5B 5F 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 66 89 14 07 8D 76 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 04 07 8D 76 01 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 04 07 83 ED 02 8D 76 01 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 88 14 07 8D 76 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 83 EE FF 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 83 C6 01 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 46 66 8B 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 9D 5F 59 5D 5A 5B 5B 5E 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 9D 5F 58 5E 5A 5B 59 5D 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 04 07 83 ED 02 66 89 45 00 8D 76 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 04 07 83 ED 02 66 89 45 00 83 C6 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 04 07 83 C6 01 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5B 5D 5E 59 5F 58 9D 58 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5A 9D 5B 59 5D 5F 58 5E 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8D 76 01 66 98 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8D 76 01 66 8B 55 00 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8D 76 01 66 8B 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 06 83 ED 04 89 45 00 8D 76 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8D 76 01 8A 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8D 76 01 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8A 04 07 83 ED 02 66 89 45 00 83 EE FF E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8A 04 07 83 ED 02 66 89 45 00 83 C6 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8A 04 07 83 C6 01 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8A 04 07 8D 76 01 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8A 04 07 83 ED 02 83 EE FF 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8A 04 07 83 ED 02 83 C6 01 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 06 83 ED 04 8D 76 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 88 14 07 46 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 83 EE FF 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 83 C6 01 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 8D 76 01 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 88 14 07 83 EE FF E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 88 14 07 83 C6 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 46 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 46 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 46 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 66 89 14 07 83 EE FF E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 66 89 14 07 83 C6 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 66 89 14 07 46 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C6 01 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 C6 01 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 C6 01 66 98 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 98 8D 76 01 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 ED 02 66 89 45 00 83 C6 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 ED 02 66 89 45 00 46 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 ED 02 46 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 8D 76 01 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 46 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 8D 76 01 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 98 83 ED 04 89 45 00 83 EE FF E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 98 83 ED 04 89 45 00 46 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 98 46 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 46 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5A 5F 5D 9D 58 59 59 5B 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5A 5B 5F 5E 9D 58 5D 59 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5A 59 5F 58 5E 9D 5D 5F 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5E 59 5A 5B 9D 5F 58 58 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5D 9D 59 5F 5D 58 5E 5A 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5D 5B 59 5F 5E 9D 5D 5A 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 59 5B 58 5A 5B 5F 5E 9D 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5D 5E 9D 5F 5B 5A 5B 58 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5D 5E 5B 5F 58 5E 59 5A 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 58 5E 5F 5D 5A 58 5B 9D 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 58 59 5E 5D 5F 5B 9D 5A 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 9D 5B 5D 5A 5F 59 5E 58 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5F 5F 5B 58 59 5D 5A 5E 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 04 07 83 ED 02 66 89 45 00 83 EE FF E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 04 07 83 ED 02 66 89 45 00 46 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 04 07 83 ED 02 46 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 04 07 83 EE FF 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 04 07 83 ED 02 83 EE FF 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 04 07 83 ED 02 83 C6 01 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 46 66 98 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 46 66 8B 55 00 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 46 66 8B 55 00 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 04 07 46 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 46 8A 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 46 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 8B 55 04 83 C5 08 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 8B 55 04 83 C5 08 36 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 55 00 83 C5 02 36 8A 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 8B 55 04 F7 D0 F7 D2 21 D0 89 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 8A 4D 04 83 ED 02 D3 E8 89 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 8A 4D 04 83 ED 02 D3 E0 89 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 83 C5 02 66 8B 00 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 8A 55 04 83 C5 06 88 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 8A 55 04 83 C5 06 36 88 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 55 00 83 C5 02 8A 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 04 07 83 ED 02 66 89 45 00 8D 76 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 04 07 83 C6 01 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? F7 55 00 66 8B 45 00 83 ED 02 66 21 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 04 07 83 ED 02 8D 76 01 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 04 07 83 ED 02 83 EE FF 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 04 07 83 ED 02 83 C6 01 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 83 C5 02 66 36 8B 00 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8A 04 07 83 ED 02 8D 76 01 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8A 04 07 83 ED 02 66 89 45 00 8D 76 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8A 04 07 83 ED 02 66 89 45 00 46 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 45 00 83 ED 02 00 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8D 76 01 66 8B 55 00 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8A 04 07 83 EE FF 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 EE FF 66 8B 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 ED 02 8D 76 01 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 ED 02 83 C6 01 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8A 04 07 83 ED 02 46 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 EE FF 8A 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 EE FF 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 45 00 8A 4D 02 83 ED 02 D2 E0 66 89 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 01 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 06 8D 76 04 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 06 83 EE FC 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 66 8B 55 04 83 C5 06 66 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 66 8B 55 04 83 C5 06 66 36 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 06 83 ED 04 83 C6 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 06 83 C6 04 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 45 00 8A 4D 02 83 ED 02 D2 E8 66 89 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 06 83 ED 04 89 45 00 83 EE FC E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 06 83 ED 04 89 45 00 83 C6 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 06 83 ED 04 83 EE FC 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5A 58 5E 5D 5B 5B 9D 59 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8A 04 07 83 ED 02 66 89 45 00 8D 76 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8A 04 07 83 ED 02 66 89 45 00 46 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8A 04 07 83 ED 02 46 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8A 04 07 83 EE FF 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8A 04 07 83 ED 02 8D 76 01 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8A 04 07 83 ED 02 83 C6 01 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 ED 02 66 89 45 00 46 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 ED 02 46 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 C6 01 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 EE FF 66 8B 55 00 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 ED 02 8D 76 01 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 ED 02 83 EE FF 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8D 76 01 66 8B 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8D 76 01 8A 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8D 76 01 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 C6 01 66 8B 55 00 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 04 07 83 ED 02 46 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 04 07 46 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 46 8A 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 04 07 83 ED 02 66 89 45 00 83 EE FF E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 04 07 83 ED 02 66 89 45 00 83 C6 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 04 07 83 ED 02 66 89 45 00 46 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 46 66 8B 55 00 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 46 66 8B 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 8B 45 00 83 C5 02 66 8B 00 66 89 45 00 E9 A5 06 00 00 8B 45 00 66 8B 55 04 83 C5 06 66 89 10 E9 ep_only = false [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 46 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 46 66 98 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 46 66 8B 55 00 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 04 07 8D 76 01 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 EE FF 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 88 14 07 83 C6 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 88 14 07 46 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 98 83 ED 04 89 45 00 46 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 98 83 ED 04 46 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 98 83 C6 01 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 46 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 46 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 46 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 83 C6 01 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 66 89 14 07 83 C6 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 66 89 14 07 46 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 98 83 ED 04 83 EE FE 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 98 83 ED 04 83 C6 02 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 98 83 C6 02 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 98 83 ED 04 89 45 00 8D 76 02 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 98 83 ED 04 89 45 00 83 EE FE E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 98 83 ED 04 89 45 00 83 C6 02 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 83 ED 02 83 EE FE 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 83 ED 02 83 C6 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 83 C6 02 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 8D 76 02 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 83 EE FE 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 83 ED 02 8D 76 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 98 83 EE FE 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 80 E0 3C 8B 55 00 83 C5 04 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 80 E0 3C 8B 14 07 83 ED 04 89 55 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 59 5F 58 5A 9D 5D 5E 5E 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 59 5E 5B 5F 5B 9D 58 5D 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 45 00 83 ED 02 66 01 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 98 8D 76 02 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 98 83 EE FE 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 83 C6 02 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 83 C6 02 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 83 ED 02 66 89 45 00 83 C6 02 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 98 83 ED 04 89 45 00 83 C6 02 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 98 83 ED 04 83 EE FE 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 98 83 ED 04 83 C6 02 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 98 83 ED 04 8D 76 02 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 98 83 ED 04 89 45 00 8D 76 02 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 98 83 ED 04 89 45 00 83 EE FE E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 83 ED 02 83 EE FE 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 83 ED 02 83 C6 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 83 ED 02 66 89 45 00 8D 76 02 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 8D 76 02 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 83 EE FE 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 83 ED 02 8D 76 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 ED 02 66 89 45 00 83 EE FF E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 ED 02 66 89 45 00 83 C6 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 C6 01 8A 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 EE FF 66 8B 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 ED 02 83 C6 01 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 ED 02 66 89 45 00 8D 76 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 98 8D 76 01 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 98 83 EE FF 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 98 83 ED 04 8D 76 01 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 C6 01 66 98 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 C6 01 66 8B 55 00 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 C6 01 66 8B 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 EE FF 66 8B 55 00 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8A 04 07 8D 76 01 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8A 04 07 83 ED 02 83 EE FF 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8A 04 07 83 ED 02 66 89 45 00 83 EE FF E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8D 76 01 66 98 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8D 76 01 66 8B 55 00 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8D 76 01 66 8B 55 00 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 EE FF 8A 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 EE FF 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 EE FF 66 98 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8A 04 07 83 ED 02 66 89 45 00 83 C6 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8A 04 07 83 C6 01 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8A 04 07 46 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 98 83 ED 04 89 45 00 8D 76 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 88 14 07 8D 76 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 88 14 07 83 EE FF E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 83 EE FF 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C6 01 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 8D 76 01 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 8D 76 01 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 66 89 14 07 83 EE FF E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 46 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 04 07 83 EE FF 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 83 EE FF 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 83 C6 01 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 66 89 14 07 8D 76 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C6 01 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 98 83 ED 04 83 C6 01 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 98 46 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 8D 76 01 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 98 83 ED 04 89 45 00 83 EE FF E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 98 83 ED 04 89 45 00 83 C6 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 98 83 ED 04 83 EE FF 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 8D 76 01 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 8D 76 01 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 EE FF 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 83 EE FF 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 83 C6 01 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 46 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5E 58 5A 5D 5F 5B 5A 59 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5D 5F 5E 5B 9D 58 5B 59 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5D 5F 5A 5E 5D 5B 58 9D 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5E 59 5F 5B 5D 58 5A 9D 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5E 59 58 5F 5D 58 5B 9D 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5E 58 5F 5D 5B 5A 59 9D 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5B 5E 59 5A 58 9D 5D 5B 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5B 5E 58 5D 5F 9D 5A 59 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5A 9D 5E 5D 58 5F 5A 59 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5D 5F 59 59 5A 5E 5B 9D 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5B 5F 5B 9D 59 5A 5D 58 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5B 5F 58 5A 5E 9D 5D 59 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5E 5D 59 5B 5A 58 5F 9D 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 9D 59 5A 5F 5E 5D 5D 58 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5F 5F 5B 5A 9D 5E 5D 59 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5F 5E 9D 59 5A 5A 5B 58 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 9D 5D 5A 5B 58 5F 5E 5E 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 9D 5A 5F 5D 58 5B 58 59 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 9D 5A 58 5B 5F 59 5D 5E 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5F 58 5B 59 5E 5F 5D 5A 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5E 5F 9D 5D 5B 58 5E 5A 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5E 5D 5A 58 59 5B 5A 5F 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5F 5D 5E 58 5B 9D 59 5A 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5F 5A 5B 59 5D 9D 59 5E 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5F 58 5B 9D 5A 5D 5F 5E 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5A 5F 5F 58 5E 5D 9D 59 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5F 5B 5E 5B 5D 59 5A 9D 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5F 5A 5E 5E 59 9D 5D 5B 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5E 5F 5F 9D 59 5D 5A 5B 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5F 5E 9D 5D 58 5B 5A 5A 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5F 5E 5D 59 9D 5B 58 5A 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5F 5E 58 5D 5B 59 9D 5A 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5E 5A 5F 58 58 5D 59 5B 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5E 5A 59 5D 5B 58 5F 9D 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5E 59 5D 9D 58 5B 5A 5F 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5E 5F 5B 59 5D 58 9D 5A 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5E 5B 5D 5A 5F 58 59 58 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5E 5B 5A 59 5D 58 5F 9D 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 9D 58 5F 5F 5B 5A 59 5D 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 59 58 5B 5D 5F 5E 5A 5F 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 58 5F 5B 5D 5E 5B 5A 59 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 58 5F 59 5A 59 5E 5D 5B 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5A 5F 5B 58 59 5D 9D 5D 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 59 5A 9D 5F 5B 5B 5D 58 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 59 5A 9D 5E 58 5F 5D 59 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 58 5B 59 59 5E 5D 5F 5A 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 9D 5F 5D 5E 5B 58 59 5A 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 9D 5D 5E 58 59 5B 5F 5A 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 58 5B 9D 5A 5F 5D 5A 5E 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 58 5B 5A 5F 59 5D 5D 5E 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 58 5B 59 5F 5A 5E 5D 9D 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 58 5A 5B 5E 5F 9D 5D 5F 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 9D 5E 5F 5B 5D 58 5A 59 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 9D 5E 5A 58 5F 5D 5B 59 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 58 5F 5E 5B 59 5D 5A 9D 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 58 5F 5E 59 9D 5D 5B 59 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 58 5A 5E 5F 5B 5B 5D 59 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5F 59 59 5A 5B 9D 5E 58 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5E 9D 5A 5D 5F 58 5B 59 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5E 5F 58 5B 5A 59 5D 9D 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 9D 5A 59 5E 5D 5F 5B 5A 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5F 5B 9D 5D 5A 5E 58 5A 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5F 5A 59 5D 9D 5E 58 5B 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 59 5D 5A 58 9D 5B 5E 5F 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5B 5D 5E 5F 58 9D 5A 58 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5B 59 5E 5F 5D 5A 9D 58 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5A 9D 5B 5F 5E 5D 58 59 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5D 5A 5F 58 9D 5E 5B 59 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5D 59 9D 5A 5E 58 5B 5F 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5B 9D 58 59 58 5E 5D 5A 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 59 5F 5B 58 5A 9D 58 5E 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 59 5E 5F 5D 5A 5B 58 5A 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 59 5E 5A 5F 5B 9D 5B 58 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5A 5D 59 5D 5F 58 5E 5B 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5A 59 5E 5D 5F 9D 5E 5B 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5A 58 5B 59 5E 5D 5F 5F 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5E 5E 5B 58 9D 59 5D 5F 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5A 59 58 5D 5E 5D 5F 5B 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 59 5F 5F 5E 5D 5A 5B 9D 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 59 5F 5D 9D 5E 5B 5A 5A 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5A 5F 5E 58 5D 59 5D 5B 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5A 5B 5F 58 5D 5E 5D 59 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5A 5B 5D 5E 58 5F 59 5D 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 58 5B 5D 5E 5A 5E 59 9D 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 58 59 5E 9D 5F 59 5A 5B 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 9D 5F 58 5A 5E 5D 5E 5B 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 59 5D 5D 5A 5F 5E 58 9D 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 59 5A 5B 9D 58 5E 5F 58 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 58 9D 5B 5E 5A 5D 5F 5F 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5B 58 5A 59 5E 9D 5E 5D 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5D 9D 5A 5B 59 58 5E 58 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5D 5F 5B 5D 58 5E 5A 59 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5D 5E 58 5F 5A 59 5B 5B 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5E 5D 5B 5F 5E 59 58 9D 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5E 5B 5A 58 5D 59 5F 9D 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5E 5A 5F 5B 9D 58 5E 59 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5B 5A 9D 58 5F 5E 5E 59 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5B 59 9D 5D 5A 5E 58 5F 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5B 58 5D 58 9D 59 5A 5F 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5D 5E 58 5A 9D 5F 59 5B 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5B 9D 5F 5D 58 5A 5E 59 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5B 5E 59 5F 5D 5D 9D 58 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5D 5F 5E 58 9D 59 5A 5B 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 59 5B 58 5D 5F 9D 5A 5E 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 59 5A 5E 58 9D 5D 58 5B 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 58 9D 5B 5D 5E 5F 5A 59 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 59 5E 58 5D 5B 9D 5F 5A 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 59 5D 5F 5E 5A 5B 9D 5B 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 59 5B 9D 5E 5F 5A 58 5D 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 58 5B 5E 5D 58 5F 9D 59 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 58 5A 5D 5B 5E 59 5A 9D 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 58 59 5E 5D 5B 9D 5F 5A 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 58 5F 5B 5F 5D 59 5E 9D 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 58 5E 5A 59 5D 59 9D 5F 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 58 5B 5E 5D 9D 5B 59 5A 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5A 59 5B 5D 5A 5E 9D 5F 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5B 9D 59 5E 5D 5D 5F 5A 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5B 5E 5A 58 5F 58 59 9D 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5B 5D 59 5F 5E 58 9D 5A 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5D 59 9D 5D 58 5B 5E 5A 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5D 58 5A 5B 5D 9D 5F 5E 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5B 9D 5E 5A 5E 59 5F 5D 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5A 5E 5D 9D 5B 58 5F 59 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5A 5B 59 5D 5E 58 5F 9D 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5A 5B 58 9D 5E 5F 5D 59 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5B 5D 58 9D 59 5F 5E 59 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5A 9D 5E 5D 58 5F 5B 59 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5A 9D 5E 5B 5F 5B 58 5D 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 98 83 ED 04 8D 76 02 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 83 ED 02 66 89 45 00 83 EE FE E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 83 ED 02 66 89 45 00 83 C6 02 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 83 C6 02 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 8D 76 02 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 83 EE FE 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 83 ED 02 66 89 45 00 8D 76 02 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 83 EE FE 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 83 ED 02 66 89 45 00 83 EE FE E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 98 8D 76 02 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 98 83 C6 02 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 8D 76 02 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5E 58 5D 5A 5A 5F 5B 9D 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5E 58 59 5B 59 5A 5D 9D 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5D 59 5E 5A 58 5B 5F 59 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5B 5D 5F 5E 9D 58 5A 59 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 59 5D 5F 5B 5E 9D 58 5A 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5B 59 5D 9D 5E 5F 5A 5D 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5A 5E 5D 5B 9D 59 58 58 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5F 5E 9D 5F 59 5A 5D 58 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5F 9D 5B 59 5E 5B 5D 58 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5B 58 5D 5E 5F 9D 5A 59 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 58 9D 5F 5D 5E 5B 59 5A 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 9D 5A 5F 58 5B 59 5B 5D 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 59 58 5A 5F 5B 5E 5D 5D 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 58 5F 5E 59 5E 5D 5B 5A 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 58 5A 9D 5D 59 5B 59 5E 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5F 58 5B 5F 5A 59 5D 9D 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5D 5E 9D 58 5B 5F 59 58 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 59 5D 58 59 9D 5E 5A 5B 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5A 9D 5E 59 5D 5D 58 5B 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 58 5A 5D 5B 9D 59 5F 5F 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 9D 5D 59 5F 5E 58 58 5A 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5D 5E 5F 58 5B 5A 5A 59 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5B 5F 5A 59 58 5D 9D 5E 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5E 5A 5F 59 5B 5D 58 5B 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 58 5F 5E 5E 5A 5D 5B 59 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 58 59 5E 5F 5D 5B 5A 5A 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 9D 59 5A 5B 58 5B 5F 5E 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 59 59 58 5B 5E 5F 5A 9D 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5E 5E 5A 58 5D 9D 59 5F 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 59 5B 5F 5E 58 9D 5D 5A 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 59 5A 5B 5E 58 5D 5F 9D 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5B 5E 9D 58 5D 5F 5A 5D 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 59 5B 5E 5A 5F 58 5D 9D 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5D 5F 5A 5B 5E 58 9D 59 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5A 5F 58 59 5B 5D 5E 9D 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5E 5B 59 5D 5F 9D 5A 58 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5B 5A 5F 5E 5D 58 58 59 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5A 58 5B 5E 59 5D 9D 5F 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 9D 59 5D 5B 5F 58 5E 5A 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5B 9D 5A 5F 59 58 5D 5E 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5F 5A 5B 5E 5D 5B 9D 59 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5B 9D 58 5F 5E 59 5D 5D 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5F 5D 58 59 9D 5E 5B 5A 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5E 5D 5A 5F 59 58 9D 5B 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 5D 5D 58 5F 59 5B 9D 5E 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5A 59 5F 59 58 9D 5E 5D 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 98 83 ED 04 83 C6 01 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 98 83 ED 04 46 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 98 83 C6 01 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 98 83 ED 04 89 45 00 8D 76 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 98 83 ED 04 89 45 00 83 C6 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 98 83 ED 04 83 EE FF 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 EE FF 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 EE FF 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C6 01 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 83 EE FF 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 83 C6 01 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 8D 76 01 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 98 83 ED 04 8D 76 01 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 EE FF 66 8B 55 00 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 ED 02 83 EE FF 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 ED 02 66 89 45 00 8D 76 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8A 04 07 46 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 EE FF 66 98 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 EE FF 66 8B 55 00 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 C6 01 66 8B 55 00 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 C6 01 66 8B 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 98 83 EE FF 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 ED 02 66 89 45 00 83 EE FF E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 C6 01 8A 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 C6 01 66 8B 55 00 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 8D 76 01 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5E 9D 5F 5D 5B 58 5D 59 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5E 9D 5D 5B 59 5A 58 5F 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5E 5F 58 59 9D 5F 5B 5D 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 9D 5D 59 58 5F 5A 5E 5B 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5F 9D 58 5B 5D 5A 5A 5E 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5F 5A 58 5E 5D 5B 9D 59 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5E 59 58 5F 5B 5D 5D 5A 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5E 58 5F 5D 5A 59 9D 5A 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5D 5B 58 5A 59 5F 9D 5E 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5E 5D 5B 5A 9D 58 5A 59 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5E 5D 58 59 58 9D 5A 5B 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5E 5A 59 9D 5F 5D 5B 58 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 9D 5D 5E 59 5B 58 5B 5F 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 66 89 14 07 8D 76 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 04 07 8D 76 01 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 04 07 83 ED 02 8D 76 01 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 88 14 07 8D 76 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 83 EE FF 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 83 C6 01 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 46 66 8B 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 9D 5F 59 5D 5A 5B 5B 5E 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 9D 5F 58 5E 5A 5B 59 5D 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 04 07 83 ED 02 66 89 45 00 8D 76 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 04 07 83 ED 02 66 89 45 00 83 C6 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 04 07 83 C6 01 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5B 5D 5E 59 5F 58 9D 58 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5A 9D 5B 59 5D 5F 58 5E 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8D 76 01 66 98 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8D 76 01 66 8B 55 00 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8D 76 01 66 8B 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 06 83 ED 04 89 45 00 8D 76 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8D 76 01 8A 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8D 76 01 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8A 04 07 83 ED 02 66 89 45 00 83 EE FF E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8A 04 07 83 ED 02 66 89 45 00 83 C6 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8A 04 07 83 C6 01 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8A 04 07 8D 76 01 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8A 04 07 83 ED 02 83 EE FF 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8A 04 07 83 ED 02 83 C6 01 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 06 83 ED 04 8D 76 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 88 14 07 46 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 83 EE FF 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 83 C6 01 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 8D 76 01 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 88 14 07 83 EE FF E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 88 14 07 83 C6 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 46 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 46 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 46 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 66 89 14 07 83 EE FF E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 66 89 14 07 83 C6 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C5 02 66 89 14 07 46 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 83 C6 01 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 C6 01 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 C6 01 66 98 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 98 8D 76 01 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 ED 02 66 89 45 00 83 C6 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 ED 02 66 89 45 00 46 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 ED 02 46 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 8D 76 01 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 46 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 8D 76 01 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 98 83 ED 04 89 45 00 83 EE FF E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 98 83 ED 04 89 45 00 46 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 98 98 46 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 55 00 46 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5A 5F 5D 9D 58 59 59 5B 5E C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5A 5B 5F 5E 9D 58 5D 59 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 5A 59 5F 58 5E 9D 5D 5F 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5E 59 5A 5B 9D 5F 58 58 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5D 9D 59 5F 5D 58 5E 5A 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5D 5B 59 5F 5E 9D 5D 5A 58 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 59 5B 58 5A 5B 5F 5E 9D 5D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5D 5E 9D 5F 5B 5A 5B 58 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5D 5E 5B 5F 58 5E 59 5A 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 58 5E 5F 5D 5A 58 5B 9D 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A 58 59 5E 5D 5F 5B 9D 5A 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 9D 5B 5D 5A 5F 59 5E 58 59 C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B 5F 5F 5B 58 59 5D 5A 5E 9D C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 04 07 83 ED 02 66 89 45 00 83 EE FF E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 04 07 83 ED 02 66 89 45 00 46 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 04 07 83 ED 02 46 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 04 07 83 EE FF 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 04 07 83 ED 02 83 EE FF 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 04 07 83 ED 02 83 C6 01 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 46 66 98 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 46 66 8B 55 00 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 46 66 8B 55 00 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 66 8B 04 07 46 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 46 8A 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 46 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 8B 55 04 83 C5 08 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 8B 55 04 83 C5 08 36 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 55 00 83 C5 02 36 8A 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 8B 55 04 F7 D0 F7 D2 21 D0 89 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 8A 4D 04 83 ED 02 D3 E8 89 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 8A 4D 04 83 ED 02 D3 E0 89 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 83 C5 02 66 8B 00 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 8A 55 04 83 C5 06 88 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 8A 55 04 83 C5 06 36 88 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 55 00 83 C5 02 8A 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 04 07 83 ED 02 66 89 45 00 8D 76 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 04 07 83 C6 01 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? F7 55 00 66 8B 45 00 83 ED 02 66 21 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 04 07 83 ED 02 8D 76 01 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 04 07 83 ED 02 83 EE FF 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 04 07 83 ED 02 83 C6 01 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 83 C5 02 66 36 8B 00 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8A 04 07 83 ED 02 8D 76 01 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8A 04 07 83 ED 02 66 89 45 00 8D 76 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8A 04 07 83 ED 02 66 89 45 00 46 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 45 00 83 ED 02 00 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8D 76 01 66 8B 55 00 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8A 04 07 83 EE FF 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 EE FF 66 8B 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 ED 02 8D 76 01 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 ED 02 83 C6 01 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 8A 04 07 83 ED 02 46 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 EE FF 8A 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 06 83 EE FF 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 45 00 8A 4D 02 83 ED 02 D2 E0 66 89 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 01 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 06 8D 76 04 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 06 83 EE FC 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 66 8B 55 04 83 C5 06 66 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 66 8B 55 04 83 C5 06 66 36 89 10 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 06 83 ED 04 83 C6 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 06 83 C6 04 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8A 45 00 8A 4D 02 83 ED 02 D2 E8 66 89 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 06 83 ED 04 89 45 00 83 EE FC E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 06 83 ED 04 89 45 00 83 C6 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 06 83 ED 04 83 EE FC 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 5A 58 5E 5D 5B 5B 9D 59 5F C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8A 04 07 83 ED 02 66 89 45 00 8D 76 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8A 04 07 83 ED 02 66 89 45 00 46 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8A 04 07 83 ED 02 46 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8A 04 07 83 EE FF 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8A 04 07 83 ED 02 8D 76 01 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8A 04 07 83 ED 02 83 C6 01 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 ED 02 66 89 45 00 46 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 ED 02 46 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 C6 01 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 EE FF 66 8B 55 00 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 ED 02 8D 76 01 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 ED 02 83 EE FF 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8D 76 01 66 8B 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8D 76 01 8A 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8D 76 01 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 C6 01 66 8B 55 00 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 04 07 83 ED 02 46 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 04 07 46 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 46 8A 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 04 07 83 ED 02 66 89 45 00 83 EE FF E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 04 07 83 ED 02 66 89 45 00 83 C6 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 04 07 83 ED 02 66 89 45 00 46 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 46 66 8B 55 00 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 46 66 8B 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 8B 45 00 83 C5 02 66 8B 00 66 89 45 00 E9 A5 06 00 00 8B 45 00 66 8B 55 04 83 C5 06 66 89 10 E9 ep_only = false [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 46 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 46 66 98 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 46 66 8B 55 00 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 04 07 8D 76 01 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 EE FF 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 88 14 07 83 C6 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 88 14 07 46 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 98 83 ED 04 89 45 00 46 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 98 83 ED 04 46 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 98 83 C6 01 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 46 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 46 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 46 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 83 C6 01 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 66 89 14 07 83 C6 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 66 89 14 07 46 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 98 83 ED 04 83 EE FE 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 98 83 ED 04 83 C6 02 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 98 83 C6 02 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 98 83 ED 04 89 45 00 8D 76 02 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 98 83 ED 04 89 45 00 83 EE FE E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 98 83 ED 04 89 45 00 83 C6 02 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 83 ED 02 83 EE FE 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 83 ED 02 83 C6 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 83 C6 02 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 8D 76 02 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 83 EE FE 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 83 ED 02 8D 76 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 98 83 EE FE 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 80 E0 3C 8B 55 00 83 C5 04 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 80 E0 3C 8B 14 07 83 ED 04 89 55 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 59 5F 58 5A 9D 5D 5E 5E 5B C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 59 5E 5B 5F 5B 9D 58 5D 5A C3 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 45 00 83 ED 02 66 01 45 04 9C 8F 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 98 8D 76 02 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 98 83 EE FE 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 83 C6 02 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 83 C6 02 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 83 ED 02 66 89 45 00 83 C6 02 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 98 83 ED 04 89 45 00 83 C6 02 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 98 83 ED 04 83 EE FE 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 98 83 ED 04 83 C6 02 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 98 83 ED 04 8D 76 02 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 98 83 ED 04 89 45 00 8D 76 02 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 98 83 ED 04 89 45 00 83 EE FE E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 83 ED 02 83 EE FE 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 83 ED 02 83 C6 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 83 ED 02 66 89 45 00 8D 76 02 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 8D 76 02 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 83 EE FE 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 83 ED 02 8D 76 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 ED 02 66 89 45 00 83 EE FF E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 ED 02 66 89 45 00 83 C6 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 C6 01 8A 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 EE FF 66 8B 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 ED 02 83 C6 01 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 ED 02 66 89 45 00 8D 76 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 98 8D 76 01 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 98 83 EE FF 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 98 83 ED 04 8D 76 01 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 C6 01 66 98 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 C6 01 66 8B 55 00 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 C6 01 66 8B 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 EE FF 66 8B 55 00 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8A 04 07 8D 76 01 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8A 04 07 83 ED 02 83 EE FF 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8A 04 07 83 ED 02 66 89 45 00 83 EE FF E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8D 76 01 66 98 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8D 76 01 66 8B 55 00 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8D 76 01 66 8B 55 00 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 EE FF 8A 04 07 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 EE FF 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 83 EE FF 66 98 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8A 04 07 83 ED 02 66 89 45 00 83 C6 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8A 04 07 83 C6 01 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 8A 04 07 46 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 98 83 ED 04 89 45 00 8D 76 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 88 14 07 8D 76 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 88 14 07 83 EE FF E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 83 EE FF 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C6 01 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 8D 76 01 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 8D 76 01 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 66 89 14 07 83 EE FF E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 46 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 04 07 83 EE FF 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 83 EE FF 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 83 C6 01 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C5 02 66 89 14 07 8D 76 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 C6 01 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 98 83 ED 04 83 C6 01 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 98 46 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 8D 76 01 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 98 83 ED 04 89 45 00 83 EE FF E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 98 83 ED 04 89 45 00 83 C6 01 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 98 83 ED 04 83 EE FF 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 8D 76 01 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 8D 76 01 83 C5 02 66 89 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 8B 55 00 83 EE FF 83 C5 02 88 14 07 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 83 EE FF 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 83 C6 01 98 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 66 98 46 98 83 ED 04 89 45 00 E9 ep_only = true [.BJFnt v1.3] signature = EB ?? 3A ?? ?? 1E EB ?? CD 20 9C EB ?? CD 20 EB ?? CD 20 60 EB ep_only = true [624 (Six to Four) v1.0] signature = 50 55 4C 50 83 ?? ?? FC BF ?? ?? BE ?? ?? B5 ?? 57 F3 A5 C3 33 ED ep_only = true [Ady`s Glue v0.10] signature = 2E 8C 06 ?? ?? 0E 07 33 C0 8E D8 BE ?? ?? BF ?? ?? FC B9 ?? ?? 56 F3 A5 1E 07 5F ep_only = true [AHPack 0.1 -> FEUERRADER] signature = 60 68 54 ?? ?? 00 B8 48 ?? ?? 00 FF 10 68 B3 ?? ?? 00 50 B8 44 ?? ?? 00 FF 10 68 00 ep_only = true [Alex Protector v1.0 -> Alex] signature = 60 E8 00 00 00 00 5D 81 ED 06 10 40 00 E8 24 00 00 00 EB 01 E9 8B ep_only = true [Alloy v1.x.2000] signature = 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 07 20 40 ?? 87 DD 6A 04 68 ?? 10 ?? ?? 68 ?? 02 ?? ?? 6A ?? FF 95 46 23 40 ?? 0B ep_only = true [Anticrack Software Protector v1.09 (ACProtect)] signature = 60 ?? ?? ?? ?? ?? ?? ?? ?? ?? E8 01 00 00 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 00 ?? ?? ?? 04 ?? ?? ?? ?? ?? ?? 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 01 ep_only = true [aPack v0.82] signature = 1E 06 8C CB BA ?? ?? 03 DA 8D ?? ?? ?? FC 33 F6 33 FF 48 4B 8E C0 8E DB ep_only = true [Armadillo v2.50b3] signature = 55 8B EC 6A FF 68 B8 ?? ?? ?? 68 F8 ?? ?? ?? 64 A1 ?? ?? ?? ?? 50 64 89 25 ?? ?? ?? ?? 83 EC 58 53 56 57 89 65 E8 FF 15 20 ?? ?? ?? 33 D2 8A D4 89 15 D0 ep_only = true [Armadillo v2.52] signature = 55 8B EC 6A FF 68 ?? ?? ?? ?? E0 ?? ?? ?? ?? 68 D4 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 53 56 57 89 65 E8 FF ?? ?? ?? 15 38 ep_only = true [Armadillo v2.52 beta2] signature = 55 8B EC 6A FF 68 ?? ?? ?? ?? B0 ?? ?? ?? ?? 68 60 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 53 56 57 89 65 E8 FF ?? ?? ?? 15 24 ep_only = true [Armadillo v2.53] signature = 55 8B EC 6A FF 68 40 ?? ?? ?? 68 54 ?? ?? ?? 64 A1 ?? ?? ?? ?? 50 64 89 25 ?? ?? ?? ?? 83 EC 58 53 56 57 89 65 E8 FF 15 58 ?? ?? ?? 33 D2 8A D4 89 15 EC ep_only = true [Armadillo v2.60] signature = 55 8B EC 6A FF 68 D0 ?? ?? ?? 68 34 ?? ?? ?? 64 A1 ?? ?? ?? ?? 50 64 89 25 ?? ?? ?? ?? 83 EC 58 53 56 57 89 65 E8 FF 15 68 ?? ?? ?? 33 D2 8A D4 89 15 84 ep_only = true [Armadillo v2.60a] signature = 55 8B EC 6A FF 68 ?? ?? ?? ?? 68 94 ?? ?? ?? 64 A1 ?? ?? ?? ?? 50 64 89 25 ?? ?? ?? ?? 83 EC 58 53 56 57 89 65 E8 FF 15 6C ?? ?? ?? 33 D2 8A D4 89 15 B4 ep_only = true [Armadillo v2.60b1] signature = 55 8B EC 6A FF 68 50 ?? ?? ?? 68 74 ?? ?? ?? 64 A1 ?? ?? ?? ?? 50 64 89 25 ?? ?? ?? ?? 83 EC 58 53 56 57 89 65 E8 FF 15 58 ?? ?? ?? 33 D2 8A D4 89 15 FC ep_only = true [Armadillo v2.60b2] signature = 55 8B EC 6A FF 68 90 ?? ?? ?? 68 24 ?? ?? ?? 64 A1 ?? ?? ?? ?? 50 64 89 25 ?? ?? ?? ?? 83 EC 58 53 56 57 89 65 E8 FF 15 60 ?? ?? ?? 33 D2 8A D4 89 15 3C ep_only = true [Armadillo v2.60c] signature = 55 8B EC 6A FF 68 40 ?? ?? ?? 68 F4 ?? ?? ?? 64 A1 ?? ?? ?? ?? 50 64 89 25 ?? ?? ?? ?? 83 EC 58 53 56 57 89 65 E8 FF 15 6C ?? ?? ?? 33 D2 8A D4 89 15 F4 ep_only = true [Armadillo v2.61] signature = 55 8B EC 6A FF 68 28 ?? ?? ?? 68 E4 ?? ?? ?? 64 A1 ?? ?? ?? ?? 50 64 89 25 ?? ?? ?? ?? 83 EC 58 53 56 57 89 65 E8 FF 15 6C ?? ?? ?? 33 D2 8A D4 89 15 0C ep_only = true [Armadillo v2.65b1] signature = 55 8B EC 6A FF 68 38 ?? ?? ?? 68 40 ?? ?? ?? 64 A1 ?? ?? ?? ?? 50 64 89 25 ?? ?? ?? ?? 83 EC 58 53 56 57 89 65 E8 FF 15 28 ?? ?? ?? 33 D2 8A D4 89 15 F4 ep_only = true [Armadillo v2.75a] signature = 55 8B EC 6A FF 68 68 ?? ?? ?? 68 D0 ?? ?? ?? 64 A1 ?? ?? ?? ?? 50 64 89 25 ?? ?? ?? ?? 83 EC 58 53 56 57 89 65 E8 FF 15 28 ?? ?? ?? 33 D2 8A D4 89 15 24 ep_only = true [Armadillo v2.85] signature = 55 8B EC 6A FF 68 68 ?? ?? ?? 68 ?? ?? ?? ?? 64 A1 ?? ?? ?? ?? 50 64 89 25 ?? ?? ?? ?? 83 EC 58 53 56 57 89 65 E8 FF 15 28 ?? ?? ?? 33 D2 8A D4 89 15 24 ep_only = true [Armadillo v2.xx (CopyMem II)] signature = 6A ?? 8B B5 ?? ?? ?? ?? C1 E6 04 8B 85 ?? ?? ?? ?? 25 07 ?? ?? 80 79 05 48 83 C8 F8 40 33 C9 8A 88 ?? ?? ?? ?? 8B 95 ?? ?? ?? ?? 81 E2 07 ?? ?? 80 79 05 4A 83 CA F8 42 33 C0 8A 82 ep_only = true [ASPack v1.08.03] signature = 60 E8 00 00 00 00 5D ?? ?? ?? ?? ?? ?? BB ?? ?? ?? ?? 03 DD 2B 9D B1 50 44 00 83 BD AC 50 44 00 00 89 9D BB 4E ep_only = true [ASPack v1.08.x] signature = 60 EB 03 5D FF E5 E8 F8 FF FF FF 81 ED 1B 6A 44 00 BB 10 6A 44 00 03 DD 2B 9D 2A ep_only = true [ASPack v2.11b] signature = 60 E8 02 00 00 00 EB 09 5D 55 81 ED 39 39 44 00 C3 E9 3D 04 00 00 ep_only = true [ASPack v2.11c] signature = 60 E8 02 00 00 00 EB 09 5D 55 81 ED 39 39 44 00 C3 E9 59 04 00 00 ep_only = true [ASPack v2.12] signature = 60 E8 03 00 00 00 E9 EB 04 5D 45 55 C3 E8 01 00 00 00 EB 5D BB ED FF FF FF 03 DD 81 EB ep_only = true [ASProtect v1.2 -> Alexey Solodovnikov (h1)] signature = 90 60 E8 1B 00 00 00 E9 FC 8D B5 0F 06 00 00 8B FE B9 97 00 00 00 AD 35 78 56 34 12 AB 49 75 F6 EB 04 5D 45 55 C3 E9 ?? ?? ?? 00 ep_only = false [ASProtect V2.X DLL -> Alexey Solodovnikov] signature = 60 E8 03 00 00 00 E9 ?? ?? 5D 45 55 C3 E8 01 00 00 00 EB 5D BB ?? ?? ?? ?? 03 DD ep_only = true [AVPACK v1.20] signature = 50 1E 0E 1F 16 07 33 F6 8B FE B9 ?? ?? FC F3 A5 06 BB ?? ?? 53 CB ep_only = true [BamBam v0.01] signature = 6A 14 E8 9A 05 00 00 8B D8 53 68 FB ?? ?? 00 E8 6C FD FF FF B9 05 00 00 00 8B F3 BF FB ?? ?? 00 53 F3 A5 E8 8D 05 00 00 8B 3D 03 ?? ?? 00 A1 2B ?? ?? 00 66 8B 15 2F ?? ?? 00 B9 80 ?? ?? 00 2B CF 89 45 E8 89 0D 6B ?? ?? 00 66 89 55 EC 8B 41 3C 33 D2 03 C1 ep_only = false [BeRoEXEPacker v1.00 (DLL) -> BeRo / Farbrausch] signature = 83 7C 24 08 01 0F 85 ?? ?? ?? ?? 60 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? BE ?? ?? ?? ?? B9 ?? ?? ?? ?? 8B F9 81 FE ?? ?? ?? ?? 7F 10 AC 47 04 18 2C 02 73 F0 29 3E 03 F1 03 F9 EB E8 BA ?? ?? ?? ?? 8D B2 ep_only = true [BeRoEXEPacker v1.00 (DLL) -> BeRo / Farbrausch] signature = 83 7C 24 08 01 0F 85 ?? ?? ?? ?? 60 BE ?? ?? ?? ?? BF ?? ?? ?? ?? FC B2 80 33 DB A4 B3 02 E8 ?? ?? ?? ?? 73 F6 33 C9 E8 ?? ?? ?? ?? 73 1C 33 C0 E8 ?? ?? ?? ?? 73 23 B3 02 41 B0 10 ep_only = true [BeRoEXEPacker v1.00 (DLL) -> BeRo / Farbrausch] signature = 83 7C 24 08 01 0F 85 ?? ?? ?? ?? 60 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? BE ?? ?? ?? ?? B9 ?? ?? ?? ?? 8B F9 81 FE ?? ?? ?? ?? 7F 10 AC 47 04 18 2C 02 73 F0 29 3E 03 F1 03 F9 EB E8 ep_only = true [BeRoEXEPacker v1.00 (DLL) -> BeRo / Farbrausch] signature = 83 7C 24 08 01 0F 85 ?? ?? ?? ?? 60 BE ?? ?? ?? ?? BF ?? ?? ?? ?? FC B2 80 33 DB A4 B3 02 E8 ?? ?? ?? ?? 73 F6 33 C9 E8 ?? ?? ?? ?? 73 1C 33 C0 E8 ?? ?? ?? ?? 73 23 B3 02 41 B0 10 ep_only = true [BeRoEXEPacker V1.00 -> BeRo] signature = BA ?? ?? ?? ?? 8D B2 ?? ?? ?? ?? 8B 46 ?? 85 C0 74 51 03 C2 8B 7E ?? 8B 1E 85 DB 75 02 8B DF 03 DA 03 FA 52 57 50 FF 15 ?? ?? ?? ?? 5F 5A 85 C0 74 2F 8B C8 8B 03 85 C0 74 22 0F BA F0 1F 72 04 8D 44 ?? ?? 51 52 57 50 51 FF 15 ?? ?? ?? ?? 5F 5A 59 85 C0 74 0B AB 83 C3 04 EB D8 83 C6 14 EB AA 61 C3 ep_only = false [BeRoEXEPacker v1.00 -> BeRo / Farbrausch] signature = 60 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? BE ?? ?? ?? ?? B9 04 00 00 00 8B F9 81 FE ?? ?? ?? ?? 7F 10 AC 47 04 18 2C 02 73 F0 29 3E 03 F1 03 F9 EB E8 BA ?? ?? ?? ?? 8D B2 ep_only = true [BeRoEXEPacker v1.00 -> BeRo / Farbrausch] signature = 60 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? BE ?? ?? ?? ?? B9 04 00 00 00 8B F9 81 FE ?? ?? ?? ?? 7F 10 AC 47 04 18 2C 02 73 F0 29 3E 03 F1 03 F9 EB E8 ep_only = true [BeRoEXEPacker v1.00 DLL [LZMA] -> BeRo / Farbrausch] signature = 83 7C 24 08 01 0F 85 ?? ?? ?? ?? 60 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? BE ?? ?? ?? ?? B9 ?? ?? ?? ?? 8B F9 81 FE ?? ?? ?? ?? 7F 10 AC 47 04 18 2C 02 73 F0 29 3E 03 F1 03 F9 EB E8 ep_only = true [BeRoEXEPacker v1.00 [LZMA] -> BeRo / Farbrausch] signature = 60 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? BE ?? ?? ?? ?? B9 04 00 00 00 8B F9 81 FE ?? ?? ?? ?? 7F 10 AC 47 04 18 2C 02 73 F0 29 3E 03 F1 03 F9 EB E8 ep_only = true [CA Visual Objects 2.0 - 2.5] signature = 89 25 ?? ?? ?? ?? 33 ED 55 8B EC E8 ?? ?? ?? ?? 8B D0 81 E2 FF 00 00 00 89 15 ?? ?? ?? ?? 8B D0 C1 EA 08 81 E2 FF 00 00 00 A3 ?? ?? ?? ?? D1 E0 0F 93 C3 33 C0 8A C3 A3 ?? ?? ?? ?? 68 FF 00 00 00 E8 ?? ?? ?? ?? 6A 00 E8 ?? ?? ?? ?? A3 ?? ?? ?? ?? BB ep_only = true [CAN2EXE v0.01] signature = 26 8E 06 ?? ?? B9 ?? ?? 33 C0 8B F8 F2 AE E3 ?? 26 38 05 75 ?? EB ?? E9 ep_only = true [ChinaProtect -> dummy * Sign.By.fly] signature = C3 E8 ?? ?? ?? ?? B9 ?? ?? ?? ?? E8 ?? ?? ?? ?? FF 30 C3 B9 ?? ?? ?? ?? E8 ?? ?? ?? ?? FF 30 C3 B9 ?? ?? ?? ?? E8 ?? ?? ?? ?? FF 30 C3 B9 ?? ?? ?? ?? E8 ?? ?? ?? ?? FF 30 C3 56 8B ?? ?? ?? 6A 40 68 00 10 00 00 8D ?? ?? 50 6A 00 E8 ?? ?? ?? ?? 89 30 83 C0 04 5E C3 8B 44 ?? ?? 56 8D ?? ?? 68 00 40 00 00 FF 36 56 E8 ?? ?? ?? ?? 68 00 80 00 00 6A 00 56 E8 ?? ?? ?? ?? 5E C3 ep_only = false [CodeCrypt v0.164] signature = E9 2E 03 00 00 EB 02 83 3D 58 EB 02 FF 1D 5B EB 02 0F C7 5F EB 03 FF 1D 34 ep_only = true [COMPACK v4.5 (2)] signature = BE ?? ?? E8 ?? ?? 5D 83 ?? ?? 55 50 53 51 52 0E 07 0E 1F 8B CE ep_only = true [COMPACK v5.1] signature = BD ?? ?? 50 06 8C CB 03 DD 8C D2 4B 8E DB BE ?? ?? BF ?? ?? 8E C2 B9 ?? ?? F3 A5 4A 4D 75 ?? 8B F7 8E DA 0E 07 06 16 ep_only = true [CopyControl v3.03] signature = CC 90 90 EB 0B 01 50 51 52 53 54 61 33 61 2D 35 CA D1 07 52 D1 A1 3C ep_only = true [Cracked by AutoHack (1)] signature = FA 50 51 57 56 1E 06 2E 80 3E ?? ?? ?? 74 ?? 8E 06 ?? ?? 2B FF FC ep_only = true [Cracked by Autohack (2)] signature = 0E 1F B4 09 BA ?? ?? CD 21 FA 8E 06 ?? ?? BE ?? ?? 8B 0E ?? ?? 83 F9 ep_only = true [Crunch/PE] signature = 55 E8 ?? ?? ?? ?? 5D 83 ED 06 8B C5 55 60 89 AD ?? ?? ?? ?? 2B 85 ep_only = true [Crunch/PE v2.0.x.x] signature = 55 E8 ?? ?? ?? ?? 5D 83 ED 06 8B C5 55 60 89 AD ?? ?? ?? ?? 2B 85 ?? ?? ?? ?? 89 85 ?? ?? ?? ?? 55 BB ?? ?? ?? ?? 03 DD 53 64 67 FF 36 ?? ?? 64 67 89 26 ep_only = true [Crunch/PE v4.0] signature = EB 10 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 55 E8 ?? ?? ?? ?? 5D 81 ED 18 ?? ?? ?? 8B C5 55 60 9C 2B 85 E9 06 ?? ?? 89 85 E1 06 ?? ?? FF 74 24 2C E8 BB 01 00 00 0F 82 92 05 00 00 E8 F1 03 00 00 49 0F 88 86 05 00 00 68 6C D9 B2 96 33 C0 50 E8 24 ep_only = false [Crypto-Lock v2.02 (Eng) -> Ryan Thian] signature = 60 BE 15 90 40 00 8D BE EB 7F FF FF 57 83 CD FF EB 10 90 90 90 90 90 90 8A 06 46 88 07 47 ep_only = true [DAEMON Protect v0.6.7] signature = 60 60 9C 8C C9 32 C9 E3 0C 52 0F 01 4C 24 FE 5A 83 C2 0C 8B 1A 9D 61 ep_only = true [DBPE v1.53] signature = 9C 55 57 56 52 51 53 9C FA E8 ?? ?? ?? ?? 5D 81 ED 5B 53 40 ?? B0 ?? E8 ?? ?? ?? ?? 5E 83 C6 11 B9 27 ?? ?? ?? 30 06 46 49 75 FA ep_only = true [DBPE v2.10] signature = EB 20 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 9C 55 57 56 52 51 53 9C E8 ?? ?? ?? ?? 5D 81 ED ?? ?? ?? ?? EB 58 75 73 65 72 33 32 2E 64 6C 6C ?? 4D 65 73 73 61 67 65 42 6F 78 41 ?? 6B 65 72 6E 65 6C ep_only = true [DBPE v2.33] signature = EB 20 ?? ?? 40 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 9C 55 57 56 52 51 53 9C E8 ?? ?? ?? ?? 5D 81 ED ?? ?? ?? ?? 9C 6A 10 73 0B EB 02 C1 51 E8 06 ?? ?? ?? C4 11 73 F7 5B CD 83 C4 04 EB 02 99 EB FF 0C 24 71 ep_only = true [DEF v1.0] signature = BE ?? 01 40 00 6A ?? 59 80 7E 07 00 74 11 8B 46 0C 05 00 00 40 00 8B 56 10 30 10 40 4A 75 FA 83 C6 28 E2 E4 68 ?? 10 40 00 C3 ep_only = false [DIET v1.00, v1.00d] signature = BF ?? ?? 3B FC 72 ?? B4 4C CD 21 BE ?? ?? B9 ?? ?? FD F3 A5 FC ep_only = true [DIET v1.02b, v1.10a, v1.20] signature = BE ?? ?? BF ?? ?? B9 ?? ?? 3B FC 72 ?? B4 4C CD 21 FD F3 A5 FC ep_only = true [Ding Boy's PE-lock Phantasm v1.5b3] signature = 9C 55 57 56 52 51 53 9C FA E8 00 00 00 00 5D 81 ED 5B 53 40 00 B0 ep_only = true [DOS32 v.3.3 DOS-Extender and Loader] signature = 0E 1F FC 9C 5B 8B C3 80 F4 ?? 50 9D 9C 58 3A E7 75 ?? BA ?? ?? B4 09 CD 21 B4 4C CD 21 ep_only = true [Dropper Creator V0.1 -> Conflict] signature = 60 E8 00 00 00 00 5D 8D 05 ?? ?? ?? ?? 29 C5 8D 85 ?? ?? ?? ?? 31 C0 64 03 40 30 78 0C 8B 40 0C 8B 70 1C AD 8B 40 08 EB 09 ep_only = false [dUP v2.x Patcher --> www.diablo2oo2.cjb.net] signature = 54 68 69 73 20 70 72 6F 67 72 61 6D 20 63 61 6E 6E 6F 74 20 62 65 20 72 75 6E 20 69 6E 20 44 4F 53 20 6D 6F ep_only = false [dUP2 -> diablo2oo2] signature = E8 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B F0 6A 00 68 ?? ?? ?? ?? 56 E8 ?? ?? ?? ?? A2 ?? ?? ?? ?? 6A 00 68 ?? ?? ?? ?? 56 E8 ?? ?? ?? ?? A2 ?? ?? ?? ?? 6A 00 68 ?? ?? ?? ?? 56 E8 ?? ?? ?? ?? A2 ?? ?? ?? ?? 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 56 E8 ?? ?? ?? ?? 3C 01 75 19 BE ?? ?? ?? ?? 68 00 02 00 00 56 68 ep_only = true [EEXE Version 1.12] signature = B4 30 CD 21 3C 03 73 ?? BA 1F 00 0E 1F B4 09 CD 21 B8 FF 4C CD 21 ep_only = true [ENIGMA Protector V1.12-> Sukhov Vladimir] signature = 60 E8 00 00 00 00 5D 83 C5 FA 81 ED ?? ?? ?? 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? E8 01 00 00 00 9A 83 C4 04 EB 02 FF 35 60 E8 24 00 00 00 00 00 FF EB 02 CD 20 8B 44 24 0C 83 80 B8 00 00 00 03 31 ep_only = true [Exact Audio Copy] signature = E8 ?? ?? ?? 00 31 ED 55 89 E5 81 EC ?? 00 00 00 8D BD ?? FF FF FF B9 ?? 00 00 00 ep_only = true [EXE Packer v7.0 by TurboPower Software] signature = 1E 06 8C C3 83 ?? ?? 2E ?? ?? ?? ?? B9 ?? ?? 8C C8 8E D8 8B F1 4E 8B FE ep_only = true [EXE Stealth v1.1] signature = 60 E8 00 00 00 00 5D 81 ED FB 1D 40 00 B9 7B 09 00 00 8B F7 AC ep_only = true [EXE2COM (regular)] signature = E9 8C CA 81 C3 ?? ?? 3B 16 ?? ?? 76 ?? BA ?? ?? B4 09 CD 21 CD 20 0D ep_only = true [EXE2COM (With CRC check)] signature = B3 ?? B9 ?? ?? 33 D2 BE ?? ?? 8B FE AC 32 C3 AA 43 49 32 E4 03 D0 E3 ep_only = true [EXE32Pack v1.36] signature = 3B C0 74 02 81 83 55 3B C0 74 02 81 83 53 3B C9 74 01 BC ?? ?? ?? ?? 02 81 ?? ?? ?? ?? ?? ?? ?? 3B DB 74 01 BE 5D 8B D5 81 ED CC 8D 40 ep_only = true [EXE32Pack v1.37] signature = 3B C0 74 02 81 83 55 3B C0 74 02 81 83 53 3B C9 74 01 BC ?? ?? ?? ?? 02 81 ?? ?? ?? ?? ?? ?? ?? 3B DB 74 01 BE 5D 8B D5 81 ED 4C 8E 40 ep_only = true [EXE32Pack v1.38] signature = 3B C0 74 02 81 83 55 3B C0 74 02 81 83 53 3B C9 74 01 BC ?? ?? ?? ?? 02 81 ?? ?? ?? ?? ?? ?? ?? 3B DB 74 01 BE 5D 8B D5 81 ED DC 8D 40 ep_only = true [EXE32Pack v1.39] signature = 3B C0 74 02 81 83 55 3B C0 74 02 81 83 53 3B C9 74 01 BC ?? ?? ?? ?? 02 81 ?? ?? ?? ?? ?? ?? ?? 3B DB 74 01 BE 5D 8B D5 81 ED EC 8D 40 ep_only = true [EXECryptor 2.1.17 -> Strongbit/SoftComplete Development (h)] signature = BE ?? ?? ?? ?? B8 00 00 ?? ?? 89 45 FC 89 C2 8B 46 0C 09 C0 0F 84 ?? 00 00 00 01 D0 89 C3 50 FF 15 94 ?? ?? ?? 09 C0 0F 85 0F 00 00 00 53 FF 15 98 ?? ?? ?? 09 C0 0F 84 ?? 00 00 00 89 45 F8 6A 00 8F 45 F4 8B 06 09 C0 8B 55 FC 0F 85 03 00 00 00 8B 46 10 01 ep_only = false [EXECryptor 2.2.4 -> Strongbit/SoftComplete Development (h2)] signature = E8 F7 FE FF FF 05 ?? ?? 00 00 FF E0 E8 EB FE FF FF 05 ?? ?? 00 00 FF E0 E8 ?? 00 00 00 ep_only = true [EXECryptor 2.x -> SoftComplete Developement] signature = A4 ?? ?? 00 00 00 00 00 FF FF FF FF 3C ?? ?? 00 94 ?? ?? 00 D8 ?? ?? 00 00 00 00 00 FF FF FF FF ep_only = false [ExeJoiner V1.0 -> Yoda f2f] signature = 68 00 10 40 00 68 04 01 00 00 E8 39 03 00 00 05 00 10 40 00 C6 00 5C 68 04 01 00 00 ep_only = true [EXEPACK v4.05, v4.06] signature = 8C C0 05 ?? ?? 0E 1F A3 ?? ?? 03 06 ?? ?? 8E C0 8B 0E ?? ?? 8B F9 4F 8B F7 FD F3 A4 ep_only = true [EXERefactor V0.1 -> random] signature = 55 8B EC 81 EC 90 0B 00 00 53 56 57 E9 58 8C 01 00 55 53 43 41 54 49 4F 4E ep_only = true [ExeSmasher vx.x] signature = 9C FE 03 ?? 60 BE ?? ?? 41 ?? 8D BE ?? 10 FF FF 57 83 CD FF EB 10 ep_only = true [ExeTools COM2EXE] signature = E8 ?? ?? 5D 83 ED ?? 8C DA 2E 89 96 ?? ?? 83 C2 ?? 8E DA 8E C2 2E 01 96 ?? ?? 60 ep_only = true [eXPressor 1.2 -> CGSoftLabs] signature = 55 8B EC 81 EC D4 01 00 00 53 56 57 EB 0C 45 78 50 72 2D 76 2E 31 2E 32 2E 2E ep_only = true [eXPressor 1.2.0 Beta PE Packer] signature = 55 8B EC 81 EC ?? ?? ?? ?? 53 56 57 EB ?? 45 78 50 72 2D 76 2E 31 2E 32 2E 2E ep_only = true [eXPressor v1.2.0b] signature = 55 8B EC 81 EC D4 01 00 00 53 56 57 EB 0C 45 78 50 72 2D 76 2E 31 2E 32 2E 2E B8 ?? ?? ?? 00 2B 05 84 ?? ?? 00 A3 ?? ?? ?? 00 83 3D ?? ?? ?? 00 00 74 16 A1 ?? ?? ?? 00 03 05 80 ?? ?? 00 89 85 54 FE FF FF E9 ?? 07 00 00 C7 05 ?? ?? ?? 00 01 00 00 00 68 04 ep_only = false [eXPressor v1.3 -> CGSoftLabs (h)] signature = 55 8B EC 83 EC ?? 53 56 57 EB 0C 45 78 50 72 2D 76 2E 31 2E 33 2E 2E B8 ?? ?? ?? ?? 2B 05 ?? ?? ?? ?? A3 ?? ?? ?? ?? 83 3D ?? ?? ?? ?? 00 74 13 A1 ?? ?? ?? ?? 03 05 ?? ?? ?? ?? 89 ?? ?? E9 ?? ?? 00 00 C7 05 ep_only = true [eXPressor v1.4 -> CGSoftLabs (h)] signature = 55 8B EC 83 EC ?? 53 56 57 EB 0C 45 78 50 72 2D 76 2E 31 2E 34 2E 2E B8 ep_only = true [EÓεشø-> Ôºڷç¸ß] signature = 55 8B EC B8 ?? ?? ?? ?? E8 ?? ?? ?? ?? 53 56 57 0F 31 8B D8 0F 31 8B D0 2B D3 C1 EA 10 B8 ?? ?? ?? ?? 0F 6E C0 B8 ?? ?? ?? ?? 0F 6E C8 0F F5 C1 0F 7E C0 0F 77 03 C2 ?? ?? ?? ?? ?? FF E0 ep_only = true [FACRYPT v1.0] signature = B9 ?? ?? B3 ?? 33 D2 BE ?? ?? 8B FE AC 32 C3 AA 49 43 32 E4 03 D0 E3 ep_only = true [Feokt] signature = 89 25 A8 11 40 00 BF ?? ?? ?? 00 31 C0 B9 ?? ?? ?? 00 29 F9 FC F3 AA ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? E8 ep_only = true [FreeBasic 0.14] signature = 55 89 E5 83 EC 08 C7 04 24 ?? 00 00 00 FF 15 ?? ?? ?? 00 E8 ?? FF FF FF 89 EC 31 C0 5D C3 89 F6 55 89 E5 83 EC 08 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 55 89 E5 83 EC 08 8B 45 08 89 04 24 FF 15 ?? ?? ?? 00 89 EC 5D ep_only = true [FSG v1.1] signature = BB D0 01 40 ?? BF ?? 10 40 ?? BE ?? ?? ?? ?? FC B2 80 8A 06 46 88 07 47 02 D2 75 05 8A 16 ep_only = true [FSG v1.10 (Eng) -> bart/xt -> WinRAR-SFX] signature = 80 E9 A1 C1 C1 13 68 E4 16 75 46 C1 C1 05 5E EB 01 9D 68 64 86 37 46 EB 02 8C E0 5F F7 D0 ep_only = true [FSG v1.10 (Eng) -> bart/xt -> WinRAR-SFX] signature = EB 01 02 EB 02 CD 20 B8 80 ?? 42 00 EB 01 55 BE F4 00 00 00 13 DF 13 D8 0F B6 38 D1 F3 F7 ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Borland C++ 1999)] signature = EB 02 CD 20 2B C8 68 80 ?? ?? 00 EB 02 1E BB 5E EB 02 CD 20 68 B1 2B 6E 37 40 5B 0F B6 C9 ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Borland C++)] signature = 23 CA EB 02 5A 0D E8 02 00 00 00 6A 35 58 C1 C9 10 BE 80 ?? ?? 00 0F B6 C9 EB 02 CD 20 BB ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Borland Delphi / Borland C++)] signature = EB 01 2E EB 02 A5 55 BB 80 ?? ?? 00 87 FE 8D 05 AA CE E0 63 EB 01 75 BA 5E CE E0 63 EB 02 ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Borland Delphi / Borland C++)] signature = 2B C2 E8 02 00 00 00 95 4A 59 8D 3D 52 F1 2A E8 C1 C8 1C BE 2E ?? ?? 18 EB 02 AB A0 03 F7 ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Borland Delphi / Microsoft Visual C++ / ASM)] signature = EB 02 CD 20 EB 02 CD 20 EB 02 CD 20 C1 E6 18 BB 80 ?? ?? 00 EB 02 82 B8 EB 01 10 8D 05 F4 ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Borland Delphi / Microsoft Visual C++)] signature = C1 C8 10 EB 01 0F BF 03 74 66 77 C1 E9 1D 68 83 ?? ?? 77 EB 02 CD 20 5E EB 02 CD 20 2B F7 ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Borland Delphi / Microsoft Visual C++)x] signature = 1B DB E8 02 00 00 00 1A 0D 5B 68 80 ?? ?? 00 E8 01 00 00 00 EA 5A 58 EB 02 CD 20 68 F4 00 ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Borland Delphi 2.0)] signature = EB 01 56 E8 02 00 00 00 B2 D9 59 68 80 ?? 41 00 E8 02 00 00 00 65 32 59 5E EB 02 CD 20 BB ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (MASM32 / TASM32 / Microsoft Visual Basic)] signature = F7 D8 0F BE C2 BE 80 ?? ?? 00 0F BE C9 BF 08 3B 65 07 EB 02 D8 29 BB EC C5 9A F8 EB 01 94 ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (MASM32 / TASM32)] signature = 03 F7 23 FE 33 FB EB 02 CD 20 BB 80 ?? 40 00 EB 01 86 EB 01 90 B8 F4 00 00 00 83 EE 05 2B ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (MASM32)] signature = EB 01 DB E8 02 00 00 00 86 43 5E 8D 1D D0 75 CF 83 C1 EE 1D 68 50 ?? 8F 83 EB 02 3D 0F 5A ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Microsoft Visual Basic / MASM32)] signature = EB 02 09 94 0F B7 FF 68 80 ?? ?? 00 81 F6 8E 00 00 00 5B EB 02 11 C2 8D 05 F4 00 00 00 47 ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Microsoft Visual Basic 5.0 / 6.0)] signature = C1 CB 10 EB 01 0F B9 03 74 F6 EE 0F B6 D3 8D 05 83 ?? ?? EF 80 F3 F6 2B C1 EB 01 DE 68 77 ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Microsoft Visual C++ 4.x / LCC Win32 1.x)] signature = 2C 71 1B CA EB 01 2A EB 01 65 8D 35 80 ?? ?? 00 80 C9 84 80 C9 68 BB F4 00 00 00 EB 01 EB ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Microsoft Visual C++ 5.0 / 6.0)] signature = 33 D2 0F BE D2 EB 01 C7 EB 01 D8 8D 05 80 ?? ?? ?? EB 02 CD 20 EB 01 F8 BE F4 00 00 00 EB ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Microsoft Visual C++ 6.0 / 7.0 / ASM)] signature = E8 01 00 00 00 5A 5E E8 02 00 00 00 BA DD 5E 03 F2 EB 01 64 BB 80 ?? ?? 00 8B FA EB 01 A8 ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Microsoft Visual C++ 6.0 / 7.0)] signature = 0B D0 8B DA E8 02 00 00 00 40 A0 5A EB 01 9D B8 80 ?? ?? ?? EB 02 CD 20 03 D3 8D 35 F4 00 ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Microsoft Visual C++ 6.0 / 7.0)] signature = F7 D8 40 49 EB 02 E0 0A 8D 35 80 ?? ?? ?? 0F B6 C2 EB 01 9C 8D 1D F4 00 00 00 EB 01 3C 80 ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Microsoft Visual C++ 6.0 / 7.0)] signature = 87 FE E8 02 00 00 00 98 CC 5F BB 80 ?? ?? 00 EB 02 CD 20 68 F4 00 00 00 E8 01 00 00 00 E3 ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Microsoft Visual C++ 6.0 / 7.0)] signature = F7 DB 80 EA BF B9 2F 40 67 BA EB 01 01 68 AF ?? A7 BA 80 EA 9D 58 C1 C2 09 2B C1 8B D7 68 ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Microsoft Visual C++ 6.0 / ASM)] signature = F7 D0 EB 02 CD 20 BE BB 74 1C FB EB 02 CD 20 BF 3B ?? ?? FB C1 C1 03 33 F7 EB 02 CD 20 68 ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Microsoft Visual C++ 6.0)] signature = F7 DB 80 EA BF B9 2F 40 67 BA EB 01 01 68 AF ?? ?? BA 80 EA 9D 58 C1 C2 09 2B C1 8B D7 68 ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Microsoft Visual C++ 6.0)] signature = 91 EB 02 CD 20 BF 50 BC 04 6F 91 BE D0 ?? ?? 6F EB 02 CD 20 2B F7 EB 02 F0 46 8D 1D F4 00 ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Microsoft Visual C++ 6.0)] signature = 03 DE EB 01 F8 B8 80 ?? 42 00 EB 02 CD 20 68 17 A0 B3 AB EB 01 E8 59 0F B6 DB 68 0B A1 B3 ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Microsoft Visual C++ 6.0)] signature = E8 01 00 00 00 0E 59 E8 01 00 00 00 58 58 BE 80 ?? ?? 00 EB 02 61 E9 68 F4 00 00 00 C1 C8 ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Microsoft Visual C++ 6.0)] signature = EB 02 AB 35 EB 02 B5 C6 8D 05 80 ?? ?? 00 C1 C2 11 BE F4 00 00 00 F7 DB F7 DB 0F BE 38 E8 ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Microsoft Visual C++ 6.0)] signature = D1 E9 03 C0 68 80 ?? ?? 00 EB 02 CD 20 5E 40 BB F4 00 00 00 33 CA 2B C7 0F B6 16 EB 01 3E ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Microsoft Visual C++ 6.0)] signature = C1 CE 10 C1 F6 0F 68 00 ?? ?? 00 2B FA 5B 23 F9 8D 15 80 ?? ?? 00 E8 01 00 00 00 B6 5E 0B ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Microsoft Visual C++ 6.0)] signature = EB 01 4D 83 F6 4C 68 80 ?? ?? 00 EB 02 CD 20 5B EB 01 23 68 48 1C 2B 3A E8 02 00 00 00 38 ep_only = true [FSG v1.33 (Eng) -> dulek/xt] signature = BE A4 01 40 00 AD 93 AD 97 AD 56 96 B2 80 A4 B6 80 FF 13 73 F9 33 C9 FF 13 73 16 33 C0 FF ep_only = true [FSG v2.0] signature = 87 25 ?? ?? ?? ?? 61 94 55 A4 B6 80 FF 13 73 F9 33 C9 FF 13 73 16 33 C0 FF 13 73 1F B6 80 41 B0 10 FF 13 12 C0 73 FA 75 ep_only = false [Fusion 1.0 -> jaNooNi] signature = 68 04 30 40 00 68 04 30 40 00 E8 09 03 00 00 68 04 30 40 00 E8 C7 02 00 00 ep_only = true [GHF Protector (pack only) -> GPcH] signature = 60 68 ?? ?? ?? ?? B8 ?? ?? ?? ?? FF 10 68 ?? ?? ?? ?? 50 B8 ?? ?? ?? ?? FF 10 68 00 00 00 00 6A 40 FF D0 89 05 ?? ?? ?? ?? 89 C7 BE ?? ?? ?? ?? 60 FC B2 80 31 DB A4 B3 02 E8 6D 00 00 00 73 F6 31 C9 E8 64 00 00 00 73 1C 31 C0 E8 5B 00 00 00 73 23 B3 02 41 ep_only = false [GHF Protector / GPcH] signature = 60 68 ?? ?? ?? ?? B8 ?? ?? ?? ?? FF 10 68 ?? ?? ?? ?? 50 B8 ?? ?? ?? ?? FF 10 68 00 A0 00 00 6A 40 FF D0 89 05 ?? ?? ?? ?? 89 C7 BE ?? ?? ?? ?? 60 FC B2 80 31 DB A4 B3 02 E8 6D 00 00 00 73 F6 ep_only = true [HACKSTOP v1.10, v1.11] signature = B4 30 CD 21 86 E0 3D ?? ?? 73 ?? B4 2F CD 21 B0 ?? B4 4C CD 21 50 B8 ?? ?? 58 EB ep_only = true [HACKSTOP v1.11c] signature = B4 30 CD 21 86 E0 3D ?? ?? 73 ?? B4 ?? CD 21 B0 ?? B4 4C CD 21 53 BB ?? ?? 5B EB ep_only = true [HACKSTOP v1.13] signature = 52 B8 ?? ?? 1E CD 21 86 E0 3D ?? ?? 73 ?? CD 20 0E 1F B4 09 E8 ?? ?? 24 ?? EA ep_only = true [HASP HL Protection V1.X -> Aladdin] signature = 55 8B EC 53 56 57 60 8B C4 A3 ?? ?? ?? ?? B8 ?? ?? ?? ?? 2B 05 ?? ?? ?? ?? A3 ?? ?? ?? ?? 83 3D ?? ?? ?? ?? 00 74 15 8B 0D ?? ?? ?? ?? 51 FF 15 ?? ?? ?? ?? 83 C4 04 E9 A5 00 00 00 68 ?? ?? ?? ?? FF 15 ?? ?? ?? ?? A3 ?? ?? ?? ?? 68 ?? ?? ?? ?? FF 15 ep_only = true [HPA] signature = E8 ?? ?? 5E 8B D6 83 ?? ?? 83 ?? ?? 06 0E 1E 0E 1F 33 FF 8C D3 ep_only = true [Hying's PE-Armor 0.75.exe -> Hying [CCG] (h)] signature = 00 00 00 00 00 00 00 00 ?? ?? 00 00 00 00 00 00 ?? ?? 01 00 00 00 00 00 00 00 00 00 56 69 72 74 75 61 6C 41 6C 6C 6F 63 00 00 00 00 00 00 00 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 00 00 00 00 00 00 74 ?? ?? ?? 00 00 00 00 00 ep_only = false [hying's PEArmor V0.76 -> hying] signature = E9 00 00 00 00 60 E8 14 00 00 00 5D 81 ED 00 00 00 00 6A ?? E8 A3 00 00 00 ep_only = true [IMP-Packer 1.0 -> Mahdi Hezavehi [IMPOSTER] (h)] signature = 28 ?? ?? ?? 00 00 00 00 00 00 00 00 40 ?? ?? ?? 34 ?? ?? ?? 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4C ?? ?? ?? 5C ?? ?? ?? 00 00 00 00 ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 00 4B 45 52 4E 45 4C 33 32 2E 64 6C 6C 00 00 47 65 74 50 72 6F 63 ep_only = false [IMPostor Pack 1.0 -> Mahdi Hezavehi] signature = BE ?? ?? ?? 00 83 C6 01 FF E6 00 00 00 00 ?? ?? 00 00 00 00 00 00 00 00 00 ?? ?? ?? 00 ?? 02 ?? ?? 00 10 00 00 00 02 00 ep_only = true [Inno Setup Module] signature = 49 6E 6E 6F 53 65 74 75 70 4C 64 72 57 69 6E 64 6F 77 00 00 53 54 41 54 49 43 ep_only = true [Inno Setup Module v2.0.18] signature = 55 8B EC 83 C4 B8 53 56 57 33 C0 89 45 F0 89 45 BC 89 45 B8 E8 73 71 FF FF E8 DA 85 FF FF E8 81 A7 FF FF E8 C8 ep_only = false [Inno Setup Module v3.0.4-beta/v3.0.6/v3.0.7] signature = 55 8B EC 83 C4 B8 53 56 57 33 C0 89 45 F0 89 45 BC 89 45 B8 E8 B3 70 FF FF E8 1A 85 FF FF E8 25 A7 FF FF E8 6C ep_only = false [iPB Protect 0.1.3 - 0.1.7 -> forgot] signature = 55 8B EC 6A FF 68 4B 43 55 46 68 54 49 48 53 64 A1 00 00 00 00 ep_only = true [JAM v2.11] signature = 50 06 16 07 BE ?? ?? 8B FE B9 ?? ?? FD FA F3 2E A5 FB 06 BD ?? ?? 55 CB ep_only = true [JDPack 2.x -> JDPack] signature = 55 8B EC 6A FF 68 68 51 40 00 68 04 25 40 00 64 A1 00 00 00 00 ep_only = true [Krypton v0.3] signature = 8B 0C 24 E9 C0 8D 01 ?? C1 3A 6E CA 5D 7E 79 6D B3 64 5A 71 EA ep_only = true [Krypton v0.4] signature = 54 E8 ?? ?? ?? ?? 5D 8B C5 81 ED 61 34 ?? ?? 2B 85 60 37 ?? ?? 83 E8 06 ep_only = true [Krypton v0.5] signature = 54 E8 ?? ?? ?? ?? 5D 8B C5 81 ED 71 44 ?? ?? 2B 85 64 60 ?? ?? EB 43 DF ep_only = true [kryptor 9] signature = 60 E8 ?? ?? ?? ?? 5E B9 ?? ?? ?? ?? 2B C0 02 04 0E D3 C0 49 79 F8 41 8D 7E 2C 33 46 ?? 66 B9 ep_only = true [LameCrypt v1.0] signature = 60 66 9C BB ?? ?? ?? ?? 80 B3 00 10 40 00 90 4B 83 FB FF 75 F3 66 9D 61 ep_only = true [LCC Win32 DLL] signature = 55 89 E5 53 56 57 83 7D 0C 01 75 05 E8 17 ?? ?? ?? FF 75 10 FF 75 0C FF 75 08 A1 ep_only = true [LTC v1.3] signature = 54 E8 00 00 00 00 5D 8B C5 81 ED F6 73 40 00 2B 85 87 75 40 00 83 E8 06 ep_only = true [MASM32] signature = 6A ?? 68 00 30 40 00 68 ?? 30 40 00 6A 00 E8 07 00 00 00 6A 00 E8 06 00 00 00 FF 25 08 20 ep_only = true [Metrowerks CodeWarrior v2.0 (GUI)] signature = 55 89 E5 53 56 83 EC 44 55 B8 FF FF FF FF 50 50 68 ?? ?? 40 00 64 FF 35 00 00 00 00 64 89 25 00 00 00 00 68 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? E8 ?? ?? 00 00 E8 ?? ?? 00 00 E8 ep_only = false [Mew 11 SE v1.2 (Eng) -> Northfox] signature = E9 ?? ?? ?? FF 0C ?? ?? 00 00 00 00 00 00 00 00 00 ?? ?? ?? 00 0C ep_only = true [MicroJoiner 1.7 -> coban2k] signature = BF 00 10 40 00 8D 5F 21 6A 0A 58 6A 04 59 60 57 E8 8E 00 00 00 ep_only = true [Microsoft C (1990/1992)] signature = B4 30 CD 21 3C 02 73 ?? 33 C0 06 50 CB BF ?? ?? 8B 36 ?? ?? 2B F7 81 FE ?? ?? 72 ?? BE ?? ?? FA 8E D7 ep_only = true [Microsoft C++ (1990/1992)] signature = B8 00 30 CD 21 3C 03 73 ?? 0E 1F BA ?? ?? B4 09 CD 21 06 33 C0 50 CB ep_only = true [Microsoft Visual Basic v5.0] signature = ?? ?? ?? ?? ?? ?? ?? FF FF FF 00 00 00 00 00 00 30 00 00 00 40 00 00 00 00 00 00 ep_only = true [Microsoft Visual C++] signature = 55 8B EC 6A FF 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 ep_only = true [Microsoft Visual C++ 6.0 DLL] signature = 55 8B EC 53 8B 5D 08 56 8B 75 0C 57 8B 7D 10 85 F6 75 09 83 3D ?? ?? ?? ?? ?? EB 26 83 FE 01 74 05 83 FE 02 75 22 A1 ?? ?? ?? ?? 85 C0 74 09 57 56 53 FF D0 85 C0 74 0C 57 56 53 E8 15 FF FF FF 85 C0 75 04 33 C0 EB 4E ep_only = false [Microsoft Visual C++ 8.0] signature = 6A 14 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? BB 94 00 00 00 53 6A 00 8B ?? ?? ?? ?? ?? FF D7 50 FF ?? ?? ?? ?? ?? 8B F0 85 F6 75 0A 6A 12 E8 ?? ?? ?? ?? 59 EB 18 89 1E 56 FF ?? ?? ?? ?? ?? 56 85 C0 75 14 50 FF D7 50 FF ?? ?? ?? ?? ?? B8 ep_only = true [Microsoft Visual C++ 8.0 [Debug]] signature = E9 ?? ?? ?? ?? E9 ?? ?? ?? ?? E9 ?? ?? ?? ?? E9 ?? ?? ?? ?? E9 ?? ?? ?? ?? E9 ?? ?? ?? ?? E9 ?? ?? ?? ?? E9 ?? ?? ?? ?? E9 ?? ?? ?? ?? E9 ?? ?? ?? ?? E9 ?? ?? ?? ?? E9 ?? ?? ?? ?? E9 ?? ?? ?? ?? E9 ?? ?? ?? ?? E9 ?? ?? ?? ?? E9 ?? ?? ?? ?? E9 ep_only = true [Microsoft Visual C++ ?.?] signature = 83 ?? ?? 6A 00 FF 15 F8 10 0B B0 8D ?? ?? ?? 51 6A 08 6A 00 6A 00 68 ep_only = true [Microsoft Visual C++ DLL] signature = 53 B8 01 00 00 00 8B 5C 24 0C 56 57 85 DB 55 75 12 83 3D ?? ?? ?? ?? ?? 75 09 33 C0 ep_only = true [Microsoft Visual C++ v4.x] signature = 64 A1 00 00 00 00 55 8B EC 6A FF 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 50 64 89 25 00 00 00 00 83 EC ?? 53 56 57 ep_only = true [Microsoft Visual C++ v5.0] signature = 55 8B EC 6A FF 68 68 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 53 56 57 ep_only = true [Microsoft Visual C++ v5.0/v6.0 (MFC)] signature = 55 8B EC 6A FF 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 64 A1 00 00 00 00 50 ep_only = true [Microsoft Visual C++ v6.0] signature = 55 8B EC 83 EC 50 53 56 57 BE ?? ?? ?? ?? 8D 7D F4 A5 A5 66 A5 8B ep_only = true [Microsoft Visual C++ v6.0 (Debug Version)] signature = 55 8B EC 51 ?? ?? ?? 01 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 ep_only = true [Microsoft Visual C++ v6.0 DLL] signature = 83 7C 24 08 01 75 09 8B 44 24 04 A3 ?? ?? 00 10 E8 8B FF FF FF ep_only = true [Microsoft Visual C++ v7.0] signature = 6A ?? 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? BF ?? ?? ?? ?? 8B C7 E8 ?? ?? ?? ?? 89 65 ?? 8B F4 89 3E 56 FF 15 ?? ?? ?? ?? 8B 4E ?? 89 0D ?? ?? ?? ?? 8B 46 ?? A3 ep_only = true [Microsoft Visual C++ v7.1 DLL] signature = 83 7C 24 08 01 75 ?? ?? ?? 24 04 50 A3 ?? ?? ?? 50 FF 15 00 10 ?? 50 33 C0 40 C2 0C 00 ep_only = true [Microsoft Visual C++ v7.1 EXE] signature = 6A ?? 68 ?? ?? ?? 01 E8 ?? ?? 00 00 66 81 3D 00 00 00 01 4D 5A 75 ?? A1 3C 00 00 01 ?? ?? 00 00 00 01 ep_only = true [Microsoft Visual C++ vx.x] signature = 55 8B EC ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 04 ep_only = true [Microsoft Visual C++ vx.x DLL] signature = ?? ?? ?? ?? ?? ?? ?? 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 ?? ?? ?? ?? 00 00 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 00 ?? ?? ?? 00 00 ?? ?? ?? 00 00 ?? ?? ?? 00 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 68 ep_only = true [MingWin32 - Dev C++ v4.x (h)] signature = 55 89 E5 83 EC ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 55 89 E5 83 EC ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 55 ?? ?? ?? ?? ?? ?? ?? ?? ?? FF ?? ?? ?? ?? 00 ep_only = true [MingWin32 GCC 3.x] signature = 55 89 E5 83 EC 08 C7 04 24 ?? 00 00 00 FF 15 ?? ?? 40 00 E8 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 55 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 ep_only = true [modified HACKSTOP v1.11f] signature = 52 B4 30 CD 21 52 FA ?? FB 3D ?? ?? EB ?? CD 20 0E 1F B4 09 E8 ep_only = true [MS Run-Time Library 1988 (04)] signature = 1E B8 ?? ?? 8E D8 B4 30 CD 21 3C 02 73 ?? BA ?? ?? E8 ?? ?? 06 33 C0 50 CB ep_only = true [MS Run-Time Library 1992 (11)] signature = B4 51 CD 21 8E DB B8 ?? ?? 83 E8 ?? 8E C0 33 F6 33 FF B9 ?? ?? FC F3 A5 ep_only = true [Nakedbind 1.0 -> nakedcrew] signature = 64 8B 38 48 8B C8 F2 AF AF 8B 1F 66 33 DB 66 81 3B 4D 5A 74 08 81 EB 00 00 ep_only = true [Name of the Packer v1.0] signature = 50 E8 ?? ?? ?? ?? 58 25 ?? F0 FF FF 8B C8 83 C1 60 51 83 C0 40 83 EA 06 52 FF 20 9D C3 ep_only = true [nBinder v3.6.1] signature = 6E 35 36 34 35 36 35 33 32 33 34 35 34 33 5F 6E 62 33 5C 00 5C 6E 35 36 34 35 36 35 33 32 33 34 35 34 33 5F 6E 62 33 5C ep_only = false [NoodleCrypt v2.0] signature = EB 01 9A E8 3D 00 00 00 EB 01 9A E8 EB 01 00 00 EB 01 9A E8 2C 04 00 00 EB 01 ep_only = true [North Star PE Shrinker 1.3 -> Liuxingping] signature = 9C 60 E8 00 00 00 00 5D B8 B3 85 40 00 2D AC 85 40 00 2B E8 8D B5 ep_only = true [NsPack 1.4 by North Star (Liu Xing Ping)] signature = 8B DF 83 3F 00 75 0A 83 C7 04 B9 00 00 00 00 EB 16 B9 01 00 00 00 03 3B 83 C3 04 83 3B 00 74 2D 01 13 8B 33 03 7B 04 57 51 52 53 ep_only = false [NSPack 3.x -> Liu Xing Ping] signature = 9C 60 E8 00 00 00 00 5D 83 ED 07 8D 85 ?? ?? FF FF ?? 38 01 0F 84 ?? 02 00 00 ?? 00 01 ep_only = true [NsPack v2.3 -> North Star (h)] signature = 9C 60 E8 00 00 00 00 5D B8 07 00 00 00 2B E8 8D B5 ?? ?? FF FF 8B 06 83 F8 00 74 11 8D B5 ?? ?? FF FF 8B 06 83 F8 01 0F 84 4B 02 00 00 C7 06 01 00 00 00 8B D5 8B 85 ?? ?? FF FF 2B D0 89 95 ?? ?? FF FF 01 95 ?? ?? FF FF 8D B5 ?? ?? FF FF 01 16 8B 36 8B FD ep_only = false [NsPacK V3.0 -> LiuXingPing] signature = 9C 60 E8 00 00 00 00 5D B8 07 00 00 00 2B E8 8D B5 ?? ?? ?? ?? 66 8B 06 66 83 F8 00 74 ep_only = true [NsPacK V3.1 -> LiuXingPing] signature = 9C 60 E8 00 00 00 00 5D 83 ED 07 8D 9D ?? ?? ?? ?? 8A 03 3C 00 74 ep_only = true [NsPacK V3.3 -> LiuXingPing] signature = 9C 60 E8 00 00 00 00 5D 83 ED 07 8D 85 ?? ?? ?? ?? 80 38 00 74 ep_only = true [NsPacK V3.4-V3.5 -> LiuXingPing] signature = 9C 60 E8 00 00 00 00 5D 83 ED 07 8D 85 ?? ?? ?? ?? 80 38 01 0F 84 ep_only = true [NsPacK V3.6 -> LiuXingPing] signature = 9C 60 E8 00 00 00 00 5D 83 ED 07 8D ?? ?? ?? ?? ?? 83 38 01 0F 84 47 02 00 00 ep_only = true [NsPacK V3.7 -> LiuXingPing] signature = 9C 60 E8 00 00 00 00 5D 83 ED 07 8D ?? ?? ?? ?? ?? 80 39 01 0F ?? ?? ?? 00 00 ep_only = true [Nullsoft PIMP Install System v1.3x] signature = 55 8B EC 81 EC ?? ?? 00 00 56 57 6A ?? BE ?? ?? ?? ?? 59 8D BD ep_only = true [Nullsoft PiMP Install System v1.x] signature = 83 EC 0C 53 56 57 FF 15 ?? ?? 40 00 05 E8 03 00 00 BE ?? ?? ?? 00 89 44 24 10 B3 20 FF 15 28 ?? 40 00 68 00 04 00 00 FF 15 ?? ?? 40 00 50 56 FF 15 ?? ?? 40 00 80 3D ?? ?? ?? 00 22 75 08 80 C3 02 BE ?? ?? ?? 00 8A 06 8B 3D ?? ?? 40 00 84 C0 74 ?? 3A C3 74 ep_only = false [Pack Master v1.0] signature = 60 E8 01 ?? ?? ?? E8 83 C4 04 E8 01 ?? ?? ?? E9 5D 81 ED D3 22 40 ?? E8 04 02 ?? ?? E8 EB 08 EB 02 CD 20 FF 24 24 9A 66 BE 47 46 ep_only = true [Packman 0.0.0.1 -> bubba] signature = 60 E8 00 00 00 00 58 8D A8 ?? FE FF FF 8D 98 ?? ?? ?? FF 8D ?? ?? 01 00 00 ep_only = true [Packman v0.0.0.1] signature = 60 E8 00 00 00 00 58 8D A8 ?? ?? FF FF 8D 98 ?? ?? ?? FF 8D ?? ?? 01 00 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 00 ep_only = true [Packman V1.0 -> Brandon LaCombe] signature = 60 E8 00 00 00 00 5B 8D 5B C6 01 1B 8B 13 8D 73 14 6A 08 59 01 16 AD 49 75 FA ep_only = true [PACKWIN v1.01p] signature = 8C C0 FA 8E D0 BC ?? ?? FB 06 0E 1F 2E ?? ?? ?? ?? 8B F1 4E 8B FE 8C DB 2E ?? ?? ?? ?? 8E C3 FD F3 A4 53 B8 ?? ?? 50 CB ep_only = true [PassLock 2000 v1.0 (Eng) -> Moonlight-Software] signature = 55 8B EC 53 56 57 BB 00 50 40 00 66 2E F7 05 34 20 40 00 04 00 0F 85 98 00 00 00 E8 1F 01 ep_only = true [Password Protector (c) MiniSoft 1992] signature = 06 0E 0E 07 1F E8 00 00 5B 83 EB 08 BA 27 01 03 D3 E8 3C 02 BA EA ep_only = true [PC Shrinker v0.71] signature = 9C 60 BD ?? ?? ?? ?? 01 AD 54 3A 40 ?? FF B5 50 3A 40 ?? 6A 40 FF 95 88 3A 40 ?? 50 50 2D ?? ?? ?? ?? 89 85 ep_only = true [PC-Guard v3.03d, v3.05d] signature = 55 50 E8 ?? ?? ?? ?? 5D EB 01 E3 60 E8 03 ?? ?? ?? D2 EB 0B 58 EB 01 48 40 EB 01 ep_only = true [PE Crypt 1.5 -> BitShape Software] signature = 60 E8 00 00 00 00 5D 81 ED 55 20 40 00 B9 7B 09 00 00 8D BD 9D 20 40 00 8B F7 AC ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? AA E2 CC ep_only = true [PE Diminisher v0.1] signature = 5D 8B D5 81 ED A2 30 40 ?? 2B 95 91 33 40 ?? 81 EA 0B ?? ?? ?? 89 95 9A 33 40 ?? 80 BD 99 ep_only = true [PE Intro v1.0] signature = 8B 04 24 9C 60 E8 ?? ?? ?? ?? 5D 81 ED 0A 45 40 ?? 80 BD 67 44 40 ?? ?? 0F 85 48 ep_only = true [PE Password v0.2 SMT/SMF] signature = E8 04 ?? ?? ?? 8B EC 5D C3 33 C0 5D 8B FD 81 ED 33 26 40 ?? 81 EF ?? ?? ?? ?? 83 EF 05 89 AD 88 27 40 ?? 8D 9D 07 29 40 ?? 8D B5 62 28 40 ?? 46 80 ep_only = true [PE Protect v0.9] signature = 52 51 55 57 64 67 A1 30 00 85 C0 78 0D E8 ?? ?? ?? ?? 58 83 C0 07 C6 ?? C3 ep_only = true [PEBundle v0.2 - v2.0x] signature = 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB ?? ?? 40 ?? 87 DD 6A 04 68 ?? 10 ?? ?? 68 ?? 02 ?? ?? 6A ?? FF 95 ep_only = true [PEBundle v2.0b5 - v2.3] signature = 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB ?? ?? 40 ?? 87 DD 01 AD ?? ?? ?? ?? 01 AD ep_only = true [PEBundle v2.44] signature = 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB ?? ?? 40 ?? 87 DD 83 BD ep_only = true [PEBundle v3.10] signature = 9C 60 E8 02 00 00 00 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 EB 07 20 40 00 87 DD ?? ?? ?? ?? 40 00 01 ep_only = false [PeCompact 2.xx (Slim Loader) --> BitSum Technologies] signature = B8 ?? ?? ?? ?? 50 64 FF 35 00 00 00 00 64 89 25 00 00 00 00 33 C0 89 08 50 45 43 32 00 ep_only = true [PECompact v1.4x+] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 02 ?? ?? ?? 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 ep_only = true [PECompact v2.0 beta -> Jeremy Collake] signature = B8 ?? ?? ?? ?? 05 ?? ?? ?? ?? 50 64 FF 35 00 00 00 00 64 89 25 00 00 00 00 CC 90 90 90 90 ep_only = true [PECompact v2.5 Retail (Slim Loader) -> Bitsum Technologies] signature = B8 ?? ?? ?? 01 50 64 FF 35 00 00 00 00 64 89 25 00 00 00 00 33 C0 89 08 50 45 43 32 00 ep_only = true [PECompact V2.X-> Bitsum Technologies] signature = B8 ?? ?? ?? ?? 50 64 FF 35 00 00 00 00 64 89 25 00 00 00 00 33 C0 89 08 50 45 43 ep_only = true [PECompact v2.xx] signature = B8 ?? ?? ?? 00 50 64 FF 35 00 00 00 00 64 89 25 00 00 00 00 33 C0 89 08 50 45 43 6F 6D 70 61 63 74 32 00 ep_only = false [PECrc32 0.88 -> ZhouJinYu] signature = 60 E8 00 00 00 00 5D 81 ED B6 A4 45 00 8D BD B0 A4 45 00 81 EF 82 00 00 00 ep_only = true [PEMangle] signature = 60 9C BE ?? ?? ?? ?? 8B FE B9 ?? ?? ?? ?? BB 44 52 4F 4C AD 33 C3 ep_only = true [PEncrypt v1.0] signature = 60 9C BE 00 10 40 00 8B FE B9 28 03 00 00 BB 78 56 34 12 AD 33 C3 AB E2 FA 9D 61 ep_only = true [PENightMare 2 Beta] signature = 60 E9 ?? ?? ?? ?? EF 40 03 A7 07 8F 07 1C 37 5D 43 A7 04 B9 2C 3A ep_only = true [PESpin v0.3 (Eng) -> cyberbob] signature = EB 01 68 60 E8 00 00 00 00 8B 1C 24 83 C3 12 81 2B E8 B1 06 00 FE 4B FD 82 2C 24 B7 CD 46 ep_only = true [PEtite v1.4] signature = ?? ?? ?? ?? ?? 66 9C 60 50 8B D8 03 00 68 54 BC 00 00 6A 00 FF 50 14 8B CC ep_only = true [PEtite v2.0] signature = B8 ?? ?? ?? ?? 66 9C 60 50 8B D8 03 ?? 68 54 BC ?? ?? 6A ?? FF 50 18 8B CC 8D A0 54 BC ?? ?? 8B C3 8D 90 E0 15 ?? ?? 68 ep_only = true [PeX 0.99 -> bart^CrackPl] signature = E9 F5 ?? ?? ?? 0D 0A C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 ep_only = true [PKLITE v1.50 (Device driver compression)] signature = B4 09 BA 14 01 CD 21 B8 00 4C CD 21 F8 9C 50 53 51 52 56 57 55 1E 06 BB ep_only = true [PKLITE v2.00b] signature = 50 B8 ?? ?? BA ?? ?? 05 ?? ?? 3B 06 02 00 72 ?? B4 09 BA ?? ?? CD 21 B8 01 4C CD 21 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 59 2D ?? ?? 8E D0 51 2D ?? ?? 8E C0 50 B9 ep_only = true [PKLITE v2.00b [extra]] signature = 50 B8 ?? ?? BA ?? ?? 05 ?? ?? 3B 06 02 00 72 ?? B4 09 BA ?? ?? CD 21 B8 01 4C CD 21 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? EA ?? ?? ?? ?? F3 A5 C3 59 2D ?? ?? 8E D0 51 2D ?? ?? 50 80 ep_only = true [PKLITE32 v1.1] signature = 55 8B EC A1 ?? ?? ?? ?? 85 C0 74 09 B8 01 00 00 00 5D C2 0C 00 8B 45 0C 57 56 53 8B 5D 10 ep_only = true [Pksmart 1.0b] signature = BA ?? ?? 8C C8 8B C8 03 C2 81 ?? ?? ?? 51 B9 ?? ?? 51 1E 8C D3 ep_only = true [PMODE/W v.1.12, 1.16, 1.21, 1.33 DOS extender] signature = FC 16 07 BF ?? ?? 8B F7 57 B9 ?? ?? F3 A5 06 1E 07 1F 5F BE ?? ?? 06 0E A4 ep_only = true [PolyCrypt PE - 2.1.4b/2.1.5 -> JLab Software Creations (h-signed)] signature = 50 6F 6C 79 43 72 79 70 74 20 50 45 20 28 63 29 20 32 30 30 34 2D 32 30 30 35 2C 20 4A 4C 61 62 53 6F 66 74 77 61 72 65 2E 00 50 00 43 00 50 00 45 ep_only = false [PolyCryptor by SMT Version %v3.%v4] signature = EB ?? 28 50 6F 6C 79 53 63 72 79 70 74 20 ?? ?? ?? 20 62 79 20 53 4D 54 29 ep_only = true [PowerBASIC/CC 3.0x] signature = 55 8B EC 53 56 57 BB 00 ?? ?? 00 66 2E F7 05 ?? ?? ?? 00 04 00 0F 85 ep_only = true [PowerBASIC/Win 7.0x] signature = 55 8B EC 53 56 57 BB 00 ?? 40 00 66 2E F7 05 ?? ?? 40 00 04 00 0F 85 DB 00 00 00 ep_only = true [Private exe Protector V2.0 -> SetiSoft Team] signature = 00 00 00 00 00 00 00 00 ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4B 45 52 4E 45 4C 33 32 2E 44 4C 4C 00 ?? ?? ?? ?? 00 00 00 00 00 00 ep_only = false [PRO-PACK v2.08] signature = 8C D3 8E C3 8C CA 8E DA 8B 0E ?? ?? 8B F1 83 ?? ?? 8B FE D1 ?? FD F3 A5 53 ep_only = true [Program Protector XP v1.0] signature = E8 ?? ?? ?? ?? 58 83 D8 05 89 C3 81 C3 ?? ?? ?? ?? 8B 43 64 50 ep_only = true [Protection Plus vx.x] signature = 50 60 29 C0 64 FF 30 E8 ?? ?? ?? ?? 5D 83 ED 3C 89 E8 89 A5 14 ?? ?? ?? 2B 85 1C ?? ?? ?? 89 85 1C ?? ?? ?? 8D 85 27 03 ?? ?? 50 8B ?? 85 C0 0F 85 C0 ?? ?? ?? 8D BD 5B 03 ?? ?? 8D B5 43 03 ?? ?? E8 DD ?? ?? ?? 89 85 1F 03 ?? ?? 6A 40 68 ?? 10 ?? ?? 8B 85 ep_only = true [PseudoSigner 0.2 [.BJFNT 1.1b] --> Anorganix] signature = EB 01 EA 9C EB 01 EA 53 EB 01 EA 51 EB 01 EA 52 EB 01 EA 56 90 ep_only = true [PseudoSigner 0.2 [.BJFNT 1.2] --> Anorganix] signature = EB 02 69 B1 83 EC 04 EB 03 CD 20 EB EB 01 EB 9C EB 01 EB EB 00 ep_only = true [PseudoSigner 0.2 [ASProtect] --> Anorganix] signature = 60 90 90 90 90 90 90 5D 90 90 90 90 90 90 90 90 90 90 90 03 DD ep_only = true [PseudoSigner 0.2 [Borland C++ 1999] --> Anorganix] signature = EB 10 66 62 3A 43 2B 2B 48 4F 4F 4B 90 E9 90 90 90 90 A1 ?? ?? ?? ?? A3 ep_only = true [PseudoSigner 0.2 [Borland Delphi DLL] --> Anorganix] signature = 55 8B EC 83 C4 B4 B8 90 90 90 90 E8 00 00 00 00 E8 00 00 00 00 8D 40 00 ep_only = true [PseudoSigner 0.2 [Borland Delphi Setup Module] --> Anorganix] signature = 55 8B EC 83 C4 90 53 56 57 33 C0 89 45 F0 89 45 D4 89 45 D0 E8 00 00 00 00 ep_only = true [PseudoSigner 0.2 [Code-Lock] --> Anorganix] signature = 43 4F 44 45 2D 4C 4F 43 4B 2E 4F 43 58 00 01 28 01 50 4B 47 05 4C 3F B4 04 4D 4C 47 4B ep_only = true [PseudoSigner 0.2 [Crunch/PE Heuristic] --> Anorganix] signature = 55 E8 0E 00 00 00 5D 83 ED 06 8B C5 55 60 89 AD ?? ?? ?? ?? 2B 85 00 00 00 00 ep_only = true [PseudoSigner 0.2 [FSG 1.31] --> Anorganix] signature = BE 90 90 90 00 BF 90 90 90 00 BB 90 90 90 00 53 BB 90 90 90 00 B2 80 ep_only = true [PseudoSigner 0.2 [LCC Win32 1.x] --> Anorganix] signature = 64 A1 01 00 00 00 55 89 E5 6A FF 68 ?? ?? ?? ?? 68 9A 10 40 90 50 ep_only = true [PseudoSigner 0.2 [LCC Win32 DLL] --> Anorganix] signature = 55 89 E5 53 56 57 83 7D 0C 01 75 05 E8 17 90 90 90 FF 75 10 FF 75 0C FF 75 08 A1 ep_only = true [PseudoSigner 0.2 [Lockless Intro Pack] --> Anorganix] signature = 2C E8 EB 1A 90 90 5D 8B C5 81 ED F6 73 90 90 2B 85 90 90 90 90 83 E8 06 89 85 FF 01 EC AD ep_only = true [PseudoSigner 0.2 [Microsoft Visual C++ 7.0 DLL] --> Anorganix] signature = 55 8D 6C 01 00 81 EC 00 00 00 00 8B 45 90 83 F8 01 56 0F 84 00 00 00 00 85 C0 0F 84 ep_only = true [PseudoSigner 0.2 [NorthStar PE Shrinker 1.3] --> Anorganix] signature = 9C 60 E8 00 00 00 00 5D B8 B3 85 40 00 2D AC 85 40 00 2B E8 8D B5 00 00 00 00 ep_only = true [PseudoSigner 0.2 [PE Intro 1.0] --> Anorganix] signature = 8B 04 24 9C 60 E8 14 00 00 00 5D 81 ED 0A 45 40 90 80 BD 67 44 40 90 90 0F 85 48 FF ED 0A ep_only = true [PseudoSigner 0.2 [PE Pack 0.99] --> Anorganix] signature = 60 E8 11 00 00 00 5D 83 ED 06 80 BD E0 04 90 90 01 0F 84 F2 FF CC 0A ep_only = true [PseudoSigner 0.2 [PE Protect 0.9] --> Anorganix] signature = 52 51 55 57 64 67 A1 30 00 85 C0 78 0D E8 07 00 00 00 58 83 C0 07 C6 90 C3 ep_only = true [PseudoSigner 0.2 [PENightMare 2 Beta] --> Anorganix] signature = 60 E9 10 00 00 00 EF 40 03 A7 07 8F 07 1C 37 5D 43 A7 04 B9 2C 3A ep_only = true [PseudoSigner 0.2 [PEX 0.99] --> Anorganix] signature = 60 E8 01 00 00 00 55 83 C4 04 E8 01 00 00 00 90 5D 81 FF FF FF 00 01 ep_only = true [PseudoSigner 0.2 [REALBasic] --> Anorganix] signature = 55 89 E5 90 90 90 90 90 90 90 90 90 90 50 90 90 90 90 90 00 01 ep_only = true [PseudoSigner 0.2 [UPX 0.6] --> Anorganix] signature = 60 E8 00 00 00 00 58 83 E8 3D 50 8D B8 00 00 00 FF 57 8D B0 E8 00 00 00 ep_only = true [PseudoSigner 0.2 [Watcom C/C++ DLL] --> Anorganix] signature = 53 56 57 55 8B 74 24 14 8B 7C 24 18 8B 6C 24 1C 83 FF 03 0F 87 01 00 00 00 F1 ep_only = true [PUNiSHER V1.5-> FEUERRADER] signature = 3F 00 00 80 66 20 ?? 00 7E 20 ?? 00 92 20 ?? 00 A4 20 ?? 00 00 00 00 00 4B 45 52 4E 45 4C 33 32 ep_only = false [RatPacker (Glue) stub] signature = 40 20 FF 00 00 00 00 00 00 00 ?? BE 00 60 40 00 8D BE 00 B0 FF FF ep_only = true [RCryptor v1.6x --> Vaska] signature = 60 90 61 61 80 7F F0 45 90 60 0F 85 1B 8B 1F FF 68 ?? ?? ?? ?? C3 ep_only = true [RCryptor v1.?? -> Vaska] signature = 90 58 90 50 90 8B 00 90 3C 50 90 58 0F 85 67 D6 EF 11 50 68 ?? ?? ?? ?? B8 ?? ?? ?? ?? 3D ?? ?? ?? ?? 74 06 80 30 ?? 40 EB F3 ep_only = true [RLPack -> Ap0x] signature = 60 E8 00 00 00 00 8B 2C 24 83 C4 04 EB 03 ?? ?? ?? EB 03 ?? ?? ?? 8D B5 CB 22 00 00 8D 9D F0 02 00 00 33 FF E8 ?? ?? ?? ?? EB 03 ?? ?? ?? 6A 40 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 6A 00 FF 95 9B 0A ep_only = true [RLPack Full Edition 1.17 iBox [aPLib] -> Ap0x] signature = 60 E8 00 00 00 00 8B 2C 24 83 C4 04 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 8D B5 79 29 00 00 8D 9D 2C 03 00 00 33 FF ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? EB 0F FF 74 37 04 FF 34 ep_only = true [RLPack Full Edition 1.17 iBox [LZMA] -> Ap0x] signature = 60 E8 00 00 00 00 8B 2C 24 83 C4 04 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 8D B5 67 30 00 00 8D 9D 66 03 00 00 33 FF ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 6A 40 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 6A ep_only = true [RLPack Full Edition 1.17 [aPLib] -> Ap0x] signature = 60 E8 00 00 00 00 8B 2C 24 83 C4 04 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 8D B5 74 1F 00 00 8D 9D 1E 03 00 00 33 FF ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? EB 0F FF 74 37 04 FF 34 ep_only = true [RLPack Full Edition 1.17 [LZMA] -> Ap0x] signature = 60 E8 00 00 00 00 8B 2C 24 83 C4 04 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 8D B5 73 26 00 00 8D 9D 58 03 00 00 33 FF ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 6A 40 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 6A ep_only = true [RLPack V1.12-V1.14 (LZMA 4.30) -> ap0x] signature = 60 E8 00 00 00 00 8B 2C 24 83 C4 04 8D B5 ?? ?? ?? ?? 8D 9D ?? ?? ?? ?? 33 FF 6A ?? 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 6A ?? FF 95 ?? ?? ?? ?? 89 85 ?? ?? ?? ?? EB ?? 60 ep_only = true [SCRAM! v0.8a1] signature = B4 30 CD 21 3C 02 77 ?? CD 20 BC ?? ?? B9 ?? ?? 8B FC B2 ?? 58 4C ep_only = true [SCRAM! vC5] signature = B8 ?? ?? 50 9D 9C 58 25 ?? ?? 75 ?? BA ?? ?? B4 09 CD 21 CD 20 ep_only = true [Sentinel SuperPro (Automatic Protection) v6.4.0 -> Safenet] signature = 68 ?? ?? ?? ?? 6A 01 6A 00 FF 15 ?? ?? ?? ?? A3 ?? ?? ?? ?? FF 15 ?? ?? ?? ?? 33 C9 3D B7 00 00 00 A1 ?? ?? ?? ?? 0F 94 C1 85 C0 89 0D ?? ?? ?? ?? 0F 85 ?? ?? ?? ?? 55 56 C7 05 ?? ?? ?? ?? 01 00 00 00 FF 15 ?? ?? ?? ?? 01 05 ?? ?? ?? ?? FF 15 ep_only = true [Sentinel SuperPro (Automatic Protection) v6.4.1 -> Safenet] signature = A1 ?? ?? ?? ?? 55 8B ?? ?? ?? 85 C0 74 ?? 85 ED 75 ?? A1 ?? ?? ?? ?? 50 55 FF 15 ?? ?? ?? ?? 8B 0D ?? ?? ?? ?? 55 51 FF 15 ?? ?? ?? ?? 85 C0 74 ?? 8B 15 ?? ?? ?? ?? 52 FF 15 ?? ?? ?? ?? 6A 00 6A 00 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? B8 01 00 00 00 5D C2 0C 00 ep_only = true [Shegerd Dongle V4.78 -> MS.Co.] signature = E8 32 00 00 00 B8 ?? ?? ?? ?? 8B 18 C1 CB 05 89 DA 36 8B 4C 24 0C ep_only = true [ShellModify 0.1 -> pll621] signature = 55 8B EC 6A FF 68 98 66 41 00 68 3C 3D 41 00 64 A1 00 00 00 00 ep_only = true [Shrink v2.0] signature = E9 ?? ?? 50 9C FC BE ?? ?? 8B FE 8C C8 05 ?? ?? 8E C0 06 57 B9 ep_only = true [Shrinker v3.2] signature = 83 3D ?? ?? ?? ?? ?? 55 8B EC 56 57 75 65 68 00 01 ?? ?? E8 ?? E6 FF FF 83 C4 04 8B 75 08 A3 ?? ?? ?? ?? 85 F6 74 1D 68 FF ep_only = true [Shrinker v3.4] signature = BB ?? ?? BA ?? ?? 81 C3 07 00 B8 40 B4 B1 04 D3 E8 03 C3 8C D9 49 8E C1 26 03 0E 03 00 2B ep_only = true [Silicon Realms Install Stub] signature = 55 8B EC 6A FF 68 ?? 92 40 00 68 ?? ?? 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 53 56 57 89 65 E8 FF 15 ?? ?? 40 00 33 D2 8A D4 89 15 ?? ?? 40 00 8B C8 81 E1 FF 00 00 00 89 0D ?? ?? 40 00 C1 E1 08 03 CA 89 0D ?? ?? 40 00 C1 E8 10 A3 ep_only = false [Simple UPX Cryptor v30.4.2005 [multi layer encryption] --> MANtiCORE] signature = 60 B8 ?? ?? ?? 00 B9 18 00 00 00 80 34 08 ?? E2 FA 61 68 ?? ?? ?? 00 C3 ep_only = true [Simple UPX Cryptor v30.4.2005 [One layer encryption] --> MANtiCORE] signature = 60 B8 ?? ?? ?? 00 B9 ?? 01 00 00 80 34 08 ?? E2 FA 61 68 ?? ?? ?? 00 C3 ep_only = true [SLVc0deProtector 0.60 -> SLV / ICU] signature = EB 02 FA 04 E8 49 00 00 00 69 E8 49 00 00 00 95 E8 4F 00 00 00 68 E8 1F 00 00 00 49 E8 E9 FF FF FF 67 E8 1F 00 00 00 93 E8 31 00 00 00 78 E8 DD ep_only = false [SoftComp 1.x -> BG Soft PT] signature = E8 00 00 00 00 81 2C 24 3A 10 41 00 5D E8 00 00 00 00 81 2C 24 31 01 00 00 8B 85 2A 0F 41 00 29 04 24 8B 04 24 89 85 2A 0F 41 00 58 8B 85 2A 0F 41 00 ep_only = false [Software Compress V1.2 -> BG Software Protect Technologies] signature = E9 BE 00 00 00 60 8B 74 24 24 8B 7C 24 28 FC B2 80 33 DB A4 B3 02 E8 6D 00 00 ep_only = true [Special EXE Pasword Protector v1.01 (Eng) -> Pavol Cerven] signature = 60 E8 00 00 00 00 5D 81 ED 06 00 00 00 89 AD 8C 01 00 00 8B C5 2B 85 FE 75 00 00 89 85 3E ep_only = true [Stone's PE Encryptor v2.0] signature = 53 51 52 56 57 55 E8 ?? ?? ?? ?? 5D 81 ED 42 30 40 ?? FF 95 32 35 40 ?? B8 37 30 40 ?? 03 C5 2B 85 1B 34 40 ?? 89 85 27 34 40 ?? 83 ep_only = true [SVK-Protector v1.32] signature = 60 E8 00 00 00 00 5D 81 ED 06 00 00 00 EB 05 B8 06 36 42 00 64 A0 23 ep_only = true [Symantec C v4.00 + Libraries] signature = FA B8 ?? ?? DB E3 8E D8 8C 06 ?? ?? 8B D8 2B 1E ?? ?? 89 1E ?? ?? 26 ep_only = true [tElock 0.98 Special Build -> forgot & heXer] signature = E9 99 D7 FF FF 00 00 00 ?? ?? ?? ?? AA ?? ?? 00 00 00 00 00 00 00 00 00 CA ep_only = true [tElock 0.99 -> tE!] signature = E9 5E DF FF FF 00 00 00 ?? ?? ?? ?? E5 ?? ?? 00 00 00 00 00 00 00 00 00 05 ep_only = true [tElock v0.98 -> tHE EGOiSTE (h)] signature = E9 25 E4 FF FF 00 00 00 ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 00 00 00 00 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 00 00 00 00 00 ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ?? ?? ?? ?? 00 00 00 00 ?? ?? ?? ?? 00 ep_only = true [tElock v0.99] signature = E9 ?? ?? FF FF 00 00 00 ?? ?? ?? ?? ?? ?? ?? 00 ?? ?? ?? ?? ?? ?? ?? 00 ?? ?? ?? 00 ?? ?? ?? 00 ?? ?? 02 00 ?? ?? ?? 00 ?? ?? ?? 00 ?? ?? ?? 00 ?? ?? ?? 00 ?? ?? ?? 00 ?? ?? ?? 00 00 00 00 00 00 00 00 00 00 00 00 00 ?? ?? ?? 00 00 00 00 00 ?? ?? 02 00 00 ep_only = true [Themida -> Oreans Technologies 2004] signature = B8 00 00 00 00 60 0B C0 74 58 E8 00 00 00 00 58 05 43 00 00 00 80 38 E9 75 03 61 EB 35 E8 ep_only = true [Themida 1.2.0.1 -> Oreans Technologies (h)] signature = 8B C5 8B D4 60 E8 00 00 00 00 5D 81 ED ?? ?? 35 09 89 95 ?? ?? 35 09 89 B5 ?? ?? 35 09 89 85 ?? ?? 35 09 83 BD ?? ?? 35 09 00 74 0C 8B E8 8B E2 B8 01 00 00 00 C2 0C 00 8B 44 24 24 89 85 ?? ?? 35 09 6A 45 E8 A3 00 00 00 68 9A 74 83 07 E8 DF 00 00 00 68 25 ep_only = false [Thinstall 2.4x - 2.5x -> Jitit Software] signature = 55 8B EC B8 ?? ?? ?? ?? BB ?? ?? ?? ?? 50 E8 00 00 00 00 58 2D ?? ?? ?? ?? B9 ?? ?? ?? ?? BA ?? ?? ?? ?? BE ?? ?? ?? ?? BF ?? ?? ?? ?? BD ?? ?? ?? ?? 03 E8 ep_only = true [TMT-Pascal v0.40] signature = 0E 1F 06 8C 06 ?? ?? 26 A1 ?? ?? A3 ?? ?? 8E C0 66 33 FF 66 33 C9 ep_only = true [Trivial173 by SMT/SMF] signature = EB ?? ?? 28 54 72 69 76 69 61 6C 31 37 33 20 62 79 20 53 4D 54 2F 53 4D 46 29 ep_only = true [Turbo C 1987] signature = FB 8C CA 2E 89 16 ?? ?? B4 30 CD 21 8B 2E ?? ?? 8B 1E ?? ?? 8E DA ep_only = true [Turbo C or Borland C++] signature = BA ?? ?? 2E 89 16 ?? ?? B4 30 CD 21 8B 2E ?? ?? 8B 1E ?? ?? 8E DA ep_only = true [TXT2COM v2.06] signature = 8D 26 ?? ?? E8 ?? ?? B8 ?? ?? CD 21 CD 20 54 58 54 32 43 4F 4D 20 ep_only = true [UCEXE v2.3, v2.4] signature = 50 1E 0E 1F FC 33 F6 E8 ?? ?? 16 07 33 F6 33 FF B9 ?? ?? F3 A5 06 B8 ?? ?? 50 CB ep_only = true [UltraPro V1.0 -> SafeNet] signature = A1 ?? ?? ?? ?? 85 C0 0F 85 3B 06 00 00 55 56 C7 05 ?? ?? ?? ?? 01 00 00 00 FF 15 ep_only = true [unknown -> jac] signature = 55 89 E5 B9 00 80 00 00 BA ?? ?? ?? ?? B8 ?? ?? ?? ?? 05 ?? ?? ?? ?? 31 C2 66 01 C2 C1 C2 07 E2 F1 50 E8 91 FF FF FF C9 C3 ep_only = true [Unknown encryptor (1)] signature = EB ?? 2E 90 ?? ?? 8C DB 8C CA 8E DA FA 8B EC BE ?? ?? BC ?? ?? BF ep_only = true [Unknown packer (05)] signature = FA BB ?? ?? B9 ?? ?? 87 E5 87 27 03 E3 91 8A CB 80 E1 ?? D3 C4 91 33 E3 87 27 ep_only = true [Unknown packer (08)] signature = 8B C4 2D ?? ?? 24 00 8B F8 57 B9 ?? ?? BE ?? ?? F3 A5 FD C3 97 4F 4F ep_only = true [Unpacked BS-SFX Archive v1.9] signature = 1E 33 C0 50 B8 ?? ?? 8E D8 FA 8E D0 BC ?? ?? FB B8 ?? ?? CD 21 3C 03 73 ep_only = true [Upack 0.12 beta-->Dwing] signature = BE 48 01 40 00 AD ?? ?? ?? A5 ?? C0 33 C9 ?? ?? ?? ?? ?? ?? ?? F3 AB ?? ?? 0A ?? ?? ?? ?? AD 50 97 51 ?? 87 F5 58 8D 54 86 5C ?? D5 72 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? B6 5F FF C1 ep_only = true [Upack v0.36 beta -> Dwing] signature = BE E0 11 ?? ?? FF 36 E9 C3 00 00 00 48 01 ?? ?? 0B 01 4B 45 52 4E 45 4C 33 32 2E 44 4C 4C ep_only = true [UPX 2.90 [LZMA] (Delphi stub) -> Markus Oberhumer, Laszlo Molnar & John Reiser] signature = 60 BE ?? ?? ?? ?? 8D BE ?? ?? ?? ?? C7 87 ?? ?? ?? ?? ?? ?? ?? ?? 57 83 CD FF 89 E5 8D 9C 24 ?? ?? ?? ?? 31 C0 50 39 DC 75 FB 46 46 53 68 ?? ?? ?? ?? 57 83 C3 04 53 68 ?? ?? ?? ?? 56 83 C3 04 ep_only = true [UPX 2.90 [LZMA] -> Markus Oberhumer, Laszlo Molnar & John Reiser] signature = 60 BE ?? ?? ?? ?? 8D BE ?? ?? ?? ?? 57 83 CD FF 89 E5 8D 9C 24 ?? ?? ?? ?? 31 C0 50 39 DC 75 FB 46 46 53 68 ?? ?? ?? ?? 57 83 C3 04 53 68 ?? ?? ?? ?? 56 83 C3 04 53 50 C7 03 ?? ?? ?? ?? 90 90 ep_only = true [UPX v0.60 - v0.61] signature = 60 E8 00 00 00 00 58 83 E8 3D 50 8D B8 ?? ?? ?? FF 57 8D B0 E8 ep_only = true [UPX v0.71 - v0.72] signature = 60 E8 00 00 00 00 83 CD FF 31 DB 5E 8D BE FA ?? ?? FF 57 66 81 87 ?? ?? ?? ?? ?? ?? 81 C6 B3 01 ?? ?? EB 0A ?? ?? ?? ?? 8A 06 46 88 07 47 01 DB 75 07 ep_only = true [UPX v0.89.6 - v1.02 / v1.05 -v1.24 -> Markus & Laszlo [overlay]] signature = 60 BE ?? ?? ?? ?? 8D BE ?? ?? ?? ?? 57 EB 0B 90 8A 06 46 88 07 47 01 DB 75 ?? 8B 1E 83 ?? ?? 11 DB 72 ?? B8 01 00 00 00 01 DB 75 ep_only = true [UPX V1.94 -> Markus Oberhumer & Laszlo Molnar & John Reiser] signature = FF D5 80 A7 ?? ?? ?? ?? ?? 58 50 54 50 53 57 FF D5 58 61 8D 44 24 ?? 6A 00 39 C4 75 FA 83 EC 80 E9 ep_only = false [UPX V2.00-V2.90 -> Markus Oberhumer & Laszlo Molnar & John Reiser] signature = FF D5 8D 87 ?? ?? ?? ?? 80 20 ?? 80 60 ?? ?? 58 50 54 50 53 57 FF D5 58 61 8D 44 24 ?? 6A 00 39 C4 75 FA 83 EC 80 E9 ep_only = false [UPX-Shit v0.1 -> 500mhz] signature = E8 ?? ?? ?? ?? 5E 83 C6 ?? AD 89 C7 AD 89 C1 AD 30 07 47 E2 ?? AD FF E0 C3 ep_only = true [UPXcrypter -> archphase/NWC] signature = BF ?? ?? ?? 00 81 FF ?? ?? ?? 00 74 10 81 2F ?? 00 00 00 83 C7 04 BB 05 ?? ?? 00 FF E3 BE ?? ?? ?? 00 FF E6 00 00 00 00 ep_only = true [UPXFreak v0.1 (Borland Delphi) -> HMX0101] signature = BE ?? ?? ?? ?? 83 C6 01 FF E6 00 00 00 ?? ?? ?? 00 03 00 00 00 ?? ?? ?? ?? 00 10 00 00 00 00 ?? ?? ?? ?? 00 00 ?? F6 ?? 00 B2 4F 45 00 ?? F9 ?? 00 EF 4F 45 00 ?? F6 ?? 00 8C D1 42 00 ?? 56 ?? 00 ?? ?? ?? 00 ?? ?? ?? 00 ?? ?? ?? 00 ?? 24 ?? 00 ?? ?? ?? 00 ep_only = true [UPXShit 0.06] signature = B8 ?? ?? 43 00 B9 15 00 00 00 80 34 08 ?? E2 FA E9 D6 FF FF FF ep_only = true [VBOX v4.3 - v4.6] signature = 8B C5 8B C5 8B C5 8B C5 8B C5 8B C5 8B C5 8B C5 8B C5 8B C5 8B C5 8B C5 8B C5 8B C5 8B C5 8B C5 ep_only = false [Video-Lan-Client -> (UnknownCompiler)] signature = 55 89 E5 83 EC 08 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? FF FF ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 ?? ?? ?? ?? ?? ?? ?? 00 ep_only = true [VMProtect 0.7x - 0.8 -> PolyTech] signature = 5B 20 56 4D 50 72 6F 74 65 63 74 20 76 20 30 2E 38 20 28 43 29 20 50 6F 6C 79 54 65 63 68 20 5D ep_only = false [Vx: ACME (Clonewar Mutant)] signature = FC AD 3D FF FF 74 20 E6 42 8A C4 E6 42 E4 61 0C 03 E6 61 AD B9 40 1F E2 FE ep_only = true [Vx: ARCV.4] signature = E8 00 00 5D 81 ED 06 01 81 FC 4F 50 74 0B 8D B6 86 01 BF 00 01 57 A4 EB 11 1E 06 ep_only = true [Vx: August 16th (Iron Maiden)] signature = BA 79 02 03 D7 B4 1A CD 21 B8 24 35 CD 21 5F 57 89 9D 4E 02 8C 85 50 02 ep_only = true [Vx: Backfont.900] signature = E8 ?? ?? B4 30 CD 21 3C 03 ?? ?? B8 ?? ?? BA ?? ?? CD 21 81 FA ?? ?? ?? ?? BA ?? ?? 8C C0 48 8E C0 8E D8 80 ?? ?? ?? 5A ?? ?? 03 ?? ?? ?? 40 8E D8 80 ?? ?? ?? 5A ?? ?? 83 ep_only = true [Vx: Doom.666] signature = E8 ?? ?? ?? 5E 83 EE ?? B8 CF 7B CD 21 3D CF 7B ?? ?? 0E 1F 81 C6 ?? ?? BF ?? ?? B9 ?? ?? FC F3 A4 06 1F 06 B8 ?? ?? 50 CB B4 48 BB 2C 00 CD 21 ep_only = true [Vx: Eddie.1028] signature = E8 ?? ?? 5E FC 83 ?? ?? 81 ?? ?? ?? 4D 5A ?? ?? FA 8B E6 81 C4 ?? ?? FB 3B ?? ?? ?? ?? ?? 50 06 56 1E B8 FE 4B CD 21 81 FF BB 55 ?? ?? 07 ?? ?? ?? 07 B4 49 CD 21 BB FF FF B4 48 CD 21 ep_only = true [Vx: Eddie.1530] signature = E8 ?? ?? 5E 81 EE ?? ?? FC 2E ?? ?? ?? ?? 4D 5A ?? ?? FA 8B E6 81 C4 ?? ?? FB 3B ?? ?? ?? ?? ?? 2E ?? ?? ?? ?? 50 06 56 1E 33 C0 50 1F C4 ?? ?? ?? 2E ?? ?? ?? ?? 2E ep_only = true [Vx: Eddie.1800] signature = E8 ?? ?? 5E 81 EE ?? ?? FC 2E ?? ?? ?? ?? 4D 5A ?? ?? FA 8B E6 81 C4 ?? ?? FB 3B ?? ?? ?? ?? ?? 50 06 56 1E 8B FE 33 C0 50 8E D8 C4 ?? ?? ?? 2E ?? ?? ?? ?? 2E ep_only = true [Vx: Eddie.2000] signature = E8 ?? ?? 5E 81 EE ?? ?? FC 2E ?? ?? ?? ?? 2E ?? ?? ?? ?? 4D 5A ?? ?? FA 8B E6 81 C4 ?? ?? FB 3B ?? ?? ?? ?? ?? 50 06 56 1E 8B FE 33 C0 50 8E D8 C5 ?? ?? ?? B4 30 CD 21 ep_only = true [Vx: Einstein] signature = 00 42 CD 21 72 31 B9 6E 03 33 D2 B4 40 CD 21 72 19 3B C1 75 15 B8 00 42 ep_only = true [Vx: Gotcha.879] signature = E8 ?? ?? 5B 81 EB ?? ?? 9C FC 2E ?? ?? ?? ?? ?? ?? ?? 8C D8 05 ?? ?? 2E ?? ?? ?? ?? 50 2E ?? ?? ?? ?? ?? ?? 8B C3 05 ?? ?? 8B F0 BF 00 01 B9 20 00 F3 A4 0E B8 00 01 50 B8 DA DA CD 21 ep_only = true [Vx: Grazie.883] signature = 1E 0E 1F 50 06 BF 70 03 B4 1A BA 70 03 CD 21 B4 47 B2 00 BE 32 04 CD 21 ep_only = true [Vx: GRUNT.4.Family] signature = E8 1C 00 8D 9E 41 01 40 3E 8B 96 14 03 B9 EA 00 87 DB F7 D0 31 17 83 C3 02 E2 F7 C3 ep_only = true [Vx: Hafen.809] signature = E8 ?? ?? 1C ?? 81 EE ?? ?? 50 1E 06 8C C8 8E D8 06 33 C0 8E C0 26 ?? ?? ?? 07 3D ep_only = true [Vx: Kuku.886] signature = 06 1E 50 8C C8 8E D8 BA 70 03 B8 24 25 CD 21 ?? ?? ?? ?? ?? 90 B4 2F CD 21 53 ep_only = true [Vx: Modification of Hi.924] signature = 50 53 51 52 1E 06 9C B8 21 35 CD 21 53 BB ?? ?? 26 ?? ?? 49 48 5B ep_only = true [Vx: Uddy.2617] signature = 2E ?? ?? ?? ?? ?? 2E ?? ?? ?? ?? ?? 2E ?? ?? ?? 8C C8 8E D8 8C ?? ?? ?? 2B ?? ?? ?? 03 ?? ?? ?? A3 ?? ?? A1 ?? ?? A3 ?? ?? A1 ?? ?? A3 ?? ?? 8C C8 2B ?? ?? ?? 03 ?? ?? ?? A3 ?? ?? B8 AB 9C CD 2F 3D 76 98 ep_only = true [Vx: XRCV.1015] signature = E8 ?? ?? 5E 83 ?? ?? 53 51 1E 06 B4 99 CD 21 80 FC 21 ?? ?? ?? ?? ?? 33 C0 50 8C D8 48 8E C0 1F A1 ?? ?? 8B ep_only = true [W32.Jeefo (PE File Infector)] signature = 55 89 E5 83 EC 08 83 C4 F4 6A 02 A1 C8 ?? ?? ?? FF D0 E8 ?? ?? ?? ?? C9 C3 ep_only = true [WARNING -> TROJAN -> ADinjector] signature = 90 61 BE 00 20 44 00 8D BE 00 F0 FB FF C7 87 9C E0 04 00 6A F0 8A 5E 57 83 CD FF EB 0E ep_only = true [WATCOM C/C++ 32 Run-Time System 1988-1995] signature = E9 ?? ?? ?? ?? ?? ?? ?? ?? 57 41 54 43 4F 4D 20 43 2F 43 2B 2B 33 32 20 52 75 6E 2D 54 ep_only = true [WATCOM C/C++ DLL] signature = 53 56 57 55 8B 74 24 14 8B 7C 24 18 8B 6C 24 1C 83 FF 03 0F 87 ep_only = true [WebCops [DLL] -> LINK Data Security] signature = A8 BE 58 DC D6 CC C4 63 4A 0F E0 02 BB CE F3 5C 50 23 FB 62 E7 3D 2B ep_only = true [WebCops [EXE] -> LINK Data Security] signature = EB 03 05 EB 02 EB FC 55 EB 03 EB 04 05 EB FB EB 53 E8 04 00 00 00 72 ep_only = true [Wise Installer Stub] signature = 55 8B EC 81 EC ?? 04 00 00 53 56 57 6A ?? ?? ?? ?? ?? ?? ?? FF 15 ?? ?? 40 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 80 ?? 20 ep_only = true [Wise Installer Stub] signature = 55 8B EC 81 EC ?? ?? 00 00 53 56 57 6A 01 5E 6A 04 89 75 E8 FF 15 ?? 40 40 00 FF 15 ?? 40 40 00 8B F8 89 7D ?? 8A 07 3C 22 0F 85 ?? 00 00 00 8A 47 01 47 89 7D ?? 33 DB 3A C3 74 0D 3C 22 74 09 8A 47 01 47 89 7D ?? EB EF 80 3F 22 75 04 47 89 7D ?? 80 3F 20 ep_only = false [WWPACK v3.00, v3.01 (Extractable)] signature = B8 ?? ?? 8C CA 03 D0 8C C9 81 C1 ?? ?? 51 6A ?? 06 06 8C D3 83 ?? ?? 53 6A ?? FC ep_only = true [WWPACK v3.02, v3.02a (Extractable)] signature = B8 ?? ?? 8C CA 03 D0 8C C9 81 C1 ?? ?? 51 33 C9 B1 ?? 51 06 06 BB ?? ?? 53 8C D3 ep_only = true [WWPACK v3.02, v3.02a, v3.04 (Relocations pack)] signature = BE ?? ?? BF ?? ?? B9 ?? ?? 8C CD 81 ED ?? ?? 8B DD 81 EB ?? ?? 8B D3 FC FA 1E 8E DB 01 15 33 C0 2E AC ep_only = true [WWPACK v3.03] signature = B8 ?? ?? 8C CA 03 D0 8C C9 81 C1 ?? ?? 51 B9 ?? ?? 51 06 06 BB ?? ?? 53 ep_only = true [WWPACK v3.05c4 (Extr. Passw.check. Vir. shield)] signature = 03 05 C0 1A B8 ?? ?? 8C CA 03 D0 8C C9 81 C1 ?? ?? 51 B9 ?? ?? 51 06 06 B1 ?? 51 8C D3 ep_only = true [WWPACK v3.05c4 (Extractable + Password checking)] signature = 03 05 80 1A B8 ?? ?? 8C CA 03 D0 8C C9 81 C1 ?? ?? 51 B9 ?? ?? 51 06 06 B1 ?? 51 8C D3 ep_only = true [WWPACK v3.05c4 (Extractable + Virus Shield)] signature = 03 05 40 1A B8 ?? ?? 8C CA 03 D0 8C C9 81 C1 ?? ?? 51 B9 ?? ?? 51 06 06 B1 ?? 51 8C D3 ep_only = true [WWPACK v3.05c4 (Extractable)] signature = 03 05 00 1A B8 ?? ?? 8C CA 03 D0 8C C9 81 C1 ?? ?? 51 B9 ?? ?? 51 06 06 B1 ?? 51 8C D3 ep_only = true [WWPACK v3.05c4 (Modified)] signature = B8 ?? ?? 8C CA 03 D0 8C C9 81 C1 ?? ?? 51 B9 ?? ?? 51 06 06 B1 ?? 51 8C D3 ep_only = true [WWPACK v3.05c4 (Unextr. Passw.check. Vir. shield)] signature = 03 05 C0 1B B8 ?? ?? 8C CA 03 D0 8C C9 81 C1 ?? ?? 51 B9 ?? ?? 51 06 06 B1 ?? 51 8C D3 ep_only = true [WWPACK v3.05c4 (Unextractable + Password checking)] signature = 03 05 80 1B B8 ?? ?? 8C CA 03 D0 8C C9 81 C1 ?? ?? 51 B9 ?? ?? 51 06 06 B1 ?? 51 8C D3 ep_only = true [WWPACK v3.05c4 (Unextractable + Virus Shield)] signature = 03 05 40 1B B8 ?? ?? 8C CA 03 D0 8C C9 81 C1 ?? ?? 51 B9 ?? ?? 51 06 06 B1 ?? 51 8C D3 ep_only = true [WWPACK v3.05c4 (Unextractable)] signature = 03 05 00 1B B8 ?? ?? 8C CA 03 D0 8C C9 81 C1 ?? ?? 51 B9 ?? ?? 51 06 06 B1 ?? 51 8C D3 ep_only = true [XCR v0.13] signature = 93 71 08 ?? ?? ?? ?? ?? ?? ?? ?? 8B D8 78 E2 ?? ?? ?? ?? 9C 33 C3 ?? ?? ?? ?? 60 79 CE ?? ?? ?? ?? E8 01 ?? ?? ?? ?? 83 C4 04 E8 AB FF FF FF ?? ?? ?? ?? 2B E8 ?? ?? ?? ?? 03 C5 FF 30 ?? ?? ?? ?? C6 ?? EB ep_only = true [XPack 1.67] signature = B8 8C D3 15 33 75 81 3E E8 0F 00 9A E8 F9 FF 9A 9C EB 01 9A 59 80 CD 01 51 9D EB ep_only = true [y0da's Crypter v1.0] signature = 60 E8 00 00 00 00 5D 81 ED E7 1A 40 00 E8 A1 00 00 00 E8 D1 00 00 00 E8 85 01 00 00 F7 85 ep_only = true [y0da's Crypter v1.1] signature = 60 E8 00 00 00 00 5D 81 ED 8A 1C 40 00 B9 9E 00 00 00 8D BD 4C 23 40 00 8B F7 33 ep_only = true [y0da's Crypter v1.2] signature = 60 E8 00 00 00 00 5D 81 ED F3 1D 40 00 B9 7B 09 00 00 8D BD 3B 1E 40 00 8B F7 AC ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? AA E2 CC ep_only = true [yoda's Crypter 1.3-->Ashkbiz Danehkar] signature = 55 8B EC 53 56 57 60 E8 00 00 00 00 5D 81 ED 6C 28 40 00 B9 5D 34 40 00 ep_only = true [yP v1.0b by Ashkbiz Danehkar] signature = 55 8B EC 53 56 57 60 E8 00 00 00 00 5D 81 ED 4C 32 40 00 E8 03 00 00 00 EB 01 ?? B9 EA 47 40 00 81 E9 E9 32 40 00 8B D5 81 C2 E9 32 40 00 8D 3A 8B F7 33 C0 E8 04 00 00 00 90 EB 01 C2 E8 03 00 00 00 EB 01 ?? AC ?? ?? ?? ?? ?? ?? ?? EB 01 E8 ep_only = false [!EP (ExE Pack) V1.0 -> Elite Coding Group] signature = 60 68 ?? ?? ?? ?? B8 ?? ?? ?? ?? FF 10 ep_only = true [$pirit v1.5] signature = ?? ?? ?? 5B 24 55 50 44 FB 32 2E 31 5D ep_only = true [* PseudoSigner 0.1 [MEW 11 SE 1.0] --> Anorganix] signature = E9 09 00 00 00 00 00 00 02 00 00 00 0C 90 E9 ep_only = true [* PseudoSigner 0.1 [MinGW GCC 2.x] --> Anorganix] signature = 55 89 E5 E8 02 00 00 00 C9 C3 90 90 45 58 45 E9 ep_only = true [* PseudoSigner 0.1 [VBOX 4.3 MTE] --> Anorganix] signature = 0B C0 0B C0 0B C0 0B C0 0B C0 0B C0 0B C0 0B C0 E9 ep_only = true [* PseudoSigner 0.1 [VOB ProtectCD 5] --> Anorganix] signature = 36 3E 26 8A C0 60 E8 00 00 00 00 E9 ep_only = true [* PseudoSigner 0.1 [WATCOM C/C++ EXE] --> Anorganix] signature = E9 00 00 00 00 90 90 90 90 57 41 E9 ep_only = true [* PseudoSigner 0.1 [XCR 0.11] --> Anorganix] signature = 60 8B F0 33 DB 83 C3 01 83 C0 01 E9 ep_only = true [* PseudoSigner 0.1 [Yoda's Protector 1.02] --> Anorganix] signature = E8 03 00 00 00 EB 01 90 90 E9 ep_only = true [* PseudoSigner 0.2 [32Lite 0.03] --> Anorganix] signature = 60 06 FC 1E 07 BE 90 90 90 90 6A 04 68 90 10 90 90 68 ep_only = true [* PseudoSigner 0.2 [Borland C++ DLL (Method 2)] --> Anorganix] signature = EB 10 66 62 3A 43 2B 2B 48 4F 4F 4B 90 E9 90 90 90 90 ep_only = true [* PseudoSigner 0.2 [CD-Cops II] --> Anorganix] signature = 53 60 BD 90 90 90 90 8D 45 90 8D 5D 90 E8 00 00 00 00 8D 01 ep_only = true [* PseudoSigner 0.2 [MEW 11 SE 1.0] --> Anorganix] signature = E9 09 00 00 00 00 00 00 02 00 00 00 0C 90 ep_only = true [* PseudoSigner 0.2 [Microsoft Visual Basic 5.0 - 6.0] --> Anorganix] signature = 68 ?? ?? ?? ?? E8 0A 00 00 00 00 00 00 00 00 00 30 00 00 00 ep_only = true [* PseudoSigner 0.2 [MinGW GCC 2.x] --> Anorganix] signature = 55 89 E5 E8 02 00 00 00 C9 C3 90 90 45 58 45 ep_only = true [* PseudoSigner 0.2 [VBOX 4.3 MTE] --> Anorganix] signature = 0B C0 0B C0 0B C0 0B C0 0B C0 0B C0 0B C0 0B C0 ep_only = true [* PseudoSigner 0.2 [VOB ProtectCD 5] --> Anorganix] signature = 36 3E 26 8A C0 60 E8 00 00 00 00 ep_only = true [* PseudoSigner 0.2 [WATCOM C/C++ EXE] --> Anorganix] signature = E9 00 00 00 00 90 90 90 90 57 41 ep_only = true [* PseudoSigner 0.2 [XCR 0.11] --> Anorganix] signature = 60 8B F0 33 DB 83 C3 01 83 C0 01 ep_only = true [* PseudoSigner 0.2 [Yoda's Protector 1.02] --> Anorganix] signature = E8 03 00 00 00 EB 01 90 90 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 75 00 83 C5 04 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 6D 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 00 36 8B 00 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 E8 83 ED 02 66 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 E8 83 ED 04 89 45 00 E9 ep_only = true [* VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 6D 00 E9 ep_only = true [.BJFnt v1.1b] signature = EB 01 EA 9C EB 01 EA 53 EB 01 EA 51 EB 01 EA 52 EB 01 EA 56 ep_only = true [.BJFnt v1.2 RC] signature = EB 02 69 B1 83 EC 04 EB 03 CD 20 EB EB 01 EB 9C EB 01 EB EB ep_only = true [.BJFnt v1.3] signature = EB 03 3A 4D 3A 1E EB 02 CD 20 9C EB 02 CD 20 EB 02 CD 20 60 ep_only = true [32Lite v0.03a] signature = 60 06 FC 1E 07 BE ?? ?? ?? ?? 6A 04 68 ?? 10 ?? ?? 68 ep_only = true [A program by Jupiter ..] signature = 2B C0 74 05 68 ?? ?? ?? ?? 50 ep_only = true [A3E (TXT2COM)] signature = 1E 33 C0 50 BE ?? ?? 81 C6 ?? ?? B8 ?? ?? 8E C0 BF ?? ?? B9 ?? ?? F3 A5 CB ep_only = true [AcidCrypt] signature = BE ?? ?? ?? ?? 02 38 40 4E 75 FA 8B C2 8A 18 32 DF C0 CB ep_only = true [AcidCrypt] signature = 60 B9 ?? ?? ?? 00 BA ?? ?? ?? 00 BE ?? ?? ?? 00 02 38 40 4E 75 FA 8B C2 8A 18 32 DF C0 CB ep_only = true [ACProtect v1.35 -> risco software Inc. & Anticrack Software (h)] signature = 4B 45 52 4E 45 4C 33 32 2E 44 4C 4C 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 55 53 45 52 33 32 2E 44 4C 4C 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 47 65 74 50 72 6F 63 ep_only = false [ACProtect V1.3X -> risco] signature = 60 50 E8 01 00 00 00 75 83 ep_only = true [ACProtect V1.4X -> risco] signature = 60 E8 01 00 00 00 7C 83 04 24 06 C3 ep_only = true [ACProtect v1.90g -> Risco software Inc.] signature = 60 0F 87 02 00 00 00 1B F8 E8 01 00 00 00 73 83 04 24 06 C3 ep_only = true [ActiveMARK[TM] R5.31.1140 -> Trymedia] signature = 79 11 7F AB 9A 4A 83 B5 C9 6B 1A 48 F9 27 B4 25 ep_only = true [AdFlt2] signature = 68 00 01 9C 0F A0 0F A8 60 FD 6A 00 0F A1 BE ?? ?? AD ep_only = true [Ady's Glue 1.10] signature = 2E ?? ?? ?? ?? 0E 1F BF ?? ?? 33 DB 33 C0 AC ep_only = true [AINEXE v2.1] signature = A1 ?? ?? 2D ?? ?? 8E D0 BC ?? ?? 8C D8 36 A3 ?? ?? 05 ?? ?? 36 A3 ?? ?? 2E A1 ?? ?? 8A D4 B1 04 D2 EA FE C9 ep_only = true [AINEXE v2.30] signature = 0E 07 B9 ?? ?? BE ?? ?? 33 FF FC F3 A4 A1 ?? ?? 2D ?? ?? 8E D0 BC ?? ?? 8C D8 ep_only = true [Aluwain v8.09] signature = 8B EC 1E E8 ?? ?? 9D 5E ep_only = true [Anskya Binder v1.1 -> Anskya] signature = BE ?? ?? ?? 00 BB F8 11 40 00 33 ED 83 EE 04 39 2E 74 11 ep_only = true [Anticrack Software Protector v1.09 (ACProtect)] signature = 60 ?? ?? ?? ?? ?? ?? ?? ?? 00 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? E8 01 00 00 00 ?? 83 04 24 06 C3 ?? ?? ?? ?? ?? 00 ep_only = true [AntiVirus Vaccine v.1.03] signature = FA 33 DB B9 ?? ?? 0E 1F 33 F6 FC AD 35 ?? ?? 03 D8 E2 ep_only = true [aPack v0.62] signature = 1E 06 8C C8 8E D8 ?? ?? ?? 8E C0 50 BE ?? ?? 33 FF FC B6 ep_only = true [aPack v0.98 -m] signature = 1E 06 8C C8 8E D8 05 ?? ?? 8E C0 50 BE ?? ?? 33 FF FC B2 ?? BD ?? ?? 33 C9 50 A4 BB ?? ?? 3B F3 76 ep_only = false [aPack v0.98b (DS&ES not saved)] signature = 8C CB BA ?? ?? 03 DA FC 33 F6 33 FF 4B 8E DB 8D ?? ?? ?? 8E C0 B9 ?? ?? F3 A5 4A 75 ep_only = false [APatch GUI v1.1] signature = 52 31 C0 E8 FF FF FF FF ep_only = true [ARC-SFX Archive] signature = 8C C8 8C DB 8E D8 8E C0 89 ?? ?? ?? 2B C3 A3 ?? ?? 89 ?? ?? ?? BE ?? ?? B9 ?? ?? BF ?? ?? BA ?? ?? FC AC 32 C2 8A D8 ep_only = true [Armadillo v1.71] signature = 55 8B EC 6A FF 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 64 A1 ep_only = true [Armadillo v1.72 - v1.73] signature = 55 8B EC 6A FF 68 E8 C1 ?? ?? 68 F4 86 ?? ?? 64 A1 ?? ?? ?? ?? 50 64 89 25 ?? ?? ?? ?? 83 EC 58 ep_only = true [Armadillo v1.9x] signature = 55 8B EC 6A FF 68 98 ?? ?? ?? 68 10 ?? ?? ?? 64 A1 ?? ?? ?? ?? 50 64 89 25 ?? ?? ?? ?? 83 EC 58 53 56 57 89 65 E8 FF 15 ep_only = true [Armadillo v1.xx - v2.xx] signature = 55 8B EC 53 8B 5D 08 56 8B 75 0C 57 8B 7D 10 85 F6 ep_only = true [Armadillo v2.51] signature = 55 8B EC 6A FF 68 B8 ?? ?? ?? 68 D0 ?? ?? ?? 64 A1 ?? ?? ?? ?? 50 64 89 25 ?? ?? ?? ?? 83 EC 58 53 56 57 89 65 E8 FF 15 20 ep_only = true [Armadillo v2.52] signature = 55 8B EC 6A FF 68 E0 ?? ?? ?? 68 D4 ?? ?? ?? 64 A1 ?? ?? ?? ?? 50 64 89 25 ?? ?? ?? ?? 83 EC 58 53 56 57 89 65 E8 FF 15 38 ep_only = true [Armadillo v2.52b2] signature = 55 8B EC 6A FF 68 B0 ?? ?? ?? 68 60 ?? ?? ?? 64 A1 ?? ?? ?? ?? 50 64 89 25 ?? ?? ?? ?? 83 EC 58 53 56 57 89 65 E8 FF 15 24 ep_only = true [Armadillo v2.53b3] signature = 55 8B EC 6A FF 68 D8 ?? ?? ?? 68 14 ?? ?? ?? 64 A1 ?? ?? ?? ?? 50 64 89 25 ?? ?? ?? ?? 83 EC 58 53 56 57 89 65 E8 FF 15 ep_only = true [ASPack v1.02b] signature = 60 E8 00 00 00 00 5D 81 ED 96 78 43 00 B8 90 78 43 00 03 C5 ep_only = true [ASPack v1.04b] signature = 60 E8 ?? ?? ?? ?? 5D 81 ED ?? ?? ?? ?? B8 ?? ?? ?? ?? 03 C5 2B 85 ?? 12 9D ?? 89 85 1E 9D ?? ?? 80 BD 08 9D ep_only = true [ASPack v1.07b] signature = 60 E8 ?? ?? ?? ?? 5D 81 ED ?? ?? ?? ?? B8 ?? ?? ?? ?? 03 C5 2B 85 ?? 0B DE ?? 89 85 17 DE ?? ?? 80 BD 01 DE ep_only = true [ASPack v1.07b (DLL)] signature = 60 E8 00 00 00 00 5D ?? ?? ?? ?? ?? ?? B8 ?? ?? ?? ?? 03 C5 ep_only = true [ASPack v1.08.01] signature = 60 EB ?? 5D EB ?? FF ?? ?? ?? ?? ?? E9 ep_only = true [ASPack v1.08.03] signature = 60 E8 00 00 00 00 5D ?? ?? ?? ?? ?? ?? BB ?? ?? ?? ?? 03 DD ep_only = true [ASPack v1.08.03] signature = 60 E8 00 00 00 00 5D 81 ED 0A 4A 44 00 BB 04 4A 44 00 03 DD ep_only = true [ASPack v1.08.04] signature = 60 E8 41 06 00 00 EB 41 ep_only = true [ASPack v2.000] signature = 60 E8 70 05 00 00 EB 4C ep_only = true [ASPack v2.001] signature = 60 E8 72 05 00 00 EB 4C ep_only = true [ASPack v2.1] signature = 60 E8 72 05 00 00 EB 33 87 DB 90 00 ep_only = true [ASPack v2.11d] signature = 60 E8 02 00 00 00 EB 09 5D 55 ep_only = true [ASPack v2.12] signature = 60 E8 03 00 00 00 E9 EB 04 5D 45 55 C3 E8 01 ep_only = true [ASPack v2.xx] signature = A8 03 ?? ?? 61 75 08 B8 01 ?? ?? ?? C2 0C ?? 68 ?? ?? ?? ?? C3 8B 85 26 04 ?? ?? 8D 8D 3B 04 ?? ?? 51 50 FF 95 ep_only = true [ASPR Stripper v2.x unpacked] signature = BB ?? ?? ?? ?? E9 ?? ?? ?? ?? 60 9C FC BF ?? ?? ?? ?? B9 ?? ?? ?? ?? F3 AA 9D 61 C3 55 8B EC ep_only = true [ASProtect 1.33 - 2.1 Registered -> Alexey Solodovnikov] signature = 68 01 ?? ?? ?? E8 01 00 00 00 C3 C3 ep_only = true [ASProtect v1.0] signature = 60 E8 01 ?? ?? ?? 90 5D 81 ED ?? ?? ?? ?? BB ?? ?? ?? ?? 03 DD 2B 9D ep_only = true [ASProtect v1.1] signature = 60 E9 ?? 04 ?? ?? E9 ?? ?? ?? ?? ?? ?? ?? EE ep_only = true [ASProtect v1.1 MTE] signature = 60 E9 ?? ?? ?? ?? 91 78 79 79 79 E9 ep_only = true [ASProtect v1.1 MTEc] signature = 90 60 E8 1B ?? ?? ?? E9 FC ep_only = true [ASProtect v1.23 RC1] signature = 68 01 ?? ?? 00 E8 01 00 00 00 C3 C3 ep_only = true [ASProtect v1.2x] signature = 00 00 68 01 ?? ?? ?? C3 AA ep_only = true [ASProtect v1.2x (New Strain)] signature = 68 01 ?? ?? ?? E8 01 ?? ?? ?? C3 C3 ep_only = true [ASProtect vx.x] signature = 60 ?? ?? ?? ?? ?? 90 5D ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 03 DD ep_only = true [bambam V0.01 -> bedrock] signature = 6A 14 E8 9A 05 00 00 8B D8 53 68 ?? ?? ?? ?? E8 6C FD FF FF ep_only = true [BeRoEXEPacker v1.00 -> BeRo / Farbrausch] signature = 60 BE ?? ?? ?? ?? BF ?? ?? ?? ?? FC B2 80 33 DB A4 B3 02 E8 ?? ?? ?? ?? 73 F6 33 C9 E8 ?? ?? ?? ?? 73 1C 33 C0 E8 ?? ?? ?? ?? 73 23 B3 02 41 B0 10 ep_only = true [BeRoEXEPacker v1.00 -> BeRo / Farbrausch] signature = 60 BE ?? ?? ?? ?? BF ?? ?? ?? ?? FC B2 80 33 DB A4 B3 02 E8 ?? ?? ?? ?? 73 F6 33 C9 E8 ?? ?? ?? ?? 73 1C 33 C0 E8 ?? ?? ?? ?? 73 23 B3 02 41 B0 10 ep_only = true [Blade Joiner v1.5] signature = 55 8B EC 81 C4 E4 FE FF FF 53 56 57 33 C0 89 45 F0 89 85 ep_only = true [BobSoft Mini Delphi -> BoB / BobSoft] signature = 55 8B EC 83 C4 F0 B8 ?? ?? ?? ?? E8 ep_only = true [BobSoft Mini Delphi -> BoB / BobSoft] signature = 55 8B EC 83 C4 F0 53 56 B8 ?? ?? ?? ?? E8 ?? ?? ?? ?? 33 C0 55 68 ?? ?? ?? ?? 64 FF 30 64 89 20 B8 ep_only = true [BobSoft Mini Delphi -> BoB / BobSoft] signature = 55 8B EC 83 C4 F0 53 B8 ?? ?? ?? ?? E8 ?? ?? ?? ?? 33 C0 55 68 ?? ?? ?? ?? 64 FF 30 64 89 20 B8 ?? ?? ?? ?? E8 ep_only = true [BookManager v9510] signature = FC A3 ?? ?? 89 1E ?? ?? 49 89 0E ?? ?? BB ?? ?? 8C 1F 83 ?? ?? 89 ?? ?? B8 ?? ?? 50 89 ?? ?? F7 D0 50 ep_only = true [BopCrypt v1.0] signature = 60 BD ?? ?? ?? ?? E8 ?? ?? 00 00 ep_only = true [by Central Point Software] signature = 50 51 52 56 57 8B EB 1E 2E ep_only = true [Can2Exe v0.01] signature = 0E 1F 0E 07 E8 ?? ?? E8 ?? ?? 3A C6 73 ep_only = true [CauseWay DOS Extender v3.25] signature = FA 16 1F 26 ?? ?? ?? 83 ?? ?? 8E D0 FB 06 16 07 BE ?? ?? 8B FE B9 ?? ?? F3 A4 07 ep_only = true [CC v2.61 Beta] signature = BA ?? ?? B4 30 CD 21 3C 02 73 ?? 33 C0 06 50 CB ep_only = true [CD-Cops II] signature = 53 60 BD ?? ?? ?? ?? 8D 45 ?? 8D 5D ?? E8 ?? ?? ?? ?? 8D ep_only = true [CERBERUS v2.0] signature = 9C 2B ED 8C ?? ?? 8C ?? ?? FA E4 ?? 88 ?? ?? 16 07 BF ?? ?? 8E DD 9B F5 B9 ?? ?? FC F3 A5 ep_only = true [CHECKPRG (c) 1992] signature = 33 C0 BE ?? ?? 8B D8 B9 ?? ?? BF ?? ?? BA ?? ?? 47 4A 74 ep_only = true [ChSfx (small) v1.1] signature = BA ?? ?? E8 ?? ?? 8B EC 83 EC ?? 8C C8 BB ?? ?? B1 ?? D3 EB 03 C3 8E D8 05 ?? ?? 89 ep_only = true [Code-Lock vx.x] signature = 43 4F 44 45 2D 4C 4F 43 4B 2E 4F 43 58 00 ep_only = true [CodeCrypt v0.14b] signature = E9 C5 02 00 00 EB 02 83 3D 58 EB 02 FF 1D 5B EB 02 0F C7 5F ep_only = true [CodeCrypt v0.15b] signature = E9 31 03 00 00 EB 02 83 3D 58 EB 02 FF 1D 5B EB 02 0F C7 5F ep_only = true [CodeCrypt v0.16b - v0.163b] signature = E9 2E 03 00 00 EB 02 83 3D 58 EB 02 FF 1D 5B EB 02 0F C7 5F ep_only = true [COP v1.0 (c) 1988] signature = BF ?? ?? BE ?? ?? B9 ?? ?? AC 32 ?? ?? ?? AA E2 ?? 8B ?? ?? ?? EB ?? 90 ep_only = true [Copy Protector v2.0] signature = 2E A2 ?? ?? 53 51 52 1E 06 B4 ?? 1E 0E 1F BA ?? ?? CD 21 1F ep_only = true [CPAV] signature = E8 ?? ?? 4D 5A B1 01 93 01 00 00 02 ep_only = true [CrackStop v1.01 (c) Stefan Esser 1997] signature = B4 48 BB FF FF B9 EB 27 8B EC CD 21 FA FC ep_only = true [Crinkler V0.1-V0.2 -> Rune L.H.Stubbe and Aske Simon Christensen] signature = B9 ?? ?? ?? ?? 01 C0 68 ?? ?? ?? ?? 6A 00 58 50 6A 00 5F 48 5D BB 03 00 00 00 BE ?? ?? ?? ?? E9 ep_only = true [Crinkler V0.3-V0.4 -> Rune L.H.Stubbe and Aske Simon Christensen] signature = B8 00 00 42 00 31 DB 43 EB 58 ep_only = true [Crunch/PE v1.0.x.x] signature = 55 E8 ?? ?? ?? ?? 5D 83 ED 06 8B C5 55 60 89 AD ?? ?? ?? ?? 2B 85 ?? ?? ?? ?? 89 85 ?? ?? ?? ?? 80 BD ?? ?? ?? ?? ?? 75 09 C6 85 ep_only = true [Crunch/PE v3.0.x.x] signature = EB 10 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 55 E8 ?? ?? ?? ?? 5D 81 ED 18 ?? ?? ?? 8B C5 55 60 9C 2B 85 ?? ?? ?? ?? 89 85 ?? ?? ?? ?? FF 74 ep_only = true [Cruncher v1.0] signature = 2E ?? ?? ?? ?? 2E ?? ?? ?? B4 30 CD 21 3C 03 73 ?? BB ?? ?? 8E DB 8D ?? ?? ?? B4 09 CD 21 06 33 C0 50 CB ep_only = true [CrypKey v5 - v6] signature = E8 ?? ?? ?? ?? 58 83 E8 05 50 5F 57 8B F7 81 EF ?? ?? ?? ?? 83 C6 39 BA ?? ?? ?? ?? 8B DF B9 0B ?? ?? ?? 8B 06 ep_only = true [CrypKey V5.6.X -> Kenonic Controls Ltd.] signature = E8 ?? ?? ?? ?? E8 ?? ?? ?? ?? 83 F8 00 75 07 6A 00 E8 ep_only = true [CrypKey V5.6.X DLL -> Kenonic Controls Ltd.] signature = 8B 1D ?? ?? ?? ?? 83 FB 00 75 0A E8 ?? ?? ?? ?? E8 ep_only = true [CrypKey V6.1X DLL -> CrypKey (Canada) Inc.] signature = 83 3D ?? ?? ?? ?? 00 75 34 68 ?? ?? ?? ?? E8 ep_only = true [CRYPT Version 1.7 (c) Dismember] signature = 0E 17 9C 58 F6 ?? ?? 74 ?? E9 ep_only = true [CRYPT Version 1.7 (c) Dismember (COM)] signature = 0E 17 9C 58 F6 C4 01 ?? ?? ?? ?? ?? B4 01 BE ?? ?? BF ?? ?? B9 ?? ?? 68 ?? ?? 68 ?? ?? 68 ?? ?? 57 F3 A4 C3 B0 02 E6 21 60 ep_only = true [CRYPT Version 1.7 (c) Dismember (EXE)] signature = 0E 17 9C 58 F6 ?? ?? 74 ?? E9 ep_only = true [CryptCom v1.1] signature = BF ?? ?? 57 BE ?? ?? ?? B9 ?? ?? F3 A4 C3 8B ?? ?? ?? 8B ?? ?? ?? BF ?? ?? 57 BE ?? ?? ?? AD 33 C2 AB E2 ?? C3 ep_only = true [CrypWrap vx.x] signature = E8 B8 ?? ?? ?? E8 90 02 ?? ?? 83 F8 ?? 75 07 6A ?? E8 ?? ?? ?? ?? FF 15 49 8F 40 ?? A9 ?? ?? ?? 80 74 0E ep_only = true [Cygwin32] signature = 55 89 E5 83 EC 04 83 3D ep_only = true [DBPE vx.xx] signature = EB 20 ?? ?? 40 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 9C 55 57 56 52 51 53 9C E8 ?? ?? ?? ?? 5D 81 ED ep_only = true [DEF v1.0] signature = BE ?? 01 40 00 6A 05 59 80 7E 07 00 74 11 8B 46 ep_only = true [dePACK -> deNULL] signature = EB 01 DD 60 68 00 ?? ?? ?? 68 ?? ?? 00 00 E8 ?? 00 00 00 ep_only = true [Dev-C++ v4] signature = 55 89 E5 83 EC 08 83 C4 F4 6A ?? A1 ?? ?? ?? 00 FF D0 E8 ?? FF FF FF ep_only = false [DIET v1.00d] signature = FC 06 1E 0E 8C C8 01 ?? ?? ?? BA ?? ?? 03 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 00 ep_only = true [DIET v1.44, v1.45f] signature = F8 9C 06 1E 57 56 52 51 53 50 0E FC 8C C8 BA ?? ?? 03 D0 52 ep_only = true [Ding Boy's PE-lock Phantasm v0.8] signature = 55 57 56 52 51 53 E8 00 00 00 00 5D 8B D5 81 ED 0D 39 40 00 ep_only = true [Ding Boy's PE-lock Phantasm v1.0 / v1.1] signature = 55 57 56 52 51 53 66 81 C3 EB 02 EB FC 66 81 C3 EB 02 EB FC ep_only = true [Ding Boy's PE-lock v0.07] signature = 55 57 56 52 51 53 E8 00 00 00 00 5D 8B D5 81 ED 23 35 40 00 ep_only = true [DJoin v0.7 public (RC4 encryption) -> drmist] signature = C6 05 ?? ?? 40 00 00 C6 05 ?? ?? 40 00 00 ?? ?? ?? ?? ?? ?? ?? ?? 00 ?? ?? ?? ?? 00 ?? ?? ?? ?? ?? 00 ep_only = true [DJoin v0.7 public (xor encryption) -> drmist] signature = C6 05 ?? ?? 40 00 00 ?? ?? ?? ?? ?? ?? ?? ?? 00 ?? ?? ?? ?? 00 ?? ?? ?? ?? ?? 00 ep_only = true [DOS/16M DOS Extender (c) Tenberry Software Inc 1987-1995] signature = BF ?? ?? 8E C7 8E D7 BC ?? ?? 36 ?? ?? ?? ?? FF ?? ?? ?? 36 ?? ?? ?? ?? BE ?? ?? AC 8A D8 B7 00 ?? ?? 8B ?? ?? ?? 4F 8E C7 ep_only = true [Dr.Web Virus-Finding Engine -> InSoft EDV-Systeme] signature = B8 01 00 00 00 C2 0C 00 8D 80 00 00 00 00 8B D2 8B ?? 24 04 ep_only = true [DSHIELD] signature = 06 E8 ?? ?? 5E 83 EE ?? 16 17 9C 58 B9 ?? ?? 25 ?? ?? 2E ep_only = true [dUP 2.x Patcher --> www.diablo2oo2.cjb.net] signature = 8B CB 85 C9 74 ?? 80 3A 01 74 08 AC AE 75 0A 42 49 EB EF 47 46 42 49 EB E9 ep_only = false [DxPack 1.0] signature = 60 E8 ?? ?? ?? ?? 5D 8B FD 81 ED ?? ?? ?? ?? 2B B9 ?? ?? ?? ?? 81 EF ?? ?? ?? ?? 83 BD ?? ?? ?? ?? ?? 0F 84 ep_only = true [E language] signature = E8 06 00 00 00 50 E8 ?? 01 00 00 55 8B EC 81 C4 F0 FE FF FF ep_only = true [E.S.O. Eclipse Operating System v.2.08 + DOS Extender] signature = 8C C8 8E D8 BA ?? ?? E8 ?? ?? BB ?? ?? 8C C0 2B D8 B4 4A CD 21 BA ?? ?? 73 ?? E9 ep_only = true [E2C by DoP] signature = BE ?? ?? BF ?? ?? B9 ?? ?? FC 57 F3 A5 C3 ep_only = true [Elicense System V4.0.0.0 -> ViaTech Inc] signature = 00 00 00 00 63 79 62 00 65 6C 69 63 65 6E 34 30 2E 64 6C 6C 00 00 00 00 ep_only = false [Embed PE v1.13 -> cyclotron] signature = 83 EC 50 60 68 5D B9 52 5A E8 2F 99 00 00 DC 99 F3 57 05 68 ep_only = true [EmbedPE v1.24 -> cyclotron] signature = 83 EC 50 60 68 ?? ?? ?? ?? E8 CB FF 00 00 ep_only = true [EmbedPE V1.X -> cyclotron] signature = 83 EC 50 60 68 ?? ?? ?? ?? E8 ?? ?? 00 00 ep_only = true [EncryptPE 1.2003.5.18 -> WFS] signature = 60 9C 64 FF 35 00 00 00 00 E8 79 ep_only = true [EncryptPE 2.2004.8.10 - 2.2005.3.14 -> WFS] signature = 60 9C 64 FF 35 00 00 00 00 E8 7A ep_only = true [EncryptPE V2.2006.1.15 -> WFS] signature = 45 50 45 3A 20 45 6E 63 72 79 70 74 50 45 20 56 32 2E 32 30 30 36 2E 31 2E 31 35 ep_only = false [EncryptPE V2.2006.7.10 -> WFS] signature = 60 9C 64 FF 35 00 00 00 00 E8 73 01 00 00 ep_only = true [Enigma protector 1.10/1.11 -> Vladimir Sukhov] signature = 60 E8 00 00 00 00 5D 83 ED 06 81 ED ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? E8 01 00 00 00 9A 83 C4 04 EB 02 FF 35 60 E8 24 00 00 00 00 00 FF EB 02 CD 20 8B 44 24 0C 83 80 B8 00 00 00 03 31 ep_only = false [ENIGMA Protector V1.0-V1.2-> Sukhov Vladimir] signature = 60 E8 00 00 00 00 5D 83 ?? ?? 81 ep_only = true [ENIGMA Protector V1.1 CracKed By: shoooo & fly -> Sukhov Vladimir] signature = 60 E8 00 00 00 00 5D 83 C5 FA 81 ep_only = true [ENIGMA Protector V1.1-> Sukhov Vladimir] signature = 60 E8 00 00 00 00 5D 83 ?? ?? 81 ep_only = true [ENIGMA Protector V1.1-V1.2-> Sukhov Vladimir] signature = 60 E8 00 00 00 00 5D 83 ED 06 81 ep_only = true [EPW v1.2] signature = 06 57 1E 56 55 52 51 53 50 2E ?? ?? ?? ?? 8C C0 05 ?? ?? 2E ?? ?? ?? 8E D8 A1 ?? ?? 2E ep_only = true [EPW v1.30] signature = 06 57 1E 56 55 52 51 53 50 2E 8C 06 08 00 8C C0 83 C0 10 2E ep_only = true [Escargot V0.1 -> ++Meat] signature = EB 04 40 30 2E 31 60 68 61 ep_only = true [Exact Audio Copy -> (UnknownCompiler)] signature = E8 ?? ?? ?? 00 31 ED 55 89 E5 81 EC ?? 00 00 00 8D BD ?? FF FF FF B9 ?? 00 00 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 ep_only = true [Excalibur 1.03 -> forgot] signature = E9 00 00 00 00 60 E8 14 00 00 00 5D 81 ED 00 00 00 00 ep_only = true [EXE joiner -> Amok] signature = A1 14 A1 40 00 C1 E0 02 A3 18 A1 40 ep_only = true [Exe Locker 1.0 -> IonIce] signature = E8 00 00 00 00 60 8B 6C 24 20 81 ED 05 00 00 00 ep_only = true [EXE Manager Version 3.0 1994 (c) Solar Designer] signature = B4 30 1E 06 CD 21 2E ?? ?? ?? BF ?? ?? B9 ?? ?? 33 C0 2E ?? ?? 47 E2 ep_only = true [EXE Shield v0.1b - v0.3b, v0.3 -> SMoKE] signature = E8 04 00 00 00 83 60 EB 0C 5D EB 05 ep_only = true [Exe Shield v2.7] signature = EB 06 68 F4 86 06 00 C3 9C 60 E8 02 00 00 ep_only = true [Exe Shield vx.x] signature = 65 78 65 73 68 6C 2E 64 6C 6C C0 5D 00 ep_only = true [EXE Stealth v2.7] signature = EB 00 60 EB 00 E8 00 00 00 00 5D 81 ED D3 26 40 ep_only = true [EXE Stealth v2.71] signature = EB 00 60 EB 00 E8 00 00 00 00 5D 81 ED B0 27 40 ep_only = true [EXE Stealth v2.72] signature = EB 00 EB 2F 53 68 61 72 65 77 61 72 65 20 2D 20 ep_only = true [EXE Stealth v2.74 -> WebToolMaster] signature = EB 00 EB 17 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 60 90 E8 00 00 00 00 5D ep_only = true [EXE2COM (Encrypted without selfcheck)] signature = B3 ?? B9 ?? ?? BE ?? ?? BF ?? ?? EB ?? 54 69 ?? ?? ?? ?? 03 ?? ?? 32 C3 AA 43 49 E3 ?? EB ?? BE ?? ?? 8B C6 ep_only = true [EXE2COM (Limited)] signature = BE ?? ?? 8B 04 3D ?? ?? 74 ?? BA ?? ?? B4 09 CD 21 CD 20 ep_only = true [EXE2COM (Method 1)] signature = 8C DB BE ?? ?? 8B C6 B1 ?? D3 E8 03 C3 03 ?? ?? A3 ?? ?? 8C C8 05 ?? ?? A3 ep_only = true [EXE2COM (Packed)] signature = BD ?? ?? 89 ?? ?? ?? 81 ?? ?? ?? ?? ?? 8C ?? ?? ?? 8C C8 05 ?? ?? 8E C0 BE ?? ?? 8B FE 0E 57 54 59 F3 A4 06 68 ?? ?? CB ep_only = true [EXE32Pack v1.3x] signature = 3B ?? 74 02 81 83 55 3B ?? 74 02 81 ?? 53 3B ?? 74 01 ?? ?? ?? ?? ?? 02 81 ?? ?? E8 ?? ?? ?? ?? 3B 74 01 ?? 5D 8B D5 81 ED ep_only = true [EXECryptor v1.3.0.45] signature = E8 24 ?? ?? ?? 8B 4C 24 0C C7 01 17 ?? 01 ?? C7 81 ?? ?? ?? ?? ?? ?? ?? 31 C0 89 41 14 89 41 18 80 A1 ep_only = true [EXECryptor V2.1X -> SoftComplete.com] signature = E9 ?? ?? ?? ?? 66 9C 60 50 8D 88 ?? ?? ?? ?? 8D 90 04 16 ?? ?? 8B DC 8B E1 ep_only = true [EXECryptor vx.x.x.x] signature = E8 24 ?? ?? ?? 8B 4C 24 0C C7 01 17 ?? 01 ?? C7 81 B8 ?? ?? ?? ?? ?? ?? ?? 31 C0 89 41 ep_only = true [EXELOCK 666 1.5] signature = BA ?? ?? BF ?? ?? EB ?? EA ?? ?? ?? ?? 79 ?? 7F ?? 7E ?? 1C ?? 48 78 ?? E3 ?? 45 14 ?? 5A E9 ep_only = true [ExeLock v1.00] signature = 06 8C C8 8E C0 BE ?? ?? 26 ?? ?? 34 ?? 26 ?? ?? 46 81 ?? ?? ?? 75 ?? 40 B3 ?? B3 ?? F3 ep_only = true [EXEPACK (LINK) v3.60, v3.64, v3.65 or 5.01.21] signature = 8C C0 05 ?? ?? 0E 1F A3 ?? ?? 03 ?? ?? ?? 8E C0 8B ?? ?? ?? 8B ?? 4F 8B F7 FD F3 A4 50 B8 ?? ?? 50 CB ep_only = true [EXEStealth 2.75 -> WebtoolMaster] signature = 90 60 90 E8 00 00 00 00 5D 81 ED D1 27 40 00 B9 15 00 00 00 ep_only = true [ExeTools v2.1 Encruptor by DISMEMBER] signature = E8 ?? ?? 5D 83 ?? ?? 1E 8C DA 83 ?? ?? 8E DA 8E C2 BB ?? ?? BA ?? ?? 85 D2 74 ep_only = true [eXPressor 1.1 -> CGSoftLabs] signature = E9 ?? ?? 00 00 E9 ?? ?? 00 00 E9 ?? 12 00 00 E9 ?? 0C 00 00 E9 ?? ?? 00 00 E9 ?? ?? 00 00 E9 ?? ?? 00 00 ep_only = true [eXpressor v1.2 -> CGSoftLabs] signature = 55 8B EC 81 EC D4 01 00 00 53 56 57 EB 0C 45 78 50 72 2D 76 ep_only = true [eXPressor V1.3 -> CGSoftLabs] signature = 55 8B EC 83 EC ?? 53 56 57 EB 0C 45 ep_only = true [eXpressor v1.4.5 -> CGSoftLabs] signature = 55 8B EC 83 EC 58 53 56 57 83 65 DC 00 F3 EB 0C ep_only = true [eXpressor v1.4.5 -> CGSoftLabs] signature = 55 8B EC 83 EC ?? 53 56 57 83 65 DC 00 F3 EB 0C ep_only = true [FASM v1.3x] signature = 6A ?? FF 15 ?? ?? ?? ?? A3 ep_only = true [FileShield] signature = 50 1E EB ?? 90 00 00 8B D8 ep_only = true [Free Pascal v0.99.10] signature = ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? E8 00 6E 00 00 55 89 E5 8B 7D 0C 8B 75 08 89 F8 8B 5D 10 29 ep_only = true [Free Pascal v1.0.10 (win32 GUI)] signature = C6 05 ?? ?? ?? 00 00 E8 ?? ?? 00 00 50 E8 00 00 00 00 FF 25 ?? ?? ?? 00 55 89 E5 ep_only = false [FreeBASIC v0.11] signature = E8 ?? ?? 00 00 E8 01 00 00 00 C3 55 89 E5 ep_only = true [FreePascal 1.0.4 Win32 -> (Berczi Gabor, Pierre Muller & Peter Vreman)] signature = 55 89 E5 C6 05 ?? ?? ?? ?? 00 E8 ?? ?? ?? ?? 55 31 ED 89 E0 A3 ?? ?? ?? ?? 66 8C D5 89 2D ?? ?? ?? ?? DB E3 D9 2D ?? ?? ?? ?? 31 ED E8 ?? ?? ?? ?? 5D E8 ?? ?? ?? ?? C9 C3 ep_only = false [FreePascal 1.0.4 Win32 DLL -> (Berczi Gabor, Pierre Muller & Peter Vreman)] signature = C6 05 ?? ?? ?? ?? 00 55 89 E5 53 56 57 8B 7D 08 89 3D ?? ?? ?? ?? 8B 7D 0C 89 3D ?? ?? ?? ?? 8B 7D 10 89 3D ?? ?? ?? ?? E8 ?? ?? ?? ?? 5F 5E 5B 5D C2 0C 00 ep_only = false [Freshbind v2.0 -> gFresh] signature = 64 A1 00 00 00 00 55 89 E5 6A FF 68 1C A0 41 00 ep_only = true [from NORMAN Anti-Virus Utilites] signature = E8 ?? ?? 5B 52 45 2F 4E 44 44 53 5D 0D 0A ep_only = true [Frusion -> biff] signature = 83 EC 0C 53 55 56 57 68 04 01 00 00 C7 44 24 14 ep_only = true [FSG 1.31 -> dulek/xt] signature = BE ?? ?? ?? 00 BF ?? ?? ?? 00 BB ?? ?? ?? 00 53 BB ?? ?? ?? 00 B2 80 ep_only = true [FSG v1.10 (Eng) -> bart/xt -> (Watcom C/C++ EXE)] signature = EB 02 CD 20 03 ?? 8D ?? 80 ?? ?? 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? EB 02 ep_only = true [FSG v1.10 (Eng) -> dulek/xt] signature = EB 01 ?? EB 02 ?? ?? ?? 80 ?? ?? 00 ep_only = true [FSG v1.10 (Eng) -> dulek/xt] signature = EB 02 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? F6 ep_only = true [FSG v1.10 (Eng) -> dulek/xt] signature = BB D0 01 40 ?? BF ?? 10 40 ?? BE ep_only = true [FSG v1.10 (Eng) -> dulek/xt] signature = E8 01 00 00 00 ?? ?? E8 ?? 00 00 00 ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Microsoft Visual C++ 6.0 / 7.0)] signature = 87 FE ?? 02 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 00 ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Microsoft Visual C++ 6.0 / 7.0)] signature = EB 02 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 ep_only = true [FSG v1.10 (Eng) -> dulek/xt -> (Microsoft Visual C++ 6.0)] signature = EB 02 CD 20 ?? CF ?? ?? 80 ?? ?? 00 ?? ?? ?? ?? ?? ?? ?? ?? 00 ep_only = true [FSG v1.33] signature = BE A4 01 40 00 AD 93 AD 97 AD 56 96 B2 80 A4 B6 80 FF 13 73 ep_only = true [FSG v2.0 -> bart/xt] signature = 87 25 ?? ?? ?? 00 61 94 55 A4 B6 80 FF 13 ep_only = true [Gamehouse Media Protector Version Unknown] signature = 68 ?? ?? ?? ?? 6A 00 FF 15 ?? ?? ?? ?? 50 FF 15 ?? ?? ?? 00 00 00 00 00 00 00 00 ep_only = true [Gardian Angel 1.0] signature = 06 8C C8 8E D8 8E C0 FC BF ?? ?? EB ep_only = true [Go32Stub v.2.00 DOS-Extender] signature = 0E 1F 8C 1E ?? ?? 8C 06 ?? ?? FC B4 30 CD 21 80 ep_only = true [Go32Stub v.2.00T DOS-Extender] signature = 0E 1F 8C 1E ?? ?? 8C 06 ?? ?? FC B4 30 CD 21 3C ep_only = true [Guardant Stealth aka Novex Dongle] signature = 55 8B EC 83 C4 F0 60 E8 51 FF FF FF ep_only = true [HACKSTOP v1.00] signature = FA BD ?? ?? FF E5 6A 49 48 0C ?? E4 ?? 3F 98 3F ep_only = true [HACKSTOP v1.18] signature = 52 BA ?? ?? 5A EB ?? 9A ?? ?? ?? ?? 30 CD 21 ?? ?? ?? FD 02 ?? ?? CD 20 0E 1F 52 BA ?? ?? 5A EB ep_only = true [HACKSTOP v1.19] signature = 52 BA ?? ?? 5A EB ?? 9A ?? ?? ?? ?? 30 CD 21 ?? ?? ?? D6 02 ?? ?? CD 20 0E 1F 52 BA ?? ?? 5A EB ep_only = true [HEALTH v.5.1 by Muslim M.Polyak] signature = 1E E8 ?? ?? 2E 8C 06 ?? ?? 2E 89 3E ?? ?? 8B D7 B8 ?? ?? CD 21 8B D8 0E 1F E8 ?? ?? 06 57 A1 ?? ?? 26 ep_only = true [ILUCRYPT v4.015 [exe]] signature = 8B EC FA C7 46 F7 ?? ?? 42 81 FA ?? ?? 75 F9 FF 66 F7 ep_only = true [iLUCRYPT v4.018 [exe]] signature = 8B EC FA C7 ?? ?? ?? ?? 4C 4C C3 FB BF ?? ?? B8 ?? ?? 2E ?? ?? D1 C8 4F 81 ep_only = true [Inbuild v1.0 [hard]] signature = B9 ?? ?? BB ?? ?? 2E ?? ?? 2E ?? ?? 43 E2 ep_only = true [Inno Setup Module] signature = 55 8B EC 83 C4 ?? 53 56 57 33 C0 89 45 F0 89 45 ?? 89 45 ?? E8 ?? ?? FF FF E8 ?? ?? FF FF E8 ?? ?? FF FF E8 ?? ?? FF FF E8 ?? ?? FF FF ep_only = false [Install Stub 32-bit] signature = 55 8B EC 81 EC 14 ?? 00 00 53 56 57 6A 00 FF 15 ?? ?? ?? ?? 68 ?? ?? ?? ?? FF 15 ?? ?? ?? ?? 85 C0 74 29 ep_only = true [InstallShield 2000] signature = 55 8B EC 6A FF 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 64 A1 ?? ?? ?? ?? 50 64 89 25 ?? ?? ?? ?? 83 C4 ?? 53 56 57 ep_only = true [JDPack] signature = 60 E8 ?? ?? ?? ?? 5D 8B D5 81 ED ?? ?? ?? ?? 2B 95 ?? ?? ?? ?? 81 EA 06 ?? ?? ?? 89 95 ?? ?? ?? ?? 83 BD 45 ep_only = true [KGCrypt vx.x] signature = E8 ?? ?? ?? ?? 5D 81 ED ?? ?? ?? ?? 64 A1 30 ?? ?? ?? 84 C0 74 ?? 64 A1 20 ?? ?? ?? 0B C0 74 ep_only = true [Krypton v0.2] signature = 8B 0C 24 E9 0A 7C 01 ?? AD 42 40 BD BE 9D 7A 04 ep_only = true [kryptor 5] signature = E8 03 ?? ?? ?? E9 EB 6C 58 40 FF E0 ep_only = true [kryptor 6] signature = E8 03 ?? ?? ?? E9 EB 68 58 33 D2 74 02 E9 E9 40 42 75 02 ep_only = true [LamerStop v1.0c (c) Stefan Esser] signature = E8 ?? ?? 05 ?? ?? CD 21 33 C0 8E C0 26 ?? ?? ?? 2E ?? ?? ?? 26 ?? ?? ?? 2E ?? ?? ?? BA ?? ?? FA ep_only = true [Lattice C v1.01] signature = FA B8 ?? ?? 05 ?? ?? B1 ?? D3 E8 8C CB 03 C3 8E D8 8E D0 26 ?? ?? ?? ?? 2B D8 F7 ?? ?? ?? 75 ?? B1 ?? D3 E3 EB ep_only = true [Lattice C v3.0] signature = FA B8 ?? ?? 8E D8 B8 ?? ?? 8E ep_only = true [LCC Win32 v1.x] signature = 64 A1 ?? ?? ?? ?? 55 89 E5 6A FF 68 ?? ?? ?? ?? 68 9A 10 40 ?? 50 ep_only = true [LCC-Win32] signature = 64 A1 00 00 00 00 55 89 E5 6A FF 68 10 30 40 00 68 9A 10 40 ep_only = true [Libraries by John Socha] signature = BB ?? ?? 8E DB 2E 89 ?? ?? ?? 8D ?? ?? ?? 25 ?? ?? FA 8E D3 8B E0 FB 26 A1 A3 ?? ?? B4 30 CD 21 ep_only = true [Lockless Intro Pack] signature = 2C E8 ?? ?? ?? ?? 5D 8B C5 81 ED F6 73 ?? ?? 2B 85 ?? ?? ?? ?? 83 E8 06 89 85 ep_only = true [LSI C-86 Run-Time Libray] signature = B8 ?? ?? 8E C0 06 17 BC ?? ?? 26 8C ?? ?? ?? B4 30 CD 21 26 A3 ?? ?? FC ep_only = true [MASM / TASM] signature = 6A 00 E8 ?? ?? 00 00 A3 ?? 32 40 00 E8 ?? ?? 00 00 ep_only = true [MEGALITE v1.20a] signature = B8 ?? ?? BA ?? ?? 05 ?? ?? 3B 2D 73 ?? 72 ?? B4 09 BA ?? ?? CD 21 CD 90 ep_only = true [MESS v1.20] signature = ?? ?? ?? ?? FA B9 ?? ?? F3 ?? ?? E3 ?? EB ?? EB ?? B6 ep_only = true [MetaWare High C + Phar Lap DOS Extender 1983-89] signature = B8 ?? ?? 8E D8 B8 ?? ?? CD 21 A3 ?? ?? 3C 03 7D ?? B4 09 ep_only = true [MetaWare High C Run-Time Library + Phar Lap DOS Extender 1983-89] signature = B8 ?? ?? 50 B8 ?? ?? 50 CB ep_only = true [Metrowerks CodeWarrior v2.0 (Console)] signature = 55 89 E5 55 B8 FF FF FF FF 50 50 68 ?? ?? ?? ?? 64 FF 35 00 00 00 00 64 89 25 00 00 00 00 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? E8 ?? ?? 00 00 E8 ?? ?? 00 00 E8 ep_only = false [Mew 10 exe-coder 1.0 -> Northfox [HCC]] signature = 33 C0 E9 ?? ?? FF FF 6A ?? ?? ?? ?? ?? 70 ep_only = true [MEW 11 SE v1.2 -> Northfox[HCC]] signature = E9 ?? ?? ?? FF 0C ?? ?? 00 00 00 00 00 00 00 00 00 ?? ?? ?? 00 0C ?? ?? 00 ep_only = true [MEW 5 1.0 -> Northfox] signature = BE 5B 00 40 00 AD 91 AD 93 53 AD 96 56 5F AC C0 C0 ep_only = true [MicroJoiner 1.1 -> coban2k] signature = BE 0C 70 40 00 BB F8 11 40 00 33 ED 83 EE 04 39 2E 74 11 ep_only = true [MicroJoiner 1.5 -> coban2k] signature = BF 05 10 40 00 83 EC 30 8B EC E8 C8 FF FF FF E8 C3 FF FF FF ep_only = true [MicroJoiner 1.6 -> coban2k] signature = 33 C0 64 8B 38 48 8B C8 F2 AF AF 8B 1F 66 33 DB 66 81 3B ep_only = true [Microsoft Basic Compiler v5.60 1982-97] signature = 9A ?? ?? ?? ?? 9A ?? ?? ?? ?? 9A ?? ?? ?? ?? 33 DB BA ?? ?? 9A ?? ?? ?? ?? C7 06 ?? ?? ?? ?? 33 DB ep_only = true [Microsoft C] signature = B4 30 CD 21 3C 02 73 ?? B8 ep_only = true [Microsoft C (1988/1989)] signature = B4 30 CD 21 3C 02 73 ?? CD 20 BF ?? ?? 8B ?? ?? ?? 2B F7 81 ?? ?? ?? 72 ep_only = true [Microsoft C for Windows (1)] signature = 33 ED 55 9A ?? ?? ?? ?? 0B C0 74 ep_only = true [Microsoft C for Windows (2)] signature = 8C D8 ?? 45 55 8B EC 1E 8E D8 57 56 89 ep_only = true [Microsoft C Library 1985] signature = BF ?? ?? 8B 36 ?? ?? 2B F7 81 FE ?? ?? 72 ?? BE ?? ?? FA 8E D7 81 C4 ?? ?? FB 73 ep_only = true [Microsoft C v1.04] signature = FA B8 ?? ?? 8E D8 8E D0 26 8B ?? ?? ?? 2B D8 F7 ?? ?? ?? 75 ?? B1 04 D3 E3 EB ep_only = true [Microsoft CAB SFX] signature = E8 0A 00 00 00 E9 7A FF FF FF CC CC CC CC CC ep_only = true [Microsoft FORTRAN] signature = FC 1E B8 ?? ?? 8E D8 9A ?? ?? ?? ?? 81 ?? ?? ?? 8B EC 8C DB 8E C3 BB ?? ?? B9 ?? ?? 9A ?? ?? ?? ?? 80 ?? ?? ?? ?? 74 ?? E9 ep_only = true [Microsoft Visual Basic v5.0/v6.0] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 00 00 00 00 00 00 30 00 00 00 ep_only = true [Microsoft Visual Basic v6.0 DLL] signature = 5A 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 52 E9 ?? ?? FF ep_only = true [Microsoft Visual C 2.0] signature = 64 A1 00 00 00 00 55 8B EC 6A FF 68 ep_only = true [Microsoft Visual C v2.0] signature = 53 56 57 BB ?? ?? ?? ?? 8B ?? ?? ?? 55 3B FB 75 ep_only = true [Microsoft Visual C++] signature = 8B 44 24 08 83 ?? ?? 74 ep_only = true [Microsoft Visual C++] signature = 8B 44 24 08 56 83 E8 ?? 74 ?? 48 75 ep_only = true [Microsoft Visual C++ (3.0 old crap)] signature = 64 A1 00 00 00 00 55 ?? ?? 6A FF 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 50 ?? ?? ?? ?? ?? 00 00 83 EC 10 ep_only = true [Microsoft Visual C++ 7.1] signature = 8B FF 55 8B EC 56 33 F6 39 75 0C 0F 84 ?? ?? ?? ?? 83 7D 0C 01 A1 ?? ?? ?? ?? 8B 00 A3 ?? ?? ?? ?? 0F 84 ?? ?? ?? ?? 39 75 0C 0F 84 ?? ?? ?? ?? 33 C0 40 5E 5D C2 0C 00 ep_only = false [Microsoft Visual C++ 7.1] signature = 8B FF 55 8B EC 56 33 F6 39 75 0C 0F 84 ?? ?? ?? ?? 83 7D 0C 01 A1 ?? ?? ?? ?? 8B 00 A3 ?? ?? ?? ?? 0F 85 ?? ?? ?? ?? 68 80 00 00 00 FF 15 ?? ?? ?? ?? 3B C6 59 A3 ?? ?? ?? ?? 0F 84 ?? ?? ?? ?? 89 30 A1 ?? ?? ?? ?? 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? A3 ep_only = false [Microsoft Visual C++ 7.1] signature = 8B FF 55 8B EC 56 33 F6 39 75 0C 75 0E 39 35 ?? ?? ?? ?? 7E 2D FF 0D ?? ?? ?? ?? 83 7D 0C 01 A1 ?? ?? ?? ?? 8B 00 A3 ?? ?? ?? ?? 75 3D 68 80 00 00 00 FF 15 ?? ?? ?? ?? 3B C6 59 A3 ?? ?? ?? ?? 75 04 33 C0 EB 67 89 30 A1 ?? ?? ?? ?? 68 ?? ?? ?? ?? 68 ep_only = false [Microsoft Visual C++ DLL] signature = 53 56 57 BB 01 ?? ?? ?? 8B ?? 24 14 ep_only = true [Microsoft Visual C++ DLL] signature = 55 8B EC 56 57 BF 01 00 00 00 8B 75 0C ep_only = true [Microsoft Visual C++ DLL] signature = 53 55 56 8B 74 24 14 85 F6 57 B8 01 00 00 00 ep_only = true [Microsoft Visual C++ v4.2] signature = 64 A1 00 00 00 00 55 8B EC 6A FF 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 50 64 ?? ?? ?? ?? ?? ?? 83 ?? ?? 53 56 57 89 ?? ?? FF ep_only = true [Microsoft Visual C++ v4.2] signature = 64 A1 00 00 00 00 55 8B EC 6A FF 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 50 64 ?? ?? ?? ?? ?? ?? 83 ?? ?? 53 56 57 89 ?? ?? C7 ep_only = true [Microsoft Visual C++ v4.2 DLL] signature = 53 B8 ?? ?? ?? ?? 8B ?? ?? ?? 56 57 85 DB 55 75 ep_only = true [Microsoft Visual C++ v6.0] signature = 55 8B EC 6A FF 68 ?? ?? ?? 00 68 ?? ?? ?? 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC ?? 53 56 57 89 65 E8 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? FF ep_only = false [Microsoft Visual C++ v6.0 DLL] signature = 55 8D 6C ?? ?? 81 EC ?? ?? ?? ?? 8B 45 ?? 83 F8 01 56 0F 84 ?? ?? ?? ?? 85 C0 0F 84 ep_only = true [Microsoft Visual C++ v6.0 DLL] signature = 55 8B EC 53 8B 5D 08 56 8B 75 0C ep_only = true [Microsoft Visual C++ v6.0 DLL] signature = 55 8B EC ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 10 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 ep_only = false [Microsoft Visual C++ v6.0 SPx] signature = 55 8B EC 83 EC 44 56 FF 15 ?? ?? ?? ?? 6A 01 8B F0 FF 15 ep_only = true [Microsoft Visual C++ v6.0 SPx] signature = 55 8B EC 83 EC 44 56 FF 15 ?? ?? ?? ?? 8B F0 8A ?? 3C 22 ep_only = true [Microsoft Visual C++ v7.0 (64 Bit)] signature = ?? ?? 41 00 00 00 00 00 00 00 63 00 00 00 00 00 ?? 00 ?? ?? ?? ?? ?? 00 ?? 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 ?? 00 ?? 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 ?? ?? 20 ?? ?? 00 ?? 00 ?? ?? ?? ?? ?? ?? ?? 00 ep_only = false [Microsoft Visual C++ v7.0 DLL] signature = 55 8B EC 53 8B 5D 08 56 8B 75 0C 85 F6 57 8B 7D 10 ep_only = true [Microsoft Visual C++ v7.1 DLL] signature = 6A 0C 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 33 C0 40 89 45 E4 ep_only = true [Microsoft Visual C++ v7.1 DLL (Debug)] signature = 55 8B EC ?? ?? 0C 83 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 8B ep_only = true [Microsoft Visual C++ v7.1 EXE] signature = 6A ?? 68 ?? ?? ?? ?? E8 ep_only = true [Microsoft Visual C++ vx.x] signature = 55 8B EC 56 57 BF ?? ?? ?? ?? 8B ?? ?? 3B F7 0F ep_only = true [Microsoft Visual C++ vx.x] signature = 53 55 56 8B ?? ?? ?? 85 F6 57 B8 ?? ?? ?? ?? 75 ?? 8B ?? ?? ?? ?? ?? 85 C9 75 ?? 33 C0 5F 5E 5D 5B C2 ep_only = true [MinGW GCC DLL v2xx] signature = 55 89 E5 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 ep_only = true [MinGW GCC v2.x] signature = 55 89 E5 E8 ?? ?? ?? ?? C9 C3 ?? ?? 45 58 45 ep_only = true [MinGW GCC v2.x] signature = 55 89 E5 ?? ?? ?? ?? ?? ?? FF FF ?? ?? ?? ?? ?? 00 ?? ?? 00 ?? ?? ?? 00 00 00 00 ep_only = true [MoleBox V2.X -> MoleStudio.com] signature = E8 00 00 00 00 60 E8 4F 00 00 00 ep_only = true [MS FORTRAN Library 19??] signature = FC 1E B8 ?? ?? 8E D8 9A ?? ?? ?? ?? 81 ?? ?? ?? 8B EC B8 ?? ?? 8E C0 26 C7 ?? ?? ?? ?? ?? 26 ep_only = true [MS FORTRAN Library 19??] signature = FC 1E B8 ?? ?? 8E D8 9A ?? ?? ?? ?? 81 ?? ?? ?? 8B EC 8C DB 8E C3 BB ?? ?? 9A ?? ?? ?? ?? 9B DB E3 9B D9 2E ?? ?? 33 C9 ep_only = true [MS Run-Time Library (OS/2) & FORTRAN Compiler 1989] signature = B4 30 CD 21 86 E0 2E A3 ?? ?? 3D ?? ?? 73 ep_only = true [MS Run-Time Library 1987] signature = B4 30 CD 21 3C 02 73 ?? 9A ?? ?? ?? ?? B8 ?? ?? 50 9A ?? ?? ?? ?? 92 ep_only = true [MS Run-Time Library 1990 (07)] signature = 2E 8C 1E ?? ?? BB ?? ?? 8E DB 1E E8 ?? ?? 1F 8B 1E ?? ?? 0B DB 74 ?? 8C D1 8B D4 FA 8E D3 BC ?? ?? FB ep_only = true [MS Run-Time Library 1990 (10)] signature = E8 ?? ?? 2E FF 2E ?? ?? BB ?? ?? E8 ?? ?? CB ep_only = true [MS Run-Time Library 1990, 1992 (09)] signature = B4 30 CD 21 3C 02 73 ?? C3 8C DF 8B 36 ?? ?? 2E ep_only = true [MS Run-Time Library 1992 (13)] signature = BF ?? ?? 8E DF FA 8E D7 81 C4 ?? ?? FB 33 DB B8 ?? ?? CD 21 ep_only = true [MS Run-Time Library 1992 (14)] signature = 1E 06 8C C8 8E D8 8C C0 A3 ?? ?? 83 C0 ?? A3 ?? ?? B4 30 ep_only = true [nbuild v1.0 [soft]] signature = B9 ?? ?? BB ?? ?? C0 ?? ?? 80 ?? ?? 43 E2 ep_only = true [NeoLite v1.0] signature = 8B 44 24 04 8D 54 24 FC 23 05 ?? ?? ?? ?? E8 ?? ?? ?? ?? FF 35 ?? ?? ?? ?? 50 FF 25 ep_only = true [NeoLite v2.0] signature = E9 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 4E 65 6F 4C 69 74 65 ep_only = true [NeoLite v2.00] signature = 8B 44 24 04 23 05 ?? ?? ?? ?? 50 E8 ?? ?? ?? ?? 83 C4 04 FE 05 ?? ?? ?? ?? 0B C0 74 ep_only = true [NFO v1.0] signature = 8D 50 12 2B C9 B1 1E 8A 02 34 77 88 02 42 E2 F7 C8 8C ep_only = true [NoodleCrypt v2.0] signature = EB 01 9A E8 ?? 00 00 00 EB 01 9A E8 ?? ?? 00 00 EB 01 9A E8 ?? ?? 00 00 EB 01 ep_only = false [Noodlecrypt2 -> r!sc] signature = EB 01 9A E8 76 00 00 00 ep_only = true [NsPack V1.1 -> LiuXingPing] signature = 9C 60 E8 00 00 00 00 5D B8 57 84 40 00 2D 50 84 40 00 ep_only = true [nSpack V1.3 -> LiuXingPing] signature = 9C 60 E8 00 00 00 00 5D B8 B3 85 40 00 2D AC 85 40 00 ep_only = true [NsPack V1.4 -> LiuXingPing] signature = 9C 60 E8 00 00 00 00 5D B8 B1 85 40 00 2D AA 85 40 00 ep_only = true [Nullsoft Install System v1.98] signature = 83 EC 0C 53 56 57 FF 15 2C 81 40 ep_only = true [Nullsoft PIMP Install System v1.x] signature = 83 EC 5C 53 55 56 57 FF 15 ?? ?? ?? 00 ep_only = true [NX PE Packer v1.0] signature = FF 60 FF CA FF 00 BA DC 0D E0 40 00 50 00 60 00 70 00 80 00 ep_only = true [Obsidium 1.2.0.0 -> Obsidium Software] signature = EB 02 ?? ?? E8 3F 1E 00 00 ep_only = true [Obsidium v1.1.1.1] signature = EB 02 ?? ?? E8 E7 1C 00 00 ep_only = true [Obsidium V1.2 -> Obsidium Software] signature = EB 02 ?? ?? E8 77 1E 00 00 ep_only = true [Obsidium V1.2.5.8 -> Obsidium Software] signature = EB 01 ?? E8 ?? 00 00 00 ep_only = true [Obsidium V1.25 -> Obsidium Software] signature = E8 0E 00 00 00 8B 54 24 0C 83 82 B8 00 00 00 0D 33 C0 C3 ep_only = true [Obsidium V1.3.0.0 -> Obsidium Software] signature = EB 04 ?? ?? ?? ?? E8 ?? 00 00 00 ep_only = true [Obsidium V1.3.0.0 -> Obsidium Software] signature = EB 04 ?? ?? ?? ?? E8 29 00 00 00 ep_only = true [Obsidium V1.3.0.4 -> Obsidium Software] signature = EB 02 ?? ?? E8 ?? 00 00 00 ep_only = true [ORiEN V2.12 -> Fisun A.V.] signature = E9 5D 01 00 00 CE D1 CE CD 0D ep_only = true [Packanoid -> Arkanoid] signature = BF 00 10 40 00 BE ?? ?? ?? 00 E8 9D 00 00 00 B8 ep_only = true [Packed with: PKLITE v1.50 with CRC check (1)] signature = 1F B4 09 BA ?? ?? CD 21 B8 ?? ?? CD 21 ep_only = true [Packman V0.0.0.1 -> Bubbasoft] signature = 60 E8 00 00 00 00 58 8D ?? ?? ?? ?? ?? 8D ?? ?? ?? ?? ?? 8D ?? ?? ?? ?? ?? 8D ?? ?? 48 ep_only = true [PAK-SFX Archive] signature = 55 8B EC 83 ?? ?? A1 ?? ?? 2E ?? ?? ?? 2E ?? ?? ?? ?? ?? 8C D7 8E C7 8D ?? ?? BE ?? ?? FC AC 3C 0D ep_only = true [PassEXE v2.0] signature = 06 1E 0E 0E 07 1F BE ?? ?? B9 ?? ?? 87 14 81 ?? ?? ?? EB ?? C7 ?? ?? ?? 84 00 87 ?? ?? ?? FB 1F 58 4A ep_only = true [Password protector my SMT] signature = E8 ?? ?? ?? ?? 5D 8B FD 81 ?? ?? ?? ?? ?? 81 ?? ?? ?? ?? ?? 83 ?? ?? 89 ?? ?? ?? ?? ?? 8D ?? ?? ?? ?? ?? 8D ?? ?? ?? ?? ?? 46 80 ?? ?? 74 ep_only = true [PC Shrinker v0.20] signature = E8 E8 01 ?? ?? 60 01 AD B3 27 40 ?? 68 ep_only = true [PC Shrinker v0.29] signature = ?? BD ?? ?? ?? ?? 01 AD 55 39 40 ?? 8D B5 35 39 40 ep_only = true [PC Shrinker v0.45] signature = ?? BD ?? ?? ?? ?? 01 AD E3 38 40 ?? FF B5 DF 38 40 ep_only = true [PC-Guard v4.05d, v4.10d, v4.15d] signature = FC 55 50 E8 00 00 00 00 5D EB 01 ep_only = true [PCPEC "alpha - preview"] signature = 53 51 52 56 57 55 E8 00 00 00 00 5D 8B CD 81 ED 33 30 40 00 ep_only = true [PCPEC [alpha]] signature = 53 51 52 56 57 55 E8 ?? ?? ?? ?? 5D 8B CD 81 ?? ?? ?? ?? ?? 2B ?? ?? ?? ?? ?? 83 ep_only = true [PCrypt v3.51] signature = 50 43 52 59 50 54 FF 76 33 2E 35 31 00 E9 ep_only = true [PcShare ÎļþÀ¦°óÆ÷ v4.0 -> ÎÞ¿É·ÇÒé] signature = 55 8B EC 6A FF 68 90 34 40 00 68 B6 28 40 00 64 A1 ep_only = true [PCShrink 0.71 beta] signature = 01 AD 54 3A 40 00 FF B5 50 3A 40 00 6A 40 FF 95 88 3A 40 00 ep_only = true [PCShrink v0.40b] signature = 9C 60 BD ?? ?? ?? ?? 01 ?? ?? ?? ?? ?? FF ?? ?? ?? ?? ?? 6A ?? FF ?? ?? ?? ?? ?? 50 50 2D ep_only = true [PE Crypt v1.00/v1.01] signature = E8 ?? ?? ?? ?? 5B 83 EB 05 EB 04 52 4E 44 21 EB 02 CD 20 EB ep_only = true [PE Crypt v1.02] signature = E8 ?? ?? ?? ?? 5B 83 EB 05 EB 04 52 4E 44 ep_only = true [PE Crypt32 (Console v1.0, v1.01, v1.02)] signature = E8 00 00 00 00 5B 83 EB 05 EB 04 52 4E 44 21 EB 02 CD 20 EB ep_only = true [PE Crypt32 v1.02] signature = E8 00 00 00 00 5B 83 ?? ?? EB ?? 52 4E 44 21 ep_only = true [PE Diminisher V0.1 -> Teraphy] signature = 53 51 52 56 57 55 E8 00 00 00 00 ep_only = true [PE Lock NT v2.01] signature = EB 03 CD 20 EB EB 01 EB 1E EB 01 EB EB 02 CD 20 9C EB 03 CD ep_only = true [PE Lock NT v2.02c] signature = EB 02 C7 85 1E EB 03 CD 20 EB EB 01 EB 9C EB 01 EB EB 02 CD ep_only = true [PE Lock NT v2.03] signature = EB 02 C7 85 1E EB 03 CD 20 C7 9C EB 02 69 B1 60 EB 02 EB 01 ep_only = true [PE Lock NT v2.04] signature = EB ?? CD ?? ?? ?? ?? ?? CD ?? ?? ?? ?? ?? EB ?? EB ?? EB ?? EB ?? CD ?? ?? ?? ?? ?? E8 ?? ?? ?? ?? E9 ?? ?? ?? ?? 50 C3 ep_only = true [PE Pack v0.99] signature = 60 E8 ?? ?? ?? ?? 5D 83 ED 06 80 BD E0 04 ?? ?? 01 0F 84 F2 ep_only = true [PE Packer] signature = FC 8B 35 70 01 40 ?? 83 EE 40 6A 40 68 ?? 30 10 ep_only = true [PE-Armor 0.46 -> Hying] signature = E8 AA 00 00 00 2D ?? ?? ?? 00 00 00 00 00 00 00 00 3D ep_only = true [PE-Armor 0.49 -> Hying] signature = 56 52 51 53 55 E8 15 01 00 00 32 ?? ?? 00 00 00 00 00 ep_only = true [PE-Crypt 1.02] signature = E8 00 00 00 00 5B 83 EB 05 EB 04 52 4E 44 21 85 C0 73 02 F7 ep_only = true [PE-Crypter] signature = 60 E8 00 00 00 00 5D EB 26 ep_only = true [PE-PACK 0.99] signature = 60 E8 00 00 00 00 5D 83 ED 06 80 BD E0 04 00 00 01 0F 84 F2 ep_only = true [PE-PACK v1.0 by ANAKiN 1998 (???)] signature = 74 ?? E9 ?? ?? ?? ?? 00 00 00 00 ep_only = true [PE-PROTECT 0.9] signature = E9 CF 00 00 00 0D 0A 0D 0A C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 ep_only = true [PE-SHiELD 0.2] signature = 60 E8 00 00 00 00 41 4E 41 4B 49 4E 5D 83 ED 06 EB 02 EA 04 ep_only = true [PEArmor V0.7X -> Hying] signature = 60 E8 00 00 00 00 5D 81 ED ?? ?? ?? ?? 8D B5 ?? ?? ?? ?? 55 56 81 C5 ?? ?? ?? ?? 55 C3 ep_only = true [PECompact v0.92] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 BD ?? ?? ?? ?? B9 02 ?? ?? ?? B0 90 8D BD A5 4F 40 ?? F3 AA 01 AD 04 51 40 ?? FF B5 ep_only = true [PECompact v0.94] signature = EB 06 68 ?? ?? ?? ?? C3 9C 60 E8 ?? ?? ?? ?? 5D 55 58 81 ED ?? ?? ?? ?? 2B 85 ?? ?? ?? ?? 01 85 ?? ?? ?? ?? 50 B9 02 ep_only = true [PECompact v0.971 - v0.976] signature = EB 06 68 C3 9C 60 E8 5D 55 5B 81 ED 8B 85 01 85 66 C7 85 ep_only = true [PECompact v1.84] signature = 33 C0 8B C4 83 C0 04 93 8B E3 8B 5B FC 81 ep_only = true [PEEncrypt v4.0b (JunkCode)] signature = 66 ?? ?? 00 66 83 ?? 00 ep_only = true [PELOCKnt 2.04] signature = EB 03 CD 20 C7 1E EB 03 CD 20 EA 9C EB 02 EB 01 EB 01 EB 60 ep_only = true [PEncrypt v3.1] signature = E9 ?? ?? ?? 00 F0 0F C6 ep_only = true [PENightMare v1.3] signature = 60 E8 00 00 00 00 5D B9 ?? ?? ?? ?? 80 31 15 41 81 F9 ep_only = true [PESHiELD v0.1b MTE] signature = E8 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? B9 1B 01 ?? ?? D1 ep_only = true [PESHiELD v0.2 / v0.2b / v0.2b2] signature = 60 E8 ?? ?? ?? ?? 41 4E 41 4B 49 4E 5D 83 ED 06 EB 02 EA 04 ep_only = true [PESHiELD v0.251] signature = 5D 83 ED 06 EB 02 EA 04 8D ep_only = true [PEShit] signature = B8 ?? ?? ?? ?? B9 ?? ?? ?? ?? 83 F9 00 7E 06 80 30 ?? 40 E2 F5 E9 ?? ?? ?? FF ep_only = true [PEStubOEP v1.x] signature = 40 48 BE 00 ?? ?? 00 40 48 60 33 C0 B8 ?? ?? ?? 00 FF E0 C3 C3 ep_only = false [Petite 1.2] signature = 66 9C 60 E8 CA 00 00 00 03 00 04 00 05 00 06 00 07 00 08 00 ep_only = true [PEtite v1.2] signature = 9C 60 E8 CA ?? ?? ?? 03 ?? 04 ?? 05 ?? 06 ?? 07 ?? 08 ep_only = true [PEtite v1.3] signature = ?? ?? ?? ?? ?? 66 9C 60 50 8D 88 ?? F0 ?? ?? 8D 90 04 16 ?? ?? 8B DC 8B E1 68 ?? ?? ?? ?? 53 50 80 04 24 08 50 80 04 24 42 ep_only = true [Petite v1.4] signature = B8 ?? ?? ?? ?? 66 9C 60 50 8B D8 03 00 68 ?? ?? ?? ?? 6A 00 ep_only = true [PEtite v1.4] signature = 66 9C 60 50 8B D8 03 ?? 68 54 BC ?? ?? 6A ?? FF 50 14 8B CC ep_only = true [PEtite v2.1] signature = B8 ?? ?? ?? ?? 6A ?? 68 ?? ?? ?? ?? 64 FF 35 ?? ?? ?? ?? 64 89 25 ?? ?? ?? ?? 66 9C 60 50 ep_only = true [Petite v2.1 (1)] signature = B8 ?? ?? ?? ?? 68 ?? ?? ?? ?? 64 ?? ?? ?? ?? ?? ?? 64 ?? ?? ?? ?? ?? ?? 66 9C 60 50 ep_only = true [Petite v2.1 (2)] signature = B8 ?? ?? ?? ?? 6A 00 68 ?? ?? ?? ?? 64 ?? ?? ?? ?? ?? ?? 64 ?? ?? ?? ?? ?? ?? 66 9C 60 50 ep_only = true [PEtite v2.2] signature = B8 ?? ?? ?? ?? 68 ?? ?? ?? ?? 64 FF 35 ?? ?? ?? ?? 64 89 25 ?? ?? ?? ?? 66 9C 60 50 ep_only = true [Petite v?.? (after v1.4)] signature = B8 ?? ?? ?? ?? 66 9C 60 50 8D ?? ?? ?? ?? ?? 68 ?? ?? ?? ?? 83 ep_only = true [PEtite vx.x] signature = B8 ?? ?? ?? ?? 66 9C 60 50 ep_only = true [PEX v0.99] signature = 60 E8 01 ?? ?? ?? ?? 83 C4 04 E8 01 ?? ?? ?? ?? 5D 81 ep_only = true [PGMPACK v0.13] signature = FA 1E 17 50 B4 30 CD 21 3C 02 73 ?? B4 4C CD 21 FC BE ?? ?? BF ?? ?? E8 ?? ?? E8 ?? ?? BB ?? ?? BA ?? ?? 8A C3 8B F3 ep_only = true [PGMPACK v0.14] signature = 1E 17 50 B4 30 CD 21 3C 02 73 ?? B4 4C CD 21 FC BE ?? ?? BF ?? ?? E8 ?? ?? E8 ?? ?? BB ?? ?? BA ?? ?? 8A C3 8B F3 ep_only = true [PIRIT v1.5] signature = B4 4D CD 21 E8 ?? ?? FD E8 ?? ?? B4 51 CD 21 ep_only = true [PKLITE v1.00, v1.03] signature = B8 ?? ?? BA ?? ?? 8C DB 03 D8 3B ep_only = true [PKLITE v1.00c (1)] signature = 2E 8C 1E ?? ?? 8B 1E ?? ?? 8C DA 81 C2 ?? ?? 3B DA 72 ?? 81 EB ?? ?? 83 EB ?? FA 8E D3 BC ?? ?? FB FD BE ?? ?? 8B FE ep_only = true [PKLITE v1.00c (2)] signature = BA ?? ?? A1 ?? ?? 2D ?? ?? 8C CB 81 C3 ?? ?? 3B C3 77 ?? 05 ?? ?? 3B C3 77 ?? B4 09 BA ?? ?? CD 21 CD 20 90 ep_only = true [PKLITE v1.12, v1.15, v1.20 (1)] signature = B8 ?? ?? BA ?? ?? 05 ?? ?? 3B 06 ?? ?? 73 ?? 2D ?? ?? FA 8E D0 FB 2D ?? ?? 8E C0 50 B9 ?? ?? 33 FF 57 BE ?? ?? FC F3 A5 CB B4 09 BA ?? ?? CD 21 CD 20 ep_only = true [PKLITE v1.12, v1.15, v1.20 (2)] signature = B8 ?? ?? BA ?? ?? 3B C4 73 ep_only = true [PKLITE v1.14, v1.15, v1.20 (3)] signature = B8 ?? ?? BA ?? ?? 05 ?? ?? 3B ?? ?? ?? 72 ?? B4 09 BA ?? 01 CD 21 CD 20 4E 6F ep_only = true [PKLITE v1.14, v1.20] signature = B8 ?? ?? BA ?? ?? 05 ?? ?? 3B 06 ?? ?? 72 ?? B4 09 BA ?? ?? CD 21 CD 20 ep_only = true [PKLITE v1.20] signature = B8 ?? ?? BA ?? ?? 05 ?? ?? 3B 06 ?? ?? 72 ?? B4 09 BA ?? ?? CD 21 B4 4C CD 21 ep_only = true [PKLITE v1.50 (1)] signature = 50 B8 ?? ?? BA ?? ?? 05 ?? ?? 3B 06 ?? ?? 72 ?? B4 ?? BA ?? ?? CD 21 B8 ?? ?? CD 21 ep_only = true [PKLITE v2.00c] signature = 50 B8 ?? ?? BA ?? ?? 3B C4 73 ?? 8B C4 2D ?? ?? 25 ?? ?? 8B F8 B9 ?? ?? BE ?? ?? FC ep_only = true [PKLITE32 1.1] signature = 50 4B 4C 49 54 45 33 32 20 43 6F 70 79 72 69 67 68 74 20 31 ep_only = true [PKLITE32 1.1 -> PKWARE Inc.] signature = 68 ?? ?? ?? 00 68 ?? ?? ?? 00 68 00 00 00 00 E8 ?? ?? ?? ?? E9 ep_only = true [PKLITE32 v1.1] signature = 55 8B EC A1 ?? ?? ?? ?? 85 C0 74 09 B8 01 ?? ?? ?? 5D C2 0C ?? 8B 45 0C 57 56 53 8B 5D 10 ep_only = false [PKLITE32 v1.1] signature = 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 68 00 00 00 00 E8 ep_only = true [PKLITE32 v1.1] signature = 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? B8 ?? ?? ?? ?? 2B 44 24 0C 50 ep_only = true [PKTINY v1.0 with TINYPROG v3.8] signature = 2E C6 06 ?? ?? ?? 2E C6 06 ?? ?? ?? 2E C6 06 ?? ?? ?? E9 ?? ?? E8 ?? ?? 83 ep_only = true [PKZIP-SFX v1.1 1989-90] signature = FC 2E 8C 0E ?? ?? A1 ?? ?? 8C CB 81 C3 ?? ?? 3B C3 72 ?? 2D ?? ?? 2D ?? ?? FA BC ?? ?? 8E D0 FB ep_only = true [PLINK86 1984, 1985] signature = FA 8C C7 8C D6 8B CC BA ?? ?? 8E C2 26 ep_only = true [PolyEnE V0.01+ -> Lennart Hedlund] signature = 50 6F 6C 79 45 6E 45 00 4D 65 73 73 61 67 65 42 6F 78 41 00 55 53 45 52 33 32 2E 64 6C 6C ep_only = false [Prepared by SLR (OPTLINK)] signature = 87 C0 55 56 57 52 51 53 50 9C FC 8C DA 83 ?? ?? 16 07 0E 1F ep_only = true [Private EXE Protector 1.8] signature = BB DC EE 0D 76 D9 D0 8D 16 85 D8 90 D9 D0 ep_only = true [Private EXE Protector 2.0 -> SetiSoft] signature = 89 ?? ?? 38 00 00 00 8B ?? 00 00 00 00 81 ?? ?? ?? ?? ?? 89 ?? 00 00 00 00 81 ?? 04 00 00 00 81 ?? 04 00 00 00 81 ?? 00 00 00 00 0F 85 D6 FF FF FF ep_only = false [Private EXE v2.0a] signature = 53 E8 00 00 00 00 5B 8B C3 2D ep_only = true [PrivateEXE v2.0a] signature = 06 60 C8 ?? ?? ?? 0E 68 ?? ?? 9A ?? ?? ?? ?? 3D ?? ?? 0F ?? ?? ?? 50 50 0E 68 ?? ?? 9A ?? ?? ?? ?? 0E ep_only = true [PrivateEXE v2.0a] signature = 53 E8 ?? ?? ?? ?? 5B 8B C3 2D ?? ?? ?? ?? 50 81 ?? ?? ?? ?? ?? 8B ep_only = true [PRO-PACK v2.08, emphasis on packed size, locked] signature = 83 EC ?? 8B EC BE ?? ?? FC E8 ?? ?? 05 ?? ?? 8B C8 E8 ?? ?? 8B ep_only = true [PROTECT! EXE/COM v6.0] signature = 1E B4 30 CD 21 3C 02 73 ?? CD 20 BE ?? ?? E8 ep_only = true [PseudoSigner 0.1 [MEW 11 SE 1.0] --> Anorganix] signature = E9 09 00 00 00 00 00 00 02 00 00 00 0C 90 E9 ep_only = true [PseudoSigner 0.1 [MinGW GCC 2.x] --> Anorganix] signature = 55 89 E5 E8 02 00 00 00 C9 C3 90 90 45 58 45 E9 ep_only = true [PseudoSigner 0.1 [VBOX 4.3 MTE] --> Anorganix] signature = 0B C0 0B C0 0B C0 0B C0 0B C0 0B C0 0B C0 0B C0 E9 ep_only = true [PseudoSigner 0.1 [VOB ProtectCD 5] --> Anorganix] signature = 36 3E 26 8A C0 60 E8 00 00 00 00 E9 ep_only = true [PseudoSigner 0.1 [WATCOM C/C++ EXE] --> Anorganix] signature = E9 00 00 00 00 90 90 90 90 57 41 E9 ep_only = true [PseudoSigner 0.1 [XCR 0.11] --> Anorganix] signature = 60 8B F0 33 DB 83 C3 01 83 C0 01 E9 ep_only = true [PseudoSigner 0.1 [Yoda's Protector 1.02] --> Anorganix] signature = E8 03 00 00 00 EB 01 90 90 E9 ep_only = true [PseudoSigner 0.2 [32Lite 0.03] --> Anorganix] signature = 60 06 FC 1E 07 BE 90 90 90 90 6A 04 68 90 10 90 90 68 ep_only = true [PseudoSigner 0.2 [Borland C++ DLL (Method 2)] --> Anorganix] signature = EB 10 66 62 3A 43 2B 2B 48 4F 4F 4B 90 E9 90 90 90 90 ep_only = true [PseudoSigner 0.2 [CD-Cops II] --> Anorganix] signature = 53 60 BD 90 90 90 90 8D 45 90 8D 5D 90 E8 00 00 00 00 8D 01 ep_only = true [PseudoSigner 0.2 [MEW 11 SE 1.0] --> Anorganix] signature = E9 09 00 00 00 00 00 00 02 00 00 00 0C 90 ep_only = true [PseudoSigner 0.2 [Microsoft Visual Basic 5.0 - 6.0] --> Anorganix] signature = 68 ?? ?? ?? ?? E8 0A 00 00 00 00 00 00 00 00 00 30 00 00 00 ep_only = true [PseudoSigner 0.2 [MinGW GCC 2.x] --> Anorganix] signature = 55 89 E5 E8 02 00 00 00 C9 C3 90 90 45 58 45 ep_only = true [PseudoSigner 0.2 [VBOX 4.3 MTE] --> Anorganix] signature = 0B C0 0B C0 0B C0 0B C0 0B C0 0B C0 0B C0 0B C0 ep_only = true [PseudoSigner 0.2 [VOB ProtectCD 5] --> Anorganix] signature = 36 3E 26 8A C0 60 E8 00 00 00 00 ep_only = true [PseudoSigner 0.2 [WATCOM C/C++ EXE] --> Anorganix] signature = E9 00 00 00 00 90 90 90 90 57 41 ep_only = true [PseudoSigner 0.2 [XCR 0.11] --> Anorganix] signature = 60 8B F0 33 DB 83 C3 01 83 C0 01 ep_only = true [PseudoSigner 0.2 [Yoda's Protector 1.02] --> Anorganix] signature = E8 03 00 00 00 EB 01 90 90 ep_only = true [PUNiSHER V1.5 Demo-> FEUERRADER] signature = EB 04 83 A4 BC CE 60 EB 04 80 BC 04 11 E8 00 00 00 00 ep_only = true [RAZOR 1911 encruptor] signature = E8 ?? ?? BF ?? ?? 3B FC 72 ?? B4 4C CD 21 BE ?? ?? B9 ?? ?? FD F3 A5 FC ep_only = true [RCryptor v1.3 / v1.4 --> Vaska] signature = 55 8B EC 8B 44 24 04 83 E8 4F 68 ?? ?? ?? ?? FF D0 58 59 50 B8 ?? ?? ?? ?? 3D ?? ?? ?? ?? 74 06 80 30 ?? 40 EB F3 ep_only = true [RCryptor v1.3b --> Vaska] signature = 61 83 EF 4F 60 68 ?? ?? ?? ?? FF D7 B8 ?? ?? ?? ?? 3D ?? ?? ?? ?? 74 06 80 30 ?? 40 EB F3 ep_only = true [RCryptor v1.5 (Private) --> Vaska] signature = 83 2C 24 4F 68 ?? ?? ?? ?? FF 54 24 04 83 44 24 04 4F B8 ?? ?? ?? ?? 3D ?? ?? ?? ?? 74 06 80 30 ?? 40 EB F3 ep_only = true [RCryptor v1.6 -> Vaska] signature = 33 D0 68 ?? ?? ?? ?? FF D2 B8 ?? ?? ?? ?? 3D ?? ?? ?? ?? 74 06 80 30 ?? 40 EB F3 ep_only = true [RCryptor v1.6b / v1.6c --> Vaska] signature = 8B C7 03 04 24 2B C7 80 38 50 0F 85 1B 8B 1F FF 68 ?? ?? ?? ?? B8 ?? ?? ?? ?? 3D ?? ?? ?? ?? 74 06 80 30 ?? 40 EB F3 ep_only = true [RCryptor v1.6d --> Vaska] signature = 60 90 61 61 80 7F F0 45 90 60 0F 85 1B 8B 1F FF 68 ?? ?? ?? ?? B8 ?? ?? ?? ?? 90 3D ?? ?? ?? ?? 74 06 80 30 ?? 40 EB F3 ep_only = true [REALbasic] signature = 55 89 E5 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 50 ?? ?? ?? ?? ?? 00 ep_only = true [REC v0.32] signature = 06 1E 52 B8 ?? ?? 1E CD 21 86 E0 3D ep_only = true [REC v0.34 [3]] signature = 06 1E B4 30 CD 21 3C 02 73 ?? 33 C0 06 50 CB ep_only = true [REC, C0ded by ROSE] signature = 06 1E 0E 0E 07 1F B4 30 CD 21 86 E0 3D 00 03 73 ?? CD 20 EB ep_only = true [REC.Small v1.02] signature = 8C D8 1E E8 ?? ?? 83 ?? ?? 5D B9 ?? ?? 81 ?? ?? ?? 40 8E D8 2B DB B2 ?? ?? ?? FE C2 43 83 ep_only = true [ReversingLabsProtector 0.7.4 beta -> Ap0x] signature = 68 00 00 41 00 E8 01 00 00 00 C3 C3 ep_only = true [RLP V0.7.3.beta -> ap0x] signature = 2E 72 6C 70 00 00 00 00 00 50 00 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 00 00 00 00 00 00 00 00 00 20 00 00 E0 ep_only = false [RLPack Full Edition 1.17 -> Ap0x] signature = 60 E8 00 00 00 00 8B 2C 24 83 C4 04 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 8D B5 ?? ?? ?? ?? 8D 9D ?? ?? ?? ?? 33 FF ep_only = true [RLPack Full Edition 1.17 DLL -> Ap0x] signature = 80 7C 24 08 01 0F 85 ?? ?? ?? ?? 60 E8 00 00 00 00 8B 2C 24 83 C4 04 8D B5 ?? ?? ?? ?? 8D 9D ?? ?? ?? ?? 33 FF E8 ep_only = true [RLPack V1.12-V1.14 (aPlib 0.43) -> ap0x] signature = 60 E8 00 00 00 00 8B 2C 24 83 C4 04 8D B5 ?? ?? ?? ?? 8D 9D ?? ?? ?? ?? 33 FF EB 0F FF ?? ?? ?? FF ?? ?? ?? D3 83 C4 ?? 83 C7 ?? 83 3C 37 00 75 EB ep_only = true [ROD High TECH -> Ayman] signature = 60 8B 15 1D 13 40 00 F7 E0 8D 82 83 19 00 00 E8 58 0C 00 00 ep_only = true [SCAN /AV] signature = 1E 0E 1F B8 ?? ?? 8E C0 26 8A 1E ?? ?? 80 ?? ?? 72 ep_only = true [SEA-AXE] signature = FC BC ?? ?? 0E 1F E8 ?? ?? 26 A1 ?? ?? 8B 1E ?? ?? 2B C3 8E C0 B1 ?? D3 E3 ep_only = true [SEA-AXE v2.2] signature = FC BC ?? ?? 0E 1F A3 ?? ?? E8 ?? ?? A1 ?? ?? 8B ?? ?? ?? 2B C3 8E C0 B1 03 D3 E3 8B CB BF ?? ?? 8B F7 F3 A5 ep_only = true [SecureEXE 3.0 -> ZipWorx] signature = E9 B8 00 00 00 ?? ?? ?? 00 ?? ?? ?? 00 ?? ?? ?? 00 00 00 00 00 00 ep_only = true [SEN Debug Protector???] signature = BB ?? ?? ?? ?? 00 ?? ?? ?? ?? ?? 29 ?? ?? 4E E8 ep_only = true [Shrink v1.0] signature = 50 9C FC BE ?? ?? BF ?? ?? 57 B9 ?? ?? F3 A4 8B ?? ?? ?? BE ?? ?? BF ?? ?? F3 A4 C3 ep_only = true [Shrink Wrap v1.4] signature = 58 60 8B E8 55 33 F6 68 48 01 ?? ?? E8 49 01 ?? ?? EB ep_only = true [Shrinker v3.3] signature = 83 3D ?? ?? ?? 00 00 55 8B EC 56 57 75 65 68 00 01 00 00 E8 ep_only = true [Simple UPX Cryptor V30.4.2005 -> MANtiCORE] signature = 60 B8 ?? ?? ?? ?? B9 ?? ?? ?? ?? ?? ?? ?? ?? E2 FA 61 68 ?? ?? ?? ?? C3 ep_only = true [Simple UPX Cryptor v30.4.2005 [multi layer encryption] --> MANtiCORE] signature = 60 B8 ?? ?? ?? ?? B9 18 00 00 00 80 34 08 ?? E2 FA 61 68 ?? ?? ?? ?? C3 ep_only = true [SimplePack V1.1X-V1.2X (Method2) -> bagie] signature = 4D 5A 90 EB 01 00 52 E9 ?? 01 00 00 50 45 00 00 4C 01 02 00 ep_only = true [SLR (OPTLINK)] signature = BF ?? ?? 8E DF FA 8E D7 81 C4 ?? ?? FB B4 30 CD 21 ep_only = true [SLR (OPTLINK) (1)] signature = 87 C0 EB ?? 71 ?? 02 D8 ep_only = true [SLVc0deProtector 1.1x -> SLV / ICU] signature = E8 00 00 00 00 58 C6 00 EB C6 40 01 08 FF E0 E9 4C ?? ?? 00 ep_only = true [SLVc0deProtector v1.1 -> SLV (h)] signature = E8 00 00 00 00 58 C6 00 EB C6 40 01 08 FF E0 E9 4C ep_only = true [SmokesCrypt v1.2] signature = 60 B8 ?? ?? ?? ?? B8 ?? ?? ?? ?? 8A 14 08 80 F2 ?? 88 14 08 41 83 F9 ?? 75 F1 ep_only = true [Soft Defender v1.1x -> Randy Li] signature = 74 07 75 05 ?? ?? ?? ?? ?? 74 1F 75 1D ?? 68 ?? ?? ?? 00 59 9C 50 74 0A 75 08 ?? 59 C2 04 00 ?? ?? ?? E8 F4 FF FF FF ?? ?? ?? 78 0F 79 0D ep_only = true [SoftSentry v2.11] signature = 55 8B EC 83 EC ?? 53 56 57 E9 50 ep_only = true [SoftSentry v3.0] signature = 55 8B EC 83 EC ?? 53 56 57 E9 B0 06 ep_only = true [SoftWrap] signature = 52 53 51 56 57 55 E8 ?? ?? ?? ?? 5D 81 ED 36 ?? ?? ?? E8 ?? 01 ?? ?? 60 BA ?? ?? ?? ?? E8 ?? ?? ?? ?? 5F ep_only = true [Spalsher 1.0 - 3.0 -> Amok] signature = 9C 60 8B 44 24 24 E8 00 00 00 00 ep_only = true [Spalsher v1.0 - v3.0] signature = 9C 60 8B 44 24 24 E8 ?? ?? ?? ?? 5D 81 ED ?? ?? ?? ?? 50 E8 ED 02 ?? ?? 8C C0 0F 84 ep_only = true [SPEC b2] signature = 55 57 51 53 E8 ?? ?? ?? ?? 5D 8B C5 81 ED ?? ?? ?? ?? 2B 85 ?? ?? ?? ?? 83 E8 09 89 85 ?? ?? ?? ?? 0F B6 ep_only = true [StarForce Protection Driver -> Protection Technology] signature = 57 68 ?? 0D 01 00 68 00 ?? ?? 00 E8 50 ?? FF FF 68 ?? ?? ?? 00 68 ?? ?? ?? 00 68 ?? ?? ?? 00 68 ?? ?? ?? 00 68 ?? ?? ?? 00 ep_only = true [StarForce V3.X -> StarForce Copy Protection System] signature = 68 ?? ?? ?? ?? FF 25 ?? ?? ?? ?? 00 00 00 00 00 ep_only = true [StarForce V3.X DLL -> StarForce Copy Protection System] signature = E8 ?? ?? ?? ?? 00 00 00 00 00 00 ep_only = true [Stealth PE v1.1] signature = BA ?? ?? ?? 00 FF E2 BA ?? ?? ?? 00 B8 ?? ?? ?? ?? 89 02 83 C2 03 B8 ?? ?? ?? ?? 89 02 83 C2 FD FF E2 ep_only = true [STNPEE 1.13] signature = 55 57 56 52 51 53 E8 00 00 00 00 5D 8B D5 81 ED 97 3B 40 00 ep_only = true [Stone`s PE Encruptor v1.13] signature = 55 57 56 52 51 53 E8 ?? ?? ?? ?? 5D 8B D5 81 ep_only = true [Stony Brook Pascal v6.14] signature = 31 ED 9A ?? ?? ?? ?? 55 89 E5 ?? EC ?? ?? 9A ep_only = true [Stony Brook Pascal+ v7.0] signature = 31 ED 9A ?? ?? ?? ?? 55 89 E5 81 EC ?? ?? B8 ?? ?? 0E 50 9A ?? ?? ?? ?? BE ?? ?? 1E 0E BF ?? ?? 1E 07 1F FC ep_only = true [Stranik 1.3 Modula/C/Pascal] signature = E8 ?? ?? FF FF E8 ?? ?? FF FF ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 ep_only = true [SuckStop v1.11] signature = EB ?? ?? ?? BE ?? ?? B4 30 CD 21 EB ?? 9B ep_only = true [SVK-Protector v1.11] signature = 60 E8 ?? ?? ?? ?? 5D 81 ED 06 ?? ?? ?? 64 A0 23 ep_only = true [Symantec Visual Cafe v3.0] signature = 64 8B 05 ?? ?? ?? ?? 55 8B EC 6A FF 68 ?? ?? 40 ?? 68 ?? ?? 40 ?? 50 64 89 25 ?? ?? ?? ?? 83 EC 08 50 53 56 57 89 65 E8 C7 45 FC ep_only = true [T-PACK v0.5c -m1] signature = 68 ?? ?? FD 60 BE ?? ?? BF ?? ?? B9 ?? ?? F3 A4 8B F7 BF ?? ?? FC 46 E9 8E FE ep_only = true [T-PACK v0.5c -m2] signature = 68 ?? ?? FD 60 BE ?? ?? BF ?? ?? B9 ?? ?? F3 A4 8B F7 BF ?? ?? FC 46 E9 CE FD ep_only = true [TASM / MASM] signature = 6A 00 E8 ?? ?? 00 00 A3 ?? ?? 40 00 ep_only = true [tElock 0.99 - 1.0 private -> tE!] signature = E9 ?? ?? FF FF 00 00 00 ?? ?? ?? ?? ?? ?? ?? 00 00 00 00 00 00 00 00 00 ep_only = true [tElock v0.60] signature = E9 00 00 00 00 60 E8 00 00 00 00 58 83 C0 08 ep_only = true [tElock v0.70] signature = 60 E8 BD 10 00 00 C3 83 E2 00 F9 75 FA 70 ep_only = true [tElock v0.71] signature = 60 E8 ED 10 00 00 C3 83 ep_only = true [tElock v0.71b2] signature = 60 E8 44 11 00 00 C3 83 ep_only = true [tElock v0.71b7] signature = 60 E8 48 11 00 00 C3 83 ep_only = true [tElock v0.80] signature = 60 E8 F9 11 00 00 C3 83 ep_only = true [tElock v0.85f] signature = 60 E8 02 00 00 00 CD 20 E8 00 00 00 00 5E 2B C9 58 74 02 ep_only = true [tElock v0.90] signature = ?? ?? E8 02 00 00 00 E8 00 E8 00 00 00 00 5E 2B ep_only = true [tElock v0.98] signature = E9 25 E4 FF FF 00 00 00 ?? ?? ?? ?? 1E ep_only = true [Thinstall vx.x] signature = B8 EF BE AD DE 50 6A ?? FF 15 10 19 40 ?? E9 AD FF FF FF ep_only = true [TopSpeed v3.01 1989] signature = 1E BA ?? ?? 8E DA 8B ?? ?? ?? 8B ?? ?? ?? FF ?? ?? ?? 50 53 ep_only = true [Turbo C] signature = BC ?? ?? E8 ?? ?? 2E 8E ?? ?? ?? E8 ?? ?? 2E 80 ?? ?? ?? ?? 75 ?? E8 ?? ?? 8B C3 2E F7 ?? ?? ?? E8 ep_only = true [Turbo C 1987 or Borland C++ 1991] signature = FB BA ?? ?? 2E 89 ?? ?? ?? B4 30 CD 21 ep_only = true [Turbo C 1988] signature = 8C D8 BB ?? ?? 8E DB 8C D3 8B CC FA 8E ?? ?? ?? BC ep_only = true [Turbo C 1990 or Turbo C 1988] signature = BA ?? ?? 2E 89 ?? ?? ?? B4 30 CD 21 8B ?? ?? ?? 8B ?? ?? ?? 8E DA ep_only = true [Turbo C++ 3.0 1990] signature = 8C CA 2E 89 16 ?? ?? B4 30 CD 21 8B 2E ?? ?? 8B ?? ?? ?? 8E DA A3 ?? ?? 8C 06 ep_only = true [Turbo or Borland Pascal v7.0] signature = 9A ?? ?? ?? ?? C8 ?? ?? ?? 9A ?? ?? ?? ?? 09 C0 75 ?? EB ?? 8D ?? ?? ?? 16 57 6A ?? 9A ?? ?? ?? ?? BF ?? ?? 1E 57 68 ep_only = true [Turbo Pascal v2.0 1984] signature = ?? ?? ?? 90 90 CD AB ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 38 34 ep_only = true [Turbo Pascal v3.0 1985] signature = ?? ?? ?? 90 90 CD AB ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 38 35 ep_only = true [TurboBAT v3.10 .. 5.0] signature = BA ?? ?? B4 09 ?? ?? 06 B8 ?? ?? 8E C0 B9 ?? ?? 26 ?? ?? ?? ?? 80 ?? ?? 26 ?? ?? ?? 24 0F 3A C4 ?? ?? 26 ?? ?? ?? 24 0F 3A C4 ep_only = true [TurboBAT v3.10 .. 5.0 (Patched)] signature = 90 90 90 90 90 90 90 06 B8 ?? ?? 8E C0 B9 ?? ?? 26 ?? ?? ?? ?? 80 ?? ?? 26 ?? ?? ?? 24 ?? 3A C4 90 90 ep_only = true [TXT2COM (Read-A-Matic v1.0)] signature = B8 ?? ?? 8E D8 8C 06 ?? ?? FA 8E D0 BC ?? ?? FB B4 ?? CD 21 A3 ?? ?? 06 50 B4 34 CD 21 ep_only = true [UG2002 Cruncher v0.3b3] signature = 60 E8 ?? ?? ?? ?? 5D 81 ED ?? ?? ?? ?? E8 0D ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 58 ep_only = true [Unknown by SMT] signature = 60 BE ?? ?? ?? ?? 8D BE ?? ?? ?? ?? 83 ?? ?? 57 EB ep_only = true [Unknown encryptor (2) - "PK7Tjrvx"] signature = 06 B4 52 CD 21 07 E8 ?? ?? B4 62 CD 21 E8 ep_only = true [Unknown packer (01)] signature = EB ?? ?? BE ?? ?? BF ?? ?? 2E ep_only = true [Unknown packer (02)] signature = FA 8C DE 8C CF 8E DF 8E C7 83 C7 ?? BB ep_only = true [Unknown packer (03)] signature = 06 1E 57 56 50 53 51 52 BD ?? ?? 0E 1F 8C ep_only = true [Unknown packer (04)] signature = BC ?? ?? C3 2E FF 2E ?? ?? CF ep_only = true [Unknown packer (06)] signature = FA B8 ?? ?? BE ?? ?? 33 F0 0E 17 2E ?? ?? ?? BA ?? ?? 87 E6 5B 33 DC ep_only = true [Unknown packer (07)] signature = 8C C8 05 ?? ?? 50 B8 ?? ?? 50 B0 ?? 06 8C D2 06 83 ep_only = true [Unknown Protected Mode compiler (1)] signature = FA BC ?? ?? 8C C8 8E D8 E8 ?? ?? E8 ?? ?? E8 ?? ?? 66 B8 ?? ?? ?? ?? 66 C1 ep_only = true [Unknown Protected Mode compiler (2)] signature = FA FC 0E 1F E8 ?? ?? 8C C0 66 0F B7 C0 66 C1 E0 ?? 66 67 A3 ep_only = true [Upack v0.10 - v0.12Beta -> Sign by hot_UNP] signature = BE 48 01 ?? ?? ?? ?? ?? 95 A5 33 C0 ep_only = true [Upack V0.1X-V0.2X -> Dwing] signature = BE 88 01 ?? ?? AD 8B F8 95 ep_only = true [Upack v0.21Beta -> Sign by hot_UNP] signature = BE 88 01 ?? ?? AD 8B F8 ?? ?? ?? ?? 33 ep_only = true [Upack v0.22 ~ v0.23Beta -> Sign by hot_UNP] signature = 6A 07 BE 88 01 40 00 AD 8B F8 59 95 F3 A5 ep_only = true [Upack v0.24 ~ v0.28alpha -> Sign by hot_UNP] signature = BE 88 01 40 00 AD ?? ?? 95 AD 91 F3 A5 AD ep_only = true [Upack v0.29 beta -> Dwing] signature = E9 ?? ?? ?? ?? 42 79 44 77 69 6E 67 40 00 00 00 50 45 00 00 4C 01 02 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 29 ep_only = true [Upack v0.2Beta] signature = BE 88 01 ?? ?? AD 8B F8 95 A5 33 C0 33 ep_only = true [Upack v0.30 beta -> Dwing] signature = E9 ?? ?? ?? ?? 42 79 44 77 69 6E 67 40 00 00 00 50 45 00 00 4C 01 02 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 30 ep_only = true [Upack v0.31 beta -> Dwing] signature = E9 ?? ?? ?? ?? 42 79 44 77 69 6E 67 40 00 00 00 50 45 00 00 4C 01 02 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 31 ep_only = true [Upack v0.32 beta -> Dwing] signature = E9 ?? ?? ?? ?? 42 79 44 77 69 6E 67 40 00 00 00 50 45 00 00 4C 01 02 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 32 ep_only = true [Upack v0.33 ~ v0.34 Beta -> Sign by hot_UNP] signature = ?? ?? ?? ?? 59 F3 A5 83 C8 FF 8B DF AB 40 AB 40 ep_only = true [Upack V0.36 -> Dwing] signature = BE ?? ?? ?? ?? FF 36 E9 C3 00 00 00 ep_only = true [Upack V0.37-V0.39 -> Dwing] signature = BE ?? ?? ?? ?? AD 50 FF ?? ?? EB ep_only = true [Upack v0.39 final -> Sign by hot_UNP] signature = 56 10 E2 E3 B1 04 D3 E0 03 E8 8D 53 18 33 C0 55 40 51 D3 E0 8B EA 91 ep_only = false [Upack v0.39 final -> Sign by hot_UNP] signature = FF 76 38 AD 50 8B 3E BE F0 ?? ?? ?? 6A 27 59 F3 A5 FF 76 04 83 C8 FF ep_only = false [Upack V0.3X -> Dwing] signature = 60 E8 09 00 00 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? 33 C9 5E 87 0E ep_only = true [Upack_Patch -> Sign by hot_UNP] signature = 81 3A 00 00 00 02 00 00 00 00 ep_only = true [Upack_Patch or any Version -> Sign by hot_UNP] signature = 60 E8 09 00 00 00 ?? ?? ?? 00 E9 06 02 ep_only = true [Upack_Unknown (DLL ???) -> Sign by hot_UNP] signature = 60 E8 09 00 00 00 17 CD 00 00 E9 06 02 ep_only = true [UPX 0.50 - 0.70] signature = 60 E8 00 00 00 00 58 83 E8 3D ep_only = true [UPX 0.72] signature = 60 E8 00 00 00 00 83 CD FF 31 DB 5E ep_only = true [UPX Modifier v0.1x] signature = 50 BE ?? ?? ?? ?? 8D BE ?? ?? ?? ?? 57 83 CD ep_only = true [UPX Protector v1.0x] signature = EB EC ?? ?? ?? ?? 8A 06 46 88 07 47 01 DB 75 07 ep_only = true [UPX Protector v1.0x (2)] signature = EB ?? ?? ?? ?? ?? 8A 06 46 88 07 47 01 DB 75 07 8B 1E 83 EE FC 11 DB ep_only = false [UPX v0.62] signature = 60 E8 ?? ?? ?? ?? 58 83 ?? ?? 50 8D ?? ?? ?? ?? ?? 57 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 83 ?? ?? 31 DB ?? ?? ?? EB ep_only = true [UPX v0.62 [DLL]] signature = 80 7C 24 08 01 0F 85 95 01 00 00 60 E8 00 00 00 00 58 ep_only = true [UPX v0.70] signature = 8C CB B9 ?? ?? BE ?? ?? 89 F7 1E A9 ?? ?? 8D ?? ?? ?? 8E D8 05 ?? ?? 8E C0 FD F3 A5 FC 2E ?? ?? ?? ?? 73 ep_only = true [UPX v0.70] signature = 60 E8 ?? ?? ?? ?? 58 83 ?? ?? 50 8D ?? ?? ?? ?? ?? 57 66 ?? ?? ?? ?? ?? ?? ?? ?? 8D ?? ?? ?? ?? ?? 83 ?? ?? 31 DB EB ep_only = true [UPX v0.71 [DLL]] signature = 80 7C 24 08 01 0F 85 95 01 00 00 60 E8 00 00 00 00 83 ep_only = true [UPX v0.72] signature = 60 E8 ?? ?? ?? ?? 83 ?? ?? 31 DB 5E 8D ?? ?? ?? ?? ?? 57 66 ?? ?? ?? ?? ?? ?? ?? ?? 81 ?? ?? ?? ?? ?? EB ep_only = true [UPX v0.76.1 [dos exe]] signature = B9 ?? ?? BE ?? ?? 89 F7 1E A9 ?? ?? 8C C8 05 ?? ?? 8E D8 05 ?? ?? 8E C0 FD F3 A5 FC ep_only = true [UPX v0.76.1 [pe exe]] signature = 60 BE ?? ?? ?? ?? 8D ?? ?? ?? ?? ?? 66 ?? ?? ?? ?? ?? ?? 57 83 ?? ?? 31 DB EB ep_only = true [UPX v0.89.6 - v1.02 / v1.05 - v1.22 DLL] signature = 80 7C 24 08 01 0F 85 ?? ?? ?? 00 60 BE ?? ?? ?? ?? 8D BE ?? ?? ?? ?? 57 83 CD FF ep_only = true [UPX v0.89.6 - v1.02 / v1.05 -v1.22 (Delphi) stub] signature = 60 BE ?? ?? ?? ?? 8D BE ?? ?? ?? ?? C7 87 ?? ?? ?? ?? ?? ?? ?? ?? 57 83 CD FF EB 0E ?? ?? ?? ?? 8A 06 46 88 07 47 01 DB 75 07 8B ep_only = true [UPX [com]] signature = B9 ?? ?? BE ?? ?? BF C0 FF FD ep_only = true [UPX$HiT v0.0.1] signature = 94 BC ?? ?? ?? 00 B9 ?? 00 00 00 80 34 0C ?? E2 FA 94 FF E0 61 ep_only = false [Upx-Lock 1.0 - 1.2 --> CyberDoom / Team-X & BoB / BobSoft] signature = 60 E8 00 00 00 00 5D 81 ED 48 12 40 00 60 E8 2B 03 00 00 61 ep_only = true [UPX-Scrambler RC v1.x] signature = 90 61 BE ?? ?? ?? ?? 8D BE ?? ?? ?? ?? 57 83 CD FF ep_only = true [UPXFreak V0.1 -> HMX0101] signature = BE ?? ?? ?? ?? 83 C6 01 FF E6 00 00 ep_only = true [UPXLock v1.0 -> CyberDoom] signature = 60 E8 ?? ?? ?? ?? 5D 81 ED ?? ?? ?? ?? 60 E8 2B 03 00 00 ep_only = true [USERNAME v3.00] signature = FB 2E ?? ?? ?? ?? 2E ?? ?? ?? ?? 2E ?? ?? ?? ?? 2E ?? ?? ?? ?? 8C C8 2B C1 8B C8 2E ?? ?? ?? ?? 2E ?? ?? ?? ?? 33 C0 8E D8 06 0E 07 FC 33 F6 ep_only = true [VBOX v4.2 MTE] signature = 8C E0 0B C5 8C E0 0B C4 03 C5 74 00 74 00 8B C5 ep_only = true [VBOX v4.3 - v4.6] signature = ?? ?? ?? ?? 90 03 C4 33 C4 33 C5 2B C5 33 C5 8B C5 ?? ?? 2B C5 48 ?? ?? 0B C0 86 E0 8C E0 ?? ?? 8C E0 86 E0 03 C4 40 ep_only = false [Vcasm Protector V1.X -> vcasm] signature = EB ?? 5B 56 50 72 6F 74 65 63 74 5D ep_only = true [Vcasm-Protector 1.0e -> vcasm] signature = EB 0A 5B 56 50 72 6F 74 65 63 74 5D ep_only = true [Vcasm-Protector 1.1 - 1.2 -> vcasm] signature = EB 0B 5B 56 50 72 6F 74 65 63 74 5D ep_only = true [vfp&exeNc V5.00 -> Wang JianGuo] signature = 60 E8 00 00 00 00 5D ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 50 64 FF 35 00 00 00 00 64 89 25 00 00 00 00 CC ep_only = true [Video-Lan-Client] signature = 55 89 E5 83 EC 08 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? FF FF ep_only = true [Virogen Crypt v0.75] signature = 9C 55 E8 EC 00 00 00 87 D5 5D 60 87 D5 80 BD 15 27 40 00 01 ep_only = true [Virogen`s PE Shrinker v0.14] signature = 9C 55 E8 ?? ?? ?? ?? 87 D5 5D 60 87 D5 8D ?? ?? ?? ?? ?? 8D ?? ?? ?? ?? ?? 57 56 AD 0B C0 74 ep_only = true [VIRUS - I-Worm.KLEZ] signature = 55 8B EC 6A FF 68 40 D2 40 ?? 68 04 AC 40 ?? 64 A1 ?? ?? ?? ?? 50 64 89 25 ?? ?? ?? ?? 83 EC 58 53 56 57 89 65 E8 FF 15 BC D0 ep_only = false [VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 68 00 00 00 00 8B 74 24 2C 89 E5 81 EC C0 00 00 00 89 E7 03 75 00 8A 06 ep_only = true [VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 06 ep_only = true [VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 0F B7 06 ep_only = true [VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 66 8B 06 ep_only = true [VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 58 ep_only = true [VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 59 ep_only = true [VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5A ep_only = true [VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 EC 5B ep_only = true [VMProtect v1.25 --> PolyTech] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 55 50 52 ep_only = true [VMProtect V1.X -> PolyTech] signature = 9C 60 68 00 00 00 00 8B 74 24 28 BF ?? ?? ?? ?? FC 89 F3 03 34 24 AC 00 D8 ep_only = false [VOB ProtectCD] signature = 5F 81 EF ?? ?? ?? ?? BE ?? ?? 40 ?? 8B 87 ?? ?? ?? ?? 03 C6 57 56 8C A7 ?? ?? ?? ?? FF 10 89 87 ?? ?? ?? ?? 5E 5F ep_only = true [Vterminal V1.0X -> Lei Peng] signature = E8 00 00 00 00 58 05 ?? ?? ?? ?? 9C 50 C2 04 00 ep_only = true [Vx: Caz.1204] signature = E8 ?? ?? 5E 83 EE 03 1E 06 B8 FF FF CD 2F 3C 10 ep_only = true [Vx: CIH Version 1.2 TTIT (! WIN95CIH !)] signature = 55 8D ?? ?? ?? 33 DB 64 87 03 E8 ?? ?? ?? ?? 5B 8D ep_only = true [Vx: Compiler] signature = 8C C3 83 C3 10 2E 01 1E ?? 02 2E 03 1E ?? 02 53 1E ep_only = true [Vx: Danish tiny] signature = 33 C9 B4 4E CD 21 73 02 FF ?? BA ?? 00 B8 ?? 3D CD 21 ep_only = true [Vx: Eddie.2100] signature = E8 ?? ?? 4F 4F 0E E8 ?? ?? 47 47 1E FF ?? ?? CB E8 ?? ?? 84 C0 ?? ?? 50 53 56 57 1E 06 B4 51 CD 21 8E C3 ?? ?? ?? ?? ?? ?? ?? 8B F2 B4 2F CD 21 AC ep_only = true [Vx: Eddie.based.1745] signature = E8 ?? ?? 5E 81 EE ?? ?? FC ?? 2E ?? ?? ?? ?? 4D 5A ?? ?? FA ?? 8B E6 81 ?? ?? ?? FB ?? 3B ?? ?? ?? ?? ?? 50 06 ?? 56 1E 8B FE 33 C0 ?? 50 8E D8 ep_only = true [Vx: Explosion.1000] signature = E8 ?? ?? 5E 1E 06 50 81 ?? ?? ?? 56 FC B8 21 35 CD 21 2E ?? ?? ?? ?? 2E ?? ?? ?? ?? 26 ?? ?? ?? ?? ?? ?? 74 ?? 8C D8 48 8E D8 ep_only = true [Vx: FaxFree.Topo] signature = FA 06 33 C0 8E C0 B8 ?? ?? 26 ?? ?? ?? ?? 50 8C C8 26 ?? ?? ?? ?? 50 CC 58 9D 58 26 ?? ?? ?? ?? 58 26 ?? ?? ?? ?? 07 FB ep_only = true [Vx: GRUNT.2.Family] signature = 48 E2 F7 C3 51 53 52 E8 DD FF 5A 5B 59 C3 B9 00 00 E2 FE C3 ep_only = true [Vx: Hafen.1641] signature = E8 ?? ?? 01 ?? ?? ?? CE CC 25 ?? ?? 25 ?? ?? 25 ?? ?? 40 51 D4 ?? ?? ?? CC 47 CA ?? ?? 46 8A CC 44 88 CC ep_only = true [Vx: Haryanto] signature = 81 EB 2A 01 8B 0F 1E 5B 03 CB 0E 51 B9 10 01 51 CB ep_only = true [Vx: Heloween.1172] signature = E8 ?? ?? 5E 81 EE ?? ?? 56 50 06 0E 1F 8C C0 01 ?? ?? 01 ?? ?? 80 ?? ?? ?? ?? 8B ?? ?? A3 ?? ?? 8A ?? ?? A2 ?? ?? B8 ?? ?? CD 21 3D ep_only = true [Vx: Horse.1776] signature = E8 ?? ?? 5D 83 ?? ?? 06 1E 26 ?? ?? ?? ?? BF ?? ?? 1E 0E 1F 8B F7 01 EE B9 ?? ?? FC F3 A6 1F 1E 07 ep_only = true [Vx: Hymn.1865] signature = E8 ?? ?? 5E 83 EE 4C FC 2E ?? ?? ?? ?? 4D 5A ?? ?? FA 8B E6 81 ?? ?? ?? FB 3B ?? ?? ?? ?? ?? 2E ?? ?? ?? ?? ?? 50 06 56 1E 0E 1F B8 00 C5 CD 21 ep_only = true [Vx: Igor] signature = 1E B8 CD 7B CD 21 81 FB CD 7B 75 03 E9 87 00 33 DB 0E 1F 8C ep_only = true [Vx: Involuntary.1349] signature = ?? BA ?? ?? B9 ?? ?? 8C DD ?? 8C C8 ?? 8E D8 8E C0 33 F6 8B FE FC ?? ?? AD ?? 33 C2 AB ep_only = true [Vx: KBDflags.1024] signature = 8B EC 2E 89 2E 24 03 BC 00 04 8C D5 2E 89 2E 22 ep_only = true [Vx: Keypress.1212] signature = E8 ?? ?? E8 ?? ?? E8 ?? ?? E8 ?? ?? ?? ?? E8 ?? ?? ?? ?? E8 ?? ?? ?? ?? EA ?? ?? ?? ?? 1E 33 DB 8E DB BB ep_only = true [Vx: Kuku.448] signature = AE 75 ED E2 F8 89 3E ?? ?? BA ?? ?? 0E 07 BF ?? ?? EB ep_only = true [Vx: MTE (non-encrypted)] signature = F7 D9 80 E1 FE 75 02 49 49 97 A3 ?? ?? 03 C1 24 FE 75 02 48 ep_only = true [Vx: Ncu-Li.1688] signature = 0E 1E B8 55 AA CD 21 3D 49 4C 74 ?? 0E 0E 1F 07 E8 ep_only = true [Vx: Necropolis] signature = 50 FC AD 33 C2 AB 8B D0 E2 F8 ep_only = true [Vx: Necropolis.1963] signature = B4 30 CD 21 3C 03 ?? ?? B8 00 12 CD 2F 3C FF B8 ?? ?? ?? ?? B4 4A BB 40 01 CD 21 ?? ?? FA 0E 17 BC ?? ?? E8 ?? ?? FB A1 ?? ?? 0B C0 ep_only = true [Vx: Noon.1163] signature = E8 ?? ?? 5B 50 56 B4 CB CD 21 3C 07 ?? ?? 81 ?? ?? ?? 2E ?? ?? 4D 5A ?? ?? BF 00 01 89 DE FC ep_only = true [Vx: November 17.768] signature = E8 ?? ?? 5E 81 EE ?? ?? 50 33 C0 8E D8 80 3E ?? ?? ?? 0E 1F ?? ?? FC ep_only = true [Vx: Number One] signature = F9 07 3C 53 6D 69 6C 65 3E E8 ep_only = true [Vx: Phoenix.927] signature = E8 00 00 5E 81 C6 ?? ?? BF 00 01 B9 04 00 F3 A4 E8 ep_only = true [Vx: Predator.2448] signature = 0E 1F BF ?? ?? B8 ?? ?? B9 ?? ?? 49 ?? ?? ?? ?? 2A C1 4F 4F ?? ?? F9 CC ep_only = true [Vx: Quake.518] signature = 1E 06 8C C8 8E D8 ?? ?? ?? ?? ?? ?? ?? B8 21 35 CD 21 81 ep_only = true [Vx: SK] signature = CD 20 B8 03 00 CD 10 51 E8 00 00 5E 83 EE 09 ep_only = true [Vx: Slowload] signature = 03 D6 B4 40 CD 21 B8 02 42 33 D2 33 C9 CD 21 8B D6 B9 78 01 ep_only = true [Vx: Sonik Youth] signature = 8A 16 02 00 8A 07 32 C2 88 07 43 FE C2 81 FB ep_only = true [Vx: Spanz] signature = E8 00 00 5E 81 EE ?? ?? 8D 94 ?? ?? B4 1A CD 21 C7 84 ep_only = true [Vx: SYP] signature = 47 8B C2 05 1E 00 52 8B D0 B8 02 3D CD 21 8B D8 5A ep_only = true [Vx: TravJack.883] signature = EB ?? 9C 9E 26 ?? ?? 51 04 ?? 7D ?? 00 ?? 2E ?? ?? ?? ?? 8C C8 8E C0 8E D8 80 ?? ?? ?? ?? 74 ?? 8A ?? ?? ?? BB ?? ?? 8A ?? 32 C2 88 ?? FE C2 43 81 ep_only = true [Vx: Trivial.25] signature = B4 4E FE C6 CD 21 B8 ?? 3D BA ?? 00 CD 21 93 B4 40 CD ep_only = true [Vx: Trivial.46] signature = B4 4E B1 20 BA ?? ?? CD 21 BA ?? ?? B8 ?? 3D CD 21 ep_only = true [Vx: Trojan.Telefoon] signature = 60 1E E8 3B 01 BF CC 01 2E 03 3E CA 01 2E C7 05 ep_only = true [Vx: VCL] signature = AC B9 00 80 F2 AE B9 04 00 AC AE 75 ?? E2 FA 89 ep_only = true [Vx: VCL (encrypted)] signature = 01 B9 ?? ?? 81 34 ?? ?? 46 46 E2 F8 C3 ep_only = true [Vx: VCL (encrypted)] signature = 01 B9 ?? ?? 81 35 ?? ?? 47 47 E2 F8 C3 ep_only = true [Vx: VirusConstructor(IVP).based] signature = E9 ?? ?? E8 ?? ?? 5D ?? ?? ?? ?? ?? 81 ED ?? ?? ?? ?? ?? ?? E8 ?? ?? 81 FC ?? ?? ?? ?? 8D ?? ?? ?? BF ?? ?? 57 A4 A5 ep_only = true [Vx: VirusConstructor.based] signature = BB ?? ?? B9 ?? ?? 2E ?? ?? ?? ?? 43 43 ?? ?? 8B EC CC 8B ?? ?? 81 ?? ?? ?? 06 1E B8 ?? ?? CD 21 3D ?? ?? ?? ?? 8C D8 48 8E D8 ep_only = true [Vx: VirusConstructor.based] signature = E8 ?? ?? 5D 81 ?? ?? ?? 06 1E E8 ?? ?? E8 ?? ?? ?? ?? 2E ?? ?? ?? ?? ?? ?? B4 4A BB FF FF CD 21 83 ?? ?? B4 4A CD 21 ep_only = true [Vx: XPEH.4768] signature = E8 ?? ?? 5B 81 ?? ?? ?? 50 56 57 2E ?? ?? ?? ?? ?? 2E ?? ?? ?? ?? ?? ?? B8 01 00 50 B8 ?? ?? 50 E8 ep_only = true [WARNING -> TROJAN -> HuiGeZi] signature = 55 8B EC 81 C4 ?? FE FF FF 53 56 57 33 C0 89 85 ?? FE FF FF ep_only = true [WARNING -> TROJAN -> RobinPE] signature = 60 6A 00 6A 20 6A 02 6A 00 6A 03 68 00 00 00 ep_only = true [WARNING -> TROJAN -> XiaoHui] signature = 60 9C E8 00 00 00 00 5D B8 ?? 85 40 00 2D ?? 85 40 00 ep_only = true [WATCOM C/C++] signature = E9 ?? ?? ?? ?? ?? ?? ?? ?? 57 41 ep_only = true [WATCOM C/C++ 32 Run-Time System 1988-1994] signature = FB 83 ?? ?? 89 E3 89 ?? ?? ?? ?? ?? 89 ?? ?? ?? ?? ?? 66 ?? ?? ?? 66 ?? ?? ?? ?? ?? BB ?? ?? ?? ?? 29 C0 B4 30 CD 21 ep_only = true [WATCOM C/C++ 32 Run-Time System 1988-1995] signature = E9 ?? ?? ?? ?? ?? ?? ?? ?? 57 41 54 43 4F 4D ?? 43 2F 43 2B 2B 33 32 ?? 52 75 ep_only = true [WATCOM C/C++ 32 Run-Time System 1989, 1994] signature = 0E 1F 8C C6 B4 ?? 50 BB ?? ?? CD 21 73 ?? 58 CD 21 72 ep_only = true [WATCOM C/C++ Run-Time system+DOS4GW DOS Extender 1988-93] signature = BF ?? ?? 8E D7 81 C4 ?? ?? BE ?? ?? 2B F7 8B C6 B1 ?? D3 ep_only = true [WinRAR 32-bit SFX Module] signature = E9 ?? ?? 00 00 00 00 00 00 90 90 90 ?? ?? ?? ?? ?? ?? 00 ?? 00 ?? ?? ?? ?? ?? FF ep_only = true [WinUpack v0.30 beta -> By Dwing] signature = E9 ?? ?? ?? ?? 42 79 44 77 69 6E 67 40 00 00 00 50 45 00 00 4C 01 02 ep_only = false [WinZip (32-bit) 6.x] signature = FF 15 FC 81 40 00 B1 22 38 08 74 02 B1 20 40 80 38 00 74 10 ep_only = true [with added 'PK' signature] signature = C7 ?? ?? ?? ?? ?? 8C D8 05 ep_only = true [WWPACK v3.00, v3.01 (Relocations pack)] signature = BE ?? ?? BA ?? ?? BF ?? ?? B9 ?? ?? 8C CD 8E DD 81 ED ?? ?? 06 06 8B DD 2B DA 8B D3 FC ep_only = true [WWPack32 v1.00, v1.11, v1.12, v1.20] signature = 53 55 8B E8 33 DB EB 60 0D 0A 0D 0A 57 57 50 61 63 6B 33 32 ep_only = true [WWPack32 v1.x] signature = 53 55 8B E8 33 DB EB 60 ep_only = true [X-Pack v1.4.2] signature = 72 ?? C3 8B DE 83 ?? ?? C1 ?? ?? 8C D8 03 C3 8E D8 8B DF 83 ?? ?? C1 ?? ?? 8C C0 03 C3 8E C0 C3 ep_only = false [X-PEOR v0.99b] signature = E8 00 00 00 00 5D 8B CD 81 ED 7A 29 40 00 89 AD 0F 6D 40 00 ep_only = true [X-PEOR v0.99b] signature = E8 ?? ?? ?? ?? 5D 8B CD 81 ED 7A 29 40 ?? 89 AD 0F 6D 40 ep_only = true [XCR v0.12] signature = 60 9C E8 ?? ?? ?? ?? 8B DD 5D 81 ED ?? ?? ?? ?? 89 9D ep_only = true [XPack 1.52 - 1.64] signature = 8B EC FA 33 C0 8E D0 BC ?? ?? 2E ?? ?? ?? ?? 2E ?? ?? ?? ?? EB ep_only = true [XPack 1.67 [com]] signature = E9 53 00 FF FD FF FB FF F9 FF BC 03 00 8B E5 4C 4C C3 ep_only = true [xPEP 0.3x -> xIkUg] signature = 55 53 56 51 52 57 E8 16 00 00 00 ep_only = true [Xtreme-Protector v1.05] signature = E9 ?? ?? 00 00 00 00 00 00 00 00 ep_only = true [y0da's Crypter v1.x / Modified] signature = 60 E8 00 00 00 00 5D 81 ED ?? ?? ?? ?? B9 ?? ?? 00 00 8D BD ?? ?? ?? ?? 8B F7 AC ep_only = true [yoda's Protector 1.0x-->Ashkbiz Danehkar] signature = 55 8B EC 53 56 57 E8 03 00 00 00 EB 01 ep_only = true [ZCode Win32/PE Protector v1.01] signature = E9 12 00 00 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? E9 FB FF FF FF C3 68 ?? ?? ?? ?? 64 FF 35 ep_only = true [Zortech C] signature = E8 ?? ?? 2E FF ?? ?? ?? FC 06 ep_only = true [Zortech C v2.00 1988, 1989] signature = FA B8 ?? ?? 8E D8 8C ?? ?? ?? 26 8B ?? ?? ?? 89 1E ?? ?? 8B D8 2B 1E ?? ?? 89 1E ep_only = true [Zortech C v3.0] signature = FA FC B8 ?? ?? ?? 8C C8 8E D8 ep_only = true [Zurenava DOS Extender v0.45, v0.49] signature = BE ?? ?? BF ?? ?? B9 ?? ?? 56 FC F3 A5 5F E9 ep_only = true [[MSLRH] V0.31 -> emadicius] signature = 60 D1 CB 0F CA C1 CA E0 D1 CA 0F C8 EB 01 F1 ep_only = true [ÐÄÆæEXEºÏ²¢Æ÷ -> yy66] signature = 68 78 18 40 00 E8 F0 FF FF FF 00 00 00 00 00 00 30 ep_only = true [aPack v0.98b -> Jibz] signature = 93 07 1F 05 ?? ?? 8E D0 BC ?? ?? EA ep_only = false [aPack v0.98b [com]] signature = BE ?? ?? BF ?? ?? 8B CF FC 57 F3 A4 C3 BF ?? ?? 57 57 BE ?? ?? B2 ?? BD ?? ?? 50 A4 ep_only = false [aPack v0.98b [exe]] signature = 93 07 1F 05 ?? ?? 8E D0 BC ?? ?? EA ep_only = false [AsCrypt v0.1 -> SToRM - needs to be added] signature = 80 ?? ?? ?? 83 ?? ?? ?? ?? 90 90 90 83 ?? ?? E2 ep_only = false [AsCrypt v0.1 -> SToRM - needs to be added] signature = 83 ?? ?? E2 ?? ?? E2 ?? FF ep_only = false [AsCrypt v0.1 -> SToRM - needs to be added] signature = 80 ?? ?? ?? 83 ?? ?? ?? ?? 90 90 90 E2 ep_only = false [AsCrypt v0.1 -> SToRM - needs to be added] signature = 81 ?? ?? ?? ?? ?? ?? 83 ?? ?? ?? ?? ?? ?? ?? 83 ?? ?? E2 ?? EB ep_only = false [ASProtect v2.0] signature = 68 01 ?? 40 00 E8 01 00 00 00 C3 C3 ep_only = false [Crunch 4] signature = EB 10 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 55 E8 ep_only = false [Crunch 5 Fusion 4] signature = EB 15 03 ?? ?? ?? 06 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 68 ?? ?? ?? ?? 55 E8 ep_only = false [Dev-C++ v5] signature = 55 89 E5 83 EC 14 6A ?? FF 15 ?? ?? ?? 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 00 ep_only = false [ENIGMA Protector -> Sukhov Vladimir] signature = 45 6E 69 67 6D 61 20 70 72 6F 74 65 63 74 6F 72 20 76 31 ep_only = false [ENIGMA Protector V1.X-> Sukhov Vladimir] signature = 45 6E 69 67 6D 61 20 70 72 6F 74 65 63 74 6F 72 20 76 31 ep_only = false [EXECryptor V2.1X -> softcomplete.com] signature = 83 C6 14 8B 55 FC E9 ?? FF FF FF ep_only = false [EXECryptor V2.2X -> softcomplete.com] signature = FF E0 E8 04 00 00 00 FF FF FF FF 5E C3 00 ep_only = false [eXPressor v1.2 -> CGSoftLabs] signature = 45 78 50 72 2D 76 2E 31 2E 32 2E ep_only = false [eXPressor v1.3 -> CGSoftLabs] signature = 45 78 50 72 2D 76 2E 31 2E 33 2E ep_only = false [eXPressor v1.4 -> CGSoftLabs] signature = 65 58 50 72 2D 76 2E 31 2E 34 2E ep_only = false [FASM v1.5x] signature = 6A 00 FF 15 ?? ?? 40 00 A3 ?? ?? 40 00 ep_only = false [Free Pascal 0.99.10] signature = E8 00 6E 00 00 55 89 E5 8B 7D 0C 8B 75 08 89 F8 8B 5D 10 29 ep_only = false [Free Pascal v1.0.10 (win32 console)] signature = C6 05 ?? ?? ?? 00 01 E8 ?? ?? 00 00 C6 05 ?? ?? ?? 00 00 E8 ?? ?? 00 00 50 E8 00 00 00 00 FF 25 ?? ?? ?? 00 55 89 E5 ?? EC ep_only = false [Free Pascal v1.06] signature = C6 05 ?? ?? 40 00 ?? E8 ?? ?? 00 00 ep_only = false [Gleam 1.00] signature = 83 EC 0C 53 56 57 E8 24 02 00 ep_only = false [kkrunchy v0.17 -> F. Giesen] signature = FC FF 4D 08 31 D2 8D 7D 30 BE ep_only = false [MEW 10 by Northfox] signature = 33 C0 E9 ?? ?? FF FF ?? 1C ?? ?? 40 ep_only = false [MEW 11 SE v1.1] signature = E9 ?? ?? ?? FF 0C ?? 00 00 00 00 00 00 00 00 00 00 ep_only = false [Microsoft Visual Basic 5.0] signature = FF FF FF 00 00 00 00 00 00 30 00 00 00 40 00 00 00 00 00 00 ep_only = false [Microsoft Visual Basic v5.0 - v6.0] signature = FF 25 ?? ?? ?? ?? ?? ?? 68 ?? ?? ?? ?? E8 ?? FF FF FF ep_only = false [Microsoft Visual Basic v5.0 - v6.0] signature = 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 00 00 ?? 00 00 00 30 ?? 00 ep_only = false [Microsoft Visual Basic v6.0] signature = FF 25 ?? ?? ?? ?? 68 ?? ?? ?? ?? E8 ?? FF FF FF ?? ?? ?? ?? ?? ?? 30 ep_only = false [Microsoft Visual C 5.0] signature = 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 C4 A8 53 56 57 ep_only = false [Microsoft Visual C++ 6.0 DLL (Debug)] signature = 55 8B EC 53 8B 5D 08 56 8B 75 0C 57 8B 7D 10 85 F6 ?? ?? 83 ep_only = false [Microsoft Visual C++ 7.0 DLL] signature = 55 8B EC 53 8B 5D 08 56 8B 75 0C 85 F6 57 8B 7D 10 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 01 ep_only = false [Microsoft Visual C++ v6.0] signature = 55 8B EC 6A FF 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 64 A1 ?? ?? ?? ?? 50 64 89 25 ?? ?? ?? ?? 83 EC ?? 53 56 57 ep_only = false [Microsoft Visual C++ v7.0 DLL] signature = 55 8B EC 53 8B 5D 08 56 8B 75 0C 57 8B 7D 10 ?? ?? 83 ep_only = false [MoleBox v2.0] signature = E8 ?? ?? ?? ?? 60 E8 4F ep_only = false [nSpack V2.3 -> LiuXingPing] signature = 9C 60 70 61 63 6B 24 40 ep_only = false [nSpack V2.x -> LiuXingPing] signature = 9C 60 E8 00 00 00 00 5D B8 07 00 00 00 2B E8 8D B5 ep_only = false [NsPack V2.X -> LiuXingPing] signature = 6E 73 70 61 63 6B 24 40 ep_only = false [PE Spin v0.4x] signature = EB 01 68 60 E8 00 00 00 00 8B ep_only = false [PE-Protect 0.9 by Cristoph Gabler 1998] signature = 50 45 2D 50 52 4F 54 45 43 54 20 30 2E 39 ep_only = false [PeStubOEP v1.x] signature = E8 05 00 00 00 33 C0 40 48 C3 E8 05 ep_only = false [PeStubOEP v1.x] signature = 90 33 C9 33 D2 B8 ?? ?? ?? 00 B9 FF ep_only = false [PeStubOEP v1.x] signature = ?? ?? B8 ?? ?? ?? 00 FF E0 ep_only = false [Petite 1.3] signature = 66 9C 60 50 8D 88 00 F0 00 00 8D 90 04 16 00 00 8B DC 8B E1 ep_only = false [Petite 1.4] signature = 66 9C 60 50 8B D8 03 00 68 54 BC 00 00 6A 00 FF 50 14 8B CC ep_only = false [Petite 2.1] signature = 64 FF 35 00 00 00 00 64 89 25 00 00 00 00 66 9C 60 50 8B D8 ep_only = false [PolyCrypt PE - 2.1.4b/2.1.5 -> JLab Software Creations (h-oep)] signature = 91 8B F4 AD FE C9 80 34 08 ?? E2 FA C3 60 E8 ED FF FF FF EB ep_only = false [PolyEnE 0.01+ by Lennart Hedlund] signature = 60 00 00 E0 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 60 00 00 E0 ep_only = false [Private EXE v2.0a] signature = 53 E8 ?? ?? ?? ?? 5B 8B C3 2D ep_only = false [RAR-SFX Archive (1)] signature = 4D 5A ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 52 53 46 58 ep_only = false [RatPacker (Glue) stub] signature = 40 20 FF ?? ?? ?? ?? ?? ?? ?? ?? BE ?? 60 40 ?? 8D BE ?? B0 FF FF ep_only = false [RCryptor v1.1 --> Vaska] signature = 8B 04 24 83 E8 4F 68 ?? ?? ?? ?? FF D0 B8 ?? ?? ?? ?? 3D ?? ?? ?? ?? 74 06 80 30 ?? 40 EB F3 ep_only = false [Safe 2.0] signature = 83 EC 10 53 56 57 E8 C4 01 00 ep_only = false [SafeDisc v4] signature = 00 00 00 00 00 00 00 00 00 00 00 00 42 6F 47 5F ep_only = false [Setup2Go Installer Stub] signature = 5B 53 45 54 55 50 5F 49 4E 46 4F 5D 0D 0A 56 65 72 ep_only = false [Shrinker 3.2] signature = 55 8B EC 56 57 75 65 68 00 01 00 00 E8 F1 E6 FF FF 83 C4 04 ep_only = false [Shrinker 3.3] signature = 00 00 55 8B EC 56 57 75 65 68 00 01 00 00 E8 ep_only = false [Shrinker 3.4] signature = 55 8B EC 56 57 75 6B 68 00 01 00 00 E8 11 0B 00 00 83 C4 04 ep_only = false [SPLayer v0.08] signature = 8D 40 00 B9 ?? ?? ?? ?? 6A ?? 58 C0 0C ?? ?? 48 ?? ?? 66 13 F0 91 3B D9 ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 00 ep_only = false [Trilobyte's JPEG graphics Library] signature = 84 10 FF FF FF FF 1E 00 01 10 08 00 00 00 00 00 ep_only = false [Upack v0.29 Beta ~ v0.31 Beta -> Sign by hot_UNP] signature = BE 88 01 ?? ?? AD 8B F8 95 AD 91 F3 A5 AD B5 ?? F3 ep_only = false [Upack v0.32 Beta (Patch) -> Sign by hot_UNP] signature = BE 88 01 ?? ?? AD 50 ?? AD 91 F3 A5 ep_only = false [Upack v0.32 Beta -> Sign by hot_UNP] signature = BE 88 01 ?? ?? AD 50 ?? AD 91 ?? F3 A5 ep_only = false [Upack v0.32 Beta -> Sign by hot_UNP] signature = BE 88 01 ?? ?? AD 50 ?? ?? AD 91 F3 A5 ep_only = false [Upack v0.35 alpha -> Sign by hot_UNP] signature = 8B F2 8B CA 03 4C 19 1C 03 54 1A 20 ep_only = false [Upack v0.36 alpha -> Sign by hot_UNP] signature = AB E2 E5 5D 59 8B 76 68 51 59 46 AD 85 C0 ep_only = false [Upack v0.37 ~ v0.38 Beta (Strip base relocation table Option)-> Sign by hot_UNP] signature = 53 18 33 C0 55 40 51 D3 E0 8B EA 91 FF 56 4C 33 ep_only = false [UPX$HiT 0.0.1 -> sibaway7@yahoo.com] signature = E2 FA 94 FF E0 61 00 00 00 00 00 00 00 ep_only = false [VIRUS - I-Worm.Hybris] signature = EB 16 A8 54 ?? ?? 47 41 42 4C 4B 43 47 43 ?? ?? ?? ?? ?? ?? 52 49 53 ?? FC 68 4C 70 40 ?? FF 15 ep_only = false [WinUpack v0.30 beta -> By Dwing (h)] signature = E9 ?? ?? ?? ?? 42 79 44 77 69 6E 67 40 00 00 00 50 45 00 00 ep_only = false [ASPack 1.08] signature = 90 90 90 75 01 90 E9 ep_only = true [ASPack v1.06b] signature = 90 90 90 75 00 E9 ep_only = true [ASPack v1.06b] signature = 90 75 00 E9 ep_only = true [ASPack v1.06b] signature = 90 90 75 00 E9 ep_only = true [ASPack v1.07b] signature = 90 90 75 ?? E9 ep_only = true [ASPack v1.07b] signature = 90 90 90 75 ?? E9 ep_only = true [ASPack v1.07b] signature = 90 75 ?? E9 ep_only = true [ASPack v1.08] signature = 90 75 01 FF E9 ep_only = true [ASPack v1.08] signature = 90 90 90 75 01 FF E9 ep_only = true [ASPack v1.08] signature = 90 90 75 01 FF E9 ep_only = true [ASPack v1.08.01] signature = 90 90 75 ?? 90 E9 ep_only = true [ASPack v1.08.01] signature = 90 75 ?? 90 E9 ep_only = true [ASPack v1.08.01] signature = 90 90 90 75 ?? 90 E9 ep_only = true [ASPack v1.08.02] signature = 90 90 75 01 90 E9 ep_only = true [ASPack v1.08.02] signature = 90 75 01 90 E9 ep_only = true [ASPack v1.08.04] signature = 60 E8 ?? ?? ?? ?? EB ep_only = true [ASPack v2.11] signature = 60 E9 3D 04 00 00 ep_only = true [ASProtect v1.1 BRS] signature = 60 E9 ?? 05 ep_only = true [ASProtect v1.1 MTEb] signature = 90 60 E9 ?? 04 ep_only = true [ASProtect v1.2] signature = 68 01 ?? ?? ?? C3 ep_only = true [ASProtect vx.x] signature = 90 60 ?? ?? ?? 00 00 ep_only = true [Crunch V5.0 -> Bitarts] signature = EB 15 03 00 00 00 06 ep_only = true [Crunch/PE v5.0] signature = EB 15 03 ?? ?? ?? 06 ep_only = false [EP v2.0] signature = 6A ?? 60 E9 01 01 ep_only = true [EXEPACK v5.31.009 (LINK v3.69)] signature = 8B E8 8C C0 ep_only = true [Hasp 4 envelope dongle (Alladin)] signature = 10 02 D0 51 0F 00 83 ep_only = true [Hide&Protect V1.0X-> SoftWar Company] signature = 90 90 90 E9 D8 ep_only = true [Mew 10 v1.0 (Eng) -> Northfox] signature = 33 C0 E9 ?? ?? ?? FF ep_only = true [MEW 11 SE v1.1 -> Northfox [HCC]] signature = E9 ?? ?? ?? FF 0C ep_only = true [NeoLite v1.0] signature = E9 9B 00 00 00 A0 ep_only = true [Neolite v2.0] signature = E9 A6 00 00 00 ep_only = true [NFO v1.x modified] signature = 60 9C 8D 50 ep_only = true [Obsidium v1.0.0.61] signature = E8 AF 1C 00 00 ep_only = true [PCIENC Cryptor] signature = 06 50 43 49 45 4E ep_only = false [PEQuake V0.06 -> forgat] signature = E8 A5 00 00 00 ep_only = true [PESHiELD v0.25] signature = 60 E8 2B 00 00 00 ep_only = true [pex V0.99 -> params] signature = E9 F5 00 00 00 ep_only = true [PROTECT! EXE/COM v5.0] signature = 1E 0E 0E 1F 07 ep_only = true [Safeguard 1.0 -> Simonzh] signature = E8 00 00 00 00 EB 29 ep_only = true [Symantec C v2.10, v4.00 or Zortech C v3.0r1] signature = FA FC B8 ?? ?? 8E D8 ep_only = true [TAV] signature = E8 ?? ?? 4D 5A CB ep_only = true [tElock v0.7x - v0.84] signature = 60 E8 00 00 C3 83 ep_only = true [tElock v0.92a] signature = E9 7E E9 FF FF 00 ep_only = true [tElock v0.95] signature = E9 D5 E4 FF FF 00 ep_only = true [tElock v0.96] signature = E9 59 E4 FF FF 00 ep_only = true [tElock v0.98b1] signature = E9 25 E4 FF FF ep_only = true [tElock v0.98b2] signature = E9 1B E4 FF FF ep_only = true [tElock v1.00] signature = E9 E5 E2 FF FF ep_only = true [Turbo Basic v1.0 1987] signature = 2E 8C ?? ?? ?? 2E C7 ep_only = true [TXT2COM] signature = E8 ?? ?? CD 20 ep_only = true [UNITA3 (tm) by Sanitary Equipment Research] signature = E8 ?? ?? 4D 5A 3E ep_only = true [Unknown Packer -> Northfox] signature = 54 59 68 61 7A 79 ep_only = true [Upack_Patch -> Sign by hot_UNP] signature = 2A A3 F2 54 CE ep_only = false [VOB ProtectCD 5] signature = 36 3E 26 8A C0 60 E8 ep_only = true [Vx: GRUNT.1.Family] signature = 01 B9 ?? 00 31 17 ep_only = true pev/src/pescan.c0000644000175000017500000003721613034014706012601 0ustar useruser/* pev - the PE file analyzer toolkit pescan.c - search for suspicious things in PE files. Copyright (C) 2013 - 2017 pev authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #include "common.h" #include #include #include #include "plugins.h" #define PROGRAM "pescan" typedef struct { bool verbose; } options_t; static void usage(void) { static char formats[255]; output_available_formats(formats, sizeof(formats), '|'); printf("Usage: %s OPTIONS FILE\n" "Search for suspicious things in PE files\n" "\nExample: %s putty.exe\n" "\nOptions:\n" " -f, --format <%s> change output format (default: text)\n" " -v, --verbose show more info about items found\n" " -V, --version show version and exit\n" " --help show this help and exit\n", PROGRAM, PROGRAM, formats); } static void free_options(options_t *options) { if (options == NULL) return; free(options); } static options_t *parse_options(int argc, char *argv[]) { options_t *options = malloc_s(sizeof(options_t)); memset(options, 0, sizeof(options_t)); /* Parameters for getopt_long() function */ static const char short_options[] = "f:vV"; static const struct option long_options[] = { { "format", required_argument, NULL, 'f' }, { "help", no_argument, NULL, 1 }, { "verbose", no_argument, NULL, 'v' }, { "version", no_argument, NULL, 'V' }, { NULL, 0, NULL, 0 } }; int c, ind; while ((c = getopt_long(argc, argv, short_options, long_options, &ind))) { if (c < 0) break; switch (c) { case 1: // --help option usage(); exit(EXIT_SUCCESS); case 'f': if (output_set_format_by_name(optarg) < 0) EXIT_ERROR("invalid format option"); break; case 'v': options->verbose = true; break; case 'V': printf("%s %s\n%s\n", PROGRAM, TOOLKIT, COPY); exit(EXIT_SUCCESS); default: fprintf(stderr, "%s: try '--help' for more information\n", PROGRAM); exit(EXIT_FAILURE); } } return options; } // check for abnormal dos stub (common in packed files) static bool normal_dos_stub(pe_ctx_t *ctx, uint32_t *stub_offset) { const uint8_t dos_stub[] = "\x0e" // push cs "\x1f" // pop ds "\xba\x0e\x00" // mov dx, 0x0e "\xb4\x09" // mov ah, 0x09 "\xcd\x21" // int 0x21 "\xb8\x01\x4c" // mov ax, 0x4c01 "\xcd\x21" // int 0x21 "This program cannot be run in DOS mode.\r\r\n$"; const size_t dos_stub_size = sizeof(dos_stub) - 1; // -1 to ignore ending null const IMAGE_DOS_HEADER *dos = pe_dos(ctx); if (dos == NULL) EXIT_ERROR("unable to retrieve PE DOS header"); *stub_offset = dos->e_cparhdr << 4; // dos stub starts at e_cparhdr shifted by 4 const char *dos_stub_ptr = LIBPE_PTR_ADD(ctx->map_addr, *stub_offset); if (!pe_can_read(ctx, dos_stub_ptr, dos_stub_size)) { EXIT_ERROR("unable to seek in file"); } return memcmp(dos_stub, dos_stub_ptr, dos_stub_size) == 0; } static const IMAGE_SECTION_HEADER *pe_check_fake_entrypoint(pe_ctx_t *ctx, uint32_t ep) { const uint16_t num_sections = pe_sections_count(ctx); if (num_sections == 0) return NULL; const IMAGE_SECTION_HEADER *section = pe_rva2section(ctx, ep); if (section == NULL) return NULL; if (section->Characteristics & IMAGE_SCN_CNT_CODE) return NULL; return section; } static uint32_t pe_get_tls_directory(pe_ctx_t *ctx) { if (ctx->pe.num_directories == 0 || ctx->pe.num_directories > MAX_DIRECTORIES) return 0; const IMAGE_DATA_DIRECTORY *directory = pe_directory_by_entry(ctx, IMAGE_DIRECTORY_ENTRY_TLS); if (directory == NULL) return 0; if (directory->Size == 0) return 0; return directory->VirtualAddress; } /* * -1 - fake tls callbacks detected * 0 - no tls directory * >0 - number of callbacks functions found */ static int pe_get_tls_callbacks(pe_ctx_t *ctx, const options_t *options) { int ret = 0; const IMAGE_OPTIONAL_HEADER *optional_hdr = pe_optional(ctx); if (optional_hdr == NULL) return 0; IMAGE_SECTION_HEADER ** const sections = pe_sections(ctx); if (sections == NULL) return 0; const uint64_t tls_addr = pe_get_tls_directory(ctx); if (tls_addr == 0) return 0; const uint16_t num_sections = pe_sections_count(ctx); uint64_t ofs = 0; // search for tls in all sections for (uint16_t i=0, j=0; i < num_sections; i++) { if (tls_addr >= sections[i]->VirtualAddress && tls_addr < (sections[i]->VirtualAddress + sections[i]->SizeOfRawData)) { ofs = tls_addr - sections[i]->VirtualAddress + sections[i]->PointerToRawData; switch (optional_hdr->type) { default: return 0; case MAGIC_PE32: { const IMAGE_TLS_DIRECTORY32 *tls_dir = LIBPE_PTR_ADD(ctx->map_addr, ofs); if (!pe_can_read(ctx, tls_dir, sizeof(IMAGE_TLS_DIRECTORY32))) { // TODO: Should we report something? return 0; } if (!(tls_dir->AddressOfCallBacks & optional_hdr->_32->ImageBase)) break; ofs = pe_rva2ofs(ctx, tls_dir->AddressOfCallBacks - optional_hdr->_32->ImageBase); break; } case MAGIC_PE64: { const IMAGE_TLS_DIRECTORY64 *tls_dir = LIBPE_PTR_ADD(ctx->map_addr, ofs); if (!pe_can_read(ctx, tls_dir, sizeof(IMAGE_TLS_DIRECTORY64))) { // TODO: Should we report something? return 0; } if (!(tls_dir->AddressOfCallBacks & optional_hdr->_64->ImageBase)) break; ofs = pe_rva2ofs(ctx, tls_dir->AddressOfCallBacks - optional_hdr->_64->ImageBase); break; } } ret = -1; // tls directory and section exists char value[MAX_MSG]; uint32_t funcaddr = 0; do { const uint32_t *funcaddr_ptr = LIBPE_PTR_ADD(ctx->map_addr, ofs); if (!pe_can_read(ctx, funcaddr_ptr, sizeof(*funcaddr_ptr))) { // TODO: Should we report something? return 0; } uint32_t funcaddr = *funcaddr_ptr; if (funcaddr) { ret = ++j; // function found if (options->verbose) { snprintf(value, MAX_MSG, "%#x", funcaddr); output("TLS callback function", value); } } } while (funcaddr); return ret; } } return 0; } static bool strisprint(const char *string) { const char *s = string; if (strncmp(string, ".tls", 5) == 0) return false; if (*s++ != '.') return false; while (*s) { if (!isalpha((int)*s)) return false; s++; } return true; } static void stradd(char *dest, const char *src, bool *pad) { if (*pad) strcat(dest, ", "); strcat(dest, src); *pad = true; } static void print_strange_sections(pe_ctx_t *ctx) { const uint16_t num_sections = pe_sections_count(ctx); if (num_sections == 0) return; char value[MAX_MSG]; if (ctx->pe.num_sections <= 2) snprintf(value, MAX_MSG, "%d (low)", num_sections); else if (ctx->pe.num_sections > 8) snprintf(value, MAX_MSG, "%d (high)", num_sections); else snprintf(value, MAX_MSG, "%d", num_sections); output("section count", value); IMAGE_SECTION_HEADER ** const sections = pe_sections(ctx); output_open_scope("sections", OUTPUT_SCOPE_TYPE_ARRAY); bool aux = false; for (uint16_t i=0; i < num_sections; i++, aux=false) { output_open_scope("section", OUTPUT_SCOPE_TYPE_OBJECT); memset(&value, 0, sizeof(value)); if (!strisprint((const char *)sections[i]->Name)) stradd(value, "suspicious name", &aux); if (sections[i]->SizeOfRawData == 0) stradd(value, "zero length", &aux); else if (sections[i]->SizeOfRawData <= 512) stradd(value, "small length", &aux); // rwx or writable + executable code if (sections[i]->Characteristics & IMAGE_SCN_MEM_WRITE && (sections[i]->Characteristics & IMAGE_SCN_CNT_CODE || sections[i]->Characteristics & IMAGE_SCN_MEM_EXECUTE)) stradd(value, "self-modifying", &aux); if (!aux) strncpy(value, "normal", 7); output((const char *)sections[i]->Name, value); output_close_scope(); // section } output_close_scope(); // sections } static bool normal_imagebase(pe_ctx_t *ctx) { return (ctx->pe.imagebase == 0x100000000 || ctx->pe.imagebase == 0x1000000 || ctx->pe.imagebase == 0x400000); } double calculate_entropy(const unsigned int counted_bytes[256], const size_t total_length) { static const double log_2 = 1.44269504088896340736; double entropy = 0.; for (size_t i = 0; i < 256; i++) { double temp = (double)counted_bytes[i] / total_length; if (temp > 0.) entropy += fabs(temp * (log(temp) * log_2)); } return entropy; } double calculate_entropy_file(pe_ctx_t *ctx) { unsigned int counted_bytes[256]; memset(counted_bytes, 0, sizeof(counted_bytes)); const uint8_t *file_bytes = LIBPE_PTR_ADD(ctx->map_addr, 0); const uint64_t filesize = pe_filesize(ctx); for (uint64_t ofs=0; ofs < filesize; ofs++) { const uint8_t byte = file_bytes[ofs]; counted_bytes[byte]++; } return calculate_entropy(counted_bytes, (size_t)filesize); } // new anti-disassembly technique with undocumented Intel FPU instructions static bool fpu_trick(pe_ctx_t *ctx) { const char *opcode_ptr = ctx->map_addr; for (uint32_t i=0, times=0; i < ctx->map_size; i++) { if (*opcode_ptr++ == '\xdf') { if (++times == 4) return true; } else times = 0; } return false; } static void print_timestamp(pe_ctx_t *ctx, const options_t *options) { IMAGE_COFF_HEADER *hdr_coff_ptr = pe_coff(ctx); const time_t now = time(NULL); char value[MAX_MSG]; if (hdr_coff_ptr->TimeDateStamp == 0) snprintf(value, MAX_MSG, "zero/invalid"); else if (hdr_coff_ptr->TimeDateStamp < 946692000) snprintf(value, MAX_MSG, "too old (pre-2000)"); else if (hdr_coff_ptr->TimeDateStamp > (uint32_t) now) snprintf(value, MAX_MSG, "future time"); else snprintf(value, MAX_MSG, "normal"); if (options->verbose) { char timestr[33]; strftime(timestr, sizeof(timestr), " - %a, %d %b %Y %H:%M:%S UTC", gmtime((time_t *) &hdr_coff_ptr->TimeDateStamp)); strcat(value, timestr); } output("timestamp", value); } static int8_t cpl_analysis(pe_ctx_t *ctx) { const IMAGE_COFF_HEADER *hdr_coff_ptr = pe_coff(ctx); const IMAGE_DOS_HEADER *hdr_dos_ptr = pe_dos(ctx); if (hdr_coff_ptr == NULL || hdr_dos_ptr == NULL) return -1; static const uint16_t characteristics1 = ( IMAGE_FILE_EXECUTABLE_IMAGE | IMAGE_FILE_LINE_NUMS_STRIPPED | IMAGE_FILE_LOCAL_SYMS_STRIPPED | IMAGE_FILE_BYTES_REVERSED_LO | IMAGE_FILE_32BIT_MACHINE | IMAGE_FILE_DLL | IMAGE_FILE_BYTES_REVERSED_HI); static const uint16_t characteristics2 = ( IMAGE_FILE_EXECUTABLE_IMAGE | IMAGE_FILE_LINE_NUMS_STRIPPED | IMAGE_FILE_LOCAL_SYMS_STRIPPED | IMAGE_FILE_BYTES_REVERSED_LO | IMAGE_FILE_32BIT_MACHINE | IMAGE_FILE_DEBUG_STRIPPED | IMAGE_FILE_DLL | IMAGE_FILE_BYTES_REVERSED_HI); static const uint16_t characteristics3 = ( IMAGE_FILE_EXECUTABLE_IMAGE | IMAGE_FILE_LINE_NUMS_STRIPPED | IMAGE_FILE_32BIT_MACHINE | IMAGE_FILE_DEBUG_STRIPPED | IMAGE_FILE_DLL); if ((hdr_coff_ptr->TimeDateStamp == 708992537 || hdr_coff_ptr->TimeDateStamp > 1354555867) && (hdr_coff_ptr->Characteristics == characteristics1 || // equals 0xa18e hdr_coff_ptr->Characteristics == characteristics2 || // equals 0xa38e hdr_coff_ptr->Characteristics == characteristics3) // equals 0x2306 && hdr_dos_ptr->e_sp == 0xb8 ) return 1; return 0; } int main(int argc, char *argv[]) { pev_config_t config; PEV_INITIALIZE(&config); if (argc < 2) { usage(); return EXIT_FAILURE; } output_set_cmdline(argc, argv); options_t *options = parse_options(argc, argv); // opcoes const char *path = argv[argc-1]; pe_ctx_t ctx; pe_err_e err = pe_load_file(&ctx, path); if (err != LIBPE_E_OK) { pe_error_print(stderr, err); return EXIT_FAILURE; } err = pe_parse(&ctx); if (err != LIBPE_E_OK) { pe_error_print(stderr, err); return EXIT_FAILURE; } if (!pe_is_pe(&ctx)) EXIT_ERROR("not a valid PE file"); output_open_document(); // File entropy const double entropy = calculate_entropy_file(&ctx); char value[MAX_MSG]; if (entropy < 7.0) snprintf(value, MAX_MSG, "%f (normal)", entropy); else snprintf(value, MAX_MSG, "%f (probably packed)", entropy); output("file entropy", value); if (pe_is_dll(&ctx)) { uint16_t ret = cpl_analysis(&ctx); switch (ret) { case 1: output("cpl analysis", "malware"); break; default: output("cpl analysis:", "no threat"); break; } } output("fpu anti-disassembly", fpu_trick(&ctx) ? "yes" : "no"); // imagebase analysis if (!normal_imagebase(&ctx)) { if (options->verbose) snprintf(value, MAX_MSG, "suspicious - %#"PRIx64, ctx.pe.imagebase); else snprintf(value, MAX_MSG, "suspicious"); } else { if (options->verbose) snprintf(value, MAX_MSG, "normal - %#"PRIx64, ctx.pe.imagebase); else snprintf(value, MAX_MSG, "normal"); } output("imagebase", value); const IMAGE_OPTIONAL_HEADER *optional = pe_optional(&ctx); if (optional == NULL) EXIT_ERROR("unable to read optional header"); uint32_t ep = (optional->_32 ? optional->_32->AddressOfEntryPoint : (optional->_64 ? optional->_64->AddressOfEntryPoint : 0)); // fake ep if (ep == 0) { snprintf(value, MAX_MSG, "null"); } else if (pe_check_fake_entrypoint(&ctx, ep)) { if (options->verbose) snprintf(value, MAX_MSG, "fake - va: %#x - raw: %#"PRIx64, ep, pe_rva2ofs(&ctx, ep)); else snprintf(value, MAX_MSG, "fake"); } else { if (options->verbose) snprintf(value, MAX_MSG, "normal - va: %#x - raw: %#"PRIx64, ep, pe_rva2ofs(&ctx, ep)); else snprintf(value, MAX_MSG, "normal"); } output("entrypoint", value); // dos stub uint32_t stub_offset; if (!normal_dos_stub(&ctx, &stub_offset)) { if (options->verbose) snprintf(value, MAX_MSG, "suspicious - raw: %#x", stub_offset); else snprintf(value, MAX_MSG, "suspicious"); } else snprintf(value, MAX_MSG, "normal"); output("DOS stub", value); // tls callbacks int callbacks = pe_get_tls_callbacks(&ctx, options); if (callbacks == 0) snprintf(value, MAX_MSG, "not found"); else if (callbacks == -1) snprintf(value, MAX_MSG, "found - no functions"); else if (callbacks > 0) snprintf(value, MAX_MSG, "found - %d function(s)", callbacks); output("TLS directory", value); // invalid timestamp IMAGE_COFF_HEADER *coff = pe_coff(&ctx); if (coff == NULL) EXIT_ERROR("unable to read coff header"); print_timestamp(&ctx, options); // section analysis print_strange_sections(&ctx); output_close_document(); // libera a memoria free_options(options); // free err = pe_unload(&ctx); if (err != LIBPE_E_OK) { pe_error_print(stderr, err); return EXIT_FAILURE; } PEV_FINALIZE(&config); return EXIT_SUCCESS; } pev/src/rva2ofs.c0000644000175000017500000000625613034014706012712 0ustar useruser/* pev - the PE file analyzer toolkit rva2ofs.c - converts RVA to raw file offset Copyright (C) 2012 - 2017 pev authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #include "common.h" #define PROGRAM "rva2ofs" static void usage(void) { printf("Usage: %s FILE\n" "Convert RVA to raw file offset\n" "\nExample: %s 0x12db cards.dll\n" "\nOptions:\n" " -V, --version show version and exit\n" " --help show this help and exit\n", PROGRAM, PROGRAM); } static void parse_options(int argc, char *argv[]) { /* Parameters for getopt_long() function */ static const char short_options[] = "V"; static const struct option long_options[] = { { "help", no_argument, NULL, 1 }, { "version", no_argument, NULL, 'V' }, { NULL, 0, NULL, 0 } }; int c, ind; while ((c = getopt_long(argc, argv, short_options, long_options, &ind))) { if (c < 0) break; switch (c) { case 1: // --help option usage(); exit(EXIT_SUCCESS); case 'V': printf("%s %s\n%s\n", PROGRAM, TOOLKIT, COPY); exit(EXIT_SUCCESS); default: fprintf(stderr, "%s: try '--help' for more information\n", PROGRAM); exit(EXIT_FAILURE); } } } int main(int argc, char *argv[]) { //PEV_INITIALIZE(); if (argc != 3) { usage(); return EXIT_FAILURE; } parse_options(argc, argv); // opcoes pe_ctx_t ctx; pe_err_e err = pe_load_file(&ctx, argv[2]); if (err != LIBPE_E_OK) { pe_error_print(stderr, err); return EXIT_FAILURE; } uint64_t rva = (uint64_t)strtoll(argv[1], NULL, 0); if (!rva) EXIT_ERROR("invalid RVA"); err = pe_parse(&ctx); if (err != LIBPE_E_OK) { pe_error_print(stderr, err); return EXIT_FAILURE; } if (!pe_is_pe(&ctx)) EXIT_ERROR("not a valid PE file"); printf("%#"PRIx64"\n", pe_rva2ofs(&ctx, rva)); pe_unload(&ctx); //PEV_FINALIZE(); return EXIT_SUCCESS; } pev/src/readpe.c0000644000175000017500000011062513034014706012564 0ustar useruser/* pev - the PE file analyzer toolkit readpe.c - show PE file headers Copyright (C) 2013 - 2017 pev authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #include "common.h" #include #include #include "plugins.h" #define PROGRAM "readpe" typedef struct { bool all; bool dos; bool coff; bool opt; bool dirs; bool imports; bool exports; bool all_headers; bool all_sections; } options_t; static void usage(void) { static char formats[255]; output_available_formats(formats, sizeof(formats), '|'); printf("Usage: %s OPTIONS FILE\n" "Show PE file headers\n" "\nExample: %s --header optional winzip.exe\n" "\nOptions:\n" " -A, --all full output (default)\n" " -H, --all-headers print all PE headers\n" " -S, --all-sections print all PE sections headers\n" " -f, --format <%s> change output format (default: text)\n" " -d, --dirs show data directories\n" " -h, --header show specific header\n" " -i, --imports show imported functions\n" " -e, --exports show exported functions\n" " -V, --version show version and exit\n" " --help show this help and exit\n", PROGRAM, PROGRAM, formats); } static void parse_headers(options_t *options, const char *optarg) { if (!strcmp(optarg, "dos")) options->dos = true; else if (!strcmp(optarg, "coff")) options->coff = true; else if (!strcmp(optarg, "optional")) options->opt = true; else EXIT_ERROR("invalid header option"); } static void free_options(options_t *options) { if (options == NULL) return; free(options); } static options_t *parse_options(int argc, char *argv[]) { options_t *options = malloc_s(sizeof(options_t)); memset(options, 0, sizeof(options_t)); /* Parameters for getopt_long() function */ static const char short_options[] = "AHSh:dief:V"; static const struct option long_options[] = { { "help", no_argument, NULL, 1 }, { "all", no_argument, NULL, 'A' }, { "all-headers", no_argument, NULL, 'H' }, { "all-sections", no_argument, NULL, 'S' }, { "header", required_argument, NULL, 'h' }, { "imports", no_argument, NULL, 'i' }, { "exports", no_argument, NULL, 'e' }, { "dirs", no_argument, NULL, 'd' }, { "format", required_argument, NULL, 'f' }, { "version", no_argument, NULL, 'V' }, { NULL, 0, NULL, 0 } }; options->all = true; int c, ind; while ((c = getopt_long(argc, argv, short_options, long_options, &ind))) { if (c < 0) break; switch (c) { case 1: // --help option usage(); exit(EXIT_SUCCESS); case 'A': options->all = true; break; case 'H': options->all = false; options->all_headers = true; break; case 'd': options->all = false; options->dirs = true; break; case 'S': options->all = false; options->all_sections = true; break; case 'V': printf("%s %s\n%s\n", PROGRAM, TOOLKIT, COPY); exit(EXIT_SUCCESS); case 'h': options->all = false; parse_headers(options, optarg); break; case 'i': options->all = false; options->imports = true; break; case 'e': options->all = false; options->exports = true; break; case 'f': if (output_set_format_by_name(optarg) < 0) EXIT_ERROR("invalid format option"); break; default: fprintf(stderr, "%s: try '--help' for more information\n", PROGRAM); exit(EXIT_FAILURE); } } return options; } static void print_sections(pe_ctx_t *ctx) { #ifdef LIBPE_ENABLE_OUTPUT_COMPAT_WITH_V06 static const char * const flags_name[] = { "contains executable code", "contains initialized data", "contains uninitialized data", "contains data referenced through the GP", "contains extended relocations", "can be discarded as needed", "cannot be cached", "is not pageable", "can be shared in memory", "is executable", "is readable", "is writable" }; #endif // valid flags only for executables referenced in pecoffv8 static const unsigned int valid_flags[] = { IMAGE_SCN_CNT_CODE, IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_CNT_UNINITIALIZED_DATA, IMAGE_SCN_GPREL, IMAGE_SCN_LNK_NRELOC_OVFL, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_NOT_CACHED, IMAGE_SCN_MEM_NOT_PAGED, IMAGE_SCN_MEM_SHARED, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE }; static const size_t max_flags = LIBPE_SIZEOF_ARRAY(valid_flags); output_open_scope("Sections", OUTPUT_SCOPE_TYPE_ARRAY); const uint32_t num_sections = pe_sections_count(ctx); if (num_sections == 0 || num_sections > MAX_SECTIONS) return; IMAGE_SECTION_HEADER **sections = pe_sections(ctx); if (sections == NULL) return; char s[MAX_MSG]; for (uint32_t i=0; i < num_sections; i++) { output_open_scope("Section", OUTPUT_SCOPE_TYPE_OBJECT); snprintf(s, MAX_MSG, "%s", sections[i]->Name); output("Name", s); snprintf(s, MAX_MSG, "%#x", sections[i]->VirtualAddress); output("Virtual Address", s); snprintf(s, MAX_MSG, "%#x", sections[i]->Misc.PhysicalAddress); output("Physical Address", s); snprintf(s, MAX_MSG, "%#x (%d bytes)", sections[i]->SizeOfRawData, sections[i]->SizeOfRawData); output("Size", s); snprintf(s, MAX_MSG, "%#x", sections[i]->PointerToRawData); output("Pointer To Data", s); snprintf(s, MAX_MSG, "%d", sections[i]->NumberOfRelocations); output("Relocations", s); snprintf(s, MAX_MSG, "%#x", sections[i]->Characteristics); output("Characteristics", s); output_open_scope("Characteristic Names", OUTPUT_SCOPE_TYPE_ARRAY); for (size_t j=0; j < max_flags; j++) { if (sections[i]->Characteristics & valid_flags[j]) { #ifdef LIBPE_ENABLE_OUTPUT_COMPAT_WITH_V06 snprintf(s, MAX_MSG, "%s", flags_name[j]); output(NULL, s); #else output(NULL, pe_section_characteristic_name(valid_flags[j])); #endif } } output_close_scope(); // Characteristic Names output_close_scope(); // Section } output_close_scope(); // Sections } static void print_directories(pe_ctx_t *ctx) { #ifdef LIBPE_ENABLE_OUTPUT_COMPAT_WITH_V06 typedef struct { ImageDirectoryEntry entry; const char * const name; } ImageDirectoryEntryName; static const ImageDirectoryEntryName directoryEntryNames[] = { { IMAGE_DIRECTORY_ENTRY_EXPORT, "Export Table" }, // "Export directory", { IMAGE_DIRECTORY_ENTRY_IMPORT, "Import Table" }, // "Import directory", { IMAGE_DIRECTORY_ENTRY_RESOURCE, "Resource Table" }, // "Resource directory", { IMAGE_DIRECTORY_ENTRY_EXCEPTION, "Exception Table" }, // "Exception directory", { IMAGE_DIRECTORY_ENTRY_SECURITY, "Certificate Table" }, // "Security directory", { IMAGE_DIRECTORY_ENTRY_BASERELOC, "Base Relocation Table" }, // "Base relocation table", { IMAGE_DIRECTORY_ENTRY_DEBUG, "Debug" }, // "Debug directory", { IMAGE_DIRECTORY_ENTRY_ARCHITECTURE, "Architecture" }, // "Architecture-specific data", { IMAGE_DIRECTORY_ENTRY_GLOBALPTR, "Global Ptr" }, // "Global pointer", { IMAGE_DIRECTORY_ENTRY_TLS, "Thread Local Storage (TLS)"}, // "Thread local storage (TLS) directory", { IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG, "Load Config Table" }, // "Load configuration directory", { IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT, "Bound Import" }, // "Bound import directory", { IMAGE_DIRECTORY_ENTRY_IAT, "Import Address Table (IAT)"}, // "Import address table (IAT)", { IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT, "Delay Import Descriptor" }, // "Delay import table", { IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR, "CLR Runtime Header" }, // "COM descriptor table" { IMAGE_DIRECTORY_RESERVED, "" } // "Reserved" }; //static const size_t max_directory_entry = LIBPE_SIZEOF_ARRAY(names); #endif output_open_scope("Data directories", OUTPUT_SCOPE_TYPE_ARRAY); const uint32_t num_directories = pe_directories_count(ctx); if (num_directories == 0 || num_directories > MAX_DIRECTORIES) return; IMAGE_DATA_DIRECTORY **directories = pe_directories(ctx); if (directories == NULL) return; char s[MAX_MSG]; for (uint32_t i=0; i < num_directories; i++) { if (directories[i]->Size) { output_open_scope("Directory", OUTPUT_SCOPE_TYPE_OBJECT); snprintf(s, MAX_MSG, "%#x (%d bytes)", directories[i]->VirtualAddress, directories[i]->Size); #ifdef LIBPE_ENABLE_OUTPUT_COMPAT_WITH_V06 output(directoryEntryNames[i].name, s); #else output(pe_directory_name(i), s); #endif output_close_scope(); // Directory } } output_close_scope(); // Data directories } static void print_optional_header(IMAGE_OPTIONAL_HEADER *header) { #ifdef LIBPE_ENABLE_OUTPUT_COMPAT_WITH_V06 typedef struct { WindowsSubsystem subsystem; const char * const name; } WindowsSubsystemName; static const WindowsSubsystemName subsystemNames[] = { { IMAGE_SUBSYSTEM_UNKNOWN, "Unknown subsystem" }, { IMAGE_SUBSYSTEM_NATIVE, "System native" }, { IMAGE_SUBSYSTEM_WINDOWS_GUI, "Windows GUI" }, { IMAGE_SUBSYSTEM_WINDOWS_CUI, "Windows CLI" }, { IMAGE_SUBSYSTEM_UNKNOWN, "Unknown subsystem" }, { IMAGE_SUBSYSTEM_UNKNOWN, "Unknown subsystem" }, { IMAGE_SUBSYSTEM_UNKNOWN, "Unknown subsystem" }, { IMAGE_SUBSYSTEM_POSIX_CUI, "Posix CLI" }, { IMAGE_SUBSYSTEM_WINDOWS_CE_GUI, "Windows CE GUI" }, { IMAGE_SUBSYSTEM_EFI_APPLICATION, "EFI application" }, { IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER, "EFI driver with boot" }, { IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER, "EFI run-time driver" }, { IMAGE_SUBSYSTEM_EFI_ROM, "EFI ROM" }, { IMAGE_SUBSYSTEM_XBOX, "XBOX" }, { IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION, "Boot application" } }; static const size_t max_subsystem = LIBPE_SIZEOF_ARRAY(subsystemNames); #endif if (!header) return; char s[MAX_MSG]; output_open_scope("Optional/Image header", OUTPUT_SCOPE_TYPE_OBJECT); switch (header->type) { case MAGIC_PE32: { snprintf(s, MAX_MSG, "%#x (%s)", header->_32->Magic, "PE32"); output("Magic number", s); snprintf(s, MAX_MSG, "%d", header->_32->MajorLinkerVersion); output("Linker major version", s); snprintf(s, MAX_MSG, "%d", header->_32->MinorLinkerVersion); output("Linker minor version", s); snprintf(s, MAX_MSG, "%#x", header->_32->SizeOfCode); output("Size of .text section", s); snprintf(s, MAX_MSG, "%#x", header->_32->SizeOfInitializedData); output("Size of .data section", s); snprintf(s, MAX_MSG, "%#x", header->_32->SizeOfUninitializedData); output("Size of .bss section", s); snprintf(s, MAX_MSG, "%#x", header->_32->AddressOfEntryPoint); output("Entrypoint", s); snprintf(s, MAX_MSG, "%#x", header->_32->BaseOfCode); output("Address of .text section", s); snprintf(s, MAX_MSG, "%#x", header->_32->BaseOfData); output("Address of .data section", s); snprintf(s, MAX_MSG, "%#x", header->_32->ImageBase); output("ImageBase", s); snprintf(s, MAX_MSG, "%#x", header->_32->SectionAlignment); output("Alignment of sections", s); snprintf(s, MAX_MSG, "%#x", header->_32->FileAlignment); output("Alignment factor", s); snprintf(s, MAX_MSG, "%d", header->_32->MajorOperatingSystemVersion); output("Major version of required OS", s); snprintf(s, MAX_MSG, "%d", header->_32->MinorOperatingSystemVersion); output("Minor version of required OS", s); snprintf(s, MAX_MSG, "%d", header->_32->MajorImageVersion); output("Major version of image", s); snprintf(s, MAX_MSG, "%d", header->_32->MinorImageVersion); output("Minor version of image", s); snprintf(s, MAX_MSG, "%d", header->_32->MajorSubsystemVersion); output("Major version of subsystem", s); snprintf(s, MAX_MSG, "%d", header->_32->MinorSubsystemVersion); output("Minor version of subsystem", s); snprintf(s, MAX_MSG, "%#x", header->_32->SizeOfImage); output("Size of image", s); snprintf(s, MAX_MSG, "%#x", header->_32->SizeOfHeaders); output("Size of headers", s); snprintf(s, MAX_MSG, "%#x", header->_32->CheckSum); output("Checksum", s); const uint16_t subsystem = header->_32->Subsystem; #ifdef LIBPE_ENABLE_OUTPUT_COMPAT_WITH_V06 const char *subsystem_name = "Unknown"; for (size_t i=0; i < max_subsystem; i++) { if (subsystem == subsystemNames[i].subsystem) subsystem_name = subsystemNames[i].name; } #else const char *subsystem_name = pe_windows_subsystem_name(subsystem); if (subsystem_name == NULL) subsystem_name = "Unknown"; #endif snprintf(s, MAX_MSG, "%#x (%s)", subsystem, subsystem_name); output("Subsystem required", s); snprintf(s, MAX_MSG, "%#x", header->_32->DllCharacteristics); output("DLL characteristics", s); #ifndef LIBPE_ENABLE_OUTPUT_COMPAT_WITH_V06 output_open_scope("DLL characteristics names", OUTPUT_SCOPE_TYPE_ARRAY); for (uint16_t i=0, flag=0x0001; i < 16; i++, flag <<= 1) { if (header->_32->DllCharacteristics & flag) output(NULL, pe_image_dllcharacteristic_name(flag)); } output_close_scope(); // DLL characteristics names #endif snprintf(s, MAX_MSG, "%#x", header->_32->SizeOfStackReserve); output("Size of stack to reserve", s); snprintf(s, MAX_MSG, "%#x", header->_32->SizeOfStackCommit); output("Size of stack to commit", s); snprintf(s, MAX_MSG, "%#x", header->_32->SizeOfHeapReserve); output("Size of heap space to reserve", s); snprintf(s, MAX_MSG, "%#x", header->_32->SizeOfHeapCommit); output("Size of heap space to commit", s); break; } case MAGIC_PE64: { snprintf(s, MAX_MSG, "%#x (%s)", header->_64->Magic, "PE32+"); output("Magic number", s); snprintf(s, MAX_MSG, "%d", header->_64->MajorLinkerVersion); output("Linker major version", s); snprintf(s, MAX_MSG, "%d", header->_64->MinorLinkerVersion); output("Linker minor version", s); snprintf(s, MAX_MSG, "%#x", header->_64->SizeOfCode); output("Size of .text section", s); snprintf(s, MAX_MSG, "%#x", header->_64->SizeOfInitializedData); output("Size of .data section", s); snprintf(s, MAX_MSG, "%#x", header->_64->SizeOfUninitializedData); output("Size of .bss section", s); snprintf(s, MAX_MSG, "%#x", header->_64->AddressOfEntryPoint); output("Entrypoint", s); snprintf(s, MAX_MSG, "%#x", header->_64->BaseOfCode); output("Address of .text section", s); snprintf(s, MAX_MSG, "%#"PRIx64, header->_64->ImageBase); output("ImageBase", s); snprintf(s, MAX_MSG, "%#x", header->_64->SectionAlignment); output("Alignment of sections", s); snprintf(s, MAX_MSG, "%#x", header->_64->FileAlignment); output("Alignment factor", s); snprintf(s, MAX_MSG, "%d", header->_64->MajorOperatingSystemVersion); output("Major version of required OS", s); snprintf(s, MAX_MSG, "%d", header->_64->MinorOperatingSystemVersion); output("Minor version of required OS", s); snprintf(s, MAX_MSG, "%d", header->_64->MajorImageVersion); output("Major version of image", s); snprintf(s, MAX_MSG, "%d", header->_64->MinorImageVersion); output("Minor version of image", s); snprintf(s, MAX_MSG, "%d", header->_64->MajorSubsystemVersion); output("Major version of subsystem", s); snprintf(s, MAX_MSG, "%d", header->_64->MinorSubsystemVersion); output("Minor version of subsystem", s); snprintf(s, MAX_MSG, "%#x", header->_64->SizeOfImage); output("Size of image", s); snprintf(s, MAX_MSG, "%#x", header->_64->SizeOfHeaders); output("Size of headers", s); snprintf(s, MAX_MSG, "%#x", header->_64->CheckSum); output("Checksum", s); const uint16_t subsystem = header->_64->Subsystem; #ifdef LIBPE_ENABLE_OUTPUT_COMPAT_WITH_V06 const char *subsystem_name = "Unknown"; for (size_t i=0; i < max_subsystem; i++) { if (subsystem == subsystemNames[i].subsystem) subsystem_name = subsystemNames[i].name; } #else const char *subsystem_name = pe_windows_subsystem_name(subsystem); if (subsystem_name == NULL) subsystem_name = "Unknown"; #endif snprintf(s, MAX_MSG, "%#x (%s)", subsystem, subsystem_name); output("Subsystem required", s); snprintf(s, MAX_MSG, "%#x", header->_64->DllCharacteristics); output("DLL characteristics", s); #ifndef LIBPE_ENABLE_OUTPUT_COMPAT_WITH_V06 output_open_scope("DLL characteristics names", OUTPUT_SCOPE_TYPE_ARRAY); for (uint16_t i=0, flag=0x0001; i < 16; i++, flag <<= 1) { if (header->_64->DllCharacteristics & flag) output(NULL, pe_image_dllcharacteristic_name(flag)); } output_close_scope(); // DLL characteristics names #endif snprintf(s, MAX_MSG, "%#"PRIx64, header->_64->SizeOfStackReserve); output("Size of stack to reserve", s); snprintf(s, MAX_MSG, "%#"PRIx64, header->_64->SizeOfStackCommit); output("Size of stack to commit", s); snprintf(s, MAX_MSG, "%#"PRIx64, header->_64->SizeOfHeapReserve); output("Size of heap space to reserve", s); snprintf(s, MAX_MSG, "%#"PRIx64, header->_64->SizeOfHeapCommit); output("Size of heap space to commit", s); break; } } output_close_scope(); // Optional/Image heade } static void print_coff_header(IMAGE_COFF_HEADER *header) { #ifdef LIBPE_ENABLE_OUTPUT_COMPAT_WITH_V06 typedef struct { ImageCharacteristics characteristic; const char * const name; } ImageCharacteristicsName; static const ImageCharacteristicsName characteristicsTable[] = { { IMAGE_FILE_RELOCS_STRIPPED, "base relocations stripped" }, { IMAGE_FILE_EXECUTABLE_IMAGE, "executable image" }, { IMAGE_FILE_LINE_NUMS_STRIPPED, "line numbers removed (deprecated)" }, { IMAGE_FILE_LOCAL_SYMS_STRIPPED, "local symbols removed (deprecated)" }, { IMAGE_FILE_AGGRESSIVE_WS_TRIM, "aggressively trim (deprecated for Windows 2000 and later)" }, { IMAGE_FILE_LARGE_ADDRESS_AWARE, "can handle more than 2 GB addresses" }, { IMAGE_FILE_RESERVED, "" }, { IMAGE_FILE_BYTES_REVERSED_LO, "little-endian (deprecated)" }, { IMAGE_FILE_32BIT_MACHINE, "32-bit machine" }, { IMAGE_FILE_DEBUG_STRIPPED, "debugging information removed" }, { IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP, "copy to swap if it's on removable media" }, { IMAGE_FILE_NET_RUN_FROM_SWAP, "copy to swap if it's on network media" }, { IMAGE_FILE_SYSTEM, "system file" }, { IMAGE_FILE_DLL, "DLL image" }, { IMAGE_FILE_UP_SYSTEM_ONLY, "uniprocessor machine" }, { IMAGE_FILE_BYTES_REVERSED_HI, "big-endian (deprecated)" } }; typedef struct { MachineType type; const char * const name; } MachineTypeName; static const MachineTypeName machineTypeTable[] = { { IMAGE_FILE_MACHINE_UNKNOWN, "Any machine type" }, { IMAGE_FILE_MACHINE_AM33, "Matsushita AM33" }, { IMAGE_FILE_MACHINE_AMD64, "x86-64 (64-bits)" }, { IMAGE_FILE_MACHINE_ARM, "ARM little endian" }, { IMAGE_FILE_MACHINE_ARMV7, "ARMv7 (or higher) Thumb mode only" }, { IMAGE_FILE_MACHINE_CEE, "clr pure MSIL (object only)" }, { IMAGE_FILE_MACHINE_EBC, "EFI byte code" }, { IMAGE_FILE_MACHINE_I386, "Intel 386 and compatible (32-bits)"}, { IMAGE_FILE_MACHINE_IA64, "Intel Itanium" }, { IMAGE_FILE_MACHINE_M32R, "Mitsubishi M32R little endian" }, { IMAGE_FILE_MACHINE_MIPS16, "MIPS16" }, { IMAGE_FILE_MACHINE_MIPSFPU, "MIPS with FPU" }, { IMAGE_FILE_MACHINE_MIPSFPU16, "MIPS16 with FPU" }, { IMAGE_FILE_MACHINE_POWERPC, "Power PC little endian" }, { IMAGE_FILE_MACHINE_POWERPCFP, "Power PC with floating point support" }, { IMAGE_FILE_MACHINE_R4000, "MIPS little endian" }, { IMAGE_FILE_MACHINE_SH3, "Hitachi SH3" }, { IMAGE_FILE_MACHINE_SH3DSP, "Hitachi SH3 DSP" }, { IMAGE_FILE_MACHINE_SH4, "Hitachi SH4" }, { IMAGE_FILE_MACHINE_SH5, "Hitachi SH5" }, { IMAGE_FILE_MACHINE_THUMB, "ARM or Thumb (\"interworking\")" }, { IMAGE_FILE_MACHINE_WCEMIPSV2, "MIPS little-endian WCE v2" } }; static const size_t max_machine_type = LIBPE_SIZEOF_ARRAY(machineTypeTable); #endif output_open_scope("COFF/File header", OUTPUT_SCOPE_TYPE_OBJECT); #ifdef LIBPE_ENABLE_OUTPUT_COMPAT_WITH_V06 const char *machine = "Unknown machine type"; for (size_t i=0; i < max_machine_type; i++) { if (header->Machine == machineTypeTable[i].type) machine = machineTypeTable[i].name; } #else const char *machine = pe_machine_type_name(header->Machine); if (machine == NULL) machine = "Unknown machine type"; #endif char s[MAX_MSG]; snprintf(s, MAX_MSG, "%#x %s", header->Machine, machine); output("Machine", s); snprintf(s, MAX_MSG, "%d", header->NumberOfSections); output("Number of sections", s); char timestr[40]; strftime(timestr, sizeof(timestr), "%a, %d %b %Y %H:%M:%S UTC", gmtime((time_t *) &header->TimeDateStamp)); snprintf(s, MAX_MSG, "%d (%s)", header->TimeDateStamp, timestr); output("Date/time stamp", s); snprintf(s, MAX_MSG, "%#x", header->PointerToSymbolTable); output("Symbol Table offset", s); snprintf(s, MAX_MSG, "%d", header->NumberOfSymbols); output("Number of symbols", s); snprintf(s, MAX_MSG, "%#x", header->SizeOfOptionalHeader); output("Size of optional header", s); snprintf(s, MAX_MSG, "%#x", header->Characteristics); output("Characteristics", s); output_open_scope("Characteristics names", OUTPUT_SCOPE_TYPE_ARRAY); for (uint16_t i=0, flag=0x0001; i < 16; i++, flag <<= 1) { if (header->Characteristics & flag) #ifdef LIBPE_ENABLE_OUTPUT_COMPAT_WITH_V06 output(NULL, characteristicsTable[i].name); #else output(NULL, pe_image_characteristic_name(flag)); #endif } output_close_scope(); // Characteristics names output_close_scope(); // COFF/File header } static void print_dos_header(IMAGE_DOS_HEADER *header) { char s[MAX_MSG]; output_open_scope("DOS Header", OUTPUT_SCOPE_TYPE_OBJECT); snprintf(s, MAX_MSG, "%#x (MZ)", header->e_magic); output("Magic number", s); snprintf(s, MAX_MSG, "%d", header->e_cblp); output("Bytes in last page", s); snprintf(s, MAX_MSG, "%d", header->e_cp); output("Pages in file", s); snprintf(s, MAX_MSG, "%d", header->e_crlc); output("Relocations", s); snprintf(s, MAX_MSG, "%d", header->e_cparhdr); output("Size of header in paragraphs", s); snprintf(s, MAX_MSG, "%d", header->e_minalloc); output("Minimum extra paragraphs", s); snprintf(s, MAX_MSG, "%d", header->e_maxalloc); output("Maximum extra paragraphs", s); snprintf(s, MAX_MSG, "%#x", header->e_ss); output("Initial (relative) SS value", s); snprintf(s, MAX_MSG, "%#x", header->e_sp); output("Initial SP value", s); snprintf(s, MAX_MSG, "%#x", header->e_ip); output("Initial IP value", s); snprintf(s, MAX_MSG, "%#x", header->e_cs); output("Initial (relative) CS value", s); snprintf(s, MAX_MSG, "%#x", header->e_lfarlc); output("Address of relocation table", s); snprintf(s, MAX_MSG, "%#x", header->e_ovno); output("Overlay number", s); snprintf(s, MAX_MSG, "%#x", header->e_oemid); output("OEM identifier", s); snprintf(s, MAX_MSG, "%#x", header->e_oeminfo); output("OEM information", s); snprintf(s, MAX_MSG, "%#x", header->e_lfanew); output("PE header offset", s); output_close_scope(); // DOS Header } static void print_imported_functions(pe_ctx_t *ctx, uint64_t offset) { uint64_t ofs = offset; char hint_str[16]; char fname[MAX_FUNCTION_NAME]; bool is_ordinal; memset(hint_str, 0, sizeof(hint_str)); memset(fname, 0, sizeof(fname)); while (1) { switch (ctx->pe.optional_hdr.type) { case MAGIC_PE32: { const IMAGE_THUNK_DATA32 *thunk = LIBPE_PTR_ADD(ctx->map_addr, ofs); if (!pe_can_read(ctx, thunk, sizeof(IMAGE_THUNK_DATA32))) { // TODO: Should we report something? return; } // Type punning const uint32_t thunk_type = *(uint32_t *)thunk; if (thunk_type == 0) return; is_ordinal = (thunk_type & IMAGE_ORDINAL_FLAG32) != 0; if (is_ordinal) { snprintf(hint_str, sizeof(hint_str)-1, "%"PRIu32, thunk->u1.Ordinal & ~IMAGE_ORDINAL_FLAG32); } else { const uint64_t imp_ofs = pe_rva2ofs(ctx, thunk->u1.AddressOfData); const IMAGE_IMPORT_BY_NAME *imp_name = LIBPE_PTR_ADD(ctx->map_addr, imp_ofs); if (!pe_can_read(ctx, imp_name, sizeof(IMAGE_IMPORT_BY_NAME))) { // TODO: Should we report something? return; } snprintf(hint_str, sizeof(hint_str)-1, "%d", imp_name->Hint); strncpy(fname, (char *)imp_name->Name, sizeof(fname)-1); // Because `strncpy` does not guarantee to NUL terminate the string itself, this must be done explicitly. fname[sizeof(fname) - 1] = '\0'; //size_t fname_len = strlen(fname); } ofs += sizeof(IMAGE_THUNK_DATA32); break; } case MAGIC_PE64: { const IMAGE_THUNK_DATA64 *thunk = LIBPE_PTR_ADD(ctx->map_addr, ofs); if (!pe_can_read(ctx, thunk, sizeof(IMAGE_THUNK_DATA64))) { // TODO: Should we report something? return; } // Type punning const uint64_t thunk_type = *(uint64_t *)thunk; if (thunk_type == 0) return; is_ordinal = (thunk_type & IMAGE_ORDINAL_FLAG64) != 0; if (is_ordinal) { snprintf(hint_str, sizeof(hint_str)-1, "%"PRIu64, thunk->u1.Ordinal & ~IMAGE_ORDINAL_FLAG64); } else { uint64_t imp_ofs = pe_rva2ofs(ctx, thunk->u1.AddressOfData); const IMAGE_IMPORT_BY_NAME *imp_name = LIBPE_PTR_ADD(ctx->map_addr, imp_ofs); if (!pe_can_read(ctx, imp_name, sizeof(IMAGE_IMPORT_BY_NAME))) { // TODO: Should we report something? return; } snprintf(hint_str, sizeof(hint_str)-1, "%d", imp_name->Hint); strncpy(fname, (char *)imp_name->Name, sizeof(fname)-1); // Because `strncpy` does not guarantee to NUL terminate the string itself, this must be done explicitly. fname[sizeof(fname) - 1] = '\0'; //size_t fname_len = strlen(fname); } ofs += sizeof(IMAGE_THUNK_DATA64); break; } } output_open_scope("Function", OUTPUT_SCOPE_TYPE_OBJECT); if (is_ordinal) output("Ordinal", hint_str); else output("Name", fname); output_close_scope(); // Function } } static void print_exports(pe_ctx_t *ctx) { const IMAGE_DATA_DIRECTORY *dir = pe_directory_by_entry(ctx, IMAGE_DIRECTORY_ENTRY_EXPORT); if (dir == NULL) EXIT_ERROR("export directory not found") const uint64_t va = dir->VirtualAddress; if (va == 0) { fprintf(stderr, "export directory not found\n"); return; } uint64_t ofs; ofs = pe_rva2ofs(ctx, va); const IMAGE_EXPORT_DIRECTORY *exp = LIBPE_PTR_ADD(ctx->map_addr, ofs); if (!pe_can_read(ctx, exp, sizeof(IMAGE_EXPORT_DIRECTORY))) { // TODO: Should we report something? return; } ofs = pe_rva2ofs(ctx, exp->AddressOfNames); const uint32_t *rva_ptr = LIBPE_PTR_ADD(ctx->map_addr, ofs); if (!pe_can_read(ctx, rva_ptr, sizeof(uint32_t))) { // TODO: Should we report something? return; } const uint32_t rva = *rva_ptr; ofs = pe_rva2ofs(ctx, rva); output_open_scope("Exported functions", OUTPUT_SCOPE_TYPE_ARRAY); // If `NumberOfNames == 0` then all functions are exported by ordinal. // Otherwise `NumberOfNames` must be equal to `NumberOfFunctions` if (exp->NumberOfNames != 0 && exp->NumberOfNames != exp->NumberOfFunctions) { fprintf(stderr, "NumberOfFunctions differs from NumberOfNames\n"); output_close_scope(); // Exported functions } uint64_t offset_to_AddressOfFunctions = pe_rva2ofs(ctx, exp->AddressOfFunctions); uint64_t offset_to_AddressOfNames = pe_rva2ofs(ctx, exp->AddressOfNames); uint64_t offset_to_AddressOfNameOrdinals = pe_rva2ofs(ctx, exp->AddressOfNameOrdinals); // // The format of IMAGE_EXPORT_DIRECTORY can be seen in http://i.msdn.microsoft.com/dynimg/IC60608.gif // // We want to use `NumberOfFunctions` for looping as it's the total number of functions/symbols // exported by the module. On the other hand, `NumberOfNames` is the number of // functions/symbols exported by name only. for (uint32_t i=0; i < exp->NumberOfFunctions; i++) { uint64_t entry_ordinal_list_ptr = offset_to_AddressOfNameOrdinals + sizeof(uint16_t) * i; uint16_t *entry_ordinal_list = LIBPE_PTR_ADD(ctx->map_addr, entry_ordinal_list_ptr); uint64_t entry_va_list_ptr = offset_to_AddressOfFunctions + sizeof(uint32_t) * i; uint32_t *entry_va_list = LIBPE_PTR_ADD(ctx->map_addr, entry_va_list_ptr); uint64_t entry_name_list_ptr = offset_to_AddressOfNames + sizeof(uint32_t) * i; uint32_t *entry_name_list = LIBPE_PTR_ADD(ctx->map_addr, entry_name_list_ptr); // printf("ctx->map_addr = %p\n", ctx->map_addr); // printf("ctx->map_end = %p\n", ctx->map_end); // printf("entry_ordinal_list = %p\n", entry_ordinal_list); // printf("entry_va_list = %p\n", entry_va_list); // printf("entry_name_list = %p\n", entry_name_list); if (!pe_can_read(ctx, entry_ordinal_list, sizeof(uint32_t))) { // TODO: Should we report something? break; } if (!pe_can_read(ctx, entry_va_list, sizeof(uint32_t))) { // TODO: Should we report something? break; } if (!pe_can_read(ctx, entry_name_list, sizeof(uint32_t))) { // TODO: Should we report something? break; } // Add `Base` to the element of `AddressOfNameOrdinals` array to get the correct ordinal.. //const uint16_t entry_ordinal = exp->Base + *entry_ordinal_list; const uint32_t entry_va = *entry_va_list; const uint32_t entry_name_rva = *entry_name_list; const uint64_t entry_name_ofs = pe_rva2ofs(ctx, entry_name_rva); const char *entry_name = LIBPE_PTR_ADD(ctx->map_addr, entry_name_ofs); // Validate whether it's ok to access at least 1 byte after entry_name. // It might be '\0', for example. if (!pe_can_read(ctx, entry_name, 1)) { // TODO: Should we report something? break; } //printf("ord=%d, va=%x, name=%s\n", entry_ordinal, entry_va, entry_name); // Declared as 11 bytes so that it can store the hexadecimal representation of the maximum // possible value of an uint32_t variable, 0xFFFFFFFF. char addr[11] = { 0 }; sprintf(addr, "%#x", entry_va); char fname[300] = { 0 }; strncpy(fname, entry_name, sizeof(fname)-1); // Because `strncpy` does not guarantee to NUL terminate the string itself, this must be done explicitly. fname[sizeof(fname) - 1] = '\0'; output_open_scope("Function", OUTPUT_SCOPE_TYPE_OBJECT); // Check whether the exported function is forwarded. // It's forwarded if its RVA is inside the exports section. if (entry_va >= va && entry_va <= va + dir->Size) { // When a symbol is forwarded, its RVA points to a string containing // the name of the DLL and symbol to which it is forwarded. const uint64_t fw_entry_name_ofs = pe_rva2ofs(ctx, entry_va); const char *fw_entry_name = LIBPE_PTR_ADD(ctx->map_addr, fw_entry_name_ofs); // Validate whether it's ok to access at least 1 byte after fw_entry_name. // It might be '\0', for example. if (!pe_can_read(ctx, fw_entry_name, 1)) { // TODO: Should we report something? break; } char fname_forwarded[sizeof(fname) * 2 + 4] = { 0 }; // Twice the size plus " -> ". snprintf(fname_forwarded, sizeof(fname_forwarded)-1, "%s -> %s", fname, fw_entry_name); output(addr, fname_forwarded); } else { output(addr, fname); } output_close_scope(); // Function } output_close_scope(); // Exported functions } static void print_imports(pe_ctx_t *ctx) { const IMAGE_DATA_DIRECTORY *dir = pe_directory_by_entry(ctx, IMAGE_DIRECTORY_ENTRY_IMPORT); if (dir == NULL) EXIT_ERROR("import directory not found") const uint64_t va = dir->VirtualAddress; if (va == 0) { fprintf(stderr, "import directory not found\n"); return; } uint64_t ofs = pe_rva2ofs(ctx, va); output_open_scope("Imported functions", OUTPUT_SCOPE_TYPE_ARRAY); while (1) { IMAGE_IMPORT_DESCRIPTOR *id = LIBPE_PTR_ADD(ctx->map_addr, ofs); if (!pe_can_read(ctx, id, sizeof(IMAGE_IMPORT_DESCRIPTOR))) { // TODO: Should we report something? output_close_scope(); return; } if (!id->u1.OriginalFirstThunk && !id->FirstThunk) break; ofs += sizeof(IMAGE_IMPORT_DESCRIPTOR); const uint64_t aux = ofs; // Store current ofs ofs = pe_rva2ofs(ctx, id->Name); if (ofs == 0) break; const char *dll_name_ptr = LIBPE_PTR_ADD(ctx->map_addr, ofs); // Validate whether it's ok to access at least 1 byte after dll_name_ptr. // It might be '\0', for example. if (!pe_can_read(ctx, dll_name_ptr, 1)) { // TODO: Should we report something? break; } char dll_name[MAX_DLL_NAME]; strncpy(dll_name, dll_name_ptr, sizeof(dll_name)-1); // Because `strncpy` does not guarantee to NUL terminate the string itself, this must be done explicitly. dll_name[sizeof(dll_name) - 1] = '\0'; output_open_scope("Library", OUTPUT_SCOPE_TYPE_OBJECT); output("Name", dll_name); ofs = pe_rva2ofs(ctx, id->u1.OriginalFirstThunk ? id->u1.OriginalFirstThunk : id->FirstThunk); if (ofs == 0) { output_close_scope(); // Library break; } output_open_scope("Functions", OUTPUT_SCOPE_TYPE_ARRAY); // Search for DLL imported functions print_imported_functions(ctx, ofs); output_close_scope(); // Functions ofs = aux; // Restore previous ofs output_close_scope(); // Library } output_close_scope(); // Imported functions } int main(int argc, char *argv[]) { pev_config_t config; PEV_INITIALIZE(&config); if (argc < 2) { usage(); return EXIT_FAILURE; } output_set_cmdline(argc, argv); options_t *options = parse_options(argc, argv); // opcoes pe_ctx_t ctx; pe_err_e err = pe_load_file(&ctx, argv[argc-1]); if (err != LIBPE_E_OK) { pe_error_print(stderr, err); return EXIT_FAILURE; } err = pe_parse(&ctx); if (err != LIBPE_E_OK) { pe_error_print(stderr, err); return EXIT_FAILURE; } if (!pe_is_pe(&ctx)) EXIT_ERROR("not a valid PE file"); output_open_document(); // dos header if (options->dos || options->all_headers || options->all) { IMAGE_DOS_HEADER *header_ptr = pe_dos(&ctx); if (header_ptr) print_dos_header(header_ptr); else { EXIT_ERROR("unable to read DOS header"); } } // coff/file header if (options->coff || options->all_headers || options->all) { IMAGE_COFF_HEADER *header_ptr = pe_coff(&ctx); if (header_ptr) print_coff_header(header_ptr); else { EXIT_ERROR("unable to read COFF file header"); } } // optional header if (options->opt || options->all_headers || options->all) { IMAGE_OPTIONAL_HEADER *header_ptr = pe_optional(&ctx); if (header_ptr) print_optional_header(header_ptr); else { EXIT_ERROR("unable to read Optional (Image) file header"); } } IMAGE_DATA_DIRECTORY **directories = pe_directories(&ctx); bool directories_warned = false; // directories if (options->dirs || options->all) { if (directories != NULL) print_directories(&ctx); else if (!directories_warned) { fprintf(stderr, "directories not found\n"); directories_warned = true; } } // imports if (options->imports || options->all) { if (directories != NULL) print_imports(&ctx); else if (!directories_warned) { fprintf(stderr, "directories not found\n"); directories_warned = true; } } // exports if (options->exports || options->all) { if (directories != NULL) print_exports(&ctx); else if (!directories_warned) { fprintf(stderr, "directories not found\n"); directories_warned = true; } } // sections if (options->all_sections || options->all) { if (pe_sections(&ctx) != NULL) print_sections(&ctx); else { EXIT_ERROR("unable to read sections"); } } output_close_document(); // libera a memoria free_options(options); // free err = pe_unload(&ctx); if (err != LIBPE_E_OK) { pe_error_print(stderr, err); return EXIT_FAILURE; } PEV_FINALIZE(&config); return EXIT_SUCCESS; } pev/src/utils.c0000644000175000017500000001140013034014706012453 0ustar useruser/* libpe - the PE library Copyright (C) 2010 - 2014 libpe authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #include "utils.h" #include "error.h" #include #include #include #include #include #include #include #include #include bool utils_str_ends_with(const char *str, const char *suffix) { if (str == NULL || suffix == NULL) return 0; size_t len_str = strlen(str); size_t len_suffix = strlen(suffix); if (len_suffix > len_str) return 0; return strncmp(str + len_str - len_suffix, suffix, len_suffix) == 0; } char *utils_str_inplace_ltrim(char *str) { char *ptr = str; while (*ptr != '\0' && isspace(*ptr)) ptr++; return ptr; } char *utils_str_inplace_rtrim(char *str) { const size_t length = strlen(str); char *ptr = str + length - 1; while (ptr != str && isspace(*ptr)) ptr--; // Move back to space. ptr++; // Replace it with '\0'. *ptr = '\0'; return str; } char *utils_str_inplace_trim(char *str) { char *begin = str; // leading spaces while (*begin != '\0' && isspace(*begin)) begin++; if (*begin == '\0') // nothing left? return begin; // Trailing spaces const size_t length = strlen(begin); char *end = begin + length - 1; while (end != begin && isspace(*end)) end--; end++; // Move to space // Overwrite space with null terminator *end = '\0'; return begin; } char *utils_str_array_join(char *strings[], size_t count, char delimiter) { if (strings == NULL || strings[0] == NULL) return strdup(""); // Count how much memory the resulting string is going to need, // considering delimiters for each string. The last delimiter will // be a NULL terminator; size_t result_length = 0; for (size_t i = 0; i < count; i++) { result_length += strlen(strings[i]) + 1; } // Allocate the resulting string. char *result = malloc(result_length); if (result == NULL) return NULL; // Return NULL because it failed miserably! // Null terminate it. result[--result_length] = '\0'; // Join all strings. char ** current_string = strings; char * current_char = current_string[0]; for (size_t i = 0; i < result_length; i++) { if (*current_char != '\0') { result[i] = *current_char++; } else { // Reached the end of a string. Add a delimiter and move to the next one. result[i] = delimiter; current_string++; current_char = current_string[0]; } } return result; } int utils_round_up(int num_to_round, int multiple) { if (multiple == 0) return 0; return (num_to_round + multiple - 1) / multiple * multiple; } int utils_is_file_readable(const char *path) { // Open the file. const int fd = open(path, O_RDWR); if (fd == -1) { //perror("open"); return LIBPE_E_OPEN_FAILED; } // Stat the fd to retrieve the file informations. // If file is a symlink, fstat will stat the pointed file, not the link. struct stat stat; int ret = fstat(fd, &stat); if (ret == -1) { close(fd); //perror("fstat"); return LIBPE_E_FSTAT_FAILED; } // Check if we're dealing with a regular file. if (!S_ISREG(stat.st_mode)) { close(fd); //fprintf(stderr, "%s is not a file\n", path); return LIBPE_E_NOT_A_FILE; } close(fd); return LIBPE_E_OK; } // IMPORTANT: This is not thread-safe - not reentrant. const char *utils_get_homedir(void) { const char *homedir = getenv("HOME"); if (homedir != NULL) return homedir; errno = 0; struct passwd *pwd = getpwuid(getuid()); return pwd == NULL ? NULL : pwd->pw_dir; } pev/src/plugins.c0000644000175000017500000001451313034014706013004 0ustar useruser/* pev - the PE file analyzer toolkit plugins.c - Implementation for the plugins subsystem. Copyright (C) 2012 - 2014 pev authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #include "plugins.h" #include "plugin.h" #include "dylib.h" #include "common.h" #include "compat/sys/queue.h" #include "utils.h" #include #include #include #include #include "config.h" #include "pev_api.h" typedef struct _plugins_entry { dylib_t library; plugin_loaded_fn_t plugin_loaded_fn; plugin_initialize_fn_t plugin_initialize_fn; plugin_shutdown_fn_t plugin_shutdown_fn; plugin_unloaded_fn_t plugin_unloaded_fn; SLIST_ENTRY(_plugins_entry) entries; } plugins_entry_t; static SLIST_HEAD(_plugins_t_list, _plugins_entry) g_loaded_plugins = SLIST_HEAD_INITIALIZER(g_loaded_plugins); int plugins_load(const char *path) { plugins_entry_t *entry = malloc(sizeof *entry); if (entry == NULL) { fprintf(stderr, "plugin: allocation failed for entry\n"); return -1; } memset(entry, 0, sizeof *entry); dylib_t *library = &entry->library; //fprintf(stdout, "plugins: Loading '%s'... ", path); int ret = dylib_load(library, path); //fprintf(stdout, "%s.\n", ret < 0 ? "failed" : "ok"); if (ret < 0) { free(entry); return -2; } *(void **)(&entry->plugin_loaded_fn) = dylib_get_symbol(library, "plugin_loaded"); *(void **)(&entry->plugin_initialize_fn) = dylib_get_symbol(library, "plugin_initialize"); *(void **)(&entry->plugin_shutdown_fn) = dylib_get_symbol(library, "plugin_shutdown"); *(void **)(&entry->plugin_unloaded_fn) = dylib_get_symbol(library, "plugin_unloaded"); // Only plugin_initialize_fn and plugin_shutdown_fn are required. if (entry->plugin_initialize_fn == NULL || entry->plugin_shutdown_fn == NULL) { fprintf(stderr, "plugins: %s is incompatible with this version.\n", path); dylib_unload(library); free(entry); return -3; } if (entry->plugin_loaded_fn != NULL) { const int loaded = entry->plugin_loaded_fn(); if (loaded < 0) { fprintf(stderr, "plugins: plugin didn't load correctly\n"); dylib_unload(library); free(entry); return -4; } } const pev_api_t *pev_api = pev_api_ptr(); const int initialized = entry->plugin_initialize_fn(pev_api); if (initialized < 0) { fprintf(stderr, "plugins: plugin didn't initialize correctly\n"); dylib_unload(library); free(entry); return -5; } SLIST_INSERT_HEAD(&g_loaded_plugins, entry, entries); return 0; } static void plugin_unload_without_removal(plugins_entry_t *entry) { dylib_t *library = &entry->library; entry->plugin_shutdown_fn(); if (entry->plugin_unloaded_fn != NULL) { entry->plugin_unloaded_fn(); } int ret = dylib_unload(library); if (ret < 0) { // TODO(jweyrich): What should we do? } } #if 0 static void plugin_unload(plugins_entry_t *entry) { plugin_unload_without_removal(entry); SLIST_REMOVE(&g_loaded_plugins, entry, _plugins_entry, entries); free(entry); } #endif int plugins_load_all_from_directory(const char *path) { DIR *dir = opendir(path); if (dir == NULL) { fprintf(stderr, "plugins: could not open directory '%s' -- %s\n", path, strerror(errno)); return -1; } long path_max = pathconf(path, _PC_PATH_MAX); char *relative_path = malloc(path_max); if (relative_path == NULL) { fprintf(stderr, "plugins: allocation failed for relative path\n"); closedir(dir); return -2; } size_t load_count = 0; struct dirent *dir_entry; // print all the files and directories within directory // SECURITY: Don't use readdir_r because it will introduce a // race condition between the opendir and pathconf calls. // MORE: http://womble.decadent.org.uk/readdir_r-advisory.html // NOTE: readdir is not thread-safe. while ((dir_entry = readdir(dir)) != NULL) { switch (dir_entry->d_type) { default: // Unhandled break; case DT_REG: // Regular file { const char *filename = dir_entry->d_name; // TODO(jweyrich): Use macro conditions for each system: .so, .dylib, .dll #if defined(__linux__) const bool possible_plugin = utils_str_ends_with(filename, ".so") != 0; #elif defined(__APPLE__) const bool possible_plugin = utils_str_ends_with(filename, ".dylib") != 0; #elif defined(__CYGWIN__) const bool possible_plugin = utils_str_ends_with(filename, ".dll") != 0; #else #error Not supported #endif if (!possible_plugin) break; snprintf(relative_path, path_max, "%s/%s", path, filename); //printf("relative_path = %s\n", relative_path); int ret = plugins_load(relative_path); if (ret < 0) { free(relative_path); closedir(dir); return ret; } load_count++; break; } case DT_DIR: // Directory break; } } free(relative_path); closedir(dir); return load_count; } int plugins_load_all(pev_config_t *config) { return plugins_load_all_from_directory(config->plugins_path); } void plugins_unload_all(void) { while (!SLIST_EMPTY(&g_loaded_plugins)) { plugins_entry_t *entry = SLIST_FIRST(&g_loaded_plugins); plugin_unload_without_removal(entry); SLIST_REMOVE_HEAD(&g_loaded_plugins, entries); free(entry); } } pev/src/pesec.c0000644000175000017500000003205713034014706012425 0ustar useruser/* pev - the PE file analyzer toolkit pesec.c - Check for security features in PE files. Copyright (C) 2012 - 2017 pev authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #include "common.h" #include #include #include #include #include "compat/strlcat.h" #include "plugins.h" #include "utils.h" #define PROGRAM "pesec" typedef enum { CERT_FORMAT_TEXT = 1, CERT_FORMAT_PEM = 2, CERT_FORMAT_DER = 3 } cert_format_e; typedef struct { cert_format_e certoutform; BIO *certout; } options_t; static void usage(void) { static char formats[255]; output_available_formats(formats, sizeof(formats), '|'); printf("Usage: %s [OPTIONS] FILE\n" "Check for security features in PE files\n" "\nExample: %s wordpad.exe\n" "\nOptions:\n" " -f, --format <%s> change output format (default: text)\n" " -c, --certoutform specifies the certificate output format (default: text)\n" " -o, --certout specifies the output filename to write certificates to (default: stdout)\n" " -V, --version show version and exit\n" " --help show this help and exit\n", PROGRAM, PROGRAM, formats); } static cert_format_e parse_certoutform(const char *optarg) { cert_format_e result; if (strcmp(optarg, "text") == 0) result = CERT_FORMAT_TEXT; else if (strcmp(optarg, "pem") == 0) result = CERT_FORMAT_PEM; else if (strcmp(optarg, "der") == 0) result = CERT_FORMAT_DER; else EXIT_ERROR("invalid cert_format option"); return result; } static BIO *parse_certout(const char *optarg) { BIO *bio = BIO_new(BIO_s_file()); if (bio == NULL) { EXIT_ERROR("could not allocate BIO"); } if (strcmp(optarg, "stdout") == 0) { BIO_set_fp(bio, stdout, BIO_NOCLOSE); } else if (strcmp(optarg, "stderr") == 0) { BIO_set_fp(bio, stderr, BIO_NOCLOSE); } else { int ret = BIO_write_filename(bio, (char *)optarg); if (ret == 0) { BIO_free(bio); EXIT_ERROR("failed to open file"); } } return bio; } static void free_options(options_t *options) { if (options == NULL) return; if (options->certout != NULL) BIO_free(options->certout); free(options); } static options_t *parse_options(int argc, char *argv[]) { options_t *options = malloc_s(sizeof(options_t)); memset(options, 0, sizeof(options_t)); /* Parameters for getopt_long() function */ static const char short_options[] = "f:c:o:V"; static const struct option long_options[] = { { "format", required_argument, NULL, 'f' }, { "certoutform", required_argument, NULL, 'c' }, { "certout", required_argument, NULL, 'o' }, { "help", no_argument, NULL, 1 }, { "version", no_argument, NULL, 'V' }, { NULL, 0, NULL, 0 } }; int c, ind; while ((c = getopt_long(argc, argv, short_options, long_options, &ind))) { if (c < 0) break; switch (c) { case 1: // --help option usage(); exit(EXIT_SUCCESS); case 'f': if (output_set_format_by_name(optarg) < 0) EXIT_ERROR("invalid format option"); break; case 'v': printf("%s %s\n%s\n", PROGRAM, TOOLKIT, COPY); exit(EXIT_SUCCESS); case 'c': options->certoutform = parse_certoutform(optarg); break; case 'o': options->certout = parse_certout(optarg); break; case 'V': printf("%s %s\n%s\n", PROGRAM, TOOLKIT, COPY); exit(EXIT_SUCCESS); default: fprintf(stderr, "%s: try '--help' for more information\n", PROGRAM); exit(EXIT_FAILURE); } } return options; } /* find stack cookies, a.k.a canary, buffer security check option in MVS 2010 */ static bool stack_cookies(pe_ctx_t *ctx) { static const unsigned char mvs2010[] = { 0x55, 0x8b, 0xec, 0x83, 0x33, 0xc5, 0x33, 0xcd, 0xe8, 0xc3 }; if (ctx == NULL) return false; size_t found = 0; const uint8_t *file_bytes = LIBPE_PTR_ADD(ctx->map_addr, 0); const uint64_t filesize = pe_filesize(ctx); for (uint64_t ofs=0; ofs < filesize; ofs++) { for (size_t i=0; i < sizeof(mvs2010); i++) { if (file_bytes[ofs] == mvs2010[i] && found == i) found++; } } return found == sizeof(mvs2010); } static void print_certificate(BIO *out, cert_format_e format, X509 *cert) { if (out == NULL) return; switch (format) { default: case CERT_FORMAT_TEXT: X509_print(out, cert); break; case CERT_FORMAT_PEM: PEM_write_bio_X509(out, cert); break; case CERT_FORMAT_DER: EXIT_ERROR("DER format is not yet supported for output"); break; } } static int parse_pkcs7_data(const options_t *options, const CRYPT_DATA_BLOB *blob) { int result = 0; const cert_format_e input_fmt = CERT_FORMAT_DER; PKCS7 *p7 = NULL; BIO *in = NULL; CRYPTO_malloc_init(); ERR_load_crypto_strings(); OpenSSL_add_all_algorithms(); in = BIO_new_mem_buf(blob->pbData, blob->cbData); if (in == NULL) { result = -2; goto error; } switch (input_fmt) { default: EXIT_ERROR("unhandled input format for certificate"); case CERT_FORMAT_DER: p7 = d2i_PKCS7_bio(in, NULL); break; case CERT_FORMAT_PEM: p7 = PEM_read_bio_PKCS7(in, NULL, NULL, NULL); break; } if (p7 == NULL) { ERR_print_errors_fp(stderr); result = -3; goto error; } STACK_OF(X509) *certs = NULL; int type = OBJ_obj2nid(p7->type); switch (type) { default: break; case NID_pkcs7_signed: // PKCS7_type_is_signed(p7) certs = p7->d.sign->cert; break; case NID_pkcs7_signedAndEnveloped: // PKCS7_type_is_signedAndEnveloped(p7) certs = p7->d.signed_and_enveloped->cert; break; } const int numcerts = certs != NULL ? sk_X509_num(certs) : 0; for (int i = 0; i < numcerts; i++) { X509 *cert = sk_X509_value(certs, i); print_certificate(options->certout, options->certoutform, cert); // NOTE: Calling X509_free(cert) is unnecessary. } // Print whether certificate signature is valid if (numcerts > 0) { X509 *subject = sk_X509_value(certs, 0); X509 *issuer = sk_X509_value(certs, numcerts - 1); int valid_sig = X509_verify(subject, X509_get_pubkey(issuer)); output("Signature", valid_sig == 1 ? "valid" : "invalid"); } // Print signers if (numcerts > 0) { output_open_scope("signers", OUTPUT_SCOPE_TYPE_ARRAY); for (int i = 0; i < numcerts; i++) { X509 *cert = sk_X509_value(certs, i); X509_NAME *name = X509_get_subject_name(cert); int issuer_name_len = X509_NAME_get_text_by_NID(name, NID_commonName, NULL, 0); if (issuer_name_len > 0) { output_open_scope("signer", OUTPUT_SCOPE_TYPE_OBJECT); char issuer_name[issuer_name_len + 1]; X509_NAME_get_text_by_NID(name, NID_commonName, issuer_name, issuer_name_len + 1); output("Issuer", issuer_name); output_close_scope(); // signer } } output_close_scope(); // signers } error: if (p7 != NULL) PKCS7_free(p7); if (in != NULL) BIO_free(in); // Deallocate everything from OpenSSL_add_all_algorithms EVP_cleanup(); // Deallocate everything from ERR_load_crypto_strings ERR_free_strings(); return result; } static void parse_certificates(const options_t *options, pe_ctx_t *ctx) { const IMAGE_DATA_DIRECTORY * const directory = pe_directory_by_entry(ctx, IMAGE_DIRECTORY_ENTRY_SECURITY); if (directory == NULL) return; if (directory->VirtualAddress == 0 || directory->Size == 0) return; uint32_t fileOffset = directory->VirtualAddress; // This a file pointer rather than a common RVA. // TODO(jweyrich): We should count how many certificates the file has, and based on this // decide whether to proceed and open the certificates scope. output_open_scope("certificates", OUTPUT_SCOPE_TYPE_ARRAY); while (fileOffset - directory->VirtualAddress < directory->Size) { // Read the size of this WIN_CERTIFICATE uint32_t *dwLength_ptr = LIBPE_PTR_ADD(ctx->map_addr, fileOffset); if (!pe_can_read(ctx, dwLength_ptr, sizeof(uint32_t))) { output_close_scope(); // certificates // TODO: Should we report something? return; } // Type punning uint32_t dwLength = *(uint32_t *)dwLength_ptr; WIN_CERTIFICATE *cert = LIBPE_PTR_ADD(ctx->map_addr, fileOffset); if (!pe_can_read(ctx, cert, dwLength)) { output_close_scope(); // certificates // TODO: Should we report something? return; } output_open_scope("certificate", OUTPUT_SCOPE_TYPE_OBJECT); static char value[MAX_MSG]; snprintf(value, MAX_MSG, "%u bytes", cert->dwLength); output("Length", value); snprintf(value, MAX_MSG, "0x%x (%s)", cert->wRevision, cert->wRevision == WIN_CERT_REVISION_1_0 ? "1" : cert->wRevision == WIN_CERT_REVISION_2_0 ? "2" : "unknown"); output("Revision", value); snprintf(value, MAX_MSG, "0x%x", cert->wCertificateType); switch (cert->wCertificateType) { default: bsd_strlcat(value, " (UNKNOWN)", MAX_MSG); break; case WIN_CERT_TYPE_X509: bsd_strlcat(value, " (X509)", MAX_MSG); break; case WIN_CERT_TYPE_PKCS_SIGNED_DATA: bsd_strlcat(value, " (PKCS_SIGNED_DATA)", MAX_MSG); break; case WIN_CERT_TYPE_TS_STACK_SIGNED: bsd_strlcat(value, " (TS_STACK_SIGNED)", MAX_MSG); break; } output("Type", value); fileOffset += utils_round_up(cert->dwLength, 8); // Offset to the next certificate. if (fileOffset - directory->VirtualAddress > directory->Size) EXIT_ERROR("either the attribute certificate table or the Size field is corrupted"); switch (cert->wRevision) { default: EXIT_ERROR("unknown wRevision"); case WIN_CERT_REVISION_1_0: EXIT_ERROR("WIN_CERT_REVISION_1_0 is not supported"); case WIN_CERT_REVISION_2_0: break; } switch (cert->wCertificateType) { default: EXIT_ERROR("unknown wCertificateType"); case WIN_CERT_TYPE_X509: EXIT_ERROR("WIN_CERT_TYPE_X509 is not supported"); case WIN_CERT_TYPE_PKCS_SIGNED_DATA: { CRYPT_DATA_BLOB p7data; p7data.cbData = cert->dwLength - offsetof(WIN_CERTIFICATE, bCertificate); p7data.pbData = cert->bCertificate; parse_pkcs7_data(options, &p7data); break; } case WIN_CERT_TYPE_TS_STACK_SIGNED: EXIT_ERROR("WIN_CERT_TYPE_TS_STACK_SIGNED is not supported"); case WIN_CERT_TYPE_EFI_PKCS115: EXIT_ERROR("WIN_CERT_TYPE_EFI_PKCS115 is not supported"); case WIN_CERT_TYPE_EFI_GUID: EXIT_ERROR("WIN_CERT_TYPE_EFI_GUID is not supported"); } output_close_scope(); // certificate } output_close_scope(); // certificates } int main(int argc, char *argv[]) { pev_config_t config; PEV_INITIALIZE(&config); if (argc < 2) { usage(); exit(EXIT_FAILURE); } output_set_cmdline(argc, argv); options_t *options = parse_options(argc, argv); // opcoes const char *path = argv[argc-1]; pe_ctx_t ctx; pe_err_e err = pe_load_file(&ctx, path); if (err != LIBPE_E_OK) { pe_error_print(stderr, err); return EXIT_FAILURE; } err = pe_parse(&ctx); if (err != LIBPE_E_OK) { pe_error_print(stderr, err); return EXIT_FAILURE; } if (!pe_is_pe(&ctx)) EXIT_ERROR("not a valid PE file"); IMAGE_OPTIONAL_HEADER *optional = pe_optional(&ctx); if (optional == NULL) return EXIT_FAILURE; uint16_t dllchar = 0; switch (optional->type) { default: return EXIT_FAILURE; case MAGIC_PE32: dllchar = optional->_32->DllCharacteristics; break; case MAGIC_PE64: dllchar = optional->_64->DllCharacteristics; break; } output_open_document(); char field[MAX_MSG]; // aslr snprintf(field, MAX_MSG, "ASLR"); output(field, (dllchar & 0x40) ? "yes" : "no"); // dep/nx snprintf(field, MAX_MSG, "DEP/NX"); output(field, (dllchar & 0x100) ? "yes" : "no"); // seh snprintf(field, MAX_MSG, "SEH"); output(field, (dllchar & 0x400) ? "no" : "yes"); // stack cookies snprintf(field, MAX_MSG, "Stack cookies (EXPERIMENTAL)"); output(field, stack_cookies(&ctx) ? "yes" : "no"); // certificados parse_certificates(options, &ctx); output_close_document(); // libera a memoria free_options(options); // free err = pe_unload(&ctx); if (err != LIBPE_E_OK) { pe_error_print(stderr, err); return EXIT_FAILURE; } PEV_FINALIZE(&config); return EXIT_SUCCESS; } pev/doc/0000755000175000017500000000000013034014706011131 5ustar useruserpev/doc/manpages/0000755000175000017500000000000013034014706012724 5ustar useruserpev/doc/manpages/pesec.10000644000175000017500000000224713034014706014112 0ustar useruser.TH PESEC 1 .SH NAME pesec - check for protections in PE files .SH SYNOPSIS .B pesec [OPTIONS]... .IR pefile .SH DESCRIPTION pesec identify if a PE file is using some protection scheme like DEP/NX or ASLR. It's part of pev, the PE file analysis toolkit. .PP \&\fIpefile\fR is a PE32/PE32+ executable or dynamic linked library file. .SH OPTIONS .TP .BR \-f ", " \-\-format\ change output format (default is text). .TP .BR \-c ", " \-\-certoutform\ specifies the certificate output format (default: text). .TP .BR \-o ", " \-\-certout\ specifies the output filename to write certificates to (default: stdout). .TP .BR \-V ", " \-\-version show program version and exit. .TP .BR \-\-help show help. .SH EXAMPLES Search for protections in \fBputty.exe\fP: .IP $ pesec putty.exe .SH REPORTING BUGS Please, check the latest development code and report at https://github.com/merces/pev/issues .SH COPYRIGHT Copyright © 2017 pev authors. License GPLv2+: GNU GPL version 2 or later . This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. pev/doc/manpages/pescan.10000644000175000017500000000175313034014706014265 0ustar useruser.TH PESCAN 1 .SH NAME pescan - identify suspicious characteristics in PE files .SH SYNOPSIS .B pescan [OPTIONS]... .IR pefile .SH DESCRIPTION pescan analyze a PE file statically to determine if it contains suspicious characteristics. It's part of pev, the PE file analysis toolkit. .PP \&\fIpefile\fR is a PE32/PE32+ executable or dynamic linked library file. .SH OPTIONS .TP .BR \-f ", " \-\-format\ change output format (default is text). .TP .BR \-V ", " \-\-version show program version and exit. .TP .BR \-\-help show help. .SH EXAMPLES Search suspicious things in \fBputty.exe\fP: .IP $ pescan putty.exe .SH REPORTING BUGS Please, check the latest development code and report at https://github.com/merces/pev/issues .SH COPYRIGHT Copyright © 2017 pev authors. License GPLv2+: GNU GPL version 2 or later . This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. pev/doc/manpages/ofs2rva.10000644000175000017500000000202213034014706014364 0ustar useruser.TH OFS2RVA 1 .SH NAME ofs2rva - converts a PE raw file offset to relative virtual address .SH SYNOPSIS .B ofs2rva .IR offset .IR pefile .SH DESCRIPTION ofs2rva converts a raw file offset to RVA (Relative Virtual Address), if it's valid. It's part of pev, the PE file analysis toolkit. .PP \&\fIoffset\fR is a valid PE file offset in decimal or hexadecimal (prefixed with 0x). .PP \&\fIpefile\fR is a PE32/PE32+ executable or dynamic linked library file. .SH OPTIONS .TP .BR \-V ", " \-\-version show program version and exit. .TP .BR \-\-help show help. .SH EXAMPLES Get RVA of 0x1b9b8 offset of \fBcalc.exe\fP: .IP $ ofs2rva 0x1b9b8 calc.exe .SH REPORTING BUGS Please, check the latest development code and report at https://github.com/merces/pev/issues .SH COPYRIGHT Copyright © 2017 pev authors. License GPLv2+: GNU GPL version 2 or later . This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. .SH SEE ALSO rva2ofs(1) pev/doc/manpages/pedis.10000644000175000017500000000372613034014706014122 0ustar useruser.TH PEDIS 1 .SH NAME pedis - disassemble PE sections and functions .SH SYNOPSIS .B pedis [OPTIONS]... .IR pefile .SH DESCRIPTION pedis is a PE disassembler using libudis86 library. It can disassembly entire sections, functions or any file position you want. It's part of pev, the PE file analysis toolkit. .PP \&\fIpefile\fR is a PE32/PE32+ executable or dynamic linked library file. .SH OPTIONS .TP .BR \-\-att set AT&T assembly syntax (default is Intel). .TP .BR \-e ", " \-\-entrypoint disassembly at PE entrypoint (EP), until RET/LEAVE instruction appears. .TP .BR \-f ", " \-\-format\ change output format (default is text). .TP .BR \-m ", " \-\-mode\ <16|32|64> set disassembly mode to 16, 32 or 64-bits (default: auto). .TP .BR \-i\ number of instructions to disassemble. .TP .BR \-n\ number of bytes (lenght) to disassemble. .TP .BR \-o ", " \-\-offset\ disassemble at specified offset, either in decimal or hexadecimal format (prefixed with 0x). .TP .BR \-r ", " \-\-rva\ disassemble at specified RVA, either in decimal or hexadecimal format (prefixed with 0x). .TP .BR \-s ", " \-\-section\ disassemble specific PE section. .TP .BR \-V ", " \-\-version show program version and exit. .TP .BR \-\-help show help. .SH EXAMPLES Disassemble at RVA 0x4c4df of \fBputty.exe\fP: .IP $ pedis -r 0x4c4df putty.exe .PP Disassembly the entrypoint of a 64-bit PE32+ \fBwordpad.exe\fP: .IP $ pedis -m 64 --entrypoint putty.exe .PP Disassembly in 16-bits mode, starting from offset 0x40, 32 bytes of code from \fBgame.exe\fP: .IP $ pedis -m 16 -o 0x40 -n 32 game.exe .SH REPORTING BUGS Please, check the latest development code and report at https://github.com/merces/pev/issues .SH COPYRIGHT Copyright © 2017 pev authors. License GPLv2+: GNU GPL version 2 or later . This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. pev/doc/manpages/rva2ofs.10000644000175000017500000000200413034014706014364 0ustar useruser.TH RVA2OFS 1 .SH NAME rva2ofs - converts a PE relative virtual address to raw file offset .SH SYNOPSIS .B rva2ofs .IR rvs .IR pefile .SH DESCRIPTION rva2ofs converts a RVA (Relative Virtual Address) to raw file offset, if possible. It's part of pev, the PE file analysis toolkit. .PP \&\fIrva\fR is a valid PE RVA in decimal or hexadecimal (prefixed with 0x). .PP \&\fIpefile\fR is a PE32/PE32+ executable or dynamic linked library file. .SH OPTIONS .TP .BR \-V ", " \-\-version show program version and exit. .TP .BR \-\-help show help. .SH EXAMPLES Get offset from RVA 0x12db of \fBcards.dll\fP: .IP $ rva2ofs 0x12db cards.dll .SH REPORTING BUGS Please, check the latest development code and report at https://github.com/merces/pev/issues .SH COPYRIGHT Copyright © 2017 pev authors. License GPLv2+: GNU GPL version 2 or later . This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. .SH SEE ALSO ofs2rva(1) pev/doc/manpages/pehash.10000644000175000017500000000264113034016607014263 0ustar useruser.TH PEHASH 1 .SH NAME pehash - calculate hashes of PE pieces .SH SYNOPSIS .B pehash [OPTIONS]... .IR pefile .SH DESCRIPTION pehash uses libssl, libfuzzy and other black magic to calculate PE file hashes. It's part of pev, the PE file analysis toolkit. .PP \&\fIpefile\fR is a PE32/PE32+ executable or dynamic linked library file. .SH OPTIONS .TP .BR \-a ", " \-\-all hash file, sections and headers with md5, sha1, sha256, ssdeep and imphash .TP .BR \-c ", " \-\-content hash only the file content (default) .TP .BR \-f ", " \-\-format\ change output format (default is text). .TP .BR \-h ", " \-\-header\ hash only the header with the specified name. .TP .BR \-s ", " \-\-section\ hash only the section with the specified name. .TP .BR \-\-section-\index\ hash only the section at the specified index (1..n). .TP .BR \-V ", " \-\-version show program version and exit. .TP .BR \-\-help show help. .SH EXAMPLES Check all supported checksums of \fBputty.exe\fP file: .IP $ pehash -a putty.exe .SH REPORTING BUGS Please, check the latest development code and report at https://github.com/merces/pev/issues .SH COPYRIGHT Copyright © 2017 pev authors. License GPLv2+: GNU GPL version 2 or later . This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. pev/doc/manpages/pestr.10000644000175000017500000000177213034014706014152 0ustar useruser.TH PESTR 1 .SH NAME pestr - search strings in PE files .SH SYNOPSIS .B pestr [OPTIONS]... .IR pefile .SH DESCRIPTION pestr search for ASCII and Unicode strings in PE files. It's part of pev, the PE file analysis toolkit. .PP \&\fIpefile\fR is a PE32/PE32+ executable or dynamic linked library file. .SH OPTIONS .TP .BR \-n ", " \-\-min\-length set the minimun number of characteres to be read as string. .TP .BR \-o ", " \-\-offset display the raw file offset where string starts. .TP .BR \-V ", " \-\-version show program version and exit. .TP .BR \-\-help show help. .SH EXAMPLES Search all strings in \fBputty.exe\fP: .IP $ pestr putty.exe .SH REPORTING BUGS Please, check the latest development code and report at https://github.com/merces/pev/issues .SH COPYRIGHT Copyright © 2017 pev authors. License GPLv2+: GNU GPL version 2 or later . This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. pev/doc/manpages/pepack.10000644000175000017500000000220113034014706014244 0ustar useruser.TH PEPACK 1 .SH NAME pepack - check if a PE file is packed .SH SYNOPSIS .B pepack [OPTIONS]... .IR pefile .SH DESCRIPTION pepack uses a pre-defined database to check packer signatures patterns in PE file. If no database is set, pepack tries to identify if executable is packed. It's part of pev, the PE file analysis toolkit. .PP \&\fIpefile\fR is a PE32/PE32+ executable or dynamic linked library file. .SH OPTIONS .TP .BR \-d ", " \-\-database\ use another database file instead of default (/usr/share/pev/userdb.txt). .TP .BR \-f ", " \-\-format\ change output format (default is text). .TP .BR \-V ", " \-\-version show program version and exit. .TP .BR \-\-help show help. .SH EXAMPLES Check for packers in PE sample: .IP $ pepack sample.exe .SH REPORTING BUGS Please, check the latest development code and report at https://github.com/merces/pev/issues .SH COPYRIGHT Copyright © 2017 pev authors. License GPLv2+: GNU GPL version 2 or later . This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. pev/doc/manpages/peres.10000644000175000017500000000245613034014706014133 0ustar useruser.TH PERES 1 .SH NAME peres - analyze and extract PE file resources .SH SYNOPSIS .B peres [OPTIONS]... .IR pefile .SH DESCRIPTION peres opens the resource section of a PE file and it is able to read and extract resources. It's part of pev, the PE file analysis toolkit. .PP \&\fIpefile\fR is a PE32/PE32+ executable or dynamic linked library file. .SH OPTIONS .TP .BR \-a ", " \-\-all show all information, statistics and extract the resources. .TP .BR \-f ", " \-\-format\ change output format (default is text). .TP .BR \-i ", " \-\-info show resources information. .TP .BR \-x ", " \-\-extract extract resources. .TP .BR \-s ", " \-\-statistics show resource section statistics. .TP .BR \-v ", " \-\-version show the File Version frou resources section. .TP .BR \-V ", " \-\-version show program version and exit. .TP .BR \-\-help show help. .SH EXAMPLES Show resources statistics of \fBputty.exe\fP: .IP $ peres -s putty.exe .SH REPORTING BUGS Please, check the latest development code and report at https://github.com/merces/pev/issues .SH COPYRIGHT Copyright © 2017 pev authors. License GPLv2+: GNU GPL version 2 or later . This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. pev/doc/manpages/readpe.10000644000175000017500000000311613034014706014247 0ustar useruser.TH READPE 1 .SH NAME readpe - displays information about PE files .SH SYNOPSIS .B readpe [OPTIONS]... .IR pefile .SH DESCRIPTION readpe can read and display all PE file headers, fields and values. It's part of pev, the PE file analysis toolkit. .PP \&\fIpefile\fR is a PE32/PE32+ executable or dynamic linked library file. .SH OPTIONS .TP .BR \-A ", " \-\-all full output (default). .TP .BR \-H ", " \-\-all-headers display all PE headers. .TP .BR \-S ", " \-\-all-sections display all PE sections headers. .TP .BR \-f ", " \-\-format\ change output format (default is text). .TP .BR \-d ", " \-\-dirs display data directories. .TP .BR \-h ", " \-\-header\ display sepecific header. .TP .BR \-i ", " \-\-imports display imported functions names. .TP .BR \-e ", " \-\-exports display exported functions names. .TP .BR \-V ", " \-\-version show program version and exit. .TP .BR \-\-help show help. .SH EXAMPLES Display the Optional file header of \fBputty.exe\fP: .IP $ readpe \-h optional putty.exe .PP Display data directories and exported functions of \fBcards.dll\fP: .IP $ readpe \-de cards.dll .PP Display all possible information about \fBsvchost.exe\fP file: .IP $ readpe svchost.exe .SH REPORTING BUGS Please, check the latest development code and report at https://github.com/merces/pev/issues .SH COPYRIGHT Copyright © 2017 pev authors. License GPLv2+: GNU GPL version 2 or later . This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. pev/doc/manual/0000755000175000017500000000000013034014706012406 5ustar useruserpev/doc/manual/en_us/0000755000175000017500000000000013034265213013520 5ustar useruserpev/doc/manual/en_us/manual.docbook0000644000175000017500000000116113034014706016335 0ustar useruser ]> &info; &pev; &install; &configuration; &basic-usage; &advanced-features; &tools; &faq; &license; pev/doc/manual/en_us/install.docbook0000644000175000017500000001721313034265213016534 0ustar useruser Download and installation You can download the easy-to-install packages for pev that we call pre-compiled binaries. This is the easiest way to start using pev, although you may want to compile it in your environment if you feel comfortable but that will require you to install dependencies, some libraries headers and some programs too. If you choose to use the pre-compiled binaries (recommended for beginners), you just need to download its package from our download page. There are pre-compiled binaries for Windows and DEB and RPM packages for Linux. OS X users can use MacPorts to install pev, while Linux users can also opt out for using the native package manager.
Using the pre-compiled binaries
On GNU/Linux We recommend you to use your package manager for that, but in case pev is outdated or not present in your package manager repositories, you can still use it by compiling it from the sources.
On Windows Just download the ZIP package and uncompress it in any directory you want. There is a handy script called run.bat that you can use to open a Command Prompt window in pev's directory. This script also configures the environment for proper working of pev toolkit. You can also consider adding the pev's directory to PATH variable to make use of pev tools even easier. After running the script you should see a window like this: You DON'T need to install Cygwin to run pev in Windows. Cygwin is only needed if you want to compile pev toolkit by your own.
On Mac OS X If you haven't, please install either Homebrew or MacPorts first, then open a Terminal window and run one of the following commands: $ brew install pev $ sudo port install pev
From the sources Go to , and download the tarball named pev-x.xx.tar.gz, where x.xx is the version number you want. You can have the most up to date source code from the pev repository on GitHub (recommended). If you have git installed, run the following: $ git clone --recursive git://github.com/merces/pev.git Even without git installed, you can download a ZIP or tarball file from project web page on GitHub.
Compiling on GNU/Linux Make sure you have the following dependencies installed and working properly: libpe (included if you've used the --recursive option of git command) libssl (used by pehash and pesec) gcc make If you have downloaded the tarball, uncompress it with tar command: $ tar xf pev-x.xx.tar.gz $ cd pev-x.xx If you've cloned the git repository, it's time to compile pev and its libraries: $ make # make install (root privileges needed) If your Linux distribution does not set /usr/local/lib as one of default locations for libraries, you may need to create a symlink like this: # ln -s /usr/local/lib/libpe.so.1.0 /usr/lib/libpe.so.1 The commands above will compile libpe and all pev binaries. You can set DEST and PREFIX variables if you need. For compiling libpe only, enter in its directory and issue make command, as this: $ cd lib/libpe $ make To compile individual pev binaries, use: $ cd src/ $ make program In order to use any pev binary you should compile and install libpe first.
Compiling in Windows (via Cygwin) The first step is to download and install Cygwin. During the installation process, you must select at minimum the following packages: gcc-core binutils make zip openssl-devel git (just to clone de repository and make things easier) You should follow the same compilation steps for GNU/Linux, replacing "make install" by "make zip" at the end: $ make zip A file pev-x.xx.zip will be created and can be extracted in any directory you choose. All pev toolks can be called directly from Windows Command Prompt (cmd.exe). You can add the pev's directory in %PATH% environment variable in order to call pev tools from anywhere. You can't call "make install" under Cygwin.
Compiling in OS X We recommend you use one of the following package managers to install dependencies first when compiling in OS X: Homebrew - http://brew.sh/ MacPorts - http://www.macports.org For Homebrew, use: $ brew install <pkgname> $ make CFLAGS="-I/opt/local/include" For MacPorts, use: $ sudo port install <pkgname> $ make CFLAGS="-I/opt/local/include" The directories above may change depending on your package manager installation settings.
Compiling in other platforms As pev is written in standard C language, we encourage you to compile it in different platforms and let us know about that. We believe pev can be compiled in many different platforms with just a few or no patches, but you may face some dependencies challenges. Anyway, we encourage you to get in touch to discuss. Previous versions were compiled for Android, Solaris and other systems. If you want to give it a try, go ahead! ;)
Output retro-compatibility As of version 0.70 the output format of pev programs changed. If you have some scripts calling pev and parsing the old 0.60 output format, you can define a macro called LIBPE_ENABLE_OUTPUT_COMPAT_WITH_V06 before compilation, just like this: $ DFLAGS+=-DLIBPE_ENABLE_OUTPUT_COMPAT_WITH_V06 make readpe This retrocompatibility will be removed in the next release, so please consider updating your scripts as soon as possible.
pev/doc/manual/en_us/basic-usage.docbook0000644000175000017500000004126513034025231017247 0ustar useruser Basic usage Getting headers and sections readpe is the right tool for parsing PE files without infer anything regarding its fields and values. Using readpe you can see all basic PE file information. For example, in order to see the Optional Header, you could run: $ readpe --header optional putty.exe Optional/Image header Magic number: 0x10b (PE32) Linker major version: 7 Linker minor version: 10 Size of .text section: 0x5c000 Size of .data section: 0x27000 Size of .bss section: 0 Entrypoint: 0x54eb0 Address of .text section: 0x1000 Address of .data section: 0x5d000 ImageBase: 0x400000 Alignment of sections: 0x1000 Alignment factor: 0x1000 Major version of required OS: 4 Minor version of required OS: 0 Major version of image: 0 Minor version of image: 0 Major version of subsystem: 4 Minor version of subsystem: 0 Size of image: 0x84000 Size of headers: 0x1000 Checksum: 0 Subsystem required: 0x2 (IMAGE_SUBSYSTEM_WINDOWS_GUI) DLL characteristics: 0 DLL characteristics names Size of stack to reserve: 0x100000 Size of stack to commit: 0x1000 Size of heap space to reserve: 0x100000 Size of heap space to commit: 0x1000 The Magic Number is 0x10b for PE32 files and 0x20b for PE32+ files. In order to parse pev tools output you can use the -f / --format option. The following example will output the DOS Header in HTML: $ readpe --format html --header dos putty.exe <!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title>src/build/readpe --format html --header dos /home/user/PUTTY.EXE</title> </head> <body> <div class="object"> <h2>DOS Header</h2> <p><span class="key"><b>Magic number</b></span>: <span class="value">0x5a4d (MZ)</span></p> <p><span class="key"><b>Bytes in last page</b></span>: <span class="value">144</span></p> <p><span class="key"><b>Pages in file</b></span>: <span class="value">3</span></p> <p><span class="key"><b>Relocations</b></span>: <span class="value">0</span></p> <p><span class="key"><b>Size of header in paragraphs</b></span>: <span class="value">4</span></p> <p><span class="key"><b>Minimum extra paragraphs</b></span>: <span class="value">0</span></p> <p><span class="key"><b>Maximum extra paragraphs</b></span>: <span class="value">65535</span></p> <p><span class="key"><b>Initial (relative) SS value</b></span>: <span class="value">0</span></p> <p><span class="key"><b>Initial SP value</b></span>: <span class="value">0xb8</span></p> <p><span class="key"><b>Initial IP value</b></span>: <span class="value">0</span></p> <p><span class="key"><b>Initial (relative) CS value</b></span>: <span class="value">0</span></p> <p><span class="key"><b>Address of relocation table</b></span>: <span class="value">0x40</span></p> <p><span class="key"><b>Overlay number</b></span>: <span class="value">0</span></p> <p><span class="key"><b>OEM identifier</b></span>: <span class="value">0</span></p> <p><span class="key"><b>OEM information</b></span>: <span class="value">0</span></p> <p><span class="key"><b>PE header offset</b></span>: <span class="value">0xf8</span></p> </div> </body> </html> By combining readpe output with a filter like grep you could easily get the PE file entrypoint in CSV format by filtering the readpe output: $ readpe --format csv --header optional putty.exe | grep ^Entry Entrypoint,0x4f125 With readpe you can inspect the PE sections as well. Use -S option to see information about all PE sections, just like this: $ readpe -S putty.exe Sections Section Name: .text Virtual Address: 0x1000 Physical Address: 0x5bd41 Size: 0x5c000 (376832 bytes) Pointer To Data: 0x1000 Relocations: 0 Characteristics: 0x60000020 Characteristic Names IMAGE_SCN_CNT_CODE IMAGE_SCN_MEM_EXECUTE IMAGE_SCN_MEM_READ Section Name: .rdata Virtual Address: 0x5d000 Physical Address: 0x1ceda Size: 0x1d000 (118784 bytes) Pointer To Data: 0x5d000 Relocations: 0 Characteristics: 0x40000040 Characteristic Names IMAGE_SCN_CNT_INITIALIZED_DATA IMAGE_SCN_MEM_READ Section Name: .data Virtual Address: 0x7a000 Physical Address: 0x5924 Size: 0x2000 (8192 bytes) Pointer To Data: 0x7a000 Relocations: 0 Characteristics: 0xc0000040 Characteristic Names IMAGE_SCN_CNT_INITIALIZED_DATA IMAGE_SCN_MEM_READ IMAGE_SCN_MEM_WRITE Section Name: .rsrc Virtual Address: 0x80000 Physical Address: 0x3b90 Size: 0x4000 (16384 bytes) Pointer To Data: 0x7c000 Relocations: 0 Characteristics: 0x40000040 Characteristic Names IMAGE_SCN_CNT_INITIALIZED_DATA IMAGE_SCN_MEM_READ Looking at function directories readpe can show you the PE data directories with -d option, like this: $ readpe -d putty.exe Data directories Directory IMAGE_DIRECTORY_ENTRY_IMPORT: 0x78378 (240 bytes) Directory IMAGE_DIRECTORY_ENTRY_RESOURCE: 0x80000 (15248 bytes) Directory IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG: 0x78318 (72 bytes) Directory IMAGE_DIRECTORY_ENTRY_IAT: 0x5d000 (1292 bytes) If the executable has an import directory you may want to see a list of imported functions with -i / --imports option: $ readpe -i putty.exe Imported functions Library Name: ADVAPI32.dll Functions Function Name: RegCloseKey Function Name: RegQueryValueExA Function Name: RegOpenKeyA Function Name: GetUserNameA Function Name: EqualSid Function Name: CopySid Library Name: COMCTL32.dll Functions Function Ordinal: 14 Function Ordinal: 15 Function Ordinal: 17 Function Ordinal: 13 Library Name: comdlg32.dll Functions Function Name: ChooseColorA Function Name: ChooseFontA You can see the exported functions as well by using readpe -e / --exports option. Comparing PE pieces With pehash you can calculate checksums of PE pieces and not only whole PE files. You can for example compare two malwares by similarity using ssdeep. Have a look: $ pehash -s CODE ComentarioDeVoz_.cpl sections section section_name: CODE md5: 67b498c232dfbe4f5cc0cabc5e78ac42 sha1: 32b5df9aaa201bc8cbfed37344aaa77bf842c1d4 sha256: 8f5b794da7fdbbc13f1abaae0949b4eb98935c99e7387c7e0dfef5d4f01ea298 ssdeep: 6144:2QrIKt9jjmVG0xcpcZTcLexXqS1XGtbNwI/4p3RLjD0OVG:2QrD3mVG0xcpcZTEexvXENv/e3RD0W $ pehash -s CODE comentario.cpl sections section section_name: CODE md5: 973d11759194c14071aa6963de8f55c7 sha1: 1934e0085c8776e3243bf658e95b8943d4f91bc9 sha256: e68349bfcb04b20c11973ce27770570ebb22c8c7750133d073f15f7ec9eeda38 ssdeep: 6144:FQrIKt9jjmVG0xcpcZTcLexXqS1XGtbNwI/4p3Zv60G4:FQrD3mVG0xcpcZTEexvXENv/e3J6V Although the CODE section hashes of each files are different, their ssdeep checksum matches. So, you could probably infer that these are variants. You can also have the hash for each part using pehash without any option: $ pehash -a putty.exe file filepath: /home/user/putty.exe md5: 33c9d1e56152e212367e9c5b01671e45 sha1: 9ded3ce2ae09c37ca173bbd3dcb57258b72cdbd5 sha256: b10922648f6ad71f3f20b9acdfacf9aeff706cad6c52737cdc426307ccfa51d9 ssdeep: 12288:ApoNd4D7aVwSn8nW+nGQZZcLYX4RXwWLJQ6LU:UoNde7aVT8WvQ3O+4NzLu6w imphash: dae4485dd029c5e0256f477eda4797a4 headers header header_name: IMAGE_DOS_HEADER md5: 5084c5d5cfe99932e67450023c068941 sha1: 856558429bb575486a46a92ba2684eaab8578cef sha256: 52ea4dd296abe995cc1052a3a29325a8306fc888b3d6fea352d2cebdd83e6eaa ssdeep: 3:WlWUqt/vllPln:idqH header header_name: IMAGE_COFF_HEADER md5: c29db8cff4c151279ea0f3e1e122bb92 sha1: 5df76c71b2fcb937b98d566dad7d353f23f23418 sha256: 4dc37a0d8a47d3c713b891a86b92acb28126729da2b7a6a5f3656d23fd8c1a9c ssdeep: 3:OHwkn:wwk header header_name: IMAGE_OPTIONAL_HEADER md5: 0de919344c187babea80d66adc2b0d9e sha1: 4bdec527003b46348d8f9a1594f39f064e9dd680 sha256: 97e834e37ee922bca8a9388b2b1663491ddf0d3b20c6d37782aa4f2d1d9ebf64 ssdeep: 3:2H2l0lvl9gXH9lhtllrll3lll/ldt1l9tllH:NGlvA3 sections section section_name: .text md5: 67b498c232dfbe4f5cc0cabc5e78ac42 sha1: 32b5df9aaa201bc8cbfed37344aaa77bf842c1d4 sha256: 8f5b794da7fdbbc13f1abaae0949b4eb98935c99e7387c7e0dfef5d4f01ea298 ssdeep: 6144:6poNd4D7aeaNqZs+iDpnRKnWDX/ZcnGs9BDT7JjZnZZGN+FAFtt6Xa//lrXwW:6poNd4D7aVwSn8nW+nGQZZcLYX4RXwW section section_name: .rdata md5: 6087c2ffc1a7d69f82696a4f2d3aca75 sha1: d69529b6402c520bdbee855c34ce4455112bd1eb sha256: 30b49d20acb96827857ca125ce0d49838fafafe9d7e49523982b2ff1afe54283 ssdeep: 3072:mDBKmaes7rlYhoAw/Jt8Lr6hx3bO6ta/4gRul:mS+oAw/Jt836L3bA/ section section_name: .data md5: 5578c6fd3e5a0b764a7f2bcde00f9a16 sha1: b71d5142594f56e896e79e12abf729e94512b9e0 sha256: edd88e6b2ccf3dd5624ebd07b8911e2fa51f4ddc7912d4699ed111d28a2a53e5 ssdeep: 96:j/1HpvU2Ro26mTfOkf14dBPBgtbAgUhoSkb/:9o26sN2dJ9rIb/ section section_name: .rsrc md5: 24b45ea2b1620870730382fb7308a074 sha1: bca5bc464c261f05751c24dce49d70458647e75c sha256: 695707a6f3385838f6e5b58ab45584acb716bec2a2a953327dcb40314f0c0908 ssdeep: 192:Icgh8G2PnHGaAnkTjVDBY5disWxDgPWDSL73oqEnngLg:I5SG2vHi4jVDBKjPfL730ng0 The OpenSSL library used by pev supports a wider range of hashing algorithms and you can extend pehash to use them by recompiling its source code. Analyzing suspicious files Suspicious files are nice. We could probably think about lots of suspicious characteristics that PE files may have and all we know is on pescan: $ pescan -v Nota.cpl file entropy: 7.986840 (probably packed) cpl analysis: malware fpu anti-disassembly: no imagebase: normal - 0x400000 entrypoint: normal - va: 0x15c330 - raw: 0x65530 DOS stub: suspicious - raw: 0x40 TLS directory: not found section count: 3 .text: self-modifying .rsrc: self-modifying .reloc: small length timestamp: normal - Wed, 26 Jun 2013 12:22:16 UTC pescan is the PE scanner program intented to find any suspicious characteristic on it. It's good for an initial analysis. Further you can analyze things deeply with readpe, pedis, peres and so on. Strings are also good indicators in general PE file analysis. To avoid the problem with Unicode and ASCII strings, we've developed our own strings dumper for PE files. With pestr you know exactly where the string is inside the file and you don't need to specify wether you are looking for ASCII or Unicode strings. pestr catches both. $ pestr --so dotnet.exe 0x2a69c .text Button4 0x2a6a9 .text TextBox1 0x2a6b6 .text 3System.Resources.Tools.StronglyTypedResourceBuilder 0x2a6eb .text 4.0.0.0 0x2a6f7 .text KMicrosoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator 0x2a744 .text 12.0.0.0 0x2a752 .text My.Settings 0x2a972 .text _CorExeMain 0x2a97e .text mscoree.dll 0x2be7c .rsrc IHDR 0x2be95 .rsrc pHYs 0x2beaa .rsrc IDATx 0x2c1bb .rsrc IEND 0x2d742 .rsrc VS_VERSION_INFO 0x2d79e .rsrc VarFileInfo 0x2d7be .rsrc Translation 0x2d7e2 .rsrc StringFileInfo All tools are provided with manpages. Check it out and discover what you can do with pev. ;) pev/doc/manual/en_us/pev.docbook0000644000175000017500000001521513034021701015650 0ustar useruser What is pev? Since version 0.50, pev is a multiplatform toolkit to work with PE (Portable Executable) binaries. Its main goal is to provide feature-rich tool for proper analyze binaries, specially suspicious ones. History pev was born back in 2010 from a simple need: a program to find out the version (File Version) of a PE32 file and that could run in Linux. This version number is stored in Resources (.rsrc) section but at the time we've decided to simply search for the string in the whole binary, without any optimization. Later on we've decided to parse the PE32 file until reach .rsrc section and get the File Version field. In order to do that, we realized we had to parse the entire file and we thought if we could print out all the fields and values we went through as well. Until version 0.40, pev was an unique program to parse the PE headers and sections (now readpe is responsible for this). In version 0.50 we focused on binary analysis and splitted pev into various programs beyond a library, called libpe. Currently most of pev toolkit programs depends on libpe. Changelog pev - the PE file analysis toolkit - ChangeLog Legend: + Added feature * Improved/changed feature - Bug fixed ! Known issue / missing feature pev 0.80 - ? ! Missing documentation for libpe. ! peres does not reconstruct icons and cursors extracted from resources section. * Now the -V switch is used by all pev programs to show their version numbers. * pehash: Now the hash of the whole file is shown by default (-c option). * pestr: --net option removed (we may readd this in the future). * udis86 updated to version 1.7.2. + Basic plugins support. + cpload: new tool for CPL file debugging (Windows only). + Fixed: pestr: unable to handle too big strings. + Fixed: valid XML and HTML output formats (Jan Seidl) + pehash: Import Hash (imphash) support for both Mandiant and pefile's implementation. + peres: output the PE File Version with -v option. + Support for pev.conf configuration file. - readpe can now read virtual import descriptors. pev 0.70 - December 26, 2013 ! Missing full/English documentation. ! Missing valid XML and HTML output formats. ! pestr: no support for --net option when parsing unicode strings. ! pestr: unable to handle too big strings. * libpe: rewritten, now using mmap. (Jardel Weyrich). * pestr: added countries domains suffixes. * readpe and peres: output enhancements (Jardel Weyrich). + pehash: sections and headers hash calculation (Jardel Weyrich). + pehash: ssdeep fuzzy hash calculation. + pehash: support for new digest hashes like sha512, ripemd160 and more. + peres: added new tool to analyze/extract PE resources (Marcelo Fleury). + pescan: cpl malware detection. + pescan: undocumented anti-disassembly fpu trick detection. + pesec: show and extract cerfiticates from digitally signed binaries (Jardel Weyrich). - readpe can't show functions exported by ID only. - readpe: fixed subsystem types (Dmitry Mostovenko). pev 0.60 - October 31, 2012 ! Missing full/English documentation. ! Missing valid XML and HTML output formats. ! pestr: no support for --net option with unicode strings. ! readpe can't show functions exported by ID only. * pedis: -F/--function option replaced by -r/--rva. + added manpages for all tools. + pedis: added -m/--mode option to set disassembly mode (16, 32 or 64-bit). + pedis: added -n option to limit number of disassembled instructions. + pedis: added options to disassembly entrypoint and raw fille offset. + pedis: disassemble bytes number specified by -n option. + pehash: new tool to calculate PE file hashes (Jan Seidl). + pepack: added PEiD signature search (Rodrigo Escobar). + pescan: added -f/--format option to format output. + pescan: added section, imagebase and timestamp analysis. + readpe: added --exports option to show exported functions. - pedis: fixed address representation in calls and jump instructions. pev 0.50 - June 25, 2012 ! Missing documentation. ! Missing valid XML and HTML output formats. ! pedis shows arguments of jumps and calls as relative positions. * Improved pev tools Makefile (Gabriel Barbosa). * MEW packer detection in packid (Rodrigo Rubira). * pev now is a collection of binaries and a library to work with PE executables. + libpe: xmalloc trick and fixes (Rodrigo Rubira). + Output in monospaced text and csv in most programs. + pedis: disassemble functions and sections (Tiago Zaniquelli). + pepack: detect fake EP (Wagner Barongello). + pescan: new tool to search for suspicious things in PE files including TLS callbacks. + pesec: find security features in PE files. + readpe can now show imported functions with --imports or -i switch. + readpe: show PE headers and sections information (most of obsolete pev binary). + Released libpe 1.0 to support our programs. + rva2ofs and ofs2rva: convert from rva to raw file offset and vice-versa. - Fixed erroneuous ord numbers in functions imported without name. - Fixed two bugs with fake TLS callbacks in petls (thanks to Qualys guys for reporting). pev 0.40 - August 7, 2011 * Compatible with PE/COFF specification v8.2. * Date format in COFF header similar to RFC 2822. * Improved function to get machine type (Gabriel Duarte). + Added "-r" option to show resource items at first level. + Added more human-readable fields, like subsystem and section characteristics. + Added TLS callback functions detection in every PE section. + ASLR and DEP identification. + PE32+ support. Now pev can handle 64-bits executables. + Variable data directories support (no more fixed in 16). pev 0.31 - May 11, 2011 + Added characteristics flags in COFF output. + Added human-readable machine types in COFF output. - Fixed compilation in OS X. (Gustavo Roberto). - Fixed warning with Linux 32-bits boxes when compiling. pev 0.30 - February 20, 2011 * Improved memory use. * Now pev shows the Product Version with option "-p". + Added option "-a" to show all information. + Added option "-c" to show the COFF header. + Added option "-d" to show the DOS header. + Added option "-o" to show the Option (PE) header. + Added option "-s" to show executable sections. pev 0.22 - January 9, 2011 ! Does not support PE32+ files. ! Plans to read more PE informations. * Improved Makefile. + Added manpage. pev 0.2 - December 26, 2011 * Improved search algorithm. - Fixed bug compiling in MS-Windows platform. pev 0.1 - December 12, 2010 Initial release. (Eduardo Fernandes, Fernando Mercês, Francivan Bezerra and Thiago Moraes). pev/doc/manual/en_us/Makefile0000644000175000017500000000144513034014706015163 0ustar useruser# Debian-like: apt-get install docbook docbook-xsl xsltproc fop # MacPorts: port install docbook-xsl libxslt fop PLATFORM_OS := $(shell uname | cut -d_ -f1) NAME=pev-manual ifeq ($(PLATFORM_OS), Darwin) XSL=/opt/local/share/xsl/docbook-xsl/html/chunk.xsl FOXSL=/opt/local/share/xsl/docbook-xsl/fo/docbook.xsl else XSL=/usr/share/xml/docbook/stylesheet/nwalsh/html/chunk.xsl FOXSL=/usr/share/xml/docbook/stylesheet/nwalsh/fo/docbook.xsl endif SRC=manual.docbook HTML_DIR=html PDF_DIR=pdf VERSION=0.80 html: mkdir -p $(HTML_DIR)/figures cp figures/*.png $(HTML_DIR)/figures/ xsltproc -o $(HTML_DIR)/ $(XSL) $(SRC) pdf: mkdir -p $(PDF_DIR) xsltproc -o $(NAME).fo $(FOXSL) $(SRC) fop $(NAME).fo -pdf $(PDF_DIR)/$(NAME)-$(VERSION).pdf clean: rm -rf *.html *.pdf *.fo *~ $(HTML_DIR) $(PDF_DIR) pev/doc/manual/en_us/configuration.docbook0000644000175000017500000000114413034014706017730 0ustar useruser Configuration Plugins So far we support only a single plugins path option in pev.conf file with the following structure: plugins_dir=/usr/lib/pev/plugins All pev binaries will look for a pev.conf file in their current directory first (Windows reasons) and a $HOME/.config/pev.conf file after to get the plugins path. If it cannot find both files, /usr/lib/pev/plugins is used. pev/doc/manual/en_us/advanced-features.docbook0000644000175000017500000000566313034014706020454 0ustar useruser Advanced features Security tests Not all binaries are suspicious. You might have some normal binaries to study, finding vulnerabilities on it, etc. You can use pesec to check security features in PE files. It may be useful for programmers or vulnerability researchers. Have a look: $ pesec about.exe ASLR: no DEP/NX: no SEH: yes Stack cookies (EXPERIMENTAL): yes Currently pesec can discover if the PE file has ASLR (Address Space Layout Randomization), DEP (Data Execution Prevention) / NX (No eXecutable bit), SEH (Structured Exception Handling) and Stack Cookies, as known as Canary, enabled. If you want to use pesec, you probably know what these protection schemes are. ;) We experimentally support stack cookies put by Visual Studio only but we do really have plans to extend this support. Stay tuned! Disassembling pedis is a full disassembler that can be used for different purposes. Let's say you find the following output from pescan first: $ pescan -v malware.exe file entropy: 7.868122 (probably packed) fpu anti-disassembly: yes imagebase: normal - 0x400000 entrypoint: fake - va: 0x2ddb40 - raw: 0xe0f40 DOS stub: suspicious - raw: 0x40 TLS callback function: 0x6ddd10 TLS directory: found - 1 function(s) section count: 3 UPX0: suspicious name, zero length, self-modifying UPX1: suspicious name, self-modifying .rsrc: normal timestamp: normal - Mon, 18 Nov 2013 16:34:20 UTC You may want to see why DOS stub was marked as suspicious. You can use pedis for that. As DOS stub starts on offset 0x40 and it's a 16-bit assembly code, you can ask pedis to disassemble 16 bytes for example, starting at offset 0x40. Look: $ pedis -m 16 -o 0x40 -n 16 malware.exe 40: ba 10 00 mov dx, 0x10 43: 0e push cs 44: 1f pop ds 45: b4 09 mov ah, 0x9 47: cd 21 int 0x21 49: b8 01 4c mov ax, 0x4c01 4c: cd 21 int 0x21 4e: 90 nop pev/doc/manual/en_us/info.docbook0000644000175000017500000000137713034014706016024 0ustar useruser pev - User manual 0.80 2013-2017 Fernando Mercês Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". pev pe malware analysis threat manual pev/doc/manual/en_us/html/0000755000175000017500000000000013034177261014471 5ustar useruserpev/doc/manual/en_us/html/ch06s09.html0000644000175000017500000000405113034177261016453 0ustar useruserpestr

pestr

Usage: pestr OPTIONS FILE
SSearch for strings in PE files

Example: pestr acrobat.exe

Options:
 -n, --min-length                       set minimun string length (default: 4)
 -o, --offset                           show string offset in file
 -s, --section                          show string section, if exists
 -V, --version                          show version and exit
 --help                                 show this help and exit
pev/doc/manual/en_us/html/ch02.html0000644000175000017500000001232413034177261016115 0ustar useruserChapter 2. Download and installation

Chapter 2. Download and installation

You can download the easy-to-install packages for pev that we call pre-compiled binaries. This is the easiest way to start using pev, although you may want to compile it in your environment if you feel comfortable but that will require you to install dependencies, some libraries headers and some programs too.

If you choose to use the pre-compiled binaries (recommended for beginners), you just need to download its package from our download page. There are pre-compiled binaries for Windows and DEB and RPM packages for Linux. OS X users can use MacPorts to install pev, while Linux users can also opt out for using the native package manager.

Using the pre-compiled binaries

On GNU/Linux

We recommend you to use your package manager for that, but in case pev is outdated or not present in your package manager repositories, you can still use it by compiling it from the sources.

On Windows

Just download the ZIP package and uncompress it in any directory you want. There is a handy script called run.bat that you can use to open a Command Prompt window in pev's directory. This script also configures the environment for proper working of pev toolkit. You can also consider adding the pev's directory to PATH variable to make use of pev tools even easier.

After running the script you should see a window like this:

Tip

You DON'T need to install Cygwin to run pev in Windows. Cygwin is only needed if you want to compile pev toolkit by your own.

On Mac OS X

If you haven't, please install either Homebrew or MacPorts first, then open a Terminal window and run one of the following commands:

$ brew install pev
$ sudo port install pev
pev/doc/manual/en_us/html/ch06s04.html0000644000175000017500000000461213034177261016451 0ustar useruserpehash

pehash

Usage: pehash OPTIONS FILE
Calculate hashes of PE pieces

Example: pehash -s '.text' winzip.exe

Options:
 -f, --format <text|csv|xml|html>    change output format (default: text)
 -a, --all                                 hash file, sections and headers with md5, sha1, sha256, ssdeep and imphash
 -c, --content                             hash only the file content (default)
 -h, --header <dos|coff|optional>    hash only the header with the specified name
 -s, --section <section_name>        hash only the section with the specified name
 --section-index <section_index>     hash only the section at the specified index (1..n)
 -V, --version                             show version and exit
 --help                                    show this help and exit
pev/doc/manual/en_us/html/ch06s10.html0000644000175000017500000000454713034177261016455 0ustar useruserreadpe

readpe

Usage: readpe OPTIONS FILE
Show PE file headers

Example: readpe --header optional winzip.exe

Options:
 -A, --all                              full output (default)
 -H, --all-headers                      print all PE headers
 -S, --all-sections                     print all PE sections headers
 -f, --format <text|csv|xml|html> change output format (default: text)
 -d, --dirs                             show data directories
 -h, --header <dos|coff|optional> show specific header
 -i, --imports                          show imported functions
 -e, --exports                          show exported functions
 -V, --version                          show version and exit
 --help                                 show this help and exit
pev/doc/manual/en_us/html/ch02s02.html0000644000175000017500000002004213034177261016436 0ustar useruserFrom the sources

From the sources

Go to http://pev.sourceforge.net, and download the tarball named pev-x.xx.tar.gz, where x.xx is the version number you want.

You can have the most up to date source code from the pev repository on GitHub (recommended). If you have git installed, run the following:

$ git clone --recursive git://github.com/merces/pev.git

Even without git installed, you can download a ZIP or tarball file from project web page on GitHub.

Compiling on GNU/Linux

Make sure you have the following dependencies installed and working properly:

libpe (included if you've used the --recursive option of git command)
libssl (used by pehash and pesec)
gcc
make

If you have downloaded the tarball, uncompress it with tar command:

$ tar xf pev-x.xx.tar.gz
$ cd pev-x.xx

If you've cloned the git repository, it's time to compile pev and its libraries:

$ make
# make install (root privileges needed)

The commands above will compile libpe and all pev binaries. You can set DEST and PREFIX variables if you need. For compiling libpe only, enter in its directory and issue make command, as this:

$ cd lib/libpe
$ make

To compile individual pev binaries, use:

$ cd src/
$ make program

Note

In order to use any pev binary you should compile and install libpe first.

Compiling in Windows (via Cygwin)

The first step is to download and install Cygwin. During the installation process, you must select at minimum the following packages:

gcc-core
binutils
make
zip
openssl-devel
git (just to clone de repository and make things easier)

You should follow the same compilation steps for GNU/Linux, replacing "make install" by "make zip" at the end:

$ make zip

A file pev-x.xx.zip will be created and can be extracted in any directory you choose. All pev toolks can be called directly from Windows Command Prompt (cmd.exe). You can add the pev's directory in %PATH% environment variable in order to call pev tools from anywhere.

Warning

You can't call "make install" under Cygwin.

Compiling in OS X

We recommend you use one of the following package managers to install dependencies first when compiling in OS X:

Homebrew - http://brew.sh/
MacPorts - http://www.macports.org

For Homebrew, use:

$ brew install <pkgname>
$ make CFLAGS="-I/opt/local/include"

For MacPorts, use:

$ sudo port install <pkgname>
$ make CFLAGS="-I/opt/local/include"

The directories above may change depending on your package manager installation settings.

Compiling in other platforms

As pev is written in standard C language, we encourage you to compile it in different platforms and let us know about that. We believe pev can be compiled in many different platforms with just a few or no patches, but you may face some dependencies challenges. Anyway, we encourage you to get in touch to discuss.

Previous versions were compiled for Android, Solaris and other systems. If you want to give it a try, go ahead! ;)

Output retro-compatibility

As of version 0.70 the output format of pev programs changed. If you have some scripts calling pev and parsing the old 0.60 output format, you can define a macro called LIBPE_ENABLE_OUTPUT_COMPAT_WITH_V06 before compilation, just like this:

$ DFLAGS+=-DLIBPE_ENABLE_OUTPUT_COMPAT_WITH_V06 make readpe

This retrocompatibility will be removed in the next release, so please consider updating your scripts as soon as possible.

pev/doc/manual/en_us/html/ch06s05.html0000644000175000017500000000400213034177261016443 0ustar useruserpepack

pepack

Usage: pepack FILE
Search for packers in PE files

Example: pepack putty.exe

Options:
 -d, --database <file>                  use database file (default: ./userdb.txt)
 -f, --format <text|csv|xml|html>       change output format (default: text)
 -V, --version                                show version and exit
 --help                                       show this help and exit
pev/doc/manual/en_us/html/ch07.html0000644000175000017500000002344113034177261016124 0ustar useruserChapter 7. FAQ (Frequently Asked Questions)

Chapter 7. FAQ (Frequently Asked Questions)

Q: What's imphash?
Q: I use pev in Windows and everytime I run one of the pev tools I see CYGWIN complaining about Windows-style file paths.
Q: How can I get the File Version from PE files like I'm used to do with previous versions of pev?
Q: Can my machine be infected when analyzing malware with pev tools?
Q: Can any pev tool rate a file as malicious?
Q: I can't compile pev from the latest source code on git repository. What can I do?
Q: How do I uninstall the pev version I've installed from source code?
Q: Can I use pev with my project?
Q: I like pev. How do I let you guys know that?
Q: I found a bug. What do I do?
Q: My question is not listed here. How do I get an answer for that?

Q:

What's imphash?

A:

It's a MD5 hash from the imported functions names, normally used to search for variants of the same file. The ideas was took in place by Mandiant and it is explained in their blog Tracking malware with Import Hashing, but keep in mind there are some people out there saying that the current algorithm for calculating imphash is broken. See Imphash implementation and Imphash implementation does not follows convention to understand better. This implementation from pefile is the one used in all software that we are aware of - and it's the one we use too.

Q:

I use pev in Windows and everytime I run one of the pev tools I see CYGWIN complaining about Windows-style file paths.

A:

Windows version of pev are dependant on CYGWIN libraries that are included in the ZIP package provided for Windows users, so CYGWIN is still there. A workaround is setting the CYGWIN environment variable to disable these warnings:

$ set CYGWIN=nodosfilewarning

You can confirm the variable is set by running the following command on MS-DOS Prompt or Powershell:

$ set | findstr CYGWIN

If you want to make it permanent, you'll have to add this variable with this value set in System Properties - Advanced - Environment Variables, as the image below shows:

Q:

How can I get the File Version from PE files like I'm used to do with previous versions of pev?

A:

Use peres tool -v swtich.

Q:

Can my machine be infected when analyzing malware with pev tools?

A:

Yes. We have cpload tool that actually EXECUTES the target on Windows machines. Apart from that, attackers could exploit a vulnerability we don't know about in one of the tools to execute arbitrary code by sending you a specially crafted PE file. So please, consider using pev tools in a protected/isolated virtual machine for binary file analysis.

Q:

Can any pev tool rate a file as malicious?

A:

No. Some tools can give you a hint but it's nearly impossible to programatically claim a piece of code is malicious.

Q:

I can't compile pev from the latest source code on git repository. What can I do?

A:

You can open an issue on GitHub. The repository usually has under development code and sometimes things are, indeed, broken.

Q:

How do I uninstall the pev version I've installed from source code?

A:

On Linux and OS X, just point to the pev source code directory and run make uninstall. On Windows, just delete the pev folder.

Q:

Can I use pev with my project?

A:

Yes, as long as you respect GPLv2 terms for pev tools and LGPLv3 terms for libpe.

Q:

I like pev. How do I let you guys know that?

A:

We're glad you like it. Please, consider star it on GitHub or SourceForge (you can also make a comment), send your feedback to the pev-users list, tell your friends that pev exists, anything. We look forward to hear from you. Really.

Q:

I found a bug. What do I do?

A:

If you suspect it is a bug we recommend you to first discuss that in the pev-users mailing list. If you are sure, please open an issue on GitHub project page.

Q:

My question is not listed here. How do I get an answer for that?

A:

Send it over to pev-users mailing list or, if you're a developer, send it to pev-devel mailing list.

pev/doc/manual/en_us/html/ch06s02.html0000644000175000017500000000360413034177261016447 0ustar useruserofs2rva

ofs2rva

Usage: ofs2rva <offset> FILE
Convert raw file offset to RVA

Example: ofs2rva 0x1b9b8 calc.exe

Options:
 -v, --version                          show version and exit
 --help                                 show this help and exit
pev/doc/manual/en_us/html/ch06s06.html0000644000175000017500000000433513034177261016455 0ustar useruserperes

peres

Usage: peres OPTIONS FILE
Show information about resource section and extract it

Example: peres -a putty.exe

Options:
 -a, --all                              Show all information, statistics and extract resources
 -i, --info                             Show resources information
 -s, --statistics                       Show resources statistics
 -x, --extract                          Extract resources
 -v, --file-version                     Show File Version from PE resource directory
 -V, --version                          show version and exit
 --help                                 Show this help and exit
pev/doc/manual/en_us/html/ch06s03.html0000644000175000017500000000504113034177261016445 0ustar useruserpedis

pedis

Usage: pedis OPTIONS FILE
Disassemble PE sections and functions (by default, until found a RET or LEAVE instruction)

Example: pedis -r 0x4c4df putty.exe

Options:
 --att                                  set AT&T syntax
 -e, --entrypoint                       disassemble entrypoint
 -f, --format <text|csv|xml|html> change output format (default: text)
 -m, --mode <16|32|64>            disassembly mode (default: auto)
 -i, <number>                     number of instructions to be disassembled
 -n, <number>                     number of bytes to be disassembled
 -o, --offset <offset>            disassemble at specified file offset
 -r, --rva <rva>                  disassemble at specified RVA
 -s, --section <section_name>     disassemble entire section given
 -V, --version                          show version and exit
 --help                                 show this help and exit
pev/doc/manual/en_us/html/ch06s08.html0000644000175000017500000000422413034177261016454 0ustar useruserpesec

pesec

age: pesec [OPTIONS] FILE
Check for security features in PE files

Example: pesec wordpad.exe

Options:
 -f, --format <text|csv|xml|html>       change output format (default: text)
 -c, --certoutform <text|pem>           specifies the certificate output format (default: text)
 -o, --certout <filename>               specifies the output filename to write certificates to (default: stdout)
 -v, --version                                show version and exit
 --help                                       show this help and exit
pev/doc/manual/en_us/html/ch04s04.html0000644000175000017500000000751713034177261016456 0ustar useruserAnalyzing suspicious files

Analyzing suspicious files

Suspicious files are nice. We could probably think about lots of suspicious characteristics that PE files may have and all we know is on pescan:

$ pescan -v Nota.cpl 

file entropy:                    7.986840 (probably packed)
cpl analysis:                    malware
fpu anti-disassembly:            no
imagebase:                       normal - 0x400000
entrypoint:                      normal - va: 0x15c330 - raw: 0x65530
DOS stub:                        suspicious - raw: 0x40
TLS directory:                   not found
section count:                   3
.text:                           self-modifying
.rsrc:                           self-modifying
.reloc:                          small length
timestamp:                       normal - Wed, 26 Jun 2013 12:22:16 UTC

pescan is the PE scanner program intented to find any suspicious characteristic on it. It's good for an initial analysis. Further you can analyze things deeply with readpe, pedis, peres and so on.

Strings are also good indicators in general PE file analysis. To avoid the problem with Unicode and ASCII strings, we've developed our own strings dumper for PE files. With pestr you know exactly where the string is inside the file and you don't need to specify wether you are looking for ASCII or Unicode strings. pestr catches both.

$ pestr --so dotnet.exe
0x2a69c .text Button4
0x2a6a9 .text TextBox1
0x2a6b6 .text 3System.Resources.Tools.StronglyTypedResourceBuilder
0x2a6eb .text 4.0.0.0
0x2a6f7 .text KMicrosoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator
0x2a744 .text 12.0.0.0
0x2a752 .text My.Settings
0x2a972 .text _CorExeMain
0x2a97e .text mscoree.dll
0x2be7c .rsrc IHDR
0x2be95 .rsrc pHYs
0x2beaa .rsrc IDATx
0x2c1bb .rsrc IEND
0x2d742 .rsrc VS_VERSION_INFO
0x2d79e .rsrc VarFileInfo
0x2d7be .rsrc Translation
0x2d7e2 .rsrc StringFileInfo

All tools are provided with manpages. Check it out and discover what you can do with pev. ;)

pev/doc/manual/en_us/html/ch05.html0000644000175000017500000000574313034177261016127 0ustar useruserChapter 5. Advanced features

Chapter 5. Advanced features

Security tests

Not all binaries are suspicious. You might have some normal binaries to study, finding vulnerabilities on it, etc. You can use pesec to check security features in PE files. It may be useful for programmers or vulnerability researchers. Have a look:

$ pesec about.exe

ASLR:                            no
DEP/NX:                          no
SEH:                             yes
Stack cookies (EXPERIMENTAL):    yes

Currently pesec can discover if the PE file has ASLR (Address Space Layout Randomization), DEP (Data Execution Prevention) / NX (No eXecutable bit), SEH (Structured Exception Handling) and Stack Cookies, as known as Canary, enabled. If you want to use pesec, you probably know what these protection schemes are. ;)

We experimentally support stack cookies put by Visual Studio only but we do really have plans to extend this support. Stay tuned!

pev/doc/manual/en_us/html/ch06.html0000644000175000017500000000604313034177261016122 0ustar useruserChapter 6. Included tools

Chapter 6. Included tools

cpload

Usage: cpload [-m MESSAGE] FILE
Load .cpl (Control Panel Item) files for debugging

Example: cpload -m init notafiscal.cpl

Options:

If -m is present, MESSAGE should be:

	Option		Message
	------------------------------
	init		CPL_INIT
	getcount	CPL_GETCOUNT
	inquire		CPL_INQUIRE
	select		CPL_SELECT
	dblclk		CPL_DBLCLK
	stop		CPL_STOP
	exit		CPL_EXIT
	newinquire	CPL_NEWINQUIRE
	startwparms	CPL_STARTWPARMS
	setup		CPL_SETUP

Otherwise, cpload will send all messages to CPlApplet()
pev/doc/manual/en_us/html/ch06s07.html0000644000175000017500000000401113034177261016445 0ustar useruserpescan

pescan

Usage: pescan OPTIONS FILE
Search for suspicious things in PE files

Example: pescan putty.exe

Options:
 -f, --format <text|csv|xml|html>       change output format (default: text)
 -v, --verbose                                show more info about items found
 -V, --version                                show version and exit
 --help                                       show this help and exit
pev/doc/manual/en_us/html/ch06s11.html0000644000175000017500000000364713034177261016456 0ustar useruserrva2ofs

rva2ofs

Usage: rva2ofs <rva> FILE
Convert RVA to raw file offset

Example: rva2ofs 0x12db cards.dll

Options:
 -V, --version                          show version and exit
 --help                                 show this help and exit
pev/doc/manual/en_us/html/ch04.html0000644000175000017500000002332213034177261016117 0ustar useruserChapter 4. Basic usage

Chapter 4. Basic usage

Getting headers and sections

readpe is the right tool for parsing PE files without infer anything regarding its fields and values. Using readpe you can see all basic PE file information. For example, in order to see the Optional Header, you could run:

$ readpe --header optional putty.exe
Optional/Image header
    Magic number:                    0x10b (PE32)
    Linker major version:            7
    Linker minor version:            10
    Size of .text section:           0x5c000
    Size of .data section:           0x27000
    Size of .bss section:            0
    Entrypoint:                      0x54eb0
    Address of .text section:        0x1000
    Address of .data section:        0x5d000
    ImageBase:                       0x400000
    Alignment of sections:           0x1000
    Alignment factor:                0x1000
    Major version of required OS:    4
    Minor version of required OS:    0
    Major version of image:          0
    Minor version of image:          0
    Major version of subsystem:      4
    Minor version of subsystem:      0
    Size of image:                   0x84000
    Size of headers:                 0x1000
    Checksum:                        0
    Subsystem required:              0x2 (IMAGE_SUBSYSTEM_WINDOWS_GUI)
    DLL characteristics:             0
    DLL characteristics names
    Size of stack to reserve:        0x100000
    Size of stack to commit:         0x1000
    Size of heap space to reserve:   0x100000
    Size of heap space to commit:    0x1000

Tip

The Magic Number is 0x10b for PE32 files and 0x20b for PE32+ files.

In order to parse pev tools output you can use the -f / --format option. The following example will output the DOS Header in HTML:

$ readpe --format html --header dos putty.exe
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
    <meta charset="utf-8">
    <title>src/build/readpe --format html --header dos /home/user/PUTTY.EXE</title>
</head>
<body>
    <div class="object">
        <h2>DOS Header</h2>
        <p><span class="key"><b>Magic number</b></span>: <span class="value">0x5a4d (MZ)</span></p>
        <p><span class="key"><b>Bytes in last page</b></span>: <span class="value">144</span></p>
        <p><span class="key"><b>Pages in file</b></span>: <span class="value">3</span></p>
        <p><span class="key"><b>Relocations</b></span>: <span class="value">0</span></p>
        <p><span class="key"><b>Size of header in paragraphs</b></span>: <span class="value">4</span></p>
        <p><span class="key"><b>Minimum extra paragraphs</b></span>: <span class="value">0</span></p>
        <p><span class="key"><b>Maximum extra paragraphs</b></span>: <span class="value">65535</span></p>
        <p><span class="key"><b>Initial (relative) SS value</b></span>: <span class="value">0</span></p>
        <p><span class="key"><b>Initial SP value</b></span>: <span class="value">0xb8</span></p>
        <p><span class="key"><b>Initial IP value</b></span>: <span class="value">0</span></p>
        <p><span class="key"><b>Initial (relative) CS value</b></span>: <span class="value">0</span></p>
        <p><span class="key"><b>Address of relocation table</b></span>: <span class="value">0x40</span></p>
        <p><span class="key"><b>Overlay number</b></span>: <span class="value">0</span></p>
        <p><span class="key"><b>OEM identifier</b></span>: <span class="value">0</span></p>
        <p><span class="key"><b>OEM information</b></span>: <span class="value">0</span></p>
        <p><span class="key"><b>PE header offset</b></span>: <span class="value">0xf8</span></p>
    </div>
</body>
</html>

By combining readpe output with a filter like grep you could easily get the PE file entrypoint in CSV format by filtering the readpe output:

$ readpe --format csv --header optional putty.exe | grep ^Entry
Entrypoint,0x4f125

With readpe you can inspect the PE sections as well. Use -S option to see information about all PE sections, just like this:

$ readpe -S putty.exe
Sections
    Section
        Name:                            .text
        Virtual Address:                 0x1000
        Physical Address:                0x5bd41
        Size:                            0x5c000 (376832 bytes)
        Pointer To Data:                 0x1000
        Relocations:                     0
        Characteristics:                 0x60000020
        Characteristic Names
                                             IMAGE_SCN_CNT_CODE
                                             IMAGE_SCN_MEM_EXECUTE
                                             IMAGE_SCN_MEM_READ
    Section
        Name:                            .rdata
        Virtual Address:                 0x5d000
        Physical Address:                0x1ceda
        Size:                            0x1d000 (118784 bytes)
        Pointer To Data:                 0x5d000
        Relocations:                     0
        Characteristics:                 0x40000040
        Characteristic Names
                                             IMAGE_SCN_CNT_INITIALIZED_DATA
                                             IMAGE_SCN_MEM_READ
    Section
        Name:                            .data
        Virtual Address:                 0x7a000
        Physical Address:                0x5924
        Size:                            0x2000 (8192 bytes)
        Pointer To Data:                 0x7a000
        Relocations:                     0
        Characteristics:                 0xc0000040
        Characteristic Names
                                             IMAGE_SCN_CNT_INITIALIZED_DATA
                                             IMAGE_SCN_MEM_READ
                                             IMAGE_SCN_MEM_WRITE
    Section
        Name:                            .rsrc
        Virtual Address:                 0x80000
        Physical Address:                0x3b90
        Size:                            0x4000 (16384 bytes)
        Pointer To Data:                 0x7c000
        Relocations:                     0
        Characteristics:                 0x40000040
        Characteristic Names
                                             IMAGE_SCN_CNT_INITIALIZED_DATA
                                             IMAGE_SCN_MEM_READ
pev/doc/manual/en_us/html/figures/0000755000175000017500000000000013034177261016135 5ustar useruserpev/doc/manual/en_us/html/figures/runbat.png0000644000175000017500000065472413034177261020160 0ustar useruser‰PNG  IHDRèý‰'Vå iCCPICC ProfileH‰•WXSÉž[R -)¡7Az•Þ;ÒÁFH„C ¨ØÑE{AEEWDT\ ‹ D°÷••u±`CåM èó½ýÞ÷Î÷ͽÿ=sΙÿœ;3ß Šö, U ‡Ÿ/Œôa&&%3I@8‹'ðŽŠ ÿ(ïoC[(7,űþÙ2‡›Ç‰‚8•“ÇÎø(¸&[ ̀Рõ³òbübU!$‘,ÆéR¬%Æ©Rl-±‰ö…Ø2•Ŧ  ŽÏ,`§Ã8 ˆ­ùâ{°3Xˆ»!ž“3bE*Ħ©?ÄIÿ·˜©c1Y¬ô1,ÍE"d?^ž ›5çÿ,Çÿ–œlÑèú°Q3„AÑâœaÝöfÍ cÈiá§FDB¬ñEGb/Æ÷3DAq2ûvž/¬`€Ë/bXK”!ÊŠó–a[–Pâ íÑ^~p¬ § gFËâ£Ü<ÿ˜QœÁ “Å\ÎÏŽÅUi¼€`ˆáLCfÄ&Hy¢ç xñ+@Ü™—*³\˜á1j#E‹9Bü.M-µÁÔsòFó¬Ø, uˆ½ò3bƒ¤¾X"7/1l”‡ëç/å€q¸ü8g Î.Ÿh™o± ;JfUq³£¥uÆåÄŒú^χLZìI&+$JÊ{/ÈŠ•rÃq|`l©`&È¼ŽÆø%í , é€ ,ešQI>c@!ø ".Èóó‘ôrAÔÓJŸ– MÒ[ ñÈÏ ÎÁ5qÜ ƒO/ØlqgÜeÔ©8:*ÑŸèG "ÍÆx°!ëlØ„€÷Ÿºïž„g„.ÂÂ-B7á…½\˜³˜!,³xðTEö=ƒW$ü‰9„ƒnè Ë.z÷ÚàÆµCþ;ÎÀ5%n3ñÆ=anPû#CÑ‹ïµüy<1¿s”éÌd,RÇøûŽYýÅ÷‡qà;ôgKl9vkÃÎ`—°¬0±SXÖŽã±™ðT2FG‹–pË‚qx£6ÖuÖýÖ_þct–ŒPò¿A>wv¾xAøÎÌòÒ3ò™ÞpGæ2ƒùl« L[kÄû»tûxËìÛãòw]îi\J 2ý»ŽeÀñgÐß×¼Ëk-':Ù"aT‡‹@Špeh`LaN¶À¸/àB@$ˆI`:¬zȬgy`1(¥`-Ø*Àv° ìÀaÐZÀp\àxçFx Á{0Œ  ¡!tDÑEŒ ÄqF<$ ‰F’$á#"d²)EÖ#ÈN¤ù 9ŽœA.!]È=¤éGÞ ŸQ ¥¢ª¨6jŒNDQo4E§¡éh.Zˆ.EW£åh5ºm@Ï WÐ[h7úÂ&10=ÌsÆ|±H,KÄØ¬+걃X3ü×7°nlû„q:ÎÄ-áü Âãp6ž‹/ÀWâø^¼?‡ßÀ{ðAüFÐ"X\ Á„DB:a¡˜PFØC8F8WTá=‘HdMˆNpm&3‰s‰+‰ÛˆõÄÓÄ.b/qˆD"i,Hî¤H‹”O*&m!í'"]'õ‘>’åɺd[r9™Ì'‘ËÈûÈ'É×ÉÏÉÃrJrFr®r‘r¹9rkävË5Ë]“듦(SL(î”XJ&e1¥œrržòòV^^^_ÞE~²Óç=Ž;nŸƒã®û >^ÝK«^¢^¯~Ký³SÃ_#KcF£Æ#M\Ó\s²æ,Í*ÍóšãUÇ»g/xü}-TË\+Zk®Ö.­v­!mí@möí³Ú: /L:'uúu麺<ݺ§tÿdª1½™ÙÌræ9æ ž–^žHo§^‡Þ°¾‰~œ~‘~½þ#гAšÁFƒVƒAC]ÃpÃy†u†÷䌜2Œ6µ}061N0^fÜhüÂDÝ$ؤФÎä¡)ÍÔÓ4×´Úô¦ÑÌÙ,Ël›Y§9jî`ža^i~͵p´àYl³èš@˜à2?¡zÂKª¥·eeeÃ*̪ȪÑêÕDÉÉ×Ml›øÍÚÁ:Ûz·õ››"›f›7¶æ¶lÛJÛ›v4»»…vMv¯í-ì¹öUöwèáËZ¾::9 :ö;:¥8muºã¬êå¼Òù¢ ÁÅÇe¡K‹Ë'WG×|×î»Yºe¹ís{1ÉdwÒîI½îúî,÷îÝLÝžzž,ÏjÏ'^^¯=^Ͻͼ3½÷{¿ò±öúóùàëê;ß÷´æèWâ×á¯âç_áÿ8@? = .`0Ð!pnàé BPhк ;ÁÚÁìàÚàÁ§ù!çB©¡1¡¡OÂÌÄaÍáhxHø†ð‡FüˆÆH¹!òQ”ITnÔ“£&WN~m=/º-†3#f_ÌûXŸØ5±âLãDq­ñŠñSãkã?$ø%¬OèNœ˜8?ñJ’f/©)™”Ÿ¼'yhŠÿ”MSú¦:L-žz{šÉ´ÙÓ.Mלž=ýÄ Å¬GR) )ûR¾°"YÕ¬¡ÔàÔ­©ƒl_öföKŽg#§ŸëÎ]Ï}žæž¶>íEº{ú†ôþ ÏŒ²Œž/¯‚÷:3(s{懬Ȭš¬‘ì„ìúrNJÎq¾ ?‹n¦ÎÌÙ3»‚bAw®kî¦ÜAa¨pO’7-¯)_uÚE¦¢_D=•gÅÏ:2[y6vûó9+æ—=·užÞ¼Åózæ{Ïß¹Yº u¡ÁÂ¥ û.Ú»˜²8kñÕ"ë¢õEï–$,i^ª½tÑÒÞ_©+V(ßYæ¶lûr|9oyÇ »[V|+á”\.µ.-+ý²’½òò*›Uå«FV§­îX㸦j-q-ííužëö®W^_¸¾wCø††Ì%ßmš±éR™}Ùö͔͢ÍÝåaåM[ ·¬Ýò¥"£âV¥OeýV­­+¶~ØÆÙv½Ê«êàvíí¥Û?ïàí¸»3pgCµquÙ.⮂]ÏvÇïnûÕù×Ú=š{J÷|­á×tïÞ{®Ö©¶vŸÖ¾5uh¨®ÿÔýü4´<¸³žQ_zúó·”ßn=ÜzÄùÈÁ£FG·£+i@æ4 6f4v7%5u9ÞÚìÖ|ìw«ßkZôZ*O¨Xs’rréÉ‘S…§†N NœI?ÓÛ:£õÁÙij7ÏM>×q>ôüÅ ζy·ºè~±å’ë¥ã—/7^q¼ÒÐîÐ~ìªÃÕcŽ ל®5uºt6wMê:yÝóú™~7.Ü ¾yåVÄ­®Ûq·ïÞ™z§û.çî‹{Ù÷^ß/¸?ü`ÑCÂÃ’GJÊk=®þÃìúnÇî=~=íObž<èe÷¾|š÷ôKßÒg´geÏuŸ×¾°}ÑÒÐßùç”?û^ ^ÿ¥ü×ÖW¦¯Žþíõwû`â`ßkáë‘7+ßj¼­ygÿ®u(jèñûœ÷ÃJ>j|ÜûÉùSÛç„Ïχg}!})ÿjöµù[è·‡#9##–%9 `°¡ii¼©€–ÏðGQÞ¿$‚HïŒþ Kïhq Æ €¸E„Á3JlFSá[|üŽõ¨ÝX“I^š­4ÞbGFÞj@jà«pddxÛÈÈ×Ýì=NçJï}b!Â3þñÝ \5X¥ ~’ë©k$'DHbKGDÿÿÿ ½§“ pHYs%%IR$ðtIMEß + ân¾N IDATxÚì½w¬dw–ß÷9¿{«^#›ØÍf34Óp†3œYÍîH«•veÁ²,À²-À Ç? ° °`X¬¼%@†myGžš°3äD’3ÃÔ ÍÐC6ÉÎáu÷KõªîïwüÇ了Uõª^Õë~îpúUÕ ¿x~ç{¢|í¿ŸUz!õÿ×ÛÅn×¾oÖäÝý6`@RU×_¿¥ð¹n¨ê€íY›ñS]«i»-HQÔ 6"2ØÚu†’îTú~ÁåØëkíÄ !ý@î»Â×&þ`D‘„Hr‰´]×"žOIºw¨4=·pG|_öpÉý¦ê{­M×K[N,¹ñ@Tý½Öáð}ÏGri‹ç¯é‰¡b#¾&¹W²"ÚÄ-’ñ1Æ_gLÖê¦^Kq,Z§!D0`´i-¾×Äã'&ß/ß1`D0FcÒ~HÜ]4™[ÿ,1‚ƒ1þIê,.²Y?%ž[#’_S~Œ0ÙœˆøçŠÀÆ$4Tß$Þ¢éHû JˆŽ%0Š ˆ!IÇ_q¨‡Æ‹]›ÖƒÁ¤Þ¼\5¾E±ªþŒVçùm2“Æ€œ‚ušýëüëœ…È 6RlC‰¬£aÖz¾í"«X«X§X눬Å:‡ÓølÇ]ŒÁÍYÅàûëÔ:Å9矕ö9@BcB@0"HÆh:çÆÿ&Ó仜lxD Ư¸ þý&æb ñ +¿T‡çüX*þ_§ Îa[ËB¯<?GãÅïbN—Œ¯M8_„& Am©N­ÞÀ9ë‡Åˆ"ë×¢~ÝŠç1Ö:?7š—½ê\vŽ©_w&«ÀÄ<Š D–êJÝú^Ýyk$Åó­&^¥©Trk˯áü4¯•îøÏÅ«Wb6n<ËïSfE݇$f(üù–ì½x\¼eTÄï¿ôÀö’yŒ aó¶–ÿL›ßóßI‡ßWKHíº÷:Ø­²ÖKG;qòŸÛÍm·q¸™ó_RI%­áÉÓv÷Ë2ì­E3éG¨¤‚t«ÒSR JN‘ M"¦x0°ç’ÜùƒBbìA ¼SE@ª(ôEr²1xaÏ9 @0hj&H‹dQ­$JáÌ¡M8ÞƒýÖæçÏ{TQPE°âÁ“ægC½$—ˆÐb=Keãߡƃ°@ACI'Üj³ˆ.y5‡zAÍ:Hu“‰€.‚¸DèK€uÜ2×¼ÊT¼˜€ ¢TTi(˜ÐæçL2°(âA¥3ŽC š)HŒçéÜy™Ò¥"‰A¼ï¼¶iù“Pã6ª¨óŠœtíņDcA5S<ˆxÁÝ„ÃSuJ-PÎdÊ%QÅ<Lƒæö&š‹Iû蕱⠞}§Jäbpé«`ăÅE†AE"pt üº× '! Ç Å:Σx|BÉÖ»Z¯tÊ´LñŒ% 8wª1ÈKþõkÉ5K…ñç ¹ÜjL6Qùu¥šïäÙ~l²u!*ä`‰  ª5‚q+ìüõ&Pœõ¼Æ"„xA'^)Av/‰â¡ WŠ[EsoS|(]ÑMO¢›¶Y×éÚniŸ,Ï®euÅæ´Ÿž cƒ1bbžIóHFX«D¢H]ãU9XjDÔëtõ UùjŽÝ£‰æ,w¶H¬0b2Em^‰+žÄHª ’DˆEÅfå‡í XC‰ÛJaw´hß—™0ÓgVGܸ{Œz±’Ãhî””ÂHÆÐ>§J˜ÔË€²DâPiÖø«É>k2¡Åß‹ yåÚ@pÑ®Ædç»Ï@[ÍkNŒ6 ›RØ7’cPªí7˜h3£Î. ™µ¦rEºhÚ}6ÍÎ2÷KÁ6´<ƒ(馣¬;Žîõu¢^0ìk̤GŪÐbi‘DË.-œ$=S4 5Ûç’’šÛýNóǾÆ×J3×fž¥-ÚÿœÐÔÄ[šy”ÄÂ;6#MÇ[ÎŽ”Z„¥Éœ ’äoyióHjfUDcV]±©]Jr'S2vã cÀ¤€Ì5ÏR|›M¿Óö^ z¡Õ ñ;²ÓTb-€Jóý6áÍ.î·óZU%ˆ¼e%oí’dLÎJ&€K}8ò½Õf㞸ÐKæ&™s?ŽÖ¡BAP(¶ÆzK¿¤‚±ïõ Æ`EƒÄL*©0M â’6mslíõÓm|Û 3Hs¿ÕKù1L¬TÑ¿:ˆ?n˜ N-ÁZÿªÈ(§4$›•Ì$ìA¾KÛaT°±ʤÀ<Œÿ½Q럂s[o½e6²‰¬ 9Ê ±RɤÞ~ dÞÙBŒ•h©l!ÎÛ¶£ÞI6^&ð Ù©CTRÙ1µ#Ç %µf«¦ãér?—tDs0$l©²N2Þ)E/‰oH ³ÚdÔI½-4S®ÄFtPo=•˜Ñ‰(â¼õ«¸ØR-¨8TFŒç "­–ûŒ'yï‘fÞgrîmz;yNš‘[‡c5ÓqJüXÉÞ-íŒ\ÍgŒ6©cóÞDÉý±•0±Æj÷S^ÕÛcýŠ2±MâûCœ³8'Ù¡™eX±8QÃ¥ì,9„$QÒ¤ëΈ‰Ç4*&}óÚÊ Y?‰WXêdÀiªÌtÉÉe’­’Wôi«j;Y’\å”O²ö'¾fØ:=œu‰JSUvF;™œÒjŽÍÿ+-@ÿÒ›ŠÜ¢_ªiÇ%žKdž€*Ò¤"·&SŸœv*4¦È¡ÚöGm¾F\ø¹B#3ð¦ÚçL%Þ•DMJXðÒ¾‘hÙe`å–I–º,£HhÑÒkÊ,‹ó*Z`ÉÚ*€6 Êí¶v´{uÿ·Ûý9a¦Eé#­wwíBÓ¦_ñ–YCe€Ä®YkÊ3äöfH®{¤÷{W¶ïLN¹ÖFH(þ«™ .SÎ’ L SWÉøÄú ©8éÁœdÂ-([M&…}/­|7wìuà79¡F£¦sªÈGR‹ª¶I“2Aš‹E¯íØ«K]Ô“³Ã“ËØQ®=ˆóÀÙ D)*sµEQ¡EÅCܧJ¤ŠQ—ZuùMTò‰ù¨…{ëªâ­ëNb—P§Þý9Ãb$ë_ü·KÝOG0dajš¸¾&ÀÌ©·¦¾á™[oæRYƒixëpPqcAL€ 4öNˆ6ÞŠNEQë­ÔQ0 4Sï¡!Ù)ë°­ˆq¾ŸFœ’$x¯ÜHØ ƒòDfRuññº0XbêÈ+Pªh༻´µ±ß*‡¨‰çʯÀo ÿ,1ñž4ˆ‡‹Þ’§ŽŠF~\]ìï¬ÃªK-ˆ‚Äá’½óʤ*1ðŒRª!‰ŸIìêíà œx Y ‰ A`bn$Màψ`Wyƒ%?&’Í‹·˜Æï±9ùÁåýJT2Ú}¨Gºácž•²¯äÛ$TÁ÷iî%VR$㧉²Çë´0Öaœï—(*Ö3½@c¯iZòÎy˹8õÏŒ=-4ç%ä² ˜‚ÄÕÆ¢ÚÖR¥yõ§¬ÈM²¦t9~´ðPIŸkÄdGMNè…3"ëE֯Ι_Åx0{êz—®^©!¿ó»–›?eEkc¹kRžfÁ­Îw—ÏÌ û.wAßïå ¼y|¨ógé`)‘Â7ŃGšæ«ÛŒuåI:Xþ…æ3(‡[bÚsû£è‚4ж+Æ›÷0’·3~••÷ÜÅ ßIÄb¥K;/‚Éy2ˆf®›É‘ïHâÍc«½óÎq¢àKâÒébË"™°9`™Ô¢©‰`žX·b)=±ô'µIE ì`—a¨ÞòkðÀݸ8FUÅÇc-Î(‘QÂŒqa˜rÂe4[Æsr¬Ë͈H«”“ux+¶ÚXT3)b†eö¯dz€´ÒÔrfŒ8 RGÃPgb÷ö\̼&1Fë®­ö²è‰ÒlúiÕkK«Õ[šÃ€2œ"÷íUBíÄ¿eÀçø. IHJlÕûä׳÷ ±*^q˜¸ÇÀÚi3P”®y¬´p¢õ›ÚtÂÄJ/'Íà´Å5žïÔÀÖ’ÛB›<ËÒ;u¹ƒ@ÛèÛµU+Ó±ÚÐö*Ÿ¶o–»]¯²l¥}›Y4'=…¥Àzë§OV .¡I·gtKˆSRI%8ïíð,¸Œ‹i•Nó:sYŽË¬=÷I±@Q>oÓTé*xÒÞü¬Ì„X<[,ü’qò (æ’¨×業׵€ˆfƒ?Y¬vsÇ‹kÐVQ+d<õ1ö÷»Ä3 ƒ"Þ…7¾Kcà—Å?Ä1ÅM¢¡´„Ã% ty™Óz÷`‹àÅ6 ‹5‰§Bˆ1Þ†lqTˆˆŒbŒ#! &´&ðÖöØ 0±>)œ3q(Ä'Qs¹(dq)@—\⸠D“ÜŒ1ˆDxž›#8'±5W4€*u Z…†5HUqKKE#аÐPÂ8¶ÁªÉQ—Æä&š͹‰g <ózɇhû$E¸c Ö€qñ¼&y€Œ C¹˜½$#£Z‚ôŠ1ê“-ªøüâ=;R`ìã!0b³Äq—œ‘4Éj’¦ËÅ1Ü™{¼àÚ$+¦`K¬-›%‹Ì“&ö`pË)زü©…Ô{ûnpb²ίõõá šExØD±a|¿ü;ÓP iF_yïemjè…ïr¾Œ+‡+Åê:ÐmIÒ5#Y^“ˆ:÷W“¦)ÌH»JÒíOĦÐ*]ÞŸ<ÝQÚºÎÒvR„ùEåk@Ç®Øxù›¦ ®„ijÞ…\‹ØÌ«'ï1Õbk•Âô”à`u—þ º‰øþ[Ð¥²o¹²¤Åór–TÒ*1b„ÐÕ -AhZAIƒ6µ7o/½ ÷gâƒ)-ˆ±éd—&OLH0i^’•÷̿ҭøhMSÎ,Ö¸þÓëÓ%p脤5¶5÷^m¯&)´¥Å´¹Qz1¹|Òroò4eëÍÅÀ&ÖA͹áksF~É[©DsY쳘em¹xýBœdꊚ÷;N×Pi³ì’ºÛ›ÔýZâQƒ‰ÒŒËHìŸs×Î%y2’=/‰áÖ\ªrmÊKgLVÀ¿7N˜„ü©’u$#˜àR§±B½µ?J²º[Ü­U‘óÜÕÅ ÷ŒâllUTŸ¼*uåv9A=•û5K2'Ø âìõR´.çöµ`},e<Î6‰!N2_“óŒs™K´Ïã'¥¬ßÂA ˆsˆ“$Æ¢™WàÝܽ{g—¹€»,sY Æ5IB˜ö½ i'‰G ¬!î{ª\Ibá¥uÛ xÓØç$÷„ñŽ®N !±B)Núä³ÅkêæÜç³ÎÛ\†yŸ%>Q®eñᶉ3ärÚµv¯ JHòiW,ÝÍêÚ£´ÙîÐ[.&:§p1&ðí ŒkŠ?·NÓÌþÎ9p®%‡Eëkµ‡³f¹¤xE7xíØ¥tÕH³™%ßËÿ„.å=wL¼óZ+AIÓ¤kœ„2e©¹„˜]‘·æbÐ;\7@`é­Öí¬‘|”Sà¦zZX3®™g.²Ì-j.ì˜ãŽoÃ„É æª(«Ôû}H kK*©¤3`r‘ÕÝÏíóvnœÜ¤í:Hûu g&÷»Ô«AÛ(6³„ʦκRF×­bQ¡ö§0À+®ô¤½õk9aBZkp¬.7vÜý$qÉÄØ Èúð ,Eâý“(9¡Ç--*g.-ñÙ…EÎ7FqYVŽþº×Øö¿ÑuM‡‘¼­U|.Yq’4-0²RÉPRI«G—γm[Ȇ-U†Æ†©Tª±õ§b`È@Ÿ½¹t*©¤’J*i­HÁ•2`I%õŽ—AM—À°.·Á4«á JQŸ7Ã:Ò£ºct,dóè<§>¹Î{Kë[ÞuK\Üóe*îìé*™[I%•$LÞ8ÍöÝ#¬_oBÁ5uU"cëc]ëuM‰¿ºÈOÞ Ï•#\RI%•TÒêƒô’J*i@„Ç'؆òqhšRQQ!äÆ:Ÿ´5ÆÃÆ(SUön¬ÓøøV¶7¹»‡ý·zå·‰”V¤[¾¾¤äÉ%•´šº' cÆ¢Vˆ-"Œ`BïÞn*†%‰“Ü­îw΃Öâj(YRI÷Ø ·\ìdI%•TRIw­$æ¥[œÉ€ÏJò³¨óeMÒ*Iž²´=É'MKøJM)CaótÈgó –r°¼g€ž%ÇÑxÍŽÒêhû†¯m%fé×G?‰Ó)Ôy,©¤’ú`"ln\bý„¥j*hÃ"âÐÀgovÎ ¡AÅÅ™€g-iáe—c„ù¿1¨-K*iå¢E¹kJ*©'*½³JºÃ€ùȰaj,ŒË2f¥éR`ªí¦ªrùFƒz”e­2L¯àYiêK._¯SüÎÁpU˜š¬øÄ–qâÌ´þ#¹g%ÏMd> ¹|y‰Ú\”Ê„b•MUË —yK·§7ÜÂ2kÒ7HN+l–³¤’JZãCB a$h˜ä匓®(¾\J€¯)œËʤ±j5­‚än›Ê¨”TRI½íÇ’J*©Ü0%Ým+U6ìØ0ÌÅ€F" NjsVjõžTIç Š#aÄÖiùk–º…ÑaaçÆìYÖÆ•¬¶} Ö)6r Û¦ÎÍDÔÊpUx`LÏ„‰êà,Wð Ûe¥/‹CEXSajëaN6,,Xoâ®Zmƒ[[]Jë’J*é¦D곤fÕ%šë‘:Ô ÆN5W:ŠL›js2S àµo'¥’Jº'áF©¸/©¤ÞöK¹WJºcx»rpû8ïQ¬³X«,.A=ŠÁµÓ¸Le–|ÍZ¥ÑP–êJT¯±Ký»'øøJ¶Opêœ9‹‹`¡®Ôó@ÝeÏrɳ"¥¶¤Dõ%îß°ÈѦøð\}{G™:û:®QÇ9‹«Õ ¾äÝ×‹ÝØãTîΡ‘E£º´Dm©ŽÝt]þ&'ß%q—WuYU½å]›‹Nöwøú;—9©&ˆÜ¶]Ïç%ð¾ø«?÷%ÝëRÉà ¼èù“º+/ñb nðW§þsD‚ã;—þSf§©ŽM4W-êÐѵ­QRIw•©[K*i%âV™ª¤;¡34×甓B$‚uÞ€ 8ë?«k T¥`g”HáòÕ%>4ˆ0\®Í:6NQ"Gó³$~Vüò†5B5P"àÂå%ž~8@áªÁÞ¸F01…jq‘7®˜È'‚“À{G:‰âÒ»Š!¢vîŸ#8Û\*OSƒÎJ\ÜWÉú}g¦r§­ï>ê+®á¨JçWj~KŸ÷ë6.Ò-(GÀÆä,ý¾ÿ£_ÿ&"`X÷âÇÿñ“Æ‚CTªUïÒ\µ{‚*íMï%•TÒÊÎt”TRI%ݼ}±‹ÃÞbÞ¨CÝ‚¼»»MþÎY¿­«þT0âÿKŠT×–`aȃà©Ñ€ ïï=ÍqΗMÓØž|éše¡¦Ù³Dãóf©ŽÕQu„bY?Îõ³WÐFÃ?,rÞm˜Ü¼ž…+3,-Z/öãeK‚ „ŠCê­H9\‰FMѾûÁ2$ƒå˜»Ãû>HçÅ—@’È”tûœ`òå#C þ‡¿ô? ö ‰ï}îïñ†ÿ×øw1†+§þ˜?;÷·¹:ò7ŸXߢ<“„ѬâZW`ýdÀ†é Æ‹5ǹKu"Ûúc`ÃTÈäx…0€zC™¹ÑàÚ¬e¨*lÙPex(ÀZÇÕk ®Þ°}ñʼn±€-ë+|z¡ÎR½s梱æõUªƒª²P³\žiP«+¦BÖM†„!²ŽÏ.ÔYj¸’OÜSTNvI%•TÒÝÉÞ…ÈÁbÔ õHiD@"hXïÞî\ΩшA‚œuZ«PkøûþÖ¯stßв¯ÿ¿7Ïÿýí1ˆ‘fIÍY´¶ˆsŽ]ÇpäKñÆ¿û §~ø:‚7wõ%ö?wœc¿ûÞúãïsò;?EŒ5^Îëâ–+àîÆw#ý{”Ö÷’VH`Š×‚ª‚Ó½þ\:õ)3çOùPòo0Õ‡Àßä¬þç¼3w‘³üCÆ'×ãUŸš"ýlè´ô7L†âçoÍ23­¨¹ª°y]…gŽM1ó£+Ô®ãPo^_å‰#“œ<=Ï}[F6¼úî,~ºÈ¡Ý£lÝ8ćŸ.pxç8;·DüìÍë4å~¿—¸r¶K*©¤’îBaK½E»ÑðÉÛ¬oœ¶ê-å.®‚Æ5ÈEð¹ëAdý³"ëŸÛ¬óa·Š¤ïØà”Ë¿:Gíø"ǾþyªÕ oÿùШÁ‘¯žã Ô®Ïrùý}aUÍEcPµ%@¸ÌÚ*,¶Apâ½]fMÑ4 ¥w“ ºóÛÜ-±‹’ñLVÄà®.ðÉÛ/³aÿÀæýj`¶ݷ‘Ã_àÔïýC.^ÿ SÏÄõ3ýdâÚé^• Ôæn’×¼5qMi”ý»FØ0]áíçùôB­ªìß9Â{/PÀç SUÞ?=Ï«ïÌñ›Ï­gýT…±Ñ€ý»F¹1oùðÓƆöÝ7̦õff£¶ÚÀÔ f£‚1Êg—êüù®2;oSÝ›’‹Ã¿;{y‰ï¼t•Ùùˆ³ë|ý‹˜¯‹¼yjž·OÍ3»`ªŽìçoß •»ýÞ:×K*©¤R*é®cîxÐmcÓ¸sYövÕÌbîrÿI’ÊJ(k_-²Šs‚áŸþÛë\¼l±J ÚB<´§Êä¨ñÏP•L¼R|"à(„™O/ð£ñÇ<ÿŸý‡¾ü„Oç”ÿþ,ÑÒ/þ¯ÿ’¹‹W0‰Ë»Iv~Óñ ×bÈK¾TÒ­heö­»…a÷·ûûI&µÜ=A«iCƒ  Dµ«;§2ú š¨ssëPÏÁ½Ìb­ÎââÕ¦—mž®òÕgÖ±XsF˜_t|çgWp O™àþíàðé…/˜å™c“ìÚ6Ì›ïÍqæÒO?<ÉähÈŸÿè µÄ*-05QAUyûWóX —®7Ø·}ÔZ-¹ï„s¦«Ú3J%4\¹Ö Z1ŒüâÝY–êÊ;Ïshï#Õ0sÕ¶m¬òÜãÓœ>WãÕwg9úÀ8[7TøÙ›7˜žyìð†R©ÀPÅð­Ÿ\enÁòÛÏodiI©Tk•÷>]äç©G°Y†BÃûƱ‘"Æ0¿èû8=Qaë¦!6>™ËDH%•TRI¥4\Ò/»×-T>üÎçæÕ´¢-¤•mÅyÏq§JˆÄ¹‡¤ ÔQ–0üÜåˆ3—,ÎBC½%¾n}òõÓŽñQ㟡>a\Œ.¢>S»FÞX,\¹Áwÿ·ÿ‹¯þW‡ÃåYl½ÎwÿÑïS»:Uâ*=Ç¢‹4kÖ ¯¡à$ºvõ…½iU¿ÌZ ü3îæÀºµÚcå@y4ö?2øð¯ò| Æ.î1s={ú-*ãST†'Ðù™æwÆ<3ó7øðÿdöZ3 ¡§ˆ$†ª?yýã£ÇŒñô±IÎ_©s`÷§>«Q¯;ïåÚlÄ…+uîß>Ìö-U®Î6Ø0òÙÅ:6ï*#Þmñ.`.öä1a{FàT¸pµÎÎ-CÜ·eˆ@„WOÎ1\5>¡JìRì\|¶Í[kaÉ1;±mS•ðÃÎÍUFG&ƶn¬R …ÌÓˆ”/ŸJ½†‡ 3³u>ú¨Æ#Ç9pßoŸšOµÕÏ›bç¦!‘caɦm7"lZ_az"äÌ…%"Wn—’J*©¤‚P9%Ý1ËUÔ…²hUóá@â|@ÎVA 9ЛÆÇ á±Ç"™;¼ñ_/SØÄ¶"‚5±^!~–ÔZëL¶¹>·ÀëôÇÿö¯ðÆ7¾M¼ïqì IDAT}nÞ·Q·è«ÄH,‹C7aˆÕ¬Þ3|‰µÓ¦|Qx€öÁ\¥ŒjNQ°¶cQRI·z÷IΊÞ/ïhù>0±{»@à]è¯Ï^`ç¡_ƒÆ<ܸÖz³¨Íræý·ùΙ¯qô©-cR°ˆÞýh‰‡Œ2:2\u„P[òຠ#Ã!'OÏsheýd…][G#¼wº†b8²w8{¹žîucLÚ+ç”À£Mí¬T„[†¸4ñ«35ž<2Î3Oòúû ¾ž»&0&ˆÙŠ b8°k„0nÌYNŸ¯sìÀ(÷oa|Ì_·có0›ÖU˜¯9Þÿd‰ý÷ û6Æw›óþ·Ã{G ‚ eT?|m–c8Žîfb¬‚1 D|,û£Ç©×oZ$râï+éž ²®sI%•TÒ]ÈÛcœÅÉÝŒú²jND(N J°xè“Q;[¼“†!z#…uÞðžbªØ2Þ6èå:pñV L%ð×:çK¨ÞZö}îaþÍÏ3wé*(<þw‹°ð«_Â$XL¢oW·+hoY¸õ}Í|ÜÅã*HH›ºÒ±ö‹<‰Ðvaª½ ßm³úOۯ׊^ºÖß&8]V}ZÅøC#ˆ³(–Í{À¥3H}©M ®Îpýò£ãL­ß†Y\R  ÅÄnóšh€}ÛNXZR~øÚ×ç,Apær‡÷rðþ®ÜhP¼ò`Éz0íD¨7üß;7qmÎ29P[r¾ÔG ¾îf¢É „Ñ¡€ùÚ§Ï7xôcb4Ä©5”­ª\ºfÙ±¥ŠµJÃ*&4Ô¯,bk󖥆rìÀ(‹5åãsKÞ=‚x÷ãELè•>³}œ(ÿw)wJÆCÕŸ|¶Ä±#T+>;«á¡ý#TBáÝÓKÜXôÊ’î11®d¯%•Ô³TÚÐKº#Ày T,’–Qûí/Œ±uCàÃÉ5»öŸüés5EbP'^® 1¤ˆ©!Tƒ¼÷£x#Ž˜8aY²9œñ²›âCI1•‹ßÎ)~å)~éq–fçùÅÿó-pÏüýßááßù#“ã¼ý'‰µ‚טŠA#ÁˆEÓ‚n@O\ÖlÂeòU ‚ó’2HÙå;ÜR!ƒx0¬‚Rjm‡ïÎ?’*óÇj'HT$Pã•~—kÿ ‡?ù9ÿ{¿õzû¼r(µÚ"ß8ù,ã›6SóÖw Jl@GD9ºo1°°±ØpÔʦu†¨a˜ 8ùIë –SçêìÛ>Äè°áÓ‹  œ¾XO’ rùFÄÖ öì⣳K¬›9}a '05ðÌ‘1NœZäì•XX²lY_á‰#£ W ³‹–ºU®Í[îÛZåƒ3KìÝQe®¦ÌÌY$>»\O™‹áòµˆ›+ÌÌE\¸ñ€sØ|x¶Ž/óCY8y—y;7U8¸kˆWÞYäÁÝCD‘R«;ćw±yºÂ¹ËÉOQ‰Ç°”@ï½[9Ù%•´A¸ƒ’lè•K‡vW8p_¥åÚ?øö<4b`­ŠEp . à øØòH…0ñª4c\Z@Ü Ηt3_´±¥ÓIfPÀ¸ŒApøù§8ð…ǰõ?üƒo°xelÄÿé¿æKÿåßç¯~ÕyïϾÛY5õÀ”\”„Ó ¯ ÷H÷œ_·¬åb»-BoÑ]ËêÅV½õÅßÚ%¶Ö5[{k¤Î‘ªþîQ1þfì^1±»w¨Ø‰}üøúïñÉ;?gqþj¥‚‚ C¶±û𓌌Oú lF<÷7‚Så‘ýc pþJÄ+Ö@aâ“{¶ †Âì¼e1R¨ Ÿ]i°yºÂÕyëµ…ž¿wf‰±‘€m뫬?réšåä§K8#H(TãDwê ?|kžg±gÛ0³5Ç 'æ¨GðÖÇ5ŽÜ?Ê—› Šà½Ok\š³>Ž>¿ÚÎÎD¬Ÿ 9sÕ²ÐP®Î:ækÖ[öCƒ—œO¼‹KJÃùƒt©áó²JÜ?#Ï?>ªðÞ™:'ÏÕ!¶o¦á`ý¸ákOM!ß~m–¥¥Ò¤ZRI%•TRIw4D7BC…ŠSs Êõy—Št‰‚ÖŠ€Ñ8?Ž`Q™gIŸeœ¢F¸¾ ük"ï=‘‚¾ñÓAÕ ¢¦"©µ]m„ˆaöâeæg®óÓùoYœ÷¡åf®óýüÏøÜ?ø»Ì¿€E¼! ‘%çmd̯ÿ£ëº|½žØ”´qÓn‹´£`¬.ÿ´nÉ»Xæ³®_îsöü4 UóɺâëÅ—9J³}‹‹ë«¶>Ïã-/h§fY-¼¿3®‰¯o3^ì˜ÔÇýÉšwëèaöZm›8v–íü­'é“TëË h¦Ð-,AŸJ¼U,ÝŠâüóâïÔGˆ¤T“…Ÿßtñü·_ïk·ûõËŽêt Ã+¼F°óÞm7£ËÔîj;&½^ß'Äîׂ®ƒ{ÏhŽk+ÂöÚYöïbh"ÀŒ…˜ª×~ZÛ`aq×XòÉÏÚŒ”ª0:¶Tý·Êæ‰_l‚½3Ï'—êñ®—<¶ÏÊ‘µâþeG(WËR :<ÄÐè6Ÿs¤ƒBÁkx5VvÆŠ;ã ˆ‰÷”gôÒô*é´÷zHÏ ²ÌÞmÓV¡YCMWþÑ¡My…›,Ó&éÜœ¦~‹tVڔ༤’J*©¤’î ² 4h4¼Q/Ís›é6FÖù$rÖ Du *A šÅ`Ó ^÷Ø,0y‘U2°Xë“÷:+hò¬ªwK× ób ¾Ë%6Mò+(ꢊÐ@"gQëPëh8Å Uâ¼?IÉ8“É699&Ló&“ˆf`É‹õ9 qQ^mü bi³õRÛ@8×F.X¯MˆK»kÛÿ.‰¥*ÓÚF˜É·jbñr¨*FLîymÚ+yð–<Ç5+B}$‰Ë‘‰ÚämÝѨ¬Ú<¼môå@‹=N¤Y1"Åû“ïru«ŸL!¯ R%¯öÈ–~RÊ EùЄb´:¡Óú£u]­ð;Áìšá‡Ø‚ܤ*kÒëuç¹¶×Qˆdë;öÓ9QšÝêûw±wI2޵¾N3?Ûâëo]> @rk½i¥(\_´¼xbžË³Q™º¤’Vª?+©¤’J*éΧXü9­ÁÓÂ߸Æ|Í% ×S™ZÕ'‘ónè‚s«"Ëäˆå±CÓ\šPuœŸið̃‹¯]c~ÉaD09ù\5ú¹g95häŠxúè®7.ÌÔÙv쮼üÑì4”O'1PWçÀ9Ô9lu„uÇ¿À¹«.piÖ;ƒI±¨|ýœÑÌ\Ä1ípu§{ -òSõYéû;“4øžÄªñ¸€§O,X¬¼ÐìÁ¹ªbŒéóý±£¨úLk'Á˜Ô²©¹ÿÓ"hƒðíìÚÚNÍÒi‰ämqÚãýZ\PÚ¹T\§e« ´3 i¸k†Þðuš4è=¢í מ Ð5¸-Î ¶-œeÿŽ*C2"¡Ï(NÇ¥¯éM²”§½pqÖPmæ‹h¬,]´K*iå‚\©Ë*©¤’Jºë˜{lž Ø2UñåhÛòþ ¸ä/Yj8.ݰ\«{O`l7l[W]ñ³ê‘rùzÄÕ…8¡œÀæIØ»Þféä¥p©Òj Uê á“«.Ìľ½ÖÕê,^œãƒ‹ŽwÌöÔÃ8l‹p:}×ís¯¿­%I†Ú$¡ìÈYs“SŒsìWt› AÞõ4©gìcF  ˆnó^–ˆôx¿tÀ“Ý–X·eYÊs]&­ÛD¬ôzî¶A÷ù œS¤Aœ1ÞK)ðC’øC:„Í}å>äJ”^RI%•TRI%ÝÓÔÎ,:Î]lô½â U±÷hœ[t\¸­ð1^.Kž•üwvÎ_0™Hg‹Ržú|Y®YvtNÁ5ÒlMŒ7m„ä[šÅ½y¼fø¼Jj)¿Sô ý£±vßÝõÞêmI7Ÿ/Õ±Õ!ﺔ„0„ƒ Eò1ØâÑ ™ Õ±¦®ü%• û6¨{QÒ=vÎv»¾›Ç\»{»9y®ÖõÝ~K~ïŵwÉ-K>œÈÕ·+õ’Dx­Ú }¬[Yæ Í=AzhËrï”.ke¹õª«´‡uM¹«Ð£î³à1©ö´Š46¤HþÙN["D waœ¤ò^K.%çók9Іk±ì‡·tÐ¥ÿM*«¸»1©·â“Á!2X"ªžúÐ'Iͪ}eÙàE2ëy»eêÏâ!úoûÚŠš¥°YÒêú>'ņ© GKRi çò$ËðCmvJs^®@ðKÓÂI8‹4 ª¾voÕBÞ’b®ÀöB¯¾Ðé|í]¸ÐÂ}EÁ´ØT¨¸Ñåøí&ˆßlÒRk¤ M¶ËÓØ]î(ð;é"*j‡CVµý!Ò!ÏÌꋉ·¬Xë6B£:źJ rUZ®+d½Ôý趺¤Ë3oîõÚø_I½xJW3~ªw%^ó²ír½tÔZø£Gt«9VŠ¡œ}(ŠQFt§κ井G"¯úÙ¥}òÊ~»b~ÕKE%m‘&æçX·ñ¾f.7[ìæŽ‡_jç]§…ÛóXxý9Î_²XQêK ½åýö¡–ŒÀ1JM+1¥y®îNWÓÖLÈ™@/*QnvËûÑo¤Š -AzI« ÐÀÆé Ï?9ç×Ð.¢ZPj[I­X Ý‘ÓRï"Mžð׎èÐ[X­mN¢|º¿ä~iªaY[$w_¾Òt(iA>áÁJ{0b’>¡<)¹ñȪx/ÅuN¾ß"2jG€¤+`8…B#].on{+@Oï(Ñk€ÞFí"t•1Mb‹¶€6#×y¹Ç€fýÒ2²žvŒ“°­üp´Õu@]RPõ$—¹Þ¦¾Í#uyµÓ¹t«ºÞÞ¨=-»b÷Vг¤4¦ÝjÌEë¹ÔAGuz¾ÞK[€ÞRoÎO’ñx¿W´Ë8³¼ Î¥ÇÕ߯nyÄ2Œ+5?·EÍÒÄH›ª9õ ¸‹u|‹Bóò貨ˆo;ºj޵Ï_—}m¿¼cE½“ò¥b_‰9#á Â¥‹×Ùwè!úÉ‘-Î#•!‚p0}öRóWb—÷B»o­‹»¬1ô“Bñ É«¯Ÿ¢ÎáqÊü¤Ö®lÈzq‰±ÁybÐ’Â>­µåw‘ÕaêeRê’îFmWœZ’Žô°[u™K»å¾*À”ÂÆm6Îwú~y¡+ÿW¸ßÄñ\Í‚VœBG\‡nk&· èÕv ¤mÚ»¨©ýI<åÒSºÌZèIG }6¸[EžÇ£û:êz—®|¸Û© –ÛŽ½Îq»¢³ô· xY­Öƒn‰}eiÏ,òN×nÍikÞ¦^Û +سÝxˆë±Ë‚ó~yÌm w) êÞímI›â=Ú÷°IÛ‰éÅO¡Ÿ_yÔ›±—oÆê-êH­A’œ·WxfÏÿŠèçß$˜ù€pî ss\ÛöC_û{Œí9ÐÎÓÎ Í{΂^ g]6©Ë·ªâÔE.åôrÏ ´Õúß‘}YÛÄé%•TRI%•TRI%•TÒLÖ¢gÞbè½?…±!˜m^<‡yçm®\ºÀ™¿õ÷™Þ¶›éñuTÃa@ihuÊP8Ò×+ï€Þ¤ÙȹFÁCxîºÃZƒ`‰¢w¹GKÁ'IÍ»ÿt E\+ ½bK~Þ}nP„’J*)ã¥zû&‘²Ž|Iå:+©¤’J*iUH‹èÙw 4€Å%´niDŽ‘í{ø×¯þgf?å ǾÆÁ]G0U¸Xû€±hŸßûÛ·7@—V´µÒáÜÍœf÷‰-çAàÿ Ã$ZÈÐhøœùÎ9œ÷y÷éýàc:e ¤,+¸ÂÀSÖ4{·Ò/©¤5æE ªn m ÆøÌñ7‘ŒÉâ±T<Ì÷ã£ßf÷¾Ã ÈbÛõ&Ž÷nJâêQ׾↜³œþÕ;ìÞ÷`žó¬˜c ‰ÛtÕú.IÖ¹ùsœÍ³æ*™Ü%Ę[Ö–d>›×x÷÷‹§?ú€ûîß›†Ã•TRI%•t—R}9û6T_Rma‰¨îh ±°qšËW/qÝ~ÊOÎþ+ÞÕ*C£>#Ïolø_ú~å­³ ¯J,óà˜0KjA÷±þIl‚Á9ÅÚv©„n¥`Ÿõ'`@¿ ª‘’Jº'éòų|øÞë<ô賌Mõµ‡ToþüEŽ®(|ŸEQƒ×^ùA.±·ðØÓ¿F`$Âg§?`ÛŽÝ|òÑIÆÆ§Ÿ˜brzCÏÂjø¬ˆN½ÿ&W/ŸOËÒmÛ¹‡ûî ©¯"†“oÿ‚]{òÙ'°gÿ‘tŒœ³¼{âç<ôÈ3iÉWJmqÞ×.UåÀáG™^·1wÆõÎO}ð6[¶îäÔoñð£Ÿãfúü,.ÎóÖk/¥m‚GŸüâÊYñÞ[oðà±'nº’BŒáä[¯²0?Ç£O|>ã·Oüœƒ‡a‚ ã\‰Ÿ}ú+vìÚC %+©¤’î|ZÍ\ÿwÙ™s„sg`$kaq‰(Š`ã.> ™¯_§:06Qex¸J`êãìÝøð ]V8}wèÂËÕ’‚,«êpN¨×}U!ŠÖâ‹Ê'i‰{“NÂsÿÞ^«oØxŠ8×1YÊ­qÔ{¢ù%ݦ§ZªÕ¸>s™F} Æü~s±•ÎÄD­³é L€u–À)È4"8òxlíó–Öä·@BÔY¿ÇéO÷ªªD6âøÓ_ñÖa4¶´:¬µ(Þš]© ±{ßNÿê]ÂJ…1;M øšžh pœs©A?,cöú ûc|t âçZk ‚,‘§jÄî}‡ãŒªâN4a ØwðáÔJªê0&è«-7®_áÑ'Ÿ÷}E Ãj:w@œËDpÎ¥žNÕ÷°Öú¬Ó’¿N°Ö±c×> äÚÌe¢(Â&ö ˆâv &Èæ<¡¼ÇC¯ä¬¥R­r䨓q™IÇ2Y—äÇW1AÖ/çc¤ÐŽ [›(ÆXÅc%1·±B h^óê¿SU®_¿Šµ‘¯ ’^“_Cé}¬+Uenö:ó³7°Îšç,{÷Žûè’9t‰ÿ¶6¢X}ÚZßž J~¸VÚ•ˆ©¥(±¦S´ÖmЛÔ3éñ®vYý»•þëö}±_½üÞO-øåút÷ÊxŽèüØéÌW6£f”Jµ˜ÁÆû8cXh\clÌPŒ¯®°mè(cCýtcz«ÿ–fÿ½ƒg!)ccb ¸ˆ ÎÒhFÞRqNQµ^i*Ü”5¶]6ÆbùXI„‹>Ù•‚Kå~í2Mß:îhDúÜÁ—H[9Ûh “ÍýZkÇ¿VÇ¤äæ¯ß'bdŸ‚Ž›‚΂Վʸ¹׸zé_ûíÿˆŸ¾ð'ú«,ÌÏòчoQ­qÿ¾ÃDQĉW‹‹ó<ýÜoòÚËß繯üMD„×_ù<Îk¯ü%‡z’™«9pèQ¬µ¼ôâŸñÌóSï¿É…³§ ‚€cO|‘±±ÉؼPm;ŸŽ£PªGc@ÖhÔQuŒŒŽ£N¹pþS><ù:"†Zm‘Z}÷Nü‚©u9ùÖ/¨V‡xú¹ß`æêÞ~óá裟#¬T8ùö/ŸbÛŽÝLN­ï( —¨¤EÛÀF¨N WGxû—Ù²ã~¦×mâÜ™q6ââùÏ8üГÔjó¼ô£‡ªcÿáGظa¯½ò{xˆÙÙæo\ç¡GŸ" «~lšÆ£Px'_’-n`ÕQõʈ0¨‚*¯üä»8kÙ¶s7»÷â§/~‹g¿ôuŒ øà_°yë*•!Þ|õ§¨:vÞÿ÷íÞÏO^øs}œ3WYª-²s÷~¢¨ÁË?ùÛvÜÏÎ]û9ñúϨ-.061Å‘‡ãœãÄk/±T[`zÝFŽ<òTÁÚ\HK«íS;çh4êqz|!¨†œ9ýŸ~ü>"ÂÑGŸÁÙˆO>~Ÿ0¬pÿÞCüòå8ðà#,Ìϱwÿ^ÿù©-.019Íá£Opⵟ1?ƒáávìÚÇ©÷N°ïàÃlݺ“™«—x÷­_ðÀ¡‡Y¿a3/þåŸ222{#<ÂÔºÌÏÍòÒ¿ÃþCGÙ²e'¿üÙ D¶Á¦ÍÛØwà!jµ'^ý)ÖZvìÚËî½A› i-/ûJ'ß~•}Ž0>>Í/~ú—<óůññ‡ïðÑ©“<ûܯóÆ«/ñôç¿‚/ýä/yüé瘹r‰Nž@ݸ°€n\ŸáÄë¯ ‡zœuë7tÚµXá Ã™ÖõÄÓ¥ôV\„»˜Fz>´ŠÅª²óµ¹Œ¤tåï+ÝWçñ“e ½_ËMùÒµM2KÞ¶£MÃ*]•íK=Ïò”‡÷\Á»{™­®ãÙ‰iw“ѤKl]¦ÝÒG‰‡– ¨=lŠЬ¬P9Ôi¥¸§ûp™mAÇVFoYì Ž+-s׋¡Ïrù4ÞÒÓ}+3I:5¼=þ4—?Æ…pó×®³ã¯-°ÿÊkŒsƒ«œÂÑ 2R¥:dâÚŠÊîÉ'û6–@Ï.î’›ô;_Oâ{âP‚4X~1jãØËiÛ(Í @Ebõ{Mõ;H‘›{TÛWÒ¬øæ(Gâ$”š X3W.pìøŸâÅï|ƒç¿öï!"¼úÒ÷½™ ÌY¥qUehxP––j\»z‘ ›·séÂgð…¯ü6jðÓþ˜/|åoöµÐk‹ó¼ÿs>úˆðɯNòůþ.ªÊ¿÷ÿÅ2„ç•GŽ=æ­ÛA•±‰iö:†¯¾òO<ón\»Âý{15½¡?þ¿?B&&ýó{Š·ßü9ós7hÔëì?ô0Î}ÀÈÈÏýÚo?{ñ[LN¬óïUåÂÙOxì©çSË÷ÊmÊ©÷Oø`)Uö=ðSÓëÙ»ÿŠrö³_1sy=7oãòųLN¯Ç˜€êÐ0¿|é¾ø•¿Ž1'^ÿ7®Í`mÄÌå‹>zœ7~ùP% +<ûü×^{å‡|ðQ&&¦¹rõ§Þ‹Å…96mÙÆý{ùÏ}º‚ÏÞ¸Æ'ߌ­×!÷í9Àù³³ïàQT•_¾ü9þW¯\æØãŸctlœ(Š˜»qý”]» Š"n\Ÿá£Sï ê8þô—QÞ~ã¾øÕ¿ÁË?ú ¦¦ÖsâõŸqðÈcÂ{ï¼ÎãO}‰ÑÑqžýÒo"?yñ[<üسŒOLòÌsuAسïN—.œåâù³œzÿ<ʶ{¼÷›ºŸ¬>Ñ¡WÒ“áû>Ä¥ gÓj.ùyo4ê|ôáIžûò×QU~üÂ_  #£ãì;ð ˆáÄë/ñù/}­?{õX—A²Âzm%Ýã²@wÕ…¬@ê\Þb½¬šhÙR}½ã˜^ÛÒþ{Y¥m|·ËÕç¯7øWŽ1<±q >9u–óŸb×ôÿíï<Á¾sKÌÞ÷õ‘‹„b©¸!Æd=û×sõÜT€¾šSº–»3Ö`Šà\¬‘‹C³-°‹ÝùÒÿrZ·NFÈ$¹O¦•TÛWžk,H瀃A{ß-’µYó%­ 9çøÕormæ"'^û1‹ s|øÞëlݱ‡M[w²aã6œÚ®IÌ$§ä›šÞÀ¹31{ý*ïžx™/~õw¹pþ“&å""}˜cãS<þÔ—Qçpª,ÕAÚ$“\uUêK5NŸz—¡á‘¦kÖoÜÊæ­;qÖö¹„•ÃGŸdl|Òóä8içá£Çùáw¿É—¾ö»ñØIºWS¾-©Žví>ÀØØxߊNáØã_ðîõê;øá{o!ˆ`#ßǃ>Æð§<òaXa|b:VÔh<ŽžAÈÁ#æ,à9¡Nã3'‹ñ¿;ï€ù¹ë¼ûÖ/Ÿd×îVÜÖmØÌ#Ç?ïß­píÆU¬u~¾Uyàà1@Ù¼e;ë×oÆ©¥R©ðÀ¡‡qN9óɇ4uD„¨Q§Ï{¶Nâ5#ÙÚMž}ÿÞƒ„a%]³hn§©ðч魯¢¨¢ì}à‹‹ ¼sâÖoÜʦ­;VÌçn\Ÿáê• Ôj T*CÔ8ûÙÇìØ¹»“Ž(–š©/â IDAT÷iEœþø}†††sM/£8K*éNìån-©½u¶Æøä@m¶F}amÔ¹1«Ø‹'ØúÑÏø­­÷mÚ‹qTôã²›ÍÛZ`=to½DúlÖ'¨ævcZÞ¡˜¦ö)Š:M]=S9O⛥9öŒŽå»Vßò»`uMØ‘&#ÛgÛ,³¶*@{À,k¦^\­t]w²¢f@ÅÈ%úT×f.qì±/¢8¶îØÃ›?‘­;öÄüE»«„š”L^q¸kï!>xçUŽ<ò¹ef}€þ<ˆ$¸ò{"×…(j07{Ã?³ŽO>z/•ƒzþ¸Ü3ÄÇ ñÆÏÄÁ£Çy÷ÍW8tô‰Öý*ÒÌûÉ)]`ªêc’ãÿýì#ž}þ¯!õ¥>gˆpè¡Ç¹tþ3ö:ÖÂ?$7Åy¯ŠìK2—ÎmÞ²·y—ΟáôG'Ùµç@ü)ö€ð1èž&&§Ø³ÿ0Î9ÞøÅ›˜ògb.[º/^øŒCGgtlœKÎ13syYF[©„ìÙw€·ßx·Å-;œ;sš'?÷*•Júþ;w£Vùô“¸zå›·îXq×çæn0½~ÛwÞ*L¯ßÈå g[zœXU‹‹ÇÛÚˆë3WxêÙ¯àÔñÙ'¿*¥Ù’J*©¤»ˆÞ½l!Î;S[\diqg#¶¯b¬ö>gO¿È>3ÁŽõ[ Ì2n'*½wEôA„¾ÛÅý¡¹î7@sŒf†¾Òx—ö=\m8Ü_©¶RG¸* ޾װ°fzÚ|}û’Ö„ªÕa¦×oŽëG(a¥Šˆ!0AÌ„ãŸûu^üÎ7Xª-²ÿÐ#<þÌWyñÛ"©¥2<Ë#jÔ™˜˜ö më}ÌݘáÅïü!aòä~£).weàå:/Ämžùâ_cÏñƒoÿDŒOà%‚ Bö:Ɖ_þ˜“oÿœÏ=ÿWÙ±k/ßÿÖÆ Ð,b$Mt×÷!†üògßKAìý{27{=Žøþ«òñ‡ï!"Bci‰¾ûMT•#<ÅÐÐ0AúÄlÆô}©*a&èÙ'ÞDyêÙ_ç§/ü9Î9¢¨Á†M[Ÿâ\ô±IPÇŸû*?þþŸáœcÏþ#L¯ÛàçÓË1Æ`Œpü™_ã‡ßû¶ß·‡£|ŽW_y‘……Y&§ÖsìñgyçÍ_péâYªÕaŽ?ý|_{[À'œËÝ:19Íôúͼð?BDxâ™/S_ZôîÚqÜn†©wÂÃ}žW_yÚâÎ9ví>®Oï€* À‡ù/|÷8rì)*•0»ïMP©T8xä1^øÎ79xä1Ž?óe^ùÉw‰¬ÅÚˆÃGóË—_da~–É©u3ó÷ãâ>66Áôº ¨ƒ0¬pí꥔LJa…ƒ>‹ßûD QÔ Z­²ïàQ^H¿‹bÏþüð½?ö{#ŠJ†WRI%•t—еùˆ+*`D©Í/²T«µ<²kŒÙ3¯S­ÆG,¦rê ÁL>€ ÇBËò[ÿóOwÅ{¢õ+ÝøÒekƒÊãi±&~4‰7oEüZâ: 2H x—s'í kbDZ+ ú í9'@;TõÔ‚®}Ý*>‰ÅbäµË]'‰[K%Ñ U r{\EضxŽ=ë ÁtÀÁÝCü¯oÀÚe"ÀR?ºüFÈ)ôre%Ä^{ù=pÍæuX\Ì«–$®pÆ­B’¸Ü©Ý–w´ç=‹…gæÎeíÐí¶yÌz;zI'&Åq+ò\i/I·—×…$q-ë°×3n5“Äõøl•6×w˰Ü%IÜJ×|*Æ3÷Y ÓÕ” O;˖О7´œ¹Z˜­ü°“¹v:{‹ï”æ¶&\µ—ùî,/u^·é›E[ú¬íŽ6éļÛà‘>v^5ºìæ¾|ñ<û=»l%7>]à[§0dj(âä;gx÷ÄûÔç¯óÿÃ}Ì}ï?aÝÈ ftÇŒXjÑNØú?1¼þñ®mÿ?¿yž7ß[`áâ 'ÏD|4¶Qï]vëê ß&‘EŒÜ{ù.éü@Õ& ÞÌgÖ>Ê%DÖЊ«k¿~úk†ÞÝ/éΞí&œdÓúM[SpÐYxYc…Œf.Ïr“÷Og°³|‰Ë®ÉmW‰,/wËØÝîw]fε7€Óµ¯²‚_´ÏQÒîÏ ÅÝK–ê¯Û\¾xŽC‡ñžmÖv³z‡‹…åA\Š·tùém·JZ­žÝ²ÀX LT OŸäÕÉ]œúä"›+ç™™¿Èèº*£•X_Ù‰ í˜1†=YuSJQ3³Âeªƒµ·ßw#¾ÒÊ*HꙜ–؉˅…ßb’8S¸ºÛOD4W²è¶À'+n{öo•AÆ6Ïm¿QY3Nœiï]éd2sÚ¬žn³>š•r-©¤MÝÅ(OnTuÜ¿çP )Tò‰÷ƒ´l°V¤´5íKóô:J¢ËÆÞÖšæymºÓ—aš(Ü¥½nCZ-v¢íœ7¤c‡µ#0”Ní-˜ÒN] mwjYÒ™¦,3YLs%r' “´µDe1ØÙïËg'n?í­©E ¹t^$mŸ—>A[›F«»¸—|DÈÎûöæEûw+SXÌ_EeºtrmÏKºŒ_§Ò]B¥ÒÅÆ·’úÍË/ý¼gy,WµIÛµ¹W/e®)¬ïæ„ÂÚØâѲ€ =ÖåKp%2kþìZ-šKdiOp²ë(µXÈ{,¿Ömµ‰Á÷÷L-ŽRëJÔvk¯(²Io_F ¯MÇ@¯ÅµÉί 3[Vï+Õí+Ç5Ÿ¿*]›Ô<çùg·+£·lñõ惢٣ª=_«lÑêiÕ«´³kã»6Ž4}wüà®\ŸÇ^z“‰ûždhø]‚1ƒŠen¶JcüÓ#›ûêGž¥‡½÷~ ãX¥¿Iëª>[ñí²&÷®žöpmôÿw:,T-mà%u[#«­P¹¹œàŽÙÝm]äî@ÆÓ­Í-1 «†ö½HE–‘Fu•GWi ¾÷nù y-º/jë^»¬ ­ÉOxÍÇkÍ$=éq›É´Bô¶š]ÅgôUIh€’„JweŒöºÎ´Mt•Ȫðõ~AúÊæmpD¶aj 7þãûŸ±xå=.Õ>3Äè}‡™œÚ‹1ƒ¯À•%‰“ÁüÌŸ;°|Ò¢•ÒnJöÜOrÓvÏB—Þà\Ú[Ÿî#+N×Ĥ¥ÛšZ&fG@m{Öª]Îʸx¤1.ÒS_û…RCô°ÿÚ1ÏbŒl/ñ²½ô£9:ªø‹t˜na“í>·õ–YöØX6,3Õ—eK*©¤’J*©¤ÛùßRùðVuWwWõvι÷’ÓÑ<÷œî®åÝêý?Ëÿ/Si½³ü­ÕTÓj»L;u¡Uº™Äp‘5¥>Å}& ×sÕÄ‘çyŒ™`×[ªeÑÕVWYæŽ, œi<½|ññ7ßɬsÖ®º±"µ4UÚ8âç%Û/DzUi ±%]§¸Çjˆøp¬ÖIC/ëÄÃeÖíHÍ÷hxÖé¼¹8¿WuÎ윿й;8q ¬½eÍ(Y00=Ÿ¯eÁ5xÖ":ö¼Åž§uëÎXŠ;Ç’’X¿3, Ôƒþî]AÖ©Îf€~tâÇù_Ôú¹¹ü¡Ž.œ:ÿ;5îTkXBkb’‹­²Gpºt;Éøj°Ê‰W$Ðþ:¯[K !GA÷³@©>Èêú0þ,ã¬ÊÀU¦V+›RÀWÒ€d¬¬>›OVJª#:¶IÐ#©ú¾™ø›ÌÇ W;A\®•y2ö7­¶çh“19ìªeOeYõ®ç Ÿ©Ñ¯ë¯â=£ã8S'¦PÕ|ž’özx϶UÓ‚ï)4«ûHÍJ 3Ö i»RÓ¥™Ê{Úøíæv”†k«s„+]]Q‘5¼·¦›œ·„N¼?v<=þ‘:y‰Û§. ªÜºñÖ]èB–ÚÊ~{Ô¸D¢'2G¦Gô(,aC˜t#Åv^øo š.ÐÉ0;€>É#L&ÎÄÕs@Š.™â.Mß?"@Ÿ™¸:öd2}ò}•â^³qÒ¦}¾.¸"7@ׯçÓB)îTÆw /À°?cBׯ%=‘Ò´ô8@Ÿ¹–ÔÄMn”egºÌ:÷ ±¸ ‹¤¸þ%õËVã:5í[ѦÚôÜ`÷#! ‰‹—E=†’žcÜ(èdJ³"bfF î–9ç°Æ0R¸³}©¾ äÉIÐi¬mmk[ÛÚÖ¶¶:@_jW}—÷¹G‹Õ¬ýQ÷TH]VÀ<â¢å éÈJÖtE*耞ÍÌ1ðÒ¢i¨Ú0`eù$oiV3¿ ïûëIðˆyDªdYÆíÛ·yïÚ{ܺ}‹,Í@ Ûí²½³Ã… èntˆltW»Ì9Ç Ÿrýú5nÞ¼ÍÁþ>Y–!ÆrêÔ÷ß§OïÇ ÆÜ]Å #Â?~á—ù¹ßøïùéïþoøÖ'¿Vܺ#çÎrÏW߸Íÿù\»uH«Óa£³ÁF"<óáÓ<ôà6qlß¿µ­mmk[ÛÚÖv'úO_Ñ#Æ eåo¢ww— HÐC^ñ:Ž–r)#y$Èe†ò-FQX)ñÞ|ù~s|5ÕE€x‰SW„¼?Lmž©¦ì`’ÎgXÒ6$Àh®Ç×)pP1?Dúè o—VútRÿ[릀NÓKc{ßÅ”ßcZV]wô޹ê’å7®_çÚÕk¨Wº].^¸ˆˆpxxÈÁÁo¿õ6W._æüùó<öøclmmÝ•~;<<ä­·ÞâÖÍ[t;œÚÙáô©SäyÎÞþ>½>ÿÒ5Zí6=ô .\ ÕJîJz¹Ë+W_æ§ó§¹}þ*?þ›“zýßç¯=÷#|èüÓ˜Ц‹@¯—ñ¹Ï_åÍk‡\zîC|èÒ$Ièrn½³Ïï¾ô&½¹ÇóáÝx£z²›Ÿ¥ZWŸ~ˆëÝŽí^¼Â[·_¹žá¦Xïæ_•W[xú|Ì}›ön?¶×¶¶µ­mmk{¿ô“ߘÛNH°‘Eô©gJ9š“à(Üé\¿Ãbí*ÔÖ Yõ¤ZK&¹Â}èÉÔˆè8áZ{¥ˆ.|ä1æóBÇ,ÔW&ÔoeäÙÐJŠ}é™"ã3ž1úŽ"`$kîQctöRñ˜”Š TY0‡º’¢¨“¢wÍ 5C´22d1¨*µù¸Š®<õi-ï¬w ¬[–ð¤a®|)i–òÆë¯sØ;äÌ™3´Ûmúý>é å°È`0ÀÃÖæ&¹ëpãú nß¾Í3Ï<Ù3g¼×ãi¶ýý^¿r…8NxøáG”4M9<<¤ß´â­Ó-ÒÁ€W^~…7nðá?M§Ó©é«8fæ9òJna·¿ËÏþÖÏÑ?‹óç¶Ø¼ó[7ÿ1¯þë—øŽ‡~€¿òñ—Ógp>?ÖGRš*/¾ô>jñƒßû4yój®€Ó˜3Ÿ¦{f›/ýá—ü›Ë|Ç_zcdf¼ö d×ÿc[DíûPÍÈ÷¿Hçá•ÃH¨¥(ÔQäÁp³çùoÿï›üâïÕSÖ/Øg66üا·ùÿÊiü®_gŒé“t>®=+7óªÝòMºTNŽ;ä˜ÄçtÁ½Ü5Çqmz—fÿI·ëIKfê"¼{ / x†5³M·¯ 4ÎQ{çHâG\”jê¤Ì}3‹ºéþ¥*91Ô /ë™GÀQTŠ>š^ï%*§`”!NâÑʽúJàWÌrƒiÈ€.$\öÑd¼Œ\2^¯­èH~g‚Q^eÒ‰S¾ªZAM 8JS`ø.~W3!@%…ËÅ(ÞkȘ¸Ëpº‘óÉÔµD1wUæÀT] ȯ²$ßÍõpù st ³W`ª:H§x!ï=¯_¹B–eÜþ<ê=ûûôû}ò,çôéÓô¸}ë6ˆ`­ek{‹^¯Çç>÷9ž{î9¶··*~+étS]}áíöùÊ—¿ÂÆÆÛÛ[dYÊ ?à°H»ÕæÌÙ3¼ûÎ;ò”8IØÙÙæÆÍ›¼üÅWxöcÏV8šå’tÎ#U%“ ìùå~™sðÛœºÔb;isºÓbçt ²«ü³·ÿ7~ÿW›ÿôù¿Áó|N]eòëx9‰Žd¸ÆçD /®o~uë©ð-Ÿz”n;æòm¸qÞ‡éÞݶ|Ý7>ÎK¿¾Ëg_x“çþÂè¯Ñe(2Ô®üŸ<ð™ŸÁ&ocb€s¼÷ÒïqýOÿ‹ZZçâ·Ó¹øÈH×1bëpxký!qcñ§wöÿ×SØØ„EËj¨yW~í墧ê3¦ÝÍ£ AwOÕ·ªSów΂X;~gîssÞ6ªv¡ò ²™¹}¤ ¯Ó'wf»­³!5Í!5ÐBuÜ;¯s€ãÂxRÆ6`_=Æ™³w]¦›Æúv d¨ãëT³ŒØÄßU—@ƒõ|Û:cK->Ñ—«æö•šy©:ë¹T3ÇuƤrÊZ%ЩùW )é„ÌZ­ŸPk…Iêžcº8ä™x¾è¸h‚Ž_çÀD\šV^SÆ…‘uÆtVo£¥–´¹c½é{ |öªóÓ–Hq—ñA«óÀó=éðÕ£×°K%™XF3Wkø"Ç%×#SM,uˆ·&ªE„5Wå^Ë7”ʸiÊŽnˆ6HX?›7YZyI5à<þ°;–Lm½‚÷E¤Ülq 1Åb©…Zù™Bw\D0˜ e®£¥c¸€È¨_‡Qõ ¹®“<î¦2Ñ«þš’™~HˆG §ÐS_œëŸÅ¼HˆÌf_ŸØ'à¾uãûûûœ;w–4M úÃHôO<ÁÖÖ½IÓ‘®z·ÛåÖ­[¼ñÆ<ýá§±Ö.±ÙYÜ-Q~Úçž7ßü*F Ýn—^¯Ç`0 ?è#.^`{{›Í­-^{õKxÆ­±–Í ®]·Þz‹|`ÅõfZ¡VžEÝ0jüÒ;_ä¼ô÷iu$>f+ŠØNZì´ÛÜ xïÆ._ºù;¼úÕ×ùÙïÿ;|Ã#Ï×è‘×?)d†w8K=ï\?dûÁ³ìÅ1_½_Ý…¸ ;]ˆ°œ‡î}–K{œ~÷øºg$‰¥~ψèœÉ@ú€GõMîûÈ_Äg{ û`o!dxŸsãË/’í]¡sQFDÑÙ‚ò ¿gNùwžÙáçÿêÓ)î 8fƒóBê!uŠWH3åGÿþfl•Ž(ÖY{(=†É[󌜧¾¢ËéiP7¡/¼(K5å¬i®M2m^ïeòò&QÆAÑå"qã³MTÚ¯MKxkM0DkÁÖä(Ô…Õ PóQ¿6™hJÑúûÌ0àbÚF½ìyΆŧFýðmП5—˜@:竺ã«þ(ãã@›o±¦šœÇ¢K4«Ž“8ë„£¸î¦U뜂ÍröËtùJ+©N¶ÜçÒ]$3ÆÝ¬çµN81¦\1²Úêœ5xþcuÆ{2÷¢EWQ©[¤eÒ±8kº%ÉûÞøR 劔ˆê„ñu[d80ŽåÎuä5¯]jÒ“EÌ0%[œ;šHÝ)ôç úÃËž¼†÷UG â2ÄZwü¢MU&Cãö*~Ìc¯¶ÝÃû‰Íèª< Š žÇ"Z_žWËumÐe IDATcIÙ"Eý|uþfT+¢nZ¿§¬$èäè¹x\¤$é㮬RóT×:Æê¹ü3-Ë2Þ½ú.IœçŽ~¿Gš¦ˆÀc?ÆÎÎNóŠËÝÔ÷766xõÕW9ñ‚6Íw9xùA{—A o\»Î{W¯òaùx“—ßú=ýÆÓÄ‘áÍ7ø¥üWœéœÃ£DÆ[†HšzöösÎ=³ÁµCØ@ÔíØh‡ú±p@Üw¾ÍÛQ‹þaN+‰iö):ð7À:Ò½›\ñE|–á¢õŽÓ~[g0"h~éµâ‰~æH÷´ÕÜ N ƒƒâØ’´Âß¾ºëð ;mÃNKH|e÷up°ÓÚf3:Å ÓµjúÚÖ¶¶µ­mm«`­b/zÌÁUQéI1Xù ´ÜXjDHmç69ÎT'™òÝ•fêõxÑ!˜,£ü%l»«JÔ:$U¶9ŽÕf¡o™ÇÝ'#>5-µVêWG¿×å("K¥L=üà 7hL¡ªx d|ªY\Òb«>ÔNóc½ªÊÓC‚º)Ž-Ã:tU¾3åD¯Ö0IzKÏÂ4ËŸPç[>)iª{¥jLfDOôܾu›Ó;쓦9QñÈ#÷þþ>—/_&wù˜Ž·ªbŒ!Š"Þ¸ògNŸ™ë,“Š7uÙ ö»o¿Cœ$¤YJ:Hɲt(ݘç9W®\ÁZËÎÎ÷½ï<¯¿þY6À«’$ »·wéÌè2r^.ìáðʯwÏpú•¨Õæ‡üßý©·ÈÒˆÜtøÿù ܾ•òàC§1ÆØ6IÔFÕgÛq:~Ôc[–ë=èõàÜ}ÐiAè0’rì§v"ZIèßYö9ìî»\ûó_ãÔG~‚óûøÜsã•ßàÖ—ßDó®— Ùkì~á§è½÷:¾õŸ"&ZÙùVýÊ/þâK¤iγϞç3Ÿy>ú?¿ÅÞ@ù‰oÞæg¿ë‡™ã™ô8.wügý¯øÉç~f Ì×¶¶µ­mmk;¢­ Ð¥šš;LéŽÈ ëùô^Ø aë0¬ÖQZ‡ŽÈÙÆjmÞShËÑEÜ  f¦2—Â)ü0z_ú<‚[Äw'ª¡e øY2qs2YçÝO"‡¢S)!…ÞTâªÎŽÑkŠnBÁˆÁŠ eûjÁoñá=1ñ!òís2¯¨Ïq¹Ÿ±€D¨xª‘yWIQÝp…ÄN‡Tu#Éô‰Z“‘t\¨S—2Íu8 Mi^RÑZ¯òäé1—¡;înEº"Óu„ªº÷£K•)æÿåì°wHš¥di†Ëqóè£rîÜYD„4M¹víZ¾§vÂy¼âÕÓ;QìN§ÃÕ«WDzs¦—(áÖ­ëdY:œ››;t:Ý…¯õ½ë×£|ïk [Û[ãçS¸~ý=:.­VÌùóçQ…Ë—¿L6H‘àØ½Íé3§¯µß?doïöÐÝE§Ïœ[¨Ô@LÄÆ¹M¢ÖK@&aãü6ûoÿ1&½ÁßúžïçúÒ¯Óiµ±Ærpù’ÄHû>Zç¿oB7ÖÒ¿ÒÝh“E!¥=ZÀ‡+$ö)ùá`v¹…€÷ìß&=xƒlï&qû5àM@1Q›‡?ŒË±±åÌÆòÚÿó÷,ß‚‰?²$ओ58œƒÜAZIqÌUÉCÇGµÝµâš$¿ýmü’)Þ)@±VÁxùµf¹2SÀeSÖ§«+Nè08ŽŒ€˜@7çP 99.¤w‹"˜PSEÅäs êðC÷‰FòËšu¯£û1ä\‘}S_iK_d%èS°¼ÿIâ®æ@²íz¼ãä´NÇ>"J©¡vXš@X•,ÍP”<ÏI’˜'ž|’Ó§N ß7ÆpñâÅ©š&ç—¿r™wßÅZ;è³fX»ÝáÝwÞÂ9ÏÆF—Ó§ï[êZ÷v÷Ø9µƒ÷žíím~ä!¢(š:‘µ¦X„óçïÇáå—_Æåc ýþ`¦3!Šcú‡‡ìïïaŒá‘G_Â)$ ï€¤ø=Å$7Ø~ôq|v‘Óü/@ ­N1†¸µA«s—Þ¦÷Ö¿bó‘:–1˜´ ;› ×^ßåoÓîn5S<*bB$Ýà+oï«£Ó13爺öq7Þ%ìÞ_öcŸ¸›‹—rãÕß$ïõÁÆÂÁk?C·o_úal÷±•ïï{¾ç)Ta£†ú#÷ÑÏá\×ÒËA1üÒ_þ5Îq:zœÃ,äE8DqÄOþäÍ‹/~CžgüØý(?ðßWäøÖ¶¶µ­mmk{_ôãØtÏßêÊ,LvGme™$a —`He" "à4Úø-‚^D†UÇꌇÇ4Šñ‚ =à9ƒ1‚ )9Æ+înµû°v¿`/ÖÅÃ"ΠE’²GàÜŒ5µ#d쥄è99¢`$/’Ñ 7¬Ñbc®Ä6Ç‹ÃBÉ*ž*!º`¿« “± Š Ät£!V$MøavAyMãsjØ«roÃ6Ÿà( W’̘¹G²æxWŽÍO´Ì=•™Bµ t š/2/ÊyÙétÆZÖZ[ë¼sÎä…ÁÉ—eÙÜ›kµ;<öćxóõË<øÐãc—jøÌe1x|Hâ8®i— ™£1œ>uŠ(ŽI³ïG™<ñÀCðúå/óÀ'­…¯ÓkŽöÜÚEÉ)=—éÁmn¾þY¶ÿ ìÁI«ÒÉO?ñƒì$›¼óâÏãíÎñ=<áÒ…_ú³›tΟáì¥.Z¨O¨P^FÓÍÞ€Ëö>õü£DÖÔÈ¢UîÏ;Ô9÷dìîƒS˜QéÃÕ+_bë‘ÿˆS>äðÎïÁÎsÐ>Ï­+ÿŸ°G¸¿W^ùSò<㡇bgçCa||å Ï1>BzæI²âW ’+­ BÖ-"èÅúãœã'~âÇùÌg¾•7Þx“ïýÞ›ïþîïZƒóµ­mmk[ÛÚfôå”2R’R«áý±ºç»D?†¬Z)ê%½ÑaÄz *ÌÝc¤©ªµhYïÀx2v•x®êC¶¡¶9$º£©w%‡A*z­pfN*ºTye'˜mËÖ“é ôésUÑJñÊD&‡Œõ‹ösÉ r ™ÅølLHe5–œƒ•M7Æ!&8$L1År§ä¹ÇyE ¸Bv+Ë”GêK nC=;Š%'€þઑ˜Roc2ƒÄȸ"Om£…ûžb>Æ)+G˜¿«×Åk£¯°qM[йHw ú^þâË<ýôÓ´Û-D„Û»·¹ñÞ r7ÒèVÆÈîî.Þ{ƒA3ƒû„ÅqÂchEÐ1H$IB¯×ã7ß΃1g#œ9s–vÓÁ€>ûYzèÎ;xS§œv<öä’ãBð>G÷÷Qk¹yý ‡½[ ªãþOþïÉ DÆÙˆV¿ƒ˜}ÒÞW8¸þyÎú?O‘¨GÒÛtÚŽ¤•/ý^†ù̇¸ï.9†>á™8ð³ÛçOÿì˜ߊyì±sc³õNÉ”ÃÞu²h‡xëQtoŸzöönp°A€ªáÒó›ö©MàjŸùU0)™¿N®BœPð/~ô©PúÑ%ƒÎ?ò=I§EšBß O<ù çqñ}™¯¬Aªœ:µÃþáïò#?ò£üÂ/üƒ¯k[Ûߢ|p'¬çݽ;×¶¶ê~Tˆ– ì6‘u™"ýÖ×HBH˜Ý­¨G¬Á.º¨€ñàC]¯ ÓÛ1#@S–Ü‹„é™,9uEFÌߥžm +#ÒaG82>€®Ü*‚C}ˆ3‹œ XóÕ›¢L%u{(i6ö{ñ³®Adšwp¨Öñ"…ToSqi˜ênˆ[Ë ]ðCMvƒ/^‚5Bb…(âHˆ"Åňÿ¶`ŒEkk"¼÷¤¹#ϵ¤NÉ2O¯ŸÑïç˜Ü“zEÕ€‰A*C6tPH…ó Î˱‡ü˜Ö± ›xè~‹«h<‡Ô¡ãcxìè‘fþQFíäš%K„Ç«–©HNJ~”ãU'dRŠÏuÚmò<þíàà€/½ò2O<ù$Ýn—­M®¾{•¯¾õUò,Ž@õøB@~¿Ïé3§Ško ÿÖ:’f5ñÉ;S§·9<ÐJú‡‡ô{‡C5ïCÇùó÷³µ¹ Àa¯Ç¾øEnß¼‰óï=ýÞ!ÝNgʩԸM¬‰mp¤¨ÇûM÷ØÝ=ÿ<ð Ÿn}àK|õõ·0Æòêkïñ÷?F×Þàö•IûÌsˆÄŒçMôÛ¨†©ùªU‰n¾Hüöo’힃A—ÓɃ\ýsË×78}—ÍÆ+‡{‡ì½}“­Xùä7>:1ŽëÛÆûŒ4=€­G‰Ò8èqóÚW‘¿‹{±%íÜUàrÅÑxúéÞ-œÚí³ÌSíž9öÿîß„þ>|Ó÷Ã÷ýu¼‡Oþð/‘î§üÇíüí¿ñi²ÜqøëFr‡ÿÐOá>üß‘º ù# åÿäŸü#œË(eX\ÿFWÜ Ôÿ©YÎóh̺²® ÆO]UüH{VæG–>ÇêðožŠÒ´„•®œGóK¸&]j/VOªÚ´RLì7õhíº\Ë7‰“é1žWç<1u…ãÈÔ}HíˆÕh§UÅ4ƒÒªÇÖUç^Ó;qªû7=êPZi 5ýí8ÆÌq§‚Î?ÎÒ)î“©Úc5Ã"Ñ =i½ûòÛÒp2¯Ífqø5¨Ñ™Û…1Ã…FVì\AÅŒR…aHV6•ÇWT\AÈS: ¢‘“@î “DK8Ù2â21ì¨Cp1Lå¨f1LÎɘž}]uô0°””jƒbÄHbC;âXHb¡Ó’l$DÆcŒb#‡µJd!Š,±"…”aUÔ ÎA?uô»{‡ìî{=½'/ÀXŽ :Ä*çI,ÐÊPz ×Gq«žª ÚØÖP&÷…R‘Ñމʘ‡mu3z´aw¬Ñ6©ÿ›4mWµp>Ê87þø ¾*/ 3D:­VBšöIZ-Pewo—W_ýO<ñÝ ì1ÄÀ•+WðΣÎSÛU•ÝÛ·ùä'?¨/qãל-R»ù»â§Lµ].\8Ï‹ŸýÝn›’KOUQï.]ºÀ#<Š1–ÞÁ/¿ü ׯ]/¢æ0è÷iµb¶¶7)I2eÞ£SÀø”ê€N —âÒû×¹øüóàgR½sü¯¿÷Ï8ûÌ·^Û㻞ü 7Ø}ç5Îêï¡>—V;yØe~‹`sq CôÞŸÒzóWÈ¿ú*·¾”l;ÏÛcdYÌ«Wn±ÿÊuØêÐí´‰Qž~p‹‹ºX[}6¬/|ž’©²uß3¼ýkäùßâÒŸùýé‹N¬>¿ÆÁ{—I¶¿k(ëXã3*®C¦Çñ” cx~g ©eæû‚ nàFýä5DϳáaÊâ’Î/1—g©ã*YæY®+<ÃVøÀ ÇÓÔÖsoàp‘•ÌÈ9€©ò•å)—íóññ=’@Õæ¾Õ¡ÇzxZçLØ—Œßþ|½{Y’Jr©Ð°¨iú€Ö7ÕfL\sS21†u|Þ$>å;бK•šËÔðÓ™Uf8…&?‹N©áV\ì䕨Îqó2@µþÙ8ùýéÀŠ.?N&îsyøY¯Ù>w‰—·ôÜÐe!ÜìḈÓvεêœÛçbš09†ôÉØ–L‘yÉÔT»K8}‘Ó›¦6ó:g5¯¦fËdÍ¥LÐ)G¢Æ6¶ÀŸ…œšj ÆÂ5™Bs»ÔÐS5x¯Ø²N¾¼s§½$*Ó†ÑS”dºÞ#ªòñ¦Gê³7D'ÆŸÔúdŠn1œ¥ÒiçeÝ ˆø¢¾ 9IlØèÄ´cC+QÚ‰¥Ó6´ÚB+’D±V‰ãð32‚±Bl$ð! ôþx§ô3Ã~ϲۅ›mØ=°ìæ¤9¤Î:!Í…Aîqy ޳©9¿t8 Ë»µŒ¥ ÛÅÌüÍsTÚýÇë`»Ã~=1#÷°G4ÓK®Ì~$´Z-î?wŽ·Þ~—(Š €ã¹yó/¿œó‘¯ûív›K/qý½ëܼy³ÈŽ à¦×; Ýnóàƒ‹Ä,;{î,ÖXz‡=Ú­vð=5å››\¸p‘(Š ù¾Èõëïá}pzïÙßßçÒ¥‹loïœÜEjÎ Ý'¾ÿ›°ú&ôÃ…æ7^y…—{7¹øŠã?xøã<}ö4W~û`û©¿&j®ý^¤YÅ¿ó´ßùU²w.󅗅ן¢ûØG9µsŠ$±Üw_—,W"kc…(–K(FNŸœf³•iF¯w‹èþo„ì ðýú‹ïÈW9ÜpêÒ#GŸ0?öwÀ9úí³äY`lÿ•¿û}ô3Ogs“^ ©³è§ÿ5Îyâ‡! ýÄmï;ñ¼é»“˜­÷ls¥=>ˆcó^‘6]Ûsl­í$WvXÅ]v‘èR•…ÖN™çÓ8âZ¥K€d©é¶p@”©¦ª%ö.Óû˨‘&í eÑA_xm‘ªã*lôŠÅXÁ‹ƒ±#‚÷¯ŠW¦ŠšVÑ‚œlfwÈr]P ¾Nþ¬xŠÆË›+õÍCd*Úâoœ õÛ37yÚüÐxWÀtÇ(ͽ¨—Ú–QóQj»[K7VZmèDJ«íév„N[h·…VËÐiACdÀXÅR¦î+VÆÆÆÆ‰·A+Ixúé§øÜç^ž kŠ/²ƒ”~¿OY^xá³Ü¼y?t$xz½Þ;žxâ1¢ÈžØ5zuî¿Ãýû˰ÿÿY)oÁ?üýßgðî.?þ±oæÓ=ŒÛ½Jÿæ[œ>ýõÉæê½óû´ßùUòw¯ðòç3¾xøq䩿ijϘ¤e I"’dZrtéÇsû"Wþìÿ`ïÆø-áÒsß{¿Ûà`(„6}n^ý#6þϼýÒ~Ž4ððæ#§.epóË¿…Ë2Z>Cvñ9¼*_xáM|ž³ñà)¶!”ò¬mmk[ÛÚÖ¶¶rôúrž•EäÙŽ°ž»³—ÇÖ©SO³Í‹Ž*ü¬ð%r0-€¹5£„ó‰MH?6ï]…Ù½®¨äîEvK¸5J÷ĸ"bì‹Í¿!²B›R”¢ÀZî¼â<zy†W[ø)Æ+°F|èÕd|™Y±¶øÐ‰ ‚¢ía›µâFF~ i«H>SLFÑØŽ+?$Ú3Eòý¨B=dpîˆÄˆbOÛB”xbë‰Ò²†N±Ù²t;$`£þ;Å«Ãçuï‹ÅÄ1-k±m°ÆGÐívŽÃTèçÂAß³à98ÌhEB?U©’“e¶ˆïû‚þoò>˾¬þ>>§ÌhJÔ|w2¢®µ®³éß'¯EoëÝ^0…£PÕ9sš=ý4/¾ð›ÄI‚HX;nß¾ÅïüÎï ë¼Ë´ö4M¹uëçÏ_à©§ž\Y¦q9'…páâ®^½Æ{ï½ÇFw‹(²¨*½^?ù“?Eu<ýÞûðÞÍ›×yþùoàâÅ‹¸Ö¹îç›Ãþ.ª>Ïð.å8ËOä¢[¯ñê„Ê&§¿þç­>ˆÔßxö;ÿ2€ó—2¾Ð{yêÛyî3Ïpßùö±>­l÷A®_þœ~ú?!Ή#Zq ‡ÃõÔûŸÈóéá½ý›ì] ³õ Îm?Q¤ZmÄÏ÷þ ‡NHs¤pÁG¿õ‡p*!½=…Ü ÷?ÿݓæEŠû:À²¶µ­mmk[Ûê}¹´³ñžei*þnŠì!!Ú‡@UCØR¦x3Šš–E”AG\‹úä"ÚLÈ_àTªDb*˜"baÔaŒ§%†vKˆbC—ZÕŽA.ä¹'SpNpNÈ}©½ ˆ…܇P{ˆ´«÷¨w!Yˆæ Äj†P›-„ˆlÖ$\‹ˆcC’Xº˜î†¡ÝµtÛ¶H‰÷8i¦ÜÚWnïyzý’œ,#ËÒBÛ 6ÂDQ‘Æ/Åæ»¨ÔR* ŒÊü  × ©îÐæÖŠ‘«Åá¾h? DzCR=¥ëKQnñäÞ ë¦UGÙÕn4c¿`•’UÖD#•,ðpŒ¨8—(˜‚©:6BYÚ±‡#¾Üha²GÄD´!±&ø x9žœœ,÷ˆ8¢B/=Ž ­Ä°±!dΆ°ƒ^O¹½»{–Û­ˆ½ƒ”ýƒœAêÉ}h‡0,Íùî¼”Dwþ¦bœNUÈ.ÕÚö)‡Ç8H—š¹Y‚~?Ñú2t‹B•cbª›él*³ Æôâ½ ù eó¬ÓU•‡|€,Ëxåå/rpp@»Ó )ï{ø1óƒƒxàK|êSÏÓétïXŠp«•ðÑg?ÂK/}ž·Þ|›8Nh·Û…öyp"P8úý{{û¨:žþy>úÑy¸}~) ßBÿß!»õYvÀÀ%¤¹òuñ}ˆèܳÜwê#D›„Â]°æ½pù׈ß{/~ÞóùÞ³˜§¾g?óQ.\ìûƒù¡ïüµbÝ4ì]þº|3îú“ï½Nš08¼Eæ…4·d¹è­ÓŸaçÙ“l•à|µ±òÅwúüÂÞ Ÿ+^…ÜS¼”܃W!óàŠ¿:ð.|®ž¹z2¿Fèk[ÛÚÖ¶¶µ-¿»í…eÖTgŦÓéjå°t^Rõ͘'Áˆ"…>o‰Õ€·¬ /4ÉMI$6ÅŠUÞAŽeEV±C’%SuC ”C}r,ÐŽa£eiµ í¶€Q†A®¤¹gCš ƒL iîÉU€’ñ>œWKÂWÀ‡Å!6¦ø)DF$0„KY#m±Öx’Dhµ…ÍMakÓ²±eÙØˆ‰ 0¯ÐÏàæ.\¿í¹¹›q{_Ùc@ÏçAÉÛÆZláÐàå% ×"º]ÆšqŽ-]#“I×£˜¼”Þ6zÃñà%7‰¢#¹N—’,N°H® =šŒ›Â¹#Õ€²äÞ«G]†Ð.”Nˆœ‚¦¹ lóâ1¢D&8?:-è´ íb뉌 /quX ¢h1†D…Š Ù–m²ltÆ:Jï‹ÅGÐVÁaÉ}Øè´ C+ ¬ñV4h«2ÈtÈ„ï5¤³‰*-¯ÅøAj©Lb©©c€zŒœ)²ÏHæO§ ú(aDyUu¸ÝM» ãä‚ €éIOäHZŽ´ì>þøãìlorùòÞzû]z½ëaœκ4KñÎqîÜ9>ò‘¯ã©§ž$Žã#ÌU.´Óéð‰ç>ι³ç¸ü•+\»v ç<Ö|ÁÖž¦Z­6/]ä©'Ÿà.<8^ßûSÞË? ñ#˜SOl>J·ûñæCˆ´ §¨/|pGk»ƒÔðâk;oļ~ž àüҥiõùPšRqì¾þ«ôÜuhÝtFZ&ÚxˆîÖcÄc’Sa¥:²V»ßw ?ðÃ×n̬™O*ÿÞ²Á:i?õ[sÓ¿&m]ù¼¶µ­mmGXã‹ @¶¥Nõ(h`Š_„"^µ©"¶HIw¡†Ñ©â|(–sDS+b#–‹¬(‰UÚ±¡@'ñt[JÒl,¨±f«p˜Ê^Orrïñ¹Gˆ°&Dr¼*äõy碄â«|ÌZcH"~íHöË8"<6öĉa£Ñí Ý®¡Ý( 8М ¢`EH"K;NèF9ûmOæ<Þ ^ÅãðäÔôÞ‚¢Bø[‡bdÔhJ€gdHôfAøJí¼Ž@~Éï^ꔫ/ ÔIphh¸†Ð~L,,Aì½Ì} ß Ý+…v½ºBZÉaÕcÄV¨Ô‘)˜ÚãrB$ÒbÅÙ­Ò¶àÕãö­[ìЋÇ1§wN±µ¹Ewc#89´žµv’ê¡äWœ'$3KxM+Îc-<ú(÷Ÿ?ÏÁÞ>»»»öƒìš(lmo²¹¹ÍæÖI5Fø'Ý®GçÛOü0‹ßJÜyÓÚAìUbDUG“?x•óGIœ*žï IDAT‡üì'ø³wîøS|ý·~”ûîëL1úë„C{‘ñÐø® ~æÙŸÂ n a“L²ƒ‰·©B½,>kFíÙ Ã_ÿÌÇÓjE¢ØI˜q#u>AY©#îze™U¦‰0[Þ-MË~nÙïËœc¿¿¬”®¿5Iv\·^-#³ö¾sìý^åýÛkÖÚëzâÍYlÛ£;? —xÌTdT}HS×Ë´eŠxÁ~ÞNb:±à4'Ï…4OɤÎ!.rv C±­"§^PŒ .ŠŠÈ¶5´bKÒŽ‰;–°_2 2èõ!Ùsˆ¼óø<+Òf# vDÀÆ- Q ^)IØÒN íâg+Z‰` X"´0ÖaZ­ˆVËÐJ„8&DÃMY³E:C«%lt-[1‡ÐÏBÔ?Ë„SÒTéŠr”T[F^µHÙ/@[¹!JÞHÉ’^Hk $•~ÕqÑ9 ØG™:_D]DŒ/2®uXPÐ[©ÇyÙõHѦF‹ÅéòÖ(‘Mˆâ˜8¢(Ñ©ó8ç‚.¯”ã¥Ð5„V Ý6t»†¶a³cI‹!¶–ÄzÚ±¡Ó6E?çJlŠÒú"£ÀˆÅ•µýÅmz“{œúàñ‚’ãÕ†B‡<ì·½÷8çA2"6ê!wŠ7Ê#ð…ОÓq˜|´‡….±/Bî(¸Å]uÕpe—c­a{k“ÍÍBéPpc€¹Ža_'áÔsX÷0§K»ÅÑi%´[g8söôtB’e êç(,Ïï÷E£­¶}Û>_ùbÞp B;:Û2éÈêv[|ó·|î›þ-ÄFÄ‘­èŸàxV%Ù|6iyGµµó±Y&H—›ê«, ÝŽ_ì³cçÒÕ©qVBÒºÒñÇ›G+³zHËF”¯ùU=:½nhÍ*-Úèô˜v èÄ5HíÚ$2Û‘P«¯:5~ªÝªÕ¯ëÛÔèž”ˆjX'¥È¶T±õ4:B…‰$è›Þ_ËÌ5pѱ?Ù¹Òð|™üü+¦è\á” Þ„Ò4±´ŽõuÓX÷3Tí¦ºfVûé¸ëgÒSͦŽ}Õå‚“å LNkÎòœU©P™÷•9?=žep¡ØmYb¼ê±׎ñpÑôš#SûIñÕY®©æÅ´Iþ¯ÉŸ<öÞœ¦¸c]æ=̵æ32Þ±ÞùÓrI$Vñ±±mŠ,bÒÓȳµiØÞŒpÞ’¦†Ã" =J=i4ZCž©r,ñ‚)è‘ Qd 66$I¨Eït¡Ý5DídÐ> 3xÒCGÖÏɽAU°.\kl…86:†N;¦Ó†$†Ä(I¬´c¡Õ²tÛB'±t[Ðn…:üÈ”äqâq$60¸ÇQ𦈮zb³¤%lt éV›~¶ð¾§ß÷ôúÊþ¡ÃJŽQ¨"¤ÃÕãKz±ÊbZ’Ö©ŽÒØŽäͤXGeel»JÓfÆj×Ë4mÑÀ^.äÃk@Ýi6BÖƒ1+DÖŽHÚÂöfD§c°‘Î).ÏH3)jj=Hàˆb¥‡¶ßغ]ºcãˆmpª´¢A_\8O,¡V_M¨Ù5jpŒ´ê‡YΣœ†R§‚óBž+ƒÌ1è;ÒÁ€,Ëã‰"!uÇ‚OÁ[°òÊÞdXë]‚<—P™àYŽ žf.esÙqŽ{Û*‰H­²Ý½x«µ×z²u¹Nù^éEöu_µQ„£™Ãï×|YN1¶™lŒW.VÓûiÑ«0y. Ö߇Á”E6zÇqûS9ËMŸE÷Ôs“VïV­Í›T¦!².ˆ«¾Vl3]÷ìÚîÐ>ËÈÐ!s#è²Äçf/‡CB¦cûþ’aÝÁCd•8²tºÂƶ Þ¦1I ƒ\dB–åx¯£ ­ Æ3ã-¥“@·¥t[ÐiÃFǰÙ:]¡Ý-ØÓ-D6Ô’´r:ñ€–íK >Çi‚Ï¥¨=6tcËf;fk#¢Û ©Ò‘uÄÚ‰§+¶Ðm+ítZ!Ù¢ åÀ'$ÂÄ ¶¨÷êÉ½ÒÆ‡ïEЊ…¼-8gÈóý ˜8Z»yHµ79‡B_IŽ’(ËàU‚ÜÜÐ9òiüíǼC¢‚—ÞÒȹ^ö½+Š5¤¦«¢EXY º>òDÀ¸µÀ²5ˆÍÂF×pú´¥Û5!òŒÅ9%w¦…ZÈàG°$±¡Ó‰ØìX6º–vËÄIàˆ­@n!C\ŒI‹’¿kD®±ÜÈÁ3 Jb:)òÓóä™'¤¤ƒ”~o€Ï°ˆ¢(8^Œ…ÈrúB ½Q yP°æHzOKl»îÙån½â¯m½YÛÚÖ¶¶µ­mmÆ:èÚD°¾ÄY…Æ0‡Ì?w QdS"†lß%P‘¨…ºë¨Hù6O¦f’8ÁiQ[­#š+ã ÆƒQUÀr"tZB·#t»1–V+"i ¦NŽKN¬}éÓ2Ú6EòœÜ»"mH°$©.kèÆ!=¶Š5žvìiGJ'6tC»eh'„Æ•{Wõclæáþ âC-w$žÜx"õL‹ÁcQopr9ÊA_Øï:±¡ ·ŒbTÁ硆^=N£PÛ-Q¸!ãºAt)Î!¡]JpètÜÉÔx(狟E*{Q;.Å+22Ì>ˆlBd¡^d$üJL(ˆŒÒj9ã+»‘@žgC y)¢¾hOS”2@’XÚmØh[:-!I| ˜ ÝQA&Wò-{·`Æ/@z„à­Á !ýªÐÖöêÐ" DÔ "BùDd Qœ™ ΕH!·‚qÙ‚÷߇¼ycBB´-Ú[ÑB pÔä¢M@½‰B&R)ëæpÓä­&þ1$,¥cgmk[ÛÚÖ¶¶µ­mmkû`Û­AΡ)ÇMšŠŠÔicdÐE -òâ{¦  3!Õ< TX«ýÛ i–cÅãÕc Q\@*1ݦø/R0p›DÐŽ‘ì¶Ðí„è(1X Nç+žD<رÑvø ÁzÃabȳ K®Þ“DJ'†¶Milí‰DÄxâÈÑ6J;†N¬´­Ò6J"Bd…È(VB:µón t‰„ºgDðêqÞc%DlÕP0{< Š'wBžDØH m+¡.žJŽwˆÏÉœ'ó‡EEqjðD¨‚9_jÖ ûHbKPD<ªRÔnŽÆÀ0û¡r¦dtÇc4²¢[ íØÐjYÚ­ˆv‘Ć(’Àp¯‚¬ì AË\§VÉ«©~v^qçÔç)+h8è„óëømÑbï»±Áœd€š} ?ò ê3YäÞç›fUåáGŸ)˜îMÀ[ Ït¾Oc¥ïÍ«Mé½a|žôÐ#j’—œ)ö²¹Ü^‹^ôŒïi™AÕ°néÜ«/ÆT#ÁXýqt鮜wó2EÂ¥«ö©.8÷µÙý§s>¼*Iœ˪´(ÃØd»,¸vÌê*]nnÍOzÔö©Ž[iè§ oÁ"ê÷6y±2"ÉÖšsVçåÄa^ŽNziÔEºâ±¦Ù"šHsUµ-Õ±ÇÈü±6¿#]U¦ïñ¢3·K¤¸×Ë4-·Ó—%69ãÀm}Jq¬ fl…Ƙ¡L”1&ЈK¨’VÈÍÔQd €¯äâ‹ø¥CDðÖÙç,&B-ˆe˜ú™QDÒøÀü]F'c#˜ÈwÚQÄF+¡¿ ƒ†Wª8./¥€BÚt,B I$$qÐ5ï&–vbi'Ò]Ö Ñ`ï )/ï Þ<[Jl²0¥ŒGZ—Æš¡l^®cB–¶`<  ‘…v¶º©ÒÏ„ÜòÜzï:HÓœLQ]"º.‡1­ô‚M_Ѱâ+Œ%“º€1‘Põnp$±¥Û±tZ­$0§w .€VT¤žRCêë æêàØ‰!N I,$­;̶ ÝÆGÆš"zï°øð> Ãt}£¡Ï¡ Œ:Èpíôà ¾p0娨U¾çqyÈpP'¨ä…ÇÀ†4þ‚/À)äNÈœÁ“£8r︜̕¤yUq³"½^|í²0,ƒXÐTW|™‡8eæÊ¤+ƒøŠ:ƒá9qB£<;äöka=y_¹ßãè¨{òÍÛÉŠç\mϼ¶µ­íŽ-²ÂçVñ2­mmk»g¶2ïÛDZb VªßÏDË4ƒ”¹æ+™™Ð5¤ýŽég" ¢ê p°‰1ñŠ‘.KFÞR1Dñ)8 ú_å9TŠãhI àÐ[‹OˆÁ¨! –aÄÔj÷š)Þj`I—P‡GB½x·¹ƒAêISOš;\d²ÔçxêŸQO$ õ·[QDÛZÖÝm :ï1¡.\¼ÄÜ.\‡ê°FXÐM Š÷Èy:SH‘ ¡æÞRî-¾ˆ¾ H°–È@§ÝfkÃÐ;lq˜{ú™fÐO ½C¥×÷ôúžÃ¾£ŸzÒLɲÀFnTm¸¶¢`^L“BJMMVŽêê„„¨·C·ÑíD$‰ÒмµfþFêžâ8%ÑíNÈ+û³Ñ~7š»=¯èúÉ¢.ó³,›v›#mm*ò0%`÷^Šúf†5ÎÞ‡:æý»¹3g5ZdÔ[ ‘@^÷È*-W¤ˆ» åÇ»-|,Ž”Ø(ЏpMNYŒ ¥\µ­B}wH—|Á‚^FjUç€4E>û¹×˜K®ÈMwÓ5´Û°Ým“:%sBšC?ƒþözÊÞ¾cï gÿ ã ïèz©'Ë!ÏÁ©úÜ"¨„$qFö}‘u]:fÂøŠ¢Bë]ÂuбD‰ÐnZ- õô¢¨ÏÂñÇÀt@ldH¢„( ÚåÖ–}Öt §D™q`)œ¾p:ÇZFË ð;LI‘ª.Á!À«Eº¿*8"è¥c"D¸ˆˆ#0\™‡!•p,«˜ÀäŸ9¡Ÿ†l csá ꢈàØÎ0x¦õ4E¾ E6EVG^t]¸7CÔ.ÏéÜÆ¹æg€–þ )ÇǤéøï³zCèuknéû­?{…O=ó8qdÖOøµ­mmk[ÛÚÖvWM&77S{§Ê–G‚BÔÿû'¯ðÀæiÚI‘-Ѝ¥ÝÙ&ioüGLí|G¿Ë؃t—ÃÞÍå\Ý£ù†õ0u¶<ò‚‘UD2²thŽU9e43cOuæö|q?ÁÓŠ‹6bPõX±¨ÔaZtõt™Ç[)âÃA¾Ê‚ÅãËÏŽåTðNð>È£C®Jf=Iؾ ‘ðÌÍC£e%‹:y‡‹0C›÷°2X|H‹=¹ÍˆøÈãDñÖ‡Llçt´#1$&°ÂG…À{H«ñXèÕ¢pguÌ»œ ­Ä–…dkP5¨TB}ºŽ}’¬ÅF0Æ`,´Ôàrç!ËàTªô…½ËÞ¾eÿ@é*ý¾#M=YY® <¤NhNîâ™ÚJÁ(‡|ÔbkÅ[)5Ä­m›¼7JÛñ·õ’™?EšoØÞ9µétãFó¯æq«áDûC’hIÛÐUI:«‚Nt¢èD':ñºÆ k«ÖA#säQÆzB+¨„µœ÷+wwÁž;WYôØ_6X“VGŒaiÖÏOükê«©Ù:™ËÈ\†V°çÎR·5<ç,v€ÔUù×·žÁ[îD½¶²}§6ó_4B.ȆOÒ–!ØÔR½L8ÙŒfU/MÀNn¤qC³ºÞ’PW8vª4¡‚,/Q1xïq^/²,Ñd\%”ïÖ y9NZ‚R¼AY‚˜˜R|§{8Œt{§<ÖYT"xUµ"!Pè“$TâÓ>M¬x—}ÓåPÄNxI@9Dt)%„ûP5M"ÖJLèo ð´ø•+) í"üw¥q±RkPˆQTS¨T]•ð󈊡§ j5¡Ñpä¹§Ñ$P³Bf¨;‹õ*(Âg‚³ŠÜ6Æ zwwJW5(´k)þJÐÚEº¼F«ÐÃ/J…£Ø[ïƒÅ›Í£S»WøD‘ÄJ¡ÐFðt ŒŽ(6V»µŠ~-I*/‚-ÚÊ>ùØ"€_€b…—ÖìŸmБï¼sxœ É™R\LI‹àÏî­s6AOšjœÄÞûª¢«šÒÝíɼÇ5ïBû€WQ¡!Î]TÏ7¸ÔŠä€´\;ªMA²™¦|)—¾j¹/Ófí•§|) ½åºëô+v¢èD':щN¼r!ðÂ:Eo%0n±aÙhœà]Bî‹b‰Âå°¶/gÕ:ÇPT®îq\öÀÅôV{Ù*ÙšUµUôå}Áù pÒÀINæ,uWg}c=«×¬æ“—Š[ÿé7¨Ú*^oÿ „¶…ç Ýi)Á¨—±Ì¾x´9žÌ- ¼jˆEwDZI3Ë-°J‹)¥0&A© J­Ü{…ó/‚Ga´!IL’P©THM‚N ¢têò6(æJ¡ó°? ʸà=®CÕ^«¢Î-(Ý-#VbQî±ÀcªAk!1*ì;áõ¢Ê--ìÐûl ìËW‘/eç~Ø‚‰ßcZ#–×½jR2šÃKöQÀ¨Lð¼2ˆh” ôëÔ@5é*lÅ;M–Aî…†…Z]V¨gY¡a=FFÖhШ¼X”JHTÓª¬Ø-åDÀú@+7@VX–yG&.ôæ£HLBb‚xš‡žþÄkR ýßHTˆ7.´!D[µ$z¦;%('äÊ‘:%¡g=Rã“Aï@GC'­I(Õ¶…r~l5ð^•`˜–+®å¥0 Juw]ï4Ôþ“„î 탘œ#$œHÔ‘wqlu{ÂOšÔëò ^¤}Úk/µ­^Ï…×¢ü­T¼._‡¨¯yŠ|`E¸Í&ÝtŸJš˜Î¢¡èD':щN¼ºø\A½fIMŠs‚wa=m ëYÛGc‹ñF«F Vô¯`\÷8¬²m0R“b´aëž­xnýsôåx³‘pÎòÇÅdÚôÝ_s^[õGVýñ×x—#"dÖ‘w?ÁŽ»FoOWgåЉNt¢èD'^½uA@Ûæ‚õ*ˆiÇ¥§wBÆõS»X†_µ ¬ÏÖ³²¶ú}ôgýdyÆv£¶ã´ýÿ‰?<ÿ ç-<Æz¾Af3Š4I7XÒ&I‚"´Â:÷Úé!%ƒ×ÏCꬷô´¾<@þb²CðüÛ*€ªz ‘!-}³±J¨EȽ‡ÜâÅâ½ Jð2h’4%©ht𢵕HëÉDÀå¤&ø ;¯ªÂ¢ÈS!Í=IêƒÏ¶ƒj QRpÖ@›VmJÅå¢åX±¨'b2Ñ}ÇDЙû¢ëÚ’(>»ÀÙGÚ´#Lj/*xƒÖ`¸RDêì:ª¬—`.*ÓSňˆÂÇ’¶x…Ï‚2¾Ña ´-‚ñŠC¢ÒðÝ…$„‰âtâƒ_¹ArƒÆ‚耹Á˜èg¯ƒ{QÓ ôð(‚çBbD‰ ”'M<•T¨T¡šÜÓp,¹ÍAr´JªèîJéª*>Pì5QMžÈ`Eb¢2½áâïEÀ‹G"m½L\7ÚD!ºØ"@¶ °›+ÄÏâx»»8ɵJ Á.=&I@û rŸhúñU°‚s* A¯ ‰ÂëÀãÐQe¾ røVÝŨEÐbzWþã—ªl¤7%õÔ˺uÈëTÉo¶©–”ÃÆ÷cÉsÏrÏÝ Ë¿9j4ï<è ð-Ž™"m€>Ï-ÜÓ÷سü»B¤³•^?ø| íÛißö¦«ÿuϲâñëÙzæ *=á5›Á“¿{‡®ù(ÕJ%2?<£'½“gKwWõEŸÇoûÛpÀL:õÿ»…ÇE]ľûîË{ìñ†ØŸz½ÎgœÁùçŸÿŠmóàá‡æƒüàËÚÎÀÀŸýìg9ï¼ó^Öv>ÿùÏóñœ-¶Ø¢³òíD':щ7xˆD½¯X!WQs¬Xã¶h_Üj5ÌÂ-÷9kkòjyÌ6xfý3Ü·ä>Þ6ñmœ‘ü §üæ“Ô|-0eh]öieøØÉg°nízöÞkOþéSÃ9KÉD~ŸºPõm|RͯWv} ñ«raÙÚôo(Ñ+$ЬC5RÑ1bÛYÁ9Áyý¦…F–Ó_¯Sodd¹Å  *˜$EWª˜J‚N«@‡¹u 4}5ÖõÕé«e 4,¹£¯áè¯çôÕ,ëj–uý޵ýžþš£¿üγr«°VŠO* ] ªˆ®"ªŠèQ ¢ ¢ V ‡—`Óe½'Gæ ë¨çB=÷Ô3¡žC#'¾¦¨[MÃ)êNÓȵ¼– ý¹g}ͱf cm-cm=|_WsôÕ=} )¿PË Vúëžþš0PV‘YM–‡¾ñºµ4rÍ,¹Ïq6C|bQbc"!€aïs¬uHÆÆ7‚˜ŸËs$w8ëñ™Ãe–F=§>Pg` £¿?£¿/£ÀÒßopá8úk–þô }°®&¬­IøÞïY;àY¿^XÓ/¬îV®s¬\kY¹:ã…5 –¯ª³|Mƒ•}9këj0P‡þ†f ¡©åŠZ¦iØ„F^¡ž%Ôë†Z]1PSá3û-ëÖe¬^—³jMÆêÕuV­ÍX½.c™„QL IDAT]_ÆúKÝ3Ððd2«pÎà”ÁkÆê¹jÕívA_!~iÈôFbë„oø˜â‚Ýœä±híItP¬O“àHPIcHµ!I Z› \g4Zë ¨§£-] eÖ’Ùè¢ ¡Ä—wi½½´/õÒ¿Ú¤‡çƒ^Z·n-ãÇoÁïx'¼ãì½Ï>AÀÒ¹òK)#ÁÕÁ9X3HÌÒ:¼s‘è@ºWÞ,/¶Ó¼Û.f“s.ö[ ÿqõ¸Ú½T’?BÿƒÐÿ Iþ»ì½;3?‡)óþ…©ó>Ã6SeáWðÐ~µvH`µûî»3yòd&MšÄ¢E‹6p«V­àñÇg§vbòäÉL™2…Õ«W¿î‹ƒw½ë]ôõõ½*ÛþÃþÀŠ+Ú^;çœsÊã?òÈ#‡|ß‚ ¸êª«X¹r%Ç{lù»Ã?œF£ñ’öÇ9Ç7ÞøŠã²eËxøá‡ÈóœiÓ¦•sáöÛoßìíXk¹é¦›ÚYpÀ‹ÞŸ;Z­öŠå½÷ÞËÎ;ï̤I“xâ‰'6Lx5ì¹çžìºë®|ík_ V«±û뮻rá…¾¨Ï;ðÀ‡ýÝ‚ Øe—]˜6mZ9w/¼ðBvÝuWvß}÷Wåø;щNtâÕ 'àm(4^óÓŸ±~}ˆ¦–qç_üòúúûâšY†X†©K.ï_Î3kžá…¾XW_G-¯Q—:«ê«8ïîóXøÜBæl;‡ïþmj¦Æ@ÚOÚG¦²r‹EîS§œÀ#>Á?p46·ˆ›Û&v}9pxhl˜Õ´2^‡ù°W¾nµ Ÿº6µ¼¡”ò¤-ëRöÓ=¼®IÑwm"X9JÁµÔ„ª¶h È-xïhD›-ïÎY¼óàr¼¤¼6‡,ÄxŒ²í©$ÐH…®.uBµ*T+mÆD¤`>z’ûhå¥Ìðè F ·ƒ¦«u!Ц£uš4ÅëJ˯†¼Ó¡‚îNÍÜ9häŽÌú2ÙQÓ)ª¶Z…ý0JGz{{oz¨Ž‡J¼ó>ÒPÖZ¬ Yž@¡7ª^Ú«^…>ð.(šE xBj"…_‚×wîÖ®]K___y¾ûûûz{{ñÞ³bÅ ¶Új«r|V­ZÅ©§žÊŸÿügD„½öÚ‹;3#F”3{öl~÷»ß1bÄ>÷¹Ïqà 7pê©§r÷ÝwÓÝÝÍÿþßÿ››nº© x¯Y³†#F¦iy½¬^½šÞÞ^.¾øbòAøÙÕWrÔ±Ëã?Êÿ:ñD<5üæ×¿ä>ö1péÿ­·Þš®î.6ý¤žñç…w²Ó;?Ljq;}Ï@¶„[r×_Óf¾cìè£æÒK/¥···í-ýýý¼å-oáü#ÿñÿÁœ9s˜;w.J)’$AkMWW×]wp7Üp_øÂxä‘G1bŸýìgÙ~ûíùâ¿ÈâÅ‹7n'žx"¿øÅ/øÊW¾‚µ–ýöÛo}ë[üÃ?üS¦LáÄOä{ßû»ì² guÏ?ÿ<_øÂèïïgÚ´iœyæ™ÌŸ?Ÿ®®.Ò4eÏ=÷äÌ3ÏDkÍÇ>ö1öØcÎ:ë,þýßÿ‡~˜1cÆ”Ul=h'žx"õz¹sçrúé§³Ï>û°Ë.» ”â-oy §v÷Ýw_úÒ—ðÞóè£ò¡}¨ÜÆ6ÛlÃSO=ÅÍ7ߌ1†ƒ:ˆ¥K—rî¹çòðÃÓÝÝÍ™gžIš¦\pÁüò—¿äâ‹/æ‰'žà}ï{ÿöoÿÆG>ò~ñ‹_0sæLæÎ‹sŽ“O>™#Ž8‚‹.ºˆ«®º ­5‹-béÒ¥,X°€k®¹€k®¹†oûÛüñ\yå•zè¡ÜxãŒ7Žüàc˜1cÿöoÿÆÀÀG}4x çœs+W®d‡vàì³Ïæ”SNáðÃç·¿ý-—\r 7ß|3¿øÅ/8ì°Ã#'ÎK/½”‰'òðó`Á®½öZ´ÖœrÊ)xà\xá…\wÝuh­ùáˆRŠ+VpöÙgsÚi§ÑßßÏqÇÇ{ßû^ÞñŽwpöÙg³råJvÜqG>ÿùÏsÊ)§°lÙ2zzz˜8q"gu—\r ;ï¼3‹/æW¿ú'Ÿ|2S§N%Iþõ_ÿ•ÝwßsÏ=—ûî»jµÊg>óüqúúúøä'?I__x =ôPÛœÎó¼d×dY¶Á}mß}÷åöÛo/ç÷[lA£Ñ »»»<ƒdgœqøÀØk¯½xûÛßÎc=Æi§ÆI'ÄÑGÍ5×\Ã!‡›Þô&N?ýt=ôPfϞ̓>ÈsÏ=Ç>ûìÃܹs™;w.÷Üs³gÏî¬ø;щNüÕDn…<æÎÞ‡õ}5îZt}ozÓ,î¿ÿn¶ÝvÞuÔû­Âš{Øe˜"ó Ûà-;½…ö:a£Ÿ»ÿÖûqÊ›Nás¿û\hEmm©nù®ï<_>ïB®ÿÙ÷C먗¡—ƒCU•äÅU¿“Á ˶žÆ+¿Öõ«ÁVOÍê^Ó\À¤Z¼¤[³-Õåpl&‚XÁ+E.‚Í¢X›wñD V¡KКå/±j„¢(^ôE§&PÎsë±Î“å–¼ª0ÆcŒ†¢Ï:þ§ êèÚ@˜…NSXªé¦B|„PO÷./ç%€tT+'¢õ ´ÿв\ÑŸ)j8¾J"ÇhÔÑk]‡ÖyQš.6/…ˆ[ìu·ÁÌúP1 V\MezÕ³¼_ª•[µmOë¡{Á*• Ÿüä'ÛþN ³?Æ®¸â fÍšÅý×±víZ:è Ž=öXÞö¶·qÁð›ßü¦íÜi­ñÞóÑ~”³Ï>›‰'ò—¿ü…«¯¾šÿþïÿæºë®cÿý÷§··—»ï¾›Ë.» ­5×_=#GŽä»ßýn ÀùË_ÒÝÝÍW¾òüq®½öZFŽÙ¶ŸZkö߬µÜpà ì»ï¾T«Un¾ùf”RœqÆ,Z´ˆN8§Ÿ~€O}êSmÇ;oÞ<êõ:·Þz+J)žzê)”R<öØc¼õ­oe``€N8O<‘³Î:‹ãŽ;Ž+V0cÆ n¹å–r|•Rì»ï¾%]}çwfÆŒüüç?/ÿn—]vá™gžáË_þ2?ûÙϘ5k@YÝ/Î}qNµÖ¤iʇ?üa>øÁræ™gpÌ1ǰÕV[1uêTž|òIÎ?ÿ|’$áÁä’K.Ùä\ÐZóÌ3Ïðµ¯}|ä#xï9î¸ã¸ýöÛùÆ7¾ÁÏþsöØcÖ¯_ÏsÏ=ÇùçŸÏI'Ä.»ì¨Q£¸ùæ›8òÈ#9÷Üs™ÆYg…µ–iÓ¦ñïÿþïÜ}÷ݼóï¤V«ñᘟþô§\rÉ%<ÿüóüà?àä“OæàŠ+® I>þñ·Í½¡’޳gÏæŽ;î@DÊjþ`w­5_úÒ—èëëcÖ¬Y¤iŠ1†o~ó›sÌ1\ýõA”H)´Õ™÷¼ç=|ï{ß+‹ãÑGåøC¿ì²Ëxä‘GøáØYñw¢ø+ª [ãÜ:xÛTÒ”›n½™ßÞ~wÚ™CýªÕjËzjÓ5ß'W=ÉÕ^ªìâ&ÛŽéç}“ßÇèÊh–Ö–r˲[(„™7\Ç6q–sŽ/ýÇ¿0rdï+Þƒ>˜Å}Ð¥½ZÚzt/©’¶9¶ÍHÈð/©VTÚV©“ö*|ñºnú|‡j§bgž ôU@%)€yìËÕÊàÜ+r ©5(í0¨ ì-B’8*V!.,Èmî±¹ "g¦°ì¯\ +ëH§Öåœ&cct u·&#Dƒ(<àmP7tÎc#p-}ª£Ðœ”ç½H¨ Zè«A-+*Í…ª{©1߬ÎÞëJ£Q1Ñ%>ˆ¯ã¬ÂYÈœÿn(Wî‡óA Ë\° KªˆXò¬ Vw*ÚÛa¶p\Ê+Ð<ú¨˜ÍSðÚ&‰ŽÂ>œc%±Å‘ê¨[PE©Ðç+N!À¢häžšªà\C¢mèÝ6PÑ ZÇ*³/<ÍâM×AÑAkHш$‘= ØÜáŒE\ŽKH|Rž+)“H…ï€e0F•ìwOè…Á‡9jRFO{H$Á$ ã(-'Ìs/†"àŒ± ï¥9…#€da¸á¥ª†ù¾iý’ïêå:«×üAÓãí#²¡"~ \½0yêT¦MßF£Á= ï¢R©"ä+¥3f,o=àx„~y}3»ÛrŽŠ¿¥°Z†ÁàEðÎ⢞놼ñú¾~òܶd‹U[Uy¨HÓ”üÇòA7xB¾nûwQ…îaÙªPìC’$8P:j+Ìœ9“±cÇ2{ölf͚ť—^ÚÖG_€ ‚¦þÞ÷¾—©S§râ‰'â½çÇ?þqù·'œpóçϧR©ðØc•Ÿo­%MÓr{Ƽ÷å¶Çüùó™?>Ì;—SO=•I“&1{öì-\¸°Ü'D…j<[A]kì°Ã|ç;ßáòË/çÓŸþ4?ùÉO6zN­µ,X°€¥K—rÈ!‡pÌ1Ç$ {ì±&L`Μ9L:•O}êSœ~úéms~Øyæ=J)¶Øb fÏžsŽ«®ºŠ]vÙ…o~ó›|ÿûßç‘Gᢋ.¢§§‡‘#GòüóϳÇ{´Í¯$IÊ‹H Â[ÏSk¥zpBÈ9Wþ~âĉì½÷ÞˆGqÓ§OgÉ’%<÷Üs|ík_cÉ’%<ýôÓì·ß~嘶ŽÁPãzÞyç±xñbŒ1œyæ™eCëy)èñFƒ &pÓM7¡µæüóÏçW¿úçž{.===ms¼õ³Šyðþ÷¿Ÿ÷¿ÿýLœ8‘SN9…+®¸‚¥K—rÖYguVûèD'þª"¬Uã3É9æî;—îînî}à~;l>#G$ËecíÛåbËz‹ÅòØ ±xùâÀ€K¦rê¾Æ±»KWÒEŸ]Ïñ‹Žçž÷ *8`m€Tu÷V-k…WS ®x^$›»¬•¡Ò_aÀþRÛMÅéL*iéRV'Cûe¨fkZIPÖ†W‹ ¢SxL™ÃPxRc° ¤.ô#¡Ò^ñ&ô««ànE‘y0JHO’’D•g1T±CuÝxEn5I ÚE ¹–¼³ãÛ[pÖc½`ms¢j ÊhÐ1Ñù°ý5¨g çu´a ïÔÅ÷’2$©Æ*æZº{Ñ0ºµ ky.dΗÀ¿ .„^ý Ch‡AE¿‚ÒQ”L+tS§-Rö°Cl=÷¼'H_Xª%‰ AíÞû“±@+W*!àTÁ+“Piv>0 u¥H$ÚEu%¤J“šTQ yÁcb0*ô†{ÑXë…ÄZœv¸$C£ƒ­[¢q©ÄÖE³é¼˜¡?XºEë;‘¨ÊïñÖæ‚U8A‰ŒR «ã#Âë0.Ž¢¢™Ç «cBDÚ+»C^v²Ölíï m%ƒSlÃQâ‡ø÷›óþWà^£6’Ÿ&Œ1Ü{ÏÝ<üÐ;v,“§LÃ=MDí¾çžÜ~ë-|ÿ¢ï†Þב#™9k·Üt ÷;º»»y×{Žæá‡,oØ===ì9s&ßýö(à°¿y£Fbê´i|÷[ µæØ¿ûó9„ï};R½ãó¨V«C[ÚKH ä.‚ïþ¾h2ÚvÝz2­†ãW^y%G}4×_}[z½^gþüù¥èW¥R)…ͬµÁÒ-˘?>¿þõ¯¹êª«pΑç9FƒJ¥Rî,ËJÐ]¾¢ïx0xmýw¥Rá€`ë­·æÚk¯åÆol<x*ö·««‹vØm·Ý–éÓ§sðÁ·ë¢E‹8ï¼óèííåÎ;ïÄŒhFµZ-·Wô»·&¬µh­©Õjtuu¡µfÏ=÷äàƒfÕªUœtÒIÌ›7ï}I¥.â`°7øÁ^Ðb1bÄæÍ›Ç¾ûîËá‡N–ee"¡u\¬µdYF¥RaΜ9åûï¸ãÒ4eÿý÷gÚ´i,Z´ˆ+®¸¢-1R€çb\½÷%(?î¸ãøÙÏ~Fš¦l¿ýörÈ!Xk9è ƒ¸é¦›8è ƒØwß}9äCÈóœÑ£GóÏÿüÏ|âŸ`‹-¶ Z­’ç9iš’¦)Y–‘eY[R¤^¯—¯%IRŽA1ßò<Ç9G½^§Z­¢µ.ÇwýúõwÜq\ýõü×ýG}t9g'L˜À„ € ÔWl[DHÓáÎ;ïäÆo䳟ý,]]] ”}éÆ˜rnuww—çªu^ýçþ'Ç{,7ÜpÓ¦Mc¿ýö#Ë2fÍš5ì"ðþûïçšk®ásŸûY–ÑÕÕÅ]wÝÅÂ… 9çœsJ ~¥Ré¬ú;щNüU„%¶Ìêf«õô=f0q×ÝP•nú­”µäÐ9üb¬aeHUJšTá•pôä÷pÒŒ“°b9ìÖÃybà ¼öää¡¥™&QÍ‘óÿç–,ã´ú<]]ÕØ~üêG²©eî‹Õ×E©iÕ¥4kCmTa¥ ½çUʪ«àËJ¡* ®‚šSÄGM¥ê¢­] `»D "D¯sƒò£4Î@ê >SxeȽ&sªá]UCU'H… °’X)lÚ5U£&` Ì‚@\}\ÄÚ û)e+ó*ÒéC¹á` S4²ØsïÎ{³‚³® žß‰ò“„о2$:ìŸýóHºs.ÐÒó,zFµC-‚CG˵ģӰŸVÂþÖ~‚IEŠŠ‹JAd«B€Øo( ¤Ó‚÷Bh(°nÑKÝ"Å€Q¡*]*”Ç9á$¨e[§P8Òø·e áœm‚Â9>ˆSc¦£Î€•qM ¯›<ªskè¬`MBÎ%8“*±º_LbeŠÞsq›#ˆÿå™%·`c˜ÊëȾð%Iq6b+ˆGÐ-¬mO³•ÁÓÚæ¢‚ˆÅ‹¹j#×ñ†=ЃS´›'†Wß0vê›ÎÝîºÛd&MÚ¥-}¨¢Î€ˆP©Txïß¾£5o{û;J±Ç‚µóö ĸÀß{öœ¶ ç®»íÆ¤I» I­ïÙf›mØmòdvÞu7º»»ÑÝÍßäøÄ6ö0Ñ Vu‘ÕÖR[»µzmðloIByZßzªUúj M{^wüøñ\ýõÌ™3‡<ϱÖrùå—³çž{–`àÖ[oeÊ”)üüç?ç®»îbòäÉ%è7n't§Ÿ~:Ó§Ogܸq,\¸¥§œr ŸûÜçØj«­øÝï~ÇO<Án»í†Öš­·ÞšžžÆŽ ÀŽ;îÀˆ#èííåÆod¿ýöcÅŠÌŸ?Ÿ¯~õ«\}õÕ%89r$Þ{î¼óNæÌ™Ã¤I“8öØcùô§?Mš¦Ü{ï½mÇZôö€ðÀ,?³HÆT«Uî»ï>öÞ{o¬µ4 þþïÿ¾ü›ë¯¿žSO=c #GŽäž{îÁÿüË¿0uêTÆŽËÂ… 1ÆpÚi§±çž{òÀpî¹ç2aÂ.¾øbvØaÒ4m°Ûa‡˜8q"§žz*;ï¼3iš²|ùrž~úiæÍ›‡ˆpÙe—•"jt_ÿú×¹ãŽ;ØgŸ}X³f ÖZ¾ò•¯pÌ1Çðè£2sæÌ²â~Øa‡ñ§?ý‰9sæpÉ%—ðÑ~´m|Ï>ûl?üpf̘1†)S¦`­å?ø3gÎàøãgÒ¤Ih­¹óÎ;ùóŸÿ\‚Õ«¯¾šqãÆ±ÝvÛaŒá‚ .àÝï~w \?ô¡qÙe—•û±Ï>ûð£ýˆ£Ž:Š#Ž8‚$Ixó›ßÌ‚ ʱš3g_þò—ùú׿ÎüãP¹÷^*• _üâ™:u*½½½ÜsÏ=å|èêê*…äÏóóÏ?ŸvÚ ¥¿úÕ¯1bD[ÒäÞ{ïeöìÙÔj5>ñ‰OpÈ!‡pß}÷•sæôÓOß@™}äÈ‘tww³ýöÛcŒ)ûÖ“$a„ %U¾H ì¸ãŽìµ×^üþ÷¿g·Ýv£R©pï½÷òÈ#på•WrÝu×ALî¶Ûnë¬ú;щN¼áCø\ bh:B+ÑÝMÃCj¢¾—ÅÉá º¢në(¥HMŠÇ£´Âá˜2n2Ÿ˜ýIú³~Žºé(žª=…h!—œÌgh1mLDgo¸4W IDAT?½æ¢rýU|½zåó–ûÚ@‹k®l¸ —˜«‡R´ËªöbZÉ.WƒÄëTsa+°qGc‘ >»Y¸Óf+ßfW¶Ìª&ØŽ¥hñî+Rô˜K<Un3ôà·Ý%Š”×&<£JhDÝt ƒ'‰"Ñc jåHŒÐUMèªhÒŠÁ訞wO~ØÅ¾ÇªVèåy†Í£É¹Ä PQq5A$N™@ÉWå†1X4õÌS·¡ªë"}¼ %R¾OÇn‡¢Âî½D±ñ`Ç¥$ØÀÛ¨heg]©î[zC¼‚jÄ”XT¡—2µ¢DwUêxT¬æ¶ ~̨ßôÐW휴ÌÙ–É“ Ò¢? uŠ"‰€?R¥ý»Ž¯›²f:ÿ5:èDÚ¸Ši££wºR$MšhÒŠÆTªÆ5wãè6žžÔÑS…î.MOWB׈„´¢HZ tLÊH¨èûBèÍ*òÔ3¨×-µš Öm™;…÷!EõÜ ™ud™#³.(ø{…よ‰I …øÀøpÖc]‹'zq# öxïðÞ–×Vm Fk´J@tÙÐz!I¤Ò‹ø˜íR)|·ÞPŠo˦¸ñ´xɇF÷ÖPû]NÔËÃöÒš¥³v F'˜1†É;jŽ9¨Škõ8oIõ…÷7ïC&#(³±ÒR¹Uh* ½ç**ô ÂÀÀ¿ùå/Øcæ›ØmòäP¹„6Ú|ëùÕJqé-OrüüýI´bñ=×ðèmßdõšµî^Ú¼ ^â"Å9þT›ÎîûÎÉ'Ÿ¿ÿýïùìg?Û™èD':ñ \wg‘=)eÞ7>¶Ef=¡Èg{íœð›E÷qðÌ.ºÒæ3nÜ»1ù»c´aT×(ªI50¾ðŒîÍûv?¿|î—ܵòNê¦AÃÔiøÙªŒôO)kÿc%ëVþ©Ü‡ÁÏÏRµ}¨UÝ]€Òž…h)e¹ææ?]eà…Õ<ñ¼åÙ±»–ŽQI{©ÚÈKË^UçûIKjËÚ¸¨Îµª¨7Ñ–DÊî0IE¶) GÙ_Þö·Å‡ÇÞÜ¢‡VZ@{ئ/EŸJ 9- ÙXm¬Iî÷¾X¨K™IÑ>TŠši¨ëZë’ŠoIü”‚ ÄŹ=è*VåRÚ|ÃS­¯I›À^3;Øä§¿¬¼D¶ì`ûïRȳåÿ-÷J)…‹ñsmÇWÎãHv” S gD7G½÷˜È¶qÍÞôØö¶…$1ì¸Ç¡¬ö;?ý—²—w¸ Ê.=#˜9cÏ—Î>ó™ÏtV"¯r¬Y³†ûï¿¥^xá°Ùþ½÷Þû%{©'œp£G~M÷Ãþ0cÆŒÙàu­5Ÿþô§™>}zi¹×‰Nt¢xc†óBî¤éô—V‡Â ‰ÂËq¾¥žõªZÖ]‰MX—¯Cr¡b*epʳfý¾xóhTd&'3 r“ç¿ÖÓíGÄâTóó7§ß|èÂóÆdÜeˆ–ñ€ßŠÔdxH´áÏ2Ìï6õZùF5”:õŸ¯ââ³lË @É”<\iú¶Ó’)(Ìë½oè-€aÃÁÃæ>5éóÅB½¤KNCéhS惼“PA´ÞÓÐä¶5Åþâ[èÞ…*§÷¡B-—› èU«æÊjó Lô`¦YI÷(2hèΪèºTV L¤–‡*¬àÄ¿sþ^9Ð>X¾•té°Žâ ¡ äKH˜žXñ{‰Ì/CÌ©A£ÖšPRþòœ’ÒÑÐŽ¶j§Dh¯Ñ±§=6¢G4°ˆcã©ï­C_º³†\{L^¼ šô™‡Šó$V“$qLcB¥(zz|ν Ôt-Ǽöi6ú5Fª?* ÊüiB% k¥2yF­á©5, ¼µˆs8Ÿà£aÉÑMñÈÀ<ñe…· æ‡¹õ$ö¼F’Gés¯Ú)ó¯-O]^ñmlÐÂ-gs¼0¬¢¨¨AILµaRS ¹ñ¡oÌ­¯â-^µûÁoj{_¼&[2À£Fö²ï>{3{ï7mòA¤c¿öKüãUÈ«“'OæœsÎÙäß͘1ãÿì¿ýÛ¿}Í÷˜cŽòuc 'žx"»îºkgbt¢èÄ440q+ŲUuÄè¶å+Šq᣼§· £ºcC°sxÓÔ‚ÉêëùÌ[>ÙמÉòÚrR“F}+Iõ©%×'–Ìæ¸ÜÒã{øüçàý8k7j3>äòlP¿øP$ÈV÷v”ßè*5yÍξ ¬jˆÃÖm,ØP T…H—i/˜5‘T¤S«h-å‚B{UC©ý’cˆüHá]R4*Ò´Ã;<Å“ç‚NÀ¸„D…¾wïc/¹—²§T³B&Ñ‹½¬xÓjÓúÆËÿ´ @Z)¢ñX “+ð$xQØrc <^ÖŠwá!ïœ'wqáçbòùVp!”ÇIº7U)úøÕË€J2LªhSã$/ih› I•ÀGÇ$Œj¡W·&€‚Âv¬+3nZÇùš„¾t ÎZ9Œ…ÄzÒL“æBZ*iwÒidˆ*Á®õÁk=· k övVá2O–å–nÊŒ±Aßt®«DyþFfP*CDálŽ# *‰©¥Ñ&ˆú–„†÷Uß5Ëp=ûèC/¤Ç›­¼j¶ ü¿Öåô×ëAÈqso岉làPoS/âR”Ýd±ÅÜzŒ‰m0zóFË Á±x#Å‹‘È!sXTn†Lš©ñù/×G±¡®æP¯½Øc~)ÿR>·¯M¼Ô9½©gÑ«1§_β[6óéÄ_eLß)eÊŽé¦ ¾b×l5 í°õz‚ˆ(ü)ŽØííö™ûpÞÑæTê-9¡lZ •(RïX±â/¸¼RC¬¥Ô ‹FdóÖi­ýÝ)åqÖ¿¾½€ªíß7< ØÓd®ÀIªxÑ7z,›4sJŠr°Ï²Îá• ßê µ‰'ìÆŽaÄÁ0´+{”ÑAyñ±Šª1Þ’©¨~à|Ð;“¢G>ôÖžÔ*Ò ‚-YËþĤ|8Iºõ —By1㤂u™`".—¸¯¡z¯¢µšÂñz¬—ÄCælèC7̳…?<è&)¯°µÕ‹w5h÷ˆêÁ3x“žÁL‹Øë} ÔClh‚qçƒJºÏ=‹Ô«É©’R]$AÕIêIëP©*UE’BbTŠkZºY„ø²ÁW>2kÉœ%ËÖÛc5Z’ÔP‘¯ &©`ŒÂ¤ ¢ΧXïÉ­‰å¤lçöawÕ)øˆà£À™Š”U@xÑÍïY´Šñ½†òWëþµ/qgË_XO_]^c#·—s8o #FÁ{øÎÂïðŸ7þ#]f{vï=§3ºwû ÛÇÛ–¥œ4bGª£5^U©Oÿ¿½í6n^x Û˜»˜¿ÿ  ÎÚ k¦\BïŽo&¦éñ5Xÿ?pó—±¶ö8ó?t{ÍœÞæc¾ØÊsîºë.vØavž4‰ó¿úUN>þS\}õU¼õ-³¸äÒKÊ×®¸üræ¸ãÆ£^¯sçw2uê¶Ûn»¶íþð‡?ä¨CßJoo/?öË—/ç­o{sùû‡zˆ¾¾õì·ßþXkùîw¿ËI9©ü}že,X°€u8ߺàNøàGKÛ¹N¼~ñܲ>n]ø$ï>x¦R¥¿Ñàœÿ•oÜûضº/“G~þäqº'ßÀÀ@ÆiÏŒæˆí¶EicfñÂèqËÍ7ò»E·1{Ûû˜?k™­±¼oKêsÑÛ;&ˆs~-,_lùÍݲÅÖ–ùï8’]&M }³ÃÄ·ßÎøñã™6}ú0פcáÂEŒ;–©Ó¦µýnùòåÜs÷Ýô4èêª2göÎlÓâ\ñüóϳháBÞ}ä!m×K':ñZÆúõ+éíCÝYÉ–¢¥˜v½3ãF*”ï箇—3Hˆ« o&UQµŠ¾½øU²Šüh¥Œ íFgPÔ`•*ÉÚ¡…Ñ1&˜éЇí½Á‰#Írr I®È'®\…ž“z‘+w‰­ @—ÕãÖÊõè@µ¤&¤E‡Kš~¼>šf‡t8 :úb;U$Zöiá |ËσvCkV¡ºpkU¯RªIQ—¨ÒŽNãB°SÅ((ZMìBö#Hú–‹ …v_Æ"l³æžÚ`–ÿöƒ`xk²HŠY§[“,q>ÐüµLL 8æÞ‡>û(”'9Ñ·Ü“'–$ST¢ú¡Ž”ñ˜T¨¤šjª0iÕÿ‹„’cÒS8ú½½Æù°÷Úh ŒEKܯD¡µA':ØËҧÑ ww´RÔ°A¼-sH.ˆvx ã4upÐ ó ÖeXgq6¨Â‡¾tØ,: Uü}¼Þ”ðzTlåe$7HÄ •  ª]µè °ÿÏ ôx÷¨o {Ä»ØÂOÜûaó O­È¤ñoa܈eœ|Ãש¹µLV[Ã;E{ÊèóQÐ!u‚¨EÂ@¿âÏæ¼i[¨&±¤…Xï7~ 7Ý|3»îº+;Oš4äÃÍKû=´H¨;k¹í¶Û˜>}úà|ÐCtÈEkñaHv ÈÄ9‘ÎMäÅœ¶‘YÑU>ùæO3&BÍÀ¤qÈýœzÓ7Ðë{§F¯šÈüˆ‹W¥4J™0§UÊÊUžÅÏZÞ<µŽs¹`®êÈï”M<×7á¢rã71qâD¦L™²Áïî¾ûnf̘ÁŽ;îÈÊ•+¸ù¦›9æØcÛæª ¹þëD'^ûL±Í3+Î*êYxÆ8'¥+“÷‚u ç¶Rì0ÞÓÈ_IŠûK½Ú„ºš°HW¯4iÛZ5ÄÔÓ-P?TùÂC/Ñ`Mbtè­A¼"WáF’£ jEn1j ÒæCï‡àCߘ6T™/®Mѱ¢‡[ÐÏøR»0EÖBúHU%ÍàÖtüY·äaZ%ÿU¤´«Âr®Ž.4Qyû)UÑ¥­*xé ÉþaŸu«‡¼ å–÷šÜ;Õ Å˰xDµ´„´6 v‰è¨«Ï¥'xŽ«šÑ ]€û‘m ^Ñpºb¬ £¡’òÜ"lJCÒ€$q¤© Šë:ŽS¡ŠïF•ЉâkLÔáG"­ Ña;i“W©ÂÝôÑNT™ô ª™Þ[¬shEï”Aé£jt’`R„éœ"Ë5¹ÊÐ.Påõ*ÍùU´eÚ Å¬R¯ÇST^&U¥ûC×v¢oÀP›ŸsÀÛà">ÜDsÜ>fÕ@xÆw%Ûqá@ÕbZϺ{»q¾žÒ|Xxëɳ`·9ftÙµ3Hïûù„Oâ·zg`[iJý˜M%™/¿ü 8à¶Ùf›ÍΣ)¥ðÞó“+¯dÞ¼y¥_:@?·ß~;‡zè°ÛºâŠ+J‘½¡ðöí·ßÎôéÓéééi¦K ¿¡€sAD8ÎéqÝ[ò±7ŸÀêzHI¾£–ËYÊÜÑ£I*&ˆº*ÝVÔqy˜ÓN„ [¯eäóG¡úwÁíôÏÈèÝË¥ oÉ4mz´?ïŸ}öYžþyfÏžÍO~òÞüæ7·%•œs\{íµ}ôÑq‹X>hßüô§?å°Ã{J':ñòך"Ð?àÙ„—µ&m ÕíT²@Ý1Ðp4¬g8m´ds—œŠ—Ú½Ýò i{ÀE÷ïA‚pƒ!|ó¥Z*ìÒúDñM•w¥ðÊD¤AöL¹ XåÁÊ‹è’"Þ†t]ì'ª¤ù†BA;o=ꯃz7ëh§ÑãùPMZ¹¨æyr¥,Û†>œA?d_xûù–X!”./TúÊA*€nê _•bç±âÀÊ~›Ÿ y‰ CôSÈ ×.ÙÔÛU“ÓP0 ðA­½LJhƒÇ!âðÚ†1Ï yÜ-Í ÃØí1F0Y¨Ða¹B Ð"Þ‘¨„$4Q¤Z£+𠓆jw‚€9q@bÀE’Ä}TÍk¨"@5x ÛD¨˜pÑ*Ôˆ‚…_ÛÊFƒI…jEaI0.Põ•T–2 ±ÚïËÕuç¬õú=:_IR}qêD':ñ׉åÅçåsÖ— ÆtGµ`¯y÷– UvÂù oóÈ~Äg¥#̪¥ëxò÷Kèëé£Õû8²úÖ­ÍÑïx'Ifµ¦ K—.åÇ?þq#žãŽ;Žü_öÞ<^²ªºûþ®½OUݹoÏ#Ý = Í`aV$ $$ Ø¨1Q_3™äɨŸ¼yŒ¯IÌà@ JDE@ƒ±‰4Ð4j353MÏ·§;VÕÙ{½ìsNª[·ûöíf´ŸËí[UçÔö9gÿÖú­ßïê«ùìg?‹÷ž³Î:‹™3gò¾÷½/{íïxS§NeÆ Üpà ٲ+W®ÄÃÎ;¸üò˹îºëàÐCå /`ûöí,_¾œïÿûüýßÿ=¥R‰|àìÙ³‡J¥ÂÔ©S9ï¼óøÌg>À¥—^z@n­8˜°€Ð58õhb˜ÒžT¾}KgwÙùxWÅÅÕ¤ÝÖ³yÖ–çwòŒÙJ[/tõFL‘‡©l~”Ý~>öØOQ4OåÇõLݰa«V­ÂÜ9sèíí¥R©000ÀÖ­[¹ù曳q{É%—0{ölúúú8ï¼ó¸å–[¸õÖ[™2e W\q;vì@U™5k‡rŸùÌg°ÖrõÕW·D+^Ó¨T=år°‹«VÃu5R©â|1Ã"`E©z*Õ½ö ën|2Ž‘EÖ ( VY"&(·'Ê爄R/à‚ÕS%2D*¤6Û^±£&PuCŒÇøý/“Ä[„QÕá&9”L¶¥I 9{Å4P«C¾!gï%£Ië* `7ŸpH…ðR0‚¦|–Æ3Z;_€}ÍotÒ$Í há>[N2_»W*Mœ1’%µ«½nºäÔ ƒR}ÚkŸ˜W)ÔœBSÁ¸0!׎`P,Ž þ&.Ðç¼ËA4¨JVÅz¥{l䈜[Áú~­ +ŠÁ DÞ…1¡5v¹ÖN¿ÁF %"c’ö‹ ¿®h˜ÌÆP151ÂÈZ¤˜Œ«J5´”ì•ÔK/õRW&;¸ƒ@¬ŠÞ†mE+Þ<ácÍ8]jhB’hL®õç_ϬEŠm–b1I¦Çâ ß (½t•F(âp¿÷‚:OyÐ3<ìÙZÂí†)˜ßÝãŸøÄ¸^Ÿ›³Ï>»îý .¸ û÷‚ ø­ßú­ÖzÝ!tM\€jà<ýíÓßÕ*/>ù ÓfM¡£³µhêà‹hü#Jf˜žÒÝe‡ªE<¸ªcØEì鯲ÑÐ}8L'a…Œó8oÞ<~ï÷~¯îµÃ;ŒÃ’ŽßøßhºÜ‡>ô¡0›5¦©ucˆ¯X±‚+V´ÆA+^—¢R©BµDÒ† /½¼Û¿{¿çrÚ;Ú3æ4V÷ÞEâÆ;qÎs'v *Ъǣ:Á2²M#e-( a£BÒs*ÍêÄQ©FXõhDRI@õr£6£&b”R‚ó— ª5 Ä%s²þ“ß§©—¹1´Ÿè Êî’ÝÎJωjx èkŽr+™€fïåk›–ôÉîUͪ>;"9zƒO{ØÒF¼ŒߘºÉ½×4©sðáNSÑ´Z>Ê&aüc>]Ü›­+ø‰ƒŸdÝÕóô¡IRC“x™'çÏkÊUŒO*ש¤bê `!'ë …ÈQ5B Æ Ö$•n*èÆ …(¡»WCˆ$;#!i®&Qd(#Œµx,´Ò~³Ø*hµâ/a Vc h¡Šª Õ(—Òûc0ÁXNÄ`íÝ6^'!¯Ø¸mE+ZñjΠÀû*^}VmÌÀ¹’ݳWݽŽrÿ‹,?a ¿ð¶£æL•âÎÛYZœÄÌ#6R\¤ttÍBl•þ~úÀvowŒ,˜FOÕƒ&mw¾eIØŠW {WÅ¥óë8÷ÉßÃ#U¾wëjlTæœwŸÂüÃf„9Su;Ý#_çèI%–ûí”h뚦Jß¶aÖÞ·›²k§|BÅÄÞ%h=ùýV¹nE+~"ö”bÄðÄÓOqË­·R«Üùÿäœw^Hww7’kÛн<^U NÍYš´ŠÔ¼µópIå/ÀM‹—P :[ÁºÌW/A_“kÒ §à½Áy×à®M]Þœn Úº¦=ܹ›¢j®GÆçÖ"9 ¶D,Q ×´QÜ„m°„ª¿º¤JkŸaÕDxÊd6r5 ¹<êLÝ}}Bƒ =暬sMñ¢YpVo¨$×yiæ•é³…r}¹ÚÈŠÈwÄ7<¯G°“O)äýÝyMÇl­Óš¬@lê÷Mj‰1&Ø”åKõb@“””œ(’X–¥®&9÷Nê•X%ô};0¦Š5‚ÅˆÇØP·‘ÁFhîÆPH€{1‚‚˜Œ±®‡ zW( FCr¨à0¯VÎ{\\¡ê=T[l£€b£(ˆÓùˆ‚õ8k1Æ'j•µþ°6Éðû œ…ý˧¼ã¢Ó[ÑŠ76BOIÒDk¢‡Z÷3íü¿`Ã÷¿L{ÇPçž‘«2µð2“gVpt†ûc%úœ2‡=•%”þuÚÖ“^=­Æ˜V¼rø<Œi§`ÀyZA§4‰Ég}Š¡Ÿ~B±=k#]?³Û·ãæÓn\µL{JE¡0c [*+ð‡½ç õ`Üè­hŨp.”Bö³uÜq×wAàä“OaÕªq÷÷¾Åyïº˜Ž¶ö #îm>i¬1ìëÇsà~—‰¨›Ø”†žÍà³Hµ&­1‰ÊªóJì=®*uÎ…Œwì…Ø‡êb¹â.;†‡cc+ •®Pމã8£4>+±Xk‰¢ðcm”ü;"Š DQkk^È©rd&¼%A5ÛŠ B^6·>kÃ1”pÇãÖÇ­"Îaˆƒ×¸1>|&‡Q—Ø{¥zS§v¯£mL*“ŸP‘O´ÖL1ÃñWI×’Ò%Pß%?±w¸”†e ™š™IÎa¦Ú—þ˜DXNj?¯£†Ÿ}}PSYu£5»IúòÓcAîGløIßÅi°ÿsÞá5N¬ÖC!\á¸ÕÐ#îTˆx,*ÔD8„ªSFª´å¶Ä IDATŽÁr…Á‘ #1ýCUúGªôW鬰g¸BÿPø=\®†¾˜ØQÕ8¦ÕW§i?|pB°ÖdãJ]Œs1ÞUñq•¸\ÆÅ|£ª 6*P,D”JEŠE‹µ„ñçcœKöŸ°$ÇöØç¬&ª;0ƹ”ýüÉ3y²ë¾%ŒÔŠV¼á9húuÖzÐ5j€¹g\FñÝÉœ·,ÄF–­›wqÿ~Æö­{BR^ ëÖlågk¶¡(mP\v<;Îþkܼ(˜°~I‚ZøüàÆÏ~ö3ž|òÉÖHÇ´w5]…Fz»)v0ãÜ1ù]¿ÎäÙÓ@„žÝƒ?z’þCì„Gþg#ϭߊÒÕká¸óØñ¶?G¦4ŒÒ¶Í BT5ÓX¸óÎ;³^ô}ÅM7ÝÔ:ѹ¨V«|ãßÈþ¾õÖ[©T*­ó:ïá±'žâŽï~—‘‘®ø•÷rÊ)§qÒɧ²á¥¸íÖ¯R+ø:áôüQlÑàL±@A>VâjcbªUSÛòDð!³BÁ&‰—ËÁAÞaMš>¸Ç°'8ËtBcUh`´¢­xc‡.Æ;­ëAo¬:v·8vA/?ýÆôͱ<ò?O±{kè3?õÜC)—+<ÿ³2ƒUvn¦w¦áÙ:NšÅ/ÖZÓ}ÐÁûq7nÜÈW¿úÕì~ú‘|„R©t@»¼jÕ*æÌ™Ã¡‡:ægüq¾ýíoS,)‹¬\¹’R©„÷ž›nº‰mÛ¶1cÆ .»ì2Œ1”Ëe¾øÅ/R©TPU.ºè"î¿ÿ~6mÚÄÒ¥K™5kS§NeéÒ¥ô÷÷sçwf½ÄÎ9>ó™Ïd~ðªÊ‡?üa:::ƽOƒƒƒc—/|á \}õÕDQÄüc¦M›ÆâÅ‹÷ë˜=öØcÜ~ûíÙñ¸æšk(‹ÜqÇüñÌœ9€‡zˆR©ÄòåË_C„®!éäCÞ¿nLûšâм°®Ê<ƒ1Ã<üßëq#]]m,:b ƒÃ<½¦Œ-зeˆ¨èÙP*2óm³8v~G¨øÅ`L"à0Çñ–-[xñÅÙ¸q#;wî¬Sƒß×rÍbóæÍ<üðÃuZ o¤èïïçî»ïæ—~é—ö{ÙmÛ¶ñøããœcûöí­âÁë$* ‡ºˆ·~8G/?šÙsæáQN8ííìîäÈcWàL”µ 7>žòBÄ㢸×y^¿Â™ÀzÈ™x‡J »ªo0“ cz‘,#p¼I:®}Ü—¦iМY8«Œ‚H¡xl,îzÙ¾ŽùSMÏÄ©<&Ÿ"Héí™8ºA½ÇyƒINS5u—À!ÉoM&dÖˆ;ɳ«ë³¬M3ùõcRGjØ—ôöë¿4 Pxb£qïg·aц³£Œ¢þËX•âüh txŸ[TjI¤ü¸Ã N+J„â+W‰“^u Õr,b#0Ô¨òØQ©6*ˆ(~È‹÷ÇÄ™~ðew©D’è Œ› úoDPÇ<Ъöú„ו%Åö•aÔñ«9S£Ì.¦¯ôäuÞ·ÌÂØbvÏ𚪸ûqmㆠxàê„ØT•mÛ¶1}út ¨^OŸ>8ŽÙºukvÿŸ5k;vì`Ú´iìØ±ƒI“&!"ìܹ“£>šb±È–-[p.èÛôôôÐÕÕ•}OµZå´ÓNã”SN¡Z­òÅ/~‘•+WrÏ=÷pî¹ç2mÚ4¶mÛÆ]wÝÅÙgŸÍ—¿üe>ô¡e `Ñ¢E|îsŸãâ‹/æ‘G¡¿¿ï=Û¶m£»»»n_ÛÛÛùèG?:*9ÐÛÛËÐÐÕj•Ù³g344„ª&Voš)|§±iÓ&T•®®.zzz(—Ëlܸ‘ÎÎNŽ:ê¨lÓõ§ûž?“&M¢³³³îxœ~úéœ|òÉT«Un½õVÞõ®wQ­Vë@eÇDQôšßæ¼÷Iëçhp®¹1]è˜ËÚo¥¼g »:OfÇÂS™;ð_LßÕO_ŸcÍüOÒîv0ôä-”\åSæÓflöävƒ^÷}óóÞ³iÓ¦lŒNŸ>aöìÙL›6gžy†Í›7300@[[S¦L©[~dd„;vd×Àðð0;vìÈÖ£ªìÚµ‹72cÆ Œ1lÞ¼UeêÔ©´µµÕ­sÇŽŒŒŒ`­eæÌ™ °gÏæÌ™C¹\¦¯¯UeöìÙlÞ¼™ööv&OžÌöíÛ³*uGG½½½lÛ¶©S§Ò××ÇôéÓÙµkCCCc2»Ä;w2<<œ½–ÿΙ3gò¶·½­é¶õ÷÷Óß߀Z1cÆŒ†¼Œfb{÷ß?7n¤T*ÑÙÙɤI“Fm[³í( ìÚµ‹iÓ¦±k×.¦Nš%DÒ$T+öïQä+àŠ†sßñ.4 u¢DF8çü ©zE«§nŸ×Pĸ%Óš‹ýžíš1'™Ì™æ¡ÔŠ—^ña¦Ÿ€ÈP™mádrÖÞáæT'Sk ’¤7,¥ÝzŸˆ¶IèËúÆU7kƒ ·ªÁKB÷IïŠiOr#\NÙÑø¤âžTÐ ý Þ©Áy‡‰#œNà W’~qïC†ÔŠ$ma¿Tê—j #¦šá ª¦ó׈+¥þLŒ]©Ì[¶Õp‰É€”þŸ%t,#¯Ìì« 8ÏöIk=àõDkIØc}·6(çuíM°- “÷Z»A6ÅÝ[¢¤A7_s½*š–ä%MI":”Ô½æBÐfp^ˆ€XV|b“bCϺ×DÞ•(ÍYÁŠG E¼ Õ‚ÇTâl¢î«AÝ=Œhúß‚$Dâ_ÛGÉÚ*jJ‚™‚lòÐÍ’ š&1jÇ¡v;xmMÚj‰‰‡sÊòCÛy[Œ××ÙCUu/ ×çîeš jÖ…‘_GúÛò®-—/{„H­«#½|~Û4÷Ùºû‚Ö¶9·-š»ýæçÓši¸HͦSë·ß׋œàé¨ïn|MZ7ÁÖÆ¤–ÀÎÇCÏ00â'v]ÈþlïÅ},pžþ»4}‡]õ¬ýÎÍl<üƒT‹=ÄOîæ;×ÿª°áÌ_fòüeT+¿Èއndè¨Ë˜Ò5)8a$ëƯâ~óÍ7RI/—ËÜrË-™Úú×¾ö5V®\ÉÚµkÙ¶m"ºuëøÈG>·¾õ->ðpÇwpÑE!"ÜqÇrÈ!ÌŸ?Ÿo~ó›,Z´¡§§‡ã?¾8›$ihŒÁ{Ϻuë˜>}zæ­>}út¦Nʺuë8òÈ#yä‘G2`3oÞ¼:âqÇǃ>ÈêÕ«à]ïz×(ðõàƒâ½çÈ#¤T*qíµ×rÔQGÕôE‹122BÇœx≔Ëe¾þõ¯süñÇgëZ»v-qÓÙÙ™½¾fÍfΜI¥RÉ~?ÿüó¨*ÝÝÝœxâ‰Üpà uÇã„N¨KZ¤ûS(8óÌ3¹çž{°Ö6°-_wr­±EM8oÛSO¼€y»þ’ŸüäI6½õ7i+oåÅÿy­kîg¨R¤ï¢³pZ;Ã/Aÿs«©y ¥„Qç|¸¦ƒðá¾ÇtµZåÁÄZËO<Áûßÿ~^|ñE^xáD„Ÿüä'‹EJ¥ÇsLjËå2«W¯fçΈÕj5±?ü0"Âܹs™={6Û·ogõêÕœuÖY´··óðÃgI—O<1é[¶laíÚµŒŒŒÐÞÞÎ)§œÂêÕ«éïïGDX¸p!¥R‰{ï½—yóæ1sæL¶lÙB[[+V¬à›ßü&“'O¦P(ÐÞÞÎñÇÏ7¾ñ Ž<òHTk-kÖ¬É@ðâÅ‹™:u*k×®ehhˆR©Dww7=ô»wïÆÃé§ŸÎí·ßÎùçŸÏ#<ÂÈÈQ±lÙ2ž~úi6oÞLOO…B#Ž8¢Ž#"<þøãÄqœ]Ƙì:¸ùæ›9æ˜c²k÷¹çžãå—_ÆZË’%Kؼy3}}}‹EN>ùd¾ýíogçè†nà7ó7³{B+Æÿ(ªz <Éh)àŒà<8õhœh2ã±íßDfùwiþw‚hÓån‚ª™ýIþ)ïQR3#K…ç7SrFb£Ë VÀ{Ièí¾®NjÚ{xÁ'Âncs©“pËÚ–%hFÀZ‚ÒvdcˆÿU+P%Qôm§Ûí}BË7ÅÄ'4ê\"g‹¦Z«yd>âMO¡4Š5ÃpÉ<Ûu4-¼IyQÆÿ2ûÒ T Fw›§Bl5uIgàÍ$ÇÓIjSz|£e4ð”H>ÎW^_ò'Ë׿Þppµæ$ŽBâÄ$º&y°:Ö+¢*êQBÃt5ë\6±V k"Š¥RMÅ“(O&‰# ¢Œù<ŒJȤÅóš Â+7÷~E!úôUaÅ’.:©§Î_ݹëèKV€eà6,§€½ñs9¡Í:'&ëÈ÷œ5æFp¯¹móu!õëÕÜ—û†û‡k{´–LÝgr¡øçׯM^óZË"hN›1Yò¶ñ1ÜÛiYqX=3ÀPù•W<÷Þ㽯ï;oë U¸{ÉñÌz<ìaf§0mÁûyrÏv6 uÐÝ;“Ó—v3³g/.;–þᘙÝQvŽ4IFªS(Œã>Óì‹EV¬XÁ£>Š÷ž“N:)Ïüà³Ê{ ¬Ÿyæ-ZĪU«8å”Srºh¾ç=ï஻lcxä‘Gxùå—1ÆpÎ9ç0444æ¶žqÆÙ6=ýôÓˆsæÌ©ûÌ 'œÀg?ûÙ¦öq"B¡PȪÑ"Boo/]t·ß~;Çw3gÎäßþíß8å”S2  "XkëÖÇAcèÉ'ŸdÖ¬Yˆ]tÆî»ï>Œ1üà?àãÿ8"½÷ÞË–-[ˆ¢(;ßýîwÙ¶m[@Ï'VÛ __÷8Åy7ªrîúÐÓ¿gõ«l;ÂÓ9\f~ÏB Ýã±;&±µgs&9óˆ G]‹».¦;f÷²åÓ©@/•J¼ç=ïá™gžaòäÉÙ±•\ké¹çžKww7O>ù$?þxÐظq#—]vÏ=÷\ð7Æp÷ÝwsÕUWq衇rÑE%IpGµZEDX½z5Ë–-ËúO<Áüùó9âˆ#X¿~=ªÊ»ßýnT•Ï}îsœwÞy,_¾œÓO?=»ëÖ­ã©§žBD¸à‚ hkkcíÚµ<óÌ3cèèè`ÅŠ<ôÐC<÷ÜsL›68޹ï¾û8æ˜cxöÙg¹òÊ+iooçÙgŸeÍš5üê¯þ*3fÌ`Ïž=cX·n‹-bñâÅìÞ½›;3fpúé§³páBvìØÁ÷¾÷½Qm*ùëûñ) <øàƒ<ÿüóX?î¸ã²û^ÇŒŒŒ°jÕ*–,YBE¼óïDUY²d O=õ}}}œyæ™-p>0F˜=vŽà䜅Xƒ[—ú0[ŸÖaÅ`ì  Ö)21¢p p×oˆÑñOÊkUóʾ«Qn2‹ðZm–ð9%özà›š“Õèɾ6¹ PÐÅØŒ*Ÿ*Æ§Êæš›™¥Õøô¢1¢Xõˆ @Þšà7m#CÁZŠÆ ÅêX±Ad+‰ •”¢”+Õä=¾rµl%ßÇl²ÙSM]¾Y•_Fñ(³Ãš€Y4ô'§&õ²—…ä’#Z—9@4!´Ÿ窉„¾ä@W®ª[—“¨ê:æè¬qöF‰—&K5?(õÊñ{×—æÙ/%ñ$W¼†^t/†‚D¨Ñ?‹IØ,ÎÆUÁ—h=k ï‚G£1†¶¶öDý˜ îî<ês/ß°™©"Š›ñh¨>d•µT·¡®÷zé©’\Šrbµ|UX0³H©Ðzè½à|ÌËhï/ï{}ãY—NÜhRõà,7îmç²ñ ÕJ…áÁ!âjç+‰Pš1KmtttÖž# ËNî´#óªtÃ$©±zÞÎS=¯ft–ÂDjòtýÒß2²±BO¡ƒî6‹˜Óc‰»Lf¹™#‚Hæ¸&wf4ÆpÈ!‡ððÃÇ1§žzê¨*nþ~ºyóf¦OŸÎš5k8ùä“GM²óëϯ#¥ËwÜqˆH¶ŽÆ{pþï´:·jÕ*vìØÁܹsë>ûï|‡ /¼ÿøÿà½ï}ï(ðvì±ÇÖìÆç‚÷~¯ ÁÃ×¾ö5Î8ã ¢(bÍš5Ù²ÛÝLkhoÇ£ÙñÉ?¯^o7:}Í9Z{:µÁ¥K§ª¾‚ôØó¡p,ñp‘ÉíEÚ †ÈÀüÉ^mæJ” (FB"B¼ïQýòË/óì³Ïòö·¿(ŠÆO£u FŸ§¾¾>Ö¬YÃÛÞö6¼÷<ÿüó£Æä7ÞÈù矈dôðfófs×t¬fö57iuÔQÙkK–,É*êQÑÑÑÁ¢E‹¸õÖ[©V«\yå•\uÕU™^Ã¥—^Z—°hü¾±ŽÏXûÐxüÒm[»v-§vƒƒƒÜwß}¨*‹/ÎZ4f̘ÁÆy饗x÷»ßÝš@L`žøØ‹;XqøT*ՆІ)zò÷H5fã–2Ó'صK ëu…f8YG·éîœ<“†®"Cù¼¶MÀgà&ËZ«~ÕêutŠA¼ÖÔ¬Ò,¿Ô²š|§16¡ŠkÈ„hr÷«›¶HÒ‡¶ÜÁ¨¥T÷H0b)XCÁl!(³{(ØHì&~z©«äIœ®Q óÛÒüZ/i—Ov4+5%ëHDÅdŒõåØŠ£ÖœÿÌkªšßä·Ž>žáµFH®¹ÑŸ/ü~Ÿ ½&>°¯†å½¨œ«6TÎuô2iµß§úþ‚,*¡-CÔfסUCä¡CÁ(±q5ÿÕÖX¡ A-–8©æKœé1hâC’À¤UCÞÆÒpsmE+ZQ‹‘¡!úw]˜3§‹žî"…(¢\‰éëd㦠Ò3©—b[iô]áU¼®ÔÇ™gtcõ<3ùê:t:Pˆ12w:³g×(ìUŸ> ¤n}JbðáÇ'RqÍ5×pã7rÉ%—d•åöövæÌ™ÃK/½”õ¡S,36ï=œzê©<û쳜zê©,X°€/ùËüÚ¯ý?øÁšÒÆÉ}www]Ÿë[ßúVîºë.^|ñE¦OŸÎÖ­[Ùµkçž{.###uë* g`û`þüù,Z´ˆÞÞ^¾úÕ¯fÕÐôûÒu£ªâu“Ô(¢R©022’}GCCCtvvf4iU¥½½¡¡¡¬rªªttt044”õ£•äÈœô;Ëå2÷Þ{/W\q·ÝvÃÃàR©dÛÕÞÞþat—õ™§•t×l<ûZ‡\dÂxuq܇p´Ö¦±ÏfÑõ­ ögqßû˜âî»ïæ’K.!Žã¦nPÃÃà â8¦X,Öÿ(Š(—ËÙµà½Ç9GwwwðaÏ©]—ËeŠÅ"ÃÃÃÁg:ahä£X,âœcxx8[?µP4;w wpp0Û–ÆõGQDWWÝÝÝ ó½ï}K/½Uå‚ .àæ›oÆZKgg'guV2}±X$Žc†‡‡)—Ë´µµ5M2ím¼fì F]„J¥B±X¥‘%K–ðÒK/q 'ìõs­;föD|÷Á—ؾ»ÂpÅQM„NjF›áw¡hY8½ƒÓ—w°fmyÌkiêû÷$•zÂó>!”ŒÕÇm‚T€ <;“÷1ÏËF×Z‡ÇÎ|6PÝòh¨üjFÝÓÌ`Þçâ´³åU­ áánb(`D‰Ä1.c06ah°5 h‡¤GÁ/÷äDÖæTÁ÷eu!õÀXRÕyšfuò¯§}Ãu‚zÒLÕZê÷ÞøÑÃô€QžÁQ×V¡£:¾ëËHc«€i.uå÷u²÷e¼W×(•¿ô0ú&@>×÷®&ûL`d§ƒ¾ãà°î[CÈ%7—¸×kN1ñJÅLÀýX#¨z IF\‚º—ðÕNkÛc‘dœJÓê\}e£þ<¿^)…­hE+rñáavïdæ”6–,šJwW½ºö¼Ù=Ì›ÓÃOo§og=½Sh+µÕ’â¯rø¤_W›€óf=éI'q°§›7©P¦@ÆgtÅŽc»:;;¹à‚ ¸þúë³{ßUW]•õà¦"Zíííœþù\wÝuXkÙ½{7"Bgg'½½½Ù„Ú´iˆ“&M¢­­Ù³ggëííí­SAïììlZ­>÷Üs¹í¶Ûؾ};Ó§OϨÄwÞy';wîDU9úè£yË[ÞÂ׿þuº»»¹çž{˜3gNFinoo϶+½¯wuuqã7fó©Ë.»ŒÙ³g0yòdŠÅ""¬Y³8ꨣXµj7ÜpCöZww7ÖZ®¾új®¿þú,Y±páBV®\Éu×]ÇŒ3˜;w.ííí¬\¹’k¯½6ëe_¸paö}éwæGWW<ðO=õÅb‘«®º €iÓ¦ñýï}½oyË[øáÈO~òÚÛÛ¹âŠ+^ xžŒiÄ”’M¾`gï'}å‰t –PJ{ÍRÀÆô¾ÃCÇÜtÓM¨*—^z)³gϦ­­ÞÞ^œsÜ~ûí,X°€sÎ9§î|üñÙµ0eʦOŸÎòå˹þúë1Æ0mÚ4fΜÉÒ¥K¹öÚk¹ä’K²ñ‚ë<ˆ>餓¸÷Þ{yàèêêâ²Ë.c÷îÝ|å+_¡P(°råJ^zé%zzz²–ŽŽŽìÚ¸õÖ[?üpN?ýô¬—‚îÂÿ÷sà 7dcá±ÇcÕªUXkY¹r%›6mâÛßþ6"Âå—_žíÇ)§œÂ÷¾÷=V­ZEOO—^z)«W¯ÎÆdE™Dz Íš5‹ÎÎN¼÷Ìœ9“[o½UeÙ²ey䑬_¿>Û¶O<‘üàÜxãÌ;—I“&Õ%%Êår&ÆØŠ‰Uq:lÌ;ŽêÛAl` ˆ‰‚vƒ3“œ—jeh¯ZÞÿO»Ç}’ÊòÄ€R=µ¸Ž©ÁøFrÆÔ(`^5T½ ”u‘°ÃµLhÂWU\’av:Fl¢/fŒ.xÉoa#µ¢y"´C¾W»þÇ X”‚@!ˆ0…ˆÈ0‘ Æâ]  T*T*U*Õç| +%>ëA5»Æð ÍÞ¥dò¼É{b•*ï…5¹7if=†‘LÈ.,j2ÊAÚ­ a¬>bɉ 5™æÈ¦ "Kû3ò‚Y@y€žŠ‘Õ‚ê¾O*辆ˆUsÄvÈädt¶#M äÚÆêsÏÎM.)¢¹L®ÖD°…º6M¶E3¥Àðy“^~âÁ»D¨0ZÆi$‚¨¯SR— ÂnÉ(ñaR›ˆÂ%^Â$¿S&‡æþJ˜Äº´*/cÐjuTÆú MÈÓÛA¸+JÏŽM2)ÂöZ–/î`΂.î}¤¯9(ïáâS'qâÒŽÖƒìU«*5I~i³N6ëA×&Œµf=èÍ~×?;uL¹Ñ½àõ}Ûu"qŒÝƒîutÏ}ýºG÷Áç·et¿~½H\ú]qìØÙ×Go§pÔ[fÒÑ&ÄCeÇÝ«7ñîÓçeûÙ?Pæ'mfç LêBT°™u§î{¼Ÿ]ƒñ„JV„?ýÕYDûè ©Vø‡7pÕ߆¼0h½4ç Pi)Úܵ¡¿×k ät(̎ዟÿ¢®í¬üÕ_âØ£ T*î×þ½üòˬ^½š‹/¾8{m``€Ÿþô§ˆœuÖY­žÑŸÓxöÙ-|ó?Èy—žm“G%\3¦HœûÜσsß$Y5ÙCw…ú§¿áð哸òW.â°…ó‰"û¦?Î_øÂ¸êª«ØöðõO<ñ6l¨K”´büÑ¿g{Ö) CÇXD´M„1an„ÈîªV†ùÊöñÄsž¡­;Y¿Å±iÚR$y ïW]j Þû—VH—nð¥n,Jur=Ýéo­ÝY‚òº& \ˆ"ƒ""S£DZùb÷. 5ûQÿOlÎj ÙóägAù}Ë¡ù´/]4í$V‚Ø|QB••H@mh4pšîZµÜ`ðFP I$Â'Ôzï!–ÔZ#üV“€4‘4s“ô˧m hMÅÇ3¯jc’ÏK¿uŠ }þ£ÎZnæ—Qð{.«ùIM¡(ÂKƒb»ÔæüÌ4¯+XßBàsöyßòtýyz{CV"«ÛK½^€ŽÞ7êÆ¾f“b5Új3éZ=^’ÿ´–,HŽ»šÚ¶zU<Q—ŒƒšÄ3]ëÉ‘Q|b;è2rŒaœX©)Ë«j& —Wt6NqI ®u$w,R<]+´ IDAT9Éå6T8(œr9À…ó£WúèÏøÞ@D‹ÿsšX—æ ƒ7AÁ€rµ¾Ê‚ù5ppÙŸþˆ®ÝÊWþä.<%ô&wu–8lÁÖ>¶•òHcÚ±Ñþ]Gc^_ûq‘«w™ÈUz]z©%5òÿÎìØj)[\.’yj^Î×Þ ÷G= }›2e 'žxb}â9€X±bE œÿœGj³¦¹‚Hš,ÒÜß阮&óÚ<ÛÃkmì{ê\îµÈ0nÿò7Sœ}öÙ¯ K½W*æÎ;Êê®|5’•5}4ºœì=^ÕÑ&ÍJ«¢5˜¡ÍÓ"š¨®úšX\B»-DQ¡@±(I_à  q%Ð~œÓݬjéðûœÊk“)¿dÚi¹»eJ éÈP‰xA±‘ UȨÚ ª‚HDR,ÇF‚X“ðûƒh[z Î{^2ŠR-‘ލU´ ±„¾;c$&© k…ù Vó tæJÅÇaš¢9°@¹É%]r“¥1¬Â÷°,¶ÇàF êî:Š–ž{ErÀ¶®_ö²%cõäSayÄî/ßt‘û>ɲ-dI™Ú¹H¬”Ä€$6%ªó>I²H"FhU‰"Mds ˜ù £, 0ZÂÁ'Õþ4¯!˜\©¶.%œW“h¬Ï츑Q ¸Ž•‰úeßÔpNòíÚ°uûötßýcßá¢E¡9ð~þï>ÔÇß|õE"+Üö©åt¶M¼òñÀ{øÍ^Ïg})'þÚô¬9ŸK2¾n'Ï5ºó› œ+à«U::"¦Lªù ¿ícwóü¦Aþî£oå½ö#îü»³8}yðñîê*ÒÝÑ_®PÔÆKxÖÈdh?3`Jxh:ŒPǬI§Ñ—k£­ ŒŠÑ2žÂËeç(Š ctc ½½}”[GGG}tk&ÜŠdìõPÙÑ1J8µ6ɸޟ1­M®zQx‚ H'ü|%…RÏñ7ktww·zÏ_gñªtÉ„æeŒÇëøúrS«°@m°/‹ Qd‰"K!"çëª8“Ò‰ë+çAi<óUÁ\ Rjô>Éû;ç&õé6iŽ 9Ž`ðDõÄpŽ()É žH•H=…¢ •nBÏ‚±K ¾ç=¢c/k< ±*6¹!ç)“‚"Ög=ðŠÏ·%gg¬1DÖ¾È@;5 ·sНxT«Ù®×ŒÃ4Kª¨ÆÔÕ$zu/jû:÷:íïÜfBì)1]÷¦$¯£à\óõN$I ûX^÷ò¹d¬7cÕëX‰ÁHޝ Ç$9ŸŠ½åRS=SMÔo“ê&}éµ±’Øû¥íÆd|ØØk¢“à0 õ]4¡ñ&Jòé~ø4Å“3H'Ç)+ߌ¿¾þüŽáͨ*M'y—FÙÝé8Î…À˜X¼ÿÿ}Œç6Ð×_¥½hi/ ·üñQÌ™2qzÝS†øÐß?ÉŸ¿ïP.;s&ÅT”.{žÙ4ÂHÙ½&¯Ø+çþÁZV,éáo¯YôLŠ÷ÆŸ»íE®»{wýå[™Ò½©˜^¡«`)B¢gåßü˜ç7 ñ“ë.…MÛ‡ù•?ùoÖ^{Ó&1ÖR,F¸Aw^ƒŠÔÈÈÿòÏ×»ÀWšÆR›¢xç,1œ¼zª1óæwЉg+ZqðÂaýúgyê©§‰“q\†’ñTï¼?Ð1žóÞC¡`èîî$²´ŒC[ÑŠ×@Ÿè¥(Œ£„ {yCl¯);;© +ç UT¤Ó‡c%V*qh¹õjÝ\oQÖ¬w8“»ÎPi=[Uj½yÔƒÑ,„J¢ ½Q1ëYS…8@¼ D‘`­ ½öÔMÚó[­ÆTâ*VlRMOG^ÁÇÕ:T“,%h‡ “HP_HÄí|rc‡¶¢¡Tˆho/ÐV"€˜÷àbˆg¤ì‰¥ŒREL„¤buª^‰cœ¦Õ~Aˆ’³î¶jª)®cŒi2ñ­×-úgEÝlHG¨T¢]ÈdÇÍ*¥–g¦IÒio%‘<¸S0®Éôã˜ê硵d ¬õ_+M¶ŸQ¶ ’]ðŒfÚY*&ÕqÐZ»‰W¥TŠèl/a$œ=¯®+§¸Øaðx\ y¦ýûù‚³ ãÅ;%v.ñN×pMˆIÚ+Âwy.¡ úl¢[SÑO)š¤ôêý 4Ÿ,kÒ2ØÉÂÑç£î®!cœññpÜ÷#¾òÉeìè¯rô‡äêwÎæ“—Π{V?ÑŸ]¿ð–¼W|²ŸEsÚÙ±§ÊÒC:²×Òm>iYªPuÊó[Fp^q^ùñc{²ï\±´›ö¢a`ıöélçOY6©®BýðÓý xÖ½0˜¹UÜÿø|"%|Ì¢.ºÛë«ó>7ÀÀ`¸'ÍšZdÑìv}v€rÕsÔ‚.6î(³xN;kŸ``ÈeûxÄüÎl›OXÚ͆íežß2ÂñK{øë«ÑÛe¯xx^þ:«yÓJ¬~²Ÿr%ÜÏmgöäbMÒÀ3/°©¯ @OgÄчv%¶–P•‡žÚÄ:5Ødžxxb`ÃÖ2/n„¶¢á¸Åݰî…AvĨÂôIœW*UÏÃëw3cr‰cëâ¹ÍÃlÙY £ÝrÔ‚®qy ¿Þ¢¦âK¿_½çþÏ<ÆwþîLþøýÁê'vµ.¥êÄ 'šg®)Š øàiüèÖ°aã–:{¯Ñ©YÙË~§|bÉn£ aÞÑÙÙÍKcÊäLÔ¢¢·âàÆ¬Y=\vå V?ôS¶÷í ‰/™À˜öuJ´M,u“–Ac˜Ü;•e‡FgWÖ¶z+ZñÚt™Hý³q’ë÷ãÓc¼š,s*<Ϋ&0xI—Éí{Ö†!‰ÕbnÝpdŒ4ÐÞÙ ’µ„}‘W­^ Éužß¼j¬Ü¿nÖßøÑ6~ùôé\rú ~ùÓ?ã+&óÄKC|ûÓGóå»6ò½‡wòî“§qã÷·ð¾wÌâÜã§`DxrÃ0{†Sº ÷?¶ á;îàmGOâ·y>ñÏó賃œ}l/ÎÃIGôdª£w=¼ƒßý·§¹äŒlê«$Iø÷»6ñ™[_âýï˜ÍÝɇtð©÷FG©HÖ=7Ȇíe¶ï®òè³üóÇ—ò_z–§^â>U¸ð¤i|üóOñî“§±}O•¯þ×V¾ò{Ëø«ÿx‘˜5Ÿ?o®ÚΧoxŽþáx.ÿëÇ8cy/GÚÉ_ÝôO|ù(W=ïùÓŸðï_Ä!Ó‹üþ—žå²3gðÔ†aT•¿ýàbfô¡®'_âÿ²ž£tÒÓñíoçÿ~h1§Ù‹¢ô;Þû×ë8fQ§ÙËMÿµ…^4œ;‡Í;Êüøñ=¨*7ÿp+þþELŸTàw¿°ž·/ŸLG›eÑœŽpO7ÂCëû™3µÂ[wñÒ¶}¶ŸJ¬Üùàv>uå"NYÖ‹so,n U©TbŠÅ0ø‡¯?Éïþó#œÿ sø_ôC¾öéÓ™3­ï=ÕØQ­úQôðŠý¸ E„CÎgROÃÃ#凌úèÞ¾ÏZKwW'S§öb[½â­8ÈQ(Y~ÄRæÍžE¹\™x•|?Æt¡P wR7½“º[n+­hÅkÐt²Éaê•gq‰ Y €"M*åIuÚÊZªJÙTù„—Ñ@Ls½¬Úø)i€P’0ä“ê€H”ÑÂ5U O¬‡Jì‰€Ø Æ¦B[ MÉWñ±K*—5ð-Àµ6±†kË@Œ IRUˆLÒ³X%J&‘ U£àb‡x²^9‹`£àYˆ:¨T ”«ŽJÅ3’lOê§)bpØDíÓ£êÐD²ÎX+Ù»„rßp¼R¡35 +£ŽQÕÌZWUØ1dU$§š¾?2ué#cÁWоÑ5soc«¾j%R»¾B…+uA…JìŒ1Æ' ˆ@¥O[?¢(ªU–e´Ó}”‚%Òp/ Éu,¸¬s˜b#¡â&~ª9ÿÖ|žN¥I™ WØ3ÿr€÷²W —RUÖoþ˱òowlä—O›N!¦O*ðþw.¢³Íò¥ïlbFo‘'_¢\õüãmxçŠÉ¨*4Y“‹Tã@Q÷N©x®½k3+Ï›Ãõ÷laÉœvžzy˜ÿ³ò°Ðþ’Ä-÷me¸ìùß—/àþu{¸uÕ6Dà_ïØˆsF¿{0æú{¶ðÉ_YPÐ7î(óÔ†!Fë^dÍú~ V( g;™EsÚùü·^fgÌïÿÊ{qˆ[~¸ "¡`ú¬Bvš¿òöܽf'¿õ/ëñ g,ïå—N›ÆÇ?¿Uø£÷.äÛ?îcåÿ}œO\\aFoxô™~öÜ ½¥B•M;ÊÜù`§/É "+œ|Ä$þð½ ¸ç‘|ñ»¹æ¼9ìv<½qP†ÊžoÞ¿e‡tðÒÖ2/náémü¯Ó¦ó—7=Wå#¿8)ÝT•1Ïl ¬€]ý1÷¬ÙÁiGöâÞH³EìÞ³mû sçLâSÿþSþòúuÜö7gpò²é\ù÷sÁïþ€»>s6Ý–Á ýƒT^;%äI=]ôtumÍ”Xö~O69g—V´â`†5†©S&3erï«?¦[ §V´âÐæä8U7ª¨Ã-ÅL!õ×D˜Ç£¯øtº†$‡ç¥.! £I+ÎÞ)X.ô[ªþi‰^]œØÄ=N¯ Þfj“ˆv † 'zØ•@4.©<&½æ…(ü¶6L<3c:K:ut,Ö€-DÅÒV28gò H™Xc\ì‰Ì1‚ÁPu)À 5O#Bd,‘ šêÊ £!€6/!Áb¨‰Òå×%÷¸h kÇÊ·¨ìûµWuÔ¾¯þ+ëˆÞÒÀ Í$Ô5cn¦×Z¥ª8W 픉­±ØÈ% (1A©~þzÚÔ8 ‘IÔ† BaA"ƒ ÄUEŒ ¢ƒžØy¬M¯åZ]ÇqU6\žoøp^¹ðʬ)E>ÿ±¥üÆ?®gíÓýÙÉ:|^'ç7™r%èOuh'Ÿ~ß¡Ä.$Rú‡â: ­ ÿä§pÃï/ã¯{ŽÍ;ÊôvFüûoÎG>÷/má¹÷o£TÈßoB{K~2h¦tGÉ÷…IÞ”žšª÷ç¾¹½}#·}z9ÛwWùáOwgƒ¥`…w®˜’K¾¥†Z'(RŸÍÇœ©%fO-ò_îD NœÆÌÉÅšÙBÂx2 Iì*¯9o6Kævðé«¥³Í&ǬÙM;¬ã¡õýüο­ç/_ÀñK{¸ÿ±Ÿ€Â5ïšËš§XýäV?ÕˆÐ^ c>íýþ£;ø«¯>Çß|`1ó¦•Ãp@  EŒ-òôó}tu·ñÁ qÅ;rØœ.D„ÿß'Ñ·«L[Iª²yó††=Q›É±¢^Ý0’ÜÄZÑŠ7I˜‰*¶¢­hôƒ‡kUuçÅWL®²êFeE˜ðM,ó¡Þ7$hþº¤}éõLM<¤Þ+W=¨K(x>Óí‚pZ³¬JÀ‘M«é&­RÀëEQFApY¯I48Õ;¼K«ô¡—ÝðÎP*EœPŒ(_(à]•8.ÇïªAA>©49 Ûä}¢ì.Q*ñE+ˆWœ)Ǖлî]ÍÃ7QŽ—¤ÕÜùJ³²_^E’œtÑÆ þk€_#¨Ôýê ætt¾BGYÒ…cç¨:‡EBkDd°V)Ä‚‹ú»OíÉΟfꉜ&î  .F°‘Í$¸µ6À%: Fª!å$éO½Õ“ó*uºö5èÖ˜›Q9€¹Ëë á§V‡AÈqŒ¼ÀÌÞB>0®ý&ûï=D6T¤óï}h7ÿý™·òÇ×=Çã/’ç?MTÀaãŽ2}ýÕl¹™“‹lß]Ű:Z4m¯®kái“»# Ö°qG™m»«Ùy›Ñ[à™1ÛvWØ3×ÏôÚúÒo½…“ÿŸ5 Â?üƦM*`6ö•ÙÑ_¥·;¢P¨-ÜÑfèlbœ6‡Ò$·70³±¯Bì”™“‹‰mJ`òäÛ‰¼WþôÊC©x.ÿ«ŸâUéé÷Ï-;Ë8¯™kc0ÚxcNªkò†ŽžvõmgÝ[Xºx“¦´á@ö’aÖÔ#Ã1/oÚÍË[ñ¦HT,„{E«¢ÜŠV´¢­hÅkÐå ,/Æ$‚cy˜«Öä„»êÀ´HnÒ5Q²½Nlg›92Õ±œµî…tDß• W×ûšˆi™ÌK=í®y™›Œj¬ ïãøx‹SÁ»8€ójõUÀㄈª(ÀEA¤¯ B±P ½-Æû"¨`bO%4úãñL°‡3cÞXC<å²UT—´ 8‡Cƒj½ú à-fÌön©Ó@K¡¤Ž–õjòšf—_}ðÆïÖ&£¿Þ–1ïõ]k:Up =á&´+¸ª'r‚3«©RSþ7 ™Ç°f`ÚŠÉ,ý¬Mu$x­çób’^r—ã´•Ãh¨BúL«QMú}y2$ý…„ú}ØìönpûŸÍGÿi=ÿÇõ” ÂË{éh³œuÜd™hÃ¥‚á¶O/ç·þõ~û_Ÿ”¶¢åO®XÈÙoÌì)¡ÿúö¿X·ÿ¿'ùØ?=µp汓©z>ù¥§³ëå[Ÿ^N)§öþ×8 ¯Ê]û"ðÎSè팸õÏŽâƒÿ$¿ý/Ï€¦Ï?}l)“:Â#æÏc¸ìø«›^àLJíX±´›CfÔèÎôÞ…TbåS_yž=C1V‚–ÈMÿûH>ü¹°~càœãB÷G÷rÄüŽlùS–õPˆj×ú?~t)Ÿø—õüÁ—žEÏl)ËíÌZŸ.éÆ‘ÑŽ®n¶ìØÃðº-ÌžÝMW{± NŽÙÖ7Èö¾!b)ÐÖV¢`,Öš&‰°7™Y|+ZÑŠV´¢™½_ýù=¯ÊQ¨MÜ'´|ª0T)À‚ièÑ9 ›z2ËÄ)@)¥>­ Êþíu’C@:ؑՒ "šULR ‹¸ð Mß$ýÛ$=¹)€²6©D&ÕHcÂq viöJ\©àµŠÑ êd“Æ\Q—ôû à&#EaemD¡ÑÙQ"*ˆ=T 8†GƒÃe†Ë1eç‰âÅbm„Ø‘5`¢P5³€ l‡jµJ¹R%vq°³I¼¼CõÜdàÎ'J¿áü›¬/:;¶9+¼LNs>÷¹áfT\a¢ÐM5ç[þê‚sM¤—ZYò°=°)í%É„ˆ*ª.³È<§Å`3ÿéZÑD¾f['b“¤‘Á&ãÓX‹±bMÖ›Ü=ÕØScâjlc ³Ô$wå5ó`ç&ŒÖjO’5¯µ ‚n©±ÿ°Ö±}óz"l¯eùâæÌïâžGöì•¡á=\|j/¿pxGë©3ÎXót?ç|r-×}rž4ub÷í&ä ïë½ýåí"°}OÌ[?²š_0‡?½òPœ½ÿJb$"µïñ®ARƒœjH®¤4{ç}2ækÛ~§jnÛ ã<ïâ•Ñ^Å) )·O>×ÊP,ͯ[ëÚòïi“e3·’tý¹÷œóTÊU‡‡ĨKZ¤Â>—+1q EŠ%ÚJEŠ¥…( ú)qÊûßÍÎxBW©5Ÿ]1›È¶®›V´¢­hÅ«ý{¶“Tt#›°:£ÌñƘšI\æ+ÿÙÇÏy†¶îdýÇæéK²VÎ7Å]Ò*Zª0-¾þg6™–}IRŽ+9@Î[{?§šß2­­$×§.ù¿³~KâAM±”jÚ‰›Ø`9ŸêLãcň!²Š$ô '  q5™úà‰ºd’샬 vp6¥Š‚:\âj„‰¢Ð·nC…ÜP-àUq#>TÂÅ'z— ÖÔ$eÏÐ/o¬¥P"…Nu µP$©ªÇy‡z_Wü¬ý»îfÝê™½Ž‘+ùùʽ5ù³Ñ5]2@+c}V‚ïyHàÔÆ K¼ÎÅç*™oz6ù÷àÁÅi$´© Ɔ^T.2O8ÿ@FoÏØ#’øù ¿ŒO!RÛ¿±ÆÃ~Ãq³p²ÕÚÏ{,žÓÁ7þt9G-ì<€ìØXæyy@®uŸËüîvËW~os§µQ©jðõZ¿l>”¹p%_윒®Þk8Ö7ðØ0ÆP(èL´)*qŒ«8*>$NM¡@©h°6ˆB‹‘*èX½umµ¢­hE+ÞS÷tʽj=`PAÔÌÓ:íÝ T÷FÿÔf‚pzPÚøŽ•fÕ†¼µŒV¸–¼lZàMÀIÆ€ÏۅăÄ)ƃƒ7ŠSˆ!CÁú±5‚±6PÊ5ïLEÖ,Å(éÃLªîêÎ{¼:œW⪣P²„b$P2T\€š÷ ž˜ÄïÜK’`ˆßÛ„® ÆX ÆB!¯ŠŸ€sçpjC²Aý(úrž ¡H¨ðJ#3Íþ­ÈÁeURLZB²´O `'P"üˆ¶ [C­¿Â4Ñ"‚Š©Uà!´Q¨G½Ç"!£p¨øšV PÇúÔ…¨ Y" ø³ûÌ»]›‚ïZãÃxåÚýMZâ`FO‡åÌcz_çÐøOO!N?ª7cpŒgÁf`[ßÄÃAk Jv(.à‹q`¶xŸ´¦A”X}lHÊÔ¬é~P§d\¬úË6§ŽÙ8ÿØÇužú¹[Óê©oE+ZÑŠVL|¶žÆJ$NÇQ¢ªab­ó`:ÐDÄ(ñ©1ãžæü¢´Ùji7±ó 4{M‰óšØÏuBE,V . VjÖÚ¤úã'x²6²D…ˆ¶’!2E¬ ZÎÅT ß©ÞW« O™@C)-Ôè1T«q°ÕÂ…Þyâ ¨ñcž0ùõà‚`^ì]Rå¯ÓÇÏMÇ3e﫯B^êuxáK>¥!{;R¹Öiœ¡æ“ B^?{M4pˆ=@ŸŒmqŽ8—¸¯GÆ` Š! c0èúÐ{‡O¶k½ ¸å¹©ãky>[ø¼oîIEàB‘(Rœ+æLÝ#¯æøñZ1b7>ê™×ãQ’†Î¶–:ºD˜UÎy4ŽÃg¼¢± â³ÞácÅûТåc{ß =“:8ÿŒÃèÔFG[)£ï·¢­hE+Z±¿È¥)@÷¯ÄÃÓ Ó<é'OÁ…6Q_«õú’õ§¦“cc4™ ÀÉ×ä…·T5i/ohâƒÐçmLýçS°’ðz–AýoÍíOê[-IOƒhÒ“›V±M3b°.¨l[/ˆX FÅ`|8Ɔ>@¡HT4™0˜h Â«Wb¯ûÐñ“P“1†b®TLŒ©jœù¼“èh’@ðè.y_Õ‡INòo—ô:»,bBï~N½î¸ûœvúžoî ^å5Qq¯‰ò¿6Õü¬»ÎîOj î¹ã" ÿ—l¤šÜ(¬uüã m$«˜;©Ñ³ë]lðLFðj’jzÎy·†ˆÅ¢à±DÆ &,ÊqHØ$WJfW¥^PLHZyêé) õÖŸHà}Z\KæƒÝažì÷Ñþ¢-„þê?ìšiŽÛ«q¼W—ŒçÁѤ©[öãî1ž,ÏÞÝto«Ñ}Ü?´‰Ìe½¶i¶KƪBW›%ʲó õÛ™v if­7¾dVCÝÿ K€’Äœ½¨˜]˜é9e¦iÖspв×=ª’Y¸ºäžîU?~Ý]üãÍpHç0ç¼ý82‡¶R‰–P}+V ¾.·«X,R(Z'¨­8ˆ5Z‡Y3Ò`at&K:®YÆó ä*Ú9ðüÿ³wÞáQTûÿœ™ÙÝ$›JHBï¡„& µ,XA¯ ±€ŠQÔ‹%JÑ«^DìʽJ±\öˆ‘Þ[’¾Ù63ç÷Çf7=Ù@Pü9/Ï>lvæÌœ~¾ï9ßRÉ‘»8&Gq5 |² A¯(Ëê¡­„R£$+–JVU^êÊÖÃBTÜœ0CÎóM5PU6-`û§”©Ë2§pÁ“SU1ËœÊùPÔrÅ?Ó4ñ×`¸:#pª)¶âJÐnXÈ›¡K ÃD×iÌ2¡KQt¤ð‚,#Œq âfùÆJ¥²‹Jf²Ü§xå6¬¼˜g; IDAT.L†Hgµþ"ÿ83tYEüý÷ãÊœVí̵Œ&QƒÞ‚¬*âW3YUúhù I{¡7Ðg·* (Š¢úQUQæ“ Þ², ¡S¹rgV²†1)*v¡c±®©1­Íc'Ú® ØM›DÇ”rNO³NA\JHŽuáuû¬Óô?tÖ2×¥ %k^¹$5 ‰n5¬¢Ê$uN]Õ¿W+“¬NÂeÍW[Še^Öý·¬!¬c‡ ®¾?°³Ž×ž®‹_×Y²|=ZÓSi~Œøm Í¢Üü'"-)sè'Ë –ùÍPTa³Ýëtvÿú3Q+6£ Rhݪ™EÒ-4 t]ç£>*“ÇN”U$ Wçåå0a«¡,Xh$‰E«ºø(BrNw?ÑÑM9Ñb‡GHä “yŸ^›ð ê"¥>ëcQC~de!5ý£Ë[]oñ¾y<ßyô}£>XÔÑŸOˆö‰Õ¼ò§¶ïDÔ:Iÿ ¢® »¡IEø x NÔ¸hÛ¢þ WÖo¿\„ž¿-i@æYFÐ+…fFí“Àw#¨±gJÜ.I‘ÍIA‡~ü¼ûgX¾Áƒ¡u«"I·pL0 ƒÝ»w“˜˜HD„ã„oä¼€åË—“™™it ˜õ^µš/+¸\n~Û¿«ÜÔ‚ ,X°`á_¤$??¿ÌÑ\Ã…)u¤) 0¯œUòMÓÄí6)Ö ÐÍ¡ý(Ùµ±rƒNShÓ2 ‡EÒ-#¶Ùl$%µ$;;†üüß‹ ×¶03Œ=!ÿ,X8¶¡&Bvæµ:‰“¦IT”Jž/ŠR¯8Ëæ ¸þGçÿÉ€ø3–Pü¯²6?ž¹Çñ­âÏW»uæNü)»ÿïŸéº”$Dx·uÓ(.+-Ù€Ä(Òü‚J~H¢ð+S71‘„ËÏͺȹ£L^*tI²ìS*)4£8ÐädJÖ/±1°'mZ¥àpØ­F´pL(.VX°@aݺ㣑¥ªàt‚ͯ×Ktt4Š¢âr¹œN'†aRRRÂgx°Ù°6Ÿ,Xh”¯hZ5 ‚Ç(› ãþÁÏ;~go¤â(%]q4Ï &÷5Å[wã@„Qžú„yq”×¹NÈáWé•ÚûUÀÌ_Öx“£žENz¥Fa­<Ä]8$[ÔRa J+jbU:‚h‰õô×°Ò×ÒDcHÕ½"Tl7Æøu´M}$­Ö±UWDÞ¸¬¯}Ão{Q?uô[!j+bý›j¢æ‘ ˜E•#êK[CV O)êm;~ÛÔz]48mµ9EˆšÛ¦Áëc¾¨p]©e®g¾uÏ·¦Ù0eÙàXo¨3Ù`Øs³qßSÄûOË"-¢àØ„ Ãv‚6ç5‘sS–}'%å`v>™¦‚ÇíE)-Ez=døùqÕ¢¢œÎR’Q ŽºÏñaÄM›Â˜1Щ“²ekX±b7Üp‰‰Myï½ÏR2jÔ(rsóxóÍy†M3¬F±`¡19°¬½&›OMð†ò{jÓÔ'ðIê”fDmÌ­6Y¦Šçç‘ìFL¨äM©Gà«-+²v’-‚.{Fà tj£ÉõÐ Q ;«(„Sÿµ’pI\yLï£Ý| ‡ËÆLØ×EÍc'’!DÃO[çõpöÏ„¨ìœ®!éC×eÃH`}{ƒGCîEͳpXmSíº~Û4FÛ‰£HvÛí¸=þã2ì~Qߘ­oÓî˜Ç|-Ó®\{24 s}–päH.¿ý¶Ÿ“Nêþɵ ÿûx1.䜎Яuø"…î7xwñ·LZ}œKÂv¦F¹göšðóÞB2vm¥ðວu£oÿþH£!¯@΃Ľ}jKÎ-Ícp±Ý© ëNt݉ۓÈáœ<6mÙAZ×$%&XÝ ‡:wV8é$•}û øõ×]¤¥´h¡°té!¤49ùd•ÌLƒ˜˜Ý@ KÍÇ‚…F@…¥I«~AÖ,`ý^cOí‰Gs^£`Ô ôõ„6bÚp„.q iCu{´êïǘq|Û®ÁÂx8ïn¤´ÑvÇjáq,×ë%qÅxn@û‰cH{Ô}§‘Ò÷¶9ª÷—³žci»ãVvq‚ôû?ðÝqÝÎI…¶Îd½ÞÐ~¿¯7Art vîŒÏ_Zo!kW¯"±x Ò»%\Ø)Ýð…•ûU?.'¡d› ¥A^òj¹Ï4ÌÐݺŸ¡°fÓ^~YöÙ;V³éÀPâÚ÷§M|`“¡9/ûÄ%ÄÐûÔ|þÀ)»nBI!dlƒB×V²Žâq{¡P-X8QTTÌ_¬fÆ\6mÚL^^~ø±±±lß¾)%o¾9Ÿ¢¢BΦyó–V¥Y°ÐXXˆ²¨W­Òzgm€Y°`Á‚ HÀ¯{ѽ®z…ŸÏGaa>M#ãÐMOiQ½êâOϹ•t ÃÇUVþòórÑÀU"M=®@—~Þ.ü7\«éc?‹þΠp{$Ja32¼[ù×–™ìñÆ™‰ç2.õ>lŠ£9’uÕv[à»øuZÀœi¦ÂÁ±Ãn‡ÔTêÔ96ø8|x799û0 “víÚ±ÿ~„8N6lØ€”’6mÚ’’’BaaáqÌ %†NhÃYÕÔ)ë sbzqhþ€wwY·¡«ÀÄã30DT`¥ªKB¨¨u[S˜ó*QQdP%šòƒÿàõÚ®ÕYEÊšâ›×pT‰«^GÞ¨9TT¥gˆÊ±ÓOT²jûˆ*å©Ú¯ŽsyŽ":Ž ,X¾†½ÌJŠ£¦üBE™~³Â‚¯KƒÅ{?"99Ž#æ!NŠ´Îpäñ›m{ôŸÜ^ß³e{vñÌÀ7iWå½¢m:evö,ÉL)ë¯$ ÂDt´äª«üøýÆq ÛŒ$ _S(ó*ðàA¾ùæ«a,Xh4Ž ZZ-”¬Öd6[>)-ÀîpÔ¸sn×RbmER¸‹•[óØ[Òb»V¿ßœÚÕAZ+6M]h°z—CùF9 ”pR{'··³z§ÍýtLÑ8§{¿î÷³~¿Ÿ^ml´h¢²d‹—Äh…3Òd,þÅÃ9=´OÖxoU)õ‹dÅv/{( 8‚«G±f·Ÿ¦± mšjh x|’;¼ìÌ2PØUAïö6ÒZjDعE3t¶Ô9­‹î­í¬ÜácoŽÉÀT $¬Ú¥Ó!Ya@ªü¬ØécX/m›ªü§]>6йðd‰N•%[½Ì3…|êf€ÄªÇhê¦8½›Ö‰ š"(v›l<`°#K'Á©pj'Íâ/Ù­óí&§t²Ñ³•ŸvûÙ‘Õ¸ŽCZ$(œÙÕÆw[ü.´T-X°`á @Q~ü9EEÅ5“o)éÓ§'½z¦Õ)äkšŠa˜!õïš~kT‚nê!YÄÀÏïaŠŠ<4O‰/sZ~ZXGTUCà##ï0ßelåâ®m±‹¨êŽã(?U¦—R"…uºh¡q`~òòrp»=ØlÚqÝõÃf³Ñ¼ys‡Õ(,4ÒÈ«è&ª’“¸pœ­$Å+D±¼fùíž¡™`óB‰8ü»ˆÂåAÆt«LþMÒ'’Ù7Æ“‘«³t³û/u2eaïüè.¿SÂií‡&¸çB¶fúùðg7Y…F55ê:Ù…&»Ø^d‹Måtj®aW©Í4â Mœ ›kø ɶL‚!ddùÞÕ¢È/‘<ònQ(ï¦øøuxþËRÖíÕyy\¯ÞÏU³òyòš£o¯p³ø/í“nÍe§D°/ǤÈ-éÚB#Ê.h¯ %DÚ]›k–Jöå\Ô7‚Ö‰ æaJˆT8˜o°l›—KúEЫ­ w…6j5 K(ƒ!Cÿ—SO‰”‚HL¾(šùËݼ½ÂH/ê&À•Hk…¿)¹åµ"\IžË¤{Ëu±#”@›Œy¾}9Íâëg6eXoo¯t“W"9µ£Cø ¸š;‰ê›å{EåìZP®P£¸#+E AQªq!BåµÈ¹ ,4(€ÃaçËÏÞÁá¨fƒúëp¹JëTÃ-(,âÝÿ}Äwß/ç£EoÒºes.q»vïeð SA7À„ ¶±]¬Ä£xºDA–¾·YŠÛá*ñrè`>Â.P¢¢£u ÍŸøhW iQ×ЧYT5r^1FºP°ls-’ž’’B¯^½þ0‚îñxؾ}»Õ¿-XhL~N º ‚.«3:R>/¥ù9\8ôLfÏžÍÊ•+¹ë®»(,,Äf³ñþûïsÖYg…î·'»ñÕPrœFZk󗹨Ä@7`ËoþPVLOÂ啜ûp.?lñ°ù7?ƒº:ˆr1Ø“mÚ\ŦA»d•Ø(A¼SÐ!EÅ0aÅv_Úy%&žÁÜïJ),5+•ZØìþ~³—ö2~˜§†öŽ`ÙV_üêEUà©OK¹{x R4þ³¤”—I§f6A³x DØ c3|—Éæßü L l.Y#»ìäºÄ#Ùš©ƒ„[‡DcJðúM–nõ±+ÛOV6¢ì¯_r×ùQ\3(»&(r›<þ¡‹‹OŽ mS…– ‡Meý~vMÖÊF±Çä‰\¼û³—(»àƒ‰1¤¦Øðêf­‚b”C°àöz·²Qâ•<²ÈÅGk¼¼u{,]Zh¤/*Åaƒû/v²)ÃϬ/ݼx}4ñN•}9~®z¾„#.Óò“hÁ‚ á zôèJDDD5AýÀƒlÚ´­Îô]:wdÎì™Üy÷ƒ v%ªªàr•rÓc}õeÇÁF]"¥HÖïÜâÃ?Ñ,9–N­›£…<ßa¾÷H´£%ÙMuˆäÄ8„C +IQ±ŽÛkr ߤWr@Ωj‡Š®€i†gêUPP@||<.— ‡Ã¦5ž ³”’¢¢"¢¢¢0 ¿ßÓéüÞ…cwEQBŸ?Š¢ ŽâtÃï÷STTDll,6›ÍjL *@EE"10Q‚:ï‚€CQ÷Ú†,[lž}öYFŒÁŠ+8餓xþù版ˆÀf³qÆgÔ›‰ éÌÛ?z(*­N¼öfìÏ œ¦cÂŽL?6žÇžßü¬Øî%)V¥cŠJ‚S%¿Ä¤SŠFûd™­õÔX˜7—¹yµ›§4¡Gëš'Ý¿.±k$.JA7@7Ê<Þú%ª€è…Õ[}ì8¤Óª‰J‡5tjÜ>E£em™~~Úéç³_½¬ÛççÌ4žlʸsD9^¶fúèÓÖÆå§DrvšNÍm¼üM Ù…’˜ÁÒ­>lš`XO;-z·ÕØyÈàâ~"ì*ó–•¢U…s§`Áô7n¥_¯_¶Lƒ—ÇÆÑ6Q%Ñ)h›¨ñïÅ.ŠKMn<+ŠW—¸yg•›óz9hŸ¤†êc`ªô+£IŒì8¤‡öp¤„Ö‰ ÃOrï’¬Ú¥cJØyÈ Â&xà'çõ¶sÏ…N¶fêœ=-‡t‘vÔÙÆû?{ùßj7çõv°+Û`æG%tHR¹ô>ží¤;/WÊ}ï¸jê’èÌù{4:Úyc¹›_÷ëü{L4›«Üüz1ª ãÏà¶³#0L“Éo¹øï¸hн’ç¿qÑ6IcÁ­Ñ¡0:,X°`á÷òÿ~í•ÜxÝ(JKK)..¡gÏnÌþ÷´ñ8ó±ßÄ”&í8´Yá‹/ö°{&ª¢ (*›ä*¾m±€Cƒ7ÑáÌÚ§&“œKlLþ#*ñÙ͈ÎwRê”ÙœW!çA'qe[ae«wïÞ¸\.öíÛÇwÜÁ/¿üÒ¨Åöù|ôë×Ï>ûŒgŸ}–áÇ“muB ¿|>óçÏ笳ÎbõêÕ5Þ³víZV­ZÅÎ;­ ³ð×ÚxC ª4”ÊÂp!ÊTŽ… ##ƒ+V°k×./^L^^sæÌaüøñØíö:× ï—ŠÞTCªÖ Œ~&›æä#T@|´Æƒ_tm8ôÏÌ3p{%Oމc®Î»+ÝŒ=ÇIë¦*»3õZË¡ xù›Rvf¼1!¡âkCˆ4o¢„TãýFÐ~9(Æ:˜1¶7[ÇnüsD4?îð±j§©—GcÓ`_¶¢ >^ãáÖ× ˜ýy Ñ*S/‹¦GRJÞ[í%Î)h¯°5SÇç—ôïè`î’R¶ÔYð£‡|¤µ¶3¨‹g„¢Ÿ<ü´ÛOtÄ;Uþ³ÔM^±¬V˜–‰¦)ù-ÏħKœ ¶2½‰=9:O}RBÆÓ„yËÜ|½Ñ €VA|ÉV?×Ì) ãˆAï¶Zè÷¦Ñ‚Ž¡e…o6{Yð£›*ødÓ„Ôf N…h<¾ÈEN‘äÚ—ŠY´Æ²ŸùI)_o ÄÃýn‹y+<˜e&RJš—™ <ý¹;ÐY«sdàd E¼Š@’™oâ36Û/™ó¥›­4:7×xö 7º„”8•¢RI¾+à ¯m’ŠÅÍ-X°ðW'Ì6›­ÒGUÕzDQã'gSBvíÚËÆM[C¿åäaé+ë}ohhÀÄ-iêè¦É9©Ã¸ã”—qòu´oÕ )M K\øü:ˆ€ ¤ë&.·‰]D0$ùv.2o£ãÞdÄá½È2bnRœW4«SÀ Ó]AAAË—/µCcÂf³U;ñ–}—…ß999¼ùæ›lذÁƒW»þþûïóúë¯3wî\^~ùeÖ¯_oUš…¿ ¤40¼n¤îA†éÆ"°«ýßÿþ—÷ߟx€èèh\.†aðã?¢(J¹š{-ðøM¼~Ɉþ‘D9ÊŒÍ*‹mpíPà»õ^~ËõÓ¥…¾]ílËÔ)òHÒZÛØvÐÏÒ-^’ã¢ìéµ °'SgÒ¼² ª«ž™Ú'kœÚÉÎ2ÕûÃ:šitocÃ0aäièä À/ûüH)锢±f·µ{}¤6Ó0¥dÝ~?B<Þ®Ýãç¡wKxüƒ"⢜*¦„Özqû$guw°èg׿PH‡d•ÿÞÏ'9Ðxä½’b& ur0Ï`Õn‰oñÀ;Åœ’7n§]’Z£=µ K%ïÿäᆗ 9”_Ac¡W•êvÞ†6¾Ûâg_ŽAbŒ0u0`øÉü­‹Ý‡uþõq)6U øz£¬Bƒ®ÍmôïP·¡©„ˆ·"ª¿?¶­†´ºQæ-·‚C¸‚RÉ|Ü2·˜ý¹ B¶€!õ²gzu(òHîy«„I ](²G·`ÁÂ_‚e?¬äúïছ'rÓ͹qì],Xø^­j´R‚ªªhZõ¢ˆzO<Äc'²ú§_¸ïÞ;ø÷Ó‘™™ÅÍ·üƒ–¯ Ÿ@6„¤&†”¨ŠÊ•}à³ïÅÀ`çoY|µôWV­ÙiH¤”…ÚdôòØÐ„Ë“FQâÇ›µ—ý›V³'׋yð#Ü»ÞF÷…lσŠBØjYBLÓÄëõb³Ù˜ æSRââàÁßÐu£lÁ=ÈwÞ‰ËåªóIŽ˜ü°ÕÇÈAQ¬Ýëã“5þ3>žW¾)åýn>¼?O2꙼îý¶C:ç¤1¤—ƒ}\Âî,©vvÒ)p™¸<`·Iæ.- œÐ r V‰ó+°9Cçº øòÁÄ1œ0öì(Z6QûR9Å&ï­òpÛ'§u¶±-Sç¶sl?¤óä'%hªàÝ•º<†h‡ÂÁ<­lãÿH±É{+= %w_Í}\ó\ÍâÜ>I±;p4oš’=‡ Nn¯1cT ‡‹Lîz£/H$)6ÐBköêìÊÒ9©ç¿v³óμñ±d1™ý…‹™WÇa/#Õf@S@Q`óoÍ…3Ól$F«Øí°r»¯l&ä¼­¦µÚ¦Â¼ñ±lýÍ`í^?][ØØ•å =ÛhÜxF$Š€›^)bw¶Ž¦– l ìÈÔù[šƒÔæ ù¥’©#œLš_Âs×EóÎj/fÈ‘`E¥¼‚ÎåæúÕƒ—Dñk†º7Â.øôÎX–mó“¾ÈÅÖL?½ÚhœÞE#&R!.RðÓžÀÆÉçE²ó¦ÂÄó#ùv“ŸíY:­›( è¤Ñ«¥ÆÆƒ~¯÷…ÈÀ‚ þ °w_‹>ü,DÞ¤”$$Äs͘+¨)â™”’¿yq¾°°ˆ¯¿ºÎwóëúMüãî۸뎛Ñ4øøXn¸é.öìÙÏiû7n!¥À4 ¤)1$ÄØÁžËkï.ÆSªï€îˆ@ô*A(:g(ñü=1[” H؉7³3+KsH*ù˜6[>Æ.¡ám‡? <ÜNÐÃÜ@ÈËËcÙ²eDDDpóÍ7Ó³gOvíÚÅ£>ÊîÝ»5j]ºtaëÖ­Ìœ9“ÜÜ\† FË–-Ù°aO>ù$÷Þ{oèyK—.eíÚµ<þøãx<FŽi9õ²ð»àÈ‘#L™2…'žx)%£Fâå—_&55•iӦѶm[Î;ïÛàãäv~Üîçã_|\ÿ·¾º?¬Bƒƒy&ÅnIv‘DÊ€÷üRxË|æ›–J4E0i¡‹6MU®É%} ŠÜŸ?и Q NGÀöþÞwJ‰Žœ™æ@U`ÉV̾.·žù¢”M0é‚(Ò¯ˆbÜë.žÅ…½¸ý&;ט•<Á[°`ÁÂ_ ÉÕWàŠË†W4-´_ñ^¿®³ôû1ŒÚ Ùí¶:c™wéÜ‘{×a³ÛBÑ.¼`úÏc IDAT{×ápØÃ “ ÔqGb˜RšeÑ[Ò‡ü‹_^YOŒó ¦MÁ£ï罟.Äk›ƒ³}<±1v„¯Ý†3*ͦáEDúr@xÉÎTØã(¤kŸ€¥—eK eÃc¹K)騱#iii”––òé§ŸЩS'ÒÒÒÈÏÏgÙ²eäææ2vìX4MÃï÷sË-·TzNII ]»vÅçóY§æ~7˜¦Ivv6;w ##)%ÑÑÑtéÒ%Àfüøñ|òÉ'DDDC¾qãÆñå—_¢ª*¦iòñÇÓºuk:tèÀ­·ÞÊš5k¸öÚkùå—_0 ƒ3fðé§ŸÌ"›7·*ߟÎ(Í:6¡¤¤”’âÒê^Ü…u­ʦDw»œhÝ_ëd_~ )ñk‰HÅ^ã}?nósÉÖ¼ò} âBƒ3Ê ü\Á í?ß»øÏ÷. 8à¶W ÊÕ—aÓreê̪ ·¼ZÀ¸W PUH¼á¢¢·„o6zùf£—ç¿t…ò 3T½Î)4¹õõÂò‚IYfÈ_¾§1üÉü€£½²Sá¾÷ò¯”åÿó_½|¶Î[‰¸¼’ûÞ*æÞ…%(”‡þ’NÁ…€S:ÚèÕÖΞlƒíY:ŠwÏ+fâ›Å¡g*" mÔsùH$Š"ÆÌ) èªF5ô.ÿÈF pFn~µ)%ª"X²ÕGÒ¸Ã(jàYw½QDÈó¡ü|¶Þ˧we—õ™`545ðÇË<üw©;ÔG^úÚª\EÀÊ]~¤,FU`Å.?ÍnÏFQyë:ùB€]˜&\úLQHóYV'ÀÀGòlª@×%c_/©2NøûKŘf ßóWxCí:ô‰¢JûRªåÌÖ‚ ahšV£ísmD92"‰yÔïS…(gT¥ç+Š‚ÓUç{i#Â01ÊNÐ¥„èˆ8¾¸m5+˜84I»øÎ¬Ÿß¯ßG„$â“£1ñSéðBäS ñ1áÙˆq$b;!íIå!FôA–5øEUôš~3MŸÏÇ÷ßO§N(..&'' wüôÓOôëׯRýYäÜÂïºá'e¥þWõo€uëÖ‘““Cÿþý¹á†1bS§Nå›o¾©t_TTT¨§¦¦²}ûvºuëFdd$sæÌ¡W¯^<÷Üs1dÈ«ò-ü)e£Gçòò4òòŽâÊ'ð0ô{sd[ÔèK0H L{RÍvXµÞ×’Jq«ey|lQázMiB¦ì5¸©¯û»¢£wE5yQ=¶¸RÅËž¨²[Q5Fw5µ{Qþ^QdRæxfÑ?0LɬÏ]¬Ù­cר7¼âEY,uQ1ïRT*—¬Y~¨ìЍ’ÏòÌW,¦RµDåz­üj9kz–•7.ªÕm•öU­R2ÚK m*TËC…~V)¼ ,ü…ëÚPäÉzI´PDƒß'e@ó,œ ¹!s¶¤¡cš²’ÇuUÁm †éäÝA#°yw¡`èHCÊlêË„W‡ìDDéØ"MzÄ·ÎFAÒÄI3ëšB¡ë:RÊÐý¯½ö_~ù%º®sÑEñÁðÊ+¯Ð¬Y3t]gذaóöÛo£ª*‡þýûÓ¡C.¿ürvîÜIjj*+V¬`ÆŒøý~¼^oèÁ÷Y°p<ÅàÁƒ™>}:—_~yHÓ#ˆçŸžââb®¿þzÎ8ã ÆÇÙgŸÍÌ™31 ƒ .¸Ã0*¡{ž={²råJúõëÇâÅ‹™9sfÈ– FD8$Ú@Ó¸HJmh7Y¨Õ²”‚-Ã4Ë~x««¨l×Fl©‹ ‡ó̪ϩçQO¾ÂÙ,¨íùUó‚Ø“_ÿbn¿d[¦ Q'jÉLå cƒ œ:®¯Œµ¶•¨V¬ÚßY[]Öb³Nm+á”Óbä,Xø‹#ÓX!ë˜Eù .ÁMUQ}£¶¦4U4óDYüæºOßÛ̲áRE0À;ÍŠ^×+ü-%(…ûHLˆÀoxñ›F NL=o‰ 4ÏMÖ¾Bb›HbÑ HÝGÁ¾Uè©d” GwYïRóꫯҾ}{&Nœˆ¦iìØ±€&Mšpî¹çòî»ïÒºukÚ¶mKÓ¦M9ûì³øüóÏ)..&99™3Ï<3Dîív;]ºtášk®aãÆ!x饗èÝ»7iii 4(wÝ‚…ÆFtt4÷Þ{oȩۥ—^Š‚Ç{,tO›6mp»Ý´lÙ’Aƒ1cÆ >ÚDŠŽŽæ‰'ž 66¶Ò³gÍš…Ãá`À€hšÆîÝ»B„Æ… 6h*4‰DÛT|qju÷c"ÛŽ ðùzo,X°`ÁBC×)%«–ÿ€Ïë­wq1+ØSoÙ¸‘̃{ÃzÏëCÈr-§ ¿¬%7÷pXi ]¥=fiD‚©û1ËT܃äÕÉyð]‰@Ö¦¯ˆ. SQ&(izí´îæÅ0â0 /†á#/Û /S¡0/w›!ÝDR’Ô4eˆüç?ÿ 9Ò³`Á‚ ÿÏÄ)i"  ›&*«¸SÃ’i6ÔIj#É|GuOÐÞ»^±¤ê_²²=rƒÒ7캨óŠ8Êç˰óVÿ=â(ó,e?Æç‡ÙvÇúþc/{Ý홿£¿.ŽñÙá§—uÌ¢Þ^ÎóE#Ôh„va–°ÞZoÞEÝ¡šE=/²¾Ù¤†TøéXê¶1Ú&üº•u?±ÊÃÂí¢ž›Ãš«ëx‘¨§Ý1aKÊm¿ß‹ ûãÏ'#þü†Ëf +å HCbÊÊ6èfÙiºQ& 4¿áU ¿šGjËo±Ûí—x(8RH”SA³B¸ù0t?ÎABS•¤ýÙ?Ù÷Z¤‰4U„tÏzì5\“ó> ,X°ðÿ…¡›(ÒWæ‹L¡ÎíXÄÑ Nïò;3ô£u #Žæñ O$ŽCyj%Çâ^u”lNCyê¥âèE•£wB+޹ÏÔxkƒYeÝ(¬¶«êѰ¡EG? ‚ŽôކÖ×îâç q4OÇq´[ a2æZkºáƒ_eyÂ%è1ý‰”çèׂš™¬8†՜ЀÞVûíá‘>ÖËï)€e,K †)içï±ÍÒ¨ â^•œ—Å0OJj‚ë´ (Úø Gr=lúeû·dÒ¥OKºõmŽá3ùuéA<{Æm’ãkŽÑs’œÄEÎÙHS‚jÉž,X°`¡îõZH¤Ä@¢…¼H0‘å§!L§¥lÇí²BtXhˆ,u|ˆØ_¼î —Ÿ°“Ïï^oÒª¤?m]ü%øÿ÷¶“ãp‰¤y‹¶´HnÎoŽ-¦nˆ¸Y39ë»Áº¥;Ù¢ä‘û››ÃICQ³2é¡*è~]þøí¸–}3Nr¨©$¢´N°!˜Çï»}kìY°`Á‚…zV:Ó4‘¦*•OЫX!(,(âûVàõxËIº¨«SÖ½°–?Ò¢g'®Ì(­d§T¢Öká¾UÖ‘Çš®è}ïxå/à1øÏS^Fßkh™d#ög ,4!Ð4-l¾Œ¨šœ”D¿g#Mß±ÏC†‰)e­ä<ø[DJG’κ—íïÎäÀÐ7)Œé„mË4¾xçCü~õ?Àçì€+{ íÖ̤¤÷EDEÅa”©Ý›2"Ô efÁ‚ ÂYñd{Ý*^ÜeuƒB!(-uóÎ;ŸRêvSXPRš%c¹9¹µ¨¬ŽúRRRPÊâ æçàñz¬68¡X“$!!Gd†n“Ž^dÏKlÚ4d/ì99¹˜†Ir³äjЦ>¯¼#GêT}ÔT•¤ä$@päÈ|>_µwjšÆá¬Ã>,¡iÓ¦hvp¹J)*,<=ùFÞ©26ò ðxŽ}lDFDŸÏ‘Ü\|âþѰi6š&%›‹ìÇ1¥‰3ÊIl\,RÂá¬Ãea—*·‘Ãî IÓ&äÉÃëõÖ_·Rœ’Œišäæäœ mnÁÂ_~±á’‹/`Þ¼W1ÊN±ÃaèyGrùàƒ±kv|^ß±fS‚Ner^°+6š »CiבkÐD3é){ßøŸ´Ñ«ëß6 Ýøõoch$ÄØC!Û̲òIÓ"è,X°`!¨H¡2x‚.ËÍóªt)‰ˆpðö;ïðÕW_•Å0”¼þú\²²sã7ÔêaH¸ýöÛIJJ¢OŸ>Ü{ï½,]ºô„ªŠ¸¸8âããÙ¿ÿ_¢é»téBFFn·;ôÛù\Èõ×_Gaa!—_~y{>z¡bÔ¨Q\vÙåxêê«iÓ¦- `Ñ¢xúé§á9ͨ:6î›2…%ßÌÏü·Á̘1ƒk®¹†-[¶œ0c£iRS&NœHÇŽINNfèС”––Ò£gO¦L™BBBC† )#à•Û¨g¯ž¼üòËŒ?ž+V„~oÛ¶-…Tº¿{÷4ž~ú\®&OžÌž={¬9ß‚…‚¢ƒÓ™ˆiHLÓ¨—œ|óÅçhb'1uÓ0!Ö*s£Lå½¢ó8!:&;i«“­!ý#ÈÍØ™£•ÔŽV vb"TúvJ ØcíPqÏËž­( É‹» ,Xøÿ DÅD¢› ¬J¤¡f•Pa•TµLÓ¬w•R2uêTžþùÒ†=""‚{î¹'@êþèÚµ+ééé4iÒ¤ÒïóçÏ#''Ó4å=Ï=÷¥¥.222xàûY¹r%“&MB×už{î94MãÍ7ßdÊ”)ÜsÏ=|üñÇu>OÓ4&OžÌ/¿üÂC=R¢i•½î¼óÎ;¼ôÒK•~›={6S§þ3ºàS3 Ž9sæ”™‰4Nþ¶lÙÂ3Ï<ÃáÇylLš4‰¡C‡6J¾<ÈäÉ“YµjU¥~¶råJ~þùgLÓ¬uŽØ·oO?ý4ûöí ýÖ²eK~øa:vìPíþ &ARRcÆŒ±æ| N0”¦ ?£ÎOaÙ§q ¸˜F€Sùä]AS”2÷²°#¢ïÑINÅïW^y%ƒ BJÉÞ½{™={v¥¤Š¢T#H©©©ÜqÇH)ñù|Üwß}!Áý–[n¡[·n¬]»–yóæžžNtt4Š¢„ò0eʼ^/§œr cÆŒAJIqq1S§N­³"TUå‰'ž oß¾œ‡zˆ‚‚‚FmøöíÛ“žžNóæÍ™:u*‡]»v1gΜjí2qâDfÏžÍöíÛIHHà‘G Õ÷ƒ>ˆËå ‹€–oüˆPÛVí S¦Laúôéõ>K×uEaóæÍlÞ¼9t­oß¾Üpà x½^<ï¿ÿ~µv®Ú÷"##™>}z¨¥§§säÈ‘zËôÈ#‚>ø€¥K—b·Û™>}:ªª¢( ¦irÿý÷‡ÔÕ¯ºê*ˆ”’}ûöñì³ÏÖ;6:wîÌwÞÉ /¼ÀöíÛ™1c;vìàµ×^cܸqtëÖ !ëÖ­ã7ÞÀápðÄO„êkÙ²e¡2Ç@qq1ÿüç?ë,§¢(¡±‘™™I÷îÝ1 ƒûî»]×9ï¼ó8ÿüókéééÄÅÅ!„à­·ÞbåÊ••Åc!ª•7ø›”’öíÛ3yòd^~ùe6nÜÈ“O>°Y•’µk×’™™Ibb"3fÌ C‡Œ?žââbrrr˜6mZhó0øËþÓ‚…¢Ú†\MsÃñ€iå6èed\/³Ú ‡ˆ:kÒ,‘ãg’ )A7'ﲊ7ø ñWÊö^­t ,X°P7AÝèf`£WJ@ KQ@QA(µÇµ5 “±cÇÒ©S§ð{Ægpûí·óÎ;ïðâ‹/2bÄÆŽ[má­ˆ&Mš0{ölvìØÁÔ©SiÑ¢³fÍ`ôèÑŒ5Š9sæðÚk¯qÓM7qÑEЫW/’’’Xºt)?ýôÑÑÑÌ;—:0mÚ4V¯^Í“O>Iß¾}ë%Ô†a„N/—-[Æ£>Ê´iÓ0M“þýûsï½÷²hÑ"fΜÉ9çœÃ¤I“ê|žÇãaáÂ…ÜqǸÝn}ôQúöíËôéÓ6l7ß|3 ,à•W^aäÈ‘\{íµtïÞž={мysúöí‹Ýn¯ó]ÿûßyûí·Y¸p! .ä­·Þâÿû;v¬5MFFŸ}öš¦ñ /žžÎ›o¾YéžÄÄD®¼òJ6lØÀ¬Y³hÞ¼9¯½öº®“žžŽÃá`îܹakCtìØ‘… ò·¿ý;î¸ǃ]×¹ûî»yûí·éÛ·o½ÏyöÙgÑ4SN9…wß}—´´´Ðµ7òàƒCŸ>}ª‹5äuîܹ8NÒÓÓñx<¼öÚkõÖ9À‹/¾È“O>É’%Kxøá‡IKKCQúöíKII <ðN§“¹sç†Ò|ùå—<ñļøâ‹\rÉ%Ü|óÍõ¾'66–þýû‡ˆnŸ>}èС#FŒàª«®âµ×^ã•W^aôèÑ >ŸÏGzz:K—.eàÀDGGЮ];}ôQ~úé'ÒÓÓIKK+3S©K€5Ccã‡~ Ã0èׯ÷Ýw~ø!3fÌàœsÎáž{îàñǧ_¿~¤§§óý÷ßóøã“ššöä”’’ÚÚ¼y3¦i2}út>ùäN;í4âãã(((à­·ÞBÓ4æÏŸÏc=ÆóÏ?_iÓ§¸¸˜ŒŒ žzê)kÖ·`áO¯×÷»¼Ç4›¦Y39l£r²/7Ëȹ¬NÎ%å*ò”©¸[°Ð¨‚¼µñlÁÂÿÃq-0LSøý š"û»&’²_*ïøš¦IÖ¡,¢£‘œœ ÀáljˆˆÀf³qçwâóù8xð`e^5L&Š¢‡Ûí¦¨¨ˆk®¹&D¤œN'v»¼¼<"##q8DFF†ÒêºNqq1†a ë:ñññ¨ªJTTW\qÆ #777,‡[ùùù¸ÝîÐwœFFEEQXXÈ‘#GPU•˜˜˜z'Ì‚‚¢¢¢ðûýäåå;Þˆˆ4Mãÿø~¿¿RÕtŠPæÍ›Ç‚ j$VumH”””„ÊÌ_E9r„éÓ§sýõ׋¢(ÄÇÇ“––ÆÓO?ªªaž±gÏÆ:YBÓ4ž{î9–-[VïF À¤I“X¼x1?ÿü3ÿüç?+Õ‘ÏçÃçó¡ëzX š‚„„Ce*..®wÁKLLdΜ9”––ê÷åÂ¥—Ëê“PŸ8q"]ºtA×u4MÃét6xÐ !P…E‹Ñ¥Kî¾ûn{ì1®¹ærssCåËËË£¤¤¤RýìÛ·ýë_Œ7Ž;wr×]wqðàÁzß쥥¥5Ž¢¢"òòò*à†Â‘#G())!::MÓÂ6EaÆŒdff2wîÜP{æååQTTT­/!„ ¨¨¨šöCqq1 °°°QïY°`áøAA~~—Œø;ÏÍžAï^ÝÃ# ²Â§AÝ,ÓØ©BÎË> v|W%çFÙoÁ´RV&ç²ìZP²²Â [hÌñËï÷Wz^Cv èDXƒdpÛ¶mÜyçtîÜ™æÍ›×kÿÐC‘2ç˜5kVµþ\uƒeÈ! >œ+®¸‚¬¬,¾ýöÛÛ²ªjg^^»wï¦OŸ>8N|>¿þú+mÛ¶eÕªU<óÌ3<öØc4mÚ”‡~˜ß~û­ÚFD0o111!¸í¶Û9r$>ú(S§NeÍš5aîÝ»“’’Â’%KB}"àƒÂ¬46*ö¯`=WÝpª©Oÿž0aééé<üðÃÌœ9³ÒæCÅù£jþ‚æ5ÈÍ›7¯ÚF¡ N<²qèÐan½}2›·lgèy#yç­W8÷ìÓñ׳éz´R õH w@[Ð,#ûB‚”{de‡qTòÎ.+vYØWüîàUk ,=w Ô%-Z´Àívó믿þaù0MŸÏg‘t kl› ÁÍ^M„ÜÄI„¡T¨«(ª¦†ìlE Œmܸ‘7rýõ×ãv»4hPÈfYÁí·ßN‹-RrÉ%—ЧOæÎË¢E‹ùä–.]ÊîÝ»Y½z5W]u¹¹¹”””°xñâ°'­aÆ…ì„ß}÷]öíÛÇöíÛ;v,>ŸSO=•‡~€Y³fQPPÀ¿ÿýo~üñGzè! Kã¯]»–íÛ·sã72xðàí÷…^Hbbbèt\UUl6†a0oÞ<.¸à&L˜À°aÃxï½÷X¾|yï¹úê«‰ŠŠ¢eË–œyæ™!bÉèÑ£¸è¢‹èÝ»7‘‘‘´nÝšñãÇ×ú¼›nº »ÝN×®]9ùä“+m*téÒ…óÏ?ŸV­ZÅĉÙ¼y3_ý5W_}5­ZµBUUúôéÃÝwßÍ›o¾Éÿû_FÅ„ 8묳øúë¯ë-Ó{ï½Gjj*wß}7%%%¬ZµŠ«¯¾š§žz MÓB$UUÕÐØØ°aëׯçúë¯çÈ‘#¼ýöÛ 8.]º°cÇŽJcãâ‹/¦wïÞ¼ð ìÙ³‡Gy„^½zqÏ=÷àr¹xûí·éÞ½;&L`À€ЪU«Ð‰¼ÍfãöÛo§]»vH)3f ‡báÂ… 2„#F°}ûvE©æ$°&¸\®Ð½ä’KX¼x1K–,a÷îݬZµŠ‘#GröÙgãr¹øôÓOøßÿþÇ”)S˜8q"íÚµãÛo¿%++ €äädÆŒCïÞ½Ñ4 &‘‘ÁæÍ›éÙ³'6›ÒÒR^yåæÏŸÏâÅ‹Yºt)ãǧeË–H)¹ì²Ë8å”Sxá…صkW(§œrJÈD&ˆ‡~˜¼¼¼P³`Á‰‡¬¬lnw7«W¯r×^7žÙ³¦sùeËð_RâåÛ/¶Û‘H¤)NÜL"ë!Ç¢¢2¯®¸5,ª ­¤y(A"ÉCàr¹‰K²£(ªÅÒ-1÷ûýìß¿›Ív¨¹»ÝîJ~_,X°pôcÜ4L¤)0ˆxdùEÐTÉ= ¤ƒ‚üìܱO?ÿš_œGç.ùí·ßq³ŽP§–-[’˜˜ìwïÞ"èÝ»wFOÓ6nÜHTTTÈ–Ý0 6mÚÊdûöíCj³ùùù¡Óænݺ¡ë:;wî S§NØív¶lÙBBBmÚ´'®á†˜ŠŽŽ¦cÇŽH)Ùºu+þ²ØÑ)))¤¤¤ „Àív³cÇŽzŸÕ¹sgæÍ›Ç믿ΪU«ðûýlݺ€Ö­[‡NŸ‹‹‹Ù»wo(¦i¤¥¥‘••Evvöqí­[·¦I“&ø|¾PÞÚµkGLL ~¿ŸmÛ¶…ʼÜlR²eË–zÕÉSSS‰ˆˆ§ÁA•ê`9+ö…šê£*ºu놦i!ªÕQ||‘Jü"•ç¡âó &†R–+Q±6<…aìéqkGC<ûJ>ë6¹”çbXš·¶ÅvZ+Ô ÇšÎ5¸Zc™0¤Ûîjúëo.ç±éóåø‰`fáÂ…¤¦¦‡8pà/fnuQw222øË_þ‚Öš””Ȇ äÀ!Ž»ý@ì+@ÿo}ìm'aÀ`ï­;v±yóvv—v ý~bøØAŸ‡F êÓ¼ÙÉÔKMÅ0¤]B]«Ìst¬î[# ”¡~²›®R‘æ¯ÇÂ+ÝÌ…B{'ÈXn­±â3Ei76]©ýwÛB!„8X†2رí¶ý¸ íþt ¶Fãj™G\!Ä/!8W¸•9Q¬€×ÀÅÅucÓƒ˜š !„¢Žmܸ‘gžYH¨(!'@Ç%>;‰e™:Œkcÿ-èiiidff²~ýzB¡PìNff&ÉÉɬ]»]™¥µyóæ$''£µf÷îÝlݺu¿Û´jÕ ­5ëׯ'W{þ´ÓNÃçó¡µ&//]»vS?nmÛ¶Mt÷Û¼y3%%%RO…BˆC´téRÊËË1MãX9Û£µËwß}Ï’%KÈÏÏÇ4Mù Ä‰F£¼üòËx< C3uÚ¶mV­ZÅÎ;ùä“OäƒâpBt à¢4X~SÅâuMe÷X’w7ñõ‹ÍCšLbÈ!üæ7¿áé§ŸföìÙ8ŽsØ;3hÐ :tèÀ¯~õ+l;6õÊ9çœCóæÍ¹öÚky÷Ýw3fÌ~·‘’’Bß¾}éС7Üp6l¨öü…^ÈI'įýkž{î9fÏž}ØAõe—]ÆòåËë$@ïܹ3'Ÿ|2;wfàÀ|ôÑGRK…BˆýÇûìígš&™™ÍðzëQVvlìl(T€Ç³¥| ¾q>ŸfÍZâºA**Ž­……[1MS곇œèXp®Ëc™èÊ)Öb-تÚt£Zk</>ø É)É 8»îº‹ÔÔTÆwØ;ôä“OòÊ+¯àV™reñâÅX–E÷îÝ«•ïKNNo¼ñçw^­7 žyæÒÒÒ¸úê«h{?eذa´iÓ¦Nt×u™9s&çŸ>—^zi¢Á:t(III|ùå—¼úê«R»…Bü²®hô¾‚°¬_|‘¿ÿ½'+|¾¼Þó ÃP‰kŒx¾ç±AÓ¦a’’ fÄ!ÆaàºAÞx#…ï¿?B_) ñËäªuXkaTÎó¤÷Ôé¬,ZË '!êâ|¶ç|–ièØôj®Â¡Ê3UX–E‡ÿ×eË–±råJn¼ñF.¼ðB:uêDÿþý:t(ùùùÌ›7·Þz‹E‹bs—Î;ŸÏ‡eY̘1#Ѧ]»vŒ1Çq°m›?ü°ÚkÆ~ªóûýüå/A)…eY<øàƒ‰Ör¥b]m&L˜@$á‡~àÏþsµíéÄMˆ˜úõë3cÆ ÇÁ²,Lnnî~ߨQ£èÒ¥ Žã°páB<cÆŒá‡~ E‹Œ7.Ñ _¿~”—Ǧ’¹ë®»èС7a„½~|kççŸ>ƒƶmlÛ¦oß¾‰m\|ñÅÔ«Wo¯.ýB!Ä/"@ß×…;àóÏL€nYpÁš¶m ¶lÙÂÇÿ—Ž/æ„Nbݺµlß¾Ž;bš&Ÿ~ú)›6ýÈé§ËùZºH6n„/¾¨õrý°¥¦B§Np≊o¾YúußÑ¥KgRRÒøðÕtìØ‘ââV¬XAãÆ^¯‹ÄçBÔ…=_$ÃT`(P˜X¦Þç™Ðçó ±,+QšœœLff&^¯Ó4iÚ´)‰ç|ðA†Îûï¿ÏÔ©S9餓øæ›o¸å–[ÈÎΦiÓ¦t÷-‰0räH† Æ·ß~ËܹsINNN¸¦iòðÃsß}÷ѹsgîºë®}nË0 -ZDaa!C† !77—gžyæ'Ç„Mž<™ÒÒRvìØÁí·ßNïÞ½Ù´iIIIÌ›7Õ«WsË-·à8‹-àÚk¯åÆodìØ± >œnݺqÇwì WÕ¨Q#|ðA>øàúöí‹aLž<¹Ú2={öäÊ+¯dêÔ©R§…BˆšW.zÏÿëúÏ4áÜsáÆ :uÊ!%å .½4^½àüó7qÊ)ñÛßFéÑáU«/pÝ€ ùPÄa×i×=2u:) ºtë¯Wœ{/£{÷2zötiÕêsZ¶\Åõ×+®¹¦Œ ÞFëïˆ Š•]ˆÃ Î5TþY¦ªÆ¥@kµëÒ@ûöí?~ú(ëÖ­£qãÆX–•DãË:ŽsÀݺÏ=÷\ÆÇÚµkiÚ´)'±½ø6***‡Ã†QíFÂ^‡A)¼^/Í›7g̘1¸®Ëš5k~rlÛFkëº8Ž“èRß^¼…Ûu]|> gšæ~÷-¾ÿñÿçää0lØ0ú÷ïO—.]˜6m_}õUµuZ·neY°eË©ÛB!~yËQz]×Õ²}{ˆüül¢Ñ òò²Ù¾ýGŠŠò …Jعs;–eQZº¥\ù°Ä1Ͷmrs ؾ=ÂîÝD"a²³w µMii1Zk¶oßJNNåÈ”OBÔð6 ±LÓÀÐŽèZÕšxE)Å'Ÿ|„ xâ‰'ÈÌÌàûï¿gýúõ\sÍ5”””PPPÀÇ À<@EEƒæ÷¿ÿ=÷Ýw_­cÀãÝÓ«rg¯nßãÆcçÎ 2„ÁƒÓ£GD€¬µÆ4+ÇÓW®[µ›|ÍíÅ—_»v-Æ ãâ‹/¦I“&t³ \Ÿ|òÉ\~ùå¼öÚkTTT$^?.ÞoF娡ØMŒšû諎WKNNæ¼óÎã±Ç£uëÖ<òÈ#Ì;—W^y%±Î£>J½zõXºt)?ü°Ôm!„Ç=U%0ßÏ0t”еÖ¯¯ÈY¥¢|òÉû¬_ÿ ¥¥å(¥xã7X±b»w怜¬Œ… ¢”"//N8AÆêŠÃ»„7bÝÐÔ,}¦¹›×_•wÞÙBQQ¶móâ‹/âñxÈÍÍEkÍOµžì,ÃJœñáx€>f̦NJ½zõ2dH¢¥wÊ”)Œ?žI“&ñý÷ßóÅ_0lØ0† F³fÍèÓ§mÚ´Áëõ2yòd¾ùæ-ZÄwÜÁi§†eYœuÖY<òÈ#Ìž=›ñãÇ3jÔ(&MšÄ—_~ɶmÛ9r$sæÌáÆoäùçŸçú믧~ýúlݺ•üãÜsÏ=4iÒ€Î;Ó²eK&OžÌ”)S0`&Làì³ÏföìÙôC3yòdFÅ„ X·n]¢eüñǧW¯^4lØ&Mš$Æ™¿ÿþûtîÜ™áÇFÙ¸q#¯½öZâXþùϦQ£FضMŸ>}¸öÚk?~<ÉÉÉL˜0~øÃ0رcGµý3f ^¯—ììl©ÙB!DübGÇÆˆwì¨hÑ‚#4FÖBëöhݸ2ðÞÓ£¯fï¾ø¿¿?RÙ½Ä/Br2ô衸â }„¾7É@G´>s¯:\Ûãh4ÊçŸ.Aº‡ + \­ÑÚ@mÎ)ÓÚÕ‰‹ 4 £]» ·²þûïxý_ËyáoK …BÑ A,˪6Ÿxƒ 0Ms¯`ñ„NÀ0 JJJ°, ¿ßÏ®]»ðz½Ô¯_¿Ú—:SXXHFFF¢{xüG //h4š¸]TT”ŸŸŸOÆ ),,$)) ÇC$!??€† VëR®”"''­55JüèdggÐÔqJ©jûOçñxhذaâl×®]‰÷W¯^=@µ}SJѸqãjwÕµÖdggãóùÈÈÈH$·ËÎΖA!„?K×^{¯üãe–Ð:+Þy-Ûv2pà½D*JÙúãVV¯^ÅÇkò°2oGã`*ÅøÛO¦j ™éÓ§sÒI'aYEEÅGðܹ¿6üÃ0HOO'‰°|ùr/^L^^^­Ép…¨M$Iô¨ ‡+…ÂGµNǯw·oßΛo¾ÉöíÛ½g…ø¥))ÎC¡b‘´ab(…a™±eû©Íô÷ìhˆg_ÉgÝ&—òœBl{¶£hWcF{¾“Ö>¾«;wîL<ÌËËÛk‘ÚÊ€jA|U{µÇìó TÝx` $¶ …öZg™Ù«n´®u½h4ºÏ÷TTTDQQQ­ÛÚ×1 ‡ÃûÜžB!öo÷îÝä'òà ñ™g¢Ñ¨tq‡Åqrss0 EFFý£VŸâ=iå&“uÃÖš²pí8 ],¥tÕ³ñNZÒN+„Bˆ: TQ””’Ÿ—‹íTìÿB£2î8ÜVB­u"_L0<*Á¹ã8lß¾Õ«WK/8qØ\×%+ëL:tè°Wî£ÿU®¨¨à‡~`ëÖ­òQÛ¥¸´´›U- ÇBò=Ý…B!êNvN/½øÁ”†T„‹QJáñ&*Í#Ü€HE)> å%¹ÔoÔÇujop?€–…š3Âü¯ÅóÈÔµ±cÇrÛm·%’àŠ_†ªÉÚ~îC&²³³™5kcÇŽ=¨õÊÊÊ>|8³fÍ’ !ŽÝÑ””:x,Çg`YUOŠXêS!„Bˆ:ä÷™´9#‹ò²Ý’ÚP^’‡×ß´K$RF0ùtÊKóñúš —LiMéî]riR‹Õ«WS\\Ì¥—^Ê»ï¾+Düì„B!V­ZuÐë9ŽÃ‡~(P7JBà³ lÇÀªÖAEÿtæF!„Bˆƒåñq_ ò’\Iõ+[Ëþ`:e%¹eHÊ ¬$—¤”Æ8Nä¸>6›7oÆu]´Ö4lØÔÔT\×eÓ¦M4jÔˆ””ÇaóæÍX–EII †aðä“O±d´ñbZ´h! éÄÑ 6*ë©R ×uÉÌÌÄãñP^^žH~ܼys”R”••ñã?FiÖ¬¦iRZZš˜*^VRRBNNJ)ÒÓÓ©¨¨H¬wÊ)§àõzåÀ‹ŸñwFQ2ˆš&ŽcÕÐéã.„BˆºfGÆI8\†/PŠp –åC£‰„KðW–™VìB»¢²,\^ˆÇŸt\›sÏ=— /¼­5]twß}7o¿ý6Ï<ó ®ëÒ±cGú÷ïÏ¿þõ/žyæ Ãà‹/¾Àu].½ôR¾üòKfΜɧŸ~ŠeY¼ôÒKx<©tâ¨ÈËË£}ûö\z饸®K¯^½èÑ£O>ù$Ë–-C)E¯^½¸è¢‹X³f wß}7ŽãpóÍ7sà 7ðÕW_1a Ãàø]»vå‰'žàý÷ßG)ÅܹsÙ¶mwß}7¶móÛßþ–[o½õ¨ÍÔ ÄáÒ¢¶ ®B+¥j$yPÒL!„uL&2L\ׯ0L´v0 «²ÌJ µK”™ûºèÖ5þÿó•’’ÂÒ¥KèÝ»7ßÿ=}úô¡wïÞ†ÁO<ÁW\Á!Cضm={ö¬}:×^{-W]uÁ`–-[òüóÏóÜsÏÑ©S'JJJjݾ?g ÛÕDluŸï„BqŒ°£!”a)ÛM ¹>å%¹ø©híR*&˜Ü€òÒ\¼¾X+X¸¼ˆ`JCJwïÄŸ”q\­5eeex½^ ÃÀ4MRRRèС–eqï½÷Ò°aC‚Á áp˲°m;±~|ÙÓO?Î;W z„8*Á†ã`Û6Zk†aиqc.¸àÇáÊ+¯dþüù{­‡)((H,gY@€óÏ?Ÿ¶mÛrÕUWá8Ž`qœQ(íp5XJÕèâ.ñ¹B!ê˜ÇÄu«&‰Ëˆ%„S °å%9ø“2ˆV”Rå%¹$¥4ÂqŽïáòòr:tè€ã8<ôÐCœsÎ9ü÷¿ÿå¼óÎöm&MšÄgœÁþóÎ>ûl”RضÏçãÔSOåÓO?妛nB)ÅòåËñù|RáÄQ£µæóÏ?§}ûöضͲeËÈÌÌdôèÑ´iÓÃ0xçwPJqÊ)§$Ö;õÔS9í´Ó¸ýöÛÉÊÊÂ4M4hÀƹæškÐZ³xñb222hÖ¬Yb½-ZȼìâXе9 9@«­c  _lJN­±ŽdR8¥]ºtÁ0 ´Ö¬^½šœœœÃÞîI'DVV®ëòÞ{ïIW.!„âgÛÊ$.ÇH%RQŠaÆ™E+ÊðÒˆV”U)+ÅH¥"´ËÜG$p|ŸÏÇ7ß|S­,--µk×V+ËÈÈàÛo¿­V¶lÙ2¾ÿþ{©dâ˜qÎ9çì5ZÇŽY¿~}µ²¹sçîU—»víÊwß}Wm¹š/^œø÷+¯¼"\U¦ea& UÙ®P  ¥Ð€N¾Ÿ =>£š¥k9ÛÕe+zZZ™™™Üpà :´NtÓ4ùÝï~G»ví¸òÊ+%@B!Žq K§Úu‰õàÓ A)cOYe’¸jeû ÎÕq¤;V*ˆ8n$''sÏ=÷È¿>2%aƒ’Rm»Ø Àuc=J4ั“Õ) Mü–AÕ¼ìJƒáºñS"F¬½æ_݈wEyûí·ó{Ö…­[·²nݺj㯄Bqì2LhËã')Ãòp]­Ì_%I\¬ÌãK®µÕàøÉá·Þz«Tq܃ôèÑC„ø…Ðhm°£À%U”V(JŠ⢸ŠË v—ä)vä»lÚ¥´Ü¡¼¢j.ŠàQ¼*еw̬öz¤Ö§µfÊÔ)„B!ü~?}úô!''‡Î;sÏ=÷0lØ0†JJJ +V¬`öìÙ‰€\ÕhÎWJqÁ0bĈD²“[o½5‘•qôèÑdeea«W¯f„ h­IOOçé§Ÿ&“––v@¿išÌš5‹ŒŒ LÓdÙ²eÌ›7Ó4yæ™gزe £GÆ4MæÏŸOii)  wïÞtïÞÇq(**¢ÿþ’”B!„8D±$q¥»c áª$‰ ‡ö”yý5’ÄíÄŸœ±Ë"É›#„âèrµfGn”” Uù8ÖóËÑ íj¢.D4hL"N”Üâ»Ë¨Ì×n(Ÿ‰õ S £öÓ]•GZø™;o.ÿýïéÕ«Ÿ~ú)cÆŒàwÞaåÊ•<ñÄ 0€x€?üá\vÙeû|õë×çÑGeÉ’%ôêÕ ÇqX°`Aâù§Ÿ~š1cÆðøãsõÕWóûßÿ€… RTTÄõ×_ϲeËö ük3räHÚ´iÃØ±cY¸p!·ß~;—\r Žã0pà@N;í4Ìc=†Öš!C†pñÅÓ·o_-ZÄÃ?LëÖ­ïW!„oO’¸TÊKrñ'e`GÃ8N ^eY:ŽÁ±+ð'¥Ç’Ä¥6-a¸Bˆc—í€ÖŠXž7[™ðM+Ð8*6ÌK»ñ›Ë{Îk¦r ˜e±?«lï1èµOÌ¡ªÃãÆÛ+ˆWJá8N­S{ì«¥;^_bÿüç?³aÃLÓ¬Ö5^)Umým;±ç*¶ï×^{-¶m³xñbvíÚ@AAãÇgþüù8ŽC×®]±m¥®ëÒ©S'Ú¶mËk¯½&ÉW„BˆÃàØ(e„ðúSˆ&’Äi¢‘òʲr 3Ö¢­(ÃëO¡"TŒå ÈBqÌ2Í=½Æ•V ÁqAã¢]…éÆr±˜†ª%ÒŽb¹y†Âãñbhöüç¢c¯ªíEÍD0|ÓM71dȽ‚m×uq]Ã0ªMwàºn"èÍU· pùå—Ó²eK¦NÊã?Ž×ëM,gšfâÇ_£ê ®]»2lØ0 Pm¿ÆÏÓO?x ±12·Ür ï¾û.ëׯ箻îJìÇãaáÂ…Lœ81±ÿB!„¨+•çÕ½î³ëêÏËéW!ıNïût¥j9ÃU‹³•Cª¿œŒ¤('¥ƒåê=iVjÍ„ÃaFͰáØ?>™™™ :´Zp0gÎ|>o¼ñ+W®D)ŬY³¨W¯áp˜»îº‹›o¾™Áƒ3iÒ$n»í6.ºè"ÒÒÒÁñ /¼@ûöí™9s&999L:•[n¹…/¿ü’¡C‡2}útž|òI^ýu6lØÀ#<ÂÝwß @ûöí¹úê«)**âñÇ`Ö¬YœvÚi,X°€@ ÀÚµkÙ¶m¦i2}út\×eذaþò—¿0iÒ$xà^~ùeî¿ÿ~B¡)))<ÿüóRñ„BˆCdZ¾Ê„pÂåEø“Ò‰V”Rx¼AÂå…øƒéD#åx|AÂe…‚é8®$…Bq|JxhÛ²>€´ziXn• \ëêýáãºÖš÷ߟO?û4QZ^;†Ïçb]ßsrrˆF£D"†ºWës8fÉ’%‰ùÊÊÊ(**bðàÁ‰îíÑh”¥K—‡q]—ë®»€H$›o¾YmÛÓ§OgÖ¬YÕº½çææÒ»wïD‹~Õ}2dŽã‡)..榛nBkM$á±ÇÃã‰ÍÅêº.¡PHjBqˆ¢‘r â¼t7Á”†5’Ä%ÊIâÊ 2IœBñs z8½E#<É)êYÜ÷5œ[®vAtU]tM›6eíÚµôïß¿ZËzÕ@¾&ÇqjÝ^<€¯ªêtjUש9ÿyEE{mo_ÁuÍׯº¯‘H$È !„âðXžÀž$q¥y‰t¥þ@Z¬,Xh$vÎöÓ)/Í#˜Ò·¶tM,qŽtBñ3ðzÈ<©†ªÌí^%W™(õƒ>àƒ> cÇŽ4hЀN:ñÞ{ïýäzõë×çÒK/E)E$áŸÿü§|:B!ÄqÊu¢•IâÂx}I±uÓ v´²,Â0LP–ÇÊ*J1½þÚ7zÁ¹>ÊàãÉj…¨ Zf4â¸cðb8±Q IDAT‚뀩5†BUFæ&J™(̃Þh÷îݹÿþûñûýŒ9’®]»îwù””zè!:tè@QQwÜqGµÄnB!„8Î 4ªrØœRFe·=J¡µ»§LU^—T.§µ{ø7*g„95g£¢.í:-„¨; ©] í mK);eÆÏÆ~V®¼ ÿ‚Æeee‘œœÌÒ¥Kùè£(--Ýï:>ŸsÎ9‡'Ÿ|’åË—sÇwбcÇDb·š'°š'¶ªÓ²U}®jÙÞa¬mÿjn»¶×®í8!„¢v–åÃÕΞäoID*JcIâ|I„Ë +»½—/™pY¤ 'zð¶mKn&!êšÖh×íVí⻓]ÛW]í²Ú1iò$JJJHIIáÎ;ïdûö혦™H—’’B^^^blwZZ .¤¢¢‚¤¤$fÍšÅòåËÉÏϧK—.ضM À0 ŠŠŠèÙ³'üã±m›ðôÓOóôÓOóüóÏó·¿ý¢¢"úöíË]wÝůýk~ûÛßRZZJçÎéׯŽã`š&·Ýv[µµiÑ¢³fÍ¢¸¸˜ÔÔTȆ 8÷Üs7nãÇçÃ?¤uëÖ<öØc̘1ƒ÷Þ{… âº.~¿Ÿ¿þõ¯,^¼Çq¤b !„û°ß$qåµ%‰+ˆ%‰Û½ÒÁ'‰+,,$99™²²²Ä5ÆÑ»îÒ”––J€.¹þ8ŽCAA>ŸíÛ·³cÇŽc¢N !Ÿ"ÖF®”'1ÍZe73jÉâ®5€ŸÙ³góÖ²·?~<ùË_X°`ݺu£C‡œþù<ðÀlܸ‘©S§0`À,ËbÈ!dffrà 7ðù矓››K8¦~ýúLœ8‘ìììD÷_|‘ .¸€3Ï<“-Z°sçN ÀêÕ«ñûý‰›‡@ ¸{øùçŸ3vìX”R<òÈ#L:•~ýúíó@˜¦ÉüùóÙ°aÓ¦McðàÁÌŸ?ŸË.»ŒÏ>ûŒY³f1zôh&OžÌˆ#øë_ÿÊ›o¾ÉìÙ³©W¯C‡¥C‡ :”¯¿þšo¿ýVj—B±–'€v¼B¥ù‰„pJ)|´=eÑhðë*Í'˜Ü×=¸›à999äååS]Ê•RdggWK|+ÄÃ[·neË–-ÇLŽ÷(ÍÏÏ—.ïBÔÅ9ÂÃ5P…åºTv׎…çjq½fOwîª]»?úè#V®\ÉÕW_Í Aƒªe>7n½{÷¦[·nòÀ›› @ƒ xðÁ)**bÔ¨QÕî*k­1 ƒ¦M›2räH®½öZrrr0Í=ãã]×M<ŽÌÁ` 6`YÖýXh­IOO§K—.|ñÅ|öÙg‰ýXºt)¿úÕ¯˜8q"ßÿ= .¬¶o—\r ŽãðÔSO‘ŸŸ/µJ!„Ø׉‚R8Ñ–7€ ÇÂN4¼§LÅ’ÄÙ•eÑH9¦ÇwP¯Õ¤IRRR޹1ß'tíÚµ“±èâà.Ü•"333ñïc­N§§§Ë‡$ÄaˆMJ›û\ ËÑF,s»ŠupW¸µÌ…¦Q}pzÕ`9>&Û¨±Ì Aƒðx<Ìž=›¡C‡rÅW0tèP"‘ãÆ#??ŸñãÇ'ZÏ{ì±ÄölÛfÑ¢EÌœ9€G}”#FðÐC‘••Åœ9s…B´lÙ’®]»2bÄ–-[Æ5×\³×Û¨Q£ðù|¬\¹21ÿºalÞ¼™Ù³gsà 7ЪU«Ä_çÎiÓ¦ “'O¦oß¾ôèу—_~Ó4±m›Çœ¶mÛrÓM7áõz¥f !„û»Ñ•Iâ\Óã%jG0- б2ÃWYfVôˇ t€Þ¿9àâ¸áóù¸ÿþûå@qÜèÛµq]0´Â( AyBaGa»F–8¥‡CÜ{ï}üßÿý‹-¢E‹‰ ºS§NüêW¿Â¶m¦OŸ^mÕ_|‘K/½”¹sçrÞyç±téRvïÞÏç£M›6deeñÄOЭ[7Î;ï<~÷»ßqÆg`š&<òHµí­X±‚|Ë/¿œ×_¿ÿýïØ¶Í?üÀ´iÓèß¿?Ï<ó C‡¥eË–üáH¬{ÑEñÿ÷4kÖ ˆÍÃ>hÐ Ú·oÏ¢E‹¸õÖ[yõÕWq‡sÎ9‡aÆ1sæL–,Y¨Q£¸óÎ;¹âŠ+=z4¡PˆgŸ}–qãÆñý÷ß“-5K!„ØËO—DE¨Ÿ?׉àº6_2¡"¼þ\ÇÆu¢øü)T„ŠðÓA†n !„8N)ÊT`€Võñº°6ÓÃTx”"3#×õ³»p+ë¿ÿŽ¥o.gúôx¼žDöòxWvÓ4«µ¦WíâàõzëØ¶ëº(¥ÙT«fCF£Õ¶/«þbëÆ·g–ËyFñx<¸®›ëoåv'‘Ð-¾­ø>D£ÑDv˲ãËÅ×õx<†Qí= !„bß®ýMw^~ùï”—í&T?–. Ú%RQF0¹å¥yx}ɱë‰pIµ$qN4Ķ·²zõ*>þ:ó”Þhí`Š }›`rŒ…Büo•çâÖ罯"¤%yÑh\76|ÜvAãb»Š¨Jk2’l’¥¼´4Ÿ’bå9…¤§À£³°mí‚eÛ`X±‰Ñ-@™ššIF±¦÷šÁwÍ€·6µ­S5À?Øíík]×u«•×\æ`ö£æ¶j.Wó¦B!ö/‘$ΗB¨,_°vn-s¡ëÊyZš×…BOç˨ã` °Lˆçs‡ºM@q 'н{wÇáÿø%%%‰çºté‰'žÈ_ÿúWi‰B!ŽS®kƒR¸NËòãØ{’ÄÅËœJ™(À±cev4ŒáÙW® Î…B?4#êÚDœ(Ç&ª¢Ž[×ñ9eeeœxâ‰ôïߟÔÔÔjÏuëÖ>}úì•`N!„ÇÑE‡ëÄRѺ6†åÅu¢(eTí6feYl0žëD1-/Žù‰-KFt!„Ç+b»˜–ÂÕ`iVõ6ôX÷vc°ãÙÚãã¯!6þ;>nÜuÝj]Ô-Ë¢¼¼œÍ›7Wk!WJaš&“'OÆçóU[Ç4ÍDÀ^s{û<=+•ƒ^ußLÓLd…¯º¯¶m£µÆ²¬jcä…Bq.8<~\×ÁãK&TZ@0¥‘p1`àõ§TÎy^ŸHE)>*å¥ùSàØ9€B!~!º£1PxL«5ZUï.¦µÆçóñ쳋øöÛuìܹ“N:‘œœLïÞ½)))aøðádeeá8%%% 2„òòr6lÈSO=Eqq1)))Õô¬¬,FEjj*J)®¹ælÛ&0iÒ$5j„RŠ~ø‡~˜p8¼ï7aYôìÙ“ž={RVVF0¤wïÞÒ·o_~ýë_Ó§OvîÜÉm·ÝÆÕW_MŸ>}¨_¿>Ó¦M#??Ÿúõësï½÷òÍ7ßH­B!êX4RŽaZ”—í&)µ!å%yxý©€KEya¬¬4?‘$.TYV¶{¾¤ 9€B!~Œ [µ¡"ª¨p ¥Ú.¥á0Ç {÷îäæærÓM7aš&S¦L¡K—.\}õÕ¼øâ‹<õÔS´k׎~ýú0mÚ4Çᦛnâ¹çž«Öý믿æúë¯ç«¯¾Jdt¸ä’K8í´Óxê©§èׯ‡:ì÷M´hÑ‚ÁƒóÎ;ï0{ölRRRS´Í™3‡eË–1wî\®¿þzºuëÆðáÃÉÏÏgöìÙlÛ¶iÓ¦±mÛ6æÌ™“h…B!Dݱ<þÊ$qÉ„Ë ñÒpœ \ÇÆëO‰•ùSphå4k©„Ë ñ'e°WöZ!„âx=_F£ ÇÃÓ×S}‹ÒQ†Âu]tåIRk뺉.è™™™äçç3sæLÖ¯_Pmy¥ö=F,>ÍÀ[o½E(¢yóæôìÙ“%K–°råÊŸ|#ŽãиqcZµjÅ‚ (((H<÷ØcѵkWȼyóX·n¦iâº.Á`6mÚðÎ;ï°|ùrIT'„BÚubãÍÝhõ1è€ëÄÇ¥ÇÉÅÊbË9vÃòÔk“çs¯×Krr²Tqpß­),,<&÷-äC¢N( Ca…#`(0M0ÌØ|mµ.®öüHÄnÃ0s†¿òÊ+ìØ±ƒ‰'‰DXµj†a$s¥Tb¬wMñ1íW]u—_~9£G¦cÇŽŒ9’É“'³bÅ –þþûïàÑGåÇŒÝi°,Þÿ}Þzë-ÆGnn.Ë–-`øðáD£Q}ôQn¼ñF>úè#Ö­[‡RŠíÛ·óì³ÏÒ»woN?ýt^~ùe©B!Ds+“Ä9v¯/™H¸Ë@kcWàõ¥ —`zü(Àކc-ëå…x2@íµ×(..®õšãh1 ƒÜÜ\¾üòK/^,Éqųm›¿ýíoÇÜM'ÃPüøãVÊÊÊxüñÇ僢ŽXᘘ.¯Yû‚Zƒã¸Ü~ûí\ýõD£Qî¹çJKK9ûì³yä‘Gp‡‚‚^ýuÈÓO?Íßþö7Þ|óM–/_ÎÔ©S¹õÖ[iݺ5cÆŒ! bÛ6Ï?ÿ<Ÿ}öÓ¦M£K—.,X°Ã0øì³ÏøÏþ“ØŸÏG»víPJ%îØmܸ‘)S¦Ð¿n½õV¼^o¢‹ûÝwßM§N¸ýöÛÉÉÉ! 2qâDúôéC¿~ý˜9s&/¼ðõêÕcРA”N!„yÁQ™$ÎçO¡¼4`JC"¡bPFeB¸<‚É ö$‰ ¦Q^’KRJCìÚ’ÄiªÎ[M~~>@€¤¤c§µº´´”­[·òÞ{ïIeÅu] 9á„ðùüÇÌ~ååå±~ýz¶oß.’5ÏO^œoضl” ±{¹ª–…áÄNÀ4 –,YÂsÏ=G$IÜÉ›8qbµ¬ëñ;Ö\wÝu(¥Ë†ã8¬Y³†n¸¡2ø×‰Öu×u¹÷Þ{kÝÀ?þÈe—]–XbÝÛ_zé%/^œ(¿Þœ9s˜3gNâñÂ… Y´h®ë’ÍUW]Uíµ…BQ÷ª&‰ ¦4"TV™NkÂåES.ËÇãK¡²‚)(+ÎÆ—”~P¯¥Ô«WŸ¢¢ú¬_¿§àÑ£ðxr°m™NBí©œù(5µ›6¥›{,ô Qx½aI!D"úÖ¸¸±(<ÞƒÜ\ŠX"v} a:X. …r5Z+¢5²¸£5‡îWuç­·Þ¢yóæ4hЀmÛ¶UYDï³å¹fÐ_nëüÔsµuYÛ×:5_¿ær” !„Gžeœĩáó§$¦Oóø’¨á­Ræó§P*¬wH]Õ£QøàÅóÏë# 4lééŠÒÒRrrriܸ@Ý»wS^^NãÆQJ‘››KÓ¦;9í4¹æ‡®¤/†U«ŽLÞDN8‚AEaa!»wïæ¤“NÄãñ’RŠFFع3›K.)ÄçÓÇÀ 0!Ž• ýÐWÔ®‹ëÆ6`¡¬XTNLz®©2ºRD"QÆŒyà _êæ›o&55•;vðꫯö{îÓ§^¯—uëÖñöÛoK%B!~.×-Ú®ë`neÒ¸øs5Ëö,g£Lë_´VG$˜±,¸òJ¸â “Ï?ßÄóÏ?Ï7ÞJëÖ§óÞ{_²fÍ7ÜvÛ­X–Å‹/.';{p‚Tq˜ß#pœ#§¥ÁÍ7Ãé§,_þï½·‚;+Fòì³ËÐZsÛm·’“SÌܹ‹Ðº^â{-„8ÜØ~O#´á*‹ÆU±¿šßy}_»U«VqÝu×Ñ¥K—:ÙñU«VÑ«W/.¼ðBù…BˆŸ×¢”±+°¼ìhÃ0QÊÀ‰†±¼ÁX™21 »²,)?&ßa@ýúЬ™¢qã <žœxb„fÍ ”‘””GÓ¦šÌLHK+Dë<@ò܈c—Ç'ž¨uØëÝI“&Íš)RS IM- Y3Å)§8øýÙ@ ‡Ñd(„¨fOÄm›Âu"$¯¾¨&6‚mÛ±•, ­5áp¸ò íIÌîº.¬[·Çqwü~?h­1M¯×{Å*Û‚Ø4$¦ËVç8‘H¬»Û·ß~›“®”Âçó%¶·?>Ÿ/1¦Ý¶m¢Ñhb\×Mlßï%Þ‡ÃX–•˜Ÿ½ê{B!ÄÁ³<ÁÊ$q©‰$q¡b”2ðÒö$Ž —ÄÎÉÁz•IâaÛ‡vVjÏ_]s›+>`ûöµìØ‘Mqq ÿøÇ+¬\ù›7o&;;› žÄ0 ¾þúk’’’–Fq¸ #öw$””ìæÿx‡•+w±qãòÜsÏ‘””Ä7ß|ƒÖšY³fSZZÊ®]»hÒ¤‰| B‰ó%jÏx(]%LO”iÏçeÞ¼yüøãlÙ²… /¼† Ò·o_ 9r$-Z´ â8÷Þ{/EEEÕäž={rÇw0fÌ>ùäÚ´iðaÃp‡O<‘~ýú±yófRSS™4iIII†Avv6=ô¥¥¥‰íƒAî¼óN~÷»ß1xð`Ö®]»Ï7˜‘‘Á¬Y³ˆD"øý~¾üòK¦OŸN4eöìÙ„Ãa†ŽßïgîܹüðÃŒ9’Áƒsî¹ç‡ñûýÜu×]äççKB!A4R†aš„ÊvLiH¸¬Oµ$q —âñE¸¬€`JCÊJ²ñÓúõLN=.»ìH‘Õh"?¿ŸÏÇùçŸÄæ`¯W¯õêÕ£¬¬ €æÍ›Ó¨Q£cjÚ7ñóãóÁYgAZÚ‘ªGZ—RPP@zz:éé騶ÍîÝ»iÖ¬@b>ö³Ï>›SN9…œœ©×BÔu€®y<8¯Ñ‚®á FÅK/½Äĉ¹í¶ÛXºt)ãÆãÅ_äŠ+®`Ö¬Y3bÄî¸ã¦N𨯉'žÈÎ;ùðÙ2e —]v[·nå¹çžÃu] ÄÔ©SéÑ£çœsM›6eÁ‚¼ýöÛ 2„víÚñÑG%¶wÚi§ñ /pÖYg1mÚ4®¼òÊ}¾ÁròÉ'3eʔĀ?þ˜+V0`À&MšÄÈ‘#9ùä“ùúë¯yè¡‡èØ±#¿ÿýïY°`Û·ogĈÜsÏ=Œ5JjŒBqLˇv],oŠP1_2®Te’¸b<¾¤Ê2ðø’©ãó§tF,­Á²4çWAÛ¶G0ÓôÿÎÛïñ%%%¼ûî»RÄ!KJÒtë"¡:mÝý'34 ƒ@ À¶mÛx뭷䃢®t·òK¨”Bíõ•Ô±'1 £ZÆóx6t×uq‡`0Hii)ãÆcË–-‰e6mÚÄÊ•+¹üò˱m›äädFŒeY¬X±"6&­2³úŠ+(++ã”SNáÎ;ïäã?Nçñí}þùç¬Y³¥T¢Ûý¾Ä»ÄƒArssy衇øî»ï(//ç©§žbþüù8ŽÃ Aƒª­ðù|Lš4‰]»vImB!™NDÏJ{‚nU£L©Êö‚X™Öe¨Zƒð}̓¿f(,Ì%//—@ ÛþQ` 4Àëõ&æ¸âP8N”üü„Ãøý¾Êi‚ÿ÷ûáñxHJJJ oBÔq€oAOͶ¯ïyÍsJü$Ÿ›ñßÿþ7;wîdúôé¼óÎ;‰:þW•ßï§cÇŽ,X°€%K–póÍ7'žûÍo~Ã5×\ý÷ÞËYgŨQ£p]—ÿû߉mÅÇ“×Üî-·ÜBÇŽ)--åž{î©öÜ?ÿùOš6mÊÈ‘#Ù¾};;wî$==#Fð÷¿ÿæÍ›óÈ#ð§?ý ­5†aðþûï³fÍf̘Á_|ÁªU«¤Æ!„‡\ØQ”a`Ûåøü©„Ë‹ðø’ÐZ†ðÒ‡Šðxƒ@lÞt ¡Ò<¼Ázû ù÷ŸD"ÒÒêqÁ$òÌü¯¹®Ëîݻٸq£TqX´Ö„Baš7oNÛ¶m×Ãÿk¶mSPPÀŽ;äCâH艄%U{ºïã$è8.·ß~;7Üp¡Pˆ …ÈÊÊbÒ¤I¸®ËÎ;y饗˜2e Ñh”òòXÖp8Lii)ùùùÜwß}ÜÿýtíÚ•û￟©S§2tèP¦L™Â…^ȼyóPJ±råJÞyçf̘Aii)¡Pˆµ€ÇÇw¤§§Ó¤IŠ‹‹e'N¤I“&,Z´˲X¾|9_|ñ¦iòøã³iÓ&{ì1,ËbþüùLŸ>0þ|FmÛ³páB©-B!Ä!òxƒ¸NíIâüµ&‰K?ì$qKr{Ê)§œœ|Ô‚™M›6¡µ–±º¢N‚ô´´4š5k–H¨ü¿ …(++“ú,Ä е™Àc±¹¹Wh®”¢y³æ˜¦Áo¼ÁÓO?]-ëzÕñæUÝwß}ÕO˜0!ñï?ük®¹&ñøºë®Kü{ĈµnïÎ;ï¬öxÈ!ÕϘ1ƒ3fT+‹F£{­±ìðU[î#‘üãçÏŸÏüùó¥†!„u )¯‘$®/)–$.TYV^˜hA—V&‰ËÁ·ôaÆQíZ~,tk_³f mÛ¶•.öÇ}õNý¥Õi!ŽgFìæ—m ]‹xÀ^%>Dz,:t8Ÿ—_~™´´4ÒÓÓåÈ !„’–·2I\€H¸/ˆëDqµƒÇSYVÙÊî:6_H¸Ÿ?™kùðtïÞý'sö!„8èÊ.î µ')K-YÜ£Ñ(Ó¦?rÔ÷wÈ!ø|>Ö¬YÃÒ¥KåB!~¶ª ±3ª–Õs§$>?LGZ=…âÌãç:ì<*M­ãÏ÷Q|T¼ùæ›tëÖöíÛˇ(„BüŒ8v$–$.ÂëO!ZQŠaz0 “h¤¼²¬ ô0LÑŠ2¼þ*ÂÅpœ—:uâÌ3Ï$+++‘ǧ¤¤„öíÛÓ¶m[^{í5.¼ðBÎ<óLÚ¶mË¿þõ/òòòh×®mÛ¶MäìÙµkmÛ¶åŒ3Îà¿ÿýo¢KôòåË™7ožTFqDåçç“•••¨«[·nbÃ[Ï8ã ²²²Øµk;wîdÀ€̘1ƒ?þ˜p8Ì9çœCVVÏ>û,Ë7uÖYgѶm[^|ñE9¸â¸¦ˆ 6·wT•ŽâJפ§¦¦Vλ¨ñz½h­))‰%r x<žØ Øq‰Û’““QJ …ccÊJKKq]˲eñQ<ÙD0LLÝ`Ûv"ÉÜ–-[ª%¤HJJÂ0ŒÄ~ìKrrr"Óe$IŒŸOMM­¶ýx™ÒÒRü~?^¯ˆe`---•Z#„B¢D’¸@å%¹5’ÄÕK”%’Ä%ÕM’¸Ÿƒ-[¶ðÕW_áõz8p -[¶äøo¼ñ–eqß}÷ѼysvìØÁÚµk±,‹[n¹…-Zpê©§²téRLÓ¤_¿~4mÚ”ßþö·|öÙg¸®KRR«W¯æùçŸç©§ž’Ê(Ž(×uIIIaÅŠh­¹è¢‹X¼x1>ø Ë—/GkÍW\ÁâÅ‹™3gS§Nå‚ .àÌ3ÏäÕW_Åëõ2vìXZµjÅwÜÁo¼AFFFâº\ˆã58Í(ª°ªâµLXRO›6‚‚Ö¯_ÏÙgŸMff& ''‡Ñ£GÓ°aC¢Ñ(@€{ï½—ÜÜ\î¹çÎ?ÿ|f̘A=ÈÌÌdòäɼ÷Þ{´jÕŠÁƒã8-[¶dðàÁ|ûí·Ô¯_ŸI“&±Ä.ååå<ðÀVûâgdd0sæLòòòßì‰'žÈôéÓ),,$ ²qãF}ôQB¡“'OƲ,† F0dΜ9|ýõ׌7Žûî»Ö­[SVVFýúõ4hL'!„B¢h´Ã0 …Š $7¨L—„Ön,I\rƒØÔkž(—Ln@yI.Þ`j-[Ô5þÿ3¾0SŠÔÔØ{t'1+Îõ×_Ÿ(óûý†‘¸mÛFkÍÛo¿ÍèÑ£1 ƒ5kÖàº.eeeÄö#‘£GfæÌ™Gmj.ñËbY>Ÿ€²²2\×å£>â÷¿ÿ=®ë’žžŽRŠ®]»&’>çååqã7¢”Âq À)§œÂ Aƒ1bÍš5£qãÆrpÅq ÇûŠ5Ÿ¨í¤‰Tðç‡þÌ%—\BNNúÓŸp]—Ñ£GÓ±cG:uêÄ'Ÿ|Âûï¿O«V­ÙÐ~øa¼^/×^{-ýúõã“O>áá‡ÆãñͲeËø÷¿ÿmÛŒ;€=z••ÅСC80ÞÃðàvN•¦zòVÑ0T\åUJQVVƾ}û4hPr¤YÓ´j …eY¤¥¥1bÄ|ðŽã$³‹:Žƒã8èºNqq1ãǯò˜¸lÛ6iii?ø‚+ž_II ùùùôïߟõë׉}_ýu^|ñElÛ¦wïÞUŽ ƒìß¿ŸÇ{Œýû÷KíB!~RD¦£Í0PN¢ éezõ2—û0ƒä'Ϻôp8Ìu×]‡RгÎ:‹-ZðôÓOsýõ×ã8íÚµãì³Ï¦´´4YÖ¡C²³³yê©§¸îºëÐuÏ>û Ó4>|8×^{-J)üq,Ë"##ƒðôÓOãv»9óÌ3¥JŠãB)źuëèÖ­¶m3hÐ êÕ«Ç•W^I×®]¸âŠ+’qA…gžy&yÌ™gžIŸ>}¸ãŽ;(--å¼óÎ㪫®’7Wü*˜ÕƒñC_‰®¸VyjTå€ýË/¿dß¾}Lž<™yóæ±yóæJÇjÉcÇÁãñжm[¦M›Æ'Ÿ|B¯^½’÷©8§a4hЀqãÆ1}útæÎ‹aèºÎž={˜0a“&Mâ…^à®»îàÎ;ïä’K.!pï½÷V Ð?ýôSš6mʰaÃ;v,ùùùdee1lØ0^}õUN9å&NœHÏž=qMÓX±bëׯgÊ”),]º4Ø !„âDZ­(šn—âõ×$,ÀíI¥ˆGƒxS2‰ ÊGÌ5âÑ2¼)µ•îÓrroïêv»9r$š¦Q¯^=222¸á†hÛ¶- 6$==¿ßÏO˳Ï>[íä­[·Æ4MvìØÁÀÉËËKþnéÒ¥\sÍ5ÉÛÝ»wOþ{ذa‡|²½zõªr{À€Un?ÿüó<ÿüóUÊ”RU¦®¸Ø`së­·&o;Ž“‰˜>}:Ó§O—"„BV2I\_j­DB8·¥Ñp)¾ÔZDÃŘ®Dr³h¨_j-BeûqûÒNê÷櫯¾:¢ çHî'ĉ–••Å;ï¼#o„G W1?Ü蹡4iÚ„W^™†Ëe’žž^%@?œ3Ï<“7ß|MÓhÖ¬Y•]!„¿ºžHg˜n¬XÓåÁ)_on¸e†Ëƒ£*ÊûŒGy„áÇóñÇsà 7på•W²mÛ6Ú¶mËàÁƒY¾|9 6ä‰'ž ¤¤Ó41M“aƱo߾þ¿ßO¯^½8ûì³Ù·o­[·¦ÿþlذ+¯¼’;!C†°fÍúõëÇ駟΃>HÛ¶méׯëÖ­£M›6L˜0ùóçËT:!„â³âtÝ .×R“h¸ÓåM$‰‹”&Ê"¥¦ h¤_JMÂe…¸|‡ØÌA¦ù !„8É"t…ž¼ü\ñãT½Ÿ¦iÄbQF~ŠsÏ=—¼¼<ú÷ïeYôïߟ:pÞyç±uëV6mÚÄ)§œÂ7ÞÀ˜1cˆD"Ô¯_ŸÏÇæÍ›2dµjÕâž{îaïÞ½¬[·¥C‡Û¤§§³aÃú÷ïÏ—_~I:u¾÷µ4nܘ›nº‰;v°~ýz¼^/ýúõ`ÆŒLš4‰áÇóàƒÒ¤IHaa!=ö%%%¬]»–ÒÒR†ŠaR9„BˆcLÓ  Ýpa[1 ÃrP Ãp'ËP ¥œe.ÏaN(Á¹Bˆ“Ï&‰Så­ nèUöWJaÛ6Žã ”bÛ¶mìÚµ‹eË–‘ŸŸ_å~Á`ùóç³hÑ"233‰Çã8ŽC~~>_ý5=ö±XbúÚŠ+0`uêÔáñÇgåÊ•¬]»öûŸ£R8ŽÃž={ذa?ü0¡P(ùûÙ³gsï½÷Ò¥K^yåvíÚ…aX–EYY7ndãÆ2Å]!„8tÝHlÝj˜Ä¢AÜžÔĺtMÃ0=Ä¢e¸=©ØV…Â4½É2¥y…Bü:ÚË— +ÿTW‘ŸÅ4Íä(s<G)…RŠ 6°yóf DÇŽp»ÝhšFYY{öìaëÖ­|õÕW8ŽƒmÛìÙ³‡¯¾úŠ;3ž={‰ýÐÇŒÃÖ­[yã7¸óÎ;ùóŸÿœ|7föìÙ¼õÖ[4kÖ¬ÊÅ‚ÜÜ\V®\Iß¾}“£ø'N¤´´”Э[7.¸à‚DvúxœÒÒR–-[F§NèÓ§Œ  !„ÇAå$qSÜ Óƒn˜U¦¸ë† Ãp˜â,$qB!~5L­R£§‘˜Ò~8ŽãpóÍ7sÍ5×——GïÞ½±m›SN9…!C† ”bãÆL›6 €Çœ‚‚233¹é¦›’Û®ЧOÌÅ_ŒRо}û0kÖ,Z´hÁرcx÷Ýwùïÿ›|‰è4MK®ß¼y3999ôìÙ“n¸p8̈#¸ï¾ûÈÊÊâÖ[o% 1iÒ$úöíKïÞ½éÑ£Ï=÷¯¾ú*.—‹>}ú`Y–Ô !„â«–$.%‹X4h’Ä¥"I\Z]l;vÔ[1 ÄÉ ¢.Kâ$Ы|è+ý·Ò7º®Óþwí1 ƒ%K–ðÜsÏU™Bþâ‹/òâ‹/V;ù Aƒûå²jÕ*n¸á†Cþ~äÈ‘‡}Â;wî¤[·nÕÊ?üðC>üðÃjå“'OfòäÉÉÛo½õo½õVòvå‘v!„BÉ$q‘`r›5Óô PU¶Y3L7@•mÖ\Þ”£zL¯×‹Ûí&œ° ð¶m'—ñ ñSèºNjj"abqqñ ›õF“ƒeBˆã ß‚Çëaâĉ¸\.ü~•]!„âûT$‰ÓtDZÐu3¹¶\×M;QFùÈ`²ÌpýøÇÒ´äö®º®³nÝ:t]?!¯»bæ_4•J Žº)¥ˆÇãÔªU‹@ ÀÊ•+OX€ì8–eÉ…'!ŽW€^åí˼*ïZ¢i–eñϾ*ï–B!ŽJEðm˜nbá_:ñX8‘$Îå!àö¥cÅÉŠËG,\ŠÇ›Ž£~\WÇqؾ};¦iV rNÈ…‰ò%yŽã‹Ådj²8*Ñh”­[·V5?Ñu:cÛ¶Ôi!Žu€^õWý²Å¨B!~*+N$‰ –àK­E(Ç—ŽRÑp)þÔ,Beù¸=i‰€$TŒ?­6e%{ð¦ds`Ež¢Úê¼O?ý”½{÷þ¬^¿¦i\.—Tñã>;–Åܹs–Ï­¸¸˜zõêÉIˆc WM§Uoå­ Mšd”¡”"==Û¶Ù¹s'™™™¤¥%ÔH$¾}û’‡6nÜ89­,???95ÞëõR·nÝD;ë8ìܹ3y®N:x½^4M# ²ÿ~5j„®ëÉ)={öì9¢é5õë×ÇíN¬i+))¡¸¸MÓhÔ¨Ñh”¼¼<6lÀ®]»ÈÈÈ FÄb1öìÙ#µE!„8J.·ÇI$‰ òðU$„Ó4¼þ B<¼)µˆGƒ€Â›’I(GJZl;þ£köìÙ?ëQ½5Ý^ü2¥¤¤°dÉ©â× W?(HW Ó4éó@|~?+V¬ ;;›:0tèPrssÉÉÉ!‰‡iÑ¢>ú([¶lá‚ . ''‡E‹ѼysV¬XÁ”)S°m›Ûn»‹/¾˜o¾ù† .¸€‘#G²`Á.¿ürN=õTRRRÈÌÌ$''‡]»v1eÊ\.‹/æÌ3ÏäÝwßeÆŒÄã‡o¸[µjÅ“O>ÉÚµkÉÈÈ 3jÔ( ¹çž{hÚ´)$##ƒ§Ÿ~šùóçóòË/óè£âóù(**â·¿ý-ƒfÆ Rc„Bˆ£`YQt-‘$Îã«A,@7ÏãÑDYáºë®Ãqœ*Ï`åÊ•lÚ´‰¹sç¤ö!„GI7\‰Yy./Ñp _ñXMÓ1]^"á¼¾ÄãaPàrûÊïWDZ¿7ôB!~Éœq÷0\¡ªd]9tóçv»“£Ö‘HÛ¶“ëÑóòò=z4:u`ܸq<úè£|þùç,[¶ŒQ£FQ¯^=”RD"LÓÄårñòË/óÜsÏP³fM|>ß}÷ß}÷ÑhÇSýùbšOŸ>}x÷Ýwyíµ×’eÑhÇqÈÍÍÅçó1fÌN?ýt ±¦}äÈ‘¼øâ‹|üñÇL:•ÔÔTâñ8ñxœÝ»w³k×.žxâ ®»î:©9B!ÄQªH —âKÍ"*ÂtyÑ “H¸j‘P1†áÆ0ÝDBÅøR³ö'¶˜©BôoY›+„â—KU´eÚìƒ^Ñ$*•1ïÞ½;—_~9Û·o§wïÞÉ@·_¿~(¥Xºt)¯¼ò <ò“&MâùçŸG×u† –̪úÀ0`À:tè€eY<ôÐCLŸ>¬¬,FŒÁÞ½{y衇èׯ_|ñ¹¹¹É‘ìüü|¶nÝŠm¸ªØ¿•Ñî§žzŠ´´4ÆŽ‹¦iLŸ>¥K—bC† aþüùÉç;vìX†ÊÀ?~ƒxùÊs³Ê¬±ï™!VXTÄÈ‘O`š†ìá)„BˆåÀV®Z²$Ù÷ШTVQ U¹Û¡Èäv!„'C ©*­<¯2Å=¬Wm 5MömÞ~ûmyï„BqTtÃ…RN"!\¨¸|:{4 —Ë—(ó×$ àòø‰‹ðùkb;–¼B!Nâ]G+OˆnV¾ö¬MSU¶BWH~T!„Bü4V<Œ®›„ÊJð§Õ&ÈÇãKG)'‘$®¼ÌíM ,ŸV›²â=xS3«ŸÐ©Ôy9øWí:ó³é€É^Öâ(Iâ×ì}k7v MÓhÕªEEE(¥¨U«–eñÍ7ßP¯^=jÖ¬ @(bûöíÉ£[´hahšÆŽ;’ Üü~?M›6E)…ã8lÚ´)yLãÆIMM ´´”]»výà ©Q£ 4Ht,‹Í›7аaCÒÒÒØ´iJ)233©W¯[¶lÁqš7oަi(¥Ø¼yómÝ&„BˆÙápù$‰+ÛŸA×4 ¯¯F¢¬Òº×_“PÙ~üiµq~äúŠ+ˆF£ü¼&À'·ÛM»ví$¨G̶m¾øâ ”Rü¼ª†®ëÔ¨Qƒ3Î8CþPBüÄÏÓ½ZñAŸ|†iò—›n¢~ƒ,Y²„ÌÌLþô§?1jÔ(6oÞÌðáÃÙ³g¡PˆöíÛ“““úuë¸üòËéß¿?sçÎ¥uëÖlÛ¶ &`Y÷Üsgžy&kÖ¬¡S§NL˜09sæÐ²eKFŒÁúõëq¹\œvÚi 6Œ­[·~opÞ¿233Ù¶m—]vO<ñ .¤mÛ¶<øàƒ<ûì³,\¸Áƒãóù:t(;w¦{÷î,X°€K.¹„ýë_¼öÚkUö[B!ÄOçØq4M'‹àö¤…’{£ÇãáDY<„® A<J”EË0ÜÞõXŸ~ú)±X ·Ûõ³ hâq‹uëÖ3{ölJJJ0 C*…8"–eñÁà÷û0MógS§Ãá_|ñ%»wïfùòåò‡â¨ï‰Íu-±sš©iUïvð‡^Ó4âñÿûß™õ曼÷Þ{¼ôÒK\tÑEÜzë­Ìš5‹6mÚPXXˆRŠúõësùå—³nÝ:Âá0J)öíÛÇŒ38묳p‡ÔÔTºuëÆ¦M›ðù|†Á]wÝÅœ9s¸øâ‹ÉÎÎæÞ{ï%Ó±cÇœÖS·n].»ì2V®\‰ÏçÃãñpË-·°páBÞÿ}JJJ2d;vD)ENN¥¥¥ôìÙ“ÒÒR|>wß}7¯¿þºŒ¢ !„ǼS’X4§Phšžè…TtLœJezEò¸D™R?~j¯adg7A×3).>l—è§¿&u w¥i·ÕA·}+]/ÀåÚŠÛí–Ñsñ£y½^š6mF8œJ8ü¿®Ó²~[Öv\.·$p”†B+_G®’ËÄUù×½£ih8nø@úTUu]"®/ß ÝЫÊŽã$G›ÿûßÿòÝwß1}útJKKøì³Ï¸çž{hÒ¤ ãÆc„ „B!ü~?Žã°víZþõ¯1sæÌ乕R(¥ÐuH$œ9sª5d·é^²d .äµ×^#‹%Ë/^Œ¦i´oßž×^{‚‚ ÃÀqvïÞÍ«¯¾Ê믿žLˆ'„BˆcË4=(eãrù‰„Šªìƒîò¤ UÙÝåI%,Ä—’ù£÷AOtÜ|þ¹—wÞùyL nÖÌEݺ˜‹¯bw$âaÖ,/ë×+NôdO¥4Î=×D& Q S%‡[2è®´q‰‚Ãf4P8(šâ~$|>ii‰.@€xœž={‹Åƒ„ÃaöïßÏ”)S(..æ ÇIOO§víÚL˜0çž{Ž÷߀&MšðÒK/pÿý÷³iÓ&,Ë"  )**âå—_fýúõ 6 ·ÛÍ /¼À¾}ûxæ™g3f ß~û-Ÿ|ò ¥¥¥Äb1òóóÉÉÉ!;;›=zȺBqŒÅc¡Ã'‰ "I\a"I\ɼ)™G@@I ìÜ©U ÚåøÃíÚlÞ¼™?þ„Ë/¿”Fš°zõ*rss¹üòË1 ƒ… RP°Úµ%šG϶¡ vì8>z22àφìlåË—³zõ®¾ú*jÔÈàÃç—]vÅÅżÿþûƒLâÐIÕÌ7¾S>ꎦ~x º–lèÉÜ®ºê*.¼ðB6nÜÈ€€Äó»îº ¥}ôÓ¦Màá‡fܸqŒ5 MÓxôÑGÙ»w/<ð>ø O?ý4ôë×€W_}5¹¦\Ó4fÍš• Îb±X2\$àÛo¿å±Çã–[náø[¶laذaüõ¯% ñÐCaY£G¦{÷î¬X±‚Ûo¿Q£F1~üødÀ/Á¹Bqì™.ʱñøÒ—àõg…Ñ4 ¯á²ý‰²xxý„ËöãOÍÂq~úì¶c=ÒgЦF—.:Ÿ^ÈÒ¥ 9÷Üsøío5”ÚE4ºŠË.û.—ÆwßmdÓ¦o€VRÄO®ÇÇkÔÚï‡óÎÓhÛV'ÝInî".¾øR4È`Ë–8ŽâÊ+;±{w„Å‹¿^d¿'!~â皣çšfõéã(LÓàÊ+º`š&¹¹¹Œ=š’’’ä}fΜÉÌ™3ù€ýû÷?dù¦M›¸÷Þ{ù»I“&öìÙ³çÇ-Y²„%K–T+å•Wxå•W’·?úè#>úè£äíûï¿_j…Bqœ9v4 +Ãtû°â‘DB8ÀŽG0ÝþD™–Hg•—Åc! —§ú «í:süƒòÊ,Ë!7wK—òÍ7› …"|ýõ&b±8¹¹¹±rå* Ã`ïÞ}•ž´?-@?^Âá(7n'/cûöï(+ ±ví:vïÞþ}y(_}µŒýû Êwe’ú,ı Ñ U> ¾Ú>è‡þ2Plظb†d9B!Ä ,ʱ1\nâV ÃLèÊq0tO•2Ƕq™¬XøÐºªôsš5kB£FÇc º†¦Y|ýõ2vìø‚H$Fjj*‹-⫯¾"Fyë­·Ð4@ @Æ Ñu]*‚8j†uê@ãÆÇ£®aš>ÿü#–.ÝF(Âëõ2oÞÿ÷ÿWm¿w!„BüÔàÂMñc˜¦ÛŠH—,‹¡i`[‰2+Aw¹*ˆ¨W¯—\r )))'äuÛ¶ÍŽ;Xµj•Œ8ŠŸL)EóæÍ9ï¼óNØŒŒh4Ê–-[ÈÍÍ•?ˆÇ¢}T`Y ¥iUGЕvèβ,f½9“7ÞxƒÙ³góÖ[oqÅWеk×d°ˆF£Ô®]›‹/¾˜åË—³}ûöDRMcèС´jÕŠxÞ²eËØ¶mgŸ}6wÜqS§Nåî»ïfÚ´i‡ г²²¸è¢‹Ø°a§v‡®]»2wî\>þøcŠ‹‹yòÉ'¹è¢‹(**â©§ž¢¬¬Œo¼‘`0H³fÍðx<ÜtÓM¼ôÒK  !„Ç:°pl44ÇÂt§–aš^ ÇŠãò¤1ÌD0îX1\žTbá’*zE"Ê]õºÛíÆívŸ×í8ŽLmÇ”ax<ž6‚í8ŽŒž q,ÛGñ¸BG×ô#Øf­üÿº®U»òë8N2õÕWÙ¾};¦i X½z5={ö¤I“&L:•ñãÇ'÷.¯x\MÓ0 #y! B<ç…^ ¤¤„wÞy‡‚‚‚*÷‡ÄUéÊÏéƒ>à“O>Á4Í*çZ»v-š¦ÑªU+fÍšEII †aà8¹¹¹Œ?ǃ®ëض-µD!„8ÆL—DZqyR —âOË")tÜÞÄÞèþÔòÄq€Ç›N¨¬êa’ÄAp^¹¿qâ:^JFÎÅ1S9Á²ÉBœG‹Û8ÊA×5~ô%Ýôôtj×® @aa!‘H„p8ŒRŠ””þþ÷¿Ó¥Kž|òI&NœÈæÍ›™?>ƒ ¢nݺ@bzL  ==×^{±cÇàõzñxl§FÙ³g±X¢qnÒ¤Ir/ó-Z$ƒùŠí&OžœÜ+=%%…—^z‰;vpÿý÷sõÕWÓ¥K Ã`ÿþýX–E¿~ýxòÉ'“Á¿B!Žx,„n˜DÃ%¤¤×&\V€aú0LÑPQ¢,T„az0Láò²P`‡Ú'MAp.„BüÜ)1K9„ÃöAYÜÑÒi•"{ÇQüñäÌ3ÏdÙ²eŒ1€çž{Žë¯¿€·ß~›üã 0€Çœ0pà@öîÝ Àš5k9r$W^y%[·neÈ!\rÉ%ƒA–/_Îm·ÝƘ1cª<Ÿp8ÌÒ¥K•ï3±mÛ6ÌM7ÝD»víX¾|9?þ8W_}5»víbÈ!ضÍÈ‘#¹öÚkY¼x1wÞy'999 :¥½{÷®2ò.„BˆcÃty˓ĥ áñÕÀ²"hh‰ô`o:¶%±ÍZ:á`ޔ̓~zÞ¼yD"”Rœ}öÙdggã8ï¾û.J)~÷»ßѨQ#lÛN–sÎ94lØ÷Þ{˲hÑ¢gœq~ø!¡PˆºuëÒ¡C–.]ÊÞ½{QJÑ AÚ·o/•QWÑh”yóæ¡”Âq:uê„Ïçcÿþý|öÙghšFçÎñx<äåå±hÑ":wîŒRйsçбcG222ƒ|ðÁÉ8¡fÍšò&‹“Š£ WØ–ÂQGÅ])…išÜx㘦Aaa!£F¢°°0yŸÙ³g3{öìC>à°aÃûd,XÀ‚ ª”Í;7ùÁ<”}ûöñÈ#T+_¾|9Ë—/¯V>cÆŒ*·?ûì3>ûì³ä튋B!„8ŽÇN$‰sâè¦ÇŽ£•g¦ul £¼,1Z®áØq ÓmÅÐÍÃd`?I†Ño¾ùfî¹çt]géÒ¥ôîÝ›iÓ¦%—Ý-[¶Œx€©S§¢”"súé§ó¯ý‹‚‚‚ä,Æ3Î8ƒ¯¿þš¢¢"ÇÁ²,rrrhÓ¦ 5jÔ૯¾"sÑEI…ÇMqq1wß}7÷Þ{/¶m³jÕ*|ðA&Nœ˜Ì±jÕ*xàž}öY\.¶msÉ%—0qâÄälÖ+VпÆ‡¦iضÍ9çœ#º8 H°mˆÛ‰AqSG«Ò¶é‡lT,ü˜>ú]דÓÍ…B!ŽDE’8ÛŠãö¤‹”bº}(¥°­(nO±hÃô¢V<‚Û›F$T„ûPz²óòË_‡›’’Âßþö7zöìÉîÝ»;v,gŸ}6š¦±lÙ2ºuëÆ˜1cèÙ³'&LàÚk¯eõêÕU–~ùå—ìÞ½›üü|t]Ç0  @ƒ ø÷¿ÿÍ‚ $@Ç•®ë4oÞœœœZ¶lÉ­·ÞÊĉéСJ)/^Ì_þòÆÏ´iÓèÞ½;Ñh”§Ÿ~šóÏ?€E‹ѳgOfϞͺuëä'oûÄËvp05¥¡Ujç´ƒ¯DkŽãðÕÒ¯ŽËzä‘GèСùùùÉuãB!„8¹T$‰óxÓ•íÇŸV›X¸4½’XLœ¨úý›ßü†™3gbYáp˜ììl¾ýö[¦L™B½zõøòË/iذ!3fÌÀ¶m"‘™™™RgÅÉ +°°•Ž£@¯hÜÊw^ûŸ7tO?ý4J)233å¯#„Bœ¤*’ÄEÂ%øÓêb¸¼†‹H¨Z"¡" ÓH,ÄŸV‡`iÞ!“ÄLÇaóæÍlÛ¶ ¯×‹×ë¥iÓ¦„B!"‘£FâÛo¿%sÚi§Ñ·o_t]§I“&|ûí·lÙ²…’’¼^/‘H„`0H$9dà/ÄÿB(bûöílÛ¶ àv»©_¿>Á`P(Ä]wÝE,# rË-·pþùç£ë:7NÖß~ýúQZZJýúõÙ¶m›7oNî%ÄI £a;‰¥Þý0!½aètìØ¥›6m¢~ýúøý~>ÿüsZ´hAÆ ĺ“•+W‰+f]tQr-ÉêÕ«“Û¥Õ¨QƒvíÚaÛ6'™ðíÔSO¥I“&,^¼˜óÏ?MÓØ´i»víªv¾/¿ü2¹¥Û÷iß¾=iii@"¡Ü¶mÛÐ4‹/¾˜‚‚Ö®] À¹çž‹¦i,Y²„¦M›rê©§øê«¯¤ö!„GÉ4+’Ä¥ ãñ¦•'„ÓpyR‰†‹q{Ó°ËGË=Þ4¢áb¼þŒ“>°ŒD"<üðÃØ¶Mß¾}9óÌ3ùðùþúë±m›вeKn¼ñF‚Á ]»v¥sçÎtîÜ™îÝ»‡éÖ­S§N¥W¯^É„¼=zôÀ0 |>@²¯&Äq 6”bëÖ­ôíÛ—x<άY³ÈÊÊbذaÜ{ï½hšÆ›o¾I  OŸ>Œ3†Æ3sæLn¿ýv”R<óÌ34jÔˆiÓ¦qçw0qâDš7o.o²8Ù"t[%þ¯4Ì#¹&­imZ·ææ[náoû×\s Í›7çùçŸgõêÕäää°dÉýúõã©§žâóÏ?G)EVV¦iò»ßýŽÎ;3räH,ËbÀ€¤§§³hÑ¢*[›¥¤¤pß}÷qÖYg±oß>š5kF·nÝ1b]ºt¡K—.üãÿà²Ë.ã÷¿ÿ=£G&ö¹ÿñ¤_¿~Ìœ9“ºuëÒ£G†Nnn.Íš5£_¿~ :”zõêñÈ#0yòd7n̰aÃØ¸q#»wïæ‘GaüøñÌŸ?_*BqTvÐp ]7Ë“Æé忳+•%z&ŽSQf¡æI~ñÂäí·ß®Ræv»yçwª”½þúëÕŽ5kV•Û/¾øb•Û]»vMþû¼óΓŠ(þ'z«V­xë­·ª”Ÿyæ™ü÷¿ÿ­RöþûïW¹]§Nje 4¨vœ'p°ìÄçGGÓ¨øÑ*þ}PpnY6ï¾÷.–eqË-·0sæL"‘;wæ”SN¡iÓ¦´mÛ–:‘‘Qe sÏ=— /¼ììl.¸àRSSñù|tìØ‘•+Wòúë¯SVV–¼ÿÚµkÙ±c;wfÆŒ,X°€³Ï>›¬¬,ºté‚×ëå÷¿ÿ=µk׿ÒK/Mfƒ<œŠÇ<ï¼óhÓ¦ -[¶$;;¥Ó¦McæÌ™äääðàƒòøãóŸÿü‡ììlZµjÅgœÁùçŸßïç /”Ú#„Bmĉ'21[QL·+A× 4MÇŽG”iºn`•—Åc¡“þ½9ÜN8Büeff2eÊy#„8BJA¼<“»m´ÍZ2(¯|@¥R]×yçwX°`Ë–-Kn‰`“&M"77¯×›œvþüóÏÓ¨Q#n¾ùf®¿þzzõꕜ¦Vyºš¦iÕ¦¯9ŽƒV~Ñ ò1ûöíã±ÇÃëõâr¹ªLqw¹\ÉÑøŠ5*{0>þøãÄb1|>EEEض͎;¨U«¹¹¹ÉséºÎ+¯¼Âš5kðz½ß;J/„BˆïgºüåIâÒ“Iâ¢áR4MÇã«q q\$€×ŸQž$®–ur·ÁçœsŽTqÒp¹\üö·¿•7Bˆ#ŽÐAY‰Qt8ô®jÕvM£Q£Føý~ त„²²2@€´´46lÈôéÓ¹òÊ+ÄÚmMÓ¨Y³&±XŒ²²27nŒã8ìÝ»—š5kÒ¸qcöìÙƒišdee%ƒj]×iÚ´)uêÔ¡  €h4ÊÎ;Ñuôôtî»ï>ÆŸ\WðÐC1oÞ¼*Ó½òóó‰ÇãdddСC^zé%Î8ã Ú¶mKNNãÆcöìÙL:•¦M› )**"55•:uê0}útn¼ñF©ùd•²çž{.ùï… ²páB©mB!Ä1¡*z"hš^ÞsIôf”r”iZ²g£izâwºqØÓI€.„â„è¶¶Tš‚Dbvåhèhh‡ˆÐ–¥ã8 µ]«Öþý/'–mÞ¼™Áƒ£”"‹É_[!„8 ØVMÓ±¬o:‘P1.O J)¬x¯¯‘p .wbéZ<ÂëË \V€Û_ãð'–ÙïB!N´òòšê~¸kÊNy@¯¡aV¿Ûñ¿­ë:çž{.ƒ "ãr¹èÑ£@€¼¼<òòòÝk-[¶dìØ±(¥2dkÖ¬9é÷GB!~é\îÃ'‰ó2I\Í_M’8!„¿êØGi$v#Õ~8IœvBöÌÌLÆÇÛo¿Í 7Ü€eYüýïÿÁã<S¦LaÑ¢E¼öÚk<ðÀøý~ù« !„?sñXÝ0’Iâ"Á¢IâÂåIâBIâÜD‚E‰$q/?1’þúë¯óúë¯'iÔ¨íÚµCÓ4Âá0óæÍûÁ7Âårѹsgt=1çîܹÄb1êׯϹçžË§Ÿ~Jaa!>ŸË/¿œµkײuëV.½ôÒä…+V°cÇ©UB!Ä÷0L7Êq0Ý>b‘.?‘NÓp¹ý‰2·Ƕ…Ë“(óxÓ8ÔPBrÄ !„8)¢sl[hG¸Í@­ÌZ 2„ßüæ7ôèуG}”Ûn»6mÚ0dÈêÔ©ƒÏçcðàÁ\vÙeÉÀ;‹Åhß¾=Æ £fÍš”••1zôh-ZD×®]ÉÈÈHfI¿ð yì±ÇðûýÔ¨Qƒ¡C‡Ò®];úô郦iüæ7¿aÈ!4hЀzõê1bÄZ·neY<üðÃôèÑã{_¦i 0€nݺ éÖ­ƒ B×ulÛ¦cÇŽ :”ÔÔT D×®]‰Åbüå/¡ÿþÄãqZµjÅðáé_¿¾T,!„âGÑDÚÕBïJ¿GûIQø‰^§iÚÄABüÔ~¼,ëâ$ü\CÜv°l…í¨#˜â®iضÍ'Ÿ|‚eYôìÙ“éÓ§ ¹ð ±mÛ¶QJ¡”¶í*#ÝW_}5×]wgœqguV•)é]ºtá¾ûîcÈ!|øá‡´jÕŠZµj1oÞ<>úè#êׯO³fÍxÿý÷QJ‘››ËŒ3(,, ¨¨ˆ%K–pÎ9ç°zõjzõêÅG}ô½¯K×u.¹ä²²²èÖ­µjÕâ÷¿ÿ=𦑗—ÇСCñù|Lž<™ÓO?~ýú±cÇÎ?ÿ|<]»v嬳ÎâôÓO§FR³„Bˆïa[14]ÇŠ…q{ÓˆGËÐ ºn…ÊËB膉n¸ˆGƒ¸½iD#¥?iŠ{E?æDýX–U¥_$ÄOQQ‡*êÕ‰ª×r¡@ˆcÇQŽr°Ëv•Åý ˆ>ù…jßxã /^Ìu×]‡ã8\|ñÅÄb1RSS ‡ÃX–E8{×­[—n¸îÝ»sß}÷%¿\.¼ðBúöíˈ#Ø´i©©©”••Uù:¸!ËÍÍ ðí·ß&Ë-Ëâ?ÿùo¼ñÆ #;;›Ûo¿½Ê±iiihšF,#‰”_­Plܸ‘Aƒ‘žžŽišÉF4 Fiܸ1ÅÅÅ”””$ÏFéÛ·/¦iâ÷û)((š%„B|Šéë_ Büƒ’Äe$Ë’IâR~z’¸Úµkcš&[¶l©²”îI)E(Jdq´ à ;;Û¶Ù°aà »àcÛ6Á`Pê³Çe+4G¡iG°=±©FófÍÈÊÊÂãñ$ƒð>ø€¬¬,ÆŽ‹Ëåâ½÷ÞãÅ_`÷îÝ4hЀSN9Çq())¡yóæ‰}ÕÇŒáí·ßfß¾}üóŸÿ$‹Ñ­[7öîÝKYY-[¶ÄãñPRRB~~>-Z´@Ó4jÖ¬IFFÅÅÅ4lØ &0gΦM›ÆØ±céÝ»wrvMÓøÏþƒßïçÕW_å…^@)Å–-[ðûýdggÓ¿z÷î×ë¥ÿþdeeqë­·2zôhÆÇc=Æ·ß~Ëi§FÓ¦M9ï¼ó¸âŠ+x衇’„BQ]<B× ÂáRü©YDBE¸Ü)(å —”—ãrù@ƒH¨j¡@>núA}~pz~~>))‰mÜöîÝ{Â_(Jñc(¥°,‹}ûöáñx(..þYô;KKK%HâX|ÆË?窼8¢mÖLÓ¤u›6Ìœ9ÇCFFF2@˜1cJ)ÒÓÓ“Á9Àˆ#¸÷Þ{¹òÊ+Y´hÏ<ó mÛ¶eÕªU¼ñÆ@bšûÇLii)ï¾ûnr6€gžy†?þ€óÏ?Ÿÿû߆AÓ¦MYµjH$7dÈ:wîL§N˜={6S§N­òfÏžÛífíÚµ@"á\¿~ý¸÷Þ{¹æškؼy3S¦LÁ¶mêׯO$á‘G¡  €~ýúÑ«W/Z´hÁøñã têÔ €!C†Hp.„BüÃp¡”Â4=ÄbAL—Ƕ@Óå-/óâ(Ô2—'åð'=Ìâ¦M›ÈËËCÓ´ŸM¡ë:ûöíKÎââH9ŽÃêÕ«qçgU§5Mã»ï¾“?Çê³Nb¦•öÜ%ªrhnjŠ›Ï ƒòP\´ƒ-ßlâÝ9óyfÂÿÉ»&„Bˆ£rÝu×òúŒW°l…$‚q;ž^ ×÷–ØV„ßí`Õêå,Y•ªÝ…¡ÁÓ5Å4Dë~øa•„Ÿ Û¶“3e=º8R–e1gΜŸísKIII&ˆâ×&Pš×_‹O×Ĩ‘âF¡p ¥Àr@á`9q4¥ÈL±Hõ•ñæ{J]„òŠˆX6çvncÛ(ÛÁ<¸¨¶Í‡½@-„BqdÁ©EÓ âáR¼þ ÂÁBÜžTPŠx4ˆ7%“H°—ÇhÄ£exS2 •æáI©ù£ëOú“¼áâ¤aš&]ºt‘7Bˆ“•¥ ÅAÛ¬I .„BˆãÁåNÁ±-¼åIâ|)™Xñ¶ÇëÏ ÈÃ믉mŰ­h"8ä“’^7±BqrÆç8$¦¸ÃØ]!„âhYåI⢑R|©µˆ„Š1]tÃ$N”EÃņÃt ãK­E¨l¿Œ !„8©9 TyQ³Zø. B!Ž1]O$‰3LV,œXoîØ.7V,ŒáòTJ—¸ŸËåû3KÇE!Ä/[b¢˜†B¡kJQñÿB!„8v4]ºnà8ºn ”J¡ëfy™™è¥T.3\‡ÙNíöZB!~Á¹ck(GC¡Ét!„BV<‚¦Ä¢ex|D# Ãn˜Ä"¼åeºáB7\DËË"¡¢êl«t^$@Bñ ÒÑP*ñ#kÐ…BqܹÜþò$qÉ$qv<‚mÅñúk äáó×Ķ¢ØV_J&Á@)éu$®bðÜ‘÷Vü?{gfEq¾í»ºûìsf¶aw5²)Š( Q5A@À¨h4ʧþbˆ70Á¨¸gqW¢D\þ È> ³/gïîúþ83Í ˆ:¨hÝ×5ÌP§OwŸê®ÓõT½õ¼ …Bq<‹óäcÎ’[j­A‡#R+ …B¡P|ÌDMÓ‰F*ñ2ˆ…Ë1Ü^¤”Iã¸@&±hºáA ˆEÊñ2‰T•àò¥¨ T(ªÙ³g±X )¾Û.¥ÄårѲeKUÑ Å)ÒíêPw¨'ºZË¥P( …¢šž4¿Ñ]˜f Ýp0‰ÓÝÉ2Ý] ¶V™Ë£*O¡¨Åܹs)**ä”SÚ!DÃf! Ê‚dddpÞyç© W(޵8—`J‰”6š”õÌ + …B¡P40š¦'Íßtƒx,„Û“‚iF4ÃMŸ|ò kÖ¬©ó|P(¾C/ —ËKzz‹隦a¹úê TVVñÜsÏ1zôh§ÿ¡P(Ž‘HÇIbROˆ»¨ÿ †n0ü¢áŒ9’ÊÊJRSS7n………‡=PNNEEE‡tZ322˜5k?~<_ýõññ•(ÙÙÙGüì?^¯—çž{ŽfÍšñÐCñÎ;ïQèŒ5Š!­I\Ö IDATC† …ðz½L˜0ÒÒÒo<ŽÏçÃ0 *++y-;;›’’’zxûöíyöÙg™:u*|ðAƒ~Ã0ƒGõ~Œ{¡W¯^Üzë­x< ©¬¬äø¡Pè;kذaL˜0)%ƒ>¤Îª>„äää°ÿþõþnÒ¤ Ï<ó ¥¥¥H)ÉÉÉaÒ¤I¬_¿þ°ïñûý<üð䦦¢ë:›7oæÞ{ï%‹Ñ¦Mþþ÷¿;×*''‡k®¹†;v|¯ó;v,£Fbøðá”””qÛììlžyæ*++ ƒ¼ôÒK¼þúëØ¶M¯^½¸í¶Û())!++‹«¯¾šüü|®¿þzÎ?ÿ|ÆÏž={ÔSLq\Rcçñ¥ª,ÄŸ’MQ)Ñ4¡C‡rå•WrÏ=÷0räH Ãࡇr6ëÚµ+={ö¤sçÎNÙôéÓéÙ³ç!'QRRÂ_þòRRR˜6m ,à‰'žàÄO<.ê¼W¯^u>ûE4åöÛoÇëõ~ãÈæ‰'žÈu×]ÇŒ39r$éééÜsÏ=ßx ÇÃUW]ŰaÃy­U«Vüõ¯%ÔûÞŠŠ >ýôÓc6Ѽys¦M›FãÆ´kàñxxê©§ê}h-X°€O>ù·ÛÍĉ‰ÇãÜsÏ=dgg§c½ñÆlذ¡Î lí‡éСC¹ñÆ¿÷gÒ4§Ÿ~š“O>ùG½¿g̘A$aäÈ‘ÜrË-äççó׿þõè›ÚŒ?žN:ñ»ßýŽ[o½•0hÐ üqòóó5jwÜqååå<þøãßû9sæ"(¤”èºÎ´iÓ˜7oW]u·Þz+¤M›6lܸ‘ùóç;ï™0a‚¦úòË/S\\Lvv6—^z)}ô›6mb̘1”––òŸÿü‡~ýú‘——ç„Z†Á;ï¼Ã®]»ñ©i¶móÜsÏFiÕª¬™Ô(,,äÕW_`øðá\ýõ„B!®½öZ ÃàÕW_¥  €ŒŒ .¿ür„˜¦É¬Y³Ž*ì|„ N¨ÛìÙ³ùúë¯ ƒ\qÅÎ9D"ž}öYç}C† ¡E‹¤¥¥aYÖQiÖl÷ÔSOÕ™í»ì²ËÈÌL†.^¼Ø ¿ûýïÏE]ÄÊ•+ ƒÎçjÛ¶-wÞy'Í›7güøñÄb16mÚÄG}ä%—ËÅW_}å̼{½^F]׉ÇãÌš5Ë9‡þýûÓ®];*++™7o#FŒàí·ßf×®]L˜0·Û À믿NAA%%%2yòdî¼óNŠ‹‹}õîÝ›O<‘矞´´4.¹äæÍ›ÇæÍ›q¹\Œ7]בRòâ‹/RU•œ±éÔ©“3¨TZZÊK/½äÔwÓ¦M)//géÒ¥\pÁ¼öÚk3þ|î»ï>î¼óN6nÜXoG£Qf̘Á¿ÿýoN;í4Þÿ}ÆŽ‹Ïçà¿ÿý/;wî iÓ¦ >!Ä!u$¥DJ‰mÛ´lÙ’¡C‡òúë¯sÁ0zôh¶mÛÆµ×^‹¦i<óÌ3D£QÚµkç¬!«ªªâ…^pê»M›6üóŸÿdìØ±NÛxûí·¹ÿþû™î½÷^5jÄ<À©§žÊ‚ èÚµ+Ó¦MCÓ4š7oÎUW]Eii)«V­bܸq\yå•lذh4J8fÉ’%,Y²„ÊÊJ|>>ø ­[·fÁ‚üú׿æ¾ûî;*!±lÙ2/^LFF÷ß?éé餤¤0fÌRSSY´hÇçü#C‡eâĉ¬_¿žÏ?ÿÜGbëÖ­¼ôÒK\}õÕ<òÈ#¼öÚkÌ›7€«®ºŠ±cDzråJ***˜2e 'žx"¶m³víZ¤”äçç³téRg€¦¸¸Ø µ]µjË–-cëÖ­ÎñV®\ɾ}û¸úê«ÙeÇÕW^Inn.Ÿ~ú)çŸ>wß}7ýúõãæ›o櫯¾bçÎÜwß}¤§§STTÄÝwßÍÀY¸p!7fÚ´i¤¦¦RQQÁý÷ßOee%>ø ^¯×9~÷îÝ5j.—‹¬¬,ÆŒã ú<ðÀôèу pòÉ'óàƒâr¹h×®S¦L¡ªªŠ+V0fÌ&L˜À_|Á!C6lÍ›7çÊ+¯äÀçóñä“O2þ|î½÷Þæ%©”°, Ó4¹í¶Û1b‹/Æï÷sß}÷‘MZZ<ðÙÙÙ|úé§\pÁL:õv“““Ã}÷ÝG  ¢¢‚5kÖ`š&EEE,]º”¥K—bš&¹¹¹N¤ÄÒ¥KùÍo~ÃM7ÝÀ¦M›8÷Üs™ýôS>þøã:¢÷¤“NbÑ¢EìÞ½HF‚|=öƒ ¢W¯^\qÅN„J§N¸òÊ+ñûýD£Q-ZDÓ¦M7nœ3ØÒªU+ÆŽKaa!kÖ¬áꫯæòË/wÎÑçóñØc1jÔ(žyæ']Î?ÿùOV¯^ͨQ£hÒ¤ S¦L9äó=÷Üs¼öÚküùÏþÑ#Šo/h“â[3ܘñ(†áÁ¶-¤´“ŽíñhÒÙ]ZØÒB7<Éí\¾#/±ýFí-œu} ùcЯŸ`Ò$áÃw‘™ù"_ü57Ýçž»¼¼w¹öÚ×_oÒ¥Ël{.Q7‚âøPɶ ¦‘’¢Ó­Û©¼÷Þ{Î3õH”––rÎ9çЫW/Î:ë,öíÛçôÏ:ë,zöìIqq1Ü~ûíÎû®¸âŠ:¾1 Å/J #èHtŒCŸzG7[3›'×…mÛ¶ !Ä!3Æ‹-bêÔ©L™2Å y>\'[JInn.Á`uëÖáóùÈÈÈpB˜O>ùdÊÊÊX·nS¦LÁëõ‰DœãÖì·öì™”˲øüóÏ4h;wîdøðáx½^§ƒûÇ?þ‘ÔÔÔ:HJÉæÍ›Ù°a.—‹¶mÛ°yófLÓ$‰°fÍš:Âé‰'žàÞ{ï¥I“&\ýõGòêõzù¿ÿû?¤”ƒAÒÒÒœºµm›üü|Ö¬YC"‘p„R‹-¬]»–¬¬¬£šˆF£<ýôÓhšÆ£>ʳÏ>Ëøñã±,‹¶mÛâñx¸ùæ›uÌ)))H)õ¾»wïfõêÕÎþÊÊÊ(((`íÚµ‡˜ñ¬Y³†h4zȵ¶m›‚‚Ö­[G$q„XÓ¦MIKKãóÏ?ǶmÚµkÇ'Ÿ|B8æ±Çã¹çžãüóÏ硇Âív;3ÞÜu×]<òÈ#Ž‘I<wf™k·†3fðä“OÒ­[7îºë.'â!55•Æ3|øpˆ”’-Z8±XŒÆÓ£G^xáFŒaTUU1kÖ,3gÎd̘1ufóë»ÏO<ñD·Ýv^¯—ÔÔT<%%%<ûì³Ü~ûí|ðÁüîw¿«3k,¥Äív3sæL¶oßÎôéÓ‰F£|þùçH))))©3ãí÷ûiÕª;vì`ÕªUH)éС»ví"‰Ð¡C>ûì3Ú·oÏE]„×ëÅ4M^~ùe|><ò&L`÷îÝTTT°{÷nú÷ïÏ_|Ïç#==F‘——‡×ëeÒ¤Ix<ÒÒÒœA“õÏåË—³aÆCꨬ¬ )%™™™L:•—^zÉÀGbРA´iÓ†±cÇ’––Æc=F÷îÝyÿý÷äìöĉyøá‡éÖ­)))ìÞ½›»îºë}UVVrÖYgaÛ¶³&|Û¶mιÇãqV¯^M·nÝêýNÛ¸q#[·nÅãñ8ƒC5mqòäÉ 0€qãÆ1wî\'zbøðáŒ=š›nº©ÞziÔ¨#GŽdöìÙlÞ¼Y=ÍÇf"’4‰ •' á* ñøR‘Ò®6„Ë&\UtÀ$.\†?˜CUùÞúMâ¤Ó«ùÑŒÏg ÚøýQ„(Ãï &ðzø\¤¤$p¹Àã©BÊ*P©lÇ.—‹›nº‰D"A8¦¸¸Û¶ …Âlß¾3fqIišD£QæÎ‹”’!C†ðÒK/1eÊ^y夔 4ˆýë_Nä˜iš|öÙg*Œ^ñ‹D’œ=¯¹ÿÊÅݶmöíÝKJJ >ŸH$â„×Ì0Μ9“¼¼<¾øâ &NœXç½ÿûßÿ˜>}:wÝu·ß~;«V­ª³ÿÜÜ\,Ë¢°°ðˆ³ÁµËÝn7@àCT¿‰uëÖ1iÒ$7nŒ×ëýVnã‡Æ³oß>LÓdÿþý\vÙeŒ1‚ÿ÷ÿþ'NüFîgžy]×¹øâ‹;v¬cvÔô(·=ùä“™5kÿ÷ÿǸqãx÷ÝwyðÁ¹ùæ›døïèÑ£âñ]»Þ³³³ñù|ŽqUí×[´hQý%^|Økv$ÊËË ‡Ã4kÖ̹5ŸÍårqÍ5×ФI^}õU}ôQgö’f@'NäÉ'Ÿäé§Ÿæºë®;䨵ÿ¶,‹1cÆÐ¥K^~ùeî¸ã'Üß0 ~øa–,YBóæÍ ©Þ·oŸã?ðÄO8çjš&=ô)))¼ð Œ?Þ1†äR†¦M›RYYIUUB***¸üòËIKK#33“ýû÷#„`Û¶m\z饌7ŽÉ“'ó»ßýιÏkÂÞÿð‡?0sæLÆŽËÓO?]ç3ƒÉÜ¥53Äßæ>9ø;kÖ,ÒÒÒxúé§¹úê«Ùµk×!÷_Íq…Äb1FމÏç#''‡¯¿þMÓ((( %%…Æãr¹CÈX,F,;l{—R²páBþýïsÿý÷×¹Žéé餦¦:@—Ëå´;Çã Ôìïõ×_gþüù\qÅÎýp8s·ÂÂBLÓ¤iÓ¦H)ÉÈÈ`ÿþýõŽðM7iÒÃ0ؽ{7UUUƒA Ã@Ó4úöí˵×^ë,×hÖ¬YC¸-Z0kÖ,æÏŸÏ“O>©žfŠã¯ÓïöcÛI“¸på~|5†pBàõ§®Ü7E"$Þ@&áÊý‚°¬ïnàv×o€û}Ñ´<Ÿ-[ÖRXXB(âõ×_gÞ¼yìÝ»—ââbþþ÷¿£i[¶l!==]ÝŠã‚Aƒ9‘¨_}õóçÏgïÞ½Î3»f"éH¸ÝngédII ¦iòá‡2pà@lÛF×uZ·nÍØ±c¹ï¾ûøè£øðÃè3£Pü|ºÀ®e÷­ ÙéŽrÝuyðᇘ4iK–,Áår±råJg»•+W²{÷î:¢ 6sæÌÁëõò—¿ü…‹/¾˜ÓN; HšËMž<™¹sç2cÆ úôéCii)½{÷Æív³ÿ~gviñâÅtïÞ>}ú0bĤ”ÜvÛmTTTðå—_Ò©S'LÓdùòåœx≴iÓÆI]T3Û¥ë:†a ¥déÒ¥´jÕŠsÎ9‡qãÆ±{÷nî¼óN'¹F ÔNo°dÉN?ýtn¸áºtéÂm·ÝFqq1·Ür º®óꫯRYYÉe—]öFlË—/ç׿þ5}ûöŶmŠŠŠèÙ³'Ë—/¯s\]×uê›6m¢¢¢‚>}úðùçŸÓ±cG>þøc***+€·lÙB×®]q¹\H)€uëÖÑ­[7úöíKÛ¶méÓ§wÜq_}õ‘H„µk×Ò®];† –-[¸ë®»R²qãF***èß¿?W_}53gÎdöìÙôíÛ× ÷>å”Sœ‘Ñƒëµæ3Í™3ÇÃСCñz½uÄÎÈ‘#éÝ»7>ø k×®eèС,Z´È™E¯áºë®cÚ´iÜxã¬ZµŠ~ýúÑ·o_ Ã`Æ tîÜ™E‹qõÕWÓ¡CfΜɎ;¸ôÒKY³f ÅÅÅlÙ²…Î;˜4iÏ?ÿ<ÿú׿èÒ¥ ~¿·ÛÍ)§œÂúõëëÌ™2e üã™6m7ß|3-[¶DÓ4 ÀøñãyðÁY¾|9ݺucðàÁôë×Þ½{Ó¢E n½õVâñ8üã)//çÝwߥ_¿~\zé¥<ôÐC´nÝšœœt]gÏž=<ôÐC<öØc,Y²„ 6°lÙ2š5kÆ=÷܃¦iuÚFÇŽI$hšV§ÝÖÌÈ÷ë×O<‘uëÖÕñ–x衇°m›G}ÔiwRJ§ŸŸÏêÕ«éСýúõ£K—.tîÜ™Ûo¿Ý»w3qâD¦M›Æœ9sX°`·ÝvÛ7~W-]º”óÎ;+Vзo_š4iÂÒ¥Kz¿ì²Ë¸êª«ˆD"NûÙ´iåååôéÓ‡@ ÀÞ½{ï¤Å‹Ó¥K¶mÛF¿~ýHKKcÉ’%G<‡3fУG¦L™ÂÔ©Syúé§¹æšk(..ÆçóѳgOÚ¶m‹‚sÎ9‡‚‚Ç[£ö}^ó÷СC7ÜSN9… 68Žî÷Ýw ,ÀårñÔSO¡iƒ cÇŽÜÿý|øá‡<üðÃÎùuÖYu–vÔ‡Yºt©zà)~R˜f MèD£!<¾4bÑJt#ÙÑOÄ’e‰Xšîª.«ÄãK#)Ãå |'qÞ±#XÖ±èÉÐù¶NZZ&íÚµs¾kr×ü?''‡ÔÔÔz³¡(?EjúŸ>ŸììlB¡ÅÅÅŽ7Ò·¡æ¹}öÙg;^EsçÎE×uZ¶lÉš5khß¾ýaM‡Š_ŒN¯^³%ž˜_&tÖÁÐ$¿95 ÒCYi>_mÞÄç~È#Óg‘››K¯^½B‡ùÏþó­|þùç³hÑ"ì˜@™¦é˜(ArÝxóæÍ‘R²}ûv–/_î Œ1˜sçÎuB«[µjE=R2{öl.¼ðB¶lÙ‚a´lْٳgcY:t K—.Ì™3‡D"Á°aÃÐuÛ¶™={6±XŒf͚ѻwoæÏŸOqq1Æ cÏž=N‡·öy,]º”íÛ·ššê8F›¦É›o¾yT3ò]t‡Ï>ûŒÌÌLrssyï½÷8p k×®eÓ¦M\pÁ$ 'T÷œsΡiÓ¦”––²~ýzz÷îÍûï¿Ä4OmÛ¶åŒ3Î’faµû àŒî¯Y³¦ŽÙY“&MèÓ§RJÞ|óÍ:¡û}úô¡I“&óá‡:å5áߦi:£¡sæÌaРAlÞ¼™µk×rþùçãr¹˜3g§Ÿ~:guO<ñ^¯—÷ߟ§žzÊ1Æ1bn·Û¶™7oÞaCȃÁ 'tË—/§_¿~4jÔˆ¢¢"6oÞÌÙgŸÍ»ï¾K(⢋.r®û;ï¼ãˆÒöíÛsê©§ÉðùŸ…>}ú8îë{÷îeÑ¢EGÔ:÷ÜsÙ²e gœq†cN¸ÿ~ÇL ’iÓ|>Ÿ3K\3«œÍ¹çž $èß|óMG¤tÒI$ fÏžM³fÍèÕ«}ô………† À{ï½ç̺·lÙ’³Î:Ëno¿ý¶s/¼ð7æé§ŸÆ0 ,XÀÞ½{ëý\ à½÷Þ㪫®bܸqÌš5‹H$ÂŽ;X¶l4Ó«yÀ.[¶ÌiµÛèÿûߣî¤>ÇãttkÚhÍÀÏÉ'ŸŒiš¼õÖ[ΠNMÛØ²e‹3 ¡i#FŒp…j¾w¾iæ{À€èºÎŠ+èׯŸ|ò ûöí#%%… /¼Ó4±mÛIE¸fÍzöìɼyó(//gذaìܹÓño:t¨®¿hÑ"òóóq»Ý :ÔéøX–E4uR'öìÙ“Æ×ùžxë­·hÔ¨Ñ!ç¼sçN~ûÛߪ'â'ÅEÃ/ä•WþA<ChÒ6B«nßöaËl3Žîö`%¢ìÞ•Ïšµ«X²¦;ëJ$º€‡niƒ¡PáÓ§O§Y³\|>?UUa@#Çk›oбB’’B(â£>â7Þ ¨¨Hå•V|gž}öYÊÊJ3æb23[Õy­¬<ÄÊ5[Éöå»°¥Àë ޤás•³3AÀ'&[!c›9áÄ®¸½þz£<ªªÊØ¿7»vígõê5”——Ó´iS®¹æšÃžßþýû騱#—\r –e‘——Ç„ xì±ÇœÈ°¶mÛrË-· iøÃ4hýû÷WWqÜQYQˆ×ŸÅ‚µ1‚WõóKC’td—¶$!!nI°!; Åâµ9ÅTV¸ï/¥4lÓòì©‘âÉk tÀ’K»Ö/ЊcEff&÷Üsn·Ûñ ¸ãŽ;ޏ–[ñý=z4#GŽD×uÞ~ûm¦OŸþï騱#wß}7ÙÙÙ¬Y³†n¸A­ûyýõ×iܸñ!×`×®]Œ9RUâ'ÅÅà¥=ƒ-5b‘r<¾tñBh.ouY‰D$¸Ü>§Ì¶-,óÛ ôfD£ S4A,„ ++ Ó4ùàƒxýõו@W3žÿuÿxu!yi+))õbÚi)E—5'ÿ›ªDk‚ÌÔ!ûLdŇôt9ÁÔLr›7?äXÑh9åå_³”åËWSZZJJJÊzaa!ýúõcÖ¬Y$ Î8ã <ååå¬]»!Ý»wwBåwìØAzzºZ¢ø tY-ÐëYƒ.œŠ–’’&Mšä¤Ð«1&Q;^}õUgI‚išGõž72zôèê/©ÄùÌØ±cëíä+\ÅO‘“¸XU9¾”ì:&qÑHyÒ$®²·7™ª1ZcW¶oJæw;¦iѨQcÎ9眣2š<ضMaa!_~ù¥úÎTs„ < k’–g¶CÓ DÕF²ƒ§Ú¿oÆ)hºŽÛ*F¤ÄÖUåäï-"=«W {½©xP×B¡ø–G ‹Cš¡ª…B¡P( ŠiÆB'àökÂIñpuY¨–I\·7H,Ráùî³ßBü¸ým¤øAï7À’6!)©LÄ@@È´™61 lH¡„EÄ\.*Cq¼ºT÷²BñÁ8T«†§P( …¢aIö7$æÄn‡S$jõCD_ŠC™2e wÜq‡³ýôSúöíûÞ_RR‚ Ö .¸MÓØ¼y3_|ñº®;»7ndóæÍ si5v IDAT0·ÛÍž={ˆÇãìÝ»—¢¢"¤”ضM×®]UX¾â<#<ý´Ãn¡P( …BÑ@hº )m ——x¬ —Çm%°¥…Ëå#«Äåòc[¶eáòø‰Ç*ñx‚‡Ÿ;ø…Ï)¼òÊ+Gí!¢ø…t). ¤MÜÒˆYqS5%Q b¶AÂÒ‰YZ²Ì–Dõ¢šŸxu–”†bß¾},_¾Üɾò>®sÊ)§|§÷F"æÏŸO=èÞ½;§Ÿ~:š¦‘ŸŸO~~>Ý»w§k×®¼òÊ+ìÙ³‡+VÇq_PPÀÆ騱#gœqÝ»w¯7{ŠBñ½ºÕÏ4‰&Drm‰ó£ 5‡®P( …¢A14Í ©ÀŸ’M4TŠáò¢ë®j“¸¢áRtÃn¸‰†Jñ§äª,<|"óŸI‡å„N U«V4oÞœY³’YsvïÞM«V­ÈÍÍå…^@JÉŽ;hÙ²%¹¹¹¼ÿþûH)9餓¸âŠ+˜>}:¯¾ú*}úôq†â—‡¡Ùdøx]Q "6_‡¡(&(‰êElŠÃ&EQ‹òˆFE¡2§=‘ÔVlÞº£ÁÎc×®]TUU1uêT^{í5,ËbûöíÌŸ?Ÿ7ß|“ÊÊJ yä‘G˜>}:<ðåååÎýðÏþ“ÊÊJÞyç6lØÀªU«ˆÅb<ÿüó@2­ì£>ÊOÍ %lö ¥é …B¡P(ÛJ „F"Åí ˆ‡“†pR’HD’e‰0š®H„“e±*t··žÎÌχƒìjÄÅSO=$ÓPåääpÉ%—ðøãÓ¡Cìˆô‘?sæLrssÕÍöKïêKpi&RÚX¶† X–‰´4\¶–l>‰Ò4ÁÛL`[&t"á0¯·ÞžG‹išlܸ‘½{÷²råJÂá0ëÖ­#55•îݻӢE GÀm»ÈËËcÆ ìß¿ŸW^y…I“&±bÅ ôêï‹äç–uþ>Üþ.B8ÛK)ùÍo~Ã_ÿúWÎ;ïøà/^ŒišŽ’Rªõ芤ö¶Ùþ8-†ÛŠªˆbVE°ªªÕ?¢ª ªª ª‚xa!±²JöÅü¬[¿Ð÷L{‹ÅØ´i§v†aп>þøcG×' k^³mû°û=ýôÓY³f ýû÷?DhkšvÈþúôéÃÂ… ëìÃçó‘——Ç—_~é”-\¸ž={:ç$„àì³ÏfñâÅGu^ Å÷E–h2ùc8­YR(•®P( …¢Á1 RZ¸\~¢áÒ:yÐ]î@uÙ<è.O€h¨_ ó{åA?…BtìØÛ¶?~<;wæ?ÿù;vIJ,&NœHNNgžy&UUU 8¡C‡rê©§Ò£GºvíÊ 'œ n2¶^Mâ6¶i", iI¤)¦°,HHìXK׈y4JËÊd '55•N:9BúÓO?­óº®ë :”Ç!ÅÅņÁàÁƒ™9s&š¦QRRRç=Íš5cΜ9ôë×€Î;óÑGñøããñx¸ä’KêlߥK6lØÀÌ™3B ë:ãǧ{÷îüïÿãã?F×u.ºè"rrrØ´i“#îÛ´iÃìÙ³éÔ©ÓžªQqó-duíL'†Âiûlç¿þõ¯ˆ”¬¬,îºë. àk×®õ®eW(êC«ƒäÜ·`ZßÜnmG¤S-Ð«ß  ©k …B¡P(ÃåCÚ_HU^:‰x!4<¾´e‰HðúÓ‰TáfcÛÖϺnN?ýt‚Áà!â"%%¥NÙÁÿ?\™â—­Ð¥ .á¢YZ¯F,F¬*L¶ѤXR€åÅíñáI÷¢‚Šð^ wP^YE ¯Ó8X,×ü¿öšñÚåMš4q^;Øä°ö¾Þ¯®ë‡ìóàvTŸi¢¦i‡¬³?x?5ïû>ëñ¿<2‚R€eWët!øºDbÛ‡ËožÄZrº‰pOêvâ®P( …¢a±­™ˆc¸ý˜‰(š–œ•²ÑeBfuY"Fwyê"?^{í5uƒ(JŸ#‘˜¶…ße“pi.šáÂ04Ò¼>4MÃðI„‘Åá(.]å±ð´ÈÁïýá³ 8P]<ÅÏ‚h\RX)‰ÕZ)R–ø½"9»^/ÉTçT+q#™oí@³Vóç …B¡P(\8H™œ°-t—›„G7’3VÒ¶Ñ5¦Ghzµ ·pÌxäð]Ü*uÐ:hº ;&Å+è}š—ýQx R±°EUì\·‚¡ý;‘–â'3#Ÿç4ÒÒÓUE*ß[B8.‰ÅíM,!ñ{A i»ÖKµ+ …B¡P4†Ëƒ-­jó·|,â5&qÕeÞ@V27:7H$TŒ/U¿IœòµU(ÓÕO†oÛZÀfYn4ÓÂï2ñÅm¤ Å6V¹@$hÛª%™é©£ÛÿQz¬X±‚ŒŒ òòòê”ÿç?ÿá׿þ5)))lݺ•òòròóóÙ½{7L©vþùç« ©8. x[XvM{ü"›Êh2•ùá[RHjæÐ Du®µê¶¦ 5­P( …¢aqLâBåøƒ’†p¾T6ÑpY²¬ª·'¹¦:*ÁlDUù^¼LU ÅQ7%¥áía3 3{Ë©,‡HE1zÕ4a“á—4 ¸éÖ£5Yéx½G—ã[JI"ñÍYöìÙÃûï¿Ïˆ#y­¢¢˲طoëׯgèС|þùç\qŃA6lØÀ’%KèÑ£‡º ŠãÓH)(«²ùrM8~@O›&4idàÕl—±ïÀút‰A-A.H5}®P( …¢©1‰s{’3ã:f<‚75YæKÅLDðøÓ‰„Šñ²°¥ÊA¬P áŠJ¾X¶”دaáÒ¡e³T:5I'ë¤LÚ·ïŽÛí"5-ý;™ŸišvˆQ[}äææÒ§OŸ:¹ÉkïcçÎlݺ•áÇ×õ~¿ŸH$BZZšº˜ŠãŠš ®T¿Æí5Lû@ù×e’p‚ÃÎ ’ÑíB&'Í )ìjqNß …B¡P( …m› ¶Ç0¼Xf ­z½¹å”Å“&q€eÆ0 oÒ8ÎåV¨PéAú÷=Sj¸4Mƒô ‡Ô ¿Ï‡?@×õOJY¯è>ܶõŠ!xã7˜:ujò;vàv»Ñu–-[ª‹©8.EzI…ÍîIÜ)“¦ÔÑð^½º½À8°»äoåâ®P( …¢¡‘¶…@`ÛVÒ=V…ax‘Hl3Ë  ¡I1^S”+®P| >è¼3ÚßRrá…òÎ;ï0dȧ¬oß¾øý~Ö¯_ÏÖ­[iÚ´©º Šã’ÜL-éa*Á°!lߘ1T‚-Ñ$dä»H†¹+›8…B¡P( ˆáòbÛÕ&qáR<¾4,+†m™¸½A¢¡R<Þ ¶•À¶xªË¼þLÞ§P‡H)±ëYpkÛ6yyyœzꩼýöÛNy"‘pfèUîqÅq}ïS+:½ÚîHA+Is8´%–mc€^+\E +m®P( …¢IÄÃhzÒ$.Ì!\Y„Û› ØÄÂ¥RsW0‰«.«*ß§LâŠãŒ={ö°råJ„´hѢΚò@ €¦iäææ‡Y¹r%©©©¼øâ‹H)ÉËËcРAª? ¡~ôÛjX¶…eš‡Žl©aj…B¡P( ‹áòV›Ä¥ %gÐM3Š@àö“eÞT,3F2ÍZ*‘P)¾@fýkY²»òmÖÌ*І!77—›o¾¹Þ×.ºè"çïvíÚЭ[7UiŠ_´·¤ n7†À®•ø\ …zˆ) …B¡hXlÛª6‰K nl+É0VÛ2²dàí,3Žf¸êïÑ!3¬‚`0ˆÇ㡨¨ˆªªªås[–E8þΦ\ …B¡ø ZõcÂÐ43ùœÕöîBÅ) …B¡hXjLâ,+Û ­Âp{‘Rb™1Üžâ±*tËL3ŠÛ“B4\†û .¿AŸ !‡ÃƒALÓdýúõ?ª@¶,‹P(¤nEC÷ç ÅÏ¢1ƒa€m ¤´0Üîxµaœ”2¹]è*Ò]¡P( EƒQcçñ WáæT€ÐðxS“e)ÙÄcÉ™n/pe!`¦ÿVÇJ$lÙ²å'g4‰DT¸½¢Áù¡î)!„ŠQ(މ>·A˜a!„aš€DÚ`K™ q—*­B¡P(І£¶Iœ?؈H¨ÚNJ¢á2üÁFDCŸjLâB%øƒUà d|«c­]»–ýû÷ÿäÄD$Qùß›xÊUW]E·nÝêÌâ+ß˲øðÃr?B"‘‡ /¼P](Å/šúZ§8èõà ºNzj ¶m"°kº¬­ÐU + …B¡8ÖÝûÃôjŽ•9vâÆ¶mºuû)))¼üò˘¦I÷îݱ,K]fÅ÷Æ4MV­ZEZZë'"Ρ¢¢ŠE‹³gÏ%пx4­z0‰€X²Ú„ÝèvõvõDq.ŒŒ,ÓÄ–6†tLUErdNEe) …B¡h`,3ŽÐ4ÌH?½Nˆ{"ÆëϨ“= á $ס6Äý'²"OJI³f­IIñðòË/8餓ôGž´Û5·Ür 7Üp­[·V7ù1ÃÇC³f­(/O¡¢â;2‡BLs;ºn¨w…ÐDòG"@Šú𤾂ú¾ž C#-ÍO"žÀ²«º8|ûS( …B¡øÞ¸ÜÉðu/peáA&qéN™c8²Iœ”Õ??‘îryiÞ¼= °m›Ç{Œ;æÍ›ã{Û¶m‹eYضÍwÞÉøñ㩬¬¤uëÖ¤¥¥9Aëׯ'ðøãsã7²aÃÚ·oÏÂ… :t(©©©¸\.–,YBNNùË_˜:u*Û¶m#77—wÞy‡ádzpáBFM<GA"‘àí·ßæ´ÓNûÖŸ{ûöíÄãquƒÿ„Bÿü§‹µk%Ç"Ú]p¹’3–eaš&n·Û¹G’÷¹ )%ñx‚Þ½m•ýI¡h qïq "!0’Êüà…B¡P(І#£i:‘Hþ”l¢áR\îRJ¢‘òê²2\îä,t4\Š?%›pe!nêqñ ÃMnî œy¦”6wß}7·Þz+íڵöíþ϶mvîÜ ÀرcéÚµ+íÛ·§mÛ¶¬ZµªÎ¶UUU”——Ó±cG6nÜH^^‰D‚±cÇòÈ#`YÆ cúôéÄãqrssY¿~=ÙÙÙìÝ»—`0H"‘À4M瘇ÞûöíC×uN9åV¯^M‡ÈÉÉÁ²,–-[†Ë墨¨HÝÜ?RB$ååÇfT*+ FŒ€6mK–,eÅŠ•\~ùådddòÎ;ï0lØ0JJJyõÕ׈ǽx<6Ê[Z¡hˆömƒ”5kЫKEuËW]¡P( E£.¤´1 /ñxÃåǶL`¸jʼØvrݶáò‡’aðÇZõTbr&½5½zèºÎÌ™35j§vÚaEúáBÒ xì±ÇH$Œ3†¬¬,>ûì3òóóY½z5íÛ·§ÿþÕ&xÉ}èºÎSO=ÅÈ‘#éÕ«O?ý4£FbÁ‚Ìž=›ë®»)%¦iòÈ# „ oß¾téҥαÿüç?SRRBnn.mÚ´aóæÍ4oÞœn¸—^z‰µk×¢iÛ·oW7÷ϯ:wÖèÒE£¨¨ˆ/¿\K·n#hÖLcõêض¤wo¯¿6yÿýõ@3ÀËOf­‰BqÜŠóäw²e%£c !jÖ+%õyM´»jj …B¡P(Q£F‘¶Ðk­ÍÓ´ê2 Y-Ð2—ë'?w „àñÇǶm„hšF"&ŠQ^^Îܹs9ýôÓ+Ð#‘—\r B:wîL^^^rÂ0ÈÌÌ$‘H8n·ÛùÛ0 \.—ÓÁ«ÝÙÓu€x<ÎŒ3˜6múÓŸxë­·œsÎÈÈpÖ7×ÇÔ©SÉËË£wïÞ¬^½šßþö·äççsÿý÷“ŸŸÀˆ#Ô­ýƒuâáX¹WU…øßÿ>g×®2Ö­ûœ²²J>úèc22ÒÙ¶m' yûíÿRVVJQQ M›æª‹¢P4HÛ¶‰›qlK 4òh€ØÒRâ\¡P( Eƒb™1„¦cF*ðøÓ‰„Jp{R’&qÕ†puMâªð2 WìÇÈøI¶ž={ò«_ý ËJ°wïv6oÞ×_~A4% :‚úp¸Ýn¦NÊ›o¾Ijj*”——“••ÅÈ‘#íJKK¹ôÒK©¬¬dÁ‚lÛ¶>}úpÏ=÷Ô9F"‘@×u¤”H)2dúÓŸxê©§xóÍ7äLû˜1c™½¯m2gY–e9û®=K_{{Ń˭ZA(tlê\Ó"lܸš¯¾ÚN"a’““ÃgŸ}†¦iض”’ùóçcÛ6™™™dff‡Õ…Q(¾'¶”$̶-À21„ºH4!Õ ºB¡P(Іî¶eÖoç¯Ï$.3i—Ú¸^“¸Ÿ@€@ Šß¤IÙÙ;ðù¼¬_¿žªªªo|¿®ëœ|òÉœ|òÉÜrË-,X°€Î;cš&¥¥¥NNu!7fË–-X–E"‘ S§NH) …B”””F=z4óçÏçÎ;ïĶm<Ÿ}öÙ!‚º  Ã0Á‰Dèß¿?K—.=lؽ‚¬¬,ŠŠŠ0 ƒh4ªnîˆÔT¸â ›xÜ>VG.GuÏîÛ·?þX Ò(ß)%¶ia™`†ßçIš;¶¦yT-) …B¡hPÌÄ“8_J–c'¥$V] —a¸| .×’E¸ª·¯áMâ H$v?¡Q{1à) )mþ?{ïoWUÞ{Ÿ1Æ\û–ì@á‘›J¹!¢¨oE”¶§xz´V«µ¶Uû~¬­žö­…b[«íQßÖ㥨أ•W[OõÖ6jÕR.%\Iv²÷^sŽ1ž÷1æ\k‡„[vËø}>ùÀžk­¹æsÌ9Çïy~Ïï¹çžœtÒIxàÁˆ¤¬óµ×^û°fåÊ•]æúøozÓ›8òÈ#Ùk¯½xÅ+^¤÷/|á œtÒITUEUUŒŒŒpÊ)§°dÉ®»î:Î>ûlªªbõêÕcX±bK–,`l,™ïzè¡,^¼˜ãŽ;ŽW¾ò•@ʸ_xá…zè¡}ôÑyä‘,X°k-Ç<Gu .äÛßþ6/}éKI-zÛ}ìYÄØ05u333sT ó‹‡OÑUUÅòåËÙúøõ{+(xê_ß pÖ™®ÍZ4gä‘?£ ŒI홬Á×3s ál•¶Ùj”¨4Çùz†ª7¾;\b—ø—ù:ÿôO÷R×BŒkÚ(WU‰Q°Vð>à\…ªï¶ÅèY·î“Ü|óZFG'9à€€H]×ÜrË-IÒ?ÿùÏÏùûŸøÿþïÿþ ÷~ä#ü|>÷¹ÏpÙe—=è½ozÓ›´í­o}+@W‹¾#>õ©Oð‡ø‡Ý¶üãœ{î¹Ý¶}_Áž&è‘Í›·°xñbV¬Xñ¸ö»ßñZ(Yó‚‚y¼¦H™ótUœjDc$f÷¨v·zs¸´@1ÆÒø>•ë¼c‡·%ÒÞm«ÆwMv£ùŒµ†Õ«²ÏävþÛÿu)¸èYÀ1»ÜáG,áE/º¿û»›øÐ‡ÞÈ;ßù{vØï°rå]|êSw‡pÄU÷þÑÑEx eùòÜrË-eÌ9>øàƒ9å”Sö`ý¡1;;ËÚµk I/(˜W’nP‘DÐC˜%DEc~ÊY)6îó ïgc©g¶2:¾˜™í÷'“8”zvcK˜î¶AvŠñ‰½Ù¾uÃÎMâv»3¬àœrßæ)þiõ·0vY^ íë×_Ï¥—þÆü"ýè[¹ž;îø!SSŘW¦N8;d4{¹Ï{AÁ|¡íàœ{XóÁ=kíÏÞ·¤4Y/xz\ÙåíÎ9‡xOÌ×xeePVUPPPPPPP0¨z©ïùhg·õÌVÈ&qÛ§62¾`ê~2U›XÂö©LL.Ãûzå¼óf°vªïEÄ3ñ‰Ià œMjóND,Û¶=Àç?¯»q<‘mÛ¶166ÖµN{,ضm ,xÔŸ›žž&„ÀÂ… ”%mš† Ì1º›˜˜ø™§~ÿ÷ŸsÎ9‡ç?ÿùe0 žPcÑSôÑG]Š¢¸j¤$Ï ¹Õ¡» IDAT æ¾™ÅËìÌc‹éOoÁõF“IÜìVÆ&–П݊u#BfKʪo»ŸÞØÂ=rL/xÁ©zèªj,õ]Á1„î=VRâBR‚=É [u±ªà}Ÿø‡‹wëXî»ï>>øÁòÊW¾’O<ñ1ïgõêÕœ}öÙšD_tÑElذ?ù“?àßøßÿþ÷ùƒ?ø>üásÐAcäç~îçxîsŸ[&tÁž½_x_Ô'O#!¨!Ĉ³½Š‘P§ Jå\Q¸ÌïòÃXÅØ ïûXטÄÙ^Úf{¨Fth›«F÷Ø1%çtÇ¢EÂ׿ÿyW.åäw¾³{Ïǯ¹†SS¸×^¼~ˆ˜¾ï}POoáùg<ÀÉ'íÖÊ)„Àüc^úÒ—255ÕeÒ׬YÃ~ûíÀòåËùÎw¾ƒ÷áØcå¶ÛnãøãÇÃwÜÁÄÄx u]³víZžóœçpÅW°råJ6mÚĵ×^‹ˆð‚¼`N ³1†“O>™«¯¾šƒ>˜ÉÉI-ZÀ²eËxÝë^×íë²Ë.ãÔSO-“º`§Ø¾};ÿüÏÿÌa‡Æää$Çs ï~÷»iš†—¼ä%¼ð…/$„ÀŸÿùŸÓ4 gu§vçwL_ýêWóþ÷¿ŸÍ›7cäœsÎá„N „ÀùçŸOW½êUÝ|圻x/þîê«æl?ÿoáOÇ7óõÿsãn¯bŒ\ýõœqÆLMM155…÷žK.¹„5kÖ099É%—\ÂÒ¥K9ðÀÙ²e 6làòË/'ÆÔ{ݺuÜ{ï½\vÙeLOOw}Ï[²³uëVþó?ÿ“ƒ>˜øÁrÒI'qÚi§qÑEqÓM7ñ†7¼ç=ïyœ~úé\xá…Üzë­eÐ žÜ]Á‡Hð‘&FœWaபÊ(Ì+|ÓšÄeéúÔ}ôF'H=;•{ž›Äme|ÁÞlÛr£Köè±Ýøå/óÕÏ~]M=†ÿ?«Wó“{Wc¾³~#m?óÌÏÒßx7|À#¿q"»«; !tfXªJUeÉ’%œqÆôz=n¿ýv^ò’—Ðëõ¸ï¾û€¹¦tÆZ .äÄOäòË/çî»ïæU¯z!¶lÙÂá‡À¥—^ºÃQ©ªŠ³Î:‹5kÖpöÙgsõÕWïôx‹qWÁCAD8úè£9ï¼óç›ßü&«W¯R)Çi§ÆöíÛyûÛßNÓ4lذ—¼ä%|ç;ßá /ÄZË¥—^ŠªÒëõø…_øD„‹/¾˜Í›7óµ¯}­kówÏ=÷ðÆ7¾± zÁ“Q¡i”&*p„ˆZATQbŠfÌ#Z“¸‘±ElŸº7ÂÍNÂÈøb¶o½—ñ{Lâò¶‰…ûB½L9ò‘ÏþÞÿÍE}ŽeïÃçWÞûâ3¸úÜÁOn¼}ë>ñ¥/É'žÈôö–í;‚êîÕdä#Á9LJ?üá.›þÖ·¾k-½^ïQcc Ü{ï½xœ¤išGD¬.\H¯×ÛåwmݺµË¬ì £££ŒÉõýª«®b||œM›6199ÉqÇÇÕW_ÍØØïxÇ;:%ÈÃ^­ª,\¸ÿøÇcذaûì³Oð‚'7B°h#DU\Óxð’b¿ª)õçó‹Î$nv;£ã{ÑŸÙ‚s£(J=;ÅèÄbú³SIÒNj³6:±˜ÙéMT£ v¾¢™í{ŒÊ]ëoçìÿòR~é•/Ã×½vë­?á½±‘g0±`@Joºé|æ> ª,_~HWKÿXaŒámo{[÷÷\Б‘ÏxÆ3X»v-ÖZ6lØÀ¢E‹ºm-QÙwß}»Ï¬X±‚[n¹…ãŽ;މ‰ ¶oß΢E‹¸ñÆQU9䀽÷Þ›3Ïùäµwkãøãçž{îaýúõœy晥ÍZÁCbbb‚7¿ùÍÝßûØÇøÉO~Â5×\ÙgžÉ 'œÀ'>ñ n¸á®¹æN<ñD;ì0>ùÉOrýõ×síµ×rÚi§q衇Bà‡?ü!×\s ¿ök¿Æa‡Ƨ>õ)~ðƒpõÕWó[¿õ[…œ<º¼KÿƒÅØìÛ®¦Üt æƸL¼{Ôý)FF'iêDëF¨ûSôFâ›Y\5F=»•‘‘…Ä•ßÍC–.݇¥KWÁ[€»€/§í‡~8‡~8ŸûÜ/²xñ!<ûÙàøã‡—¿œ Û·óÓ_{-‹_ýŠÝúþ“N:iÎßÇwÜœÿîHäÿã?þ£“ïØ'z¸EÛŠ+æ¼ÖÖ´ï ;kÖ~éE]ðh úk_ûÚ9ÛÞõ®w=è}çž{µ.î-œsœþù;ÜK̃¶<™£Rמè•“Œá’¬]DÓ¿2NóßÌ$“¸þc{3;½W`¬Ë}Ð÷¦?³k{XÛ£?½™±‰½™Þ~?{¶ÅŒ¢€;ðò_Äÿ`Óœ×>ó™±jÕW¹ãŽašŸž&üèGLýöo³é'?áñnsòÉ'sôÑG—IUð”Ç÷¿ÿý2OyhŒ4ý†¦nˆ>`¢TQ#A#Aç)]PPPPPPPQõƉ1™ÄMOmdlb ¾™%„†Ññ½˜žÚÈèøb‚¯ ¾ŸÞ72±pÙýÐæÂM_]ËyŸ|ß;û÷ù³-Û½ò­oÇxïyüã?ú±ÿã¯ü ï¸óNþö5¯¡_¹Ç=±QUι2© žòX¶lY„‚§CWÔÏ‚Ö@ÀÅ2 ŠQG¼Ì |ÓÇH2‰ÛkŽ!\ÓOÛšþ&ל׳SŒŒíÅìôfªÑ‰=¸.RÅ39èËø«KßËäÂ…Ýkgœñn.¹d6ÜÂÊ•GvÛåâ/péƒmSSL=÷˜y ÔuÍÆ9ðÀçlß´i"ÂâÅ‹‰1²nÝ:–,YÂwÞÙ‘õ£Ž:ªL°‚‚‚‚Ÿ5ÏîꮓžÃ§å¡ŠTìF"ΈA¨ ¦´Y+((((((˜_ˆŠ"Æ£ÇÛ­VD 1zD†¶uïs{ð˜Ò¿Ûn»ý÷[Îo½ñ7éUÓ·k¯ý>§Ÿ~/xÁ*–,´rúο›Wý×WÊᇽÛü<„ÀW¾òDäAý¦›n¢ª*/^ÌêÕ«Ùo¿ýظq#wÞy'pªÊUW]õ :ö‚‚‚‚‚Ç“ëœÎ‰m1µHÓN¡þà†èUù#ÎØ”17 JÄJ‘LÌ/Œ­@çFèÏladlM=ˆÁV£Ôí¶fªÞX÷¾ÝmcöPAƒ½^à+RÏæ¸aÑ¢Ö.Gz½6oþ)ûï¿7M“Ú®Žšfûî1~øáÜrË-;}ÍZËÅ_ÌqÇÇŠ+¸ì²Ë8ꨣ8öØc™žžæóŸÿ|!èORX+,7¨ F ÎÙDr¯KUŒ©"p/((((((˜G´&qým[[°ÓS÷226‰j¤?³…ñ¼­7š$æ³Ó›_¸”m›ïftÁ’ù?ïY½ú›9‹¾ûëž™™ÙÝ ,_¾œ›o¾y§ýË_þ2oxÃ8è ƒºm—\r «W¯f||œ×¼æ5e‚"²ÓL¾ªræ™grÇw0==Ýõ+79»b­%„P&XAAAÁ“Ö 8¼¨*N£UAA5"¶ÈÛ æ™€ƒˆ0¶`Pe|á²Î+§™ÈÛ–v¸Uoœ+ÿó›\vù•ªßéп'9’Ü~5ëׯçöÛoçCé^‹1Ò4 /~ñ‹¹êª«øÞ÷¾‡sŽ+¯¼’[n¹k-ÏþóË+(((x’Âé Æ4†”A÷!½Çû+6= O/((((((˜G¸jŒíÛÀ7S¯× ÷¬_5O}eŸµ–ÓO?€½öÚkÎkÇsL—Y?ñĹï¾û˜˜˜ààƒÎ ;Ã~ûíW&×ÓªZ¡ à©1Š‘@ àfû5uÁ¼ÇYA(AAAAAAÁü#øïgË@ ¯ÍDØÿýwúÚÄÄÄœ÷-]º€ñññ2pOCX›Vý~¿ûÿÇu]ciË\P0oPE55 DÜ›¶5‚˜ª7Ô^½          àg c tu]³fÍšyé>ðXB`vv¶ô‚‚ùãçùŸ‚«kÖXŒ³[ú ìYˆÎÚebˆ„²ð/(Z¼+MÓpçwÒëõºm?klÛ¶ U-²û‚‚y è¾’W‹«ªˆ"ŒÄPú ìQÜu×Ýüé»ÿš‘‘^— ô>pê©'ñú×½jÞÉÙÆ]9³<„øö·¿ý„#Â"Â]wÝ5§ £  à1tÀG!F@ nÁäDª?Ðx¢÷(Z(zAAAAAAÁÃÞ{/áYÏ:‚¿|ïßtÛŽ8â™üÙùˆêÃgЩ‰{›á !pýõ×?Ȁ v£££|ìc{ªª*'© `wº‚÷JŒ©ä܉€¨C   RŠÐ öFFzüþÛ~‡6mæ‚O|†XÎ7ÿõŸ#Ƈ¡Ý-畇géÆî¼óNÞóžoò³J@;±¼÷¾Æ¶ä žÏB"Ñ+QÁö¨=¨5ÄhÑÝòÐ+((((((˜oì$°#9´,D ž¥ ªŠ Ñ£!5)­ öÜ2$‚Ï]kì¸öHj!éO§£b „ ¸éí3x˜Ìáz>½kÇw)M/((((((xŒˆ!rÕåßfÝ­ëv¾Î^r(¨(MÝ<Äû‰‡{AAAAAÁAÁ+Uœ†ª `òs®ÚÍG>ä`^ðüÓrûµRŸ^PPPPPPðÈ¡( &ƹ⪫‰ªœW ì¿|yɤ<…’êˆ>ƒà|i ŠŠb¥•ŸÆÈÁ‡ÁªœÉÛÞöŽ2x 1*1ÆGæW‘Êö2ˆO=~Ž *7==Cˆ~Pïò£SR€{¿åKiêíøzºŒ^AAAAAAÁc^‚ìÎ'ƒŸ…GHï?ö±±eË–'Ô¯¶lÙÂm·ÝÆg?ûYŒ1eJ€*Ñ'¢nÄàfû³ˆ+1‚1"¨*Û¦f™™^_­      àgMq ! ªËÓ·mÛFŒ‘‘‘‘'ÌÑ7MÃOúS¾þõ¯—SYð(×îÊ-·Ü‚ª"O°VÈ ,`Ÿ}öt*((xÔˆ ±!øHˆ×ë9le¨LqBÏp÷ú;¹öÊܼ     `>¸å+î'ÈñèÜÿØ·ˆP÷ûƒcß…O\¯×ãàƒarr ³³á 1¶l¹Ÿ›o¾e§¯=pßÍÄ øühì»i.ºè"Œ1O(‚®ª\wÝulذï~÷»e<­¡ðù®»ØƒvA8·h¯ ¬ëa­`1„¨\ðïEU;#¥5timZƒ ’þkü7Ã7|D5·Sò{sä FbŒ¨*ª`Œ¤‘1˜¼?É7ƒãh¿{xµ¡CÇ*Cu†Ž]ÉûQí~ŸHRˆ¤ ˜Ág‚ÏÇ—¿YHÇd„tlbæ+sFfh¬$GŽò¹ÐHûÅ"Iæ!]ÕE÷#èj04vg¤}æ ×ÍaÀ&_ì~_oŒ wÌÕvÿ; æß*suç”ÇF4Jw„;›äc0†Áµ“?/é~¿jDÃÐ8vïŸ;·4*QÛkK!Ÿ;açÏ÷9¿¢›#"‚Í×öàÄÉÐÊX´àWM×rŒ:gïíuõày¨ƒ¹Ôý®Áü“Ž©ýÚv?"°‹ÅÎ^ŒÿÐÀéCªîžQ•ÝS ',•5l¼¿~Èuµ*°ïK=² CR¾Ž¬AvAZÒ¿ø0¦Ö÷lª¹þŽíœ|ä$×ݲ±ÉG,äéÐ]ó1?8õ‘qj}Dï×¹ÏGðÝûºëcÛõ1íâ õa~çÇÓx!°×äXžƒÂ¿^u7ÖÏ9l1ß[³‘SYÊÒ½FP’‹ûÖm5Mg«ü>ŠµŽº®ñ¾allaff†åËû,\èwItž‘›‚Ç~ÙsçNU©ªŠƒ^È8Þ?^ód8Ò6¼ºKÿ¿iÓzbŒÔu]&@ÁÓ!¶uäÚ5 5@0é² *HŒÄ¸óçuTqXcpÆ Æ*‚P|𘃮¥©kê¦&xOlû¤‡0D¤s°ÖRUŽ^¯G¯×ÃT•¨BTŠÁkpÎaÅ F¨û5³ýY¼DôªŠÞè(®ªè¹ ׫pÆÐOÓoð!£O²|1ˆ±‰¼„@ˆš‰¬fÒ#Xg±Æt$0ø€o<1|ô5ÿUåp•ÃY‡16ß#3³}šº&:2/b±Ö`ÅX‹5ÒÝÌBŒ¨BˆÕˆuÖ™î¦fŒXÄD”à!„@S7ĦA5‘*DpÖ⪠ë*b„L¸”é¶Öf2+¨@lÞG|hÐp=KåÖ jõJPf%Æ"*øè‰>â›I @S§÷Zk±Ö¥÷#‰ü…Lê¡ ThpЈÃøˆÃYC4‡ ªŠ÷<¾iË0ŽªªAlê0 BþycDRD,“Î&bB@c;ÒCŒb@‚§ioðMƒªb¬Ã9CUUcˆbô4uÓ?#&MdÄb¬5y»i//¼Wbðø „&t#çÿòÏñ鿼žKFyÓo=ûiñVÝ9 ~Mw ¯Ã­¼wú¾¡ÿÎù%ÝÿvòÙ.ž•»ž¦ç•Ì ÒèÐ1êAç9pûŠy›ya s~ÏŽÇu‡±hÃs>“ê©ÇmŸ[Þ ß–Éµœÿ©5èòØ4±×¾a/`¦Ž¬¹á6m&&'éUU Æ‹áËßXÏ}÷×òÌ=4¡Ö¯ŸeÍšÍ{dîXkxñ‹—rÒI{³víMüÛ¿ý/{ÙË8è }¹îºk¹õÖu¬Zõ2œ³|ë[W³nÝžõ¬E»²I>G2çü0(ß9¡/x: % Æ,ä;ßYȺuì±ÀjŒt‰2CŒ!ÿmº„Z ÈYžñŒ!‘¢ü((‡ ú?ÔU¢úý¹¨Á5MŸà­BŒÙ4N1k1¨÷DB~¸K÷ZU9zUÊU8[a°¨JrkÕ˜³xƒöl!ÄHelG¬ã¶©^"~U¯¢ªzØœEc±ô &x¼Ï1‚hLYCDÚÅ„$Ö ‚z!Ú´M3Á3Ö x ¦#»*UKPA3Ó(XÛCz6g¥c7mO#4±ÍÆ.jâ}">ÔØÚ Î`Eb€HÈÙÐVA@lÉm"¸1|Ð(ô0xŸ%Aóï–”yœŒI¿$xðM i<ŸÉ]úDðˆ>#&2 •T1- C–ª¤àF&~Æ$ò³Ú¹ÍIþLð¢‚OASáŒC Ę"HÝB´ÍžFMóK#ƒŒjÊ@§qŒí$ÊÙûCþ~ÅŠgY‡´‰y^K”LÆRºÑ.9ŒÅ˜ÄIY^…h16oééeÁZ‡­,ΤycLõ‘øL¹Ó¹0Ô4HÜã"Ȫ˜Ï7HTŒ5ypb¾¢C§ ±Š#žŒMÄ2qMŸ7¢)@eÓ¸cÓµ®‰4†ÒîM:Ç.I#:µ‡dEE ž`*,ŠJ$f5Gˆ!+Z,¦M…‹¤@]ô‰Š4tÓF¬h¯×Ø1‹Ø&ËE°¦‡é AEÐÐ  D‰dqG ®e¥…×Hð>½‰F:C)0†o¨­z ¢ª¼XùÞÂÃeþ4‹!>õõ»¸okÃG÷p¾ø½ûø÷_Ï?¾ëÙ,Y¸s’¾ö§Ûxßç×±êÙ Y¾xò!C$äÿ>üq?ÉÉ÷ÎźcæY´ÐCÆu.)ŸÃå£>x#¯8w ÿþþã¹âÆ-¼ãã·0âÒ8ý/Ÿƒ© oûèM,š°|ý½ÇñíëàÜO¯ÃŠàœðõ¿|sª€ïœæ…︖™:òéwÅQMpõM[yëÿ¼‰‘ÊT¹ô=Ïaá˜ãï¿q7Ÿ¼ôn*+,Û«âŸþä˜' 9L'á‘ìï1žx}Œß©»ü°>¦cÕÝú)7Û¤ëˆð›u«¯ÞÀuÿëe¼üyûóÑ/ÝÄÇ.^ËÕžÅÞ“Á‡¤*c¸ÄJŸ´U×1n¿ý®ºjk×®eff†oü Þ7ÜvÛmlÞ¼‰üàZ¬µlܸá!ƒ/~é+yÿ_Ç?ýï¯bŒpÎyÇs?üÑùâ—¾F¯þŸo`ŒáØcŸÅÿºðC°“àRÁSWò´;X¸^ñ 8öXá+_YËÖ­—pÎ9G³|ùûØå¨F~ó7Oàî»·qÇÿÕ}Quï„‚‚Ýæç˜œ6ñ1âFÇG‰!f™°“2‚F b«.bB¤ BÌÙ'A¬ÅY—³ª&Éè|¤iÓ´qP;žä/-Å ]iÌ2ëDêÄ8lÎ2‹@ž¦©©} ú@¯ªp=‹›ë-»V§euWŒ*”Ƈ®Ö˜Nà«]}®³6IòÓîÒb<§TbG"áúø¤=h|ƒàñ’ÖœXïA ®S¹€‰ÕÜ6É„LÎ&šL@Òxª*ÖûÜ7Vº…Œ¡ç ¡“ì3gÁ‰PTTˆÍ†,…F@Å5VóðÉ`á×q˜ÖK K‘óßIBl±Òñ„Øù´ò'qm¥ùn3ÙÕ¨ˆx”€‹íYœ5ÓR¹F:±ó  ÆœÉäSÀäòcÀ:“”–ˆÚjrÙŠ0jo xI³G />hlƒÁY‡« êåŒ?YAQƒu`«¤RÉ9½L²C77­#ßr™…&b¬Qñ‚iŸVRÇ0ŠhsD 9kß.þŸ¶6?—§äÄ‘žRILëµ›Í9âDRP4TÑ0ÈLÚ'Iמx0ìàšî+!gË£ÏD^8ß#BÏÆF ÷mi¸{SŸ×¼÷Ǽþç÷ã7ÏÜŸsþüG¼ü]k8÷5+AyÿoÆ)ÏšD€“˜ä3ï|F„_z÷ùåóÄ›ÎÚÎ2êˆÇùÊ»å.¸™³Ïý!ßþÀñü×?¿ž_^µ”·ÿòA¼ú½7ðótzëüÉ߯ã}o<”UÇ,âॣåiZHζn©™ššeÑäŸüÕ¬zË7xί?}Ãsxï?üˆKþÇ쳨GÓDfšÀÌluCAÏ={Ž&'+v´Æ™—•4|ï{ßâŠ+®OeZÞó¥/} çMÓBà‚ .Òà°ÃÛ¥xݺ;øË÷ý-_øÇOò;oùï4¾I÷¹ÆóÀ›é÷kþ×…âè£äÊ«®á¿ÿÑŸñþ¿>¿dÒ æùºŽôûÓÌÎF¼Ÿ"Æêz ³³£„° Ueff3ýþbœNGŠ{{AÁîbfv†;ïZ‡«FÅ9#4ÚfÔb’¿J"ߦ•ŠKÊèTÆ0¹¶Ó¤ÚÏ!ã¦vQî}^8Ç!Ó0“2¢ÒÔ†®F}PÛ 1"6àd$g#Þ×Ìöûx@"&œÔ$²ÚÕ2Sf¼53#IÝ[’5vòïDƒRj†L5ì&×’›A<&»ûn|DÒ{œ£r‚¸¤&°êÏJk-U¯B“äÊ’d·¶œq©®¨¢\ÀhÎ wuù™èCôMWÇÛÖ!¡m®ñmMÑbÄ‹³q† ªX“k˜l¯ A|"•mݾ†L¬’~ÞæÀo|Ú–ëú£æ vˆ¨„¼XIãuP%l­íh¬JÒtÇN®®’ƉƒTöˆ*ª32†DCŒ>ÕÖ{ÏuÜy]¥8/IÇ_OS{¢@…[ie>Ÿ]†Æl¸’f“³)Pâ*ÇÈèh§ˆ@éõ>RUqpNŒIDÔûTwí}*¥ IãUÄ@ˆIbE ö°Æ%b›£eªšŠ¿Ús¥B0)«,Æ`R* ’K+›×A"&¦kÑ\sm’ᄉÙ;!™A¢±£‘Ê Ö)U½‘TÓQ¤D—2ì#U&¸1C“2aYa¬E¬ÃY°.©’Ùajý›ˆo4—TXç°Æ¦2‚œ… ±w¡3l¯% Jb#4Ú¤2…˜ §R‰C$í ó‹\ö,P¯ø˜ £hKPT"I1b›ëíÒñä:ú|]™˜®Ÿ“§†‰O¦@”­kƒAÊ\¿…{6ÕœpøBö™¬È—/Î&Ôö~àüï;øî¶pØþcÌô#!îú;ŒHšÏQ ®Z;ÅŸ}ö6ž}È8“ãŽÅ G<Î]x =gøäÉ‹[Rž¨Oóh¿­*|n¿s Ï:b„ʾ÷ÑŸç¬w~‹ßûÛ«ùìy§qúq˘m}ïyàþi¶nëCnÇ´'¯$U¨*xá —rØaã{H‚Q]Šê d|Ùþ=0Ú´¨*?þñwº§‰‰q>Ñ]à¸}¦2”u¯*GU¥¤HŒ±L§ãu'0>““{fÿÞoæ‹_ü2ÿú¯w°qã½LOOó™Ï|†‘‘~úÓŸð7ó7ôû}6oÞÌá‡^NJAÁ<`Û¶)ÖüèF&&±pá$®}B=0³> ÎâŧZÞlh»:é¶î.‘H›3Œ)«(øê=c6a2‰™bIdÊ`}•ß[æDÔºÚÆX*—È·¯zIÞoMvy×î¡i­íˆ£ÃèÈÚS¬Í.Ö9Û»bA™#¯ “9ƒÑ—,ÉÎŶd°¥Y÷“Ê7K†]gmƒ)ø`Lk¸eñ4. šÈY®uVµˆ’Êb$8‹µ¡« ÷>É–½‹xo;§ï¨)«kŒ! 3Tÿ›j³ÉU܈!FÅ™tŽB°98’ƒ*™ô…\«ñst^’³÷*1+AÀh*—hUÃ.ê1×lÆ8œ¹Y¥àpV1Æu5éu¿éŒQŒ5_áª(Äh !¤r†48(&ÉÅU1¹¿¡o‚@”´‡Ò`¬C\ˆb0)Àb ÉÄQ:¹¶MòxMµ÷)Ž£D3pÿ66™/Z’±ñ(‹JHù Ø*©ªÊPU‚ë劊q‰œºJp=ƒ‰±3qT Ù«` ‰ %øšº ÔuM¿_'gf58[12’î Ö¹Áy%ù^ø¦x Q©l"ß'B¤ ¾3®ìí¢É]ê“lqÑB:ÉÜ-—)¨t†¡RMÞˆ Œ$C ˜ˆKÁÈŠ©óŽd`ÞÙÅ`ŸWß4Åš[·ñÛ¯Øk„Æ+¿tê>üî/ؽý_¾¿ Ÿ wß_ó¡/ÝɇÞz8¿öâý8á­ßïÊE昗íèÚ-àƒòÒ–ðǯ>dÎ!}äwàò¶ð7ßÉ;?~+×|´ô§;CwÎ1:¾€Ÿ®ßÂè¨ã á¬åsçŸÆ¥—ßÍ/¬:€éYO"÷ß?ÍO×o¡ †ÑQ—•l»ŸEׇ!3ccÓ,Y²)æöÄ@`ñC¾ÃZ˲eËðÞsóÍ7ï" <=L¾gYcp®Êë«áN{Pß\ð„Ç‚ðò— +Wî1Í ªG¡ºlÈ!=?O>ùän®¬ZµŠ^¯Ç 7ÜPL vSS›¹æ—%‚¾`gD°½,ïãÒ™¡u„ÑG|ðÙ±›l0”BÌ‚ñœÓ–A0‘QÉt¡GUµÏ÷Ak-T6™¡„²œ×v.¯­Ä:Õt‡ŽtUÖ`l…³‚›dÓ&9`§„h2â šê²½„ÆÚoÙäH­€Ä@Ý(’3á)š²ùW&& MIû1&ºäUT ÞS7M—umØTñ¡­kÎ%Ù¦o¸ö¶m³f¬Mc"*fP-+¤šáì6Ï„¯ñ¾#Ÿi| ƇÜm,}!9ß·d0$rG® p®‚à“$=œs±8'y^(!ÖiܲÃwSP É™¾5Ƀ!) L.0®­ÿÎÎù19„kPÄZzUkS+›¦i°^²K{Ê(&÷ø./XÈë1:j ¾iðQq1=2+Ëd=ï͆_2×\Ëž Ï´Ëd[›!Îf5FúYX›2!¤k!†¤J1V¨Äâ,¹Þ½¢rWe“·hˆêfkF“2ámðR÷mK’ -‘pÎ婉àW!ÆàšÖ}¾ dÙ¡Î)ƒV‰‰ä¦÷%ù¼cd$u(èõªä(ï…&¬sÄà‡”)û]×)hÑ4uR„€³U2Ô³ë’y&$Š’JjLªç!$Ÿ,û“'FO¨œ!ÉŸ‚$„6à£1âóœ6µœIß›´)(`«*š†®kc–Õç1Èó¾ñi|CƒÔi¾…0ËDÜó’Ò¨ÊýS ÿí=×sÛ†Y~õŒe¼ùìDÈÿôµ+øû¹›ïþp вïâï}ã3yÕËøã¿¿•}÷øøïÅ»~õ>úÕõ|õòûټͳÏd•ü2²XjCUñA™³üåo<ƒ¿½ø.®»5É÷ZPñö_>ˆs?}+Îý&òéw>«koÝÄ̬gùòEŒõ,/?u¶n¯é×ûïßÎwmaËt¤K÷'ûø(Q¶nbv¶ÏŠ+¨ªêg6fUUñÀìúšÚ¡ÿû;—¿xÏÿË=÷l`ëÔ6N>éç-ji dKýéç<‡r/ûî;»ÇH±êþÀò9*†ZªŠs޽÷Þ›»îºk—ª‚‚‚GŽº™áÍ7ãÜ(ÎŽà*'çìÀl, µ1k Áœ¯’9WÌ´RR ¶q®Ëþ¶-ÙÈ.èÆ&æ’ÚŸùLøs¦8§ç­Œë¡!¹W;°g,j-N]&P¹n9»xZéxβƀ×H¬|&ãißšT%ÂÝoêôy4FLUAdÙ¤ÍÆ‰tîá!F‚*¦u[×D¾„äò>tgë²p±irÏéToKv‘ïúQ‹ U1KךHWïll"³½ªB1Ä\SÝJZ[î–Úc ¡“Õ‰C¬"Vº–U’[S)‰Øª«0!ÈZ{Ì1eFQuij+}L¦oÆ‚Ç…Š™ÙÙ.:ÈŽé:’§ºùä©\Bl:æž­0Õ@¹`r °”!mÛùY*k‘¬ÖHä0µ S‘ˆÝy’rÀœu¨BÓØÔ½Ífc¸ìC š³·bhºv"iz›Öø­H c*\e* «„(ˆ©rmv+Ÿ78I$4¹è»||‰´“ƒ%ê ÞÎÅá.¤‘©á°‹s´Iƒ`‹H~ÕËŠ“n¾˜a6˜Ë9ZõD«ü$NbÌõïF‘TkCÕ)4/0«i¼£×s©ã€*‚¡r°]ÛgÛ]_g©¢êú‡®ÁÊUXcS™Šïáœ!F×z?æÚð\*£©{;G“FÊF9Wue!4©\ ]‹*¡ri®iÏuº&x$«2º‰<ÌVnô(×Qÿü§Çv%BŠ29îè¹ô½otàygsvÂå¾Ñ=×Ãa¶©©gë,Ž9ËmÚ®Xü­m––¨,êÇÊÀ‘\”.¤óž`KÖ’‘PU#Y^›Mðr€5–FFzuSç¹@§pP† 3Ò2ïJ5¯Fò88—ÚîÓÚ C«æk{¡[+ˆ8ÔÐ^š3¤l Ù¼-×0b—²ÅUÏ%r*íX)¥ñù¡g|r·oÍûŒ`³ŠCDq™¬c’sºÍJ ë¤+û°¢X“ÊRp!·{Ëú%ä–d1·.K×RWg”@È-ïmçÒ4ɦeY1Ð’Ä6“ÞVJÄŽ˜G¢ÖˆÍ†yJ6çk÷-R£ûœ‚j6,´‚Q‹Š³$õ™O"uœK3:ÍýD¾» VV@¤úr†Ô¹ßzkاm7:‡}Éu“.wuˆ!µ—#öº}‰1ùºl3PíSŒ8D\¤³Ö€5©œ#FT«®÷ú°ÖÛT—Ýî}ðÔuMÝï5¹ôËö=Ÿù[¼`צ;='쳂<1b˜,–FœadòÁ‹§¥9‹¸÷ÂÁw,³,Kóµ²;ßÿ>…”ìd!Ÿ6#LL ÆUÔýš{7%ïr°ÖT£ŒØŠªrŒôUeàÇÆªªzLôý~¿[×TUE¯×{Ôߟ¤ê»Æ’%{‡Ô9‹ïµË€Àcý-O Äyö³ŸÍ‰'žø3#Èu]sÇw°~ýúrB æçÊF™E$`Äá¢÷x“ÔàVCªçÔ6„fÐÚpiÔnáíë\ìSxÛÿZ2¹C­±Ä$jÒ¯kú³3ˆï²û{+µmB(‘¤Öc©64·S IöÛfÿŒ¦L+¹þ»ëÉ” !-Дœ´‰@›ÈG<°ÉOC&ôðQ1ê³Ô;µ½r#UZ¼;‹ƒë%gñdx5è‰NÔ6ÑÅÜ^ËY3heS´¤ FÈ™b5D1B.HÆEbȆ‡Ùô0@¢É­ò í[KªÍ>æl½Z­Ik†6ø=Iâßæ¾“ ¥ñ>•f„@J“dù:!)9´mk¦–zCr­x6œ“l²˜Ëå;ÅŒâ ÁàQ5ôû533ÛSDϹTi쫽MJ›Ì ÛhQŒ-ñŽˆÑl°˜Ômö^!7vÎë»2@DhÒÐ&Ús Ãò©¯»hRR„:$¤‚@5"ˆ:T?S2ùÁU–Qéaš‘ŠÐ„.Xßù¼Xƒ«•³ùþñÄ¿Ž¼÷Üyç¬Y³¦#épÏ~ö³Uö² ê?ä{Ú ‡<¢÷?‘КÖíÉc¶Ö>"Å@;~;û{G#¿}öѾ&?ƒàªJ¯×ÛcôG‚~¿ßu*((˜—+¤I%LÚà|˜¨˜‰&ä‹}Ð,WÕt=¹UÀûHí“‹³÷i¡Üõ'ïÛ¹f¯ß)"ôª*uÂÙóʹÔâõñ8÷ÆðéÏü#/ýù3Xºtï½Þ«ªädz;äÜþæCçMo| ccc»$…­K]שwÖvßïÜ@5ÔìpLUå†Ö½¹Drè7¶ ˆ0T™¼hìPŠéñÁŽ~6×ÇÏ–˜{ïyË[ÞÂóŸÿ|^ûÚ×–›pÁ“’<Ý”T®éb–¢Š‰HìÄפ{P™l–Z~x B¾$ê›²Ššë»1Òµ,K¤V³9˜Å¸tãL!=ÇÙ ±VªÿNŸ­ŒÃöRîÔæ+v3t°x6Îâò 3h$úHC®Å¶¹ç¶íœÃ{U•2«A«”ÍóÒ$o稬Ãõ,•íaª\ß}–[™°ä~ê)(à‰!Ðø Ô|®—&O¿±©¯·>‚Éü¬ö]­o¯©è¹šÆSg™ºÆH=Û§n|–r Ч !ׇ”m­kbiš¦¡Wõº$¡Q“eøÙ$ÊûN-¹-U"†#‘˜¬®³Ãû 5™Q‹ÉUìÿÏÞ—†KVUg¿kí}êÞ i EáAÄ¥ƒØA1* JÔy0꧘O£Æ!#Šú©D Ç(1Bœ‰³A‰p@A%Ì MC÷ÖÙk­ïÇZ{ŸºMƒ‰€©ý<­Íí[U§Î9uê¼ë ð¾êZ3OÕÀM^TÖ0•I“¯#ŽŸÙVØ”{ €qš›Ã ¤÷W+Db Y»3± &§©ö4·nDb^€XœWõ0×*@¯ºëÛ´‰jå ‡=Ã? Cwz‚öŠ~.¡°‡‘YÔˆ¥ä”}ÐÃÑgX·A#o5ÙÛÇ“Á”Q{éHFáß®6 «F ‚¡(Þ—žü³™" ~ŒÕOÔ/ùãÌ¡Vx”sâèävO´Ödq¥¶£1W0F1F© ¯­KÚ»ô·0%p&t„õ7ú{èX€£#OŽ­Õ[ÌÙ耤Ì0¨wÐÞu#¤ŽÐ%¯vcvVÞHÂ,1D;<ÜDL(JïÒéÄFc¯¬ËØYö¢(æ¿_Ã÷(†#)Ó ù`£›y/y)í1¢óC¨ œº&™N ð#ƈ½‡‹ØŸ;™¢'•aàкÆêªw.A‚ÿ‚¥ŒÉtÊÙû“Í ý¸¥C{竇‹‰øŸãoažHÎ;¸v`;ÃëÝöÚûðupD4Á²G³§ÏU¹ŠÜ+ Oˆ$æ¡÷ºV J¼uÀZ!ªßèP‹Bt°@È€z‚¥˜;PræX ¢ ˜ý¶´ˆ¡P˜Ž0 IDAT÷\Ÿd袯)ãêŒ0´J²½&–ðX·ÜýØ6ž°S[ËOªaM¸A‡´ÔE'õy]­0ÂâÅ„”;t9#G(¤³ JÔ'ihg¸5¾p Æý&ô‰¡ÖÁlxh[šh €5;ªF Øyí½_޻ثj]“©Cºj [b€äHÊS•$P´M(AÉPÔë‹øµ%eß?¯ošÃüئ’Àß0 º>ÀçäçĶþ8| Ý<¬KÃÂúº¯m ÿÝ•J ·MlÓä¶©ÙÂíÞ¢oá{²‰ÇÝüýÚÄ¿ÕnY³WŸË×lìà–ï Á¼ÝÒ¾·…ã–ûÛÌv'ž'‚›nº —^ú \|ñG0_³ýpà ûbÉ’=qõÕWãÒK/ÅW\µk×âŠ+.Á׿þqì¶Û:ÌÌ,òeÅÆGbï½W.`io+#yýºpñOþW]}Mci7oÞÏI躌 6´ý7;;ƒñ¸Ç¢E³ "ÌÏÁLxãë_ fƦM›1;ëÁr7nÂâÅ‹PJÁÜÜ<ï^ßòz¶aÃF˜™çÌÌ`Ó¦MQWÆåóóóX¼xÑ‚aDU‘™6lØ-Ðî‚ ˆ 7mp{C×µçÏ9µm~–1;;ÓžWU±aÃF䜢­Å÷6mÚ ¶ƒˆñ³K~Ž‹òذaF£W]u5.ºèGظq#N|ÞKpÖ§Noƒ‚m·Ýf¢&”ð£ÿï}÷[°ãŽ;à _ü*Þwêø£gk®Y‹WüÙëñÏŸþ0àN|1ÞýÎ7áÊ+¯Æ×¾~.>ý§CDü;qš¬¿à|®ç.3cnnK—.àòø”rθñÆAD˜™™Áh4ÂêÕ«qöÙgcvv¯zÕ«°Ûn»áàƒÆM7ÝçÕ"t]‡ .¸+W®ÄÌÌLœß¡QSx{ §kºîtR NàµÓ‰"0*ä²µ“Ú›ž äþP4O­Etr_hõÑÆ×¯XïýÁñm]¥¼ 9Y(9`1—C+W°c7=Ø!«[{¦Š¾(ÆýeÜ£7>‰„¤ Ð`ãU!¦`ªA1ÉŸŸ9¸2rf”t3k².ðÚr2w¾-ª¨6¨Êpt VÀõöD„dŒdŒQÄHõTK&deþ5Ÿ0³ûô@RbtÝ]î`³)‚±Jߣï¥1»õw 0BјDLÜ̩¬‰÷„„ ¢½·¬gjÉî5¬HîTk½_ì;ÀóˆÑ¼ÏF —úõð?k䘩«£ÄnRö„ÇœeÁ,ÏÙ?õŒ¾¤ïQ&ƒøjïz” Ô•"rBMbZÙ J ‰z·• Ä@ƒâ¿#4 Î$;0Ô¹E•h( XmíÆÁè³€“…_Ÿ`6†™«=˜©=ŠD³Bµr×:…¡À¬ÔéŽ['ú󿜚 ŧoÕ(O-MŒ§â!Þäèç²·¸ý¤Ú!`QnÇKj°eòýW«äÔ RúFßqí¼÷7)‚œ¼Á ëôvlfÂ'? >ùùk¦ßBw‰/ÂÛp£ùßü"t+Onÿï~Å{²ßÌ~üUû•îD]dŒ5kÎÄe—}ô4l·ÝP½\°×_ÿ ì¹çž¬_c€€k±Ýv?ÅG<K–|gžù:|éKßÃßø.,_¾üvmÃÆ›ðâ?}5n¼þgxîó_Š .ø!vß}Wuôñøƒg‡Ýv»îw¿ÝqÒŸüæææqõÕ×â­oþ ¼ù­ï¿|ñ“Xºt ÞõîàØ ¯{ÃÛð±½/{Åëpö§Ï€ªáð#Ÿ€¯åÓ8ëì/à=ï; D„·¾å58èaû·kÔ%—ü/xá+qÓ†8ø ðšW½G?ñ{Ü÷¾»áÐCŠÓNÿ8^û/Ã#WîvÉuÞ¿ý;^öŠ×ÁÌpÒ?Oø½£°víuxÌ㞆çœð <âÈCñ‚¾ënX?h%þòµ/Çúõ7â/z%Ö¯¿ \}8^÷š—ûàWçüË×ñú7žŒœ3~ö³K!"øÂ¿‚7ýÕ)¯yõK±ú‡ùv˜_ë¿ø¹ã‘¿{,N9ù ظqóè#vÜq{\vÙåPUì¾ûníz?yo·Ý2,_¾ž~ü1xÑŸ¾ ßÿþxÎó_‚ÿî¿4‰û'>ö~¬:p5>ú¡÷b4êpÙe—Ã̰råý§Ö‰uíµ×â1y Ž;î8tÐAxþóŸ /¼333xÃÞ€<GuV¯^ùùy{ì±xÉK^‚o|ã "ÜtÓM`f,Z´ßÿþ÷qâ‰'BDðìg?'t6n܈Ã; Ç{,žûÜçâÄOÄ/ùK<øÁÆé§Ÿ>=Óu·¼1af˜2ˆ¹j‘9@õõr%U%Te¦ -ˆŠ*Ú2˜ƒ½Ò‹woGG±3~‘ ]ƒ½Ì€”$ ò0䀰Xcñ¨ü¢.íî‹w’‹ŠogH‰SŽDóÚqÎ M ž†ž²XhásrsÎ ŸS„ÞäZÓLÈný‹L¢0«lÉ$ý©Üš Ìv³Ñ%­‘"-ƒÇ¬* Iæ¡9´ZÁeO30šñ¡ˆaVóócô%j㘺F)ÁÌÜúñ<Æã±ÃLS¨Òžrv yKÑ&…hÄ9ØøŒÂXª%äÙ Jì¡Yqœ8¹¹Õ»%??¬ Æ™ùP'tŸV©¦æS®ag¤€ƒTÁaT÷:-¯@“…¥­›È(È9#§% p¾zªÁqÁµAIô§7öjиV—·[7*{ï µþ· Ä¨n âµZ7 dÒRΡ5¯H§¦¡èH._õl¨ÁRjÇ«2ëj N Rnz÷±$¬&„û瘂‘¶JTýêj 2ŽAHïªÞ†}R?Ï“ ŠiŒ3‘ºEd´Ø»ÝÃ`¥ €aԷϼ¶ :$îí®Ú`†#ˆë凭å)¨Jxæ}h¥jPí¡ZÜÿv€ RÜ›Ñ÷ÞÕÎè —qïíqž¢7h'ÞqFwºîDvçN|ûïB¸¿îKÛ]s?Ò]ೡ*(e36mÚ€ /¼ßüæ7ÒGõbÌÌ,F×]…”f‘RÂu×]‡M›60¬X±=ô÷qÏ{~?þñy8ÿüõ¸þú+±~ýØvÛmebûÖVÎ0C—³Ûs ßû5Øa‡åxò“‹ýX¯þ˧°lÛmñöSNE‰ëödnÁD±xñ"ì½÷žX³æ¸æÚµxÔ#ÇUW_ƒ³ÿù 8ÿ»_†¨`¯}Æùßû2º®CJ '<÷OñÔcŸ€¥K—àëß8ÿħa|ñsÿ€ÿüÏKñ¿û0~°æëxà~GàƒÄ6Û,m×)‚çýñKñ“‹”Žþ½§ãÀVa§Và»ßù"`À£{ýȇcùòeøî÷ÖàïOÿ8>÷…/ã)Ç</|Á‰Pó{"ÂÆ›ð—o8k¾÷eÀA‡>7Ý´o}Û{pþ÷¿ ˜áAy9ø€ÆÌú !á1:^ø#pÀ~øáŠ®Ëø»÷¿/yÙkû>p<랊OŸõyˆ9øÀí1àú]0ahÌþ]ôÀ÷hœò®÷ƒ™qäÃÅ3žþ´éÅubýâ¿Àýîw?yä‘8æ˜cpæ™gbõêÕì¶Ûnèº'tÌ þð‡ñЇ>yÌc°aüímoÃcûX¬Zµ ÷¾÷½ñ_ÿõ_€N8kÖ¬ÁÒ¥KqÁžúÔ§bÕªU8ûì³§;}ºîæ7'Öò2µ®oLô)S«ú%Z(Õ#Ô¸DÜ.Îf†•Pj²KÞk¸šÃÀ£p¹qJr@Õff‰Ø3qp7ééÎÞëìÏ99€ÎÑÅž"Aš&Æñ#Tϯ»ä‡;Âêý«”üK±Ë)€^B‘êsvššú¥;¼­·x#ž³Ô<²ÒW‰nnü#ì.Qr”©•Ò»—½HÁ¦Í 3!åìN[÷®G:{fŠ^pgFû¾ÇÜÜú2ïJ…“PJj‰…`m"_ëërte[dL¾h_aòD”Kâ51LŸRè:XòsS9}Kþ•DKƧ–Œ®~÷¨‚,^<ë7]”"sÁÙ` eÌ"ø.!qÔÊÅg¢E?î#k!ê‰àÖÄ LºɉØÀlóàkõ}²þЫñмÞïšÔ^¯ÃÎPvdOpìû¥*68þD¥ŸøP¡¶%XMèWe„ •fÖ¤p0jÝàU-àÀZÒ~‰áW=É|0”Sjj¦Ôê™;{&FJ QBg ùÙÂñ^˜ٚÏô×Sútýæ'ÓýxKëÆ¯Àš5‡õë¯Àµ×®AΗáòËcnî/qé¥?ýéõX¶Ì¿{–.]ÚªÍææ2®¾šp¿û}¥Ü"»â⋎·¿ý¼ð…'a=ö¸ÍÛò¯} ~þ‹Ëð‡'¼ßüÖyX»öz¼í­¯Ã}ﻞùŒãPD"É\˜c¡/½ý‰ï±åË—áÈ#ÁYÿüE|ç¼ïáoßû6ÌÍÏ7™¸¨´¬”ªÀó{ž‚¾ôøßy(~ø!øðGÎŒa¯_'ûR&·pÕíƒaAÃJ•€×$ö¾¬Úo_ô°ý±råýqÙe—ãÄçý)ë$|óëgãïOÿ8`Ù²mpÚNAî2õ˜cñÄ'åʬ‰ôùº+‡¥ˆ“=  3JXÐ?ì`<üˆßˆàû†g>ãøégqâœ\¹r%žò”§Þô¦7a—]vÁgœR üàã¯xvß}÷6ÐJÉÕœ/ùËñä'?«W¯n?07·™tÒIøñŒO<{ì±^ùÊWNÀtÝ-¿ÈÔ € f '$ Ìg•~û|Üœ“KêÌl²ÔüÁ5á]TÑskïåŒQö~uC?î£?<­0$6×Tf³«éÊRÀæ =Sw¹Û¨J °óJµD¬vdkƒo¥h\¤‡0­éäÅÎ^ÄÊ5~·Jªmaj§Mþm‹/°nÁh5ýšMðXûq?†”‚¾÷dwÈýë9¹dX (}"ŠDÀ8gÌ`3ÙÙQõÚ<ª`<$Þ€Ò0ˆ &h1ŒËã9ˆôÐø7Ê9<¼+W>à6mËç¿ðeüóY3ãùÏûCœðœc<Ç[†ÆŒh¶1²at‚<˜ÌT8äqÞ¿ý;žvܱýöËqùåWºâ*®ÿCà[ü?Ç?õIØa‡íñ™Ïžƒ‹~ðã‰aéVîm&ï]P·O&”U~]UQ?2ñOù=ì²ËÎøê×ÎÅ¿}÷|<ë™>|Øq‡íñ©Oô‡Ç7°MQåº0£€b‹ÆzOn‡Á°ÝvÛâ=ï~KÛÕþä*@k©ìÏ~ÖSaæ©÷m¿šá3Ÿ=»îº öÝwœñ÷ïÆžø"œþÁwþðÄáŒÓÞåßW¥@ˆ "È9MóEnFT-"}ä#Áûßÿ~œrÊ)€3Ï<?ùÉOsÆOúSŽ>úh¼ùÍoƾûî»à±·0‡~8?üpì³Ï>xÙË^6èÓu·\jNÜQ܋晔P˜Û5דØ5K¶`jÅ)!^½ç5I:•„^{t$`©a\.OaÇÅ4À¸‡AQT[02ep—äH0h"èÇ¥I¨3gHòiâ’X–¸h«("õ›‹'w3a\Ä{‘£ÖL­z‡iß!:âc¥œ¸šÈ €JìÀmÁÅÆ‚@ÅC±ÄÙÀ”ˆÓðÔá=¾@SFg„’ RI™³––‘ªê9ÁÁ-£ÌÈÝ,fg½½ô×ɺwkSô™'ÌŒ#ªº£­u¿[0àÍ£­DZª×Êõ:g5=}bêgÄMB4 B9ÂÔÆsqÙºè L2F"B‚ÎÎØK„• ŠŸwÉýî)*(’Ô‰xÙ78Vß›8ë;ÔÚù ñÙ¡N2&s…‚—Þuëå”Û‡ÑLA"*!ïŽìU1cÔÍD:y wÔƒÌJïþyH•¶-" {GX¤ˆô½‡ ™ºº€«_Ø+gйrNè{“A0ôª#bïÀ4ì(ù ŒÕ+Ûóø°u<=³'à¹Ýb‰Ž@¯€A{?ŸJ–Úä€Úon1aO1„©ÇϚמSED‘7¾^»6y•qMâO(è!ã3Ÿ׭§SO×tM×ÝnÇŠ«¯xàþ0»ëÖ]‚½÷>³³gcñâ̶Çe—Í`Íš58ï¼ópå•W⦛6€èFŒF×x"D¾‚}÷ãa;7Üð¯øó?ˆî}›úöÛ/ǃ¸‡¯2cçîfÆ6ÛlàRñùÏ| >ê8lܸ 7ܰï8ùõøÒç?#ùdÌÍÍaóæÍxßÿ{+–-Û0`›m¶ÁÌì vÞù躌]wÝÏ|úS°×3ã3g}xA‡ùYŸ:¿û¸§á†Öãq}$ÞüÆWáo?ðá`1‹/†šbÛm·YŠ—,^ŒnÔáŸÎ< +t8To}Ëk°ûî»áã9{?ðwð¢<ŸüøñØÇÿ>®¹æZqÄ!x÷)…žób|÷{k°Ûn÷Æ™ÿðÁ`Ç K—.Á)'¿{¯<9%lÚ´Ë–m‹7¿ñÿb¯ øè‡Þ‡Å‹5uÛÒ%Küû5gì¾û®P5l³ÍR¨zðc0??FÁ;O~vÚi…¿F Ìv˶ţ~÷XõÈ#ð–7½Ä„Uû='=ÿÙØ{å!€3N{7V­Ú]t1žöôçE€0ãœ/|r:¦Ýbm»í¶ þûþ÷¿?6mÚ„+V¾ûÝïâþ÷¿?ú¾ÇÆñÄ'>—^z)Ž>úhú¾ÇYg…óÎ;÷½ï}Ñ÷=^ûÚ×âÀÄvÛmמ÷e/{>ñ‰O`ùòå8÷Üs§;~ºîÎ(•µ¢¿>kOcä–ŽÞ Æócô!áñ ·ÊbsKINäòfb VQJïUX@Rrù³a<ßcóÜ<2'ä™: iêäAd"Š~~ì]ßãy”è©$޵ÑÈk©Z…ÃL¼æI´ù‹ ä!fì@‰ƒ‘s18×É@cVéåð„l·IuýgãqÁx¾G/chq/ZP·i3ª§·2‹ó.EÏ9£›¡ã Î)׺¯‡)5›oÜåÛŒI® ýð ªjÈC°–¦êU¡ê©ðiÔa¶!ÏŒÀ‘¶Þ÷"cˆ(rN~ PzM\¤ïAÔ“É˸G¯^êà‚°U¡°pà^§þs—ݯ5k¢ÏÙ‰!¥xÅÍ|ïÞ÷ÄÈÁn—ªdÐH`#ïGOÉÄ¢ôc˜©Ëè{‚˜oÄðÅ¥éuN?LµÆ½«?8¼þéò©ïVYìIv=ν^ýüx‚%m )]ÚlÙkÔXˆ”03…Ò¤vœG[ý«ì?Å ÈÝdûq^hq)x)=ú>*£¥ôvÙÏMŠžô:µV4¼Ý¢JàëuEEÚ~©v]çö 5Eéû¦0ÈÙS})%tì½ëµ¶­ªLgP*ãSåð5C¡¼Ögåû EÝPµ² À=BE1î Jé[ QÎÙÏGNñXnÖRꦇ¬{î±ìáHÛ%ì»çbl·4ã3_¹îN ¹š®éúßËÒ9§¼z/ä<|ßñŽwà^÷º6lØ€¥K—âq{ÜÍÒ/¼p N8áÉxðƒ7`ï½›7ÏaÅŠýpÔQÏÅ¢EßÄ™gþ+>úQÀlŒoB)‹±yófÜÿþ÷ÀI'}öù>øÁà‡?;l1æç¯Á'>1ƒNx þäO^Ð^GDpÉ%—àüóÏÇ9眃üÇÄÚµk$¡¯¿îé"5•º&º×k1á”w½;í´Çû„Lã-=fk•f[c9·ü·ÉçâhÕ˜ü™o+ؽù㉶Zî·•¸¿ ònöÞnmûëvL®º­·ö¸ú{“?ûUûek?OyË–ïú?4Lãä“OÆž{î‰Ë/¿«V­Â¡‡z‡ªýîÈš››ÃÅ_ŒïÿûøÜç>‡Ë/¿ßùÎw¦¤éú_¹nºñZÌ.Þ_9ŒeK»(í¥2­zæ@Qì°¨`Ù’øäg®ÃM7vØtÍ:üÇÏþWoz+ˆ2˜’{뮆J9ƒm¨žÎðfFhSK—VX¢7Ù›ŠôèKi“Ö2b<¬¬¢ÁŽ]®$¬¦YRNéLëºÎ)!¥Œ.G›kµP•`ã9˜­^X„ËõêŒ^RpŽ®©ê™¡K€5¾ñ%nÜ)%dÍž$ ¯¿’¾wy­.ìm™y[JÁÔm_Jë37®C¯„ÑðZY†pëGøm&…O»vÈs&@°ŠÉÕCgwà—† £x>ÊØÐë¸ÉœM½.¬ô:„†Á©å K»¢­³ôgÅ ‘Wl†J¢°)$'¬þÅpñó¥˜VÀæ ºBì‰ÀÑÁÓ½5ê ÅÁ3¼&0'Íǹ‰¨æªù ÒT:‘ýEa£ vI}– šèÌnû×BÚ¬‰‡~óœ3Rñ¡ˆ„¤pÁŸè?§8–[Kw¢¨Ê3 Þñ©õÄXÿÔj¸ W[p«õóÀ"(’0*}óû·¡L(U¼•(¥÷a™EeY¾:øÂÛéÃ)j¥÷Þ€’S¥±ÂŒ E±3ˆkML8üïq<áÃ"‚ H†¨{t9~îüÂXkäDÝB@ÑadŠÄ§kº~;È 6lÈX»öì¼3på•Àyç­ó‡pøáÀ‘G>»ìòoù[0˜="‚åË¿„Ývû<.ºè2¬Y3‡«®*¸âŠõðùäèv…ÄÕ¼-Aà– ‘"åAz¶YºtÈÝÚc¶½[ûý[Ì[¼þ-€Û¡ZpëÛ2)E¿µËçÍëoùùnm;n ˆß–Ÿý:ûì×yütM×tMׯ^U¿_7"dUA“y›ZܨôytSÎ-½]Éo¢Áöx¬!Ý=äÌï…*ámRqÏ«ƒ!!©MkÞ×ð{’Epc–FÈì¬VõW @‰üǤÂÁHH£â«Tÿ¸(îÑjß8y¤iòÞoA)cÔ.h‹´k…ƒOp ÒÊÍúL'R«ú @RÎþîÉ–öÞmÂê6È îí…ú­6CP&H© 2<³æ4j¼a<°‰bŠÄ}‚¡Ttľ1ô…@‘&ÏÑ(É«µ4äÖÌM­ié¥÷A††Š Eè%SŽà/ß÷)*ÙØÌ®(€˜ „íÙEˆfÜjJ?÷$ì `Ù3 8¹šSEs®ö`êÞ,nÐZÙqLX˜¼ó¾öÁ¤p õ«ÇV5‚HB¼€sBÇyÔ!§E Í dB=0ܤ ç´ø àÊ DÆê¦ uEöÖ2@9¢áHÛ¿ÕªDfŽ07ÿ‡N’ËÄ ˜iõ÷Ú0®´0ˆC›BÔ#„ùÂó<€áU|1ʉº?óLv}≠Òy@iHÏ‹dÎ7†iaHa§µ¡{)Ù»Š`\ЂDu`—ÐqB7¹¼4Þ£có„”ÏA "(ßüszk6]Óuç­Ûûù[²d)8à\rÉ:|éK×b—]€GR)êÉá&€€ àÅaþÚðß÷^o×hÔk‰*:ް©Ðñ}‡,y".nø‰22rr™~fn=òʾ*¶Ê™"}›4»<¥`í¨yŸ5§ðèJÔ8yR7El¾š ˆ¡%4€æ€­‚Š&9– :5EgwDžåØÇoÄ`†9WP›Zð—˜L}û)öSœ.”™"¼,wÈD(Ö£{b}¯Š^ÆHÌÍtuRùœA5Ì Õ6²pM($`IêÝ_>êÐ%nžx(êR~ vV«ž$€[M¦õ÷çr 4ós³TS;Öµ~/Åã Š98`£¦ˆ'°Fø$Ê‡Ä i”Ñ¥Œ.'t…0G„,²ï‰§É*=E„îÙI`êŸZ÷W™äíkèÝìf¡x ï §!Û~¨<Œz7Nþ;`Ä+!0pfs­¤-‚Z¢U62„¢—б‡>r•ѧ™‘ÃÀ "C†ïë^ JqÿÄm'9 m®AC"€_3 à*ý÷Ô`Šá³¢È¥ŸÃÜÜãñ< âÀ>Í€’Å  ­ZG¢+>'FNÔê+6óô‹dº¦ëîÎ`ÇwÀSŸz<¾ýí{cÍšs°Ç⨣kÖ(¾÷½/c<þ*Ö­l·ÝÎØÿÇãÜs?‹ .ø*V¬P˜-Å~ûÍ`÷Ýgqá… ×]wozèxò“ÃÊ•+oÿûù5@_#8&ÔTÌ4­qœ®éš®éº+|M(bi‹ç[ytËí2Eé¡cEŠ0á2á±ÑVc„Ú!ÝÒ¬«ŒU»%A£+Üq2-AÅ“°3eP†wf‹Eš3·J‘ÆN Át ‚a,Š27†@Zª²‰6PÀl K€%0ÀÝduŒŒÎÙÙñR¢?™Ðe—øw9!erÖ:yµ!ê ¢†¦œK)G^0ÿFÍsîePg€”YK@ª¡[ۃʲz5ˆö¨”Û+#îΨ–tî¡yñ¸Ø÷Ž÷d"Ý»>ÆÙvfòá+$üó.Ïf‡!•%ÔFV%ÐVÇÅ)¡KÙ¥øQ•Vº„¬¢œ]fäYƈô†4ÀÙR]Hè ÐD ’¢£Ú±³¹ïÁ‡Ê(4¹7;8rWbG§ ÔÂS~å/`°*DCfhîÕ7° ¼Ñ¡}—Ø-l€¢C–‰O"2DâÓz邾Z‚¶HãýyÊ»¤Ú¶ÉÂ7ÙfÄ&ˆö¡ã|`V8;Èi³®¨F™Z ü³ƒ\{ц˜€»½„¨Y- Ÿ_?Žë Äí‰Ì÷s^ÛGï;óºA?T ¦8¦¤Hd6hÑÈ ¡ACòºW© ûƒ4jçàñøFE†A´GÑy‡è؃#Á¬D|~A4ÆP«´L â.®5ŧ_Ó5]Óu·_Ë—/ÇQG…G<â0œ{î¬_ÿclØ xÛÛ€ûÜgŒ½öÖ¯–,!ÌÌ0þã?ÜÒô°‡k֬÷¾õ0®½¶Ç^{= ¯ý_á÷¸Çíò›¾ýïá£ûÞûÿÞ‚R$®¥„Óþþc˜™™Áï .½ôxÝë߆‡qþê-ïÄ¢E³Ø~ûå8ëS§c›m–NYÝ隮隮;iåT3Ÿ"”@Ѹ§TB¿YÏ[Qb:nIÍöš{#¡ƒ‘‚¢[ÛÙ7k E\yeN‘(¤å•½ Ïm€RZÀ¾sÈ®\þ[¢¶ˆK†x)7RÝÁ;Ê**ã~n ×ÿ¡ V”7Ñ"qB®þÔÜ!1£¯~j²yä‰Õµ. hç~m¯ˆò~d—ÀGï»0šðÅVÈÉ&·Íîu!%ËÓÞuCÊWß³hU1¸J¾-I $¡í:…‰Èg$£·ºåž™ÆžT/¼8e¯ÑŠ=,ê žCªž¢‡»*!z Ôîk$Ã&äÖ Z±¢mdDÁØŽºlä5ÝLFÇîbFzþ¸ï¡¥´G{ÿº3ÆíêpH ~Ï1È0è‘çoT¹™b\Æ€©ƒÀ”©<œâÝp0-­NÏj/{õy'·‚0…‡=e«ƒ P øKÅà0]"Ãn8>ªæIïh6é;Õ“,ž‡1ÄÁaèŸÒU›†*8jã±Ä9[ Úc\Šç)˜ †æ PÒn@º ˜Õ«èx°ohòíw…c²)‚ðü½÷0¤?d †"¥yà»Äà\ÓÜÝ&ƒä)ôQ`°`Y >(°–ÁïϧQ”çr’¸L:øg@S ¤ˆ<¬’ë5Mý½GÓ©«O óô1†MíÓ5]¿5+¥„Ñh³³K±nÝR¬];M› DKqõÕ‹qõÕ=RºßùΫñ³ŸÝ€Ÿþt1.½t)Æã~ðX¶¬€yË—oÑhæv‡vÍÍÍáÏ_õFÜïûÝLUŠ`42œþExû)§â£z/ÞþοÅ_ÿJ<í©OÄUW]ƒãžv"Îùâ'QJ™2éÓ5]Ó5]wÒj÷å7Ë•Úâß·ü9F9¹g•€ìµX 90QM2ÈP«›˜À¤[FÔdé•Q¥ðgénEH©ÙûÑUÑKç€Uº KHÄ d )ߌnSrùwtdsÈ´+HÖZ-eQñ”ì¬î%NµÎÌÏ8™×x£n„nÔ9Ûgy‹p:³]µ>å Ü<ÕÜÂÛ>°šU:L0À ¤@QAf•µ”•  Àº.|ì‘v^ªc{ŒÄ5[‘oŒ¬1|HQ¥ÏÜ´ÅvõeŒÒ º.ÃÔß/8êÐ0$\»×ØÁ¹‹lPM¤(mFPÚ8ºJ‹ö ø4<殬%¼êêÙÒÑÇЂ˜ÐiºŒD)Rñ'Ec ….HT‹¼DrG+B‹a‰šBµÚL9Ö¬l %‹„'œ‚Ü%n4¿½Kæk5œEh!G_­g ¬Ö—u 4â8¿œ‹yMLaªaf>À (”êþŸHêçÚ#OÃ0,, µ7¾yݹV$"B5>£ "YhäÿÍêŸ FSŒøÍ¦$±Wµ —|òÄ®>1kŸc¢¨±Ë„ÙÅ#ää¡yä/€qéQÆJBîF]HÞ ÈRPzOV .-¾'&‹ãœ¸&3Ä2‚")yê¿ÌØ"pê0;[ ÑpxCCŠG¹½†¢EUZžAaõÉ5!*š®éš®;aÝA@J”°bÅAX³æñ8çœOcݺyìºëÑX½úQ¸è¢ÿĹç¾ûï)îq„ÙÙÇâ‰Oü=\qÅ/ðµ¯}7Üpöß5žñŒ±té’Û½ ‹/©ïùüÍÉï½ÀæÄøÒ9_ÃO~úŸ8탧x“3>û¹Á]~%LÇ?혖 3]Ó5]Ó5]w7dNAÔåVf—¤ƒã &¬ÁŸv³ëØÑÁicú"‰›'Bµ¶W4'—[¼8©³¡‘éìÅþb¯ÂÊ˧¥+gp” L)nš ¥/´W¨ÕS.·¯Çµï3'ggÎ]ŽàžtÑ- êi‡Bc°%¯m –’¨¦Î«ƒŸ¨YkõL!½÷„xªµyß´š3zJ2Ÿ\hH¯k'u»ï0†Ö4{và\Áà0t¨[õïÚ„ðl¬šD·\Ä0†"ÁÚu¸ÝÔ%°Ö9øÉL Líø»@Ô{ú½H‰» ¯eKÙÃÿ*Èab ™%@v…š¨-ך?„'¾æ!Äða"üeA¨&ªeàƒŒœ}háRé¾kk¾æ)ßHî…OBβš{“».‡l;À)¤ ,jͼFN³3–Ø¿‘ØžCý Îü2[ø {„zà>ðP³ •g1,kÃ3 Ç Õr@C¸™·.()’ÖH8yVBʾ}U„ϘF¡ÅÏ&ïˆi Ž6¤£f`,hÎ@É‚,>( )î²xׇc6vVŸ8®ñ;‘h^ýÁ:b‰¨ ð£9 1F<‚¥Üê"‡Z¼·¾¯Æ".iV×e»þ´™ r¶ÚOœZàžö†‚ÍÖdÇÚÀ•s½¤ ï¬#ΟØ%ĉ:¤Žšœ×¤ÅÅ9˜ªªŽŸÔ.#£‘÷ƒw9;Ø„K¶Ûï%BŽŠ.„ˆ‘‰=€/ðPŠ8 ß±)A”[š¿†^ƒ9Χµ»w×\^ÏÉý¨"äM Ñ«ª5¸¬ øÙÃá  g?­…)˜bAxÞ–77Üu0Bô§S £Zü¾ûÞ35ì Ù€kme¯cà2È«'Á^«›èo5g—3 *ÙCÿÔ`V\iUo‰bpPÓЉ‘L›Ä¾Vˆ¥vbÓ •1ßJ†: ¨6”aŸ¹÷>%ÍšÜÚA¢ÇÍß.1ôˆÿqz1»Ù qSå‡Á3êÅÆëå‚djêÁ‚1ÐK™ÜûNŒQ—üÀGÝšibÅSõ#‰†ËSÏÍhïÀ*HÊ(œ<4NhKU ?>@âçd/îµzƒ‡sމœm—çW™Jܧkº~ëˆ Â¶Ûnƒ‡>ô@<ä!«9gt]‡ûÜg<úÑOÁæÍ7âAÊ8à€‡`É’%Øa‡°ë®»¶ï¨®ëîøvÜÄU¼úU/Á«_û|àÔ“±ÝvÛBMñÐWá˜'=W_}-ž}â‹ðçöâ¨k®éš®éš®»<¯ÁÕaçÍ]7ã Àœù­w¨©ëÃ#ë ¿3xf‰¤g@@ ®²_!÷”dqÓPÓ$Pˆ¹„ZJ3CJÀ˜¤½. )»C ¹ªwµ‹JcS"XΨwï¶ËÔͳ¶ÚäáV`@Q šP¨´>r»; `ñôtô=, Rê<<ñ ÿb¤›¬ß·Ë2‚HR@“5àÔÐSübpŸJÖ2g(G">+’M€@žèÔn8‚) ÉÀ™õ­œR¼¸ ;ØR2é¡Å+ÁDx^ fQ#hÍ™bOrgpGÈ!#(2††g‰ÑÍf$zõð¾D„ܱ×Ó¥¡;^DQJA/½öدµÏº‚u?-ÅkÉ*ƒ_ëÇä†áh û”L#Þ‹€b o‹ˆPï<ÁR£f(ˆËÐAHÆW`XÁ©÷µ»È‚`oŽ«- !WÐ¬Š¢“ÞÏ/ À17é:{¦DÀAϦ¡ú Æ^4•À9È8£ë|¸TÓñ˜f Ž;jéåÚBÕúá¹”D@µB­n£ ߥÏN4Ú¬uÍw)£ï2Oä ˜Ë7™Z‚¥*Šô(R`¥ÄP®«õëí#R³2,ìÑ%†€‘Dãš“Ýþ!¸W‡‡Rí=¥ ”êwŒ.¹Â·(L¨¦kº¦ë·¤w]w3 ½ÿþûc¿ýö¾¢™›Ï|vvö¿íõU ×^{6mÚŒM›6-`ãÍ ;î°=>ô÷ïÆ“žòl|äŒ÷€‰±nÝz\yåÕ¸þúuØq‡í§qÓ5]Ó5]wo˜5Û@^ºt‰ßä†G¼ö;k¥#[ÕÐ9¨l¢ÙÅ™S½q–vOQ…ަøï4ê BÈ£ìaM)qðES0U¤ärw›c©ÕŠ9‹›’! ¡$¿“g&pT4%&t]F_ÆÁ¢#j§­%*ÞapPÃ<$âÀ¤(˜“+ Rò´mw Þð*•®à%(åH7¯{«¬&Ú¥ô0shG]K\{Õ꟧ J†™É`E¨ÕY“‚‚$?"^«æÁdÞ!®M SŒû1J)P1¤D™Œü÷ÚŒ¿×ZG–ÉëÄ(%daHí|…×Õ¢×=Í`ú)RÖ«rXÕM“ê g—ƒçˆ!3Ô«½T‰ýþ\LÜl „ʺp®²‘ØqăÞ¥à×êÙ¨¥‹«*z­™ rŒa&eô¨wH¤Þ›†ªƒØ=Ø)»ÂÂT`= ,î}0ºšóf@¸.Ï.͇Áþ­Ä°Õù0H4õA|ÞRò,ÔTyõ¡‹Öì„Z‹†!C!q²Ÿ?j¡0†‘ ^ðêßæÒsëC(VT¢YÁx"™¢íc Åkû¿i½Î8mö nŸ­zœ”¦„œ$ jÜn´3G…[î|DÙ™vQ?oÔЙ@"ÍâùZ˜¾¿¯œÑqÅê #¦kº¦ë®½j¶Äx<¾C,wU%•RnócE&:[ðÍÏÏãíï<ªŠ¯|õ_qÔï>¢Õmîr¯ÑufggðɽùÆ“ñð#ÁûN=ŸýÜ9X¾ývøè‡Þ‹¾ôÓþ¿á~:ˆ™®éú­[ÕªZ•±yvf¦1„õÆÕ¥Êîu®ÿ=<4ÂÉ !·%Ù«šRø6áéÕÄ^©Ä©kAqØœÅE6#ÀÌÓÊ9è(}/)Î.k–S†˜4™· ü5+#W;¡«×ÜýÝŽ–8#wŒ¾ïýËR`J0 ¡…€y÷¸"Ï$({«êÞ]MÔ|«•Éôžn]³`0)*Ý\mOѵ ¨ÀÒtm_Þt>#áö%­ÁDªZ kcš:בƀ¤C*í5a&†Þ<Þ¢C^Õš\\MÑ—)%ØXOÕFx͇P6˜zî@½áHÞ/i›BH"-NsPí¯e€˜§š«¿'Ê5“°N!¹{¸Y)üPÀ"Ù=ú´™ëPȽÎÌ‘ ©ûç,¹%€(üí©Éš+øl5^á}çd †Tiâ÷Ѷ͕#*‚RüOÊ3£Ùèc÷ÏT/ 6BR¯3µH–OÒæŒzJÙAv×EðÙ¤Í$² ÌЉ´AŽÏÓ(êÇ9ùð¤ž+ u/:d`ÃÃú"U‰à=„1Pðd…Rìo æøìÇþ&Ÿq:ª—=¬Ìõ1¸Í?+b1ôãŒQæ64¨*UóLµ&¿'£ŒûœZµ"³ç°xZ¿‡ï…õ&®)úDÈ%‚íRÂÌh„n”½åO ôéš®»þÍN òV¬X”~þóŸ#·–ˆß< Ú´iÓ­þÎìì >óéZ @o<î±  ¯X²d1þæ-¯šâñG?:®«À¸Oâî|äü¿¨O‡Ó5]ÿý›È›7oò`’Ê„£½¥èƒï ‡8ÒÖˆ=ü ô}€7À;)wȹóëV‰„rÑ& gvŽØ…‰ ”‚RÆ^ÁuL9%¤ÔAuŒ¾w6š‰1uFHìû¢‚¾ïQD`VFÄèòy¦k/"†±§“à –¼Ö+e§ìéæ2¤USWA‘bÜ÷àR )‚ã¸úŸkâx‡Ö)üy™'œû®ˆÀµWÝAÓP§æu_µgz¨4«,nâÔüäÎÚÆ½2Êp Ä]°Ì pçýì“› öœí—pFR뇿`›Süæ–ó½Ô%0RëuÈÀÇœ2RΠLâ™Ë¨ÍRŠaI±Í‡"£¦i^L¾NœÞ-°Ð{´ERÆž¤oÀ,ÁÀHðZ0ï=C p{²;È… ¬7ˆ ˜š3²Q釻#†fƒ¨wÈÓÜ<º®Ã¢EKÀìçÃX{”±'‰\JÝÍtz<(tw©c9›¨ÞküxÍŒhˆ‘b—SA~®B±Öµ^?¾Úkø¤û‰C>8cîÄΔ÷ó}Ôú˜ûÄSŽ´öÝL‡Q7ƒ±ÍcnófHïžûÄ]f¤™9¹ü\D!áx7A‘>@ôk‡jÁ|?†ô}%úÑCv•LæŒÜù9V` ¾@t Q…‰ Z A S&¤”Ñf£åcä.!ÅöA }éQd®Ý8O×tM×]{­]»›7o\uÕUwúölÚ´©1é[®m–Ýk!º³rëeS¸tç¯zßö?¹rÎØyçaføÅ/~ádЖK)˜ŸŸŸôéš®ÿ®¡W¥Õž›7lÜ ‰ ¬ÃæˆÞæR—,Š" ‹p,PK‰š´hÊeää>mƒñàÕ­Li«„ªQgêðÃ}Ŭ6Hó¿³)úîòš1i¾X }?ø˜E½·™œÌÈ+˜QƒXMCÅð>RŽœs«âœ‘Õk¹„>•ÐÀ=[µ¿ºßeåÎbö%¼íÝXnÿúÞeï Rù'ÐIÕo L³`úU9Xak2jQ@ûâÌh°ëNnûÀ¦·!À¥Ä­‰Âåò·Ð°Z¬fšàÑyκC ZÃQ+ùœžnD¿Pl/¡”q „5ô 3 ÏK€Ëµ;1Hö*7³>ØíAù)‚¾w¥ó<„"}ßc<ßU’Ϲ˜„Ò¸ IŽíô‘OŽ56;ªäÀŒ^zšô«: ƒjk}õˆ;pÕÁÏ›b‹ð?Uô¥Ö¬rÎH9ÚÂŽ`æ)é¬Q!WÕ) ŒÇ‚~ìƒ3²@ËJó°Àž_™xx[@·Òú¢(e*UL`6ˆ÷RE9 5KL°g‹i0¹Ø¢3ZO“°kqœÐÐWioéÑG Àuβ¡f)¼E,ØWæ„®KèF3È£8Âå Þ{DÀ¡ÔXB„<®CæTÿ2 ¡/âLt•P¹‡U©sµ /˜ƒù ă%ÏJ^£…tE­ªÌÔ;NÑ€pöZ¬„èIoZcgÐ)9(‚´˜ºC„Ìžó°ŸPAKðð¦îê‰ b {˜@“ï×ÎtT«6ƒP›ƒ-,(‘°mCíY•èkq`‰3- éÜ5ß" L }ïA~~ž1ˆ¤ÔBèIÿüZcz8 *2!Ýà.½¢·âµœÜ¶&õ﻽x¾.%H"äÒCa^ZŠ8¡Ös9€%îÐ÷â º¸¡/%jú€Ü@vÕBü[%OÍçæ[W‰|†Z³¹îÑ®5`äÃÔZ:m€ÖjØ\¨cT†ú:ŽñÇ%û±•‰òà ‹$rmiå^ïÔ{¸Mlå„LÉ•F§z„Þï.*Ð^?-¢¼e©ýÝ5œOuèóö÷é ’`‚ÇÞÎPh›  WÄþâ” L`5s…ÉüüØ•&†°‰äæýOIóÎo ˜à¢µ/RÏ+°¦8·* õa‡O}/Ú{ 9óžrø¨A¡Z¨_Ül0#Q‡áu· œ#¡^$†u à{½ùç5¾ôŠ!~‰(Ç`¥¥ò"w."á…¯s£¢Qs&>è e¨+rë‚ç–}Ñ9“Ï2ŽÏºW2Æe2£¹|JÙkG#ÌŒ:÷®W5P­­T)Âòô[dº¦ë®¶¶"jùÖ·¾5Ý/ÓõÛsŠ›aÆ »ÊÚi§°ï¾ûNÒtM×è€×‰Çç™™ÙAb¨9ƒÞ÷!g r"ƨëšG=enÞøÂ[à‡£ò‹¢ Êû²}åCÈ•F›ÁƒºíÀ IDATáÆ¥÷p)]ÓõÛ¶fggñ¾÷½oº#¦kº~‹¿Êt ‘=%œšìuÜ Ê¸oL³3¤ ©ë3GÅPlõ›öŒT <Ë™Zø˜ªB{C¯=J‘ÖmMUº r)ýx]Ød†‘GF¥`Ô<ØÌ eÜ7é=rv€0aõÀ3A)ž|êïQzߎ*+ïF%" j%T+@)A#‘{\¥ïØO#]¾2Éx”âì6‡tº¨ƒs): Ö2˜µîez Pñýt…{àkõàRt©µàÿŸ½w öí¬Ê=Ÿ1ÆûεöNö…Ä\‚'€\!$ú …b¸ RŠvÊÒÖªn?,ZýbK—m•tùÁRmU7UXÕmŒta¥Ðp‰ŠÚÐÍN·Ý¢…\Œ‘$’ììõŸï;Æèc¼ïmÐsÚ ñÌAAØ;kýosεæãy~Ïð3ƒÀÐn0]ÑÕÂÏ«=`V„éaòø©(+ÕØà Et†JŒÐ¼‡¤ÜöÍ ÒKAÇN¼DDÓD2!s£Œ #«B +‚ÅÊœª€cJƒñý´ëi>ÈB†íƹ¥§ÎÆ6sØÝ4¢µ¸€EÒïÜÀÌ88X0j,„ZÊŒ«Ï%’ÛmŽs†<àgµ.(‡(yŒ»Äy¦A¦<> ‹>sÙ>HtMÅCÁRË~P€ðǯkä‡Ç€& ŽJ jIý¦ÌSöI$Zz4¼¥ JÙËž‡$»›¢·hЙ#ö‰hœ  ¡¥4B°Ö²Qa8ªÍÚ”ü"}æfŽÂ!cGæ)⺚¤ݦ-oþ5ÁjêPG…Á$3R)äËB€ÔlOµ@BÃà>å»Ù͠鈢)×~÷‡ ƒÜ4#ÓÔl6:œYí,5·‚Ý–€«Ñ…O?º"– “Ál~¨%ŽÀQJA]Ê~Ä”ÇhdjóÜæïA„j=Iù1„Ù bn‹‰c8¤êà̆žT%¨¢õÈ]çRrè1EËcÆ`ZÀ'nËÌë.IVí3]ÒBÁ £ .(‚€®¦óí¹;¬k(L ƒ56Чý€q-( m]±Û5´Þf7†!cƒžM±gÓMyÞ13¨›æÆx¨Lfc›Çu/¯£)ÇÊUç@&Èìw̹ϱ ~b(„3³Þ:Ì @)‚"KläÝ€N“Ãn E‹›Ýg* s3Ï ”ƒµ©¯G}f×û Ú°”вT.ð<‡¶Új«­¶Új«­¶Ú꟥AÏ^`RÜŽˆ£q6ÔVôŽ”™Æ"Ê[×fS.ŸrfNè[³‚E{nvC¢ìOªésˆGÆóhú™… P „ê‘]J@ž¼ÅfKõÂX Ð0É£O‰êäÊT*Šõ¹B.(%²Ù%=·!ÒjÌáC4fQsz¦• • ThÚ†rœ°žÄáá!zi®h²¢´Œ%A–Š*’[]žRäžÛá®mŠæ@%F'@²¹´nXm…6͆8ÏÁb)›>všu 9L÷çÑ篺†?1ä˜,Ëm÷øÜ÷}úäL¯´k6Y#šÁ ¡°8 Èmÿ°_hW‚1fŽT±[ÏÃ8h@ÂÊr¨!%|÷韎ã>)GORº¹gãf;Ìm(Ü‚ÇðvŸ dăíã ᛆÛÐ{ %b+4Mj^; W„Ó" vÏmø>ÌÍ÷2x¸æ@"¡€3Û>¥“iPÂ5í ûk&T!y¼‡L<‡6L ,Àa¬”TÞÓLˆ"†q(4óÔ}r2SGƒ",šÜ¡£&kƒæyÒ58±Ùã4²(ÇuÌ¥ r…,Â;æ/™zn*Û­¶úÚm¶ëo«­¶Új«!¿Ð²e*¦±!œaÞ.á™å GдØÌZ65:£«â‘D‚ú-£y‡…#^-¨ÐB>¬A!cH‰¦¥”U‡.=šO‰ l‰FµuÀCöì c‘|ÎÑYÄ6Os­ $[Ê‚ºTd#7¤»ûélªÒCëÙ¹x>ž™Noª›' / iDñQ“äM½Dã¥Zà–C,uPx… ó ¥©3_|ølKúЇ×ßÜöþrÐ>f 2ýßîÃŸí ‰Ô¡FÓ/N@­hV ‚ÎF îè]£9ïé2, }ªiè ‡)¿¯h ¾ásXnhiþ9ôôÐ[ ?3J‰†Êlø¦ýœ®€Má)S'Œy‡e$`Æá©‡l½1P°ß¼:R‰¡hCÁ¤æ`Æa-˜f†®!coÚ3t zR¿¹ ‡ÂDêŠÞVÀs%ª9Dâ”®{©—kŸ=q6ì©¶ qÜÀ¦}¿‰6ägSgL_<çu2²hJË™|N9"ÉÁæÊTàC`îÀÅŠ 8Ø÷|…´l˜+ŠÔPÑ$ppÆ+zò@Á|ȳqDöU`Ù7æœ*œÞ{>¾‚]“ Qrp\ cÐRõÐziüü)E°”%U’Ã/Cë ^{X2ö‡òÁZ`”eÁR+j!<"(n«­¶Új«­¶Új«žšIgÙ¢•ƒƒÃq› ¶­ É^d^¸GƒÑ_n§øâ½|wJŒ§<}4¶ˆ“Ü^‡ÌyÐÊÁéͯ "zl×ZëØùJ=vO#{OìVÌzúêK`]4 ‘XÅ{ \zàÝsxà>³ÇÇãúØd·‘Þ&Æ`מx‡(C™A»õõˆ¦Ú­-7{™Ç¬¶'‹¯Dk¾ç jïú3×”¾hÏfÔA²k÷1Z¦™•Ÿ‘„|HÏ÷ÂƒÑªç¶ X1•Q1<83Ðþu èXl,Í}Bö0âõfv{Oï±M þ…»x^WLxX,€ašrqa0g£fœgnhݡɘ04ŽÖó ÃÊ97G÷¤Í'€…!ÈËAç;—w­˜mP:¶spÒÝÁ=Å)жÞ{xÞ–P•ä0ˆÝᜡfƒ? qí¬Ä˜ˆ™Ð»¡kÛ+&òëµTyªX(”%|ôÀ8Ò±ÑR=2"Ìn¿Ž$W¿`œ'Â(’ŠìlDЙ&µ¾ J %â瀺ÂZlþ‰#Ù¿¦¼ž g¶}&x…*´„òÂ-l‘Uì¡™àŽ®qºàMJ™CÄq­šzÄÙµ2•"ƒ!$ÉȈ‡X;ÃáaÁ²Ä9¹ÕV[mµÕV[mµÕVÿ<ú>•ˆ@07ÛË·œòTËh%tË…óž°=]aA©’z×׸!Ÿ>à†ƒ@a“\ÝÜ N(°ØTy6Z£EvYlâM5#¬\bƒV˜ÖК¢¯+ºuô®Ó£;üu=Ÿ 'ž[w¢=±yŸ¿ ‚'„JÓ+7ŽFÌ,¬â`=s¢Çv:œ®»ÙÖR+ªÔÜvâXóïÇú§ˆYC6á­°µ‘I=#¿(ÿg|¬¦Ù@Fì•!!¤–çyDV¹ÍH³}³¼oäGfýááˆá䓦=檘`3âl¢‰A’½I~Ä6eÑc8ïãØ FŽ©ò…ˆ„ÔY¸D\zåErøâáw7¨×P&Œ~4HP@K”yÝ­7tê n!…® j©¨5<ç} *¾Ã¡]QDæ&øDÔc€3"ØÇö×½@UÀR¦¹ Ã@Ðæhî0myBt¨— rÝɇÝAaÝ"›ž’vÏû7€¦º ÆAùvžS H9° öå×èŒüËÕü¼®9#ìRÝ–=$R˜A%mæ ¨±¥Äq™³ {Ÿ8lúÆGîÚÑógt¢°Ù¨‚jA- ‚AAžC¼¢ÁâœóŸ—9, €bHîå—ç ˆÅQ,äþ˜ :6†±µk .1|¢HP»‰l·Úêk»{Øj«­¶Új«Çg1RÆ}¿£œ?jè=2— ="™ª†¯ÓCx4ó.ãÒ Ä„ZµW°–ŒVSU¬m‡ÞT×|Œô£ÀU±ölÚG£Ã‚RZ4g4¹Q¹‹ÆÌÔ`­JA¡J‡9C{Ÿûº¢µ­)=7à 1 GƒßHR=|ËrxšTøxc¹ÛºÂ\Që‚EJ(J* b?8¡aÐ<ÜZµ×†îŽ¢ ]xzó)=ûŽ D›jfLl /p2'¸1€Ä2X1Ç;HÆfV02ã8-,‚Z"KãðÄ!ªrcn=7ÔÇùTCïÕ cø0ÔÑÊd›ûTT°ìDÒrW´µ ¸pÄ 1 Ê ¿§˜á€ÄI]G”ØèMÑÖ šs!H 8˜`.pÉA”ažn1 ¸£[4é±®·Ì|ÕgäWÄ ª| ›T%)õ„R¥HFö9¼id§[@êDó`Ä¿GRÉ5¢âÈ ªöÜT[ÆîåpE :+ˆ4iäµ¼ŠäÐ+âþâŸëk(/ò¸ƒ²@2ÎÍá1HSÀ”ó3XduòzŠL‡:ÚÒ"`7Ó5(þdyî§zÀã1î{%D’Òµ…ýàD9CCŽa›e[<6Q òÄ)T>æ`ñT¬§Ê†ô‚„¸%ô.Pšøn è^ñc]ÐÕ¦-e«­¶Új«­¶Új«­þ©v×à‹9å¡/î`ÚÑZ4dqW;¢‘2Û:vR¹5DJh ½vÜQzC«á7ëXÛŠÞw)f8´ÕØ«¡­Kfr[nÇ”ÎDÛR)1j jsí Rœw@ò{Ïõ±ƒ!5¢ ¢AÙHʆÇǪw™²aG¼?¶áFzyU,6áEb×玞›àZsû6ZPº*pò06ˆ)RÌñ:I÷˜rpŸžððØÆqè=@lË‚¥dcí"7}ôÇÀuû&dß!(éé/áë^;Öôõ;²T)lôGÞºY gêRãû i]àØÀö½¼ê()K3`)5V×ŠŠ ©1œSôîèh js¸8åç,%bë2ŠO’~õ†ŽývˆË·‡Ï<2ÛâœkÑÆ»ÃaG;À k0¹ôzOX£ €%ÏAº9z[÷öÐlb‰Ê& 5‚"d}mAÓ¯^ DË)„Sn“]”¸ÎÈ#«¾7ôäý*Œåð Í-  ·S“¡–$Œ’yôžç<ó!Xµ/ X!™—FÐRAHŽÂǧ®[¨-|â(¦¾HÆíeì™[Bïh4"ð®;R"?¾$WÂó?æ!]§a°·PÕ_°âàðì uƒ¶Ž]ïàŒ¤š*@áŠß •ÈAш=t“dXDªæ6p¢,ǵ ¦§JæK·å¥j«­¾võÿ÷õçí;g’‰u¬G÷¨¨‡O󯍨j«­¶Úê±ÿ2›t"”eYÐ{©ô¸G™à8q™[A–ˆS>KÆŠÌmŠ)ö€1Åv¼Â¬$t ¨5}íãfÿxcëcP7Ý" Èg “Cºí›i¸‹Û>åÌÙ& µáž޽ߔGs;cÌ’ŸiOYv4¼„º”²Ì4¶Œ=âÙ\†ÀP¼F³èxׄxq47 #ƒ‡'Ǽõáã6p6€ÁȶÜêL|‰}óˆgXûÜ ËqMZo+Ô¢½Ö`hÚá]¶ÂÒ{léÚ‚Ì¿¶hò[79–åËRQ ÃAب­Hda³¤r!a^kù™ºb©57Ôžjè0Ï­»§\Ý>çcÇ‘yχ…sóÍ éŸÏô„#=ÏÖ#u@%IÀ‰"¡ø€Y|-Eƒ>â׆ê4õ x6¿"ÑÄÏ\½ð‹{QxMÙ¾Ä9¤ÖÁ+ƒ¨»¡Tœ8\ ¥‚t3PTcž%"é —9ð™ Ža‰@ÜáR€Œ46+ ‰4ƒ‘'|•ñùÅy§òø1˜@n»G$›[XT3¢ ‘í«î Â8°ëSŸd<ÎŽâØ«Ø¡½A=^WÏø¼°àägXKB,V–‚"%3àmÞË P ÌŪfyñ>𝵆ÖÖðÖW?3·ÕV[=ž«íΡÝÕS¸èì7ÁôGý_h­¡ž¼ËAÁù‡>]ï†ñ3qñ%ÏÁùþ~þ(—ãÄ¥¯=úÿàïïøŸá8‹.žøÔqòäÉíÃÝj«­¶Úê+¯Áov‘£œ8y²uK˜ ?*2¾+£¿RòÊy3ì^籤ÄuhÐØá'Ëít¯ мěˆã13J‰h»‡—ئW|ÈbCNÍÿز¹!š×iÞìg‘ÌÛf‰mê€QIlå…dF8 龪é8=6Ô¦=¼è)7Cn"ƒ@ÎLðÒ@éM2ËØÆczú¯[W ?C·ý~=†Ã~mè­'EÞPzl*Í®ñþË»÷òRv=!£ŽÑÔq´žGµÎײ¶sCƒÖ]4KCªlKß—Íõˆ3ÓŽ£¶C; š9px°¢. –ƒAA·øÜZ_S±·šA{GïIþf†ê’ÇÛQKM^@lë×Þ Úò \4ÜáEäïxÏ>ÁÃ%ˆÜ¥äù˜Ç½Ì2IÚ¸B5äáCZÏ)»_8N®™Q>ÐT„ŒX¿ðº‹;j) ê„?DÊ£.‘ÃÜ^ËÜ8›´ÆgÚš…üð0?‚h‡ˆ ·ÕˆO#’Ìè¶T ©ŸYØš\'Žè¸cß#Gž¸@¨DÔßhN»Oå€P™ƒ#aF©‚Z8ýï)ÑÖ€±uíðn ÒËwD|1ƒ< ƒƒa/TP–ñu”ê€PŠ£ô.=Ëâ}“$.çšwœ€%é?Þh¨tÕphx¯SDÀÈ€0Ü,äìž×ïqn›—"éñ·÷sÓ|®xöc4x`4½ôp‚)C…@:òØÏs^5‡©|`0 ‚ÝnÅîhM5D #†Z%#Œ!XXCÓ©VB­"޵…b£åg! ð²à@*Ê"Ék Áç¦èf±½Wƒ Ïadûe³ÕV×:¤øÔ_ü9¾ð™Ž‡ôfèƒïÃ%—ÿþêSß’ÿ Lá›} n}ßµ8Úý—hv1^ú¼ÿŸ¸ëßãïîýn@Nái—6\qɇñþíõO:Õñô'ÞŽýågð —]Ë/¿|SÛlµÕV[ý'Ö†ÛÜh …-â>ž§¡T÷ÿ@½E‘’^¹Ù9Õ!av(hyÿŸ[öÏÔ{ŸP)QA¯5¢Î\Ñ[ÃÚ„J æh6´;z7hËLdJÀís“y–3·ÛSF¿ËÛÚÓ¥#ª,š#4vQË ]¯þâž2h p–;Á<3–U¡Úf$U) æ‚e©`‰íªH éÓ. î°Ì9/¥LÀ‘g4SxÑÁ€p À²ì1äà$ZW©Ñ| ƒ“Îmj(¹¥¬RƒF2»C8$»RÔ-ž‹ (UE5èøÌ µŽZkø€Çq››Qøô°J9K4X­7FF…eV{«-6½=hä¥Äãמu¸¡I Eg¤[|Î{›ƒˆ –^²1O šæs/©æ|î4‹'|œRæpߨ´"{àð7#Ä:¬hÄÐ@‹&=lq[o(\Pµ —ôÙÓ>w^U¡Þ ­gN½HP*CÉQ8ââŽÖ55ŒI×ggt¤ @3à ®?[; A|gfH)€Lž›~D“RŸïÙ@N¿—úoâ<Ž%ÉëHb$SÑD¦yo bKÚùˆ&¤ Ç "ÞÜ®|Á ©§$HÀr0 ¬y¼_œ1žkmy [_6¸À¡ú ‹øD@.iUpô´<\8ÎŒ¤ê];v}‡ÖÖ{X#TaKâ ¸p(²1·ô¥÷µ"‚Rc8¸5è[mõø­¿ùôø·¿ýEìvßbÆO^…kå/ð7ÿ0ª<ˆg]Þð„K.Á®øf¬»Gqpp—ÃExî¿þ6<ð…s¸ÔNá¾û¯Ä~óu8þ¾ø©GðП‰§>÷ñ×ý œ={_³÷øÙÏ~o|ãñüç?7Üpnºé¦íÀoµÕV[ýÛŸ_ÀÇB¶)_'ÅáÚÌeHÈc£è¸¤íØb*?ifKk6Æ£G"ePñhhºg.9ÐÝ¢¡uz4)¦æMu¾bNÏ»ÀÒGì”™;4Ÿ(üå¶Œ›"‹P±±È#‡¾ºîß¶*¥W‰å±Qîš$sØII™·d³¾\*ñ|ÃÛ>õeú޹T‰µw…ˆ¢µ˜l0…ƒNæ© `kzhÂVJÊ€ÒC:éúåývrDT•hâüK­ ”yŲ̀Tp‰¦±QÉ=@©ŽÀ„êÅæR¤Å%6¿k[a¦ñwù¦Ü¥.ð›VGÎxúû€V%ðadËrÿdì‰ñ.=ì݃l¯Ú/à"Ä–6éþÉ0æŒÂÜLÅœ&7¾„|]’RöhÀ»÷8ç`5@mîÒ¦sàîè­D8Xs»ŸR|÷ܘ§$E“Êî¤}÷ _ ESÃz´‹µVÔ 6S›×ÙÈQWíñÖ ‹ $WÑR‘‘;x Î,®‡¡6ÖØ¢ Ç ä9€ái‰†:Á‚Š8‚ÈÞ kטòþ3Íyè_úóh«8-%m1އ6ýì€c×ol3w09˜BU°p…R‡}#ã!»¡Ý$ô±Ë÷1§i1k°nŒEï"5‡ £°ÞЧB¦Çð¢0z^¿[mµÕã·T—_qžÿ‚'âo>u7Î=Œ‹.~2þ‹î¾û!ø=ÿ;Ös—ã{^yOžÆïüÚ[ðÌg>€+žüB|Ûó¿ÿöú-\túX.ú7¸ö[.Åí·þ{ØC'?ã߀Åp×]ŸÁóžwÝ×´AŒYF» IDAT€GyçÏŸGï};è[mµÕV_Ͻ½c žýÕÔ»æf¬ Á(VQ$6˜jÁhp(s³ƒÈNqkR+êG¢[khµMÙulV—  f3Ü5·˜‘Y£)$NÿjúEÕlÞôKf®3ˆ ÛGFi@Í€{®ÄVÌÓxÓ1xHú84"µF#' É-pPÍynÐ'Éž8›¶w–Š"A|&v¬; åûKÉzKñƒkø¯s€@ä~òÕÕ`ê{èWf>’þŒ‘ƒ=6ÈNð0L%¥ÙÌ%¢èÖC’$bÍADÊ×™)€dâM/…oŸ‰¢írÍA\PeèìîñzC8;húÏó‡†&ˆÐöjcî·:’µ}ÉšOP¢²£€rlHc@SŠm¿”; A‘n ‹«ºçµn¦ : Ø\MUÅ8 >w–‚êŒâ^Æ ‚“S±*¡+”.-|ê8iýóóßj«­ßu°0®½ö|èýÿžøä»ñ ßô_ãYלŧ>uäÜ'pÕ3Oÿæ'âÞ{Åó¾õ™¸ò›þ;<å9ßZ ßöâᢓ/ÀÓŸý4,„ßôÝhý¥¸âòÿøÇ±Ûíæï¶¯´n¹åÜ|óÍ "|àÀ5×\ƒK/½o}ë[¡ª¸é¦›ð¬g= ¿ök¿†u]qýõ×ãE/zÞùÎwâU¯z~ÿ÷¯{Ýëpûí·ãÓŸþ4|ðÁ\*n»í6ÜqÇ8}ú4~äG~d;ø[mµÕV_‡EDP uxa’”Ä艈`Né2O P©L&¨@Há ˜ R4%XjO€vò ¯rïÙ Z4»?®[ä‰S S)ܵs³6È×”¹ÊîÑdŽÆÂðØÆ÷ ·ÀT3Ð!“7Ouª‡€A€xF»%Ù‘²y‹&šr žq^Ñ@ç0€€RpÙƒë[zNøp´—p‚Ã¥  ø ÎKx uÈ{¡9I™bðôpïAi8–õ<ÕCŠ<šy>ÜØwU G3<›LD³ÇRàÔ V l`Ò n6ÜÕÛLK?u©i Rä«GsÉE2^‹¡ÐР:ÖÝJœûð![ø¡‰)‡˜)ÜÐÇÀD“S !Kʹ_ã2k¡lì4Ï—žJ8 Ç9`c(à¡\àŒ+[Ê2=ïnõhàCIî“âžgeÂõ,Àd¥`1$/¯'8:1ÐZÆÇí½)D6ž£d„ºƒ9·õvœÇšÝáhÏIcOFĘÊíñ‡ÙXÓÞœŸG3ì´‡ÖMuÆ|\Ÿv’Ñ ÏO`$x jX’ A° ()ëpN¹z>ªåˆ,–ãxTÆgÇÕs4´t°!'£„8oÍBÙ3Új&I%@Æ(ñ:¦zˆ>†ÀÀ¥&Û7ò[mµÕãw[ˆB}ý~ ÿgxò¿º pÇw¿ô›ðàÿ#®zRدºê"\uÕ]ð½/xÑÓ.øó%—ì7ågžpæ«z=?û³?‹›o¾ðë¿þëxÃÞ€7¿ù͸þúëÑ{Dz,ø…_ø<å)OÁÅ_Œ÷¿ÿý8<<Ä›Þô&ÜvÛm¸ùæ›ñ¾÷½þçŽË.»,a°Q¥,Ë‚|¿ú«¿Š7¾ñÛ °ÕV[mõuÖœ3Ý Å³q0~Íc0Cx¥ P"ˆ+Ü2Ì ÝÃËaÌ Z;º'ˆ©5´¾F|Uz‘=·qð†¦à2‹F˜8|ÒÂRjd„X5_ð—êú=›8‡] Ë#r–-þ]Äc JA6ôQ ¥ß¹µG‹ «í·ÓÏz0ü¹!9„‹Vt9qRÖ}îÇð¶h2ØÂã„ļ俗œÐÝAª°®èUæ1íw”óõo™ò° Åðˆ¥›móF\Ühá`¢^ÿ*^NÆ=äÕê‘m¯†Ñ6š x êr€Z „£ù188PÈ¡=2¾×¶†§W N€Œˆ,Dcä„gñgN(æö7%ÜæsëŽZô¡–fŠmëxÔÛ_y€ µkäÉ›À,%ß…Zl~¶R$ãµ–ÙК)D9‡ˆa ¾ƒ\á>¼ÌŠ C‡æÀ¡@F³˜?vì½ØM¯Çf„Bïkœ»Ã§‘×(Ò&À"yŽDš!3Ç2y(†Êâ‚ Ésœºõ°`æ©«klýÝ&ÄÐö…üVáÈG翩¤ƒJÁRÒJáenìY†´žçp€í³Õc×C½ráx$!á3º}Oz$Ì´ˆýKb€B‰þ˜jE&4¸j(„€8ô1oƶÚj«¯Ç=*þÕÓ¾!"$©Cqp(¸òšÚÇ z;Ò£¯êåˆÈ|®ñÿë·~ ÷Ýwn¹åÀ­·Þ:­]ŸûÜçpíµ×¢ÖŠŸú©ŸÂ 7Ü€7¿ù͸æškðýßÿýøìg?‹?ú£?‚ªâ¯x^ùÊWâŽ;îÀOþäOn úV[mµÕ×_‹æ’ê`AÙ­)WÍÌìÙÉGwWjnŸ I]¯±‘Yž[bo.톦kÊÍ[¿©æMy)ÊÙ†(š)L\†@«£ºÃKlr#KÚÌÍ6ßo*‘òasSrÚô‹×Œ‰ãxB¼ŒŒñl]Ãn[y³h’=·xU7ÀQ÷Ž]k0 ºÉÛwÊ,@=⸰ƒ,éöLPD‰IæaG¼6D½9´Òlư­d Ý®Ç1-:Ó¾¹JT Œ8D¤hçÖô^§¯Ö,%ź÷\áÕP½¢ä{ÐfXÛœ;B[D’[NBXjaôîèµî›®”ÜK%¨†gŸ­¯h-òè…Vefp'í-RÎ’Æ•ý¾9ÁZBôJ}Ïf)H?Þ€9¸¬E$ ¨ASj*„Ás‰çbÏ¡ ¸ Õ„å®°¿1ɼú™G³ÍÊ ¢èJ(“pN(©$ðŒ(Ë^0Ïß à{Òã&p©k±mwL¸ž›Ï†4 9Ä€&l.^—)AÄ"#=¯ãAäŸWûP] Úä\5ÇǺCÛ.>+á|ïû6Ÿ…Q„ÁT!e\_C&+ùú°÷¯ÏŸ3¾W U€èÁ‹X»ÁCÂñ†«ç¤`•)d˜:…õÂG.m~4çž›ô1¨ðh‚µ Ì‘3ï±\Û í‰³£&‚#úË—Þìo¿Z¶ÚêkÓhuןs(üZkøßþäOð§ú>sçßáüùóøâ¿ˆo¼¿ôK¿ô˜÷„œøªèí”ðÓñOwÇwÞ‰}ìc8{ö,Þö¶·™qûí·ãôéÓxôÑGqæÌüüÏÿ<žýìgÿóÿÿn#ËoµÕV[}}6èjÒb³ÉÈFcn ÌF%š‘ Sd¼è[†Œ¿"+Ä_€¥ d)X2‡Ü†ÁV\`¥ ¨Áì oÒynÑ9eÜ‘qNs(0Ðõ‘Nà"ÇšÓŒ*† ywÊQµ+”:Ø2:,QÑœ‡ôج'y=~±•š>vÚçWšD¢Y›P/ôçVÑ0>ÏuéXÍ€>dá@]*ÜËÁc‚iJ§{x™Æ¦¿õŽÍ²iäûلze‡Fø÷§?׺®” +OA- '¯Ö°6¨¡Ô ××R&¬´¢w‰ãCŽÂ%"©’Ïéѯç‰u‹x¸”£Gn<µhšöRX"„$g‚Xl_ 4N/ŠuÜP°†t¾/ÑÌhkɳæÙ¨%QÜ‚(@bðôfSFPZ=̤¡¼Xq„~><ûN€A$(õBpø Ï·N‰w4Ëžÿ"€‡E Ôã¸ò<Ÿv“â²o€—„€ðiOÆ:hxÏ=à„ëÚ'•¿A©e^ ô8>#?Ö0Ï5ÊÏ“†. õÀºpÙÌ$WˆôHÀ°+kÁ|/¹ÞoÀ=-Èå ÁSÕa­a톥 ¤ÖìÁ]ÝÖh„&†y´ßŽ3PÛ¢TÎLóT5@cØí9@–¯ifÉGC×ñ³P@s´uã[mõxoê]t^Ë_|1®~êÓð’ïú.œ9{E ž{ÝuMpêWZêúU½¤ë®»úЇPJÁç>÷9À_þå_ÂÌð¦7½ §OŸÆóž÷<|üãÇáá!þøÿ/zÑ‹.hįºê*ÜsÏ=øÐ‡>„{î¹g6þûØÇpæÌÜÿý¸æšk¶ã¿ÕV[mõõø«Ic‘d É›v·ˆûjÂo-qƒþq`F×ôc; žX“T‹•rYEjD«­äIf‚¸@dï7†gŽ68ç´§N£pl GØlȧç:ó–³]‚'êÚ]ãµ Í›}Í8%Ó¼q÷ñž„2#À†M×{ø·G\¥´@»$Ãkxì¥4´^ÞÕu6lU+–²@­c98ˆƒb†îÑàN´§üÜhB±0â£l¿Cg''Î<¶ÉDŽ¼è¦±ÑäÊAÇ–üwÈn ¹u- j]PJÆ’U‡Ÿ0œìhU°,‡Ë¤,ÂûFbô›4èÚcso–ƒŸ›ßÙ¦WÙÜ@šì턞Qn[93Â}øîÁ9ì6ÍÏt.#`gc€‘rñ)mŽs-Ã%5´‚ I4 Ð]ƒ™b×$¹¼XgÞÛN(T.¸ÍãœG“rç™9­S–Wr€'pX)¨Þ‚vP!|ê€?ô<ÒÀLЄ‚dD✎!Š©¢ôŽ& NÕHÄ 2„x^O.@­Á¨„E:1@-<ì_~¿¿¡ã¶Úêk×o?ÖE¸/€…ªêºë¯ÇSŸz5T÷Þ{/ŽvGø›OO}êSýùÊ®ðný«šáÝzë­xÃÞwÇÕW_+¯¼oyË[ðè£â%/y ^þò—ãå/9~ú§çÏŸÇM7Ý„—¼ä%øÑýQˆÄϤû±ÃÛÞö6¼ýíoá~àpõÕWãÖ[oÅwÜË.» ¿üË¿¼0[mµÕV_geæh=­ã0”RƒH®£ùNë*3BÎ\(›èÈ+74"“²Y&ÉÆ'›È4¦òðÕZ4ƒÆî)q¶$Õin–ÝÌE2B­”ýnT’È ÊM`F,%q{xs£¡.ǶÇAæ.5=è©0'˜g$–yJÝ}¾'ƒ¡›‚²‰ž°ÖvëšÏç¨%¶ÍN@ë»u‡u·ÆVÓƒÃð; !)ÔÑöÕÓÐÐÖuú°-7«žÍçfp*„@³±Ä1~1¡÷ëÛq)8qxˆR+€Gñ¨Ÿ‡»aí+¨·ˆCK9ç† ˜v4× ž3áp9T… dT©Au—¯‹“KèEP4‡ÃK÷6AËžnnô¶CkëÐL8[n-¡#N™OŠ> £`vféI·$ŒÍ®ñ> 0ØyîÓãÁ<9³Ë†çå®u¸¬VAY*ª”88ax#Ø,s¸G\Àè²É&€{ŸˆRˆFzí+ÚÚph“.>Îç0³8¶ù‰³0j] R`Â0õŒ ìð¤¿Ã­GZSJçsîê‡PL,µ‚™39!.Úq- ¤Æã7]ã¹)äÿ•Kœ3ƒÊoÃôõçÏŠkU[‡aŸÀ"“:>Ð=3A3‡<Îo‰›P*píè©p…$@n™úÐ{üŒšþtC«JÉ"a£\§qs0ˆ9j=€Ä9QEÀRÐÚ­áÜ?r£¾íÕ·ÚêqМï++œ½uÜú;¿ƒ÷¡7Å¥—^ŠƒÃCÜpà xÚÓž?gh .ÿãMú¡~UÓ:fÆ[ßúÖ þîW~åW¾ìëÞò–·\ðçŸû¹Ÿ»àÏ?ñ?ñeßóÒ—¾t;Q¶Új«­¾®tãîP8ú·r´;šíA%ËÆ%$à5Hçv,ÿwn·13…ƒàô÷htÕc…CP„R†ÛV†cMH»G¤ÒUI‰ÖØjYø†ýK6ǃø= r!EïÑ|æöô­— qË<«Œ@s€’ Í&P˜/ ¢G¶uAar3½ÔR—xß²]ã³ H\A͸3ólXsã_òæŸò½u2*ŽŠÙ SlŽ®K©‰kí½õvĆ›ˆQ £–ßD~vn³™B¾7œ¸ƒTP…aÔZPKI0Ï p4ñܘDZÏÏvо 0[ç&{ wt_¿ªŽŠÌjÉöÏñ€¹íiÝó¡ÂsùfÇr› ªG°n9òÈ£Ìí{ä´?ï f+àáƒô£/²'0,š`ÍÏt¤ø°#¨…PkQIˆ[@ {м„â\c.©JL-›‡Zf}³Oâ~‘8®E8ý…PLa*¨KÉF{ÄJ*GÆ» †€HÁR,'Q%˜±%·°·Á»¡Y‡²AdÒFQK 8¤÷x¿Àq• å{Öµc‡=À/²éc°1œèHr?§zTr!q­¡AVŠsÇBýÁÈô´¿°ÓË™Z³½RÂŽÝÚïõüóf?^ùP† , xÆöaópnµÕ¿€»!† ,øž—½ ÿú;^ 8yxE‡‡©x£´! Lëøú?¯ç7äV[mµÕV­ÜçB 0”¾K–§iÜ¢Š;º9T±¬¡$YÛØŽõY”͉Ã;gÒé&ÀâÏRcsIéóUC£™CðŠK³‰@¥Ì&|hpèzÈ:§[ynô0¥ì"‚’0òØ´ J¨GSž„"û&=¤í´ €C™MR­’t÷ø÷L‚RkøØ-€bµ2É  6¶×`ÞËçÕ@ÖÇ;}°˜M0àkƒÏXHÑQÀìûÍ&Yl‹Õ±v… ¹¹ÄFxˆÖ‘d4×cùߤP#p’2«ZP0€†ãÙnÑ$kÂõÒïM‘ûìuÝoT³I4WLHXrÛƒ´†éƒ¶”¦[6Ѐg]¿ AŸ\{¡äH²]ê74ÑH•‡,= ë µ{Xœ @­… ¸ Ù}œqsp`áonA 7ÀD`0o4®ÆŽZÑ([d*Ï!’MmrL¡MÿßunrXâ\ ^2â.eúƒ)%”"€éÜ’jT!È"±Î™K€òÖu‡õÑ5αŒáã’ FÚöÆc㟉 )¾Çô‡ÈÏMstŽsÄÌ m,I8¾g@èCÈiÇðd1fÔ¢™Ä¹pŒ;@çlþpÈx!¹o‹h¼À”TæÐœ=K†)bëïñý†ŒýÛj«­×E&ñ{ ŽK.¹Äß0ï"8^ (í`˜à+€¬ ä?éÏUS9¶,Ëv’mµÕV[}¥¿“8îÇ)©ÍE¤NÕƒâSîìˆF Ã]´cqm±!.¹%«±ÕâÙbgF1eÄÒ®E’«ÄfÓÒGÌIÛžþÖ¨!o¬ËÌ…ÂÜhTx‚­ç–oøÎM$>sFf¹Ûx® wùÎ ÊRPÌXͦÙ0 –†ô’ AÚ˜.„Kå†UÍA©0s¨õ”ç6X·|ïãÀ Žüñ|íî@9ªX–µ HI5æFÚQvæé]ÖÖÐ{G³øóSÆÑ=ß[J¬¹MÁÃŽPF€å& kåAÖæùÉOâe/{Ù?ú5½wÜÿý¸âŠ+Ócæ3ŸÁUW]µ¿[mµÕ¿¼”ðé`Fæ²'³ÿýå6ý³® t†²ïs˜Æ79rž$r n¾©@œÀT`yóìYè䎞M¤vEמƒ43×MaDI¦¶”ïeÔá#×ý¦4›1Cx¾‘’ñØö´5ÀoM{ÝÈCN-¹äÎèÌ ¶}£’Rcdö3¹£å÷/úl ‘¤)ÉÝf)ëòÿcP<‡g3Õ¡)õ6 °a|]P¦½Å›ZÄzq‹`)G1@ñ‘ ‡§” ©=UéѵoAƒ/°IwùÔPæ{;Ùå3c&ÀrƒÊ)9OXždÜÕ—ÝŸdö·Hž€,a5 DCKÓ£R!5åÌ,sH¤©ù¿@z<ài–ç  Älðá‘H`ÙÄ>‚¤DœeOïs˜3Š8‡RêˆbßoQrøc.Ð^Ð;CBî®¶Ï(/Œ*C–¿ù+à°…dSII… ùŒs%iðÙ<2ûÌç22Å%×÷íÑçæ›t¹‰‘Ðw0+hkË ù1‰ÉW ];–Zc€„ £)Ôû”ãø1*ü„ذè(®õÖÓž!±Õ/å‚l73‡Y•E|¦,ÉÁË››gô\ülˆå:[Ï ÙŽ¥Jcü¼`‚”šÇfÄù:zï0'âèh‡ÝÑQ¤Tš Ç­¶Úêq{'j,ßß³pþ¼!æ üÌ<À]wÝ…µ5‡š¿àBÒ{ ðSDv™ºX,!s«ڽÚæ&›ÂÑ  ŒDñˆAÓÉ¥ç\‚7ìâ¦È/w4ØqŸµÖ5DsÛ¢ V‹n‘h »jÌÈŒ&yÛ§:6­kkh­C{4ÖÑTI4©#‹]Â÷-’~hÛ71ÑtØÜÔ¼sOȘ¦TŽ’Jí3Ú*hÖClfX[´í§0œ°<øŒˆï%šA€2‡=|ðÑçôŸGFx ÖÜ"‚Æ0"¼íœ¾fN€¬ù¤„Û>î̤,Ρ’(WŸžè"‚"Ãß6‚ 1§Àa¯˜˜Ÿ£˜Ïhf9éç>¡iCªÒl.)Át#B0é4ð4dvöÈæf‰M S4´³ÃGtÜfçb ŽFœäxtW¾F%˜õi±ˆ zœg#ãÛáp%0k<—ÕkóHÈ1‹Ö{n®ÃraªPë{»„!DÀ†¹†ü{lñ™ê Q™qëÚÐÚÑôƒhZ öTó”Õ#6äÖ4Îeò8?=6õ.ã8™Ý`g¸PÆ®)È4dôœÄõa{1³£Ç`¤[D%ÎóÇÈñ°Xœcµ‚Õ`,à!Ó0>3ônh­£íV쎎âÛÓ¾ÕV[=Îo†\&âhw„;?ý7¸ÿ/àÞ{ïÅÃ>„¿½óN<òðñٻŽS§NáâS§pÑÉ“8}ú4.ºè"œ9sGGG>Vˆ„bÊõ1Y€ (&ÛžPº¸iÖô~GN 4v \"·zµŽu·ÃºÖ62£Ñ­Ñ<—¹5)Æ1–ÛŒr[ûm×°®+éM®K6—ÙH´RqÒ\Îìô'yÜVRù}ÃKC†+±9î}‰m¶§RÀÍÅȶ&´^l IDAT"”eA­K‚¼ˆ¸EüWh—ŒU‹F¥”‚*\Ó¿È9§ôg›ú±Åä„ö÷±0ÏìïÈqÏÑiF¡…-;ÿ?‚ÐG™GïDp%8;:9Cç]F~Œlî#;;· eôãF03ÔëΠ}dÔû1õB4éä{òøh¢Ã&¡ÀðuƒrHâ)ë/€3Ì(úž±k>az‘†“17Ìí«edžØ¨ ?ÿÀ×9 Çìäˆ`ˆ (à1ÔáB{IŒ»Þ±;¿ îA‘=è6üÚ‚L…‹&¹G“˃f#2ÎÕ ½5¬íçÏï’«€9ü‰F=8,9È ø¹Êy;ÀoeÚ7@-~–p'–ŠZ Ï<‡?>ÉøHV†5›ÙëÖn »iû“ŠŸ€»Î‚ª]*ŠÊ`0˜£[ö{ï1˜J&CöeƒÄmµÕ㽆Äc€|ï½÷âñqöô)<ù)OA]Üøüqxxˆ«žüdœ¼è$j…”5c'—RPKüî¼à& ¡´û§ÔW\ÏþóxôÑGñž÷¼¯}ík¿û»¿‹ïû¾ïÃüÁ൯}-Ì 'OžÄ§?ýé ßk¯½wß}7~üÇög†Ë/¿ßò-ß‚ßüÍßÄ‹_üb|á _À+^ñ ´Öðö·¿×_=®¼òJÜxãX×·Ür ®¹æ<ç9ÏÁu×]3ûßýîù:Þõ®wáæ›oF­ðž÷¼ÏyÎspæÌÜyç¸÷Þ{ñîw¿Ï}îsqñÅã®»î‡?üa|û·û|W^y%¾÷{¿§NÂoüÆoàÕ¯~õ \|ñÅxá _ˆw¼ãxîsŸ 8}ú4j­xå+_‰'NàöÛodzŸýl<á OÀç?ÿy|àø²!ÀV[mµÕãªIçèwŽBÛ@)@ɼoF±ícsw_#4)Ó Îh- ÷±ÕÎÇeñÈ)÷ÈL§}f2ƒà)§-–[yIÀ I4\ÏYŠ$à+žW­ ÷ž^,µ¢.KJó:Õ¬ƒ)ü̇z€ÞÑVEëŠ).I7—")Ϙ©\†LðkK8V_Ö¶¢åÖ®Öq1í}Ï `Y*¤0ÄP9ñÑélÎFDuzEÒ‡«Ñªu¨Õ½g9=ã£aj]ÇÓ¢HA)AvæÐÑ­Á`'  ðŸA™Ã€á)Mú؇únX‚ÑÔZØzÀé|¼Rr’RsóîpãéiÍР諃3ŠS^1`%%üƒ!p,'È­49WÈôR‡aÈâ‘ÒeMC|ï!f Ñ£ÙÐÙÞ3Oˆå†ºÃ,An=ΛhÒˆ6Îù¤Í‡wÛÒ* 9,`ԖÚU8ö0Töê‡AÆwLu‚iGSžÑeh”¤³x˜µuôÁ(¶€œàd`p6È%À­ B±€C)(5Î¥˜ )ýÙs䨧ç[çnô± ¦9æu ΂\Çg)hÌDo@×xŽBUA­Á pk9d±¸vàáÇÏBÌE ¨ì #…ºaæÚTäÀvd`1Ho31‚(6òš„x!B-à“'OœÀÁ¡`eùoø·Új«¯M³ýØï‚¶’ª.àIOz"~ýù͈XUƒ«47­tž‘»£#üíç>‡xýW¸ãå¯xÅl"`µõŸíç»ãܹss[}îܹŒâytþÝ?&§'"œ>}ƒœ={=ôZkøð‡?Œ~ô£³ñ€“'OâÌ™3h­á¡‡áäÉ“8{ö,v»ÝÏyîܹ žë‘GÁ©S§pöìY<ðÀ¸ï¾ûpîÜ9¼ë]ïŠÏÔì‚æˆMý™3g÷Ýw~û·îŽÖ®¿þz\vÙeøŽïø|ä#Áë^÷ºùžÎž=;Ÿóâ‹/ÆÙ³gçæ~«­¶ÚêqÛœ“CŠA(ú²J656@Vî¸@µB-I#VI$hîE3Ü5ä·ª#¨,V†âåá}6Mò;àåÿeïí~m;¯2ÏgŒñ¾sí}ŽÏ9ñÇ9vâØù²ˆ $Á ¨€¤ªD+QE¨%¸AÜ!DßöE«ú¢¯û@¨%>”¢S)U§Âîºh ¡F–I)Rçñãøëì5ßwŒÑc¼ï\'6…âNU°jŽÈ±Ï>{¯½Ö\s­5ÇÏó{ÀlPŽjH¥K4¦Ó, i[³ˆ>ca˜ Zçð„ƒp8T,g (ý¯k[Q›DÓ"5¶tNè-2²ÍÒ]k<.I²öh ÌuËÝæ2²äB ^8¥ò ½Å÷ÖºÄ$°m‘ݰÔJwÀznÄSâ|"Å P]äRGîrH¹GäYk !Ϝ🗛am‚Þcsžä’¾êeuó”àûð¨ Êc#ãÃÜ`LO‰{æg{W>üd÷ô\K`È·O7Ø‚ st;­ÄPijYîšM.,e猥B!½Wõ¾ôÕYÂè˜bØ "¨Å2/Ü‚8OB1(ag$’Ï%À0$Þ†êóxÓ‰¯9šêÜp#U/¶ÍÓι¢v¶ô‚¤ Üàh÷ RËÍ~q#€½'ˆ0#Ço÷´x  „ñìþ»‘) /éíÍ(1 Ôxƒ¥Ã•` T.¥Îó1†I©·ä7À O •ȯDV=q@“¤¨gdܱMŽDpÚÚp¼ÙÐSÞÐÈž†Þ k_a KÁH2ò÷R™\ - ïd|œåóu±Ó7IÚ'„Ò"ÂJp/(E&–@ìµ×^¯õ¾Þ&™âùçžÇÿóéOãâxÄÓOëÍ <óô3X{Ç7Ÿz Ç‹ |ýë_‡¶†ë7®ãÞ{߈ûï¿7nÜÀmWn»åvÏåüUAâNë©§žÂ7ÂþsÒ€ÿ>ýÚˆ€=ýó+5ú£Ì øÀð?±r_úÒ—ðì³ÏÞrÛßy›ßyÿ©¿VUüò/ÿ2®^½Š‹‹ ¼ôÒKçÏ”Rðk¿ök³Y¿råÊT6œÍfü»¹{íµ×^¯­ˆ4븦.çgÑ–"¨5€VÌ’ êèh(T µä&’ç´©£›Ì t$RÅG`)‰=Ç5#¢råF`#÷ô;sÊíÓC]ò{‡Ö˜k\°»Gƒ?®Ò½€¡Aç X`Hóâ=àPÊ4=²uIbxf” «+  ?ÉEwNåwÙ ³COi÷¹ŠaDH§Eñ w¼§·=ÝØˆÚ¨y6Áê[•å¦:šÁ®qQÁðyl±É6·^PØfT PRåKK »kGgºnYа2€&‡€OàkÃoÞ°öÐŒe) ”´Øæ@WEï)ïÇ”1£`ô¾þ”‚3ÚR¡v"+ÖÖ³A_Ѻ¬ð2•ðý‹¤z€@â R8"@©ÑàÚܼ{zćÒÀRön ‹¡ ˜AÞrfžKW‡Q4}à”ɃS9³AÁNƳØYløihMzÚ RíÑv#'~Üqäø’åY: ~c¨F¡@é€pqÄÄYb ˆÍP*8Ô5 þ˜öÊô‚àK(´u¬=¸ Ž8#s{ª¸??ì2šç¯v@{)y fÀÅÅ...Ð{Ïh¼Cl篵ÑÖ‹cGj•@9q-¨ì9èsôž~‘‹Ó²€(f$ð0î0O‹ q>ºa©KÀÁߣ5Þ^{íõ}êÎᢓâþì³ßÂÿááìü W®\Å]ׯãí¾w]¿Žk·ßŽ;n¿×ïº ·_¹Õwý•¯~×®ÞJ9oÖ^Õ]j­á±Ç›Íæ‡?üaœáÁœ_Ç;Þ³³3¼å-oÁc=wÇ£>Š÷¼ç=xì±Ç@DøÚ×¾6ßëNßóÆß}÷ÝxòÉ'ñøã._¾ŒK—.ÝÒàª*î½÷^<ñÄxì±ÇðÁ~ð–ûñÎw¾s~ÀÃ?Œ¿üË¿„»ã™gžÁë^÷:¼ûÝïÆŸÿùŸÏÇóæ7¿wÜqG 1ÎÏqÏ=÷àOþäOðÈ#à}ï{üñyyäüÙŸýÎÏÏñž÷¼ú§ŠÿñÇ#<‚Ç{ ÷Ýw~øa<ñÄs ðÐCíçõ^{íõÚmЙPª„µ„MhníL²/· ®22æd¥$cÈmàEìa§mëhjpR…\Øç¦+,Ä âŽN%‰Ï8ùÇ7¿q68b  –e¨ m±mL2x‘0[nCÜzƒkxL)ÿ§=)¶ð­®íˆõØf´3Ï­¹°ävÓÐuÅÚÖ¤RGLÕ Mw ð( ƒw¸õsËæ-ÞèãJVŸ›q ç&^¸F³ª =3£§t—2£=‡‚‚J±©TUÀ ¼,XèK)¶Í‰Í@…ÇÔÛ’®N€F:à8W¨*3dYPrÛ!Í'…rlɱ1¶£uLD;Çã±Uqǵ@’ln­ã¢­ÐuEÏæ±°@VCk‘T.ôëqœÈwG‘M¢L‚|Ø€f»¯™QpáIö¤‚ Ýà!¿Ôýô޳9Lì±iDþžÄýHú¢°3d“Êc ‘[tÊøÂTË©QBêM”ê ¤Í! ˆ¦mcDýQúÓ»Xc´yÔCþínè-7Ö9@PvX è\(Úó\›yŽÛ&@2è¬pÖvãÚÒs‘pµÊFEÏ×êŒ;Ô SRêÍ Ž°Ñˆ ³Ùë|LÚ«¬ Âü¸¦ª zH¶ÈLa•©†)\ÀT“ °ÂÁ§(™à'Ì߬”Ñ€ÄIŸùxLB²ó؀݂¾×^¯ñ+!€µdD'ð†{ïÅÿ/þ\¹í TÒÍðÔ×¾Žo>ýM|æ3ŸÁ·ž~O~å+øÆ×¿†/þíñü /àÚµkøÿî7ðøàwôÿßýÀîcûX 'ÝqÏ=÷àòåË€G}_øÂ?ð?€Z+}ôQüíßþ- ÖŠ|àøÜç>"Â}÷݇k×®MYøüÈàüüÌŒŸÿùŸÇí·ßŽþáÆ3Ï<"Â[ßúV¼ð èùYPkÅG>ò\¿~ïz×»ðì³ÏÎßyz?D6«Ï;ßùN\¾|ëºâþûïÇwÞ‰;.]Bk —/_ÆÞð†ùýgggø±û1|ùË_Ʋ,xôÑGñ7ó7pwÜ}÷ݸzõ*î»ï¾ ›{øá‡oyœ×®]Ã7p~~Žãñˆóós¼ñoÜÏë½öÚëµü±„"i›uE)²N&énw„]Aªè d ¸‚ %¼Öœ-Göå £ êæIJt2³ Ä6RrËë5†pxŠ‘û;ïŠÕj’ò܈fb Ü"«œ,;¬úªðþS7¡f#xkSB­–2ðìÓ Òˆ:[׎®ÇÌjŽ/\aÑ_Õ œn#'5šK&J—k|<‡??²¢MSž, u‡6› ‘©Ãqs±‰ ú;{«.Ö#Tµt,KÁª —æPÀ7b6!lô3C&ÜŒº¡KnúÇjv&q…DxD¾©‰þº­õˆÇ+4…ö8F;÷%¦L7Þäìª8®†ã±£w‡öç6CŸqb /›bŸfW@áyßxRÀY… R•#.ËðlD”`3zçÚx4[Ú)2Ée@ ·%Î厌»KÀžH6Û£moœöA××´ó\`èÜôí¸Zd§1ŸÄvåó©Ã‚ÁiÓ¨eö…n4ór=ÕÀ–×k¯…®ŽuU3…;Zí×ç°‡@…gÃ[8˜ùÐuŸ˜ÄÓ °PæÈW0qúègn Œ2ÆJ°@#@*uPÉ #7”CÅ9ÎQ0G­9„,Ÿ  QtnCŠArwDËNen½a@< Aß÷TnøTl@Àm‚Iy>”"µÔüÁàÚæpk¯½öz­_Åô?|öoðþÉ¿ÁSO=…¯õ«øò¿„'Ÿ|wÜyî¿ÿ~Ü~Ǹ÷÷áÎ;ïÀ;~ðxàpÇw –ŠÛo¿}‚^ „ÂåUQÜG3úµ, Þþö·ßòµÃáð²¯}çŸxàÀwÞùŠ_;ýúm·m2}"Âý÷߸~ý:®_¿þwÞWú}§õ¦7½éïüþË—/ãÁœ~ÛÛÞöwÓ¼ôÓï÷s¯½öÚëµ_ –I¦Žr¶\„20edZïh=›"Ó€±¥/3äíže Z9øÖúˆ‚{Ù̹Ś”gÎ ühgÍ;´ÅV¯k™Â×€WKPÒIÐWGÃ1bÒ´gƒk°æèG ~‰H3¤?©âšÍ@@%0E7E_cœ.T†–®Šf†ÖŒ¶Ë¨RQ¥bI?klî¢ïÚ"ž!so«áp¶ HÁ1©ø1ð ¨;L뺢7…”¸-©qL».ÖŽÞ;Z_ •Q˜aäÐSsƒÃIÐÓ{̽ÃÑÁ¥€pqÑ×ÃeP‡Ì{¥ô¬;Á”°6ƒ6Ýœâžb @8o¢µ¾V©` ©y­1øÐµ¡5Ãñ¨°Pa”ºÌÎylª£9bœŸ3‡ä Œ-§ ŠÀ‰@ÞÀdñ&XJM¾Ã©Ïø:5D?F‘e¥ŒÜóù6#tS0Yæ:ÊÂB,¹¡Áb£n=<⤑sxÇÁÉ>¤hI ¤Ûö7üõ©’Є–‘ .Ѻªõ´Gðô¢Á€XkÅáp "ÑZ‹s¥õ>•47ñc°ô–2oS!íþ”îþÎdC;€~µl$v3º¢œáÒ¥ó)ýÖú¥°œ‡E„Ö Gkqû$¨uÁRh­ãfï!sw‹üáXQ%ƒ¡Ã<²Ï—óŠK|žI Á7ž~1Á ÅŠ©Ãò¶à+´g”8ìÅÑ]aífÆGú6Øðˆ—KµþÉU»O%@)Œóósœã<Ž?BI²×^{½¶Ëê ã´tQØ\ÞþàÛñ¡ÿcÜu×]xÛƒoŸƒo& ;ÐÎd0*Ùµ¿ª ú^{íµ×^ÿ5×€pÇRº´UsK™Z¦)†¶Á=bÈ.z›v&Ž:ÇVKÒw;äÃ4½µ5?¸ b£ÉAs¦!%… plS ©ƒ{DW©‰‹ëwô®Óƒ.ÌèÕ°tÀ+fŽ·ª£wß6bÎqàN!ûí!UîÇujì#<"ÀØ9£»2ëƒUŸ`1Þ³ƒîè«”¡¥Ãp¶n Ú ¥pçlânÕÜNzÊliA‘„°@d‰èªîðÚÁk˜”Yµ$`ž‡·èé.”Äî$|cŠ¡TÖ(ˆÚmË?[X–ÎÁ ,Û1¥úIÂdž{°®¹mç9+¨RR'¡`°¡1¤AM^¹Û÷ê‹Ù¥ynqrHÓ°fë‹fOsë’ñ"‚ÃùŠÔðä«AMò—’BA*EL^a”’#'Ú t˜ùë9Ôð‘2@›Ý Y1ôÀÖˆv‡CÁî a,e™tÛ Œ 8·ŒûDâu¥ª¹uá P\à¢óÜ”›nOÏø¥3DZ¬gÿŠØD‡¢`l‘=¥öñ³R †\Ucf†^x>sÏ×TH0ˆÁ´ÂЛb][J ̙ഡ°H0aò.Ô6+rÈÏUÆàÞ£ŠÖtkÂid©{ÊøãèqIDú`ˆÐ̰§WµÛk¯½þÁí*ÖHã}þÁw<„‡~ð§ ¶ÁÖâm<_ù¼¹o؇'¿9\¥=†q¯½öÚk¯ÿd+þò23\T”‹›=}ÄÈæÂRÊ€2Ç€Ái—Í#v,ÿ1HJ^tŠÍ8i.óÜÜy¹Íέ©dæ7åå/<¶_#­å6R¬.Ù¸…w¶«¦Ï=jÏììÁ/ ™yzå‰SñÎÊȰÞóÛ³hþ"~t² g†*€5ýÀÄ æŠ-¯º¡õ »¯­Ãº )Wo Ñ”&+ÜV†× Pg˜3تéQg@-åâ”t 5˼瘸„Ç· pÒ†”wÀ̆§ßYÂ&Gg6†>·š'£€9""¥ž¡”‚®ƒ‚¸ráÔý1 €g£þçãªè«fž6%'Cƒ˜Í‚Ž ¶ä ÉtÞV0€Þ‘2÷-fÍ2–̾bø-RË3·–\â8ÅítGoшÖHÐ X ¯:KúÇ9dñHºûذ1|ÖHë>ñ˜Ú„-p&8üNHÀT£§¤ˆ¥ [y¾^L·išs KF„ÞðÎC ¯QÊáyÈø™R D€º´Åydš2{2Åy[($Ü,C)¡|~óüp n@æ‚wÕܤN½ª[ýÖ yq+¥¢”k3´µÅý.‚Ç„ ™-o©$ˆá ÓZ>§‘ÞàØ^Ó˜üeA¶¡ ¤%7éFh¦ÁÕ Êlö ý“ÄPp€ ÇEø`;Ç‹# sáCÏd¦—¿Óî ³½öú‡uµó÷ýHi±(Ÿ9¦p§ î9ˆ™ù÷œŸÁžl›1˜>7é'ᘯª^zé%üÛûoñ®w½ ÷ÝwÌ üÇ wÇ»ßýn¼þõ¯<÷ÜsxòÉ'_Fûüç?Ë—/ãÆX×O<ñî¼óN|ö³ŸQjƒÞ¾×^{íµ×÷¶÷l»F=>cDkìïüÙP`Rik^]Rzê' §¤$Slòf_"A†¸ed‘F¹ž÷œ$ ŠzÒ“’½ê dŽ5Í]záG?<¶‘é(F‡$´Á!…F±Å„oà5µÑÜdÿ`qtœô긡øur¸2àežÃ³©‰-}áayœlrÚ@R£!sGï-¢ Z<1²&t„ç¾7EWƒ”Ž"ñ¡`ÈEÓë SBË;¾Žk䪊0–®zHüÛ ´ºÜ ˜B n©7„ ˜¨„|YRþ¯Š>š0ubH€ôË êŸ‹ p…Ð{Çzѱ¦ü½¨Î‹7‡æÂѺ£¯Š›7Ð~µ„¾•°!”*¨…!EPK6úyîu5ôÞÐÖÂ4 !S \cCÞ[xç¸, GW&‚R(R¢Ñ‚¡ƒiÇZ<·ÄÄ„²„#"‘^æÃaDÌ ÌBJ×SVïù¢#N^Iäl >PZ§hêÍ"¦nn–9äïf:£™=ª™¶P ¼ S4/,u@³™%Þ¤êžy¿­úÚ‚¤î=rÐK€«GÌY¼FµºõÈXïAP§|? {ƒ¦ç|øùCÏ¡šÃZˆœ Îa 2‰!¡””Íö·Iœp>o4Éû> áãh6ÙѬ]Þ%"#‰,àrEòÜ«¹Ë8ÂI$N6ÀȘ÷¶MNÿÞïµ×?¨æÜñÝÁ¾2Æ òâ܉à¥o7mn`ðÀ^Äð:߇ÇìÖ@X½½ªªâSŸúÞûÞ÷âöÛoüþïÿ>Þ÷¾÷™ññ8;;Ã¥K—ð;¿ó;xÓ›Þô²ý‹_ü"nܸëׯãŸø~ê§~ ŸùÌgpéÒ%Üwß}¸yó&{ì1üÌÏüÌ~Þìµ×^{}‹òrF`û–„äyÝJFÓ:õJ?/Ùß»v‘:r¢Ëޱ•Ë‹nSC—ðßbp•Üj m¥ÈïM¡ˆX1 ¾Z –…ÑÝ`kúÂÝÁêð¨Å$·SÂ@ µô&w‚RF²¡X¢ÑGlЉ$~ jÆ–Ù ƒîŒhvœÂ¢Ì´ÉÕE :½ôƒØ®™ßNF³Y2†BzêGo ]óq‹€;Ák™¹ rå½SÄT€ JæE‹ð”w·5<ìž²[Ó¥D6}ëzk–t àKòò6z‹M~ 1"æØ;´Eô•{?‘ˆÏs8\Ã×,"8C@=|ÍÁó‹6æ —Œî²Éo*âX–3¸VR MåÖÚ ÆXbUw¤€1èû2s´Ï¤¢ÖD*BÑÑÑš¢­G¨i6è©’ʇŒŸs‡vGëq!cøÄ0)Ì%¯±n±…6K"|¾ÈL{,ÏK\¼Yª †Dm£øÃ#®PئÔs½¢®é%=7Ú-†Y@¸²H¼ÖzŸà¡QEr«Sbp0@u]×søäQ›dá;agtU{‡ï- #MY·Ýsè9çn!$êRgãÌ\røƒ# ˜ "qÿÇ6É,õ RJÚaâ<+µ¤º§¤¬g–ü.xFýqÉ$„¼í~ÂPHoÚC-“c>–¤"‚`‰á¢र´ðÀ-Z#c~ƒ`ÖÐí´ãúòþ`¯½öú>õçßíÒšê5ón¶ÿñ¯?‹ç¾ým|ó©§ðäW¾‚óóKøéo~ó›gÊŒ#â7=Ù–PTL®a¡ ¼ ™ûoýÖoá~ápùòåIHÿÈG>‚K—.AUñéO­5|èCÂç>÷¹—?¬´Mýöoÿ6>úÑâÊ•+ø«¿ú+Üu×]xã߈gŸ}O<ñÄ~Òìµ×^{}ÛsuÇow<ùÌ‹óúv”ÁóZ3–<7n_`Ê8TÆóù=,@9“we)g'rÝ[Ñ&CN Ym6ž"’¼¹¸M IDAT¼Žˆç˜t››ìð½êôãÆ÷ à‘lÛk·¤GSÀ±ˆ9àk%³ÕÝÁ½€JP@Ô‘IPÑ,&xŽXrà Z¬¨%wã™Q¤W5·sSÆs›F ~ {…0£™ÀúS@îÛO¹KlYPH uð!ž>V÷h†OÖ3û”øqÜ;´3@ @Ï0€’VÉABKïrûXx–ûê8®í=WÊŠµ‡Œ¢­:Áš±iCÉ@ôì"\bÅðì1•ØÀf Ž'ßCêÎ$àRpæ‚RÎpÖs»>%ò'Ã@”™G:' ß,Ÿ#Œ½RÔzÀá°€À05¬Ò"§ZÆ’çƒ;  ØR›¡5…jøé‡ô]»FƒœYê$„jWA)†>às® F¸ žKçzlâcÐÑáf XšÐ<æ-vlÊà%$Ü-agD„Zh-ŽÈs3§'™“…çD*= Í3¼$Ä.“ÈB ­T …2¤ü1×Ê-qlÃ¥ ¥ aƒ‹Û*«ƒýñjª¡`Xê‚z¨É °›ÄqƒÁRb#2†…ƒÌŽù„æ ,k¥“<óø=z2ØÞ23P"çžápkhZŸB„-*Q# âö4Gñü­ýës·×^{½–¯§âýÕøú“Oâúÿ#î¼ë.œ_º„ßþ6Î`æ[R<Ód9=çc@06òäŽf†WÔ/þ=õì³Ïâw÷wafxï{ß‹Gy—.]Â7¾ñ |üãÇûßÿþI^???¿å~bf|üãÇoüÆoàÊ•+ókø‡ˆÇW®\™ñk{íµ×^{}ïêþï'ñÁwÝw.¯ü@[<ö‹ÇŽo¿pÄ]×*¾ù´ÍžûP²§„ H=,³“-äÄÎ4¤]‚¦Ö˘¶ÍrJYÍrK©ž΀£†O•´eîhǸ°õÜ·Ü9äíH —§Äã¤ÔT猺@Ä&Ä-ò¬£É ¼ØVâD:yøÌáènè«…?<¯äLfÙl"æ:}©±+^Pj´F(ä ÆšKBbº5ÈÚ,Œ… d©¨µfSØÀ^ÀTàLSŽ,´„/Ùk6çxP¾—²Ä-ÀVKMhEì—&<­–L‡ð§kÀÙÖcC[;Zë8;œA¤Äv²ÄE‰•5¥}ÊØ9JæžêR#®MÕBNNV,#Ø8¤ìÚ¡=<öÄ·Uµ,XJ€Á†öŽÖ;´¯P×-† Á7èsc9”Šõ¸¢Ö›8.9bîZ︸yª-)¼‚c‰óH-HßÍ2§’K↦ŠÞZ6èäæÃy5ha¬=¢¿ÔÇF¹'<ðÄÃá€uF³I5U¨µŒ4ÄL^g4 l­¯Y4á:xùuª'èÏ#‡d   &©N¿~F©2™²RÍ÷¡ñš7Ï÷÷·ôf”Ÿ;e”Ú82K‡%, /$èˆó3Ÿ~{KîA dèdø‘J" [E‡¾â…ñ^{íõÚ*—§¸0ºï7áýWÿ2•n„ãzÄsß~·]¾´½ÞLwD›¦ÂjlÑÓY[öWqj­øÕ_ýUÀ'?ùI|ík_ý÷Þ‹7nà×ý×ñðxàn‰{¥zàð…/|wÜqGÌõÍðs?÷sxË[Þ‚çž{Ÿüä'ñK¿ôKû °×^{íõ=¬ôðíø¿>óM¼tìÐ;î[sŒHKºûös¼ûnçÿâxëU=–œC-Ür•ÉU®±ÙΦ™fdAÈ͵ÅϘ)z µ42¹ 7h ï»»¡ëŠÞm¾,Ëi¬èJ9÷ÙÏâ¥_Dk oxãñÑþÏñÐ;ÊÏnœH׃=B©¶óÜ<9^|îÅWey±Wˆo|üñÇñÓ?ýÓóZk^ÄM¥ÝËoã'ò'ñ /ÌŸÝŠ{íµ×^ÿÙG¾¸íÒ9>ø®Ëxá"R°Ô ÚüØÈï½ïº€é%tÝÞŸ‰"„Rµ ÊóÏ¿¾èh\‡—v^æR4!¤„Ny?/t£‰4 )y†(*›Ühì9¶gjAnöð(‡ü]Sf67ñMÑ­Ã5ié™måùÐÆ¥ˆ€Yg–³›<­÷ ¯B’ÃÏmè_4teÞœÎæ&šá"R$hèîÀºN"ºÁP¤¢.%@1]@§sãWèHÙ1õ÷¶¡Nbàt…ö¸ßcs BD¢11œCN¹ÑíI²·Ì¼&Џ0UÀ¬ãxqı­qŸÔÐ׎•µTÓÜ4nÞ±•w»ŽU$6é4rëkxô[ëh½Å÷)~rCo Äá1o‡™ôÉ0Ðág=m!£'¦Ž-SLÂ|‚UÔâ˜UkÓ£g®Ãº %ÛˆÂó)£'bÔ%bó¸Ò)S†ò± AI|ïŠu]¶Œ ‹X´*%c£Q¥‰ž½÷0‰ÌX0j­X–˜äG@ïéÛÏ×I9 ÖCü7¨—zuŽ|û|˜ââ$9üT`d3½ ˜U à[28iô&ö±á7ó7afø¡ú!Ü}÷Ýh­Í¯=üðøóÎ;qqqO|âxñÅñÐCáÍo~óÉÃrôÞñ£?ú£øÜç>‡?ú£?ÂÙÙ>õ©Oáüü—.]ÂÏþìÏîÏÿ^{íµ×÷üc…ñ•o*1.ДReJè™Ö4RÃÖUñÀ݆µÄ…P0ĽbyñÅçäuÄ=Å5näsúTµ)ÖÜ®Iü„¥¹m[|¦Ž)ËGV³Àޤ‹È¯ˆ 32ÐÈ3ÉFk6 €ƒ¦W™·“áë=»y6çsSç™Ï=r¹‘[³,!(¢Ù·xh7ƒ)MƒY,=½Æ'…£·•h:ƒ–p°ÄÖ[(T2µ¶|6ü׆µTW¨Fƒ/倅”[L7„ZÁ¢™_›eÌ ©ª6׸O!0ÂpõžžÿÈá&œÐkÞæS@X7ÍM>C5ÈJKˆ³+«ÁUÑz ºíˆª’¡ªP´~ŒÆ „¦mª,q‚P!ed‰œ“¬ŸHÀhª¸y¼+@‘)$·Ì,RÖF P£ˆ,h²/Ê8+«ñ˜<£ü˜$6Òÿ†½u´ƒàxŒÍùù%Ô¥„ó›86ILÃF¡G´¥G¡šÀÅH=€GÞ½æñPSˆ¸lC¬ÔÄШ[¨JÌ;!§¸RF\٘鴧0aª@ºYܰ6FÜaÆ×s6§Iu¹5²PFd=(8pœÇ–µn° ¦P#ÔÌ !H)8äëÍR&Έ,˂ò@ÝÑÛšû´ B­g8,‡8—“1`ƒ1 á¿úØžâ»L´(QBèx™‰3æý~äG8¶ ë=½ "Õ^{íõ©â} ­-.Ývþéó³SA7Æ€DÈÏÄ›¢ I;ðÕ'ŸÄ Ï=‡Ïþ xñùçñÌÓOã…^ÀÕ+WðÈ#„2軨ûï¿¿ø‹¿X–"‚7½éM/ûZ)¿ò+¿2¿vZøÀæçÒ[ÞòÜwß}¼ï}ï›_?;;ÛO€½öÚk¯ïuƒàæME¹Ì'–¨H #DóG‹®fЗކc?Qª‡œCÓåp¨MÛsÌXb£(5<ÖR ½ÁUmó­~Ïh†ôT$b˜Š”„3mk½[æ[-ÎdaP!ÕP»NÙü\u!®»§çœhk hnÖÑÁÚ¾I‰\pöó¸×¹Ém›°ØÜwtSH^À¢zx€=(ñÌ!»VK¥M¸ÔÚ2j ÙI3:*Öˆ<›`«|:Ç6<ë Ø€e…á°,(¥À<åù®°ÞщÀEsÛ'8,KÒßzÞa=ÜEDí ®S%cØ|lô#çÛ PkáÿÕØLK Z7“`© .]:G)/,/âæÍ›h­Bj4½®Qcéa€®°) ¯v¶UB` ƒ6›\PlíÝçGA7Þ~aT®ì·ð½k·yá‚ ‚:@%£ìÒ³ÏÄ(…*1 ±”8'\pd/Ù‚KcØ“kƒ©¯¼|3u=Aq½ûü·©AHÑ¥EÌšÚ´ ¬mÅÅz„«…°êÍÂb=2ÓGÔYx§5_a9)RPkÄÓ3š:šÌ '‘fF} p<ãÏN£áˆb`Å<3#f,Ôîjžg-„•^µòÜÞ˜y¾î+êçD×ðû‡e…a^äúH [6Ç1DXilØÇy<"ÏÆ{BXPzÚ ¶˜Æ‰6pƒiƒ[ƆÜÑ: Føüß~ wÞq‡º „/}é ¸qã,5”O½{ö'ŸcÙ€RꈎN;©Ë§òŒC«•§´—˜N.T}z¯Ý<ó§²ßÌI ö 1Ã|np•KØ[RÞ'>©ðôåJÂü2ÓÜ(‡½”PÅr@4 32*iîÈmd*›¡e#]èÖÍ|üŒ½ŠÖ::!X˜ñYam%X!¨!ràÓKî¦(ç –² , ö [ä6sM¯¶£Ö”“D“MÑt s¨6¨D야·¶ñ(Õ*±Ƙ[1ed^ÔÊ©šˆ!Ûl‚{C·-w\J(1Š$—A¬³‚ž¯%&Î÷Š¥žm9ñ:6Ù1ô‰ uEk Ú[Â%ý5cãžÜc …€ö86žÖaÎ-»dS~ú€ÒeÅ@@¸äÐ+Èóãù];ÁÜ ¯.%7J´½geÎ1òç)¹Ï7SÊ×aà ¯ä/Ý9L{íõýkοË×_ÈÇïÀ_î?à?þ»‡u=B˜qõêU¼á®ë¸rå ®\¹‚«W¯âòåË89ä—ùÏÞˆïµ×^{íuZ]ÿ÷ó_ÄÿöÉ…{îy=~î#ÿ Á—¿òEü›?þ׸q÷=ø'ÿä#@ÚpýÖ\àéÒ$J×ãlÏ#XÝ¡ˆFÂéX=c—i^¤ŸzpÍËl>o;RŽM9ÅöklÀ¦|lü8·£˜4ön9ôöe©8á•Mɼu08J˜ÜÆ ÇvþÂÔƒ–ÍI|>Û© gA¥¤JÑí6r¯)3ÉU3^=`VÔí®†Þ:Ð;ŽGAiÇh„A"Û•ÅÖ…P‹D´›¬Å@ÂÂç –¥¢Ö%›³¤aw…jÃÚ0Ngã&RðVÃ7íÖ`-"Т!JCæÜ³pú¶³YÁT`¤Ð"Ð~Œ¦÷ž²ñl² Þbs¯^ H†h<ó¦ÂS;m'qk”ϧI²€ÝòɶsL-Få6†î–çe$YL‰F^öðx›‡D^óö™6XX!+ù-êkÜ—€e9¡š¯§È'Ç1‹çhxÉynb`“/î|á»­­ ?w Ù¶éŒfÔR ER1ÎÁ8ÿÆ©pXFŠ0Œž9솘¡kPòÝÚýä½Â_v1혜(2rN˜!¥b©¥,0uTu¬ÇŠ•>~&†Â5-#”QiSy³âP+jM[KŒÞ´E¨]f›sóâ=‚Rç¡ó9Ùè{íµ×k»®^» ½í­¸÷ž»Á̳ºÜb£Ûk¯½öÚk¯¿¯Ì wÜyî¾ûüûÏþ5^ºyúÐ?ÆþÿÏ?÷ýÉŸ1Ï^èeý9EŸ¬0ÓžŽrœ,Ä~’‡>ó…ÀCN£AÏëm;!¡ @[µRoÏq!®!g Ú¸¥/A}–ô¿ºÃºcíÑ8µ””WT+´÷øeOùI–qÜï>‡e)(Åq\W\ܼÛb¡ÜDo8UÂÁ ¬$/âã…KBÉ‚Z>½Û00yÀ¬Œ³Á(éO²¯è* qC&TÐÜÀ¥C\€>úБž €YÑèűc]{4˜r\M4;XËiŒƒ+ÍFù}ú‚Kf¤Ç¦8¶ÜÄ‚Zc›Kg5^æ)sŽ“1%ÓBpØØj3 åF×AîPÊ-'$Í&”h¥ .9l!Ô.=ß“ß|Õ£;uÊ9JlŠÍƒ–_À\˜+Jqt5° HÚãw•“¼Û!1‰ß‡Qpöù: €|ò8m¥D¨@â OEÈiÒ6'©l:Ú3ÌͳÁ¶­¡'LÉ9eŒá|iŽ&º%?\[Gk D 7K¸¼BÙB~ž¿È3|( q™:{°Rqa=Ï»y1Kɶv˜hð))£±‹r 2<áÂñ*Î }­Ôƒs`°á4—qwóvÉQª@d‰èŠÃ8v×°Z¨¶³¨ˆd N3ÆH5 d¬ß^{íõš.fÆë^÷:\»vmoÂ÷Úk¯½öúÿ]ª„Ëççøè?û(~ï㿇/åËøÝßûm´Öðáú¼å­æ5ø¼rYGÌ)G[E Ù¬k€Æ²I0½µA'$‡Š6Ó¸‡ÅöÓN~ÝhDDgµ¸ýä¿Å¶(¥¢ºÎmeKjüztôÔJ(’1SÖA‚¥S«Ô”¥öžQXI²®=}‡DÂL"¶ ä#ˆ24—ë¹gÞI³Ýå”Åš…Á gØYÅYïè=2ÁGd]/ÊŒå+Ç–vxõ‡6Zg3¤IäŽi¡@}£æ›;´køªá(•f$³ Örà WPz¸ãùÊè+b”$õ‹”é6Õ†—‚*eRÀA|k_œÒoõØ íb<¦¨3{6³5£®&"ª¾yÿOýá£W›¶„ˆ‡ ß<™ÃÇëš ±Ï|a¢[;þñ÷# }xJÇÅ5§ä”3ºÈ<äëã{Œ®Ô÷ŸÖL¡ßÔ5àfK _­d6·dF8€”lZkè½Í­ærX°,ÂŽRž{1+ ö­Yž4÷Q"™O'qü 2eÚ3/9½ãžÍ³%üʰAÅBŠ?äs§ÛÏh]WŒ êXþ„šQL #B-iäƒ|M „ím÷‰ÓcÎ56¾n6û.± ¯RA%6Ð=›$Ÿ|rE©iÈì©!#Gn¹Ù|kª&C€f Íã”ç 9¬[fÚŒÀb¶yÁp¶æ ÑFvwO¨¡N@X<×áßçžþˆã²Éå6Í?ÍF;†5,[œÎ ŒFÑLcËê‘»íŒh&)‡V –SÏ-rúÙP–ôF‡Zpé|IÛÅðÀ‚*O08ól,c[k9ìH˜œqqôpa‰¡‰ \feð'¹U”dvÎ&<îøÜråźäÆW2šsC;|ºñ@¶8±Ù0§6ZÍ‚*VmÐ5ó­™P–Ø“ Ù ÓÜÎinGÌ߲ɆǢù¥­YŸÍyN<$ÉÓH(Y ÷ ‰Þ§`“P;bÃî¦0È\ƒXNqȈüi4fäÜf9 ©·Ê8¡” MSæQ;E¼šPÆ‘P¶ÜÐ'íŽF†’åAÑÖ™ï3†kªÎ³á›“‡[Ÿõ9¤é–ЯžR{)ôøÆˆ´‹ïÝ 9ãf=}ä–Ma½0¦P@x4YÑ¿%ønlÓÇaƹ剆d|<_I†ÇÊgž¡;(°üÑÞö¡¶¹¸ÐÖÍ&B‰WÞ¶el˜<îÿx>ÍÆíynß Eâ{ŠpYPxÄŽaÂx-ÆÙÆôT¿å¼ Éz¨>87ø³É¤ú”¶›áÄõ1qùüG>¸¡µm›ÎlÐî‰×«9…Û°rȯ•¡ÀèªÉ/81£DÐ:ZôXúi£ŽSȆÏxÅt’äûFœ[ŽíœKö àÓæ88¦’;+ IDAT›~2À ƒ@ïèÞw†û^{íµ×^{íµ×^ÀIGÖ4l͎ٞƒð#?úcXWEÏ„§yzKg„ŒÞT¶å°TŒÄ*JÇ¥Û¼oTp Í< ™cË­ìa7ž ,–±S¬«f_žòçôƒGD’'TŽ’,RÝÔG XnÚ|À¼*¡ ÂÅ ÆÎXKK¶VÈßÁÀ¡ ¼^‹çï¥ ëÚSŠ>HÎIs§¿Ë~µÈ4ØbKkyÒ AfÔºÉo‡o4•Ø>"§Œ† Crï¨æ°[¬ÙôÁ$lí™1=®®è)ÔŠwA•lÙ(¥”ÌM/Ólh Ö®–R`3nnƒ`žÑa¥£úð¹lûˆþ‚mÖ€‘{wꩦ“!ÆlÌ5cãNŽÿ+œ C6_ o[u‰Ç³mG}’À†Æ€·¸ïÇÞÐ[Ck n)ÑŒ,•᜞áô®3ófa C(ói~¶eŒY·ð[´ÓTW€bÃì(€qN%Ò—­=η ÈVŒˆÇwä_«¬Tãù'b”̧%‰&Œ è´B³ùç–7‘›i€¬€kÚ>xBé† ƒNèþ æPklvÇKrÂb¦s[=|÷Da¯žuJ•ŠŸ¾Æˆ %tÅÄÕxx6®£oÍD†!™á´sXÒäU¤áq3 õk=ÄTà…Q è¬7Í'›•Åcà ¶Å'áŸÀT3R1w…c)¹ëK *½ŽhªþwVx]"ë=Udü&—É£àNÆP §J$ˉâ„ó8åÀÂ4ìvÒp[0 Ô;ÔŸTÿ­ áêÙ½¬{íõ}êÎYö.}¯½öÚk¯ï[{Ž'¾ð4zÓ]xÛ}3“êå˜öüóóO=}Ä×U|ë[6û·¥J.;Šv’ìì3š)¶H~²zgIJõ !:6ȃpœ’t‹ŒÐIQaœþtOÙ®%ÁÙ0³Ì#ÒÉ'0ŠRÂÎYÈ‘ÝíÓLÄ`at"PzfcÛ'ÒáÌà–*¨,ðEá6šlÛsÕÜö¬á¹EÒÎGœ˜ZF1gœWl[’: àÂ((`gøv8Ç65)Ñp HÞäçÓÉæžÃï?¬á NÂt0òÈηÆÅåÖO*¡ä÷êhð‡ÿÛl‘¡‰®³9o½=/@§° À-}è4mcòsJÓ† r(3bƒ'™A5äÏæ 8AA€qÄãQžÜãgCˆÌGb%®Êœáð17Ïæ“¡êèNÐ÷[‰A(y?=µÕ ›*Œäþ`=p$ 3ÜëjyþæÐcŒË°)çƒmÆ3Ê0¾%)÷ ÐÛ6×¾mqó8ƒÂÏß²ÅG#L °ºôP €"o\{X$<2ߘx*D6)¿ÏÁ…jl¿ç,ˆCgpº5M»cá íѼ*ÐÈ‘ö’® J‚Þ4GƒÔh6¿]#â/Ôí’–Éé!™¥ä°T©à0!9ãu2Õ#„¹¡ÙOÆDP¾Ò8Ùœ9é¹uO¼öHGð~h l̤oÁó/)þÑ#·ão»mÿ|Úk¯ïc}é«Gì3²½öÚk¯½þK×K/v@+~ûÿžy±á¸*Z?I@:ùÞ"‚û¯Ÿãý]ÂÅÅqÛ¥Û=¸^åâ¸}¨ùwè49/t™$ŒšQc¢å6DMÆð®sFkå/25tm¹ ÅæÏµÜ>gãâ™óM¦5 Ž?#¡O"%bÉMLÀáz4#·9³Òc»m j@«@­œdî·esofÑ ƒÍ#^,ºÉ4äí[Ó£s;<|÷ À,§“mèdè¦sÑhœ1]E•RpÏãþ[žþÚ-ó=€[ãØÑP:$ô‹` „Ù¤”kÞg-´Æýìªh]§Ä׈`¬­ƒ{²RŒ1L`Ù“+4R»g+,¨µD0%ôæè-ápÃMy>Ö`ãdÙÇñRuðÚÁÅð2w ™¥l[Sfí„Þ{м£I—ØøZÊË=¤à¦g+%eX׎›7Ù¤Ñô±3229J{4†™ÎÇ“&:èöéÓN و׋ă¨uÏÄ‚r’ËŽi¯€SRØ ¤ b ’ÜR¾îƒ‚ç“ÈI·ÉC³y,Çc­\±Ñâÿ–å€Z(Ì0z7´¦TH,ËÏóJU!çC€ ½u0ÑU ¢(¥`Y*ê :n?a6æ6T ß!@ï!ÞSŒá†î[7¦]ج*rÙ{x„à Í“ džçƒDÈ_øÒÿóÿòåWZêïµ×^ÿk·™ìµ×^{íõý¨¡ Œ•äN½r5ýŽÿWÏE|wדë\ Ør!”ãqŶË­#¤À˜~k4b©FÐp4è#ŠMS.Ð1ÏMÊȎƤHÝò‚7A_ä@ _ovJÑ\¤×ÜÌ5h¤ ÜèF YHw[;ÎÆƒá…=m‘HÊt=Ã[lýmD)–yÑ:šeŽf¬P cn,_çÖ=$Öc 0⤴gCžÒhÎ&̱åvc²©xy!·–)»Õ”F‡/ÁÀÃßZ䶈™ Џ‚U¡·ëª€ë™"G‘SÀܘšbƒ"àpÝ " ùJ°Vü½Ÿ»x´åSçh4Ž‹‹#ÖU“ž6Žˆ·¨xæ„û6ˆÈ-/ÜÂóœ$÷8ò6H Róñ1ØeölÝNjĄ3= Ö¹ï "'‰OJd˜f?ìS†v kÂÍÒ:™Ù±Mg "|œ;4Ϲÿ¯½oÙ‘%Ù‘3’î‘uZ#@¿ ègõŸZh£ÝÅíÊ w’ZÝ#²NUÏ$-$ôƒÛ}º*3¤ÑjE»÷¹3Ó› z£Ö^ÑfV¿Ó31ç„ÉÄdÃà6Ù”Jy$à˜^`“Ôa[qahe5ü¨h¿š3š¬“,Jz™%×&5âe'—9àrloǦÜOˆ!œÆËÂ^4a½¡÷m’™¡¢°ÞŠ!„8 å"oM4iØþ˰q1 ȨȵR–\±¸þ"+Ý4œñ¥’—í Ḡ´â *­ àÇÌ×ç6ÔüûÏÿ“Wê7àÏßþþó÷Ÿ¿ÿüýçÿ¿£^þFòþþó¿œÀ0þWV0plÏ+.ÍC?šiN­…Kðšæ±Î Ô¯x©¹¨ÞE7M<&õ£­•VJzëž²rzβ¢÷jè1™—þ`ƒž êfON'[·rq^ÒRÝ:ìèèÚ€Œ“zæmòH¹h²©{¿œÚ£tÕšœäg<¤(Úe˜×Z™Miå¼Çåô®4›áüþtGƒéßZZýmÌWÜ]µeìÆÈ/Ë5ôååå¨-™ûÕ€U󾂴PÍìÆ“šþ¥Á_ï:ýY¹™{”ÙYMgSêyuBíFßþä˧@wô[&0æÄ9&æÓ‘Áh4ÊìŠúî"Šnœ`Z+#Á$=.ðhØvJÇ-Gœôf»e©“é æõ<(ÈõwqE“-ð‰¾+ŠK ÖðxüB¯,xêæóÚ$K›¾Ãóc½‡ŸƒYGŠBò€HƒJ/—ó$‚Ô”Û‹!PôÛ仲š¢þZK"‚,f÷ hÆM¡ºšs„t~­$ÃE‡g#\ò‚z>žÀ,fA+£¶DLuX2˜½—ˆÆŠ&#ædMÂ'¿ëJ<ÈkÒ=¦ÔßË’;Ð Âç(vÁ}Õ%®ÄD®/kÆX´Œ26¼\ßY&–LXYíܳÖ­‘…‘žEÍO¸þûûå1p;›3‘²Ì.oŠog÷-¯IV|÷÷ðÛÏ^ˆCþv'ÜåHü™)?ß!ùÛo»ÓnÿT®¿sÿï$Qßß{“ìðž:q}Ê>_Þ>£\ÒŸÌ/ŸTþª©–Í"Ê¿üþõ3òKñva–—ùéúï2ßö•¼}àûøîÝŸr¾ýùýmÿ°6v}ß× ™Ëâåý,kâK&H~ûŒîÿþöN~[Ý߯•%…Ú쳯_èß­x÷Åòå«àMÜ•¸IÒ¾¼³Ì÷Ï}KYÉ'ÿjÙ.kQ~ysßïÇ÷ç´–Ú}MߟíoÏ|Ï~ó»ðÍ'ÈÞéëÿ/O‰ï¿Ãoÿì‡=ôf–sqÈ7)B~Y|òõÉäÏÓªýïüýrÛÏø]ú/}Å/ëúëa'_ÞïíÞßÛû;¹í¹>Óÿ²I®³ï{à›g+?4?ÃùMoû—åþ]êæ«ÿ~?Hî§ðͯ—·&·A×ý”Íu6ü°ô¾l¦kßÖaþp‡ä}áü¶]Þ¿Ñ×φ¼[ÕÔç”÷ÿîí¼Í/ßK~:™ñö÷îŸ)oï]¾¼øüáÊ—­ÿG%Bù×]ì§™üvOýoöÍùÍo”ïϱûÉ—·3F¾ÙÿêvúWŸRÀd] %¬­÷]BXÜF:*¹{˜i0·š©Mñš¤wêL­)ÎHx NØ@ê욈úœª 0<áãds¤†Ö Íá“}`•Ë+Z@ÝÑÜp<:úq <0怉ÓO˜)>Ž›¯¢‘ûÎî8Ú±?'ž¯ƘÈ9™ïlÔ§K·M{eNx츷å´Þ”yâ9KûœÔ‹54µŠ‚£ñ•§_/°¦Úc8^s '›íÔÃKMœÇ˜¥±?¬áã׬7¸;^ÃñKÌ}ŸçYúljº5H/š}3:Ø—9VͲ·¡Ÿ/£¸YÔþm(׋š_Úá—#ò¬‚B`3Ú0€ Óƒ¢¨ïe´&Jc¶„cœó2'Sãý ÒpœÏæäú1UXû@7 µm ©ø¿}p•&8Öù\‡oÖ$Zv”t6/—î~ ¦Û³"Ç®s;§cZ‡†×;¬¨-(>>>vÎ|Bè\^`U–·‚Yf3Ç y‰›]ˆ”^ùö"9¹_fåŠÏ¹ŒÜAwÅÖ±YÖ’xôú=žŽyŽíµ·’ø¼rO„{#넌ƒZ¸§ðPZTv6ß+s~8רB»Q:0ª /ý¿0d ­é3Ÿý#èäÞ1:ÊDF16ZºôÌb@ŒL‡tÚE¾’)d8î»Ü±‡,RŽ©ô>c›q-}O¤7¨#ëD0¦cŒ(ý¯?G'“Åy÷iøøÏÿÿ鿺¬÷rqw¼Æ„k†£øøõ~}üB3"ñüÿüçŸç@D µëVŒŸ†ÖËwà "(Ÿˆ×kbNš÷ÑlóCÀ1ϳóäó35ôÇ][ÉudGȹ;æ ¼FÁ(‡vpÑÌ9#h”—‰ã8`­£i«ˆÅÀœÏç c D8Ô üúx´ÞIœç‰9ß‘g/Y‘~Å~ð€ûÀòt0S,–ת¡?€×xñ³Õžo½¡™Â×pGJÅjª¡Ì(5!ØV2eúÄùó„Ÿ) k}7v\‰Ö Çqìb7<0|nãT) J•~ ¼`£Aô‹è•¶ j”R•\eŽQ{€éÇc?S©›A[/ÿÁ'^s`¼NŒsl–‰©B[Û¾3œëÆ1Ò:L[¹‰Þ:ÇÛ¶¼VúH–=‡J{z@¼Æ‰çóUï±áè½·-µZ€·ûDÌÄó|᜽w½ãyžøç??‘ɳµ5Ck á}ê …³RDÚA? #UMÚȘJœ¯'^ç«ÞYÿýÇ?ðq<0æÄóõ‰óuâ'`¬/L…€h“"@SX˜šR‰H2ü” %\X±kÉ ÛÆ´ØqKÆ·˜]Y1žþÿp¨Q¬¨²bWËjÕ2Xþ"Ó1|B èL»5Ìqmæ ŒÏ[’ŠMuP²¹¤Å"3“ª'Î3Ê´Pðqx|üVQÀŽ9ã|â5æ`íej8>:zkhq¸bòæu²â‹åAÄûaæÄ<½ÌUùù{kèkÆ1ç” ™e"wãJ$ú Ùè¨Ü’—®†ýJâ;äÙ6yÏ ®fZ;ÐïZI¡×{ëÎ=V Ò¶á³}ZSØq ‹Á:÷#÷÷ÔÚÏôêÑ2f,r§¥zŽŽVfµÙ@¦Ôs‰|>Ÿ˜cðŒ3eÔ°Qθî­U›I >Ä *†ÖG? ]ƒ½Êë¬{³ÞåÚ;û™U¢PïÅJ¤C4–u”YõÂg´ê€rä%­5ȨÇŒnv¨*Yƒ^Ã2Ÿ¼šñL>’R×ú¬šò-@àw°ånv]µçºw³Xöº»jΨýé·Ä î-¹ë ÿ–ŸÅõ3CÊ´o,Ç=¸Ó$S¼†+*’Ì\­ä!‚GÅçÞûwÍøuw ’‚ÍPÎÛ^YwtÊÅ ^5òNÊDÊÇ®õ›ICšASE5E@ ¸&R'L;‘UlÞ'§IÈÄ8ãU‡D¸6x ÷ÂkA«Ae"pÔ¡¨HW„ò°9ý–«=¹à£(¬"mM]ÊF„*@ µøx‘pŠH›zm‚FB†7 ’nàM[™ÈµrA¿áÒE~žOµi5¥#/ÝH¹×š† hç¶õô¼è‚&éQRGC“V&UÍÖЩ40Sëèý€5…‡ißEkÌ{ÏœÓA_9 ŒDèDféˆ3aÎCpš¯#z§[÷NòrÖ†j`æŒ*.ÆM“çáÈd#E–©^¸Õ•š““Î3`æ,~“E7…‡¡7²J´žëf^¾ «òYƑؒ”È„}AýæŒmþÇŸ'Ѻ´yPg=Ow§¹ã ´J8Øf}S^ªtè'#aíʃnù©hÖä?˧AðxüÂãql‡{`žÃi hexTñàs`ŒÓ“ÿ^’àa ®_Sˆ8Lã·îéH8õDFâôOà|"󍂸üóOüùù$Ž6 :ªØ4E?´nU'2ò T“ºPçùÏjQnŸP¦Új=—üç“Él{î• ˜£Šf¹§ Ôê—á¥*D-æ'Å_N¤œð˜È<Ö1‹â´hêKp³µ?ë@Bì àÒ _T0¹è­õ~C‚èn²¨®Üò‹3Jý¶^çÇV¨ÑYŸE6i~^ºìÛÔ@*˼(4½µ¢ê5j¤´õe(¸ïbBQ…“À)©²Ï£eÒ§­%¢˜2«Xt7-4ÛŒ²–ÖeO#$9m”»Ã$²"ë¤bÌF±æ¤.JEÞ.É]ôU# øp®©š¾útŒs¸@ £Õôï‚Z”Üær>Ÿ¯Oð¼FÂRKÞX#h¤7¦Ó˜õΛ”¬TÐíëÇŽ¿¥k«Í+©M¾ù"+ùg–¼h1äv㣲ÏÜ^ÿ’K%­ê¨µnସÖòšº5³DƒÔóîÊñ‚ÊNNbý챞`IeŠ “¸ä²Xq¸X8gÞudÍ@ ÁÁ¨›Â¦ÀëeI.DM¸þ›Z+eîì€n’„‹é¢‹±’¶¶‡„ìÚ˜ÀKbú«תbxÉH!€²â°å&ÔVÓˆYC‡¯}SÏl½ÉªÿTè_u\pjÏᙼ'Œý»‚ïJ¤š¾Ù®wçWß2CcG}Gòžle8-¸ü­ä¿Šï~¶Ê»,@nCˆ%©X6q± ´úg@`¢áXuØÄ˜‰9¨Xˆ˜'5ç[·ej,´Ã,˜l&ÒZ5׳ ¸@ö3˜ñNjÕìŽþà…´\ÎQMðP½6Hn­õ*DØ,}>ŸœæœZïÈô=\ôšf®æY.M½ð»|~’Šní-¶~´FÐy‹H_ú)Žè¨ëgcÃéu׎–mgœ/z™ÀÚþz!ܼ y1è»l†û¯"øüFo_ŽõR_?RM ѽ\»áÅ àû™^Z=ŸEM³B;Ò¬|ø¿uOXå¢|e”ó|S#¨gìGgQc”º„d­]R[ë{²b4êÇÊ«_Úþ+_ä…¬‰¹#1Šª¸âæJ6 ý4µ4ƒÂïa­ü2&Ï3>W¯õ웑¢€L̘èÑ äÔMQÎM]SÝÐûzW¸'ýœHu¯ ¦µý ~PÇÝH“ÍgÓ=:ÔyÛyb šàû@VáËw×jâdmàèT3<ýØL Ÿ³š}~_E†é'e%Ö`½£·^Ów)cÈZgõ–®5½(x½Ášâxpº+x`Ãh?5-iMiòZIœEÜjÈΡ§ŒJAª³®”A/Š^¬†¢¡·^àä(ÅJܨåu)ï³Í'¦$! ‰BÂ_Å/ Ü5=ªXHëµG¹~çxbL/LÏ/s§p•á·¦ÌMÚŽÖ!Æ{nJZÚé¶h«J¯„"Œ÷–—¥L;X,}BLØ Ó„MÍ!«Œ´M:`€'ž|þùÄŸŸò{dò4+êfó ÓÐhn»újFÙN´Ã‘ù ǃ“~m Àq8Ü<úƒ`¹Ð›&!HO<Ç܆¡V\ñ_ø( ?‰Ç/‚õëŒ[w—. ùv•{7ÒÅ­eY&¡Z¨bf¢÷È«Ñ_쳺5 ®ØØ}åf°ÁçÖ„n=©¬)Zr‹˜øŽþ¥Îvñ}Ó‡gÕsbŽçœ{rlæxöTíõ˜óä>Ì,€±¡w'3F.CÉ%Q@M]=éA"2öôk1%¤´· F}gêa™IÜ x¤ÐPJZ —i+xßÚš0«nð ŒÉ‰êjp{7DÌ ÑŒ²ºô‹Ò{“çm/ƒô«q.PklИ¨ò5æ‰áþLr5è+MF öÌ›nøn[µänm 2ê ³F-¿*ÏŸ1Dý… ¥w&£TD1³ügJâF/ˆF™UÕîkH¸@öDà'°|LöÀ"ßDðvM<ŠÅÇó}ÝÛ—„9ËH8!A{5^ùÖa X?X¦…,w—ÍJuQþ¬×dúÍ0×ð£|Dp¥IÛkI¶±{"æ‹uÞ㿚ыi4~Y@ª‘ý`ŒÞ5«¦z:DɶQëÅ"µ2¢®AÓòácÇes*¯ÕKïŠ5d­å[†¢¦H5t¤Úå !7u`³i<3“ì˜Èò¨I²^üŠ5,å]Vçë~_¾N?:ê}Î}›™Ç»¥ªÜçÚ%µ.]¸•œÆÖ ʇ¬ÖÓ2A^ ÅŽ…¾›çZ{ú¥A÷Õ\”öÄÍÝ» Õ;ÿO‘ËB™ÊIEND®B`‚pev/doc/manual/en_us/html/figures/cygwin-warning.png0000644000175000017500000023104413034177261021612 0ustar useruser‰PNG  IHDRâÆUš iCCPICC ProfileH‰•WXSÉž[R -)¡w¤H—Þ‹€t°’¡H*ö† ®]Qq-€,*bWD°÷"*+ëbÁ†Ê›Ðõµï¾¹÷çÌ9gþsrî|3(Ú°rs³P%²ùù‚¨@fBb“ÔøGê@‰ÅæzGF†(£ï¿ËûÛÐÊ +q¬ÿ¯¢Ìá Ù ‘§p„ìlˆ€«³sùÚ¡Þ`V~®B¬*€ âbœ&Åêbœ"Å–›˜(_ˆ½ SY,A bÞÌvŒ£ æhÃçðøo…؃Îâ@übËììˆÉ›¦ü'ío1SÆb²XicXš‹DÈ~.L÷ µˆ¢Äœ !~—*ˆ’Ú`êÙÂѼ0k6K²ìÌ+?=&Hê‹%p… a£8\?)ŒÃåÇʸa°»|¢d¾E¹Y‘2{¬Š›%­3vHX=ê{=6˜´Ø“ VH¤l­÷¹ù‘1Rn8 €/ðL ‚#ä€ Àëh€ÿIg @à+™fÔ#^2ÇÏhPþ„ˆ „c~>’Y.(€ú¯cZéÓ ¤Jf $™àÄÙ¸&î»áaðé‡Œú1GW%úýˆAÄ¢Ù6d‡ðþ.¾¹0;1þhß㞺O·Ý„{ <•D‘YÍä-üÄœ &ƒn-@–] ŒÙ?jƒCÖ¸îùCî8×VøD˜‰7î ss€ÚŠÆ¸}¯åÏë‰Yÿ˜L¯`®à c‘2öËøŽYýÅ÷‡qà;ôgKl%v»€Æ.a-X#`b§°&¬;!ÆcðTÒ £«EI¸eÂ8¼Q›:›~›/?­Í’­/®—0Ÿ;;_ü1øæäÎðÒÒó™Þp7æ2ƒùlkK¦­â½]ºu¼eHöl„qù».¯—b¨Lû®cpüô÷ßuo`»¯àD'[$(êÄÛ1 P„_…ÐÀæcðþ D€fÀЧƒlÈy˜ƒ"PÖM l»À^p œçÁÐ n°/úÀK0ÞƒaAH ¡#ˆ.b„X vˆ3âø#aH’ˆ$#i!ó¥H RŠT ;‘Zä7ä8r¹„t!÷¤yƒ|F1”Šª¢Ú¨1:uF½ÑP4ަ¡yh!º ]ƒ–£Õè~´=^Ao¡ÝèKt˜<ÆÀô0+ÌóÅ"°$,` °b¬ «ÆbÍðw¾ucØ'œˆÓq&n{3ÅÙx¾_Wà{ñü,~ïÁñoA‹`Ap%i„Y„"Baááünúï‰D"ƒhBt‚ße"1ƒ8—¸š¸XOl%v{‰C$IƒdAr'EX¤|Ri i?éé:©ô‘,OÖ%Û‘ÈId>y ¹Œ¼|’|üœ<,§$g$ç*!Ç‘›#·Vn·\³Ü5¹>¹aŠ2Å„âN‰¡dPSÊ))ç()oåååõå]ä§ÈóäÉ—Ë’¿(ß#ÿ‰ªB5§úR§QEÔ5Ôj+õõ-F3¦yÑ’hù´5´ZÚÚcÚGº‚µB°Ga¡B¥BƒÂu…WŠrŠFŠÞŠ3 Ë(^SP’S2VòUb)-PªT:®tGiH™®l«¡œ­¼ZyŸò%å*$cŽÊ2•]*gTzéÝ€îKgÓ—ÒwÓÏÑûT‰ª&ªÁªª%ªT;TÕTÔ&ªÅ©ÍV«T;¡ÖÍÀÆŒ`Fc-ã0ã6ãó8íqÞã¸ãV;8îú¸êãÕ½Ô¹êÅêõê·Ô?k05ü525Ök4j<ÒÄ5Í5§hÎÒ¬Ò<§90^u¼Ûxöøâñ‡Çß×BµÌµ¢´æjíÒj×ÒÖÑÔÎÕÞ¢}F{@‡¡ã¥“¡³Qç¤N¿.]×C—§»Q÷”îL5¦73‹YÎ<ËÔÓÒ ÒéíÔëÐÖ7ÑÕ_¢_¯ÿÈ€bàlj°Ñ Í`ÐP×p²á<Ã:ÃûFrFÎFéF›.}061Ž7^aÜhüÂDÝ$ؤФÎä¡)ÍÔÓ4Ï´Úô¦ÑÌÙ,Ól›Y§9jî`žn^i~͵p´àYl³è²$XºXò-«-ïXQ­¼­ ¬ê¬z¬ÖaÖK¬­_M0œ4aý„ ¾Ù8ØdÙì¶y`«bb»Ä¶Ùö¹Û®Òî¦=Í>À~¡}“ý뉹«&Þu ;LvXáÐæðÕÑÉQàxбßÉÐ)Ùi«ÓgUçHçÕÎ].>. ]Z\>¹:ºæ»výËÍÊ-ÓmŸÛ‹I&“¸“vOêu×wg¹ïtïö`z${ìðèöÔódyV{>ñ2ðâxíñzîmæá½ßû•Àç˜Ï_Wßù¾­~˜_ _±_‡¿Š¬…ÿãý€´€º€Á@‡À¹­A„ Ð õAw‚µƒÙÁµÁƒ!N!óCΆRC£C+BŸ„™‡ š'£“C&o˜ü0Ü(œÞ"‚#6D<Š4‰Ì‹ü} qJä”Ê)Ï¢l£æE]ˆ¦GÏŒÞý>Æ'fm̃XÓXQl[œbÜ´¸Ú¸ñ~ñ¥ñÝ æ'\IÔLä%6%‘’â’ö$ MõŸºijß4‡iEÓnO7™>{ú¥š3²fœ˜©8“5óH2!9>y_òV«š5”œ²5eíËÞÌ~Éñâläôsݹ¥Üç©î©¥©/ÒÜÓ6¤õ§{¦—¥ð|y¼×AÛ3>dFdÖdŽdÅgÕg“³“³óUø™ü³9:9³sºr-r‹r»ó\ó6å B{„ˆpº°)_sÚE¦¢å¢ž‚Ê‚³âf™­<›?»}ŽùœUsžþ:ŸËžÛ6OoÞây=ó½çï\€,HYжÐ`á²…}‹í]LYœ¹øê›%¥KÞ-_Ú¼L{Ù¢e½Ë—×) Šî¬p[±}%¾’·²c•ýª-«¾sŠ/—Ø””•|YÍ^}ùÛ_ÊY“º¦c­ãÚªuÄuüu·×{®ß[ª\ZXÚ»aò††ÌÅßmš¹éRÙIJí›)›E›»ËÃÊ›¶nY·åKEzÅ­JŸÊú­Z[Wmý°³íz•WÕÁíÚÛK¶ÞÁÛqwgàΆjãê²]Ä]»žíŽÛ}áWç_k÷hî)Ùóµ†_Ó½7jïÙZ§ÚÚ}ZûÖÖ¡u¢ºþýÓöwð;ÐtÐêàÎzF}É!pHtèß’»}8ôpÛç#ÝzŒ~¬¸i˜Ó0Ø˜ÞØÝ”ØÔu<äx[³[ó±ß­¯iÑk©<¡vbíIÊÉe'GNžjÍm8vº·mfÛƒ3 gnžr¶ã\蹋çΟ¹à}áÔE÷‹-—\/¿ì|¹ñŠã•†v‡öcW®ëpìh¸æt­©Ó¥³¹kR×Éëž×Oßð»qþfðÍ+·ÂouÝŽ½}÷δ;Ýw9w_Ü˺÷ú~Áýá‹?RzTöXëqõ?ÌþQßíØ}¢Ç¯§ýIô“½ìÞ—O…O¿ô-{F{Vö\÷yí »-ýýLý£ïeîËá¢?•ÿÜúÊôÕÑ¿¼þjLì{-x=òfõ[·5ï&¾kŠzü>ûýð‡â÷~rþtásüççó¾¾”5ûÚü-ôÛÑ쑑\–€%9 `p ©©¼©€–ÏP¤w/‰ Òû¢ÿ„¥÷3‰8Pã@ì"Âॠ#ˆ©ð->zÇxÔÞ~lÈD˜jo'E…7ÂÇ‘‘·Úšø*Þ62òu7${€Ö<éO,Dx¾ß!¾W«ËçŸäŸÄÀl-#mRWbKGDÿÿÿ ½§“ pHYs%%IR$ðtIMEá*Ž Á IDATxÚìwœUÅù¸ŸSnÙÞ+»Ë.KYz©""bDì]£˜»±Dó‹-ѨÑhl±wcEì¥Hé¥,»lï{ë©óûãÞ-*Fñõ<ŸÏêåìÝsfæÌ¼ï¼ef¤iÓ¦‰ŒŒL.»ú|¦ŒƒƒƒƒƒÃÁ *ŠÂ弑VSF’œqpppp8H2vì‘ø-Ûi ‡ƒFZ·i§hцpppppøžHNvÍåuŽûÊÁÁÁÁáû)!’Žþpppppø^ @’$G8888üB~"—’£@~AضM(ƲíC.×âàààðKQ–MmU=uµ hšÁ¡n«N“;888üü‘$ M7(Û]ÉøñCˆ‹Eqèˆ|°ZJ’eE–mÛØ–øßh>dEA–;­)Û2±mñ\>E•Á¶þÊâààðKV í²/&6–êúVä.¢]Ð%Y**ËÛE¿Û²‘$ Y–;¾Ø~ľ½_‡ ë»K'£¶šRvTù¤’³»‘Û-—y°JDFq)`™Xö)J%dE§µºœÚÚ&ÂlÛCFa²’cQÄO©ä$dUA6¶ ²ÕBù–HÏ#+5Žqpp8D D’¢“hEÞww@"òMÓ¨«© àó#$%'‘›ƒÖ¨®ªBÓÂÒ3ÓIMOG–•¨Ê8€ò D’1 UnaåÂŬ H$hi}GãÎE¾¢c~§T”?{×ïE-ìIF¬ò#Æ]\^?;—|À‚u xºç ÔU€ßpüчS¯`Û?…Ø–Ʋ*B®dÒr2IÍìÞ°i` i© ¸eGƒ888*™ïK‘å’Ôa7H$@u¹Øºi{¶o!%1˲غ¡™ÆSY±#ÐJlŒ¯ÇÃÒ k™<í97ìà‚è’‚ª×²sãzJåqüñÖcHiÚIy- £¦»À0±IÁ­JX– ²Š¢HHHئ+¾ž/_|“ø+ÿÂÔ$Ë´@Rq¹Û•‰¡IAu+ÓFVU$ac™BvãR$„°°LÓMѬ ô:âHŽ:e2Ù5oóøsë(-+$k@q „„, LÝÄFÆåV;Ý]††iGëºÏ³¶¥cXQí­¨¸Ôˆ6¶‰aØHŠ‚¢ÈH¨xãZùjɧ”%fÒôn$Ƚ9ö¢Á  k&¶¤âv«QÓÒŽ”E€âv£H_+‹ƒƒƒÃÁkN+ I–#òM’¢“ÖvËD!è–’Ä•—ÏÀãq³hÑrf½7‡¸×^ý;23Ó)/¯äžûDz¬È½lÑŇ%@tHßa(*®-TGMU€¤„,²»%Ó¸g[·Æ‘ѽ˜dªbÝf)E݈­ÛƶŠFºMFÿAx+6ÐàÒiþj.ó|Ã8².^QÉÊy›i »º3lb/¼Z¶¯¬&¶g"kJ±’³(î3wõ|V•kĦæPØk †ˆxæd9ÒN¶©ö·!ö¥·gµÍ! 9@ÅêÝhn?•5nŠG¢»·žµ‹6ШÛI&oØ1ôNÔ1¬z¶/©$¾$™ŠÕÛ yÈé;’~i –0 6nfÅš2‚Réy½é78ÀÎ=Ô×4â#Œ?Ø@yc -¾5,ý2‘ ƒÒmÚ‹–ÞÜÌ”:Ö¾‘º †)r|d_RÝ6u«ç±¥É ²MIšíìNæààð=ü÷U»"K]\XRǰl›þƒ1Îî½ÿq.¾èl&L?`@ÿ23ÓY»n=ù2†FbrRDõÈ]Õ„„Ú-ù;ˆØ1©äFÿ½+Y0ëª ¥ßà(›ùb“LŸ¸Æ÷H °eKׯ36&ÈÊUë‘[¸Š{S×LÈ6‘š«©m #«lùp.ëšcI‰÷²¬w>GÅ•²àÅwS&å«¢uÛ Vïi¢Ÿ·–¦úz¶mXOi[2çM-D ™ØR{ÃIȪo|rC9º‹¤ÄxâãYöÁLvfå“Óƒ|µ…ÒÏf±`S, Rpö&{Úad)»YüÒëèS&’ªÇç¯fM™‹¬óFÛº‹uŸ-c»•DЍ§-`à.Ž{Û">YXEÜ ž$ÑJk8LÐh¦¾É­Jlþd6-£N'#ßCÙ‚¬)7ñĪ(µe,-êÎ É›yoé&Ò³’Ð-ˆéÓéÇtppp8h"uúddYêžH„$!$§¦pìñ¿aÁœy<õìkœqêo8nêQض͒¥+xã­Ù 5ŠAC‡"I2BØ]\a`2a¹IÉÁ¤“RY÷Ùû¬^^Me‹›FŽ&wÇW´TTa ÊgÛ.‹ÞýR’¸—Eõ!òÇžÉizãÑØÃUª¿h nÚï8¶»+°y³7 LžBR¼éßÌÂe•L9Î…+&9cgœ—Mݲÿððk+áš;¸²¨–åï¿Í§[7R5¹E²…’$£ºLê¶.cî;U¸öl§­h(#{g'W¡º ¦ç1œ=¥/Iæþ°†^ºéű¨Á­¼|׬¬Áô|wŒ;y(§ü¶æ®å¼ù⇬­Π†u|þEYS{‘f”³½v›¶3Ê£àÉ*aôo.`BQ5s~ƒ²ä‘5m ¹Þ-¬s{p»]x¬Ý,¿–¦ž‡Ñ;9oh#ïQÁ´»ØÙæeØi0¹oš¿‘€î(‡ïãÁŠ*Œ.®,Y–£±‹ˆû©=""IªªKSmõ df¦ TVV¯×‹¢È‘ì+qƒ‰¨P’EÄ3¥îóào±@„$!lˆMëÍø³¯¦hùLf}9Ÿ/zžÉÐ\•ÏÛjصµš2+—ÂŒ,âr9æð0»«òÆK È6Ã{›Xؘz˜°éÂÝæ'äÍ ×$´!}“‹°D#nO}GöBÒiyôŠ3ÈN“ðÙ2žÔ$Ò¬ᰌ쑑E{ƒEÓÎL %g8“'NQjl$Ž!’Èˎò,ì6W/ò³ 4-ˆáéÇ’ËÚ"ŠHQ3vD J ˆ—M^šæ™˜±Ix¥VZ­82 {Q’çAoô’”DB¬ cX6¦©£i¶'ªdÙ ¤¤c [ч1)/9,§¾žÚU3yq¥›žcNb@º‰pTˆƒƒÃ÷T"íI:íiºÙÞ—d™€ßÏâÏàoªç´“§PRÒ“9s—н{7Ž;öHoà 5¢Ž¼A©*RÁ@†ô~ïý;[ò\hÞ<ŽíO’d¢k&B!2ÈÊVY·v&Ï:ç—†Žaš®ÞL:¡—>~‘'WÇãRlÌîGóÛâJ_TŠÝ˜þ"z«/¦c€888|_…ÈÑÏ‘ët¤áÊ’„ÛãÆ²m>³Ë4©mleè¨1T”íá­w>!ÖëÁãu£ºTU‰Ädm‰v "ÚÝ`§@@¸“H-Âa-;iU$òã²)î]Bn¼ÀP³ÉN0É,."++Ÿ8ÉÄö$‘“W„7Fä£_InâtòYÈe­„Rìtú{6§&m¦9"íQÓâqÅôå¨ SIŒ1±l7‰YC™xV/R<:¦CVïÑLH† —„$ ,=‰^ã§-§’ªX‘%3R¤ª¦žÅð3NFä'ã‘m„™L¯£Ï`JÜ&u A½èOªm`H2²œLaß¾$´4£xè>¤˜¸p;¹£O8¸ue%žTR¼)džÀø"YŠŽ¡ÇP0r2G¦•R-'á :a:Zz3–ô#Nâdïfjü¶°±3ã2),´±…@.â8„!âààð=‘XG»é"D¤¨ð·,‹>}ûKks A¯!éõ,¦gïÞì*ÝA(BØ0yÈ(#ŠH¢co­Žä®ÚŸ¨õß)¬„YQPÕèÚ aa™¶C¢RÃÜ™RŸ<ˆq㆒$éØRd½Dd›Ó0°m¤zp)غiƒ¤àru.*–‰aêV°uKHH²‚ªJ؆%"[–( X†Q „ˆ¬r—„mYÑë"„ŒêV»¬€\n9úË0°„À2Vñòus(¾óNŽI70meê˜v¤eYEU£å6–YS¢È`™‘5’âBULtÃFr©H–‰eÛ‘çºÚ×DÛÁ–q«r´lŒ¨5ãàààð}øƒ|±l Ó§O¤¾%°OVWdIFQ”ŽìU[ØX¦‰$I‘ëQMd[–mEâà]Gä³Ô™Æû]ò*âJ²1 ½Ó­å²¨[ó>¯Ï^H}·IL×—…mÉÈØX¦ÕÅ &ÉiØæVD¹Øû=Ë2ÌHì%ºàÎ2éü·èòïö{K ,+º^¦ýzçïlÓìò̈ұ cßòIz „n™†]a/#ËÓ°¾Ö:6–Õµ|åjEu„0ͨÉñIZf×ç‚„…ÑõžN ¯ƒƒÃcD·/ÑÂY©‰]6SÒæÀû/5—øöm3¤ˆR´þ+%É‚`Ã^öV4âÊéA·¬ÜÂúYïÔ!D+U[ˆíÕ“TÕÙ·ÊÁÁáçƒeY”í®¤jo5Š¢z…UÛà Aû¿ó· dY‘À¶~ä ÿÏt8Š*#LËY îààð³Ã4LZZ|ØâÐK0©¶Á'ÃŽ¨tpppø¥ ËòOòµ}Ö} Ävü7?;,ë§Þ‘ ú~¡Hg;JÄÁÁÁÁáÛ,ý‘$PeÇ qpppp80²ÓŽqpppppˆƒƒƒƒƒ£@~¨N8üH¿ò!…p²Qâàð½ñx<|øñ<¶—îFU•_UÝu]gÜØŒ8|ºn8ÁÁQ í3*gVåpP}Ŷ …œzòoèݫǯªî /'cÛ6¶íìøàðmVºü³;Âá¿R .—‹Õk7òÙ‚eÄÆzqôȃiFväý%ÎÒC¡0cFÿÕ½S·ËÅÒe+X¿q«ÓÁŠÉŠX–…$ɨªü³M’@ˆO˜BqîX–õK·@†a0jÄ0Ž™<Áéµ?ÿü×ãüéÚKqu{ãÍ÷1 óW÷NÃšÆøq£Ä(§ƒÿÔÔÖóØ/0p@ §2ígS>øY)ލ@"ÛŸØB „ÏçÿÕIè¬)!!aŸû|¾_L›z3E`éašLBÂ7—E’$´°F8Æ0œÈ¡C.—ŠmY I–G[[Ûÿô8B˜˜ø³ È?t}“z‘e¹ãçç##å–¾~íWà@|ÿk(ÇAEüMõŒœDöÓµëAKûO.&#s"÷l<€µb¨\zÇŸú2Mÿ×]Åj¡t|ÞLZÒM±ÿ;ø_#û–åç5f»Žé ¾·o=eY>äãû—ÌÎÂÚ/˜.+H¡FöÖ5Ôm‚ø¬B2\H‡üx& I&rüâñ(a´R]"¡ ‡xÉF`c†}4¶)dd% ¢YÂ×ÛPmÛ]”C¤M>•ô¬xd[ “P @Àp“š‹tЛ–IH¶š“Ä´¼ê¡_ $„ÍÁ¾úß~Ÿ?ßvsÞÙÄ­ƒï+d—ÛClŒûÿþÄFEÅåöëuÔ4KØ]ß±„"…¨¯¨£5¤c Abv!qêA n YûGÙ¨NB¶ÔW6Ð6"e‚¤œ"ÒbB‘H²ôß”%R‡Hß~¶ØnB:ï :®uô{¡ãkn¤¡9€)Ev ¶MlZ.Éq¨Ò8¾²]~î‰H?K‘÷U¢åïx' Š,!!wÔOî¨÷w×q?6Îâ³q'1ŠŒÊý„·Ö[@Š®ã7#¦rÜñ'sε/³3Æ¢ê³Gøí‘çóf=`•ñéƒWqæï_äË-KyâÚ£8vÚÉLŸ2š3nx†•[–óàMwsÃ¥gsÑÇ3eÜ`κk;ÛÀl›Å]'žÆ ÇÏqÇÎe÷~AyЦué̘z'žx§ÿ{ZîÚØñΙzø±Lv*Üô»â½ß9 û¼s•X÷*îùÝ{t»ü?¬oª£±a6ƒ—Ìa]‹[‘#ß³mdI $¹ó¶ÍÏrÞŒ·hw#Ù‘÷ÑÞþ‘~×Ù/åöKmwö/ÛÒ1J.åÕ;¨©©¡¡êeäÿ¼Ê–†¤DǦ*ƒèòEF¶‚Ô®~𗼇?Á-‹üµ²Ø‘Y¸Ô~]EV½$h˸û/óî—µ¸­Õ<ñÀ;¬.oÁ’£ýj?!uŒ¿H?Ü·ÙÑqñuaÜÑî¶mêhYGñÇ'—R]]Cmm mŸ1¡q6l% GîýÍò"2Ž”#ònlñµöWT«ÍóŸàª¿Ì%m—ÎúGƈè2F~Îçf«?lfæíîl0çódN:k"z%ÐÖÔˆigpáÜõ(ZC«góçÛ¨× l)—Ac{ªds™†ÇØKµßEzϪֱ;GN¯ä»(- è5ÔúcHÍ*¢o¿DÚ*ëh3ãÉËOÆe´Q]]MYånüþ ü»÷°·±˜q!v­ÝNUKÝŽ§pÈ@ ¼­l)¢†+¨jI£Ï¨ž¤*‘¸‡mK¸†þ‰»¼Ÿ^ù3Ï_ ¢Ê ŒP{Ö}ÎŽfALr6ŽŠ|5ÔÔ6£šÐ’»“í1h­®$œÚ‹ÞÝ»‘îmcǺRªšýèv…ƒÐ-ÑŒ8x–él( ª¢¢ª Šè•$´Ö*¶®]G¥_E6‰ÝzÑ+/‰ÖúFü͵4·¹Éí›^½—Ú·oõšÚvñù²8z. Õ¤üóf‡ç‘(|ì^ºÏÀ¾¸*³¥NF–@õÄѽÿPRŒrvVø‘Â-è1ÝÈÍ2(ßTA@òš[Dqq1Âì°ˆ"ë¾{”lxóu“'°pñv\Å>^s-·ôòÀßærñ–½\SMü‘Á/Ä‘Äy\|Î,>ü°Ž &W°¹Å¦ÏUpôð4&¼²•óÊPôÕüëß[Xµb vÓ\üïàµ;#‡ù\8ý Êj2xïš›‘þñ9;ŽÏÊxhøM,8ó*¶\ô*C{›G ÁØù §žw;“¿˜ÊÌû—sõ®J.Ï5(›y=“ß kͤŽ÷iEÚA¶±ë|zç“k`´ð+ù÷êÉÔ­_ÈÊí ÍOEQTüeKÙ#¦·{˶7ƒâ"­G(­@7‚¬Z_ÍÄÂD̦2V­ßC@vŸšGŸ¾Ù˜µT×¶  'æ“#h­ª ”Ò“Þ…¹${ ²,%*àmƒPÐ/O|l"Ý*›h V±¡J"F« ª-›#Ù»l-BÁå-`à0U;*kk6Ö0.?žpý.6oª (¹IÌ, gŸ’TæŠì,­¤ ‰Ôât5£*ض­”ÃqÙŸ—œ„ËlbÛšmÔÃXä2pL’ô6”)¤º¶³£:2‘Ë4†‚ØÎ>Ö©DöuvŒ#)ROa›Z¿­ã bã=¤6 tLZرj UmALOѰA乚ؼ'„K«¤º ’{ µf=;ý*齆Q’¦b…«X·jm’›ØÄBú•„¨++§ÍÇ†í ŒÌvÓºw;ÛJ« I^ÒóŠ(*ÊŽŒ!~’£gÿ'ˆÔîß¾5U¬Q†Ò?)$ÕÀÒÉ$ÔÚ‚ìVð-ÿ7^½ˆ:·¿,›Sç>ÅÍî×™qò †/gÕæz\£¯æ7 ÏóænAÑOpßa³™ñ‡Õ Z˪õnÒûMãÿ=}áY¯óAíî}àD’jW0ó©÷Y±b%µu›ÙTÇ𣇒ážÇw¼ÊUm˜•W<È=Gŵ,$¿`;kwËþÂøv¿š-1zîý¼á_øâ´ûÉI’ÑZ«Xüì5<´2•XÑŒ’=”³.¿–Ì­Ïóð ›HOÛÉVu còâ nz‡å—pÿ]×1Eúˆ'ïx…å•Ñ2\z77Ÿ3Œœé;ã4í&¹$K'X¹†9e²PÌj¾ÚT…áE ü+Þù÷ÌÚž‚Wß‹kð¸ù’Ãøü…™¬Þ²fc ÓÏŽã«Ö²½:ˆKÛ͆øKP«ßgÆ)ëùãÚçø}Ƨ\~̳œ²ýc΋Ç_Ž}©Þ!ÿõë¹i~<IGvÉŒºäeÎOx†‹®YMŸ~;ñÆ +ã­ç7£¹²;™‹ÿt Sz¸0 »‹oú»ÝWo¯ôÒXwW½$¡xc0왬:-¥I÷0¯0D×Ò lêx<9Œ˜róž}‘9½òÐZrõñiˆŠ<}ûý<1o7Rl»­qümR7Œ¢ó8~B Ym>lw 1U‹˜/_Ãíý‘ò‰B®þê¨z„Q;‚4ÝzóL@M gÉ0v®\ÅÊ´»¸#°‚˜éù ²mÌï6Ó;]½–A8m §|‘¾û žÖQtKL¥Ï¸ øß½˜)œÇ—³.¡W†Îì+NdæYséÒ¹f“IZ°mØÿãô¶Ø^šÎÃ/Œaø-ØöúÝü¿§6cÆ©$w?’‹n<÷ò¸ïéMdeîd«<‚‘©è›ÞbYê îºí:N=,K¾\¡=|µp¡©x«>£rú lyŸ³O_Á »Y³{ ×þ¹š¯]•.cùK8gÖE¸ßz— [ xìÕ± ½¶ˆ5/ßÅ__Ú†åUHís Þ|'ä­aöãòìÌ´$·’=ôtFx÷²qíl¶7ä2iÐVž¹¯3n¿˜ ág¸åŠOØ#tü»38ñã'ù[Ê,.>m “]ǧË@Òëèsùç<5# ÙÜ·oIßä>•"Õhb÷º¥|òQ#n¼¾R*÷dJß,X3‹‡ÿ:“5~LŸ‹Á×þ›{Æ-áŠsÓ»wë¶”cŽºS}¯ðÖæ:<'ÌdÞ­=(}ûÏüþ¶íÈ©.<±Ã9ëá)´~ð.+vïâÅ÷Ç2ðì>{únz¿ KUÈu&—\w“ ,ýW‰6Ë2;R4uCF² LCÇ0 „aF^®¤â›yäŽvßbn=®€Ð['wÇ\.¿ÍEBùÐZž»ø IDATl¾Ÿñã–ÐÇf®ÞqgÜ´ŒŠ!.2û0cæ"ÞôÁ#÷ß̓w¥qÑÀb[$ ]G7ml; §žJÍ^“óGǹ£ žžþ*M}ãê+FR|Ko|’ùE½Qê }fÏ ‹Ekñ£GÓ+mÓÆFÁNŸÄ%Çþ—^ÜËŸ‡HئŽ;µˆÓïøˆ¾_í LË?û’•ÏgLŽ oØyÜýÔD>»òV'Mã¡E—òäuÓP¶”gßz“¦>ÇrÕå£) ¾Çå7<ÍgÃoãÄþ™¸DÛe"„®ë™%²mbé×ÍâÞ›—â±;H£–€éÓHí7™KîìÁ„m5`næÅ×ö°fÕFÂ-azœt?·ÿ¥„·Î<…¼3îâÁGS´ãnJ.oÅ?ènûÍIlÛcQ³xý÷ðéû5œ=¸”ši0µ›DÆÍŸðäÄ´Š0µ›?åÉ×Þâ˜ß»ÉJÆÕü‹œÙwsûÝwï£LRWóê ‹˜ùÌ'ôÿû dšVÔ ¾Ë?¾þ>,y„•^ñö‰cx}çUKÙdžÍhÕE¸n/ur&ù}¼ŠûgN¥GÉ™ ¦‰¹/}ĆÚi|¼ûä±…nþ%¨#, Ý0±Úý¶ÂÆŽÏ'ßžOiÝٌ̤ [?^KLßLrbrýêÙœ @€­KªHÊ]̬à2¶p:Ùp]%õrÁ·û% ˶Р£#WoRvÍ3\ÿ•Üõôß©ØawÝ#<~îÃ\øä?˜W}!EâC^Þp%w¼ßÄ3—ÅqÑÇâè˜fÞ¼}'#ñ7Åñâ“h›û2/>¿‰w?Âobw²xö^þÇL&&“?ø î|~*Ÿ_{ sÔÉÜ¿ðR^¸ñªvì¦eÈ@<†°d KÆÝü¯?²OŒŒ¡õáêWo"Wy™ø&Ñ÷®â¹nŸóÇÑ¿å´*¸i`+«Ÿ=É÷VñÕ·òÙ=©¼p×Ô¼û4¯Íªä˜ü›©Þ-|4k>³y†Ðà=¬ ä®õqtÖ^>¸åYÊ=nŠ&߯ÕçÄÔþ+yÝã'Flå‰;ߥäÖwxùä~ðþ©t»w.WÜæ"¾y®3v³öQ }ËCŒÿí+ì¹ðJò cŸØŸ¢cbk[vgú¸ ºj°Œ/Þ™ÍÚ¯RpËAv¯‘9û‰Ç9@ã•ã_%xø™\7n Ý|ïðû?=Ê¢޸ëC Ÿ¹œâŸãˆþï»i-«C1þ‚Ålmhàù§¶rñ¢í\_PƇ]Æ_òÚmeǬB¹~ ¿Ù_Úœtï£LTWòÜSK™õRwúÞ4•4C‹®ÿ¿> DÖðû#ë@„d¯UâoK¥¹-H¬©c Wl"îŠE,‘fp[Qõ•{ˆí5Ž‘ÕìªXýÇÒO)gOièúŠ2Êk}ز 7Þ~CÈWRd%“ñÅ6÷ÍÀ24B>¾`ÃÔ ú|üMÍ-´î*g]¹ŸU[_aÇŠ·‘„›ìâ^ZÄ{¦L=U{½]ívHÇ6m´pžgý‹ì‹ïâ­ÄBTÂ4íYÁgÿz˜'UãJÐh&3xb>zB6…9Ķì¢6¡;ù)(Í•´è6™uÙ¸ÇǪU¯Rúå»HÂMF‚þ0mm~¼r§É’’ÒÑ®¦i:³9,?>3–nSïà™·Î!Õo¢{˜7ó5^_ß@ùê™}ßs¼»©·•]þäÌDËéCaN ö–˜ç›Ì±Ý°š*© ôš1Ýt ñþž­¼ú®Ÿ›¼Žgÿ9ŸJïzâÇŸ‰§a+sžy˜¾»á°†è~&ºä%¶OòZ×°fõ–®ÚÎæ¯gvXFu¥3üph¨ñçÖ0mÐu¦i~kÊñ§÷ۤ͡hx€Ž8·[_׸~Ø'ÜyÃ,ÎÒÀªO?£V@bv9Ý æ¼°œ—ßÈ.,&qÕf^{ÿ=Jv|«ËBS4Ë00­¨¨&Z(H õH.žöâEBÃsIJ\Á[ÿ¯çÿƒËo¸—ç¯z}¤„Y¾—ßÈ?–ŸÈù}þÎßþ4sûïeéìÅÔ+c¾5è+º¦ã÷û:RJŠ s/ô<ÿ^½8ž”½2túÌŸt¿ý]97ÎÛËd> üŠËèޔϱ׻yâ¶¿ñÅá'ðÛK ±fÁ°Ameþ_±¤´Ž”Go`qXBqg0l¸L•AF<â[wQŸO^v:®–½4‡tR  ß‡6±©­…æ¬éÜ}Ï Æ§¢ “ /D "€Ñïú¹+©Xñ c®áå‚ÝìÙ«ãí9–A/í`}“‚V¨«ª fÇ:–mª`ó#â³°„êÉfä¨jVíJ%&oEòvlvíuÝö1ë¯_Nm]#yA ÛÆÜ½˜%ö9\WhÐ\]N|ñFÔU³Ë¯`ô»‚zŒšV$·ÍïÃîtcy<DûÛ]×ñù|Ȳ ² ;ÜB“w §Ýr¼d$ R˜õžÏíÖ²aIë÷†X½÷9Jy‘ðPз7­Ma´’1ô÷VSYÝ„9d"ÕrÊkZ°e™@éW¬J¸’krÊ)«m%±p8½æ–²©Y&l¡¾j»¶±üËl{àz>Ôd\® Ï„†:%L\bÂÏv7žÆÛ®õ% ÍR92k#O¯4è3¬?ãòâQÔfV¿ù ÁœD²ŒOØR{ ý2ã0*·±;®SC·D$¨ý,GbB71ë[ ÅÆ“ݤÑd4Ü—žZum:"!žø&›°F Õ£"ǧ“¬¦2í/·rõ™Gongλ{Éêþ¯Ù>4StÌV:BÑ4@Û–‘íL=µ‘ßÿ«’¬ÇQ³kŸ¼™Êߪ?ä„Ðf=ÿ¯®Ó°-3"œl7Ø&¦ibÙ!,¬˜,’\©ÿç{¸êœ ˜Û™ûöNâ cpuQ‘öÛgÒÚѦ‘@“aaj>šÁo¢˜Í´ dO«?YÇŽ† <ºþÆ6Îáæ;æb…tl+2ë5bré&}JyýDL5©¡’jCC3 ˜z!ÚC°À:–÷ftàQþ¸•W& /âù{¹¼á+Îsײ}Îýœó¨Ù×ÉÔÐ%îØl†y*—}ø/&SÍÆ/7³ÇCzŒ¥G$h¤žß>Bʵ¹ô¨|\]vqÉ<ò N}µ”a†M§þgKãˆ|6ÿ/§ @BÃO¹•ÄXL)ˆcàÔ#8lïç<ö¯G˜ëQH/:š1ýàóÉÌOŠX îB&­’ãJfØ¥¯QsÙ•<ÿúÇ´éÓßšÏYÀmïP>ý¼¸] zFrÛçW1 Á Ûaáù÷ñôö$’žÅõÝ QrŒ´§"›{WðIu2#ö!/EŸ”JaÐ j¥×äÔÝð<÷+:¾¿fÛN¬¢Ëø÷õ“h|f25—ß¿>Yqá‰õ¢Åuc@ïñüî£×8ÙÕ@Ù–mlÛ\ʦò ¬«50mÀ6±L3ò¹# }#ÑÿKV_K3MMD²©$·ŒÈx‰yäksYWw.SS ¾r;ñýI²üØŠŠ;6w\ƒ‡L᳟ešRÇöuÛ(«¬dÓ†¬¯/¥&<Ž’´z¶ÌŸK0¼FÛMߪ,EÊŸO=mµÇ3¸0³ª”²˜âÑÁ Ò":6èZ‡}²™ä;³¢ÃÛ ìo¥©±€¦P2e:ÊíeìitïMçÄ?ÿƒ«NF¶±Oß®$·p9/ZAô¨¼ˆÈ'Ú;5rB9¡Åll8—Iž|5»¨‰ëK‚íG¨.\qñx½YŒ˜|6—Ϻ›£¨dÝç[¨2âHõXÚ¯>·3 Âkô>vÙOÍáͧ`uV^µ”Õoï¡Ïïä¬ñ/ñÔãÏRÛ/ßÖÝô9ñ$2ÅÂa%¶e»"cË –ÁÖiÛ½”×4p×Õ°£YbÀicè_»„¿Ë¿î¯¤Ø¿…E[LFõBBx-Ë_ý¢’Ó˜ri.oÌþlZHš¹‰Ë{ð‡¿H„4+šÝdw±@„eGƒZªBÖØ‹8êμ>„Ä<º.ã­ûï`}ãn–~µæâ‰Ø†fXaaè†iG>‡ƒøÕ~ÿ»u¼ñÑË<°e1éö&,ëÆÙ÷ŸGZl{ ºkrBgð/"-Ó@ ›™'¶ih„B^²ºw'NZÁ‹÷ÜÉâªÌ\Gž4S30 pü`NgðÐû/óï-+ðÔ~ÌöúÃ0-ƒpßQ”̹•e×Þ@¢Ù‹ãF­`ò ç1ïqÑÚA}aΣ¥,è£zý|v0 ahaCN¡hÌP†–¾Â³—ÝÁ9•lY$ýˆ“øí\¼ÂÄD3ɾݒýý7íÿ‹ôIüõíIüsîQû÷;)îãÎâÆq키Ԝ~ã8ýƯÝkt—¿‹Î¥×Döåv,'<öNØïáÌxo63¾fO¨yÇóÐgÇïŸMòm &ºŒYQ°[+˜ûΫ¬^RD·ôd”Ík¨>q"ʼn.´nÇq±o7¥þ“+m¤æ >¹ëvžÞp“»gÒ M¤Y ö¦¹¼üR1Ç5†cœÏ˸ƒM=¨ØÒé½èV(0ôÎ~©Gû¨®µ÷Ñhf’ ,kህÖ~]È": ,ÛÆÎ˹£âñ¿=ÊÛ[vÚ0ÒÔ…hkçðêë=˜GõÆÜÁ¢—çÐób ¿®ŒÎYG¾ÉÃÏ?GÃé„JKéqü±dÉ+ÐÂV4–&¢²Áj¯CG²†ˆ¬ë’ýÖ±¥™„µ·…-ÂÔñç`BÃL6”ÿ–Ñ3²™ÿÖsÜ¿j6ÉÚ>û¢7WÜ*¢òB lƒp8";lË$¬I¨9£8yÀ£üû–GØÜ£•Ý{4†<”tñ)ŸÏfæùŒ9æ0•Ïä™+þβÌr6®Òèvô)œ;0wGöØÏåO7ü寡De âÝ~*ŠLeu-†a››E[[[äZ:d f|‹ÒukX¿µŒŠ]­ ½êŸœ7²%ÃúѸb1ëwàî¹h(Š¡ œ‹ÇÔ ËY ”…ªXj y™µ,\ÛHR[Û1”Œ?‡K&õÄ#£›ÛùbñÊEEÅÃ9zìº{ÛØ½±OqÆNŸDü¦Õ|µa[j38ù¯3>ÛEÈH¢ïÀ<â)2XÚÓe-™ œƒËH¤QÐ7)y ëEjâv>›³‰ª– Jf&1ŒâÜT’Rs葇RIïÖüL¡°‡ì¼†NGÌÖµ¬Þ°–-5œtÛïß-Ù²:”mÛ$''óåWk1|MMMÑÁ)›eZo6ýûf ˜Â6ÑM oROFÌÆ nbù’­ìõAFaLӗ̤4ºåç’‘O·¾}ÑJ7°aÓª³‡1¹ßP†- ^ŽA P8ìhz¤Ød¤çÑ0p'$aJä÷ØÃÜ6RÕØ„/¦˜£ÆbhÏ4\žLúôÊ 1%—Ì´8Êæ~ÄŠj‰â£¦qÆ™£IÑ£©¢²,±»l/…ÝóIKK9@˜à¿Èü.ë*Üê>_û»eò·ÜdOy%€Ÿ¬Œ4LËÂ65ÔüÑŒ‰ßÅš5ëÙ¼³‚Ý!\}Ãñ”$Çï…ÍïÌ!íÂK˜Ü-ß›‘ƒ4V.YGeµçý™SKÂÛ¶°­9æ¡QU¾ÍòZ”¾9ÿÊ)dúÂxÒ»QœVHËÉ£ ÛƒöSØœÔhNÀH¤W¿n${•Î1akø­4ÊÅkÇP8¤•ó?fCm3rÿÜy~ ºaa•nc‡?ƒáÓÇR’“FÅì÷ø¢Æ$û°Éœ}áÑ”ää‘H˜íK°¦¬…îSÏá”3&ÒÃWÊæM~’‘ž’CÏ¢î ; ÿêå¬ß¾ºngp׌ÃñÚ:;="#¢å I™ ”ƒ«Ë8RI’Y³v#©ôêYHssKgœÑ6 .Òs»‘Ÿ¦‰mzPÜå„cK=m)[–³ró&¶×esÚ`lŠDÐH¡ß nÄ ƒ€Î A¹x투<´=Kz°gîGll6H=ìn:£'z0DpÛNªD.#Oš@QŒÂÎy³ù²Z¦äØ9íäᤄCè–Mbb¥;v“––BZZÊÏJ¡Hµ >ÑÞ¿Àª Yq‘u _ÇåRùò«uƒ!?lÕÕÕ?cûlÌå%ÎëA•#ƒËù é&¶ä&.Þ‹*ÉHvŸ_ÖÝÄÅ@( w|úuP½Ä»ZØ4÷9nŸÕƒ'ß:Ÿô¶ º&6@qáñÆàuÉ‘o„5T7^¯ŒÖÀ‹Ç¥ c¡„-•ØX-¨a}½níeñëØRtÆé‰%FÖñ‡LTo±žÈŸ6º¦cÚ ÈaMàö¸lƒ°!áõªÓ@׿^† ši…óè/pù%¿eçÎ]¢„¬ºñºmB!Id\..%2rÇÄàuI!!‰ÈL EŠ”Á°’‹˜8/nUA²,, B Ë–pÇ% >B†ÕK¢jÒŽÌ*O<ñ^¹Ã e!>¼(„Â0@q“àE±ÂÚtpyˆ‰÷¢""1Ê`Sȸ¼^¼^7 `ê!B!%&–„&ª*"Ö‘Pˆ‹Á¥ÈHV@Ã’ºÈˆ.ã4è×RçЉ‰ÁåöòÜ ¯Ó¯o/Ž›2‘]»w£(JG¶™Ç£" M³:Ü«®˜8\B#¬Ù¸âbñ¨_—Z@Ç:¬ è xˆ‹÷¢ËášÈª‡˜’"è7Àãí#Z˜PXÇF¶m ødÎBz÷êAï^=~ »ñòÍkŒ0~#|€/ë‘NÖKÃï?Àg3„O‡Äî#8qjFM͆Õ)x-ƒpÀ`¿§z¨Ó ª|hû|A'àÿ†Êt}~T`a?í[àé!_ç½€î|ñáv³î€eøÚzÞœaÛv§RF`aF— †nu”í€m±OÛ„ü¡xèµ@—ÝœŒ­]öü3Ã>Zpc³Ãjµ±ôþýFÀ?ý+¥Ë½ήÀ×µSÈ*+DKc“nšLa»ë °4?­ût ‹@K—qdjZ´¯wÆŽ¾qÀ~Ù5,%t‚•»Ëxh_ŽÕåÙ`†ñï×alŒp#Ü÷Oƒ~ôè%MïünÐ÷õM'Pÿ¾uèÈdŒ¶q4‚úµ5V&Zxÿú¡Î1®ù¿E^|£¬ ãûZ-3Œ¿9Ü%“âÀcĶíŽ÷ü«ˆÈ²Œ×㉬—eÜ.5²*U>{*É1¤åô›pÈ@ì·Ñá/I·»sÏ·ÛY!.ý2ެWd~ÅÖI²„]aþÍXGsóíÇ!Œ AÝvÎÙùžé<Š¢àr¹"¡tIÆír:Ùô#–ÛåV‘%—KÅãqÿÏ[ á°Öázþ^ D–eêêظi;55u˜¦…ÏçÃï8Û¹ÿÀN´cW%¡PdÆòáÇóiii†_ˆº”e™ÚÚ†_å –Bv—í% ÿH›:|ÓRUEu!„ ²ªš?]HkkëÿüvîÛwTPUUC0bç®=ÿÓýÄåR™tÔ8TE! }¿ˆªªlØ´•µë63vÌᘆ‰eÛÈRdï%oL îè ÀáûaÛ6nWÄ Ñ ã|Öôý]8Bz÷êñ«3D‚Á0{«:3êm?‹ 9Û²#'þ Æ‘°mU‰{,þ÷¦’„ßïG–%>š=Ÿ¯»—K¥µµõ¿ˆÈÍÉb`ÿ’ý~µdÉb–,Y ZE"Íí½Ó4£ñž_KLj¸U"A\gZåð³ë¾‘$(Ýàæ[n`ÁÂÏ÷ñ$üWAôö oûb·åË—óñGÈÉ- {a1ªª:ƒÆÁÁÁág<é³,ò²ÜvÛ­xÜOÊ>†ôÛLQ’X¶l<òÝ ‹wô ¤eåŸðËrÁ8888üa“UXB[mÏ=ó.·Û¾èÇQ e»w“ÓãO9ÙaZ´‚NË;888üìÙMfQ_®¹þÏÜñ׿àñx~²hÑ"–,Yʨ SPcÑt œŒ,‡_ŽB0¤ŸšËôOáºë®ãÞ{ïýá ¤²²’äÔtúôˆašÎáô¿D+D(Ìô“Nç¿;¯ó ¨ª™²³³ÉÈÌ`omcä8S‡_¢!B\|.Wç¢ç‘e9ræ2NÖ®ƒƒƒÃ/Ù ùúé¢êwsɉ}8888üRÈVeü( ¤]y8 ÄÁÁÁáÇA–åŸP¦î¿áç~r^>D $rsG8888ürCÓÙVº‡ÚÚÆC¾7Vd+|Å=óÉÈLGú†Xö®ªÎërpppøßAQdÖlÜAnV ƒõ<䋲eYÂï ²aãNÕEFfê˜àP)Ç…åàààðc t™`0DZzèQÇÖ”¤XdYÆ4­o”å‡Ô9hòµ#EÈß¿„ݶ$$ö?PæûÖí;¿=[ý{ÿÎÁÁá§•QY*K2ö×äj»¤h—¢‘³O¤}ÖjRT(t±%¤È)ŒtÄEôTJY’»?©98 DÁå-åÝ[žfE[K’¶ÅàóâŒßÃD“\V ëæ}À²½9L>ÿ¤ÿÏÞy‡IQ¤üS&m˜Íì.KÎ9JVTÌâ9c–ÓÃìϬçaVŒgÆP0‚‚¢’%)9,ËæÔ©~Ìì²=žžÀÕçyæÙ™Þîéê·§ë[ï[õVÑÖŒãìáõŸ”rñÔ ?+&\ÊÔÌ1\2¬º–¼™Î¢¹eY?î=¥ –ãýæ»§ðåæb=c$mv±…Ž/´écß ¶÷Qد ™ZýÊŽ:¦¯~“Œ‹.ã ?j3…âdQ_¯n¯¾·× O¬f²àëoB`úLúï?„.Ýz2óý÷X¾d)š¦‘3dØP:vé†mÛh"© R ´TÛQ ™:×ê$ çÚ9 ½ô6†·¡ ‰ô\þ}DŽÞ„®‡ŸO7@z \ļԂŽ?m-So›H|è‰Ô»9é"YK)éÚ}?^øº )š%í'%ß/žOßý.@JëߨÔÃÑ é~äùôøI[ìØªš@ÓDÊæÿ—ñ¡‚ Åâ@ÊÑv‰34.K¾›Ïž ¦¦–sοšò²m¸ñoMz€¯¾úŽ^}—n½zãºÎõqR¨Hy<üqH½ ôs¢ ’-\ÏK®_œt¦Ð„‡c¹Ç!Ð †ðpaøÑEr•cÏuq¥@—×è¦nr O 4ÝÀÐÁµm\O"‘h†S $NÂAè×u‘4×ü©2®í …À0|hž…å&§­× ¦–ZkÙu°‰†¦˜¦†ç8HOâ¥Ö:º‰ièx¶›tÇvþFha ÍÌgé ½é¥ ð°dáúòÀH'Žã%ýQM7ñ"i'õBC—×Ý4Ð<Ûqð¤MÇ4 tT¢§‡gÛØØH݇ÏH¹­©‡&.vÂÁ„Ð1ýBJ\Ë‘É{­›õ÷C¡PüÖ$ëÑdcOh“ÂÌZCe®i:½ú÷ç¤SGóêË’™™ÁÝÅÍ·ŒeÜ£w5ˆÇ?îšcNø®ë¢ m'%xžhy%D²™Šmí" â7Ôš šö <-© v"J,&Ñ…?@g¯]ý69Gµàóß¡>Jޏ– z•1ý™—±¹Ÿ;ظUk™÷ñ4f‹n\¸™oæ s±)o2gÞr6‰\Ú|4G÷Ž1ýÙ7˜³j¶[GÉÁWqò°î”ä/ãõ¿O¿_s¿^ŠUWMÚÐk¹æè6˜Ú"^»f2¹gíÇòWß§Üï§ûñ7ÓsÝ}<õé6üyt:ê Î’ƒ]·‰¥Ÿ½Åkï.$*répÀ±vÖ¿ôË×–³Åˆ±îû•˜]Oæ¼Ó;Súâ$¾Ú´†Èÿä“Å'rã©CÈÏðáI‰,èIïVY²Ô£wogÁ·,p çHˆ;1æ¿z–øÐiäí7ŠOjɺ…3™òä,êZåÈï@Öq~üJcÀ_΢`åë¼9ù-—B¬` gœðg†ö4º‰^·€7ǽÂÚõk1ú_Ì%Çö¥0”úYhBwý‡<öè ¶ 0´žœx÷Yt¬]Êäâ«Z?¡ìb8ãVF´ˆb¹êaW(~sD×*j]¼úQX¢q+Ùwºÿ°a!8ý¬¿òìÓc ‡3÷è]ضÅwß-á÷?ÍÈ“Ž§CçÎX +)J;ȇ@Ó¶‡Íêër¹Ù¨ü†!,íß„‘’jjøª™óÂ]ÌÑÀs{rÚ=gÒEÓÐ}•̟ɸÇ. bγÜòÚ ÖtèÎÓó uëAeu%UQ‹‡"ãû‰h†.4 ­šªô®†ãkÝ IDAT}ÖØzïÜ;ž²Âc¸|ô0ÚksyêÎ×ø´0‡‘C||ÛøhÛAÜuç_ÈY÷ cþ9“ÅG´¡·¦¡›å|ùu7>þæœ'¹úÙ¿;{,Ïžä²bÆKŒ›ù)k†‰øê æÌ ñ统¡Wä+>^´‰o6¥E°ŽEÕaŽ8÷rî8o>c˜Å7˺rü5ç»n<±á§qhŸb|®EC£Â˧kŸ6|Yº©5géÂ…ì7ø/xÒF÷§ÓÿœÇ葈RS:‡©O~È—‡_JkÝ fÐöˆ+8£w”ySÞeµ'AN—œÞ‰ÙÏLfíò5léR„ßÜÆ‡³38ýÊ›¹"{Oü}Ÿ¯éÀ±Ù¢áþéÚB^;®×ÜÃÐ|{ñË<þþÚÎå»ö—òàÙýÐq±­¶'Ô ­ Åï! õ=àBKFR"‘Û³ÁE2Œ%€ƒ‡­«ãÒ171öÞ°m›µk7rßCÏpÈ#hß©#®c§ÄCìâUHIÊ3Ñþ}¶øDÒ8nöoÌ"ÀµrvÙ5Œh•†!\츋@%~pgbVÙ¾]å,¶F‚µhK§é‹Xä´"#RN­v0ÃZÄY½$u> ³m\·€ú!<›x»®ôöM ¢DQ² Gœ9œŒxŒHûîô ÔÒ¦cQ¯_›6´ÿä*¶ºäÄ«X»é[~¼g“7¿'G´‰ã:aztiC˦éÔd4¥M®Fiu”hÄ@J×µ°_c[IÜîýñ?6Ÿ-#t6—µ¦¸IªÃݪaÓgÏóÏékH:ÁœNôÑü„3KhÝ2x¢&¹¯ÍÐ`Ó7Lyw ³VU£Ç}tjíC×$N"›ý=ˆ–Ù>~ éý³#nÒ}MúÃhååTøªùá©™íFÌ~|EÍh:yOÎÈâä^YhÁ0AÃS·ŠßC@êù$MCÃCÊTÕ/¶ÂH¢±3¦N¥ª¬”±÷^Oee5µµu””rõåçñУ/àØ6} D—4,5.+BãYüÿ¦¥úú@øE¢¥Æ•yŽƒãØÉ‹ÐB&û \'Óx4 3ÜŽ.ƒ¾fæÄ% ð¯Bô9ˆL;FýÉê5µa’/ÃÄ ËC “(uuF–Ž®»€Äu¼dy¥‡‹@õSH\ÛMVÈÒÕÒ£¡sÛC éé¥SÒñXFÞp2í\×óÚFf/pñÜä1ZJ\Zr¤  ]ÓЄ×hà€ÄËéI¿ôøfŽÍŠÐ.ÊløºyvF 7‘©›Û¨lB&þÄJf|°«Õ™|)™9õ=jÊ·rÛ-—SVVΊ•«yõõ©\{Õùåsñ§ðÔ³0L“þƒcY֮ބØÞ½ðÿÍéûBX¿Ô‘ -jJ׳Á #1ÂÅ4ÉH×Kµ¤“û%?ƒ ‘[ÒŠÈŒÏYÙ³/#ze`YÑT*ScS•©”ÈÌBZ6‹1wå¬(ÓBÌcöíé>$‡´`)ÒõRêöóH!’ó¼¸^C_@"½íe‚Ô¾¾4²šfb~ú-ÓßiƒÞÑOŒ4ò täöẂäñH H0àQQ±õeaÚæ…04±½àåе&¯ÿkmGÝGŽ®w°‹‚T/YHùÊoXQ¡Q¢%ÅVzr{Ù¤—ì‹JxÈ „Sɦï¾dÁªMD;õI͘\Íš+XÓ<Ç›Ã⪾ iŸŽßW–´5@~K:Ná½×æP°^2>Ê¥ÐaUE£óiŸ˜ÊŠXšHCO=í Åoí¤ú:4-¾Òd2™#ÙŽ)‘I¾_½j%—ÿõl-ZF]$Ê˯MeðûsÿCÏqÞ¨ãñ<ƒÀ‚ïW1xèPÇ©WŸ†zYBªa›lŽÿ¤€ˆßÓÑþÝP2‚6Y|=ã%VJÀsÉ~ I'¿U ™F²%¬ä·lJº&‘zˆŒüvto»ŠŠ6])±mâ3óÈ/ôãGGæ4!Ï ã×\ìx?…Ú×ßdæËqr<ê|zçâsªÈi^‚4RÞPy-›‘åÒÈkUB¦™ìTÖLò[4%CÐ0Yä7kBÐ PÔ~Gkñú¤ñħ`çtᣤE“Br#aüšDz>2 ‹qÃ~„ÛŠî”°bÆ$^.µ¹âÏÈK7ñ\Gì.ЯCºäà t×C8bîC¼úÌÒŠºÒ»O!!0ƒ9ä7…4M"S¶ÈË t O×”¾;‘ÇW´§}¸˜V%ièžAzq_úÈ|úηTUDèzâtÉLÇð‚ä¶(!Ý/nGF^yÛx›çWI:ž'3¦Å7<=q1>#DNÓaœrf6vmBÍ< Pü^R? Ñhä”hÔhKö“ 1‚ÇŸ™„ŸßÇȧ}§N¸ŽË“Ͼ®ëdådsÀða8©Eÿ’ù„b7‰Çâx ;õ¡”n«•ñ]¿ÊРIš·Cކa,Z¼Œ-¥eŒ<æ0^yeHı]‰DÇŸæK×ø™24ÍÀ è©Ï:ºéÃï3’×!¬„§ÛËái˜Aµ±ma†ð›:š— –p‰G½ßj 8©ó'H:f ˆ©%óe ^"ާù0}7Ç‘ºéÃÐ%NÜB~|~]º¸<Ƕ%FÀ‡†H®Ý"®%áxH™´‰LÙ$Y_CB¡tÄ\ƒßH†Û<›DÌBù ÅïƒÏgòþ{Ÿ±ÿ hþ®ÛH4vªöMÓ‡a !-ǶqŸÏ‡nèÉgؓض…ëº;È€¬‡IIVFYŸCQIš5/jtÎíH YNgŸqoLšD$ùû@þížv,нËñ.VÔe{r‹‹kôYºXñXƒ:xŽå¤ÛÂjPÐÔy±Ï#;ßá³§Žûù2Hé`Å@C‰ç$ˆ9‰.¯Q94‰“Hý_hH'NÜÙ±•±ãÝqˆGvHðÁÃŽGv²—ÏÆŠ“*KR$’¶àZ$¢Ö.††²ìÒâØn“d8¬¾q‰F;ÙR¡Pü^ˆ¦i8®G†i Ѩ oôP ‰é:©gLCÃÔS=°©¤Aø R‚òSux²DK½~ٙ߮5¬S¡P(þS¤”°aC)y±Äï>¯‚h4†i𤥅vßÀý=D€šC¡P(~›òß®>šÏ-É÷oÜÍ!ÅÕ$Üúý·ÛAÑpÞä÷“V6ž?ó0 ªãIa:ÚÚ§8ì°'X§kˆFeÚ~îí6løÞú÷ì.´_P…B±Wcì-Õ4ߟ*®” 4tÓć°£T•m¡*怑FvN6™A—ª­ÔÆ,‚A·Ž-*°ÐÐ0MÓ!ZKe…ð"X"DFFvU)q3LvN.iºE]u%•U1ažCvš ¶Æ·–º¨ -/‡Œ€êT(”€ü†8îŽÁ!ÀDÿÉà‘nhTÌy•;¯» ‹j±‚ûsóSwpI—uÜáíLøn55‘<Ž}hᬳ¦dí{<òÂW”;m8îž±Ü7*ÆÝWÎÁ¶ßäã9m8÷•û5 9!ª`Ý«eø“žÙ†­ÄÉaㇷr쩯Qš -m$÷/¸™n³àÏ—}KÛœÏøÆêÁá§œƒõ¯K˜ž?’ëÀÅÅ_3ñïw1vâ*¬,]r/÷]àñ¿Ï!}‹O¿jÅÙ/ÝϹƒZ²]lÏ%$ ÅïŠC¿ù£¶G ˆåxTÅì ¨ ‚~ó'Ü“@l>o½´«Åm|÷Å„Þ~›µ-¾à¶³¾#íØë˜ô¯þ4Ûú:§\4‘¹íŠñ­}š­£—°îùBD$‚%%HZ_Äí—ý'Ç8~¤KÕ'3ÿoW2ÌÌ¡öúi,=³7²†éS^áÁ—æq“±Œ<Κð>ÊžË÷NfC(A¨ç©üãùa\ñÈXþ Oü–ï~ÈÆ[ò#-n™ÆÓ'vÂx÷tН~–3Ÿ-À&3¸âȹ¿èc†k`¯z†Ï}a¯¹ÿù¾¼Rú4G,æ>ñ(ë-A<ìD6=9“«žL§ËÚÁ<~gWÞ¹îžÝ´?“ª?eÈÊû9ôÞ÷yç“®„¶Nbåþ2ý•ÃiF-QÛEjh>‚ë^ãò^AkðÄ"T¶½/6kN™ÄÉßTsk÷*f?xÇ\ò!ŸŸª“c¶eÌôI˜â¤·×1uî*~d,¯O}’°·Ž…óôòçèR:oËû3šâm}“²~ðþ«GÑ"UTÇv3¸@¡Pü¦˜º 4ÑÅo+"{Œ€X®GM¡]IA2D•t0ð\h,’ F}ƒU I'£9½‡nã£KŸãŽ«]N;eýÒÁ—=žWîÆ+ã|H@“GÓÄ»]Ï9hXÑB62¥› ß‘Wòå“oS}Ü0>ý¤Ž±õ§vë|>?Wß5“º° &šÐ÷°^¬ïÜ›®tã€"w«Ô4táP³l _s?¯¹/e£yuîDM׃8²…‰³Èì{CÖ~Ä;Oˆ5Ù˜õ-c:œz€"/ïdâíú2¼ÍËÜvèXOD—#Ρ¥ÇM¾\;A<#aE¨‰þÈZ£=˜.!Zô ÿ†å”-_Îêöpü-ÈÒêˆ&¼í? 7N¤ýå¼ÿîzgú“ÛÖ<Âà“"xk7±ù€;y¤g„ºšÅ݆ÓýæøôânäöîFìZµìͰ¾Ýi›“`UN7ĉdüÀ‡þ‹÷=R"At=¦€ÚÖçrÜÐVä4*ƒô$-›ä ij0 Bñ;ºÔEã”UÕò¡‰ß®r­Õ1º´*¦²²r§Îb0}šc#*«ˆ?-nQ—¨¡Ö Òé¸[™vzœy_Ëù}cÿ{ަ"<˜kŸ‰ n¿ý"×=ÃóÖâ¶—ìFÙ© î€QÜû+™°ÚáóÈé<”¿ “ŸãÚ±>ÆUoæ ¶2ëùû¸¦ Òŵ-lRÅšPbÜ8²n×3ç£hRù&çŒ^ˆi»àzHÝÄðá–o¢47“l=9"KýøŠŽç•y38ÔÌ£nËzÚ}·Œ»ÜwÝúÏܘy O®|„cuX .Aúüø j¶l¡ÆÓÉŽVSÔ)Itã$lO²K0P¸1j«ª¨"€@G«Žâ"-@ t««ûbÄkJ©*. ßópÇ“à:ØŽƒãçy¸:ØÁöüéšó¹å–Ãן¤ò]þ2cñÊ „ ¦¶V=à Å’` @nV&[Ë«háÉ߯ÙcdçÑ:ñ¤ ÀŒÐ®j6Ï=ßÙ.uk¿å« è6Âãë—`îºfzøœsyѺ3þ5ã™ñâsØåh‘‘ ‘ÖaÍc$l—Ÿ²pòt| ½ø ®¿‹‚„ ’ß‘Ž}—²nÚÞ*ûϧÍfã°Tåé¦î‡k[$4íÛYý=ŸL3,Ĭՙ ÖZ#jW3ïã‘[Š©œñ9öE—0(})2Åm6˜cB÷pûMûsþ ‰ÀÈnCð®úg˜Qg´à°§þFîÛ+q¶JȬwÃ$žëàØ6ŽQB·æŸMœÈÓÏæÐmí;,éЙ#ök¦¹Ë±w&ò°lwÇ!»ÒŲ$4ëÇó^Æþó0ªºW²`òb2¯½¾ÑŒ³“GxžƒíxÉrØñ`1Ýšmà»§ŸážÇ<×5[пE5–çáí¦ B¨1Y ÅKH´ßøqÛ+FayŽGóÞÍuó~\}Ùµ¼4p3»ó§ ÿÆUG5á˧¿aí»÷rÙ;.%G\ÁMûÊà㺣]~/?8¨p‰6;â››ÓoP˜l¿±û¡¤BÒäÀ‹h3aK¬Æ&§ÃQœÞó)n¼úKr›æÓaÈÉœÊ$¿Ø¦{çtÇÁÑÂ4oÛ’Ìü¡\4GîÇm“¡Ýð¡ ° 3¨n7ɯ=Á‡^‚x»Ñ¼zÓþ¤Eã TGÐêÍï?ËêcoáîO%@ïKyæ®~t]q7ܤÊmΑ7¾ÈQ¹Qª „ÄÓÒ(hÑŽn¡\\;ÌÀ³¯¥Ê~ˆûÍ$9 ï9š{W³ª«CIn±Cîáúš1``˜,CK ’jÅà!’tp唇¹ø¸¹õƒt ZœÇ³ç÷Àþìúõi‚îšd·£w·„¤°UÚ×´eð©ûãUÜǽ_Ëû&ÄóåºËö£sߎ4Û¥ …b¯ŽŽ•n«•ñ]jCƒ&iŸwÃ0X´x[JËyÌaŒ?ž²m•œ:êbÊk£;TÊž„üįË_Ôi³±2Bç–ÅTUUýD«TC÷IoÈ’“¸‰(uQ3-/q-¢Ñ Ï -# _CxÝ&ñ!I$C0»C™®­Šâ@høÓ2¤¾^:Ž”8˜†K4bá ƒ@ЇæY$<i!_2·ÃóØÄâ3ÀÊRÅ~2ÓÑÚ8®ð“™ØnC/Nm$”lù8±ê²Á[“høü~|šC4š*G(DÀLöÙñÑ„ ”fâ$XŽ·CÜKj2Ó±ºN½[¦ÈL‡ºš8ž œžêÁ¢®*†ôHó{ÔÕÚèþ~Ã!q1~LÍ&õð¥¥4ë ïÙè¦À±,,[¥(*ÿmÏ#à÷“ð ¼²šüÌŸaiÊ¢;çhK 03ÀY§Ï›o¼A$Ù{ò@ÀÃMD¨Nì¢+ر:ªc;ovˆÕV³ÓfþmÈÝSSÍvËID]5‰ÝìjYÉØ›À%«?SŒÚ Øvb7O‚Úšúó$¨©ÞuŸºjk·¡>Heã'bØ4*G´v—²F#ÎîÚ/±«=¼855ÛmQ]o|Øqjíä{ÇŠáXÉ÷ÛËV´vÇ>š¤þ(Š} 5üE¡P(J@ …B¡D¡P(J@ …B¡D¡P( % …B¡øO0ö¦Âjš†ÏgªÙ[ …"…D’Hü1ãä÷¢õ@4¶m«àó/¿Æó$j …B¡€Œôt¾?®ë*ù)„T×ÖR^QÅ‘#†‘°TfÚr ’Ù­ …â××gÿ¦\‰<‹dî®ÜÏQ¬m;¼3õC;äþýØ»BXHÈÉ΢}»Öêøâ8†a(C(¿¶*“)%‰x˶1M]×húh~üñGÆŒC<ß#=‘½6̲¼F•OÀoÒ%:‹9«[ò}¼;ÝóÖ†ää’aìØ vmGj˜xRÃÐÁ.¹€iÓ@KØX†‰Oß~Œ´l¶‹'¡>ÙÓ´„ƒíx8ŽC0]Ðôd*ëº8Ž·O…j„$ ËÆu=lg{ê«ÏoÒ<¶Eë×òUä@†ð5­6Ðzµ¢È—ò“Iì8 Ïó°,p,OBÇg‚m¹H¡ãói ©UŽeã*½Qì庎m»»¸éRJt]'33“c=–òòr†Nqq1ãÆãÒK/E×uñí¾%”™™Éu×]GQQ§žz*C† ¡[·n 4ˆY³f)ä·swt]rŠ›³5²²êË¿}— >Št‚#îgÞ÷ƒé#øÙÕ„ÇÏ`ÌùÙh¾=§‚êÓ1~|˜{©›t¿f.ÑkZ¢’•“obÄØéÌE¯ sÆɤйçλ¹ñö0§tâG^¿}6kÑ|-?¢mÅt®ýÛl>x¿9gŽìŒ/áì3žˆ@âÉäÏgû‡sóIèJ·”³yË,bUYägŒNWðö¼+’öŸw7_šÍŠ–1t .Žã&¿SJ¤Lynò=þÒe9·º.‡$¢TÌ”“Îx‚¡Ó/¢IÜRý&нZ<~*„USSÃ7Þø“Ƀ{’÷±Oy غôcÄšZ¬¥Ó™¹ú útnKQ!˜USÝ«%Y†@ KͬE¬¶c$öû—áG×Ý,ϦîÛ»èôÈjB·ó'Z·žÕ™yä <œ!Y`6§w›^4Yø|&fe-u‰Ïyäáh'"÷Pî}ú=VEbD…ÆÿDÿºë"[u¢ŸNÁ¬w™¶¥­›ô£C+Ðê>玣{‘gÄ€ëY>õ[6[‰ŸÌ°ðÃJɧ8J×ñ‡2(t+K¾_Ïz@WubDçyضeY;ü­ý3îþo66pxˆPÍ›L-(ÉkOqÍÛœÖ÷>²þ>“žDnz†ƒ›„1¼äP¡Rb-}€C>åòÍéÔ±æý«h]ÑOéáI©khð,êƒýàÔJ‰çJw.÷žØ“ð>ÖZ?9¯‹-›Óy@ ͲÞåí2f³>´N|Ê5GÝͦƒ`‰'‘9¥g3ü¶»Ý+óRv€ç%í%Æ€±¬ו8nŒÒµ·Ñ'na«ºF±W{ñ ~È^-{¯€4„<¶¿lº íG,û IDATÈôçÞ¦2"Ék™–‡Ñ÷ú7¸‹•ï¼ÉÑ(Ö.ß‘}ª§‘yÀQôO¯¦tþš:™†‰.=\+J•`˲åÌݶyÜPzGcÄs›ÒJ,`Ù”W™²8AMeeåÕD-g—2îõ¯TøpwöwlhÛ³9«¾úŽù_ÿ@óÞÅwк¡W»,ü —uÓ¦2»l+uBCH‰g-\ÆÒŠJªëêXòî|å¹ÈÖè9ÿZîšXCUÅ6¶mÛFyu ¹ïÙT½þ·^ ÏJ@ö(Ùº;‡wº’ ´£ ×ÃÉû×<›ÛïBa†Ÿ3¾Ì§_F!=@Ff½>Š¢ÈÌ âkw!cÚ]K÷pm{ 䉨pŽÈòcz5¬ëB:¦…(:äzæç]ÆËu%â 4§9Ç\u7Çu_ÅåÝä5) ¨×y<={®ßØCX?Ñvrܦ­éßó¯\Ò³?­ Á çüá›xûúþ Žy³šiMÉ3ý¤…4ì¢ xú¸ã€®4ÏËæ’zpHFMƒ‹å‡Ór(,iJóVíé}Á›T|*ûU¡ØS¼©Òmµ²"¾ku`hÐ$Í£ñ0}Ã0X´x[JËyÌaŒ?ž²m•œ:êbÊk£;T”ž„üįÿ2Gmce„Î-‹©ªªÚm’®ë¬úa ó}ÏÙ§Ÿ@·ðô!ßN÷'jái>BF}HÒ!u*iS±÷Nðù êjëRá`—X,N @×õ]fäÝyZ÷úíñxœìœîûW\z.¶íüÄ9%¿Ÿ„å•Õäg†ð~&EPÕH¸;V](Ì pÖéÇóæo‰DöæQX©¢Ü5oEwìhr­u»If‹Fv؉H곋í6Î^·›ûc[‰†}íøîÛW†`%WG©>Ýô!¥.ÖŽ'vØâÙ1"»1ŒSoO/FÝî ç&îɾhOÅÿ¦€4®¶ãK4]§]»vÛÅóö¸…B¡ø9LÓl4âŠFaÉé«…ØþÚÃÆûDˆm'C*ªC]¡Pì-¤§§ïõ×°Ït¢7¨´B¡PìáüËB+Q(Z&¡ Hf ÿ¿ŽÓ0Ì¡€k[$ 0Lt\;§Ò* % ?£ëHÍ$`ÉQ ‰Sk ‚>HÄ-O"…IZº7%áJ4_ˆô€Qß4À‰Gˆº¡€$±‘B ™>~ +Åö4 Ÿ‰a ¤£á ˜h¸X )LLÍ!O4œ+Ðq, G-§÷" cÔÍgü$‹Gö G×~ñq>·†5ó&ðääEw‘Gˆµâ+¶PBÿ~%gýýÝIý.„K"®¦\Q(Ù«Ä_&Y±Å¼úâÛ|¾¤ «Ç‰\׫šW¾Ëàˆ#{Ò2+HÈ^Æ‹7|LÁ™gp@«|œoÆqÅëËq¡ûè|ü•œ”¿ˆgf§ó§“º“fÇ(_6‹iV3à‚?Ñ!XÍúóùaá6hYÅÜw¿£R4¥÷Оä:ËYVÝ–C?öÙ]ÎäwÊhµ_WÚg ©5Àw+fÍlz švGv#[ÿ%k¨4â|ù,&ýó¾eÒdc9òË¿f‰u ½÷o‰ùß¡a8ÛX2{!Ë«šqøQö©…ÄŠÝ7™ö™:ÈØü9ÏÞúãg­&ê7ñ¬™:•…•u|ÿÞ­¼½p+q=Òé×ñÀ«±¼ñùsé½Ó)M¤WÊÌWf°9± ×Ne}ȈW°bê=Œ}j"_lõ•¬øjßYŽ4+øî“™¼÷ùFt}3_̜ʸ;áï¿§RK#˜Xʤ—g²hC5ž¾ï..%%˜¦F(-´ô0áp˜Œ]H$´ Âá0áp:~#9•»&¡ÌLÂA|á,²2ÉÅ¢4?éápjÿ F*ƒÑÔG&!?&Q6­\ÌüÍCyö·xúŽ1ÐÔA~~Ðð…ÒŽ ùu„0†˜ºH?„O ¾´ ¦Í—–:&Y^Ÿè~ÒÓýøCa™ALÝGZz€@(¹_fz¦.0}B!?>ŸïØ"õ]šrUÊùc/Äï燙0cM€£ÿv3£â6}:“­ûq×pá 9¡k-ÏÞ¼|„CÛoà•ýaõáOñÎMƒÉà¹|5e!Fnm}7«ªMÚÔIª×ÛìZßÿ¼:Ÿ„Cäˆýe§Çèh©GJîýr #{|Ãgó¿¦MÇ.—ë#òcèûöÊ„>ŸÆ· +Y>ç_Ô”ÏâÓ%:=:›“>œŽ™+™üÈs¼;gÞ.¸ã4ú5/ G.æÉ«žä‹-uÈÈ÷,ˆ‰'|¤Û_qïÙO²ØøÒâ†'£ *ÆÆoæ¦W¢¥åÒê Ó8·ß:Æßþ2ŸmÍæÊs /£3‡h›!á#CßÊìçŸãÕ÷æSN_ðNîå•×7Ð~ÿþô)ZÇSW,¡ë_GгXðåÃo8s$EŸßÍ_^[ŽëI„¯ÞýWºÔÌdìdƒN¡™¼h8g_ÑŒo&×Rd¼Âë³MšvéÏiçŽ"CHDb#ó>ÛÊÚ…‹¨ÜúŸ/Õéyô9œ|Ô:d®à­‡žcÊW?Õtô‡ò— £S^¡¼S…ò@þLÓãó¹Ù8ˆƒúäáTWS]UEf¿A´KÓ):èN†ÆŸâ¹\Ë×=nãœ>EÛfóƆÁÜpA/|µ,©¡y 9”QL×62óó2<-Amp0‡Úû³o(­ÜB馅”tí ‘±xœD¬úz1‰âµÌ2zrUZ:߯þ‚y•©ÛÜ„¾=5RkÝn¥I‹ÚP.؉kÇ-à«Â,¤Oß÷I‰0ÓhÙ÷Îþë:×ucëuûþ#ÞšëÒúˆóséP —kxê,²… ³r8úÁ˵ 雟`Úì*ŒÒ/y~N.ž}'4óØÚ{=ýÆL仩a¾ýæò¼€î»Œà‚¯ˆf6!pÊ!,ø¨;×\߃{‰+$žÐð%¶ðí'ñÚä54)ïD^lSÞùŽ¢ƒn¡ïϨ‘1~êpð˜žûv nç•,iÑ‘sŒÍ»7£îÑ·ù.áámšÏ׫çR60Hf³î>ê*ŽÉ-céÔ¹d·íÏÈó¯f˜ÿG>xþ úâ{Â|:š/LËý†3ê¯çÓ©® ›¯ý„Øò™<Ú}.—\t…U-ùfábüª§D Gê'™™ÛEÓul˶lÛ¦¦¦69ÊP Èïp4Üêõl)7‰º~2°q¥Ä …Ð, Û‰“×¾/þôMtÎóxÈ’"оyƒE•Ñ"+D›!GsDx¼³„è5ƒÈîÔ¼ëÞçûa~DÑ4 ®¡kOXTÚÏÙŽ9^ÙÎÒ ‰ü=.à¤6·²`uëk²1„Ü·« éâ¦5£°Y>éÒ!‘ZÖeu§oë<‚Ž ù­hµy!e›6³µÙº6'ñd2·²’ê6‡Ñ§8B]DhÚ‘?. ´Í]<úb&_nžÃMƒÇἘ[î.ÀŽ%pì8+JÜrÂ!uuÔf—ÐaxgÚ âƒ|H½zô&´ùiÞ´ñÁœB޾»=½&ŠEñt ¹uq㙳~¿#8¨©†VígÙäZª5£x]ócDª¸F¡¦ée/· N¡'ï±çâ¦5§¨YKòëmJ'gÝ|êkÎ!­r z2Ãö¤’L,|â‰Ç©¬¨   ×õ‡ÃäççSÒ¬555*„õ{°uF .ãÛ×^äùkÐÃa²²²Ø2áf­_K®ã9HÇ•Héâ‡sÁÈå\vý"áœt cÎN‘tq…‰?³½s?âÙ +éÖ·PFˆ‚ÀÞ~ãK*ú÷£™#Ñ‚AB¡Á´4ÒB>„”€GÜÍaè9aOÿ˜yóW5Œ})Véá¹.njÑgÏóp Šh²q s¾ü‘jÄ•s˜Û¹)m»v¤í‚ÏX\j’–$:ÿ3Ù6^³о¸‡ ‹Ã„ÃYT/œÉ¼ýûÑwÍW,hqc®Íi'ôÅžùs¶0wgTOâeg‘Û€/Ð’ƒÏ¹Ñ£GsñèãèW’F›~ýÐgNâ³ôB23à”žÕ|2{-»aÆòöÒŽ\ø÷K=z4Ç·ˆ°Qhhp-Ô¼éÙ4,8)½íù+„LÎcTo 鏨-[Ò¶t¥?Vá"'ÿ>Þ7¦øå+W¬dëÖ­$ \×M-™\…ªñÜÊùqâQZŒ¼€ë+ïáöÛŽbüu~2e‚5Y‡ð̃û“&@x êjãÉJ‰k…tÛ3Ü4ö:èy!$2^ŠqÔšºàù²iѳœÛõm\¼:?ŽeôO_øO‚‰åLÿ×ÜqÃˬÒ?Á°‡²M—ä[.ÒcgÌÙÇMã¡1ª­}®.+áÙI‡x¤†Êx;F]÷gîºúNïp=±i |ä:¶ïÁ­W}ƈч1Îu騻½2Šå?ˆÛÁ¹ÇôdbÄ77çºOŽ%ÙÈÄC»ðHç,üét>ñ&†û£,LÄ©‹ÚHáa'âÄ¢ˆÛT:Ý9ï¼ãØ|õãÓêau¹‡sã—qÚàžÄO~žvç5'œ™K«¾qFÞRÀçÛh…§rîÀ9¿ÿL OкGµqORS ^j]FÏŽQ[—@ x8‰8‘XD£HXÄâNÒÒ!©¦B;˜kþRÇè»/¡Ïc’\­Œ¥ñ£8BW«¼+ ‹sùW`:¦é#‘°p\'ÕK®²§õƒì;y ž‹ç/¤ßWrOßcÙ\e'[èß,ÍŽÉ:œûµhšD“p0 ûpú•wÑbiE2” tê‚n¹ÌdÈe/ñN´˜æN”„‘GÇ?ÝÍkýⶉu²hsÐ<2ñ8dPØ"¿ÏÀïÏÂLXØR'ûˆ«y³cœü¦¹hŽ·Ï†+ ‡CëÄà„ƒ¯.B¯g]Ö‘–O“¢\þîŒ,­$! é2 =ÙN€à)W3®ãÔDmÂ%͸ê­µ\Â§ÜÆ#Í–Pîn¶¤o«,´è±Üñzk6!0üiuîO¦™ ÓðQÜÑ7„OcðŸÎ¤[B#à—$Ü0y-|œwG+\S†¥ë+¤S³ñxNz²YKrD«÷E¼ôN—‚ž™ÅI7?E»Õž”„›µÄ÷Ó¼9<ù¸F^ÜÂ!ŠúžÅƒ÷øÉ¨‹aéùô8ôLn ‘†!ÄÝŒ¤-ü=8çò–ˆŒ|š¶cl‹l­“d}ÿû¿Ý”,ÝÀ‡DMú¿M0àõ×^c[ù6Š ç¹dggÓ¤°Ö­ÛíqÓ5íS™èÒµpƒÅtíWB÷zC{.¶ëâIŒ&tí.R®aê'Ö¤7ÝÞ ôÇ“ ™d·èÉ áa;é…éÝ\'-ƒä·îAa; Äu½†PŽë%*ákB.Ïõ~v!û½^¿=IAA:B$íëj™4oÒö¡y÷þ´Ô×vq]›¸¿„Cš#„H®.‰Äq\lQ@¯áÅÉŸt±-iÐåÐt#r]›„g’‘ßœ¬‰ãJr‹š“'$R „ðpmhҮŵ†0“ã¸xqh¶_7p]\ÏÅNoÅžà8.Òµø?öÎ3<ª¢ Àï½Û7ɦ÷FB Ð{/Q‘‚" Ø»Ÿ‚ ¢¢RT¬‘®ô&%H/¡CHïÉ–[¾ª(Ê}Ÿgasw÷ÎÜigΙ™s„jÑ6TÍK¸×Ctå m6‹E3aýMRÉuµ¹œ‚$UðE¢|³VŠt™o&U‘p)ÀyS†,¡\kê¨VœæUˆ\óùRû²äúõ [•qUTWª‚ô« ©è¨ŠŒt!}¹âú»ò²²Kº<—ýé¢"‹ã¥õ¨ªò%«¨Š| Â]JY1A†ðlôÝ»@U|ˆNŒÀW'”—Æ­LiicNDunwH’taoII©fº!2ã’8Â7ïÜFÂèMÿ˜òø*Š,£ÈжëVk ŒWV«…qcÇ’••IDd$¢ ¢(2þþþ„‡GPµZ¢fº˜Ln×ÿ®~"00€ À"££Ý&+UÅêáÍæ¥™°þîÊÐÐÐÐø·h"¥¥eÜßç@EÄ &¬ó–ÒÒ2Í„¥¡¡¡¡qå$dYF§Ó¹7^È ev;N‡óBLô›í:€¶]CCCã¦ÓHÔ š‡û¥Ü”ùÕˆ†††ÆÍ¯£hä†#mçÝ^ ±•¯‰D ˜EÚÑ%Œnƒ¥üšûU‹7L"ÅÛý%×uú–L=UÁ}•Òæ?L„1Š–S\¸œ·m&ýÛV¦ÛÄŸq¹3ÀŽÉ½IŒoËK?¤]Üþk_É£ .æ!á©5”ý˜ÛÚL`g¡Ý½ç§‘èDaË*J¿„SKGSÝ3šÁß—?ëIVÍË Ç—Rpx!Ov ¸ð,w<Ï’4'?½Øžòç¡2c–ž¤ø†MjN0çí™1c»;oÿIþSä«¡K9:’m²Šª¦òHR0ú³§ÉÊܽ™ÈÔÁTžl`FJ~…]ö‹‹T²´†#+Ò+dÏ`ª4¢î¶wYTÈÇØº{#ëO%SC”Ügì;XŸA”Î…ëì^Òœûy«Å;x<8—“ŠŠª®çNÕŽÎîp, §§Ò¢íÏL<¨2¥CEO¦ Zý°Ä4Á󫇙Wˆ*¨ è̸җ2æÅií°IUQÕ³L ]Í‹CžfÉQ­_^ÎÁ’ògßñ1m{Ó*Á ë ¨}iÿm]Ï~É!›moœ††&@þ¨„äEÔš<1ú6¢“\.§‡âþß)SîŸLÂåpàt:ݯk¸Q3AÁñ$Ö-aÙOvìû·’¶sñ))HN':À±cç<*Ñ¢k8é‡6sè8å ÅfDµ)ãßè€9ÀŒ*èÑŸxŸ1ŸÑíÀFÆ_ãÙ#aáµIéÈËïoÑè0O±aùfÊò›ñøˆúî`J„Òýýqt¬jåØîC\<~·ƒWî[C¿á÷Ó¼’ï ©|}µ»ygÅz&j‹w‘]sÏ¡¡¡ ­îÞφi‰ªó0Ÿo=ã¼D >§¦Ó³vžF3“ SíÿñK±Ši÷+Ô÷µaµZ±Z­x¥LáôÕn®È˜¢cI®w;¶çbâs5>NÏzÅØ]"z¶oͪø3`po§JùùàA ‘®Ã1µw Ú½ÎÖ£ÙØe@5`6/`@™Üöó*FVù §*#ÙbHn}?£³ú3a£“ˆ—C¦ê‰©Ij^ºMÜJ¥s%ØÓs)(¿´õÕþlìÕŸÞ­+ã}#Mª’ìv£¡¡¡ ‹þÚñ UQhËòQÉèk?ÃÆ=g)©ü0 Ó ‘%Émâùåy’½ìµÆr@–Ê·ÉI8~zˆÈkÜ_‘ˆ¨‡É6ƒ±¯l¦ÕÃ÷à_jG ˆìbk:”™"ðŒ£yÑ r~>ÄÄö[HjŽŠ:ÕÆCmñ´ŸÌ¹;òF?hÎÿ|“M…¿½EOQ$||ã¨Ýn û¦Má„Ñ‚^QQ].¤+Ì^²(€(ºµ’-c¼¹ïI!ÎW;3£¡¡¡ K(±Ë8\ „tåÓ [yÏÇÒÎ-¨HǯÌS‚"áønÖÙ…¯_wxƒûî ~¥b.Ñ #ïðoÊØÑ)[ðø²ïøvÿ~NŸ*Âîp"+@åáü||+Ïì;ÈÖÜ|JêÝNÓÁ“8÷ÈfšMNéo¬j« žÔhØ–¾uVòá"bpfŽÍ«ÙPpÉw3rÐÏ‚gT~lçµGæž^w“RÕÿ’²“ŸU„ã¼¶ —‘—YtÁä¥J¥äe—oø#­J@<¿`¯õ1 M€üxwÖ&¦}±–ŒÌ,rv¯gW•pÂÂýñ´çsîô Ž>ÅÉ'8~2§CA±çræøqNœ8á~Ì HªXûpÇ&–p`£vÿ'˜þm/‚%8UÍöMëÐ%dKa %¥EeÎ¥™’Åî­2ø…Xòã.Τg’½} »[T'ÞÄÎåÂUêÀ»×—|éx„ö/ÿDfqÅžUUE=½.°2Ñ5Ûâšõ;ÔXšvlCXì~&OœÏáìl²ó60eÔlÏ1S³I${ßx˜•µkS»ªe§OpüX&E ÷9ƒóMv±[{9=•VÁÃXV.¬»'Ò2è1Öÿ‘J]82Α•›KNÆ)ÒËåÎ'5444rÓÕc%Ë^½Ê ñDÖˆ­C Í×'I^É‹÷¶§A­ÚÔ©[‹Õº3候¨Ò¯y ICêÖ­Kݺu©_s3*¸±ÎˆÅ@D¨—y£Mxù"¦sÂU‡ø†Ý©gÁ½nîÛûle¸Ôútµ­åÕ-¨^½ ÑM¿¢Ùã÷Q-,‚¨p_L:Pñæžy¸cvOúy¦‚Z2`ö "Ì«¼ÂÌTjГ¦$@ç@ônÂsϤéÑg¨]™˜Ð6̋ƔÙOÐÐvœ=iaó}o«CZ5¨?‚o‚1€*‰•ðÓ—Çl7R5.›[¡C°„PµZžD~¤-áåGÇðÞœ/™ùÚÝôîKöhMCãšÆõòÉbyÂËÞ„.7…Œì"5×þëŒéEöP¸t-T¯×³{ÏÎedq×·1{öl²²óèÕ9E¥—™+­*&Ýï{ì3y%$V #??¿B¿V:Ž#iÇIݽŸ~÷÷¨¸®‹?¬Nî]y—¥}ÕÄÎÇÆø«­›ßyŽéj_üÝ7Ðи¥Xºt)ÁÁÁ$&&^æ¾]UUòó q:î9..IÂn·ãïçˆ븧Ç=øøúòú„5b .×Õ­f“ ‡9yڬ׌M$ U*â/ïµ*b3Ó÷þ»™7w.%%%ÿ!_X×Ex¨HŽ-¼}{æ˜å…£¢ÈFBªtcì‚×iëq1 SþZvTe+“îèÇ×zÝmGUôøEubÜïÐÁKøuÚWML¸>Å"üÕ/jÂCC£ÂÁZËÍãê%ZˆpÉ ‚èþžN1 ¨ªŠN¼9<ójίèô¦ö¼~†·¯"`Tnì° ¶aü©“Œÿ‡Ò×ÐÐøûðõõ¥¤¤„S§O‚ ²¢€ê¶ÚØËÊÜQ2ݳHDQ ???_?M€üŒpK§¯¡¡q½PU•Ž9BêÎT$YºÌ|þý…@Uñò²£  [EQ°Z­$&&b±XÐëõ¿ ªªV¸&¬ª*ÅÅÅšÑÐÐи9/ $IÂét¢(J…Ÿ_)@n¦zš;w ŽúMëVç?#@þ–PªÖ4ÿpÏU¯ØÆ­þ“Å ¤ IDAT»Ùo’óêïÐ~oFU…œ]ß±ä`Ùu9ÕQçåÈyÇÙ³c=»ÎÉ—¯Ý]¯ÊQeì™»X¼ô¥J)§wþÀêc®ß\'Ôzñõã?cÂ+–³fÝ&¼mIÂQæ (¹69éœÈÊ¡TQÉBÊýõÉXò#Gïá‰v=`þq"sóSèÛÂ΢éË9îRPU Ñméß·6íHÃ5*ÁIFêj–~·–ÃT¦e×ÛiU3¬û|úzÉÔ®‚Ùq˜%Ë HjYHo³»8Kö0w‰“V]ëà/îç‹qsIS@M$vNÿ=|>c%'\ŠûœbÀ/¤ õ°ïû5œVTÉBLýîì\ _5‡ý«W±býò‘q:ãè8°M+•°ñëEl<”N .g·=2€&.œW94‡7æ(?Ao ê½Opw¼€3c _Ï\Åq§\ž AauiÞZfíç›È7ùW„dö‚5ˆ@J¿¬XÁ[P„€ ¨8íÞ4¸§í“-ú|6Kž¥DlDï'Rˆ3ê\‡ùæ­CÔ~âvâET…¢5x 0¬çª](rgñ 6Í_Àшnôkñ‡›¦ dÍ×KØz,» ²¤Ð ï‹Ü{íÛ‘µ‹ï7š¸ý®$,Wùš.{7 ¾[È™†Õ™ÜI&uS.[%ê$q]6¡ª.ŠŽ,àå±!Ôo'‡—MâqßêlëUŸ³­ÀŠÕd@/Ê”—bŽm@ûÛ:Q3X3¼h¤ò KÈL[Íœ 9øV©Fb¬¦3ëøú½ŸñHŽ",Ø Q‘q¹ Ø3WóæÿÞçXÂ)ÚÖ{‡º>@ñ.Þ|é)f;RâŠûÊBêj€W¡c;Žs"æ Þh¥µš«!æ‡E_óÉŠBB„u¶ã—ô0u÷NcöÜêGפNU t+¼}ˆ‡ªV"ÜÛìLòW3îÕBîòaÇ“o2…£üøqSnﵜ×^YLý ðrIÈŠ I5±ózÞ}o+µî­GAGfSH #:çðã7ß0{KÕ›Ç`:´Ÿ ‚k_˜9ùkŽ{í‡>+•IÏxbßÚ>fÔ´yŒùß—œ¶à/ dIÿ³ðÑ«t.ùW_^L½ ±¹$dÙÅPGi6[}ÆâÌ:<ó’‚UGùåtcê– \Gøþ³¯YœÕê†c\8JK‰·  —ó‡‹ñ¨LÖÚÑdÖýŽ «Pºh8ï-íÅŸéEÂÚt&¨ÿrŸ«†{§ƒ¼´å¼:fÅmdš´~Œ„?Zgöí|8ñ+r£Â‰ óųŽW‡çRöö[t­ªw‡ ¨`/güÈø·ýéxWÒÕï])Ž(ÏNm;Œ¬š³€ü¸.$_"@®zôô÷ÄAÐ[ðô4bmD$7Åkú2ûV¡àÜÒ3íß»#a´j‰¯g%.Mxhä*&¬ݻң{/XCü=÷Ó»y¸±g}%ùpõ}.ùAÖÇŒ«3˜gü>ã­­|ÑÞ›ãß&5j(õÒu`°Þú1>žÔ  gV£×cs9¶ý1b´vS1gOr€p¿ó1ož¥ßG;8q “syÏýtnŒ @0âáaFéè$ñò²`Ðïâ“ñùôSçÓÙ}S–.Èé³Ñþ9>¯Ë% –²ãÛw¨qïKÌz·PÀê±oñõ¬U¤w®‡P—ß͘žñÀfFwšÏ–E±ýÔ :$xxÐ8™]OÞFmŸ"¾{è%6ÔŸÌêÿ5à Àô¿›—ÞÝHËG|‰Hy–Ùïu½¢ñeóÈ ùèÖÕå± ,|÷#š ?Wdäà <~-}.ÿíúͬªÕŸ““ºR2ÞÆíëN£kã§–ÐV’uˆXµ+÷ñUÆ †e…œÝ»…ÂÒÝ2‡…{ãñ¤ŽîNeíúƒ”e§’zF ¡í}ôéT“S;¶sð—mœ8sœc9РÏó ¬fD_©O¾3‚V‘&à4sGÝÏä)?ÑxB ÖmðÊ·‡‘ÁXƒÁ¯"Q8ËŠ™ßr<Í“Ñ/ž¦iÇ4ÌœÁø%ç0ê<ˆ¬‘ÂCÛjH n„Ç×/eGaO<=ÌØMºËŽÉ œcå´™,ß}ŒB¥ ޽—d3¢PÀ¯¼Á✜²‹Æ~@ûÜI¼2÷(zZ y©An(X ˆoHûÜwY­,¦Ï¸™ô!‹ÕŸÎbþñ¦¼ûBãòTsÙñÝW|»d¹„ÐzÀzÔ•YµâEÇÖ²íH6µ½@åíÓùz{: ‡¾M÷°_˜õ}>yKù鈂ª·rÇããh¬uùÿŒ8¾°+¡´»ÓNiq‘Û‹¬CÄrî{^îß‹C†0x`?xi1é…v$»fOÞEÞ ó9íÚÁ„Y†ôOÂ!©çoZÞØdœ>ŽS¯×v\‹ÐjÔ÷+bï+]é6tŽ öeNa“£õµ!øüÈ¡¯¾v¡Ô¡A­ÝL:˜¿9„q[—$dGù^§×ð2h†?Á¸Yë(¶˜¸8$%“€åÁÁÎT’NAIª(º/o/Žcì‰À×dFt­æ³½xõ±¦å œ.Œ"vÁ*ö Eߤװ2x<³cW‘-€³¸ §£ 'ò•Sg Â-Ìz®/ý‡ eÈ€¾ô~|›ÎØ¡V'zå~Ê#ýÐ÷½Z´Oæìüì¨ñ÷G_ÑYÕXêßyŽ×»=H—Ÿc÷§i?¤+I:¾[|(æðò/˜úÞNZ ç$K>œÅôï–òýçÓ™½h/E^aD–nãÝ?fÑþ œ:‰Ò‚òà_tŸø,Áó`ŸÃ…jò%42Ѝ¨("²ñð×Çô:Œf3:½OOOÌÏ@"cb¨ rö—ż½¶Ðï>4}ìõWì&¢˜]ï=ÅG QjÀ¸c¾ÚD¿ʬ]F« ›— ³D³/áQQDE†tn#¿=‚Õ r~ÍËË+‚¸¦gY·©<W%evœŽbJÝ€# –³vu‰‰$†ðサ¤îÞÀÜ7ßeÎö,y[xuôË|uDÆvncÞYÎ™Ì Lyä Vf[ðô²áuä[†<ô='µ lãU½àÈhb¼ÑÉNœÁ~˜Å Øñ¬õíõÐÏCóox£Òb¦©"‚â ãîíû&»L™!Œû'uG3`]C%:t¼QYÂμDºÜ[_¾ÝD`ýD”•“³j5Ç„Ž<õ”ŠË V`ºP¥hî<×êR\iÒ«O&÷=ÅÄ0: ¢ãbñv¸ô>„za*MgÏœoé^ð)^‚ÏøÜ÷psLœÀTü Ÿ¿¾ŠmKC)Í´ãÓ±7)­~9…7‡ÿÈ'¡~xyøÓà¥Ôö€sÙd'Ô"ÖKBÅpÁã™dö"ä\ÙBzk ;. Y6ãîñ·íUEgÅ78ˆ˜ØH N;v[žz<[òü€£ÌÝv’ü*}Þì/uð¤ßlˆæë‚ô=xáîĊ*q ïâÌ÷kQ»· äÜ/¬ÏéÀk)Up ñýß?1ƒÁFlÃæŒs?!cæÐqlX¶ÅF;ïæéa ±Ð†¬šÙ¹½„|Ù÷ s‘áéùäªz|ëÖÂ6ëR] Jú>V»žÒúЪ÷ÝTÛéÇË÷Æ 8OW‚Ͼá ì;š‰²Z4Á]›>³»÷áiÐ_Qç»ørqÕûþ§z&b8n¢^×ìj™ÏWSŠi1í5V»D“£ž3'³[QqÙËò¹ÈI¾8©ÓÛl„Ç7çÌšmж^q†Í?Ìå«™Äv©CHñn¾ÿúqñM(óŒ éýÏñp•üÔtñÞaˆ_ _ݽ›lÉ‚É;žN£Ær› ÈŒdYðû¬-êÌý^šùo£¸°û4`À¨‡hSéâ¼’s{(ErqÏØÚ<Ý)7³«`Éøþ‚rfð¥N£†ØdA5;Ó³a¨æðš%xÅ6¦ÛˆÆtr—¾ÃBgm>e/ú¨ÆD¥~ÌâõÉpT¨¿DˆŒèe m<’Çgbü—_°à‘ÙìøÞ[bž}ÿ%ÚAÛ¿Ðá–H“¡üüM*…wqg‚Ø]H:/BãB¨W? ÕœÄÝÚSÙs²ÎŸØÄDêmç¹çõÌ߈#BèÎoØ›7œÊAçÉúÒ~ØÂBñ9/ ‚¼Þ{Ž> Ô ôÄ=$‡RÃW%£À‰Ãy¥‡ƒ<ŽV ᮂUŒ8…}±Í©' „´¢€¼ËÈ‚ ;*ÎÔ/÷Ü| ê·¡–o&FÃq2ò (<‚’¨æ·Ÿlä€9ŠðK*È%/¤9|Ýy O¢ÚÑyœ9“JªñN‹’/ òÜÕ¼>ð]VmEí)¸˜šëòÉ9@ÀêODÕúD-\ÀVêÑàJE×^L‘o ciX5ì•x*¹ íëes`µ@¸7`0[“› ÌV"Ív ªŠ•HŒEtT…fd“• ÜâD¼%F5ADo0\aV(Ÿ_*2íÞaþìOéî¯^ˆê§Š¬ w2jØÃŒ|x0=›kÂã·íˆ—.Oláíµ™ê4¥¾%—Ý~u¹ç¥Çù_O•b“­[8-^l€»b£_çðÌÌ#îka­y|d[‹Þ?WfxŸêXâHÓ<:òlvœý‡ÜÝU´Õ¤~Ø\ÖîÎfÇòu4ñ,w·»“>=ûpWG¾[ô3ef#F“f÷L‰½E²ccˆö½Åæž5*{Y®»’/Þ#>¾å Û9|{×(Jzö †}³6Äòè2räH†×8'¸#\ªÎRJwç`GÀ•±›5¹mÿâ0|ä!ÚU²“¡œ¯Û¢Cœ˜äͲáióÁxþÙ½£=ú «7§c8°žµcH¨ÒŽv®÷Y°÷¥x3ŸnNà‰q#ydäc ©¥®–çåBaZ°ùEg[Æ®“€x…^höÆÃž…O`-z ÁÈ‘#ydDGªV ÂäpºÃ0« Š,!)€¢^ôF.ñ4”/H¥­ã‹Æ4 ׺üOQ]”—áp•Ï u:„CŸòPǯðñó@T%œŽª<úJ9ù22 ª±m{UrQ’íêe•‚¼BŠáâlS¿™C_/"—`îlA9´=ò"OÖJ¶)„S{1øÃ%¼:¦;ŸKNDBžR™çÇwÀ?è(yS;Ñò“w‘—zRÊ$M'mñë4i; IF–ÍDÆÖ¤^ ?ìù¶úw1dÀ)FÌà´fè Lá÷â}yû(),¢¨0‰HÇ<É#Ç1°ÉvFò ¼ù1O¼öx”~c»ðÒÓ£hý©LÙ•æ½GBTmžx¦=·c±—Šªº¸óåÏèߨ-}[m „WöÆ£ÔŽ$É™._ß "#ùhcƒïpÚË(.=S3–®ý;qðÅé</oÅAwñæc~:]8%T'E…e¸d……eH‚ ãItmþ%Q€³aô›ÿ& ŒZOÿïĹ0våpè@>Ö P­r6û7ï"-³°<4«Š,ûÜ´¹'Dª7ˆÆó’Ý@Jñq~Þ+”¤²ï€žZõ"ÐÚÉ 9i‡)l„ĆaÅAÆÎmìJ;M¾OuZ6I"ØšË/«¶p¬  Ù¯w´ŠÅ„‹3›—²5Ý­ ŠúPtjDpÑ6¬ÙC¶¬–/+èðô¡RBŽB3Ճܳ!g‡vîâ~øøøâåéKt¸í¢¦#e²gO1áŸ?ƒ’“ÊÒõ¹D5kF5#Bún9‹¬‚Žªí'H…ÇØqÐ@­ú—´ ÕIÁé}lÙzŒ2½'¡QD†Ú9´-BTdÉ—øäh<ä,Òœ¥TP‘]â5!1Ò“ààÄæTÄêu ÷Ô#RÀá%ëØcw¢ iDÇÆaåÚ—“ÂÓèÜ`ÃvM¤gŒíB™—ä¦s.5•Mû71g™À½Ã`,ò ¦N#êÄdâˆìcIi‹PH”úÄù–p`ÃŽdâBEvyS³S[âËgM…à§ýâ«b)õ zƒ(̊¹= ØtÂJDÆDä®`}š€ÅËßÐXüÍ>Ä'–k5‡øì‰i¬Ló¡ÓCu1å—átùQµi}jDÞ´™gs±«•hÒ©6a=ÙìXº™“e.E¦R³»‰ÍýžÕ\¨‚@`åªXË,ÄWU9pPOÍ ý4›Ô3yýƒ@&-ï‹þTée>T­â_ž;g÷î$uÿì"H–J4¬HQ¦L@T!ž¹¤¦–™¿þÛvArÐ÷ÜÖi+]ŸïH„Aº*´»3é/[¯E!77‡ÃÉdB¯¿|>ÿ[®Lìv;¾~~ÿh<ÿžÑ¸)­ˆšövý°cÖ½C𘷂û­W~z‚ï?øˆoÒZòÉÄ”‹öJ×òÂèåx4ïÅ“½ÿö<ï™ñ˳,¤<9œ78­Ì+ùrâgTúh]Ì×ᆧ'Q»S)_ízꟳù Í™¢Æß»6¢ñ—1yFsï‡ï⬨÷ª!4ë1Œ$»çåÅn®ÍƒOÅ!xúþ#ò¼J·>9e¬åëÐ7ÿjM¸ÿõ„ë5ºÝÇì/d¢®[ÔÓÿšÑÐø·ÉcˆOÔU´Á„OP8>¿šVzýÏm2úô7¥¥3[ñ»Ž™"1Ikwj+ZhhhhhhDCCCCC šÑÐиÅÑJiäæn (Ø“ÖÄþÆŠùUiß2¥®cST‰}ï¥pÇ'é×µYßÈrrúÉoŽæ­ ö³ëKq»ý]îèñ™R?½ÕAó þµ›þÎoÙõððÀf³áé鉗—žžžX­V, :î¦ÊóÊïèÑ£“É„ÑàP_ãž{é€pÇ$dÚÏ›ŸŸ Æ£Åx¦M£½—½N‡NgÀâ5†-Ú°ÿ'Éeã{C¨#B†¾¿‘\A@ÖòtÓa¼>w€?>ÝÇócZîERçfСÝ;ìséÓieÐ#êtÌžÜ9ó®Ôqîûêtèt"‚àI|­ûxóÃ'I€ øÐ¨÷$v" (ûøüÑö^ø¬1OwØÄóm± ¢N@ªòìês”]2’fÏê„Õd@§Ó¡×›èðI S´}u/ËCÕ<Ç×KG/Bz¼È;_½ÇÓãÖr!v +•©[àá·‚ÅÏöR*¤ñ~Ã*ø ‚Г/3‹Üît2gÒÎ8„Ųr¡}G…G²ì—× ÿ'~`d-?’YŽýOŒœBéJF5®Œ§ êt‚@¯/²°+×éœì|›wÌ$ë_3Úl”¡gשlà&¿ô:oÌ܉ó:J_EvPRâÄ 7âãÈÚ#GPÒ¾a@”€ è1M˜LAÀ¯Å fí’nêäííÍàÁƒIJJ¢fÍšÔªU‹–-[2|øp&Nœø«¸éš¹ŽŒë-ÔüåŒ|àÞ›¿›RUe÷´žDµëE÷£Ÿ3o_ºÛÇQÖ¼²­2UKAí”Öx•=v;{ ™3óh–ò™š4øã¤§²²(ˆfße½¨%ÎóYsNÍžˆ³{}RZÖħCB¾TkT%œq9EB—_Êp9ìäÍ&tÓ/Hz¶vS9#˸Nœ®Boy‹>6’Í%WVQË62*ìïžG®EÍxdÚŠeuß@R¿šÅôEÛ9Þ‡7§TVQ³žgo÷ç˜s" ÈœyaSš²)¿»ÃAié7„ˆ ýǧ1x¶Âéóypž#uÓ«ÜÛöQ¦ú2½†ObÑ·ý‰Î* Ôu‰{E©„[;žýb'%²ŒÓáÄé<Ê”>IXw|É[užb]–ÊÆ'W1åãØUXóÚ¢¿z›ÛÄò.*ˆÛßAŸÉóXwa^Dî±ltµ¡uÁ\Vý‰:“ É îÇ»ÎP*˨ŸQð`C¾ÊÂ~Õ±V@@ÁéT®}¤#¤2µõþD,ÝL6z\Hòu…òTAÉhûÑ~‰»‡ÇÔÒ}Ì}çYúZDª’ýÓ4ú$ßÜ' ™1c;v¤zõꤤ¤0`Àî¾ûn† †(Šš¹¡cÐ!Š:DÞ}ÈETpºªÐ¥«?ý|”R'lœ0’ØÛnCo4]èœz½½Á€¹Sú¯ÞÅ>Mü){ˆˆz¢sæ >ù¹>U«5'9àwÙ%¥$ªV3 Ó°Zº0mJ ‡Œ èТ^A/ºýœ èÜ×1F¸SrÏâËgÕ€j͹£@ÅžCN‡^_Þ>*SM§Ç êг±ÃŠxmêcT7›0èõwòѾ7)õGô:DÁ}?Q¯Ç`У׹ÛN§CÔéÐ!ry ’‹£¨s;ƒÔé  z÷૪(‚ˆÞzQEÁˆáØT^Ü1ŽÑLç}~:c:?0™¹kÜW䢎þ¼™ >©é¹’…«À)V~þ"mê´ uœûÄrµ{ÿÇ–ã™úÚ3tkX•jAîëÍ_XIf¡½NDWž7‚îgñá9;m&‡$8õa; zAÐé[2õ¨ö=¼Ýw «—$Ä?šû?þ…Ÿˆ/?!m¥J˧Xm¡Z^‘Kٲ߄±¢±Ûþ#O4‹Ç"B&í.w¬ÈVž õÅT~êzÀ"…´IÍËÓ1y´gfº£xÞd©Ã/¨&õÚÏ䇸¥êõèt"¢XÞnt:Dù>ÒoA@‚¸gâz V3fØ“ôiН ÐeúZ&÷HÀ&Üýi6ÊÉIi7‚›éEAyxå±¢(ŠBqq1&L V­ZÔ¨QƒjժѤIt:²,käïF±—ùð“ÔŸ¼ˆM›Æòtê‹<ØÞ†Ù ž70#É’ËÅÞwÇ1«u-ªiâàÖŠžUö÷õÃûö•˜b;ñöX_jÖÇ JHª{ЬY¾#>¥³ `¶Ô-PTåR2W &¸|@,4xh¥63¢"»Maç³ó\»kÄ„ŒŒŠ"Ë(@Ù³™-ä#…à­ÈHrùo¶,fVp‚<,pn?»êw£cÂå¡\…¸x’6ìå°ê wå‹y|¨Òð]Žè=®í/MoÁ;ç^¸·Æó¿èǧ©YP÷qÞ—ÆÓ"H Á¸–<4¬«ßEÕÇ'H’„$¹ƒc‰¢HlµÆì>p€¢‚4¶ühfPŸÆ$VkÍš…Ë‘1!œ:ƒÑ»5cÓTÔ¼é^¶Ÿ‰ïÅÑÃix·ËâLõÄtô_Ìâãu;È7\(-8?∽”ð!+q¹dUű  Ã^[Ž`Iæ±YhÕþcÒsNðùÀdÚ¼yUUQó¶1®G/NÛ €`:s§ÎžAÔ]9ÜáýŽƒ9Ñü](*ŽùAüoÂBΟaÖímÈxç …ŠŠªªÌ¸C$î‘u¨Š‚*;ÈžÍÐWÀdÔ]XË1[= ŽHâÀἫTÄ)æ™Kºßöª*jñDíßÈòÕû)Þ¶¿akÈÝ3‰CO<Ê¡!)Üü+?šÁî2;ÒšmÄè@QTÔ¥Cù e(?^GÁqéKUUJJJ3f $$$ ŠâM'²ž i®Ç»JUš®YÄÊ|º¢7§€O5×!îÔQNz7¦^½*DD5§{„ŽPT*\á¡Ãý¼""ê‘÷in2¢×é0u™‰åPg@Q@UÜBXÊaß7É¿$î~jæœ,쀱Ja&?²6n#Ó`¸¼Î‹±?r]ï¨A„Æ”»h³d'?oÿŒ®Wžâ‰Q¸¨Þºö½ECQ‡h0ã}Ïl<Ž'M¼èÒ]ðñ'&¹ ¥ —‘ws]±²·ßèB¤N‡Î–Â[Ó—s´¨‚ä´LôG¨Fr“{é’`øxŒd ¹ñ=tª\~Ÿöw1”½ì?uz("Šâ¯„ˆÝn§]»v˜ÍfdYþ• ÑÈß)BÊŠ©õàËt Á½í,ˆ&ÕÝê ©áÛ—edÉEɲh’à:PÄò·bLªNgïlæ„ÝËôS*Ç'—‘~à9™êånÑ% I'%öò™ÖmÓP•Eôž6 :tªŒë2…Å…ÃKˇ—£ªù¬y¡3–Í»ÙnWܾmyêÓ=îûì׌hEùäF äë½Å(êR Å8•M1@p êïžÏw»J/ %Q¶k7ûZÖ¤ª¢ +Òåy8¿&PÞ¡…KLóÂe¶zYrUðÛËgÈïôC×ÉCˆ_¹.B’V ŸÅ¼%€ ÃÛŽ;Õ¯™wÈÉáÅ3Xµh0á?’;>Î<ýÖ®=ƒÁ ^¢åÉHŠŠ¢×£”K”?DD{຾8²‹=Mk‘”9¦ñ_pßa²,#O-—raç–ª€ˆ“?¼N¿GŠùPUQ•,6~t?Aùeî24T¡f˜ÏìM¤fݦÍóètèd;N§[KÄåÄeÔ£×›0SŠýÒÂ:>‰ÆIóxNA‘e¤]¯’dw»Œ¿ðH:_+Õ ^ÙV¹#ê^1;qPìÓ‚ÑíD•edYEUWòd÷x—:Ê×äTTµÜ‰ì¥;Uåb{•”é ®Ã詪*¢è6V¤‰¸\®›VxügÈ•[zUÕíÛ_2uá‹Ó“èb-SÞ`dvmgïõeÿ>wãU§%¾¾`t–s:“Ó9 T­IãÌ ¬Ù|Œ¹ä”°gÎ|v×­FÕôi7è ²²²ÈÊÊäìú¾½I’„Ë^@vi¹YYdeçR”[„SQQœ%áM‹‡ï£•ÿ*ú÷ü„b¹iÒaÇñ«ö!á(ÉG¢ÓLâ6£˜¼-Bòäô&>ö›Ò3ÈÊÊ&3óK†5Opÿ;‰q¹µ“_5G ù…”•‘ï²##a/Ê#Ë^HNv)”ºPU%ù9dç““•EVf.Evér!ºô ^ªñ(}b `5c)Î"#+‡Ì2+žæòu1ŠÊ5¶³qÓv6ìPЉÓåÄ%å»a5X>ggt:¤’<²$'Î]YSlDmÓˆ^%äååp"¯[Âw¡5‰oE°¾˜¼œl2ó )v¬ä±&ÏSõÁ>Ä[}ðiÕ™ú– ²²³ÙúÍ×lDEnû6¶Ùó(3‡Þ¢U¤2²÷¦²vÕ*åŽöô…©¨¦cœ>åÀ^”KVI>ٙŨÖ*Ô)™Ã¢yI=«râ›ylíÚ€õ`XÀD&Ï;ÊÉô²²s)“<ðiÙ™ú†l²2ÒYÿí7luèTõ¡(âááK`Ô^övn꥟£Iw°{þçÌÝk§(/‹Ì|'”I(ç·~«—Žê…÷‚TB^VYÙ9d}õßÞÞ—.×) ÔÕ„Â…IÉM*<þ›D0áíã…Õ\ÍL4ãëç…ùÊÜ¢•À@OôzO=ÐkN6¯#v6ÿtœº!±Ü^Ï íR²†±M‚iöM%õçíC£)|û>êÇDêC­¹·³}BGĸûx¸d±±±ÄÆV¦z÷m ÿl0Ñ.¶?O½ ¢ccˆŽL I§—ؤ†êgq7dd¾8”;SÔo&Ç,!øy.¯wÁŒ¯¯£Î}=nûç1­}oÞÝ”‹W9œµŸ®‰ñÄÆÆP¹ò£TڒϼÞ!ج—Ol•ö|ÿ>cšÈ’o^¡ßÀûf±áíûH$0°Nߋɺ‡·'>$’J±Q„7âéyûȽ A²ùlÆ9& jŽÅ4ëÅÓ«G۬i<ݺ|9Åh¤iJof}ƒÕ¦0¬Êù粑\›ŽÇRÙ}â(«ß»—_–ZoPÝq[áwjo?Ø–Êžè[¬¢Ëð¾tkY›ØÂïx¬}=*Gãc~Šà|ÐÕ"úòj«ÉÜ_™Ø˜žÏmM·@+5óð½Ó=¦ ãN·£·ç0bMþÔìþ«Mí¹ÍWA‹ NnŒËűñõó]©D`ðí<3O¢ßw_Rçè[tŽ©4TǸG;bò箳1NlOÍøh¢Ãƒ6ˆ—›¼E‹¨âª1¶¨=݃¬Oü/Ö‰GPqÉíY¸h+`Áâá…ÍTÞüiûÒDº%â±d/‚ÃB®ÿ³·çb ñÅjA´àçï…I'€hÅ?À ƒÞ„iß[Ü–OlL4±#Y»°ßu3sWdÂú=¯›b¸ý¯Å¹ÌUµª¢ B…‹´7R¼¬PUáW^°¯{ù«€p•»^rù×߸òÊïÈÙh<¿;2Ź+y¹ÚbºfL¢É¯>OgùG3ÿTk¦¼ÒôâåÒ ¼öü¼[ôäá.12Sö™²YñâtvJIôíÇU„?–ò…´JI[=‡ž8J·­/ÑàŠÏë‰.ýüÂû³Si~¯‹ÙëFu«\–erssE“ÉT¡%å¼)«"í¤¬¬ìò¯Ó@~Kò^>Û¼z#ԄǬ¤+×þ†ò®qWáZé öß÷CáO§e%4¶-û9)*üõçÂxâ ïþÄF{!I××έÓé0Ýû÷Ü»í\—½dYºðÿ•/Ira4ÿaMDÿo˜JKËÈÍËÇáp¢¡qk hê~€`Ïàì9áŠY¢‘„6=©.Êä¦g  ‚{F/DÒ}h H.2Ó3þÞÀHªŠ˜Øž6ÕA.È =ÿF¦­"XiÐûYÔ² Ζ Q ª¨b{>˜&PšEú ˜ ¸¤?wÀ²0=ãºqºEˆªªX-œ.Ÿ}1÷¦[LÒÐÐÐø'ˆýDŽȿF€(ŠBhHÃöþ7¹ÊÓÐÐиÁ³k°;šù=B¤Ìn׌†††ÆM€DCCCCC šÑÐÐÐÐЈ†††††&@4444444¢¡¡¡¡¡  M€hhhhhü;ÐkE ñG“ɤ¹“)GUUdYÆétþf™èõzôz½Vv—”ÓéDQ~Û”ÉdBµ9ïyEÁñ@׈ƟB'ŠØ–.]J^^’$ÝÒƒ¡ X,ªU«F:u())©°¶pvy…õežEq/'+â3«™øÒ>˜wƒ²‰W¹OâÔ ÿh9ÿQáñ—ÓDÕ¹‡Y£î¤Š~þþxYÌô˜´™sN z¡¢ß©¨ŽlÒŽfQvÕú(æÌæÉô:|«þ†²Ó4[XQÁžÃY¿¿xНZIÏoôÎ|NŸvbWUTшÕÓŒNUQ‘°—!‰F,F•²2 Á`ÄlT±;Á G¯‘ìNáæ.‡¿lŠQAU$TŒyß_‰Y1˜=ñÕ— ëÌxX¬˜ôX *9¦ ^³Ë„ÅuŠœœbœ‚«Å€Ë%U<óþ/j *àÌã”=Ž»žêË=]kã—³Œgõáiû'¼2¨)a“ÕŒ^q”¹PX^w‚ íRÆ^R†¬ª —’™åÄdòÀdwbŒX-FDTd—{™™ÿ–j¢i ÿôT—˜Ì¨!!<;s ’Kr›DTº3ÒÖà ›?á±}XX 'wË{Ü7x>ÅÖÎ@ïvS8 çÔO?0ã•ò²ü­³¢?; ýe᫪¨‚³o$UãILL")1بü„tÖOLU½ˆ9 #>Ü„Ëp˜ÙïÍbÞÆ,ž5‹u _aPû’Ïb_–‚^n†§z|‚Ã‰Š % ñ~&þ âÎür</e%Õ‰'È˳©ïìq›TôÓ?&ňÍןÐèžÌ/´âÊKåÃÇžgå÷C¨W§—æôâ1$Í´î÷»TLÂkÝPÓ@4þÔàçr¹(((øó‡áDr±—½˜²æ¯2q[^\ú3ÏÇ:‘e¥Å‹Ódƒ÷黎ÃNÁÿ³wÞQUéßÿÜ2sg&=„!@èÒ\šŠ(v±bï{[VwÕU×Õu-è * 6QDdAED¤é%´$žL½åœ÷ ‚®…÷'„ûÑ«3“™¹sŸ{Îùžóœç<ç-Æ]÷"MïO 0{9KwµÃYñ>±6£™ýÕnº‡v²£<_m5ÕÁâÿÐŽã „øEiBB¡µµµ¿#‚MAa"µ»Ù8ý/4÷]ƒ.lLk_5Ž› –2ib)—}´… š}Í‹ÿYŠRQAyuŒØN›SNÅ1_7嬓NääÁHÕƒTVÿ1.Ðäää_€`Û6µµµ¿³Ëìʼn„‰™&j(HMu‘¨B ·¹ëW°»în¸”.½ÉÍí³H)™Â%÷½Âq÷Ű…$ú˜[û.çÒ¼b›Ô­{“[®|ž.ÿΩ·ßÀ·¯7áñWG^0‹çŸJç©’ít/ûžÓæðÆß§Ñô¶cñ…ÌCR>ý~¿+ .G®ˆ8ŽóÛ{ÒÒ‰^8Ä,qù¼ZYmé2ÌÇšæÒ¦C˜ŠíÈ´,Bÿ‡ëöØá×6œŽãü.‘ÂÆRi1èa^ù ÒB&BÑñSÂW}§ßyœÒÓ‡¿*¿G%"„ŒûóU]GÓ ü‰I$ú40?$`á·øñ÷úr'¤ƒñÇŽ£`KP(;v°Ùúˆ—Ny[×P„-NaÍp¤ŠØ²ž¥u“x¥à T R€7éR¶¨'ÑÌg {ü$^B»—òÁ’·x>ûqtic;Mé{v6e ´p½Ý9—#^D~»€Hö|T81¬œ+y|ø9¼úõ ¡ mºßÇœ©çÓÔt((ªŽÙÍÊìZ>_»œÊÒ^ lœÃÊeSX×¹'9=ºá˜1UEA ‰DAÕT¨obo„$R=,þ–U5~"[׳r}!;5 UÊø(DeýNJª‚„4ƒ„à§ÜÔ÷NÞ\]BDóâ«x‡‹:ÜÉ'Õõ¾ÿm“8+ï^¾T8äÑE¿Æn‡¦Ì „³Ç$Aêø“×ñ¯±&œ[@^ÿãè²ñEÞÿ¢Š°ãÅëõâõ¨qÅ‘'§ùËaâ7>Ë×ãA×ëËQ8†¹r Û $'[¨ó_fÆÚ^¼=> ßÀ¢°\qùƒÄAH‰¢€”!,bѾ<øâ¹hbͼ“å·¢u^>ùºÑﺨLò!Ó³I-òp|¿f躅™”@ay=šXÄlDÖ§À‚½“ÎŽˆGËÔ‹ÖÆ[:ªXÕlÿ|½›ç’—ŸO~~'þtÎ$ä±£éÛicÚ¥Óï¶—Xoæ‘§ $Š%’4œó.¨åÓ{F1üæ)¬)wöiÜœúQÈ>6ª.çE=$çU «¿à™›GÒ±e-2ÇPxêÓÜsã±4¶ó¹åý¿¡¾v!ý;åÑ6?Ÿü‘Ïò}ØU ìþüyÖ=ŽmC›¶ùä·ïLï«ß§‡0Ý”ñoñãïéAþþŽÒ¾¶:аÎÿøì¾6Üß&aò3Ï]ùù-¶;4âõ?¬sÃ:ÿ³\‚±ýìÖÐó>ºâò›{{r;í®¼_Ó°íy¿›GŒ_]~ö”97tÜp8ØÁ—_]p¥”ÔÖÖÒ´iSvíÚuToŒäõzIMMeÆ †ñ³Âáõz©ªª"!!X,F$9jݵB233 ‡Ãض¦iÿÓÎ¥¥¥deeQ\\|Ô×ì¬,JJJ0 ã팸âò«zÛ†aà÷ûùè£6lGuoZAaa!‹-¢k×®?Ù+Bмys¾ýö[iß¾=@à¨}˜¦Éܹs?Yޤ”´jÕŠiÓ¦1jÔ(Òbã©£‰]»vñᇒ››ë ˆË‘# éééŒ3†É“'óÊ+¯õîEQ0 ƒ®]»rÒI' ú>Ó4’’HJJ"1àÇ«ýº#Rñà÷{уH/©xð¼¨û)RYó§ñ»ýžú›¤ 9•¬™ýO.½ñ#ê’ Wý]\\\ùßÚ¡âU*XóîM´Ó4t]£Ù€1<¿Ô&Éû /A5H¬|›1g<ÃweAÄ)"ª—„Ý“9ì)VÔÆ"‚i…(¯#öüLEAA`EƒTUG‘ªâ®ØwqqùCÑ„©é*ë¿ØÎ ÖðÀºZNK_ǧs—³céFp i!l[¨è†UØØBÅãÑÑT¤MÌRÑ5‡PÐBõú0< –¥â5<õ#a£cx:š"q,©èŠÀŽE±åÞM×ÑTs(h^ E GÁãõÄÏÄ6cXBÅã)=èºÀÌ<)ïJT]EÕ¼-žL ¬h8®3ªŠîõãGÑaÇÏ«( QPt/>†‚D86–i!׃®* ,Ó®¿ËÅÅå((9@b[ùI|m6äL®¼ª _¾žÛoǬ’TRS·3uìeÜûø|ÖÍšQÇ4Æ0 Œ·2»d¯Ýû(‹¾¾ŸA9èõ—åPò:#ÓSø}øü'0a‡†³îY¾–«¤4ÏãÏV2¾‹Aj»þ¼¸>• èÎ>yänÆ^4…m©I$¦îä£;å©Ç¿fëÚW¸ _FüÜF×½¹–XÕÇ\sÙ$þq] 2ÎeÊ’8óìXQØñŸ‘¤$ðû}’†ñj±]•Ä‚‹x°§ŠÇH!§ã|NÁ§ÆÏï“»øî•ËÈ5 #“A—>O¡žŠgÝnž?wî¹üsÞV„¡Ô®îáîqtGÅD;*ƒ{W£KÀ£©4o”BÓÜ Òüãéþ£Èû—çSUè×S‹óÕª-œÁb>nÑ…áÝwðî_6Óï®™Lº¨«ÆÝMYÔè?còÖÜòâÕôÏ[ÁI‹¸|óvÞ ¨›ŸgÄåÿfà3öâÍôZ¶›û¾¸ŠW<Τ¯¶2ûÓ»9ïÉ×9ïͳI¬bû;Ð}`.k±pÕåt2 ù2Ñ&± ›‚.xeîżâM uù“ôxk1ß·7P¿½“…—|ÌwÛûÒ&8×£•Øv”f½GéEqWüì&2žúŒ .eÕNú¬Šð\` 3Ÿ¼„›n|W/ócx+Yöé >y»+ÈÉô*[Ä+f1ãïOðåέè½_`ãg±û‰'Ù í \æ‘¥(”ÖFˆZŽ›ìØÅå(BJIÀ«Ó8Éßp÷‘@Iu˜Ž­šï÷º‚ÚÚZ[öåîÏCŒ¯^Å[»¥‘ÁؾÆ.êF¿ÐrÖ~·†í/i“Ô–‚'àyã9n¼x9±Ô Ü4þA’l@ù— ¨hž­[Ù Oᥬ‰ìIn¬i—²IËÇÛç4†çixJ»1 GÇåy(ÏÉ£ó76v½¢;ŽC«6ñ¤ocÞÒu KÞE~fÝwD Íá™±·òØG+ ´¸”]'u º`—”MF2¬ï(:FÉ$†w½ù–(xú°Yó`ô9•a­$Z0™ŽÇ¡íÔÕlº:=#Z¾œw¾þÿTîªÿõyœ~ßM m»›™wŽ£ºq½ý::c8¦‰%%-›6B×u·F¹¸eÔ„"쮪!39pHEä°iMŠ«BäfQ]]}@>,EQ„mI)àœg?$«ídfNû/…]Kcc¬ßúÿÝ“ž'v¢YjÝþ³KÞ]Ë3'œM÷Ë7¸=WE‘2>i-Lbª IDATaÁŒèè÷ÄséùþYžÀ³¬ýŽ…™ÓÁÙ;HÙ6‘‰™­H•Ýèô%ŽzŒõÝîæÛ·Î¥Sðm.¹~=>Ó>ðÛT¾’—ùSïw8eQ93;xëŸeè5Îï•H¨Ÿ8—Â&ækÍÀ+¦ðÔKg’Š"HáàˆK¹ü޼{ÝUôÒodô‹¸lo…MB¡[“\\ŽÂˆÏ0hœ–ÊîªêC*"GD–®©¬ØPÎÕ‡®:D‹‹Ùi†‰tÊ%S:´~6éË·±Ä)%çä?‘·{ÿ|u:³4æªÙŸñây™P$â+׳®ºšº–ôXóÿ˜VEMmuuuÔ…ÍøhDrÐȨ?·íò:û ìšÃ§Ë,´¾Hˆšˆü^t-È"]5Ù6o KK¨SU”}‡*ž~§0°i˜`0È÷3Þã;%þ^é˜D#Qê**X±økŠ/9™AÑfB2RÃ8sžåol¬hu!ªñþ´·xmºÎèg_ç•;‘.¥ªFqÝV..®”òù#B@„¢‘#7“òþh“ÒIË9™}›Ày·DJ0L,!‡¼NC8X7ÚdùYd-x–+úgÐ[ñHêÙŒîÙ’¤ì ¹ëö•<Ò?ŸÁù¿ä%jÆu¢uN69ÙÙäž1‘bÃOb‚U‚¢TÝÀï÷ü0‚¤m‘Ò&”tÖÒÚ?XÂ.TËÿ6惯o#Í—M¦ÇƒÏoÄ££©x øœÜ빿߳ ËkIv‹ŒÛÙ‡¡ EÁYt/Ç4Ê y—?ñç’ëøæ/}¨5Á£6¢Ëk¹þ¶<ž9ÖGJf3šµ?™Û?’VöOŸÚŸÖ‚ë6dÓwØ ü&¶ˆåâârˆQv•×ÉÊè­‹®B“Á¾ º®S¸j-¥»Ê8mÔ&OžLYycÆ^CE]x?u2C“¿h±ßΟqa(ª†×çG¯_‚-“XÔDè6¾ÅÕOÍGx%]Ø%d£ù|xuiG‰š6BHTo>¯Š´ÂD,_À@Ûë–2‰˜àõB,jêÁðJbQEóàÕ㥲¿ë^ ³‘ŠDÑ o<’ʱÀÁ´@÷€mÚ8B"¿¡`F-o¾z¯™°m¤"0M0üÞz…—HÛ$sP5¯.‰FT¯Ÿ¡£HP¤À4MEÇkè¨RA:1b1 Ç—£Þ…PQUCÆÿpa© ”…UbÎþ\hšìãâ Îäý÷Þ# qĄ̈Já ‰í/+èºÆº kiÕ¡)=öˆÕSÀŽE°c?V!a… [{eŽhÈ>à\{÷´ÖÞÇÒ±ˆÆç¸<>Â6Mê—h Ò6‰Úæßë8ûüiÿp3DèÀ· YŽÆöùж~|‘‘^sqqq9ôñ!9v´Žœâ6 «š˜ã:û]\\\\ùE(;Jì‡!€‹‹‹‹Ëÿn>>W@\\\\\\qqqqqqÄÅÅÅÅ¥!rDM¢+J~—‰ï}y”O,ïgïìÿ㛡 çóøÃÓX]Æ«sq9””î½÷^,Ë:lE¤Áˆ¢(¼5µ¾Ü‚TÅféóòÖ¼ÕTü’5‡;ßæÊ«Þ¡ô ­£Imñ*æÍ/b¿=e-[ײxÕT˜;o Þ)D( Š"X÷ÞÞzÿ¿lµ"®f_üw»Â–ÛR¸¸däqï½÷òÎ;ïððÃÔ¯9¼8bÃxmÛÙo__¯G‡ÂÏYQÜ’.ZÑÚþ–·ç”ÝRp€Ý¥ƒ)4¼û¼.“åšk Ávº¶¿²Ú6–PñÞ}_·¤¢¢*’àûño´ì%, R b¦M‚ûeðztÄæ%l\¹ƒU§w¦‹\Ŭ¯6R߆<» ë*¶ˆÛZض” êx5p,GÓñªûßÓõ}¹áhªŠeÙõ¢(ŠBjj*wÝu³fÍ¢wïÞ¼þúë\xá…hšö‡¬8op#!ä~‡ 8¦–ʺ­|_l]ÃîνÉÏo:w<'×™¼¶mh™;š …(Æu7~Ì”?Ð.ÿæ”/`ÂKßP), ÿu*-[·%?¿}†ÞÇ‚X ^CŦéÜ6*—ì–=}ýklTRñ"xI¢„^J¯-hÞü8n}u!»UÊ~ë{ÈøÜ…ñ£ë2%tÊ ‘˜°«€][¨lÞ’¬cúºô%.=¹;¹­[‘=œÇçc Eõà/ŸÆu×½Fau uçÛ\qùd¶où[œÝ:¶í èÞ÷&fÅtÀÄÇÛÓ<ø.Ý¥ hAF‚ƒc;ñôðR`®}‘3†L¥÷äù<Ù¤šâÂ÷ytr°¦£’ð¨##TGTQPb!jS»3ú¾ó;¶ zÈBÊéY$ÆVoYQ~"üPÚXJ{ºtiFlãL«Âqy½éì,áÉófeîÙ<=ëE:˜Ó¹þÁ šeã({Â{}©šîAWlˆD±zÞÇûožI£¨@¢áñ¦ÑÌ´pó0»Ù£ø=ãŸè‹ÕÏ-þ\.¬Ã…#7 «Þ‡øÃ!08vHfOz•uµÐ¸eS³1ЇÃû3 K2K–±ÊŽa¡¢Þ'ùCØ©«`{³S¹tHí : múšBMG“ ªÇG"@u…åk©<¡/Ý£&±F™dDVP¼b5á&íèܹ]º´&+Ň"Ä~ç~P²{¿Ytî‘Ãæ%søü›õ4ëÚB¥y:ÐkÐ`†wmIóšM¬W¢~Ô¡8Äl¤Äë'àU(3o„@¶Ê¥åâÇ™US·gçthן-öúÝÃ=Žì:tä‹aƒZH(M]»ÐM?ƒ3 rÈl 2ón:~6ã7B×<œ0µŽFu  “HÄDì¹Â"µÑò®àÊæ7“ã š™Í=ëòèl[ˆÈ6½q©­ýÅÌPÇòêÝ VÕPSÛœÑwÜÉq)³8%QÇg((9góÔÜ"Cç¨Y!b;ж5횜əMÚѺ r2—¿…7®i¢xèùôrì? Â$ ̼Œ?RÌUùé^ƒ3¿H¡MØDè'òìç×3£—?ÀŸÔ˜œ³Þ "àuW¿º¸.£©]åu²2z ê*4Iˆ}þ¤ë:…«ÖRº«ŒÓF`òäÉ”•W1fì5TÔ…÷k(…„Œ€ÄÐ~ÙªãU! r³¨®®>èMÓ46n*byá.¹à,¢1Çq±bA¼<^ 'VK0báÐ Eh ƒ/Ñ@1‚a$ˆpu1EÝð¡JÃ+×EpІ×H ѯ`F-tü>3&µâ= ÕK ÁáQ̈ª(¨ªByE%™™˜¦uûK¬ˆ‰ƒ†×ïAEA˜AB‘–º×‹"uü~ˆFÁhv˜Ú°‰ÝçG%h I“ºšöžíw<’ 7™£ËŒ×£S Æ} Â!bÆoJçž–žÎ£O<Ç­7\vÐÐำFâ3 b*ªjÈHì·âÀzea•˜³ÿ%hšìãâ Îäý÷Þ# ÁQX?'¥‚'`ìU1ƒâI Ù«ìýÜ õ®ÅKBýsÍŸFZ€ÞŸ”æÛïüBÄDâ} ¤ø÷N#%HÑp;©€DÙo8~Ï"šá­eŸÿÑý$$â;¯íkÿ@}±Ôý¤¤ö··”<$¤¦ýPˆ¥D á¦Aq9²ëÑ–rð´î{êÁ¾Âq¸æÍ:jöùuù›ž å—|GƒNu.× øÙÿ¤Ý¤›7Ë¥aÖ#UQ¨­ ²zõjJJJ0MóÑØWHâ,ñUêmÛ¶¥E‹®€üŽöÈÝ—âü0yîÚßÅå·i‡)QT’’5jDÿþý÷º°öÔ«X,†ãÄ„¤Œo}kš&55µlܸÞß;¢p°?@´÷±½k—ßR‡âÿ(ŠBMM ø|>,ËB‰#‰Ä°, G'>WRSSKZj ¥»J‹ëqÄåWØ\Ùks×þ..‡®íÚóšáˆú°x‹XÌÄñµj‘HሽëD\ù Ä—ô›mÙtXf§ß›í8ØŽmÙØ¶ƒ‡ßÈ_? ïñx)((ØO½]þo{PÊQ¾ÿ‰‹Ëïå§3ë*ì™-QPöFjޱ.,Uýa9Y,#»š‹‹ËCbbâ &Œ÷pVi—ânV—?HñU4õÿ§à×/Î:Ä EÕД#Ûîñk‡ð>jnÇíh¥á ˆ¢¢i:'~h¿³²(*zýw麎[W~Aý¯ýutBQ±«·RTÄ{îÙ)Ýã6×÷ùœ‚¦k(õïûE¿A†)/ÝÅîªòP •„wo¢¨ÚáÐ|eýuÿÎïRm¯½u4UA¢ ¨Úe·~_ ,eçîrêbòˆˆÀífKQ5ŽêVŒ£‘†µ]õà³+X·v Å•TN£ÖtÍÍ$ÉPùµYEÀ ïdÙò"BªŠn$Ò´M-SwCŠƒØ_Ç+êØ±i›J‚¨ŠÀInAûÜæd$è8õÃvÕH$öÙ]œ»æÞºq8mËY]$ÈnOUQ¬2V/© ½S>^pD5Û¿«&±½Á®myMð8?“ÒDõˆ¬âõ§gRÛúdþù;Óê+H3Èš×.çÿDVÝÜ’šØï§TT4»’M›£¤g5&ɯ£ü¯†¢HÌp)EË7R®¨(¾d2sóéÐH²{ûV6o-# øç×®‰K_âÎÿ&sÖ9WrV§Q[üf{¨"Béâ \öDSç]EFmÔMµÿ[û&rßÇ{\$“ïáåúj8¢jÝͦÏ^ãÞ—?`éŽ )˜lk2Š×Ÿ¹™?µk‚g¯KC`™ ® ÑÐTp,©yÑU‰cÅ0Ã;ùîÕ¿1î™…D“DrS\ö¯^‘MØ€Šª€¶máH5>JÑT$Žmã8)4¯MUâ ÔlËi`‘cŠ f5;¾~Ç^šÌô5U4V-v¦ ä/ãoeì ¶x¤D:6¶m‘ÕëxœwPe:x#3¹ñô-<ôõôNIÀ^õ çŸð)g}³˜» LÂ3¹{ð.\9ˆÙ¯øxà¹3È0-œúû&…À±Ml}ê^MøIH `y5 šÇƒ®ª(lËÆ ºGAØBªx¼*Že#¤‚æÑ–Ôu-# Ò¦¨yÅ¿Ï6ãI)(£º‰m[ j)Y2[Îy‡]-T‚Þfô>÷¦\Õˆ/_{{_\‹¯qvæ0®½ãnëÒß´µT–U`k `í_6ÛFQV'À±bØP4¼^š°ðùIJð¢r&>o&Žƒm;(ºM©¯RÅãÑ@ØØŽ‚îÕÑê¯Ý±,l!*õ …øaåù‡#œ½Q[‡‹4ÑŒåŸ=Ê­ÒãÏSxç´||À†‰/³Égb)U¬»˜­µa,ré7¢¬í|·"Œ/²‘¢¶ýá]õ1߇(8v©•syáž(Ëœ‚ÉÎßòéôbv—˜¬^W†SR«–“OÇŽ]È2ÊÙXø=«7í"B"­ºu§]vca¶|õ5kwUͺœ@ç‰xÔ†SATAÍâyôÑw1Ï|†M3úlŸ>ÕIµTZ•T,Úˆ“ÕšÜf:fב\¾ù6¾Ùq*Ë09mQA¯4õŸ-¥Û9MX·1ŠZ  lÝÆî³†Ð·Åqä_m£–läÛM&IÊ÷¬Þ¡‘œ‘EA÷¾dûk)-ZÉòÂ{˶”Ó"׃O ±uÑVoÝM„,º×…ÜÄjV,‹Õ¦9¾2VAVÿ¶dø¶/ÚŒ·{GR‹òéÒ2¤¢àiÚ•=›àï6„ónx‘kÏå,Ê)Yû߬­Añ¥Ð4¯íR«)ÞQGjÛž4K ²{õf*ì4²²%[¿_Å–ÝaHnMÞíIÚ°Xx3ßÍ™îœÄ m-–ÌZAIÔ‘itr,ÙÎV¾]!ÛHQv}ú£¬üˆufû ¡•ÜWËá’e[¸¬-lŸó2Ï=5Ïϸ‚¶C.ç¥ëOcxóJ>¹mÓ?øïN9‡3"Ÿ±zã¶Ì#/±–M_ÌgÍî¢RÒ¢}D‘l©‚6ýã_û)«ª5ÚöAÛdbÛøê“TI“Š éM~´eŠ®Æ¨Øº’¥ËŠ)šæu¤K×Lj–- (–N›Žíhî¯dåüõXÍÚѱ•àûyËØZ©tÔ—ÜD¥gBÓ4­~B]î Rõ ãîÛ½a½õù±<šÇC‰×#˜ÿ¥c.ÃÃó55TKIÖ˜‹i©ÙúîC<ø·ï¨ðÚ×ôç%þ‘5›Î›G×~Õ¬[¼F?ÃЭ/ðéŠ"Ro\ÀÄQ94oQÉüiÓ ·?§t?ŽË.ßÈŒþÎ=O®¡Ý1Ek¶kÔŸsz’‹Ò¿ãÃOæ³-»°BºŠ[¯?¼Syùáwù¦"D”Çßq ùÍ’ðª 'Q ®KVzIév2ç]ßom5ÕÒ†ÈñxñW¿Ã]ç?„}Ã?xøÚãI´ 8þÜ50…»M¬•ãáéÑ%Áøg&°®÷JWe“Ó¥ ‰R'+8wM»—v!Ï_ñ(¿ñ$ÕF˜­¥Í9ýŽ‹iUù}|6 úø™óî[È ž`ÚE}i¢ƒ Š9 ªo¥)‚í±¦” ÆÞV$¾ŸŠ‹á¨MÏá¸sG#:6Á¯Û¦U×áìþd 5‘®ä“Ë‚o¶¢öÞÈÙ†Û;·§Ë¼ÏX£t`õœMô0»Ö )É@—Aüø–ç›náãgžâÑo0«x= wõæ…Â'8Þ¿”Ý?“Pd“Ÿû˜H·xïÉsi³|<½Æ}ÂWFs|Úlj,‡Us×3ä®4æ|YÅõ-×±6«—…gsîÁ)Sÿͽgw¥äÕ稴ºG£Eþ l[üÛõ/˜ñikn]þç·VØ8÷ Rºö¦{÷2æÌ[L¸ñj67nJçrÙùÔLê¼çðüŒÛiùÍL6§§Óó² è6¿7?qÃÛ~ÉEžOH|ê".k’†÷û\}ÛËœ;¯ÉQ?ßýŒ— o"eô'ŒÛ¶’›¿¸NO¿OÙ×QU¾™/'OeYâH.¾¡¾ª(¦*Ñ%»æÏbÁ?¹§÷%Ç+‘mûYiªú–‰LFû,žß‹ (y™E[NßñsyÃú+éýÞ&gýn¿ƒÄkßcû…™<öp×®^Åum"”̆‹‰í3÷¡âQv³bÖtÞÿØfØ¿ï¤Cå2Þœ¸ˆ·ÿÓ…ÿõInÙù$Ÿ¿ýW–ÔYt¿cŸM¢G¢8:*àªÇƒ*ÂÞî\ût?p"ƒ1Ë$ý¸ÓÈüVì̃Fùô*ÊNÜÁêìÑdZMé•_ÊÆÈ6¶á¤n&ÎÜø‰„·éÝ.äO-L¢Q´ÔLòÍ(µj™ý{Ñ%à Ê‚Dm‰Z±›òÌÁtïÓžÆÂ†Ücè¹a2›vfÑÿÔ:¾ oeþ¢vô~¤%‹îšEé1ÅÔô;•F-¹áâïx÷ÕWynG.30BqÀð“ÕóOdÜ=›—ŸÄ˜QÏòù_ÿNÝqíiÝ®?'¤4¦ -‘­Kgðâ\?‚Ý{Oò¹Kù~Ò Þ¸û!Zçõ¤Nc´Hˉª«Á**¦<ßaÇôwØ¢kHÕÃñCúâ% Ò-©†ÊäfÓ£-]*¨MjBgÃ[ßÐøÈh=Œ?8‰ 3ŸâÉÛî¦zÒ‡ŒmSËöŸñÚsß‘Òï,NÜ5Áß}0ù/Hñ¢ø\œÉÕíÓñZuÔD<$„MìÇÑ--H$”F§#è]_?ºú(© ²ÿMœÚ&L°ª†Ú°µwŸM÷âõj(5Qb¢†mÎFæ¾ðoþk ­ 'tL¦šιº“N¼†™e^ç$”¼My®Í–/gPºÌ@¢rLÿþ$ùthÀ.,)%~¿Ÿüvùøý~t]GAÙ;¿q€˜ìÙ*§þA0üã]× åfXR§_Ú: g|̧…5xSRHIM%¸d›QðÏcù =àÃÙö=ëórh¥©¨¶‰)ÇÁ¶ÍxX©ã`K›péw¼=w;èÉ´<íaf=1†¬•ë)R5t̓^+Him˜òœš’èÖ½Lþh&ŸÎœÉ'ŸŒçŒaéd-dÝÎ ¶žDJr~Úà¶¹u¤NAÒêÍàÍÏ‹QSRHII!¶n ›vc‰mÌ~m Ÿ.ÞIPj(Ò&–ÚŸ!Íæ°¼(L(¥ƒ*¿`âGËè:¸3‚LŽq”Ð IDAT _¼ùkÚ÷¢MÌÙ'ŠJ ¬(1Y”à88>ŸcmÝN5j¬–²Ê]Ô¤¤‘R³Š-vR§êP¶™ÍRH÷ëtèšOèÛ©|Ë&=u(¥¬gÖ·E× Y#ç©LŸy5MÍæ™+îáó°MõâkÜ™^Æ,ÜÚ–‘“ÞãígRöòžyä%–ZéôkMãF3ykr FË“)Ðv¡õ¹ŒÌ~k{§·ÞǤ/WS¥€(®#ªùð4IÅggpñ??fæÌ™|úñtÞ{ïFúh*Ø&–ÔkX¢þ±¢ "AJW}K‘ô º‘DJF 'a뢙ôÌ7ø‡^ÊU· ¥ÇBbKèJŸ¦k(Ž$‡—²¡$„£'‘œäC÷¨({‚<„Àvö©€’šLÒúåÅ$ú ‚Û7Pªjè2JùÚo˜þÖ*’üè¾:{!ÿžþ ŸÎü”™³žcܹ½hJ5—X´9~Ýl^¿;%ÃJãŒÞ`æ'3ùô“™>ãþ”êGkàóèRJlÛÆ4MLÓ$fÆö>6M“X,¶÷ÿ13~X–…mÛîä Hؤ×%ðù_¼õ·ÛXÒ!‡FÒ¡pe˜ó?‹‹N”<÷ìÏkLtþ7dßùÝ}óˆì ï”&¡ß#]˜D" áÊe¼rÏßX9´ "¤®Æ¢Éu§Ð¾nSç.ä¡ñ‹IØ^ÌF»)½®;‡¡E“ùçK/rýU i!œÐ…Ñ eÌh?yóîûªÉž0ù#odd—Føµ†3bÇ,Ú ëÁ°Õó™ôäÍlþº€,a³n]ˆãÆ^Èe™ÛùÏíbÝð4ç7'Q5±c)ôêŸÆ“«·sëÀœpÖvNx£ /\mi¹ |5ê俼™ÆŽC‘0 G@8‚HÄB* ÇŒP'séÜ!…•ï¼Ë7o§Ÿ±†/ÖHúöÉ9×óüë¹×b’×~…uâEôlÓˆ¦G\}þ«Î#ÍhFËá÷>ŸÊígtñ O™Àg'dáëÖ~ƒœˆƒ0T|F#ò» îxûl|(Bë?5F=±7}õö¤×:$u@~ÂLÒ*h1²/Î<ÞúÏ4žÚ¤“×Ó Õ9èÜ8 Íß^i/ñÖ?Ʊí‚1œs|îGaAê ²†r퀡°ŒïÅ☄Âz<ÂÓ6 GˆU³iÆ<ôʆdVQVR‰ÑöVŽKXÄ›wÞÇc‹²8''ƒçîxµí@F9žŽþd:uIæÅ¹Œì¿Ïßx†ûæ5!Éôè飲Ί‡¼ “ð¾õ#¬ 6뢶S¸ãÆû’¦ºx+!»?š¬eãoñð£i<Ñx:uÎ#gúTn¼¨‚nÙaž6?òX²+¦3ab5ý|š³>ÏcOLÀ›s6g<ûÔClü$ƒdÃ$Öø8.»°?Y>w…ÉaìºwÇ=E"fª‰Þý8UUÙ½»œ`(LûvyGéܽÓ:`ÿÜO|oõ_B]Ô"#5‰h4zД$ªªRYUMéîrºué¸ï×q°ÌJjúõÌÄ*/bsQ%¡ÚJ´¾§0ºk?œÔ ±yE¥%DŸÆ· ¢±®‚ÑœnÝZPÔ„tïÖŸTГséÙ¿9•KX¸-D$"IÉ=žK/ïCdéùäË$6õPÍ ßIgpþÐ.äææ“f„ضn=á0µ¢1í:t ïÀ~¨Û7QTRJu]-iíÒ©yÊÂB:Ð’.ÝÛboc͚݄몡Óñœ4 /y‰Â×”}º“Ÿ•Œ§~×Ǭ\xá¾ïéufWZ5Ò‰eäìÍñ¡ ’ñˆN8ùDZ%;H4Œ”ºtnArJ6 2ÑP RçsÜñIM®cÕÒµ(YèÕg(;pì‰ýI‰•Q´a-• ¹æò“éÒ"<ìê4œÔ—– ’ü‚"­;g÷Ï&šŽ÷û%¬ª©¥¶FÐé²û8»•$æ€î‘¨j”©v3´¿ÆæÒ*dJk޹”ã3mD¤Œ¥K7SÕ¨£Gv'ÕçÃSQJñ¶Ííª¦ñ ó9c`G§dÓºM%;6ì ”2”Ë®²~[*« †B„ŒÖôï›Kb ^.ýŠ‚–˜M·nYRÅHÉ¡{÷fø0Y½|-uA‹”¼~œyã¹t°Ë©BÃß8­ºœªÚZDJKÚ·kK“€F£’wŸÙL׳O#ßSÁö%TÕ—Í‚ÖmèÑ=›$ ¾}ëG6ÇtïA¯> ,ùz%a¡ÒràyœÜ¾í šàQ|¤çæÑ¥gZ4mMNn;W,gW8BHË‚xwãéÔcõ§G—TÊJ"$4ïÈ‰ç Æ³}-E¥»© ©ÓrèÓ»5©^­Á ˆ®ë{Gº®ï—ßo¿9ŸØݶmü~?ó|G¿>ÇüDbÆÎåHˆDc$žŸí¸* „-Gr€í Þ›sÎ9˲Pv•×ÉÊè_§«Ð$Aì·øN×u W­¥tW§ÁäÉ“)+¯bÌØk¨¨ ïw2!!# 1~a/{gUˆ‚Ü,ª««* š¦±qSË ×pÉgí÷·X,F$‰¯¬Õ ~_}l>`G FbØR'èÇ£ª(X„kÃXŠ—¿B$C¨^ü ™HÍ à“DÂÞ„D -.‰B88Uk™9åu&­èǤ—N#‹˜8ŠŽá÷áóÖ÷š„E$!æhøýxëW[[‘:"fCÜÛ[‚êÅç÷cèõöwL‘(¦£áO4PÌ(QsOŠ7¥ŠWº]Lh«\Þ1›F†E]0ïõª‰Iv¨†¨­ Ôß—hTÁ0Dü^)õ«­5‡HTàõð{5„ã …i™˜–‚ðcx4l¢¡¦í ¤Ž/Ù‘ú皟Ÿ$ŽáHJÞú ;$dÆ+¨¢ ªŠñÚåÿ¡ã‚©œ®?W$LLñ]ò2mæ°ñè©i˜a‰ÇïÃgxPaEGMlG¢‰|:˜!‚¦‚?Á^¿&'J]Xâ¯/—B3HðIÂ!3^Î A8l£}qg‚p,¢á ^ ŸŸç‡FIZ1ÂÑ(–£âO 3íÌ[X?úJÆž;ˆìúÌh M—DÂ1œŸª?Éo|­‚e"‡HÈFõ†$ZÅQ4<†¿/~ÍH›X8†£xT›X$Š­$&è8‘(Q[ÅŸègŽpbC±½‹O¢ëÊ0 Âá0ÑhÃ0öîH¸¯P,óõ‰F£¤¥§óèÏqë —aYöOžËgÄTTÕ‘@üŒ]UÊÂ*1‡M“}\|Á™¼ÿÞ{„B¡†¶'ºo°‚æAþb©«#²ŸeMB¡=Š·Ïc'¶÷q4XCtŸoÑÔ4ÚöƘœÆD#AÄžÆPQPp0#!ÌÈçŽëöùž†ŠÂ"²¸Ö¸ ìBìPS†?~1;Rý(fkß?ÇÖÄØSŒå>÷%®ï*!°­výçÌHðûÄÂAb?úEŠâ« ýð܉RÚë”#RóÿÚ;ïø*ªô?3wnM¹é¤Ah¡ƒi"ETi*èZuùÙq­kŵ÷]]+*M@•¢R•éjB'å¶iç÷GH¨9Ïçs!÷Þ¹SÞ™y¿ç}Ï™óæ*D'5£×㽈ä…D똥u®&FB#zôM"¡Y"Œp#Ì!ŽÀÒ–¹\ƒ…Æ!Û+ïºÄŠ–þ ?rpצI$XxÐ1—n×FÄÓîïW“[ 5¿G™Mä/î#D~~èÐ[Ï4Jï3¤ðà0MŒR{ À¾ƒ· –koÉiE-j~rf·˜J4™ÛS«©M$lbËm…°ô©’a„ÑmÁÑà‡7ŠºúÄ(sXf„è­iWÛm±”Ó2céZ^BŠm`˜¶,©s–ú,) ‰Óé<$x2ðF¹äPY8¼gæÅè-Is•{LGøî´Á&/ãS¯+ Á`P È)÷=‡,o+‘HÎ(ŽÔé}¦ ëH$‰D ˆD"‘H¤€3'¢CJº‘#l¿ü5ˆ¿üLT²Žv?N¬ýÅÁÓ{ ÙK+‘H9MQ…¯_zvY™Ô®S—ºuk–2„ÿôO\)-êÔ¡NÝê¤eŒàÇ qXÉ0Ö~Äu-[sç÷‘’g9l™ÿ!#øŽ"Eàf¾}¬ ÕÒkR«FuZ x€ ŠG”ê"”àÏ<ýпùiùŽ’ 甽“¹kØG,Ûôoo¥IƒlêÖ­KvvcnùvÿxO3ç}zedR³všuêÁ}癋RɨU†›rN³†Ô®žNó«þÏ–š‡V™¢x›{&sÓåíɪY›ºÕÓHÿûX¶•jÿ™Ÿ~Èåýïeâú’±ê‘żûÂû|9cBQàorM÷fdÕ¬MÍôt.{ýwÂRW$’3–³ê9Õù59¸ºo ÜÓN¡qÚlnÌ«ÇõÏŒ }ãLb~…·ü›q¯¡Y¬û!–"œÇÿŠ’iôêmüpþ\ä5‰äofùj7¦Èã›WFðäº+ùò§î$Ù›ùõ£7yíšáÿy¾uÊÙ)kkVn&»Hß/0Æv–/Ë#€—Âïoãœg|<óѧÔÕ`ÿÈpó˜…¼ÓeôK»¾çÙÔ]¬ÏÏäi^xï{.ݶ‘Ù“'1eM#x¤ ±Ä^ÃQžgÇþãU®<•¤;îç¿ÿ¬E¼ÃÁŒQï2?Ô‘î±É•6Rh§#…¿ÎfÞ7chrçÕÔl\¿™HC7æê·¹ú‘ù4»î9îlZƒß^êÖ‡¡Ïøpxü9Z"‘r ±=)ÔkZvkïÿ0´‡§õÎiEëú Ðx?ø kF ¤q¬ûP(Q)¹¥Ïú¿´ŠÜd€¢árÙ¸bߤò·oï¢S@CÝí&À·,œ¶˜+ë´ÀQN¢:=DÇú÷o+.¯sî¨9Œ¾~½ÞÈ•mÒJyCÞø|W½;‰]¢È]]Ÿ;.nDc aÓV´?W%!ÉCBÍDö¬ü‹B hÝ îÃZÅdöW ©5äz†¾‚ÆÑÅŸÖáèñ TfYC­Î%]³3¼ŽOfy¸³†ªºñÅ.çó'~¢ZÓA êÛƒú€Æ¼þe=ž˜Ëš!MiéñÉ9$™Â:uøwNá‘^u‰MH >Þ‡SíÃ[ÓVQäñâõúŠšö.ŸU‹!Qs”{ðP´Xj\ý#×^ÈKK¢ˆÒ@‰±gûNvœÓ›>Ye~\—ú±±hK×’[®DûˆÛò®='•¸øxâãHˆïÏļBÄúÅÌÊèŵ’Ë8r/iÝ;Òð‡Å¬‰êB»N£i•ZŸ¶¯¬FU}$&yŠ#³¸Ä¥°‹gI=¼~ÌaÊ÷*ñuê’½ÿcWR2ÑŽÊgH:J³ÁÜÐ(ã·WY²)¯Ë¶u Üi{~cjyÊìC뎜³pëCLy/J$R@N%Eqçsû+“X²f.]ÍúÍqëùH_ý—×#ÊçDÃûî¥}¢ï°/wT&}¯¹–Éü‡í1nTÛÆ¶lìèh|™Ðaƒª›å;A+Laµ+xvìL–¬\βå«X?çE:§ÄàGˆDû‰rжn;œ¸ƒ„’Ä ã¶°uÎx^2ïAIlÈŬ96§*¢0»65’ãˆ>ÁöWD,m.íEÌÁ¯ßÏ!èu¢ºÛ‡Ûã<(Bsâ B »B$) §6…¥zˆIJ%3!…´Œ 2Ó£AÓ)LÄ[ÓgÝ–‘¤8Ž£l«±)4p5[ïý?xÒɮ߅6—p÷}3K–³ø½çyëí9¤^Øö Èä@ï+Êî—-ÂD7{0ò‹;nxœ}ËNgX­aXƒ.£ÚŠ×¸ìÁy%©°X”B¶Ô¯Næ1Y¥17ÝŸÉøç_6ïÛ‡…?Ĥ]ù°ûz' cBa¸ø» oÑ-ö.~&E‹GÓ-õA~;†°Çâ/¼’ÄUëøã›‰äБ›Fd0á«™²dOɹZ˨æc]ÓæÔŽ’$I$R@N-–ec2+œiZXöѤI Ó(nÜERõþ<ÿj/ví.ÂÕˆ›ÍyƒJ¦TöÒç3‹Û¿ý†m=‡]§uÈdu%û‰PóÎY¬8‘.­xJ­+b‚Å/wÕôsi6¾-Š¢¢(q´½y×p %»jÛ6¦õ×GÓãef}XŸq×Öá(8…sV£¡ v˜‚=t{‘_ t€¯0ÃìÞÿþˆö·–U:«kWýýzºô¬CÁ®=Ä]4ŠŸï‹âí+3KlW—oþ‰ïžíIZ´”‰äŒl´Ÿ õ@ö‡Ö.®ãQ:‡þQfkl¢*¤¡,¡àP•âhÂ.cEAUÿ¢D­Ên¿dŸJë>ˆ…OQo^`[eë†(¨ŽýÛÂFUUŽæ WEÝw<¶%Pö­÷ ÷B`Ûe¿?ÒaŸkußÿE->ac—òýÇ)‘T=lÛf÷îÝD"‘3¶ÈÙ•Â*1ìÁ‰-U-O<~垸hœ%¿)~©8=]y?ï …÷9Ûâõ)ªcߎŽ}Ⱪ^MýÖ§ (é\ÿÁB¶‹rö©ìúû׹ߩ*¨e>wäÄE-#;˜1jÙ~*ƒ^ý™-öÛ({<êë=è½rð÷G¶¿ª(§ºÿxõ€ã‘â!‘œÙTá¾Ëóµ·ˆQ•¶¾j\üøV>~ªŽ'™.÷|Ȳ{>”WµD"9)Èä³D"‘H¤€H$‰D ˆD"‘H¤€H$‰D ˆD"‘H$%œU£°vçna·á$-=…( ° ÉÍ5ˆƒ={ñ)qD¹Jfc2÷²a‹MZšBîš­%Ô¢qjɳä sÿd‹•N­$ƒMkr – Ãuúüddeá.ÚLΦÝDJ¶-l r%ÂÞùèlÛMr­š¤ú=üUÅv‘ŸÃÒ…%ã¾Äf5&+¬àrÖæ(·-4<ÑÕȪ“xèt,"Bþ¶\¶n/À@`ÛѤÕÉ$%Æ}’fºÕ)Ø–Ë–¼½èBàJÈ Fzrñ¹H$R@NgÞ{ôqFÏ 1ú¿¯2 y}ψ[Wpý/½æï¯ßN÷zIÅÎ|ÛésE?×Üø^_ù{¾¼™8XE9¼v}cþþsžÍ¥÷y/¢×ÎÄ.ÂWýn~êZ¯¸«†ÇQ; ·e¥ÒûoÝp¬[À„±óP2ýØ»=œwû3ÆÃwt'Ûq$$ô'“^ú÷½¾5®%û⟠í˜(ï4‰ä,ä¬Ja9š]E7ïzfÌúžE…€æ"*ʃ¦yˆŽöà,ûäšê&6ƃCquÁý<|g–Ø€ÍÎÙð…Ñ‹cT,O*Í|MîÚulز•¯êʬÿ~ÅîÔvôâg¶®]ÇúœMän›ÏÛO÷£vÖ<øål^·­{?£Þ„‰|óãö¡Õ>ÿ½¹vÕ0V¬Ï!''‡œußsÉ„ëèóòr”˜ê]ñ9¹ëÖ³>g#›·üδ1C¨SÞÔ,¶‰‘Ú{?YÀæµ›È-zñã$>ÿfù¾H鄲7DV¯¿óEî6nÞÁ»M#,;™¥†¼Ñ$œæèEQt»¶³ö.á—ßZÓ²ó(žv=“‹G4ä7~¦èÍZ|üÆT®øÛÓüöQª­S¸f:_ÌŠ&i[‹þÈÃÙj'‘³p2ãfæã „1<霓µK3*Y·…š‡ßã:‚¡¿cô;5ywÃÕÄîû¬%ÿö"³;Ê>ÑDrfòùŒXâC–p“˜M˶YD•»> #RRWK ~Hà † Ã_Î@\1"­=Òö…#˜Õ’Iñû‰rÈM"‘rš£XAveõç™&OñØôX”’‚ªÍå·i3YûûL_r.oýð:½ê%îs¬‡ïÇ¿q1[ƒjíS§dw’ŸÕGr—˜<áê;â…à ¾ Wd ‹§NgÝê DRzòøÓwrivL9ñ'¦c]‚ Syïù_Iè<˜Òå]&‘œ¥œumCÅ60¨ÎÍ·¤²mî<-ß…™à':wÛeÊØæ®a½Ç»/2À9C?âÉk_âŠ,kÿôæ„m”ô!Dˆ†+ ̃’ûv„`\nþ×d~úeSo®É¼O¿eNyxoÛ+b~à™–—©h¸YÏÌÚžhdš˜z»9ÐrVhGÄ´æºçÆòËÌ9Ìÿò¡ýâamaîŬÜ^„ (z3ÆÌ%'¨× ­fÚ'¿±ET¤6`Üå“yÿéé¸.½…;n=¯ü"[‰DF §ºn‚Y2ýyí¡tõNàñÝ9äÆ]ÉuçóõÛ¯S+¯ÓÁöÅÒhp2? Äw⡊ñ['aÙ:oÏ¿½ƒ¸í;Ù˜³—Ô»{P{ç>þnÏd.ÁÒ1,?Í r:)»óˆÐ‚îO`ÞÀgxâÿ6rëý·sIÝ܇øýÚ yïz&?ö4#Ã-Il{s~LäºWº~ƒ@Èw”mŒH€ü=ÅËèóÿÊs>¡Õ„çø{·úD}Ïýý'ó·œs}VêÎ ¿æWžìÿý´ãŒMv-àƒ»ïæÕUõ¹¾ÅB>xq Žì.ôèÜ–,¿œzW"‘rÓ¾C-´„¨’T—V>Æ?ëì$ÛÙ€vÏßMîƒÿbú¢ÂÄÈÆ'CÏ=\{I¼r`*ȓڎAƒ¤¦qå…«Y1k6¶OÝÖ×òÔUmÈ›±™óüÈÒ_æ¢`cDâPãÏ㜠;Q3+¥Ø°®Vüã•ëyê¹YlÛ„ì„r÷ÛÓjã~‰^]ÄVªæeÐøw¸²šEцv êu„j‡epgÓ©ûìö¤ú܉«!ý¸šŒÚ‰¸¼-¹áž(Zú½ÅQYl{†Ý‘A£ ̱n~]Ö“‹Sw“;ûG6DBÄ)õèÐî„%Ì$É©Ìøœ-¥è€RRÄ©ìG•eµ£Y™(ùgßNíâ×7ÿÃvÚW_ÃÆ2Òé1âV:§9¼‘Þêì\ý3cßø–µ>wI+ÀÆÐchÚý .ï֨̈®’4\[ BQ*Ù¥Ù(RB$’ƒògAA©³&9¨Žp ƒ¬Tç¥í2e4ÐCa‚Áàbê! lîRްMm„X8K$ ùEmˆUü±r±*ß™+6™D"‘),I¹­€TºüßCt©”µ¹I© w¾s‰lïK$’S†¡*"¤¿5ip‰D"D"‘H$R@$‰D"D"9ÉiIºÜÅ™qÁ«g™Õè¤:I¦ÛZ ìãS cã8î½2»Nh·Îñ_B^T’J ¿ßO||<~¿Ÿ¸¸8ü~?~¿ŸèèhTõôrÙÚYdýâžêœñŒüÇ(Æ.ڋÈPç¶÷yx'’] óx¼×}|“³‹°isî?&ð΀:¸²Ó¹¢( ü0}5«ò ¹i`Kœ¬åËG>dmzW®»¥3éêFÆÿo•‰?8èwËå´¯“ð…¶vÁfþìåï'vïQ ~â¡~“7ôsÞP½xÂÖ± z ©ùÿåó?T4§—Ÿ poGB&—=ò%Ot–'_RiÄÅÅ1räHV®\‰¦i!ˆŠŠ¢fÍš¤§§3`À) '̃­ÃONÆ<çV^–M¬çüçoù¥à%Þ},‹I½^ ÿ‚;y²y5üî<ýþrD¿ZàóWá›X·|»¶$uålÍÿ”¹Ï¡{!¤Ç®aæú ´R¯âŽYTKL௭®âŽÁç´ËWVv´rÙ¿í㈭ÃY°'õ_wñuǯ¸2SE mà·y:£Þ{Ž» «¿àÞ×£yò½«H¶4’ëyäI—T*Á`¡C‡2räHvïÞMrr25kÖ$++‹víÚí{¸P È àû×ÿ$èhÍßn¾†óümiþN’ÒÕš IDAT}Ÿ[Æê]aþ˜G»·®à’ hÅ[5"¸œ²¨²h½ƒMÆfò±ÒK›6µY›&ÈÛ ìÎ!Ô¹5 “rùìõUôêkóñ˜Z:ÿÁó_ng{ÂÍŸ¬á‘NNÔÐ$®k>œ™:`)lü4`®}ŸË;<Èbg* ێ䋯®dûÔøð÷F7ŸÆ<ÏeÕþË Ï—¯êìø'+"9ì^ý9+D ¶æçS°ö7>~j‘&÷ñÍò?xµµ#°áЙ¡xêÝ&þš÷x.·'Íeßt4€00L a›È‹’!¥ÿ‡Ãaâãã1bÉÉÉÔ¯_Ÿèèh Ã8í:×Ï*Ñ}1¸¢<UÞsá ED8ïÉiü4g%kzÍ¡Az ÷NÅ4lyõV¾ºõˆK«ƒñû,ܳ‹[–¬csqN¢¤™ËšzÕHˆŽ"Þ—NÍšYd\ü0s–¿Aï7&0Í0åè¬Ê"6´Ü…ŸO`GVþZçÒºU4ž¸ ,Ü‘NŠ3·Ã.¹$îdâ|J±ýU ¯ª¢DÂDb3Hò”,£”ÔpÑM¬¸ê$ŒÛ{w%ÞCjÖ~X´ž•Eݹ86߬1lMÁ_çb.a<ë Þ¦öçC¨£tçÉs¾VµÙ¼Ñé]FÍp£ÉUrB ª*‡ã!1M—Ë…mÛ§¥xœuÒ÷“E &ðéômO ¸»ßÆ|mš«ßrͣ߱;8£Hv…ÙX/TUzˆÊ£:Í[§’·c&¿ÿ±“ôtð×÷²òƒ™"|ÄÕª–]F°Å#lDv]²gá‡mÅ}ãÔ1Ìq:qUO"ùÛÿãÍ5€¢³jÅϬîsí£“IOHfó÷ÙܱÝë$áö±a³›ì˜ß™ðÃ\þ·ó\núèþus2ÆÆvšG¼¥hœ;ò.vÝøw枉'%’#ò†ç–÷t³N@¢»Žä«2{D}ECQRy¿Õ‹|úòµÔlÔƒKV§A’§KCñ=CûW†ÑØí”¢IKÕÙW|h¤™5(Zú'‰€?° "º‰m™D"Æþi¥…I8A·.åý¯ërc† ·ÇÍ?²i¡ |þ~¼ÝÒCèfñþ¡âòzƒ°*ÛD7-P¸4•â*‰lÅ…Óå@ÅB4'†ÀéÒP¥Øëàtk¨¶N0\&¨š†"T\n Å6‡tlEAQ]x< Û21 Ðû/yõI$ àvŸº´Ê# –eQ#3î¾UÎÌ*‘H$%8lÿ‡²†Ë’ê!‘H$§r ’D"‘H¤€H$‰D ˆD"‘H¤€H$‰D ˆD"‘H$R@$‰D"D"‘H$R@$‰Drf çÂ’3Š¢àp8d9à2ض}Tâ•Ö~¶+¦øá`ë¨f¢Õ4MÚí Û™¦yJ÷A ˆä˜Åò,V®\I0ÜW-­*ÛÃétR­Z5222Ðuý°Ë:N¶mÛFnn.º®Ÿvõ­O6ªªâñx¨S§n·ûˆ×’ÓédõêÕœr§yZ´ü5ØØX²³³1 C ˆäÌp–º®³hÑ"æÏŸOJJJ¹•Ôª@MÓèÖ½;i©©åF"‡ƒ¼mÛøñÇ ]å[ÓBvìØÁŽ;hÓ¦Íakb(ŠÂòåËùþûïIHH@Ó¤Û2M“Ý»wÓýâ‹É®[÷”5F䙓€ìÝ»—Y³fÑ«W/Ú¶m+lß¾‰'2}út†B(*·ý믿bè:ýúõ###CX¼x1ã'L FVµkÕ:¬øŽ7Žóڷ碋.Â-‹²‰D˜6mãÆŽåÁ…eÛ6¦iâp8þRlÛÆáp`š&¶mWùVÙÆÇ_¥`lÛÆétdGzIâóùН£SÙnPRQZÕBUZQ”}Ëío*ŒâÀív¢“HÄ<£K騶}òìvH¨é&Ú¡€Žuš ~8!²TR!ÇY#pâ‹õãq ”:bÅEt´•3£nØñ:´Š9AÍCŒß¿Ì+&Úƒ† xõœÆ&fNšÌ¤Y›pÄFáqª4<>7NM-9gÎõSañ—/ú»E{4Ô}v;ÔM:öÌäÅQ?°Í²>n¢¢œ('Á¦§Ë>HNM HÑpçóƃﳵóýÜ{Q:šCEÝõ#O½l2ðŽÎ$A"r¬ËW´õ¨ˆ»WŒçñ&°Ö( ؆‹ô&ݸnÄ54u…0ÐÐŒ\ÿúùqyäoûè”sèѦˆÏÞ[Oƹ-iY?Õ²O‰ÇnŽ@ ·™ÃoÎ×?,e¢`F"´¾ánìZŸX5ˆi+‡Dq΂E|òqˆ.kOB9ínE„ÙµúÞœË5·¶#*bRbs) ’S# -°œÉ³þdϧiÙhdFáÍÿƒ¯¾Ô¹äöŽ$:<Äø}8„a((ÂT=DylŠŠ T·Ÿ[Ì#\.\N#Á:ÉQý±:´ §bÕŠP°åw¦Î³ésOgbÃ:¦¥ŸYÅBqùˆõ¹q¸ýø£<¹¨]¿6>OQö*æÌüm²[Ñ1ÚM$?ˆiŸ| 9žã¯pÊÔ¡ E61ç×UìÔªÓ¾c6Q»eâs·SXø2·_VŸ8'xc|¸* ¡¢¶ÐðzÅ⯸ˆõ{q@˜ Š0m‹ÈîeL™–É ÿ× Ÿµ— b¢Ý¨L=D0ÂÊ)µŸÉÙ“³jfOîh4ƒûƬ`þß[€âÄë(8ñLbxÏ×X®9ñùÛsÏ;RoíW<ÿS wŽhÎΙùb’“ëÞè 3çòDz=Ôz)Y¡UâQ3ÍOzÛÜg¢öyXƒHáVó£FËN­ˆµ{kqõµØ´f#þnæ,˜ÂÒ¹“˜¶x<“¯}”Gw¡fœŠeWEI$ã¯GÇó¯äÖÁ-‰õ¥CÍ'ydêO,9§½ê/ç™ëF3}óN‚f=n{ïE®Jqš'¾¢)ÜÙëUþth¸£Ûp÷Ó*ðã_~“sbè×ïg®¸å!z«ã¹é¾1lr%Ñ¬ë †ÝÓŸ:Vz%™ùtL Dr\-˲*6"Æa¢„tŒ€Ej¿‡èõòpÞþm ‹7°mƒPøW^4ƒê·ÝBGË$´yo?5Ž»úlá7Wòç)f¼Íìõ]©±¢Ù›–²`®ƒZC¡“* Ç’’B‡ ñ¨vˆp`¿¹‡ó;¼ŒÛ41Ü´ê3„kê,áã—§á½àF®Ký“É3òql`þªþ¦~ú5¨ErF3²šµ¤s‹tœV¢"û$·h…øýþ£nI—^sB5PBa #L ;¶ç‘qR¿ÏeÔ}u›vÏàµ`µ½„Á—ùñnÿ•G§ÑÐ –m‰Ìá•Óɸõf:Ø&‘- xç‰ üóÞZd5oAƦDzõéH|ÞL>“GÛûï¦oþþ·b)cþ›É-ýëã•’Þòù|R@$g&–e‰Dޝª1 l+L¾«Ãû6e࿦pÉȶ°16ÌgììOØ™O¢m£leõv>· ¤ã9£ù}Y?ÒƒÑ4éífÁ¸¹TK+bWµFT  éÆIÍéË“ÑB à ‰T © ÚtÛAtö… º¥31!K‹&5ÓÁÚÅyìLïÉÝwö£ix6Û6Π l€ ¶¡”•ERzš\Гî-3ApäÔ¤@fþ°ÒÖ¶âˆSÅÝuÝÀ²L,S/^_D§ÐV‰*Ò1·.ãÇÙ_³l‘¬Wd=óþ·‘˯nŒ)TÌ 7ûc¶Eæ‘hÛ…[X¾9‡î£N‹æ¤/Jã²ç³õ“gxò›q°ýgô½ä¬¶¨Ù-žý³I×õJiàœ# ¥€H*Ô‚<î<¬ûzÈ…Q„»ÕƒÜ1íN>[ÚEèˆÂ ᆸ÷žŽD‡(Þ¨LjNì&Û˜¼2‡½y­i{i&K¿ÏúÁõIjчn£yøm£½h¹ã¸óŠôw+-ìÊ¢z¬v¨ŒÑkØv±í ·7Š˜Øüîµü·ß?ÉËN­6Id=úlÔnbH·úÄ9­âË~abg¤‘¶ü=6&½ÀÈV–(¾. vï`wQàŸ;)HM&ÞoáY÷fƒç¹—°a( èXªRá‡ÿNÙó0‡tIÅRÇõ²mlK'Œ`Z6¶ÆŠéÉ=·7! c9Ïgä«1Ôk؈†M[ÑqøxöÄúÐ’³pü’G“ ê번D«ü²:Vé&¦QDÞêÕ¬\½°ª Z{Ù°dë6ï!¢(¨ÖNVÍ_Éæ] !Ç»ÿ%¯ãƒÒ>¤ ÙNDh;+§ÜE‡ì†4;§MµæÒë?…s/¢iâ$º×H¡Ëß_fnn,If˜P8L$$Û…^]73öþÎô¼kwlcÕo+ÙZÆ”H.ü¾‚íº‰e ìÐf/]É.ÛÆ® ½*j» ]s–…e „âÀ™÷/ßz-Ö#«Z¾Íºža·t$Í{w½<ˆ£ús^“z4lMíË_cYQ@CíÀÈ×/fbïzÔoÔˆFMZpÞ°±ìôÅW· mbž¢Gó«ù¤¨+×÷<Ö<™šÙõ¨Ýºwÿg1ºWƒJ²Ý逌@$Ç-ºˆE˜¢˜n¢ƒ…’E÷»GÐI¸‰Û›Ï^µ1CF߇ðF[X@¾ÖŽû>o†3Á'b`UB:áXìPÚŠ®hKZà"±åM|4±/‘}ëVpùâ¨VÍOû^¦Å \^/NW 1^˨N/V~„†ã•‹ö`øÒˆ‰Wyô›¶¸SâÐ"A±—ñÊ”®Dûœ`˜Õ®âíÉq¦U)öªhR±¦{˜"5›«ÅÃBX„íÄŸ–NbŒ†Ðm<ðÈÛ](Ð-áJ¤Zªƒ×ß„DáÅÕéN^ÓŸ(Î':¢’ñ Ô”ú ym=n⪥×öQÞï´]U@õŸ„Œ‹Ø©NƒJ‘œ"R¡ßã#9¥x8¯m ÀÆÖâÈJ-Nk™Jiuêì ÷…°±M4‰™QÛÀDÓ€O؆‰†/>ž(Â01q›âFÛ41ðî-NXV%ÜÄÇj‡JIŪ;žŒ: ¤C„°68ãÒÈŽWJœÌOXÛ†ŽâM"½frq€€Ä ß>›˜øHÉŠBXÅj4©5•J±WESy•Ñò¶q”Flò¾+«ø4M,ÀÂEbfI¥çG§ «Ua[˜Š´ÚuÊô+ÙX¦‰JTr]ê$—<ðHÕ³K–+݆uVù) ’ãvœ–eUÐ „#¬ý#T„À*ÏaQÆ‘<ý„@XG~oY•k‡cuj¥HE'¢Ââ°ãAðÕ_þedï19)]β¬J˜À³øš°åº<øú³3¥‰e¸^ûÄÝR@$g¥‚aš&)))äååáp8ª¬ˆºÝnÉÍÍýËἚ¦ …ðûýB¡P•YÖ¶m’““÷ ð_‰‚Ó餰°ŒŒ 6mÚT¥gäBP½zu Ð4픊‰É1át:1 ƒ)S¦pÙe—‘””T¥K³ !X·n³fÍ"++ë°¶°m›¸¸8æÍ›GRR 6¬ÒNPQLÓdÚ´iâr¹Žhãøøx¾úê+ú÷ïOÆ «ü}XPPÀ×_MBB‚Œ@$gN«111‘Áƒóᇲ`Á‚JHc¢Ú¤IúôéC8.w™H$B=°,‹1cÆ`𦬉®ª8NHõêÕûP¡eYÜvÛm¼ñÆŒ5JÖD/‰fãââ¸ýöÛO©=¤€HŽ¹ÅššÊ}÷Ý'qõ”´®ëtëÖnݺIcüU?’¢( 6Lët²ãr"åü%©z7½DÚMÚN È1I‡ËåäÏ?W²~ýF–ÿù­Z4—V”H$) GÆ0L6Ȧe‹f|öÙ§lÛ¾[ZQ"‘Hª¥ýwÇ$ Š¢ ë:‘H¯×K0”a¥D"‘T! ??§Óy|sa)ŠR"R<$‰¤Ê‰HIà 'S”H$Éq!D"‘H$R@$‰D"D"‘H$R@ŽùH¢D"‘œH”J÷³§ÍT&ÑE¡ª¢ÈÁ]‰DRi²¡`X†^—Q‰2rÚHF¢Ÿ;öâsʬšD"‘T&¦màt:IòG …+íù½ÓF@Šª'DZuw!òÙD‰D"©„ŸÛ…ßã¬Tñ8­DQ‚Á Õ“üȉD"©4ïŠaBáâ.‚J䴛ν °Pžo‰D"©dÔÚ9íDέ%‘H$gˆ(IH$‰D ˆD"‘H¤€H$‰D ˆD"‘H¤€H$‰D"D"‘H$R@$‰D"D"‘H$R@$‰Drö¢IH$§'n·U•m¼RlÛ&‰üu«XUq¹\rV‹„X–…aR@$’ª€ÏçãË/¿dÆ „Ãa)¦n7™™™ôïßÿˆöÐ4½{÷2~üxvíÚ…eYUÚnŠ¢MëÖ­éСEEEgçl¼‰d¿üø“Oؾm={ö$11!ªî ÕŠ¢°wï^&OžÌ‡}ÄÀ°m»ÜÈcûöíŒ7¿ßϵ×^‹Çã)wÙªb7˲Xµj³ý•ˆ®ÓñüóÑu] ˆDr6ßø«W­bèСԬYÓ4«¼M’““éÛ·/o½ýö— ƒ„#†^y%111'$ms&¡ª*IIID"6ääÐ¥sçÊmìÈÛU"9ý$‰P£F t]¯ÒÑG)¶mÛ#9l FQlÛFs8HHH P–†À²,<ÉÉɬ_¿¾ò£ey»J$§·ã”p\"jÛ¶ìH?NÛI‘HäÍ/mwÆ…Ÿ\NË´°lqÚÛA ˆD"`1ª†K+6¬(Sǰ(œ˜†U\lºd9ËбD°êÀ¥9Ê„6&ºy"CÕCLÁ×\wÇú<0˜.RÐ,»Â¾Oä5$™K$§±´mû¤¼W …n¦Aõx¢¢¢ˆòùhÿÂtKAÉy“‹.zõ„eP4þF¢âÓxü·(\ª}Òöñhaér•²]‡‡è¹’–GTTÑQQÄÜ5 'æÜËD˜–U©v;Q""#‰¤ŠG ª'†=_  õ©¼>c%d&àõþ½ ]¸„Y|ßÛIJ–°‰,ËoØÂè%[¹!­€qöÚNuE±ýãËÉÃkë×Ó;ƃCQ˜6bߊ é&•‡„-]âôíJ8ÿ2‘Hª°€œØ—†Û=›7ßÎ w ¥u5?ª¥t`Ôüçq÷k¬b§¦/ž§qí’o¹!5„n‰“°b_$vrm§àp¬cÒçE<øÓ \åF)Ù‹FæB#Â’—/$))‰¤¤jÔj8„±Û ¶þü =»?Ä#C’HJJ¢Ñ…ødmþØüöþ:%~þm¯ñǦU¼óEd%%‘”Ô[Þû­† ‡B¥ÚMöH$UÓ4)((8Áá‡{ÓR–ÖiÇ L+¸—|[B ©d/œÌ²¢ºXæ7Ü~¾ƒÞ?ã*ßvvî=ùBsÔËëºN~~þñO£ºðm˜Ä¸ßª3 6@Q¡ÀqÐ"5nÏÚ!Â(bóÔg¹bÔd~ì²™Âõ?“øB¢ÑsùøwyûßïQk埌›]Àð9ô«@¸Wñßþöº#˜–w1u·}Ã#¿cZ‚›"LÂ" <8*ØÉT®€Àp8ñ²Èñ!ɉåÄãµ±ÕŒ –mßÜ(ئ…éPQ…øÝÉåO6áÙ»^ç¼Ïn¢®RÙé›ÊMÃTÜiÚØ6(Í2IGÛ>ðxí{‹Áý_cæ-–ÌÎÈñ¦’zÞ\Õt7»wiD§fÒpQ+òÜX5¯¦K­=À»gùêBÞõ/¿ì@ÁÂ2/¤AÏs‰ ¶m ” žÿR;TöpæRm8¬<[6l-TÉ-*ÿµµH¥0¢ ÊaÖÉ™›Â²LÌŒº4ÉËì%;(ÐAQ@Q-B¿/eù¹ÙÔ@ËtôßöžÎe|‡.à䥰Ž' Sa»Ô¨Ï9ë~àûÅ{–ñãF ˆàšsMÿ…ÜòÇNòrV2ÿãÉêÅ}¶‰i{XÛتM±Á6aŒ=á/ǪÜ\6oØÂ–¼Ï¸£}¾ˆ‰u íöW(@^‰1…u$Ñ’º!‘œxñ8ñH„`a3¬G¯×?§AÖ@ZWóãöÌçåïsï—d0a†NõþOóð´ž ~#nlˆWSNJ&âXaeD á¢s¹áéZ\|ëã$s]£Ü¨ŠÂ//¾FÊð¦$·kO­Ð –ÿ¹—%S§±ÒÑlsßè'˶±-Ã[—ìëX1ë ÆÎjÉe58“â¨)3ù[Áw5ãi‘BWãÈT ì}ˆ…b‹J¹†*[H¥ø%û@$’*ÂÂ{q]0Š)ÜGß»¯å‰=:vD§Ï[‹ùà|'Öæ¤$Û¨–éô}ûMÖu¼•«ãÞ „Œ/!ǓªðL¼‘|¢º¿É¯ÝÎe×]Í+º ÂFø6ó2[¡5lÃ5¾‹'ÊC³ËÓ#Ùƒêt’”èÓ ._4±Þ(ê¶¿’óÿXË£CÚñ¼bÑðŠ‘2%%‘œv”NxÒKRPîLߊŠJÐ æëÇœŒH¬2;­H€ürêXéÁ½èÁC?ß7°°0"¥oõpý R&f°ˆÈAëФÂv;¡ˆ¦ix\â˜ÄãÒp:TlKÞèɉ˲p:GU…ïlÄÜn7–eQ2MÓ0M³ÊN¨(„@UU4M«Ô‘X¢Äÿkš†¶bù2Žg½n—›‚ÝÛˆ•w»DræêÕ«©W¯;wî¬Ò³Ê !HNNfÍš5¸\®#F<‡Ã0ضmiiiìÞ½»Ê–.½Ž\.[¶lÁívWNãFUÙ°üwšíæ‡ßÎÙ6n›áwŒw¼DR‰Ø¶M‹-˜:u*Á`P6Ò€ÜÜ\fΜIóæÍè0£££INNfÒ¤I´k×§ÓY¥g4B““ÃÚµk9ÿüó+¥8™CU;~,Š¢ -[¶ì¸WT-%‡Ã!ïx‰¤±,‹Ë/¿Û¶Yºti•¯ªàt:©S§W^yåak¢ !HLL¤wïÞL™2…9sæTùz*Š¢àv»éСíÚµ«”šè¦iòÏçG£9+8 ËápÈzÉ  Ò»wï*›~9œ@N<Ê:·˜˜®»î:i°ƒìRâQJ AÓœr¯DrºRÕ;ÏÛ¶ …BÒåD#•lÞH$‰D ˆD"‘H¤€H$‰D ˆD"‘H¤€H$‰D"D"‘H$ǃø«‚R‰D"‘”Gi=) ‰D"9.ÑNìFª"k§K$É™Bq™ò£+ò¡ÈÈ«*R>$‰äL´•£*ñqB#ÝYªJ"‘HÎ,ŽÖkk§ÃNH$‰äÌCv¢K$‰D ˆD"‘HN•’”Ô~—9+‰D"9+)¯ôS…DM#!Ú[õJ K$ÉYŒ×£'TH@¢¢¢˜4qã¾SR:RA p9]X–‰Ã¡¡ªê¾ª…º®ãð¸QK7ðz<ض@8Áçó ‰ŠòašfIA¨Ó4QEQ1mp  9Tù¼‰Dr(]ÒuÛ¶ËMÈ{Ir8 ò+G@Ö¬YC‹-=z4˜¦‰Çãᡇ¢oß¾Lœ8‘yóçS;5Û4yâý÷øéê«ÑƒAÚ<ó ͺv¥]»v¸ÝnÆŽK||<ùùùx½^ Ä_|A(Âår1sæLºwïÎÁƒÙ±myë×3¬ys‚;vòc0Ș¹se}v‰ä(°,‹ ð¯WÞ V£–#ú""ø£}'¤‚Ý©ËòßeŠå#ÎP£jš³âRU(Š‚¦ihZñêžxâ TU¥Y³f!P(NuåÌ™CÁªUTkÛ–ìóÎ#3uêT.½ôR<º®sÕUWѧO^|ñERRRؾ};.— ˲‡Ãx\.æ¯ZÅG›6qsFÁÂÂ}7†D"9 Ç%lœ.n·ë ±4B€Çã)ž«âlc‘“äÙÏôH¯Ââr¹p¹\|V ”òví"wÆ <±±dˆmYX–…ªªL›6 EQ°,k_«GQòòòŽhpQ¯võê OJ"qï^>?^z‰¤’Üšr88q°nˆãŒF¤x”Ëÿ,o$ŽÃš YIEND®B`‚pev/doc/manual/en_us/html/ch04s03.html0000644000175000017500000001557213034177261016455 0ustar useruserComparing PE pieces

Comparing PE pieces

With pehash you can calculate checksums of PE pieces and not only whole PE files. You can for example compare two malwares by similarity using ssdeep. Have a look:

$ pehash -s CODE ComentarioDeVoz_.cpl
sections
    section
        section_name:                    CODE
        md5:                             67b498c232dfbe4f5cc0cabc5e78ac42
        sha1:                            32b5df9aaa201bc8cbfed37344aaa77bf842c1d4
        sha256:                          8f5b794da7fdbbc13f1abaae0949b4eb98935c99e7387c7e0dfef5d4f01ea298
        ssdeep:                          6144:2QrIKt9jjmVG0xcpcZTcLexXqS1XGtbNwI/4p3RLjD0OVG:2QrD3mVG0xcpcZTEexvXENv/e3RD0W
$ pehash -s CODE comentario.cpl
sections
    section
        section_name:                    CODE
        md5:                             973d11759194c14071aa6963de8f55c7
        sha1:                            1934e0085c8776e3243bf658e95b8943d4f91bc9
        sha256:                          e68349bfcb04b20c11973ce27770570ebb22c8c7750133d073f15f7ec9eeda38
        ssdeep:                          6144:FQrIKt9jjmVG0xcpcZTcLexXqS1XGtbNwI/4p3Zv60G4:FQrD3mVG0xcpcZTEexvXENv/e3J6V

Although the CODE section hashes of each files are different, their ssdeep checksum matches. So, you could probably infer that these are variants.

You can also have the hash for each part using pehash without any option:

$ pehash -a putty.exe
file
    filepath:                        /home/user/putty.exe
    md5:                             33c9d1e56152e212367e9c5b01671e45
    sha1:                            9ded3ce2ae09c37ca173bbd3dcb57258b72cdbd5
    sha256:                          b10922648f6ad71f3f20b9acdfacf9aeff706cad6c52737cdc426307ccfa51d9
    ssdeep:                          12288:ApoNd4D7aVwSn8nW+nGQZZcLYX4RXwWLJQ6LU:UoNde7aVT8WvQ3O+4NzLu6w
    imphash:                         dae4485dd029c5e0256f477eda4797a4
headers
    header
        header_name:                     IMAGE_DOS_HEADER
        md5:                             5084c5d5cfe99932e67450023c068941
        sha1:                            856558429bb575486a46a92ba2684eaab8578cef
        sha256:                          52ea4dd296abe995cc1052a3a29325a8306fc888b3d6fea352d2cebdd83e6eaa
        ssdeep:                          3:WlWUqt/vllPln:idqH
    header
        header_name:                     IMAGE_COFF_HEADER
        md5:                             c29db8cff4c151279ea0f3e1e122bb92
        sha1:                            5df76c71b2fcb937b98d566dad7d353f23f23418
        sha256:                          4dc37a0d8a47d3c713b891a86b92acb28126729da2b7a6a5f3656d23fd8c1a9c
        ssdeep:                          3:OHwkn:wwk
    header
        header_name:                     IMAGE_OPTIONAL_HEADER
        md5:                             0de919344c187babea80d66adc2b0d9e
        sha1:                            4bdec527003b46348d8f9a1594f39f064e9dd680
        sha256:                          97e834e37ee922bca8a9388b2b1663491ddf0d3b20c6d37782aa4f2d1d9ebf64
        ssdeep:                          3:2H2l0lvl9gXH9lhtllrll3lll/ldt1l9tllH:NGlvA3
sections
    section
        section_name:                    .text
        md5:                             67b498c232dfbe4f5cc0cabc5e78ac42
        sha1:                            32b5df9aaa201bc8cbfed37344aaa77bf842c1d4
        sha256:                          8f5b794da7fdbbc13f1abaae0949b4eb98935c99e7387c7e0dfef5d4f01ea298
        ssdeep:                          6144:6poNd4D7aeaNqZs+iDpnRKnWDX/ZcnGs9BDT7JjZnZZGN+FAFtt6Xa//lrXwW:6poNd4D7aVwSn8nW+nGQZZcLYX4RXwW
    section
        section_name:                    .rdata
        md5:                             6087c2ffc1a7d69f82696a4f2d3aca75
        sha1:                            d69529b6402c520bdbee855c34ce4455112bd1eb
        sha256:                          30b49d20acb96827857ca125ce0d49838fafafe9d7e49523982b2ff1afe54283
        ssdeep:                          3072:mDBKmaes7rlYhoAw/Jt8Lr6hx3bO6ta/4gRul:mS+oAw/Jt836L3bA/
    section
        section_name:                    .data
        md5:                             5578c6fd3e5a0b764a7f2bcde00f9a16
        sha1:                            b71d5142594f56e896e79e12abf729e94512b9e0
        sha256:                          edd88e6b2ccf3dd5624ebd07b8911e2fa51f4ddc7912d4699ed111d28a2a53e5
        ssdeep:                          96:j/1HpvU2Ro26mTfOkf14dBPBgtbAgUhoSkb/:9o26sN2dJ9rIb/
    section
        section_name:                    .rsrc
        md5:                             24b45ea2b1620870730382fb7308a074
        sha1:                            bca5bc464c261f05751c24dce49d70458647e75c
        sha256:                          695707a6f3385838f6e5b58ab45584acb716bec2a2a953327dcb40314f0c0908
        ssdeep:                          192:Icgh8G2PnHGaAnkTjVDBY5disWxDgPWDSL73oqEnngLg:I5SG2vHi4jVDBKjPfL730ng0

The OpenSSL library used by pev supports a wider range of hashing algorithms and you can extend pehash to use them by recompiling its source code.

pev/doc/manual/en_us/html/ch01s02.html0000644000175000017500000001606513034177261016447 0ustar useruserChangelog

Changelog

pev - the PE file analysis toolkit - ChangeLog

Legend:
+ Added feature
* Improved/changed feature
- Bug fixed
! Known issue / missing feature

pev 0.80 - ?
 ! Missing documentation for libpe.
 ! peres does not reconstruct icons and cursors extracted from resources section.
 * Now the -V switch is used by all pev programs to show their version numbers.
 * pehash: Now the hash of the whole file is shown by default (-c option).
 * pestr: --net option removed (we may readd this in the future).
 * udis86 updated to version 1.7.2.
 + Basic plugins support.
 + cpload: new tool for CPL file debugging (Windows only).
 + Fixed: pestr: unable to handle too big strings.
 + Fixed: valid XML and HTML output formats (Jan Seidl)
 + pehash: Import Hash (imphash) support for both Mandiant and pefile's implementation.
 + peres: output the PE File Version with -v option.
 + Support for pev.conf configuration file.
 - readpe can now read virtual import descriptors.

pev 0.70 - December 26, 2013
 ! Missing full/English documentation.
 ! Missing valid XML and HTML output formats.
 ! pestr: no support for --net option when parsing unicode strings.
 ! pestr: unable to handle too big strings.
 * libpe: rewritten, now using mmap. (Jardel Weyrich).
 * pestr: added countries domains suffixes.
 * readpe and peres: output enhancements (Jardel Weyrich).
 + pehash: sections and headers hash calculation (Jardel Weyrich).
 + pehash: ssdeep fuzzy hash calculation.
 + pehash: support for new digest hashes like sha512, ripemd160 and more.
 + peres: added new tool to analyze/extract PE resources (Marcelo Fleury).
 + pescan: cpl malware detection.
 + pescan: undocumented anti-disassembly fpu trick detection.
 + pesec: show and extract cerfiticates from digitally signed binaries (Jardel Weyrich).
 - readpe can't show functions exported by ID only.
 - readpe: fixed subsystem types (Dmitry Mostovenko).

pev 0.60 - October 31, 2012
 ! Missing full/English documentation.
 ! Missing valid XML and HTML output formats.
 ! pestr: no support for --net option with unicode strings.
 ! readpe can't show functions exported by ID only.
 * pedis: -F/--function option replaced by -r/--rva.
 + added manpages for all tools.
 + pedis: added -m/--mode option to set disassembly mode (16, 32 or 64-bit).
 + pedis: added -n option to limit number of disassembled instructions.
 + pedis: added options to disassembly entrypoint and raw fille offset.
 + pedis: disassemble bytes number specified by -n option.
 + pehash: new tool to calculate PE file hashes (Jan Seidl).
 + pepack: added PEiD signature search (Rodrigo Escobar).
 + pescan: added -f/--format option to format output.
 + pescan: added section, imagebase and timestamp analysis.
 + readpe: added --exports option to show exported functions.
 - pedis: fixed address representation in calls and jump instructions.

pev 0.50 - June 25, 2012
 ! Missing documentation.
 ! Missing valid XML and HTML output formats.
 ! pedis shows arguments of jumps and calls as relative positions.
 * Improved pev tools Makefile (Gabriel Barbosa).
 * MEW packer detection in packid (Rodrigo Rubira).
 * pev now is a collection of binaries and a library to work with PE executables.
 + libpe: xmalloc trick and fixes (Rodrigo Rubira).
 + Output in monospaced text and csv in most programs.
 + pedis: disassemble functions and sections (Tiago Zaniquelli).
 + pepack: detect fake EP (Wagner Barongello).
 + pescan: new tool to search for suspicious things in PE files including TLS callbacks.
 + pesec: find security features in PE files.
 + readpe can now show imported functions with --imports or -i switch.
 + readpe: show PE headers and sections information (most of obsolete pev binary).
 + Released libpe 1.0 to support our programs.
 + rva2ofs and ofs2rva: convert from rva to raw file offset and vice-versa.
 - Fixed erroneuous ord numbers in functions imported without name.
 - Fixed two bugs with fake TLS callbacks in petls (thanks to Qualys guys for reporting).

pev 0.40 - August 7, 2011
 * Compatible with PE/COFF specification v8.2.
 * Date format in COFF header similar to RFC 2822.
 * Improved function to get machine type (Gabriel Duarte).
 + Added "-r" option to show resource items at first level.
 + Added more human-readable fields, like subsystem and section characteristics.
 + Added TLS callback functions detection in every PE section.
 + ASLR and DEP identification.
 + PE32+ support. Now pev can handle 64-bits executables.
 + Variable data directories support (no more fixed in 16).

pev 0.31 - May 11, 2011
 + Added characteristics flags in COFF output.
 + Added human-readable machine types in COFF output.
 - Fixed compilation in OS X. (Gustavo Roberto).
 - Fixed warning with Linux 32-bits boxes when compiling.

pev 0.30 - February 20, 2011
 * Improved memory use.
 * Now pev shows the Product Version with option "-p".
 + Added option "-a" to show all information.
 + Added option "-c" to show the COFF header.
 + Added option "-d" to show the DOS header.
 + Added option "-o" to show the Option (PE) header.
 + Added option "-s" to show executable sections.
 
pev 0.22 - January 9, 2011
 ! Does not support PE32+ files.
 ! Plans to read more PE informations.
 * Improved Makefile.
 + Added manpage.

pev 0.2 - December 26, 2011
 * Improved search algorithm.
 - Fixed bug compiling in MS-Windows platform.

pev 0.1 - December 12, 2010
   Initial release. (Eduardo Fernandes, Fernando Mercês, Francivan Bezerra and Thiago Moraes).
pev/doc/manual/en_us/html/ch05s02.html0000644000175000017500000000705513034177261016452 0ustar useruserDisassembling

Disassembling

pedis is a full disassembler that can be used for different purposes. Let's say you find the following output from pescan first:

$ pescan -v malware.exe

file entropy:                    7.868122 (probably packed)
fpu anti-disassembly:            yes
imagebase:                       normal - 0x400000
entrypoint:                      fake - va: 0x2ddb40 - raw: 0xe0f40
DOS stub:                        suspicious - raw: 0x40
TLS callback function:           0x6ddd10
TLS directory:                   found - 1 function(s)
section count:                   3
UPX0:                            suspicious name, zero length, self-modifying
UPX1:                            suspicious name, self-modifying
.rsrc:                           normal
timestamp:                       normal - Mon, 18 Nov 2013 16:34:20 UTC

You may want to see why DOS stub was marked as suspicious. You can use pedis for that. As DOS stub starts on offset 0x40 and it's a 16-bit assembly code, you can ask pedis to disassemble 16 bytes for example, starting at offset 0x40. Look:

$ pedis -m 16 -o 0x40 -n 16 malware.exe

40:                              ba 10 00                        mov dx, 0x10
43:                              0e                              push cs
44:                              1f                              pop ds
45:                              b4 09                           mov ah, 0x9
47:                              cd 21                           int 0x21
49:                              b8 01 4c                        mov ax, 0x4c01
4c:                              cd 21                           int 0x21
4e:                              90                              nop
pev/doc/manual/en_us/html/ch01.html0000644000175000017500000000600013034177261016106 0ustar useruserChapter 1. What is pev?

Chapter 1. What is pev?

Table of Contents

History
Changelog

Since version 0.50, pev is a multiplatform toolkit to work with PE (Portable Executable) binaries. Its main goal is to provide feature-rich tool for proper analyze binaries, specially suspicious ones.

History

pev was born back in 2010 from a simple need: a program to find out the version (File Version) of a PE32 file and that could run in Linux. This version number is stored in Resources (.rsrc) section but at the time we've decided to simply search for the string in the whole binary, without any optimization.

Later on we've decided to parse the PE32 file until reach .rsrc section and get the File Version field. In order to do that, we realized we had to parse the entire file and we thought if we could print out all the fields and values we went through as well.

Until version 0.40, pev was an unique program to parse the PE headers and sections (now readpe is responsible for this). In version 0.50 we focused on binary analysis and splitted pev into various programs beyond a library, called libpe. Currently most of pev toolkit programs depends on libpe.

pev/doc/manual/en_us/html/apa.html0000644000175000017500000006665313034177261016140 0ustar useruserAppendix A. GNU Free Documentation License

Appendix A. GNU Free Documentation License

Version 1.3, 3 November 2008

Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.

Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

0. PREAMBLE

The purpose of this License is to make a manual, textbook, or other functional and useful document “free” in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.

This License is a kind of “copyleft”, which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.

We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.

1. APPLICABILITY AND DEFINITIONS

This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The “Document”, below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as “you”. You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.

A “Modified Version” of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.

A “Secondary Section” is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document’s overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.

The “Invariant Sections” are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.

The “Cover Texts” are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.

A “Transparent” copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not “Transparent” is called “Opaque”.

Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.

The “Title Page” means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, “Title Page” means the text near the most prominent appearance of the work’s title, preceding the beginning of the body of the text.

The “publisher” means any person or entity that distributes copies of the Document to the public.

A section “Entitled XYZ” means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as “Acknowledgements”, “Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” of such a section when you modify the Document means that it remains a section “Entitled XYZ” according to this definition.

The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.

2. VERBATIM COPYING

You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.

You may also lend copies, under the same conditions stated above, and you may publicly display copies.

3. COPYING IN QUANTITY

If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document’s license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.

If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.

If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.

It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.

4. MODIFICATIONS

You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:

  1. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
  2. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.
  3. State on the Title page the name of the publisher of the Modified Version, as the publisher.
  4. Preserve all the copyright notices of the Document.
  5. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
  6. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
  7. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document’s license notice.
  8. Include an unaltered copy of this License.
  9. Preserve the section Entitled “History”, Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled “History” in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
  10. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the “History” section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
  11. For any section Entitled “Acknowledgements” or “Dedications”, Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
  12. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
  13. Delete any section Entitled “Endorsements”. Such a section may not be included in the Modified Version.
  14. Do not retitle any existing section to be Entitled “Endorsements” or to conflict in title with any Invariant Section.
  15. Preserve any Warranty Disclaimers.

If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version’s license notice. These titles must be distinct from any other section titles.

You may add a section Entitled “Endorsements”, provided it contains nothing but endorsements of your Modified Version by various parties — for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.

You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.

The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.

5. COMBINING DOCUMENTS

You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.

The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.

In the combination, you must combine any sections Entitled “History” in the various original documents, forming one section Entitled “History”; likewise combine any sections Entitled “Acknowledgements”, and any sections Entitled “Dedications”. You must delete all sections Entitled “Endorsements”.

6. COLLECTIONS OF DOCUMENTS

You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.

You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.

7. AGGREGATION WITH INDEPENDENT WORKS

A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an “aggregate” if the copyright resulting from the compilation is not used to limit the legal rights of the compilation’s users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.

If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document’s Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.

8. TRANSLATION

Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.

If a section in the Document is Entitled “Acknowledgements”, “Dedications”, or “History”, the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.

9. TERMINATION

You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License.

However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.

Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.

Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it.

10. FUTURE REVISIONS OF THIS LICENSE

The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See Copyleft.

Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License “or any later version” applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy’s public statement of acceptance of a version permanently authorizes you to choose that version for the Document.

11. RELICENSING

“Massive Multiauthor Collaboration Site” (or “MMC Site”) means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A “Massive Multiauthor Collaboration” (or “MMC”) contained in the site means any set of copyrightable works thus published on the MMC site.

“CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization.

“Incorporate” means to publish or republish a Document, in whole or in part, as part of another Document.

An MMC is “eligible for relicensing” if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008.

The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing.

ADDENDUM: How to use this License for your documents

To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:

Copyright © YEAR YOUR NAME

Permission is granted to copy, distribute and/or modify this document under the
terms of the GNU Free Documentation License, Version 1.3 or any later version
published by the Free Software Foundation; with no Invariant Sections, no
Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in
the section entitled “GNU Free Documentation License”.

If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the “with… Texts.” line with this:

with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts
being LIST, and with the Back-Cover Texts being LIST.

If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.

If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.

pev/doc/manual/en_us/html/ch04s02.html0000644000175000017500000000737013034177261016451 0ustar useruserLooking at function directories

Looking at function directories

readpe can show you the PE data directories with -d option, like this:

$ readpe -d putty.exe
Data directories
    Directory
        IMAGE_DIRECTORY_ENTRY_IMPORT:    0x78378 (240 bytes)
    Directory
        IMAGE_DIRECTORY_ENTRY_RESOURCE:  0x80000 (15248 bytes)
    Directory
        IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG: 0x78318 (72 bytes)
    Directory
        IMAGE_DIRECTORY_ENTRY_IAT:       0x5d000 (1292 bytes)

If the executable has an import directory you may want to see a list of imported functions with -i / --imports option:

$ readpe -i putty.exe
Imported functions
    Library
        Name:                            ADVAPI32.dll
        Functions
            Function
                Name:                            RegCloseKey
            Function
                Name:                            RegQueryValueExA
            Function
                Name:                            RegOpenKeyA
            Function
                Name:                            GetUserNameA
            Function
                Name:                            EqualSid
            Function
                Name:                            CopySid
    Library
        Name:                            COMCTL32.dll
        Functions
            Function
                Ordinal:                         14
            Function
                Ordinal:                         15
            Function
                Ordinal:                         17
            Function
                Ordinal:                         13
    Library
        Name:                            comdlg32.dll
        Functions
            Function
                Name:                            ChooseColorA
            Function
                Name:                            ChooseFontA

You can see the exported functions as well by using readpe -e / --exports option.

pev/doc/manual/en_us/html/index.html0000644000175000017500000001216713034177261016475 0ustar useruserpev - User manual

pev - User manual

0.80

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".


pev/doc/manual/en_us/html/ch03.html0000644000175000017500000000467713034177261016132 0ustar useruserChapter 3. Configuration

Chapter 3. Configuration

Table of Contents

Plugins

Plugins

So far we support only a single plugins path option in pev.conf file with the following structure:

plugins_dir=/usr/lib/pev/plugins

All pev binaries will look for a pev.conf file in their current directory first (Windows reasons) and a $HOME/.config/pev.conf file after to get the plugins path. If it cannot find both files, /usr/lib/pev/plugins is used.

pev/doc/manual/en_us/figures/0000755000175000017500000000000013034014706015163 5ustar useruserpev/doc/manual/en_us/figures/runbat.png0000644000175000017500000065472413034014706017206 0ustar useruser‰PNG  IHDRèý‰'Vå iCCPICC ProfileH‰•WXSÉž[R -)¡7Az•Þ;ÒÁFH„C ¨ØÑE{AEEWDT\ ‹ D°÷••u±`CåM èó½ýÞ÷Î÷ͽÿ=sΙÿœ;3ß Šö, U ‡Ÿ/Œôa&&%3I@8‹'ðŽŠ ÿ(ïoC[(7,űþÙ2‡›Ç‰‚8•“ÇÎø(¸&[ ̀Рõ³òbübU!$‘,ÆéR¬%Æ©Rl-±‰ö…Ø2•Ŧ  ŽÏ,`§Ã8 ˆ­ùâ{°3Xˆ»!ž“3bE*Ħ©?ÄIÿ·˜©c1Y¬ô1,ÍE"d?^ž ›5çÿ,Çÿ–œlÑèú°Q3„AÑâœaÝöfÍ cÈiá§FDB¬ñEGb/Æ÷3DAq2ûvž/¬`€Ë/bXK”!ÊŠó–a[–Pâ íÑ^~p¬ § gFËâ£Ü<ÿ˜QœÁ “Å\ÎÏŽÅUi¼€`ˆáLCfÄ&Hy¢ç xñ+@Ü™—*³\˜á1j#E‹9Bü.M-µÁÔsòFó¬Ø, uˆ½ò3bƒ¤¾X"7/1l”‡ëç/å€q¸ü8g Î.Ÿh™o± ;JfUq³£¥uÆåÄŒú^χLZìI&+$JÊ{/ÈŠ•rÃq|`l©`&È¼ŽÆø%í , é€ ,ešQI>c@!ø ".Èóó‘ôrAÔÓJŸ– MÒ[ ñÈÏ ÎÁ5qÜ ƒO/ØlqgÜeÔ©8:*ÑŸèG "ÍÆx°!ëlØ„€÷Ÿºïž„g„.ÂÂ-B7á…½\˜³˜!,³xðTEö=ƒW$ü‰9„ƒnè Ë.z÷ÚàÆµCþ;ÎÀ5%n3ñÆ=anPû#CÑ‹ïµüy<1¿s”éÌd,RÇøûŽYýÅ÷‡qà;ôgKl9vkÃÎ`—°¬0±SXÖŽã±™ðT2FG‹–pË‚qx£6ÖuÖýÖ_þct–ŒPò¿A>wv¾xAøÎÌòÒ3ò™ÞpGæ2ƒùl« L[kÄû»tûxËìÛãòw]îi\J 2ý»ŽeÀñgÐß×¼Ëk-':Ù"aT‡‹@Špeh`LaN¶À¸/àB@$ˆI`:¬zȬgy`1(¥`-Ø*Àv° ìÀaÐZÀp\àxçFx Á{0Œ  ¡!tDÑEŒ ÄqF<$ ‰F’$á#"d²)EÖ#ÈN¤ù 9ŽœA.!]È=¤éGÞ ŸQ ¥¢ª¨6jŒNDQo4E§¡éh.Zˆ.EW£åh5ºm@Ï WÐ[h7úÂ&10=ÌsÆ|±H,KÄØ¬+걃X3ü×7°nlû„q:ÎÄ-áü Âãp6ž‹/ÀWâø^¼?‡ßÀ{ðAüFÐ"X\ Á„DB:a¡˜PFØC8F8WTá=‘HdMˆNpm&3‰s‰+‰ÛˆõÄÓÄ.b/qˆD"i,Hî¤H‹”O*&m!í'"]'õ‘>’åɺd[r9™Ì'‘ËÈûÈ'É×ÉÏÉÃrJrFr®r‘r¹9rkävË5Ë]“듦(SL(î”XJ&e1¥œrržòòV^^^_ÞE~²Óç=Ž;nŸƒã®û >^ÝK«^¢^¯~Ký³SÃ_#KcF£Æ#M\Ó\s²æ,Í*ÍóšãUÇ»g/xü}-TË\+Zk®Ö.­v­!mí@möí³Ú: /L:'uúu麺<ݺ§tÿdª1½™ÙÌræ9æ ž–^žHo§^‡Þ°¾‰~œ~‘~½þ#гAšÁFƒVƒAC]ÃpÃy†u†÷䌜2Œ6µ}061N0^fÜhüÂDÝ$ؤФÎä¡)ÍÔÓ4×´Úô¦ÑÌÙ,Ël›Y§9jî`ža^i~͵p´àYl³èš@˜à2?¡zÂKª¥·eeeÃ*̪ȪÑêÕDÉÉ×Ml›øÍÚÁ:Ûz·õ››"›f›7¶æ¶lÛJÛ›v4»»…vMv¯í-ì¹öUöwèáËZ¾::9 :ö;:¥8muºã¬êå¼Òù¢ ÁÅÇe¡K‹Ë'WG×|×î»Yºe¹ís{1ÉdwÒîI½îúî,÷îÝLÝžzž,ÏjÏ'^^¯=^Ͻͼ3½÷{¿ò±öúóùàëê;ß÷´æèWâ×á¯âç_áÿ8@? = .`0Ð!pnàé BPhк ;ÁÚÁìàÚàÁ§ù!çB©¡1¡¡OÂÌÄaÍáhxHø†ð‡FüˆÆH¹!òQ”ITnÔ“£&WN~m=/º-†3#f_ÌûXŸØ5±âLãDq­ñŠñSãkã?$ø%¬OèNœ˜8?ñJ’f/©)™”Ÿ¼'yhŠÿ”MSú¦:L-žz{šÉ´ÙÓ.Mלž=ýÄ Å¬GR) )ûR¾°"YÕ¬¡ÔàÔ­©ƒl_öföKŽg#§ŸëÎ]Ï}žæž¶>íEº{ú†ôþ ÏŒ²Œž/¯‚÷:3(s{懬Ȭš¬‘ì„ìúrNJÎq¾ ?‹n¦ÎÌÙ3»‚bAw®kî¦ÜAa¨pO’7-¯)_uÚE¦¢_D=•gÅÏ:2[y6vûó9+æ—=·užÞ¼Åózæ{Ïß¹Yº u¡ÁÂ¥ û.Ú»˜²8kñÕ"ë¢õEï–$,i^ª½tÑÒÞ_©+V(ßYæ¶lûr|9oyÇ »[V|+á”\.µ.-+ý²’½òò*›Uå«FV§­îX㸦j-q-ííužëö®W^_¸¾wCø††Ì%ßmš±éR™}Ùö͔͢ÍÝåaåM[ ·¬Ýò¥"£âV¥OeýV­­+¶~ØÆÙv½Ê«êàvíí¥Û?ïàí¸»3pgCµquÙ.⮂]ÏvÇïnûÕù×Ú=š{J÷|­á×tïÞ{®Ö©¶vŸÖ¾5uh¨®ÿÔýü4´<¸³žQ_zúó·”ßn=ÜzÄùÈÁ£FG·£+i@æ4 6f4v7%5u9ÞÚìÖ|ìw«ßkZôZ*O¨Xs’rréÉ‘S…§†N NœI?ÓÛ:£õÁÙij7ÏM>×q>ôüÅ ζy·ºè~±å’ë¥ã—/7^q¼ÒÐîÐ~ìªÃÕcŽ ל®5uºt6wMê:yÝóú™~7.Ü ¾yåVÄ­®Ûq·ïÞ™z§û.çî‹{Ù÷^ß/¸?ü`ÑCÂÃ’GJÊk=®þÃìúnÇî=~=íObž<èe÷¾|š÷ôKßÒg´geÏuŸ×¾°}ÑÒÐßùç”?û^ ^ÿ¥ü×ÖW¦¯Žþíõwû`â`ßkáë‘7+ßj¼­ygÿ®u(jèñûœ÷ÃJ>j|ÜûÉùSÛç„Ïχg}!})ÿjöµù[è·‡#9##–%9 `°¡ii¼©€–ÏðGQÞ¿$‚HïŒþ Kïhq Æ €¸E„Á3JlFSá[|üŽõ¨ÝX“I^š­4ÞbGFÞj@jà«pddxÛÈÈ×Ýì=NçJï}b!Â3þñÝ \5X¥ ~’ë©k$'DHbKGDÿÿÿ ½§“ pHYs%%IR$ðtIMEß + ân¾N IDATxÚì½w¬dw–ß÷9¿{«^#›ØÍf34Óp†3œYÍîH«•veÁ²,À²-À Ç? ° °`X¬¼%@†myGžš°3äD’3ÃÔ ÍÐC6ÉÎáu÷KõªîïwüÇ了Uõª^Õë~îpúUÕ ¿x~ç{¢|í¿ŸUz!õÿ×ÛÅn×¾oÖäÝý6`@RU×_¿¥ð¹n¨ê€íY›ñS]«i»-HQÔ 6"2ØÚu†’îTú~ÁåØëkíÄ !ý@î»Â×&þ`D‘„Hr‰´]×"žOIºw¨4=·pG|_öpÉý¦ê{­M×K[N,¹ñ@Tý½Öáð}ÏGri‹ç¯é‰¡b#¾&¹W²"ÚÄ-’ñ1Æ_gLÖê¦^Kq,Z§!D0`´i-¾×Äã'&ß/ß1`D0FcÒ~HÜ]4™[ÿ,1‚ƒ1þIê,.²Y?%ž[#’_S~Œ0ÙœˆøçŠÀÆ$4Tß$Þ¢éHû JˆŽ%0Š ˆ!IÇ_q¨‡Æ‹]›ÖƒÁ¤Þ¼\5¾E±ªþŒVçùm2“Æ€œ‚ušýëüëœ…È 6RlC‰¬£aÖz¾í"«X«X§X눬Å:‡ÓølÇ]ŒÁÍYÅàûëÔ:Å9矕ö9@BcB@0"HÆh:çÆÿ&Ó仜lxD Ư¸ þý&æb ñ +¿T‡çüX*þ_§ Îa[ËB¯<?GãÅïbN—Œ¯M8_„& Am©N­ÞÀ9ë‡Åˆ"ë×¢~ÝŠç1Ö:?7š—½ê\vŽ©_w&«ÀÄ<Š D–êJÝú^Ýyk$Åó­&^¥©Trk˯áü4¯•îøÏÅ«Wb6n<ËïSfE݇$f(üù–ì½x\¼eTÄï¿ôÀö’yŒ aó¶–ÿL›ßóßI‡ßWKHíº÷:Ø­²ÖKG;qòŸÛÍm·q¸™ó_RI%­áÉÓv÷Ë2ì­E3éG¨¤‚t«ÒSR JN‘ M"¦x0°ç’ÜùƒBbìA ¼SE@ª(ôEr²1xaÏ9 @0hj&H‹dQ­$JáÌ¡M8ÞƒýÖæçÏ{TQPE°âÁ“ægC½$—ˆÐb=Keãߡƃ°@ACI'Üj³ˆ.y5‡zAÍ:Hu“‰€.‚¸DèK€uÜ2×¼ÊT¼˜€ ¢TTi(˜ÐæçL2°(âA¥3ŽC š)HŒçéÜy™Ò¥"‰A¼ï¼¶iù“Pã6ª¨óŠœtíņDcA5S<ˆxÁÝ„ÃSuJ-PÎdÊ%QÅ<Lƒæö&š‹Iû蕱⠞}§Jäbpé«`ăÅE†AE"pt üº× '! Ç Å:Σx|BÉÖ»Z¯tÊ´LñŒ% 8wª1ÈKþõkÉ5K…ñç ¹ÜjL6Qùu¥šïäÙ~l²u!*ä`‰  ª5‚q+ìüõ&Pœõ¼Æ"„xA'^)Av/‰â¡ WŠ[EsoS|(]ÑMO¢›¶Y×éÚniŸ,Ï®euÅæ´Ÿž cƒ1bbžIóHFX«D¢H]ãU9XjDÔëtõ UùjŽÝ£‰æ,w¶H¬0b2Em^‰+žÄHª ’DˆEÅfå‡í XC‰ÛJaw´hß—™0ÓgVGܸ{Œz±’Ãhî””ÂHÆÐ>§J˜ÔË€²DâPiÖø«É>k2¡Åß‹ yåÚ@pÑ®Ædç»Ï@[ÍkNŒ6 ›RØ7’cPªí7˜h3£Î. ™µ¦rEºhÚ}6ÍÎ2÷KÁ6´<ƒ(馣¬;Žîõu¢^0ìk̤GŪÐbi‘DË.-œ$=S4 5Ûç’’šÛýNóǾÆ×J3×fž¥-ÚÿœÐÔÄ[šy”ÄÂ;6#MÇ[ÎŽ”Z„¥Éœ ’äoyióHjfUDcV]±©]Jr'S2vã cÀ¤€Ì5ÏR|›M¿Óö^ z¡Õ ñ;²ÓTb-€Jóý6áÍ.î·óZU%ˆ¼e%oí’dLÎJ&€K}8ò½Õf㞸ÐKæ&™s?ŽÖ¡BAP(¶ÆzK¿¤‚±ïõ Æ`EƒÄL*©0M â’6mslíõÓm|Û 3Hs¿ÕKù1L¬TÑ¿:ˆ?n˜ N-ÁZÿªÈ(§4$›•Ì$ìA¾KÛaT°±ʤÀ<Œÿ½Q럂s[o½e6²‰¬ 9Ê ±RɤÞ~ dÞÙBŒ•h©l!ÎÛ¶£ÞI6^&ð Ù©CTRÙ1µ#Ç %µf«¦ãér?—tDs0$l©²N2Þ)E/‰oH ³ÚdÔI½-4S®ÄFtPo=•˜Ñ‰(â¼õ«¸ØR-¨8TFŒç "­–ûŒ'yï‘fÞgrîmz;yNš‘[‡c5ÓqJüXÉÞ-íŒ\ÍgŒ6©cóÞDÉý±•0±Æj÷S^ÕÛcýŠ2±MâûCœ³8'Ù¡™eX±8QÃ¥ì,9„$QÒ¤ëΈ‰Ç4*&}óÚÊ Y?‰WXêdÀiªÌtÉÉe’­’Wôi«j;Y’\å”O²ö'¾fØ:=œu‰JSUvF;™œÒjŽÍÿ+-@ÿÒ›ŠÜ¢_ªiÇ%žKdž€*Ò¤"·&SŸœv*4¦È¡ÚöGm¾F\ø¹B#3ð¦ÚçL%Þ•DMJXðÒ¾‘hÙe`å–I–º,£HhÑÒkÊ,‹ó*Z`ÉÚ*€6 Êí¶v´{uÿ·Ûý9a¦Eé#­wwíBÓ¦_ñ–YCe€Ä®YkÊ3äöfH®{¤÷{W¶ïLN¹ÖFH(þ«™ .SÎ’ L SWÉøÄú ©8éÁœdÂ-([M&…}/­|7wìuà79¡F£¦sªÈGR‹ª¶I“2Aš‹E¯íØ«K]Ô“³Ã“ËØQ®=ˆóÀÙ D)*sµEQ¡EÅCܧJ¤ŠQ—ZuùMTò‰ù¨…{ëªâ­ëNb—P§Þý9Ãb$ë_ü·KÝOG0dajš¸¾&ÀÌ©·¦¾á™[oæRYƒixëpPqcAL€ 4öNˆ6ÞŠNEQë­ÔQ0 4Sï¡!Ù)ë°­ˆq¾ŸFœ’$x¯ÜHØ ƒòDfRuññº0XbêÈ+Pªh༻´µ±ß*‡¨‰çʯÀo ÿ,1ñž4ˆ‡‹Þ’§ŽŠF~\]ìï¬ÃªK-ˆ‚Äá’½óʤ*1ðŒRª!‰ŸIìêíà œx Y ‰ A`bn$Màψ`Wyƒ%?&’Í‹·˜Æï±9ùÁåýJT2Ú}¨Gºácž•²¯äÛ$TÁ÷iî%VR$㧉²Çë´0Öaœï—(*Ö3½@c¯iZòÎy˹8õÏŒ=-4ç%ä² ˜‚ÄÕÆ¢ÚÖR¥yõ§¬ÈM²¦t9~´ðPIŸkÄdGMNè…3"ëE֯Ι_Åx0{êz—®^©!¿ó»–›?eEkc¹kRžfÁ­Îw—ÏÌ û.wAßïå ¼y|¨ógé`)‘Â7ŃGšæ«ÛŒuåI:Xþ…æ3(‡[bÚsû£è‚4ж+Æ›÷0’·3~••÷ÜÅ ßIÄb¥K;/‚Éy2ˆf®›É‘ïHâÍc«½óÎq¢àKâÒébË"™°9`™Ô¢©‰`žX·b)=±ô'µIE ì`—a¨ÞòkðÀݸ8FUÅÇc-Î(‘QÂŒqa˜rÂe4[Æsr¬Ë͈H«”“ux+¶ÚXT3)b†eö¯dz€´ÒÔrfŒ8 RGÃPgb÷ö\̼&1Fë®­ö²è‰ÒlúiÕkK«Õ[šÃ€2œ"÷íUBíÄ¿eÀçø. IHJlÕûä׳÷ ±*^q˜¸ÇÀÚi3P”®y¬´p¢õ›ÚtÂÄJ/'Íà´Å5žïÔÀÖ’ÛB›<ËÒ;u¹ƒ@ÛèÛµU+Ó±ÚÐö*Ÿ¶o–»]¯²l¥}›Y4'=…¥Àzë§OV .¡I·gtKˆSRI%8ïíð,¸Œ‹i•Nó:sYŽË¬=÷I±@Q>oÓTé*xÒÞü¬Ì„X<[,ü’qò (æ’¨×業׵€ˆfƒ?Y¬vsÇ‹kÐVQ+d<õ1ö÷»Ä3 ƒ"Þ…7¾Kcà—Å?Ä1ÅM¢¡´„Ã% ty™Óz÷`‹àÅ6 ‹5‰§Bˆ1Þ†lqTˆˆŒbŒ#! &´&ðÖöØ 0±>)œ3q(Ä'Qs¹(dq)@—\⸠D“ÜŒ1ˆDxž›#8'±5W4€*u Z…†5HUqKKE#аÐPÂ8¶ÁªÉQ—Æä&š͹‰g <ózɇhû$E¸c Ö€qñ¼&y€Œ C¹˜½$#£Z‚ôŠ1ê“-ªøüâ=;R`ìã!0b³Äq—œ‘4Éj’¦ËÅ1Ü™{¼àÚ$+¦`K¬-›%‹Ì“&ö`pË)زü©…Ô{ûnpb²ίõõá šExØD±a|¿ü;ÓP iF_yïemjè…ïr¾Œ+‡+Åê:ÐmIÒ5#Y^“ˆ:÷W“¦)ÌH»JÒíOĦÐ*]ÞŸ<ÝQÚºÎÒvR„ùEåk@Ç®Øxù›¦ ®„ijÞ…\‹ØÌ«'ï1Õbk•Âô”à`u—þ º‰øþ[Ð¥²o¹²¤Åór–TÒ*1b„ÐÕ -AhZAIƒ6µ7o/½ ÷gâƒ)-ˆ±éd—&OLH0i^’•÷̿ҭøhMSÎ,Ö¸þÓëÓ%p脤5¶5÷^m¯&)´¥Å´¹Qz1¹|Òroò4eëÍÅÀ&ÖA͹áksF~É[©DsY쳘em¹xýBœdꊚ÷;N×Pi³ì’ºÛ›ÔýZâQƒ‰ÒŒËHìŸs×Î%y2’=/‰áÖ\ªrmÊKgLVÀ¿7N˜„ü©’u$#˜àR§±B½µ?J²º[Ü­U‘óÜÕÅ ÷ŒâllUTŸ¼*uåv9A=•û5K2'Ø âìõR´.çöµ`},e<Î6‰!N2_“óŒs™K´Ïã'¥¬ßÂA ˆsˆ“$Æ¢™WàÝܽ{g—¹€»,sY Æ5IB˜ö½ i'‰G ¬!î{ª\Ibá¥uÛ xÓØç$÷„ñŽ®N !±B)Núä³ÅkêæÜç³ÎÛ\†yŸ%>Q®eñᶉ3ärÚµv¯ JHòiW,ÝÍêÚ£´ÙîÐ[.&:§p1&ðí ŒkŠ?·NÓÌþÎ9p®%‡Eëkµ‡³f¹¤xE7xíØ¥tÕH³™%ßËÿ„.å=wL¼óZ+AIÓ¤kœ„2e©¹„˜]‘·æbÐ;\7@`é­Öí¬‘|”Sà¦zZX3®™g.²Ì-j.ì˜ãŽoÃ„É æª(«Ôû}H kK*©¤3`r‘ÕÝÏíóvnœÜ¤í:Hûu g&÷»Ô«AÛ(6³„ʦκRF×­bQ¡ö§0À+®ô¤½õk9aBZkp¬.7vÜý$qÉÄØ Èúð ,Eâý“(9¡Ç--*g.-ñÙ…EÎ7FqYVŽþº×Øö¿ÑuM‡‘¼­U|.Yq’4-0²RÉPRI«G—γm[Ȇ-U†Æ†©Tª±õ§b`È@Ÿ½¹t*©¤’J*i­HÁ•2`I%õŽ—AM—À°.·Á4«á JQŸ7Ã:Ò£ºct,dóè<§>¹Î{Kë[ÞuK\Üóe*îìé*™[I%•$LÞ8ÍöÝ#¬_oBÁ5uU"cëc]ëuM‰¿ºÈOÞ Ï•#\RI%•TÒêƒô’J*i@„Ç'؆òqhšRQQ!äÆ:Ÿ´5ÆÃÆ(SUön¬ÓøøV¶7¹»‡ý·zå·‰”V¤[¾¾¤äÉ%•´šº' cÆ¢Vˆ-"Œ`BïÞn*†%‰“Ü­îw΃Öâj(YRI÷Ø ·\ìdI%•TRIw­$æ¥[œÉ€ÏJò³¨óeMÒ*Iž²´=É'MKøJM)CaótÈgó –r°¼g€ž%ÇÑxÍŽÒêhû†¯m%fé×G?‰Ó)Ôy,©¤’ú`"ln\bý„¥j*hÃ"âÐÀgovÎ ¡AÅÅ™€g-iáe—c„ù¿1¨-K*iå¢E¹kJ*©'*½³JºÃ€ùȰaj,ŒË2f¥éR`ªí¦ªrùFƒz”e­2L¯àYiêK._¯SüÎÁpU˜š¬øÄ–qâÌ´þ#¹g%ÏMd> ¹|y‰Ú\”Ê„b•MUË —yK·§7ÜÂ2kÒ7HN+l–³¤’JZãCB a$h˜ä匓®(¾\J€¯)œËʤ±j5­‚än›Ê¨”TRI½íÇ’J*©Ü0%Ým+U6ìØ0ÌÅ€F" NjsVjõžTIç Š#aÄÖiùk–º…ÑaaçÆìYÖÆ•¬¶} Ö)6r Û¦ÎÍDÔÊpUx`LÏ„‰êà,Wð Ûe¥/‹CEXSajëaN6,,Xoâ®Zmƒ[[]Jë’J*é¦D곤fÕ%šë‘:Ô ÆN5W:ŠL›js2S àµo'¥’Jº'áF©¸/©¤ÞöK¹WJºcx»rpû8ïQ¬³X«,.A=ŠÁµÓ¸Le–|ÍZ¥ÑP–êJT¯±Ký»'øøJ¶Opêœ9‹‹`¡®Ôó@ÝeÏrɳ"¥¶¤Dõ%îß°ÈѦøð\}{G™:û:®QÇ9‹«Õ ¾äÝ×‹ÝØãTîΡ‘E£º´Dm©ŽÝt]þ&'ß%q—WuYU½å]›‹Nöwøú;—9©&ˆÜ¶]Ïç%ð¾ø«?÷%ÝëRÉà ¼èù“º+/ñb nðW§þsD‚ã;—þSf§©ŽM4W-êÐѵ­QRIw•©[K*i%âV™ª¤;¡34×甓B$‚uÞ€ 8ë?«k T¥`g”HáòÕ%>4ˆ0\®Í:6NQ"Gó³$~Vüò†5B5P"àÂå%ž~8@áªÁÞ¸F01…jq‘7®˜È'‚“À{G:‰âÒ»Š!¢vîŸ#8Û\*OSƒÎJ\ÜWÉú}g¦r§­ï>ê+®á¨JçWj~KŸ÷ë6.Ò-(GÀÆä,ý¾ÿ£_ÿ&"`X÷âÇÿñ“Æ‚CTªUïÒ\µ{‚*íMï%•TÒÊÎt”TRI%ݼ}±‹ÃÞbÞ¨CÝ‚¼»»MþÎY¿­«þT0âÿKŠT×–`aȃà©Ñ€ ïï=ÍqΗMÓØž|éše¡¦Ù³Dãóf©ŽÕQu„bY?Îõ³WÐFÃ?,rÞm˜Ü¼ž…+3,-Z/öãeK‚ „ŠCê­H9\‰FMѾûÁ2$ƒå˜»Ãû>HçÅ—@’È”tûœ`òå#C þ‡¿ô? ö ‰ï}îïñ†ÿ×øw1†+§þ˜?;÷·¹:ò7ŸXߢ<“„ѬâZW`ýdÀ†é Æ‹5ǹKu"Ûúc`ÃTÈäx…0€zC™¹ÑàÚ¬e¨*lÙPex(ÀZÇÕk ®Þ°}ñʼn±€-ë+|z¡ÎR½s梱æõUªƒª²P³\žiP«+¦BÖM†„!²ŽÏ.ÔYj¸’OÜSTNvI%•TÒÝÉÞ…ÈÁbÔ õHiD@"hXïÞî\ΩшA‚œuZ«PkøûþÖ¯stßв¯ÿ¿7Ïÿýí1ˆ‘fIÍY´¶ˆsŽ]ÇpäKñÆ¿û §~ø:‚7wõ%ö?wœc¿ûÞúãïsò;?EŒ5^Îëâ–+àîÆw#ý{”Ö÷’VH`Š×‚ª‚Ó½þ\:õ)3çOùPòo0Õ‡Àßä¬þç¼3w‘³üCÆ'×ãUŸš"ýlè´ô7L†âçoÍ23­¨¹ª°y]…gŽM1ó£+Ô®ãPo^_å‰#“œ<=Ï}[F6¼úî,~ºÈ¡Ý£lÝ8ćŸ.pxç8;·DüìÍë4å~¿—¸r¶K*©¤’îBaK½E»ÑðÉÛ¬oœ¶ê-å.®‚Æ5ÈEð¹ëAdý³"ëŸÛ¬óa·Š¤ïØà”Ë¿:Gíø"ǾþyªÕ oÿùШÁ‘¯žã Ô®Ïrùý}aUÍEcPµ%@¸ÌÚ*,¶Apâ½]fMÑ4 ¥w“ ºóÛÜ-±‹’ñLVÄà®.ðÉÛ/³aÿÀæýj`¶ݷ‘Ã_àÔïýC.^ÿ SÏÄõ3ýdâÚé^• Ôæn’×¼5qMi”ý»FØ0]áíçùôB­ªìß9Â{/PÀç SUÞ?=Ï«ïÌñ›Ï­gýT…±Ñ€ý»F¹1oùðÓƆöÝ7̦õff£¶ÚÀÔ f£‚1Êg—êüù®2;oSÝ›’‹Ã¿;{y‰ï¼t•Ùùˆ³ë|ý‹˜¯‹¼yjž·OÍ3»`ªŽìçoß •»ýÞ:×K*©¤R*é®cîxÐmcÓ¸sYövÕÌbîrÿI’ÊJ(k_-²Šs‚áŸþÛë\¼l±J ÚB<´§Êä¨ñÏP•L¼R|"à(„™O/ð£ñÇ<ÿŸý‡¾ü„Oç”ÿþ,ÑÒ/þ¯ÿ’¹‹W0‰Ë»Iv~Óñ ×bÈK¾TÒ­heö­»…a÷·ûûI&µÜ=A«iCƒ  Dµ«;§2ú š¨ssëPÏÁ½Ìb­ÎââÕ¦—mž®òÕgÖ±XsF˜_t|çgWp O™àþíàðé…/˜å™c“ìÚ6Ì›ïÍqæÒO?<ÉähÈŸÿè µÄ*-05QAUyûWóX —®7Ø·}ÔZ-¹ï„s¦«Ú3J%4\¹Ö Z1ŒüâÝY–êÊ;Ïshï#Õ0sÕ¶m¬òÜãÓœ>WãÕwg9úÀ8[7TøÙ›7˜žyìð†R©ÀPÅð­Ÿ\enÁòÛÏodiI©Tk•÷>]äç©G°Y†BÃûƱ‘"Æ0¿èû8=Qaë¦!6>™ËDH%•TRI¥4\Ò/»×-T>üÎçæÕ´¢-¤•mÅyÏq§JˆÄ¹‡¤ ÔQ–0üÜåˆ3—,ÎBC½%¾n}òõÓŽñQ㟡>a\Œ.¢>S»FÞX,\¹Áwÿ·ÿ‹¯þW‡ÃåYl½ÎwÿÑïS»:Uâ*=Ç¢‹4kÖ ¯¡à$ºvõ…½iU¿ÌZ ü3îæÀºµÚcå@y4ö?2øð¯ò| Æ.î1s={ú-*ãST†'Ðù™æwÆ<3ó7øðÿdöZ3 ¡§ˆ$†ª?yýã£ÇŒñô±IÎ_©s`÷§>«Q¯;ïåÚlÄ…+uîß>Ìö-U®Î6Ø0òÙÅ:6ï*#Þmñ.`.öä1a{FàT¸pµÎÎ-CÜ·eˆ@„WOÎ1\5>¡JìRì\|¶Í[kaÉ1;±mS•ðÃÎÍUFG&ƶn¬R …ÌÓˆ”/ŸJ½†‡ 3³u>ú¨Æ#Ç9pßoŸšOµÕÏ›bç¦!‘caɦm7"lZ_az"äÌ…%"Wn—’J*©¤‚P9%Ý1ËUÔ…²hUóá@â|@ÎVA 9ЛÆÇ á±Ç"™;¼ñ_/SØÄ¶"‚5±^!~–ÔZëL¶¹>·ÀëôÇÿö¯ðÆ7¾M¼ïqì IDAT}nÞ·Q·è«ÄH,‹C7aˆÕ¬Þ3|‰µÓ¦|Qx€öÁ\¥ŒjNQ°¶cQRI·z÷IΊÞ/ïhù>0±{»@à]è¯Ï^`ç¡_ƒÆ<ܸÖz³¨Íræý·ùΙ¯qô©-cR°ˆÞýh‰‡Œ2:2\u„P[òຠ#Ã!'OÏsheýd…][G#¼wº†b8²w8{¹žîucLÚ+ç”À£Mí¬T„[†¸4ñ«35ž<2Î3Oòúû ¾ž»&0&ˆÙŠ b8°k„0nÌYNŸ¯sìÀ(÷oa|Ì_·có0›ÖU˜¯9Þÿd‰ý÷ û6Æw›óþ·Ã{G ‚ eT?|m–c8Žîfb¬‚1 D|,û£Ç©×oZ$râï+éž ²®sI%•TÒ]ÈÛcœÅÉÝŒú²jND(N J°xè“Q;[¼“†!z#…uÞðžbªØ2Þ6èå:pñV L%ð×:çK¨ÞZö}îaþÍÏ3wé*(<þw‹°ð«_Â$XL¢oW·+hoY¸õ}Í|ÜÅã*HH›ºÒ±ö‹<‰Ðvaª½ ßm³úOۯ׊^ºÖß&8]V}ZÅøC#ˆ³(–Í{À¥3H}©M ®Îpýò£ãL­ß†Y\R  ÅÄnóšh€}ÛNXZR~øÚ×ç,Apær‡÷rðþ®ÜhP¼ò`Éz0íD¨7üß;7qmÎ29P[r¾ÔG ¾îf¢É „Ñ¡€ùÚ§Ï7xôcb4Ä©5”­ª\ºfÙ±¥ŠµJÃ*&4Ô¯,bk󖥆rìÀ(‹5åãsKÞ=‚x÷ãELè•>³}œ(ÿw)wJÆCÕŸ|¶Ä±#T+>;«á¡ý#TBáÝÓKÜXôÊ’î11®d¯%•Ô³TÚÐKº#Ày T,’–Qûí/Œ±uCàÃÉ5»öŸüés5EbP'^® 1¤ˆ©!Tƒ¼÷£x#Ž˜8aY²9œñ²›âCI1•‹ßÎ)~å)~éq–fçùÅÿó-pÏüýßááßù#“ã¼ý'‰µ‚טŠA#ÁˆEÓ‚n@O\ÖlÂeòU ‚ó’2HÙå;ÜR!ƒx0¬‚Rjm‡ïÎ?’*óÇj'HT$Pã•~—kÿ ‡?ù9ÿ{¿õzû¼r(µÚ"ß8ù,ã›6SóÖw Jl@GD9ºo1°°±ØpÔʦu†¨a˜ 8ùIë –SçêìÛ>Äè°áÓ‹  œ¾XO’ rùFÄÖ öì⣳K¬›9}a '05ðÌ‘1NœZäì•XX²lY_á‰#£ W ³‹–ºU®Í[îÛZåƒ3KìÝQe®¦ÌÌY$>»\O™‹áòµˆ›+ÌÌE\¸ñ€sØ|x¶Ž/óCY8y—y;7U8¸kˆWÞYäÁÝCD‘R«;ćw±yºÂ¹ËÉOQ‰Ç°”@ï½[9Ù%•´A¸ƒ’lè•K‡vW8p_¥åÚ?øö<4b`­ŠEp . à øØòH…0ñª4c\Z@Ü Ηt3_´±¥ÓIfPÀ¸ŒApøù§8ð…ǰõ?üƒo°xelÄÿé¿æKÿåßç¯~ÕyïϾÛY5õÀ”\”„Ó ¯ ÷H÷œ_·¬åb»-BoÑ]ËêÅV½õÅßÚ%¶Ö5[{k¤Î‘ªþîQ1þfì^1±»w¨Ø‰}üøúïñÉ;?gqþj¥‚‚ C¶±û𓌌Oú lF<÷7‚Så‘ýc pþJÄ+Ö@aâ“{¶ †Âì¼e1R¨ Ÿ]i°yºÂÕyëµ…ž¿wf‰±‘€m뫬?réšåä§K8#H(TãDwê ?|kžg±gÛ0³5Ç 'æ¨GðÖÇ5ŽÜ?Ê—› Šà½Ok\š³>Ž>¿ÚÎÎD¬Ÿ 9sÕ²ÐP®Î:ækÖ[öCƒ—œO¼‹KJÃùƒt©áó²JÜ?#Ï?>ªðÞ™:'ÏÕ!¶o¦á`ý¸ákOM!ß~m–¥¥Ò¤ZRI%•TRIw4D7BC…ŠSs Êõy—Št‰‚ÖŠ€Ñ8?Ž`Q™gIŸeœ¢F¸¾ ük"ï=‘‚¾ñÓAÕ ¢¦"©µ]m„ˆaöâeæg®óÓùoYœ÷¡åf®óýüÏøÜ?ø»Ì¿€E¼! ‘%çmd̯ÿ£ëº|½žØ”´qÓn‹´£`¬.ÿ´nÉ»Xæ³®_îsöü4 UóɺâëÅ—9J³}‹‹ë«¶>Ïã-/h§fY-¼¿3®‰¯o3^ì˜ÔÇýÉšwëèaöZm›8v–íü­'é“TëË h¦Ð-,AŸJ¼U,ÝŠâüóâïÔGˆ¤T“…Ÿßtñü·_ïk·ûõËŽêt Ã+¼F°óÞm7£ËÔîj;&½^ß'Äîׂ®ƒ{ÏhŽk+ÂöÚYöïbh"ÀŒ…˜ª×~ZÛ`aq×XòÉÏÚŒ”ª0:¶Tý·Êæ‰_l‚½3Ï'—êñ®—<¶ÏÊ‘µâþeG(WËR :<ÄÐè6Ÿs¤ƒBÁkx5VvÆŠ;ã ˆ‰÷”gôÒô*é´÷zHÏ ²ÌÞmÓV¡YCMWþÑ¡My…›,Ó&éÜœ¦~‹tVڔ༤’J*©¤’î ² 4h4¼Q/Ís›é6FÖù$rÖ Du *A šÅ`Ó ^÷Ø,0y‘U2°Xë“÷:+hò¬ªwK× ób ¾Ë%6Mò+(ꢊÐ@"gQëPëh8Å Uâ¼?IÉ8“É699&Ló&“ˆf`É‹õ9 qQ^mü bi³õRÛ@8×F.X¯MˆK»kÛÿ.‰¥*ÓÚF˜É·jbñr¨*FLîymÚ+yð–<Ç5+B}$‰Ë‘‰ÚämÝѨ¬Ú<¼môå@‹=N¤Y1"Åû“ïru«ŸL!¯ R%¯öÈ–~RÊ EùЄb´:¡Óú£u]­ð;Áìšá‡Ø‚ܤ*kÒëuç¹¶×Qˆdë;öÓ9QšÝêûw±wI2޵¾N3?Ûâëo]> @rk½i¥(\_´¼xbžË³Q™º¤’Vª?+©¤’J*éΧXü9­ÁÓÂ߸Æ|Í% ×S™ZÕ'‘ónè‚s«"Ëäˆå±CÓ\šPuœŸið̃‹¯]c~ÉaD09ù\5ú¹g95häŠxúè®7.ÌÔÙv쮼üÑì4”O'1PWçÀ9Ô9lu„uÇ¿À¹«.piÖ;ƒI±¨|ýœÑÌ\Ä1ípu§{ -òSõYéû;“4øžÄªñ¸€§O,X¬¼ÐìÁ¹ªbŒéóý±£¨úLk'Á˜Ô²©¹ÿÓ"hƒðíìÚÚNÍÒi‰ämqÚãýZ\PÚ¹T\§e« ´3 i¸k†Þðuš4è=¢í מ Ð5¸-Î ¶-œeÿŽ*C2"¡Ï(NÇ¥¯éM²”§½pqÖPmæ‹h¬,]´K*iå‚\©Ë*©¤’Jºë˜{lž Ø2UñåhÛòþ ¸ä/Yj8.ݰ\«{O`l7l[W]ñ³ê‘rùzÄÕ…8¡œÀæIØ»Þféä¥p©Òj Uê á“«.Ìľ½ÖÕê,^œãƒ‹ŽwÌöÔÃ8l‹p:}×ís¯¿­%I†Ú$¡ìÈYs“SŒsìWt› AÞõ4©gìcF  ˆnó^–ˆôx¿tÀ“Ý–X·eYÊs]&­ÛD¬ôzî¶A÷ù œS¤Aœ1ÞK)ðC’øC:„Í}å>äJ”^RI%•TRI%ÝÓÔÎ,:Î]lô½â U±÷hœ[t\¸­ð1^.Kž•üwvÎ_0™Hg‹Ržú|Y®YvtNÁ5ÒlMŒ7m„ä[šÅ½y¼fø¼Jj)¿Sô ý£±vßÝõÞêmI7Ÿ/Õ±Õ!ﺔ„0„ƒ Eò1ØâÑ ™ Õ±¦®ü%• û6¨{QÒ=vÎv»¾›Ç\»{»9y®ÖõÝ~K~ïŵwÉ-K>œÈÕ·+õ’Dx­Ú }¬[Yæ Í=AzhËrï”.ke¹õª«´‡uM¹«Ð£î³à1©ö´Š46¤HþÙN["D waœ¤ò^K.%çók9Іk±ì‡·tÐ¥ÿM*«¸»1©·â“Á!2X"ªžúÐ'Iͪ}eÙàE2ëy»eêÏâ!úoûÚŠš¥°YÒêú>'ņ© GKRi çò$ËðCmvJs^®@ðKÓÂI8‹4 ª¾voÕBÞ’b®ÀöB¯¾Ðé|í]¸ÐÂ}EÁ´ØT¨¸Ñåøí&ˆßlÒRk¤ M¶ËÓØ]î(ð;é"*j‡CVµý!Ò!ÏÌꋉ·¬Xë6B£:źJ rUZ®+d½Ôý趺¤Ë3oîõÚø_I½xJW3~ªw%^ó²ír½tÔZø£Gt«9VŠ¡œ}(ŠQFt§κ井G"¯úÙ¥}òÊ~»b~ÕKE%m‘&æçX·ñ¾f.7[ìæŽ‡_jç]§…ÛóXxý9Î_²XQêK ½åýö¡–ŒÀ1JM+1¥y®îNWÓÖLÈ™@/*QnvËûÑo¤Š -AzI« ÐÀÆé Ï?9ç×Ð.¢ZPj[I­X Ý‘ÓRï"Mžð׎èÐ[X­mN¢|º¿ä~iªaY[$w_¾Òt(iA>áÁJ{0b’>¡<)¹ñȪx/ÅuN¾ß"2jG€¤+`8…B#].on{+@Oï(Ñk€ÞFí"t•1Mb‹¶€6#×y¹Ç€fýÒ2²žvŒ“°­üp´Õu@]RPõ$—¹Þ¦¾Í#uyµÓ¹t«ºÞÞ¨=-»b÷Vг¤4¦ÝjÌEë¹ÔAGuz¾ÞK[€ÞRoÎO’ñx¿W´Ë8³¼ Î¥ÇÕ߯nyÄ2Œ+5?·EÍÒÄH›ª9õ ¸‹u|‹Bóò貨ˆo;ºj޵Ï_—}m¿¼cE½“ò¥b_‰9#á Â¥‹×Ùwè!úÉ‘-Î#•!‚p0}öRóWb—÷B»o­‹»¬1ô“Bñ É«¯Ÿ¢ÎáqÊü¤Ö®lÈzq‰±ÁybÐ’Â>­µåw‘ÕaêeRê’îFmWœZ’Žô°[u™K»å¾*À”ÂÆm6Îwú~y¡+ÿW¸ßÄñ\Í‚VœBG\‡nk&· èÕv ¤mÚ»¨©ýI<åÒSºÌZèIG }6¸[EžÇ£û:êz—®|¸Û© –ÛŽ½Îq»¢³ô· xY­Öƒn‰}eiÏ,òN×nÍikÞ¦^Û +سÝxˆë±Ë‚ó~yÌm w) êÞímI›â=Ú÷°IÛ‰éÅO¡Ÿ_yÔ›±—oÆê-êH­A’œ·WxfÏÿŠèçß$˜ù€pî ss\ÛöC_û{Œí9ÐÎÓÎ Í{΂^ g]6©Ë·ªâÔE.åôrÏ ´Õúß‘}YÛÄé%•TRI%•TRI%•TÒLÖ¢gÞbè½?…±!˜m^<‡yçm®\ºÀ™¿õ÷™Þ¶›éñuTÃa@ihuÊP8Ò×+ï€Þ¤ÙȹFÁCxîºÃZƒ`‰¢w¹GKÁ'IÍ»ÿt E\+ ½bK~Þ}nP„’J*)ã¥zû&‘²Ž|Iå:+©¤’J*iUH‹èÙw 4€Å%´niDŽ‘í{ø×¯þgf?å ǾÆÁ]G0U¸Xû€±hŸßûÛ·7@—V´µÒáÜÍœf÷‰-çAàÿ Ã$ZÈÐhøœùÎ9œ÷y÷éýàc:e ¤,+¸ÂÀSÖ4{·Ò/©¤5æE ªn m ÆøÌñ7‘ŒÉâ±T<Ì÷ã£ßf÷¾Ã ÈbÛõ&Ž÷nJâêQ׾↜³œþÕ;ìÞ÷`žó¬˜c ‰ÛtÕú.IÖ¹ùsœÍ³æ*™Ü%Ę[Ö–d>›×x÷÷‹§?ú€ûîß›†Ã•TRI%•t—R}9û6T_Rma‰¨îh ±°qšËW/qÝ~ÊOÎþ+ÞÕ*C£>#Ïolø_ú~å­³ ¯J,óà˜0KjA÷±þIl‚Á9ÅÚv©„n¥`Ÿõ'`@¿ ª‘’Jº'éòų|øÞë<ô賌Mõµ‡ToþüEŽ®(|ŸEQƒ×^ùA.±·ðØÓ¿F`$Âg§?`ÛŽÝ|òÑIÆÆ§Ÿ˜brzCÏÂjø¬ˆN½ÿ&W/ŸOËÒmÛ¹‡ûî ©¯"†“oÿ‚]{òÙ'°gÿ‘tŒœ³¼{âç<ôÈ3iÉWJmqÞ×.UåÀáG™^·1wÆõÎO}ð6[¶îäÔoñð£Ÿãfúü,.ÎóÖk/¥m‚GŸüâÊYñÞ[oðà±'nº’BŒáä[¯²0?Ç£O|>ã·Oüœƒ‡a‚ ã\‰Ÿ}ú+vìÚC %+©¤’î|ZÍ\ÿwÙ™s„sg`$kaq‰(Š`ã.> ™¯_§:06Qex¸J`êãìÝøð ]V8}wèÂËÕ’‚,«êpN¨×}U!ŠÖâ‹Ê'i‰{“NÂsÿÞ^«oØxŠ8×1YÊ­qÔ{¢ù%ݦ§ZªÕ¸>s™F} Æü~s±•ÎÄD­³é L€u–À)È4"8òxlíó–Öä·@BÔY¿ÇéO÷ªªD6âøÓ_ñÖa4¶´:¬µ(Þš]© ±{ßNÿê]ÂJ…1;M øšžh pœs©A?,cöú ûc|t âçZk ‚,‘§jÄî}‡ãŒªâN4a ØwðáÔJªê0&è«-7®_áÑ'Ÿ÷}E Ãj:w@œËDpÎ¥žNÕ÷°Öú¬Ó’¿N°Ö±c×> äÚÌe¢(Â&ö ˆâv &Èæ<¡¼ÇC¯ä¬¥R­r䨓q™IÇ2Y—äÇW1AÖ/çc¤ÐŽ [›(ÆXÅc%1·±B h^óê¿SU®_¿Šµ‘¯ ’^“_Cé}¬+Uenö:ó³7°Îšç,{÷Žûè’9t‰ÿ¶6¢X}ÚZßž J~¸VÚ•ˆ©¥(±¦S´ÖmЛÔ3éñ®vYý»•þëö}±_½üÞO-øåút÷ÊxŽèüØéÌW6£f”Jµ˜ÁÆû8cXh\clÌPŒ¯®°mè(cCýtcz«ÿ–fÿ½ƒg!)ccb ¸ˆ ÎÒhFÞRqNQµ^i*Ü”5¶]6ÆbùXI„‹>Ù•‚Kå~í2Mß:îhDúÜÁ—H[9Ûh “ÍýZkÇ¿VÇ¤äæ¯ß'bdŸ‚Ž›‚΂Վʸ¹׸zé_ûíÿˆŸ¾ð'ú«,ÌÏòчoQ­qÿ¾ÃDQĉW‹‹ó<ýÜoòÚËß繯üMD„×_ù<Îk¯ü%‡z’™«9pèQ¬µ¼ôâŸñÌóSï¿É…³§ ‚€cO|‘±±ÉؼPm;ŸŽ£PªGc@ÖhÔQuŒŒŽ£N¹pþS><ù:"†Zm‘Z}÷Nü‚©u9ùÖ/¨V‡xú¹ß`æêÞ~óá裟#¬T8ùö/ŸbÛŽÝLN­ï( —¨¤EÛÀF¨N WGxû—Ù²ã~¦×mâÜ™q6ââùÏ8üГÔjó¼ô£‡ªcÿáGظa¯½ò{xˆÙÙæo\ç¡GŸ" «~lšÆ£Px'_’-n`ÕQõʈ0¨‚*¯üä»8kÙ¶s7»÷â§/~‹g¿ôuŒ øà_°yë*•!Þ|õ§¨:vÞÿ÷íÞÏO^øs}œ3WYª-²s÷~¢¨ÁË?ùÛvÜÏÎ]û9ñúϨ-.061Å‘‡ãœãÄk/±T[`zÝFŽ<òTÁÚ\HK«íS;çh4êqz|!¨†œ9ýŸ~ü>"ÂÑGŸÁÙˆO>~Ÿ0¬pÿÞCüòå8ðà#,Ìϱwÿ^ÿù©-.019Íá£Opⵟ1?ƒáávìÚÇ©÷N°ïàÃlݺ“™«—x÷­_ðÀ¡‡Y¿a3/þåŸ222{#<ÂÔºÌÏÍòÒ¿ÃþCGÙ²e'¿üÙ D¶Á¦ÍÛØwà!jµ'^ý)ÖZvìÚËî½A› i-/ûJ'ß~•}Ž0>>Í/~ú—<óůññ‡ïðÑ©“<ûܯóÆ«/ñôç¿‚/ýä/yüé瘹r‰Nž@ݸ°€n\ŸáÄë¯ ‡zœuë7tÚµXá Ã™ÖõÄÓ¥ôV\„»˜Fz>´ŠÅª²óµ¹Œ¤tåï+ÝWçñ“e ½_ËMùÒµM2KÞ¶£MÃ*]•íK=Ïò”‡÷\Á»{™­®ãÙ‰iw“ѤKl]¦ÝÒG‰‡– ¨=lŠЬ¬P9Ôi¥¸§ûp™mAÇVFoYì Ž+-s׋¡Ïrù4ÞÒÓ}+3I:5¼=þ4—?Æ…pó×®³ã¯-°ÿÊkŒsƒ«œÂÑ 2R¥:dâÚŠÊîÉ'û6–@Ï.î’›ô;_Oâ{âP‚4X~1jãØËiÛ(Í @Ebõ{Mõ;H‘›{TÛWÒ¬øæ(Gâ$”š X3W.pìøŸâÅï|ƒç¿öï!"¼úÒ÷½™ ÌY¥qUehxP––j\»z‘ ›·séÂgð…¯ü6jðÓþ˜/|åoöµÐk‹ó¼ÿs>úˆðɯNòůþ.ªÊ¿÷ÿÅ2„ç•GŽ=æ­ÛA•±‰iö:†¯¾òO<ón\»Âý{15½¡?þ¿?B&&ýó{Š·ßü9ós7hÔëì?ô0Î}ÀÈÈÏýÚo?{ñ[LN¬óïUåÂÙOxì©çSË÷ÊmÊ©÷Oø`)Uö=ðSÓëÙ»ÿŠrö³_1sy=7oãòųLN¯Ç˜€êÐ0¿|é¾ø•¿Ž1'^ÿ7®Í`mÄÌå‹>zœ7~ùP% +<ûü×^{å‡|ðQ&&¦¹rõ§Þ‹Å…96mÙÆý{ùÏ}º‚ÏÞ¸Æ'ߌ­×!÷í9Àù³³ïàQT•_¾ü9þW¯\æØãŸctlœ(Š˜»qý”]» Š"n\Ÿá£Sï ê8þô—QÞ~ã¾øÕ¿ÁË?ú ¦¦ÖsâõŸqðÈcÂ{ï¼ÎãO}‰ÑÑqžýÒo"?yñ[<üسŒOLòÌsuAسïN—.œåâù³œzÿ<ʶ{¼÷›ºŸ¬>Ñ¡WÒ“áû>Ä¥ gÓj.ùyo4ê|ôáIžûò×QU~üÂ_  #£ãì;ð ˆáÄë/ñù/}­?{õX—A²Âzm%Ýã²@wÕ…¬@ê\Þb½¬šhÙR}½ã˜^ÛÒþ{Y¥m|·ËÕç¯7øWŽ1<±q >9u–óŸb×ôÿíï<Á¾sKÌÞ÷õ‘‹„b©¸!Æd=û×sõÜT€¾šSº–»3Ö`Šà\¬‘‹C³-°‹ÝùÒÿrZ·NFÈ$¹O¦•TÛWžk,H瀃A{ß-’µYó%­ 9çøÕormæ"'^û1‹ s|øÞëlݱ‡M[w²aã6œÚ®IÌ$§ä›šÞÀ¹31{ý*ïžx™/~õw¹pþ“&å""}˜cãS<þÔ—Qçpª,ÕAÚ$“\uUêK5NŸz—¡á‘¦kÖoÜÊæ­;qÖö¹„•ÃGŸdl|Òóä8içá£Çùáw¿É—¾ö»ñØIºWS¾-©Žví>ÀØØxߊNáØã_ðîõê;øá{o!ˆ`#ßǃ>Æð§<òaXa|b:VÔh<ŽžAÈÁ#æ,à9¡Nã3'‹ñ¿;ï€ù¹ë¼ûÖ/Ÿd×îVÜÖmØÌ#Ç?ïß­píÆU¬u~¾Uyàà1@Ù¼e;ë×oÆ©¥R©ðÀ¡‡qN9óɇ4uD„¨Q§Ï{¶Nâ5#ÙÚMž}ÿÞƒ„a%]³hn§©ðч魯¢¨¢ì}à‹‹ ¼sâÖoÜʦ­;VÌçn\Ÿáê• Ôj T*CÔ8ûÙÇìØ¹»“Ž(–š©/â IDAT÷iEœþø}†††sM/£8K*éNìån-©½u¶Æøä@m¶F}amÔ¹1«Ø‹'ØúÑÏø­­÷mÚ‹qTôã²›ÍÛZ`=to½DúlÖ'¨ævcZÞ¡˜¦ö)Š:M]=S9O⛥9öŒŽå»Vßò»`uMØ‘&#ÛgÛ,³¶*@{À,k¦^\­t]w²¢f@ÅÈ%úT×f.qì±/¢8¶îØÃ›?‘­;öÄüE»«„š”L^q¸kï!>xçUŽ<ò¹ef}€þ<ˆ$¸ò{"×…(j07{Ã?³ŽO>z/•ƒzþ¸Ü3ÄÇ ñÆÏÄÁ£Çy÷ÍW8tô‰Öý*ÒÌûÉ)]`ªêc’ãÿýì#ž}þ¯!õ¥>gˆpè¡Ç¹tþ3ö:ÖÂ?$7Åy¯ŠìK2—ÎmÞ²·y—ΟáôG'Ùµç@ü)ö€ð1èž&&§Ø³ÿ0Î9ÞøÅ›˜ògb.[º/^øŒCGgtlœKÎ13syYF[©„ìÙw€·ßx·Å-;œ;sš'?÷*•Júþ;w£Vùô“¸zå›·îXq×çæn0½~ÛwÞ*L¯ßÈå g[zœXU‹‹ÇÛÚˆë3WxêÙ¯àÔñÙ'¿*¥Ù’J*©¤»ˆÞ½l!Î;S[\diqg#¶¯b¬ö>gO¿È>3ÁŽõ[ Ì2n'*½wEôA„¾ÛÅý¡¹î7@sŒf†¾Òx—ö=\m8Ü_©¶RG¸* ޾װ°fzÚ|}û’Ö„ªÕa¦×oŽëG(a¥Šˆ!0AÌ„ãŸûu^üÎ7Xª-²ÿÐ#<þÌWyñÛ"©¥2<Ë#jÔ™˜˜ö më}ÌݘáÅïü!aòä~£).weàå:/Ämžùâ_cÏñƒoÿDŒOà%‚ Bö:Ɖ_þ˜“oÿœÏ=ÿWÙ±k/ßÿÖÆ Ð,b$Mt×÷!†üògßKAìý{27{=Žøþ«òñ‡ï!"Bci‰¾ûMT•#<ÅÐÐ0AúÄlÆô}©*a&èÙ'ÞDyêÙ_ç§/ü9Î9¢¨Á†M[Ÿâ\ô±IPÇŸû*?þþŸáœcÏþ#L¯ÛàçÓË1Æ`Œpü™_ã‡ßû¶ß·‡£|ŽW_y‘……Y&§ÖsìñgyçÍ_péâYªÕaŽ?ý|_{[À'œËÝ:19Íôúͼð?BDxâ™/S_ZôîÚqÜn†©wÂÃ}žW_yÚâÎ9ví>®Oï€* À‡ù/|÷8rì)*•0»ïMP©T8xä1^øÎ79xä1Ž?óe^ùÉw‰¬ÅÚˆÃGóË—_da~–É©u3ó÷ãâ>66Áôº ¨ƒ0¬pí꥔LJa…ƒ>‹ßûD QÔ Z­²ïàQ^H¿‹bÏþüð½?ö{#ŠJ†WRI%•t—еùˆ+*`D©Í/²T«µ<²kŒÙ3¯S­ÆG,¦rê ÁL>€ ÇBËò[ÿóOwÅ{¢õ+ÝøÒekƒÊãi±&~4‰7oEüZâ: 2H x—s'í kbDZ+ ú í9'@;TõÔ‚®}Ý*>‰ÅbäµË]'‰[K%Ñ U r{\EضxŽ=ë ÁtÀÁÝCü¯oÀÚe"ÀR?ºüFÈ)ôre%Ä^{ù=pÍæuX\Ì«–$®pÆ­B’¸Ü©Ý–w´ç=‹…gæÎeíÐí¶yÌz;zI'&Åq+ò\i/I·—×…$q-ë°×3n5“Äõøl•6×w˰Ü%IÜJ×|*Æ3÷Y ÓÕ” O;˖О7´œ¹Z˜­ü°“¹v:{‹ï”æ¶&\µ—ùî,/u^·é›E[ú¬íŽ6éļÛà‘>v^5ºìæ¾|ñ<û=»l%7>]à[§0dj(âä;gx÷ÄûÔç¯óÿÃ}Ì}ï?aÝÈ ftÇŒXjÑNØú?1¼þñ®mÿ?¿yž7ß[`áâ 'ÏD|4¶Qï]vëê ß&‘EŒÜ{ù.éü@Õ& ÞÌgÖ>Ê%DÖЊ«k¿~úk†ÞÝ/éΞí&œdÓúM[SpÐYxYc…Œf.Ïr“÷Og°³|‰Ë®ÉmW‰,/wËØÝîw]fε7€Óµ¯²‚_´ÏQÒîÏ ÅÝK–ê¯Û\¾xŽC‡ñžmÖv³z‡‹…åA\Š·tùém·JZ­žÝ²ÀX LT OŸäÕÉ]œúä"›+ç™™¿Èèº*£•X_Ù‰ í˜1†=YuSJQ3³Âeªƒµ·ßw#¾ÒÊ*HꙜ–؉˅…ßb’8S¸ºÛOD4W²è¶À'+n{öo•AÆ6Ïm¿QY3Nœiï]éd2sÚ¬žn³>š•r-©¤MÝÅ(OnTuÜ¿çP )Tò‰÷ƒ´l°V¤´5íKóô:J¢ËÆÞÖšæymºÓ—aš(Ü¥½nCZ-v¢íœ7¤c‡µ#0”Ní-˜ÒN] mwjYÒ™¦,3YLs%r' “´µDe1ØÙïËg'n?í­©E ¹t^$mŸ—>A[›F«»¸—|DÈÎûöæEûw+SXÌ_EeºtrmÏKºŒ_§Ò]B¥ÒÅÆ·’úÍË/ý¼gy,WµIÛµ¹W/e®)¬ïæ„ÂÚØâѲ€ =ÖåKp%2kþìZ-šKdiOp²ë(µXÈ{,¿Ömµ‰Á÷÷L-ŽRëJÔvk¯(²Io_F ¯MÇ@¯ÅµÉί 3[Vï+Õí+Ç5Ÿ¿*]›Ô<çùg·+£·lñõ惢٣ª=_«lÑêiÕ«´³kã»6Ž4}wüà®\ŸÇ^z“‰ûždhø]‚1ƒŠen¶JcüÓ#›ûêGž¥‡½÷~ ãX¥¿Iëª>[ñí²&÷®žöpmôÿw:,T-mà%u[#«­P¹¹œàŽÙÝm]äî@ÆÓ­Í-1 «†ö½HE–‘Fu•GWi ¾÷nù y-º/jë^»¬ ­ÉOxÍÇkÍ$=éq›É´Bô¶š]ÅgôUIh€’„JweŒöºÎ´Mt•Ȫðõ~AúÊæmpD¶aj 7þãûŸ±xå=.Õ>3Äè}‡™œÚ‹1ƒ¯À•%‰“ÁüÌŸ;°|Ò¢•ÒnJöÜOrÓvÏB—Þà\Ú[Ÿî#+N×Ĥ¥ÛšZ&fG@m{Öª]Îʸx¤1.ÒS_û…RCô°ÿÚ1ÏbŒl/ñ²½ô£9:ªø‹t˜na“í>·õ–YöØX6,3Õ—eK*©¤’J*©¤ÛùßRùðVuWwWõvι÷’ÓÑ<÷œî®åÝêý?Ëÿ/Si½³ü­ÕTÓj»L;u¡Uº™Äp‘5¥>Å}& ×sÕÄ‘çyŒ™`×[ªeÑÕVWYæŽ, œi<½|ññ7ßɬsÖ®º±"µ4UÚ8âç%Û/DzUi ±%]§¸Çjˆøp¬ÖIC/ëÄÃeÖíHÍ÷hxÖé¼¹8¿WuÎ윿й;8q ¬½eÍ(Y00=Ÿ¯eÁ5xÖ":ö¼Åž§uëÎXŠ;Ç’’X¿3, Ôƒþî]AÖ©Îf€~tâÇù_Ôú¹¹ü¡Ž.œ:ÿ;5îTkXBkb’‹­²Gpºt;Éøj°Ê‰W$Ðþ:¯[K !GA÷³@©>Èêú0þ,ã¬ÊÀU¦V+›RÀWÒ€d¬¬>›OVJª#:¶IÐ#©ú¾™ø›ÌÇ W;A\®•y2ö7­¶çh“19ìªeOeYõ®ç Ÿ©Ñ¯ë¯â=£ã8S'¦PÕ|ž’özx϶UÓ‚ï)4«ûHÍJ 3Ö i»RÓ¥™Ê{Úøíæv”†k«s„+]]Q‘5¼·¦›œ·„N¼?v<=þ‘:y‰Û§. ªÜºñÖ]èB–ÚÊ~{Ô¸D¢'2G¦Gô(,aC˜t#Åv^øo š.ÐÉ0;€>É#L&ÎÄÕs@Š.™â.Mß?"@Ÿ™¸:öd2}ò}•â^³qÒ¦}¾.¸"7@ׯçÓB)îTÆw /À°?cBׯ%=‘Ò´ô8@Ÿ¹–ÔÄMn”egºÌ:÷ ±¸ ‹¤¸þ%õËVã:5í[ѦÚôÜ`÷#! ‰‹—E=†’žcÜ(èdJ³"bfF î–9ç°Æ0R¸³}©¾ äÉIÐi¬mmk[ÛÚÖ¶¶:@_jW}—÷¹G‹Õ¬ýQ÷TH]VÀ<â¢å éÈJÖtE*耞ÍÌ1ðÒ¢i¨Ú0`eù$oiV3¿ ïûëIðˆyDªdYÆíÛ·yïÚ{ܺ}‹,Í@ Ûí²½³Ã… èntˆltW»Ì9Ç Ÿrýú5nÞ¼ÍÁþ>Y–!ÆrêÔ÷ß§OïÇ ÆÜ]Å #Â?~á—ù¹ßøïùéïþoøÖ'¿Vܺ#çÎrÏW߸Íÿù\»uH«Óa£³ÁF"<óáÓ<ôà6qlß¿µ­mmk[ÛÚÖv'úO_Ñ#Æ eåo¢ww— HÐC^ñ:Ž–r)#y$Èe†ò-FQX)ñÞ|ù~s|5ÕE€x‰SW„¼?Lmž©¦ì`’ÎgXÒ6$Àh®Ç×)pP1?Dúè o—VútRÿ[릀NÓKc{ßÅ”ßcZV]wô޹ê’å7®_çÚÕk¨Wº].^¸ˆˆpxxÈÁÁo¿õ6W._æüùó<öøclmmÝ•~;<<ä­·ÞâÖÍ[t;œÚÙáô©SäyÎÞþ>½>ÿÒ5Zí6=ô .\ ÕJîJz¹Ë+W_æ§ó§¹}þ*?þ›“zýßç¯=÷#|èüÓ˜Ц‹@¯—ñ¹Ï_åÍk‡\zîC|èÒ$Ièrn½³Ïï¾ô&½¹ÇóáÝx£z²›Ÿ¥ZWŸ~ˆëÝŽí^¼Â[·_¹žá¦Xïæ_•W[xú|Ì}›ön?¶×¶¶µ­mmk{¿ô“ߘÛNH°‘Eô©gJ9š“à(Üé\¿Ãbí*ÔÖ Yõ¤ZK&¹Â}èÉÔˆè8áZ{¥ˆ.|ä1æóBÇ,ÔW&ÔoeäÙÐJŠ}é™"ã3ž1úŽ"`$kîQctöRñ˜”Š TY0‡º’¢¨“¢wÍ 5C´22d1¨*µù¸Š®<õi-ï¬w ¬[–ð¤a®|)i–òÆë¯sØ;äÌ™3´Ûmúý>é å°È`0ÀÃÖæ&¹ëpãú nß¾Í3Ï<Ù3g¼×ãi¶ýý^¿r…8NxøáG”4M9<<¤ß´â­Ó-ÒÁ€W^~…7nðá?M§Ó©é«8fæ9òJna·¿ËÏþÖÏÑ?‹óç¶Ø¼ó[7ÿ1¯þë—øŽ‡~€¿òñ—Ógp>?ÖGRš*/¾ô>jñƒßû4yój®€Ó˜3Ÿ¦{f›/ýá—ü›Ë|Ç_zcdf¼ö d×ÿc[DíûPÍÈ÷¿Hçá•ÃH¨¥(ÔQäÁp³çùoÿï›üâïÕSÖ/Øg66üا·ùÿÊiü®_gŒé“t>®=+7óªÝòMºTNŽ;ä˜ÄçtÁ½Ü5Çqmz—fÿI·ëIKfê"¼{ / x†5³M·¯ 4ÎQ{çHâG\”jê¤Ì}3‹ºéþ¥*91Ô /ë™GÀQTŠ>š^ï%*§`”!NâÑʽúJàWÌrƒiÈ€.$\öÑd¼Œ\2^¯­èH~g‚Q^eÒ‰S¾ªZAM 8JS`ø.~W3!@%…ËÅ(ÞkȘ¸Ëpº‘óÉÔµD1wUæÀT] ȯ²$ßÍõpù st ³W`ª:H§x!ï=¯_¹B–eÜþ<ê=ûûôû}ò,çôéÓô¸}ë6ˆ`­ek{‹^¯Çç>÷9ž{î9¶··*~+étS]}áíöùÊ—¿ÂÆÆÛÛ[dYÊ ?à°H»ÕæÌÙ3¼ûÎ;ò”8IØÙÙæÆÍ›¼üÅWxöcÏV8šå’tÎ#U%“ ìùå~™sðÛœºÔb;isºÓbçt ²«ü³·ÿ7~ÿW›ÿôù¿Áó|N]eòëx9‰Žd¸ÆçD /®o~uë©ð-Ÿz”n;æòm¸qÞ‡éÞݶ|Ý7>ÎK¿¾Ëg_x“çþÂè¯Ñe(2Ô®üŸ<ð™ŸÁ&ocb€s¼÷ÒïqýOÿ‹ZZçâ·Ó¹øÈH×1bëpxký!qcñ§wöÿ×SØØ„EËj¨yW~í墧ê3¦ÝÍ£ AwOÕ·ªSów΂X;~gîssÞ6ªv¡ò ²™¹}¤ ¯Ó'wf»­³!5Í!5ÐBuÜ;¯s€ãÂxRÆ6`_=Æ™³w]¦›Æúv d¨ãëT³ŒØÄßU—@ƒõ|Û:cK->Ñ—«æö•šy©:ë¹T3ÇuƤrÊZ%ЩùW )é„ÌZ­ŸPk…Iêžcº8ä™x¾è¸h‚Ž_çÀD\šV^SÆ…‘uÆtVo£¥–´¹c½é{ |öªóÓ–Hq—ñA«óÀó=éðÕ£×°K%™XF3Wkø"Ç%×#SM,uˆ·&ªE„5Wå^Ë7”ʸiÊŽnˆ6HX?›7YZyI5à<þ°;–Lm½‚÷E¤Ülq 1Åb©…Zù™Bw\D0˜ e®£¥c¸€È¨_‡Qõ ¹®“<î¦2Ñ«þš’™~HˆG §ÐS_œëŸÅ¼HˆÌf_ŸØ'à¾uãûûûœ;w–4M úÃHôO<ÁÖÖ½IÓ‘®z·ÛåÖ­[¼ñÆ<ýá§±Ö.±ÙYÜ-Q~Úçž7ßü*F Ýn—^¯Ç`0 ?è#.^`{{›Í­-^{õKxÆ­±–Í ®]·Þz‹|`ÅõfZ¡VžEÝ0jüÒ;_ä¼ô÷iu$>f+ŠØNZì´ÛÜ xïÆ._ºù;¼úÕ×ùÙïÿ;|Ã#Ï×è‘×?)d†w8K=ï\?dûÁ³ìÅ1_½_Ý…¸ ;]ˆ°œ‡î}–K{œ~÷øºg$‰¥~ψèœÉ@ú€GõMîûÈ_Äg{ û`o!dxŸsãË/’í]¡sQFDÑÙ‚ò ¿gNùwžÙáçÿêÓ)î 8fƒóBê!uŠWH3åGÿþfl•Ž(ÖY{(=†É[󌜧¾¢ËéiP7¡/¼(K5å¬i®M2m^ïeòò&QÆAÑå"qã³MTÚ¯MKxkM0DkÁÖä(Ô…Õ PóQ¿6™hJÑúûÌ0àbÚF½ìyΆŧFýðmП5—˜@:竺ã«þ(ãã@›o±¦šœÇ¢K4«Ž“8ë„£¸î¦U뜂ÍröËtùJ+©N¶ÜçÒ]$3ÆÝ¬çµN81¦\1²Úêœ5xþcuÆ{2÷¢EWQ©[¤eÒ±8kº%ÉûÞøR 劔ˆê„ñu[d80ŽåÎuä5¯]jÒ“EÌ0%[œ;šHÝ)ôç úÃËž¼†÷UG â2ÄZwü¢MU&Cãö*~Ìc¯¶ÝÃû‰Íèª< Š žÇ"Z_žWËumÐe IDATcIÙ"Eý|uþfT+¢nZ¿§¬$èäè¹x\¤$é㮬RóT×:Æê¹ü3-Ë2Þ½ú.IœçŽ~¿Gš¦ˆÀc?ÆÎÎNóŠËÝÔ÷766xõÕW9ñ‚6Íw9xùA{—A o\»Î{W¯òaùx“—ßú=ýÆÓÄ‘áÍ7ø¥üWœéœÃ£DÆ[†HšzöösÎ=³ÁµCØ@ÔíØh‡ú±p@Üw¾ÍÛQ‹þaN+‰iö):ð7À:Ò½›\ñE|–á¢õŽÓ~[g0"h~éµâ‰~æH÷´ÕÜ N ƒƒâØ’´Âß¾ºëð ;mÃNKH|e÷up°ÓÚf3:Å ÓµjúÚÖ¶¶µ­mm«`­b/zÌÁUQéI1Xù ´ÜXjDHmç69ÎT'™òÝ•fêõxÑ!˜,£ü%l»«JÔ:$U¶9ŽÕf¡o™ÇÝ'#>5-µVêWG¿×å("K¥L=üà 7hL¡ªx d|ªY\Òb«>ÔNóc½ªÊÓC‚º)Ž-Ã:tU¾3åD¯Ö0IzKÏÂ4ËŸPç[>)iª{¥jLfDOôܾu›Ó;쓦9QñÈ#÷þþ>—/_&wù˜Ž·ªbŒ!Š"Þ¸ògNŸ™ë,“Š7uÙ ö»o¿Cœ$¤YJ:Hɲt(ݘç9W®\ÁZËÎÎ÷½ï<¯¿þY6À«’$ »·wéÌè2r^.ìáðʯwÏpú•¨Õæ‡üßý©·ÈÒˆÜtøÿù ܾ•òàC§1ÆØ6IÔFÕgÛq:~Ôc[–ë=èõàÜ}ÐiAè0’rì§v"ZIèßYö9ìî»\ûó_ãÔG~‚óûøÜsã•ßàÖ—ßDó®— Ùkì~á§è½÷:¾õŸ"&ZÙùVýÊ/þâK¤iγϞç3Ÿy>ú?¿ÅÞ@ù‰oÞæg¿ë‡™ã™ô8.wügý¯øÉç~f Ì×¶¶µ­mmk;¢­ Ð¥šš;LéŽÈ ëùô^Ø aë0¬ÖQZ‡ŽÈÙÆjmÞShËÑEÜ  f¦2—Â)ü0z_ú<‚[Äw'ª¡e øY2qs2YçÝO"‡¢S)!…ÞTâªÎŽÑkŠnBÁˆÁŠ eûjÁoñá=1ñ!òís2¯¨Ïq¹Ÿ±€D¨xª‘yWIQÝp…ÄN‡Tu#Éô‰Z“‘t\¨S—2Íu8 Mi^RÑZ¯òäé1—¡;înEº"Óu„ªº÷£K•)æÿåì°wHš¥di†Ëqóè£rîÜYD„4M¹víZ¾§vÂy¼âÕÓ;QìN§ÃÕ«WDzs¦—(áÖ­ëdY:œ››;t:Ý…¯õ½ë×£|ïk [Û[ãçS¸~ý=:.­VÌùóçQ…Ë—¿L6H‘àØ½Íé3§¯µß?doïöÐÝE§Ïœ[¨Ô@LÄÆ¹M¢ÖK@&aãü6ûoÿ1&½ÁßúžïçúÒ¯Óiµ±Ærpù’ÄHû>Zç¿oB7ÖÒ¿ÒÝh“E!¥=ZÀ‡+$ö)ùá`v¹…€÷ìß&=xƒlï&qû5àM@1Q›‡?ŒË±±åÌÆòÚÿó÷,ß‚‰?²$ओ58œƒÜAZIqÌUÉCÇGµÝµâš$¿ýmü’)Þ)@±VÁxùµf¹2SÀeSÖ§«+Nè08ŽŒ€˜@7çP 99.¤w‹"˜PSEÅäs êðC÷‰FòËšu¯£û1ä\‘}S_iK_d%èS°¼ÿIâ®æ@²íz¼ãä´NÇ>"J©¡vXš@X•,ÍP”<ÏI’˜'ž|’Ó§N ß7ÆpñâÅ©š&ç—¿r™wßÅZ;è³fX»ÝáÝwÞÂ9ÏÆF—Ó§ï[êZ÷v÷Ø9µƒ÷žíím~ä!¢(š:‘µ¦X„óçïÇáå—_Æåc ýþ`¦3!Šcú‡‡ìïïaŒá‘G_Â)$ ï€¤ø=Å$7Ø~ôq|v‘Óü/@ ­N1†¸µA«s—Þ¦÷Ö¿bó‘:–1˜´ ;› ×^ßåoÓîn5S<*bB$Ýà+oï«£Ó13爺öq7Þ%ìÞ_öcŸ¸›‹—rãÕß$ïõÁÆÂÁk?C·o_úal÷±•ïï{¾ç)Ta£†ú#÷ÑÏá\×ÒËA1üÒ_þ5Îq:zœÃ,äE8DqÄOþäÍ‹/~CžgüØý(?ðßWäøÖ¶¶µ­mmk{_ôãØtÏßêÊ,LvGme™$a —`He" "à4Úø-‚^D†UÇꌇÇ4Šñ‚ =à9ƒ1‚ )9Æ+înµû°v¿`/ÖÅÃ"ΠE’²GàÜŒ5µ#d쥄è99¢`$/’Ñ 7¬Ñbc®Ä6Ç‹ÃBÉ*ž*!º`¿« “± Š Ät£!V$MøavAyMãsjØ«roÃ6Ÿà( W’̘¹G²æxWŽÍO´Ì=•™Bµ t š/2/ÊyÙétÆZÖZ[ë¼sÎä…ÁÉ—eÙÜ›kµ;<öćxóõË<øÐãc—jøÌe1x|Hâ8®i— ™£1œ>uŠ(ŽI³ïG™<ñÀCðúå/óÀ'­…¯ÓkŽöÜÚEÉ)=—éÁmn¾þY¶ÿ ìÁI«ÒÉO?ñƒì$›¼óâÏãíÎñ=<áÒ…_ú³›tΟáì¥.Z¨O¨P^FÓÍÞ€Ëö>õü£DÖÔÈ¢UîÏ;Ô9÷dìîƒS˜QéÃÕ+_bë‘ÿˆS>äðÎïÁÎsÐ>Ï­+ÿŸ°G¸¿W^ùSò<㡇bgçCa||å Ï1>BzæI²âW ’+­ BÖ-"èÅúãœã'~âÇùÌg¾•7Þx“ïýÞ›ïþîïZƒóµ­mmk[ÛÚfôå”2R’R«áý±ºç»D?†¬Z)ê%½ÑaÄz *ÌÝc¤©ªµhYïÀx2v•x®êC¶¡¶9$º£©w%‡A*z­pfN*ºTye'˜mËÖ“é ôésUÑJñÊD&‡Œõ‹ösÉ r ™ÅølLHe5–œƒ•M7Æ!&8$L1År§ä¹ÇyE ¸Bv+Ë”GêK nC=;Š%'€þઑ˜Roc2ƒÄȸ"Om£…ûžb>Æ)+G˜¿«×Åk£¯°qM[йHw ú^þâË<ýôÓ´Û-D„Û»·¹ñÞ r7ÒèVÆÈîî.Þ{ƒA3ƒû„ÅqÂchEÐ1H$IB¯×ã7ß΃1g#œ9s–vÓÁ€>ûYzèÎ;xS§œv<öä’ãBð>G÷÷Qk¹yý ‡½[ ªãþOþïÉ DÆÙˆV¿ƒ˜}ÒÞW8¸þyÎú?O‘¨GÒÛtÚŽ¤•/ý^†ù̇¸ï.9†>á™8ð³ÛçOÿì˜ߊyì±sc³õNÉ”ÃÞu²h‡xëQtoŸzöönp°A€ªáÒó›ö©MàjŸùU0)™¿N®BœPð/~ô©PúÑ%ƒÎ?ò=I§EšBß O<ù çqñ}™¯¬Aªœ:µÃþáïò#?ò£üÂ/üƒ¯k[Ûߢ|p'¬çݽ;×¶¶ê~Tˆ– ì6‘u™"ýÖ×HBH˜Ý­¨G¬Á.º¨€ñàC]¯ ÓÛ1#@S–Ü‹„é™,9uEFÌߥžm +#ÒaG82>€®Ü*‚C}ˆ3‹œ XóÕ›¢L%u{(i6ö{ñ³®Adšwp¨Öñ"…ToSqi˜ênˆ[Ë ]ðCMvƒ/^‚5Bb…(âHˆ"Åňÿ¶`ŒEkk"¼÷¤¹#ϵ¤NÉ2O¯ŸÑïç˜Ü“zEÕ€‰A*C6tPH…ó Î˱‡ü˜Ö± ›xè~‹«h<‡Ô¡ãcxìè‘fþQFíäš%K„Ç«–©HNJ~”ãU'dRŠÏuÚmò<þíàà€/½ò2O<ù$Ýn—­M®¾{•¯¾õUò,Ž@õøB@~¿Ïé3§Ško ÿÖ:’f5ñÉ;S§·9<ÐJú‡‡ô{‡C5ïCÇùó÷³µ¹ Àa¯Ç¾øEnß¼‰óï=ýÞ!ÝNgʩԸM¬‰mp¤¨ÇûM÷ØÝ=ÿ<ð Ÿn}àK|õõ·0Æòêkïñ÷?F×Þàö•IûÌsˆÄŒçMôÛ¨†©ùªU‰n¾Hüöo’힃A—ÓɃ\ýsË×78}—ÍÆ+‡{‡ì½}“­Xùä7>:1ŽëÛÆûŒ4=€­G‰Ò8èqóÚW‘¿‹{±%íÜUàrÅÑxúéÞ-œÚí³ÌSíž9öÿîß„þ>|Ó÷Ã÷ýu¼‡Oþð/‘î§üÇíüí¿ñi²ÜqøëFr‡ÿÐOá>üß‘º ù# åÿäŸü#œË(eX\ÿFWÜ Ôÿ©YÎóh̺²® ÆO]UüH{VæG–>ÇêðožŠÒ´„•®œGóK¸&]j/VOªÚ´RLì7õhíº\Ë7‰“é1žWç<1u…ãÈÔ}HíˆÕh§UÅ4ƒÒªÇÖUç^Ó;qªû7=êPZi 5ýí8ÆÌq§‚Î?ÎÒ)î“©Úc5Ã"Ñ =i½ûòÛÒp2¯Ífqø5¨Ñ™Û…1Ã…FVì\AÅŒR…aHV6•ÇWT\AÈS: ¢‘“@î “DK8Ù2â21ì¨Cp1Lå¨f1LÎɘž}]uô0°””jƒbÄHbC;âXHb¡Ó’l$DÆcŒb#‡µJd!Š,±"…”aUÔ ÎA?uô»{‡ìî{=½'/ÀXŽ :Ä*çI,ÐÊPz ×Gq«žª ÚØÖP&÷…R‘Ñމʘ‡mu3z´aw¬Ñ6©ÿ›4mWµp>Ê87þø ¾*/ 3D:­VBšöIZ-Pewo—W_ýO<ñÝ ì1ÄÀ•+WðΣÎSÛU•ÝÛ·ùä'?¨/qãל-R»ù»â§Lµ].\8Ï‹ŸýÝn›’KOUQï.]ºÀ#<Š1–ÞÁ/¿ü ׯ]/¢æ0è÷iµb¶¶7)I2eÞ£SÀø”ê€N —âÒû×¹øüóàgR½sü¯¿÷Ï8ûÌ·^Û㻞ü 7Ø}ç5Îêï¡>—V;yØe~‹`sq CôÞŸÒzóWÈ¿ú*·¾”l;ÏÛcdYÌ«Wn±ÿÊuØêÐí´‰Qž~p‹‹ºX[}6¬/|ž’©²uß3¼ýkäùßâÒŸùýé‹N¬>¿ÆÁ{—I¶¿k(ëXã3*®C¦Çñ” cx~g ©eæû‚ nàFýä5DϳáaÊâ’Î/1—g©ã*YæY®+<ÃVøÀ ÇÓÔÖsoàp‘•ÌÈ9€©ò•å)—íóññ=’@Õæ¾Õ¡ÇzxZçLØ—Œßþ|½{Y’Jr©Ð°¨iú€Ö7ÕfL\sS21†u|Þ$>å;бK•šËÔðÓ™Uf8…&?‹N©áV\ì䕨Îqó2@µþÙ8ùýéÀŠ.?N&îsyøY¯Ù>w‰—·ôÜÐe!ÜìḈÓvεêœÛçbš09†ôÉØ–L‘yÉÔT»K8}‘Ó›¦6ó:g5¯¦fËdÍ¥LÐ)G¢Æ6¶ÀŸ…œšj ÆÂ5™Bs»ÔÐS5x¯Ø²N¾¼s§½$*Ó†ÑS”dºÞ#ªòñ¦Gê³7D'ÆŸÔúdŠn1œ¥ÒiçeÝ ˆø¢¾ 9IlØèÄ´cC+QÚ‰¥Ó6´ÚB+’D±V‰ãð32‚±Bl$ð! ôþx§ô3Ã~ϲۅ›mØ=°ìæ¤9¤Î:!Í…Aîqy ޳©9¿t8 Ë»µŒ¥ ÛÅÌüÍsTÚýÇë`»Ã~=1#÷°G4ÓK®Ì~$´Z-î?wŽ·Þ~—(Š €ã¹yó/¿œó‘¯ûív›K/qý½ëܼy³ÈŽ à¦×; Ýnóàƒ‹Ä,;{î,ÖXz‡=Ú­vð=5å››\¸p‘(Š ù¾Èõëïá}pzïÙßßçÒ¥‹loïœÜEjÎ Ý'¾ÿ›°ú&ôÃ…æ7^y…—{7¹øŠã?xøã<}ö4W~û`û©¿&j®ý^¤YÅ¿ó´ßùU²w.󅗅ן¢ûØG9µsŠ$±Üw_—,W"kc…(–K(FNŸœf³•iF¯w‹èþo„ì ðýú‹ïÈW9ÜpêÒ#GŸ0?öwÀ9úí³äY`lÿ•¿û}ô3Ogs“^ ©³è§ÿ5Îyâ‡! ýÄmï;ñ¼é»“˜­÷ls¥=>ˆcó^‘6]Ûsl­í$WvXÅ]v‘èR•…ÖN™çÓ8âZ¥K€d©é¶p@”©¦ª%ö.Óû˨‘&í eÑA_xm‘ªã*lôŠÅXÁ‹ƒ±#‚÷¯ŠW¦ŠšVÑ‚œlfwÈr]P ¾Nþ¬xŠÆË›+õÍCd*Úâoœ õÛ37yÚüÐxWÀtÇ(ͽ¨—Ú–QóQj»[K7VZmèDJ«íév„N[h·…VËÐiACdÀXÅR¦î+VÆÆÆÆ‰·A+Ixúé§øÜç^ž kŠ/²ƒ”~¿OY^xá³Ü¼y?t$xz½Þ;žxâ1¢ÈžØ5zuî¿Ãýû˰ÿÿY)oÁ?üýßgðî.?þ±oæÓ=ŒÛ½Jÿæ[œ>ýõÉæê½óû´ßùUòw¯ðòç3¾xøq䩿ijϘ¤e I"’dZrtéÇsû"Wþìÿ`ïÆø-áÒsß{¿Ûà`(„6}n^ý#6þϼýÒ~Ž4ððæ#§.epóË¿…Ë2Z>Cvñ9¼*_xáM|ž³ñà)¶!”ò¬mmk[ÛÚÖ¶¶rôúrž•EäÙŽ°ž»³—ÇÖ©SO³Í‹Ž*ü¬ð%r0-€¹5£„ó‰MH?6ï]…Ù½®¨äîEvK¸5J÷ĸ"bì‹Í¿!²B›R”¢ÀZî¼â<zy†W[ø)Æ+°F|èÕd|™Y±¶øÐ‰ ‚¢ía›µâFF~ i«H>SLFÑØŽ+?$Ú3Eòý¨B=dpîˆÄˆbOÛB”xbë‰Ò²†N±Ù²t;$`£þ;Å«Ãçuï‹ÅÄ1-k±m°ÆGÐívŽÃTèçÂAß³à98ÌhEB?U©’“e¶ˆïû‚þoò>˾¬þ>>§ÌhJÔ|w2¢®µ®³éß'¯EoëÝ^0…£PÕ9sš=ý4/¾ð›ÄI‚HX;nß¾ÅïüÎï ë¼Ë´ö4M¹uëçÏ_à©§ž\Y¦q9'…páâ®^½Æ{ï½ÇFw‹(²¨*½^?ù“?Eu<ýÞûðÞÍ›×yþùoàâÅ‹¸Ö¹îç›Ãþ.ª>Ïð.å8ËOä¢[¯ñê„Ê&§¿þç­>ˆÔßxö;ÿ2€ó—2¾Ð{yêÛyî3Ïpßùö±>­l÷A®_þœ~ú?!Ή#Zq ‡ÃõÔûŸÈóéá½ý›ì] ³õ Îm?Q¤ZmÄÏ÷þ ‡NHs¤pÁG¿õ‡p*!½=…Ü ÷?ÿݓæEŠû:À²¶µ­mmk[Ûê}¹´³ñžei*þnŠì!!Ú‡@UCØR¦x3Šš–E”AG\‹úä"ÚLÈ_àTªDb*˜"baÔaŒ§%†vKˆbC—ZÕŽA.ä¹'SpNpNÈ}©½ ˆ…܇P{ˆ´«÷¨w!Yˆæ Äj†P›-„ˆlÖ$\‹ˆcC’Xº˜î†¡ÝµtÛ¶H‰÷8i¦ÜÚWnïyzý’œ,#ËÒBÛ 6ÂDQ‘Æ/Åæ»¨ÔR* ŒÊü  × ©îÐæÖŠ‘«Åá¾h? DzCR=¥ëKQnñäÞ ë¦UGÙÕn4c¿`•’UÖD#•,ðpŒ¨8—(˜‚©:6BYÚ±‡#¾Üha²GÄD´!±&ø x9žœœ,÷ˆ8¢B/=Ž ­Ä°±!dΆ°ƒ^O¹½»{–Û­ˆ½ƒ”ýƒœAêÉ}h‡0,Íùî¼”Dwþ¦bœNUÈ.ÕÚö)‡Ç8H—š¹Y‚~?Ñú2t‹B•cbª›él*³ Æôâ½ ù eó¬ÓU•‡|€,Ëxåå/rpp@»Ó )ï{ø1óƒƒxàK|êSÏÓétïXŠp«•ðÑg?ÂK/}ž·Þ|›8Nh·Û…öyp"P8úý{{û¨:žþy>úÑy¸}~) ßBÿß!»õYvÀÀ%¤¹òuñ}ˆèܳÜwê#D›„Â]°æ½pù׈ß{/~ÞóùÞ³˜§¾g?óQ.\ìûƒù¡ïüµbÝ4ì]þº|3îú“ï½Nš08¼Eæ…4·d¹è­ÓŸaçÙ“l•à|µ±òÅwúüÂÞ Ÿ+^…ÜS¼”܃W!óàŠ¿:ð.|®ž¹z2¿Fèk[ÛÚÖ¶¶µ-¿»í…eÖTgŦÓéjå°t^Rõ͘'Áˆ"…>o‰Õ€·¬ /4ÉMI$6ÅŠUÞAŽeEV±C’%SuC ”C}r,ÐŽa£eiµ í¶€Q†A®¤¹gCš ƒL iîÉU€’ñ>œWKÂWÀ‡Å!6¦ø)DF$0„KY#m±Öx’Dhµ…ÍMakÓ²±eÙØˆ‰ 0¯ÐÏàæ.\¿í¹¹›q{_Ùc@ÏçAÉÛÆZláÐàå% ×"º]ÆšqŽ-]#“I×£˜¼”Þ6zÃñà%7‰¢#¹N—’,N°H® =šŒ›Â¹#Õ€²äÞ«G]†Ð.”Nˆœ‚¦¹ lóâ1¢D&8?:-è´ íb뉌 /quX ¢h1†D…Š Ù–m²ltÆ:Jï‹ÅGÐVÁaÉ}Øè´ C+ ¬ñV4h«2ÈtÈ„ï5¤³‰*-¯ÅøAj©Lb©©c€zŒœ)²ÏHæO§ ú(aDyUu¸ÝM» ãä‚ €éIOäHZŽ´ì>þøãìlorùòÞzû]z½ëaœκ4KñÎqîÜ9>ò‘¯ã©§ž$Žã#ÌU.´Óéð‰ç>ι³ç¸ü•+\»v ç<Ö|ÁÖž¦Z­6/]ä©'Ÿà.<8^ßûSÞË? ñ#˜SOl>J·ûñæCˆ´ §¨/|pGk»ƒÔðâk;oļ~ž àüҥiõùPšRqì¾þ«ôÜuhÝtFZ&ÚxˆîÖcÄc’Sa¥:²V»ßw ?ðÃ×n̬™O*ÿÞ²Á:i?õ[sÓ¿&m]ù¼¶µ­mmGXã‹ @¶¥Nõ(h`Š_„"^µ©"¶HIw¡†Ñ©â|(–sDS+b#–‹¬(‰UÚ±¡@'ñt[JÒl,¨±f«p˜Ê^Orrïñ¹Gˆ°&Dr¼*äõy碄â«|ÌZcH"~íHöË8"<6öĉa£Ñí Ý®¡Ý( 8М ¢`EH"K;NèF9ûmOæ<Þ ^ÅãðäÔôÞ‚¢Bø[‡bdÔhJ€gdHôfAøJí¼Ž@~Éï^ꔫ/ ÔIphh¸†Ð~L,,Aì½Ì} ß Ý+…v½ºBZÉaÕcÄV¨Ô‘)˜ÚãrB$ÒbÅÙ­Ò¶àÕãö­[ìЋÇ1§wN±µ¹Ewc#89´žµv’ê¡äWœ'$3KxM+Îc-<ú(÷Ÿ?ÏÁÞ>»»»öƒìš(lmo²¹¹ÍæÖI5Fø'Ý®GçÛOü0‹ßJÜyÓÚAìUbDUG“?x•óGIœ*žï IDAT‡üì'ø³wîøS|ý·~”ûîëL1úë„C{‘ñÐø® ~æÙŸÂ n a“L²ƒ‰·©B½,>kFíÙ Ã_ÿÌÇÓjE¢ØI˜q#u>AY©#îze™U¦‰0[Þ-MË~nÙïËœc¿¿¬”®¿5Iv\·^-#³ö¾sìý^åýÛkÖÚëzâÍYlÛ£;? —xÌTdT}HS×Ë´eŠxÁ~ÞNb:±à4'Ï…4OɤÎ!.rv C±­"§^PŒ .ŠŠÈ¶5´bKÒŽ‰;–°_2 2èõ!Ùsˆ¼óø<+Òf# vDÀÆ- Q ^)IØÒN íâg+Z‰` X"´0ÖaZ­ˆVËÐJ„8&DÃMY³E:C«%lt-[1‡ÐÏBÔ?Ë„SÒTéŠr”T[F^µHÙ/@[¹!JÞHÉ’^Hk $•~ÕqÑ9 ØG™:_D]DŒ/2®uXPÐ[©ÇyÙõHѦF‹ÅéòÖ(‘Mˆâ˜8¢(Ñ©ó8ç‚.¯”ã¥Ð5„V Ý6t»†¶a³cI‹!¶–ÄzÚ±¡Ó6E?çJlŠÒú"£ÀˆÅ•µýÅmz“{œúàñ‚’ãÕ†B‡<ì·½÷8çA2"6ê!wŠ7Ê#ð…ОÓq˜|´‡….±/Bî(¸Å]uÕpe—c­a{k“ÍÍBéPpc€¹Ža_'áÔsX÷0§K»ÅÑi%´[g8söôtB’e êç(,Ïï÷E£­¶}Û>_ùbÞp B;:Û2éÈêv[|ó·|î›þ-ÄFÄ‘­èŸàxV%Ù|6iyGµµó±Y&H—›ê«, ÝŽ_ì³cçÒÕ©qVBÒºÒñÇ›G+³zHËF”¯ùU=:½nhÍ*-Úèô˜v èÄ5HíÚ$2Û‘P«¯:5~ªÝªÕ¯ëÛÔèž”ˆjX'¥È¶T±õ4:B…‰$è›Þ_ËÌ5pѱ?Ù¹Òð|™üü+¦è\á” Þ„Ò4±´ŽõuÓX÷3Tí¦ºfVûé¸ëgÒSͦŽ}Õå‚“å LNkÎòœU©P™÷•9?=žep¡ØmYb¼ê±׎ñpÑôš#SûIñÕY®©æÅ´Iþ¯ÉŸ<öÞœ¦¸c]æ=̵æ32Þ±ÞùÓrI$Vñ±±mŠ,bÒÓȳµiØÞŒpÞ’¦†Ã" =J=i4ZCž©r,ñ‚)è‘ Qd 66$I¨Eït¡Ý5DídÐ> 3xÒCGÖÏɽAU°.\kl…86:†N;¦Ó†$†Ä(I¬´c¡Õ²tÛB'±t[Ðn…:üÈ”äqâq$60¸ÇQ𦈮zb³¤%lt éV›~¶ð¾§ß÷ôúÊþ¡ÃJŽQ¨"¤ÃÕãKz±ÊbZ’Ö©ŽÒØŽäͤXGeel»JÓfÆj×Ë4mÑÀ^.äÃk@Ýi6BÖƒ1+DÖŽHÚÂöfD§c°‘Î).ÏH3)jj=Hàˆb¥‡¶ßغ]ºcãˆmpª´¢A_\8O,¡V_M¨Ù5jpŒ´ê‡YΣœ†R§‚óBž+ƒÌ1è;ÒÁ€,Ëã‰"!uÇ‚OÁ[°òÊÞdXë]‚<—P™àYŽ žf.esÙqŽ{Û*‰H­²Ý½x«µ×z²u¹Nù^éEöu_µQ„£™Ãï×|YN1¶™lŒW.VÓûiÑ«0y. Ö߇Á”E6zÇqûS9ËMŸE÷Ôs“VïV­Í›T¦!².ˆ«¾Vl3]÷ìÚîÐ>ËÈÐ!s#è²Äçf/‡CB¦cûþ’aÝÁCd•8²tºÂƶ Þ¦1I ƒ\dB–åx¯£ ­ Æ3ã-¥“@·¥t[ÐiÃFǰÙ:]¡Ý-ØÓ-D6Ô’´r:ñ€–íK >Çi‚Ï¥¨=6tcËf;fk#¢Û ©Ò‘uÄÚ‰§+¶Ðm+ítZ!Ù¢ åÀ'$ÂÄ ¶¨÷êÉ½ÒÆ‡ïEЊ…¼-8gÈóý ˜8Z»yHµ79‡B_IŽ’(ËàU‚ÜÜÐ9òiüíǼC¢‚—ÞÒȹ^ö½+Š5¤¦«¢EXY º>òDÀ¸µÀ²5ˆÍÂF×pú´¥Û5!òŒÅ9%w¦…ZÈàG°$±¡Ó‰ØìX6º–vËÄIàˆ­@n!C\ŒI‹’¿kD®±ÜÈÁ3 Jb:)òÓóä™'¤¤ƒ”~o€Ï°ˆ¢(8^Œ…ÈrúB ½Q yP°æHzOKl»îÙån½â¯m½YÛÚÖ¶¶µ­mmÆ:èÚD°¾ÄY…Æ0‡Ì?w QdS"†lß%P‘¨…ºë¨Hù6O¦f’8ÁiQ[­#š+ã ÆƒQUÀr"tZB·#t»1–V+"i ¦NŽKN¬}éÓ2Ú6EòœÜ»"mH°$©.kèÆ!=¶Š5žvìiGJ'6tC»eh'„Æ•{Wõclæáþ âC-w$žÜx"õL‹ÁcQopr9ÊA_Øï:±¡ ·ŒbTÁ硆^=N£PÛ-Q¸!ãºAt)Î!¡]JpètÜÉÔx(狟E*{Q;.Å+22Ì>ˆlBd¡^d$üJL(ˆŒÒj9ã+»‘@žgC y)¢¾hOS”2@’XÚmØh[:-!I| ˜ ÝQA&Wò-{·`Æ/@z„à­Á !ýªÐÖöêÐ" DÔ "BùDd Qœ™ ΕH!·‚qÙ‚÷߇¼ycBB´-Ú[ÑB pÔä¢M@½‰B&R)ëæpÓä­&þ1$,¥cgmk[ÛÚÖ¶¶µ­mmkû`Û­AΡ)ÇMšŠŠÔicdÐE -òâ{¦  3!Õ< TX«ýÛ i–cÅãÕc Q\@*1ݦø/R0p›DÐŽ‘ì¶Ðí„è(1X Nç+žD<رÑvø ÁzÃabȳ K®Þ“DJ'†¶Milí‰DÄxâÈÑ6J;†N¬´­Ò6J"Bd…È(VB:µón t‰„ºgDðêqÞc%DlÕP0{< Š'wBžDØH m+¡.žJŽwˆÏÉœ'ó‡EEqjðD¨‚9_jÖ ûHbKPD<ªRÔnŽÆÀ0û¡r¦dtÇc4²¢[ íØÐjYÚ­ˆv‘Ć(’Àp¯‚¬ì AË\§VÉ«©~v^qçÔç)+h8è„óëømÑbï»±Áœd€š} ?ò ê3YäÞç›fUåáGŸ)˜îMÀ[ Ït¾Oc¥ïÍ«Mé½a|žôÐ#j’—œ)ö²¹Ü^‹^ôŒïi™AÕ°néÜ«/ÆT#ÁXýqt鮜wó2EÂ¥«ö©.8÷µÙý§s>¼*Iœ˪´(ÃØd»,¸vÌê*]nnÍOzÔö©Ž[iè§ oÁ"ê÷6y±2"ÉÖšsVçåÄa^ŽNziÔEºâ±¦Ù"šHsUµ-Õ±ÇÈü±6¿#]U¦ïñ¢3·K¤¸×Ë4-·Ó—%69ãÀm}Jq¬ fl…Ƙ¡L”1&ЈK¨’VÈÍÔQd €¯äâ‹ø¥CDðÖÙç,&B-ˆe˜ú™QDÒøÀü]F'c#˜ÈwÚQÄF+¡¿ ƒ†Wª8./¥€BÚt,B I$$qÐ5ï&–vbi'Ò]Ö Ñ`ï )/ï Þ<[Jl²0¥ŒGZ—Æš¡l^®cB–¶`<  ‘…v¶º©ÒÏ„ÜòÜzï:HÓœLQ]"º.‡1­ô‚M_Ѱâ+Œ%“º€1‘Põnp$±¥Û±tZ­$0§w .€VT¤žRCêë æêàØ‰!N I,$­;̶ ÝÆGÆš"zï°øð> Ãt}£¡Ï¡ Œ:Èpíôà ¾p0娨U¾çqyÈpP'¨ä…ÇÀ†4þ‚/À)äNÈœÁ“£8r︜̕¤yUq³"½^|í²0,ƒXÐTW|™‡8eæÊ¤+ƒøŠ:ƒá9qB£<;äöka=y_¹ßãè¨{òÍÛÉŠç\mϼ¶µ­íŽ-²ÂçVñ2­mmk»g¶2ïÛDZb VªßÏDË4ƒ”¹æ+™™Ð5¤ýŽég" ¢ê p°‰1ñŠ‘.KFÞR1Dñ)8 ú_å9TŠãhI àÐ[‹OˆÁ¨! –aÄÔj÷š)Þj`I—P‡GB½x·¹ƒAêISOš;\d²ÔçxêŸQO$ õ·[QDÛZÖÝm :ï1¡.\¼ÄÜ.\‡ê°FXÐM Š÷Èy:SH‘ ¡æÞRî-¾ˆ¾ H°–È@§ÝfkÃÐ;lq˜{ú™fÐO ½C¥×÷ôúžÃ¾£ŸzÒLɲÀFnTm¸¶¢`^L“BJMMVŽêê„„¨·C·ÑíD$‰ÒмµfþFêžâ8%ÑíNÈ+û³Ñ~7š»=¯èúÉ¢.ó³,›v›#mm*ò0%`÷^Šúf†5ÎÞ‡:æý»¹3g5ZdÔ[ ‘@^÷È*-W¤ˆ» åÇ»-|,Ž”Ø(ЏpMNYŒ ¥\µ­B}wH—|Á‚^FjUç€4E>û¹×˜K®ÈMwÓ5´Û°Ým“:%sBšC?ƒþözÊÞ¾cï gÿ ã ïèz©'Ë!ÏÁ©úÜ"¨„$qFö}‘u]:fÂøŠ¢Bë]ÂuбD‰ÐnZ- õô¢¨ÏÂñÇÀt@ldH¢„( ÚåÖ–}Öt §D™q`)œ¾p:ÇZFË ð;LI‘ª.Á!À«Eº¿*8"è¥c"D¸ˆˆ#0\™‡!•p,«˜ÀäŸ9¡Ÿ†l csá ꢈàØÎ0x¦õ4E¾ E6EVG^t]¸7CÔ.ÏéÜÆ¹æg€–þ )ÇǤéøï³zCèuknéû­?{…O=ó8qdÖOøµ­mmk[ÛÚÖvWM&77S{§Ê–G‚BÔÿû'¯ðÀæiÚI‘-Ѝ¥ÝÙ&ioüGLí|G¿Ë؃t—ÃÞÍå\Ý£ù†õ0u¶<ò‚‘UD2²thŽU9e43cOuæö|q?ÁÓŠ‹6bPõX±¨ÔaZtõt™Ç[)âÃA¾Ê‚ÅãËÏŽåTðNð>È£C®Jf=Iؾ ‘ðÌÍC£e%‹:y‡‹0C›÷°2X|H‹=¹ÍˆøÈãDñÖ‡Llçt´#1$&°ÂG…À{H«ñXèÕ¢pguÌ»œ ­Ä–…dkP5¨TB}ºŽ}’¬ÅF0Æ`,´Ôàrç!ËàTªô…½ËÞ¾eÿ@é*ý¾#M=YY® <¤NhNîâ™ÚJÁ(‡|ÔbkÅ[)5Ä­m›¼7JÛñ·õ’™?EšoØÞ9µétãFó¯æq«áDûC’hIÛÐUI:«‚Nt¢èD':ñºÆ k«ÖA#säQÆzB+¨„µœ÷+wwÁž;WYôØ_6X“VGŒaiÖÏOükê«©Ù:™ËÈ\†V°çÎR·5<ç,v€ÔUù×·žÁ[îD½¶²}§6ó_4B.ȆOÒ–!ØÔR½L8ÙŒfU/MÀNn¤qC³ºÞ’PW8vª4¡‚,/Q1xïq^/²,Ñd\%”ïÖ y9NZ‚R¼AY‚˜˜R|§{8Œt{§<ÖYT"xUµ"!Pè“$TâÓ>M¬x—}ÓåPÄNxI@9Dt)%„ûP5M"ÖJLèo ð´ø•+) í"üw¥q±RkPˆQTS¨T]•ð󈊡§ j5¡Ñpä¹§Ñ$P³Bf¨;‹õ*(Âg‚³ŠÜ6Æ zwwJW5(´k)þJÐÚEº¼F«ÐÃ/J…£Ø[ïƒÅ›Í£S»WøD‘ÄJ¡ÐFðt ŒŽ(6V»µŠ~-I*/‚-ÚÊ>ùØ"€_€b…—ÖìŸmБï¼sxœ É™R\LI‹àÏî­s6AOšjœÄÞûª¢«šÒÝíɼÇ5ïBû€WQ¡!Î]TÏ7¸ÔŠä€´\;ªMA²™¦|)—¾j¹/Ófí•§|) ½åºëô+v¢èD':щN¼r!ðÂ:Eo%0n±aÙhœà]Bî‹b‰Âå°¶/gÕ:ÇPT®îq\öÀÅôV{Ù*ÙšUµUôå}Áù pÒÀINæ,uWg}c=«×¬æ“—Š[ÿé7¨Ú*^oÿ „¶…ç Ýi)Á¨—±Ì¾x´9žÌ- ¼jˆEwDZI3Ë-°J‹)¥0&A© J­Ü{…ó/‚Ga´!IL’P©THM‚N ¢têò6(æJ¡ó°? ʸà=®CÕ^«¢Î-(Ý-#VbQî±ÀcªAk!1*ì;áõ¢Ê--ìÐûl ìËW‘/eç~Ø‚‰ßcZ#–×½jR2šÃKöQÀ¨Lð¼2ˆh” ôëÔ@5é*lÅ;M–Aî…†…Z]V¨gY¡a=FFÖhШ¼X”JHTÓª¬Ø-åDÀú@+7@VX–yG&.ôæ£HLBb‚xš‡žþÄkR ýßHTˆ7.´!D[µ$z¦;%('äÊ‘:%¡g=Rã“Aï@GC'­I(Õ¶…r~l5ð^•`˜–+®å¥0 Juw]ï4Ôþ“„î 탘œ#$œHÔ‘wqlu{ÂOšÔëò ^¤}Úk/µ­^Ï…×¢ü­T¼._‡¨¯yŠ|`E¸Í&ÝtŸJš˜Î¢¡èD':щN¼ºø\A½fIMŠs‚wa=m ëYÛGc‹ñF«F Vô¯`\÷8¬²m0R“b´aëž­xnýsôåx³‘pÎòÇÅdÚôÝ_s^[õGVýñ×x—#"dÖ‘w?ÁŽ»FoOWgåЉNt¢èD'^½uA@Ûæ‚õ*ˆiÇ¥§wBÆõS»X†_µ ¬ÏÖ³²¶ú}ôgýdyÆv£¶ã´ýÿ‰?<ÿ ç-<Æz¾Af3Š4I7XÒ&I‚"´Â:÷Úé!%ƒ×ÏCꬷô´¾<@þb²CðüÛ*€ªz ‘!-}³±J¨EȽ‡ÜâÅâ½ Jð2h’4%©ht𢵕HëÉDÀå¤&ø ;¯ªÂ¢ÈS!Í=IêƒÏ¶ƒj QRpÖ@›VmJÅå¢åX±¨'b2Ñ}ÇDЙû¢ëÚ’(>»ÀÙGÚ´#Lj/*xƒÖ`¸RDêì:ª¬—`.*ÓSňˆÂÇ’¶x…Ï‚2¾Ña ´-‚ñŠC¢ÒðÝ…$„‰âtâƒ_¹ArƒÆ‚耹Á˜èg¯ƒ{QÓ ôð(‚çBbD‰ ”'M<•T¨T¡šÜÓp,¹ÍAr´JªèîJéª*>Pì5QMžÈ`Eb¢2½áâïEÀ‹G"m½L\7ÚD!ºØ"@¶ °›+ÄÏâx»»8ɵJ Á.=&I@û rŸhúñU°‚s* A¯ ‰ÂëÀãÐQe¾ røVÝŨEÐbzWþã—ªl¤7%õÔ˺uÈëTÉo¶©–”ÃÆ÷cÉsÏrÏÝ Ë¿9j4ï<è ð-Ž™"m€>Ï-ÜÓ÷سü»B¤³•^?ø| íÛißö¦«ÿuϲâñëÙzæ *=á5›Á“¿{‡®ù(ÕJ%2?<£'½“gKwWõEŸÇoûÛpÀL:õÿ»…ÇE]ľûîË{ìñ†ØŸz½ÎgœÁùçŸÿŠmóàá‡æƒüàËÚÎÀÀŸýìg9ï¼ó^Öv>ÿùÏóñœ-¶Ø¢³òíD':щ7xˆD½¯X!WQs¬Xã¶h_Üj5ÌÂ-÷9kkòjyÌ6xfý3Ü·ä>Þ6ñmœ‘ü §üæ“Ô|-0eh]öieøØÉg°nízöÞkOþéSÃ9KÉD~ŸºPõm|RͯWv} ñ«raÙÚôo(Ñ+$ЬC5RÑ1bÛYÁ9Áyý¦…F–Ó_¯Sodd¹Å  *˜$EWª˜J‚N«@‡¹u 4}5ÖõÕé«e 4,¹£¯áè¯çôÕ,ëj–uý޵ýžþš£¿üγr«°VŠO* ] ªˆ®"ªŠèQ ¢ ¢ V ‡—`Óe½'Gæ ë¨çB=÷Ô3¡žC#'¾¦¨[MÃ)êNÓȵ¼– ý¹g}ͱf cm-cm=|_WsôÕ=} )¿PË Vúëžþš0PV‘YM–‡¾ñºµ4rÍ,¹Ïq6C|bQbc"!€aïs¬uHÆÆ7‚˜ŸËs$w8ëñ™Ãe–F=§>Pg` £¿?£¿/£ÀÒßopá8úk–þô }°®&¬­IøÞïY;àY¿^XÓ/¬îV®s¬\kY¹:ã…5 –¯ª³|Mƒ•}9këj0P‡þ†f ¡©åŠZ¦iØ„F^¡ž%Ôë†Z]1PSá3û-ëÖe¬^—³jMÆêÕuV­ÍX½.c™„QL IDAT]_ÆúKÝ3Ððd2«pÎà”ÁkÆê¹jÕívA_!~iÈôFbë„oø˜â‚Ýœä±híItP¬O“àHPIcHµ!I Z› \g4Zë ¨§£-] eÖ’Ùè¢ ¡Ä—wi½½´/õÒ¿Ú¤‡çƒ^Z·n-ãÇoÁïx'¼ãì½Ï>AÀÒ¹òK)#ÁÕÁ9X3HÌÒ:¼s‘è@ºWÞ,/¶Ó¼Û.f“s.ö[ ÿqõ¸Ú½T’?BÿƒÐÿ Iþ»ì½;3?‡)óþ…©ó>Ã6SeáWðÐ~µvH`µûî»3yòd&MšÄ¢E‹6p«V­àñÇg§vbòäÉL™2…Õ«W¿î‹ƒw½ë]ôõõ½*ÛþÃþÀŠ+Ú^;çœsÊã?òÈ#‡|ß‚ ¸êª«X¹r%Ç{lù»Ã?œF£ñ’öÇ9Ç7ÞøŠã²eËxøá‡ÈóœiÓ¦•sáöÛoßìíXk¹é¦›ÚYpÀ‹ÞŸ;Z­öŠå½÷ÞËÎ;ï̤I“xâ‰'6Lx5ì¹çžìºë®|ík_ V«±û뮻rá…¾¨Ï;ðÀ‡ýÝ‚ Øe—]˜6mZ9w/¼ðBvÝuWvß}÷Wåø;щNtâÕ 'àm(4^óÓŸ±~}ˆ¦–qç_üòúúûâšY†X†©K.ï_Î3kžá…¾XW_G-¯Q—:«ê«8ïîóXøÜBæl;‡ïþmj¦Æ@ÚOÚG¦²r‹EîS§œÀ#>Á?p46·ˆ›Û&v}9pxhl˜Õ´2^‡ù°W¾nµ Ÿº6µ¼¡”ò¤-ëRöÓ=¼®IÑwm"X9JÁµÔ„ª¶h È-xïhD›-ïÎY¼óàr¼¤¼6‡,ÄxŒ²í©$ÐH…®.uBµ*T+mÆD¤`>z’ûhå¥Ìðè F ·ƒ¦«u!Ц£uš4ÅëJ˯†¼Ó¡‚îNÍÜ9häŽÌú2ÙQÓ)ª¶Z…ý0JGz{{oz¨Ž‡J¼ó>ÒPÖZ¬ Yž@¡7ª^Ú«^…>ð.(šE xBj"…_‚×wîÖ®]K___y¾ûûûz{{ñÞ³bÅ ¶Új«r|V­ZÅ©§žÊŸÿügD„½öÚ‹;3#F”3{öl~÷»ß1bÄ>÷¹Ïqà 7pê©§r÷ÝwÓÝÝÍÿþßÿ››nº© x¯Y³†#F¦iy½¬^½šÞÞ^.¾øbòAøÙÕWrÔ±Ëã?Êÿ:ñD<5üæ×¿ä>ö1péÿ­·Þš®î.6ý¤žñç…w²Ó;?Ljq;}Ï@¶„[r×_Óf¾cìè£æÒK/¥···í-ýýý¼å-oáü#ÿñÿÁœ9s˜;w.J)’$AkMWW×]wp7Üp_øÂxä‘G1bŸýìgÙ~ûíùâ¿ÈâÅ‹7n'žx"¿øÅ/øÊW¾‚µ–ýöÛo}ë[üÃ?üS¦LáÄOä{ßû»ì² guÏ?ÿ<_øÂèïïgÚ´iœyæ™ÌŸ?Ÿ®®.Ò4eÏ=÷äÌ3ÏDkÍÇ>ö1öØcÎ:ë,þýßÿ‡~˜1cÆ”Ul=h'žx"õz¹sçrúé§³Ï>û°Ë.» ”â-oy §v÷Ýw_úÒ—ðÞóè£ò¡}¨ÜÆ6ÛlÃSO=ÅÍ7ߌ1†ƒ:ˆ¥K—rî¹çòðÃÓÝÝÍ™gžIš¦\pÁüò—¿äâ‹/æ‰'žà}ï{ÿöoÿÆG>ò~ñ‹_0sæLæÎ‹sŽ“O>™#Ž8‚‹.ºˆ«®º ­5‹-béÒ¥,X°€k®¹€k®¹†oûÛüñ\yå•zè¡ÜxãŒ7Žüàc˜1cÿöoÿÆÀÀG}4x çœs+W®d‡vàì³Ïæ”SNáðÃç·¿ý-—\r 7ß|3¿øÅ/8ì°Ã#'ÎK/½”‰'òðó`Á®½öZ´ÖœrÊ)xà\xá…\wÝuh­ùáˆRŠ+VpöÙgsÚi§ÑßßÏqÇÇ{ßû^ÞñŽwpöÙg³råJvÜqG>ÿùÏsÊ)§°lÙ2zzz˜8q"gu—\r ;ï¼3‹/æW¿ú'Ÿ|2S§N%Iþõ_ÿ•ÝwßsÏ=—ûî»jµÊg>óüqúúúøä'?I__x =ôPÛœÎó¼d×dY¶Á}mß}÷åöÛo/ç÷[lA£Ñ »»»<ƒdgœqøÀØk¯½xûÛßÎc=Æi§ÆI'ÄÑGÍ5×\Ã!‡›Þô&N?ýt=ôPfϞ̓>ÈsÏ=Ç>ûìÃܹs™;w.÷Üs³gÏî¬ø;щNüÕDn…<æÎÞ‡õ}5îZt}ozÓ,î¿ÿn¶ÝvÞuÔû­Âš{Øe˜"ó Ûà-;½…ö:a£Ÿ»ÿÖûqÊ›Nás¿û\hEmm©nù®ï<_>ïB®ÿÙ÷C먗¡—ƒCU•äÅU¿“Á ˶žÆ+¿Öõ«ÁVOÍê^Ó\À¤Z¼¤[³-Õåpl&‚XÁ+E.‚Í¢X›wñD V¡KКå/±j„¢(^ôE§&PÎsë±Î“å–¼ª0ÆcŒ†¢Ï:þ§ êèÚ@˜…NSXªé¦B|„PO÷./ç%€tT+'¢õ ´ÿв\ÑŸ)j8¾J"ÇhÔÑk]‡ÖyQš.6/…ˆ[ìu·ÁÌúP1 V\MezÕ³¼_ª•[µmOë¡{Á*• Ÿüä'ÛþN ³?Æ®¸â fÍšÅý×±víZ:è Ž=öXÞö¶·qÁð›ßü¦íÜi­ñÞóÑ~”³Ï>›‰'ò—¿ü…«¯¾šÿþïÿæºë®cÿý÷§··—»ï¾›Ë.» ­5×_=#GŽä»ßýn ÀùË_ÒÝÝÍW¾òüq®½öZFŽÙ¶ŸZkö߬µÜpà ì»ï¾T«Un¾ùf”RœqÆ,Z´ˆN8§Ÿ~€O}êSmÇ;oÞ<êõ:·Þz+J)žzê)”R<öØc¼õ­oe``€N8O<‘³Î:‹ãŽ;Ž+V0cÆ n¹å–r|•Rì»ï¾%]}çwfÆŒüüç?/ÿn—]vá™gžáË_þ2?ûÙϘ5k@YÝ/Î}qNµÖ¤iʇ?üa>øÁræ™gpÌ1ǰÕV[1uêTž|òIÎ?ÿ|’$áÁä’K.Ùä\ÐZóÌ3Ïðµ¯}|ä#xï9î¸ã¸ýöÛùÆ7¾ÁÏþsöØcÖ¯_ÏsÏ=ÇùçŸÏI'Ä.»ì¨Q£¸ùæ›8òÈ#9÷Üs™ÆYg…µ–iÓ¦ñïÿþïÜ}÷ݼóï¤V«ñᘟþô§\rÉ%<ÿüóüà?àä“OæàŠ+® I>þñ·Í½¡’޳gÏæŽ;î@DÊjþ`w­5_úÒ—èëëcÖ¬Y¤iŠ1†o~ó›sÌ1\ýõA”H)´Õ™÷¼ç=|ï{ß+‹ãÑGåøC¿ì²Ëxä‘GøáØYñw¢ø+ª [ãÜ:xÛTÒ”›n½™ßÞ~wÚ™CýªÕjËzjÓ5ß'W=ÉÕ^ªìâ&ÛŽéç}“ßÇèÊh–Ö–r˲[(„™7\Ç6q–sŽ/ýÇ¿0rdï+Þƒ>˜Å}Ð¥½ZÚzt/©’¶9¶ÍHÈð/©VTÚV©“ö*|ñºnú|‡j§bgž ôU@%)€yìËÕÊàÜ+r ©5(í0¨ ì-B’8*V!.,Èmî±¹ "g¦°ì¯\ +ëH§Öåœ&cct u·&#Dƒ(<àmP7tÎc#p-}ª£Ðœ”ç½H¨ Zè«A-+*Í…ª{©1߬ÎÞëJ£Q1Ñ%>ˆ¯ã¬ÂYÈœÿn(Wî‡óA Ë\° KªˆXò¬ Vw*ÚÛa¶p\Ê+Ð<ú¨˜ÍSðÚ&‰ŽÂ>œc%±Å‘ê¨[PE©Ðç+N!À¢häžšªà\C¢mèÝ6PÑ ZÇ*³/<ÍâM×AÑAkHш$‘= ØÜáŒE\ŽKH|Rž+)“H…ï€e0F•ìwOè…Á‡9jRFO{H$Á$ ã(-'Ìs/†"àŒ± ï¥9…#€da¸á¥ª†ù¾iý’ïêå:«×üAÓãí#²¡"~ \½0yêT¦MßF£Á= ï¢R©"ä+¥3f,o=àx„~y}3»ÛrŽŠ¿¥°Z†ÁàEðÎ⢞놼ñú¾~òܶd‹U[Uy¨HÓ”üÇòA7xB¾nûwQ…îaÙªPìC’$8P:j+Ìœ9“±cÇ2{ölf͚ť—^ÚÖG_€ ‚¦þÞ÷¾—©S§râ‰'â½çÇ?þqù·'œpóçϧR©ðØc•Ÿo­%MÓr{Ƽ÷å¶Çüùó™?>Ì;—SO=•I“&1{öì-\¸°Ü'D…j<[A]kì°Ã|ç;ßáòË/çÓŸþ4?ùÉO6zN­µ,X°€¥K—rÈ!‡pÌ1Ç$ {ì±&L`Μ9L:•O}êSœ~úéms~Øyæ=J)¶Øb fÏžsŽ«®ºŠ]vÙ…o~ó›|ÿûßç‘Gᢋ.¢§§‡‘#GòüóϳÇ{´Í¯$IÊ‹H Â[ÏSk¥zpBÈ9Wþ~âĉì½÷ÞˆGqÓ§OgÉ’%<÷Üs|ík_cÉ’%<ýôÓì·ß~嘶ŽÁPãzÞyç±xñbŒ1œyæ™eCëy)èñFƒ &pÓM7¡µæüóÏçW¿úçž{.===ms¼õ³Šyðþ÷¿Ÿ÷¿ÿýLœ8‘SN9…+®¸‚¥K—rÖYguVûèD'þª"¬Uã3É9æî;—îînî}à~;l>#G$ËecíÛåbËz‹ÅòØ ±xùâÀ€K¦rê¾Æ±»KWÒEŸ]Ïñ‹Žçž÷ *8`m€Tu÷V-k…WS ®x^$›»¬•¡Ò_aÀþRÛMÅéL*iéRV'Cûe¨fkZIPÖ†W‹ ¢SxL™ÃPxRc° ¤.ô#¡Ò^ñ&ô««ànE‘y0JHO’’D•g1T±CuÝxEn5I ÚE ¹–¼³ãÛ[pÖc½`ms¢j ÊhÐ1Ñù°ý5¨g çu´a ïÔÅ÷’2$©Æ*æZº{Ñ0ºµ ky.dΗÀ¿ .„^ý Ch‡AE¿‚ÒQ”L+tS§-Rö°Cl=÷¼'H_Xª%‰ AíÞû“±@+W*!àTÁ+“Piv>0 u¥H$ÚEu%¤J“šTQ yÁcb0*ô†{ÑXë…ÄZœv¸$C£ƒ­[¢q©ÄÖE³é¼˜¡?XºEë;‘¨ÊïñÖæ‚U8A‰ŒR «ã#Âë0.Ž¢¢™Ç «cBDÚ+»C^v²Ölíï m%ƒSlÃQâ‡ø÷›óþWà^£6’Ÿ&Œ1Ü{ÏÝ<üÐ;v,“§LÃ=MDí¾çžÜ~ë-|ÿ¢ï†Þב#™9k·Üt ÷;º»»y×{Žæá‡,oØ===ì9s&ßýö(à°¿y£Fbê´i|÷[ µæØ¿ûó9„ï};R½ãó¨V«C[ÚKH ä.‚ïþ¾h2ÚvÝz2­†ãW^y%G}4×_}[z½^gþüù¥èW¥R)…ͬµÁÒ-˘?>¿þõ¯¹êª«pΑç9FƒJ¥Rî,ËJÐ]¾¢ïx0xmýw¥Rá€`ë­·æÚk¯åÆol<x*ö·««‹vØm·Ý–éÓ§sðÁ·ë¢E‹8ï¼óèííåÎ;ïÄŒhFµZ-·Wô»·&¬µh­©Õjtuu¡µfÏ=÷äàƒfÕªUœtÒIÌ›7ï}I¥.â`°7øÁ^Ðb1bÄæÍ›Ç¾ûîËá‡N–ee"¡u\¬µdYF¥RaΜ9åûï¸ãÒ4eÿý÷gÚ´i,Z´ˆ+®¸¢-1R€çb\½÷%(?î¸ãøÙÏ~Fš¦l¿ýörÈ!Xk9è ƒ¸é¦›8è ƒØwß}9äCÈóœÑ£GóÏÿüÏ|âŸ`‹-¶ Z­’ç9iš’¦)Y–‘eY[R¤^¯—¯%IRŽA1ßò<Ç9G½^§Z­¢µ.ÇwýúõwÜq\ýõü×ýG}t9g'L˜À„ € ÔWl[DHÓáÎ;ïäÆo䳟ý,]]] ”}éÆ˜rnuww—çªu^ýçþ'Ç{,7ÜpÓ¦Mc¿ýö#Ë2fÍš5ì"ðþûïçšk®ásŸûY–ÑÕÕÅ]wÝÅÂ… 9çœsJ ~¥Ré¬ú;щNüU„%¶Ìêf«õô=f0q×ÝP•nú­”µäÐ9üb¬aeHUJšTá•pôä÷pÒŒ“°b9ìÖÃybà ¼öää¡¥™&QÍ‘óÿç–,ã´ú<]]ÕØ~üêG²©eî‹Õ×E©iÕ¥4kCmTa¥ ½çUʪ«àËJ¡* ®‚šSÄGM¥ê¢­] `»D "D¯sƒò£4Î@ê >SxeȽ&sªá]UCU'H… °’X)lÚ5U£&` Ì‚@\}\ÄÚ û)e+ó*ÒéC¹á` S4²ØsïÎ{³‚³® žß‰ò“„о2$:ìŸýóHºs.ÐÒó,zFµC-‚CG˵ģӰŸVÂþÖ~‚IEŠŠ‹JAd«B€Øo( ¤Ó‚÷Bh(°nÑKÝ"Å€Q¡*]*”Ç9á$¨e[§P8Òø·e áœm‚Â9>ˆSc¦£Î€•qM ¯›<ªskè¬`MBÎ%8“*±º_LbeŠÞsq›#ˆÿå™%·`c˜ÊëȾð%Iq6b+ˆGÐ-¬mO³•ÁÓÚæ¢‚ˆÅ‹¹j#×ñ†=ЃS´›'†Wß0vê›ÎÝîºÛd&MÚ¥-}¨¢Î€ˆP©Txïß¾£5o{û;J±Ç‚µóö ĸÀß{öœ¶ ç®»íÆ¤I» I­ïÙf›mØmòdvÞu7º»»ÑÝÍßäøÄ6ö0Ñ Vu‘ÕÖR[»µzmðloIByZßzªUúj M{^wüøñ\ýõÌ™3‡<ϱÖrùå—³çž{–`àÖ[oeÊ”)üüç?ç®»îbòäÉ%è7n't§Ÿ~:Ó§Ogܸq,\¸¥§œr ŸûÜçØj«­øÝï~ÇO<Án»í†Öš­·ÞšžžÆŽ ÀŽ;îÀˆ#èííåÆod¿ýöcÅŠÌŸ?Ÿ¯~õ«\}õÕ%89r$Þ{î¼óNæÌ™Ã¤I“8öØcùô§?Mš¦Ü{ï½mÇZôö€ðÀ,?³HÆT«Uî»ï>öÞ{o¬µ4 þþïÿ¾ü›ë¯¿žSO=c #GŽäž{îÁÿüË¿0uêTÆŽËÂ… 1ÆpÚi§±çž{òÀpî¹ç2aÂ.¾øbvØaÒ4m°Ûa‡˜8q"§žz*;ï¼3iš²|ùrž~úiæÍ›‡ˆpÙe—•"jt_ÿú×¹ãŽ;ØgŸ}X³f ÖZ¾ò•¯pÌ1Çðè£2sæÌ²â~Øa‡ñ§?ý‰9sæpÉ%—ðÑ~´m|Ï>ûl?üpf̘1†)S¦`­å?ø3gÎàøãgÒ¤Ih­¹óÎ;ùóŸÿ\‚Õ«¯¾šqãÆ±ÝvÛaŒá‚ .àÝï~w \?ô¡qÙe—•û±Ï>ûð£ýˆ£Ž:Š#Ž8‚$Ixó›ßÌ‚ ʱš3g_þò—ùú׿ÎüãP¹÷^*• _üâ™:u*½½½ÜsÏ=å|èêê*…äÏóóÏ?ŸvÚ ¥¿úÕ¯1bD[ÒäÞ{ïeöìÙÔj5>ñ‰OpÈ!‡pß}÷•sæôÓOß@™}äÈ‘tww³ýöÛcŒ)ûÖ“$a„ %U¾H ì¸ãŽìµ×^üþ÷¿g·Ýv£R©pï½÷òÈ#på•WrÝu×ALî¶Ûnë¬ú;щN¼áCø\ bh:B+ÑÝMÃCj¢¾—ÅÉá º¢në(¥HMŠÇ£´Âá˜2n2Ÿ˜ýIú³~Žºé(žª=…h!—œÌgh1mLDgo¸4W IDAT?½æ¢rýU|½zåó–ûÚ@‹k®l¸ —˜«‡R´ËªöbZÉ.WƒÄëTsa+°qGc‘ >»Y¸Óf+ßfW¶Ìª&ØŽ¥hñî+Rô˜K<Un3ôà·Ý%Š”×&<£JhDÝt ƒ'‰"Ñc jåHŒÐUMèªhÒŠÁ訞wO~ØÅ¾ÇªVèåy†Í£É¹Ä PQq5A$N™@ÉWå†1X4õÌS·¡ªë"}¼ %R¾OÇn‡¢Âî½D±ñ`Ç¥$ØÀÛ¨heg]©î[zC¼‚jÄ”XT¡—2µ¢DwUêxT¬æ¶ ~̨ßôÐW휴ÌÙ–É“ Ò¢? uŠ"‰€?R¥ý»Ž¯›²f:ÿ5:èDÚ¸Ši££wºR$MšhÒŠÆTªÆ5wãè6žžÔÑS…î.MOWB׈„´¢HZ tLÊH¨èûBèÍ*òÔ3¨×-µš Öm™;…÷!EõÜ ™ud™#³.(ø{…よ‰I …øÀøpÖc]‹'zq# öxïðÞ–×Vm Fk´J@tÙÐz!I¤Ò‹ø˜íR)|·ÞPŠo˦¸ñ´xɇF÷ÖPû]NÔËÃöÒš¥³v F'˜1†É;jŽ9¨Škõ8oIõ…÷7ïC&#(³±ÒR¹Uh* ½ç**ô ÂÀÀ¿ùå/Øcæ›ØmòäP¹„6Ú|ëùÕJqé-OrüüýI´bñ=×ðèmßdõšµî^Ú¼ ^â"Å9þT›ÎîûÎÉ'Ÿ¿ÿýïùìg?Û™èD':ñ \wg‘=)eÞ7>¶Ef=¡Èg{íœð›E÷qðÌ.ºÒæ3nÜ»1ù»c´aT×(ªI50¾ðŒîÍûv?¿|î—ܵòNê¦AÃÔiøÙªŒôO)kÿc%ëVþ©Ü‡ÁÏÏRµ}¨UÝ]€Òž…h)e¹ææ?]eà…Õ<ñ¼åÙ±»–ŽQI{©ÚÈKË^UçûIKjËÚ¸¨Îµª¨7Ñ–DÊî0IE¶) GÙ_Þö·Å‡ÇÞÜ¢‡VZ@{ئ/EŸJ 9- ÙXm¬Iî÷¾X¨K™IÑ>TŠši¨ëZë’ŠoIü”‚ ÄŹ=è*VåRÚ|ÃS­¯I›À^3;Øä§¿¬¼D¶ì`ûïRȳåÿ-÷J)…‹ñsmÇWÎãHv” S gD7G½÷˜È¶qÍÞôØö¶…$1ì¸Ç¡¬ö;?ý—²—w¸ Ê.=#˜9cÏ—Î>ó™ÏtV"¯r¬Y³†ûï¿¥^xá°Ùþ½÷Þû%{©'œp£G~M÷Ãþ0cÆŒÙàu­5Ÿþô§™>}zi¹×‰Nt¢xc†óBî¤éô—V‡Â ‰ÂËq¾¥žõªZÖ]‰MX—¯Cr¡b*epʳfý¾xóhTd&'3 r“ç¿ÖÓíGÄâTóó7§ß|èÂóÆdÜeˆ–ñ€ßŠÔdxH´áÏ2Ìï6õZùF5”:õŸ¯ââ³lË @É”<\iú¶Ó’)(Ìë½oè-€aÃÁÃæ>5éóÅB½¤KNCéhS惼“PA´ÞÓÐä¶5Åþâ[èÞ…*§÷¡B-—› èU«æÊjó Lô`¦YI÷(2hèΪèºTV L¤–‡*¬àÄ¿sþ^9Ð>X¾•té°Žâ ¡ äKH˜žXñ{‰Ì/CÌ©A£ÖšPRþòœ’ÒÑÐŽ¶j§Dh¯Ñ±§=6¢G4°ˆcã©ï­C_º³†\{L^¼ šô™‡Šó$V“$qLcB¥(zz|ν Ôt-Ǽöi6ú5Fª?* ÊüiB% k¥2yF­á©5, ¼µˆs8Ÿà£aÉÑMñÈÀ<ñe…· æ‡¹õ$ö¼F’Gés¯Ú)ó¯-O]^ñmlÐÂ-gs¼0¬¢¨¨AILµaRS ¹ñ¡oÌ­¯â-^µûÁoj{_¼&[2À£Fö²ï>{3{ï7mòA¤c¿öKüãUÈ«“'OæœsÎÙäß͘1ãÿì¿ýÛ¿}Í÷˜cŽòuc 'žx"»îºkgbt¢èÄ440q+ŲUuÄè¶å+Šq᣼§· £ºcC°sxÓÔ‚ÉêëùÌ[>ÙמÉòÚrR“F}+Iõ©%×'–Ìæ¸ÜÒã{øüçàý8k7j3>äòlP¿øP$ÈV÷v”ßè*5yÍξ ¬jˆÃÖm,ØP T…H—i/˜5‘T¤S«h-å‚B{UC©ý’cˆüHá]R4*Ò´Ã;<Å“ç‚NÀ¸„D…¾wïc/¹—²§T³B&Ñ‹½¬xÓjÓúÆËÿ´ @Z)¢ñX “+ð$xQØrc <^ÖŠwá!ïœ'wqáçbòùVp!”ÇIº7U)úøÕË€J2LªhSã$/ih› I•ÀGÇ$Œj¡W·&€‚Âv¬+3nZÇùš„¾t ÎZ9Œ…ÄzÒL“æBZ*iwÒidˆ*Á®õÁk=· k övVá2O–å–nÊŒ±Aßt®«DyþFfP*CDálŽ# *‰©¥Ñ&ˆú–„†÷Uß5Ëp=ûèC/¤Ç›­¼j¶ ü¿Öåô×ëAÈqso岉làPoS/âR”Ýd±ÅÜzŒ‰m0zóFË Á±x#Å‹‘È!sXTn†Lš©ñù/×G±¡®æP¯½Øc~)ÿR>·¯M¼Ô9½©gÑ«1§_β[6óéÄ_eLß)eÊŽé¦ ¾b×l5 í°õz‚ˆ(ü)ŽØííö™ûpÞÑæTê-9¡lZ •(RïX±â/¸¼RC¬¥Ô ‹FdóÖi­ýÝ)åqÖ¿¾½€ªíß7< ØÓd®ÀIªxÑ7z,›4sJŠr°Ï²Îá• ßê µ‰'ìÆŽaÄÁ0´+{”ÑAyñ±Šª1Þ’©¨~à|Ð;“¢G>ôÖžÔ*Ò ‚-YËþĤ|8Iºõ —By1㤂u™`".—¸¯¡z¯¢µšÂñz¬—ÄCælèC7̳…?<è&)¯°µÕ‹w5h÷ˆêÁ3x“žÁL‹Øë} ÔClh‚qçƒJºÏ=‹Ô«É©’R]$AÕIêIëP©*UE’BbTŠkZºY„ø²ÁW>2kÉœ%ËÖÛc5Z’ÔP‘¯ &©`ŒÂ¤ ¢ΧXïÉ­‰å¤lçöawÕ)øˆà£À™Š”U@xÑÍïY´Šñ½†òWëþµ/qgË_XO_]^c#·—s8o #FÁ{øÎÂïðŸ7þ#]f{vï=§3ºwû ÛÇÛ–¥œ4bGª£5^U©Oÿ¿½í6n^x Û˜»˜¿ÿ  ÎÚ k¦\BïŽo&¦éñ5Xÿ?pó—±¶ö8ó?t{ÍœÞæc¾ØÊsîºë.vØavž4‰ó¿úUN>þS\}õU¼õ-³¸äÒKÊ×®¸üræ¸ãÆ£^¯sçw2uê¶Ûn»¶íþð‡?ä¨CßJoo/?öË—/ç­o{sùû‡zˆ¾¾õì·ßþXkùîw¿ËI9©ü}že,X°€u8ߺàNøàGKÛ¹N¼~ñܲ>n]ø$ï>x¦R¥¿Ñàœÿ•oÜûضº/“G~þäqº'ßÀÀ@ÆiÏŒæˆí¶EicfñÂèqËÍ7ò»E·1{Ûû˜?k™­±¼oKêsÑÛ;&ˆs~-,_lùÍݲÅÖ–ùï8’]&M }³ÃÄ·ßÎøñã™6}ú0פcáÂEŒ;–©Ó¦µýnùòåÜs÷Ýô4èêª2göÎlÓâ\ñüóϳháBÞ}ä!m×K':ñZÆúõ+éíCÝYÉ–¢¥˜v½3ãF*”ï箇—3Hˆ« o&UQµŠ¾½øU²Šüh¥Œ íFgPÔ`•*ÉÚ¡…Ñ1&˜éЇí½Á‰#Írr I®È'®\…ž“z‘+w‰­ @—ÕãÖÊõè@µ¤&¤E‡Kš~¼>šf‡t8 :úb;U$Zöiá |ËσvCkV¡ºpkU¯RªIQ—¨ÒŽNãB°SÅ((ZMìBö#Hú–‹ …v_Æ"l³æžÚ`–ÿöƒ`xk²HŠY§[“,q>ÐüµLL 8æÞ‡>û(”'9Ñ·Ü“'–$ST¢ú¡Ž”ñ˜T¨¤šjª0iÕÿ‹„’cÒS8ú½½Æù°÷Úh ŒEKܯD¡µA':ØËҧÑ ww´RÔ°A¼-sH.ˆvx ã4upÐ ó ÖeXgq6¨Â‡¾tØ,: Uü}¼Þ”ðzTlåe$7HÄ •  ª]µè °ÿÏ ôx÷¨o {Ä»ØÂOÜûaó O­È¤ñoa܈eœ|Ãש¹µLV[Ã;E{ÊèóQÐ!u‚¨EÂ@¿âÏæ¼i[¨&±¤…Xï7~ 7Ý|3»îº+;Oš4äÃÍKû=´H¨;k¹í¶Û˜>}úà|ÐCtÈEkñaHv ÈÄ9‘ÎMäÅœ¶‘YÑU>ùæO3&BÍÀ¤qÈýœzÓ7Ðë{§F¯šÈüˆ‹W¥4J™0§UÊÊUžÅÏZÞ<µŽs¹`®êÈï”M<×7á¢rã71qâD¦L™²Áïî¾ûnf̘ÁŽ;îÈÊ•+¸ù¦›9æØcÛæª ¹þëD'^ûL±Í3+Î*êYxÆ8'¥+“÷‚u ç¶Rì0ÞÓÈ_IŠûK½Ú„ºš°HW¯4iÛZ5ÄÔÓ-P?TùÂC/Ñ`Mbtè­A¼"WáF’£ jEn1j ÒæCï‡àCߘ6T™/®Mѱ¢‡[ÐÏøR»0EÖBúHU%ÍàÖtüY·äaZ%ÿU¤´«Âr®Ž.4Qyû)UÑ¥­*xé ÉþaŸu«‡¼ å–÷šÜ;Õ Å˰xDµ´„´6 v‰è¨«Ï¥'xŽ«šÑ ]€û‘m ^Ñpºb¬ £¡’òÜ"lJCÒ€$q¤© Šë:ŽS¡ŠïF•ЉâkLÔáG"­ Ña;i“W©ÂÝôÑNT™ô ª™Þ[¬shEï”Aé£jt’`R„éœ"Ë5¹ÊÐ.Påõ*ÍùU´eÚ Å¬R¯ÇST^&U¥ûC×v¢oÀP›ŸsÀÛà">ÜDsÜ>fÕ@xÆw%Ûqá@ÕbZϺ{»q¾žÒ|Xxëɳ`·9ftÙµ3Hïûù„Oâ·zg`[iJý˜M%™/¿ü 8à¶Ùf›ÍΣ)¥ðÞó“+¯dÞ¼y¥_:@?·ß~;‡zè°ÛºâŠ+J‘½¡ðöí·ßÎôéÓéééi¦K ¿¡€sAD8ÎéqÝ[ò±7ŸÀêzHI¾£–ËYÊÜÑ£I*&ˆº*ÝVÔqy˜ÓN„ [¯eäóG¡úwÁíôÏÈèÝË¥ oÉ4mz´?ïŸ}öYžþyfÏžÍO~òÞüæ7·%•œs\{íµ}ôÑq‹X>hßüô§?å°Ã{J':ñòך"Ð?àÙ„—µ&m ÕíT²@Ý1Ðp4¬g8m´ds—œŠ—Ú½Ýò i{ÀE÷ïA‚pƒ!|ó¥Z*ìÒúDñM•w¥ðÊD¤AöL¹ XåÁÊ‹è’"Þ†t]ì'ª¤ù†BA;o=ꯃz7ëh§ÑãùPMZ¹¨æyr¥,Û†>œA?d_xûù–X!”./TúÊA*€nê _•bç±âÀÊ~›Ÿ y‰ CôSÈ ×.ÙÔÛU“ÓP0 ðA­½LJhƒÇ!âðÚ†1Ï yÜ-Í ÃØí1F0Y¨Ða¹B Ð"Þ‘¨„$4Q¤Z£+𠓆jw‚€9q@bÀE’Ä}TÍk¨"@5x ÛD¨˜pÑ*Ôˆ‚…_ÛÊFƒI…jEaI0.Põ•T–2 ±ÚïËÕuç¬õú=:_IR}qêD':ñ׉åÅçåsÖ— ÆtGµ`¯y÷– UvÂù oóÈ~Äg¥#̪¥ëxò÷Kèëé£Õû8²úÖ­ÍÑïx'Ifµ¦ K—.åÇ?þq#žãŽ;Žü_öÞ<^²ªºûþ®½OUݹoÏ#Ý = Í`aV$ $$ Ø¨1Q_3™äɨŸ¼yŒ¯IÌà@ JDE@ƒ±‰4Ð4j353MÏ·§;VÕÙ{½ìsNª[·ûöíf´ŸËí[UçÔö9gÿÖú­ßïê«ùìg?‹÷ž³Î:‹™3gò¾÷½/{íïxS§NeÆ Üpà ٲ+W®ÄÃÎ;¸üò˹îºëàÐCå /`ûöí,_¾œïÿûüýßÿ=¥R‰|àìÙ³‡J¥ÂÔ©S9ï¼óøÌg>À¥—^z@n­8˜°€Ð58õhb˜ÒžT¾}KgwÙùxWÅÅÕ¤ÝÖ³yÖ–çwòŒÙJ[/tõFL‘‡©l~”Ý~>öØOQ4OåÇõLݰa«V­ÂÜ9sèíí¥R©000ÀÖ­[¹ù曳q{É%—0{ölúúú8ï¼ó¸å–[¸õÖ[™2e W\q;vì@U™5k‡rŸùÌg°ÖrõÕW·D+^Ó¨T=år°‹«VÃu5R©â|1Ã"`E©z*Õ½ö ën|2Ž‘EÖ ( VY"&(·'Ê爄R/à‚ÕS%2D*¤6Û^±£&PuCŒÇøý/“Ä[„QÕá&9”L¶¥I 9{Å4P«C¾!gï%£Ië* `7ŸpH…ðR0‚¦|–Æ3Z;_€}ÍotÒ$Í há>[N2_»W*Mœ1’%µ«½nºäÔ ƒR}ÚkŸ˜W)ÔœBSÁ¸0!׎`P,Ž þ&.Ðç¼ËA4¨JVÅz¥{l䈜[Áú~­ +ŠÁ DÞ…1¡5v¹ÖN¿ÁF %"c’ö‹ ¿®h˜ÌÆP151ÂÈZ¤˜Œ«J5´”ì•ÔK/õRW&;¸ƒ@¬ŠÞ†mE+Þ<ácÍ8]jhB’hL®õç_ϬEŠm–b1I¦Çâ ß (½t•F(âp¿÷‚:OyÐ3<ìÙZÂí†)˜ßÝãŸøÄ¸^Ÿ›³Ï>»îý .¸ û÷‚ ø­ßú­ÖzÝ!tM\€jà<ýíÓßÕ*/>ù ÓfM¡£³µhêà‹hü#Jf˜žÒÝe‡ªE<¸ªcØEì鯲ÑÐ}8L'a…Œó8oÞ<~ï÷~¯îµÃ;ŒÃ’ŽßøßhºÜ‡>ô¡0›5¦©ucˆ¯X±‚+V´ÆA+^—¢R©BµDÒ† /½¼Û¿{¿çrÚ;Ú3æ4V÷ÞEâÆ;qÎs'v *Ъǣ:Á2²M#e-( a£BÒs*ÍêÄQ©FXõhDRI@õr£6£&b”R‚ó— ª5 Ä%s²þ“ß§©—¹1´Ÿè Êî’ÝÎJωjx èkŽr+™€fïåk›–ôÉîUͪ>;"9zƒO{ØÒF¼ŒߘºÉ½×4©sðáNSÑ´Z>Ê&aüc>]Ü›­+ø‰ƒŸdÝÕóô¡IRC“x™'çÏkÊUŒO*ש¤bê `!'ë …ÈQ5B Æ Ö$•n*èÆ …(¡»WCˆ$;#!i®&Qd(#Œµx,´Ò~³Ø*hµâ/a Vc h¡Šª Õ(—Òûc0ÁXNÄ`íÝ6^'!¯Ø¸mE+ZñjΠÀû*^}VmÌÀ¹’ݳWݽŽrÿ‹,?a ¿ð¶£æL•âÎÛYZœÄÌ#6R\¤ttÍBl•þ~úÀvowŒ,˜FOÕƒ&mw¾eIØŠW {WÅ¥óë8÷ÉßÃ#U¾wëjlTæœwŸÂüÃf„9Su;Ý#_çèI%–ûí”h뚦Jß¶aÖÞ·›²k§|BÅÄÞ%h=ùýV¹nE+~"ö”bÄðÄÓOqË­·R«Üùÿäœw^Hww7’kÛн<^U NÍYš´ŠÔ¼µópIå/ÀM‹—P :[ÁºÌW/A_“kÒ §à½Áy×à®M]Þœn Úº¦=ܹ›¢j®GÆçÖ"9 ¶D,Q ×´QÜ„m°„ª¿º¤JkŸaÕDxÊd6r5 ¹<êLÝ}}Bƒ =暬sMñ¢YpVo¨$×yiæ•é³…r}¹ÚÈŠÈwÄ7<¯G°“O)äýÝyMÇl­Óš¬@lê÷Mj‰1&Ø”åKõb@“””œ(’X–¥®&9÷Nê•X%ô};0¦Š5‚ÅˆÇØP·‘ÁFhîÆPH€{1‚‚˜Œ±®‡ zW( FCr¨à0¯VÎ{\\¡ê=T[l£€b£(ˆÓùˆ‚õ8k1Æ'j•µþ°6Éðû œ…ý˧¼ã¢Ó[ÑŠ76BOIÒDk¢‡Z÷3íü¿`Ã÷¿L{ÇPçž‘«2µð2“gVpt†ûc%úœ2‡=•%”þuÚÖ“^=­Æ˜V¼rø<Œi§`ÀyZA§4‰Ég}Š¡Ÿ~B±=k#]?³Û·ãæÓn\µL{JE¡0c [*+ð‡½ç õ`Üè­hŨp.”Bö³uÜq×wAàä“OaÕªq÷÷¾Åyïº˜Ž¶ö #îm>i¬1ìëÇsà~—‰¨›Ø”†žÍà³Hµ&­1‰ÊªóJì=®*uÎ…Œwì…Ø‡êb¹â.;†‡cc+ •®Pމã8£4>+±Xk‰¢ðcm”ü;"Š DQkk^È©rd&¼%A5ÛŠ B^6·>kÃ1”pÇãÖÇ­"Îaˆƒ×¸1>|&‡Q—Ø{¥zS§v¯£mL*“ŸP‘O´ÖL1ÃñWI×’Ò%Pß%?±w¸”†e ™š™IÎa¦Ú—þ˜DXNj?¯£†Ÿ}}PSYu£5»IúòÓcAîGløIßÅi°ÿsÞá5N¬ÖC!\á¸ÕÐ#îTˆx,*ÔD8„ªSFª´å¶Ä IDATŽÁr…Á‘ #1ýCUúGªôW鬰g¸BÿPø=\®†¾˜ØQÕ8¦ÕW§i?|pB°ÖdãJ]Œs1ÞUñq•¸\ÆÅ|£ª 6*P,D”JEŠE‹µ„ñçcœKöŸ°$ÇöØç¬&ª;0ƹ”ýüÉ3y²ë¾%ŒÔŠV¼á9húuÖzÐ5j€¹g\FñÝÉœ·,ÄF–­›wqÿ~Æö­{BR^ ëÖlågk¶¡(mP\v<;Îþkܼ(˜°~I‚ZøüàÆÏ~ö3ž|òÉÖHÇ´w5]…Fz»)v0ãÜ1ù]¿ÎäÙÓ@„žÝƒ?z’þCì„Gþg#ϭߊÒÕká¸óØñ¶?G¦4ŒÒ¶Í BT5ÓX¸óÎ;³^ô}ÅM7ÝÔ:ѹ¨V«|ãßÈþ¾õÖ[©T*­ó:ïá±'žâŽï~—‘‘®ø•÷rÊ)§qÒɧ²á¥¸íÖ¯R+ø:áôüQlÑàL±@A>VâjcbªUSÛòDð!³BÁ&‰—ËÁAÞaMš>¸Ç°'8ËtBcUh`´¢­xc‡.Æ;­ëAo¬:v·8vA/?ýÆôͱ<ò?O±{kè3?õÜC)—+<ÿ³2ƒUvn¦w¦áÙ:NšÅ/ÖZÓ}ÐÁûq7nÜÈW¿úÕì~ú‘|„R©t@»¼jÕ*æÌ™Ã¡‡:ægüq¾ýíoS,)‹¬\¹’R©„÷ž›nº‰mÛ¶1cÆ .»ì2Œ1”Ëe¾øÅ/R©TPU.ºè"î¿ÿ~6mÚÄÒ¥K™5kS§NeéÒ¥ô÷÷sçwf½ÄÎ9>ó™Ïd~ðªÊ‡?üa:::ƽOƒƒƒc—/|á \}õÕDQÄüc¦M›ÆâÅ‹÷ë˜=öØcÜ~ûíÙñ¸æšk(‹ÜqÇüñÌœ9€‡zˆR©ÄòåË_C„®!éäCÞ¿nLûšâм°®Ê<ƒ1Ã<üßëq#]]m,:b ƒÃ<½¦Œ-зeˆ¨èÙP*2óm³8v~G¨øÅ`L"à0Çñ–-[xñÅÙ¸q#;wî¬Sƒß×rÍbóæÍ<üðÃuZ o¤èïïçî»ïæ—~é—ö{ÙmÛ¶ñøããœcûöí­âÁë$* ‡ºˆ·~8G/?šÙsæáQN8ííìîäÈcWàL”µ 7>žòBÄ㢸×y^¿Â™ÀzÈ™x‡J »ªo0“ cz‘,#p¼I:®}Ü—¦iМY8«Œ‚H¡xl,îzÙ¾ŽùSMÏÄ©<&Ÿ"Héí™8ºA½ÇyƒINS5u—À!ÉoM&dÖˆ;ɳ«ë³¬M3ùõcRGjØ—ôöë¿4 Pxb£qïg·aц³£Œ¢þËX•âüh txŸ[TjI¤ü¸Ã N+J„â+W‰“^u Õr,b#0Ô¨òØQ©6*ˆ(~È‹÷ÇÄ™~ðew©D’è Œ› úoDPÇ<Ъöú„ו%Åö•aÔñ«9S£Ì.¦¯ôäuÞ·ÌÂØbvÏ𚪸ûqmㆠxàê„ØT•mÛ¶1}út ¨^OŸ>8ŽÙºukvÿŸ5k;vì`Ú´iìØ±ƒI“&!"ìܹ“£>šb±È–-[p.èÛôôôÐÕÕ•}OµZå´ÓNã”SN¡Z­òÅ/~‘•+WrÏ=÷pî¹ç2mÚ4¶mÛÆ]wÝÅÙgŸÍ—¿üe>ô¡e `Ñ¢E|îsŸãâ‹/æ‘G¡¿¿ï=Û¶m£»»»n_ÛÛÛùèG?:*9ÐÛÛËÐÐÕj•Ù³g344„ª&Voš)|§±iÓ&T•®®.zzz(—Ëlܸ‘ÎÎNŽ:ê¨lÓõ§ûž?“&M¢³³³îxœ~úéœ|òÉT«Un½õVÞõ®wQ­Vë@eÇDQôšßæ¼÷Iëçhp®¹1]è˜ËÚo¥¼g »:OfÇÂS™;ð_LßÕO_ŸcÍüOÒîv0ôä-”\åSæÓflöävƒ^÷}óóÞ³iÓ¦lŒNŸ>aöìÙL›6gžy†Í›7300@[[S¦L©[~dd„;vd×Àðð0;vìÈÖ£ªìÚµ‹72cÆ Œ1lÞ¼UeêÔ©´µµÕ­sÇŽŒŒŒ`­eæÌ™ °gÏæÌ™C¹\¦¯¯UeöìÙlÞ¼™ööv&OžÌöíÛ³*uGG½½½lÛ¶©S§Ò××ÇôéÓÙµkCCCc2»Ä;w2<<œ½–ÿΙ3gò¶·½­é¶õ÷÷Óß߀Z1cÆŒ†¼Œfb{÷ß?7n¤T*ÑÙÙɤI“Fm[³í( ìÚµ‹iÓ¦±k×.¦Nš%DÒ$T+öïQä+àŠ†sßñ.4 u¢DF8çü ©zE«§nŸ×Pĸ%Óš‹ýžíš1'™Ì™æ¡ÔŠ—^ña¦Ÿ€ÈP™mádrÖÞáæT'Sk ’¤7,¥ÝzŸˆ¶IèËúÆU7kƒ ·ªÁKB÷IïŠiOr#\NÙÑø¤âžTÐ ý Þ©Áy‡‰#œNà W’~qïC†ÔŠ$ma¿Tê—j #¦šá ª¦ó׈+¥þLŒ]©Ì[¶Õp‰É€”þŸ%t,#¯Ìì« 8ÏöIk=àõDkIØc}·6(çuíM°- “÷Z»A6ÅÝ[¢¤A7_s½*š–ä%MI":”Ô½æBÐfp^ˆ€XV|b“bCϺ×DÞ•(ÍYÁŠG E¼ Õ‚ÇTâl¢î«AÝ=Œhúß‚$Dâ_ÛGÉÚ*jJ‚™‚lòÐÍ’ š&1jÇ¡v;xmMÚj‰‰‡sÊòCÛy[Œ××ÙCUu/ ×çîeš jÖ…‘_GúÛò®-—/{„H­«#½|~Û4÷Ùºû‚Ö¶9·-š»ýæçÓši¸HͦSë·ß׋œàé¨ïn|MZ7ÁÖÆ¤–ÀÎÇCÏ00â'v]ÈþlïÅ},pžþ»4}‡]õ¬ýÎÍl<üƒT‹=ÄOîæ;×ÿª°áÌ_fòüeT+¿Èއndè¨Ë˜Ò5)8a$ëƯâ~óÍ7RI/—ËÜrË-™Úú×¾ö5V®\ÉÚµkÙ¶m"ºuëøÈG>·¾õ->ðpÇwpÑE!"ÜqÇrÈ!ÌŸ?Ÿo~ó›,Z´¡§§‡ã?¾8›$ihŒÁ{Ϻuë˜>}zæ­>}út¦Nʺuë8òÈ#yä‘G2`3oÞ¼:âqÇǃ>ÈêÕ«à]ïz×(ðõàƒâ½çÈ#¤T*qíµ×rÔQGÕôE‹122BÇœx≔Ëe¾þõ¯süñÇgëZ»v-qÓÙÙ™½¾fÍfΜI¥RÉ~?ÿüó¨*ÝÝÝœxâ‰Üpà uÇã„N¨KZ¤ûS(8óÌ3¹çž{°Ö6°-_wr­±EM8oÛSO¼€y»þ’ŸüäI6½õ7i+oåÅÿy­kîg¨R¤ï¢³pZ;Ã/Aÿs«©y ¥„Qç|¸¦ƒðá¾ÇtµZåÁÄZËO<Áûßÿ~^|ñE^xáD„Ÿüä'‹EJ¥ÇsLjËå2«W¯fçΈÕj5±?ü0"Âܹs™={6Û·ogõêÕœuÖY´··óðÃgI—O<1é[¶laíÚµŒŒŒÐÞÞÎ)§œÂêÕ«éïïGDX¸p!¥R‰{ï½—yóæ1sæL¶lÙB[[+V¬à›ßü&“'O¦P(ÐÞÞÎñÇÏ7¾ñ Ž<òHTk-kÖ¬É@ðâÅ‹™:u*k×®ehhˆR©Dww7=ô»wïÆÃé§ŸÎí·ßÎùçŸÏ#<ÂÈÈQ±lÙ2ž~úi6oÞLOO…B#Ž8¢Ž#"<þøãÄqœ]Ƙì:¸ùæ›9æ˜c²k÷¹çžãå—_ÆZË’%Kؼy3}}}‹EN>ùd¾ýíogçè†nà7ó7³{B+Æÿ(ªz <Éh)àŒà<8õhœh2ã±íßDfùwiþw‚hÓån‚ª™ýIþ)ïQR3#K…ç7SrFb£Ë VÀ{Ièí¾®NjÚ{xÁ'Âncs©“pËÚ–%hFÀZ‚ÒvdcˆÿU+P%Qôm§Ûí}BË7ÅÄ'4ê\"g‹¦Z«yd>âMO¡4Š5ÃpÉ<Ûu4-¼IyQÆÿ2ûÒ T Fw›§Bl5uIgàÍ$ÇÓIjSz|£e4ð”H>ÎW^_ò'Ë׿Þppµæ$ŽBâÄ$º&y°:Ö+¢*êQBÃt5ë\6±V k"Š¥RMÅ“(O&‰# ¢Œù<ŒJȤÅóš Â+7÷~E!úôUaÅ’.:©§Î_ݹëèKV€eà6,§€½ñs9¡Í:'&ëÈ÷œ5æFp¯¹móu!õëÕÜ—û†û‡k{´–LÝgr¡øçׯM^óZË"hN›1Yò¶ñ1ÜÛiYqX=3ÀPù•W<÷Þ㽯ï;oë U¸{ÉñÌz<ìaf§0mÁûyrÏv6 uÐÝ;“Ó—v3³g/.;–þᘙÝQvŽ4IFªS(Œã>Óì‹EV¬XÁ£>Š÷ž“N:)Ïüà³Ê{ ¬Ÿyæ-ZĪU«8å”Srºh¾ç=ï஻lcxä‘Gxùå—1ÆpÎ9ç0444æ¶žqÆÙ6=ýôÓˆsæÌ©ûÌ 'œÀg?ûÙ¦öq"B¡PȪÑ"Boo/]t·ß~;Çw3gÎäßþíß8å”S2  "XkëÖÇAcèÉ'ŸdÖ¬Yˆ]tÆî»ï>Œ1üà?àãÿ8"½÷ÞË–-[ˆ¢(;ßýîwÙ¶m[@Ï'VÛ __÷8Åy7ªrîúÐÓ¿gõ«l;ÂÓ9\f~ÏB Ýã±;&±µgs&9óˆ G]‹».¦;f÷²åÓ©@/•J¼ç=ïá™gžaòäÉÙ±•\ké¹çžKww7O>ù$?þxÐظq#—]vÏ=÷\ð7Æp÷ÝwsÕUWq衇rÑE%IpGµZEDX½z5Ë–-ËúO<Áüùó9âˆ#X¿~=ªÊ»ßýnT•Ï}îsœwÞy,_¾œÓO?=»ëÖ­ã©§žBD¸à‚ hkkcíÚµ<óÌ3cèèè`ÅŠ<ôÐC<÷ÜsL›68޹ï¾û8æ˜cxöÙg¹òÊ+iooçÙgŸeÍš5üê¯þ*3fÌ`Ïž=cX·n‹-bñâÅìÞ½›;3fpúé§³páBvìØÁ÷¾÷½Qm*ùëûñ) <øàƒ<ÿüóX?î¸ã²û^ÇŒŒŒ°jÕ*–,YBE¼óïDUY²d O=õ}}}œyæ™-p>0F˜=vŽà䜅Xƒ[—ú0[ŸÖaÅ`ì  Ö)21¢p p×oˆÑñOÊkUóʾ«Qn2‹ðZm–ð9%özà›š“Õèɾ6¹ PÐÅØŒ*Ÿ*Æ§Êæš›™¥Õøô¢1¢Xõˆ @Þšà7m#CÁZŠÆ ÅêX±Ad+‰ •”¢”+Õä=¾rµl%ßÇl²ÙSM]¾Y•_Fñ(³Ãš€Y4ô'§&õ²—…ä’#Z—9@4!´Ÿ窉„¾ä@W®ª[—“¨ê:æè¬qöF‰—&K5?(õÊñ{×—æÙ/%ñ$W¼†^t/†‚D¨Ñ?‹IØ,ÎÆUÁ—h=k ï‚G£1†¶¶öDý˜ îî<ês/ß°™©"Š›ñh¨>d•µT·¡®÷zé©’\Šrbµ|UX0³H©Ðzè½à|ÌËhï/ï{}ãY—NÜhRõà,7îmç²ñ ÕJ…áÁ!âjç+‰Pš1KmtttÖž# ËNî´#óªtÃ$©±zÞÎS=¯ft–ÂDjòtýÒß2²±BO¡ƒî6‹˜Óc‰»Lf¹™#‚Hæ¸&wf4ÆpÈ!‡ððÃÇ1§žzê¨*nþ~ºyóf¦OŸÎš5k8ùä“GM²óëϯ#¥ËwÜqˆH¶ŽÆ{pþï´:·jÕ*vìØÁܹsë>ûï|‡ /¼ÿøÿà½ï}ï(ðvì±ÇÖìÆç‚÷~¯ ÁÃ×¾ö5Î8ã ¢(bÍš5Ù²ÛÝLkhoÇ£ÙñÉ?¯^o7:}Í9Z{:µÁ¥K§ª¾‚ôØó¡p,ñp‘ÉíEÚ †ÈÀüÉ^mæJ” (FB"B¼ïQýòË/óì³Ïòö·¿(ŠÆO£u FŸ§¾¾>Ö¬YÃÛÞö6¼÷<ÿüó£Æä7ÞÈù矈dôðfófs×t¬fö57iuÔQÙkK–,É*êQÑÑÑÁ¢E‹¸õÖ[©V«\yå•\uÕU™^Ã¥—^Z—°hü¾±ŽÏXûÐxüÒm[»v-§vƒƒƒÜwß}¨*‹/ÎZ4f̘ÁÆy饗x÷»ßÝš@L`žøØ‹;XqøT*ՆІ)zò÷H5fã–2Ó'صK ëu…f8YG·éîœ<“†®"Cù¼¶MÀgà&ËZ«~ÕêutŠA¼ÖÔ¬Ò,¿Ô²š|§16¡ŠkÈ„hr÷«›¶HÒ‡¶ÜÁ¨¥T÷H0b)XCÁl!(³{(ØHì&~z©«äIœ®Q óÛÒüZ/i—Ov4+5%ëHDÅdŒõåØŠ£ÖœÿÌkªšßä·Ž>žáµFH®¹ÑŸ/ü~Ÿ ½&>°¯†å½¨œ«6TÎuô2iµß§úþ‚,*¡-CÔfסUCä¡CÁ(±q5ÿÕÖX¡ A-–8©æKœé1hâC’À¤UCÞÆÒpsmE+ZQ‹‘¡!úw]˜3§‹žî"…(¢\‰éëd㦠Ò3©—b[iô]áU¼®ÔÇ™gtcõ<3ùê:t:Pˆ12w:³g×(ìUŸ> ¤n}JbðáÇ'RqÍ5×pã7rÉ%—d•åöövæÌ™ÃK/½”õ¡S,36ï=œzê©<û쳜zê©,X°€/ùËüÚ¯ý?øÁšÒÆÉ}www]Ÿë[ßúVîºë.^|ñE¦OŸÎÖ­[Ùµkçž{.###uë* g`û`þüù,Z´ˆÞÞ^¾úÕ¯fÕÐôûÒu£ªâu“Ô(¢R©022’}GCCCtvvf4iU¥½½¡¡¡¬rªªttt044”õ£•äÈœô;Ëå2÷Þ{/W\q·ÝvÃÃàR©dÛÕÞÞþat—õ™§•t×l<ûZ‡\dÂxuq܇p´Ö¦±ÏfÑõ­ ögqßû˜âî»ïæ’K.!Žã¦nPÃÃà â8¦X,Öÿ(Š(—ËÙµà½Ç9GwwwðaÏ©]—ËeŠÅ"ÃÃÃÁg:ahä£X,âœcxx8[?µP4;w wpp0Û–ÆõGQDWWÝÝÝ ó½ï}K/½Uå‚ .àæ›oÆZKgg'guV2}±X$Žc†‡‡)—Ë´µµ5M2ím¼fì F]„J¥B±X¥‘%K–ðÒK/q 'ìõs­;föD|÷Á—ؾ»ÂpÅQM„NjF›áw¡hY8½ƒÓ—w°fmyÌkiêû÷$•zÂó>!”ŒÕÇm‚T€ <;“÷1ÏËF×Z‡ÇÎ|6PÝòh¨üjFÝÓÌ`Þçâ´³åU­ áánb(`D‰Ä1.c06ah°5 h‡¤GÁ/÷äDÖæTÁ÷eu!õÀXRÕyšfuò¯§}Ãu‚zÒLÕZê÷ÞøÑÃô€QžÁQ×V¡£:¾ëËHc«€i.uå÷u²÷e¼W×(•¿ô0ú&@>×÷®&ûL`d§ƒ¾ãà°î[CÈ%7—¸×kN1ñJÅLÀýX#¨z IF\‚º—ðÕNkÛc‘dœJÓê\}e£þ<¿^)…­hE+rñáavïdæ”6–,šJwW½ºö¼Ù=Ì›ÓÃOo§og=½Sh+µÕ’â¯rø¤_W›€óf=éI'q°§›7©P¦@ÆgtÅŽc»:;;¹à‚ ¸þúë³{ßUW]•õà¦"Zíííœþù\wÝuXkÙ½{7"Bgg'½½½Ù„Ú´iˆ“&M¢­­Ù³ggëííí­SAïììlZ­>÷Üs¹í¶Ûؾ};Ó§OϨÄwÞy';wîDU9úè£yË[ÞÂ׿þuº»»¹çž{˜3gNFinoo϶+½¯wuuqã7fó©Ë.»ŒÙ³g0yòdŠÅ""¬Y³8ꨣXµj7ÜpCöZww7ÖZ®¾új®¿þú,Y±páBV®\Éu×]ÇŒ3˜;w.ííí¬\¹’k¯½6ëe_¸paö}éwæGWW<ðO=õÅb‘«®º €iÓ¦ñýï}½oyË[øáÈO~òÚÛÛ¹âŠ+^ xžŒiÄ”’M¾`gï'}å‰t –PJ{ÍRÀÆô¾ÃCÇÜtÓM¨*—^z)³gϦ­­ÞÞ^œsÜ~ûí,X°€sÎ9§î|üñÙµ0eʦOŸÎòå˹þúë1Æ0mÚ4fΜÉÒ¥K¹öÚk¹ä’K²ñ‚ë<ˆ>餓¸÷Þ{yàèêêâ²Ë.c÷îÝ|å+_¡P(°råJ^zé%zzz²–ŽŽŽìÚ¸õÖ[?üpN?ýô¬—‚îÂÿ÷sà 7dcá±ÇcÕªUXkY¹r%›6mâÛßþ6"Âå—_žíÇ)§œÂ÷¾÷=V­ZEOO—^z)«W¯ÎÆdE™Dz Íš5‹ÎÎN¼÷Ìœ9“[o½UeÙ²ey䑬_¿>Û¶O<‘üàÜxãÌ;—I“&Õ%%Êår&ÆØŠ‰Uq:lÌ;ŽêÛAl` ˆ‰‚vƒ3“œ—jeh¯ZÞÿO»Ç}’ÊòÄ€R=µ¸Ž©ÁøFrÆÔ(`^5T½ ”u‘°ÃµLhÂWU\’av:Fl¢/fŒ.xÉoa#µ¢y"´C¾W»þÇ X”‚@!ˆ0…ˆÈ0‘ Æâ]  T*T*U*Õç| +%>ëA5»Æð ÍÞ¥dò¼É{b•*ï…5¹7if=†‘LÈ.,j2ÊAÚ­ a¬>bɉ 5™æÈ¦ "Kû3ò‚Y@y€žŠ‘Õ‚ê¾O*辆ˆUsÄvÈädt¶#M äÚÆêsÏÎM.)¢¹L®ÖD°…º6M¶E3¥Àðy“^~âÁ»D¨0ZÆi$‚¨¯SR— ÂnÉ(ñaR›ˆÂ%^Â$¿S&‡æþJ˜Äº´*/cÐjuTÆú MÈÓÛA¸+JÏŽM2)ÂöZ–/î`΂.î}¤¯9(ïáâS'qâÒŽÖƒìU«*5I~i³N6ëA×&Œµf=èÍ~×?;uL¹Ñ½àõ}Ûu"qŒÝƒîutÏ}ýºG÷Áç·et¿~½H\ú]qìØÙ×Go§pÔ[fÒÑ&ÄCeÇÝ«7ñîÓçeûÙ?Pæ'mfç LêBT°™u§î{¼Ÿ]ƒñ„JV„?ýÕYDûè ©Vø‡7pÕ߆¼0h½4ç Pi)Úܵ¡¿×k ät(̎ዟÿ¢®í¬üÕ_âØ£ T*î×þ½üòˬ^½š‹/¾8{m``€Ÿþô§ˆœuÖY­žÑŸÓxöÙ-|ó?Èy—žm“G%\3¦HœûÜσsß$Y5ÙCw…ú§¿áð哸òW.â°…ó‰"û¦?Î_øÂ¸êª«ØöðõO<ñ6l¨K”´büÑ¿g{Ö) CÇXD´M„1an„ÈîªV†ùÊöñÄsž¡­;Y¿Å±iÚR$y ïW]j Þû—VH—nð¥n,Jur=Ýéo­ÝY‚òº& \ˆ"ƒ""S£DZùb÷. 5ûQÿOlÎj ÙóägAù}Ë¡ù´/]4í$V‚Ø|QB••H@mh4pšîZµÜ`ðFP I$Â'Ôzï!–ÔZ#üV“€4‘4s“ô˧m hMÅÇ3¯jc’ÏK¿uŠ }þ£ÎZnæ—Qð{.«ùIM¡(ÂKƒb»ÔæüÌ4¯+XßBàsöyßòtýyz{CV"«ÛK½^€ŽÞ7êÆ¾f“b5Új3éZ=^’ÿ´–,HŽ»šÚ¶zU<Q—ŒƒšÄ3]ëÉ‘Q|b;è2rŒaœX©)Ë«j& —Wt6NqI ®u$w,R<]+´ IDAT9Éå6T8(œr9À…ó£WúèÏøÞ@D‹ÿsšX—æ ƒ7AÁ€rµ¾Ê‚ù5ppÙŸþˆ®ÝÊWþä.<%ô&wu–8lÁÖ>¶•òHcÚ±Ñþ]Gc^_ûq‘«w™ÈUz]z©%5òÿÎìØj)[\.’yj^Î×Þ ÷G= }›2e 'žxb}â9€X±bE œÿœGj³¦¹‚Hš,ÒÜß阮&óÚ<ÛÃkmì{ê\îµÈ0nÿò7Sœ}öÙ¯ K½W*æÎ;Êê®|5’•5}4ºœì=^ÕÑ&ÍJ«¢5˜¡ÍÓ"š¨®úšX\B»-DQ¡@±(I_à  q%Ð~œÓݬjéðûœÊk“)¿dÚi¹»eJ éÈP‰xA±‘ UȨÚ ª‚HDR,ÇF‚X“ðûƒh[z Î{^2ŠR-‘ލU´ ±„¾;c$&© k…ù Vó tæJÅÇaš¢9°@¹É%]r“¥1¬Â÷°,¶ÇàF êî:Š–ž{ErÀ¶®_ö²%cõäSayÄî/ßt‘û>ɲ-dI™Ú¹H¬”Ä€$6%ªó>I²H"FhU‰"Mds ˜ù £, 0ZÂÁ'Õþ4¯!˜\©¶.%œW“h¬Ï츑Q ¸Ž•‰úeßÔpNòíÚ°uûötßýcßá¢E¡9ð~þï>ÔÇß|õE"+Üö©åt¶M¼òñÀ{øÍ^Ïg})'þÚô¬9ŸK2¾n'Ï5ºó› œ+à«U::"¦Lªù ¿ícwóü¦Aþî£oå½ö#îü»³8}yðñîê*ÒÝÑ_®PÔÆKxÖÈdh?3`Jxh:ŒPǬI§Ñ—k£­ ŒŠÑ2žÂËeç(Š ctc ½½}”[GGG}tk&ÜŠdìõPÙÑ1J8µ6ɸޟ1­M®zQx‚ H'ü|%…RÏñ7ktww·zÏ_gñªtÉ„æeŒÇëøúrS«°@m°/‹ Qd‰"K!"çëª8“Ò‰ë+çAi<óUÁ\ Rjô>Éû;ç&õé6iŽ 9Ž`ðDõÄpŽ()É žH•H=…¢ •nBÏ‚±K ¾ç=¢c/k< ±*6¹!ç)“‚"Ög=ðŠÏ·%gg¬1DÖ¾È@;5 ·sНxT«Ù®×ŒÃ4Kª¨ÆÔÕ$zu/jû:÷:íïÜfBì)1]÷¦$¯£à\óõN$I ûX^÷ò¹d¬7cÕëX‰ÁHޝ Ç$9ŸŠ½åRS=SMÔo“ê&}éµ±’Øû¥íÆd|ØØk¢“à0 õ]4¡ñ&Jòé~ø4Å“3H'Ç)+ߌ¿¾þüŽáͨ*M'y—FÙÝé8Î…À˜X¼ÿÿ}Œç6Ð×_¥½hi/ ·üñQÌ™2qzÝS†øÐß?ÉŸ¿ïP.;s&ÅT”.{žÙ4ÂHÙ½&¯Ø+çþÁZV,éáo¯YôLŠ÷ÆŸ»íE®»{wýå[™Ò½©˜^¡«`)B¢gåßü˜ç7 ñ“ë.…MÛ‡ù•?ùoÖ^{Ó&1ÖR,F¸Aw^ƒŠÔÈÈÿòÏ×»ÀWšÆR›¢xç,1œ¼zª1óæwЉg+ZqðÂaýúgyê©§‰“q\†’ñTï¼?Ð1žóÞC¡`èîî$²´ŒC[ÑŠ×@Ÿè¥(Œ£„ {yCl¯);;© +ç UT¤Ó‡c%V*qh¹õjÝ\oQÖ¬w8“»ÎPi=[Uj½yÔƒÑ,„J¢ ½Q1ëYS…8@¼ D‘`­ ½öÔMÚó[­ÆTâ*VlRMOG^ÁÇÕ:T“,%h‡ “HP_HÄí|rc‡¶¢¡Tˆho/ÐV"€˜÷àbˆg¤ì‰¥ŒREL„¤buª^‰cœ¦Õ~Aˆ’³î¶jª)®cŒi2ñ­×-úgEÝlHG¨T¢]ÈdÇÍ*¥–g¦IÒio%‘<¸S0®Éôã˜ê硵d ¬õ_+M¶ŸQ¶ ’]ðŒfÚY*&ÕqÐZ»‰W¥TŠèl/a$œ=¯®+§¸Øaðx\ y¦ýûù‚³ ãÅ;%v.ñN×pMˆIÚ+Âwy.¡ úl¢[SÑO)š¤ôêý 4Ÿ,kÒ2ØÉÂÑç£î®!cœññpÜ÷#¾òÉeìè¯rô‡äêwÎæ“—Π{V?ÑŸ]¿ð–¼W|²ŸEsÚÙ±§ÊÒC:²×Òm>iYªPuÊó[Fp^q^ùñc{²ï\±´›ö¢a`ıöélçOY6©®BýðÓý xÖ½0˜¹UÜÿø|"%|Ì¢.ºÛë«ó>7ÀÀ`¸'ÍšZdÑìv}v€rÕsÔ‚.6î(³xN;kŸ``ÈeûxÄüÎl›OXÚ͆íežß2ÂñK{øë«ÑÛe¯xx^þ:«yÓJ¬~²Ÿr%ÜÏmgöäbMÒÀ3/°©¯ @OgÄчv%¶–P•‡žÚÄ:5Ødžxxb`ÃÖ2/n„¶¢á¸Åݰî…AvĨÂôIœW*UÏÃëw3cr‰cëâ¹ÍÃlÙY £ÝrÔ‚®qy ¿Þ¢¦âK¿_½çþÏ<ÆwþîLþøýÁê'vµ.¥êÄ 'šg®)Š øàiüèÖ°aã–:{¯Ñ©YÙË~§|bÉn£ aÞÑÙÙÍKcÊäLÔ¢¢·âàÆ¬Y=\vå V?ôS¶÷í ‰/™À˜öuJ´M,u“–Ac˜Ü;•e‡FgWÖ¶z+ZñÚt™Hý³q’ë÷ãÓc¼š,s*<Ϋ&0xI—Éí{Ö†!‰ÕbnÝpdŒ4ÐÞÙ ’µ„}‘W­^ Éužß¼j¬Ü¿nÖßøÑ6~ùôé\rú ~ùÓ?ã+&óÄKC|ûÓGóå»6ò½‡wòî“§qã÷·ð¾wÌâÜã§`DxrÃ0{†Sº ÷?¶ á;îàmGOâ·y>ñÏó賃œ}l/ÎÃIGôdª£w=¼ƒßý·§¹äŒlê«$Iø÷»6ñ™[_âýï˜ÍÝɇtð©÷FG©HÖ=7Ȇíe¶ï®òè³üóÇ—ò_z–§^â>U¸ð¤i|üóOñî“§±}O•¯þ×V¾ò{Ëø«ÿx‘˜5Ÿ?o®ÚΧoxŽþáx.ÿëÇ8cy/GÚÉ_ÝôO|ù(W=ïùÓŸðï_Ä!Ó‹üþ—žå²3gðÔ†aT•¿ýàbfô¡®'_âÿ²ž£tÒÓñíoçÿ~h1§Ù‹¢ô;Þû×ë8fQ§ÙËMÿµ…^4œ;‡Í;Êüøñ=¨*7ÿp+þþELŸTàw¿°ž·/ŸLG›eÑœŽpO7ÂCëû™3µÂ[wñÒ¶}¶ŸJ¬Üùàv>uå"NYÖ‹so,n U©TbŠÅ0ø‡¯?Éïþó#œÿ sø_ôC¾öéÓ™3­ï=ÕØQ­úQôðŠý¸ E„CÎgROÃÃ#凌úèÞ¾ÏZKwW'S§öb[½â­8ÈQ(Y~ÄRæÍžE¹\™x•|?Æt¡P wR7½“º[n+­hÅkÐt²Éaê•gq‰ Y €"M*åIuÚÊZªJÙTù„—Ñ@Ls½¬Úø)i€P’0ä“ê€H”ÑÂ5U O¬‡Jì‰€Ø Æ¦B[ MÉWñ±K*—5ð-Àµ6±†kË@Œ IRUˆLÒ³X%J&‘ U£àb‡x²^9‹`£àYˆ:¨T ”«ŽJÅ3’lOê§)bpØDíÓ£êÐD²ÎX+Ù»„rßp¼R¡35 +£ŽQÕÌZWUØ1dU$§š¾?2ué#cÁWоÑ5soc«¾j%R»¾B…+uA…JìŒ1Æ' ˆ@¥O[?¢(ªU–e´Ó}”‚%Òp/ Éu,¸¬s˜b#¡â&~ª9ÿÖ|žN¥I™ WØ3ÿr€÷²W —RUÖoþ˱òowlä—O›N!¦O*ðþw.¢³Íò¥ïlbFo‘'_¢\õüãmxçŠÉ¨*4Y“‹Tã@Q÷N©x®½k3+Ï›Ãõ÷laÉœvžzy˜ÿ³ò°Ðþ’Ä-÷me¸ìùß—/àþu{¸uÕ6Dà_ïØˆsF¿{0æú{¶ðÉ_YPÐ7î(óÔ†!Fë^dÍú~ V( g;™EsÚùü·^fgÌïÿÊ{qˆ[~¸ "¡`ú¬Bvš¿òöܽf'¿õ/ëñ g,ïå—N›ÆÇ?¿Uø£÷.äÛ?îcåÿ}œO\\aFoxô™~öÜ ½¥B•M;ÊÜù`§/É "+œ|Ä$þð½ ¸ç‘|ñ»¹æ¼9ìv<½qP†ÊžoÞ¿e‡tðÒÖ2/náémü¯Ó¦ó—7=Wå#¿8)ÝT•1Ïl ¬€]ý1÷¬ÙÁiGöâÞH³EìÞ³mû sçLâSÿþSþòúuÜö7gpò²é\ù÷sÁïþ€»>s6Ý–Á ýƒT^;%äI=]ôtumÍ”Xö~O69g—V´â`†5†©S&3erï«?¦[ §V´âÐæä8U7ª¨Ã-ÅL!õ×D˜Ç£¯øtº†$‡ç¥.! £I+ÎÞ)X.ô[ªþi‰^]œØÄ=N¯ Þfj“ˆv † 'zØ•@4.©<&½æ…(ü¶6L<3c:K:ut,Ö€-DÅÒV28gò H™Xc\ì‰Ì1‚ÁPu)À 5O#Bd,‘ šêÊ £!€6/!Áb¨‰Òå×%÷¸h kÇÊ·¨ìûµWuÔ¾¯þ+ëˆÞÒÀ Í$Ô5cn¦×Z¥ª8W 픉­±ØÈ% (1A©~þzÚÔ8 ‘IÔ† BaA"ƒ ÄUEŒ ¢ƒžØy¬M¯åZ]ÇqU6\žoøp^¹ðʬ)E>ÿ±¥üÆ?®gíÓýÙÉ:|^'ç7™r%èOuh'Ÿ~ß¡Ä.$Rú‡â: ­ ÿä§pÃï/ã¯{ŽÍ;ÊôvFüûoÎG>÷/má¹÷o£TÈßoB{K~2h¦tGÉ÷…IÞ”žšª÷ç¾¹½}#·}z9ÛwWùáOwgƒ¥`…w®˜’K¾¥†Z'(RŸÍÇœ©%fO-ò_îD NœÆÌÉÅšÙBÂx2 Iì*¯9o6Kævðé«¥³Í&ǬÙM;¬ã¡õýüο­ç/_ÀñK{¸ÿ±Ÿ€Â5ïšËš§XýäV?ÕˆÐ^ c>íýþ£;ø«¯>Çß|`1ó¦•Ãp@  EŒ-òôó}tu·ñÁ qÅ;rØœ.D„ÿß'Ñ·«L[Iª²yó††=Q›É±¢^Ý0’ÜÄZÑŠ7I˜‰*¶¢­hôƒ‡kUuçÅWL®²êFeE˜ðM,ó¡Þ7$hþº¤}éõLM<¤Þ+W=¨K(x>Óí‚pZ³¬JÀ‘M«é&­RÀëEQFApY¯I48Õ;¼K«ô¡—ÝðÎP*EœPŒ(_(à]•8.ÇïªAA>©49 Ûä}¢ì.Q*ñE+ˆWœ)Ǖлî]ÍÃ7QŽ—¤ÕÜùJ³²_^E’œtÑÆ þk€_#¨Ôýê ætt¾BGYÒ…cç¨:‡EBkDd°V)Ä‚‹ú»OíÉΟfꉜ&î  .F°‘Í$¸µ6À%: Fª!å$éO½Õ“ó*uºö5èÖ˜›Q9€¹Ëë á§V‡AÈqŒ¼ÀÌÞB>0®ý&ûï=D6T¤óï}h7ÿý™·òÇ×=Çã/’ç?MTÀaãŽ2}ýÕl¹™“‹lß]Ű:Z4m¯®kái“»# Ö°qG™m»«Ùy›Ñ[à™1ÛvWØ3×ÏôÚúÒo½…“ÿŸ5 Â?üƦM*`6ö•ÙÑ_¥·;¢P¨-ÜÑfèlbœ6‡Ò$·70³±¯Bì”™“‹‰mJ`òäÛ‰¼WþôÊC©x.ÿ«ŸâUéé÷Ï-;Ë8¯™kc0ÚxcNªkò†ŽžvõmgÝ[Xºx“¦´á@ö’aÖÔ#Ã1/oÚÍË[ñ¦HT,„{E«¢ÜŠV´¢­hÅkÐå ,/Æ$‚cy˜«Öä„»êÀ´HnÒ5Q²½Nlg›92Õ±œµî…tDß• W×ûšˆi™ÌK=í®y™›Œj¬ ïãøx‹SÁ»8€ójõUÀㄈª(ÀEA¤¯ B±P ½-Æû"¨`bO%4úãñL°‡3cÞXC<å²UT—´ 8‡Cƒj½ú à-fÌön©Ó@K¡¤Ž–õjòšf—_}ðÆïÖ&£¿Þ–1ïõ]k:Up =á&´+¸ª'r‚3«©RSþ7 ™Ç°f`ÚŠÉ,ý¬Mu$x­çób’^r—ã´•Ãh¨BúL«QMú}y2$ý…„ú}ØìönpûŸÍGÿi=ÿÇõ” ÂË{éh³œuÜd™hÃ¥‚á¶O/ç·þõ~û_Ÿ”¶¢åO®XÈÙoÌì)¡ÿúö¿X·ÿ¿'ùØ?=µp汓©z>ù¥§³ëå[Ÿ^N)§öþ×8 ¯Ê]û"ðÎSè팸õÏŽâƒÿ$¿ý/Ï€¦Ï?}l)“:Â#æÏc¸ìø«›^àLJíX±´›CfÔèÎôÞ…TbåS_yž=C1V‚–ÈMÿûH>ü¹°~càœãB÷G÷rÄüŽlùS–õPˆj×ú?~t)Ÿø—õüÁ—žEÏl)ËíÌZŸ.éÆ‘ÑŽ®n¶ìØÃðº-ÌžÝMW{± NŽÙÖ7Èö¾!b)ÐÖV¢`,Öš&‰°7™Y|+ZÑŠV´¢™½_ýù=¯ÊQ¨MÜ'´|ª0T)À‚ièÑ9 ›z2ËÄ)@)¥>­ Êþíu’C@:ؑՒ "šULR ‹¸ð Mß$ýÛ$=¹)€²6©D&ÕHcÂq viöJ\©àµŠÑ êd“Æ\Q—ôû à&#EaemD¡ÑÙQ"*ˆ=T 8†GƒÃe†Ë1eç‰âÅbm„Ø‘5`¢P5³€ l‡jµJ¹R%vq°³I¼¼CõÜdàÎ'J¿áü›¬/:;¶9+¼LNs>÷¹áfT\a¢ÐM5ç[þê‚sM¤—ZYò°=°)í%É„ˆ*ª.³È<§Å`3ÿéZÑD¾f['b“¤‘Á&ãÓX‹±bMÖ›Ü=ÕØScâjlc ³Ô$wå5ó`ç&ŒÖjO’5¯µ ‚n©±ÿ°Ö±}óz"l¯eùâæÌïâžGöì•¡á=\|j/¿pxGë©3ÎXót?ç|r-×}rž4ub÷í&ä ïë½ýåí"°}OÌ[?²š_0‡?½òPœ½ÿJb$"µïñ®ARƒœjH®¤4{ç}2ækÛ~§jnÛ ã<ïâ•Ñ^Å) )·O>×ÊP,ͯ[ëÚòïi“e3·’tý¹÷œóTÊU‡‡ĨKZ¤Â>—+1q EŠ%ÚJEŠ¥…( ú)qÊûßÍÎxBW©5Ÿ]1›È¶®›V´¢­hÅ«ý{¶“Tt#›°:£ÌñƘšI\æ+ÿÙÇÏy†¶îdýÇæéK²VÎ7Å]Ò*Zª0-¾þg6™–}IRŽ+9@Î[{?§šß2­­$×§.ù¿³~KâAM±”jÚ‰›Ø`9ŸêLãcň!²Š$ô '  q5™úà‰ºd’샬 vp6¥Š‚:\âj„‰¢Ð·nC…ÜP-àUq#>TÂÅ'z— ÖÔ$eÏÐ/o¬¥P"…Nu µP$©ªÇy‡z_Wü¬ý»îfÝê™½Ž‘+ùùʽ5ù³Ñ5]2@+c}V‚ïyHàÔÆ K¼ÎÅç*™oz6ù÷àÁÅi$´© Ɔ^T.2O8ÿ@FoÏØ#’øù ¿ŒO!RÛ¿±ÆÃ~Ãq³p²ÕÚÏ{,žÓÁ7þt9G-ì<€ìØXæyy@®uŸËüîvËW~os§µQ©jðõZ¿l>”¹p%_윒®Þk8Ö7ðØ0ÆP(èL´)*qŒ«8*>$NM¡@©h°6ˆB‹‘*èX½umµ¢­hE+ÞS÷tʽj=`PAÔÌÓ:íÝ T÷FÿÔf‚pzPÚøŽ•fÕ†¼µŒV¸–¼lZàMÀIÆ€ÏۅăÄ)ƃƒ7ŠSˆ!CÁú±5‚±6PÊ5ïLEÖ,Å(éÃLªîêÎ{¼:œW⪣P²„b$P2T\€š÷ ž˜ÄïÜK’`ˆßÛ„® ÆX ÆB!¯ŠŸ€sçpjC²Aý(úrž ¡H¨ðJ#3Íþ­ÈÁeURLZB²´O `'P"üˆ¶ [C­¿Â4Ñ"‚Š©Uà!´Q¨G½Ç"!£p¨øšV PÇúÔ…¨ Y" ø³ûÌ»]›‚ïZãÃxåÚýMZâ`FO‡åÌcz_çÐøOO!N?ª7cpŒgÁf`[ßÄÃAk Jv(.à‹q`¶xŸ´¦A”X}lHÊÔ¬é~P§d\¬úË6§ŽÙ8ÿØÇužú¹[Óê©oE+ZÑŠVL|¶žÆJ$NÇQ¢ªab­ó`:ÐDÄ(ñ©1ãžæü¢´Ùji7±ó 4{M‰óšØÏuBE,V . VjÖÚ¤úã'x²6²D…ˆ¶’!2E¬ ZÎÅT ß©ÞW« O™@C)-Ôè1T«q°ÕÂ…Þyâ ¨ñcž0ùõà‚`^ì]Rå¯ÓÇÏMÇ3e﫯B^êuxáK>¥!{;R¹Öiœ¡æ“ B^?{M4pˆ=@ŸŒmqŽ8—¸¯GÆ` Š! c0èúÐ{‡O¶k½ ¸å¹©ãky>[ø¼oîIEàB‘(Rœ+æLÝ#¯æøñZ1b7>ê™×ãQ’†Î¶–:ºD˜UÎy4ŽÃg¼¢± â³ÞácÅûТåc{ß =“:8ÿŒÃèÔFG[)£ï·¢­hE+Z±¿È¥)@÷¯ÄÃÓ Ó<é'OÁ…6Q_«õú’õ§¦“cc4™ ÀÉ×ä…·T5i/ohâƒÐçmLýçS°’ðz–AýoÍíOê[-IOƒhÒ“›V±M3b°.¨l[/ˆX FÅ`|8Ɔ>@¡HT4™0˜h Â«Wb¯ûÐñ“P“1†b®TLŒ©jœù¼“èh’@ðè.y_Õ‡INòo—ô:»,bBï~N½î¸ûœvúžoî ^å5Qq¯‰ò¿6Õü¬»ÎîOj î¹ã" ÿ—l¤šÜ(¬uüã m$«˜;©Ñ³ë]lðLFðj’jzÎy·†ˆÅ¢à±DÆ &,ÊqHØ$WJfW¥^PLHZyêé) õÖŸHà}Z\KæƒÝažì÷Ñþ¢-„þê?ìšiŽÛ«q¼W—ŒçÁѤ©[öãî1ž,ÏÞÝto«Ñ}Ü?´‰Ìe½¶i¶KƪBW›%ʲó õÛ™v if­7¾dVCÝÿ K€’Äœ½¨˜]˜é9e¦iÖspв×=ª’Y¸ºäžîU?~Ý]üãÍpHç0ç¼ý82‡¶R‰–P}+V ¾.·«X,R(Z'¨­8ˆ5Z‡Y3Ò`at&K:®YÆó ä*Ú9ðüÿ³wÞáQTûÿœ™ÙÝ$›JHBï¡„& µ,XA¯ ±€ŠQÔ‹%JÑ«^DìʽJ±\öˆ‘Þ[’¾Ù63ç÷Çf7=Ù@Pü9/Ï>lvæÌœ~¾ï9ßRÉ‘»8&Gq5 |² A¯(Ëê¡­„R£$+–JVU^êÊÖÃBTÜœ0CÎóM5PU6-`û§”©Ë2§pÁ“SU1ËœÊùPÔrÅ?Ó4ñ×`¸:#pª)¶âJÐnXÈ›¡K ÃD×iÌ2¡KQt¤ð‚,#Œq âfùÆJ¥²‹Jf²Ü§xå6¬¼˜g; IDAT.L†Hgµþ"ÿ83tYEüý÷ãÊœVí̵Œ&QƒÞ‚¬*âW3YUúhù I{¡7Ðg·* (Š¢úQUQæ“ Þ², ¡S¹rgV²†1)*v¡c±®©1­Íc'Ú® ØM›DÇ”rNO³NA\JHŽuáuû¬Óô?tÖ2×¥ %k^¹$5 ‰n5¬¢Ê$uN]Õ¿W+“¬NÂeÍW[Še^Öý·¬!¬c‡ ®¾?°³Ž×ž®‹_×Y²|=ZÓSi~Œøm Í¢Üü'"-)sè'Ë –ùÍPTa³Ýëtvÿú3Q+6£ Rhݪ™EÒ-4 t]ç£>*“ÇN”U$ Wçåå0a«¡,Xh$‰E«ºø(BrNw?ÑÑM9Ñb‡GHä “yŸ^›ð ê"¥>ëcQC~de!5ý£Ë[]oñ¾y<ßyô}£>XÔÑŸOˆö‰Õ¼ò§¶ïDÔ:Iÿ ¢® »¡IEø x NÔ¸hÛ¢þ WÖo¿\„ž¿-i@æYFÐ+…fFí“Àw#¨±gJÜ.I‘ÍIA‡~ü¼ûgX¾Áƒ¡u«"I·pL0 ƒÝ»w“˜˜HD„ã„oä¼€åË—“™™it ˜õ^µš/+¸\n~Û¿«ÜÔ‚ ,X°`á_¤$??¿ÌÑ\Ã…)u¤) 0¯œUòMÓÄí6)Ö ÐÍ¡ý(Ùµ±rƒNShÓ2 ‡EÒ-#¶Ùl$%µ$;;†üüß‹ ×¶03Œ=!ÿ,X8¶¡&Bvæµ:‰“¦IT”Jž/ŠR¯8Ëæ ¸þGçÿÉ€ø3–Pü¯²6?ž¹Çñ­âÏW»uæNü)»ÿïŸéº”$Dx·uÓ(.+-Ù€Ä(Òü‚J~H¢ð+S71‘„ËÏͺȹ£L^*tI²ìS*)4£8ÐädJÖ/±1°'mZ¥àpØ­F´pL(.VX°@aݺ㣑¥ªàt‚ͯ×Ktt4Š¢âr¹œN'†aRRRÂgx°Ù°6Ÿ,Xh”¯hZ5 ‚Ç(› ãþÁÏ;~go¤â(%]q4Ï &÷5Å[wã@„Qžú„yq”×¹NÈáWé•ÚûUÀÌ_Öx“£žENz¥Fa­<Ä]8$[ÔRa J+jbU:‚h‰õô×°Ò×ÒDcHÕ½"Tl7Æøu´M}$­Ö±UWDÞ¸¬¯}Ão{Q?uô[!j+bý›j¢æ‘ ˜E•#êK[CV O)êm;~ÛÔz]48mµ9EˆšÛ¦Áëc¾¨p]©e®g¾uÏ·¦Ù0eÙàXo¨3Ù`Øs³qßSÄûOË"-¢àØ„ Ãv‚6ç5‘sS–}'%å`v>™¦‚ÇíE)-Ez=døùqÕ¢¢œÎR’Q ŽºÏñaÄM›Â˜1Щ“²ekX±b7Üp‰‰Myï½ÏR2jÔ(rsóxóÍy†M3¬F±`¡19°¬½&›OMð†ò{jÓÔ'ðIê”fDmÌ­6Y¦Šçç‘ìFL¨äM©Gà«-+²v’-‚.{Fà tj£ÉõÐ Q ;«(„Sÿµ’pI\yLï£Ý| ‡ËÆLØ×EÍc'’!DÃO[çõpöÏ„¨ìœ®!éC×eÃH`}{ƒGCîEͳpXmSíº~Û4FÛ‰£HvÛí¸=þã2ì~Qߘ­oÓî˜Ç|-Ó®\{24 s}–päH.¿ý¶Ÿ“Nêþɵ ÿûx1.䜎Яuø"…î7xwñ·LZ}œKÂv¦F¹göšðóÞB2vm¥ðວu£oÿþH£!¯@΃Ľ}jKÎ-Ícp±Ý© ëNt݉ۓÈáœ<6mÙAZ×$%&XÝ ‡:wV8é$•}û øõ×]¤¥´h¡°té!¤49ùd•ÌLƒ˜˜Ý@ KÍÇ‚…F@…¥I«~AÖ,`ý^cOí‰Gs^£`Ô ôõ„6bÚp„.q iCu{´êïǘq|Û®ÁÂx8ïn¤´ÑvÇjáq,×ë%qÅxn@û‰cH{Ô}§‘Ò÷¶9ª÷—³žci»ãVvq‚ôû?ðÝqÝÎI…¶Îd½ÞÐ~¿¯7Art vîŒÏ_Zo!kW¯"±x Ò»%\Ø)Ýð…•ûU?.'¡d› ¥A^òj¹Ï4ÌÐݺŸ¡°fÓ^~YöÙ;V³éÀPâÚ÷§M|`“¡9/ûÄ%ÄÐûÔ|þÀ)»nBI!dlƒB×V²Žâq{¡P-X8QTTÌ_¬fÆ\6mÚL^^~ø±±±lß¾)%o¾9Ÿ¢¢BΦyó–V¥Y°ÐXXˆ²¨W­Òzgm€Y°`Á‚ HÀ¯{ѽ®z…ŸÏGaa>M#ãÐMOiQ½êâOϹ•t ÃÇUVþòórÑÀU"M=®@—~Þ.ü7\«éc?‹þΠp{$Ja32¼[ù×–™ìñÆ™‰ç2.õ>lŠ£9’uÕv[à»øuZÀœi¦ÂÁ±Ãn‡ÔTêÔ96ø8|x799û0 “víÚ±ÿ~„8N6lØ€”’6mÚ’’’BaaáqÌ %†NhÃYÕÔ)ë sbzqhþ€wwY·¡«ÀÄã30DT`¥ªKB¨¨u[S˜ó*QQdP%šòƒÿàõÚ®ÕYEÊšâ›×pT‰«^GÞ¨9TT¥gˆÊ±ÓOT²jûˆ*å©Ú¯ŽsyŽ":Ž ,X¾†½ÌJŠ£¦üBE™~³Â‚¯KƒÅ{?"99Ž#æ!NŠ´Îpäñ›m{ôŸÜ^ß³e{vñÌÀ7iWå½¢m:evö,ÉL)ë¯$ ÂDt´äª«üøýÆq ÛŒ$ _S(ó*ðàA¾ùæ«a,Xh4Ž ZZ-”¬Öd6[>)-ÀîpÔ¸sn×RbmER¸‹•[óØ[Òb»V¿ßœÚÕAZ+6M]h°z—CùF9 ”pR{'··³z§ÍýtLÑ8§{¿î÷³~¿Ÿ^ml´h¢²d‹—Äh…3Òd,þÅÃ9=´OÖxoU)õ‹dÅv/{( 8‚«G±f·Ÿ¦± mšjh x|’;¼ìÌ2PØUAïö6ÒZjDعE3t¶Ô9­‹î­í¬ÜácoŽÉÀT $¬Ú¥Ó!Ya@ªü¬ØécX/m›ªü§]>6йðd‰N•%[½Ì3…|êf€ÄªÇhê¦8½›Ö‰ š"(v›l<`°#K'Á©pj'Íâ/Ù­óí&§t²Ñ³•ŸvûÙ‘Õ¸ŽCZ$(œÙÕÆw[ü.´T-X°`á @Q~ü9EEÅ5“o)éÓ§'½z¦Õ)äkšŠa˜!õïš~kT‚nê!YÄÀÏïaŠŠ<4O‰/sZ~ZXGTUCà##ï0ßelåâ®m±‹¨êŽã(?U¦—R"…uºh¡q`~òòrp»=ØlÚqÝõÃf³Ñ¼ys‡Õ(,4ÒÈ«è&ª’“¸pœ­$Å+D±¼fùíž¡™`óB‰8ü»ˆÂåAÆt«LþMÒ'’Ù7Æ“‘«³t³û/u2eaïüè.¿SÂií‡&¸çB¶fúùðg7Y…F55ê:Ù…&»Ø^d‹Måtj®aW©Í4â Mœ ›kø ɶL‚!ddùÞÕ¢È/‘<ònQ(ï¦øøuxþËRÖíÕyy\¯ÞÏU³òyòš£o¯p³ø/í“nÍe§D°/ǤÈ-éÚB#Ê.h¯ %DÚ]›k–Jöå\Ô7‚Ö‰ æaJˆT8˜o°l›—KúEЫ­ w…6j5 K(ƒ!Cÿ—SO‰”‚HL¾(šùËݼ½ÂH/ê&À•Hk…¿)¹åµ"\IžË¤{Ëu±#”@›Œy¾}9Íâëg6eXoo¯t“W"9µ£Cø ¸š;‰ê›å{EåìZP®P£¸#+E AQªq!BåµÈ¹ ,4(€ÃaçËÏÞÁá¨fƒúëp¹JëTÃ-(,âÝÿ}Äwß/ç£EoÒºes.q»vïeð SA7À„ ¶±]¬Ä£xºDA–¾·YŠÛá*ñrè`>Â.P¢¢£u ÍŸøhW iQ×ЧYT5r^1FºP°ls-’ž’’B¯^½þ0‚îñxؾ}»Õ¿-XhL~N º ‚.«3:R>/¥ù9\8ôLfÏžÍÊ•+¹ë®»(,,Äf³ñþûïsÖYg…î·'»ñÕPrœFZk󗹨Ä@7`ËoþPVLOÂ啜ûp.?lñ°ù7?ƒº:ˆr1Ø“mÚ\ŦA»d•Ø(A¼SÐ!EÅ0aÅv_Úy%&žÁÜïJ),5+•ZØìþ~³—ö2~˜§†öŽ`ÙV_üêEUà©OK¹{x R4þ³¤”—I§f6A³x DØ c3|—Éæßü L l.Y#»ìäºÄ#Ùš©ƒ„[‡DcJðúM–nõ±+ÛOV6¢ì¯_r×ùQ\3(»&(r›<þ¡‹‹OŽ mS…– ‡Meý~vMÖÊF±Çä‰\¼û³—(»àƒ‰1¤¦Øðêf­‚b”C°àöz·²Qâ•<²ÈÅGk¼¼u{,]Zh¤/*Åaƒû/v²)ÃϬ/ݼx}4ñN•}9~®z¾„#.Óò“hÁ‚ á zôèJDDD5AýÀƒlÚ´­Îô]:wdÎì™Üy÷ƒ v%ªªàr•rÓc}õeÇÁF]"¥HÖïÜâÃ?Ñ,9–N­›£…<ßa¾÷H´£%ÙMuˆäÄ8„C +IQ±ŽÛkr ߤWr@Ωj‡Š®€i†gêUPP@||<.— ‡Ã¦5ž ³”’¢¢"¢¢¢0 ¿ßÓéüÞ…cwEQBŸ?Š¢ ŽâtÃï÷STTDll,6›ÍjL *@EE"10Q‚:ï‚€CQ÷Ú†,[lž}öYFŒÁŠ+8餓xþù版ˆÀf³qÆgÔ›‰ éÌÛ?z(*­N¼öfìÏ œ¦cÂŽL?6žÇžßü¬Øî%)V¥cŠJ‚S%¿Ä¤SŠFûd™­õÔX˜7—¹yµ›§4¡Gëš'Ý¿.±k$.JA7@7Ê<Þú%ª€è…Õ[}ì8¤Óª‰J‡5tjÜ>E£em™~~Úéç³_½¬ÛççÌ4žlʸsD9^¶fúèÓÖÆå§DrvšNÍm¼üM Ù…’˜ÁÒ­>lš`XO;-z·ÕØyÈàâ~"ì*ó–•¢U…s§`Áô7n¥_¯_¶Lƒ—ÇÆÑ6Q%Ñ)h›¨ñïÅ.ŠKMn<+ŠW—¸yg•›óz9hŸ¤†êc`ªô+£IŒì8¤‡öp¤„Ö‰ ÃOrï’¬Ú¥cJØyÈ Â&xà'çõ¶sÏ…N¶fêœ=-‡t‘vÔÙÆû?{ùßj7çõv°+Û`æG%tHR¹ô>ží¤;/WÊ}ï¸jê’èÌù{4:Úyc¹›_÷ëü{L4›«Üüz1ª ãÏà¶³#0L“Éo¹øï¸hн’ç¿qÑ6IcÁ­Ñ¡0:,X°`á÷òÿ~í•ÜxÝ(JKK)..¡gÏnÌþ÷´ñ8ó±ßÄ”&í8´Yá‹/ö°{&ª¢ (*›ä*¾m±€Cƒ7ÑáÌÚ§&“œKlLþ#*ñÙ͈ÎwRê”ÙœW!çA'qe[ae«wïÞ¸\.öíÛÇwÜÁ/¿üÒ¨Åöù|ôë×Ï>ûŒgŸ}–áÇ“muB ¿|>óçÏ笳ÎbõêÕ5Þ³víZV­ZÅÎ;­ ³ð×ÚxC ª4”ÊÂp!ÊTŽ… ##ƒ+V°k×./^L^^sæÌaüøñØíö:× ï—ŠÞTCªÖ Œ~&›æä#T@|´Æƒ_tm8ôÏÌ3p{%Oމc®Î»+ÝŒ=ÇIë¦*»3õZË¡ xù›Rvf¼1!¡âkCˆ4o¢„TãýFÐ~9(Æ:˜1¶7[ÇnüsD4?îð±j§©—GcÓ`_¶¢ >^ãáÖ× ˜ýy Ñ*S/‹¦GRJÞ[í%Î)h¯°5SÇç—ôïè`î’R¶ÔYð£‡|¤µ¶3¨‹g„¢Ÿ<ü´ÛOtÄ;Uþ³ÔM^±¬V˜–‰¦)ù-ÏħKœ ¶2½‰=9:O}RBÆÓ„yËÜ|½Ñ €VA|ÉV?×Ì) ãˆAï¶Zè÷¦Ñ‚Ž¡e…o6{Yð£›*ødÓ„Ôf N…h<¾ÈEN‘äÚ—ŠY´Æ²ŸùI)_o ÄÃýn‹y+<˜e&RJš—™ <ý¹;ÐY«sdàd E¼Š@’™oâ36Û/™ó¥›­4:7×xö 7º„”8•¢RI¾+à ¯m’ŠÅÍ-X°ðW'Ì6›­ÒGUÕzDQã'gSBvíÚËÆM[C¿åäaé+ë}ohhÀÄ-iêè¦É9©Ã¸ã”—qòu´oÕ )M K\øü:ˆ€ ¤ë&.·‰]D0$ùv.2o£ãÞdÄá½È2bnRœW4«SÀ Ó]AAAË—/µCcÂf³U;ñ–}—…ß999¼ùæ›lذÁƒW»þþûïóúë¯3wî\^~ùeÖ¯_oUš…¿ ¤40¼n¤îA†éÆ"°«ýßÿþ—÷ߟx€èèh\.†aðã?¢(J¹š{-ðøM¼~Ɉþ‘D9ÊŒÍ*‹mpíPà»õ^~ËõÓ¥…¾]ílËÔ)òHÒZÛØvÐÏÒ-^’ã¢ìéµ °'SgÒ¼² ª«ž™Ú'kœÚÉÎ2ÕûÃ:šitocÃ0aäièä À/ûüH)锢±f·µ{}¤6Ó0¥dÝ~?B<Þ®Ýãç¡wKxüƒ"⢜*¦„Özqû$guw°èg׿PH‡d•ÿÞÏ'9Ðxä½’b& ur0Ï`Õn‰oñÀ;Åœ’7n§]’Z£=µ K%ïÿäᆗ 9”_Ac¡W•êvÞ†6¾Ûâg_ŽAbŒ0u0`øÉü­‹Ý‡uþõq)6U øz£¬Bƒ®ÍmôïP·¡©„ˆ·"ª¿?¶­†´ºQæ-·‚C¸‚RÉ|Ü2·˜ý¹ B¶€!õ²gzu(òHîy«„I ](²G·`ÁÂ_‚e?¬äúïছ'rÓ͹qì],Xø^­j´R‚ªªhZõ¢ˆzO<Äc'²ú§_¸ïÞ;ø÷Ó‘™™ÅÍ·üƒ–¯ Ÿ@6„¤&†”¨ŠÊ•}à³ïÅÀ`çoY|µôWV­ÙiH¤”…ÚdôòØÐ„Ë“FQâÇ›µ—ý›V³'׋yð#Ü»ÞF÷…lσŠBØjYBLÓÄëõb³Ù˜ æSRââàÁßÐu£lÁ=ÈwÞ‰ËåªóIŽ˜ü°ÕÇÈAQ¬Ýëã“5þ3>žW¾)åýn>¼?O2꙼îý¶C:ç¤1¤—ƒ}\Âî,©vvÒ)p™¸<`·Iæ.- œÐ r V‰ó+°9Cçº øòÁÄ1œ0öì(Z6QûR9Å&ï­òpÛ'§u¶±-Sç¶sl?¤óä'%hªàÝ•º<†h‡ÂÁ<­lãÿH±É{+= %w_Í}\ó\ÍâÜ>I±;p4oš’=‡ Nn¯1cT ‡‹Lîz£/H$)6ÐBköêìÊÒ9©ç¿v³óμñ±d1™ý…‹™WÇa/#Õf@S@Q`óoÍ…3Ól$F«Øí°r»¯l&ä¼­¦µÚ¦Â¼ñ±lýÍ`í^?][ØØ•å =ÛhÜxF$Š€›^)bw¶Ž¦– l ìÈÔù[šƒÔæ ù¥’©#œLš_Âs×EóÎj/fÈ‘`E¥¼‚ÎåæúÕƒ—Dñk†º7Â.øôÎX–mó“¾ÈÅÖL?½ÚhœÞE#&R!.RðÓžÀÆÉçE²ó¦ÂÄó#ùv“ŸíY:­›( è¤Ñ«¥ÆÆƒ~¯÷…ÈÀ‚ þ °w_‹>ü,DÞ¤”$$Äs͘+¨)â™”’¿yq¾°°ˆ¯¿ºÎwóëúMüãî۸뎛Ñ4øøXn¸é.öìÙÏiû7n!¥À4 ¤)1$ÄØÁžËkï.ÆSªï€îˆ@ô*A(:g(ñü=1[” H؉7³3+KsH*ù˜6[>Æ.¡ám‡? <ÜNÐÃÜ@ÈËËcÙ²eDDDpóÍ7Ó³gOvíÚÅ£>ÊîÝ»5j]ºtaëÖ­Ìœ9“ÜÜ\† FË–-Ù°aO>ù$÷Þ{oèyK—.eíÚµ<þøãx<FŽi9õ²ð»àÈ‘#L™2…'žx)%£Fâå—_&55•iӦѶm[Î;ïÛàãäv~Üîçã_|\ÿ·¾º?¬Bƒƒy&ÅnIv‘DÊ€÷üRxË|æ›–J4E0i¡‹6MU®É%} ŠÜŸ?и Q NGÀöþÞwJ‰Žœ™æ@U`ÉV̾.·žù¢”M0é‚(Ò¯ˆbÜë.žÅ…½¸ý&;ט•<Á[°`ÁÂ_ ÉÕWàŠË†W4-´_ñ^¿®³ôû1ŒÚ Ùí¶:c™wéÜ‘{×a³ÛBÑ.¼`úÏc IDAT{×ápØÃ “ ÔqGb˜RšeÑ[Ò‡ü‹_^YOŒó ¦MÁ£ï罟.Äk›ƒ³}<±1v„¯Ý†3*ͦáEDúr@xÉÎTØã(¤kŸ€¥—eK eÃc¹K)騱#iii”––òé§ŸЩS'ÒÒÒÈÏÏgÙ²eäææ2vìX4MÃï÷sË-·TzNII ]»vÅçóY§æ~7˜¦Ivv6;w ##)%ÑÑÑtéÒ%Àfüøñ|òÉ'DDDC¾qãÆñå—_¢ª*¦iòñÇÓºuk:tèÀ­·ÞÊš5k¸öÚkùå—_0 ƒ3fðé§ŸÌ"›7·*ߟÎ(Í:6¡¤¤”’âÒê^Ü…u­ʦDw»œhÝ_ëd_~ )ñk‰HÅ^ã}?nósÉÖ¼ò} âBƒ3Ê ü\Á í?ß»øÏ÷. 8à¶W ÊÕ—aÓreê̪ ·¼ZÀ¸W PUH¼á¢¢·„o6zùf£—ç¿t…ò 3T½Î)4¹õõÂò‚IYfÈ_¾§1üÉü€£½²Sá¾÷ò¯”åÿó_½|¶Î[‰¸¼’ûÞ*æÞ…%(”‡þ’NÁ…€S:ÚèÕÖΞlƒíY:ŠwÏ+fâ›Å¡g*" mÔsùH$Š"ÆÌ) èªF5ô.ÿÈF pFn~µ)%ª"X²ÕGÒ¸Ã(jàYw½QDÈó¡ü|¶Þ˧we—õ™`545ðÇË<üw©;ÔG^úÚª\EÀÊ]~¤,FU`Å.?ÍnÏFQyë:ùB€]˜&\úLQHóYV'ÀÀGòlª@×%c_/©2NøûKŘf ßóWxCí:ô‰¢JûRªåÌÖ‚ ahšV£ísmD92"‰yÔïS…(gT¥ç+Š‚ÓUç{i#Â01ÊNÐ¥„èˆ8¾¸m5+˜84I»øÎ¬Ÿß¯ßG„$â“£1ñSéðBäS ñ1áÙˆq$b;!íIå!FôA–5øEUôš~3MŸÏÇ÷ßO§N(..&'' wüôÓOôëׯRýYäÜÂïºá'e¥þWõo€uëÖ‘““Cÿþý¹á†1bS§Nå›o¾©t_TTT¨§¦¦²}ûvºuëFdd$sæÌ¡W¯^<÷Üs1dÈ«ò-ü)e£Gçòò4òòŽâÊ'ð0ô{sd[ÔèK0H L{RÍvXµÞ×’Jq«ey|lQázMiB¦ì5¸©¯û»¢£wE5yQ=¶¸RÅËž¨²[Q5Fw5µ{Qþ^QdRæxfÑ?0LɬÏ]¬Ù­cר7¼âEY,uQ1ïRT*—¬Y~¨ìЍ’ÏòÌW,¦RµDåz­üj9kz–•7.ªÕm•öU­R2ÚK m*TËC…~V)¼ ,ü…ëÚPäÉzI´PDƒß'e@ó,œ ¹!s¶¤¡cš²’ÇuUÁm †éäÝA#°yw¡`èHCÊlêË„W‡ìDDéØ"MzÄ·ÎFAÒÄI3ëšB¡ë:RÊÐý¯½ö_~ù%º®sÑEñÁðÊ+¯Ð¬Y3t]gذaóöÛo£ª*‡þýûÓ¡C.¿ürvîÜIjj*+V¬`ÆŒøý~¼^oèÁ÷Y°p<ÅàÁƒ™>}:—_~yHÓ#ˆçŸžââb®¿þzÎ8ã ÆÇÙgŸÍÌ™31 ƒ .¸Ã0*¡{ž={²råJúõëÇâÅ‹™9sfÈ– FD8$Ú@Ó¸HJmh7Y¨Õ²”‚-Ã4Ë~x««¨l×Fl©‹ ‡ó̪ϩçQO¾ÂÙ,¨íùUó‚Ø“_ÿbn¿d[¦ Q'jÉLå cƒ œ:®¯Œµ¶•¨V¬ÚßY[]Öb³Nm+á”Óbä,Xø‹#ÓX!ë˜Eù .ÁMUQ}£¶¦4U4óDYüæºOßÛ̲áRE0À;ÍŠ^×+ü-%(…ûHLˆÀoxñ›F NL=o‰ 4ÏMÖ¾Bb›HbÑ HÝGÁ¾Uè©d” GwYïRóꫯҾ}{&Nœˆ¦iìØ±€&Mšpî¹çòî»ïÒºukÚ¶mKÓ¦M9ûì³øüóÏ)..&99™3Ï<3Dîív;]ºtášk®aãÆ!x饗èÝ»7iii 4(wÝ‚…ÆFtt4÷Þ{oȩۥ—^Š‚Ç{,tO›6mp»Ý´lÙ’Aƒ1cÆ >ÚDŠŽŽæ‰'ž 66¶Ò³gÍš…Ãá`À€hšÆîÝ»B„Æ… 6h*4‰DÛT|qju÷c"ÛŽ ðùzo,X°`ÁBC×)%«–ÿ€Ïë­wq1+ØSoÙ¸‘̃{ÃzÏëCÈr-§ ¿¬%7÷pXi ]¥=fiD‚©û1ËT܃äÕÉyð]‰@Ö¦¯ˆ. SQ&(izí´îæÅ0â0 /†á#/Û /S¡0/w›!ÝDR’Ô4eˆüç?ÿ 9Ò³`Á‚ ÿÏÄ)i"  ›&*«¸SÃ’i6ÔIj#É|GuOÐÞ»^±¤ê_²²=rƒÒ7캨óŠ8Êç˰óVÿ=â(ó,e?Æç‡ÙvÇúþc/{Ý홿£¿.ŽñÙá§—uÌ¢Þ^ÎóE#Ôh„va–°ÞZoÞEÝ¡šE=/²¾Ù¤†TøéXê¶1Ú&üº•u?±ÊÃÂí¢ž›Ãš«ëx‘¨§Ý1aKÊm¿ß‹ ûãÏ'#þü†Ëf +å HCbÊÊ6èfÙiºQ& 4¿áU ¿šGjËo±Ûí—x(8RH”SA³B¸ù0t?ÎABS•¤ýÙ?Ù÷Z¤‰4U„tÏzì5\“ó> ,X°ðÿ…¡›(ÒWæ‹L¡ÎíXÄÑ Nïò;3ô£u #Žæñ O$ŽCyj%Çâ^u”lNCyê¥âèE•£wB+޹ÏÔxkƒYeÝ(¬¶«êѰ¡EG? ‚ŽôކÖ×îâç q4OÇq´[ a2æZkºáƒ_eyÂ%è1ý‰”çèׂš™¬8†՜ЀÞVûíá‘>ÖËï)€e,K †)içï±ÍÒ¨ â^•œ—Å0OJj‚ë´ (Úø Gr=lúeû·dÒ¥OKºõmŽá3ùuéA<{Æm’ãkŽÑs’œÄEÎÙHS‚jÉž,X°`¡îõZH¤Ä@¢…¼H0‘å§!L§¥lÇí²BtXhˆ,u|ˆØ_¼î —Ÿ°“Ïï^oÒª¤?m]ü%øÿ÷¶“ãp‰¤y‹¶´HnÎoŽ-¦nˆ¸Y39ë»Áº¥;Ù¢ä‘û››ÃICQ³2é¡*è~]þøí¸–}3Nr¨©$¢´N°!˜Çï»}kìY°`Á‚…zV:Ó4‘¦*•OЫX!(,(âûVàõxËIº¨«SÖ½°–?Ò¢g'®Ì(­d§T¢Öká¾UÖ‘Çš®è}ïxå/à1øÏS^Fßkh™d#ög ,4!Ð4-l¾Œ¨šœ”D¿g#Mß±ÏC†‰)e­ä<ø[DJG’κ—íïÎäÀÐ7)Œé„mË4¾xçCü~õ?Àçì€+{ íÖ̤¤÷EDEÅa”©Ý›2"Ô efÁ‚ ÂYñd{Ý*^ÜeuƒB!(-uóÎ;ŸRêvSXPRš%c¹9¹µ¨¬ŽúRRRPÊâ æçàñz¬68¡X“$!!Gd†n“Ž^dÏKlÚ4d/ì99¹˜†Ir³äjЦ>¯¼#GêT}ÔT•¤ä$@päÈ|>_µwjšÆá¬Ã>,¡iÓ¦hvp¹J)*,<=ùFÞ©26ò ðxŽ}lDFDŸÏ‘Ü\|âþѰi6š&%›‹ìÇ1¥‰3ÊIl\,RÂá¬Ãea—*·‘Ãî IÓ&äÉÃëõÖ_·Rœ’Œišäæäœ mnÁÂ_~±á’‹/`Þ¼W1ÊN±ÃaèyGrùàƒ±kv|^ß±fS‚Ner^°+6š »CiבkÐD3é){ßøŸ´Ñ«ëß6 Ýøõoch$ÄØC!Û̲òIÓ"è,X°`!¨H¡2x‚.ËÍóªt)‰ˆpðö;ïðÕW_•Å0”¼þú\²²sã7ÔêaH¸ýöÛIJJ¢OŸ>Ü{ï½,]ºô„ªŠ¸¸8âããÙ¿ÿ_¢é»téBFFn·;ôÛù\Èõ×_Gaa!—_~y{>z¡bÔ¨Q\vÙåxêê«iÓ¦- `Ñ¢xúé§á9ͨ:6î›2…%ßÌÏü·Á̘1ƒk®¹†-[¶œ0c£iRS&NœHÇŽINNfèС”––Ò£gO¦L™BBBC† )#à•Û¨g¯ž¼üòËŒ?ž+V„~oÛ¶-…Tº¿{÷4ž~ú\®&OžÌž={¬9ß‚…‚¢ƒÓ™ˆiHLÓ¨—œ|óÅçhb'1uÓ0!Ö*s£Lå½¢ó8!:&;i«“­!ý#ÈÍØ™£•ÔŽV vb"TúvJ ØcíPqÏËž­( É‹» ,Xøÿ DÅD¢› ¬J¤¡f•Pa•TµLÓ¬w•R2uêTžþùÒ†=""‚{î¹'@êþèÚµ+ééé4iÒ¤ÒïóçÏ#''Ó4å=Ï=÷¥¥.222xàûY¹r%“&MB×už{î94MãÍ7ßdÊ”)ÜsÏ=|üñÇu>OÓ4&OžÌ/¿üÂC=R¢i•½î¼óÎ;¼ôÒK•~›={6S§þ3ºàS3 Ž9sæ”™‰4Nþ¶lÙÂ3Ï<ÃáÇylLš4‰¡C‡6J¾<ÈäÉ“YµjU¥~¶råJ~þùgLÓ¬uŽØ·oO?ý4ûöí ýÖ²eK~øa:vìPíþ &ARRcÆŒ±æ| N0”¦ ?£ÎOaÙ§q ¸˜F€Sùä]AS”2÷²°#¢ïÑINÅïW^y%ƒ BJÉÞ½{™={v¥¤Š¢T#H©©©ÜqÇH)ñù|Üwß}!Áý–[n¡[·n¬]»–yóæžžNtt4Š¢„ò0eʼ^/§œr cÆŒAJIqq1S§N­³"TUå‰'ž oß¾œ‡zˆ‚‚‚FmøöíÛ“žžNóæÍ™:u*‡]»v1gΜjí2qâDfÏžÍöíÛIHHà‘G Õ÷ƒ>ˆËå ‹€–oüˆPÛVí S¦Laúôéõ>K×uEaóæÍlÞ¼9t­oß¾Üpà x½^<ï¿ÿ~µv®Ú÷"##™>}z¨¥§§säÈ‘zËôÈ#‚>ø€¥K—b·Û™>}:ªª¢( ¦irÿý÷‡ÔÕ¯ºê*ˆ”’}ûöñì³ÏÖ;6:wîÌwÞÉ /¼ÀöíÛ™1c;vìàµ×^cܸqtëÖ !ëÖ­ã7ÞÀápðÄO„êkÙ²e¡2Ç@qq1ÿüç?ë,§¢(¡±‘™™I÷îÝ1 ƒûî»]×9ï¼ó8ÿüókéééÄÅÅ!„à­·ÞbåÊ••Åc!ª•7ø›”’öíÛ3yòd^~ùe6nÜÈ“O>°Y•’µk×’™™Ibb"3fÌ C‡Œ?žââbrrr˜6mZhó0øËþÓ‚…¢Ú†\MsÃñ€iå6èed\/³Ú ‡ˆ:kÒ,‘ãg’ )A7'ﲊ7ø ñWÊö^­t ,X°P7AÝèf`£WJ@ KQ@QA(µÇµ5 “±cÇÒ©S§ð{Ægpûí·óÎ;ïðâ‹/2bÄÆŽ[má­ˆ&Mš0{ölvìØÁÔ©SiÑ¢³fÍ`ôèÑŒ5Š9sæðÚk¯qÓM7qÑEЫW/’’’Xºt)?ýôÑÑÑÌ;—:0mÚ4V¯^Í“O>Iß¾}ë%Ô†a„N/—-[Æ£>Ê´iÓ0M“þýûsï½÷²hÑ"fΜÉ9çœÃ¤I“ê|žÇãaáÂ…ÜqǸÝn}ôQúöíËôéÓ6l7ß|3 ,à•W^aäÈ‘\{íµtïÞž={мysúöí‹Ýn¯ó]ÿûßyûí·Y¸p! .ä­·Þâÿû;v¬5MFFŸ}öš¦ñ /žžÎ›o¾YéžÄÄD®¼òJ6lØÀ¬Y³hÞ¼9¯½öº®“žžŽÃá`îܹakCtìØ‘… ò·¿ý;î¸ǃ]×¹ûî»yûí·éÛ·o½ÏyöÙgÑ4SN9…wß}—´´´Ðµ7òàƒCŸ>}ª‹5äuîܹ8NÒÓÓñx<¼öÚkõÖ9À‹/¾È“O>É’%Kxøá‡IKKCQúöíKII <ðN§“¹sç†Ò|ùå—<ñļøâ‹\rÉ%Ü|óÍõ¾'66–þýû‡ˆnŸ>}èС#FŒàª«®âµ×^ã•W^aôèÑ >ŸÏGzz:K—.eàÀDGGЮ];}ôQ~úé'ÒÓÓIKK+3S©K€5Ccã‡~ Ã0èׯ÷Ýw~ø!3fÌàœsÎáž{îàñǧ_¿~¤§§óý÷ßóøã“ššöä”’’ÚÚ¼y3¦i2}út>ùäN;í4âãã(((à­·ÞBÓ4æÏŸÏc=ÆóÏ?_iÓ§¸¸˜ŒŒ žzê)kÖ·`áO¯×÷»¼Ç4›¦Y39l£r²/7Ëȹ¬NÎ%å*ò”©¸[°Ð¨‚¼µñlÁÂÿÃq-0LSøý š"û»&’²_*ïøš¦IÖ¡,¢£‘œœ ÀáljˆˆÀf³qçwâóù8xð`e^5L&Š¢‡Ûí¦¨¨ˆk®¹&D¤œN'v»¼¼<"##q8DFF†ÒêºNqq1†a ë:ñññ¨ªJTTW\qÆ #777,‡[ùùù¸ÝîÐwœFFEEQXXÈ‘#GPU•˜˜˜z'Ì‚‚¢¢¢ðûýäåå;Þˆˆ4Mãÿø~¿¿RÕtŠPæÍ›Ç‚ j$VumH”””„ÊÌ_E9r„éÓ§sýõ׋¢(ÄÇÇ“––ÆÓO?ªªaž±gÏÆ:YBÓ4ž{î9–-[VïF À¤I“X¼x1?ÿü3ÿüç?+Õ‘ÏçÃçó¡ëzX š‚„„Ce*..®wÁKLLdΜ9”––ê÷åÂ¥—Ëê“PŸ8q"]ºtA×u4MÃét6xÐ !P…E‹Ñ¥Kî¾ûn{ì1®¹ærssCåËËË£¤¤¤RýìÛ·ýë_Œ7Ž;wr×]wqðàÁzß쥥¥5Ž¢¢"òòò*à†Â‘#G())!::MÓÂ6EaÆŒdff2wîÜP{æååQTTT­/!„ ¨¨¨šöCqq1 °°°QïY°`áøAA~~—Œø;ÏÍžAï^ÝÃ# ²Â§AÝ,ÓØ©BÎË> v|W%çFÙoÁ´RV&ç²ìZP²²Â [hÌñËï÷Wz^Cv èDXƒdpÛ¶mÜyçtîÜ™æÍ›×kÿÐC‘2ç˜5kVµþ\uƒeÈ! >œ+®¸‚¬¬,¾ýöÛÛ²ªjg^^»wï¦OŸ>8N|>¿þú+mÛ¶eÕªU<óÌ3<öØc4mÚ”‡~˜ß~û­ÚFD0o111!¸í¶Û9r$>ú(S§NeÍš5aîÝ»“’’Â’%KB}"àƒÂ¬46*ö¯`=WÝpª©Oÿž0aééé<üðÃÌœ9³ÒæCÅù£jþ‚æ5ÈÍ›7¯ÚF¡ N<²qèÐan½}2›·lgèy#yç­W8÷ìÓñ׳éz´R õH w@[Ð,#ûB‚”{de‡qTòÎ.+vYØWüîàUk ,=w Ô%-Z´Àívó믿þaù0MŸÏg‘t kl› ÁÍ^M„ÜÄI„¡T¨«(ª¦†ìlE Œmܸ‘7rýõ×ãv»4hPÈfYÁí·ßN‹-RrÉ%—ЧOæÎË¢E‹ùä–.]ÊîÝ»Y½z5W]u¹¹¹”””°xñâ°'­aÆ…ì„ß}÷]öíÛÇöíÛ;v,>ŸSO=•‡~€Y³fQPPÀ¿ÿýo~üñGzè! Kã¯]»–íÛ·sã72xðàí÷…^Hbbbèt\UUl6†a0oÞ<.¸à&L˜À°aÃxï½÷X¾|yï¹úê«‰ŠŠ¢eË–œyæ™!bÉèÑ£¸è¢‹èÝ»7‘‘‘´nÝšñãÇ×ú¼›nº »ÝN×®]9ùä“+m*téÒ…óÏ?ŸV­ZÅĉÙ¼y3_ý5W_}5­ZµBUUúôéÃÝwßÍ›o¾Éÿû_FÅ„ 8묳øúë¯ë-Ó{ï½Gjj*wß}7%%%¬ZµŠ«¯¾š§žz MÓB$UUÕÐØØ°aëׯçúë¯çÈ‘#¼ýöÛ 8.]º°cÇŽJcãâ‹/¦wïÞ¼ð ìÙ³‡Gy„^½zqÏ=÷àr¹xûí·éÞ½;&L`À€ЪU«Ð‰¼ÍfãöÛo§]»vH)3f ‡báÂ… 2„#F°}ûvE©æ$°&¸\®Ð½ä’KX¼x1K–,a÷îݬZµŠ‘#GröÙgãr¹øôÓOøßÿþÇ”)S˜8q"íÚµãÛo¿%++ €äädÆŒCïÞ½Ñ4 &‘‘ÁæÍ›éÙ³'6›ÒÒR^yåæÏŸÏâÅ‹Yºt)ãǧeË–H)¹ì²Ë8å”Sxá…صkW(§œrJÈD&ˆ‡~˜¼¼¼P³`Á‰‡¬¬lnw7«W¯r×^7žÙ³¦sùeËð_RâåÛ/¶Û‘H¤)NÜL"ë!Ç¢¢2¯®¸5,ª ­¤y(A"ÉCàr¹‰K²£(ªÅÒ-1÷ûýìß¿›Ív¨¹»ÝîJ~_,X°pôcÜ4L¤)0ˆxdùEÐTÉ= ¤ƒ‚üìܱO?ÿš_œGç.ùí·ßq³ŽP§–-[’˜˜ìwïÞ"èÝ»wFOÓ6nÜHTTTÈ–Ý0 6mÚÊdûöíCj³ùùù¡Óænݺ¡ë:;wî S§NØív¶lÙBBBmÚ´'®á†˜ŠŽŽ¦cÇŽH)Ùºu+þ²ØÑ)))¤¤¤ „Àív³cÇŽzŸÕ¹sgæÍ›Ç믿ΪU«ðûýlݺ€Ö­[‡NŸ‹‹‹Ù»wo(¦i¤¥¥‘••Evvöqí­[·¦I“&ø|¾PÞÚµkGLL ~¿ŸmÛ¶…ʼÜlR²eË–zÕÉSSS‰ˆˆ§ÁA•ê`9+ö…šê£*ºu놦i!ªÕQ||‘Jü"•ç¡âó &†R–+Q±6<…aìéqkGC<ûJ>ë6¹”çbXš·¶ÅvZ+Ô ÇšÎ5¸Zc™0¤Ûîjúëo.ç±éóåø‰`fáÂ…¤¦¦‡8pà/fnuQw222øË_þ‚Öš””Ȇ äÀ!Ž»ý@ì+@ÿo}ìm'aÀ`ï­;v±yóvv—v ý~bøØAŸ‡F êÓ¼ÙÉÔKMÅ0¤]B]«Ìst¬î[# ”¡~²›®R‘æ¯ÇÂ+ÝÌ…B{'ÈXn­±â3Ei76]©ýwÛB!„8X†2رí¶ý¸ íþt ¶Fãj™G\!Ä/!8W¸•9Q¬€×ÀÅÅucÓƒ˜š !„¢Žmܸ‘gžYH¨(!'@Ç%>;‰e™:Œkcÿ-èiiidff²~ýzB¡PìNff&ÉÉɬ]»]™¥µyóæ$''£µf÷îÝlݺu¿Û´jÕ ­5ëׯ'W{þ´ÓNÃçó¡µ&//]»vS?nmÛ¶Mt÷Û¼y3%%%RO…BˆC´téRÊËË1MãX9Û£µËwß}Ï’%KÈÏÏÇ4Mù Ä‰F£¼üòËx< C3uÚ¶mV­ZÅÎ;ùä“OäƒâpBt à¢4X~SÅâuMe÷X’w7ñõ‹ÍCšLbÈ!üæ7¿áé§ŸföìÙ8ŽsØ;3hÐ :tèÀ¯~õ+l;6õÊ9çœCóæÍ¹öÚky÷Ýw3fÌ~·‘’’Bß¾}éС7Üp6l¨öü…^ÈI'įýkž{î9fÏž}ØAõe—]ÆòåËë$@ïܹ3'Ÿ|2;wfàÀ|ôÑGRK…BˆýÇûìígš&™™ÍðzëQVvlìl(T€Ç³¥| ¾q>ŸfÍZâºA**Ž­……[1MS곇œèXp®Ëc™èÊ)Öb-تÚt£Zk</>ø É)É 8»îº‹ÔÔTÆwØ;ôä“OòÊ+¯àV™reñâÅX–E÷îÝ«•ïKNNo¼ñçw^­7 žyæÒÒÒ¸úê«h{?eذa´iÓ¦Nt×u™9s&çŸ>—^zi¢Á:t(III|ùå—¼úê«R»…Bü²®hô¾‚°¬_|‘¿ÿ½'+|¾¼Þó ÃP‰kŒx¾ç±AÓ¦a’’ fÄ!ÆaàºAÞx#…ï¿?B_) ñËäªuXkaTÎó¤÷Ôé¬,ZË '!êâ|¶ç|–ièØôj®Â¡Ê3UX–E‡ÿ×eË–±råJn¼ñF.¼ðB:uêDÿþý:t(ùùùÌ›7·Þz‹E‹bs—Î;ŸÏ‡eY̘1#Ѧ]»vŒ1Çq°m›?ü°ÚkÆ~ªóûýüå/A)…eY<øàƒ‰Ör¥b]m&L˜@$á‡~àÏþsµíéÄMˆ˜úõë3cÆ ÇÁ²,Lnnî~ߨQ£èÒ¥ Žã°páB<cÆŒá‡~ E‹Œ7.Ñ _¿~”—Ǧ’¹ë®»èС7a„½~|kççŸ>ƒƶmlÛ¦oß¾‰m\|ñÅÔ«Wo¯.ýB!Ä/"@ß×…;àóÏL€nYpÁš¶m ¶lÙÂÇÿ—Ž/æ„Nbݺµlß¾Ž;bš&Ÿ~ú)›6ýÈé§ËùZºH6n„/¾¨õrý°¥¦B§Np≊o¾YúußÑ¥KgRRÒøðÕtìØ‘ââV¬XAãÆ^¯‹ÄçBÔ…=_$ÃT`(P˜X¦Þç™Ðçó ±,+QšœœLff&^¯Ó4iÚ´)‰ç|ðA†Îûï¿ÏÔ©S9餓øæ›o¸å–[ÈÎΦiÓ¦t÷-‰0räH† Æ·ß~ËܹsINNN¸¦iòðÃsß}÷ѹsgîºë®}nË0 -ZDaa!C† !77—gžyæ'Ç„Mž<™ÒÒRvìØÁí·ßNïÞ½Ù´iIIIÌ›7Õ«WsË-·à8‹-àÚk¯åÆodìØ± >œnݺqÇwì WÕ¨Q#|ðA>øàúöí‹aLž<¹Ú2={öäÊ+¯dêÔ©R§…BˆšW.zÏÿëúÏ4áÜsáÆ :uÊ!%å .½4^½àüó7qÊ)ñÛßFéÑáU«/pÝ€ ùPÄa×i×=2u:) ºtë¯Wœ{/£{÷2zötiÕêsZ¶\Åõ×+®¹¦Œ ÞFëïˆ Š•]ˆÃ Î5TþY¦ªÆ¥@kµëÒ@ûöí?~ú(ëÖ­£qãÆX–•DãË:ŽsÀݺÏ=÷\ÆÇÚµkiÚ´)'±½ø6***‡Ã†QíFÂ^‡A)¼^/Í›7g̘1¸®Ëš5k~rlÛFkëº8Ž“èRß^¼…Ûu]|> gšæ~÷-¾ÿñÿçää0lØ0ú÷ïO—.]˜6m_}õUµuZ·neY°eË©ÛB!~yËQz]×Õ²}{ˆüül¢Ñ òò²Ù¾ýGŠŠò …Jعs;–eQZº¥\ù°Ä1Ͷmrs ؾ=ÂîÝD"a²³w µMii1Zk¶oßJNNåÈ”OBÔð6 ±LÓÀÐŽèZÕšxE)Å'Ÿ|„ xâ‰'ÈÌÌàûï¿gýúõ\sÍ5”””PPPÀÇ À<@EEƒæ÷¿ÿ=÷Ýw_­cÀãÝÓ«rg¯nßãÆcçÎ 2„ÁƒÓ£GD€¬µÆ4+ÇÓW®[µ›|ÍíÅ—_»v-Æ ãâ‹/¦I“&t³ \Ÿ|òÉ\~ùå¼öÚkTTT$^?.ÞoF娡ØMŒšû諎WKNNæ¼óÎã±Ç£uëÖ<òÈ#Ì;—W^y%±Î£>J½zõXºt)?ü°Ôm!„Ç=U%0ßÏ0t”еÖ¯¯ÈY¥¢|òÉû¬_ÿ ¥¥å(¥xã7X±b»w怜¬Œ… ¢”"//N8AÆêŠÃ»„7bÝÐÔ,}¦¹›×_•wÞÙBQQ¶móâ‹/âñxÈÍÍEkÍOµžì,ÃJœñáx€>f̦NJ½zõ2dH¢¥wÊ”)Œ?žI“&ñý÷ßóÅ_0lØ0† F³fÍèÓ§mÚ´Áëõ2yòd¾ùæ-ZÄwÜÁi§†eYœuÖY<òÈ#Ìž=›ñãÇ3jÔ(&MšÄ—_~ɶmÛ9r$sæÌáÆoäùçŸçú믧~ýúlݺ•üãÜsÏ=4iÒ€Î;Ó²eK&OžÌ”)S0`&Làì³ÏföìÙôC3yòdFÅ„ X·n]¢eüñǧW¯^4lØ&Mš$Æ™¿ÿþûtîÜ™áÇFÙ¸q#¯½öZâXþùϦQ£FضMŸ>}¸öÚk?~<ÉÉÉL˜0~øÃ0رcGµý3f ^¯—ììl©ÙB!DübGÇÆˆwì¨hÑ‚#4FÖBëöhݸ2ðÞÓ£¯fï¾ø¿¿?RÙ½Ä/Br2ô衸â }„¾7É@G´>s¯:\Ûãh4ÊçŸ.Aº‡ + \­ÑÚ@mÎ)ÓÚÕ‰‹ 4 £]» ·²þûïxý_ËyáoK …BÑ A,˪6Ÿxƒ 0Ms¯`ñ„NÀ0 JJJ°, ¿ßÏ®]»ðz½Ô¯_¿Ú—:SXXHFFF¢{xüG //h4š¸]TT”ŸŸŸOÆ ),,$)) ÇC$!??€† VëR®”"''­55JüèdggÐÔqJ©jûOçñxhذaâl×®]‰÷W¯^=@µ}SJѸqãjwÕµÖdggãóùÈÈÈH$·ËÎΖA!„?K×^{¯üãe–Ð:+Þy-Ûv2pà½D*JÙúãVV¯^ÅÇkò°2oGã`*ÅøÛO¦j ™éÓ§sÒI'aYEEÅGðܹ¿6üÃ0HOO'‰°|ùr/^L^^^­Ép…¨M$Iô¨ ‡+…ÂGµNǯw·oßΛo¾ÉöíÛ½g…ø¥))ÎC¡b‘´ab(…a™±eû©Íô÷ìhˆg_ÉgÝ&—òœBl{¶£hWcF{¾“Ö>¾«;wîL<ÌËËÛk‘ÚÊ€jA|U{µÇìó TÝx` $¶ …öZg™Ù«n´®u½h4ºÏ÷TTTDQQQ­ÛÚ×1 ‡ÃûÜžB!öo÷îÝä'òà ñ™g¢Ñ¨tq‡Åqrss0 EFFý£VŸâ=iå&“uÃÖš²pí8 ],¥tÕ³ñNZÒN+„Bˆ: TQ””’Ÿ—‹íTìÿB£2î8ÜVB­u"_L0<*Á¹ã8lß¾Õ«WK/8qØ\×%+ëL:tè°Wî£ÿU®¨¨à‡~`ëÖ­òQÛ¥¸´´›U- ÇBò=Ý…B!êNvN/½øÁ”†T„‹QJáñ&*Í#Ü€HE)> å%¹ÔoÔÇujop?€–…š3Âü¯ÅóÈÔµ±cÇrÛm·%’àŠ_†ªÉÚ~îC&²³³™5kcÇŽ=¨õÊÊÊ>|8³fÍ’ !ŽÝÑ””:x,Çg`YUOŠXêS!„Bˆ:ä÷™´9#‹ò²Ý’ÚP^’‡×ß´K$RF0ùtÊKóñúš —LiMéî]riR‹Õ«WS\\Ì¥—^Ê»ï¾+Düì„B!V­ZuÐë9ŽÃ‡~(P7JBà³ lÇÀªÖAEÿtæF!„Bˆƒåñq_ ò’\Iõ+[Ëþ`:e%¹eHÊ ¬$—¤”Æ8Nä¸>6›7oÆu]´Ö4lØÔÔT\×eÓ¦M4jÔˆ””ÇaóæÍX–EII †aðä“O±d´ñbZ´h! éÄÑ 6*ë©R ×uÉÌÌÄãñP^^žH~ܼys”R”••ñã?FiÖ¬¦iRZZš˜*^VRRBNNJ)ÒÓÓ©¨¨H¬wÊ)§àõzåÀ‹ŸñwFQ2ˆš&ŽcÕÐéã.„BˆºfGÆI8\†/PŠp –åC£‰„KðW–™VìB»¢²,\^ˆÇŸt\›sÏ=— /¼­5]twß}7o¿ý6Ï<ó ®ëÒ±cGú÷ïÏ¿þõ/žyæ Ãà‹/¾Àu].½ôR¾üòKfΜɧŸ~ŠeY¼ôÒKx<©tâ¨ÈËË£}ûö\z饸®K¯^½èÑ£O>ù$Ë–-C)E¯^½¸è¢‹X³f wß}7ŽãpóÍ7sà 7ðÕW_1a Ãàø]»vå‰'žàý÷ßG)ÅܹsÙ¶mwß}7¶móÛßþ–[o½õ¨ÍÔ ÄáÒ¢¶ ®B+¥j$yPÒL!„uL&2L\ׯ0L´v0 «²ÌJ µK”™ûºèÖ5þÿó•’’ÂÒ¥KèÝ»7ßÿ=}úô¡wïÞ†ÁO<ÁW\Á!Cضm={ö¬}:×^{-W]uÁ`–-[òüóÏóÜsÏÑ©S'JJJjݾ?g ÛÕDluŸï„BqŒ°£!”a)ÛM ¹>å%¹ø©híR*&˜Ü€òÒ\¼¾X+X¸¼ˆ`JCJwïÄŸ”q\­5eeex½^ ÃÀ4MRRRèС–eqï½÷Ò°aC‚Á áp˲°m;±~|ÙÓO?Î;W z„8*Á†ã`Û6Zk†aиqc.¸àÇáÊ+¯dþüù{­‡)((H,gY@€óÏ?Ÿ¶mÛrÕUWá8Ž`qœQ(íp5XJÕèâ.ñ¹B!ê˜ÇÄu«&‰Ëˆ%„S °å%9ø“2ˆV”Rå%¹$¥4ÂqŽïáòòr:tè€ã8<ôÐCœsÎ9ü÷¿ÿå¼óÎöm&MšÄgœÁþóÎ>ûl”RضÏçãÔSOåÓO?妛nB)ÅòåËñù|RáÄQ£µæóÏ?§}ûöضͲeËÈÌÌdôèÑ´iÓÃ0xçwPJqÊ)§$Ö;õÔS9í´Ó¸ýöÛÉÊÊÂ4M4hÀƹæškÐZ³xñb222hÖ¬Yb½-ZȼìâXе9 9@«­c  _lJN­±ŽdR8¥]ºtÁ0 ´Ö¬^½šœœœÃÞîI'DVV®ëòÞ{ïIW.!„âgÛÊ$.ÇH%RQŠaÆ™E+ÊðÒˆV”U)+ÅH¥"´ËÜG$p|ŸÏÇ7ß|S­,--µk×V+ËÈÈàÛo¿­V¶lÙ2¾ÿþ{©dâ˜qÎ9çì5ZÇŽY¿~}µ²¹sçîU—»víÊwß}Wm¹š/^œø÷+¯¼"\U¦ea& UÙ®P  ¥Ð€N¾Ÿ =>£š¥k9ÛÕe+zZZ™™™Üpà :´NtÓ4ùÝï~G»ví¸òÊ+%@B!Žq K§Úu‰õàÓ A)cOYe’¸jeû ÎÕq¤;V*ˆ8n$''sÏ=÷È¿>2%aƒ’Rm»Ø Àuc=J4ั“Õ) Mü–AÕ¼ìJƒáºñS"F¬½æ_݈wEyûí·ó{Ö…­[·²nݺj㯄Bqì2LhËã')Ãòp]­Ì_%I\¬ÌãK®µÕàøÉá·Þz«Tq܃ôèÑC„ø…Ðhm°£À%U”V(JŠ⢸ŠË v—ä)vä»lÚ¥´Ü¡¼¢j.ŠàQ¼*еw̬öz¤Ö§µfÊÔ)„B!ü~?}úô!''‡Î;sÏ=÷0lØ0†JJJ +V¬`öìÙ‰€\ÕhÎWJqÁ0bĈD²“[o½5‘•qôèÑdeea«W¯f„ h­IOOçé§Ÿ&“––v@¿išÌš5‹ŒŒ LÓdÙ²eÌ›7Ó4yæ™gزe £GÆ4MæÏŸOii)  wïÞtïÞÇq(**¢ÿþ’”B!„8D±$q¥»c áª$‰ ‡ö”yý5’ÄíÄŸœ±Ë"É›#„âèrµfGn”” Uù8ÖóËÑ íj¢.D4hL"N”Üâ»Ë¨Ì×n(Ÿ‰õ S £öÓ]•GZø™;o.ÿýïéÕ«Ÿ~ú)cÆŒàwÞaåÊ•<ñÄ 0€x€?üá\vÙeû|õë×çÑGeÉ’%ôêÕ ÇqX°`Aâù§Ÿ~š1cÆðøãsõÕWóûßÿ€… RTTÄõ×_ϲeËö ük3räHÚ´iÃØ±cY¸p!·ß~;—\r Žã0pà@N;í4Ìc=†Öš!C†pñÅÓ·o_-ZÄÃ?LëÖ­ïW!„oO’¸TÊKrñ'e`GÃ8N ^eY:ŽÁ±+ð'¥Ç’Ä¥6-a¸Bˆc—í€ÖŠXž7[™ðM+Ð8*6ÌK»ñ›Ë{Îk¦r ˜e±?«lï1èµOÌ¡ªÃãÆÛ+ˆWJá8N­S{ì«¥;^_bÿüç?³aÃLÓ¬Ö5^)Umým;±ç*¶ï×^{-¶m³xñbvíÚ@AAãÇgþüù8ŽC×®]±m¥®ëÒ©S'Ú¶mËk¯½&ÉW„BˆÃàØ(e„ðúSˆ&’Äi¢‘òʲr 3Ö¢­(ÃëO¡"TŒå ÈBqÌ2Í=½Æ•V ÁqAã¢]…éÆr±˜†ª%ÒŽb¹y†Âãñbhöüç¢c¯ªíEÍD0|ÓM71dȽ‚m×uq]Ã0ªMwàºn"èÍU· pùå—Ó²eK¦NÊã?Ž×ëM,gšfâÇ_£ê ®]»2lØ0 Pm¿ÆÏÓO?x ±12·Ür ï¾û.ëׯ箻îJìÇãaáÂ…Lœ81±ÿB!„¨+•çÕ½î³ëêÏËéW!ıNïût¥j9ÃU‹³•Cª¿œŒ¤('¥ƒåê=iVjÍ„ÃaFͰáØ?>™™™ :´Zp0gÎ|>o¼ñ+W®D)ŬY³¨W¯áp˜»îº‹›o¾™Áƒ3iÒ$n»í6.ºè"ÒÒÒÁñ /¼@ûöí™9s&999L:•[n¹…/¿ü’¡C‡2}útž|òI^ýu6lØÀ#<ÂÝwß @ûöí¹úê«)**âñÇ`Ö¬YœvÚi,X°€@ ÀÚµkÙ¶m¦i2}út\×eذaþò—¿0iÒ$xà^~ùeî¿ÿ~B¡)))<ÿüóRñ„BˆCdZ¾Ê„pÂåEø“Ò‰V”Rx¼AÂå…øƒéD#åx|AÂe…‚é8®$…Bq|JxhÛ²>€´ziXn• \ëêýáãºÖš÷ߟO?û4QZ^;†Ïçb]ßsrrˆF£D"†ºWës8fÉ’%‰ùÊÊÊ(**bðàÁ‰îíÑh”¥K—‡q]—ë®»€H$›o¾YmÛÓ§OgÖ¬YÕº½çææÒ»wïD‹~Õ}2dŽã‡)..榛nBkM$á±ÇÃã‰ÍÅêº.¡PHjBqˆ¢‘r â¼t7Á”†5’Ä%ÊIâÊ 2IœBñs z8½E#<É)êYÜ÷5œ[®vAtU]tM›6eíÚµôïß¿ZËzÕ@¾&ÇqjÝ^<€¯ªêtjUש9ÿyEE{mo_ÁuÍׯº¯‘H$È !„âðXžÀž$q¥y‰t¥þ@Z¬,Xh$vÎöÓ)/Í#˜Ò·¶tM,qŽtBñ3ðzÈ<©†ªÌí^%W™(õƒ>àƒ> cÇŽ4hЀN:ñÞ{ïýäzõë×çÒK/E)E$áŸÿü§|:B!ÄqÊu¢•IâÂx}I±uÓ v´²,Â0LP–ÇÊ*J1½þÚ7zÁ¹>ÊàãÉj…¨ Zf4â¸cðb8±Q IDAT‚뀩5†BUFæ&J™(̃Þh÷îݹÿþûñûýŒ9’®]»îwù””zè!:tè@QQwÜqGµÄnB!„8Î 4ªrØœRFe·=J¡µ»§LU^—T.§µ{ø7*g„95g£¢.í:-„¨; ©] í mK);eÆÏÆ~V®¼ ÿ‚Æeee‘œœÌÒ¥Kùè£(--Ýï:>ŸsÎ9‡'Ÿ|’åË—sÇwбcÇDb·š'°š'¶ªÓ²U}®jÙÞa¬mÿjn»¶×®í8!„¢v–åÃÕΞäoID*JcIâ|I„Ë +»½—/™pY¤ 'zð¶mKn&!êšÖh×íVí⻓]ÛW]í²Ú1iò$JJJHIIáÎ;ïdûö혦™H—’’B^^^blwZZ .¤¢¢‚¤¤$fÍšÅòåËÉÏϧK—.ضM À0 ŠŠŠèÙ³'üã±m›ðôÓOóôÓOóüóÏó·¿ý¢¢"úöíË]wÝůýk~ûÛßRZZJçÎéׯŽã`š&·Ýv[µµiÑ¢³fÍ¢¸¸˜ÔÔTȆ 8÷Üs7nãÇçÃ?¤uëÖ<öØc̘1ƒ÷Þ{… âº.~¿Ÿ¿þõ¯,^¼Çq¤b !„û°ß$qåµ%‰+ˆ%‰Û½ÒÁ'‰+,,$99™²²²Ä5ÆÑ»îÒ”––J€.¹þ8ŽCAA>ŸíÛ·³cÇŽc¢N !Ÿ"ÖF®”'1ÍZe73jÉâ®5€ŸÙ³góÖ²·?~<ùË_X°`ݺu£C‡œþù<ðÀlܸ‘©S§0`À,ËbÈ!dffrà 7ðù矓››K8¦~ýúLœ8‘ìììD÷_|‘ .¸€3Ï<“-Z°sçN ÀêÕ«ñûý‰›‡@ ¸{øùçŸ3vìX”R<òÈ#L:•~ýúíó@˜¦ÉüùóÙ°aÓ¦McðàÁÌŸ?ŸË.»ŒÏ>ûŒY³f1zôh&OžÌˆ#øë_ÿÊ›o¾ÉìÙ³©W¯C‡¥C‡ :”¯¿þšo¿ýVj—B±–'€v¼B¥ù‰„pJ)|´=eÑhðë*Í'˜Ü×=¸›à999äååS]Ê•RdggWK|+ÄÃ[·neË–-ÇLŽ÷(ÍÏÏ—.ïBÔÅ9ÂÃ5P…åºTv׎…çjq½fOwîª]»?úè#V®\ÉÕW_Í Aƒªe>7n½{÷¦[·nòÀ›› @ƒ xðÁ)**bÔ¨QÕî*k­1 ƒ¦M›2räH®½öZrrr0Í=ãã]×M<ŽÌÁ` 6`YÖýXh­IOO§K—.|ñÅ|öÙg‰ýXºt)¿úÕ¯˜8q"ßÿ= .¬¶o—\r ŽãðÔSO‘ŸŸ/µJ!„Ø׉‚R8Ñ–7€ ÇÂN4¼§LÅ’ÄÙ•eÑH9¦ÇwP¯Õ¤IRRR޹1ß'tíÚµ“±èâà.Ü•"333ñïc­N§§§Ë‡$ÄaˆMJ›û\ ËÑF,s»ŠupW¸µÌ…¦Q}pzÕ`9>&Û¨±Ì Aƒðx<Ìž=›¡C‡rÅW0tèP"‘ãÆ#??ŸñãÇ'ZÏ{ì±ÄölÛfÑ¢EÌœ9€G}”#FðÐC‘••Åœ9s…B´lÙ’®]»2bÄ–-[Æ5×\³×Û¨Q£ðù|¬\¹21ÿºalÞ¼™Ù³gsà 7ЪU«Ä_çÎiÓ¦ “'O¦oß¾ôèу—_~Ó4±m›Çœ¶mÛrÓM7áõz¥f !„û»Ñ•Iâ\Óã%jG0- б2ÃWYfVôˇ t€Þ¿9àâ¸áóù¸ÿþûå@qÜèÛµq]0´Â( AyBaGa»F–8¥‡CÜ{ï}üßÿý‹-¢E‹‰ ºS§NüêW¿Â¶m¦OŸ^mÕ_|‘K/½”¹sçrÞyç±téRvïÞÏç£M›6deeñÄOЭ[7Î;ï<~÷»ßqÆg`š&<òHµí­X±‚|Ë/¿œ×_¿ÿýïØ¶Í?üÀ´iÓèß¿?Ï<ó C‡¥eË–üáH¬{ÑEñÿ÷4kÖ ˆÍÃ>hÐ Ú·oÏ¢E‹¸õÖ[yõÕWq‡sÎ9‡aÆ1sæL–,Y¨Q£¸óÎ;¹âŠ+=z4¡PˆgŸ}–qãÆñý÷ß“-5K!„ØËO—DE¨Ÿ?׉àº6_2¡"¼þ\ÇÆu¢øü)T„ŠðÓA†n !„8N)ÊT`€Võñº°6ÓÃTx”"3#×õ³»p+ë¿ÿŽ¥o.gúôx¼žDöòxWvÓ4«µ¦WíâàõzëØ¶ëº(¥ÙT«fCF£Õ¶/«þbëÆ·g–ËyFñx<¸®›ëoåv'‘Ð-¾­ø>D£ÑDv˲ãËÅ×õx<†Qí= !„bß®ýMw^~ùï”—í&T?–. Ú%RQF0¹å¥yx}ɱë‰pIµ$qN4Ķ·²zõ*>þ:ó”Þhí`Š }›`rŒ…Büo•çâÖ罯"¤%yÑh\76|ÜvAãb»Š¨Jk2’l’¥¼´4Ÿ’bå9…¤§À£³°mí‚eÛ`X±‰Ñ-@™ššIF±¦÷šÁwÍ€·6µ­S5À?Øíík]×u«•×\æ`ö£æ¶j.Wó¦B!ö/‘$ΗB¨,_°vn-s¡ëÊyZš×…BOç˨ã` °Lˆçs‡ºM@q 'н{wÇáÿø%%%‰çºté‰'žÈ_ÿúWi‰B!ŽS®kƒR¸NËòãØ{’ÄÅËœJ™(À±cev4ŒáÙW® Î…B?4#êÚDœ(Ç&ª¢Ž[×ñ9eeeœxâ‰ôïߟÔÔÔjÏuëÖ>}úì•`N!„ÇÑE‡ëÄRѺ6†åÅu¢(eTí6feYl0žëD1-/Žù‰-KFt!„Ç+b»˜–ÂÕ`iVõ6ôX÷vc°ãÙÚãã¯!6þ;>nÜuÝj]Ô-Ë¢¼¼œÍ›7Wk!WJaš&“'OÆçóU[Ç4ÍDÀ^s{û<=+•ƒ^ußLÓLd…¯º¯¶m£µÆ²¬jcä…Bq.8<~\×ÁãK&TZ@0¥‘p1`àõ§TÎy^ŸHE)>*å¥ùSàØ9€B!~!º£1PxL«5ZUï.¦µÆçóñ쳋øöÛuìܹ“N:‘œœLïÞ½)))aøðádeeá8%%% 2„òòr6lÈSO=Eqq1)))Õô¬¬,FEjj*J)®¹ælÛ&0iÒ$5j„RŠ~ø‡~˜p8¼ï7aYôìÙ“ž={RVVF0¤wïÞÒ·o_~ýë_Ó§OvîÜÉm·ÝÆÕW_MŸ>}¨_¿>Ó¦M#??Ÿúõësï½÷òÍ7ßH­B!êX4RŽaZ”—í&)µ!å%yxý©€KEya¬¬4?‘$.TYV¶{¾¤ 9€B!~Œ [µ¡"ª¨p ¥Ú.¥á0Ç {÷îäæærÓM7aš&S¦L¡K—.\}õÕ¼øâ‹<õÔS´k׎~ýú0mÚ4Çᦛnâ¹çž«Öý믿æúë¯ç«¯¾Jdt¸ä’K8í´Óxê©§èׯ‡:ì÷M´hÑ‚ÁƒóÎ;ï0{ölRRRS´Í™3‡eË–1wî\®¿þzºuëÆðáÃÉÏÏgöìÙlÛ¶iÓ¦±mÛ6æÌ™“h…B!Dݱ<þÊ$qÉ„Ë ñÒpœ \ÇÆëO‰•ùSphå4k©„Ë ñ'e°WöZ!„âx=_F£ ÇÃÓ×S}‹ÒQ†Âu]tåIRk뺉.è™™™äçç3sæLÖ¯_Pmy¥ö=F,>ÍÀ[o½E(¢yóæôìÙ“%K–°råÊŸ|#ŽãиqcZµjÅ‚ (((H<÷ØcѵkWȼyóX·n¦iâº.Á`6mÚðÎ;ï°|ùrIT'„BÚubãÍÝhõ1è€ëÄÇ¥ÇÉÅÊbË9vÃòÔk“çs¯×Krr²Tqpß­),,<&÷-äC¢N( Ca…#`(0M0ÌØ|mµ.®öüHÄnÃ0s†¿òÊ+ìØ±ƒ‰'‰DXµj†a$s¥Tb¬wMñ1íW]u—_~9£G¦cÇŽŒ9’É“'³bÅ –þþûïàÑGåÇŒÝi°,Þÿ}Þzë-ÆGnn.Ë–-`øðáD£Q}ôQn¼ñF>úè#Ö­[‡RŠíÛ·óì³ÏÒ»woN?ýt^~ùe©B!Ds+“Ä9v¯/™H¸Ë@kcWàõ¥ —`zü(Àކc-ëå…x2@íµ×(..®õšãh1 ƒÜÜ\¾üòK/^,Éqųm›¿ýíoÇÜM'ÃPüøãVÊÊÊxüñÇ僢ŽXᘘ.¯Yû‚Zƒã¸Ü~ûí\ýõD£Qî¹çJKK9ûì³yä‘Gp‡‚‚^ýuÈÓO?Íßþö7Þ|óM–/_ÎÔ©S¹õÖ[iݺ5cÆŒ! bÛ6Ï?ÿ<Ÿ}öÓ¦M£K—.,X°Ã0øì³ÏøÏþ“ØŸÏG»víPJ%îØmܸ‘)S¦Ð¿n½õV¼^o¢‹ûÝwßM§N¸ýöÛÉÉÉ! 2qâDúôéC¿~ý˜9s&/¼ðõêÕcРA”N!„yÁQ™$ÎçO¡¼4`JC"¡bPFeB¸<‚É ö$‰ ¦Q^’KRJCìÚ’ÄiªÎ[M~~>@€¤¤c§µº´´”­[·òÞ{ïIeÅu] 9á„ðùüÇÌ~ååå±~ýz¶oß.’5ÏO^œoضl” ±{¹ª–…áÄNÀ4 –,YÂsÏ=G$IÜÉ›8qbµ¬ëñ;Ö\wÝu(¥Ë†ã8¬Y³†n¸¡2ø×‰Öu×u¹÷Þ{kÝÀ?þÈe—]–XbÝÛ_zé%/^œ(¿Þœ9s˜3gNâñÂ… Y´h®ë’ÍUW]Uíµ…BQ÷ª&‰ ¦4"TV™NkÂåES.ËÇãK¡²‚)(+ÎÆ—”~P¯¥Ô«WŸ¢¢ú¬_¿§àÑ£ðxr°m™NBí©œù(5µ›6¥›{,ô Qx½aI!D"úÖ¸¸±(<ÞƒÜ\ŠX"v} a:X. …r5Z+¢5²¸£5‡îWuç­·Þ¢yóæ4hЀmÛ¶UYDï³å¹fÐ_nëüÔsµuYÛ×:5_¿ær” !„Gžeœĩáó§$¦Oóø’¨á­Ræó§P*¬wH]Õ£QøàÅóÏë# 4lééŠÒÒRrrriܸ@Ý»wS^^NãÆQJ‘››KÓ¦;9í4¹æ‡®¤/†U«ŽLÞDN8‚AEaa!»wïæ¤“NÄãñ’RŠFFع3›K.)ÄçÓÇÀ 0!Ž• ýÐWÔ®‹ëÆ6`¡¬XTNLz®©2ºRD"QÆŒyà _êæ›o&55•;vðꫯö{îÓ§^¯—uëÖñöÛoK%B!~.×-Ú®ë`neÒ¸øs5Ëö,g£Lë_´VG$˜±,¸òJ¸â “Ï?ßÄóÏ?Ï7ÞJëÖ§óÞ{_²fÍ7ÜvÛ­X–Å‹/.';{p‚Tq˜ß#pœ#§¥ÁÍ7Ãé§,_þï½·‚;+Fòì³ËÐZsÛm·’“SÌܹ‹Ðº^â{-„8ÜØ~O#´á*‹ÆU±¿šßy}_»U«VqÝu×Ñ¥K—:ÙñU«VÑ«W/.¼ðBù…BˆŸ×¢”±+°¼ìhÃ0QÊÀ‰†±¼ÁX™21 »²,)?&ßa@ýúЬ™¢qã <žœxb„fÍ ”‘””GÓ¦šÌLHK+Dë<@ò܈c—Ç'ž¨uØëÝI“&Íš)RS IM- Y3Å)§8øýÙ@ ‡Ñd(„¨fOÄm›Âu"$¯¾¨&6‚mÛ±•, ­5áp¸ò íIÌîº.¬[·Çqwü~?h­1M¯×{Å*Û‚Ø4$¦ËVç8‘H¬»Û·ß~›“®”Âçó%¶·?>Ÿ/1¦Ý¶m¢Ñhb\×Mlßï%Þ‡ÃX–•˜Ÿ½ê{B!ÄÁ³<ÁÊ$q©‰$q¡b”2ðÒö$Ž —ÄÎÉÁz•IâaÛ‡vVjÏ_]s›+>`ûöµìØ‘Mqq ÿøÇ+¬\ù›7o&;;› žÄ0 ¾þúk’’’–Fq¸ #öw$””ìæÿx‡•+w±qãòÜsÏ‘””Ä7ß|ƒÖšY³fSZZÊ®]»hÒ¤‰| B‰ó%jÏx(]%LO”iÏçeÞ¼yüøãlÙ²… /¼† Ò·o_ 9r$-Z´ â8÷Þ{/EEEÕäž={rÇw0fÌ>ùäÚ´iðaÃp‡O<‘~ýú±yófRSS™4iIII†Avv6=ô¥¥¥‰íƒAî¼óN~÷»ß1xð`Ö®]»Ï7˜‘‘Á¬Y³ˆD"øý~¾üòK¦OŸN4eöìÙ„Ãa†ŽßïgîܹüðÃŒ9’Áƒsî¹ç‡ñûýÜu×]äççKB!A4R†aš„ÊvLiH¸¬Oµ$q —âñE¸¬€`JCÊJ²ñÓúõLN=.»ìH‘Õh"?¿ŸÏÇùçŸÄæ`¯W¯õêÕ£¬¬ €æÍ›Ó¨Q£cjÚ7ñóãóÁYgAZÚ‘ªGZ—RPP@zz:éé騶ÍîÝ»iÖ¬@b>ö³Ï>›SN9…œœ©×BÔu€®y<8¯Ñ‚®á FÅK/½Äĉ¹í¶ÛXºt)ãÆãÅ_äŠ+®`Ö¬Y3bÄî¸ã¦N𨯉'žÈÎ;ùðÙ2e —]v[·nå¹çžÃu] ÄÔ©SéÑ£çœsM›6eÁ‚¼ýöÛ 2„víÚñÑG%¶wÚi§ñ /pÖYg1mÚ4®¼òÊ}¾ÁròÉ'3eʔĀ?þ˜+V0`À&MšÄÈ‘#9ùä“ùúë¯yè¡‡èØ±#¿ÿýïY°`Û·ogĈÜsÏ=Œ5JjŒBqLˇv],oŠP1_2®Te’¸b<¾¤Ê2ðø’©ãó§tF,­Á²4çWAÛ¶G0ÓôÿÎÛïñ%%%¼ûî»RÄ!KJÒtë"¡:mÝý'34 ƒ@ À¶mÛx뭷䃢®t·òK¨”Bíõ•Ô±'1 £ZÆóx6t×uq‡`0Hii)ãÆcË–-‰e6mÚÄÊ•+¹üò˱m›äädFŒeY¬X±"6&­2³úŠ+(++ã”SNáÎ;ïäã?Nçñí}þùç¬Y³¥T¢Ûý¾Ä»ÄƒArssy衇øî»ï(//ç©§žbþüù8ŽÃ Aƒª­ðù|Lš4‰]»vImB!™NDÏJ{‚nU£L©Êö‚X™Öe¨Zƒð}̓¿f(,Ì%//—@ ÛþQ` 4Àëõ&æ¸âP8N”üü„Ãøý¾Êi‚ÿ÷ûáñxHJJJ oBÔq€oAOͶ¯ïyÍsJü$Ÿ›ñßÿþ7;wîdúôé¼óÎ;‰:þW•ßï§cÇŽ,X°€%K–póÍ7'žûÍo~Ã5×\ý÷ÞËYgŨQ£p]—ÿû߉mÅÇ“×Üî-·ÜBÇŽ)--åž{î©öÜ?ÿùOš6mÊÈ‘#Ù¾};;wî$==#Fð÷¿ÿæÍ›óÈ#ð§?ý ­5†aðþûï³fÍf̘Á_|ÁªU«¤Æ!„‡\ØQ”a`Ûåøü©„Ë‹ðø’ÐZ†ðÒ‡Šðxƒ@lÞt ¡Ò<¼Ázû ù÷ŸD"ÒÒêqÁ$òÌü¯¹®Ëîݻٸq£TqX´Ö„Baš7oNÛ¶m×Ãÿk¶mSPPÀŽ;äCâH艄%U{ºïã$è8.·ß~;7Üp¡Pˆ …ÈÊÊbÒ¤I¸®ËÎ;y饗˜2e Ñh”òòXÖp8Lii)ùùùÜwß}ÜÿýtíÚ•û￟©S§2tèP¦L™Â…^ȼyóPJ±råJÞyçf̘Aii)¡Pˆµ€ÇÇw¤§§Ó¤IŠ‹‹e'N¤I“&,Z´˲X¾|9_|ñ¦iòøã³iÓ&{ì1,ËbþüùLŸ>0þ|FmÛ³páB©-B!Ä!òxƒ¸NíIâüµ&‰K?ì$qKr{Ê)§œœ|Ô‚™M›6¡µ–±º¢N‚ô´´4š5k–H¨ü¿ …(++“ú,Ä е™Àc±¹¹Wh®”¢y³æ˜¦Áo¼ÁÓO?]-ëzÕñæUÝwß}ÕO˜0!ñï?ük®¹&ñøºë®Kü{ĈµnïÎ;ï¬öxÈ!ÕϘ1ƒ3fT+‹F£{­±ìðU[î#‘üãçÏŸÏüùó¥†!„u )¯‘$®/)–$.TYV^˜hA—V&‰ËÁ·ôaÆQíZ~,tk_³f mÛ¶•.öÇ}õNý¥Õi!ŽgFìæ—m ]‹xÀ^%>Dz,:t8Ÿ—_~™´´4ÒÓÓåÈ !„’–·2I\€H¸/ˆëDqµƒÇSYVÙÊî:6_H¸Ÿ?™kùðtïÞý'sö!„8èÊ.î µ')K-YÜ£Ñ(Ó¦?rÔ÷wÈ!ø|>Ö¬YÃÒ¥KåB!~¶ª ±3ª–Õs§$>?LGZ=…âÌãç:ì<*M­ãÏ÷Q|T¼ùæ›tëÖöíÛˇ(„BüŒ8v$–$.ÂëO!ZQŠaz0 “h¤¼²¬ ô0LÑŠ2¼þ*ÂÅpœ—:uâÌ3Ï$+++‘ǧ¤¤„öíÛÓ¶m[^{í5.¼ðBÎ<óLÚ¶mË¿þõ/òòòh×®mÛ¶MäìÙµkmÛ¶åŒ3Îà¿ÿýo¢KôòåË™7ožTFqDåçç“•••¨«[·nbÃ[Ï8ã ²²²Øµk;wîdÀ€̘1ƒ?þ˜p8Ì9çœCVVÏ>û,Ë7uÖYgѶm[^|ñE9¸â¸¦ˆ 6·wT•ŽâJפ§¦¦Vλ¨ñz½h­))‰%r x<žØ Øq‰Û’““QJ …ccÊJKKq]˲eñQ<ÙD0LLÝ`Ûv"ÉÜ–-[ª%¤HJJÂ0ŒÄ~ìKrrr"Óe$IŒŸOMM­¶ýx™ÒÒRü~?^¯ˆe`---•Z#„B¢D’¸@å%¹5’ÄÕK”%’Ä%ÕM’¸Ÿƒ-[¶ðÕW_áõz8p -[¶äøo¼ñ–eqß}÷ѼysvìØÁÚµk±,‹[n¹…-Zpê©§²téRLÓ¤_¿~4mÚ”ßþö·|öÙg¸®KRR«W¯æùçŸç©§ž’Ê(Ž(×uIIIaÅŠh­¹è¢‹X¼x1>ø Ë—/GkÍW\ÁâÅ‹™3gS§Nå‚ .àÌ3ÏäÕW_Åëõ2vìXZµjÅwÜÁo¼AFFFâº\ˆã58Í(ª°ªâµLXRO›6‚‚Ö¯_ÏÙgŸMff& ''‡Ñ£GÓ°aC¢Ñ(@€{ï½—ÜÜ\î¹çÎ?ÿ|f̘A=ÈÌÌdòäɼ÷Þ{´jÕŠÁƒã8-[¶dðàÁ|ûí·Ô¯_ŸI“&±Ä.ååå<ðÀVûâgdd0sæLòòòßì‰'žÈôéÓ),,$ ²qãF}ôQB¡“'OƲ,† F0dΜ9|ýõ׌7Žûî»Ö­[SVVFýúõ4hL'!„B¢h´Ã0 …Š $7¨L—„Ön,I\rƒØÔkž(—Ln@yI.Þ`j-[Ô5þÿ3¾0SŠÔÔØ{t'1+Îõ×_Ÿ(óûý†‘¸mÛFkÍÛo¿ÍèÑ£1 ƒ5kÖàº.eeeÄö#‘£GfæÌ™Gmj.ñËbY>Ÿ€²²2\×å£>â÷¿ÿ=®ë’žžŽRŠ®]»&’>çååqã7¢”Âq À)§œÂ Aƒ1bÍš5£qãÆrpÅq ÇûŠ5Ÿ¨í¤‰Tðç‡þÌ%—\BNNúÓŸp]—Ñ£GÓ±cG:uêÄ'Ÿ|Âûï¿O«V­ÙÐ~øa¼^/×^{-ýúõã“O>áá‡ÆãñͲeËø÷¿ÿmÛŒ;€=z••ÅСC80ÞÃðàvN•¦zòVÑ0T\åUJQVVƾ}û4hPr¤YÓ´j …eY¤¥¥1bÄ|ðŽã$³‹:Žƒã8èºNqq1ãǯò˜¸lÛ6iii?ø‚+ž_II ùùùôïߟõë׉}_ýu^|ñElÛ¦wïÞUŽ ƒìß¿ŸÇ{Œýû÷KíB!~RD¦£Í0PN¢ éezõ2—û0ƒä'Ϻôp8Ìu×]‡RгÎ:‹-ZðôÓOsýõ×ã8íÚµãì³Ï¦´´4YÖ¡C²³³yê©§¸îºëÐuÏ>û Ó4>|8×^{-J)üq,Ë"##ƒðôÓOãv»9óÌ3¥JŠãB)źuëèÖ­¶m3hÐ êÕ«Ç•W^I×®]¸âŠ+’qA…gžy&yÌ™gžIŸ>}¸ãŽ;(--å¼óÎ㪫®’7Wü*˜ÕƒñC_‰®¸VyjTå€ýË/¿dß¾}Lž<™yóæ±yóæJÇjÉcÇÁãñжm[¦M›Æ'Ÿ|B¯^½’÷©8§a4hЀqãÆ1}útæÎ‹aèºÎž={˜0a“&Mâ…^à®»îàÎ;ïä’K.!pï½÷V Ð?ýôSš6mʰaÃ;v,ùùùdee1lØ0^}õUN9å&NœHÏž=qMÓX±bëׯgÊ”),]º4Ø !„âDZ­(šn—âõ×$,ÀíI¥ˆGƒxS2‰ ÊGÌ5âÑ2¼)µ•îÓrroïêv»9r$š¦Q¯^=222¸á†hÛ¶- 6$==¿ßÏO˳Ï>[íä­[·Æ4MvìØÁÀÉËËKþnéÒ¥\sÍ5ÉÛÝ»wOþ{ذa‡|²½zõªr{À€Un?ÿüó<ÿüóUÊ”RU¦®¸Ø`së­·&o;Ž“‰˜>}:Ó§O—"„BV2I\_j­DB8·¥Ñp)¾ÔZDÃŘ®Dr³h¨_j-BeûqûÒNê÷櫯¾:¢ çHî'ĉ–••Å;ï¼#o„G W1?Ü蹡4iÚ„W^™†Ëe’žž^%@?œ3Ï<“7ß|MÓhÖ¬Y•]!„¿ºžHg˜n¬XÓåÁ)_on¸e†Ëƒ£*ÊûŒGy„áÇóñÇsà 7på•W²mÛ6Ú¶mËàÁƒY¾|9 6ä‰'ž ¤¤Ó41M“aƱo߾þ¿ßO¯^½8ûì³Ù·o­[·¦ÿþlذ+¯¼’;!C†°fÍúõëÇ駟΃>HÛ¶méׯëÖ­£M›6L˜0ùóçËT:!„â³âtÝ .×R“h¸ÓåM$‰‹”&Ê"¥¦ h¤_JMÂe…¸|‡ØÌA¦ù !„8É"t…ž¼ü\ñãT½Ÿ¦iÄbQF~ŠsÏ=—¼¼<ú÷ïeYôïߟ:pÞyç±uëV6mÚÄ)§œÂ7ÞÀ˜1cˆD"Ô¯_ŸÏÇæÍ›2dµjÕâž{îaïÞ½¬[·¥C‡Û¤§§³aÃú÷ïÏ—_~I:u¾÷µ4nܘ›nº‰;v°~ýz¼^/ýúõ`ÆŒLš4‰áÇóàƒÒ¤IHaa!=ö%%%¬]»–ÒÒR†ŠaR9„BˆcLÓ  Ýpa[1 ÃrP Ãp'ËP ¥œe.ÏaN(Á¹Bˆ“Ï&‰Så­ nèUöWJaÛ6Žã ”bÛ¶mìÚµ‹eË–‘ŸŸ_å~Á`ùóç³hÑ"233‰Çã8ŽC~~>_ý5=ö±XbúÚŠ+0`uêÔáñÇgåÊ•¬]»öûŸ£R8ŽÃž={ذa?ü0¡P(ùûÙ³gsï½÷Ò¥K^yåvíÚ…aX–EYY7ndãÆ2Å]!„8tÝHlÝj˜Ä¢AÜžÔĺtMÃ0=Ä¢e¸=©ØV…Â4½É2¥y…Bü:ÚË— +ÿTW‘ŸÅ4Íä(s<G)…RŠ 6°yóf DÇŽp»ÝhšFYY{öìaëÖ­|õÕW8ŽƒmÛìÙ³‡¯¾úŠ;3ž={‰ýÐÇŒÃÖ­[yã7¸óÎ;ùóŸÿœ|7föìÙ¼õÖ[4kÖ¬ÊÅ‚ÜÜ\V®\Iß¾}“£ø'N¤´´”Э[7.¸à‚DvúxœÒÒR–-[F§NèÓ§Œ  !„ÇAå$qSÜ Óƒn˜U¦¸ë† Ãp˜â,$qB!~5L­R£§‘˜Ò~8ŽãpóÍ7sÍ5×——GïÞ½±m›SN9…!C† ”bãÆL›6 €Çœ‚‚233¹é¦›’Û®ЧOÌÅ_ŒRо}û0kÖ,Z´hÁرcx÷Ýwùïÿ›|‰è4MK®ß¼y3999ôìÙ“n¸p8̈#¸ï¾ûÈÊÊâÖ[o% 1iÒ$úöíKïÞ½éÑ£Ï=÷¯¾ú*.—‹>}ú`Y–Ô !„â«–$.%‹X4h’Ä¥"I\Z]l;vÔ[1 ÄÉ ¢.Kâ$Ы|è+ý·Ò7º®Óþwí1 ƒ%K–ðÜsÏU™Bþâ‹/òâ‹/V;ù Aƒûå²jÕ*n¸á†Cþ~äÈ‘‡}Â;wî¤[·nÕÊ?üðC>üðÃjå“'OfòäÉÉÛo½õo½õVòvå‘v!„BÉ$q‘`r›5Óô PU¶Y3L7@•mÖ\Þ”£zL¯×‹Ûí&œ° ð¶m'—ñ ñSèºNjj"abqqñ ›õF“ƒeBˆã ß‚Çëaâĉ¸\.ü~•]!„âûT$‰ÓtDZÐu3¹¶\×M;QFùÈ`²ÌpýøÇÒ´äö®º®³nÝ:t]?!¯»bæ_4•J Žº)¥ˆÇãÔªU‹@ ÀÊ•+OX€ì8–eÉ…'!ŽW€^åí˼*ïZ¢i–eñϾ*ï–B!ŽJEðm˜nbá_:ñX8‘$Îå!àö¥cÅÉŠËG,\ŠÇ›Ž£~\WÇqؾ};¦iV rNÈ…‰ò%yŽã‹Ådj²8*Ñh”­[·V5?Ñu:cÛ¶Ôi!Žu€^õWý²Å¨B!~*+N$‰ –àK­E(Ç—ŽRÑp)þÔ,Beù¸=i‰€$TŒ?­6e%{ð¦ds`Ež¢Úê¼O?ý”½{÷þ¬^¿¦i\.—Tñã>;–Åܹs–Ï­¸¸˜zõêÉIˆc WM§Uoå­ Mšd”¡”"==Û¶Ù¹s'™™™¤¥%ÔH$¾}û’‡6nÜ89­,???95ÞëõR·nÝD;ë8ìܹ3y®N:x½^4M# ²ÿ~5j„®ëÉ)={öì9¢é5õë×ÇíN¬i+))¡¸¸MÓhÔ¨Ñh”¼¼<6lÀ®]»ÈÈÈ FÄb1öìÙ#µE!„8J.·ÇI$‰ òðU$„Ó4¼þ B<¼)µˆGƒ€Â›’I(GJZl;þ£köìÙ?ëQ½5Ý^ü2¥¤¤°dÉ©â× W?(HW Ó4éó@|~?+V¬ ;;›:0tèPrssÉÉÉ!‰‡iÑ¢>ú([¶lá‚ . ''‡E‹ѼysV¬XÁ”)S°m›Ûn»‹/¾˜o¾ù† .¸€‘#G²`Á.¿ürN=õTRRRÈÌÌ$''‡]»v1eÊ\.‹/æÌ3ÏäÝwßeÆŒÄã‡o¸[µjÅ“O>ÉÚµkÉÈÈ 3jÔ( ¹çž{hÚ´)$##ƒ§Ÿ~šùóçóòË/óè£âóù(**â·¿ý-ƒfÆ Rc„Bˆ£`YQt-‘$Îã«A,@7ÏãÑDYáºë®Ãqœ*Ï`åÊ•lÚ´‰¹sç¤ö!„GI7\‰Yy./Ñp _ñXMÓ1]^"á¼¾ÄãaPàrûÊïWDZ¿7ôB!~Éœq÷0\¡ªd]9tóçv»“£Ö‘HÛ¶“ëÑóòò=z4:u`ܸq<úè£|þùç,[¶ŒQ£FQ¯^=”RD"LÓÄårñòË/óÜsÏP³fM|>ß}÷ß}÷ÑhÇSýùbšOŸ>}x÷Ýwyíµ×’eÑhÇqÈÍÍÅçó1fÌN?ýt ±¦}äÈ‘¼øâ‹|üñÇL:•ÔÔTâñ8ñxœÝ»w³k×.žxâ ®»î:©9B!ÄQªH —âKÍ"*ÂtyÑ “H¸j‘P1†áÆ0ÝDBÅøR³ö'¶˜©BôoY›+„â—KU´eÚìƒ^Ñ$*•1ïÞ½;—_~9Û·o§wïÞÉ@·_¿~(¥Xºt)¯¼ò <ò“&MâùçŸG×u† –̪úÀ0`À:tè€eY<ôÐCLŸ>¬¬,FŒÁÞ½{y衇èׯ_|ñ¹¹¹É‘ìüü|¶nÝŠm¸ªØ¿•Ñî§žzŠ´´4ÆŽ‹¦iLŸ>¥K—bC† aþüùÉç;vìX†ÊÀ?~ƒxùÊs³Ê¬±ï™!VXTÄÈ‘O`š†ìá)„BˆåÀV®Z²$Ù÷ШTVQ U¹Û¡Èäv!„'C ©*­<¯2Å=¬Wm 5MömÞ~ûmyï„BqTtÃ…RN"!\¨¸|:{4 —Ë—(ó×$ àòø‰‹ðùkb;–¼B!Nâ]G+OˆnV¾ö¬MSU¶BWH~T!„Bü4V<Œ®›„ÊJð§Õ&ÈÇãKG)'‘$®¼ÌíM ,ŸV›²â=xS3«ŸÐ©Ôy9øWí:ó³é€É^Öâ(Iâ×ì}k7v MÓhÕªEEE(¥¨U«–eñÍ7ßP¯^=jÖ¬ @(bûöíÉ£[´hahšÆŽ;’ Üü~?M›6E)…ã8lÚ´)yLãÆIMM ´´”]»výà ©Q£ 4Ht,‹Í›7аaCÒÒÒØ´iJ)233©W¯[¶lÁqš7oަi(¥Ø¼yómÝ&„BˆÙápù$‰+ÛŸA×4 ¯¯F¢¬Òº×_“PÙ~üiµq~äúŠ+ˆF£ü¼&À'·ÛM»ví$¨G̶m¾øâ ”Rü¼ª†®ëÔ¨Qƒ3Î8CþPBüÄÏÓ½ZñAŸ|†iò—›n¢~ƒ,Y²„ÌÌLþô§?1jÔ(6oÞÌðáÃÙ³g¡PˆöíÛ“““úuë¸üòËéß¿?sçÎ¥uëÖlÛ¶ &`Y÷Üsgžy&kÖ¬¡S§NL˜09sæÐ²eKFŒÁúõëq¹\œvÚi 6Œ­[·~opÞ¿233Ù¶m—]vO<ñ .¤mÛ¶<øàƒ<ûì³,\¸Áƒãóù:t(;w¦{÷î,X°€K.¹„ýë_¼öÚkUö[B!ÄOçØq4M'‹àö¤…’{£ÇãáDY<„® A<J”EË0ÜÞõXŸ~ú)±X ·Ûõ³ hâq‹uëÖ3{ölJJJ0 C*…8"–eñÁà÷û0MógS§Ãá_|ñ%»wïfùòåò‡â¨ï‰Íu-±sš©iUïvð‡^Ó4âñÿûß™õ曼÷Þ{¼ôÒK\tÑEÜzë­Ìš5‹6mÚPXXˆRŠúõësùå—³nÝ:Âá0J)öíÛÇŒ38묳p‡ÔÔTºuëÆ¦M›ðù|†Á]wÝÅœ9s¸øâ‹ÉÎÎæÞ{ï%Ó±cÇœÖS·n].»ì2V®\‰ÏçÃãñpË-·°páBÞÿ}JJJ2d;vD)ENN¥¥¥ôìÙ“ÒÒR|>wß}7¯¿þºŒ¢ !„ǼS’X4§Phšžè…TtLœJezEò¸D™R?~j¯adg7A×3).>l—è§¿&u w¥i·ÕA·}+]/ÀåÚŠÛí–Ñsñ£y½^š6mF8œJ8ü¿®Ó²~[Öv\.·$p”†B+_G®’ËÄUù×½£ih8nø@úTUu]"®/ß ÝЫÊŽã$G›ÿûßÿòÝwß1}útJKKøì³Ï¸çž{hÒ¤ ãÆc„ „B!ü~?Žã°víZþõ¯1sæÌ乕R(¥ÐuH$œ9sª5d·é^²d .äµ×^#‹%Ë/^Œ¦i´oßž×^{‚‚ ÃÀqvïÞÍ«¯¾Ê믿žLˆ'„BˆcË4=(eãrù‰„Šªìƒîò¤ UÙÝåI%,Ä—’ù£÷AOtÜ|þ¹—wÞùyL nÖÌEݺ˜‹¯bw$âaÖ,/ë×+NôdO¥4Î=×D& Q S%‡[2è®´q‰‚Ãf4P8(šâ~$|>ii‰.@€xœž={‹Åƒ„ÃaöïßÏ”)S(..æ ÇIOO§víÚL˜0çž{Ž÷߀&MšðÒK/pÿý÷³iÓ&,Ë"  )**âå—_fýúõ 6 ·ÛÍ /¼À¾}ûxæ™g3f ß~û-Ÿ|ò ¥¥¥Äb1òóóÉÉÉ!;;›=zȺBqŒÅc¡Ã'‰ "I\a"I\ɼ)™G@@I ìÜ©U ÚåøÃíÚlÞ¼™?þ„Ë/¿”Fš°zõ*rss¹üòË1 ƒ… RP°Úµ%šG϶¡ vì8>z22àφìlåË—³zõ®¾ú*jÔÈàÃç—]vÅÅżÿþûƒLâÐIÕÌ7¾S>ꎦ~x º–lèÉÜ®ºê*.¼ðB6nÜÈ€€Äó»îº ¥}ôÓ¦Màá‡fܸqŒ5 MÓxôÑGÙ»w/<ð>ø O?ý4ôë×€W_}5¹¦\Ó4fÍš• Îb±X2\$àÛo¿å±Çã–[náø[¶laذaüõ¯% ñÐCaY£G¦{÷î¬X±‚Ûo¿Q£F1~üødÀ/Á¹Bqì™.ʱñøÒ—àõg…Ñ4 ¯á²ý‰²xxý„ËöãOÍÂq~úì¶c=ÒgЦF—.:Ÿ^ÈÒ¥ 9÷Üsøío5”ÚE4ºŠË.û.—ÆwßmdÓ¦o€VRÄO®ÇÇkÔÚï‡óÎÓhÛV'ÝInî".¾øR4È`Ë–8ŽâÊ+;±{w„Å‹¿^d¿'!~â皣çšfõéã(LÓàÊ+º`š&¹¹¹Œ=š’’’ä}fΜÉÌ™3ù€ýû÷?dù¦M›¸÷Þ{ù»I“&öìÙ³çÇ-Y²„%K–T+å•Wxå•W’·?úè#>úè£äíûï¿_j…Bqœ9v4 +Ãtû°â‘DB8ÀŽG0ÝþD™–Hg•—Åc! —§ú «í:süƒòÊ,Ë!7wK—òÍ7› …"|ýõ&b±8¹¹¹±rå* Ã`ïÞ}•ž´?-@?^Âá(7n'/cûöï(+ ±ví:vïÞþ}y(_}µŒýû Êwe’ú,ı Ñ U> ¾Ú>è‡þ2Plظb†d9B!Ä ,ʱ1\nâV ÃLèÊq0tO•2Ƕq™¬XøÐºªôsš5kB£FÇc º†¦Y|ýõ2vìø‚H$Fjj*‹-⫯¾"Fyë­·Ð4@ @Æ Ñu]*‚8j†uê@ãÆÇ£®aš>ÿü#–.ÝF(Âëõ2oÞÿ÷ÿWm¿w!„BüÔàÂMñc˜¦ÛŠH—,‹¡i`[‰2+Aw¹*ˆ¨W¯—\r )))'äuÛ¶ÍŽ;Xµj•Œ8ŠŸL)EóæÍ9ï¼óNØŒŒh4Ê–-[ÈÍÍ•?ˆÇ¢}T`Y ¥iUGЕvèβ,f½9“7ÞxƒÙ³góÖ[oqÅWеk×d°ˆF£Ô®]›‹/¾˜åË—³}ûöDRMcèС´jÕŠxÞ²eËØ¶mgŸ}6wÜqS§Nåî»ïfÚ´i‡ г²²¸è¢‹Ø°a§v‡®]»2wî\>þøcŠ‹‹yòÉ'¹è¢‹(**â©§ž¢¬¬Œo¼‘`0H³fÍðx<ÜtÓM¼ôÒK  !„Ç:°pl44ÇÂt§–aš^ ÇŠãò¤1ÌD0îX1\žTbá’*zE"Ê]õºÛíÆívŸ×í8ŽLmÇ”ax<ž6‚í8ŽŒž q,ÛGñ¸BG×ô#Øf­üÿº®U»òë8N2õÕWÙ¾};¦i X½z5={ö¤I“&L:•ñãÇ'÷.¯x\MÓ0 #y! B<ç…^ ¤¤„wÞy‡‚‚‚*÷‡ÄUéÊÏéƒ>à“O>Á4Í*çZ»v-š¦ÑªU+fÍšEII †aà8¹¹¹Œ?ǃ®ëض-µD!„8ÆL—DZqyR —âOË")tÜÞÄÞèþÔòÄq€Ç›N¨¬êa’ÄAp^¹¿qâ:^JFÎÅ1S9Á²ÉBœG‹Û8ÊA×5~ô%Ýôôtj×® @aa!‘H„p8ŒRŠ””þþ÷¿Ó¥Kž|òI&NœÈæÍ›™?>ƒ ¢nݺ@bzL  ==×^{±cÇàõzñxl§FÙ³g±X¢qnÒ¤Ir/ó-Z$ƒùŠí&OžœÜ+=%%…—^z‰;vpÿý÷sõÕWÓ¥K Ã`ÿþýX–E¿~ýxòÉ'“Á¿B!Žx,„n˜DÃ%¤¤×&\V€aú0LÑPQ¢,T„az0Láò²P`‡Ú'MAp.„BüÜ)1K9„ÃöAYÜÑÒi•"{ÇQüñäÌ3ÏdÙ²eŒ1€çž{Žë¯¿€·ß~›üã 0€Çœ0pà@öîÝ Àš5k9r$W^y%[·neÈ!\rÉ%ƒA–/_Îm·ÝƘ1cª<Ÿp8ÌÒ¥K•ï3±mÛ6ÌM7ÝD»víX¾|9?þ8W_}5»víbÈ!ضÍÈ‘#¹öÚkY¼x1wÞy'999 :¥½{÷®2ò.„BˆcÃty˓ĥ áñÕÀ²"hh‰ô`o:¶%±ÍZ:á`ޔ̓~zÞ¼yD"”Rœ}öÙdggã8ï¾û.J)~÷»ßѨQ#lÛN–sÎ94lØ÷Þ{˲hÑ¢gœq~ø!¡PˆºuëÒ¡C–.]ÊÞ½{QJÑ AÚ·o/•QWÑh”yóæ¡”Âq:uê„Ïçcÿþý|öÙghšFçÎñx<äåå±hÑ":wîŒRйsçбcG222ƒ|ðÁÉ8¡fÍšò&‹“Š£ WØ–ÂQGÅ])…išÜx㘦Aaa!£F¢°°0yŸÙ³g3{öìC>à°aÃûd,XÀ‚ ª”Í;7ùÁ<”}ûöñÈ#T+_¾|9Ë—/¯V>cÆŒ*·?ûì3>ûì³ä튋B!„8ŽÇN$‰sâè¦ÇŽ£•g¦ul £¼,1Z®áØq ÓmÅÐÍÃd`?I†Ño¾ùfî¹çt]géÒ¥ôîÝ›iÓ¦%—Ý-[¶Œx€©S§¢”"súé§ó¯ý‹‚‚‚ä,Æ3Î8ƒ¯¿þš¢¢"ÇÁ²,rrrhÓ¦ 5jÔ૯¾"sÑEI…ÇMqq1wß}7÷Þ{/¶m³jÕ*|ðA&Nœ˜Ì±jÕ*xàž}öY\.¶msÉ%—0qâÄälÖ+VпÆ‡¦iضÍ9çœ#º8 H°mˆÛ‰AqSG«Ò¶é‡lT,ü˜>ú]דÓÍ…B!ŽDE’8ÛŠãö¤‹”bº}(¥°­(nO±hÃô¢V<‚Û›F$T„ûPz²óòË_‡›’’Âßþö7zöìÉîÝ»;v,gŸ}6š¦±lÙ2ºuëÆ˜1cèÙ³'&LàÚk¯eõêÕU–~ùå—ìÞ½›üü|t]Ç0  @ƒ ø÷¿ÿÍ‚ $@Ç•®ë4oÞœœœZ¶lÉ­·ÞÊĉéСJ)/^Ì_þòÆÏ´iÓèÞ½;Ñh”§Ÿ~šóÏ?€E‹ѳgOfϞͺuëä'oûÄËvp05¥¡Ujç´ƒ¯DkŽãðÕÒ¯ŽËzä‘GèСùùùÉuãB!„8¹T$‰óxÓ•íÇŸV›X¸4½’XLœ¨úý›ßü†™3gbYáp˜ììl¾ýö[¦L™B½zõøòË/iذ!3fÌÀ¶m"‘™™™RgÅÉ +°°•Ž£@¯hÜÊw^ûŸ7tO?ý4J)233å¯#„Bœ¤*’ÄEÂ%øÓêb¸¼†‹H¨Z"¡" ÓH,ÄŸV‡`iÞ!“ÄLÇaóæÍlÛ¶ ¯×‹×ë¥iÓ¦„B!"‘£FâÛo¿%sÚi§Ñ·o_t]§I“&|ûí·lÙ²…’’¼^/‘H„`0H$9dà/ÄÿB(bûöílÛ¶ àv»©_¿>Á`P(Ä]wÝE,# rË-·pþùç£ë:7NÖß~ýúQZZJýúõÙ¶m›7oNî%ÄI £a;‰¥Þý0!½aètìØ¥›6m¢~ýúøý~>ÿüsZ´hAÆ ĺ“•+W‰+f]tQr-ÉêÕ«“Û¥Õ¨QƒvíÚaÛ6'™ðíÔSO¥I“&,^¼˜óÏ?MÓØ´i»víªv¾/¿ü2¹¥Û÷iß¾=iii@"¡Ü¶mÛÐ4‹/¾˜‚‚Ö®] À¹çž‹¦i,Y²„¦M›rê©§øê«¯¤ö!„GÉ4+’Ä¥ ãñ¦•'„ÓpyR‰†‹q{Ó°ËGË=Þ4¢áb¼þŒ“>°ŒD"<üðÃØ¶Mß¾}9óÌ3ùðùþúë±m›вeKn¼ñF‚Á ]»v¥sçÎtîÜ™îÝ»‡éÖ­S§N¥W¯^É„¼=zôÀ0 |>@²¯&Äq 6”bëÖ­ôíÛ—x<άY³ÈÊÊbذaÜ{ï½hšÆ›o¾I  OŸ>Œ3†Æ3sæLn¿ýv”R<óÌ34jÔˆiÓ¦qçw0qâDš7o.o²8Ù"t[%þ¯4Ì#¹&­imZ·ææ[náoû×\s Í›7çùçŸgõêÕäää°dÉýúõã©§žâóÏ?G)EVV¦iò»ßýŽÎ;3räH,ËbÀ€¤§§³hÑ¢*[›¥¤¤pß}÷qÖYg±oß>š5kF·nÝ1b]ºt¡K—.üãÿà²Ë.ã÷¿ÿ=£G&ö¹ÿñ¤_¿~Ìœ9“ºuëÒ£G†Nnn.Íš5£_¿~ :”zõêñÈ#0yòd7n̰aÃØ¸q#»wïæ‘GaüøñÌŸ?_*BqTvÐp ]7Ë“Æé忳+•%z&ŽSQf¡æI~ñÂäí·ß®Ræv»yçwª”½þúëÕŽ5kV•Û/¾øb•Û]»vMþû¼óΓŠ(þ'z«V­xë­·ª”Ÿyæ™ü÷¿ÿ­RöþûïW¹]§Nje 4¨vœ'p°ìÄçGGÓ¨øÑ*þ}PpnY6ï¾÷.–eqË-·0sæL"‘;wæ”SN¡iÓ¦´mÛ–:‘‘Qe sÏ=— /¼ììl.¸àRSSñù|tìØ‘•+Wòúë¯SVV–¼ÿÚµkÙ±c;wfÆŒ,X°€³Ï>›¬¬,ºté‚×ëå÷¿ÿ=µk׿ÒK/Mfƒ<œŠÇ<ï¼óhÓ¦ -[¶$;;¥Ó¦McæÌ™äääðàƒòøãóŸÿü‡ììlZµjÅgœÁùçŸßïç /”Ú#„Bmĉ'21[QL·+A× 4MÇŽG”iºn`•—Åc¡“þ½9ÜN8Büeff2eÊy#„8BJA¼<“»m´ÍZ2(¯|@¥R]×yçwX°`Ë–-Kn‰`“&M"77¯×›œvþüóÏÓ¨Q#n¾ùf®¿þzzõꕜ¦Vyºš¦iÕ¦¯9ŽƒV~Ñ ò1ûöíã±ÇÃëõâr¹ªLqw¹\ÉÑøŠ5*{0>þøãÄb1|>EEEض͎;¨U«¹¹¹ÉséºÎ+¯¼Âš5kðz½ß;J/„BˆïgºüåIâÒ“Iâ¢áR4MÇã«q q\$€×ŸQž$®–ur·ÁçœsŽTqÒp¹\üö·¿•7Bˆ#ŽÐAY‰Qt8ô®jÕvM£Q£Føý~ त„²²2@€´´46lÈôéÓ¹òÊ+ÄÚmMÓ¨Y³&±XŒ²²27nŒã8ìÝ»—š5kÒ¸qcöìÙƒišdee%ƒj]×iÚ´)uêÔ¡  €h4ÊÎ;Ñuôôtî»ï>ÆŸ\WðÐC1oÞ¼*Ó½òóó‰ÇãdddСC^zé%Î8ã Ú¶mKNNãÆcöìÙL:•¦M› )**"55•:uê0}útn¼ñF©ùd•²çž{.ùï… ²páB©mB!Ä1¡*z"hš^ÞsIôf”r”iZ²g£izâwºqØÓI€.„â„è¶¶Tš‚Dbvåhèhh‡ˆÐ–¥ã8 µ]«Öþý/'–mÞ¼™Áƒ£”"‹É_[!„8 ØVMÓ±¬o:‘P1.O J)¬x¯¯‘p .wbéZ<ÂëË \V€Û_ãð'–ÙïB!N´òòšê~¸kÊNy@¯¡aV¿Ûñ¿­ë:çž{.ƒ "ãr¹èÑ£@€¼¼<òòòÝk-[¶dìØ±(¥2dkÖ¬9é÷GB!~é\îÃ'‰ó2I\Í_M’8!„¿êØGi$v#Õ~8IœvBöÌÌLÆÇÛo¿Í 7Ü€eYüýïÿÁã<S¦LaÑ¢E¼öÚk<ðÀøý~ù« !„?sñXÝ0’Iâ"Á¢IâÂåIâBIâÜD‚E‰$q/?1’þúë¯óúë¯'iÔ¨íÚµCÓ4Âá0óæÍûÁ7Âårѹsgt=1çîܹÄb1êׯϹçžË§Ÿ~Jaa!>ŸË/¿œµkײuëV.½ôÒä…+V°cÇ©UB!Ä÷0L7Êq0Ý>b‘.?‘NÓp¹ý‰2·Ƕ…Ë“(óxÓ8ÔPBrÄ !„8)¢sl[hG¸Í@­ÌZ 2„ßüæ7ôèуG}”Ûn»6mÚ0dÈêÔ©ƒÏçcðàÁ\vÙeÉÀ;‹Åhß¾=Æ £fÍš”••1zôh-ZD×®]ÉÈÈHfI¿ð yì±ÇðûýÔ¨Qƒ¡C‡Ò®];úô郦iüæ7¿aÈ!4hЀzõê1bÄZ·neY<üðÃôèÑã{_¦i 0€nݺ éÖ­ƒ B×ulÛ¦cÇŽ :”ÔÔT D×®]‰Åbüå/¡ÿþÄãqZµjÅðáé_¿¾T,!„âGÑDÚÕBïJ¿GûIQø‰^§iÚÄABüÔ~¼,ëâ$ü\CÜv°l…í¨#˜â®iضÍ'Ÿ|‚eYôìÙ“éÓ§ ¹ð ±mÛ¶QJ¡”¶í*#ÝW_}5×]wgœqguV•)é]ºtá¾ûîcÈ!|øá‡´jÕŠZµj1oÞ<>úè#êׯO³fÍxÿý÷QJ‘››ËŒ3(,, ¨¨ˆ%K–pÎ9ç°zõjzõêÅG}ô½¯K×u.¹ä²²²èÖ­µjÕâ÷¿ÿ=𦑗—ÇСCñù|Lž<™ÓO?~ýú±cÇÎ?ÿ|<]»v嬳ÎâôÓO§FR³„Bˆïa[14]ÇŠ…q{ÓˆGËÐ ºn…ÊËB膉n¸ˆGƒ¸½iD#¥?iŠ{E?æDýX–U¥_$ÄOQQ‡*êÕ‰ª×r¡@ˆcÇQŽr°Ëv•Åý ˆ>ù…jßxã /^Ìu×]‡ã8\|ñÅÄb1RSS ‡ÃX–E8{×­[—n¸îÝ»sß}÷%¿\.¼ðBúöíˈ#Ø´i©©©”••Uù:¸!ËÍÍ ðí·ß&Ë-Ëâ?ÿùo¼ñÆ #;;›Ûo¿½Ê±iiihšF,#‰”_­Plܸ‘Aƒ‘žžŽišÉF4 Fiܸ1ÅÅÅ”””$ÏFéÛ·/¦iâ÷û)((š%„B|Šéë_ Büƒ’Äe$Ë’IâR~z’¸Úµkcš&[¶l©²”îI)E(Jdq´ à ;;Û¶Ù°aà »àcÛ6Á`Pê³Çe+4G¡iG°=±©FófÍÈÊÊÂãñ$ƒð>ø€¬¬,ÆŽ‹Ëåâ½÷ÞãÅ_`÷îÝ4hЀSN9Çq())¡yóæ‰}ÕÇŒáí·ßfß¾}üóŸÿ$‹Ñ­[7öîÝKYY-[¶ÄãñPRRB~~>-Z´@Ó4jÖ¬IFFÅÅÅ4lØ &0gΦM›ÆØ±céÝ»wrvMÓøÏþƒßïçÕW_å…^@)Å–-[ðûýdggÓ¿z÷î×ë¥ÿþdeeqë­·2zôhÆÇc=Æ·ß~Ëi§FÓ¦M9ï¼ó¸âŠ+x衇’„BQ]<B× ÂáRü©YDBE¸Ü)(å —”—ãrù@ƒH¨j¡@>núA}~pz~~>))‰mÜöîÝ{Â_(Jñc(¥°,‹}ûöáñx(..þYô;KKK%HâX|ÆË?窼8¢mÖLÓ¤u›6Ìœ9ÇCFFF2@˜1cJ)ÒÓÓ“Á9Àˆ#¸÷Þ{¹òÊ+Y´hÏ<ó mÛ¶eÕªU¼ñÆ@bšûÇLii)ï¾ûnr6€gžy†?þ€óÏ?Ÿÿû߆AÓ¦MYµjH$7dÈ:wîL§N˜={6S§N­òfÏžÛífíÚµ@"á\¿~ý¸÷Þ{¹æškؼy3S¦LÁ¶mêׯO$á‘G¡  €~ýúÑ«W/Z´hÁøñã têÔ €!C†Hp.„BüÃp¡”Â4=ÄbAL—Ƕ@Óå-/óâ(Ô2—'åð'=Ìâ¦M›ÈËËCÓ´ŸM¡ë:ûöíKÎââH9ŽÃêÕ«qçgU§5Mã»ï¾“?Çê³Nb¦•öÜ%ªrhnjŠ›Ï ƒòP\´ƒ-ßlâÝ9óyfÂÿÉ»&„Bˆ£rÝu×òúŒW°l…$‚q;ž^ ×÷–ØV„ßí`Õêå,Y•ªÝ…¡ÁÓ5Å4Dë~øa•„Ÿ Û¶“3e=º8R–e1gΜŸísKIII&ˆâ×&Pš×_‹O×Ĩ‘âF¡p ¥Àr@á`9q4¥ÈL±Hõ•ñæ{J]„òŠˆX6çvncÛ(ÛÁ<¸¨¶Í‡½@-„BqdÁ©EÓ âáR¼þ ÂÁBÜžTPŠx4ˆ7%“H°—ÇhÄ£exS2 •æáI©ù£ëOú“¼áâ¤aš&]ºt‘7Bˆ“•¥ ÅAÛ¬I .„BˆãÁåNÁ±-¼åIâ|)™Xñ¶ÇëÏ ÈÃ믉mŰ­h"8ä“’^7±BqrÆç8$¦¸ÃØ]!„âhYåI⢑R|©µˆ„Š1]tÃ$N”EÃņÃt ãK­E¨l¿Œ !„8©9 TyQ³Zø. B!Ž1]O$‰3LV,œXoîØ.7V,ŒáòTJ—¸ŸËåû3KÇE!Ä/[b¢˜†B¡kJQñÿB!„8v4]ºnà8ºn ”J¡ëfy™™è¥T.3\‡ÙNíöZB!~Á¹ck(GC¡Ét!„BV<‚¦Ä¢ex|D# Ãn˜Ä"¼åeºáB7\DËË"¡¢êl«t^$@Bñ ÒÑP*ñ#kÐ…BqܹÜþò$qÉ$qv<‚mÅñúk äáó×Ķ¢ØV_J&Á@)éu$®bðÜ‘÷Vü?{gfEq¾í»ºûìsf¶aw5²)Š( Q5A@À¨h4ʧþbˆ70Á¨¸gqW¢D\þ È> ³/gïîúþ83Í ˆ:¨hÝ×5ÌP§OwŸê®ÓõT½õ¼ …Bq<‹óäcÎ’[j­A‡#R+ …B¡P|ÌDMÓ‰F*ñ2ˆ…Ë1Ü^¤”Iã¸@&±hºáA ˆEÊñ2‰T•àò¥¨ T(ªÙ³g±X )¾Û.¥ÄårѲeKUÑ Å)ÒíêPw¨'ºZË¥P( …¢šž4¿Ñ]˜f Ýp0‰ÓÝÉ2Ý] ¶V™Ë£*O¡¨Åܹs)**ä”SÚ!DÃf! Ê‚dddpÞyç© W(޵8—`J‰”6š”õÌ + …B¡P40š¦'Íßtƒx,„Û“‚iF4ÃMŸ|ò kÖ¬©ó|P(¾C/ —ËKzz‹隦a¹úê TVVñÜsÏ1zôh§ÿ¡P(Ž‘HÇIbROˆ»¨ÿ †n0ü¢áŒ9’ÊÊJRSS7n………‡=PNNEEE‡tZ322˜5k?~<_ýõññ•(ÙÙÙGüì?^¯—çž{ŽfÍšñÐCñÎ;ïQèŒ5Š!­I\Ö IDATC† …ðz½L˜0ÒÒÒo<ŽÏçÃ0 *++y-;;›’’’zxûöíyöÙg™:u*|ðAƒ~Ã0ƒGõ~Œ{¡W¯^Üzë­x< ©¬¬äø¡Pè;kذaL˜0)%ƒ>¤Îª>„äää°ÿþõþnÒ¤ Ï<ó ¥¥¥H)ÉÉÉaÒ¤I¬_¿þ°ïñûý<üð䦦¢ë:›7oæÞ{ï%‹Ñ¦Mþþ÷¿;×*''‡k®¹†;v|¯ó;v,£Fbøðá”””qÛììlžyæ*++ ƒ¼ôÒK¼þúëØ¶M¯^½¸í¶Û())!++‹«¯¾šüü|®¿þzÎ?ÿ|ÆÏž={ÔSLq\Rcçñ¥ª,ÄŸ’MQ)Ñ4¡C‡rå•WrÏ=÷0räH Ãࡇr6ëÚµ+={ö¤sçÎNÙôéÓéÙ³ç!'QRRÂ_þòRRR˜6m ,à‰'žàÄO<.ê¼W¯^u>ûE4åöÛoÇëõ~ãÈæ‰'žÈu×]ÇŒ39r$éééÜsÏ=ßx ÇÃUW]ŰaÃy­U«Vüõ¯%ÔûÞŠŠ >ýôÓc6Ѽys¦M›FãÆ´kàñxxê©§ê}h-X°€O>ù·ÛÍĉ‰ÇãÜsÏ=dgg§c½ñÆlذ¡Î lí‡éСC¹ñÆ¿÷gÒ4§Ÿ~š“O>ùG½¿g̘A$aäÈ‘ÜrË-äççó׿þõè›ÚŒ?žN:ñ»ßýŽ[o½•0hÐ üqòóó5jwÜqååå<þøãßû9sæ"(¤”èºÎ´iÓ˜7oW]u·Þz+¤M›6lܸ‘ùóç;ï™0a‚¦úòË/S\\Lvv6—^z)}ô›6mb̘1”––òŸÿü‡~ýú‘——ç„Z†Á;ï¼Ã®]»ñ©i¶móÜsÏFiÕª¬™Ô(,,äÕW_`øðá\ýõ„B!®½öZ ÃàÕW_¥  €ŒŒ .¿ür„˜¦É¬Y³Ž*ì|„ N¨ÛìÙ³ùúë¯ ƒ\qÅÎ9D"ž}öYç}C† ¡E‹¤¥¥aYÖQiÖl÷ÔSOÕ™í»ì²ËÈÌL†.^¼Ø ¿ûýïÏE]ÄÊ•+ ƒÎçjÛ¶-wÞy'Í›7güøñÄb16mÚÄG}ä%—ËÅW_}å̼{½^F]׉ÇãÌš5Ë9‡þýûÓ®];*++™7o#FŒàí·ßf×®]L˜0·Û À믿NAA%%%2yòdî¼óNŠ‹‹}õîÝ›O<‘矞´´4.¹äæÍ›ÇæÍ›q¹\Œ7]בRòâ‹/RU•œ±éÔ©“3¨TZZÊK/½äÔwÓ¦M)//géÒ¥\pÁ¼öÚk3þ|î»ï>î¼óN6nÜXoG£Qf̘Á¿ÿýoN;í4Þÿ}ÆŽ‹Ïçà¿ÿý/;wî iÓ¦ >!Ä!u$¥DJ‰mÛ´lÙ’¡C‡òúë¯sÁ0zôh¶mÛÆµ×^‹¦i<óÌ3D£QÚµkç¬!«ªªâ…^pê»M›6üóŸÿdìØ±NÛxûí·¹ÿþû™î½÷^5jÄ<À©§žÊ‚ èÚµ+Ó¦MCÓ4š7oÎUW]Eii)«V­bܸq\yå•lذh4J8fÉ’%,Y²„ÊÊJ|>>ø ­[·fÁ‚üú׿æ¾ûî;*!±lÙ2/^LFF÷ß?éé餤¤0fÌRSSY´hÇçü#C‡eâĉ¬_¿žÏ?ÿÜGbëÖ­¼ôÒK\}õÕ<òÈ#¼öÚkÌ›7€«®ºŠ±cDzråJ***˜2e 'žx"¶m³víZ¤”äçç³téRg€¦¸¸Ø µ]µjË–-cëÖ­ÎñV®\ɾ}û¸úê«ÙeÇÕW^Inn.Ÿ~ú)çŸ>wß}7ýúõãæ›o櫯¾bçÎÜwß}¤§§STTÄÝwßÍÀY¸p!7fÚ´i¤¦¦RQQÁý÷ßOee%>ø ^¯×9~÷îÝ5j.—‹¬¬,ÆŒã ú<ðÀôèу pòÉ'óàƒâr¹h×®S¦L¡ªªŠ+V0fÌ&L˜À_|Á!C6lÍ›7çÊ+¯äÀçóñä“O2þ|î½÷Þæ%©”°, Ó4¹í¶Û1b‹/Æï÷sß}÷‘MZZ<ðÙÙÙ|úé§\pÁL:õv“““Ã}÷ÝG  ¢¢‚5kÖ`š&EEE,]º”¥K—bš&¹¹¹N¤ÄÒ¥KùÍo~ÃM7ÝÀ¦M›8÷Üs™ýôS>þøã:¢÷¤“NbÑ¢EìÞ½HF‚|=öƒ ¢W¯^\qÅN„J§N¸òÊ+ñûýD£Q-ZDÓ¦M7nœ3ØÒªU+ÆŽKaa!kÖ¬áꫯæòË/wÎÑçóñØc1jÔ(žyæ']Î?ÿùOV¯^ͨQ£hÒ¤ S¦L9äó=÷Üs¼öÚküùÏþÑ#Šo/h“â[3ܘñ(†áÁ¶-¤´“ŽíñhÒÙ]ZØÒB7<Éí\¾#/±ýFí-œu} ùcЯŸ`Ò$áÃw‘™ù"_ü57Ýçž»¼¼w¹öÚ×_oÒ¥Ël{.Q7‚âøPɶ ¦‘’¢Ó­Û©¼÷Þ{Î3õH”––rÎ9çЫW/Î:ë,öíÛçôÏ:ë,zöìIqq1Ü~ûíÎû®¸âŠ:¾1 Å/J #èHtŒCŸzG7[3›'×…mÛ¶ !Ä!3Æ‹-bêÔ©L™2Å y>\'[JInn.Á`uëÖáóùÈÈÈpB˜O>ùdÊÊÊX·nS¦LÁëõ‰DœãÖì·öì™”˲øüóÏ4h;wîdøðáx½^§ƒûÇ?þ‘ÔÔÔ:HJÉæÍ›Ù°a.—‹¶mÛ°yófLÓ$‰°fÍš:Âé‰'žàÞ{ï¥I“&\ýõGòêõzù¿ÿû?¤”ƒAÒÒÒœºµm›üü|Ö¬YC"‘p„R‹-¬]»–¬¬¬£šˆF£<ýôÓhšÆ£>ʳÏ>Ëøñã±,‹¶mÛâñx¸ùæ›uÌ)))H)õ¾»wïfõêÕÎþÊÊÊ(((`íÚµ‡˜ñ¬Y³†h4zȵ¶m›‚‚Ö­[G$q„XÓ¦MIKKãóÏ?ǶmÚµkÇ'Ÿ|B8æ±Çã¹çžãüóÏ硇Âív;3ÞÜu×]<òÈ#Ž‘I<wf™k·†3fðä“OÒ­[7îºë.'â!55•Æ3|øpˆ”’-Z8±XŒÆÓ£G^xáFŒaTUU1kÖ,3gÎd̘1ufóë»ÏO<ñD·Ýv^¯—ÔÔT<%%%<ûì³Ü~ûí|ðÁüîw¿«3k,¥Äív3sæL¶oßÎôéÓ‰F£|þùçH))))©3ãí÷ûiÕª;vì`ÕªUH)éС»ví"‰Ð¡C>ûì3Ú·oÏE]„×ëÅ4M^~ùe|><ò&L`÷îÝTTT°{÷nú÷ïÏ_|Ïç#==F‘——‡×ëeÒ¤Ix<ÒÒÒœA“õÏåË—³aÆCꨬ¬ )%™™™L:•—^zÉÀGbРA´iÓ†±cÇ’––Æc=F÷îÝyÿý÷äìöĉyøá‡éÖ­)))ìÞ½›»îºë}UVVrÖYgaÛ¶³&|Û¶mιÇãqV¯^M·nÝêýNÛ¸q#[·nÅãñ8ƒC5mqòäÉ 0€qãÆ1wî\'zbøðáŒ=š›nº©ÞziÔ¨#GŽdöìÙlÞ¼Y=ÍÇf"’4‰ •' á* ñøR‘Ò®6„Ë&\UtÀ$.\†?˜CUùÞúMâ¤Ó«ùÑŒÏg ÚøýQ„(Ãï &ðzø\¤¤$p¹Àã©BÊ*P©lÇ.—‹›nº‰D"A8¦¸¸Û¶ …Âlß¾3fqIišD£QæÎ‹”’!C†ðÒK/1eÊ^y夔 4ˆýë_Nä˜iš|öÙg*Œ^ñ‹D’œ=¯¹ÿÊÅݶmöíÝKJJ >ŸH$â„×Ì0Μ9“¼¼<¾øâ &NœXç½ÿûßÿ˜>}:wÝu·ß~;«V­ª³ÿÜÜ\,Ë¢°°ðˆ³ÁµËÝn7@àCT¿‰uëÖ1iÒ$7nŒ×ëýVnã‡Æ³oß>LÓdÿþý\vÙeŒ1‚ÿ÷ÿþ'NüFîgžy]×¹øâ‹;v¬cvÔô(·=ùä“™5kÿ÷ÿǸqãx÷ÝwyðÁ¹ùæ›døïèÑ£âñ]»Þ³³³ñù|ŽqUí×[´hQý%^|Økv$ÊËË ‡Ã4kÖ̹5ŸÍårqÍ5×ФI^}õU}ôQgö’f@'NäÉ'Ÿäé§Ÿæºë®;䨵ÿ¶,‹1cÆÐ¥K^~ùeî¸ã'Üß0 ~øa–,YBóæÍ ©Þ·oŸã?ðÄO8çjš&=ô)))¼ð Œ?Þ1†äR†¦M›RYYIUUB***¸üòËIKK#33“ýû÷#„`Û¶m\z饌7ŽÉ“'ó»ßýιÏkÂÞÿð‡?0sæLÆŽËÓO?]ç3ƒÉÜ¥53Äßæ>9ø;kÖ,ÒÒÒxúé§¹úê«Ùµk×!÷_Íq…Äb1FމÏç#''‡¯¿þMÓ((( %%…Æãr¹CÈX,F,;l{—R²páBþýïsÿý÷×¹Žéé餦¦:@—Ëå´;Çã Ôìïõ×_gþüù\qÅÎýp8s·ÂÂBLÓ¤iÓ¦H)ÉÈÈ`ÿþýõŽðM7iÒÃ0ؽ{7UUUƒA Ã@Ó4úöí˵×^ë,×hÖ¬YC¸-Z0kÖ,æÏŸÏ“O>©žfŠã¯ÓïöcÛI“¸på~|5†pBàõ§®Ü7E"$Þ@&áÊý‚°¬ïnàv×o€û}Ñ´<Ÿ-[ÖRXXB(âõ×_gÞ¼yìÝ»—ââbþþ÷¿£i[¶l!==]ÝŠã‚Aƒ9‘¨_}õóçÏgïÞ½Î3»f"éH¸ÝngédII ¦iòá‡2pà@lÛF×uZ·nÍØ±c¹ï¾ûøè£øðÃè3£Pü|ºÀ®e÷­ ÙéŽrÝuyðᇘ4iK–,Áår±råJg»•+W²{÷î:¢ 6sæÌÁëõò—¿ü…‹/¾˜ÓN; HšËMž<™¹sç2cÆ úôéCii)½{÷Æív³ÿ~gviñâÅtïÞ>}ú0bĤ”ÜvÛmTTTðå—_Ò©S'LÓdùòåœx≴iÓÆI]T3Û¥ë:†a ¥déÒ¥´jÕŠsÎ9‡qãÆ±{÷nî¼óN'¹F ÔNo°dÉN?ýtn¸áºtéÂm·ÝFqq1·Ür º®óꫯRYYÉe—]öFlË—/ç׿þ5}ûöŶmŠŠŠèÙ³'Ë—/¯s\]×uê›6m¢¢¢‚>}úðùçŸÓ±cG>þøc***+€·lÙB×®]q¹\H)€uëÖÑ­[7úöíKÛ¶méÓ§wÜq_}õ‘H„µk×Ò®];† –-[¸ë®»R²qãF***èß¿?W_}53gÎdöìÙôíÛ× ÷>å”Sœ‘Ñƒëµæ3Í™3ÇÃСCñz½uÄÎÈ‘#éÝ»7>ø k×®eèС,Z´È™E¯áºë®cÚ´iÜxã¬ZµŠ~ýúÑ·o_ Ã`Æ tîÜ™E‹qõÕWÓ¡CfΜɎ;¸ôÒKY³f ÅÅÅlÙ²…Î;˜4iÏ?ÿ<ÿú׿èÒ¥ ~¿·ÛÍ)§œÂúõëëÌ™2e üã™6m7ß|3-[¶DÓ4 ÀøñãyðÁY¾|9ݺucðàÁôë×Þ½{Ó¢E n½õVâñ8üã)//çÝwߥ_¿~\zé¥<ôÐC´nÝšœœt]gÏž=<ôÐC<öØc,Y²„ 6°lÙ2š5kÆ=÷܃¦iuÚFÇŽI$hšV§ÝÖÌÈ÷ë×O<‘uëÖÕñ–x衇°m›G}ÔiwRJ§ŸŸÏêÕ«éСýúõ£K—.tîÜ™Ûo¿Ý»w3qâD¦M›Æœ9sX°`·ÝvÛ7~W-]º”óÎ;+Vзo_š4iÂÒ¥Kz¿ì²Ë¸êª«ˆD"NûÙ´iåååôéÓ‡@ ÀÞ½{ï¤Å‹Ó¥K¶mÛF¿~ýHKKcÉ’%G<‡3fУG¦L™ÂÔ©Syúé§¹æšk(..ÆçóѳgOÚ¶m‹‚sÎ9‡‚‚Ç[£ö}^ó÷СC7ÜSN9… 68Žî÷Ýw ,ÀårñÔSO¡iƒ cÇŽÜÿý|øá‡<üðÃÎùuÖYu–vÔ‡Yºt©zà)~R˜f MèD£!<¾4bÑJt#ÙÑOÄ’e‰Xšîª.«ÄãK#)Ãå |'qÞ±#XÖ±èÉÐù¶NZZ&íÚµs¾kr×ü?''‡ÔÔÔz³¡(?EjúŸ>ŸììlB¡ÅÅÅŽ7Ò·¡æ¹}öÙg;^EsçÎE×uZ¶lÉš5khß¾ýaM‡Š_ŒN¯^³%ž˜_&tÖÁÐ$¿95 ÒCYi>_mÞÄç~È#Óg‘››K¯^½B‡ùÏþó­|þùç³hÑ"ì˜@™¦é˜(ArÝxóæÍ‘R²}ûv–/_î Œ1˜sçÎuB«[µjE=R2{öl.¼ðB¶lÙ‚a´lْٳgcY:t K—.Ì™3‡D"Á°aÃÐuÛ¶™={6±XŒf͚ѻwoæÏŸOqq1Æ cÏž=N‡·öy,]º”íÛ·ššê8F›¦É›o¾yT3ò]t‡Ï>ûŒÌÌLrssyï½÷8p k×®eÓ¦M\pÁ$ 'T÷œsΡiÓ¦”––²~ýzz÷îÍûï¿Ä4OmÛ¶åŒ3Î’faµû àŒî¯Y³¦ŽÙY“&MèÓ§RJÞ|óÍ:¡û}úô¡I“&óá‡:å5áߦi:£¡sæÌaРAlÞ¼™µk×rþùçãr¹˜3g§Ÿ~:guO<ñ^¯—÷ߟ§žzÊ1Æ1bn·Û¶™7oÞaCȃÁ 'tË—/§_¿~4jÔˆ¢¢"6oÞÌÙgŸÍ»ï¾K(⢋.r®û;ï¼ãˆÒöíÛsê©§ÉðùŸ…>}ú8îë{÷îeÑ¢EGÔ:÷ÜsÙ²e gœq†cN¸ÿ~ÇL ’iÓ|>Ÿ3K\3«œÍ¹çž $èß|óMG¤tÒI$ fÏžM³fÍèÕ«}ô………† À{ï½ç̺·lÙ’³Î:Ëno¿ý¶s/¼ð7æé§ŸÆ0 ,XÀÞ½{ëý\ à½÷Þ㪫®bܸqÌš5‹H$ÂŽ;X¶l4Ó«yÀ.[¶ÌiµÛèÿûߣî¤>ÇãttkÚhÍÀÏÉ'ŸŒiš¼õÖ[ΠNMÛØ²e‹3 ¡i#FŒp…j¾w¾iæ{À€èºÎŠ+èׯŸ|ò ûöí#%%… /¼Ó4±mÛIE¸fÍzöìɼyó(//gذaìܹÓño:t¨®¿hÑ"òóóq»Ý :ÔéøX–E4uR'öìÙ“Æ×ùžxë­·hÔ¨Ñ!ç¼sçN~ûÛߪ'â'ÅEÃ/ä•WþA<ChÒ6B«nßöaËl3Žîö`%¢ìÞ•Ïšµ«X²¦;ëJ$º€‡niƒ¡PáÓ§O§Y³\|>?UUa@#Çk›oбB’’B(â£>â7Þ ¨¨Hå•V|gž}öYÊÊJ3æb23[Õy­¬<ÄÊ5[Éöå»°¥Àë ޤás•³3AÀ'&[!c›9áÄ®¸½þz£<ªªÊØ¿7»vígõê5”——Ó´iS®¹æšÃžßþýû騱#—\r –e‘——Ç„ xì±ÇœÈ°¶mÛrË-· iøÃ4hýû÷WWqÜQYQˆ×ŸÅ‚µ1‚WõóKC’td—¶$!!nI°!; Åâµ9ÅTV¸ï/¥4lÓòì©‘âÉk tÀ’K»Ö/ЊcEff&÷Üsn·Ûñ ¸ãŽ;ޏ–[ñý=z4#GŽD×uÞ~ûm¦OŸþï騱#wß}7ÙÙÙ¬Y³†n¸A­ûyýõ×iܸñ!×`×®]Œ9RUâ'ÅÅà¥=ƒ-5b‘r<¾tñBh.ouY‰D$¸Ü>§Ì¶-,óÛ ôfD£ S4A,„ ++ Ó4ùàƒxýõו@W3žÿuÿxu!yi+))õbÚi)E—5'ÿ›ªDk‚ÌÔ!ûLdŇôt9ÁÔLr›7?äXÑh9åå_³”åËWSZZJJJÊzaa!ýúõcÖ¬Y$ Î8ã <ååå¬]»!Ý»wwBåwìØAzzºZ¢ø tY-ÐëYƒ.œŠ–’’&Mšä¤Ð«1&Q;^}õUgI‚išGõž72zôèê/©ÄùÌØ±cëíä+\ÅO‘“¸XU9¾”ì:&qÑHyÒ$®²·7™ª1ZcW¶oJæw;¦iѨQcÎ9眣2š<ضMaa!_~ù¥úÎTs„ < k’–g¶CÓ DÕF²ƒ§Ú¿oÆ)hºŽÛ*F¤ÄÖUåäï-"=«W {½©xP×B¡ø–G ‹Cš¡ª…B¡P( ŠiÆB'àökÂIñpuY¨–I\·7H,Ráùî³ßBü¸ým¤øAï7À’6!)©LÄ@@È´™61 lH¡„EÄ\.*Cq¼ºT÷²BñÁ8T«†§P( …¢aIö7$æÄn‡S$jõCD_ŠC™2e wÜq‡³ýôSúöíûÞ_RR‚ Ö .¸MÓØ¼y3_|ñº®;»7ndóæÍ si5v IDAT0·ÛÍž={ˆÇãìÝ»—¢¢"¤”ضM×®]UX¾â<#<ý´Ãn¡P( …BÑ@hº )m ——x¬ —Çm%°¥…Ëå#«Äåòc[¶eáòø‰Ç*ñx‚‡Ÿ;ø…Ï)¼òÊ+Gí!¢ø…t). ¤MÜÒˆYqS5%Q b¶AÂÒ‰YZ²Ì–Dõ¢šŸxu–”†bß¾},_¾Üɾò>®sÊ)§|§÷F"æÏŸO=èÞ½;§Ÿ~:š¦‘ŸŸO~~>Ý»w§k×®¼òÊ+ìÙ³‡+VÇq_PPÀÆ騱#gœqÝ»w¯7{ŠBñ½ºÕÏ4‰&Drm‰ó£ 5‡®P( …¢A14Í ©ÀŸ’M4TŠáò¢ë®j“¸¢áRtÃn¸‰†Jñ§äª,<|"óŸI‡å„N U«V4oÞœY³’YsvïÞM«V­ÈÍÍå…^@JÉŽ;hÙ²%¹¹¹¼ÿþûH)9餓¸âŠ+˜>}:¯¾ú*}úôq†â—‡¡Ùdøx]Q "6_‡¡(&(‰êElŠÃ&EQ‹òˆFE¡2§=‘ÔVlÞº£ÁÎc×®]TUU1uêT^{í5,ËbûöíÌŸ?Ÿ7ß|“ÊÊJ yä‘G˜>}:<ðåååÎýðÏþ“ÊÊJÞyç6lØÀªU«ˆÅb<ÿüó@2­ì£>ÊOÍ %lö ¥é …B¡P(ÛJ „F"Åí ˆ‡“†pR’HD’e‰0š®H„“e±*t··žÎÌχƒìjÄÅSO=$ÓPåääpÉ%—ðøãÓ¡Cìˆô‘?sæLrssÕÍöKïêKpi&RÚX¶† X–‰´4\¶–l>‰Ò4ÁÛL`[&t"á0¯·ÞžG‹išlܸ‘½{÷²råJÂá0ëÖ­#55•îݻӢE GÀm»ÈËËcÆ ìß¿ŸW^y…I“&±bÅ ôêï‹äç–uþ>Üþ.B8ÛK)ùÍo~Ã_ÿúWÎ;ïøà/^ŒišŽ’Rªõ芤ö¶Ùþ8-†ÛŠªˆbVE°ªªÕ?¢ª ªª ª‚xa!±²JöÅü¬[¿Ð÷L{‹ÅØ´i§v†aп>þøcG×' k^³mû°û=ýôÓY³f ýû÷?DhkšvÈþúôéÃÂ… ëìÃçó‘——Ç—_~é”-\¸ž={:ç$„àì³ÏfñâÅGu^ Å÷E–h2ùc8­YR(•®P( …¢Á1 RZ¸\~¢áÒ:yÐ]î@uÙ<è.O€h¨_ ó{åA?…BtìØÛ¶?~<;wæ?ÿù;vIJ,&NœHNNgžy&UUU 8¡C‡rê©§Ò£GºvíÊ 'œ n2¶^Mâ6¶i", iI¤)¦°,HHìXK׈y4JËÊd '55•N:9BúÓO?­óº®ë :”Ç!ÅÅņÁàÁƒ™9s&š¦QRRRç=Íš5cΜ9ôë×€Î;óÑGñøããñx¸ä’KêlߥK6lØÀÌ™3B ë:ãǧ{÷îüïÿãã?F×u.ºè"rrrØ´i“#îÛ´iÃìÙ³éÔ©ÓžªQqó-duíL'†Âiûlç¿þõ¯ˆ”¬¬,îºë. àk×®õ®eW(êC«ƒäÜ·`ZßÜnmG¤S-Ð«ß  ©k …B¡P(ÃåCÚ_HU^:‰x!4<¾´e‰HðúÓ‰TáfcÛÖϺnN?ýt‚Áà!â"%%¥NÙÁÿ?\™â—­Ð¥ .á¢YZ¯F,F¬*L¶ѤXR€åÅíñáI÷¢‚Šð^ wP^YE ¯Ó8X,×ü¿öšñÚåMš4q^;Øä°ö¾Þ¯®ë‡ìóàvTŸi¢¦i‡¬³?x?5ïû>ëñ¿<2‚R€eWët!øºDbÛ‡ËožÄZrº‰pOêvâ®P( …¢a±­™ˆc¸ý˜‰(š–œ•²ÑeBfuY"Fwyê"?^{í5uƒ(JŸ#‘˜¶…ße“pi.šáÂ04Ò¼>4MÃðI„‘Åá(.]å±ð´ÈÁïýá³ 8P]<ÅÏ‚h\RX)‰ÕZ)R–ø½"9»^/ÉTçT+q#™oí@³Vóç …B¡P(\8H™œ°-t—›„G7’3VÒ¶Ñ5¦Ghzµ ·pÌxäð]Ü*uÐ:hº ;&Å+è}š—ýQx R±°EUì\·‚¡ý;‘–â'3#Ÿç4ÒÒÓUE*ß[B8.‰ÅíM,!ñ{A i»ÖKµ+ …B¡P4†Ëƒ-­jó·|,â5&qÕeÞ@V27:7H$TŒ/U¿IœòµU(ÓÕO†oÛZÀfYn4ÓÂï2ñÅm¤ Å6V¹@$hÛª%™é©£ÛÿQz¬X±‚ŒŒ òòòê”ÿç?ÿá׿þ5)))lݺ•òòròóóÙ½{7L©vþùç« ©8. x[XvM{ü"›Êh2•ùá[RHjæÐ Du®µê¶¦ 5­P( …¢aqLâBåøƒ’†p¾T6ÑpY²¬ª·'¹¦:*ÁlDUù^¼LU ÅQ7%¥áía3 3{Ë©,‡HE1zÕ4a“á—4 ¸éÖ£5Yéx½G—ã[JI"ñÍYöìÙÃûï¿Ïˆ#y­¢¢˲طoëׯgèС|þùç\qŃA6lØÀ’%KèÑ£‡º ŠãÓH)(«²ùrM8~@O›&4idàÕl—±ïÀút‰A-A.H5}®P( …¢©1‰s{’3ã:f<‚75YæKÅLDðøÓ‰„Šñ²°¥ÊA¬P áŠJ¾X¶”دaáÒ¡e³T:5I'ë¤LÚ·ïŽÛí"5-ý;™ŸišvˆQ[}äææÒ§OŸ:¹ÉkïcçÎlݺ•áÇ×õ~¿ŸH$BZZšº˜ŠãŠš ®T¿Æí5Lû@ù×e’p‚ÃÎ ’ÑíB&'Í )ìjqNß …B¡P( …m› ¶Ç0¼Xf ­z½¹å”Å“&q€eÆ0 oÒ8ÎåV¨PéAú÷=Sj¸4Mƒô ‡Ô ¿Ï‡?@×õOJY¯è>ܶõŠ!xã7˜:ujò;vàv»Ñu–-[ª‹©8.EzI…ÍîIÜ)“¦ÔÑð^½º½À8°»äoåâ®P( …¢¡‘¶…@`ÛVÒ=V…ax‘Hl3Ë  ¡I1^S”+®P| >è¼3ÚßRrá…òÎ;ï0dȧ¬oß¾øý~Ö¯_ÏÖ­[iÚ´©º Šã’ÜL-éa*Á°!lߘ1T‚-Ñ$dä»H†¹+›8…B¡P( ˆáòbÛÕ&qáR<¾4,+†m™¸½A¢¡R<Þ ¶•À¶xªË¼þLÞ§P‡H)±ëYpkÛ6yyyœzꩼýöÛNy"‘pfèUîqÅq}ïS+:½ÚîHA+Is8´%–mc€^+\E +m®P( …¢IÄÃhzÒ$.Ì!\Y„Û› ØÄÂ¥RsW0‰«.«*ß§LâŠãŒ={ö°råJ„´hѢΚò@ €¦iäææ‡Y¹r%©©©¼øâ‹H)ÉËËcРAª? ¡~ôÛjX¶…eš‡Žl©aj…B¡P( ‹áòV›Ä¥ %gÐM3Š@àö“eÞT,3F2ÍZ*‘P)¾@fýkY²»òmÖÌ*І!77—›o¾¹Þ×.ºè"çïvíÚЭ[7UiŠ_´·¤ n7†À®•ø\ …zˆ) …B¡hXlÛª6‰K nl+É0VÛ2²dàí,3Žf¸êïÑ!3¬‚`0ˆÇ㡨¨ˆªªªås[–E8þΦ\ …B¡ø ZõcÂÐ43ùœÕöîBÅ) …B¡hXjLâ,+Û ­Âp{‘Rb™1Üžâ±*tËL3ŠÛ“B4\†û .¿AŸ !‡ÃƒALÓdýúõ?ª@¶,‹P(¤nEC÷ç ÅÏ¢1ƒa€m ¤´0Üîxµaœ”2¹]è*Ò]¡P( EƒQcçñ WáæT€ÐðxS“e)ÙÄcÉ™n/pe!`¦ÿVÇJ$lÙ²å'g4‰DT¸½¢Áù¡î)!„ŠQ(މ>·A˜a!„aš€DÚ`K™ q—*­B¡P(І£¶Iœ?؈H¨ÚNJ¢á2üÁFDCŸjLâB%øƒUà d|«c­]»–ýû÷ÿäÄD$Qùß›xÊUW]E·nÝêÌâ+ß˲øðÃr?B"‘‡ /¼P](Å/šúZ§8èõà ºNzj ¶m"°kº¬­ÐU + …B¡8ÖÝûÃôjŽ•9vâÆ¶mºuû)))¼üò˘¦I÷îݱ,K]fÅ÷Æ4MV­ZEZZë'"Ρ¢¢ŠE‹³gÏ%пx4­z0‰€X²Ú„ÝèvõvõDq.ŒŒ,ÓÄ–6†tLUErdNEe) …B¡h`,3ŽÐ4ÌH?½Nˆ{"ÆëϨ“= á $ס6Äý'²"OJI³f­IIñðòË/8餓ôGž´Û5·Ür 7Üp­[·V7ù1ÃÇC³f­(/O¡¢â;2‡BLs;ºn¨w…ÐDòG"@Šú𤾂ú¾ž C#-ÍO"žÀ²«º8|ûS( …B¡øÞ¸ÜÉðu/peáA&qéN™c8²Iœ”Õ??‘îryiÞ¼= °m›Ç{Œ;æÍ›ã{Û¶m‹eYضÍwÞÉøñ㩬¬¤uëÖ¤¥¥9Aëׯ'ðøãsã7²aÃÚ·oÏÂ… :t(©©©¸\.–,YBNNùË_˜:u*Û¶m#77—wÞy‡ádzpáBFM<GA"‘àí·ßæ´ÓNûÖŸ{ûöíÄãquƒÿ„Bÿü§‹µk%Ç"Ú]p¹’3–eaš&n·Û¹G’÷¹ )%ñx‚Þ½m•ýI¡h qïq "!0’Êüà…B¡P(І#£i:‘Hþ”l¢áR\îRJ¢‘òê²2\îä,t4\Š?%›pe!nêqñ ÃMnî œy¦”6wß}7·Þz+íڵöíþ϶mvîÜ ÀرcéÚµ+íÛ·§mÛ¶¬ZµªÎ¶UUU”——Ó±cG6nÜH^^‰D‚±cÇòÈ#`YÆ cúôéÄãqrssY¿~=ÙÙÙìÝ»—`0H"‘À4M瘇ÞûöíC×uN9åV¯^M‡ÈÉÉÁ²,–-[†Ë墨¨HÝÜ?RB$ååÇfT*+ FŒ€6mK–,eÅŠ•\~ùådddòÎ;ï0lØ0JJJyõÕ׈ǽx<6Ê[Z¡hˆömƒ”5kЫKEuËW]¡P( E£.¤´1 /ñxÃåǶL`¸jʼØvrݶáò‡’aðÇZõTbr&½5½zèºÎÌ™35j§vÚaEúáBÒ xì±ÇH$Œ3†¬¬,>ûì3òóóY½z5íÛ·§ÿþÕ&xÉ}èºÎSO=ÅÈ‘#éÕ«O?ý4£FbÁ‚Ìž=›ë®»)%¦iòÈ# „ oß¾téҥαÿüç?SRRBnn.mÚ´aóæÍ4oÞœn¸—^z‰µk×¢iÛ·oW7÷ϯ:wÖèÒE£¨¨ˆ/¿\K·n#hÖLcõêض¤wo¯¿6yÿýõ@3ÀËOf­‰BqÜŠóäw²e%£c !jÖ+%õyM´»jj …B¡P(Q£F‘¶Ðk­ÍÓ´ê2 Y-Ð2—ë'?w „àñÇǶm„hšF"&ŠQ^^Îܹs9ýôÓ+Ð#‘—\r B:wîL^^^rÂ0ÈÌÌ$‘H8n·ÛùÛ0 \.—ÓÁ«ÝÙÓu€x<ÎŒ3˜6múÓŸxë­·œsÎÈÈpÖ7×ÇÔ©SÉËË£wïÞ¬^½šßþö·äççsÿý÷“ŸŸÀˆ#Ô­ýƒuâáX¹WU…øßÿ>g×®2Ö­ûœ²²J>úèc22ÒÙ¶m' yûíÿRVVJQQ M›æª‹¢P4HÛ¶‰›qlK 4òh€ØÒRâ\¡P( Eƒb™1„¦cF*ðøÓ‰„Jp{R’&qÕ†puMâªð2 WìÇÈøI¶ž={ò«_ý ËJ°wïv6oÞ×_~A4% :‚úp¸Ýn¦NÊ›o¾Ijj*”——“••ÅÈ‘#íJKK¹ôÒK©¬¬dÁ‚lÛ¶>}úpÏ=÷Ô9F"‘@×u¤”H)2dúÓŸxê©§xóÍ7äLû˜1c™½¯m2gY–e9û®=K_{{Ń˭ZA(tlê\Ó"lܸš¯¾ÚN"a’““ÃgŸ}†¦iض”’ùóçcÛ6™™™dff‡Õ…Q(¾'¶”$̶-À21„ºH4!Õ ºB¡P(Іî¶eÖoç¯Ï$.3i—Ú¸^“¸Ÿ@€@ Šß¤IÙÙ;ðù¼¬_¿žªªªo|¿®ëœ|òÉœ|òÉÜrË-,X°€Î;cš&¥¥¥NNu!7fË–-X–E"‘ S§NH) …B”””F=z4óçÏçÎ;ïĶm<Ÿ}öÙ!‚º  Ã0Á‰Dèß¿?K—.=lؽ‚¬¬,ŠŠŠ0 ƒh4ªnîˆÔT¸â ›xÜ>VG.GuÏîÛ·?þX Ò(ß)%¶ia™`†ßçIš;¶¦yT-) …B¡hPÌÄ“8_J–c'¥$V] —a¸| .×’E¸ª·¯áMâ H$v?¡Q{1à) )mþ?{ïoWUÞ{Ÿ1Æ\û–ì@á‘›J¹!¢¨oE”¶§xz´V«µ¶Uû~¬­žö­…b[«íQßÖ㥨أ•W[OõÖ6jÕR.%\Iv²÷^sŽ1ž÷1æ\k‡„[vËø}>ùÀžk­¹æsÌ9Çïy~Ïï¹çžœtÒIxàÁˆ¤¬óµ×^û°fåÊ•]æúøozÓ›8òÈ#Ùk¯½xÅ+^¤÷/|á œtÒITUEUUŒŒŒpÊ)§°dÉ®»î:Î>ûlªªbõêÕcX±bK–,`l,™ïzè¡,^¼˜ãŽ;ŽW¾ò•@ʸ_xá…zè¡}ôÑyä‘,X°k-Ç<Gu .äÛßþ6/}éKI-zÛ}ìYÄØ05u333sT ó‹‡OÑUUÅòåËÙúøõ{+(xê_ß pÖ™®ÍZ4gä‘?£ ŒI홬Á×3s ál•¶Ùj”¨4Çùz†ª7¾;\b—ø—ù:ÿôO÷R×BŒkÚ(WU‰Q°Vð>à\…ªï¶ÅèY·î“Ü|óZFG'9à€€H]×ÜrË-IÒ?ÿùÏÏùûŸøÿþïÿþ ÷~ä#ü|>÷¹ÏpÙe—=è½ozÓ›´í­o}+@W‹¾#>õ©Oð‡ø‡Ý¶üãœ{î¹Ý¶}_Áž&è‘Í›·°xñbV¬Xñ¸ö»ßñZ(Yó‚‚y¼¦H™ótUœjDc$f÷¨v·zs¸´@1ÆÒø>•ë¼c‡·%ÒÞm«ÆwMv£ùŒµ†Õ«²ÏävþÛÿu)¸èYÀ1»ÜáG,áE/º¿û»›øÐ‡ÞÈ;ßù{vØï°rå]|êSw‡pÄU÷þÑÑEx eùòÜrË-eÌ9>øàƒ9å”Sö`ý¡1;;ËÚµk I/(˜W’nP‘DÐC˜%DEc~ÊY)6îó ïgc©g¶2:¾˜™í÷'“8”zvcK˜î¶AvŠñ‰½Ù¾uÃÎMâv»3¬àœrßæ)þiõ·0vY^ íë×_Ï¥—þÆü"ýè[¹ž;îø!SSŘW¦N8;d4{¹Ï{AÁ|¡íàœ{XóÁ=kíÏÞ·¤4Y/xz\ÙåíÎ9‡xOÌ×xeePVUPPPPPPP0¨z©ïùhg·õÌVÈ&qÛ§62¾`ê~2U›XÂö©LL.Ãûzå¼óf°vªïEÄ3ñ‰Ià œMjóND,Û¶=Àç?¯»q<‘mÛ¶166ÖµN{,ضm ,xÔŸ›žž&„ÀÂ… ”%mš† Ì1º›˜˜ø™§~ÿ÷ŸsÎ9‡ç?ÿùe0 žPcÑSôÑG]Š¢¸j¤$Ï ¹Õ¡» IDAT æ¾™ÅËìÌc‹éOoÁõF“IÜìVÆ&–П݊u#BfKʪo»ŸÞØÂ=rL/xÁ©zèªj,õ]Á1„î=VRâBR‚=É [u±ªà}Ÿø‡‹wëXî»ï>>øÁòÊW¾’O<ñ1ïgõêÕœ}öÙšD_tÑElذ?ù“?àßøßÿþ÷ùƒ?ø>üásÐAcäç~îçxîsŸ[&tÁž½_x_Ô'O#!¨!Ĉ³½Š‘P§ Jå\Q¸ÌïòÃXÅØ ïûXטÄÙ^Úf{¨Fth›«F÷Ø1%çtÇ¢EÂ׿ÿyW.åäw¾³{Ïǯ¹†SS¸×^¼~ˆ˜¾ï}POoáùg<ÀÉ'íÖÊ)„Àüc^úÒ—255ÕeÒ׬YÃ~ûíÀòåËùÎw¾ƒ÷áØcå¶ÛnãøãÇÃwÜÁÄÄx u]³víZžóœçpÅW°råJ6mÚĵ×^‹ˆð‚¼`N ³1†“O>™«¯¾šƒ>˜ÉÉI-ZÀ²eËxÝë^×íë²Ë.ãÔSO-“º`§Ø¾};ÿüÏÿÌa‡Æää$Çs ï~÷»iš†—¼ä%¼ð…/$„ÀŸÿùŸÓ4 gu§vçwL_ýêWóþ÷¿ŸÍ›7cäœsÎá„N „ÀùçŸOW½êUÝ|圻x/þîê«æl?ÿoáOÇ7óõÿsãn¯bŒ\ýõœqÆLMM155…÷žK.¹„5kÖ099É%—\ÂÒ¥K9ðÀÙ²e 6làòË/'ÆÔ{ݺuÜ{ï½\vÙeLOOw}Ï[²³uëVþó?ÿ“ƒ>˜øÁrÒI'qÚi§qÑEqÓM7ñ†7¼ç=ïyœ~úé\xá…Üzë­eÐ žÜ]Á‡Hð‘&FœWaபÊ(Ì+|ÓšÄeéúÔ}ôF'H=;•{ž›Äme|ÁÞlÛr£Köè±Ýøå/óÕÏ~]M=†ÿ?«Wó“{Wc¾³~#m?óÌÏÒßx7|À#¿q"»«; !tfXªJUeÉ’%œqÆôz=n¿ýv^ò’—Ðëõ¸ï¾û€¹¦tÆZ .äÄOäòË/çî»ïæU¯z!¶lÙÂá‡À¥—^ºÃQ©ªŠ³Î:‹5kÖpöÙgsõÕWïôx‹qWÁCAD8úè£9ï¼óç›ßü&«W¯R)Çi§ÆöíÛyûÛßNÓ4lذ—¼ä%|ç;ßá /ÄZË¥—^ŠªÒëõø…_øD„‹/¾˜Í›7óµ¯}­kówÏ=÷ðÆ7¾± zÁ“Q¡i”&*p„ˆZATQbŠfÌ#Z“¸‘±ElŸº7ÂÍNÂÈøb¶o½—ñ{Lâò¶‰…ûB½L9ò‘ÏþÞÿÍE}ŽeïÃçWÞûâ3¸úÜÁOn¼}ë>ñ¥/É'žÈôö–í;‚êîÕdä#Á9LJ?üá.›þÖ·¾k-½^ïQcc Ü{ï½xœ¤išGD¬.\H¯×ÛåwmݺµË¬ì £££ŒÉõýª«®b||œM›6199ÉqÇÇÕW_ÍØØïxÇ;:%ÈÃ^­ª,\¸ÿøÇcذaûì³Oð‚'7B°h#DU\Óxð’b¿ª)õçó‹Î$nv;£ã{ÑŸÙ‚s£(J=;ÅèÄbú³SIÒNj³6:±˜ÙéMT£ v¾¢™í{ŒÊ]ëoçìÿòR~é•/Ã×½vë­?á½±‘g0±`@Joºé|æ> ª,_~HWKÿXaŒámo{[÷÷\Б‘ÏxÆ3X»v-ÖZ6lØÀ¢E‹ºm-QÙwß}»Ï¬X±‚[n¹…ãŽ;މ‰ ¶oß΢E‹¸ñÆQU9䀽÷Þ›3Ïùäµwkãøãçž{îaýúõœy晥ÍZÁCbbb‚7¿ùÍÝßûØÇøÉO~Â5×\ÙgžÉ 'œÀ'>ñ n¸á®¹æN<ñD;ì0>ùÉOrýõ×síµ×rÚi§q衇Bà‡?ü!×\s ¿ök¿Æa‡Ƨ>õ)~ðƒpõÕWó[¿õ[…œ<º¼KÿƒÅØìÛ®¦Üt æƸL¼{Ôý)FF'iêDëF¨ûSôFâ›Y\5F=»•‘‘…Ä•ßÍC–.݇¥KWÁ[€»€/§í‡~8‡~8ŸûÜ/²xñ!<ûÙàøã‡—¿œ Û·óÓ_{-‹_ýŠÝúþ“N:iÎßÇwÜœÿîHäÿã?þ£“ïØ'z¸EÛŠ+æ¼ÖÖ´ï ;kÖ~éE]ðh úk_ûÚ9ÛÞõ®w=è}çž{µ.î-œsœþù;ÜK̃¶<™£Rמè•“Œá’¬]DÓ¿2NóßÌ$“¸þc{3;½W`¬Ë}Ð÷¦?³k{XÛ£?½™±‰½™Þ~?{¶ÅŒ¢€;ðò_Äÿ`Óœ×>ó™±jÕW¹ãŽašŸž&üèGLýöo³é'?áñnsòÉ'sôÑG—IUð”Ç÷¿ÿý2OyhŒ4ý†¦nˆ>`¢TQ#A#Aç)]PPPPPPPQõƉ1™ÄMOmdlb ¾™%„†Ññ½˜žÚÈèøb‚¯ ¾ŸÞ72±pÙýÐæÂM_]ËyŸ|ß;û÷ù³-Û½ò­oÇxïyüã?ú±ÿã¯ü ï¸óNþö5¯¡_¹Ç=±QUι2© žòX¶lY„‚§CWÔÏ‚Ö@ÀÅ2 ŠQG¼Ì |ÓÇH2‰ÛkŽ!\ÓOÛšþ&ל׳SŒŒíÅìôfªÑ‰=¸.RÅ39èËø«KßËäÂ…Ýkgœñn.¹d6ÜÂÊ•GvÛåâ/péƒmSSL=÷˜y ÔuÍÆ9ðÀçlß´i"ÂâÅ‹‰1²nÝ:–,YÂwÞÙ‘õ£Ž:ªL°‚‚‚‚Ÿ5ÏîꮓžÃ§å¡ŠTìF"ΈA¨ ¦´Y+((((((˜_ˆŠ"Æ£ÇÛ­VD 1zD†¶uïs{ð˜Ò¿Ûn»ý÷[Îo½ñ7éUÓ·k¯ý>§Ÿ~/xÁ*–,´rúο›Wý×WÊᇽÛü<„ÀW¾òDäAý¦›n¢ª*/^ÌêÕ«Ùo¿ýظq#wÞy'pªÊUW]õ :ö‚‚‚‚‚Ç“ëœÎ‰m1µHÓN¡þà†èUù#ÎØ”17 JÄJ‘LÌ/Œ­@çFèÏladlM=ˆÁV£Ôí¶fªÞX÷¾ÝmcöPAƒ½^à+RÏæ¸aÑ¢Ö.Gz½6oþ)ûï¿7M“Ú®Žšfûî1~øáÜrË-;}ÍZËÅ_ÌqÇÇŠ+¸ì²Ë8ꨣ8öØc™žžæóŸÿ|!èORX+,7¨ F ÎÙDr¯KUŒ©"p/((((((˜G´&qým[[°ÓS÷226‰j¤?³…ñ¼­7š$æ³Ó›_¸”m›ïftÁ’ù?ïY½ú›9‹¾ûëž™™ÙÝ ,_¾œ›o¾y§ýË_þ2oxÃ8è ƒºm—\r «W¯f||œ×¼æ5e‚"²ÓL¾ªræ™grÇw0==Ýõ+79»b­%„P&XAAAÁ“Ö 8¼¨*N£UAA5"¶ÈÛ æ™€ƒˆ0¶`Pe|á²Î+§™ÈÛ–v¸Uoœ+ÿó›\vù•ªßéп'9’Ü~5ëׯçöÛoçCé^‹1Ò4 /~ñ‹¹êª«øÞ÷¾‡sŽ+¯¼’[n¹k-ÏþóË+(((x’Âé Æ4†”A÷!½Çû+6= O/((((((˜G¸jŒíÛÀ7S¯× ÷¬_5O}eŸµ–ÓO?€½öÚkÎkÇsL—Y?ñĹï¾û˜˜˜ààƒÎ ;Ã~ûíW&×ÓªZ¡ à©1Š‘@ àfû5uÁ¼ÇYA(AAAAAAÁü#øïgË@ ¯ÍDØÿýwúÚÄÄÄœ÷-]º€ñññ2pOCX›Vý~¿ûÿÇu]ciË\P0oPE55 DÜ›¶5‚˜ª7Ô^½          àg c tu]³fÍšyé>ðXB`vv¶ô‚‚ùãçùŸ‚«kÖXŒ³[ú ìYˆÎÚebˆ„²ð/(Z¼+MÓpçwÒëõºm?klÛ¶ U-²û‚‚y è¾’W‹«ªˆ"ŒÄPú ìQÜu×Ýüé»ÿš‘‘^— ô>pê©'ñú×½jÞÉÙÆ]9³<„øö·¿ý„#Â"Â]wÝ5§ £  à1tÀG!F@ nÁäDª?Ðx¢÷(Z(zAAAAAAÁÃÞ{/áYÏ:‚¿|ïßtÛŽ8â™üÙùˆêÃgЩ‰{›á !pýõ×?Ȁ v£££|ìc{ªª*'© `wº‚÷JŒ©ä܉€¨C   RŠÐ öFFzüþÛ~‡6mæ‚O|†XÎ7ÿõŸ#Ƈ¡Ý-畇géÆî¼óNÞóžoò³J@;±¼÷¾Æ¶ä žÏB"Ñ+QÁö¨=¨5ÄhÑÝòÐ+((((((˜oì$°#9´,D ž¥ ªŠ Ñ£!5)­ öÜ2$‚Ï]kì¸öHj!éO§£b „ ¸éí3x˜Ìáz>½kÇw)M/((((((xŒˆ!rÕåßfÝ­ëv¾Î^r(¨(MÝ<Äû‰‡{AAAAAÁAÁ+Uœ†ª `òs®ÚÍG>ä`^ðüÓrûµRŸ^PPPPPPðÈ¡( &ƹ⪫‰ªœW ì¿|yɤ<…’êˆ>ƒà|i ŠŠb¥•ŸÆÈÁ‡ÁªœÉÛÞöŽ2x 1*1ÆGæW‘Êö2ˆO=~Ž *7==Cˆ~Pïò£SR€{¿åKiêíøzºŒ^AAAAAAÁc^‚ìÎ'ƒŸ…GHï?ö±±eË–'Ô¯¶lÙÂm·ÝÆg?ûYŒ1eJ€*Ñ'¢nÄàfû³ˆ+1‚1"¨*Û¦f™™^_­      àgMq ! ªËÓ·mÛFŒ‘‘‘‘'ÌÑ7MÃOúS¾þõ¯—SYð(×îÊ-·Ü‚ª"O°VÈ ,`Ÿ}öt*((xÔˆ ±!øHˆ×ë9le¨LqBÏp÷ú;¹öÊܼ     `>¸å+î'ÈñèÜÿØ·ˆP÷ûƒcß…O\¯×ãàƒarr ³³á 1¶l¹Ÿ›o¾e§¯=pßÍÄ øühì»i.ºè"Œ1O(‚®ª\wÝulذï~÷»e<­¡ðù®»ØƒvA8·h¯ ¬ëa­`1„¨\ðïEU;#¥5timZƒ ’þkü7Ã7|D5·Sò{sä FbŒ¨*ª`Œ¤‘1˜¼?É7ƒãh¿{xµ¡CÇ*Cu†Ž]ÉûQí~ŸHRˆ¤ ˜Ág‚ÏÇ—¿YHÇd„tlbæ+sFfh¬$GŽò¹ÐHûÅ"Iæ!]ÕE÷#èj04vg¤}æ ×ÍaÀ&_ì~_oŒ wÌÕvÿ; æß*suç”ÇF4Jw„;›äc0†Áµ“?/é~¿jDÃÐ8vïŸ;·4*QÛkK!Ÿ;açÏ÷9¿¢›#"‚Í×öàÄÉÐÊX´àWM×rŒ:gïíuõày¨ƒ¹Ôý®Áü“Ž©ýÚv?"°‹ÅÎ^ŒÿÐÀéCªîžQ•ÝS ',•5l¼¿~Èuµ*°ïK=² CR¾Ž¬AvAZÒ¿ø0¦Ö÷lª¹þŽíœ|ä$×ݲ±ÉG,äéÐ]ó1?8õ‘qj}Dï×¹ÏGðÝûºëcÛõ1íâ õa~çÇÓx!°×äXžƒÂ¿^u7ÖÏ9l1ß[³‘SYÊÒ½FP’‹ûÖm5Mg«ü>ŠµŽº®ñ¾allaff†åËû,\èwItž‘›‚Ç~ÙsçNU©ªŠƒ^È8Þ?^ód8Ò6¼ºKÿ¿iÓzbŒÔu]&@ÁÓ!¶uäÚ5 5@0é² *HŒÄ¸óçuTqXcpÆ Æ*‚P|𘃮¥©kê¦&xOlû¤‡0D¤s°ÖRUŽ^¯G¯×ÃT•¨BTŠÁkpÎaÅ F¨û5³ýY¼DôªŠÞè(®ªè¹ ׫pÆÐOÓoð!£O²|1ˆ±‰¼„@ˆš‰¬fÒ#Xg±Æt$0ø€o<1|ô5ÿUåp•ÃY‡16ß#3³}šº&:2/b±Ö`ÅX‹5ÒÝÌBŒ¨BˆÕˆuÖ™î¦fŒXÄD”à!„@S7ĦA5‘*DpÖ⪠ë*b„L¸”é¶Öf2+¨@lÞG|hÐp=KåÖ jõJPf%Æ"*øè‰>â›I @S§÷Zk±Ö¥÷#‰ü…Lê¡ ThpЈÃøˆÃYC4‡ ªŠ÷<¾iË0ŽªªAlê0 BþycDRD,“Î&bB@c;ÒCŒb@‚§ioðMƒªb¬Ã9CUUcˆbô4uÓ?#&MdÄb¬5y»i//¼Wbðø „&t#çÿòÏñ鿼žKFyÓo=ûiñVÝ9 ~Mw ¯Ã­¼wú¾¡ÿÎù%ÝÿvòÙ.ž•»ž¦ç•Ì ÒèÐ1êAç9pûŠy›ya s~ÏŽÇu‡±hÃs>“ê©ÇmŸ[Þ ß–Éµœÿ©5èòØ4±×¾a/`¦Ž¬¹á6m&&'éUU Æ‹áËßXÏ}÷×òÌ=4¡Ö¯ŸeÍšÍ{dîXkxñ‹—rÒI{³víMüÛ¿ý/{ÙË8è }¹îºk¹õÖu¬Zõ2œ³|ë[W³nÝžõ¬E»²I>G2çü0(ß9¡/x: % Æ,ä;ßYȺuì±ÀjŒt‰2CŒ!ÿmº„Z ÈYžñŒ!‘¢ü((‡ ú?ÔU¢úý¹¨Á5MŸà­BŒÙ4N1k1¨÷DB~¸K÷ZU9zUÊU8[a°¨JrkÕ˜³xƒöl!ÄHelG¬ã¶©^"~U¯¢ªzØœEc±ô &x¼Ï1‚hLYCDÚÅ„$Ö ‚z!Ú´M3Á3Ö x ¦#»*UKPA3Ó(XÛCz6g¥c7mO#4±ÍÆ.jâ}">ÔØÚ Î`Eb€HÈÙÐVA@lÉm"¸1|Ð(ô0xŸ%Aóï–”yœŒI¿$xðM i<ŸÉ]úDðˆ>#&2 •T1- C–ª¤àF&~Æ$ò³Ú¹ÍIþLð¢‚OASáŒC Ę"HÝB´ÍžFMóK#ƒŒjÊ@§qŒí$ÊÙûCþ~ÅŠgY‡´‰y^K”LÆRºÑ.9ŒÅ˜ÄIY^…h16oééeÁZ‡­,ΤycLõ‘øL¹Ó¹0Ô4HÜã"Ȫ˜Ï7HTŒ5ypb¾¢C§ ±Š#žŒMÄ2qMŸ7¢)@eÓ¸cÓµ®‰4†ÒîM:Ç.I#:µ‡dEE ž`*,ŠJ$f5Gˆ!+Z,¦M…‹¤@]ô‰Š4tÓF¬h¯×Ø1‹Ø&ËE°¦‡é AEÐÐ  D‰dqG ®e¥…×Hð>½‰F:C)0†o¨­z ¢ª¼XùÞÂÃeþ4‹!>õõ»¸okÃG÷p¾ø½ûø÷_Ï?¾ëÙ,Y¸s’¾ö§Ûxßç×±êÙ Y¾xò!C$äÿ>üq?ÉÉ÷ÎźcæY´ÐCÆu.)ŸÃå£>x#¯8w ÿþþã¹âÆ-¼ãã·0âÒ8ý/Ÿƒ© oûèM,š°|ý½ÇñíëàÜO¯ÃŠàœðõ¿|sª€ïœæ…︖™:òéwÅQMpõM[yëÿ¼‰‘ÊT¹ô=Ïaá˜ãï¿q7Ÿ¼ôn*+,Û«âŸþä˜' 9L'á‘ìï1žx}Œß©»ü°>¦cÕÝú)7Û¤ëˆð›u«¯ÞÀuÿëe¼üyûóÑ/ÝÄÇ.^ËÕžÅÞ“Á‡¤*c¸ÄJŸ´U×1n¿ý®ºjk×®eff†oü Þ7ÜvÛmlÞ¼‰üàZ¬µlܸá!ƒ/~é+yÿ_Ç?ýï¯bŒpÎyÇs?üÑùâ—¾F¯þŸo`ŒáØcŸÅÿºðC°“àRÁSWò´;X¸^ñ 8öXá+_YËÖ­—pÎ9G³|ùûØå¨F~ó7Oàî»·qÇÿÕ}Quï„‚‚Ýæç˜œ6ñ1âFÇG‰!f™°“2‚F b«.bB¤ BÌÙ'A¬ÅY—³ª&Éè|¤iÓ´qP;žä/-Å ]iÌ2ëDêÄ8lÎ2‹@ž¦©©} ú@¯ªp=‹›ë-»V§euWŒ*”Ƈ®Ö˜Nà«]}®³6IòÓîÒb<§TbG"áúø¤=h|ƒàñ’ÖœXïA ®S¹€‰ÕÜ6É„LÎ&šL@Òxª*ÖûÜ7Vº…Œ¡ç ¡“ì3gÁ‰PTTˆÍ†,…F@Å5VóðÉ`á×q˜ÖK K‘óßIBl±Òñ„Øù´ò'qm¥ùn3ÙÕ¨ˆx”€‹íYœ5ÓR¹F:±ó  ÆœÉäSÀäòcÀ:“”–ˆÚjrÙŠ0jo xI³G />hlƒÁY‡« êåŒ?YAQƒu`«¤RÉ9½L²C77­#ßr™…&b¬Qñ‚iŸVRÇ0ŠhsD 9kß.þŸ¶6?—§äÄ‘žRILëµ›Í9âDRP4TÑ0ÈLÚ'Iמx0ìàšî+!gË£ÏD^8ß#BÏÆF ÷mi¸{SŸ×¼÷Ǽþç÷ã7ÏÜŸsþüG¼ü]k8÷5+AyÿoÆ)ÏšD€“˜ä3ï|F„_z÷ùåóÄ›ÎÚÎ2êˆÇùÊ»å.¸™³Ïý!ßþÀñü×?¿ž_^µ”·ÿòA¼ú½7ðótzëüÉ߯ã}o<”UÇ,âॣåiZHζn©™ššeÑäŸüÕ¬zË7xί?}Ãsxï?üˆKþÇ쳨GÓDfšÀÌluCAÏ={Ž&'+v´Æ™—•4|ï{ßâŠ+®OeZÞó¥/} çMÓBà‚ .Òà°ÃÛ¥xݺ;øË÷ý-_øÇOò;oùï4¾I÷¹ÆóÀ›é÷kþ×…âè£äÊ«®á¿ÿÑŸñþ¿>¿dÒ æùºŽôûÓÌÎF¼Ÿ"Æêz ³³£„° Ueff3ýþbœNGŠ{{AÁîbfv†;ïZ‡«FÅ9#4ÚfÔb’¿J"ߦ•ŠKÊèTÆ0¹¶Ó¤ÚÏ!ã¦vQî}^8Ç!Ó0“2¢ÒÔ†®F}PÛ 1"6àd$g#Þ×Ìöûx@"&œÔ$²ÚÕ2Sf¼53#IÝ[’5vòïDƒRj†L5ì&×’›A<&»ûn|DÒ{œ£r‚¸¤&°êÏJk-U¯B“äÊ’d·¶œq©®¨¢\ÀhÎ wuù™èCôMWÇÛÖ!¡m®ñmMÑbÄ‹³q† ªX“k˜l¯ A|"•mݾ†L¬’~ÞæÀo|Ú–ëú£æ vˆ¨„¼XIãuP%l­íh¬JÒtÇN®®’ƉƒTöˆ*ª32†DCŒ>ÕÖ{ÏuÜy]¥8/IÇ_OS{¢@…[ie>Ÿ]†Æl¸’f“³)Pâ*ÇÈèh§ˆ@éõ>RUqpNŒIDÔûTwí}*¥ IãUÄ@ˆIbE ö°Æ%b›£eªšŠ¿Ús¥B0)«,Æ`R* ’K+›×A"&¦kÑ\sm’ᄉÙ;!™A¢±£‘Ê Ö)U½‘TÓQ¤D—2ì#U&¸1C“2aYa¬E¬ÃY°.©’Ùajý›ˆo4—TXç°Æ¦2‚œ… ±w¡3l¯% Jb#4Ú¤2…˜ §R‰C$í ó‹\ö,P¯ø˜ £hKPT"I1b›ëíÒñä:ú|]™˜®Ÿ“§†‰O¦@”­kƒAÊ\¿…{6ÕœpøBö™¬È—/Î&Ôö~àüï;øî¶pØþcÌô#!îú;ŒHšÏQ ®Z;ÅŸ}ö6ž}È8“ãŽÅ G<Î]x =gøäÉ‹[Rž¨Oóh¿­*|n¿s Ï:b„ʾ÷ÑŸç¬w~‹ßûÛ«ùìy§qúq˘m}ïyàþi¶nëCnÇ´'¯$U¨*xá —rØaã{H‚Q]Šê d|Ùþ=0Ú´¨*?þñwº§‰‰q>Ñ]à¸}¦2”u¯*GU¥¤HŒ±L§ãu'0>““{fÿÞoæ‹_ü2ÿú¯w°qã½LOOó™Ï|†‘‘~úÓŸð7ó7ôû}6oÞÌá‡^NJAÁ<`Û¶)ÖüèF&&±pá$®}B=0³> ÎâŧZÞlh»:é¶î.‘H›3Œ)«(øê=c6a2‰™bIdÊ`}•ß[æDÔºÚÆX*—È·¯zIÞoMvy×î¡i­íˆ£ÃèÈÚS¬Í.Ö9Û»bA™#¯ “9ƒÑ—,ÉÎŶd°¥Y÷“Ê7K†]gmƒ)ø`Lk¸eñ4. šÈY®uVµˆ’Êb$8‹µ¡« ÷>É–½‹xo;§ï¨)«kŒ! 3Tÿ›j³ÉU܈!FÅ™tŽB°98’ƒ*™ô…\«ñst^’³÷*1+AÀh*—hUÃ.ê1×lÆ8œ¹Y¥àpV1Æu5éu¿éŒQŒ5_áª(Äh !¤r†48(&ÉÅU1¹¿¡o‚@”´‡Ò`¬C\ˆb0)Àb ÉÄQ:¹¶MòxMµ÷)Ž£D3pÿ66™/Z’±ñ(‹JHù Ø*©ªÊPU‚ë劊q‰œºJp=ƒ‰±3qT Ù«` ‰ %øšº ÔuM¿_'gf58[12’î Ö¹Áy%ù^ø¦x Q©l"ß'B¤ ¾3®ìí¢É]ê“lqÑB:ÉÜ-—)¨t†¡RMÞˆ Œ$C ˜ˆKÁÈŠ©óŽd`ÞÙÅ`ŸWß4Åš[·ñÛ¯Øk„Æ+¿tê>üî/ؽý_¾¿ Ÿ wß_ó¡/ÝɇÞz8¿öâý8á­ßïÊE昗íèÚ-àƒòÒ–ðǯ>dÎ!}äwàò¶ð7ßÉ;?~+×|´ô§;CwÎ1:¾€Ÿ®ßÂè¨ã á¬åsçŸÆ¥—ßÍ/¬:€éYO"÷ß?ÍO×o¡ †ÑQ—•l»ŸEׇ!3ccÓ,Y²)æöÄ@`ñC¾ÃZ˲eËðÞsóÍ7ï" <=L¾gYcp®Êë«áN{Pß\ð„Ç‚ðò— +Wî1Í ªG¡ºlÈ!=?O>ùän®¬ZµŠ^¯Ç 7ÜPL vSS›¹æ—%‚¾`gD°½,ïãÒ™¡u„ÑG|ðÙ±›l0”BÌ‚ñœÓ–A0‘QÉt¡GUµÏ÷Ak-T6™¡„²œ×v.¯­Ä:Õt‡ŽtUÖ`l…³‚›dÓ&9`§„h2â šê²½„ÆÚoÙäH­€Ä@Ý(’3á)š²ùW&& MIû1&ºäUT ÞS7M—umØTñ¡­kÎ%Ù¦o¸ö¶m³f¬Mc"*fP-+¤šáì6Ï„¯ñ¾#Ÿi| ƇÜm,}!9ß·d0$rG® p®‚à“$=œs±8'y^(!ÖiܲÃwSP É™¾5Ƀ!) L.0®­ÿÎÎù19„kPÄZzUkS+›¦i°^²K{Ê(&÷ø./XÈë1:j ¾iðQq1=2+Ëd=ï͆_2×\Ëž Ï´Ëd[›!Îf5FúYX›2!¤k!†¤J1V¨Äâ,¹Þ½¢rWe“·hˆêfkF“2ámðR÷mK’ -‘pÎ婉àW!ÆàšÖ}¾ dÙ¡Î)ƒV‰‰ä¦÷%ù¼cd$u(èõªä(ï…&¬sÄà‡”)û]×)hÑ4uR„€³U2Ô³ë’y&$Š’JjLªç!$Ÿ,û“'FO¨œ!ÉŸ‚$„6à£1âóœ6µœIß›´)(`«*š†®kc–Õç1Èó¾ñi|CƒÔi¾…0ËDÜó’Ò¨ÊýS ÿí=×sÛ†Y~õŒe¼ùìDÈÿôµ+øû¹›ïþp вïâï}ã3yÕËøã¿¿•}÷øøïÅ»~õ>úÕõ|õòûټͳÏd•ü2²XjCUñA™³üåo<ƒ¿½ø.®»5É÷ZPñö_>ˆs?}+Îý&òéw>«koÝÄ̬gùòEŒõ,/?u¶n¯é×ûïßÎwmaËt¤K÷'ûø(Q¶nbv¶ÏŠ+¨ªêg6fUUñÀìúšÚ¡ÿû;—¿xÏÿË=÷l`ëÔ6N>éç-ji dKýéç<‡r/ûî;»ÇH±êþÀò9*†ZªŠs޽÷Þ›»îºk—ª‚‚‚GŽº™áÍ7ãÜ(ÎŽà*'çìÀl, µ1k Áœ¯’9WÌ´RR ¶q®Ëþ¶-ÙÈ.èÆ&æ’ÚŸùLøs¦8§ç­Œë¡!¹W;°g,j-N]&P¹n9»xZéxβƀ×H¬|&ãißšT%ÂÝoêôy4FLUAdÙ¤ÍÆ‰tîá!F‚*¦u[×D¾„äò>tgë²p±irÏéToKv‘ïúQ‹ U1KךHWïll"³½ªB1Ä\SÝJZ[î–Úc ¡“Õ‰C¬"Vº–U’[S)‰Øª«0!ÈZ{Ì1eFQuij+}L¦oÆ‚Ç…Š™ÙÙ.:ÈŽé:’§ºùä©\Bl:æž­0Õ@¹`r °”!mÛùY*k‘¬ÖHä0µ S‘ˆÝy’rÀœu¨BÓØÔ½Ífc¸ìC š³·bhºv"iz›Öø­H c*\e* «„(ˆ©rmv+Ÿ78I$4¹è»||‰´“ƒ%ê ÞÎÅá.¤‘©á°‹s´Iƒ`‹H~ÕËŠ“n¾˜a6˜Ë9ZõD«ü$NbÌõïF‘TkCÕ)4/0«i¼£×s©ã€*‚¡r°]ÛgÛ]_g©¢êú‡®ÁÊUXcS™Šïáœ!F×z?æÚð\*£©{;G“FÊF9Wue!4©\ ]‹*¡ri®iÏuº&x$«2º‰<ÌVnô(×Qÿü§Çv%BŠ29îè¹ô½otàygsvÂå¾Ñ=×Ãa¶©©gë,Ž9ËmÚ®Xü­m––¨,êÇÊÀ‘\”.¤óž`KÖ’‘PU#Y^›Mðr€5–FFzuSç¹@§pP† 3Ò2ïJ5¯Fò88—ÚîÓÚ C«æk{¡[+ˆ8ÔÐ^š3¤l Ù¼-×0b—²ÅUÏ%r*íX)¥ñù¡g|r·oÍûŒ`³ŠCDq™¬c’sºÍJ ë¤+û°¢X“ÊRp!·{Ëú%ä–d1·.K×RWg”@È-ïmçÒ4ɦeY1Ð’Ä6“ÞVJÄŽ˜G¢ÖˆÍ†yJ6çk÷-R£ûœ‚j6,´‚Q‹Š³$õ™O"uœK3:ÍýD¾» VV@¤úr†Ô¹ßzkاm7:‡}Éu“.wuˆ!µ—#öº}‰1ùºl3PíSŒ8D\¤³Ö€5©œ#FT«®÷ú°ÖÛT—Ýî}ðÔuMÝï5¹ôËö=Ÿù[¼`צ;='쳂<1b˜,–FœadòÁ‹§¥9‹¸÷ÂÁw,³,Kóµ²;ßÿ>…”ìd!Ÿ6#LL ÆUÔýš{7%ïr°ÖT£ŒØŠªrŒôUeàÇÆªªzLôý~¿[×TUE¯×{Ôߟ¤ê»Æ’%{‡Ô9‹ïµË€Àcý-O Äyö³ŸÍ‰'žø3#Èu]sÇw°~ýúrB æçÊF™E$`Äá¢÷x“ÔàVCªçÔ6„fÐÚpiÔnáíë\ìSxÛÿZ2¹C­±Ä$jÒ¯kú³3ˆï²û{+µmB(‘¤Öc©64·S IöÛfÿŒ¦L+¹þ»ëÉ” !-Дœ´‰@›ÈG<°ÉOC&ôðQ1ê³Ô;µ½r#UZ¼;‹ƒë%gñdx5è‰NÔ6ÑÅÜ^ËY3heS´¤ FÈ™b5D1B.HÆEbȆ‡Ùô0@¢É­ò í[KªÍ>æl½Z­Ik†6ø=Iâßæ¾“ ¥ñ>•f„@J“dù:!)9´mk¦–zCr­x6œ“l²˜Ëå;ÅŒâ ÁàQ5ôû533ÛSDϹTi쫽MJ›Ì ÛhQŒ-ñŽˆÑl°˜Ômö^!7vÎë»2@DhÒÐ&Ús Ãò©¯»hRR„:$¤‚@5"ˆ:T?S2ùÁU–Qéaš‘ŠÐ„.Xßù¼Xƒ«•³ùþñÄ¿Ž¼÷Üyç¬Y³¦#épÏ~ö³Uö² ê?ä{Ú ‡<¢÷?‘КÖíÉc¶Ö>"Å@;~;û{G#¿}öѾ&?ƒàªJ¯×ÛcôG‚~¿ßu*((˜—+¤I%LÚà|˜¨˜‰&ä‹}Ð,WÕt=¹UÀûHí“‹³÷i¡Üõ'ïÛ¹f¯ß)"ôª*uÂÙóʹÔâõñ8÷ÆðéÏü#/ýù3Xºtï½Þ«ªädz;äÜþæCçMo| ccc»$…­K]שwÖvßïÜ@5ÔìpLUå†Ö½¹Drè7¶ ˆ0T™¼hìPŠéñÁŽ~6×ÇÏ–˜{ïyË[ÞÂóŸÿ|^ûÚ×–›pÁ“’<Ý”T®éb–¢Š‰HìÄפ{P™l–Z~x B¾$ê›²Ššë»1Òµ,K¤V³9˜Å¸tãL!=ÇÙ ±VªÿNŸ­ŒÃöRîÔæ+v3t°x6Îâò 3h$úHC®Å¶¹ç¶íœÃ{U•2«A«”ÍóÒ$o稬Ãõ,•íaª\ß}–[™°ä~ê)(à‰!Ðø Ô|®—&O¿±©¯·>‚Éü¬ö]­o¯©è¹šÆSg™ºÆH=Û§n|–r Ч !ׇ”m­kbiš¦¡Wõº$¡Q“eøÙ$ÊûN-¹-U"†#‘˜¬®³Ãû 5™Q‹ÉUìÿÏÞ—†KVUg¿kí}êÞ i EáAÄ¥ƒØA1* JÔy0꧘O£Æ!#Šú©D Ç(1Bœ‰³A‰p@A%Ì MC÷ÖÙk­ïÇZ{ŸºMƒ‰€©ý<­Íí[U§Î9uê¼ë ð¾êZ3OÕÀM^TÖ0•I“¯#ŽŸÙVØ”{ €qš›Ã ¤÷W+Db Y»3± &§©ö4·nDb^€XœWõ0×*@¯ºëÛ´‰jå ‡=Ã? Cwz‚öŠ~.¡°‡‘YÔˆ¥ä”}ÐÃÑgX·A#o5ÙÛÇ“Á”Q{éHFáß®6 «F ‚¡(Þ—žü³™" ~ŒÕOÔ/ùãÌ¡Vx”sâèävO´Ödq¥¶£1W0F1F© ¯­KÚ»ô·0%p&t„õ7ú{èX€£#OŽ­Õ[ÌÙ耤Ì0¨wÐÞu#¤ŽÐ%¯vcvVÞHÂ,1D;<ÜDL(JïÒéÄFc¯¬ËØYö¢(æ¿_Ã÷(†#)Ó ù`£›y/y)í1¢óC¨ œº&™N ð#ƈ½‡‹ØŸ;™¢'•aàкÆêªw.A‚ÿ‚¥ŒÉtÊÙû“Í ý¸¥C{竇‹‰øŸãoažHÎ;¸v`;ÃëÝöÚûðupD4Á²G³§ÏU¹ŠÜ+ Oˆ$æ¡÷ºV J¼uÀZ!ªßèP‹Bt°@È€z‚¥˜;PræX ¢ ˜ý¶´ˆ¡P˜Ž0 IDAT÷\Ÿd袯)ãêŒ0´J²½&–ðX·ÜýØ6ž°S[ËOªaM¸A‡´ÔE'õy]­0ÂâÅ„”;t9#G(¤³ JÔ'ihg¸5¾p Æý&ô‰¡ÖÁlxh[šh €5;ªF Øyí½_޻ثj]“©Cºj [b€äHÊS•$P´M(AÉPÔë‹øµ%eß?¯ošÃüئ’Àß0 º>ÀçäçĶþ8| Ý<¬KÃÂúº¯m ÿÝ•J ·MlÓä¶©ÙÂíÞ¢oá{²‰ÇÝüýÚÄ¿ÕnY³WŸË×lìà–ï Á¼ÝÒ¾·…ã–ûÛÌv'ž'‚›nº —^ú \|ñG0_³ýpà ûbÉ’=qõÕWãÒK/ÅW\µk×âŠ+.Á׿þqì¶Û:ÌÌ,òeÅÆGbï½W.`io+#yýºpñOþW]}Mci7oÞÏI躌 6´ý7;;ƒñ¸Ç¢E³ "ÌÏÁLxãë_ fƦM›1;ëÁr7nÂâÅ‹PJÁÜÜ<ï^ßòz¶aÃF˜™çÌÌ`Ó¦MQWÆåóóóX¼xÑ‚aDU‘™6lØ-Ðî‚ ˆ 7mp{C×µçÏ9µm~–1;;ÓžWU±aÃF䜢­Å÷6mÚ ¶ƒˆñ³K~Ž‹òذaF£W]u5.ºèGظq#N|ÞKpÖ§Noƒ‚m·Ýf¢&”ð£ÿï}÷[°ãŽ;à _ü*Þwêø£gk®Y‹WüÙëñÏŸþ0àN|1ÞýÎ7áÊ+¯Æ×¾~.>ý§CDü;qš¬¿à|®ç.3cnnK—.àòø”rθñÆAD˜™™Áh4ÂêÕ«qöÙgcvv¯zÕ«°Ûn»áàƒÆM7ÝçÕ"t]‡ .¸+W®ÄÌÌLœß¡QSx{ §kºîtR NàµÓ‰"0*ä²µ“Ú›ž äþP4O­Etr_hõÑÆ×¯XïýÁñm]¥¼ 9Y(9`1—C+W°c7=Ø!«[{¦Š¾(ÆýeÜ£7>‰„¤ Ð`ãU!¦`ªA1ÉŸŸ9¸2rf”t3k².ðÚr2w¾-ª¨6¨Êpt VÀõöD„dŒdŒQÄHõTK&deþ5Ÿ0³ûô@RbtÝ]î`³)‚±Jߣï¥1»õw 0BјDLÜ̩¬‰÷„„ ¢½·¬gjÉî5¬HîTk½_ì;ÀóˆÑ¼ÏF —úõð?k䘩«£ÄnRö„ÇœeÁ,ÏÙ?õŒ¾¤ïQ&ƒøjïz” Ô•"rBMbZÙ J ‰z·• Ä@ƒâ¿#4 Î$;0Ô¹E•h( XmíÆÁè³€“…_Ÿ`6†™«=˜©=ŠD³Bµr×:…¡À¬ÔéŽ['ú󿜚 ŧoÕ(O-MŒ§â!Þäèç²·¸ý¤Ú!`QnÇKj°eòýW«äÔ RúFßqí¼÷7)‚œ¼Á ëôvlfÂ'? >ùùk¦ßBw‰/ÂÛp£ùßü"t+Onÿï~Å{²ßÌ~üUû•îD]dŒ5kÎÄe—}ô4l·ÝP½\°×_ÿ ì¹çž¬_c€€k±Ýv?ÅG<K–|gžù:|éKßÃßø.,_¾üvmÃÆ›ðâ?}5n¼þgxîó_Š .ø!vß}Wuôñøƒg‡Ýv»îw¿ÝqÒŸüæææqõÕ×â­oþ ¼ù­ï¿|ñ“Xºt ÞõîàØ ¯{ÃÛð±½/{Åëpö§Ï€ªáð#Ÿ€¯åÓ8ëì/à=ï; D„·¾å58èaû·kÔ%—ü/xá+qÓ†8ø ðšW½G?ñ{Ü÷¾»áÐCŠÓNÿ8^û/Ã#WîvÉuÞ¿ý;^öŠ×ÁÌpÒ?Oø½£°víuxÌ㞆çœð <âÈCñ‚¾ënX?h%þòµ/Çúõ7â/z%Ö¯¿ \}8^÷š—ûàWçüË×ñú7žŒœ3~ö³K!"øÂ¿‚7ýÕ)¯yõK±ú‡ùv˜_ë¿ø¹ã‘¿{,N9ù ظqóè#vÜq{\vÙåPUì¾ûníz?yo·Ý2,_¾ž~ü1xÑŸ¾ ßÿþxÎó_‚ÿî¿4‰û'>ö~¬:p5>ú¡÷b4êpÙe—Ã̰råý§Ö‰uíµ×â1y Ž;î8tÐAxþóŸ /¼333xÃÞ€<GuV¯^ùùy{ì±xÉK^‚o|ã "ÜtÓM`f,Z´ßÿþ÷qâ‰'BDðìg?'t6n܈Ã; Ç{,žûÜçâÄOÄ/ùK<øÁÆé§Ÿ>=Óu·¼1af˜2ˆ¹j‘9@õõr%U%Te¦ -ˆŠ*Ú2˜ƒ½Ò‹woGG±3~‘ ]ƒ½Ì€”$ ò0䀰Xcñ¨ü¢.íî‹w’‹ŠogH‰SŽDóÚqÎ M ž†ž²XhásrsÎ ŸS„ÞäZÓLÈný‹L¢0«lÉ$ý©Üš Ìv³Ñ%­‘"-ƒÇ¬* Iæ¡9´ZÁeO30šñ¡ˆaVóócô%j㘺F)ÁÌÜúñ<Æã±ÃLS¨Òžrv yKÑ&…hÄ9ØøŒÂXª%äÙ Jì¡Yqœ8¹¹Õ»%??¬ Æ™ùP'tŸV©¦æS®ag¤€ƒTÁaT÷:-¯@“…¥­›È(È9#§% p¾zªÁqÁµAIô§7öjиV—·[7*{ï µþ· Ä¨n âµZ7 dÒRΡ5¯H§¦¡èH._õl¨ÁRjÇ«2ëj N Rnz÷±$¬&„û瘂‘¶JTýêj 2ŽAHïªÞ†}R?Ï“ ŠiŒ3‘ºEd´Ø»ÝÃ`¥ €aԷϼ¶ :$îí®Ú`†#ˆë凭å)¨Jxæ}h¥jPí¡ZÜÿv€ RÜ›Ñ÷ÞÕÎè —qïíqž¢7h'ÞqFwºîDvçN|ûïB¸¿îKÛ]s?Ò]ೡ*(e36mÚ€ /¼ßüæ7ÒGõbÌÌ,F×]…”f‘RÂu×]‡M›60¬X±=ô÷qÏ{~?þñy8ÿüõ¸þú+±~ýØvÛmebûÖVÎ0C—³Ûs ßû5Øa‡åxò“‹ýX¯þ˧°lÛmñöSNE‰ëödnÁD±xñ"ì½÷žX³æ¸æÚµxÔ#ÇUW_ƒ³ÿù 8ÿ»_†¨`¯}Æùßû2º®CJ '<÷OñÔcŸ€¥K—àëß8ÿħa|ñsÿ€ÿüÏKñ¿û0~°æëxà~GàƒÄ6Û,m×)‚çýñKñ“‹”Žþ½§ãÀVa§Và»ßù"`À£{ýȇcùòeøî÷ÖàïOÿ8>÷…/ã)Ç</|Á‰Pó{"ÂÆ›ð—o8k¾÷eÀA‡>7Ý´o}Û{pþ÷¿ ˜áAy9ø€ÆÌú !á1:^ø#pÀ~øáŠ®Ëø»÷¿/yÙkû>p<랊OŸõyˆ9øÀí1àú]0ahÌþ]ôÀ÷hœò®÷ƒ™qäÃÅ3žþ´éÅubýâ¿Àýîw?yä‘8æ˜cpæ™gbõêÕì¶Ûnèº'tÌ þð‡ñЇ>yÌc°aüímoÃcûX¬Zµ ÷¾÷½ñ_ÿõ_€N8kÖ¬ÁÒ¥KqÁžúÔ§bÕªU8ûì³§;}ºîæ7'Öò2µ®oLô)S«ú%Z(Õ#Ô¸DÜ.Îf†•Pj²KÞk¸šÃÀ£p¹qJr@Õff‰Ø3qp7ééÎÞëìÏ99€ÎÑÅž"Aš&Æñ#Tϯ»ä‡;Âêý«”üK±Ë)€^B‘êsvššú¥;¼­·x#ž³Ô<²ÒW‰nnü#ì.Qr”©•Ò»—½HÁ¦Í 3!åìN[÷®G:{fŠ^pgFû¾ÇÜÜú2ïJ…“PJj‰…`m"_ëërte[dL¾h_aòD”Kâ51LŸRè:XòsS9}Kþ•DKƧ–Œ®~÷¨‚,^<ë7]”"sÁÙ` eÌ"ø.!qÔÊÅg¢E?î#k!ê‰àÖÄ LºɉØÀlóàkõ}²þЫñмÞïšÔ^¯ÃÎPvdOpìû¥*68þD¥ŸøP¡¶%XMèWe„ •fÖ¤p0jÝàU-àÀZÒ~‰áW=É|0”Sjj¦Ôê™;{&FJ QBg ùÙÂñ^˜ٚÏô×Sútýæ'ÓýxKëÆ¯Àš5‡õë¯Àµ×®AΗáòËcnî/qé¥?ýéõX¶Ì¿{–.]ÚªÍææ2®¾šp¿û}¥Ü"»â⋎·¿ý¼ð…'a=ö¸ÍÛò¯} ~þ‹Ëð‡'¼ßüÖyX»öz¼í­¯Ã}ﻞùŒãPD"É\˜c¡/½ý‰ï±åË—áÈ#ÁYÿüE|ç¼ïáoßû6ÌÍÏ7™¸¨´¬”ªÀó{ž‚¾ôøßy(~ø!øðGÎŒa¯_'ûR&·pÕíƒaAÃJ•€×$ö¾¬Úo_ô°ý±råýqÙe—ãÄçý)ë$|óëgãïOÿ8`Ù²mpÚNAî2õ˜cñÄ'åʬ‰ôùº+‡¥ˆ“=  3JXÐ?ì`<üˆßˆàû†g>ãøégqâœ\¹r%žò”§Þô¦7a—]vÁgœR üàã¯xvß}÷6ÐJÉÕœ/ùËñä'?«W¯n?07·™tÒIøñŒO<{ì±^ùÊWNÀtÝ-¿ÈÔ € f '$ Ìg•~û|Üœ“KêÌl²ÔüÁ5á]TÑskïåŒQö~uC?î£?<­0$6×Tf³«éÊRÀæ =Sw¹Û¨J °óJµD¬vdkƒo¥h\¤‡0­éäÅÎ^ÄÊ5~·Jªmaj§Mþm‹/°nÁh5ýšMðXûq?†”‚¾÷dwÈýë9¹dX (}"ŠDÀ8gÌ`3ÙÙQõÚ<ª`<$Þ€Ò0ˆ &h1ŒËã9ˆôÐø7Ê9<¼+W>à6mËç¿ðeüóY3ãùÏûCœðœc<Ç[†ÆŒh¶1²at‚<˜ÌT8äqÞ¿ý;žvܱýöËqùåWºâ*®ÿCà[ü?Ç?õIØa‡íñ™Ïžƒ‹~ðã‰aéVîm&ï]P·O&”U~]UQ?2ñOù=ì²ËÎøê×ÎÅ¿}÷|<ë™>|Øq‡íñ©Oô‡Ç7°MQåº0£€b‹ÆzOn‡Á°ÝvÛâ=ï~KÛÕþä*@k©ìÏ~ÖSaæ©÷m¿šá3Ÿ=»îº öÝwœñ÷ïÆžø"œþÁwþðÄáŒÓÞåßW¥@ˆ "È9MóEnFT-"}ä#Áûßÿ~œrÊ)€3Ï<?ùÉOsÆOúSŽ>úh¼ùÍoƾûî»à±·0‡~8?üpì³Ï>xÙË^6èÓu·\jNÜQ܋晔P˜Û5דØ5K¶`jÅ)!^½ç5I:•„^{t$`©a\.OaÇÅ4À¸‡AQT[02ep—äH0h"èÇ¥I¨3gHòiâ’X–¸h«("õ›‹'w3a\Ä{‘£ÖL­z‡iß!:âc¥œ¸šÈ €JìÀmÁÅÆ‚@ÅC±ÄÙÀ”ˆÓðÔá=¾@SFg„’ RI™³––‘ªê9ÁÁ-£ÌÈÝ,fg½½ô×ɺwkSô™'ÌŒ#ªº£­u¿[0àÍ£­DZª×Êõ:g5=}bêgÄMB4 B9ÂÔÆsqÙºè L2F"B‚ÎÎØK„• ŠŸwÉýî)*(’Ô‰xÙ78Vß›8ë;ÔÚù ñÙ¡N2&s…‚—Þuëå”Û‡ÑLA"*!ïŽìU1cÔÍD:y wÔƒÌJïþyH•¶-" {GX¤ˆô½‡ ™ºº€«_Ø+gйrNè{“A0ôª#bïÀ4ì(ù ŒÕ+Ûóø°u<=³'à¹Ýb‰Ž@¯€A{?ŸJ–Úä€Úon1aO1„©ÇϚמSED‘7¾^»6y•qMâO(è!ã3Ÿ׭§SO×tM×ÝnÇŠ«¯xàþ0»ëÖ]‚½÷>³³gcñâ̶Çe—Í`Íš58ï¼ópå•W⦛6€èFŒF×x"D¾‚}÷ãa;7Üð¯øó?ˆî}›úöÛ/ǃ¸‡¯2cçîfÆ6ÛlàRñùÏ| >ê8lܸ 7ܰï8ùõøÒç?#ùdÌÍÍaóæÍxßÿ{+–-Û0`›m¶ÁÌì vÞù躌]wÝÏ|úS°×3ã3g}xA‡ùYŸ:¿û¸§á†Öãq}$ÞüÆWáo?ðá`1‹/†šbÛm·YŠ—,^ŒnÔáŸÎ< +t8To}Ëk°ûî»áã9{?ðwð¢<ŸüøñØÇÿ>®¹æZqÄ!x÷)…žób|÷{k°Ûn÷Æ™ÿðÁ`Ç K—.Á)'¿{¯<9%lÚ´Ë–m‹7¿ñÿb¯ øè‡Þ‡Å‹5uÛÒ%Küû5gì¾û®P5l³ÍR¨zðc0??FÁ;O~vÚi…¿F Ìv˶ţ~÷XõÈ#ð–7½Ä„Uû='=ÿÙØ{å!€3N{7V­Ú]t1žöôçE€0ãœ/|r:¦Ýbm»í¶ þûþ÷¿?6mÚ„+V¾ûÝïâþ÷¿?ú¾ÇÆñÄ'>—^z)Ž>úhú¾ÇYg…óÎ;÷½ï}Ñ÷=^ûÚ×âÀÄvÛmמ÷e/{>ñ‰O`ùòå8÷Üs§;~ºîÎ(•µ¢¿>kOcä–ŽÞ Æócô!áñ ·ÊbsKINäòfb VQJïUX@Rrù³a<ßcóÜ<2'ä™: iêäAd"Š~~ì]ßãy”è©$޵ÑÈk©Z…ÃL¼æI´ù‹ ä!fì@‰ƒ‘s18×É@cVéåð„l·IuýgãqÁx¾G/chq/ZP·i3ª§·2‹ó.EÏ9£›¡ã Î)׺¯‡)5›oÜåÛŒI® ýð ªjÈC°–¦êU¡ê©ðiÔa¶!ÏŒÀ‘¶Þ÷"cˆ(rN~ PzM\¤ïAÔ“É˸G¯^êà‚°U¡°pà^§þs—ݯ5k¢ÏÙ‰!¥xÅÍ|ïÞ÷ÄÈÁn—ªdÐH`#ïGOÉÄ¢ôc˜©Ëè{‚˜oÄðÅ¥éuN?LµÆ½«?8¼þéò©ïVYìIv=ν^ýüx‚%m )]ÚlÙkÔXˆ”03…Ò¤vœG[ý«ì?Å ÈÝdûq^hq)x)=ú>*£¥ôvÙÏMŠžô:µV4¼Ý¢JàëuEEÚ~©v]çö 5Eéû¦0ÈÙS})%tì½ëµ¶­ªLgP*ãSåð5C¡¼Ögåû EÝPµ² À=BE1î Jé[ QÎÙÏGNñXnÖRꦇ¬{î±ìáHÛ%ì»çbl·4ã3_¹îN ¹š®éúßËÒ9§¼z/ä<|ßñŽwà^÷º6lØ€¥K—âq{ÜÍÒ/¼p N8áÉxðƒ7`ï½›7ÏaÅŠýpÔQÏÅ¢EßÄ™gþ+>úQÀlŒoB)‹±yófÜÿþ÷ÀI'}öù>øÁà‡?;l1æç¯Á'>1ƒNx þäO^Ð^GDpÉ%—àüóÏÇ9眃üÇÄÚµk$¡¯¿îé"5•º&º×k1á”w½;í´Çû„Lã-=fk•f[c9·ü·ÉçâhÕ˜ü™o+ؽù㉶Zî·•¸¿ ònöÞnmûëvL®º­·ö¸ú{“?ûUûek?OyË–ïú?4Lãä“OÆž{î‰Ë/¿«V­Â¡‡z‡ªýîÈš››ÃÅ_ŒïÿûøÜç>‡Ë/¿ßùÎw¦¤éú_¹nºñZÌ.Þ_9ŒeK»(í¥2­zæ@Qì°¨`Ù’øäg®ÃM7vØtÍ:üÇÏþWoz+ˆ2˜’{뮆J9ƒm¨žÎðfFhSK—VX¢7Ù›ŠôèKi“Ö2b<¬¬¢ÁŽ]®$¬¦YRNéLëºÎ)!¥Œ.G›kµP•`ã9˜­^X„ËõêŒ^RpŽ®©ê™¡K€5¾ñ%nÜ)%dÍž$ ¯¿’¾wy­.ìm™y[JÁÔm_Jë37®C¯„ÑðZY†pëGøm&…O»vÈs&@°ŠÉÕCgwà—† £x>ÊØÐë¸ÉœM½.¬ô:„†Á©å K»¢­³ôgÅ ‘Wl†J¢°)$'¬þÅpñó¥˜VÀæ ºBì‰ÀÑÁÓ½5ê ÅÁ3¼&0'Íǹ‰¨æªù ÒT:‘ýEa£ vI}– šèÌnû×BÚ¬‰‡~óœ3Rñ¡ˆ„¤pÁŸè?§8–[Kw¢¨Ê3 Þñ©õÄXÿÔj¸ W[p«õóÀ"(’0*}óû·¡L(U¼•(¥÷a™EeY¾:øÂÛéÃ)j¥÷Þ€’S¥±ÂŒ E±3ˆkML8üïq<áÃ"‚ H†¨{t9~îüÂXkäDÝB@ÑadŠÄ§kº~;È 6lÈX»öì¼3på•Àyç­ó‡pøáÀ‘G>»ìòoù[0˜="‚åË¿„Ývû<.ºè2¬Y3‡«®*¸âŠõðùäèv…ÄÕ¼-Aà– ‘"åAz¶YºtÈÝÚc¶½[ûý[Ì[¼þ-€Û¡ZpëÛ2)E¿µËçÍëoùùnm;n ˆß–Ÿý:ûì×yütM×tMׯ^U¿_7"dUA“y›ZܨôytSÎ-½]Éo¢Áöx¬!Ý=äÌï…*ámRqÏ«ƒ!!©MkÞ×ð{’Epc–FÈì¬VõW @‰üǤÂÁHH£â«Tÿ¸(îÑjß8y¤iòÞoA)cÔ.h‹´k…ƒOp ÒÊÍúL'R«ú @RÎþîÉ–öÞmÂê6È îí…ú­6CP&H© 2<³æ4j¼a<°‰bŠÄ}‚¡Ttľ1ô…@‘&ÏÑ(É«µ4äÖÌM­ié¥÷A††Š Eè%SŽà/ß÷)*ÙØÌ®(€˜ „íÙEˆfÜjJ?÷$ì `Ù3 8¹šSEs®ö`êÞ,nÐZÙqLX˜¼ó¾öÁ¤p õ«ÇV5‚HB¼€sBÇyÔ!§E Í dB=0ܤ ç´ø àÊ DÆê¦ uEöÖ2@9¢áHÛ¿ÕªDfŽ07ÿ‡N’ËÄ ˜iõ÷Ú0®´0ˆC›BÔ#„ùÂó<€áU|1ʉº?óLv}≠Òy@iHÏ‹dÎ7†iaHa§µ¡{)Ù»Š`\ЂDu`—ÐqB7¹¼4Þ£có„”ÏA "(ßüszk6]Óuç­Ûûù[²d)8à\rÉ:|éK×b—]€GR)êÉá&€€ àÅaþÚðß÷^o×hÔk‰*:ް©Ðñ}‡,y".nø‰22rr™~fn=òʾ*¶Ê™"}›4»<¥`í¨yŸ5§ðèJÔ8yR7El¾š ˆ¡%4€æ€­‚Š&9– :5EgwDžåØÇoÄ`†9WP›Zð—˜L}û)öSœ.”™"¼,wÈD(Ö£{b}¯Š^ÆHÌÍtuRùœA5Ì Õ6²pM($`IêÝ_>êÐ%nžx(êR~ vV«ž$€[M¦õ÷çr 4ós³TS;Öµ~/Åã Š98`£¦ˆ'°Fø$Ê‡Ä i”Ñ¥Œ.'t…0G„,²ï‰§É*=E„îÙI`êŸZ÷W™äíkèÝìf¡x ï §!Û~¨<Œz7Nþ;`Ä+!0pfs­¤-‚Z¢U62„¢—б‡>r•ѧ™‘ÃÀ "C†ïë^ JqÿÄm'9 m®AC"€_3 à*ý÷Ô`Šá³¢È¥ŸÃÜÜãñ< âÀ>Í€’Å  ­ZG¢+>'FNÔê+6óô‹dº¦ëîÎ`ÇwÀSŸz<¾ýí{cÍšs°Ç⨣kÖ(¾÷½/c<þ*Ö­l·ÝÎØÿÇãÜs?‹ .ø*V¬P˜-Å~ûÍ`÷Ýgqá… ×]wozèxò“ÃÊ•+oÿûù5@_#8&ÔTÌ4­qœ®éš®éº+|M(bi‹ç[ytËí2Eé¡cEŠ0á2á±ÑVc„Ú!ÝÒ¬«ŒU»%A£+Üq2-AÅ“°3eP†wf‹Eš3·J‘ÆN Át ‚a,Š27†@Zª²‰6PÀl K€%0ÀÝduŒŒÎÙÙñR¢?™Ðe—øw9!erÖ:yµ!ê ¢†¦œK)G^0ÿFÍsîePg€”YK@ª¡[ۃʲz5ˆö¨”Û+#îΨ–tî¡yñ¸Ø÷Ž÷d"Ý»>ÆÙvfòá+$üó.Ïf‡!•%ÔFV%ÐVÇÅ)¡KÙ¥øQ•Vº„¬¢œ]fäYƈô†4ÀÙR]Hè ÐD ’¢£Ú±³¹ïÁ‡Ê(4¹7;8rWbG§ ÔÂS~å/`°*DCfhîÕ7° ¼Ñ¡}—Ø-l€¢C–‰O"2DâÓz邾Z‚¶HãýyÊ»¤Ú¶ÉÂ7ÙfÄ&ˆö¡ã|`V8;Èi³®¨F™Z ü³ƒ\{ц˜€»½„¨Y- Ÿ_?Žë Äí‰Ì÷s^ÛGï;óºA?T ¦8¦¤Hd6hÑÈ ¡ACòºW© ûƒ4jçàñøFE†A´GÑy‡è؃#Á¬D|~A4ÆP«´L â.®5ŧ_Ó5]Óu·_Ë—/ÇQG…G<â0œ{î¬_ÿclØ xÛÛ€ûÜgŒ½öÖ¯–,!ÌÌ0þã?ÜÒô°‡k֬÷¾õ0®½¶Ç^{= ¯ý_á÷¸Çíò›¾ýïá£ûÞûÿÞ‚R$®¥„Óþþc˜™™Áï .½ôxÝë߆‡qþê-ïÄ¢E³Ø~ûå8ëS§c›m–NYÝ隮隮;iåT3Ÿ"”@Ѹ§TB¿YÏ[Qb:nIÍöš{#¡ƒ‘‚¢[ÛÙ7k E\yeN‘(¤å•½ Ïm€RZÀ¾sÈ®\þ[¢¶ˆK†x)7RÝÁ;Ê**ã~n ×ÿ¡ V”7Ñ"qB®þÔÜ!1£¯~j²yä‰Õµ. hç~m¯ˆò~d—ÀGï»0šðÅVÈÉ&·Íîu!%ËÓÞuCÊWß³hU1¸J¾-I $¡í:…‰Èg$£·ºåž™ÆžT/¼8e¯ÑŠ=,ê žCªž¢‡»*!z Ôîk$Ã&äÖ Z±¢mdDÁØŽºlä5ÝLFÇîbFzþ¸ï¡¥´G{ÿº3ÆíêpH ~Ï1È0è‘çoT¹™b\Æ€©ƒÀ”©<œâÝp0-­NÏj/{õy'·‚0…‡=e«ƒ P øKÅà0]"Ãn8>ªæIïh6é;Õ“,ž‡1ÄÁaèŸÒU›†*8jã±Ä9[ Úc\Šç)˜ †æ PÒn@º ˜Õ«èx°ohòíw…c²)‚ðü½÷0¤?d †"¥yà»Äà\ÓÜÝ&ƒä)ôQ`°`Y >(°–ÁïϧQ”çr’¸L:øg@S ¤ˆ<¬’ë5Mý½GÓ©«O óô1†MíÓ5]¿5+¥„Ñh³³K±nÝR¬];M› DKqõÕ‹qõÕ=RºßùΫñ³ŸÝ€Ÿþt1.½t)Æã~ðX¶¬€yË—oÑhæv‡vÍÍÍáÏ_õFÜïûÝLUŠ`42œþExû)§â£z/ÞþοÅ_ÿJ<í©OÄUW]ƒãžv"Îùâ'QJ™2éÓ5]Ó5]wÒj÷å7Ë•Úâß·ü9F9¹g•€ìµX 90QM2ÈP«›˜À¤[FÔdé•Q¥ðgénEH©ÙûÑUÑKç€Uº KHÄ d )ߌnSrùwtdsÈ´+HÖZ-eQñ”ì¬î%NµÎÌÏ8™×x£n„nÔ9Ûgy‹p:³]µ>å Ü<ÕÜÂÛ>°šU:L0À ¤@QAf•µ”•  Àº.|ì‘v^ªc{ŒÄ5[‘oŒ¬1|HQ¥ÏÜ´ÅvõeŒÒ º.ÃÔß/8êÐ0$\»×ØÁ¹‹lPM¤(mFPÚ8ºJ‹ö ø4<殬%¼êêÙÒÑÇЂ˜ÐiºŒD)Rñ'Ec ….HT‹¼DrG+B‹a‰šBµÚL9Ö¬l %‹„'œ‚Ü%n4¿½Kæk5œEh!G_­g ¬Ö—u 4â8¿œ‹yMLaªaf>À (”êþŸHêçÚ#OÃ0,, µ7¾yݹV$"B5>£ "YhäÿÍêŸ FSŒøÍ¦$±Wµ —|òÄ®>1kŸc¢¨±Ë„ÙÅ#ää¡yä/€qéQÆJBîF]HÞ ÈRPzOV .-¾'&‹ãœ¸&3Ä2‚")yê¿ÌØ"pê0;[ ÑpxCCŠG¹½†¢EUZžAaõÉ5!*š®éš®;aÝA@J”°bÅAX³æñ8çœOcݺyìºëÑX½úQ¸è¢ÿĹç¾ûï)îq„ÙÙÇâ‰Oü=\qÅ/ðµ¯}7Üpöß5žñŒ±té’Û½ ‹/©ïùüÍÉï½ÀæÄøÒ9_ÃO~úŸ8탧x“3>û¹Á]~%LÇ?혖 3]Ó5]Ó5]w7dNAÔåVf—¤ƒã &¬ÁŸv³ëØÑÁicú"‰›'Bµ¶W4'—[¼8©³¡‘éìÅþb¯ÂÊ˧¥+gp” L)nš ¥/´W¨ÕS.·¯Çµï3'ggÎ]ŽàžtÑ- êi‡Bc°%¯m –’¨¦Î«ƒŸ¨YkõL!½÷„xªµyß´š3zJ2Ÿ\hH¯k'u»ï0†Ö4{và\Áà0t¨[õïÚ„ðl¬šD·\Ä0†"ÁÚu¸ÝÔ%°Ö9øÉL Líø»@Ô{ú½H‰» ¯eKÙÃÿ*Èab ™%@v…š¨-ך?„'¾æ!Äða"üeA¨&ªeàƒŒœ}háRé¾kk¾æ)ßHî…OBβš{“».‡l;À)¤ ,jͼFN³3–Ø¿‘ØžCý Îü2[ø {„zà>ðP³ •g1,kÃ3 Ç Õr@C¸™·.()’ÖH8yVBʾ}U„ϘF¡ÅÏ&ïˆi Ž6¤£f`,hÎ@É‚,>( )î²xׇc6vVŸ8®ñ;‘h^ýÁ:b‰¨ ð£9 1F<‚¥Üê"‡Z¼·¾¯Æ".iV×e»þ´™ r¶ÚOœZàžö†‚ÍÖdÇÚÀ•s½¤ ï¬#ΟØ%ĉ:¤Žšœ×¤ÅÅ9˜ªªŽŸÔ.#£‘÷ƒw9;Ø„K¶Ûï%BŽŠ.„ˆ‘‰=€/ðPŠ8 ß±)A”[š¿†^ƒ9Χµ»w×\^ÏÉý¨"äM Ñ«ª5¸¬ øÙÃá  g?­…)˜bAxÞ–77Üu0Bô§S £Zü¾ûÞ35ì Ù€kme¯cà2È«'Á^«›èo5g—3 *ÙCÿÔ`V\iUo‰bpPÓЉ‘L›Ä¾Vˆ¥vbÓ •1ßJ†: ¨6”aŸ¹÷>%ÍšÜÚA¢ÇÍß.1ôˆÿqz1»Ù qSå‡Á3êÅÆëå‚djêÁ‚1ÐK™ÜûNŒQ—üÀGÝšibÅSõ#‰†ËSÏÍhïÀ*HÊ(œ<4NhKU ?>@âçd/îµzƒ‡sމœm—çW™Jܧkº~ëˆ Â¶Ûnƒ‡>ô@<ä!«9gt]‡ûÜg<úÑOÁæÍ7âAÊ8à€‡`É’%Øa‡°ë®»¶ï¨®ëîøvÜÄU¼úU/Á«_û|àÔ“±ÝvÛBMñÐWá˜'=W_}-ž}â‹ðçöâ¨k®éš®éš®»<¯ÁÕaçÍ]7ã Àœù­w¨©ëÃ#ë ¿3xf‰¤g@@ ®²_!÷”dqÓPÓ$Pˆ¹„ZJ3CJÀ˜¤½. )»C ¹ªwµ‹JcS"XΨwï¶ËÔͳ¶ÚäáV`@Q šP¨´>r»; `ñôtô=, Rê<<ñ ÿb¤›¬ß·Ë2‚HR@“5àÔÐSübpŸJÖ2g(G">+’M€@žèÔn8‚) ÉÀ™õ­œR¼¸ ;ØR2é¡Å+ÁDx^ fQ#hÍ™bOrgpGÈ!#(2††g‰ÑÍf$zõð¾D„ܱ×Ó¥¡;^DQJA/½öدµÏº‚u?-ÅkÉ*ƒ_ëÇä†áh û”L#Þ‹€b o‹ˆPï<ÁR£f(ˆËÐAHÆW`XÁ©÷µ»È‚`oŽ«- !WÐ¬Š¢“ÞÏ/ À17é:{¦DÀAϦ¡ú Æ^4•À9È8£ë|¸TÓñ˜f Ž;jéåÚBÕúá¹”D@µB­n£ ߥÏN4Ú¬uÍw)£ï2Oä ˜Ë7™Z‚¥*Šô(R`¥ÄP®«õëí#R³2,ìÑ%†€‘Dãš“Ýþ!¸W‡‡Rí=¥ ”êwŒ.¹Â·(L¨¦kº¦ë·¤w]w3 ½ÿþûc¿ýö¾¢™›Ï|vvö¿íõU ×^{6mÚŒM›6-`ãÍ ;î°=>ô÷ïÆ“žòl|äŒ÷€‰±nÝz\yåÕ¸þúuØq‡í§qÓ5]Ó5]wo˜5Û@^ºt‰ßä†G¼ö;k¥#[ÕÐ9¨l¢ÙÅ™S½q–vOQ…ަøï4ê BÈ£ìaM)qðES0U¤ärw›c©ÕŠ9‹›’! ¡$¿“g&pT4%&t]F_ÆÁ¢#j§­%*ÞapPÃ<$âÀ¤(˜“+ Rò´mw Þð*•®à%(åH7¯{«¬&Ú¥ô0shG]K\{Õ꟧ J†™É`E¨ÕY“‚‚$?"^«æÁdÞ!®M SŒû1J)P1¤D™Œü÷ÚŒ¿×ZG–ÉëÄ(%daHí|…×Õ¢×=Í`ú)RÖ«rXÕM“ê g—ƒçˆ!3Ô«½T‰ýþ\LÜl „ʺp®²‘ØqăÞ¥à×êÙ¨¥‹«*z­™ rŒa&eô¨wH¤Þ›†ªƒØ=Ø)»ÂÂT`= ,î}0ºšóf@¸.Ï.͇Áþ­Ä°Õù0H4õA|ÞRò,ÔTyõ¡‹Öì„Z‹†!C!q²Ÿ?j¡0†‘ ^ðêßæÒsëC(VT¢YÁx"™¢íc Åkû¿i½Î8mö nŸ­zœ”¦„œ$ jÜn´3G…[î|DÙ™vQ?oÔЙ@"ÍâùZ˜¾¿¯œÑqÅê #¦kº¦ë®½j¶Äx<¾C,wU%•RnócE&:[ðÍÏÏãíï<ªŠ¯|õ_qÔï>¢Õmîr¯ÑufggðɽùÆ“ñð#ÁûN=ŸýÜ9X¾ývøè‡Þ‹¾ôÓþ¿á~:ˆ™®éú­[ÕªZ•±yvf¦1„õÆÕ¥Êîu®ÿ=<4ÂÉ !·%Ù«šRø6áéÕÄ^©Ä©kAqØœÅE6#ÀÌÓÊ9è(}/)Î.k–S†˜4™· ü5+#W;¡«×ÜýÝŽ–8#wŒ¾ïýËR`J0 ¡…€y÷¸"Ï$({«êÞ]MÔ|«•Éôžn]³`0)*Ý\mOѵ ¨ÀÒtm_Þt>#áö%­ÁDªZ kcš:בƀ¤C*í5a&†Þ<Þ¢C^Õš\\MÑ—)%ØXOÕFx͇P6˜zî@½áHÞ/i›BH"-NsPí¯e€˜§š«¿'Ê5“°N!¹{¸Y)üPÀ"Ù=ú´™ëPȽÎÌ‘ ©ûç,¹%€(üí©Éš+øl5^á}çd †Tiâ÷Ѷ͕#*‚RüOÊ3£Ùèc÷ÏT/ 6BR¯3µH–OÒæŒzJÙAv×EðÙ¤Í$² ÌЉ´AŽÏÓ(êÇ9ùð¤ž+ u/:d`ÃÃú"U‰à=„1Pðd…Rìo æøìÇþ&Ÿq:ª—=¬Ìõ1¸Í?+b1ôãŒQæ64¨*UóLµ&¿'£ŒûœZµ"³ç°xZ¿‡ï…õ&®)úDÈ%‚íRÂÌh„n”½åO ôéš®»þÍN òV¬X”~þóŸ#·–ˆß< Ú´iÓ­þÎìì >óéZ @o<î±  ¯X²d1þæ-¯šâñG?:®«À¸Oâî|äü¿¨O‡Ó5]ÿý›È›7oò`’Ê„£½¥èƒï ‡8ÒÖˆ=ü ô}€7À;)wȹóëV‰„rÑ& gvŽØ…‰ ”‚RÆ^ÁuL9%¤ÔAuŒ¾w6š‰1uFHìû¢‚¾ïQD`VFÄèòy¦k/"†±§“à –¼Ö+e§ìéæ2¤USWA‘bÜ÷àR )‚ã¸úŸkâx‡Ö)üy™'œû®ˆÀµWÝAÓP§æu_µgz¨4«,nâÔüäÎÚÆ½2Êp Ä]°Ì pçýì“› öœí—pFR뇿`›Süæ–ó½Ô%0RëuÈÀÇœ2RΠLâ™Ë¨ÍRŠaI±Í‡"£¦i^L¾NœÞ-°Ð{´ERÆž¤oÀ,ÁÀHðZ0ï=C p{²;È… ¬7ˆ ˜š3²Q釻#†fƒ¨wÈÓÜ<º®Ã¢EKÀìçÃX{”±'‰\JÝÍtz<(tw©c9›¨ÞküxÍŒhˆ‘b—SA~®B±Öµ^?¾Úkø¤û‰C>8cîÄΔ÷ó}Ôú˜ûÄSŽ´öÝL‡Q7ƒ±ÍcnófHïžûÄ]f¤™9¹ü\D!áx7A‘>@ôk‡jÁ|?†ô}%úÑCv•LæŒÜù9V` ¾@t Q…‰ Z A S&¤”Ñf£åcä.!ÅöA }éQd®Ý8O×tM×]{­]»›7o\uÕUwúölÚ´©1é[®m–Ýk!º³rëeS¸tç¯zßö?¹rÎØyçaføÅ/~ádЖK)˜ŸŸŸôéš®ÿ®¡W¥Õž›7lÜ ‰ ¬ÃæˆÞæR—,Š" ‹p,PK‰š´hÊeää>mƒñàÕ­Li«„ªQgêðÃ}Ŭ6Hó¿³)úîòš1i¾X }?ø˜E½·™œÌÈ+˜QƒXMCÅð>RŽœs«âœ‘Õk¹„>•ÐÀ=[µ¿ºßeåÎbö%¼íÝXnÿúÞeï Rù'ÐIÕo L³`úU9Xak2jQ@ûâÌh°ëNnûÀ¦·!À¥Ä­‰Âåò·Ð°Z¬fšàÑyκC ZÃQ+ùœžnD¿Pl/¡”q „5ô 3 ÏK€Ëµ;1Hö*7³>ØíAù)‚¾w¥ó<„"}ßc<ßU’Ϲ˜„Ò¸ IŽíô‘OŽ56;ªäÀŒ^zšô«: ƒjk}õˆ;pÕÁÏ›b‹ð?Uô¥Ö¬rÎH9ÚÂŽ`æ)é¬Q!WÕ) ŒÇ‚~ìƒ3²@ËJó°Àž_™xx[@·Òú¢(e*UL`6ˆ÷RE9 5KL°g‹i0¹Ø¢3ZO“°kqœÐÐWioéÑG Àuβ¡f)¼E,ØWæ„®KèF3È£8Âå Þ{DÀ¡ÔXB„<®CæTÿ2 ¡/âLt•P¹‡U©sµ /˜ƒù ă%ÏJ^£…tE­ªÌÔ;NÑ€pöZ¬„èIoZcgÐ)9(‚´˜ºC„Ìžó°ŸPAKðð¦îê‰ b {˜@“ï×ÎtT«6ƒP›ƒ-,(‘°mCíY•èkq`‰3- éÜ5ß" L }ïA~~ž1ˆ¤ÔBèIÿüZcz8 *2!Ýà.½¢·âµœÜ¶&õ﻽x¾.%H"äÒCa^ZŠ8¡Ös9€%îÐ÷â º¸¡/%jú€Ü@vÕBü[%OÍçæ[W‰|†Z³¹îÑ®5`äÃÔZ:m€ÖjØ\¨cT†ú:ŽñÇ%û±•‰òà ‹$rmiå^ïÔ{¸Mlå„LÉ•F§z„Þï.*Ð^?-¢¼e©ýÝ5œOuèóö÷é ’`‚ÇÞÎPh›  WÄþâ” L`5s…ÉüüØ•&†°‰äæýOIóÎo ˜à¢µ/RÏ+°¦8·* õa‡O}/Ú{ 9óžrø¨A¡Z¨_Ül0#Q‡áu· œ#¡^$†u à{½ùç5¾ôŠ!~‰(Ç`¥¥ò"w."á…¯s£¢Qs&>è e¨+rë‚ç–}Ñ9“Ï2ŽÏºW2Æe2£¹|JÙkG#ÌŒ:÷®W5P­­T)Âòô[dº¦ë®¶¶"jùÖ·¾5Ý/ÓõÛsŠ›aÆ »ÊÚi§°ï¾ûNÒtM×è€×‰Çç™™ÙAb¨9ƒÞ÷!g r"ƨëšG=enÞøÂ[à‡£ò‹¢ Êû²}åCÈ•F›ÁƒºíÀ IDATáÆ¥÷p)]ÓõÛ¶fggñ¾÷½oº#¦kº~‹¿Êt ‘=%œšìuÜ Ê¸oL³3¤ ©ë3GÅPlõ›öŒT <Ë™Zø˜ªB{C¯=J‘ÖmMUº r)ýx]Ød†‘GF¥`Ô<ØÌ eÜ7é=rv€0aõÀ3A)ž|êïQzߎ*+ïF%" j%T+@)A#‘{\¥ïØO#]¾2Éx”âì6‡tº¨ƒs): Ö2˜µîez Pñýt…{àkõàRt©µàÿŸ½w öí¬Ê=Ÿ1ÆûεöNö…Ä\‚'€\!$ú …b¸ RŠvÊÒÖªn?,ZýbK—m•tùÁRmU7UXÕmŒta¥Ðp‰ŠÚÐÍN·Ý¢…\Œ‘$’ììõŸï;Æèc¼ïmÐsÚ ñÌAAØ;kýosεæãy~Ïð3ƒÀÐn0]ÑÕÂÏ«=`V„éaòø©(+ÕØà Et†JŒÐ¼‡¤ÜöÍ ÒKAÇN¼DDÓD2!s£Œ #«B +‚ÅÊœª€cJƒñý´ëi>ÈB†íƹ¥§ÎÆ6sØÝ4¢µ¸€EÒïÜÀÌ88X0j,„ZÊŒ«Ï%’ÛmŽs†<àgµ.(‡(yŒ»Äy¦A¦<> ‹>sÙ>HtMÅCÁRË~P€ðǯkä‡Ç€& ŽJ jIý¦ÌSöI$Zz4¼¥ JÙËž‡$»›¢·hЙ#ö‰hœ  ¡¥4B°Ö²Qa8ªÍÚ”ü"}æfŽÂ!cGæ)⺚¤ݦ-oþ5ÁjêPG…Á$3R)äËB€ÔlOµ@BÃà>å»Ù͠鈢)×~÷‡ ƒÜ4#ÓÔl6:œYí,5·‚Ý–€«Ñ…O?º"– “Ál~¨%ŽÀQJA]Ê~Ä”ÇhdjóÜæïA„j=Iù1„Ù bn‹‰c8¤êà̆žT%¨¢õÈ]çRrè1EËcÆ`ZÀ'nËÌë.IVí3]ÒBÁ £ .(‚€®¦óí¹;¬k(L ƒ56Чý€q-( m]±Û5´Þf7†!cƒžM±gÓMyÞ13¨›æÆx¨Lfc›Çu/¯£)ÇÊUç@&Èìw̹ϱ ~b(„3³Þ:Ì @)‚"KläÝ€N“Ãn E‹›Ýg* s3Ï ”ƒµ©¯G}f×û Ú°”вT.ð<‡¶Új«­¶Új«­¶Ú꟥AÏ^`RÜŽˆ£q6ÔVôŽ”™Æ"Ê[×fS.ŸrfNè[³‚E{nvC¢ìOªésˆGÆóhú™… P „ê‘]J@ž¼ÅfKõÂX Ð0É£O‰êäÊT*Šõ¹B.(%²Ù%=·!ÒjÌáC4fQsz¦• • ThÚ†rœ°žÄáá!zi®h²¢´Œ%A–Š*’[]žRäžÛá®mŠæ@%F'@²¹´nXm…6͆8ÏÁb)›>všu 9L÷çÑ篺†?1ä˜,Ëm÷øÜ÷}úäL¯´k6Y#šÁ ¡°8 Èmÿ°_hW‚1fŽT±[ÏÃ8h@ÂÊr¨!%|÷韎ã>)GORº¹gãf;Ìm(Ü‚ÇðvŸ dăíã ᛆÛÐ{ %b+4Mj^; W„Ó" vÏmø>ÌÍ÷2x¸æ@"¡€3Û>¥“iPÂ5í ûk&T!y¼‡L<‡6L ,Àa¬”TÞÓLˆ"†q(4óÔ}r2SGƒ",šÜ¡£&kƒæyÒ58±Ùã4²(ÇuÌ¥ r…,Â;æ/™zn*Û­¶úÚm¶ëo«­¶Új«!¿Ð²e*¦±!œaÞ.á™å GдØÌZ65:£«â‘D‚ú-£y‡…#^-¨ÐB>¬A!cH‰¦¥”U‡.=šO‰ l‰FµuÀCöì c‘|ÎÑYÄ6Os­ $[Ê‚ºTd#7¤»ûélªÒCëÙ¹x>ž™Noª›' / iDñQ“äM½Dã¥Zà–C,uPx… ó ¥©3_|ølKúЇ×ßÜöþrÐ>f 2ýßîÃŸí ‰Ô¡FÓ/N@­hV ‚ÎF îè]£9ïé2, }ªiè ‡)¿¯h ¾ásXnhiþ9ôôÐ[ ?3J‰†Êlø¦ýœ®€Má)S'Œy‡e$`Æá©‡l½1P°ß¼:R‰¡hCÁ¤æ`Æa-˜f†®!coÚ3t zR¿¹ ‡ÂDêŠÞVÀs%ª9Dâ”®{©—kŸ=q6ì©¶ qÜÀ¦}¿‰6ägSgL_<çu2²hJË™|N9"ÉÁæÊTàC`îÀÅŠ 8Ø÷|…´l˜+ŠÔPÑ$ppÆ+zò@Á|ȳqDöU`Ù7æœ*œÞ{>¾‚]“ Qrp\ cÐRõÐziüü)E°”%U’Ã/Cë ^{X2ö‡òÁZ`”eÁR+j!<"(n«­¶Új«­¶Új«žšIgÙ¢•ƒƒÃq› ¶­ É^d^¸GƒÑ_n§øâ½|wJŒ§<}4¶ˆ“Ü^‡ÌyÐÊÁéͯ "zl×ZëØùJ=vO#{OìVÌzúêK`]4 ‘XÅ{ \zàÝsxà>³ÇÇãúØd·‘Þ&Æ`מx‡(C™A»õõˆ¦Ú­-7{™Ç¬¶'‹¯Dk¾ç jïú3×”¾hÏfÔA²k÷1Z¦™•Ÿ‘„|HÏ÷ÂƒÑªç¶ X1•Q1<83Ðþu èXl,Í}Bö0âõfv{Oï±M þ…»x^WLxX,€ašrqa0g£fœgnhݡɘ04ŽÖó ÃÊ97G÷¤Í'€…!ÈËAç;—w­˜mP:¶spÒÝÁ=Å)жÞ{xÞ–P•ä0ˆÝᜡfƒ? qí¬Ä˜ˆ™Ð»¡kÛ+&òëµTyªX(”%|ôÀ8Ò±ÑR=2"Ìn¿Ž$W¿`œ'Â(’ŠìlDЙ&µ¾ J %â瀺ÂZlþ‰#Ù¿¦¼ž g¶}&x…*´„òÂ-l‘Uì¡™àŽ®qºàMJ™CÄq­šzÄÙµ2•"ƒ!$ÉȈ‡X;ÃáaÁ²Ä9¹ÕV[mµÕV[mµÕVÿ<ú>•ˆ@07ÛË·œòTËh%tË…óž°=]aA©’z×׸!Ÿ>à†ƒ@a“\ÝÜ N(°ØTy6Z£EvYlâM5#¬\bƒV˜ÖК¢¯+ºuô®Ó£;üu=Ÿ 'ž[w¢=±yŸ¿ ‚'„JÓ+7ŽFÌ,¬â`=s¢Çv:œ®»ÙÖR+ªÔÜvâXóïÇú§ˆYC6á­°µ‘I=#¿(ÿg|¬¦Ù@Fì•!!¤–çyDV¹ÍH³}³¼oäGfýááˆá䓦=檘`3âl¢‰A’½I~Ä6eÑc8ïãØ FŽ©ò…ˆ„ÔY¸D\zåErøâáw7¨×P&Œ~4HP@K”yÝ­7tê n!…® j©¨5<ç} *¾Ã¡]QDæ&øDÔc€3"ØÇö×½@UÀR¦¹ Ã@Ðæhî0myBt¨— rÝɇÝAaÝ"›ž’vÏû7€¦º ÆAùvžS H9° öå×èŒüËÕü¼®9#ìRÝ–=$R˜A%mæ ¨±¥Äq™³ {Ÿ8lúÆGîÚÑógt¢°Ù¨‚jA- ‚AAžC¼¢ÁâœóŸ—9, €bHîå—ç ˆÅQ,äþ˜ :6†±µk .1|¢HP»‰l·Úêk»{Øj«­¶Új«Çg1RÆ}¿£œ?jè=2— ="™ª†¯ÓCx4ó.ãÒ Ä„ZµW°–ŒVSU¬m‡ÞT×|Œô£ÀU±ölÚG£Ã‚RZ4g4¹Q¹‹ÆÌÔ`­JA¡J‡9C{Ÿûº¢µ­)=7à 1 GƒßHR=|ËrxšTøxc¹ÛºÂ\Që‚EJ(J* b?8¡aÐ<ÜZµ×†îŽ¢ ]xzó)=ûŽ D›jfLl /p2'¸1€Ä2X1Ç;HÆfV02ã8-,‚Z"KãðÄ!ªrcn=7ÔÇùTCïÕ cø0ÔÑÊd›ûTT°ìDÒrW´µ ¸pÄ 1 Ê ¿§˜á€ÄI]G”ØèMÑÖ šs!H 8˜`.pÉA”ažn1 ¸£[4é±®·Ì|ÕgäWÄ ª| ›T%)õ„R¥HFö9¼id§[@êDó`Ä¿GRÉ5¢âÈ ªöÜT[ÆîåpE :+ˆ4iäµ¼ŠäÐ+âþâŸëk(/ò¸ƒ²@2ÎÍá1HSÀ”ó3XduòzŠL‡:ÚÒ"`7Ó5(þdyî§zÀã1î{%D’Òµ…ýàD9CCŽa›e[<6Q òÄ)T>æ`ñT¬§Ê†ô‚„¸%ô.Pšøn è^ñc]ÐÕ¦-e«­¶Új«­¶Új«­þ©v×à‹9å¡/î`ÚÑZ4dqW;¢‘2Û:vR¹5DJh ½vÜQzC«á7ëXÛŠÞw)f8´ÕØ«¡­Kfr[nÇ”ÎDÛR)1j jsí Rœw@ò{Ïõ±ƒ!5¢ ¢AÙHʆÇǪw™²aG¼?¶áFzyU,6áEb×玞›àZsû6ZPº*pò06ˆ)RÌñ:I÷˜rpŸžððØÆqè=@lË‚¥dcí"7}ôÇÀuû&dß!(éé/áë^;Öôõ;²T)lôGÞºY gêRãû i]àØÀö½¼ê()K3`)5V×ŠŠ ©1œSôîèh js¸8åç,%bë2ŠO’~õ†ŽývˆË·‡Ï<2ÛâœkÑÆ»ÃaG;À k0¹ôzOX£ €%ÏAº9z[÷öÐlb‰Ê& 5‚"d}mAÓ¯^ DË)„Sn“]”¸ÎÈ#«¾7ôäý*Œåð Í-  ·S“¡–$Œ’yôžç<ó!Xµ/ X!™—FÐRAHŽÂǧ®[¨-|â(¦¾HÆíeì™[Bïh4"ð®;R"?¾$WÂó?æ!]§a°·PÕ_°âàðì uƒ¶Ž]ïàŒ¤š*@áŠß •ÈAш=t“dXDªæ6p¢,ǵ ¦§JæK·å¥j«­¾võÿ÷õçí;g’‰u¬G÷¨¨‡O󯍨j«­¶Úê±ÿ2›t"”eYÐ{©ô¸G™à8q™[A–ˆS>KÆŠÌmŠ)ö€1Åv¼Â¬$t ¨5}íãfÿxcëcP7Ý" Èg “Cºí›i¸‹Û>åÌÙ& µáž޽ߔGs;cÌ’ŸiOYv4¼„º”²Ì4¶Œ=âÙ\†ÀP¼F³èxׄxq47 #ƒ‡'Ǽõáã6p6€ÁȶÜêL|‰}óˆgXûÜ ËqMZo+Ô¢½Ö`hÚá]¶ÂÒ{léÚ‚Ì¿¶hò[79–åËRQ ÃAب­Hda³¤r!a^kù™ºb©57Ôžjè0Ï­»§\Ý>çcÇ‘yχ…sóÍ éŸÏô„#=ÏÖ#u@%IÀ‰"¡ø€Y|-Eƒ>â׆ê4õ x6¿"ÑÄÏ\½ð‹{QxMÙ¾Ä9¤ÖÁ+ƒ¨»¡Tœ8\ ¥‚t3PTcž%"é —9ð™ Ža‰@ÜáR€Œ46+ ‰4ƒ‘'|•ñùÅy§òø1˜@n»G$›[XT3¢ ‘í«î Â8°ëSŸd<ÎŽâØ«Ø¡½A=^WÏø¼°àägXKB,V–‚"%3àmÞË P ÌŪfyñ>𝵆ÖÖðÖW?3·ÕV[=ž«íΡÝÕS¸èì7ÁôGý_h­¡ž¼ËAÁù‡>]ï†ñ3qñ%ÏÁùþ~þ(—ãÄ¥¯=úÿàïïøŸá8‹.žøÔqòäÉíÃÝj«­¶Úê+¯Áov‘£œ8y²uK˜ ?*2¾+£¿RòÊy3ì^籤ÄuhÐØá'Ëít¯ мěˆã13J‰h»‡—ئW|ÈbCNÍÿز¹!š×iÞìg‘ÌÛf‰mê€QIlå…dF8 龪é8=6Ô¦=¼è)7Cn"ƒ@ÎLðÒ@éM2ËØÆczú¯[W ?C·ý~=†Ã~mè­'EÞPzl*Í®ñþË»÷òRv=!£ŽÑÔq´žGµÎײ¶sCƒÖ]4KCªlKß—Íõˆ3ÓŽ£¶C; š9px°¢. –ƒAA·øÜZ_S±·šA{GïIþf†ê’ÇÛQKM^@lë×Þ Úò \4ÜáEäïxÏ>ÁÃ%ˆÜ¥äù˜Ç½Ì2IÚ¸B5äáCZÏ)»_8N®™Q>ÐT„ŒX¿ðº‹;j) ê„?DÊ£.‘ÃÜ^ËÜ8›´ÆgÚš…üð0?‚h‡ˆ ·ÕˆO#’Ìè¶T ©ŸYØš\'Žè¸cß#Gž¸@¨DÔßhN»Oå€P™ƒ#aF©‚Z8ýï)ÑÖ€±uíðn ÒËwD|1ƒ< ƒƒa/TP–ñu”ê€PŠ£ô.=Ëâ}“$.çšwœ€%é?Þh¨tÕphx¯SDÀÈ€0Ü,äìž×ïqn›—"éñ·÷sÓ|®xöc4x`4½ôp‚)C…@:òØÏs^5‡©|`0 ‚ÝnÅîhM5D #†Z%#Œ!XXCÓ©VB­"޵…b£åg! ð²à@*Ê"Ék Áç¦èf±½Wƒ Ïadûe³ÕV×:¤øÔ_ü9¾ð™Ž‡ôfèƒïÃ%—ÿþêSß’ÿ Lá›} n}ßµ8Úý—hv1^ú¼ÿŸ¸ëßãïîýn@Nái—6\qɇñþíõO:Õñô'ÞŽýågð —]Ë/¿|SÛlµÕV[ý'Ö†ÛÜh …-â>ž§¡T÷ÿ@½E‘’^¹Ù9Õ!av(hyÿŸ[öÏÔ{ŸP)QA¯5¢Î\Ñ[ÃÚ„J æh6´;z7hËLdJÀís“y–3·ÛSF¿ËÛÚÓ¥#ª,š#4vQË ]¯þâž2h p–;Á<3–U¡Úf$U) æ‚e©`‰íªH éÓ. î°Ì9/¥LÀ‘g4SxÑÁ€p À²ì1äà$ZW©Ñ| ƒ“Îmj(¹¥¬RƒF2»C8$»RÔ-ž‹ (UE5èøÌ µŽZkø€Çq››Qøô°J9K4X­7FF…eV{«-6½=hä¥Äãמu¸¡I Eg¤[|Î{›ƒˆ –^²1O šæs/©æ|î4‹'|œRæpߨ´"{àð7#Ä:¬hÄÐ@‹&=lq[o(\Pµ —ôÙÓ>w^U¡Þ ­gN½HP*CÉQ8ââŽÖ55ŒI×ggt¤ @3à ®?[; A|gfH)€Lž›~D“RŸïÙ@N¿—úoâ<Ž%ÉëHb$SÑD¦yo bKÚùˆ&¤ Ç "ÞÜ®|Á ©§$HÀr0 ¬y¼_œ1žkmy [_6¸À¡ú ‹øD@.iUpô´<\8ÎŒ¤ê];v}‡ÖÖ{X#TaKâ ¸p(²1·ô¥÷µ"‚Rc8¸5è[mõø­¿ùôø·¿ýEìvßbÆO^…kå/ð7ÿ0ª<ˆg]Þð„K.Á®øf¬»Gqpp—ÃExî¿þ6<ð…s¸ÔNá¾û¯Ä~óu8þ¾ø©GðП‰§>÷ñ×ý œ={_³÷øÙÏ~o|ãñüç?7Üpnºé¦íÀoµÕV[ýÛŸ_ÀÇB¶)_'ÅáÚÌeHÈc£è¸¤íØb*?ifKk6Æ£G"ePñhhºg.9ÐÝ¢¡uz4)¦æMu¾bNÏ»ÀÒGì”™;4Ÿ(üå¶Œ›"‹P±±È#‡¾ºîß¶*¥W‰å±Qîš$sØII™·d³¾\*ñ|ÃÛ>õeú޹T‰µw…ˆ¢µ˜l0…ƒNæ© `kzhÂVJÊ€ÒC:éúåývrDT•hâüK­ ”yŲ̀Tp‰¦±QÉ=@©ŽÀ„êÅæR¤Å%6¿k[a¦ñwù¦Ü¥.ð›VGÎxúû€V%ðadËrÿdì‰ñ.=ì݃l¯Ú/à"Ä–6éþÉ0æŒÂÜLÅœ&7¾„|]’RöhÀ»÷8ç`5@mîÒ¦sàîè­D8Xs»ŸR|÷ܘ§$E“Êî¤}÷ _ ESÃz´‹µVÔ 6S›×ÙÈQWíñÖ ‹ $WÑR‘‘;x Î,®‡¡6ÖØ¢ Ç ä9€ái‰†:Á‚Š8‚ÈÞ kטòþ3Íyè_úóh«8-%m1އ6ýì€c×ol3w09˜BU°p…R‡}#ã!»¡Ý$ô±Ë÷1§i1k°nŒEï"5‡ £°ÞЧB¦Çð¢0z^¿[mµÕã·T—_qžÿ‚'âo>u7Î=Œ‹.~2þ‹î¾û!ø=ÿ;Ös—ã{^yOžÆïüÚ[ðÌg>€+žüB|Ûó¿ÿöú-\túX.ú7¸ö[.Åí·þ{ØC'?ã߀Åp×]ŸÁóžwÝ×´AŒYF» IDAT€GyçÏŸGï};è[mµÕV_Ͻ½c žýÕÔ»æf¬ Á(VQ$6˜jÁhp(s³ƒÈNqkR+êG¢[khµMÙulV—  f3Ü5·˜‘Y£)$NÿjúEÕlÞôKf®3ˆ ÛGFi@Í€{®ÄVÌÓxÓ1xHú84"µF#' É-pPÍynÐ'Éž8›¶w–Š"A|&v¬; åûKÉzKñƒkø¯s€@ä~òÕÕ`ê{èWf>’þŒ‘ƒ=6ÈNð0L%¥ÙÌ%¢èÖC’$bÍADÊ×™)€dâM/…oŸ‰¢írÍA\PeèìîñzC8;húÏó‡†&ˆÐöjcî·:’µ}ÉšOP¢²£€rlHc@SŠm¿”; A‘n ‹«ºçµn¦ : Ø\MUÅ8 >w–‚êŒâ^Æ ‚“S±*¡+”.-|ê8iýóóßj«­ßu°0®½ö|èýÿžøä»ñ ßô_ãYלŧ>uäÜ'pÕ3Oÿæ'âÞ{Åó¾õ™¸ò›þ;<å9ßZ ßöâᢓ/ÀÓŸý4,„ßôÝhý¥¸âòÿøÇ±Ûíæï¶¯´n¹åÜ|óÍ "|àÀ5×\ƒK/½o}ë[¡ª¸é¦›ð¬g= ¿ök¿†u]qýõ×ãE/zÞùÎwâU¯z~ÿ÷¯{Ýëpûí·ãÓŸþ4|ðÁ\*n»í6ÜqÇ8}ú4~äG~d;ø[mµÕV_‡EDP uxa’”Ä艈`Né2O P©L&¨@Há ˜ R4%XjO€vò ¯rïÙ Z4»?®[ä‰S S)ܵs³6È×”¹ÊîÑdŽÆÂðØÆ÷ ·ÀT3Ð!“7Ouª‡€A€xF»%Ù‘²y‹&šr žq^Ñ@ç0€€RpÙƒë[zNøp´—p‚Ã¥  ø ÎKx uÈ{¡9I™bðôpïAi8–õ<ÕCŠ<šy>ÜØwU G3<›LD³ÇRàÔ V l`Ò n6ÜÕÛLK?u©i Rä«GsÉE2^‹¡ÐР:ÖÝJœûð![ø¡‰)‡˜)ÜÐÇÀD“S !Kʹ_ã2k¡lì4Ï—žJ8 Ç9`c(à¡\àŒ+[Ê2=ïnõhàCIî“âžgeÂõ,Àd¥`1$/¯'8:1ÐZÆÇí½)D6ž£d„ºƒ9·õvœÇšÝáhÏIcOFĘÊíñ‡ÙXÓÞœŸG3ì´‡ÖMuÆ|\Ÿv’Ñ ÏO`$x jX’ A° ()ëpN¹z>ªåˆ,–ãxTÆgÇÕs4´t°!'£„8oÍBÙ3Új&I%@Æ(ñ:¦zˆ>†ÀÀ¥&Û7ò[mµÕãw[ˆB}ý~ ÿgxò¿º pÇw¿ô›ðàÿ#®zRدºê"\uÕ]ð½/xÑÓ.øó%—ì7ågžpæ«z=?û³?‹›o¾ðë¿þëxÃÞ€7¿ù͸þúëÑ{Dz,ø…_ø<å)OÁÅ_Œ÷¿ÿý8<<Ä›Þô&ÜvÛm¸ùæ›ñ¾÷½þçŽË.»,a°Q¥,Ë‚|¿ú«¿Š7¾ñÛ °ÕV[mõuÖœ3Ý Å³q0~Íc0Cx¥ P"ˆ+Ü2Ì ÝÃËaÌ Z;º'ˆ©5´¾F|Uz‘=·qð†¦à2‹F˜8|ÒÂRjd„X5_ð—êú=›8‡] Ë#r–-þ]Äc JA6ôQ ¥ß¹µG‹ «í·ÓÏz0ü¹!9„‹Vt9qRÖ}îÇð¶h2ØÂã„ļ俗œÐÝAª°®èUæ1íw”óõo™ò° Åðˆ¥›móF\Ühá`¢^ÿ*^NÆ=äÕê‘m¯†Ñ6š x êr€Z „£ù188PÈ¡=2¾×¶†§W N€Œˆ,Dcä„gñgN(æö7%ÜæsëŽZô¡–fŠmëxÔÛ_y€ µkäÉ›À,%ß…Zl~¶R$ãµ–ÙК)D9‡ˆa ¾ƒ\á>¼ÌŠ C‡æÀ¡@F³˜?vì½ØM¯Çf„Bïkœ»Ã§‘×(Ò&À"yŽDš!3Ç2y(†Êâ‚ Ésœºõ°`æ©«klýÝ&ÄÐö…üVáÈG翩¤ƒJÁRÒJáenìY†´žçp€í³Õc×C½ráx$!á3º}Oz$Ì´ˆýKb€B‰þ˜jE&4¸j(„€8ô1oƶÚj«¯Ç=*þÕÓ¾!"$©Cqp(¸òšÚÇ z;Ò£¯êåˆÈ|®ñÿë·~ ÷Ýwn¹åÀ­·Þ:­]ŸûÜçpíµ×¢ÖŠŸú©ŸÂ 7Ü€7¿ù͸æškðýßÿýøìg?‹?ú£?‚ªâ¯x^ùÊWâŽ;îÀOþäOn úV[mµÕ×_‹æ’ê`AÙ­)WÍÌìÙÉGwWjnŸ I]¯±‘Yž[bo.톦kÊÍ[¿©æMy)ÊÙ†(š)L\†@«£ºÃKlr#KÚÌÍ6ßo*‘òasSrÚô‹×Œ‰ãxB¼ŒŒñl]Ãn[y³h’=·xU7ÀQ÷Ž]k0 ºÉÛwÊ,@=⸰ƒ,éöLPD‰IæaG¼6D½9´Òlư­d Ý®Ç1-:Ó¾¹JT Œ8D¤hçÖô^§¯Ö,%ź÷\áÕP½¢ä{ÐfXÛœ;B[D’[NBXjaôîèµî›®”ÜK%¨†gŸ­¯h-òè…Vefp'í-RÎ’Æ•ý¾9ÁZBôJ}Ïf)H?Þ€9¸¬E$ ¨ASj*„Ás‰çbÏ¡ ¸ Õ„å®°¿1ɼú™G³ÍÊ ¢èJ(“pN(©$ðŒ(Ë^0Ïß à{Òã&p©k±mwL¸ž›Ï†4 9Ä€&l.^—)AÄ"#=¯ãAäŸWûP] Úä\5ÇǺCÛ.>+á|ïû6Ÿ…Q„ÁT!e\_C&+ùú°÷¯ÏŸ3¾W U€èÁ‹X»ÁCÂñ†«ç¤`•)d˜:…õÂG.m~4çž›ô1¨ðh‚µ Ì‘3ï±\Û í‰³£&‚#úË—Þìo¿Z¶ÚêkÓhuןs(üZkøßþäOð§ú>sçßáüùóøâ¿ˆo¼¿ôK¿ô˜÷„œøªèí”ðÓñOwÇwÞ‰}ìc8{ö,Þö¶·™qûí·ãôéÓxôÑGqæÌüüÏÿ<žýìgÿóÿÿn#ËoµÕV[}}6èjÒb³ÉÈFcn ÌF%š‘ Sd¼è[†Œ¿"+Ä_€¥ d)X2‡Ü†ÁV\`¥ ¨Áì oÒynÑ9eÜ‘qNs(0Ðõ‘Nà"ÇšÓŒ*† ywÊQµ+”:Ø2:,QÑœ‡ôج'y=~±•š>vÚçWšD¢Y›P/ôçVÑ0>ÏuéXÍ€>dá@]*ÜËÁc‚iJ§{x™Æ¦¿õŽÍ²iäûلze‡Fø÷§?׺®” +OA- '¯Ö°6¨¡Ô ××R&¬´¢w‰ãCŽÂ%"©’Ïéѯç‰u‹x¸”£Gn<µhšöRX"„$g‚Xl_ 4N/ŠuÜP°†t¾/ÑÌhkɳæÙ¨%QÜ‚(@bðôfSFPZ=̤¡¼Xq„~><ûN€A$(õBpø Ï·N‰w4Ëžÿ"€‡E Ôã¸ò<Ÿv“â²o€—„€ðiOÆ:hxÏ=à„ëÚ'•¿A©e^ ô8>#?Ö0Ï5ÊÏ“†. õÀºpÙÌ$WˆôHÀ°+kÁ|/¹ÞoÀ=-Èå ÁSÕa­a톥 ¤ÖìÁ]ÝÖh„&†y´ßŽ3PÛ¢TÎLóT5@cØí9@–¯ifÉGC×ñ³P@s´uã[mõxoê]t^Ë_|1®~êÓð’ïú.œ9{E ž{ÝuMpêWZêúU½¤ë®»úЇPJÁç>÷9À_þå_ÂÌð¦7½ §OŸÆóž÷<|üãÇáá!þøÿ/zÑ‹.hįºê*ÜsÏ=øÐ‡>„{î¹g6þûØÇpæÌÜÿý¸æšk¶ã¿ÕV[mõõø«Ic‘d É›v·ˆûjÂo-qƒþq`F×ôc; žX“T‹•rYEjD«­äIf‚¸@dï7†gŽ68ç´§N£pl GØlȧç:ó–³]‚'êÚ]ãµ Í›}Í8%Ó¼q÷ñž„2#À†M×{ø·G\¥´@»$Ãkxì¥4´^ÞÕu6lU+–²@­c98ˆƒb†îÑàN´§üÜhB±0â£l¿Cg''Î<¶ÉDŽ¼è¦±ÑäÊAÇ–üwÈn ¹u- j]PJÆ’U‡Ÿ0œìhU°,‡Ë¤,ÂûFbô›4èÚcso–ƒŸ›ßÙ¦WÙÜ@šì턞Qn[93Â}øîÁ9ì6ÍÏt.#`gc€‘rñ)mŽs-Ã%5´‚ I4 Ð]ƒ™b×$¹¼XgÞÛN(T.¸ÍãœG“rç™9­S–Wr€'pX)¨Þ‚vP!|ê€?ô<ÒÀLЄ‚dD✎!Š©¢ôŽ& NÕHÄ 2„x^O.@­Á¨„E:1@-<ì_~¿¿¡ã¶Úêk×o?ÖE¸/€…ªêºë¯ÇSŸz5T÷Þ{/ŽvGø›OO}êSýùÊ®ðný«šáÝzë­xÃÞwÇÕW_+¯¼oyË[ðè£â%/y ^þò—ãå/9~ú§çÏŸÇM7Ý„—¼ä%øÑýQˆÄϤû±ÃÛÞö6¼ýíoá~àpõÕWãÖ[oÅwÜË.» ¿üË¿¼0[mµÕV_geæh=­ã0”RƒH®£ùNë*3BÎ\(›èÈ+74"“²Y&ÉÆ'›È4¦òðÕZ4ƒÆî)q¶$Õin–ÝÌE2B­”ýnT’È ÊM`F,%q{xs£¡.ǶÇAæ.5=è©0'˜g$–yJÝ}¾'ƒ¡›‚²‰ž°ÖvëšÏç¨%¶ÍN@ë»u‡u·ÆVÓƒÃð; !)ÔÑöÕÓÐÐÖuú°-7«žÍçfp*„@³±Ä1~1¡÷ëÛq)8qxˆR+€Gñ¨Ÿ‡»aí+¨·ˆCK9ç† ˜v4× ž3áp9T… dT©Au—¯‹“KèEP4‡ÃK÷6AËžnnô¶CkëÐL8[n-¡#N™OŠ> £`vféI·$ŒÍ®ñ> 0ØyîÓãÁ<9³Ë†çå®u¸¬VAY*ª”88ax#Ø,s¸G\Àè²É&€{ŸˆRˆFzí+ÚÚph“.>Îç0³8¶ù‰³0j] R`Â0õŒ ìð¤¿Ã­GZSJçsîê‡PL,µ‚™39!.Úq- ¤Æã7]ã¹)äÿ•Kœ3ƒÊoÃôõçÏŠkU[‡aŸÀ"“:>Ð=3A3‡<Îo‰›P*píè©p…$@n™úÐ{üŒšþtC«JÉ"a£\§qs0ˆ9j=€Ä9QEÀRÐÚ­áÜ?r£¾íÕ·ÚêqМï++œ½uÜú;¿ƒ÷¡7Å¥—^ŠƒÃCÜpà xÚÓž?gh .ÿãMú¡~UÓ:fÆ[ßúÖ þîW~åW¾ìëÞò–·\ðçŸû¹Ÿ»àÏ?ñ?ñeßóÒ—¾t;Q¶Új«­¾®tãîP8ú·r´;šíA%ËÆ%$à5Hçv,ÿwn·13…ƒàô÷htÕc…CP„R†ÛV†cMH»G¤ÒUI‰ÖØjYø†ýK6ǃø= r!EïÑ|æöô­— qË<«Œ@s€’ Í&P˜/ ¢G¶uAar3½ÔR—xß²]ã³ H\A͸3ólXsã_òæŸò½u2*ŽŠÙ SlŽ®K©‰kí½õvĆ›ˆQ £–ßD~vn³™B¾7œ¸ƒTP…aÔZPKI0Ï p4ñܘDZÏÏvо 0[ç&{ wt_¿ªŽŠÌjÉöÏñ€¹íiÝó¡ÂsùfÇr› ªG°n9òÈ£Ìí{ä´?ï f+àáƒô£/²'0,š`ÍÏt¤ø°#¨…PkQIˆ[@ {м„â\c.©JL-›‡Zf}³Oâ~‘8®E8ý…PLa*¨KÉF{ÄJ*GÆ» †€HÁR,'Q%˜±%·°·Á»¡Y‡²AdÒFQK 8¤÷x¿Àq• å{Öµc‡=À/²éc°1œèHr?§zTr!q­¡AVŠsÇBýÁÈô´¿°ÓË™Z³½RÂŽÝÚïõüóf?^ùP† , xÆöaópnµÕ¿€»!† ,øž—½ ÿú;^ 8yxE‡‡©x£´! Lëøú?¯ç7äV[mµÕV­ÜçB 0”¾K–§iÜ¢Š;º9T±¬¡$YÛØŽõY”͉Ã;gÒé&ÀâÏRcsIéóUC£™CðŠK³‰@¥Ì&|hpèzÈ:§[ynô0¥ì"‚’0òØ´ J¨GSž„"û&=¤í´ €C™MR­’t÷ø÷L‚RkøØ-€bµ2É  6¶×`ÞËçÕ@ÖÇ;}°˜M0àkƒÏXHÑQÀìûÍ&Yl‹Õ±v… ¹¹ÄFxˆÖ‘d4×cùߤP#p’2«ZP0€†ãÙnÑ$kÂõÒïM‘ûìuÝoT³I4WLHXrÛƒ´†éƒ¶”¦[6Ѐg]¿ AŸ\{¡äH²]ê74ÑH•‡,= ë µ{Xœ @­… ¸ Ù}œqsp`áonA 7ÀD`0o4®ÆŽZÑ([d*Ï!’MmrL¡MÿßunrXâ\ ^2â.eúƒ)%”"€éÜ’jT!È"±Î™K€òÖu‡õÑ5αŒáã’ FÚöÆc㟉 )¾Çô‡ÈÏMstŽsÄÌ m,I8¾g@èCÈiÇðd1fÔ¢™Ä¹pŒ;@çlþpÈx!¹o‹h¼À”TæÐœ=K†)bëïñý†ŒýÛj«­×E&ñ{ ŽK.¹Äß0ï"8^ (í`˜à+€¬ ä?éÏUS9¶,Ëv’mµÕV[}¥¿“8îÇ)©ÍE¤NÕƒâSîìˆF Ã]´cqm±!.¹%«±ÕâÙbgF1eÄÒ®E’«ÄfÓÒGÌIÛžþÖ¨!o¬ËÌ…ÂÜhTx‚­ç–oøÎM$>sFf¹Ûx® wùÎ ÊRPÌXͦÙ0 –†ô’ AÚ˜.„Kå†UÍA©0s¨õ”ç6X·|ïãÀ Žüñ|íî@9ªX–µ HI5æFÚQvæé]ÖÖÐ{G³øóSÆÑ=ß[J¬¹MÁÃŽPF€å& kåAÖæùÉOâe/{Ù?ú5½wÜÿý¸âŠ+Ócæ3ŸÁUW]µ¿[mµÕ¿¼”ðé`Fæ²'³ÿýå6ý³® t†²ïs˜Æ79rž$r n¾©@œÀT`yóìYè䎞M¤vEמƒ43×MaDI¦¶”ïeÔá#×ý¦4›1Cx¾‘’ñØö´5ÀoM{ÝÈCN-¹äÎèÌ ¶}£’Rcdö3¹£å÷/úl ‘¤)ÉÝf)ëòÿcP<‡g3Õ¡)õ6 °a|]P¦½Å›ZÄzq‹`)G1@ñ‘ ‡§” ©=UéѵoAƒ/°IwùÔPæ{;Ùå3c&ÀrƒÊ)9OXždÜÕ—ÝŸdö·Hž€,a5 DCKÓ£R!5åÌ,sH¤©ù¿@z<ài–ç  Älðá‘H`ÙÄ>‚¤DœeOïs˜3Š8‡RêˆbßoQrøc.Ð^Ð;CBî®¶Ï(/Œ*C–¿ù+à°…dSII… ùŒs%iðÙ<2ûÌç22Å%×÷íÑçæ›t¹‰‘Ðw0+hkË ù1‰ÉW ];–Zc€„ £)Ôû”ãø1*ü„ذè(®õÖÓž!±Õ/å‚l73‡Y•E|¦,ÉÁË››gô\ülˆå:[Ï ÙŽ¥Jcü¼`‚”šÇfÄù:zï0'âèh‡ÝÑQ¤Tš Ç­¶Úêq{'j,ßß³pþ¼!æ üÌ<À]wÝ…µ5‡š¿àBÒ{ ðSDv™ºX,!s«ڽÚæ&›ÂÑ  ŒDñˆAÓÉ¥ç\‚7ìâ¦È/w4ØqŸµÖ5DsÛ¢ V‹n‘h »jÌÈŒ&yÛ§:6­kkh­C{4ÖÑTI4©#‹]Â÷-’~hÛ71ÑtØÜÔ¼sOȘ¦TŽ’Jí3Ú*hÖClfX[´í§0œ°<øŒˆï%šA€2‡=|ðÑçôŸGFx ÖÜ"‚Æ0"¼íœ¾fN€¬ù¤„Û>î̤,Ρ’(WŸžè"‚"Ãß6‚ 1§Àa¯˜˜Ÿ£˜Ïhf9éç>¡iCªÒl.)Át#B0é4ð4dvöÈæf‰M S4´³ÃGtÜfçb ŽFœäxtW¾F%˜õi±ˆ zœg#ãÛáp%0k<—ÕkóHÈ1‹Ö{n®ÃraªPë{»„!DÀ†¹†ü{lñ™ê Q™qëÚÐÚÑôƒhZ öTó”Õ#6äÖ4Îeò8?=6õ.ã8™Ý`g¸PÆ®)È4dôœÄõa{1³£Ç`¤[D%ÎóÇÈñ°Xœcµ‚Õ`,à!Ó0>3ônh­£íV쎎âÛÓ¾ÕV[=Îo†\&âhw„;?ý7¸ÿ/àÞ{ïÅÃ>„¿½óN<òðñٻŽS§NáâS§pÑÉ“8}ú4.ºè"œ9sGGG>Vˆ„bÊõ1Y€ (&ÛžPº¸iÖô~GN 4v \"·zµŽu·ÃºÖ62£Ñ­Ñ<—¹5)Æ1–ÛŒr[ûm×°®+éM®K6—ÙH´RqÒ\Îìô'yÜVRù}ÃKC†+±9î}‰m¶§RÀÍÅȶ&´^l IDAT"”eA­K‚¼ˆ¸EüWh—ŒU‹F¥”‚*\Ó¿È9§ôg›ú±Åä„ö÷±0ÏìïÈqÏÑiF¡…-;ÿ?‚ÐG™GïDp%8;:9Cç]F~Œlî#;;· eôãF03ÔëΠ}dÔû1õB4éä{òøh¢Ã&¡ÀðuƒrHâ)ë/€3Ì(úž±k>az‘†“17Ìí«edžØ¨ ?ÿÀ×9 Çìäˆ`ˆ (à1ÔáB{IŒ»Þ±;¿ îA‘=è6üÚ‚L…‹&¹G“˃f#2ÎÕ ½5¬íçÏï’«€9ü‰F=8,9È ø¹Êy;ÀoeÚ7@-~–p'–ŠZ Ï<‡?>ÉøHV†5›ÙëÖn »iû“ŠŸ€»Î‚ª]*ŠÊ`0˜£[ö{ï1˜J&CöeƒÄmµÕ㽆Äc€|ï½÷âñqöô)<ù)OA]Üøüqxxˆ«žüdœ¼è$j…”5c'—RPKüî¼à& ¡´û§ÔW\ÏþóxôÑGñž÷¼¯}ík¿û»¿‹ïû¾ïÃüÁ൯}-Ì 'OžÄ§?ýé ßk¯½wß}7~üÇög†Ë/¿ßò-ß‚ßüÍßÄ‹_üb|á _À+^ñ ´Öðö·¿×_=®¼òJÜxãX×·Ür ®¹æ<ç9ÏÁu×]3ûßýîù:Þõ®wáæ›oF­ðž÷¼ÏyÎspæÌÜyç¸÷Þ{ñîw¿Ï}îsqñÅã®»î‡?üa|û·û|W^y%¾÷{¿§NÂoüÆoàÕ¯~õ \|ñÅxá _ˆw¼ãxîsŸ 8}ú4j­xå+_‰'NàöÛodzŸýl<á OÀç?ÿy|àø²!ÀV[mµÕãªIçèwŽBÛ@)@ɼoF±ícsw_#4)Ó Îh- ÷±ÕÎÇeñÈ)÷ÈL§}f2ƒà)§-–[yIÀ I4\ÏYŠ$à+žW­ ÷ž^,µ¢.KJó:Õ¬ƒ)ü̇z€ÞÑVEëŠ).I7—")Ϙ©\†LðkK8V_Ö¶¢åÖ®Öq1í}Ï `Y*¤0ÄP9ñÑélÎFDuzEÒ‡«Ñªu¨Õ½g9=ã£aj]ÇÓ¢HA)AvæÐÑ­Á`'  ðŸA™Ã€á)Mú؇únX‚ÑÔZØzÀé|¼Rr’RsóîpãéiÍР諃3ŠS^1`%%üƒ!p,'È­49WÈôR‡aÈâ‘ÒeMC|ï!f Ñ£ÙÐÙÞ3Oˆå†ºÃ,An=ΛhÒˆ6Îù¤Í‡wÛÒ* 9,`ԖÚU8ö0Töê‡AÆwLu‚iGSžÑeh”¤³x˜µuôÁ(¶€œàd`p6È%À­ B±€C)(5Î¥˜ )ýÙs䨧ç[çnô± ¦9æu ΂\Çg)hÌDo@×xŽBUA­Á pk9d±¸vàáÇÏBÌE ¨ì #…ºaæÚTäÀvd`1Ho31‚(6òš„x!B-à“'OœÀÁ¡`eùoø·Új«¯M³ýØï‚¶’ª.àIOz"~ýù͈XUƒ«47­tž‘»£#üíç>‡xýW¸ãå¯xÅl"`µõŸíç»ãܹss[}îܹŒâytþÝ?&§'"œ>}ƒœ={=ôZkøð‡?Œ~ô£³ñ€“'OâÌ™3h­á¡‡áäÉ“8{ö,v»ÝÏyîܹ žë‘GÁ©S§pöìY<ðÀ¸ï¾ûpîÜ9¼ë]ïŠÏÔì‚æˆMý™3g÷Ýw~û·îŽÖ®¿þz\vÙeøŽïø|ä#Áë^÷ºùžÎž=;Ÿóâ‹/ÆÙ³gçæ~«­¶ÚêqÛœ“CŠA(ú²J656@Vî¸@µB-I#VI$hîE3Ü5ä·ª#¨,V†âåá}6Mò;àåÿeïí~m;¯2ÏgŒñ¾sí}ŽÏ9ñÇ9vâØù²ˆ $Á ¨€¤ªD+QE¨%¸AÜ!DßöE«ú¢¯û@¨%>”¢S)U§Âîºh ¡F–I)Rçñãøëì5ßwŒÑc¼ï\'6…âNU°jŽÈ±Ï>{¯½Ö\s­5ÇÏó{ÀlPŽjH¥K4¦Ó, i[³ˆ>ca˜ Zçð„ƒp8T,g (ý¯k[Q›DÓ"5¶tNè-2²ÍÒ]k<.I²öh ÌuËÝæ2²äB ^8¥ò ½Å÷ÖºÄ$°m‘ݰÔJwÀznÄSâ|"Å P]äRGîrH¹GäYk !Ϝ🗛am‚Þcsžä’¾êeuó”àûð¨ Êc#ãÃÜ`LO‰{æg{W>üd÷ô\K`È·O7Ø‚ st;­ÄPijYîšM.,e猥B!½Wõ¾ôÕYÂè˜bØ "¨Å2/Ü‚8OB1(ag$’Ï%À0$Þ†êóxÓ‰¯9šêÜp#U/¶ÍÓι¢v¶ô‚¤ Üàh÷ RËÍ~q#€½'ˆ0#Ço÷´x  „ñìþ»‘) /éíÍ(1 Ôxƒ¥Ã•` T.¥Îó1†I©·ä7À O •ȯDV=q@“¤¨gdܱMŽDpÚÚp¼ÙÐSÞÐÈž†Þ k_a KÁH2ò÷R™\ - ïd|œåóu±Ó7IÚ'„Ò"ÂJp/(E&–@ìµ×^¯õ¾Þ&™âùçžÇÿóéOãâxÄÓOëÍ <óô3X{Ç7Ÿz Ç‹ |ýë_‡¶†ë7®ãÞ{߈ûï¿7nÜÀmWn»åvÏåüUAâNë©§žÂ7ÂþsÒ€ÿ>ýÚˆ€=ýó+5ú£Ì øÀð?±r_úÒ—ðì³ÏÞrÛßy›ßyÿ©¿VUüò/ÿ2®^½Š‹‹ ¼ôÒKçÏ”Rðk¿ök³Y¿råÊT6œÍfü»¹{íµ×^¯­ˆ4븦.çgÑ–"¨5€VÌ’ êèh(T µä&’ç´©£›Ì t$RÅG`)‰=Ç5#¢råF`#÷ô;sÊíÓC]ò{‡Ö˜k\°»Gƒ?®Ò½€¡Aç X`Hóâ=àPÊ4=²uIbxf” «+  ?ÉEwNåwÙ ³COi÷¹ŠaDH§Eñ w¼§·=ÝØˆÚ¨y6Áê[•å¦:šÁ®qQÁðyl±É6·^PØfT PRåKK »kGgºnYа2€&‡€OàkÃoÞ°öÐŒe) ”´Øæ@WEï)ïÇ”1£`ô¾þ”‚3ÚR¡v"+ÖÖ³A_Ѻ¬ð2•ðý‹¤z€@â R8"@©ÑàÚܼ{zćÒÀRön ‹¡ ˜AÞrfžKW‡Q4}à”ɃS9³AÁNƳØYløihMzÚ RíÑv#'~Üqäø’åY: ~c¨F¡@é€pqÄÄYb ˆÍP*8Ô5 þ˜öÊô‚àK(´u¬=¸ Ž8#s{ª¸??ì2šç¯v@{)y fÀÅÅ...Ð{Ïh¼Cl篵ÑÖ‹cGj•@9q-¨ì9èsôž~‘‹Ó²€(f$ð0î0O‹ q>ºa©KÀÁߣ5Þ^{íõ}êÎᢓâþì³ßÂÿááìü W®\Å]ׯãí¾w]¿Žk·ßŽ;n¿×ïº ·_¹Õwý•¯~×®ÞJ9oÖ^Õ]j­á±Ç›Íæ‡?üaœáÁœ_Ç;Þ³³3¼å-oÁc=wÇ£>Š÷¼ç=xì±Ç@DøÚ×¾6ßëNßóÆß}÷ÝxòÉ'ñøã._¾ŒK—.ÝÒàª*î½÷^<ñÄxì±ÇðÁ~ð–ûñÎw¾s~ÀÃ?Œ¿üË¿„»ã™gžÁë^÷:¼ûÝïÆŸÿùŸÏÇóæ7¿wÜqG 1ÎÏqÏ=÷àOþäOðÈ#à}ï{üñyyäüÙŸýÎÏÏñž÷¼ú§ŠÿñÇ#<‚Ç{ ÷Ýw~øa<ñÄs ðÐCíçõ^{íõÚmЙPª„µ„MhníL²/· ®22æd¥$cÈmàEìa§mëhjpR…\Øç¦+,Ä âŽN%‰Ï8ùÇ7¿q68b  –e¨ m±mL2x‘0[nCÜzƒkxL)ÿ§=)¶ð­®íˆõØf´3Ï­¹°ävÓÐuÅÚÖ¤RGLÕ Mw ð( ƒw¸õsËæ-ÞèãJVŸ›q ç&^¸F³ª =3£§t—2£=‡‚‚J±©TUÀ ¼,XèK)¶Í‰Í@…ÇÔÛ’®N€F:à8W¨*3dYPrÛ!Í'…rlɱ1¶£uLD;Çã±Uqǵ@’ln­ã¢­ÐuEÏæ±°@VCk‘T.ôëqœÈwG‘M¢L‚|Ø€f»¯™QpáIö¤‚ Ýà!¿Ôýô޳9Lì±iDþžÄýHú¢°3d“Êc ‘[tÊøÂTË©QBêM”ê ¤Í! ˆ¦mcDýQúÓ»Xc´yÔCþínè-7Ö9@PvX è\(Úó\›yŽÛ&@2è¬pÖvãÚÒs‘pµÊFEÏ×êŒ;Ô SRêÍ Ž°Ñˆ ³Ùë|LÚ«¬ Âü¸¦ª zH¶ÈLa•©†)\ÀT“ °ÂÁ§(™à'Ì߬”Ñ€ÄIŸùxLB²ó؀݂¾×^¯ñ+!€µdD'ð†{ïÅÿ/þ\¹í TÒÍðÔ×¾Žo>ýM|æ3ŸÁ·ž~O~å+øÆ×¿†/þíñü /àÚµkøÿî7ðøàwôÿßýÀîcûX 'ÝqÏ=÷àòåË€G}_øÂ?ð?€Z+}ôQüíßþ- ÖŠ|àøÜç>"Â}÷݇k×®MYøüÈàüüÌŒŸÿùŸÇí·ßŽþáÆ3Ï<"Â[ßúV¼ð èùYPkÅG>ò\¿~ïz×»ðì³ÏÎßyz?D6«Ï;ßùN\¾|ëºâþûïÇwÞ‰;.]Bk —/_ÆÞð†ùýgggø±û1|ùË_Ʋ,xôÑGñ7ó7pwÜ}÷ݸzõ*î»ï¾ ›{øá‡oyœ×®]Ã7p~~Žãñˆóós¼ñoÜÏë½öÚëµü±„"i›uE)²N&énw„]Aªè d ¸‚ %¼Öœ-Göå £ êæIJt2³ Ä6RrËë5†pxŠ‘û;ïŠÕj’ò܈fb Ü"«œ,;¬úªðþS7¡f#xkSB­–2ðìÓ Òˆ:[׎®ÇÌjŽ/\aÑ_Õ œn#'5šK&J—k|<‡??²¢MSž, u‡6› ‘©Ãqs±‰ ú;{«.Ö#Tµt,KÁª —æPÀ7b6!lô3C&ÜŒº¡KnúÇjv&q…DxD¾©‰þº­õˆÇ+4…ö8F;÷%¦L7Þäìª8®†ã±£w‡öç6CŸqb /›bŸfW@áyßxRÀY… R•#.ËðlD”`3zçÚx4[Ú)2Ée@ ·%Î厌»KÀžH6Û£moœöA××´ó\`èÜôí¸Zd§1ŸÄvåó©Ã‚ÁiÓ¨eö…n4ór=ÕÀ–×k¯…®ŽuU3…;Zí×ç°‡@…gÃ[8˜ùÐuŸ˜ÄÓ °PæÈW0qúègn Œ2ÆJ°@#@*uPÉ #7”CÅ9ÎQ0G­9„,Ÿ  QtnCŠArwDËNen½a@< Aß÷TnøTl@Àm‚Iy>”"µÔüÁàÚæpk¯½öz­_Åô?|öoðþÉ¿ÁSO=…¯õ«øò¿„'Ÿ|wÜyî¿ÿ~Ü~Ǹ÷÷áÎ;ïÀ;~ðxàpÇw –ŠÛo¿}‚^ „ÂåUQÜG3úµ, Þþö·ßòµÃáð²¯}çŸxàÀwÞùŠ_;ýúm·m2}"Âý÷߸~ý:®_¿þwÞWú}§õ¦7½éïüþË—/ãÁœ~ÛÛÞöwÓ¼ôÓï÷s¯½öÚëµ_ –I¦Žr¶\„20edZïh=›"Ó€±¥/3äíže Z9øÖúˆ‚{Ù̹Ś”gÎ ühgÍ;´ÅV¯k™Â×€WKPÒIÐWGÃ1bÒ´gƒk°æèG ~‰H3¤?©âšÍ@@%0E7E_cœ.T†–®Šf†ÖŒ¶Ë¨RQ¥bI?klî¢ïÚ"ž!so«áp¶ HÁ1©ø1ð ¨;L뺢7…”¸-©qL».ÖŽÞ;Z_ •Q˜aäÐSsƒÃIÐÓ{̽ÃÑÁ¥€pqÑ×ÃeP‡Ì{¥ô¬;Á”°6ƒ6Ýœâžb @8o¢µ¾V©` ©y­1øÐµ¡5Ãñ¨°Pa”ºÌÎylª£9bœŸ3‡ä Œ-§ ŠÀ‰@ÞÀdñ&XJM¾Ã©Ïø:5D?F‘e¥ŒÜóù6#tS0Yæ:ÊÂB,¹¡Áb£n=<⤑sxÇÁÉ>¤hI ¤Ûö7üõ©’Є–‘ .Ѻªõ´Gðô¢Á€XkÅáp "ÑZ‹s¥õ>•47ñc°ô–2oS!íþ”îþÎdC;€~µl$v3º¢œáÒ¥ó)ýÖú¥°œ‡E„Ö Gkqû$¨uÁRh­ãfï!sw‹üáXQ%ƒ¡Ã<²Ï—óŠK|žI Á7ž~1Á ÅŠ©Ãò¶à+´g”8ìÅÑ]aífÆGú6Øðˆ—KµþÉU»O%@)Œóósœã<Ž?BI²×^{½¶Ëê ã´tQØ\ÞþàÛñ¡ÿcÜu×]xÛƒoŸƒo& ;ÐÎd0*Ùµ¿ª ú^{íµ×^ÿ5×€pÇRº´UsK™Z¦)†¶Á=bÈ.z›v&Ž:ÇVKÒw;äÃ4½µ5?¸ b£ÉAs¦!%… plS ©ƒ{DW©‰‹ëwô®Óƒ.ÌèÕ°tÀ+fŽ·ª£wß6bÎqàN!ûí!UîÇujì#<"ÀØ9£»2ëƒUŸ`1Þ³ƒîè«”¡¥Ãp¶n Ú ¥pçlânÕÜNzÊliA‘„°@d‰èªîðÚÁk˜”Yµ$`ž‡·èé.”Äî$|cŠ¡TÖ(ˆÚmË?[X–ÎÁ ,Û1¥úIÂdž{°®¹mç9+¨RR'¡`°¡1¤AM^¹Û÷ê‹Ù¥ynqrHÓ°fë‹fOsë’ñ"‚ÃùŠÔðä«AMò—’BA*EL^a”’#'Ú t˜ùë9Ôð‘2@›Ý Y1ôÀÖˆv‡CÁî a,e™tÛ Œ 8·ŒûDâu¥ª¹uá P\à¢óÜ”›nOÏø¥3DZ¬gÿŠØD‡¢`l‘=¥öñ³R †\Ucf†^x>sÏ×TH0ˆÁ´ÂЛb][J ̙ഡ°H0aò.Ô6+rÈÏUÆàÞ£ŠÖtkÂid©{ÊøãèqIDú`ˆÐ̰§WµÛk¯½þÁí*ÖHã}þÁw<„‡~ð§ ¶ÁÖâm<_ù¼¹o؇'¿9\¥=†q¯½öÚk¯ÿd+þò23\T”‹›=}ÄÈæÂRÊ€2Ç€Ái—Í#v,ÿ1HJ^tŠÍ8i.óÜÜy¹Íέ©dæ7åå/<¶_#­å6R¬.Ù¸…w¶«¦Ï=jÏììÁ/ ™yzå‰SñÎÊȰÞóÛ³hþ"~t² g†*€5ýÀÄ æŠ-¯º¡õ »¯­Ãº )Wo Ñ”&+ÜV†× Pg˜3تéQg@-åâ”t 5˼瘸„Ç· pÒ†”wÀ̆§ßYÂ&Gg6†>·š'£€9""¥ž¡”‚®ƒ‚¸ráÔý1 €g£þçãªè«fž6%'Cƒ˜Í‚Ž ¶ä ÉtÞV0€Þ‘2÷-fÍ2–̾bø-RË3·–\â8ÅítGoшÖHÐ X ¯:KúÇ9dñHºûذ1|ÖHë>ñ˜Ú„-p&8üNHÀT£§¤ˆ¥ [y¾^L·išs KF„ÞðÎC ¯QÊáyÈø™R D€º´Åydš2{2Åy[($Ü,C)¡|~óüp n@æ‚wÕܤN½ª[ýÖ yq+¥¢”k3´µÅý.‚Ç„ ™-o©$ˆá ÓZ>§‘ÞàØ^Ó˜üeA¶¡ ¤%7éFh¦ÁÕ Êlö ý“ÄPp€ ÇEø`;Ç‹# sáCÏd¦—¿Óî ³½öú‡uµó÷ýHi±(Ÿ9¦p§ î9ˆ™ù÷œŸÁžl›1˜>7é'ᘯª^zé%üÛûoñ®w½ ÷ÝwÌ üÇ wÇ»ßýn¼þõ¯<÷ÜsxòÉ'_Fûüç?Ë—/ãÆX×O<ñî¼óN|ö³ŸQjƒÞ¾×^{íµ×÷¶÷l»F=>cDkìïüÙP`Rik^]Rzê' §¤$Slòf_"A†¸ed‘F¹ž÷œ$ ŠzÒ“’½ê dŽ5Í]záG?<¶‘é(F‡$´Á!…F±Å„oà5µÑÜdÿ`qtœô긡øur¸2àežÃ³©‰-}áayœlrÚ@R£!sGï-¢ Z<1²&t„ç¾7EWƒ”Ž"ñ¡`ÈEÓë SBË;¾Žk䪊0–®zHüÛ ´ºÜ ˜B n©7„ ˜¨„|YRþ¯Š>š0ubH€ôË êŸ‹ p…Ð{Çzѱ¦ü½¨Î‹7‡æÂѺ£¯Š›7Ð~µ„¾•°!”*¨…!EPK6úyîu5ôÞÐÖÂ4 !S \cCÞ[xç¸, GW&‚R(R¢Ñ‚¡ƒiÇZ<·ÄÄ„²„#"‘^æÃaDÌ ÌBJ×SVïù¢#N^Iäl >PZ§hêÍ"¦nn–9äïf:£™=ª™¶P ¼ S4/,u@³™%Þ¤êžy¿­úÚ‚¤î=rÐK€«GÌY¼FµºõÈXïAP§|? {ƒ¦ç|øùCÏ¡šÃZˆœ Îa 2‰!¡””Íö·Iœp>o4Éû> áãh6ÙѬ]Þ%"#‰,àrEòÜ«¹Ë8ÂI$N6ÀȘ÷¶MNÿÞïµ×?¨æÜñÝÁ¾2Æ òâ܉à¥o7mn`ðÀ^Äð:߇ÇìÖ@X½½ªªâSŸúÞûÞ÷âöÛoüþïÿ>Þ÷¾÷™ññ8;;Ã¥K—ð;¿ó;xÓ›Þô²ý‹_ü"nܸëׯãŸø~ê§~ ŸùÌgpéÒ%Üwß}¸yó&{ì1üÌÏüÌ~Þìµ×^{}‹òrF`û–„äyÝJFÓ:õJ?/Ùß»v‘:r¢Ëޱ•Ë‹nSC—ðßbp•Üj m¥ÈïM¡ˆX1 ¾Z –…ÑÝ`kúÂÝÁêð¨Å$·SÂ@ µô&w‚RF²¡X¢ÑGlЉ$~ jÆ–Ù ƒîŒhvœÂ¢Ì´ÉÕE :½ôƒØ®™ßNF³Y2†BzêGo ]óq‹€;Ák™¹ rå½SÄT€ JæE‹ð”w·5<ìž²[Ó¥D6}ëzk–t àKòò6z‹M~ 1"æØ;´Eô•{?‘ˆÏs8\Ã×,"8C@=|ÍÁó‹6æ —Œî²Éo*âX–3¸VR MåÖÚ ÆXbUw¤€1èû2s´Ï¤¢ÖD*BÑÑÑš¢­G¨i6è©’ʇŒŸs‡vGëq!cøÄ0)Ì%¯±n±…6K"|¾ÈL{,ÏK\¼Yª †Dm£øÃ#®PئÔs½¢®é%=7Ú-†Y@¸²H¼ÖzŸà¡QEr«Sbp0@u]×søäQ›dá;agtU{‡ï- #MY·Ýsè9çn!$êRgãÌ\røƒ# ˜ "qÿÇ6É,õ RJÚaâ<+µ¤º§¤¬g–ü.xFýqÉ$„¼í~ÂPHoÚC-“c>–¤"‚`‰á¢र´ðÀ-Z#c~ƒ`ÖÐí´ãúòþ`¯½öú>õçßíÒšê5ón¶ÿñ¯?‹ç¾ým|ó©§ðäW¾‚óóKøéo~ó›gÊŒ#â7=Ù–PTL®a¡ ¼ ™ûoýÖoá~ápùòåIHÿÈG>‚K—.AUñéO­5|èCÂç>÷¹—?¬´Mýöoÿ6>úÑâÊ•+ø«¿ú+Üu×]xã߈gŸ}O<ñÄ~Òìµ×^{}ÛsuÇow<ùÌ‹óúv”ÁóZ3–<7n_`Ê8TÆóù=,@9“we)g'rÝ[Ñ&CN Ym6ž"’¼¹¸M IDAT¼Žˆç˜t››ìð½êôãÆ÷ à‘lÛk·¤GSÀ±ˆ9àk%³ÕÝÁ½€JP@Ô‘IPÑ,&xŽXrà Z¬¨%wã™Q¤W5·sSÆs›F ~ {…0£™ÀúS@îÛO¹KlYPH uð!ž>V÷h†OÖ3û”øqÜ;´3@ @Ï0€’VÉABKïrûXx–ûê8®í=WÊŠµ‡Œ¢­:Áš±iCÉ@ôì"\bÅðì1•ØÀf Ž'ßCêÎ$àRpæ‚RÎpÖs»>%ò'Ã@”™G:' ß,Ÿ#Œ½RÔzÀá°€À05¬Ò"§ZÆ’çƒ;  ØR›¡5…jøé‡ô]»FƒœYê$„jWA)†>às® F¸ žKçzlâcÐÑáf XšÐ<æ-vlÊà%$Ü-agD„Zh-ŽÈs3§'™“…çD*= Í3¼$Ä.“ÈB ­T …2¤ü1×Ê-qlÃ¥ ¥ aƒ‹Û*«ƒýñjª¡`Xê‚z¨É °›ÄqƒÁRb#2†…ƒÌŽù„æ ,k¥“<óø=z2ØÞ23P"çžápkhZŸB„-*Q# âö4Gñü­ýës·×^{½–¯§âýÕøú“Oâúÿ#î¼ë.œ_º„ßþ6Î`æ[R<Ód9=çc@06òäŽf†WÔ/þ=õì³Ïâw÷wafxï{ß‹Gy—.]Â7¾ñ |üãÇûßÿþI^???¿å~bf|üãÇoüÆoàÊ•+ókø‡ˆÇW®\™ñk{íµ×^{}ïêþï'ñÁwÝw.¯ü@[<ö‹ÇŽo¿pÄ]×*¾ù´ÍžûP²§„ H=,³“-äÄÎ4¤]‚¦Ö˘¶ÍrJYÍrK©ž΀£†O•´eîhǸ°õÜ·Ü9äíH —§Äã¤ÔT猺@Ä&Ä-ò¬£É ¼ØVâD:yøÌáènè«…?<¯äLfÙl"æ:}©±+^Pj´F(ä ÆšKBbº5ÈÚ,Œ… d©¨µfSØÀ^ÀTàLSŽ,´„/Ùk6çxP¾—²Ä-ÀVKMhEì—&<­–L‡ð§kÀÙÖcC[;Zë8;œA¤Äv²ÄE‰•5¥}ÊØ9JæžêR#®MÕBNNV,#Ø8¤ìÚ¡=<öÄ·Uµ,XJ€Á†öŽÖ;´¯P×-† Á7èsc9”Šõ¸¢Ö›8.9bîZ︸yª-)¼‚c‰óH-HßÍ2§’K↦ŠÞZ6èäæÃy5ha¬=¢¿ÔÇF¹'<ðÄÃá€uF³I5U¨µŒ4ÄL^g4 l­¯Y4á:xùuª'èÏ#‡d   &©N¿~F©2™²RÍ÷¡ñš7Ï÷÷·ôf”Ÿ;e”Ú82K‡%, /$èˆó3Ÿ~{KîA dèdø‘J" [E‡¾â…ñ^{íõÚ*—§¸0ºï7áýWÿ2•n„ãzÄsß~·]¾´½ÞLwD›¦ÂjlÑÓY[öWqj­øÕ_ýUÀ'?ùI|ík_ý÷Þ‹7nà×ý×ñðxàn‰{¥zàð…/|wÜqGÌõÍðs?÷sxË[Þ‚çž{Ÿüä'ñK¿ôKû °×^{íõ=¬ôðíø¿>óM¼tìÐ;î[sŒHKºûös¼ûnçÿâxëU=–œC-Ür•ÉU®±ÙΦ™fdAÈ͵ÅϘ)z µ42¹ 7h ï»»¡ëŠÞm¾,Ëi¬èJ9÷ÙÏâ¥_Dk oxãñÑþÏñÐ;ÊÏnœH׃=B©¶óÜ<9^|îÅWey±Wˆo|üñÇñÓ?ýÓóZk^ÄM¥ÝËoã'ò'ñ /ÌŸÝŠ{íµ×^ÿÙG¾¸íÒ9>ø®Ëxá"R°Ô ÚüØÈï½ïº€é%tÝÞŸ‰"„Rµ ÊóÏ¿¾èh\‡—v^æR4!¤„Ny?/t£‰4 )y†(*›Ühì9¶gjAnöð(‡ü]Sf67ñMÑ­Ã5ié™måùÐÆ¥ˆ€Yg–³›<­÷ ¯B’ÃÏmè_4teÞœÎæ&šá"R$hèîÀºN"ºÁP¤¢.%@1]@§sãWèHÙ1õ÷¶¡Nbàt…ö¸ßcs BD¢11œCN¹ÑíI²·Ì¼&Џ0UÀ¬ãxqı­qŸÔÐ׎•µTÓÜ4nÞ±•w»ŽU$6é4rëkxô[ëh½Å÷)~rCo Äá1o‡™ôÉ0Ðág=m!£'¦Ž-SLÂ|‚UÔâ˜UkÓ£g®Ãº %ÛˆÂó)£'bÔ%bó¸Ò)S†ò± AI|ïŠu]¶Œ ‹X´*%c£Q¥‰ž½÷0‰ÌX0j­X–˜äG@ïéÛÏ×I9 ÖCü7¨—zuŽ|û|˜ââ$9üT`d3½ ˜U à[28iô&ö±á7ó7afø¡ú!Ü}÷Ýh­Í¯=üðøóÎ;qqqO|âxñÅñÐCáÍo~óÉÃrôÞñ£?ú£øÜç>‡?ú£?ÂÙÙ>õ©Oáüü—.]ÂÏþìÏîÏÿ^{íµ×÷üc…ñ•o*1.ДReJè™Ö4RÃÖUñÀ݆µÄ…P0ĽbyñÅçäuÄ=Å5näsúTµ)ÖÜ®Iü„¥¹m[|¦Ž)ËGV³Àޤ‹È¯ˆ 32ÐÈ3ÉFk6 €ƒ¦W™·“áë=»y6çsSç™Ï=r¹‘[³,!(¢Ù·xh7ƒ)MƒY,=½Æ'…£·•h:ƒ–p°ÄÖ[(T2µ¶|6ü׆µTW¨Fƒ/倅”[L7„ZÁ¢™_›eÌ ©ª6׸O!0ÂpõžžÿÈá&œÐkÞæS@X7ÍM>C5ÈJKˆ³+«ÁUÑz ºíˆª’¡ªP´~ŒÆ „¦mª,q‚P!ed‰œ“¬ŸHÀhª¸y¼+@‘)$·Ì,RÖF P£ˆ,h²/Ê8+«ñ˜<£ü˜$6Òÿ†½u´ƒàxŒÍùù%Ô¥„ó›86ILÃF¡G´¥G¡šÀÅH=€GÞ½æñPSˆ¸lC¬ÔÄШ[¨JÌ;!§¸RF\٘鴧0aª@ºYܰ6FÜaÆ×s6§Iu¹5²PFd=(8pœÇ–µn° ¦P#ÔÌ !H)8äëÍR&Έ,˂ò@ÝÑÛšû´ B­g8,‡8—“1`ƒ1 á¿úØžâ»L´(QBèx™‰3æý~äG8¶ ë=½ "Õ^{íõ©â} ­-.Ývþéó³SA7Æ€DÈÏÄ›¢ I;ðÕ'ŸÄ Ï=‡Ïþ xñùçñÌÓOã…^ÀÕ+WðÈ#„2軨ûï¿¿ø‹¿X–"‚7½éM/ûZ)¿ò+¿2¿vZøÀæçÒ[ÞòÜwß}¼ï}ï›_?;;ÛO€½öÚk¯ïuƒàæME¹Ì'–¨H #DóG‹®fЗކc?Qª‡œCÓåp¨MÛsÌXb£(5<ÖR ½ÁUmó­~Ïh†ôT$b˜Š”„3mk½[æ[-ÎdaP!ÕP»NÙü\u!®»§çœhk hnÖÑÁÚ¾I‰\pöó¸×¹Ém›°ØÜwtSH^À¢zx€=(ñÌ!»VK¥M¸ÔÚ2j ÙI3:*Öˆ<›`«|:Ç6<ë Ø€e…á°,(¥À<åù®°ÞщÀEsÛ'8,KÒßzÞa=ÜEDí ®S%cØ|lô#çÛ PkáÿÕØLK Z7“`© .]:G)/,/âæÍ›h­Bj4½®Qcéa€®°) ¯v¶UB` ƒ6›\PlíÝçGA7Þ~aT®ì·ð½k·yá‚ ‚:@%£ìÒ³ÏÄ(…*1 ±”8'\pd/Ù‚KcØ“kƒ©¯¼|3u=Aq½ûü·©AHÑ¥EÌšÚ´ ¬mÅÅz„«…°êÍÂb=2ÓGÔYx§5_a9)RPkÄÓ3š:šÌ '‘fF} p<ãÏN£áˆb`Å<3#f,Ôîjžg-„•^µòÜÞ˜y¾î+êçD×ðû‡e…a^äúH [6Ç1DXilØÇy<"ÏÆ{BXPzÚ ¶˜Æ‰6pƒiƒ[ƆÜÑ: Føüß~ wÞq‡º „/}é ¸qã,5”O½{ö'ŸcÙ€RꈎN;©Ë§òŒC«•§´—˜N.T}z¯Ý<ó§²ßÌI ö 1Ã|np•KØ[RÞ'>©ðôåJÂü2ÓÜ(‡½”PÅr@4 32*iîÈmd*›¡e#]èÖÍ|üŒ½ŠÖ::!X˜ñYam%X!¨!ràÓKî¦(ç –² , ö [ä6sM¯¶£Ö”“D“MÑt s¨6¨D야·¶ñ(Õ*±Ƙ[1ed^ÔÊ©šˆ!Ûl‚{C·-w\J(1Š$—A¬³‚ž¯%&Î÷Š¥žm9ñ:6Ù1ô‰ uEk Ú[Â%ý5cãžÜc …€ö86žÖaÎ-»dS~ú€ÒeÅ@@¸äÐ+Èóãù];ÁÜ ¯.%7J´½geÎ1òç)¹Ï7SÊ×aà ¯ä/Ý9L{íõýkοË×_ÈÇïÀ_î?à?þ»‡u=B˜qõêU¼á®ë¸rå ®\¹‚«W¯âòåË89ä—ùÏÞˆïµ×^{íuZ]ÿ÷ó_ÄÿöÉ…{îy=~î#ÿ Á—¿òEü›?þ׸q÷=ø'ÿä#@ÚpýÖ\àéÒ$J×ãlÏ#XÝ¡ˆFÂéX=c—i^¤ŸzpÍËl>o;RŽM9ÅöklÀ¦|lü8·£˜4ön9ôöe©8á•Mɼu08J˜ÜÆ ÇvþÂÔƒ–ÍI|>Û© gA¥¤JÑí6r¯)3ÉU3^=`VÔí®†Þ:Ð;ŽGAiÇh„A"Û•ÅÖ…P‹D´›¬Å@ÂÂç –¥¢Ö%›³¤aw…jÃÚ0Ngã&RðVÃ7íÖ`-"Т!JCæÜ³pú¶³YÁT`¤Ð"Ð~Œ¦÷ž²ñl² Þbs¯^ H†h<ó¦ÂS;m'qk”ϧI²€ÝòɶsL-Få6†î–çe$YL‰F^öðx›‡D^óö™6XX!+ù-êkÜ—€e9¡š¯§È'Ç1‹çhxÉynb`“/î|á»­­ ?w Ù¶éŒfÔR ER1ÎÁ8ÿÆ©pXFŠ0Œž9솘¡kPòÝÚýä½Â_v1혜(2rN˜!¥b©¥,0uTu¬ÇŠ•>~&†Â5-#”QiSy³âP+jM[KŒÞ´E¨]f›sóâ=‚Rç¡ó9Ùè{íµ×k»®^» ½í­¸÷ž»Á̳ºÜb£Ûk¯½öÚk¯¿¯Ì wÜyî¾ûüûÏþ5^ºyúÐ?ÆþÿÏ?÷ýÉŸ1Ï^èeý9EŸ¬0ÓžŽrœ,Ä~’‡>ó…ÀCN£AÏëm;!¡ @[µRoÏq!®!g Ú¸¥/A}–ô¿ºÃºcíÑ8µ””WT+´÷øeOùI–qÜï>‡e)(Åq\W\ܼÛb¡ÜDo8UÂÁ ¬$/âã…KBÉ‚Z>½Û00yÀ¬Œ³Á(éO²¯è* qC&TÐÜÀ¥C\€>úБž €YÑèűc]{4˜r\M4;XËiŒƒ+ÍFù}ú‚Kf¤Ç¦8¶ÜÄ‚Zc›Kg5^æ)sŽ“1%ÓBpØØj3 åF×AîPÊ-'$Í&”h¥ .9l!Ô.=ß“ß|Õ£;uÊ9JlŠÍƒ–_À\˜+Jqt5° HÚãw•“¼Û!1‰ß‡Qpöù: €|ò8m¥D¨@â OEÈiÒ6'©l:Ú3ÌͳÁ¶­¡'LÉ9eŒá|iŽ&º%?\[Gk D 7K¸¼BÙB~ž¿È3|( q™:{°Rqa=Ï»y1Kɶv˜hð))£±‹r 2<áÂñ*Î }­Ôƒs`°á4—qwóvÉQª@d‰èŠÃ8v×°Z¨¶³¨ˆd N3ÆH5 d¬ß^{íõš.fÆë^÷:\»vmoÂ÷Úk¯½öúÿ]ª„Ëççøè?û(~ï㿇/åËøÝßûm´Öðáú¼å­æ5ø¼rYGÌ)G[E Ù¬k€Æ²I0½µA'$‡Š6Ó¸‡ÅöÓN~ÝhDDgµ¸ýä¿Å¶(¥¢ºÎmeKjüztôÔJ(’1SÖA‚¥S«Ô”¥öžQXI²®=}‡DÂL"¶ ä#ˆ24—ë¹gÞI³Ýå”Åš…Á gØYÅYïè=2ÁGd]/ÊŒå+Ç–vxõ‡6Zg3¤IäŽi¡@}£æ›;´køªá(•f$³ Örà WPz¸ãùÊè+b”$õ‹”é6Õ†—‚*eRÀA|k_œÒoõØ íb<¦¨3{6³5£®&"ª¾yÿOýá£W›¶„ˆ‡ ß<™ÃÇëš ±Ï|a¢[;þñ÷# }xJÇÅ5§ä”3ºÈ<äëã{Œ®Ô÷ŸÖL¡ßÔ5àfK _­d6·dF8€”lZkè½Í­ærX°,ÂŽRž{1+ ö­Yž4÷Q"™O'qü 2eÚ3/9½ãžÍ³%üʰAÅBŠ?äs§ÛÏh]WŒ êXþ„šQL #B-iäƒ|M „ím÷‰ÓcÎ56¾n6û.± ¯RA%6Ð=›$Ÿ|rE©iÈì©!#Gn¹Ù|kª&C€f Íã”ç 9¬[fÚŒÀb¶yÁp¶æ ÑFvwO¨¡N@X<×áßçžþˆã²Éå6Í?ÍF;†5,[œÎ ŒFÑLcËê‘»íŒh&)‡V –SÏ-rúÙP–ôF‡Zpé|IÛÅðÀ‚*O08ól,c[k9ìH˜œqqôpa‰¡‰ \feð'¹U”dvÎ&<îøÜråźäÆW2šsC;|ºñ@¶8±Ù0§6ZÍ‚*VmÐ5ó­™P–Ø“ Ù ÓÜÎinGÌ߲ɆǢù¥­YŸÍyN<$ÉÓH(Y ÷ ‰Þ§`“P;bÃî¦0È\ƒXNqȈüi4fäÜf9 ©·Ê8¡” MSæQ;E¼šPÆ‘P¶ÜÐ'íŽF†’åAÑÖ™ï3†kªÎ³á›“‡[Ÿõ9¤é–ЯžR{)ôøÆˆ´‹ïÝ 9ãf=}ä–Ma½0¦P@x4YÑ¿%ønlÓÇaƹ剆d|<_I†ÇÊgž¡;(°üÑÞö¡¶¹¸ÐÖÍ&B‰WÞ¶el˜<îÿx>ÍÆíynß Eâ{ŠpYPxÄŽaÂx-ÆÙÆôT¿å¼ Éz¨>87ø³É¤ú”¶›áÄõ1qùüG>¸¡µm›ÎlÐî‰×«9…Û°rȯ•¡ÀèªÉ/81£DÐ:ZôXúi£ŽSȆÏxÅt’äûFœ[ŽíœKö àÓæ88¦’;+ IDAT›~2À ƒ@ïèÞw†û^{íµ×^{íµ×^ÀIGÖ4l͎ٞƒð#?úcXWEÏ„§yzKg„ŒÞT¶å°TŒÄ*JÇ¥Û¼oTp Í< ™cË­ìa7ž ,–±S¬«f_žòçôƒGD’'TŽ’,RÝÔG XnÚ|À¼*¡ ÂÅ ÆÎXKK¶VÈßÁÀ¡ ¼^‹çï¥ ëÚSŠ>HÎIs§¿Ë~µÈ4ØbKkyÒ AfÔºÉo‡o4•Ø>"§Œ† Crï¨æ°[¬ÙôÁ$lí™1=®®è)ÔŠwA•lÙ(¥”ÌM/Ólh Ö®–R`3nnƒ`žÑa¥£úð¹lûˆþ‚mÖ€‘{wꩦ“!ÆlÌ5cãNŽÿ+œ C6_ o[u‰Ç³mG}’À†Æ€·¸ïÇÞÐ[Ck n)ÑŒ,•᜞áô®3ófa C(ói~¶eŒY·ð[´ÓTW€bÃì(€qN%Ò—­=η ÈVŒˆÇwä_«¬Tãù'b”̧%‰&Œ è´B³ùç–7‘›i€¬€kÚ>xBé† ƒNèþ æPklvÇKrÂb¦s[=|÷Da¯žuJ•ŠŸ¾Æˆ %tÅÄÕxx6®£oÍD†!™á´sXÒäU¤áq3 õk=ÄTà…Q è¬7Í'›•Åcà ¶Å'áŸÀT3R1w…c)¹ëK *½ŽhªþwVx]"ë=Udü&—É£àNÆP §J$ˉâ„ó8åÀÂ4ìvÒp[0 Ô;ÔŸTÿ­ áêÙ½¬{íõ}êÎYö.}¯½öÚk¯ï[{Ž'¾ð4zÓ]xÛ}3“êå˜öüóóO=}Ä×U|ë[6û·¥J.;Šv’ìì3š)¶H~²zgIJõ !:6ȃpœ’t‹ŒÐIQaœþtOÙ®%ÁÙ0³Ì#ÒÉ'0ŠRÂÎYÈ‘ÝíÓLÄ`at"PzfcÛ'ÒáÌà–*¨,ðEá6šlÛsÕÜö¬á¹EÒÎGœ˜ZF1gœWl[’: àÂ((`gøv8Ç65)Ñp HÞäçÓÉæžÃï?¬á NÂt0òÈηÆÅåÖO*¡ä÷êhð‡ÿÛl‘¡‰®³9o½=/@§° À-}è4mcòsJÓ† r(3bƒ'™A5äÏæ 8AA€qÄãQžÜãgCˆÌGb%®Êœáð17Ïæ“¡êèNÐ÷[‰A(y?=µÕ ›*Œäþ`=p$ 3ÜëjyþæÐcŒË°)çƒmÆ3Ê0¾%)÷ ÐÛ6×¾mqó8ƒÂÏß²ÅG#L °ºôP €"o\{X$<2ߘx*D6)¿ÏÁ…jl¿ç,ˆCgpº5M»cá íѼ*ÐÈ‘ö’® J‚Þ4GƒÔh6¿]#â/Ôí’–Éé!™¥ä°T©à0!9ãu2Õ#„¹¡ÙOÆDP¾Ò8Ùœ9é¹uO¼öHGð~h l̤oÁó/)þÑ#·ão»mÿ|Úk¯ïc}é«Gì3²½öÚk¯½þK×K/v@+~ûÿžy±á¸*Z?I@:ùÞ"‚û¯Ÿãý]ÂÅÅqÛ¥Û=¸^åâ¸}¨ùwè49/t™$ŒšQc¢å6DMÆð®sFkå/25tm¹ ÅæÏµÜ>gãâ™óM¦5 Ž?#¡O"%bÉMLÀáz4#·9³Òc»m j@«@­œdî·esofÑ ƒÍ#^,ºÉ4äí[Ó£s;<|÷ À,§“mèdè¦sÑhœ1]E•RpÏãþ[žþÚ-ó=€[ãØÑP:$ô‹` „Ù¤”kÞg-´Æýìªh]§Ä׈`¬­ƒ{²RŒ1L`Ù“+4R»g+,¨µD0%ôæè-ápÃMy>Ö`ãdÙÇñRuðÚÁÅð2w ™¥l[Sfí„Þ{м£I—ØøZÊË=¤à¦g+%eX׎›7Ù¤Ñô±3229J{4†™ÎÇ“&:èöéÓN و׋ă¨uÏÄ‚r’ËŽi¯€SRØ ¤ b ’ÜR¾îƒ‚ç“ÈI·ÉC³y,Çc­\±Ñâÿ–å€Z(Ì0z7´¦TH,ËÏóJU!çC€ ½u0ÑU ¢(¥`Y*ê :n?a6æ6T ß!@ï!ÞSŒá†î[7¦]ج*rÙ{x„à Í“ džçƒDÈ_øÒÿóÿòåWZêïµ×^ÿk·™ìµ×^{íõý¨¡ Œ•äN½r5ýŽÿWÏE|wדë\ Ør!”ãqŶË­#¤À˜~k4b©FÐp4è#ŠMS.Ð1ÏMÊȎƤHÝò‚7A_ä@ _ovJÑ\¤×ÜÌ5h¤ ÜèF YHw[;ÎÆƒá…=m‘HÊt=Ã[lýmD)–yÑ:šeŽf¬P cn,_çÖ=$Öc 0⤴gCžÒhÎ&̱åvc²©xy!·–)»Õ”F‡/ÁÀÃßZ䶈™ Џ‚U¡·ëª€ë™"G‘SÀܘšbƒ"àpÝ " ùJ°Vü½Ÿ»x´åSçh4Ž‹‹#ÖU“ž6Žˆ·¨xæ„û6ˆÈ-/ÜÂóœ$÷8ò6H Róñ1ØeölÝNjĄ3= Ö¹ï "'‰OJd˜f?ìS†v kÂÍÒ:™Ù±Mg "|œ;4Ϲÿ¯½oÙ‘%Ù‘3’î‘uZ#@¿ ègõŸZh£ÝÅíÊ w’ZÝ#²NUÏ$-$ôƒÛ}º*3¤ÑjE»÷¹3Ó› z£Ö^ÑfV¿Ó31ç„ÉÄdÃà6Ù”Jy$à˜^`“Ôa[qahe5ü¨h¿š3š¬“,Jz™%×&5âe'—9àrloǦÜOˆ!œÆËÂ^4a½¡÷m’™¡¢°ÞŠ!„8 å"oM4iØþ˰q1 ȨȵR–\±¸þ"+Ý4œñ¥’—í Ḡ´â *­ àÇÌ×ç6ÔüûÏÿ“Wê7àÏßþþó÷Ÿ¿ÿüýçÿ¿£^þFòþþó¿œÀ0þWV0plÏ+.ÍC?šiN­…Kðšæ±Î Ô¯x©¹¨ÞE7M<&õ£­•VJzëž²rzβ¢÷jè1™—þ`ƒž êfON'[·rq^ÒRÝ:ìèèÚ€Œ“zæmòH¹h²©{¿œÚ£tÕšœäg<¤(Úe˜×Z™Miå¼Çåô®4›áüþtGƒéßZZýmÌWÜ]µeìÆÈ/Ë5ôååå¨-™ûÕ€U󾂴PÍìÆ“šþ¥Á_ï:ýY¹™{”ÙYMgSêyuBíFßþä˧@wô[&0æÄ9&æÓ‘Áh4ÊìŠúî"Šnœ`Z+#Á$=.ðhØvJÇ-Gœôf»e©“é æõ<(ÈõwqE“-ð‰¾+ŠK ÖðxüB¯,xêæóÚ$K›¾Ãóc½‡ŸƒYGŠBò€HƒJ/—ó$‚Ô”Û‹!PôÛ仲š¢þZK"‚,f÷ hÆM¡ºšs„t~­$ÃE‡g#\ò‚z>žÀ,fA+£¶DLuX2˜½—ˆÆŠ&#ædMÂ'¿ëJ<ÈkÒ=¦ÔßË’;Ð Âç(vÁ}Õ%®ÄD®/kÆX´Œ26¼\ßY&–LXYíܳÖ­‘…‘žEÍO¸þûûå1p;›3‘²Ì.oŠog÷-¯IV|÷÷ðÛÏ^ˆCþv'ÜåHü™)?ß!ùÛo»ÓnÿT®¿sÿï$Qßß{“ìðž:q}Ê>_Þ>£\ÒŸÌ/ŸTþª©–Í"Ê¿üþõ3òKñva–—ùéúï2ßö•¼}àûøîÝŸr¾ýùýmÿ°6v}ß× ™Ëâåý,kâK&H~ûŒîÿþöN~[Ý߯•%…Ú쳯_èß­x÷Åòå«àMÜ•¸IÒ¾¼³Ì÷Ï}KYÉ'ÿjÙ.kQ~ysßïÇ÷ç´–Ú}MߟíoÏ|Ï~ó»ðÍ'ÈÞéëÿ/O‰ï¿Ãoÿì‡=ôf–sqÈ7)B~Y|òõÉäÏÓªýïüýrÛÏø]ú/}Å/ëúëa'_ÞïíÞßÛû;¹í¹>Óÿ²I®³ï{à›g+?4?ÃùMoû—åþ]êæ«ÿ~?Hî§ðͯ—·&·A×ý”Íu6ü°ô¾l¦kßÖaþp‡ä}áü¶]Þ¿Ñ×φ¼[ÕÔç”÷ÿîí¼Í/ßK~:™ñö÷îŸ)oï]¾¼øüáÊ—­ÿG%Bù×]ì§™üvOýoöÍùÍo”ïϱûÉ—·3F¾ÙÿêvúWŸRÀd] %¬­÷]BXÜF:*¹{˜i0·š©Mñš¤wêL­)ÎHx NØ@ê욈úœª 0<áãds¤†Ö Íá“}`•Ë+Z@ÝÑÜp<:úq <0怉ÓO˜)>Ž›¯¢‘ûÎî8Ú±?'ž¯ƘÈ9™ïlÔ§K·M{eNx츷å´Þ”yâ9KûœÔ‹54µŠ‚£ñ•§_/°¦Úc8^s '›íÔÃKMœÇ˜¥±?¬áã׬7¸;^ÃñKÌ}ŸçYúljº5H/š}3:Ø—9VͲ·¡Ÿ/£¸YÔþm(׋š_Úá—#ò¬‚B`3Ú0€ Óƒ¢¨ïe´&Jc¶„cœó2'Sãý ÒpœÏæäú1UXû@7 µm ©ø¿}p•&8Öù\‡oÖ$Zv”t6/—î~ ¦Û³"Ç®s;§cZ‡†×;¬¨-(>>>vÎ|Bè\^`U–·‚Yf3Ç y‰›]ˆ”^ùö"9¹_fåŠÏ¹ŒÜAwÅÖ±YÖ’xôú=žŽyŽíµ·’ø¼rO„{#넌ƒZ¸§ðPZTv6ß+s~8רB»Q:0ª /ý¿0d ­é3Ÿý#èäÞ1:ÊDF16ZºôÌb@ŒL‡tÚE¾’)d8î»Ü±‡,RŽ©ô>c›q-}O¤7¨#ëD0¦cŒ(ý¯?G'“Åy÷iøøÏÿÿ鿺¬÷rqw¼Æ„k†£øøõ~}üB3"ñüÿüçŸç@D µëVŒŸ†ÖËwà "(Ÿˆ×kbNš÷ÑlóCÀ1ϳóäó35ôÇ][ÉudGȹ;æ ¼FÁ(‡vpÑÌ9#h”—‰ã8`­£i«ˆÅÀœÏç c D8Ô üúx´ÞIœç‰9ß‘g/Y‘~Å~ð€ûÀòt0S,–ת¡?€×xñ³Õžo½¡™Â×pGJÅjª¡Ì(5!ØV2eúÄùó„Ÿ) k}7v\‰Ö Çqìb7<0|nãT) J•~ ¼`£Aô‹è•¶ j”R•\eŽQ{€éÇc?S©›A[/ÿÁ'^s`¼NŒsl–‰©B[Û¾3œëÆ1Ò:L[¹‰Þ:ÇÛ¶¼VúH–=‡J{z@¼Æ‰çóUï±áè½·-µZ€·ûDÌÄó|᜽w½ãyžøç??‘ɳµ5Ck á}ê …³RDÚA? #UMÚȘJœ¯'^ç«ÞYÿýÇ?ðq<0æÄóõ‰óuâ'`¬/L…€h“"@SX˜šR‰H2ü” %\X±kÉ ÛÆ´ØqKÆ·˜]Y1žþÿp¨Q¬¨²bWËjÕ2Xþ"Ó1|B èL»5Ìqmæ ŒÏ[’ŠMuP²¹¤Å"3“ª'Î3Ê´Pðqx|üVQÀŽ9ã|â5æ`íej8>:zkhq¸bòæu²â‹åAÄûaæÄ<½ÌUùù{kèkÆ1ç” ™e"wãJ$ú Ùè¨Ü’—®†ýJâ;äÙ6yÏ ®fZ;ÐïZI¡×{ëÎ=V Ò¶á³}ZSØq ‹Á:÷#÷÷ÔÚÏôêÑ2f,r§¥zŽŽVfµÙ@¦Ôs‰|>Ÿ˜cðŒ3eÔ°Qθî­U›I >Ä *†ÖG? ]ƒ½Êë¬{³ÞåÚ;û™U¢PïÅJ¤C4–u”YõÂg´ê€rä%­5ȨÇŒnv¨*Yƒ^Ã2Ÿ¼šñL>’R×ú¬šò-@àw°ånv]µçºw³Xöº»jΨýé·Ä î-¹ë ÿ–ŸÅõ3CÊ´o,Ç=¸Ó$S¼†+*’Ì\­ä!‚GÅçÞûwÍøuw ’‚ÍPÎÛ^YwtÊÅ ^5òNÊDÊÇ®õ›ICšASE5E@ ¸&R'L;‘UlÞ'§IÈÄ8ãU‡D¸6x ÷ÂkA«Ae"pÔ¡¨HW„ò°9ý–«=¹à£(¬"mM]ÊF„*@ µøx‘pŠH›zm‚FB†7 ’nàM[™ÈµrA¿áÒE~žOµi5¥#/ÝH¹×š† hç¶õô¼è‚&éQRGC“V&UÍÖЩ40Sëèý€5…‡ißEkÌ{ÏœÓA_9 ŒDèDféˆ3aÎCpš¯#z§[÷NòrÖ†j`æŒ*.ÆM“çáÈd#E–©^¸Õ•š““Î3`æ,~“E7…‡¡7²J´žëf^¾ «òYƑؒ”È„}AýæŒmþÇŸ'Ѻ´yPg=Ow§¹ã ´J8Øf}S^ªtè'#aíʃnù©hÖä?˧AðxüÂãql‡{`žÃi hexTñàs`ŒÓ“ÿ^’àa ®_Sˆ8Lã·îéH8õDFâôOà|"󍂸üóOüùù$Ž6 :ªØ4E?´nU'2ò T“ºPçùÏjQnŸP¦Új=—üç“Él{î• ˜£Šf¹§ Ôê—á¥*D-æ'Å_N¤œð˜È<Ö1‹â´hêKp³µ?ë@Bì àÒ _T0¹è­õ~C‚èn²¨®Üò‹3Jý¶^çÇV¨ÑYŸE6i~^ºìÛÔ@*˼(4½µ¢ê5j¤´õe(¸ïbBQ…“À)©²Ï£eÒ§­%¢˜2«Xt7-4ÛŒ²–ÖeO#$9m”»Ã$²"ë¤bÌF±æ¤.JEÞ.É]ôU# øp®©š¾útŒs¸@ £Õôï‚Z”Üær>Ÿ¯Oð¼FÂRKÞX#h¤7¦Ó˜õΛ”¬TÐíëÇŽ¿¥k«Í+©M¾ù"+ùg–¼h1äv㣲ÏÜ^ÿ’K%­ê¨µnସÖòšº5³DƒÔóîÊñ‚ÊNNbý챞`IeŠ “¸ä²Xq¸X8gÞudÍ@ ÁÁ¨›Â¦ÀëeI.DM¸þ›Z+eîì€n’„‹é¢‹±’¶¶‡„ìÚ˜ÀKbú«תbxÉH!€²â°å&ÔVÓˆYC‡¯}SÏl½ÉªÿTè_u\pjÏᙼ'Œý»‚ïJ¤š¾Ù®wçWß2CcG}Gòžle8-¸ü­ä¿Šï~¶Ê»,@nCˆ%©X6q± ´úg@`¢áXuØÄ˜‰9¨Xˆ˜'5ç[·ej,´Ã,˜l&ÒZ5׳ ¸@ö3˜ñNjÕìŽþà…´\ÎQMðP½6Hn­õ*DØ,}>ŸœæœZïÈô=\ôšf®æY.M½ð»|~’Šní-¶~´FÐy‹H_ú)Žè¨ëgcÃéu׎–mgœ/z™ÀÚþz!ܼ y1è»l†û¯"øüFo_ŽõR_?RM ѽ\»áÅ àû™^Z=ŸEM³B;Ò¬|ø¿uOXå¢|e”ó|S#¨gìGgQc”º„d­]R[ë{²b4êÇÊ«_Úþ+_ä…¬‰¹#1Šª¸âæJ6 ý4µ4ƒÂïa­ü2&Ï3>W¯õ웑¢€L̘èÑ äÔMQÎM]SÝÐûzW¸'ýœHu¯ ¦µý ~PÇÝH“ÍgÓ=:ÔyÛyb šàû@VáËw×jâdmàèT3<ýØL Ÿ³š}~_E†é'e%Ö`½£·^Ów)cÈZgõ–®5½(x½Ášâxpº+x`Ãh?5-iMiòZIœEÜjÈΡ§ŒJAª³®”A/Š^¬†¢¡·^àä(ÅJܨåu)ï³Í'¦$! ‰BÂ_Å/ Ü5=ªXHëµG¹~çxbL/LÏ/s§p•á·¦ÌMÚŽÖ!Æ{nJZÚé¶h«J¯„"Œ÷–—¥L;X,}BLØ Ó„MÍ!«Œ´M:`€'ž|þùÄŸŸò{dò4+êfó ÓÐhn»újFÙN´Ã‘ù ǃ“~m Àq8Ü<úƒ`¹Ð›&!HO<Ç܆¡V\ñ_ø( ?‰Ç/‚õëŒ[w—. ùv•{7ÒÅ­eY&¡Z¨bf¢÷È«Ñ_쳺5 ®ØØ}åf°ÁçÖ„n=©¬)Zr‹˜øŽþ¥Îvñ}Ó‡gÕsbŽçœ{rlæxöTíõ˜óä>Ì,€±¡w'3F.CÉ%Q@M]=éA"2öôk1%¤´· F}gêa™IÜ x¤ÐPJZ —i+xßÚš0«nð ŒÉ‰êjp{7DÌ ÑŒ²ºô‹Ò{“çm/ƒô«q.PklИ¨ò5æ‰áþLr5è+MF öÌ›nøn[µänm 2ê ³F-¿*ÏŸ1Dý… ¥w&£TD1³ügJâF/ˆF™UÕîkH¸@öDà'°|LöÀ"ßDðvM<ŠÅÇó}ÝÛ—„9ËH8!A{5^ùÖa X?X¦…,w—ÍJuQþ¬×dúÍ0×ð£|Dp¥IÛkI¶±{"æ‹uÞ㿚ыi4~Y@ª‘ý`ŒÞ5«¦z:DɶQëÅ"µ2¢®AÓòácÇes*¯ÕKïŠ5d­å[†¢¦H5t¤Úå !7u`³i<3“ì˜Èò¨I²^üŠ5,å]Vçë~_¾N?:ê}Î}›™Ç»¥ªÜçÚ%µ.]¸•œÆÖ ʇ¬ÖÓ2A^ ÅŽ…¾›çZ{ú¥A÷Õ\”öÄÍÝ» Õ;ÿO‘ËB™ÊIEND®B`‚pev/doc/manual/en_us/figures/cygwin-warning.png0000644000175000017500000023104413034014706020640 0ustar useruser‰PNG  IHDRâÆUš iCCPICC ProfileH‰•WXSÉž[R -)¡w¤H—Þ‹€t°’¡H*ö† ®]Qq-€,*bWD°÷"*+ëbÁ†Ê›Ðõµï¾¹÷çÌ9gþsrî|3(Ú°rs³P%²ùù‚¨@fBb“ÔøGê@‰ÅæzGF†(£ï¿ËûÛÐÊ +q¬ÿ¯¢Ìá Ù ‘§p„ìlˆ€«³sùÚ¡Þ`V~®B¬*€ âbœ&Åêbœ"Å–›˜(_ˆ½ SY,A bÞÌvŒ£ æhÃçðøo…؃Îâ@übËììˆÉ›¦ü'ío1SÆb²XicXš‹DÈ~.L÷ µˆ¢Äœ !~—*ˆ’Ú`êÙÂѼ0k6K²ìÌ+?=&Hê‹%p… a£8\?)ŒÃåÇʸa°»|¢d¾E¹Y‘2{¬Š›%­3vHX=ê{=6˜´Ø“ VH¤l­÷¹ù‘1Rn8 €/ðL ‚#ä€ Àëh€ÿIg @à+™fÔ#^2ÇÏhPþ„ˆ „c~>’Y.(€ú¯cZéÓ ¤Jf $™àÄÙ¸&î»áaðé‡Œú1GW%úýˆAÄ¢Ù6d‡ðþ.¾¹0;1þhß㞺O·Ý„{ <•D‘YÍä-üÄœ &ƒn-@–] ŒÙ?jƒCÖ¸îùCî8×VøD˜‰7î ss€ÚŠÆ¸}¯åÏë‰Yÿ˜L¯`®à c‘2öËøŽYýÅ÷‡qà;ôgKl%v»€Æ.a-X#`b§°&¬;!ÆcðTÒ £«EI¸eÂ8¼Q›:›~›/?­Í’­/®—0Ÿ;;_ü1øæäÎðÒÒó™Þp7æ2ƒùlkK¦­â½]ºu¼eHöl„qù».¯—b¨Lû®cpüô÷ßuo`»¯àD'[$(êÄÛ1 P„_…ÐÀæcðþ D€fÀЧƒlÈy˜ƒ"PÖM l»À^p œçÁÐ n°/úÀK0ÞƒaAH ¡#ˆ.b„X vˆ3âø#aH’ˆ$#i!ó¥H RŠT ;‘Zä7ä8r¹„t!÷¤yƒ|F1”Šª¢Ú¨1:uF½ÑP4ަ¡yh!º ]ƒ–£Õè~´=^Ao¡ÝèKt˜<ÆÀô0+ÌóÅ"°$,` °b¬ «ÆbÍðw¾ucØ'œˆÓq&n{3ÅÙx¾_Wà{ñü,~ïÁñoA‹`Ap%i„Y„"Baááünúï‰D"ƒhBt‚ße"1ƒ8—¸š¸XOl%v{‰C$IƒdAr'EX¤|Ri i?éé:©ô‘,OÖ%Û‘ÈId>y ¹Œ¼|’|üœ<,§$g$ç*!Ç‘›#·Vn·\³Ü5¹>¹aŠ2Å„âN‰¡dPSÊ))ç()oåååõå]ä§ÈóäÉ—Ë’¿(ß#ÿ‰ªB5§úR§QEÔ5Ôj+õõ-F3¦yÑ’hù´5´ZÚÚcÚGº‚µB°Ga¡B¥BƒÂu…WŠrŠFŠÞŠ3 Ë(^SP’S2VòUb)-PªT:®tGiH™®l«¡œ­¼ZyŸò%å*$cŽÊ2•]*gTzéÝ€îKgÓ—ÒwÓÏÑûT‰ª&ªÁªª%ªT;TÕTÔ&ªÅ©ÍV«T;¡ÖÍÀÆŒ`Fc-ã0ã6ãó8íqÞã¸ãV;8îú¸êãÕ½Ô¹êÅêõê·Ô?k05ü525Ök4j<ÒÄ5Í5§hÎÒ¬Ò<§90^u¼Ûxöøâñ‡Çß×BµÌµ¢´æjíÒj×ÒÖÑÔÎÕÞ¢}F{@‡¡ã¥“¡³Qç¤N¿.]×C—§»Q÷”îL5¦73‹YÎ<ËÔÓÒ ÒéíÔëÐÖ7ÑÕ_¢_¯ÿÈ€bàlj°Ñ Í`ÐP×p²á<Ã:ÃûFrFÎFéF›.}061Ž7^aÜhüÂDÝ$ؤФÎä¡)ÍÔÓ4Ï´Úô¦ÑÌÙ,Ól›Y§9jî`žn^i~͵p´àYl³è²$XºXò-«-ïXQ­¼­ ¬ê¬z¬ÖaÖK¬­_M0œ4aý„ ¾Ù8ØdÙì¶y`«bb»Ä¶Ùö¹Û®Òî¦=Í>À~¡}“ý뉹«&Þu ;LvXáÐæðÕÑÉQàxбßÉÐ)Ùi«ÓgUçHçÕÎ].>. ]Z\>¹:ºæ»výËÍÊ-ÓmŸÛ‹I&“¸“vOêu×wg¹ïtïö`z${ìðèöÔódyV{>ñ2ðâxíñzîmæá½ßû•Àç˜Ï_Wßù¾­~˜_ _±_‡¿Š¬…ÿãý€´€º€Á@‡À¹­A„ Ð õAw‚µƒÙÁµÁƒ!N!óCΆRC£C+BŸ„™‡ š'£“C&o˜ü0Ü(œÞ"‚#6D<Š4‰Ì‹ü} qJä”Ê)Ï¢l£æE]ˆ¦GÏŒÞý>Æ'fm̃XÓXQl[œbÜ´¸Ú¸ñ~ñ¥ñÝ æ'\IÔLä%6%‘’â’ö$ MõŸºijß4‡iEÓnO7™>{ú¥š3²fœ˜©8“5óH2!9>y_òV«š5”œ²5eíËÞÌ~Éñâläôsݹ¥Üç©î©¥©/ÒÜÓ6¤õ§{¦—¥ð|y¼×AÛ3>dFdÖdŽdÅgÕg“³“³óUø™ü³9:9³sºr-r‹r»ó\ó6å B{„ˆpº°)_sÚE¦¢å¢ž‚Ê‚³âf™­<›?»}ŽùœUsžþ:ŸËžÛ6OoÞây=ó½çï\€,HYжÐ`á²…}‹í]LYœ¹øê›%¥KÞ-_Ú¼L{Ù¢e½Ë—×) Šî¬p[±}%¾’·²c•ýª-«¾sŠ/—Ø””•|YÍ^}ùÛ_ÊY“º¦c­ãÚªuÄuüu·×{®ß[ª\ZXÚ»aò††ÌÅßmš¹éRÙIJí›)›E›»ËÃÊ›¶nY·åKEzÅ­JŸÊú­Z[Wmý°³íz•WÕÁíÚÛK¶ÞÁÛqwgàΆjãê²]Ä]»žíŽÛ}áWç_k÷hî)Ùóµ†_Ó½7jïÙZ§ÚÚ}ZûÖÖ¡u¢ºþýÓöwð;ÐtÐêàÎzF}É!pHtèß’»}8ôpÛç#ÝzŒ~¬¸i˜Ó0Ø˜ÞØÝ”ØÔu<äx[³[ó±ß­¯iÑk©<¡vbíIÊÉe'GNžjÍm8vº·mfÛƒ3 gnžr¶ã\蹋çΟ¹à}áÔE÷‹-—\/¿ì|¹ñŠã•†v‡öcW®ëpìh¸æt­©Ó¥³¹kR×Éëž×Oßð»qþfðÍ+·ÂouÝŽ½}÷δ;Ýw9w_Ü˺÷ú~Áýá‹?RzTöXëqõ?ÌþQßíØ}¢Ç¯§ýIô“½ìÞ—O…O¿ô-{F{Vö\÷yí »-ýýLý£ïeîËá¢?•ÿÜúÊôÕÑ¿¼þjLì{-x=òfõ[·5ï&¾kŠzü>ûýð‡â÷~rþtásüççó¾¾”5ûÚü-ôÛÑ쑑\–€%9 `p ©©¼©€–ÏP¤w/‰ Òû¢ÿ„¥÷3‰8Pã@ì"Âॠ#ˆ©ð->zÇxÔÞ~lÈD˜jo'E…7ÂÇ‘‘·Úšø*Þ62òu7${€Ö<éO,Dx¾ß!¾W«ËçŸäŸÄÀl-#mRWbKGDÿÿÿ ½§“ pHYs%%IR$ðtIMEá*Ž Á IDATxÚìwœUÅù¸ŸSnÙÞ+»Ë.KYz©""bDì]£˜»±Dó‹-ѨÑhl±wcEì¥Hé¥,»lï{ë©óûãÞ-*Fñõ<ŸÏêåìÝsfæÌ¼ï¼ef¤iÓ¦‰ŒŒL.»ú|¦ŒƒƒƒƒƒÃÁ *ŠÂ弑VSF’œqpppp8H2vì‘ø-Ûi ‡ƒFZ·i§hцpppppøžHNvÍåuŽûÊÁÁÁÁáû)!’Žþpppppø^ @’$G8888üB~"—’£@~AضM(ƲíC.×âàààðKQ–MmU=uµ hšÁ¡n«N“;888üü‘$ M7(Û]ÉøñCˆ‹Eqèˆ|°ZJ’eE–mÛØ–øßh>dEA–;­)Û2±mñ\>E•Á¶þÊâààðKV í²/&6–êúVä.¢]Ð%Y**ËÛE¿Û²‘$ Y–;¾Ø~ľ½_‡ ë»K'£¶šRvTù¤’³»‘Û-—y°JDFq)`™Xö)J%dE§µºœÚÚ&ÂlÛCFa²’cQÄO©ä$dUA6¶ ²ÕBù–HÏ#+5Žqpp8D D’¢“hEÞww@"òMÓ¨«© àó#$%'‘›ƒÖ¨®ªBÓÂÒ3ÓIMOG–•¨Ê8€ò D’1 UnaåÂŬ H$hi}GãÎE¾¢c~§T”?{×ïE-ìIF¬ò#Æ]\^?;—|À‚u xºç ÔU€ßpüчS¯`Û?…Ø–Ʋ*B®dÒr2IÍìÞ°i` i© ¸eGƒ888*™ïK‘å’Ôa7H$@u¹Øºi{¶o!%1˲غ¡™ÆSY±#ÐJlŒ¯ÇÃÒ k™<í97ìà‚è’‚ª×²sãzJåqüñÖcHiÚIy- £¦»À0±IÁ­JX– ²Š¢HHHئ+¾ž/_|“ø+ÿÂÔ$Ë´@Rq¹Û•‰¡IAu+ÓFVU$ac™BvãR$„°°LÓMѬ ô:âHŽ:e2Ù5oóøsë(-+$k@q „„, LÝÄFÆåV;Ý]††iGëºÏ³¶¥cXQí­¨¸Ôˆ6¶‰aØHŠ‚¢ÈH¨xãZùjɧ”%fÒôn$Ƚ9ö¢Á  k&¶¤âv«QÓÒŽ”E€âv£H_+‹ƒƒƒÃÁkN+ I–#òM’¢“ÖvËD!è–’Ä•—ÏÀãq³hÑrf½7‡¸×^ý;23Ó)/¯äžûDz¬È½lÑŇ%@tHßa(*®-TGMU€¤„,²»%Ó¸g[·Æ‘ѽ˜dªbÝf)E݈­ÛƶŠFºMFÿAx+6ÐàÒiþj.ó|Ã8².^QÉÊy›i »º3lb/¼Z¶¯¬&¶g"kJ±’³(î3wõ|V•kĦæPØk †ˆxæd9ÒN¶©ö·!ö¥·gµÍ! 9@ÅêÝhn?•5nŠG¢»·žµ‹6ШÛI&oØ1ôNÔ1¬z¶/©$¾$™ŠÕÛ yÈé;’~i –0 6nfÅš2‚Réy½é78ÀÎ=Ô×4â#Œ?Ø@yc -¾5,ý2‘ ƒÒmÚ‹–ÞÜÌ”:Ö¾‘º †)r|d_RÝ6u«ç±¥É ²MIšíìNæààð=ü÷U»"K]\XRǰl›þƒ1Îî½ÿq.¾èl&L?`@ÿ23ÓY»n=ù2†FbrRDõÈ]Õ„„Ú-ù;ˆØ1©äFÿ½+Y0ëª ¥ßà(›ùb“LŸ¸Æ÷H °eKׯ36&ÈÊUë‘[¸Š{S×LÈ6‘š«©m #«lùp.ëšcI‰÷²¬w>GÅ•²àÅwS&å«¢uÛ Vïi¢Ÿ·–¦úz¶mXOi[2çM-D ™ØR{ÃIȪo|rC9º‹¤ÄxâãYöÁLvfå“Óƒ|µ…ÒÏf±`S, Rpö&{Úad)»YüÒëèS&’ªÇç¯fM™‹¬óFÛº‹uŸ-c»•DЍ§-`à.Ž{Û">YXEÜ ž$ÑJk8LÐh¦¾É­Jlþd6-£N'#ßCÙ‚¬)7ñĪ(µe,-êÎ É›yoé&Ò³’Ð-ˆéÓéÇtppp8h"uúddYêžH„$!$§¦pìñ¿aÁœy<õìkœqêo8nêQض͒¥+xã­Ù 5ŠAC‡"I2BØ]\a`2a¹IÉÁ¤“RY÷Ùû¬^^Me‹›FŽ&wÇW´TTa ÊgÛ.‹ÞýR’¸—Eõ!òÇžÉizãÑØÃUª¿h nÚï8¶»+°y³7 LžBR¼éßÌÂe•L9Î…+&9cgœ—Mݲÿððk+áš;¸²¨–åï¿Í§[7R5¹E²…’$£ºLê¶.cî;U¸öl§­h(#{g'W¡º ¦ç1œ=¥/Iæþ°†^ºéű¨Á­¼|׬¬Áô|wŒ;y(§ü¶æ®å¼ù⇬­Π†u|þEYS{‘f”³½v›¶3Ê£àÉ*aôo.`BQ5s~ƒ²ä‘5m ¹Þ-¬s{p»]x¬Ý,¿–¦ž‡Ñ;9oh#ïQÁ´»ØÙæeØi0¹oš¿‘€î(‡ïãÁŠ*Œ.®,Y–£±‹ˆû©=""IªªKSmõ df¦ TVV¯×‹¢È‘ì+qƒ‰¨P’EÄ3¥îóào±@„$!lˆMëÍø³¯¦hùLf}9Ÿ/zžÉÐ\•ÏÛjصµš2+—ÂŒ,âr9æð0»«òÆK È6Ã{›Xؘz˜°éÂÝæ'äÍ ×$´!}“‹°D#nO}GöBÒiyôŠ3ÈN“ðÙ2žÔ$Ò¬ᰌ쑑E{ƒEÓÎL %g8“'NQjl$Ž!’Èˎò,ì6W/ò³ 4-ˆáéÇ’ËÚ"ŠHQ3vD J ˆ—M^šæ™˜±Ix¥VZ­82 {Q’çAoô’”DB¬ cX6¦©£i¶'ªdÙ ¤¤c [ч1)/9,§¾žÚU3yq¥›žcNb@º‰pTˆƒƒÃ÷T"íI:íiºÙÞ—d™€ßÏâÏàoªç´“§PRÒ“9s—н{7Ž;öHoà 5¢Ž¼A©*RÁ@†ô~ïý;[ò\hÞ<ŽíO’d¢k&B!2ÈÊVY·v&Ï:ç—†Žaš®ÞL:¡—>~‘'WÇãRlÌîGóÛâJ_TŠÝ˜þ"z«/¦c€888|_…ÈÑÏ‘ët¤áÊ’„ÛãÆ²m>³Ë4©mleè¨1T”íá­w>!ÖëÁãu£ºTU‰Ädm‰v "ÚÝ`§@@¸“H-Âa-;iU$òã²)î]Bn¼ÀP³ÉN0É,."++Ÿ8ÉÄö$‘“W„7Fä£_InâtòYÈe­„Rìtú{6§&m¦9"íQÓâqÅôå¨ SIŒ1±l7‰YC™xV/R<:¦CVïÑLH† —„$ ,=‰^ã§-§’ªX‘%3R¤ª¦žÅð3NFä'ã‘m„™L¯£Ï`JÜ&u A½èOªm`H2²œLaß¾$´4£xè>¤˜¸p;¹£O8¸ue%žTR¼)džÀø"YŠŽ¡ÇP0r2G¦•R-'á :a:Zz3–ô#Nâdïfjü¶°±3ã2),´±…@.â8„!âààð=‘XG»é"D¤¨ð·,‹>}ûKks A¯!éõ,¦gïÞì*ÝA(BØ0yÈ(#ŠH¢co­Žä®ÚŸ¨õß)¬„YQPÕèÚ aa™¶C¢RÃÜ™RŸ<ˆq㆒$éØRd½Dd›Ó0°m¤zp)غiƒ¤àru.*–‰aêV°uKHH²‚ªJ؆%"[–( X†Q „ˆ¬r—„mYÑë"„ŒêV»¬€\n9úË0°„À2Vñòus(¾óNŽI70meê˜v¤eYEU£å6–YS¢È`™‘5’âBULtÃFr©H–‰eÛ‘çºÚ×DÛÁ–q«r´lŒ¨5ãàààð}øƒ|±l Ó§O¤¾%°OVWdIFQ”ŽìU[ØX¦‰$I‘ëQMd[–mEâà]Gä³Ô™Æû]ò*âJ²1 ½Ó­å²¨[ó>¯Ï^H}·IL×—…mÉÈØX¦ÕÅ &ÉiØæVD¹Øû=Ë2ÌHì%ºàÎ2éü·èòïö{K ,+º^¦ýzçïlÓìò̈ұ cßòIz „n™†]a/#ËÓ°¾Ö:6–Õµ|åjEu„0ͨÉñIZf×ç‚„…ÑõžN ¯ƒƒÃcD·/ÑÂY©‰]6SÒæÀû/5—øöm3¤ˆR´þ+%É‚`Ã^öV4âÊéA·¬ÜÂúYïÔ!D+U[ˆíÕ“TÕÙ·ÊÁÁáçƒeY”í®¤jo5Š¢z…UÛà Aû¿ó· dY‘À¶~ä ÿÏt8Š*#LËY îààð³Ã4LZZ|ØâÐK0©¶Á'ÃŽ¨tpppø¥ ËòOòµ}Ö} Ävü7?;,ë§Þ‘ ú~¡Hg;JÄÁÁÁÁáÛ,ý‘$PeÇ qpppp80²ÓŽqpppppˆƒƒƒƒƒ£@~¨N8üH¿ò!…p²Qâàð½ñx<|øñ<¶—îFU•_UÝu]gÜØŒ8|ºn8ÁÁQ í3*gVåpP}Ŷ …œzòoèݫǯªî /'cÛ6¶íìøàðmVºü³;Âá¿R .—‹Õk7òÙ‚eÄÆzqôȃiFväý%ÎÒC¡0cFÿÕ½S·ËÅÒe+X¿q«ÓÁŠÉŠX–…$ɨªü³M’@ˆO˜BqîX–õK·@†a0jÄ0Ž™<Áéµ?ÿü×ãüéÚKqu{ãÍ÷1 óW÷NÃšÆøq£Ä(§ƒÿÔÔÖóØ/0p@ §2ígS>øY)ލ@"ÛŸØB „ÏçÿÕIè¬)!!aŸû|¾_L›z3E`éašLBÂ7—E’$´°F8Æ0œÈ¡C.—ŠmY I–G[[Ûÿô8B˜˜ø³ È?t}“z‘e¹ãçç##å–¾~íWà@|ÿk(ÇAEüMõŒœDöÓµëAKûO.&#s"÷l<€µb¨\zÇŸú2Mÿ×]Åj¡t|ÞLZÒM±ÿ;ø_#û–åç5f»Žé ¾·o=eY>äãû—ÌÎÂÚ/˜.+H¡FöÖ5Ôm‚ø¬B2\H‡üx& I&rüâñ(a´R]"¡ ‡xÉF`c†}4¶)dd% ¢YÂ×ÛPmÛ]”C¤M>•ô¬xd[ “P @Àp“š‹tЛ–IH¶š“Ä´¼ê¡_ $„ÍÁ¾úß~Ÿ?ßvsÞÙÄ­ƒï+d—ÛClŒûÿþÄFEÅåöëuÔ4KØ]ß±„"…¨¯¨£5¤c Abv!qêA n YûGÙ¨NB¶ÔW6Ð6"e‚¤œ"ÒbB‘H²ôß”%R‡Hß~¶ØnB:ï :®uô{¡ãkn¤¡9€)Ev ¶MlZ.Éq¨Ò8¾²]~î‰H?K‘÷U¢åïx' Š,!!wÔOî¨÷w×q?6Îâ³q'1ŠŒÊý„·Ö[@Š®ã7#¦rÜñ'sε/³3Æ¢ê³Gøí‘çóf=`•ñéƒWqæï_äË-KyâÚ£8vÚÉLŸ2š3nx†•[–óàMwsÃ¥gsÑÇ3eÜ`κk;ÛÀl›Å]'žÆ ÇÏqÇÎe÷~AyЦué̘z'žx§ÿ{ZîÚØñΙzø±Lv*Üô»â½ß9 û¼s•X÷*îùÝ{t»ü?¬oª£±a6ƒ—Ìa]‹[‘#ß³mdI $¹ó¶ÍÏrÞŒ·hw#Ù‘÷ÑÞþ‘~×Ù/åöKmwö/ÛÒ1J.åÕ;¨©©¡¡êeäÿ¼Ê–†¤DǦ*ƒèòEF¶‚Ô®~𗼇?Á-‹üµ²Ø‘Y¸Ô~]EV½$h˸û/óî—µ¸­Õ<ñÀ;¬.oÁ’£ýj?!uŒ¿H?Ü·ÙÑqñuaÜÑî¶mêhYGñÇ'—R]]Cmm mŸ1¡q6l% GîýÍò"2Ž”#ònlñµöWT«ÍóŸàª¿Ì%m—ÎúGƈè2F~Îçf«?lfæíîl0çódN:k"z%ÐÖÔˆigpáÜõ(ZC«góçÛ¨× l)—Ac{ªds™†ÇØKµßEzϪֱ;GN¯ä»(- è5ÔúcHÍ*¢o¿DÚ*ëh3ãÉËOÆe´Q]]MYånüþ ü»÷°·±˜q!v­ÝNUKÝŽ§pÈ@ ¼­l)¢†+¨jI£Ï¨ž¤*‘¸‡mK¸†þ‰»¼Ÿ^ù3Ï_ ¢Ê ŒP{Ö}ÎŽfALr6ŽŠ|5ÔÔ6£šÐ’»“í1h­®$œÚ‹ÞÝ»‘îmcǺRªšýèv…ƒÐ-ÑŒ8x–él( ª¢¢ª Šè•$´Ö*¶®]G¥_E6‰ÝzÑ+/‰ÖúFü͵4·¹Éí›^½—Ú·oõšÚvñù²8z. Õ¤üóf‡ç‘(|ì^ºÏÀ¾¸*³¥NF–@õÄѽÿPRŒrvVø‘Â-è1ÝÈÍ2(ßTA@òš[Dqq1Âì°ˆ"ë¾{”lxóu“'°pñv\Å>^s-·ôòÀßærñ–½\SMü‘Á/Ä‘Äy\|Î,>ü°Ž &W°¹Å¦ÏUpôð4&¼²•óÊPôÕüëß[Xµb vÓ\üïàµ;#‡ù\8ý Êj2xïš›‘þñ9;ŽÏÊxhøM,8ó*¶\ô*C{›G ÁØù §žw;“¿˜ÊÌû—sõ®J.Ï5(›y=“ß kͤŽ÷iEÚA¶±ë|zç“k`´ð+ù÷êÉÔ­_ÈÊí ÍOEQTüeKÙ#¦·{˶7ƒâ"­G(­@7‚¬Z_ÍÄÂD̦2V­ßC@vŸšGŸ¾Ù˜µT×¶  'æ“#h­ª ”Ò“Þ…¹${ ²,%*àmƒPÐ/O|l"Ý*›h V±¡J"F« ª-›#Ù»l-BÁå-`à0U;*kk6Ö0.?žpý.6oª (¹IÌ, gŸ’TæŠì,­¤ ‰Ôât5£*ض­”ÃqÙŸ—œ„ËlbÛšmÔÃXä2pL’ô6”)¤º¶³£:2‘Ë4†‚ØÎ>Ö©DöuvŒ#)ROa›Z¿­ã bã=¤6 tLZرj UmALOѰA乚ؼ'„K«¤º ’{ µf=;ý*齆Q’¦b…«X·jm’›ØÄBú•„¨++§ÍÇ†í ŒÌvÓºw;ÛJ« I^ÒóŠ(*ÊŽŒ!~’£gÿ'ˆÔîß¾5U¬Q†Ò?)$ÕÀÒÉ$ÔÚ‚ìVð-ÿ7^½ˆ:·¿,›Sç>ÅÍî×™qò †/gÕæz\£¯æ7 ÏóænAÑOpßa³™ñ‡Õ Z˪õnÒûMãÿ=}áY¯óAíî}àD’jW0ó©÷Y±b%µu›ÙTÇ𣇒ážÇw¼ÊUm˜•W<È=Gŵ,$¿`;kwËþÂøv¿š-1zîý¼á_øâ´ûÉI’ÑZ«Xüì5<´2•XÑŒ’=”³.¿–Ì­Ïóð ›HOÛÉVu còâ nz‡å—pÿ]×1Eúˆ'ïx…å•Ñ2\z77Ÿ3Œœé;ã4í&¹$K'X¹†9e²PÌj¾ÚT…áE ü+Þù÷ÌÚž‚Wß‹kð¸ù’Ãøü…™¬Þ²fc ÓÏŽã«Ö²½:ˆKÛ͆øKP«ßgÆ)ëùãÚçø}Ƨ\~̳œ²ýc΋Ç_Ž}©Þ!ÿõë¹i~<IGvÉŒºäeÎOx†‹®YMŸ~;ñÆ +ã­ç7£¹²;™‹ÿt Sz¸0 »‹oú»ÝWo¯ôÒXwW½$¡xc0왬:-¥I÷0¯0D×Ò lêx<9Œ˜róž}‘9½òÐZrõñiˆŠ<}ûý<1o7Rl»­qümR7Œ¢ó8~B Ym>lw 1U‹˜/_Ãíý‘ò‰B®þê¨z„Q;‚4ÝzóL@M gÉ0v®\ÅÊ´»¸#°‚˜éù ²mÌï6Ó;]½–A8m §|‘¾û žÖQtKL¥Ï¸ øß½˜)œÇ—³.¡W†Îì+NdæYséÒ¹f“IZ°mØÿãô¶Ø^šÎÃ/Œaø-ØöúÝü¿§6cÆ©$w?’‹n<÷ò¸ïéMdeîd«<‚‘©è›ÞbYê îºí:N=,K¾\¡=|µp¡©x«>£rú lyŸ³O_Á »Y³{ ×þ¹š¯]•.cùK8gÖE¸ßz— [ xìÕ± ½¶ˆ5/ßÅ__Ú†åUHís Þ|'ä­aöãòìÌ´$·’=ôtFx÷²qíl¶7ä2iÐVž¹¯3n¿˜ ág¸åŠOØ#tü»38ñã'ù[Ê,.>m “]ǧË@Òëèsùç<5# ÙÜ·oIßä>•"Õhb÷º¥|òQ#n¼¾R*÷dJß,X3‹‡ÿ:“5~LŸ‹Á×þ›{Æ-áŠsÓ»wë¶”cŽºS}¯ðÖæ:<'ÌdÞ­=(}ûÏüþ¶íÈ©.<±Ã9ëá)´~ð.+vïâÅ÷Ç2ðì>{únz¿ KUÈu&—\w“ ,ýW‰6Ë2;R4uCF² LCÇ0 „aF^®¤â›yäŽvßbn=®€Ð['wÇ\.¿ÍEBùÐZž»ø IDATl¾Ÿñã–ÐÇf®ÞqgÜ´ŒŠ!.2û0cæ"ÞôÁ#÷ß̓w¥qÑÀb[$ ]G7ml; §žJÍ^“óGǹ£ žžþ*M}ãê+FR|Ko|’ùE½Qê }fÏ ‹Ekñ£GÓ+mÓÆFÁNŸÄ%Çþ—^ÜËŸ‡HئŽ;µˆÓïøˆ¾_í LË?û’•ÏgLŽ oØyÜýÔD>»òV'Mã¡E—òäuÓP¶”gßz“¦>ÇrÕå£) ¾Çå7<ÍgÃoãÄþ™¸DÛe"„®ë™%²mbé×ÍâÞ›—â±;H£–€éÓHí7™KîìÁ„m5`næÅ×ö°fÕFÂ-azœt?·ÿ¥„·Î<…¼3îâÁGS´ãnJ.oÅ?ènûÍIlÛcQ³xý÷ðéû5œ=¸”ši0µ›DÆÍŸðäÄ´Š0µ›?åÉ×Þâ˜ß»ÉJÆÕü‹œÙwsûÝwï£LRWóê ‹˜ùÌ'ôÿû dšVÔ ¾Ë?¾þ>,y„•^ñö‰cx}çUKÙdžÍhÕE¸n/ur&ù}¼ŠûgN¥GÉ™ ¦‰¹/}ĆÚi|¼ûä±…nþ%¨#, Ý0±Úý¶ÂÆŽÏ'ßžOiÝٌ̤ [?^KLßLrbrýêÙœ @€­KªHÊ]̬à2¶p:Ùp]%õrÁ·û% ˶Р£#WoRvÍ3\ÿ•Üõôß©ØawÝ#<~îÃ\øä?˜W}!EâC^Þp%w¼ßÄ3—ÅqÑÇâè˜fÞ¼}'#ñ7Åñâ“h›û2/>¿‰w?Âobw²xö^þÇL&&“?ø î|~*Ÿ_{ sÔÉÜ¿ðR^¸ñªvì¦eÈ@<†°d KÆÝü¯?²OŒŒ¡õáêWo"Wy™ø&Ñ÷®â¹nŸóÇÑ¿å´*¸i`+«Ÿ=É÷VñÕ·òÙ=©¼p×Ô¼û4¯Íªä˜ü›©Þ-|4k>³y†Ðà=¬ ä®õqtÖ^>¸åYÊ=nŠ&߯ÕçÄÔþ+yÝã'Flå‰;ߥäÖwxùä~ðþ©t»w.WÜæ"¾y®3v³öQ }ËCŒÿí+ì¹ðJò cŸØŸ¢cbk[vgú¸ ºj°Œ/Þ™ÍÚ¯RpËAv¯‘9û‰Ç9@ã•ã_%xø™\7n Ý|ïðû?=Ê¢޸ëC Ÿ¹œâŸãˆþï»i-«C1þ‚Ålmhàù§¶rñ¢í\_PƇ]Æ_òÚmeǬB¹~ ¿Ù_Úœtï£LTWòÜSK™õRwúÞ4•4C‹®ÿ¿> DÖðû#ë@„d¯UâoK¥¹-H¬©c Wl"îŠE,‘fp[Qõ•{ˆí5Ž‘ÕìªXýÇÒO)gOièúŠ2Êk}ز 7Þ~CÈWRd%“ñÅ6÷ÍÀ24B>¾`ÃÔ ú|üMÍ-´î*g]¹ŸU[_aÇŠ·‘„›ìâ^ZÄ{¦L=U{½]ívHÇ6m´pžgý‹ì‹ïâ­ÄBTÂ4íYÁgÿz˜'UãJÐh&3xb>zB6…9Ķì¢6¡;ù)(Í•´è6™uÙ¸ÇǪU¯Rúå»HÂMF‚þ0mm~¼r§É’’ÒÑ®¦i:³9,?>3–nSïà™·Î!Õo¢{˜7ó5^_ß@ùê™}ßs¼»©·•]þäÌDËéCaN ö–˜ç›Ì±Ý°š*© ôš1Ýt ñþž­¼ú®Ÿ›¼Žgÿ9ŸJïzâÇŸ‰§a+sžy˜¾»á°†è~&ºä%¶OòZ×°fõ–®ÚÎæ¯gvXFu¥3üph¨ñçÖ0mÐu¦i~kÊñ§÷ۤ͡hx€Ž8·[_׸~Ø'ÜyÃ,ÎÒÀªO?£V@bv9Ý æ¼°œ—ßÈ.,&qÕf^{ÿ=Jv|«ËBS4Ë00­¨¨&Z(H õH.žöâEBÃsIJ\Á[ÿ¯çÿƒËo¸—ç¯z}¤„Y¾—ßÈ?–ŸÈù}þÎßþ4sûïeéìÅÔ+c¾5è+º¦ã÷û:RJŠ s/ô<ÿ^½8ž”½2túÌŸt¿ý]97ÎÛËd> üŠËèޔϱ׻yâ¶¿ñÅá'ðÛK ±fÁ°Ameþ_±¤´Ž”Go`qXBqg0l¸L•AF<â[wQŸO^v:®–½4‡tR  ß‡6±©­…æ¬éÜ}Ï Æ§¢ “ /D "€Ñïú¹+©Xñ c®áå‚ÝìÙ«ãí9–A/í`}“‚V¨«ª fÇ:–mª`ó#â³°„êÉfä¨jVíJ%&oEòvlvíuÝö1ë¯_Nm]#yA ÛÆÜ½˜%ö9\WhÐ\]N|ñFÔU³Ë¯`ô»‚zŒšV$·ÍïÃîtcy<DûÛ]×ñù|Ȳ ² ;ÜB“w §Ýr¼d$ R˜õžÏíÖ²aIë÷†X½÷9Jy‘ðPз7­Ma´’1ô÷VSYÝ„9d"ÕrÊkZ°e™@éW¬J¸’krÊ)«m%±p8½æ–²©Y&l¡¾j»¶±üËl{àz>Ôd\® Ï„†:%L\bÂÏv7žÆÛ®õ% ÍR92k#O¯4è3¬?ãòâQÔfV¿ù ÁœD²ŒOØR{ ý2ã0*·±;®SC·D$¨ý,GbB71ë[ ÅÆ“ݤÑd4Ü—žZum:"!žø&›°F Õ£"ǧ“¬¦2í/·rõ™Gongλ{Éêþ¯Ù>4StÌV:BÑ4@Û–‘íL=µ‘ßÿ«’¬ÇQ³kŸ¼™Êߪ?ä„Ðf=ÿ¯®Ó°-3"œl7Ø&¦ibÙ!,¬˜,’\©ÿç{¸êœ ˜Û™ûöNâ cpuQ‘öÛgÒÚѦ‘@“aaj>šÁo¢˜Í´ dO«?YÇŽ† <ºþÆ6Îáæ;æb…tl+2ë5bré&}JyýDL5©¡’jCC3 ˜z!ÚC°À:–÷ftàQþ¸•W& /âù{¹¼á+Îsײ}Îýœó¨Ù×ÉÔÐ%îØl†y*—}ø/&SÍÆ/7³ÇCzŒ¥G$h¤žß>Bʵ¹ô¨|\]vqÉ<ò N}µ”a†M§þgKãˆ|6ÿ/§ @BÃO¹•ÄXL)ˆcàÔ#8lïç<ö¯G˜ëQH/:š1ýàóÉÌOŠX îB&­’ãJfØ¥¯QsÙ•<ÿúÇ´éÓßšÏYÀmïP>ý¼¸] zFrÛçW1 Á Ûaáù÷ñôö$’žÅõÝ QrŒ´§"›{WðIu2#ö!/EŸ”JaÐ j¥×äÔÝð<÷+:¾¿fÛN¬¢Ëø÷õ“h|f25—ß¿>Yqá‰õ¢Åuc@ïñüî£×8ÙÕ@Ù–mlÛ\ʦò ¬«50mÀ6±L3ò¹# }#ÑÿKV_K3MMD²©$·ŒÈx‰yäksYWw.SS ¾r;ñýI²üØŠŠ;6w\ƒ‡L᳟ešRÇöuÛ(«¬dÓ†¬¯/¥&<Ž’´z¶ÌŸK0¼FÛMߪ,EÊŸO=mµÇ3¸0³ª”²˜âÑÁ Ò":6èZ‡}²™ä;³¢ÃÛ ìo¥©±€¦P2e:ÊíeìitïMçÄ?ÿƒ«NF¶±Oß®$·p9/ZAô¨¼ˆÈ'Ú;5rB9¡Åll8—Iž|5»¨‰ëK‚íG¨.\qñx½YŒ˜|6—Ϻ›£¨dÝç[¨2âHõXÚ¯>·3 Âkô>vÙOÍáͧ`uV^µ”Õoï¡Ïïä¬ñ/ñÔãÏRÛ/ßÖÝô9ñ$2ÅÂa%¶e»"cË –ÁÖiÛ½”×4p×Õ°£YbÀicè_»„¿Ë¿î¯¤Ø¿…E[LFõBBx-Ë_ý¢’Ó˜ri.oÌþlZHš¹‰Ë{ð‡¿H„4+šÝdw±@„eGƒZªBÖØ‹8êμ>„Ä<º.ã­ûï`}ãn–~µæâ‰Ø†fXaaè†iG>‡ƒøÕ~ÿ»u¼ñÑË<°e1éö&,ëÆÙ÷ŸGZl{ ºkrBgð/"-Ó@ ›™'¶ih„B^²ºw'NZÁ‹÷ÜÉâªÌ\Gž4S30 pü`NgðÐû/óï-+ðÔ~ÌöúÃ0-ƒpßQ”̹•e×Þ@¢Ù‹ãF­`ò ç1ïqÑÚA}aΣ¥,è£zý|v0 ahaCN¡hÌP†–¾Â³—ÝÁ9•lY$ýˆ“øí\¼ÂÄD3ɾݒýý7íÿ‹ôIüõíIüsîQû÷;)îãÎâÆq키Ԝ~ã8ýƯÝkt—¿‹Î¥×Döåv,'<öNØïáÌxo63¾fO¨yÇóÐgÇïŸMòm &ºŒYQ°[+˜ûΫ¬^RD·ôd”Ík¨>q"ʼn.´nÇq±o7¥þ“+m¤æ >¹ëvžÞp“»gÒ M¤Y ö¦¹¼üR1Ç5†cœÏ˸ƒM=¨ØÒé½èV(0ôÎ~©Gû¨®µ÷Ñhf’ ,kህÖ~]È": ,ÛÆÎ˹£âñ¿=ÊÛ[vÚ0ÒÔ…hkçðêë=˜GõÆÜÁ¢—çÐób ¿®ŒÎYG¾ÉÃÏ?GÃé„JKéqü±dÉ+ÐÂV4–&¢²Áj¯CG²†ˆ¬ë’ýÖ±¥™„µ·…-ÂÔñç`BÃL6”ÿ–Ñ3²™ÿÖsÜ¿j6ÉÚ>û¢7WÜ*¢òB lƒp8";lË$¬I¨9£8yÀ£üû–GØÜ£•Ý{4†<”tñ)ŸÏfæùŒ9æ0•Ïä™+þβÌr6®Òèvô)œ;0wGöØÏåO7ü寡De âÝ~*ŠLeu-†a››E[[[äZ:d f|‹ÒukX¿µŒŠ]­ ½êŸœ7²%ÃúѸb1ëwàî¹h(Š¡ œ‹ÇÔ ËY ”…ªXj y™µ,\ÛHR[Û1”Œ?‡K&õÄ#£›ÛùbñÊEEÅÃ9zìº{ÛØ½±OqÆNŸDü¦Õ|µa[j38ù¯3>ÛEÈH¢ïÀ<â)2XÚÓe-™ œƒËH¤QÐ7)y ëEjâv>›³‰ª– Jf&1ŒâÜT’Rs葇RIïÖüL¡°‡ì¼†NGÌÖµ¬Þ°–-5œtÛïß-Ù²:”mÛ$''óåWk1|MMMÑÁ)›eZo6ýûf ˜Â6ÑM oROFÌÆ nbù’­ìõAFaLӗ̤4ºåç’‘O·¾}ÑJ7°aÓª³‡1¹ßP†- ^ŽA P8ìhz¤Ød¤çÑ0p'$aJä÷ØÃÜ6RÕØ„/¦˜£ÆbhÏ4\žLúôÊ 1%—Ì´8Êæ~ÄŠj‰â£¦qÆ™£IÑ£©¢²,±»l/…ÝóIKK9@˜à¿Èü.ë*Üê>_û»eò·ÜdOy%€Ÿ¬Œ4LËÂ65ÔüÑŒ‰ßÅš5ëÙ¼³‚Ý!\}Ãñ”$Çï…ÍïÌ!íÂK˜Ü-ß›‘ƒ4V.YGeµçý™SKÂÛ¶°­9æ¡QU¾ÍòZ”¾9ÿÊ)dúÂxÒ»QœVHËÉ£ ÛƒöSØœÔhNÀH¤W¿n${•Î1akø­4ÊÅkÇP8¤•ó?fCm3rÿÜy~ ºaa•nc‡?ƒáÓÇR’“FÅì÷ø¢Æ$û°Éœ}áÑ”ää‘H˜íK°¦¬…îSÏá”3&ÒÃWÊæM~’‘ž’CÏ¢î ; ÿêå¬ß¾ºngp׌ÃñÚ:;="#¢å I™ ”ƒ«Ë8RI’Y³v#©ôêYHssKgœÑ6 .Òs»‘Ÿ¦‰mzPÜå„cK=m)[–³ró&¶×esÚ`lŠDÐH¡ß nÄ ƒ€Î A¹x투<´=Kz°gîGll6H=ìn:£'z0DpÛNªD.#Oš@QŒÂÎy³ù²Z¦äØ9íäᤄCè–Mbb¥;v“––BZZÊÏJ¡Hµ >ÑÞ¿Àª Yq‘u _ÇåRùò«uƒ!?lÕÕÕ?cûlÌå%ÎëA•#ƒËù é&¶ä&.Þ‹*ÉHvŸ_ÖÝÄÅ@( w|úuP½Ä»ZØ4÷9nŸÕƒ'ß:Ÿô¶ º&6@qáñÆàuÉ‘o„5T7^¯ŒÖÀ‹Ç¥ c¡„-•ØX-¨a}½níeñëØRtÆé‰%FÖñ‡LTo±žÈŸ6º¦cÚ ÈaMàö¸lƒ°!áõªÓ@׿^† ši…óè/pù%¿eçÎ]¢„¬ºñºmB!Id\..%2rÇÄàuI!!‰ÈL EŠ”Á°’‹˜8/nUA²,, B Ë–pÇ% >B†ÕK¢jÒŽÌ*O<ñ^¹Ã e!>¼(„Â0@q“àE±ÂÚtpyˆ‰÷¢""1Ê`Sȸ¼^¼^7 `ê!B!%&–„&ª*"Ö‘Pˆ‹Á¥ÈHV@Ã’ºÈˆ.ã4è×RçЉ‰ÁåöòÜ ¯Ó¯o/Ž›2‘]»w£(JG¶™Ç£" M³:Ü«®˜8\B#¬Ù¸âbñ¨_—Z@Ç:¬ è xˆ‹÷¢ËášÈª‡˜’"è7Àãí#Z˜PXÇF¶m ødÎBz÷êAï^=~ »ñòÍkŒ0~#|€/ë‘NÖKÃï?Àg3„O‡Äî#8qjFM͆Õ)x-ƒpÀ`¿§z¨Ó ª|hû|A'àÿ†Êt}~T`a?í[àé!_ç½€î|ñáv³î€eøÚzÞœaÛv§RF`aF— †nu”í€m±OÛ„ü¡xèµ@—ÝœŒ­]öü3Ã>Zpc³Ãjµ±ôþýFÀ?ý+¥Ë½ήÀ×µSÈ*+DKc“nšLa»ë °4?­ût ‹@K—qdjZ´¯wÆŽ¾qÀ~Ù5,%t‚•»Ëxh_ŽÕåÙ`†ñï×alŒp#Ü÷Oƒ~ôè%MïünÐ÷õM'Pÿ¾uèÈdŒ¶q4‚úµ5V&Zxÿú¡Î1®ù¿E^|£¬ ãûZ-3Œ¿9Ü%“âÀcĶíŽ÷ü«ˆÈ²Œ×㉬—eÜ.5²*U>{*É1¤åô›pÈ@ì·Ñá/I·»sÏ·ÛY!.ý2ެWd~ÅÖI²„]aþÍXGsóíÇ!Œ AÝvÎÙùžé<Š¢àr¹"¡tIÆír:Ùô#–ÛåV‘%—KÅãqÿÏ[ á°Öázþ^ D–eêêظi;55u˜¦…ÏçÃï8Û¹ÿÀN´cW%¡PdÆòáÇóiii†_ˆº”e™ÚÚ†_å –Bv—í% ÿH›:|ÓRUEu!„ ²ªš?]HkkëÿüvîÛwTPUUC0bç®=ÿÓýÄåR™tÔ8TE! }¿ˆªªlØ´•µë63vÌᘆ‰eÛÈRdï%oL îè ÀáûaÛ6nWÄ Ñ ã|Öôý]8Bz÷êñ«3D‚Á0{«:3êm?‹ 9Û²#'þ Æ‘°mU‰{,þ÷¦’„ßïG–%>š=Ÿ¯»—K¥µµõ¿ˆÈÍÉb`ÿ’ý~µdÉb–,Y ZE"Íí½Ó4£ñž_KLj¸U"A\gZåð³ë¾‘$(Ýàæ[n`ÁÂÏ÷ñ$üWAôö oûb·åË—óñGÈÉ- {a1ªª:ƒÆÁÁÁág<é³,ò²ÜvÛ­xÜOÊ>†ôÛLQ’X¶l<òÝ ‹wô ¤eåŸðËrÁ8888üa“UXB[mÏ=ó.·Û¾èÇQ e»w“ÓãO9ÙaZ´‚NË;888üìÙMfQ_®¹þÏÜñ׿àñx~²hÑ"–,Yʨ SPcÑt œŒ,‡_ŽB0¤ŸšËôOáºë®ãÞ{ïýá ¤²²’äÔtúôˆašÎáô¿D+D(Ìô“Nç¿;¯ó ¨ª™²³³ÉÈÌ`omcä8S‡_¢!B\|.Wç¢ç‘e9ræ2NÖ®ƒƒƒÃ/Ù ùúé¢êwsɉ}8888üRÈVeü( ¤]y8 ÄÁÁÁáÇA–åŸP¦î¿áç~r^>D $rsG8888ürCÓÙVº‡ÚÚÆC¾7Vd+|Å=óÉÈLGú†Xö®ªÎërpppøßAQdÖlÜAnV ƒõ<䋲eYÂï ²aãNÕEFfê˜àP)Ç…åàààðc t™`0DZzèQÇÖ”¤XdYÆ4­o”å‡Ô9hòµ#EÈß¿„ݶ$$ö?PæûÖí;¿=[ý{ÿÎÁÁá§•QY*K2ö×äj»¤h—¢‘³O¤}ÖjRT(t±%¤È)ŒtÄEôTJY’»?©98 DÁå-åÝ[žfE[K’¶ÅàóâŒßÃD“\V ëæ}À²½9L>ÿ¤ÿÏÞy‡IQ¤üS&m˜Íì.KÎ9JVTÌâ9c–ÓÃìϬçaVŒgÆP0‚‚¢’%)9,ËæÔ©~Ìì²=žžÀÕçyæÙ™Þîéê·§ë[ï[õVÑÖŒãìáõŸ”rñÔ ?+&\ÊÔÌ1\2¬º–¼™Î¢¹eY?î=¥ –ãýæ»§ðåæb=c$mv±…Ž/´écß ¶÷Qد ™ZýÊŽ:¦¯~“Œ‹.ã ?j3…âdQ_¯n¯¾·× O¬f²àëoB`úLúï?„.Ýz2óý÷X¾d)š¦‘3dØP:vé†mÛh"© R ´TÛQ ™:×ê$ çÚ9 ½ô6†·¡ ‰ô\þ}DŽÞ„®‡ŸO7@z \ļԂŽ?m-So›H|è‰Ô»9é"YK)éÚ}?^øº )š%í'%ß/žOßý.@JëߨÔÃÑ é~äùôøI[ìØªš@ÓDÊæÿ—ñ¡‚ Åâ@ÊÑv‰34.K¾›Ïž ¦¦–sοšò²m¸ñoMz€¯¾úŽ^}—n½zãºÎõqR¨Hy<üqH½ ôs¢ ’-\ÏK®_œt¦Ð„‡c¹Ç!Ð †ðpaøÑEr•cÏuq¥@—×è¦nr O 4ÝÀÐÁµm\O"‘h†S $NÂAè×u‘4×ü©2®í …À0|hž…å&§­× ¦–ZkÙu°‰†¦˜¦†ç8HOâ¥Ö:º‰ièx¶›tÇvþFha ÍÌgé ½é¥ ð°dáúòÀH'Žã%ýQM7ñ"i'õBC—×Ý4Ð<Ûqð¤MÇ4 tT¢§‡gÛØØH݇ÏH¹­©‡&.vÂÁ„Ð1ýBJ\Ë‘É{­›õ÷C¡PüÖ$ëÑdcOh“ÂÌZCe®i:½ú÷ç¤SGóêË’™™ÁÝÅÍ·ŒeÜ£w5ˆÇ?îšcNø®ë¢ m'%xžhy%D²™Šmí" â7Ôš šö <-© v"J,&Ñ…?@g¯]ý69Gµàóß¡>Jޏ– z•1ý™—±¹Ÿ;ظUk™÷ñ4f‹n\¸™oæ s±)o2gÞr6‰\Ú|4G÷Ž1ýÙ7˜³j¶[GÉÁWqò°î”ä/ãõ¿O¿_s¿^ŠUWMÚÐk¹æè6˜Ú"^»f2¹gíÇòWß§Üï§ûñ7ÓsÝ}<õé6üyt:ê Î’ƒ]·‰¥Ÿ½Åkï.$*répÀ±vÖ¿ôË×–³Åˆ±îû•˜]Oæ¼Ó;Súâ$¾Ú´†Èÿä“Å'rã©CÈÏðáI‰,èIïVY²Ô£wogÁ·,p çHˆ;1æ¿z–øÐiäí7ŠOjɺ…3™òä,êZåÈï@Öq~üJcÀ_΢`åë¼9ù-—B¬` gœðg†ö4º‰^·€7ǽÂÚõk1ú_Ì%Çö¥0”úYhBwý‡<öè ¶ 0´žœx÷Yt¬]Êäâ«Z?¡ìb8ãVF´ˆb¹êaW(~sD×*j]¼úQX¢q+Ùwºÿ°a!8ý¬¿òìÓc ‡3÷è]ضÅwß-á÷?ÍÈ“Ž§CçÎX +)J;ȇ@Ó¶‡Íêër¹Ù¨ü†!,íß„‘’jjøª™óÂ]ÌÑÀs{rÚ=gÒEÓÐ}•̟ɸÇ. bγÜòÚ ÖtèÎÓó uëAeu%UQ‹‡"ãû‰h†.4 ­šªô®†ãkÝ IDAT}ÖØzïÜ;ž²Âc¸|ô0ÚksyêÎ×ø´0‡‘C||ÛøhÛAÜuç_ÈY÷ cþ9“ÅG´¡·¦¡›å|ùu7>þæœ'¹úÙ¿;{,Ïžä²bÆKŒ›ù)k†‰øê æÌ ñ统¡Wä+>^´‰o6¥E°ŽEÕaŽ8÷rî8o>c˜Å7˺rü5ç»n<±á§qhŸb|®EC£Â˧kŸ6|Yº©5géÂ…ì7ø/xÒF÷§ÓÿœÇ葈RS:‡©O~È—‡_JkÝ fÐöˆ+8£w”ySÞeµ'AN—œÞ‰ÙÏLfíò5léR„ßÜÆ‡³38ýÊ›¹"{Oü}Ÿ¯éÀ±Ù¢áþéÚB^;®×ÜÃÐ|{ñË<þþÚÎå»ö—òàÙýÐq±­¶'Ô ­ Åï! õ=àBKFR"‘Û³ÁE2Œ%€ƒ‡­«ãÒ171öÞ°m›µk7rßCÏpÈ#hß©#®c§ÄCìâUHIÊ3Ñþ}¶øDÒ8nöoÌ"ÀµrvÙ5Œh•†!\츋@%~pgbVÙ¾]å,¶F‚µhK§é‹Xä´"#RN­v0ÃZÄY½$u> ³m\·€ú!<›x»®ôöM ¢DQ² Gœ9œŒxŒHûîô ÔÒ¦cQ¯_›6´ÿä*¶ºäÄ«X»é[~¼g“7¿'G´‰ã:aztiC˦éÔd4¥M®Fiu”hÄ@J×µ°_c[IÜîýñ?6Ÿ-#t6—µ¦¸IªÃݪaÓgÏóÏékH:ÁœNôÑü„3KhÝ2x¢&¹¯ÍÐ`Ó7Lyw ³VU£Ç}tjíC×$N"›ý=ˆ–Ù>~ éý³#nÒ}MúÃhååTøªùá©™íFÌ~|EÍh:yOÎÈâä^YhÁ0AÃS·ŠßC@êù$MCÃCÊTÕ/¶ÂH¢±3¦N¥ª¬”±÷^Oee5µµu””rõåçñУ/àØ6} D—4,5.+BãYüÿ¦¥úú@øE¢¥Æ•yŽƒãØÉ‹ÐB&û \'Óx4 3ÜŽ.ƒ¾fæÄ% ð¯Bô9ˆL;FýÉê5µa’/ÃÄ ËC “(uuF–Ž®»€Äu¼dy¥‡‹@õSH\ÛMVÈÒÕÒ£¡sÛC éé¥SÒñXFÞp2í\×óÚFf/pñÜä1ZJ\Zr¤  ]ÓЄ×hà€ÄËéI¿ôøfŽÍŠÐ.ÊløºyvF 7‘©›Û¨lB&þÄJf|°«Õ™|)™9õ=jÊ·rÛ-—SVVΊ•«yõõ©\{Õùåsñ§ðÔ³0L“þƒcY֮ބØÞ½ðÿÍéûBX¿Ô‘ -jJ׳Á #1ÂÅ4ÉH×Kµ¤“û%?ƒ ‘[ÒŠÈŒÏYÙ³/#ze`YÑT*ScS•©”ÈÌBZ6‹1wå¬(ÓBÌcöíé>$‡´`)ÒõRêöóH!’ó¼¸^C_@"½íe‚Ô¾¾4²šfb~ú-ÓßiƒÞÑOŒ4ò täöẂäñH H0àQQ±õeaÚæ…04±½àåе&¯ÿkmGÝGŽ®w°‹‚T/YHùÊoXQ¡Q¢%ÅVzr{Ù¤—ì‹JxÈ „Sɦï¾dÁªMD;õI͘\Íš+XÓ<Ç›Ã⪾ iŸŽßW–´5@~K:Ná½×æP°^2>Ê¥ÐaUE£óiŸ˜ÊŠXšHCO=í Åoí¤ú:4-¾Òd2™#ÙŽ)‘I¾_½j%—ÿõl-ZF]$Ê˯MeðûsÿCÏqÞ¨ãñ<ƒÀ‚ïW1xèPÇ©WŸ†zYBªa›lŽÿ¤€ˆßÓÑþÝP2‚6Y|=ã%VJÀsÉ~ I'¿U ™F²%¬ä·lJº&‘zˆŒüvto»ŠŠ6])±mâ3óÈ/ôãGGæ4!Ï ã×\ìx?…Ú×ßdæËqr<ê|zçâsªÈi^‚4RÞPy-›‘åÒÈkUB¦™ìTÖLò[4%CÐ0Yä7kBÐ PÔ~Gkñú¤ñħ`çtᣤE“Br#aüšDz>2 ‹qÃ~„ÛŠî”°bÆ$^.µ¹âÏÈK7ñ\Gì.ЯCºäà t×C8bîC¼úÌÒŠºÒ»O!!0ƒ9ä7…4M"S¶ÈË t O×”¾;‘ÇW´§}¸˜V%ièžAzq_úÈ|úηTUDèzâtÉLÇð‚ä¶(!Ý/nGF^yÛx›çWI:ž'3¦Å7<=q1>#DNÓaœrf6vmBÍ< Pü^R? Ñhä”hÔhKö“ 1‚ÇŸ™„ŸßÇȧ}§N¸ŽË“Ͼ®ëdådsÀða8©Eÿ’ù„b7‰Çâx ;õ¡”n«•ñ]¿ÊРIš·Cކa,Z¼Œ-¥eŒ<æ0^yeHı]‰DÇŸæK×ø™24ÍÀ è©Ï:ºéÃï3’×!¬„§ÛËái˜Aµ±ma†ð›:š— –p‰G½ßj 8©ó'H:f ˆ©%óe ^"ާù0}7Ç‘ºéÃÐ%NÜB~|~]º¸<Ƕ%FÀ‡†H®Ý"®%áxH™´‰LÙ$Y_CB¡tÄ\ƒßH†Û<›DÌBù ÅïƒÏgòþ{Ÿ±ÿ hþ®ÛH4vªöMÓ‡a !-ǶqŸÏ‡nèÉgؓض…ëº;È€¬‡IIVFYŸCQIš5/jtÎíH YNgŸqoLšD$ùû@þížv,нËñ.VÔe{r‹‹kôYºXñXƒ:xŽå¤ÛÂjPÐÔy±Ï#;ßá³§Žûù2Hé`Å@C‰ç$ˆ9‰.¯Q94‰“Hý_hH'NÜÙ±•±ãÝqˆGvHðÁÃŽGv²—ÏÆŠ“*KR$’¶àZ$¢Ö.††²ìÒâØn“d8¬¾q‰F;ÙR¡Pü^ˆ¦i8®G†i Ѩ oôP ‰é:©gLCÃÔS=°©¤Aø R‚òSux²DK½~ٙ߮5¬S¡P(þS¤”°aC)y±Äï>¯‚h4†i𤥅vßÀý=D€šC¡P(~›òß®>šÏ-É÷oÜÍ!ÅÕ$Üúý·ÛAÑpÞä÷“V6ž?ó0 ªãIa:ÚÚ§8ì°'X§kˆFeÚ~îí6løÞú÷ì.´_P…B±Wcì-Õ4ߟ*®” 4tÓć°£T•m¡*怑FvN6™A—ª­ÔÆ,‚A·Ž-*°ÐÐ0MÓ!ZKe…ð"X"DFFvU)q3LvN.iºE]u%•U1ažCvš ¶Æ·–º¨ -/‡Œ€êT(”€ü†8îŽÁ!ÀDÿÉà‘nhTÌy•;¯» ‹j±‚ûsóSwpI—uÜáíLøn55‘<Ž}hᬳ¦dí{<òÂW”;m8îž±Ü7*ÆÝWÎÁ¶ßäã9m8÷•û5 9!ª`Ý«eø“žÙ†­ÄÉaㇷr쩯Qš -m$÷/¸™n³àÏ—}KÛœÏøÆêÁá§œƒõ¯K˜ž?’ëÀÅÅ_3ñïw1vâ*¬,]r/÷]àñ¿Ï!}‹O¿jÅÙ/ÝϹƒZ²]lÏ%$ ÅïŠC¿ù£¶G ˆåxTÅì ¨ ‚~ó'Ü“@l>o½´«Åm|÷Å„Þ~›µ-¾à¶³¾#íØë˜ô¯þ4Ûú:§\4‘¹íŠñ­}š­£—°îùBD$‚%%HZ_Äí—ý'Ç8~¤KÕ'3ÿoW2ÌÌ¡öúi,=³7²†éS^áÁ—æq“±Œ<Κð>ÊžË÷NfC(A¨ç©üãùa\ñÈXþ Oü–ï~ÈÆ[ò#-n™ÆÓ'vÂx÷tН~–3Ÿ-À&3¸âȹ¿èc†k`¯z†Ï}a¯¹ÿù¾¼Rú4G,æ>ñ(ë-A<ìD6=9“«žL§ËÚÁ<~gWÞ¹îžÝ´?“ª?eÈÊû9ôÞ÷yç“®„¶Nbåþ2ý•ÃiF-QÛEjh>‚ë^ãò^AkðÄ"T¶½/6kN™ÄÉßTsk÷*f?xÇ\ò!ŸŸª“c¶eÌôI˜â¤·×1uî*~d,¯O}’°·Ž…óôòçèR:oËû3šâm}“²~ðþ«GÑ"UTÇv3¸@¡Pü¦˜º 4ÑÅo+"{Œ€X®GM¡]IA2D•t0ð\h,’ F}ƒU I'£9½‡nã£KŸãŽ«]N;eýÒÁ—=žWîÆ+ã|H@“GÓÄ»]Ï9hXÑB62¥› ß‘Wòå“oS}Ü0>ý¤Ž±õ§vë|>?Wß5“º° &šÐ÷°^¬ïÜ›®tã€"w«Ô4táP³l _s?¯¹/e£yuîDM׃8²…‰³Èì{CÖ~Ä;Oˆ5Ù˜õ-c:œz€"/ïdâíú2¼ÍËÜvèXOD—#Ρ¥ÇM¾\;A<#aE¨‰þÈZ£=˜.!Zô ÿ†å”-_Îêöpü-ÈÒêˆ&¼í? 7N¤ýå¼ÿîzgú“ÛÖ<Âà“"xk7±ù€;y¤g„ºšÅ݆ÓýæøôânäöîFìZµìͰ¾Ýi›“`UN7ĉdüÀ‡þ‹÷=R"At=¦€ÚÖçrÜÐVä4*ƒô$-›ä ij0 Bñ;ºÔEã”UÕò¡‰ß®r­Õ1º´*¦²²r§Îb0}šc#*«ˆ?-nQ—¨¡Ö Òé¸[™vzœy_Ëù}cÿ{ަ"<˜kŸ‰ n¿ý"×=ÃóÖâ¶—ìFÙ© î€QÜû+™°ÚáóÈé<”¿ “ŸãÚ±>ÆUoæ ¶2ëùû¸¦ Òŵ-lRÅšPbÜ8²n×3ç£hRù&çŒ^ˆi»àzHÝÄðá–o¢47“l=9"KýøŠŽç•y38ÔÌ£nËzÚ}·Œ»ÜwÝúÏܘy O®|„cuX .Aúüø j¶l¡ÆÓÉŽVSÔ)Itã$lO²K0P¸1j«ª¨"€@G«Žâ"-@ t««ûbÄkJ©*. ßópÇ“à:ØŽƒãçy¸:ØÁöüéšó¹å–Ãן¤ò]þ2cñÊ „ ¦¶V=à Å’` @nV&[Ë«háÉ߯ÙcdçÑ:ñ¤ ÀŒÐ®j6Ï=ßÙ.uk¿å« è6Âãë—`îºfzøœsyѺ3þ5ã™ñâsØåh‘‘ ‘ÖaÍc$l—Ÿ²pòt| ½ø ®¿‹‚„ ’ß‘Ž}—²nÚÞ*ûϧÍfã°Tåé¦î‡k[$4íÛYý=ŸL3,Ĭՙ ÖZ#jW3ïã‘[Š©œñ9öE—0(})2Åm6˜cB÷pûMûsþ ‰ÀÈnCð®úg˜Qg´à°§þFîÛ+q¶JȬwÃ$žëàØ6ŽQB·æŸMœÈÓÏæÐmí;,éЙ#ök¦¹Ë±w&ò°lwÇ!»ÒŲ$4ëÇó^Æþó0ªºW²`òb2¯½¾ÑŒ³“GxžƒíxÉrØñ`1Ýšmà»§ŸážÇ<×5[пE5–çáí¦ B¨1Y ÅKH´ßøqÛ+FayŽGóÞÍuó~\}Ùµ¼4p3»ó§ ÿÆUG5á˧¿aí»÷rÙ;.%G\ÁMûÊà㺣]~/?8¨p‰6;â››ÓoP˜l¿±û¡¤BÒäÀ‹h3aK¬Æ&§ÃQœÞó)n¼úKr›æÓaÈÉœÊ$¿Ø¦{çtÇÁÑÂ4oÛ’Ìü¡\4GîÇm“¡Ýð¡ ° 3¨n7ɯ=Á‡^‚x»Ñ¼zÓþ¤Eã TGÐêÍï?ËêcoáîO%@ïKyæ®~t]q7ܤÊmΑ7¾ÈQ¹Qª „ÄÓÒ(hÑŽn¡\\;ÌÀ³¯¥Ê~ˆûÍ$9 ï9š{W³ª«CIn±Cîáúš1``˜,CK ’jÅà!’tp唇¹ø¸¹õƒt ZœÇ³ç÷Àþìúõi‚îšd·£w·„¤°UÚ×´eð©ûãUÜǽ_Ëû&ÄóåºËö£sߎ4Û¥ …b¯ŽŽ•n«•ñ]jCƒ&iŸwÃ0X´x[JËyÌaŒ?ž²m•œ:êbÊk£;TÊž„üįË_Ôi³±2Bç–ÅTUUýD«TC÷IoÈ’“¸‰(uQ3-/q-¢Ñ Ï -# _CxÝ&ñ!I$C0»C™®­Šâ@høÓ2¤¾^:Ž”8˜†K4bá ƒ@ЇæY$<i!_2·ÃóØÄâ3ÀÊRÅ~2ÓÑÚ8®ð“™ØnC/Nm$”lù8±ê²Á[“høü~|šC4š*G(DÀLöÙñÑ„ ”fâ$XŽ·CÜKj2Ó±ºN½[¦ÈL‡ºš8ž œžêÁ¢®*†ôHó{ÔÕÚèþ~Ã!q1~LÍ&õð¥¥4ë ïÙè¦À±,,[¥(*ÿmÏ#à÷“ð ¼²šüÌŸaiÊ¢;çhK 03ÀY§Ï›o¼A$Ù{ò@ÀÃMD¨Nì¢+ر:ªc;ovˆÕV³ÓfþmÈÝSSÍvËID]5‰ÝìjYÉØ›À%«?SŒÚ Øvb7O‚Úšúó$¨©ÞuŸºjk·¡>Heã'bØ4*G´v—²F#ÎîÚ/±«=¼855ÛmQ]o|Øqjíä{ÇŠáXÉ÷ÛËV´vÇ>š¤þ(Š} 5üE¡P(J@ …B¡D¡P(J@ …B¡D¡P( % …B¡øO0ö¦Âjš†ÏgªÙ[ …"…D’Hü1ãä÷¢õ@4¶m«àó/¿Æó$j …B¡€Œôt¾?®ë*ù)„T×ÖR^QÅ‘#†‘°TfÚr ’Ù­ …â××gÿ¦\‰<‹dî®ÜÏQ¬m;¼3õC;äþýØ»BXHÈÉ΢}»Öêøâ8†a(C(¿¶*“)%‰x˶1M]×húh~üñGÆŒC<ß#=‘½6̲¼F•OÀoÒ%:‹9«[ò}¼;ÝóÖ†ää’aìØ vmGj˜xRÃÐÁ.¹€iÓ@KØX†‰Oß~Œ´l¶‹'¡>ÙÓ´„ƒíx8ŽC0]Ðôd*ëº8Ž·O…j„$ ËÆu=lg{ê«ÏoÒ<¶Eë×òUä@†ð5­6Ðzµ¢È—ò“Iì8 Ïó°,p,OBÇg‚m¹H¡ãói ©UŽeã*½Qì庎m»»¸éRJt]'33“c=–òòr†Nqq1ãÆãÒK/E×uñí¾%”™™Éu×]GQQ§žz*C† ¡[·n 4ˆY³f)ä·swt]rŠ›³5²²êË¿}— >Št‚#îgÞ÷ƒé#øÙÕ„ÇÏ`ÌùÙh¾=§‚êÓ1~|˜{©›t¿f.ÑkZ¢’•“obÄØéÌE¯ sÆɤйçλ¹ñö0§tâG^¿}6kÑ|-?¢mÅt®ýÛl>x¿9gŽìŒ/áì3žˆ@âÉäÏgû‡sóIèJ·”³yË,bUYägŒNWðö¼+’öŸw7_šÍŠ–1t .Žã&¿SJ¤Lynò=þÒe9·º.‡$¢TÌ”“Îx‚¡Ó/¢IÜRý&нZ<~*„USSÃ7Þø“Ƀ{’÷±Oy غôcÄšZ¬¥Ó™¹ú útnKQ!˜USÝ«%Y†@ KͬE¬¶c$öû—áG×Ý,ϦîÛ»èôÈjB·ó'Z·žÕ™yä <œ!Y`6§w›^4Yø|&fe-u‰Ïyäáh'"÷Pî}ú=VEbD…ÆÿDÿºë"[u¢ŸNÁ¬w™¶¥­›ô£C+Ðê>玣{‘gÄ€ëY>õ[6[‰ŸÌ°ðÃJɧ8J×ñ‡2(t+K¾_Ïz@WubDçyضeY;ü­ý3îþo66pxˆPÍ›L-(ÉkOqÍÛœÖ÷>²þ>“žDnz†ƒ›„1¼äP¡Rb-}€C>åòÍéÔ±æý«h]ÑOéáI©khð,êƒýàÔJ‰çJw.÷žØ“ð>ÖZ?9¯‹-›Óy@ ͲÞåí2f³>´N|Ê5GÝͦƒ`‰'‘9¥g3ü¶»Ý+óRv€ç%í%Æ€±¬ו8nŒÒµ·Ñ'na«ºF±W{ñ ~È^-{¯€4„<¶¿lº íG,û IDATÈôçÞ¦2"Ék™–‡Ñ÷ú7¸‹•ï¼ÉÑ(Ö.ß‘}ª§‘yÀQôO¯¦tþš:™†‰.=\+J•`˲åÌݶyÜPzGcÄs›ÒJ,`Ù”W™²8AMeeåÕD-g—2îõ¯TøpwöwlhÛ³9«¾úŽù_ÿ@óÞÅwк¡W»,ü —uÓ¦2»l+uBCH‰g-\ÆÒŠJªëêXòî|å¹ÈÖè9ÿZîšXCUÅ6¶mÛFyu ¹ïÙT½þ·^ ÏJ@ö(Ùº;‡wº’ ´£ ×ÃÉû×<›ÛïBa†Ÿ3¾Ì§_F!=@Ff½>Š¢ÈÌ âkw!cÚ]K÷pm{ 䉨pŽÈòcz5¬ëB:¦…(:äzæç]ÆËu%â 4§9Ç\u7Çu_ÅåÝä5) ¨×y<={®ßØCX?Ñvrܦ­éßó¯\Ò³?­ Á çüá›xûúþ Žy³šiMÉ3ý¤…4ì¢ xú¸ã€®4ÏËæ’zpHFMƒ‹å‡Ór(,iJóVíé}Á›T|*ûU¡ØS¼©Òmµ²"¾ku`hÐ$Í£ñ0}Ã0X´x[JËyÌaŒ?ž²m•œ:êbÊk£;T”ž„üįÿ2Gmce„Î-‹©ªªÚm’®ë¬úa ó}ÏÙ§Ÿ@·ðô!ßN÷'jái>BF}HÒ!u*iS±÷Nðù êjëRá`—X,N @×õ]fäÝyZ÷úíñxœìœîûW\z.¶íüÄ9%¿Ÿ„å•Õäg†ð~&EPÕH¸;V](Ì pÖéÇóæo‰DöæQX©¢Ü5oEwìhr­u»If‹Fv؉H곋í6Î^·›ûc[‰†}íøîÛW†`%WG©>Ýô!¥.ÖŽ'vØâÙ1"»1ŒSoO/FÝî ç&îɾhOÅÿ¦€4®¶ãK4]§]»vÛÅóö¸…B¡ø9LÓl4âŠFaÉé«…ØþÚÃÆûDˆm'C*ªC]¡Pì-¤§§ïõ×°Ït¢7¨´B¡PìáüËB+Q(Z&¡ Hf ÿ¿ŽÓ0Ì¡€k[$ 0Lt\;§Ò* % ?£ëHÍ$`ÉQ ‰Sk ‚>HÄ-O"…IZº7%áJ4_ˆô€Qß4À‰Gˆº¡€$±‘B ™>~ +Åö4 Ÿ‰a ¤£á ˜h¸X )LLÍ!O4œ+Ðq, G-§÷" cÔÍgü$‹Gö G×~ñq>·†5ó&ðääEw‘Gˆµâ+¶PBÿ~%gýýÝIý.„K"®¦\Q(Ù«Ä_&Y±Å¼úâÛ|¾¤ «Ç‰\׫šW¾Ëàˆ#{Ò2+HÈ^Æ‹7|LÁ™gp@«|œoÆqÅëËq¡ûè|ü•œ”¿ˆgf§ó§“º“fÇ(_6‹iV3à‚?Ñ!XÍúóùaá6hYÅÜw¿£R4¥÷Оä:ËYVÝ–C?öÙ]ÎäwÊhµ_WÚg ©5Àw+fÍlz švGv#[ÿ%k¨4â|ù,&ýó¾eÒdc9òË¿f‰u ½÷o‰ùß¡a8ÛX2{!Ë«šqøQö©…ÄŠÝ7™ö™:ÈØü9ÏÞúãg­&ê7ñ¬™:•…•u|ÿÞ­¼½p+q=Òé×ñÀ«±¼ñùsé½Ó)M¤WÊÌWf°9± ×Ne}ȈW°bê=Œ}j"_lõ•¬øjßYŽ4+øî“™¼÷ùFt}3_̜ʸ;áï¿§RK#˜Xʤ—g²hC5ž¾ï..%%˜¦F(-´ô0áp˜Œ]H$´ Âá0áp:~#9•»&¡ÌLÂA|á,²2ÉÅ¢4?éápjÿ F*ƒÑÔG&!?&Q6­\ÌüÍCyö·xúŽ1ÐÔA~~Ðð…ÒŽ ùu„0†˜ºH?„O ¾´ ¦Í—–:&Y^Ÿè~ÒÓýøCa™ALÝGZz€@(¹_fz¦.0}B!?>ŸïØ"õ]šrUÊùc/Äï燙0cM€£ÿv3£â6}:“­ûq×pá 9¡k-ÏÞ¼|„CÛoà•ýaõáOñÎMƒÉà¹|5e!Fnm}7«ªMÚÔIª×ÛìZßÿ¼:Ÿ„Cäˆýe§Çèh©GJîýr #{|Ãgó¿¦MÇ.—ë#òcèûöÊ„>ŸÆ· +Y>ç_Ô”ÏâÓ%:=:›“>œŽ™+™üÈs¼;gÞ.¸ã4ú5/ G.æÉ«žä‹-uÈÈ÷,ˆ‰'|¤Û_qïÙO²ØøÒâ†'£ *ÆÆoæ¦W¢¥åÒê Ó8·ß:Æßþ2ŸmÍæÊs /£3‡h›!á#CßÊìçŸãÕ÷æSN_ðNîå•×7Ð~ÿþô)ZÇSW,¡ë_GгXðåÃo8s$EŸßÍ_^[ŽëI„¯ÞýWºÔÌdìdƒN¡™¼h8g_ÑŒo&×Rd¼Âë³MšvéÏiçŽ"CHDb#ó>ÛÊÚ…‹¨ÜúŸ/Õéyô9œ|Ô:d®à­‡žcÊW?Õtô‡ò— £S^¡¼S…ò@þLÓãó¹Ù8ˆƒúäáTWS]UEf¿A´KÓ):èN†ÆŸâ¹\Ë×=nãœ>EÛfóƆÁÜpA/|µ,©¡y 9”QL×62óó2<-Amp0‡Úû³o(­ÜB馅”tí ‘±xœD¬úz1‰âµÌ2zrUZ:߯þ‚y•©ÛÜ„¾=5RkÝn¥I‹ÚP.؉kÇ-à«Â,¤Oß÷I‰0ÓhÙ÷Îþë:×ucëuûþ#ÞšëÒúˆóséP —kxê,²… ³r8úÁ˵ 雟`Úì*ŒÒ/y~N.ž}'4óØÚ{=ýÆL仩a¾ýæò¼€î»Œà‚¯ˆf6!pÊ!,ø¨;×\߃{‰+$žÐð%¶ðí'ñÚä54)ïD^lSÞùŽ¢ƒn¡ïϨ‘1~êpð˜žûv nç•,iÑ‘sŒÍ»7£îÑ·ù.áámšÏ׫çR60Hf³î>ê*ŽÉ-céÔ¹d·íÏÈó¯f˜ÿG>xþ úâ{Â|:š/LËý†3ê¯çÓ©® ›¯ý„Øò™<Ú}.—\t…U-ùfábüª§D Gê'™™ÛEÓul˶lÛ¦¦¦69ÊP Èïp4Üêõl)7‰º~2°q¥Ä …Ð, Û‰“×¾/þôMtÎóxÈ’"оyƒE•Ñ"+D›!GsDx¼³„è5ƒÈîÔ¼ëÞçûa~DÑ4 ®¡kOXTÚÏÙŽ9^ÙÎÒ ‰ü=.à¤6·²`uëk²1„Ü·« éâ¦5£°Y>éÒ!‘ZÖeu§oë<‚Ž ù­hµy!e›6³µÙº6'ñd2·²’ê6‡Ñ§8B]DhÚ‘?. ´Í]<úb&_nžÃMƒÇἘ[î.ÀŽ%pì8+JÜrÂ!uuÔf—ÐaxgÚ âƒ|H½zô&´ùiÞ´ñÁœB޾»=½&ŠEñt ¹uq㙳~¿#8¨©†VígÙäZª5£x]ócDª¸F¡¦ée/· N¡'ï±çâ¦5§¨YKòëmJ'gÝ|êkÎ!­r z2Ãö¤’L,|â‰Ç©¬¨   ×õ‡ÃäççSÒ¬555*„õ{°uF .ãÛ×^äùkÐÃa²²²Ø2áf­_K®ã9HÇ•Héâ‡sÁÈå\vý"áœt cÎN‘tq…‰?³½s?âÙ +éÖ·PFˆ‚ÀÞ~ãK*ú÷£™#Ñ‚AB¡Á´4ÒB>„”€GÜÍaè9aOÿ˜yóW5Œ})Véá¹.njÑgÏóp Šh²q s¾ü‘jÄ•s˜Û¹)m»v¤í‚ÏX\j’–$:ÿ3Ù6^³о¸‡ ‹Ã„ÃYT/œÉ¼ýûÑwÍW,hqc®Íi'ôÅžùs¶0wgTOâeg‘Û€/Ð’ƒÏ¹Ñ£GsñèãèW’F›~ýÐgNâ³ôB23à”žÕ|2{-»aÆòöÒŽ\ø÷K=z4Ç·ˆ°Qhhp-Ô¼éÙ4,8)½íù+„LÎcTo 鏨-[Ò¶t¥?Vá"'ÿ>Þ7¦øå+W¬dëÖ­$ \×M-™\…ªñÜÊùqâQZŒ¼€ë+ïáöÛŽbüu~2e‚5Y‡ð̃û“&@x êjãÉJ‰k…tÛ3Ü4ö:èy!$2^ŠqÔšºàù²iѳœÛõm\¼:?ŽeôO_øO‚‰åLÿ×ÜqÃˬÒ?Á°‡²M—ä[.ÒcgÌÙÇMã¡1ª­}®.+áÙI‡x¤†Êx;F]÷gîºúNïp=±i |ä:¶ïÁ­W}ƈч1Îu騻½2Šå?ˆÛÁ¹ÇôdbÄ77çºOŽ%ÙÈÄC»ðHç,üét>ñ&†û£,LÄ©‹ÚHáa'âÄ¢ˆÛT:Ý9ï¼ãØ|õãÓêau¹‡sã—qÚàžÄO~žvç5'œ™K«¾qFÞRÀçÛh…§rîÀ9¿ÿL OкGµqORS ^j]FÏŽQ[—@ x8‰8‘XD£HXÄâNÒÒ!©¦B;˜kþRÇè»/¡Ïc’\­Œ¥ñ£8BW«¼+ ‹sùW`:¦é#‘°p\'ÕK®²§õƒì;y ž‹ç/¤ßWrOßcÙ\e'[èß,ÍŽÉ:œûµhšD“p0 ûpú•wÑbiE2” tê‚n¹ÌdÈe/ñN´˜æN”„‘GÇ?ÝÍkýⶉu²hsÐ<2ñ8dPØ"¿ÏÀïÏÂLXØR'ûˆ«y³cœü¦¹hŽ·Ï†+ ‡CëÄà„ƒ¯.B¯g]Ö‘–O“¢\þîŒ,­$! é2 =ÙN€à)W3®ãÔDmÂ%͸ê­µ\Â§ÜÆ#Í–Pîn¶¤o«,´è±Üñzk6!0üiuîO¦™ ÓðQÜÑ7„OcðŸÎ¤[B#à—$Ü0y-|œwG+\S†¥ë+¤S³ñxNz²YKrD«÷E¼ôN—‚ž™ÅI7?E»Õž”„›µÄ÷Ó¼9<ù¸F^ÜÂ!ŠúžÅƒ÷øÉ¨‹aéùô8ôLn ‘†!ÄÝŒ¤-ü=8çò–ˆŒ|š¶cl‹l­“d}ÿû¿Ý”,ÝÀ‡DMú¿M0àõ×^c[ù6Š ç¹dggÓ¤°Ö­ÛíqÓ5íS™èÒµpƒÅtíWB÷zC{.¶ëâIŒ&tí.R®aê'Ö¤7ÝÞ ôÇ“ ™d·èÉ áa;é…éÝ\'-ƒä·îAa; Äu½†PŽë%*ákB.Ïõ~v!û½^¿=IAA:B$íëj™4oÒö¡y÷þ´Ô×vq]›¸¿„Cš#„H®.‰Äq\lQ@¯áÅÉŸt±-iÐåÐt#r]›„g’‘ßœ¬‰ãJr‹š“'$R „ðpmhҮŵ†0“ã¸xqh¶_7p]\ÏÅNoÅžà8.Òµø?öÎ3<ª¢ Àï½Û7ɦ÷FB Ð{/Q‘‚" Ø»Ÿ‚ ¢¢RT¬‘®ô&%H/¡CHïÉ–[¾ª(Ê}Ÿgasw÷ÎÜigΙ™s„jÑ6TÍK¸×Ctå m6‹E3aýMRÉuµ¹œ‚$UðE¢|³VŠt™o&U‘p)ÀyS†,¡\kê¨VœæUˆ\óùRû²äúõ [•qUTWª‚ô« ©è¨ŠŒt!}¹âú»ò²²Kº<—ýé¢"‹ã¥õ¨ªò%«¨Š| Â]JY1A†ðlôÝ»@U|ˆNŒÀW'”—Æ­LiicNDunwH’taoII©fº!2ã’8Â7ïÜFÂèMÿ˜òø*Š,£ÈжëVk ŒWV«…qcÇ’••IDd$¢ ¢(2þþþ„‡GPµZ¢fº˜Ln×ÿ®~"00€ À"££Ý&+UÅêáÍæ¥™°þîÊÐÐÐÐø·h"¥¥eÜßç@EÄ &¬ó–ÒÒ2Í„¥¡¡¡¡qå$dYF§Ó¹7^È ev;N‡óBLô›í:€¶]CCCã¦ÓHÔ š‡û¥Ü”ùÕˆ†††ÆÍ¯£hä†#mçÝ^ ±•¯‰D ˜EÚÑ%Œnƒ¥üšûU‹7L"ÅÛý%×uú–L=UÁ}•Òæ?L„1Š–S\¸œ·m&ýÛV¦ÛÄŸq¹3ÀŽÉ½IŒoËK?¤]Üþk_É£ .æ!á©5”ý˜ÛÚL`g¡Ý½ç§‘èDaË*J¿„SKGSÝ3šÁß—?ëIVÍË Ç—Rpx!Ov ¸ð,w<Ï’4'?½Øžòç¡2c–ž¤ø†MjN0çí™1c»;oÿIþSä«¡K9:’m²Šª¦òHR0ú³§ÉÊܽ™ÈÔÁTžl`FJ~…]ö‹‹T²´†#+Ò+dÏ`ª4¢î¶wYTÈÇØº{#ëO%SC”Ügì;XŸA”Î…ëì^Òœûy«Å;x<8—“ŠŠª®çNÕŽÎîp, §§Ò¢íÏL<¨2¥CEO¦ Zý°Ä4Á󫇙Wˆ*¨ è̸җ2æÅií°IUQÕ³L ]Í‹CžfÉQ­_^ÎÁ’ògßñ1m{Ó*Á ë ¨}iÿm]Ï~É!›moœ††&@þ¨„äEÔš<1ú6¢“\.§‡âþß)SîŸLÂåpàt:ݯk¸Q3AÁñ$Ö-aÙOvìû·’¶sñ))HN':À±cç<*Ñ¢k8é‡6sè8å ÅfDµ)ãßè€9ÀŒ*èÑŸxŸ1ŸÑíÀFÆ_ãÙ#aáµIéÈËïoÑè0O±aùfÊò›ñøˆúî`J„Òýýqt¬jåØîC\<~·ƒWî[C¿á÷Ó¼’ï ©|}µ»ygÅz&j‹w‘]sÏ¡¡¡ ­îÞφi‰ªó0Ÿo=ã¼D >§¦Ó³vžF3“ SíÿñK±Ši÷+Ô÷µaµZ±Z­x¥LáôÕn®È˜¢cI®w;¶çbâs5>NÏzÅØ]"z¶oͪø3`po§JùùàA ‘®Ã1µw Ú½ÎÖ£ÙØe@5`6/`@™Üöó*FVù §*#ÙbHn}?£³ú3a£“ˆ—C¦ê‰©Ij^ºMÜJ¥s%ØÓs)(¿´õÕþlìÕŸÞ­+ã}#Mª’ìv£¡¡¡ ‹þÚñ UQhËòQÉèk?ÃÆ=g)©ü0 Ó ‘%Émâùåy’½ìµÆr@–Ê·ÉI8~zˆÈkÜ_‘ˆ¨‡É6ƒ±¯l¦ÕÃ÷à_jG ˆìbk:”™"ðŒ£yÑ r~>ÄÄö[HjŽŠ:ÕÆCmñ´ŸÌ¹;òF?hÎÿ|“M…¿½EOQ$||ã¨Ýn û¦Má„Ñ‚^QQ].¤+Ì^²(€(ºµ’-c¼¹ïI!ÎW;3£¡¡¡ K(±Ë8\ „tåÓ [yÏÇÒÎ-¨HǯÌS‚"áønÖÙ…¯_wxƒûî ~¥b.Ñ #ïðoÊØÑ)[ðø²ïøvÿ~NŸ*Âîp"+@åáü||+Ïì;ÈÖÜ|JêÝNÓÁ“8÷ÈfšMNéo¬j« žÔhØ–¾uVòá"bpfŽÍ«ÙPpÉw3rÐÏ‚gT~lçµGæž^w“RÕÿ’²“ŸU„ã¼¶ —‘—YtÁä¥J¥äe—oø#­J@<¿`¯õ1 M€üxwÖ&¦}±–ŒÌ,rv¯gW•pÂÂýñ´çsîô Ž>ÅÉ'8~2§CA±çræøqNœ8á~Ì HªXûpÇ&–p`£vÿ'˜þm/‚%8UÍöMëÐ%dKa %¥EeÎ¥™’Åî­2ø…Xòã.Τg’½} »[T'ÞÄÎåÂUêÀ»×—|éx„ö/ÿDfqÅžUUE=½.°2Ñ5Ûâšõ;ÔXšvlCXì~&OœÏáìl²ó60eÔlÏ1S³I${ßx˜•µkS»ªe§OpüX&E ÷9ƒóMv±[{9=•VÁÃXV.¬»'Ò2è1Öÿ‘J]82Α•›KNÆ)ÒËåÎ'5444rÓÕc%Ë^½Ê ñDÖˆ­C Í×'I^É‹÷¶§A­ÚÔ©[‹Õº3候¨Ò¯y ICêÖ­Kݺu©_s3*¸±ÎˆÅ@D¨—y£Mxù"¦sÂU‡ø†Ý©gÁ½nîÛûle¸Ôútµ­åÕ-¨^½ ÑM¿¢Ùã÷Q-,‚¨p_L:Pñæžy¸cvOúy¦‚Z2`ö "Ì«¼ÂÌTjГ¦$@ç@ônÂsϤéÑg¨]™˜Ð6̋ƔÙOÐÐvœ=iaó}o«CZ5¨?‚o‚1€*‰•ðÓ—Çl7R5.›[¡C°„PµZžD~¤-áåGÇðÞœ/™ùÚÝôîKöhMCãšÆõòÉbyÂËÞ„.7…Œì"5×þëŒéEöP¸t-T¯×³{ÏÎedq×·1{öl²²óèÕ9E¥—™+­*&Ýï{ì3y%$V #??¿B¿V:Ž#iÇIݽŸ~÷÷¨¸®‹?¬Nî]y—¥}ÕÄÎÇÆø«­›ßyŽéj_üÝ7Ðи¥Xºt)ÁÁÁ$&&^æ¾]UUòó q:î9..IÂn·ãïçˆ븧Ç=øøúòú„5b .×Õ­f“ ‡9yڬ׌M$ U*â/ïµ*b3Ó÷þ»™7w.%%%ÿ!_X×Ex¨HŽ-¼}{æ˜å…£¢ÈFBªtcì‚×iëq1 SþZvTe+“îèÇ×zÝmGUôøEubÜïÐÁKøuÚWML¸>Å"üÕ/jÂCC£ÂÁZËÍãê%ZˆpÉ ‚èþžN1 ¨ªŠN¼9<ójίèô¦ö¼~†·¯"`Tnì° ¶aü©“Œÿ‡Ò×ÐÐøûðõõ¥¤¤„S§O‚ ²¢€ê¶ÚØËÊÜQ2ݳHDQ ???_?M€üŒpK§¯¡¡q½PU•Ž9BêÎT$YºÌ|þý…@Uñò²£  [EQ°Z­$&&b±XÐëõ¿ ªªV¸&¬ª*ÅÅÅšÑÐÐи9/ $IÂét¢(J…Ÿ_)@n¦zš;w ŽúMëVç?#@þ–PªÖ4ÿpÏU¯ØÆ­þ“Å ¤ IDAT»Ùo’óêïÐ~oFU…œ]ß±ä`Ùu9ÕQçåÈyÇÙ³c=»ÎÉ—¯Ý]¯ÊQeì™»X¼ô¥J)§wþÀêc®ß\'Ôzñõã?cÂ+–³fÝ&¼mIÂQæ (¹69éœÈÊ¡TQÉBÊýõÉXò#Gïá‰v=`þq"sóSèÛÂ΢éË9îRPU Ñméß·6íHÃ5*ÁIFêj–~·–ÃT¦e×ÛiU3¬û|úzÉÔ®‚Ùq˜%Ë HjYHo³»8Kö0w‰“V]ëà/îç‹qsIS@M$vNÿ=|>c%'\ŠûœbÀ/¤ õ°ïû5œVTÉBLýîì\ _5‡ý«W±býò‘q:ãè8°M+•°ñëEl<”N .g·=2€&.œW94‡7æ(?Ao ê½Opw¼€3c _Ï\Åq§\ž AauiÞZfíç›È7ùW„dö‚5ˆ@J¿¬XÁ[P„€ ¨8íÞ4¸§í“-ú|6Kž¥DlDï'Rˆ3ê\‡ùæ­CÔ~âvâET…¢5x 0¬çª](rgñ 6Í_Àшnôkñ‡›¦ dÍ×KØz,» ²¤Ð ï‹Ü{íÛ‘µ‹ï7š¸ý®$,Wùš.{7 ¾[È™†Õ™ÜI&uS.[%ê$q]6¡ª.ŠŽ,àå±!Ôo'‡—MâqßêlëUŸ³­ÀŠÕd@/Ê”—bŽm@ûÛ:Q3X3¼h¤ò KÈL[Íœ 9øV©Fb¬¦3ëøú½ŸñHŽ",Ø Q‘q¹ Ø3WóæÿÞçXÂ)ÚÖ{‡º>@ñ.Þ|é)f;RâŠûÊBêj€W¡c;Žs"æ Þh¥µš«!æ‡E_óÉŠBB„u¶ã—ô0u÷NcöÜêGפNU t+¼}ˆ‡ªV"ÜÛìLòW3îÕBîòaÇ“o2…£üøqSnﵜ×^YLý ðrIÈŠ I5±ózÞ}o+µî­GAGfSH #:çðã7ß0{KÕ›Ç`:´Ÿ ‚k_˜9ùkŽ{í‡>+•IÏxbßÚ>fÔ´yŒùß—œ¶à/ dIÿ³ðÑ«t.ùW_^L½ ±¹$dÙÅPGi6[}ÆâÌ:<ó’‚UGùåtcê– \Gøþ³¯YœÕê†c\8JK‰·  —ó‡‹ñ¨LÖÚÑdÖýŽ «Pºh8ï-íÅŸéEÂÚt&¨ÿrŸ«†{§ƒ¼´å¼:fÅmdš´~Œ„?Zgöí|8ñ+r£Â‰ óųŽW‡çRöö[t­ªw‡ ¨`/güÈø·ýéxWÒÕï])Ž(ÏNm;Œ¬š³€ü¸.$_"@®zôô÷ÄAÐ[ðô4bmD$7Åkú2ûV¡àÜÒ3íß»#a´j‰¯g%.Mxhä*&¬ݻң{/XCü=÷Ó»y¸±g}%ùpõ}.ùAÖÇŒ«3˜gü>ã­­|ÑÞ›ãß&5j(õÒu`°Þú1>žÔ  gV£×cs9¶ý1b´vS1gOr€p¿ó1ož¥ßG;8q “syÏýtnŒ @0âáaFéè$ñò²`Ðïâ“ñùôSçÓÙ}S–.Èé³Ñþ9>¯Ë% –²ãÛw¨qïKÌz·PÀê±oñõ¬U¤w®‡P—ß͘žñÀfFwšÏ–E±ýÔ :$xxÐ8™]OÞFmŸ"¾{è%6ÔŸÌêÿ5à Àô¿›—ÞÝHËG|‰Hy–Ùïu½¢ñeóÈ ùèÖÕå± ,|÷#š ?Wdäà <~-}.ÿíúͬªÕŸ““ºR2ÞÆíëN£kã§–ÐV’uˆXµ+÷ñUÆ †e…œÝ»…ÂÒÝ2‡…{ãñ¤ŽîNeíúƒ”e§’zF ¡í}ôéT“S;¶sð—mœ8sœc9РÏó ¬fD_©O¾3‚V‘&à4sGÝÏä)?ÑxB ÖmðÊ·‡‘ÁXƒÁ¯"Q8ËŠ™ßr<Í“Ñ/ž¦iÇ4ÌœÁø%ç0ê<ˆ¬‘ÂCÛjH n„Ç×/eGaO<=ÌØMºËŽÉ œcå´™,ß}ŒB¥ ޽—d3¢PÀ¯¼Á✜²‹Æ~@ûÜI¼2÷(zZ y©An(X ˆoHûÜwY­,¦Ï¸™ô!‹ÕŸÎbþñ¦¼ûBãòTsÙñÝW|»d¹„ÐzÀzÔ•YµâEÇÖ²íH6µ½@åíÓùz{: ‡¾M÷°_˜õ}>yKù鈂ª·rÇããh¬uùÿŒ8¾°+¡´»ÓNiq‘Û‹¬CÄrî{^îß‹C†0x`?xi1é…v$»fOÞEÞ ó9íÚÁ„Y†ôOÂ!©çoZÞØdœ>ŽS¯×v\‹ÐjÔ÷+bï+]é6tŽ öeNa“£õµ!øüÈ¡¯¾v¡Ô¡A­ÝL:˜¿9„q[—$dGù^§×ð2h†?Á¸Yë(¶˜¸8$%“€åÁÁÎT’NAIª(º/o/Žcì‰À×dFt­æ³½xõ±¦å œ.Œ"vÁ*ö Eߤװ2x<³cW‘-€³¸ §£ 'ò•Sg Â-Ìz®/ý‡ eÈ€¾ô~|›ÎØ¡V'zå~Ê#ýÐ÷½Z´Oæìüì¨ñ÷G_ÑYÕXêßyŽ×»=H—Ÿc÷§i?¤+I:¾[|(æðò/˜úÞNZ ç$K>œÅôï–òýçÓ™½h/E^aD–nãÝ?fÑþ œ:‰Ò‚òà_tŸø,Áó`ŸÃ…jò%42Ѝ¨("²ñð×Çô:Œf3:½OOOÌÏ@"cb¨ rö—ż½¶Ðï>4}ìõWì&¢˜]ï=ÅG QjÀ¸c¾ÚD¿ʬ]F« ›— ³D³/áQQDE†tn#¿=‚Õ r~ÍËË+‚¸¦gY·©<W%evœŽbJÝ€# –³vu‰‰$†ðサ¤îÞÀÜ7ßeÎö,y[xuôË|uDÆvncÞYÎ™Ì Lyä Vf[ðô²áuä[†<ô='µ lãU½àÈhb¼ÑÉNœÁ~˜Å Øñ¬õíõÐÏCóox£Òb¦©"‚â ãîíû&»L™!Œû'uG3`]C%:t¼QYÂμDºÜ[_¾ÝD`ýD”•“³j5Ç„Ž<õ”ŠË V`ºP¥hî<×êR\iÒ«O&÷=ÅÄ0: ¢ãbñv¸ô>„za*MgÏœoé^ð)^‚ÏøÜ÷psLœÀTü Ÿ¿¾ŠmKC)Í´ãÓ±7)­~9…7‡ÿÈ'¡~xyøÓà¥Ôö€sÙd'Ô"ÖKBÅpÁã™dö"ä\ÙBzk ;. Y6ãîñ·íUEgÅ78ˆ˜ØH N;v[žz<[òü€£ÌÝv’ü*}Þì/uð¤ßlˆæë‚ô=xáîĊ*q ïâÌ÷kQ»· äÜ/¬ÏéÀk)Up ñýß?1ƒÁFlÃæŒs?!cæÐqlX¶ÅF;ïæéa ±Ð†¬šÙ¹½„|Ù÷ s‘áéùäªz|ëÖÂ6ëR] Jú>V»žÒúЪ÷ÝTÛéÇË÷Æ 8OW‚Ͼá ì;š‰²Z4Á]›>³»÷áiÐ_Qç»ørqÕûþ§z&b8n¢^×ìj™ÏWSŠi1í5V»D“£ž3'³[QqÙËò¹ÈI¾8©ÓÛl„Ç7çÌšmж^q†Í?Ìå«™Äv©CHñn¾ÿúqñM(óŒ éýÏñp•üÔtñÞaˆ_ _ݽ›lÉ‚É;žN£Ær› ÈŒdYðû¬-êÌý^šùo£¸°û4`À¨‡hSéâ¼’s{(ErqÏØÚ<Ý)7³«`Éøþ‚rfð¥N£†ØdA5;Ó³a¨æðš%xÅ6¦ÛˆÆtr—¾ÃBgm>e/ú¨ÆD¥~ÌâõÉpT¨¿DˆŒèe m<’Çgbü—_°à‘ÙìøÞ[bž}ÿ%ÚAÛ¿Ðá–H“¡üüM*…wqg‚Ø]H:/BãB¨W? ÕœÄÝÚSÙs²ÎŸØÄDêmç¹çõÌ߈#BèÎoØ›7œÊAçÉúÒ~ØÂBñ9/ ‚¼Þ{Ž> Ô ôÄ=$‡RÃW%£À‰Ãy¥‡ƒ<ŽV ᮂUŒ8…}±Í©' „´¢€¼ËÈ‚ ;*ÎÔ/÷Ü| ê·¡–o&FÃq2ò (<‚’¨æ·Ÿlä€9ŠðK*È%/¤9|Ýy O¢ÚÑyœ9“JªñN‹’/ òÜÕ¼>ð]VmEí)¸˜šëòÉ9@ÀêODÕúD-\ÀVêÑàJE×^L‘o ciX5ì•x*¹ íëes`µ@¸7`0[“› ÌV"Ív ªŠ•HŒEtT…fd“• ÜâD¼%F5ADo0\aV(Ÿ_*2íÞaþìOéî¯^ˆê§Š¬ w2jØÃŒ|x0=›kÂã·íˆ—.Oláíµ™ê4¥¾%—Ý~u¹ç¥Çù_O•b“­[8-^l€»b£_çðÌÌ#îka­y|d[‹Þ?WfxŸêXâHÓ<:òlvœý‡ÜÝU´Õ¤~Ø\ÖîÎfÇòu4ñ,w·»“>=ûpWG¾[ô3ef#F“f÷L‰½E²ccˆö½Åæž5*{Y®»’/Þ#>¾å Û9|{×(Jzö †}³6Äòè2räH†×8'¸#\ªÎRJwç`GÀ•±›5¹mÿâ0|ä!ÚU²“¡œ¯Û¢Cœ˜äͲáióÁxþÙ½£=ú «7§c8°žµcH¨ÒŽv®÷Y°÷¥x3ŸnNà‰q#ydäc ©¥®–çåBaZ°ùEg[Æ®“€x…^höÆÃž…O`-z ÁÈ‘#ydDGªV ÂäpºÃ0« Š,!)€¢^ôF.ñ4”/H¥­ã‹Æ4 ׺üOQ]”—áp•Ï u:„CŸòPǯðñó@T%œŽª<úJ9ù22 ª±m{UrQ’íêe•‚¼BŠáâlS¿™C_/"—`îlA9´=ò"OÖJ¶)„S{1øÃ%¼:¦;ŸKNDBžR™çÇwÀ?è(yS;Ñò“w‘—zRÊ$M'mñë4i; IF–ÍDÆÖ¤^ ?ìù¶úw1dÀ)FÌà´fè Lá÷â}yû(),¢¨0‰HÇ<É#Ç1°ÉvFò ¼ù1O¼öx”~c»ðÒÓ£hý©LÙ•æ½GBTmžx¦=·c±—Šªº¸óåÏèߨ-}[m „WöÆ£ÔŽ$É™._ß "#ùhcƒïpÚË(.=S3–®ý;qðÅé</oÅAwñæc~:]8%T'E…e¸d……eH‚ ãItmþ%Q€³aô›ÿ& ŒZOÿïĹ0våpè@>Ö P­r6û7ï"-³°<4«Š,ûÜ´¹'Dª7ˆÆó’Ý@Jñq~Þ+”¤²ï€žZõ"ÐÚÉ 9i‡)l„ĆaÅAÆÎmìJ;M¾OuZ6I"ØšË/«¶p¬  Ù¯w´ŠÅ„‹3›—²5Ý­ ŠúPtjDpÑ6¬ÙC¶¬–/+èðô¡RBŽB3Ճܳ!g‡vîâ~øøøâåéKt¸í¢¦#e²gO1áŸ?ƒ’“ÊÒõ¹D5kF5#Bún9‹¬‚Žªí'H…ÇØqÐ@­ú—´ ÕIÁé}lÙzŒ2½'¡QD†Ú9´-BTdÉ—øäh<ä,Òœ¥TP‘]â5!1Ò“ààÄæTÄêu ÷Ô#RÀá%ëØcw¢ iDÇÆaåÚ—“ÂÓèÜ`ÃvM¤gŒíB™—ä¦s.5•Mû71g™À½Ã`,ò ¦N#êÄdâˆìcIi‹PH”úÄù–p`ÃŽdâBEvyS³S[âËgM…à§ýâ«b)õ zƒ(̊¹= ØtÂJDÆDä®`}š€ÅËßÐXüÍ>Ä'–k5‡øì‰i¬Ló¡ÓCu1å—átùQµi}jDÞ´™gs±«•hÒ©6a=ÙìXº™“e.E¦R³»‰ÍýžÕ\¨‚@`åªXË,ÄWU9pPOÍ ý4›Ô3yýƒ@&-ï‹þTée>T­â_ž;g÷î$uÿì"H–J4¬HQ¦L@T!ž¹¤¦–™¿þÛvArÐ÷ÜÖi+]ŸïH„Aº*´»3é/[¯E!77‡ÃÉdB¯¿|>ÿ[®Lìv;¾~~ÿh<ÿžÑ¸)­ˆšövý°cÖ½C𘷂û­W~z‚ï?øˆoÒZòÉÄ”‹öJ×òÂèåx4ïÅ“½ÿö<ï™ñ˳,¤<9œ78­Ì+ùrâgTúh]Ì×ᆧ'Q»S)_ízꟳù Í™¢Æß»6¢ñ—1yFsï‡ï⬨÷ª!4ë1Œ$»çåÅn®ÍƒOÅ!xúþ#ò¼J·>9e¬åëÐ7ÿjM¸ÿõ„ë5ºÝÇì/d¢®[ÔÓÿšÑÐø·ÉcˆOÔU´Á„OP8>¿šVzýÏm2úô7¥¥3[ñ»Ž™"1Ikwj+ZhhhhhhDCCCCC šÑÐиÅÑJiäæn (Ø“ÖÄþÆŠùUiß2¥®cST‰}ï¥pÇ'é×µYßÈrrúÉoŽæ­ ö³ëKq»ý]îèñ™R?½ÕAó þµ›þÎoÙõððÀf³áé鉗—žžžX­V, :î¦ÊóÊïèÑ£“É„ÑàP_ãž{é€pÇ$dÚÏ›ŸŸ Æ£Åx¦M£½—½N‡NgÀâ5†-Ú°ÿ'Éeã{C¨#B†¾¿‘\A@ÖòtÓa¼>w€?>ÝÇócZîERçfСÝ;ìséÓieÐ#êtÌžÜ9ó®Ôqîûêtèt"‚àI|­ûxóÃ'I€ øÐ¨÷$v" (ûøüÑö^ø¬1OwØÄóm± ¢N@ªòìês”]2’fÏê„Õd@§Ó¡×›èðI S´}u/ËCÕ<Ç×KG/Bz¼È;_½ÇÓãÖr!v +•©[àá·‚ÅÏöR*¤ñ~Ã*ø ‚Г/3‹Üît2gÒÎ8„Ųr¡}G…G²ì—× ÿ'~`d-?’YŽýOŒœBéJF5®Œ§ êt‚@¯/²°+×éœì|›wÌ$ë_3Úl”¡gשlà&¿ô:oÌ܉ó:J_EvPRâÄ 7âãÈÚ#GPÒ¾a@”€ è1M˜LAÀ¯Å fí’nêäííÍàÁƒIJJ¢fÍšÔªU‹–-[2|øp&Nœø«¸éš¹ŽŒë-ÔüåŒ|àÞ›¿›RUe÷´žDµëE÷£Ÿ3o_ºÛÇQÖ¼²­2UKAí”Öx•=v;{ ™3óh–ò™š4øã¤§²²(ˆfße½¨%ÎóYsNÍžˆ³{}RZÖħCB¾TkT%œq9EB—_Êp9ìäÍ&tÓ/Hz¶vS9#˸Nœ®Boy‹>6’Í%WVQË62*ìïžG®EÍxdÚŠeuß@R¿šÅôEÛ9Þ‡7§TVQ³žgo÷ç˜s" ÈœyaSš²)¿»ÃAié7„ˆ ýǧ1x¶Âéóypž#uÓ«ÜÛöQ¦ú2½†ObÑ·ý‰Î* Ôu‰{E©„[;žýb'%²ŒÓáÄé<Ê”>IXw|É[užb]–ÊÆ'W1åãØUXóÚ¢¿z›ÛÄò.*ˆÛßAŸÉóXwa^Dî±ltµ¡uÁ\Vý‰:“ É îÇ»ÎP*˨ŸQð`C¾ÊÂ~Õ±V@@ÁéT®}¤#¤2µõþD,ÝL6z\Hòu…òTAÉhûÑ~‰»‡ÇÔÒ}Ì}çYúZDª’ýÓ4ú$ßÜ' ™1c;v¤zõꤤ¤0`Àî¾ûn† †(Šš¹¡cÐ!Š:DÞ}ÈETpºªÐ¥«?ý|”R'lœ0’ØÛnCo4]èœz½½Á€¹Sú¯ÞÅ>Mü){ˆˆz¢sæ >ù¹>U«5'9àwÙ%¥$ªV3 Ó°Zº0mJ ‡Œ èТ^A/ºýœ èÜ×1F¸SrÏâËgÕ€j͹£@ÅžCN‡^_Þ>*SM§Ç êг±ÃŠxmêcT7›0èõwòѾ7)õGô:DÁ}?Q¯Ç`У׹ÛN§CÔéÐ!ry ’‹£¨s;ƒÔé  z÷૪(‚ˆÞzQEÁˆáØT^Ü1ŽÑLç}~:c:?0™¹kÜW䢎þ¼™ >©é¹’…«À)V~þ"mê´ uœûÄrµ{ÿÇ–ã™úÚ3tkX•jAîëÍ_XIf¡½NDWž7‚îgñá9;m&‡$8õa; zAÐé[2õ¨ö=¼Ýw «—$Ä?šû?þ…Ÿˆ/?!m¥J˧Xm¡Z^‘Kٲ߄±¢±Ûþ#O4‹Ç"B&í.w¬ÈVž õÅT~êzÀ"…´IÍËÓ1y´gfº£xÞd©Ã/¨&õÚÏ䇸¥êõèt"¢XÞnt:Dù>ÒoA@‚¸gâz V3fØ“ôiН ÐeúZ&÷HÀ&Üýi6ÊÉIi7‚›éEAyxå±¢(ŠBqq1&L V­ZÔ¨QƒjժѤIt:²,käïF±—ùð“ÔŸ¼ˆM›Æòtê‹<ØÞ†Ù ž70#É’ËÅÞwÇ1«u-ªiâàÖŠžUö÷õÃûö•˜b;ñöX_jÖÇ JHª{ЬY¾#>¥³ `¶Ô-PTåR2W &¸|@,4xh¥63¢"»Maç³ó\»kÄ„ŒŒŠ"Ë(@Ù³™-ä#…à­ÈHrùo¶,fVp‚<,pn?»êw£cÂå¡\…¸x’6ìå°ê wå‹y|¨Òð]Žè=®í/MoÁ;ç^¸·Æó¿èǧ©YP÷qÞ—ÆÓ"H Á¸–<4¬«ßEÕÇ'H’„$¹ƒc‰¢HlµÆì>p€¢‚4¶ühfPŸÆ$VkÍš…Ë‘1!œ:ƒÑ»5cÓTÔ¼é^¶Ÿ‰ïÅÑÃix·ËâLõÄtô_Ìâãu;È7\(-8?∽”ð!+q¹dUű  Ã^[Ž`Iæ±YhÕþcÒsNðùÀdÚ¼yUUQó¶1®G/NÛ €`:s§ÎžAÔ]9ÜáýŽƒ9Ñü](*ŽùAüoÂBΟaÖímÈxç …ŠŠªªÌ¸C$î‘u¨Š‚*;ÈžÍÐWÀdÔ]XË1[= ŽHâÀἫTÄ)æ™Kºßöª*jñDíßÈòÕû)Þ¶¿akÈÝ3‰CO<Ê¡!)Üü+?šÁî2;ÒšmÄè@QTÔ¥Cù e(?^GÁqéKUUJJJ3f $$$ ŠâM'²ž i®Ç»JUš®YÄÊ|º¢7§€O5×!îÔQNz7¦^½*DD5§{„ŽPT*\á¡Ãý¼""ê‘÷in2¢×é0u™‰åPg@Q@UÜBXÊaß7É¿$î~jæœ,쀱Ja&?²6n#Ó`¸¼Î‹±?r]ï¨A„Æ”»h³d'?oÿŒ®Wžâ‰Q¸¨Þºö½ECQ‡h0ã}Ïl<Ž'M¼èÒ]ðñ'&¹ ¥ —‘ws]±²·ßèB¤N‡Î–Â[Ó—s´¨‚ä´LôG¨Fr“{é’`øxŒd ¹ñ=tª\~Ÿöw1”½ì?uz("Šâ¯„ˆÝn§]»v˜ÍfdYþ• ÑÈß)BÊŠ©õàËt Á½í,ˆ&ÕÝê ©áÛ—edÉEɲh’à:PÄò·bLªNgïlæ„ÝËôS*Ç'—‘~à9™êånÑ% I'%öò™ÖmÓP•Eôž6 :tªŒë2…Å…ÃKˇ—£ªù¬y¡3–Í»ÙnWܾmyêÓ=îûì׌hEùäF äë½Å(êR Å8•M1@p êïžÏw»J/ %Q¶k7ûZÖ¤ª¢ +Òåy8¿&PÞ¡…KLóÂe¶zYrUðÛËgÈïôC×ÉCˆ_¹.B’V ŸÅ¼%€ ÃÛŽ;Õ¯™wÈÉáÅ3Xµh0á?’;>Î<ýÖ®=ƒÁ ^¢åÉHŠŠ¢×£”K”?DD{຾8²‹=Mk‘”9¦ñ_pßa²,#O-—raç–ª€ˆ“?¼N¿GŠùPUQ•,6~t?Aùeî24T¡f˜ÏìM¤fݦÍóètèd;N§[KÄåÄeÔ£×›0SŠýÒÂ:>‰ÆIóxNA‘e¤]¯’dw»Œ¿ðH:_+Õ ^ÙV¹#ê^1;qPìÓ‚ÑíD•edYEUWòd÷x—:Ê×äTTµÜ‰ì¥;Uåb{•”é ®Ã詪*¢è6V¤‰¸\®›VxügÈ•[zUÕíÛ_2uá‹Ó“èb-SÞ`dvmgïõeÿ>wãU§%¾¾`t–s:“Ó9 T­IãÌ ¬Ù|Œ¹ä”°gÎ|v×­FÕôi7è ²²²ÈÊÊäìú¾½I’„Ë^@vi¹YYdeçR”[„SQQœ%áM‹‡ï£•ÿ*ú÷ü„b¹iÒaÇñ«ö!á(ÉG¢ÓLâ6£˜¼-Bòäô&>ö›Ò3ÈÊÊ&3óK†5Opÿ;‰q¹µ“_5G ù…”•‘ï²##a/Ê#Ë^HNv)”ºPU%ù9dç““•EVf.Evér!ºô ^ªñ(}b `5c)Î"#+‡Ì2+žæòu1ŠÊ5¶³qÓv6ìPЉÓåÄ%å»a5X>ggt:¤’<²$'Î]YSlDmÓˆ^%äååp"¯[Âw¡5‰oE°¾˜¼œl2ó )v¬ä±&ÏSõÁ>Ä[}ðiÕ™ú– ²²³ÙúÍ×lDEnû6¶Ùó(3‡Þ¢U¤2²÷¦²vÕ*åŽöô…©¨¦cœ>åÀ^”KVI>ٙŨÖ*Ô)™Ã¢yI=«râ›ylíÚ€õ`XÀD&Ï;ÊÉô²²s)“<ðiÙ™ú†l²2ÒYÿí7luèTõ¡(âááK`Ô^övn꥟£Iw°{þçÌÝk§(/‹Ì|'”I(ç·~«—Žê…÷‚TB^VYÙ9d}õßÞÞ—.×) ÔÕ„Â…IÉM*<þ›D0áíã…Õ\ÍL4ãëç…ùÊÜ¢•À@OôzO=ÐkN6¯#v6ÿtœº!±Ü^Ï íR²†±M‚iöM%õçíC£)|û>êÇDêC­¹·³}BGĸûx¸d±±±ÄÆV¦z÷m ÿl0Ñ.¶?O½ ¢ccˆŽL I§—ؤ†êgq7dd¾8”;SÔo&Ç,!øy.¯wÁŒ¯¯£Î}=nûç1­}oÞÝ”‹W9œµŸ®‰ñÄÆÆP¹ò£TڒϼÞ!ج—Ol•ö|ÿ>cšÈ’o^¡ßÀûf±áíûH$0°Nߋɺ‡·'>$’J±Q„7âéyûȽ A²ùlÆ9& jŽÅ4ëÅÓ«G۬i<ݺ|9Åh¤iJof}ƒÕ¦0¬Êù粑\›ŽÇRÙ}â(«ß»—_–ZoPÝq[áwjo?Ø–Êžè[¬¢Ëð¾tkY›ØÂïx¬}=*Gãc~Šà|ÐÕ"úòj«ÉÜ_™Ø˜žÏmM·@+5óð½Ó=¦ ãN·£·ç0bMþÔìþ«Mí¹ÍWA‹ NnŒËűñõó]©D`ðí<3O¢ßw_Rçè[tŽ©4TǸG;bò箳1NlOÍøh¢Ãƒ6ˆ—›¼E‹¨âª1¶¨=݃¬Oü/Ö‰GPqÉíY¸h+`Áâá…ÍTÞüiûÒDº%â±d/‚ÃB®ÿ³·çb ñÅjA´àçï…I'€hÅ?À ƒÞ„iß[Ü–OlL4±#Y»°ßu3sWdÂú=¯›b¸ý¯Å¹ÌUµª¢ B…‹´7R¼¬PUáW^°¯{ù«€p•»^rù×߸òÊïÈÙh<¿;2Ź+y¹ÚbºfL¢É¯>OgùG3ÿTk¦¼ÒôâåÒ ¼öü¼[ôäá.12Sö™²YñâtvJIôíÇU„?–ò…´JI[=‡ž8J·­/ÑàŠÏë‰.ýüÂû³Si~¯‹ÙëFu«\–erssE“ÉT¡%å¼)«"í¤¬¬ìò¯Ó@~Kò^>Û¼z#ԄǬ¤+×þ†ò®qWáZé öß÷CáO§e%4¶-û9)*üõçÂxâ ïþÄF{!I××έÓé0Ýû÷Ü»í\—½dYºðÿ•/Ira4ÿaMDÿo˜JKËÈÍËÇáp¢¡qk hê~€`Ïàì9áŠY¢‘„6=©.Êä¦g  ‚{F/DÒ}h H.2Ó3þÞÀHªŠ˜Øž6ÕA.È =ÿF¦­"XiÐûYÔ² Ζ Q ª¨b{>˜&PšEú ˜ ¸¤?wÀ²0=ãºqºEˆªªX-œ.Ÿ}1÷¦[LÒÐÐÐø'ˆýDŽȿF€(ŠBhHÃöþ7¹ÊÓÐÐиÁ³k°;šù=B¤Ìn׌†††ÆM€DCCCCC šÑÐÐÐÐЈ†††††&@4444444¢¡¡¡¡¡  M€hhhhhü;ÐkE ñG“ɤ¹“)GUUdYÆétþf™èõzôz½Vv—”ÓéDQ~Û”ÉdBµ9ïyEÁñ@׈ƟB'ŠØ–.]J^^’$ÝÒƒ¡ X,ªU«F:u())©°¶pvy…õežEq/'+â3«™øÒ>˜wƒ²‰W¹OâÔ ÿh9ÿQáñ—ÓDÕ¹‡Y£î¤Š~þþxYÌô˜´™sN z¡¢ß©¨ŽlÒŽfQvÕú(æÌæÉô:|«þ†²Ó4[XQÁžÃY¿¿xНZIÏoôÎ|NŸvbWUTшÕÓŒNUQ‘°—!‰F,F•²2 Á`ÄlT±;Á G¯‘ìNáæ.‡¿lŠQAU$TŒyß_‰Y1˜=ñÕ— ëÌxX¬˜ôX *9¦ ^³Ë„ÅuŠœœbœ‚«Å€Ë%U<óþ/j *àÌã”=Ž»žêË=]kã—³Œgõáiû'¼2¨)a“ÕŒ^q”¹PX^w‚ íRÆ^R†¬ª —’™åÄdòÀdwbŒX-FDTd—{™™ÿ–j¢i ÿôT—˜Ì¨!!<;s ’Kr›DTº3ÒÖà ›?á±}XX 'wË{Ü7x>ÅÖÎ@ïvS8 çÔO?0ã•ò²ü­³¢?; ýe᫪¨‚³o$UãILL")1بü„tÖOLU½ˆ9 #>Ü„Ëp˜ÙïÍbÞÆ,ž5‹u _aPû’Ïb_–‚^n†§z|‚Ã‰Š % ñ~&þ âÎür</e%Õ‰'È˳©ïìq›TôÓ?&ňÍןÐèžÌ/´âÊKåÃÇžgå÷C¨W§—æôâ1$Í´î÷»TLÂkÝPÓ@4þÔàçr¹(((øó‡áDr±—½˜²æ¯2q[^\ú3ÏÇ:‘e¥Å‹Ódƒ÷黎ÃNÁÿ³wÞQUéßÿÜ2sg&=„!@èÒ\šŠ(v±bï{[VwÕU×Õu-è * 6QDdAED¤é%´$žL½åœ÷ ‚®…÷'„ûÑ«3“™¹sŸ{Îùžóœç<ç-Æ]÷"MïO 0{9KwµÃYñ>±6£™ýÕnº‡v²£<_m5ÕÁâÿÐŽã „øEiBB¡µµµ¿#‚MAa"µ»Ù8ý/4÷]ƒ.lLk_5Ž› –2ib)—}´… š}Í‹ÿYŠRQAyuŒØN›SNÅ1_7嬓NääÁHÕƒTVÿ1.Ðäää_€`Û6µµµ¿³Ëìʼn„‰™&j(HMu‘¨B ·¹ëW°»în¸”.½ÉÍí³H)™Â%÷½Âq÷Ű…$ú˜[û.çÒ¼b›Ô­{“[®|ž.ÿΩ·ßÀ·¯7áñWG^0‹çŸJç©’ít/ûžÓæðÆß§Ñô¶cñ…ÌCR>ý~¿+ .G®ˆ8ŽóÛ{ÒÒ‰^8Ä,qù¼ZYmé2ÌÇšæÒ¦C˜ŠíÈ´,Bÿ‡ëöØá×6œŽãü.‘ÂÆRi1èa^ù ÒB&BÑñSÂW}§ßyœÒÓ‡¿*¿G%"„ŒûóU]GÓ ü‰I$ú40?$`á·øñ÷úr'¤ƒñÇŽ£`KP(;v°Ùúˆ—Ny[×P„-NaÍp¤ŠØ²ž¥u“x¥à T R€7éR¶¨'ÑÌg {ü$^B»—òÁ’·x>ûqtic;Mé{v6e ´p½Ý9—#^D~»€Hö|T81¬œ+y|ø9¼úõ ¡ mºßÇœ©çÓÔt((ªŽÙÍÊìZ>_»œÊÒ^ lœÃÊeSX×¹'9=ºá˜1UEA ‰DAÕT¨obo„$R=,þ–U5~"[׳r}!;5 UÊø(DeýNJª‚„4ƒ„à§ÜÔ÷NÞ\]BDóâ«x‡‹:ÜÉ'Õõ¾ÿm“8+ï^¾T8äÑE¿Æn‡¦Ì „³Ç$Aêø“×ñ¯±&œ[@^ÿãè²ñEÞÿ¢Š°ãÅëõâõ¨qÅ‘'§ùËaâ7>Ë×ãA×ëËQ8†¹r Û $'[¨ó_fÆÚ^¼=> ßÀ¢°\qùƒÄAH‰¢€”!,bѾ<øâ¹hbͼ“å·¢u^>ùºÑﺨLò!Ó³I-òp|¿f躅™”@ay=šXÄlDÖ§À‚½“ÎŽˆGËÔ‹ÖÆ[:ªXÕlÿ|½›ç’—ŸO~~'þtÎ$ä±£éÛicÚ¥Óï¶—Xoæ‘§ $Š%’4œó.¨åÓ{F1üæ)¬)wöiÜœúQÈ>6ª.çE=$çU «¿à™›GÒ±e-2ÇPxêÓÜsã±4¶ó¹åý¿¡¾v!ý;åÑ6?Ÿü‘Ïò}ØU ìþüyÖ=ŽmC›¶ùä·ïLï«ß§‡0Ý”ñoñãïéAþþŽÒ¾¶:аÎÿøì¾6Üß&aò3Ï]ùù-¶;4âõ?¬sÃ:ÿ³\‚±ýìÖÐó>ºâò›{{r;í®¼_Ó°íy¿›GŒ_]~ö”97tÜp8ØÁ—_]p¥”ÔÖÖÒ´iSvíÚuToŒäõzIMMeÆ †ñ³Âáõz©ªª"!!X,F$9jݵB233 ‡Ãض¦iÿÓÎ¥¥¥deeQ\\|Ô×ì¬,JJJ0 ã팸âò«zÛ†aà÷ûùè£6lGuoZAaa!‹-¢k×®?Ù+Bмys¾ýö[iß¾=@à¨}˜¦Éܹs?Yޤ”´jÕŠiÓ¦1jÔ(Òbã©£‰]»vñᇒ››ë ˆË‘# éééŒ3†É“'óÊ+¯õîEQ0 ƒ®]»rÒI' ú>Ó4’’HJJ"1àÇ«ýº#Rñà÷{уH/©xð¼¨û)RYó§ñ»ýžú›¤ 9•¬™ýO.½ñ#ê’ Wý]\\\ùßÚ¡âU*XóîM´Ó4t]£Ù€1<¿Ô&Éû /A5H¬|›1g<ÃweAÄ)"ª—„Ý“9ì)VÔÆ"‚i…(¯#öüLEAA`EƒTUG‘ªâ®ØwqqùCÑ„©é*ë¿ØÎ ÖðÀºZNK_ǧs—³céFp i!l[¨è†UØØBÅãÑÑT¤MÌRÑ5‡PÐBõú0< –¥â5<õ#a£cx:š"q,©èŠÀŽE±åÞM×ÑTs(h^ E GÁãõÄÏÄ6cXBÅã)=èºÀÌ<)ïJT]EÕ¼-žL ¬h8®3ªŠîõãGÑaÇÏ«( QPt/>†‚D86–i!׃®* ,Ó®¿ËÅÅå((9@b[ùI|m6äL®¼ª _¾žÛoǬ’TRS·3uìeÜûø|ÖÍšQÇ4Æ0 Œ·2»d¯Ýû(‹¾¾ŸA9èõ—åPò:#ÓSø}øü'0a‡†³îY¾–«¤4ÏãÏV2¾‹Aj»þ¼¸>• èÎ>yänÆ^4…m©I$¦îä£;å©Ç¿fëÚW¸ _FüÜF×½¹–XÕÇ\sÙ$þq] 2ÎeÊ’8óìXQØñŸ‘¤$ðû}’†ñj±]•Ä‚‹x°§ŠÇH!§ã|NÁ§ÆÏï“»øî•ËÈ5 #“A—>O¡žŠgÝnž?wî¹üsÞV„¡Ô®îáîqtGÅD;*ƒ{W£KÀ£©4o”BÓÜ Òüãéþ£Èû—çSUè×S‹óÕª-œÁb>nÑ…áÝwðî_6Óï®™Lº¨«ÆÝMYÔè?còÖÜòâÕôÏ[ÁI‹¸|óvÞ ¨›ŸgÄåÿfà3öâÍôZ¶›û¾¸ŠW<Τ¯¶2ûÓ»9ïÉ×9ïͳI¬bû;Ð}`.k±pÕåt2 ù2Ñ&± ›‚.xeîżâM uù“ôxk1ß·7P¿½“…—|ÌwÛûÒ&8×£•Øv”f½GéEqWüì&2žúŒ .eÕNú¬Šð\` 3Ÿ¼„›n|W/ócx+Yöé >y»+ÈÉô*[Ä+f1ãïOðåέè½_`ãg±û‰'Ù í \æ‘¥(”ÖFˆZŽ›ìØÅå(BJIÀ«Ó8Éßp÷‘@Iu˜Ž­šï÷º‚ÚÚZ[öåîÏCŒ¯^Å[»¥‘ÁؾÆ.êF¿ÐrÖ~·†í/i“Ô–‚'àyã9n¼x9±Ô Ü4þA’l@ù— ¨hž­[Ù Oᥬ‰ìIn¬i—²IËÇÛç4†çixJ»1 GÇåy(ÏÉ£ó76v½¢;ŽC«6ñ¤ocÞÒu KÞE~fÝwD Íá™±·òØG+ ´¸”]'u º`—”MF2¬ï(:FÉ$†w½ù–(xú°Yó`ô9•a­$Z0™ŽÇ¡íÔÕlº:=#Z¾œw¾þÿTîªÿõyœ~ßM m»›™wŽ£ºq½ý::c8¦‰%%-›6B×u·F¹¸eÔ„"쮪!39pHEä°iMŠ«BäfQ]]}@>,EQ„mI)àœg?$«ídfNû/…]Kcc¬ßúÿÝ“ž'v¢YjÝþ³KÞ]Ë3'œM÷Ë7¸=WE‘2>i-Lbª IDATaÁŒèè÷ÄséùþYžÀ³¬ýŽ…™ÓÁÙ;HÙ6‘‰™­H•Ýèô%ŽzŒõÝîæÛ·Î¥Sðm.¹~=>Ó>ðÛT¾’—ùSïw8eQ93;xëŸeè5Îï•H¨Ÿ8—Â&ækÍÀ+¦ðÔKg’Š"HáàˆK¹ü޼{ÝUôÒodô‹¸lo…MB¡[“\\ŽÂˆÏ0hœ–ÊîªêC*"GD–®©¬ØPÎÕ‡®:D‹‹Ùi†‰tÊ%S:´~6éË·±Ä)%çä?‘·{ÿ|u:³4æªÙŸñây™P$â+׳®ºšº–ôXóÿ˜VEMmuuuÔ…ÍøhDrÐȨ?·íò:û ìšÃ§Ë,´¾Hˆšˆü^t-È"]5Ù6o KK¨SU”}‡*ž~§0°i˜`0È÷3Þã;%þ^é˜D#Qê**X±økŠ/9™AÑfB2RÃ8sžåol¬hu!ªñþ´·xmºÎèg_ç•;‘.¥ªFqÝV..®”òù#B@„¢‘#7“òþh“ÒIË9™}›Ày·DJ0L,!‡¼NC8X7ÚdùYd-x–+úgÐ[ñHêÙŒîÙ’¤ì ¹ëö•<Ò?ŸÁù¿ä%jÆu¢uN69ÙÙäž1‘bÃOb‚U‚¢TÝÀï÷ü0‚¤m‘Ò&”tÖÒÚ?XÂ.TËÿ6惯o#Í—M¦ÇƒÏoÄ££©x øœÜ빿߳ ËkIv‹ŒÛÙ‡¡ EÁYt/Ç4Ê y—?ñç’ëøæ/}¨5Á£6¢Ëk¹þ¶<ž9ÖGJf3šµ?™Û?’VöOŸÚŸÖ‚ë6dÓwØ ü&¶ˆåâârˆQv•×ÉÊè­‹®B“Á¾ º®S¸j-¥»Ê8mÔ&OžLYycÆ^CE]x?u2C“¿h±ßΟqa(ª†×çG¯_‚-“XÔDè6¾ÅÕOÍGx%]Ø%d£ù|xuiG‰š6BHTo>¯Š´ÂD,_À@Ûë–2‰˜àõB,jêÁðJbQEóàÕ㥲¿ë^ ³‘ŠDÑ o<’ʱÀÁ´@÷€mÚ8B"¿¡`F-o¾z¯™°m¤"0M0üÞz…—HÛ$sP5¯.‰FT¯Ÿ¡£HP¤À4MEÇkè¨RA:1b1 Ç—£Þ…PQUCÆÿpa© ”…UbÎþ\hšìãâ Îäý÷Þ# qĄ̈Já ‰í/+èºÆº kiÕ¡)=öˆÕSÀŽE°c?V!a… [{eŽhÈ>à\{÷´ÖÞÇÒ±ˆÆç¸<>Â6Mê—h Ò6‰Úæßë8ûüiÿp3DèÀ· YŽÆöùж~|‘‘^sqqq9ôñ!9v´Žœâ6 «š˜ã:û]\\\\ùE(;Jì‡!€‹‹‹‹Ëÿn>>W@\\\\\\qqqqqqÄÅÅÅÅ¥!rDM¢+J~—‰ï}y”O,ïgïìÿ㛡 çóøÃÓX]Æ«sq9””î½÷^,Ë:lE¤Áˆ¢(¼5µ¾Ü‚TÅféóòÖ¼ÕTü’5‡;ßæÊ«Þ¡ô ­£Imñ*æÍ/b¿=e-[ײxÕT˜;o Þ)D( Š"X÷ÞÞzÿ¿lµ"®f_üw»Â–ÛR¸¸däqï½÷òÎ;ïððÃÔ¯9¼8bÃxmÛÙo__¯G‡ÂÏYQÜ’.ZÑÚþ–·ç”ÝRp€Ý¥ƒ)4¼û¼.“åšk Ávº¶¿²Ú6–PñÞ}_·¤¢¢*’àûño´ì%, R b¦M‚ûeðztÄæ%l\¹ƒU§w¦‹\Ŭ¯6R߆<» ë*¶ˆÛZض” êx5p,GÓñªûßÓõ}¹áhªŠeÙõ¢(ŠBjj*wÝu³fÍ¢wïÞ¼þúë\xá…hšö‡¬8op#!ä~‡ 8¦–ʺ­|_l]ÃîνÉÏo:w<'×™¼¶mh™;š …(Æu7~Ì”?Ð.ÿæ”/`ÂKßP), ÿu*-[·%?¿}†ÞÇ‚X ^CŦéÜ6*—ì–=}ýklTRñ"xI¢„^J¯-hÞü8n}u!»UÊ~ë{ÈøÜ…ñ£ë2%tÊ ‘˜°«€][¨lÞ’¬cúºô%.=¹;¹­[‘=œÇçc Eõà/ŸÆu×½Fau uçÛ\qùd¶où[œÝ:¶í èÞ÷&fÅtÀÄÇÛÓ<ø.Ý¥ hAF‚ƒc;ñôðR`®}‘3†L¥÷äù<Ù¤šâÂ÷ytr°¦£’ð¨##TGTQPb!jS»3ú¾ó;¶ zÈBÊéY$ÆVoYQ~"üPÚXJ{ºtiFlãL«Âqy½éì,áÉófeîÙ<=ëE:˜Ó¹þÁ šeã({Â{}©šîAWlˆD±zÞÇûožI£¨@¢áñ¦ÑÌ´pó0»Ù£ø=ãŸè‹ÕÏ-þ\.¬Ã…#7 «Þ‡øÃ!08vHfOz•uµÐ¸eS³1ЇÃû3 K2K–±ÊŽa¡¢Þ'ùCØ©«`{³S¹tHí : múšBMG“ ªÇG"@u…åk©<¡/Ý£&±F™dDVP¼b5á&íèܹ]º´&+Ň"Ä~ç~P²{¿Ytî‘Ãæ%søü›õ4ëÚB¥y:ÐkÐ`†wmIóšM¬W¢~Ô¡8Äl¤Äë'àU(3o„@¶Ê¥åâÇ™US·gçthן-öúÝÃ=Žì:tä‹aƒZH(M]»ÐM?ƒ3 rÈl 2ón:~6ã7B×<œ0µŽFu  “HÄDì¹Â"µÑò®àÊæ7“ã š™Í=ëòèl[ˆÈ6½q©­ýÅÌPÇòêÝ VÕPSÛœÑwÜÉq)³8%QÇg((9góÔÜ"Cç¨Y!b;ж5횜əMÚѺ r2—¿…7®i¢xèùôrì? Â$ ̼Œ?RÌUùé^ƒ3¿H¡MØDè'òìç×3£—?ÀŸÔ˜œ³Þ "àuW¿º¸.£©]åu²2z ê*4Iˆ}þ¤ë:…«ÖRº«ŒÓF`òäÉ”•W1fì5TÔ…÷k(…„Œ€ÄÐ~ÙªãU! r³¨®®>èMÓ46n*byá.¹à,¢1Çq±bA¼<^ 'VK0báÐ Eh ƒ/Ñ@1‚a$ˆpu1EÝð¡JÃ+×EpІ×H ѯ`F-tü>3&µâ= ÕK ÁáQ̈ª(¨ªByE%™™˜¦uûK¬ˆ‰ƒ†×ïAEA˜AB‘–º×‹"uü~ˆFÁhv˜Ú°‰ÝçG%h I“ºšöžíw<’ 7™£ËŒ×£S Æ} Â!bÆoJçž–žÎ£O<Ç­7\vÐÐำFâ3 b*ªjÈHì·âÀzea•˜³ÿ%hšìãâ Îäý÷Þ# ÁQX?'¥‚'`ìU1ƒâI Ù«ìýÜ õ®ÅKBýsÍŸFZ€ÞŸ”æÛïüBÄDâ} ¤ø÷N#%HÑp;©€DÙo8~Ï"šá­eŸÿÑý$$â;¯íkÿ@}±Ôý¤¤ö··”<$¤¦ýPˆ¥D á¦Aq9²ëÑ–rð´î{êÁ¾Âq¸æÍ:jöùuù›ž å—|GƒNu.× øÙÿ¤Ý¤›7Ë¥aÖ#UQ¨­ ²zõjJJJ0MóÑØWHâ,ñUêmÛ¶¥E‹®€üŽöÈÝ—âü0yîÚßÅå·i‡)QT’’5jDÿþý÷º°öÔ«X,†ãÄ„¤Œo}kš&55µlܸÞß;¢p°?@´÷±½k—ßR‡âÿ(ŠBMM ø|>,ËB‰#‰Ä°, G'>WRSSKZj ¥»J‹ëqÄåWØ\Ùks×þ..‡®íÚóšáˆú°x‹XÌÄñµj‘HሽëD\ù Ä—ô›mÙtXf§ß›í8ØŽmÙØ¶ƒ‡ßÈ_? ïñx)((ØO½]þo{PÊQ¾ÿ‰‹Ëïå§3ë*ì™-QPöFjޱ.,Uýa9Y,#»š‹‹ËCbbâ &Œ÷pVi—ânV—?HñU4õÿ§à×/Î:Ä EÕД#Ûîñk‡ð>jnÇíh¥á ˆ¢¢i:'~h¿³²(*zýw麎[W~Aý¯ýutBQ±«·RTÄ{îÙ)Ýã6×÷ùœ‚¦k(õïûE¿A†)/ÝÅîªòP •„wo¢¨ÚáÐ|eýuÿÎïRm¯½u4UA¢ ¨Úe·~_ ,eçîrêbòˆˆÀífKQ5ŽêVŒ£‘†µ]õà³+X·v Å•TN£ÖtÍÍ$ÉPùµYEÀ ïdÙò"BªŠn$Ò´M-SwCŠƒØ_Ç+êØ±i›J‚¨ŠÀInAûÜæd$è8õÃvÕH$öÙ]œ»æÞºq8mËY]$ÈnOUQ¬2V/© ½S>^pD5Û¿«&±½Á®myMð8?“ÒDõˆ¬âõ§gRÛúdþù;Óê+H3Èš×.çÿDVÝÜ’šØï§TT4»’M›£¤g5&ɯ£ü¯†¢HÌp)EË7R®¨(¾d2sóéÐH²{ûV6o-# øç×®‰K_âÎÿ&sÖ9WrV§Q[üf{¨"Béâ \öDSç]EFmÔMµÿ[û&rßÇ{\$“ïáåúj8¢jÝͦÏ^ãÞ—?`éŽ )˜lk2Š×Ÿ¹™?µk‚g¯KC`™ ® ÑÐTp,©yÑU‰cÅ0Ã;ùîÕ¿1î™…D“DrS\ö¯^‘MØ€Šª€¶máH5>JÑT$Žmã8)4¯MUâ ÔlËi`‘cŠ f5;¾~Ç^šÌô5U4V-v¦ ä/ãoeì ¶x¤D:6¶m‘ÕëxœwPe:x#3¹ñô-<ôõôNIÀ^õ çŸð)g}³˜» LÂ3¹{ð.\9ˆÙ¯øxà¹3È0-œúû&…À±Ml}ê^MøIH `y5 šÇƒ®ª(lËÆ ºGAØBªx¼*Že#¤‚æÑ–Ôu-# Ò¦¨yÅ¿Ï6ãI)(£º‰m[ j)Y2[Îy‡]-T‚Þfô>÷¦\Õˆ/_{{_\‹¯qvæ0®½ãnëÒß´µT–U`k `í_6ÛFQV'À±bØP4¼^š°ðùIJð¢r&>o&Žƒm;(ºM©¯RÅãÑ@ØØŽ‚îÕÑê¯Ý±,l!*õ …øaåù‡#œ½Q[‡‹4ÑŒåŸ=Ê­ÒãÏSxç´||À†‰/³Égb)U¬»˜­µa,ré7¢¬í|·"Œ/²‘¢¶ýá]õ1߇(8v©•syáž(Ëœ‚ÉÎßòéôbv—˜¬^W†SR«–“OÇŽ]È2ÊÙXø=«7í"B"­ºu§]vca¶|õ5kwUͺœ@ç‰xÔ†SATAÍâyôÑw1Ï|†M3úlŸ>ÕIµTZ•T,Úˆ“ÕšÜf:fב\¾ù6¾Ùq*Ë09mQA¯4õŸ-¥Û9MX·1ŠZ  lÝÆî³†Ð·Åqä_m£–läÛM&IÊ÷¬Þ¡‘œ‘EA÷¾dûk)-ZÉòÂ{˶”Ó"׃O ±uÑVoÝM„,º×…ÜÄjV,‹Õ¦9¾2VAVÿ¶dø¶/ÚŒ·{GR‹òéÒ2¤¢àiÚ•=›àï6„ónx‘kÏå,Ê)Yû߬­Añ¥Ð4¯íR«)ÞQGjÛž4K ²{õf*ì4²²%[¿_Å–ÝaHnMÞíIÚ°Xx3ßÍ™îœÄ m-–ÌZAIÔ‘itr,ÙÎV¾]!ÛHQv}ú£¬üˆufû ¡•ÜWËá’e[¸¬-lŸó2Ï=5Ïϸ‚¶C.ç¥ëOcxóJ>¹mÓ?øïN9‡3"Ÿ±zã¶Ì#/±–M_ÌgÍî¢RÒ¢}D‘l©‚6ýã_û)«ª5ÚöAÛdbÛøê“TI“Š éM~´eŠ®Æ¨Øº’¥ËŠ)šæu¤K×Lj–- (–N›Žíhî¯dåüõXÍÚѱ•àûyËØZ©tÔ—ÜD¥gBÓ4­~B]î Rõ ãîÛ½a½õù±<šÇC‰×#˜ÿ¥c.ÃÃó55TKIÖ˜‹i©ÙúîC<ø·ï¨ðÚ×ôç%þ‘5›Î›G×~Õ¬[¼F?ÃЭ/ðéŠ"Ro\ÀÄQ94oQÉüiÓ ·?§t?ŽË.ßÈŒþÎ=O®¡Ý1Ek¶kÔŸsz’‹Ò¿ãÃOæ³-»°BºŠ[¯?¼Syùáwù¦"D”Çßq ùÍ’ðª 'Q ®KVzIév2ç]ßom5ÕÒ†ÈñxñW¿Ã]ç?„}Ã?xøÚãI´ 8þÜ50…»M¬•ãáéÑ%Áøg&°®÷JWe“Ó¥ ‰R'+8wM»—v!Ï_ñ(¿ñ$ÕF˜­¥Í9ýŽ‹iUù}|6 úø™óî[È ž`ÚE}i¢ƒ Š9 ªo¥)‚í±¦” ÆÞV$¾ŸŠ‹á¨MÏá¸sG#:6Á¯Û¦U×áìþd 5‘®ä“Ë‚o¶¢öÞÈÙ†Û;·§Ë¼ÏX£t`õœMô0»Ö )É@—Aüø–ç›náãgžâÑo0«x= wõæ…Â'8Þ¿”Ý?“Pd“Ÿû˜H·xïÉsi³|<½Æ}ÂWFs|Úlj,‡Us×3ä®4æ|YÅõ-×±6«—…gsîÁ)Sÿͽgw¥äÕ稴ºG£Eþ l[üÛõ/˜ñikn]þç·VØ8÷ Rºö¦{÷2æÌ[L¸ñj67nJçrÙùÔLê¼çðüŒÛiùÍL6§§Óó² è6¿7?qÃÛ~ÉEžOH|ê".k’†÷û\}ÛËœ;¯ÉQ?ßýŒ— o"eô'ŒÛ¶’›¿¸NO¿OÙ×QU¾™/'OeYâH.¾¡¾ª(¦*Ñ%»æÏbÁ?¹§÷%Ç+‘mûYiªú–‰LFû,žß‹ (y™E[NßñsyÃú+éýÞ&gýn¿ƒÄkßcû…™<öp×®^Åum"”̆‹‰í3÷¡âQv³bÖtÞÿØfØ¿ï¤Cå2Þœ¸ˆ·ÿÓ…ÿõInÙù$Ÿ¿ýW–ÔYt¿cŸM¢G¢8:*àªÇƒ*ÂÞî\ût?p"ƒ1Ë$ý¸ÓÈüVì̃Fùô*ÊNÜÁêìÑdZMé•_ÊÆÈ6¶á¤n&ÎÜø‰„·éÝ.äO-L¢Q´ÔLòÍ(µj™ý{Ñ%à Ê‚Dm‰Z±›òÌÁtïÓžÆÂ†Ücè¹a2›vfÑÿÔ:¾ oeþ¢vô~¤%‹îšEé1ÅÔô;•F-¹áâïx÷ÕWynG.30BqÀð“ÕóOdÜ=›—ŸÄ˜QÏòù_ÿNÝqíiÝ®?'¤4¦ -‘­Kgðâ\?‚Ý{Oò¹Kù~Ò Þ¸û!Zçõ¤Nc´Hˉª«Á**¦<ßaÇôwØ¢kHÕÃñCúâ% Ò-©†ÊäfÓ£-]*¨MjBgÃ[ßÐøÈh=Œ?8‰ 3ŸâÉÛî¦zÒ‡ŒmSËöŸñÚsß‘Òï,NÜ5Áß}0ù/Hñ¢ø\œÉÕíÓñZuÔD<$„MìÇÑ--H$”F§#è]_?ºú(© ²ÿMœÚ&L°ª†Ú°µwŸM÷âõj(5Qb¢†mÎFæ¾ðoþk ­ 'tL¦šιº“N¼†™e^ç$”¼My®Í–/gPºÌ@¢rLÿþ$ùthÀ.,)%~¿Ÿüvùøý~t]GAÙ;¿q€˜ìÙ*§þA0üã]× åfXR§_Ú: g|̧…5xSRHIM%¸d›QðÏcù =àÃÙö=ëórh¥©¨¶‰)ÇÁ¶ÍxX©ã`K›péw¼=w;èÉ´<íaf=1†¬•ë)R5t̓^+Him˜òœš’èÖ½Lþh&ŸÎœÉ'ŸŒçŒaéd-dÝÎ ¶žDJr~Úà¶¹u¤NAÒêÍàÍÏ‹QSRHII!¶n ›vc‰mÌ~m Ÿ.ÞIPj(Ò&–ÚŸ!Íæ°¼(L(¥ƒ*¿`âGËè:¸3‚LŽq”Ð IDAT _¼ùkÚ÷¢MÌÙ'ŠJ ¬(1Y”à88>ŸcmÝN5j¬–²Ê]Ô¤¤‘R³Š-vR§êP¶™ÍRH÷ëtèšOèÛ©|Ë&=u(¥¬gÖ·E× Y#ç©LŸy5MÍæ™+îáó°MõâkÜ™^Æ,ÜÚ–‘“ÞãígRöòžyä%–ZéôkMãF3ykr FË“)Ðv¡õ¹ŒÌ~k{§·ÞǤ/WS¥€(®#ªùð4IÅggpñ??fæÌ™|úñtÞ{ïFúh*Ø&–ÔkX¢þ±¢ "AJW}K‘ô º‘DJF 'a뢙ôÌ7ø‡^ÊU· ¥ÇBbKèJŸ¦k(Ž$‡—²¡$„£'‘œäC÷¨({‚<„Àvö©€’šLÒúåÅ$ú ‚Û7Pªjè2JùÚo˜þÖ*’üè¾:{!ÿžþ ŸÎü”™³žcܹ½hJ5—X´9~Ýl^¿;%ÃJãŒÞ`æ'3ùô“™>ãþ”êGkàóèRJlÛÆ4MLÓ$fÆö>6M“X,¶÷ÿ13~X–…mÛîä Hؤ×%ðù_¼õ·ÛXÒ!‡FÒ¡pe˜ó?‹‹N”<÷ìÏkLtþ7dßùÝ}óˆì ï”&¡ß#]˜D" áÊe¼rÏßX9´ "¤®Æ¢Éu§Ð¾nSç.ä¡ñ‹IØ^ÌF»)½®;‡¡E“ùçK/rýU i!œÐ…Ñ eÌh?yóîûªÉž0ù#odd—Føµ†3bÇ,Ú ëÁ°Õó™ôäÍlþº€,a³n]ˆãÆ^Èe™ÛùÏíbÝð4ç7'Q5±c)ôêŸÆ“«·sëÀœpÖvNx£ /\mi¹ |5ê俼™ÆŽC‘0 G@8‚HÄB* ÇŒP'séÜ!…•ï¼Ë7o§Ÿ±†/ÖHúöÉ9×óüë¹×b’×~…uâEôlÓˆ¦G\}þ«Î#ÍhFËá÷>ŸÊígtñ O™Àg'dáëÖ~ƒœˆƒ0T|F#ò» îxûl|(Bë?5F=±7}õö¤×:$u@~ÂLÒ*h1²/Î<ÞúÏ4žÚ¤“×Ó Õ9èÜ8 Íß^i/ñÖ?Ʊí‚1œs|îGaAê ²†r퀡°ŒïÅ☄Âz<ÂÓ6 GˆU³iÆ<ôʆdVQVR‰ÑöVŽKXÄ›wÞÇc‹²8''ƒçîxµí@F9žŽþd:uIæÅ¹Œì¿Ïßx†ûæ5!Éôè飲Ί‡¼ “ð¾õ#¬ 6뢶S¸ãÆû’¦ºx+!»?š¬eãoñð£i<Ñx:uÎ#gúTn¼¨‚nÙaž6?òX²+¦3ab5ý|š³>ÏcOLÀ›s6g<ûÔClü$ƒdÃ$Öø8.»°?Y>w…ÉaìºwÇ=E"fª‰Þý8UUÙ½»œ`(LûvyGéܽÓ:`ÿÜO|oõ_B]Ô"#5‰h4zД$ªªRYUMéîrºué¸ï×q°ÌJjúõÌÄ*/bsQ%¡ÚJ´¾§0ºk?œÔ ±yE¥%DŸÆ· ¢±®‚ÑœnÝZPÔ„tïÖŸTГséÙ¿9•KX¸-D$"IÉ=žK/ïCdéùäË$6õPÍ ßIgpþÐ.äææ“f„ضn=á0µ¢1í:t ïÀ~¨Û7QTRJu]-iíÒ©yÊÂB:Ð’.ÝÛboc͚݄몡Óñœ4 /y‰Â×”}º“Ÿ•Œ§~×Ǭ\xá¾ïéufWZ5Ò‰eäìÍñ¡ ’ñˆN8ùDZ%;H4Œ”ºtnArJ6 2ÑP RçsÜñIM®cÕÒµ(YèÕg(;pì‰ýI‰•Q´a-• ¹æò“éÒ"<ìê4œÔ—– ’ü‚"­;g÷Ï&šŽ÷û%¬ª©¥¶FÐé²û8»•$æ€î‘¨j”©v3´¿ÆæÒ*dJk޹”ã3mD¤Œ¥K7SÕ¨£Gv'ÕçÃSQJñ¶Ííª¦ñ ó9c`G§dÓºM%;6ì ”2”Ë®²~[*« †B„ŒÖôï›Kb ^.ýŠ‚–˜M·nYRÅHÉ¡{÷fø0Y½|-uA‹”¼~œyã¹t°Ë©BÃß8­ºœªÚZDJKÚ·kK“€F£’wŸÙL׳O#ßSÁö%TÕ—Í‚ÖmèÑ=›$ ¾}ëG6ÇtïA¯> ,ùz%a¡ÒràyœÜ¾í šàQ|¤çæÑ¥gZ4mMNn;W,gW8BHË‚xwãéÔcõ§G—TÊJ"$4ïÈ‰ç Æ³}-E¥»© ©ÓrèÓ»5©^­Á ˆ®ë{Gº®ï—ßo¿9ŸØݶmü~?ó|G¿>ÇüDbÆÎåHˆDc$žŸí¸* „-Gr€í Þ›sÎ9˲Pv•×ÉÊè_§«Ð$Aì·øN×u W­¥tW§ÁäÉ“)+¯bÌØk¨¨ ïw2!!# 1~a/{gUˆ‚Ü,ª««* š¦±qSË ×pÉgí÷·X,F$‰¯¬Õ ~_}l>`G FbØR'èÇ£ª(X„kÃXŠ—¿B$C¨^ü ™HÍ à“DÂÞ„D -.‰B88Uk™9åu&­èǤ—N#‹˜8ŠŽá÷áóÖ÷š„E$!æhøýxëW[[‘:"fCÜÛ[‚êÅç÷cèõöwL‘(¦£áO4PÌ(QsOŠ7¥ŠWº]Lh«\Þ1›F†E]0ïõª‰Iv¨†¨­ Ôß—hTÁ0Dü^)õ«­5‡HTàõð{5„ã …i™˜–‚ðcx4l¢¡¦í ¤Ž/Ù‘ú皟Ÿ$ŽáHJÞú ;$dÆ+¨¢ ªŠñÚåÿ¡ã‚©œ®?W$LLñ]ò2mæ°ñè©i˜a‰ÇïÃgxPaEGMlG¢‰|:˜!‚¦‚?Á^¿&'J]Xâ¯/—B3HðIÂ!3^Î A8l£}qg‚p,¢á ^ ŸŸç‡FIZ1ÂÑ(–£âO 3íÌ[X?úJÆž;ˆìúÌh M—DÂ1œŸª?Éo|­‚e"‡HÈFõ†$ZÅQ4<†¿/~ÍH›X8†£xT›X$Š­$&è8‘(Q[ÅŸègŽpbC±½‹O¢ëÊ0 Âá0ÑhÃ0öîH¸¯P,óõ‰F£¤¥§óèÏqë —aYöOžËgÄTTÕ‘@üŒ]UÊÂ*1‡M“}\|Á™¼ÿÞ{„B¡†¶'ºo°‚æAþb©«#²ŸeMB¡=Š·Ïc'¶÷q4XCtŸoÑÔ4ÚöƘœÆD#AÄžÆPQPp0#!ÌÈçŽëöùž†ŠÂ"²¸Ö¸ ìBìPS†?~1;Rý(fkß?ÇÖÄØSŒå>÷%®ï*!°­výçÌHðûÄÂAb?úEŠâ« ýð܉RÚë”#RóÿÚ;ïø*ªô?3wnM¹é¤Ah¡ƒi"ETi*èZuùÙq­kŵ÷]]+*M@•¢R•éjB'å¶iç÷GH¨9Ïçs!÷Þ¹SÞ™y¿ç}Ï™óæ*D'5£×㽈ä…D똥u®&FB#zôM"¡Y"Œp#Ì!ŽÀÒ–¹\ƒ…Æ!Û+ïºÄŠ–þ ?rpצI$XxÐ1—n×FÄÓîïW“[ 5¿G™Mä/î#D~~èÐ[Ï4Jï3¤ðà0MŒR{ À¾ƒ· –koÉiE-j~rf·˜J4™ÛS«©M$lbËm…°ô©’a„ÑmÁÑà‡7ŠºúÄ(sXf„è­iWÛm±”Ó2céZ^BŠm`˜¶,©s–ú,) ‰Óé<$x2ðF¹äPY8¼gæÅè-Is•{LGøî´Á&/ãS¯+ Á`P È)÷=‡,o+‘HÎ(ŽÔé}¦ ëH$‰D ˆD"‘H¤€3'¢CJº‘#l¿ü5ˆ¿üLT²Žv?N¬ýÅÁÓ{ ÙK+‘H9MQ…¯_zvY™Ô®S—ºuk–2„ÿôO\)-êÔ¡NÝê¤eŒàÇ qXÉ0Ö~Äu-[sç÷‘’g9l™ÿ!#øŽ"Eàf¾}¬ ÕÒkR«FuZ x€ ŠG”ê"”àÏ<ýпùiùŽ’ 甽“¹kØG,Ûôoo¥IƒlêÖ­KvvcnùvÿxO3ç}zedR³všuêÁ}癋RɨU†›rN³†Ô®žNó«þÏ–š‡V™¢x›{&sÓåíɪY›ºÕÓHÿûX¶•jÿ™Ÿ~Èåýïeâú’±ê‘żûÂû|9cBQàorM÷fdÕ¬MÍôt.{ýwÂRW$’3–³ê9Õù59¸ºo ÜÓN¡qÚlnÌ«ÇõÏŒ }ãLb~…·ü›q¯¡Y¬û!–"œÇÿŠ’iôêmüpþ\ä5‰äofùj7¦Èã›WFðäº+ùò§î$Ù›ùõ£7yíšáÿy¾uÊÙ)kkVn&»Hß/0Æv–/Ë#€—Âïoãœg|<óѧÔÕ`ÿÈpó˜…¼ÓeôK»¾çÙÔ]¬ÏÏäi^xï{.ݶ‘Ù“'1eM#x¤ ±Ä^ÃQžgÇþãU®<•¤;îç¿ÿ¬E¼ÃÁŒQï2?Ô‘î±É•6Rh§#…¿ÎfÞ7chrçÕÔl\¿™HC7æê·¹ú‘ù4»î9îlZƒß^êÖ‡¡Ïøpxü9Z"‘r ±=)ÔkZvkïÿ0´‡§õÎiEëú Ðx?ø kF ¤q¬ûP(Q)¹¥Ïú¿´ŠÜd€¢árÙ¸bߤò·oï¢S@CÝí&À·,œ¶˜+ë´ÀQN¢:=DÇú÷o+.¯sî¨9Œ¾~½ÞÈ•mÒJyCÞø|W½;‰]¢È]]Ÿ;.nDc aÓV´?W%!ÉCBÍDö¬ü‹B hÝ îÃZÅdöW ©5äz†¾‚ÆÑÅŸÖáèñ TfYC­Î%]³3¼ŽOfy¸³†ªºñÅ.çó'~¢ZÓA êÛƒú€Æ¼þe=ž˜Ëš!MiéñÉ9$™Â:uøwNá‘^u‰MH >Þ‡SíÃ[ÓVQäñâõúŠšö.ŸU‹!Qs”{ðP´Xj\ý#×^ÈKK¢ˆÒ@‰±gûNvœÓ›>Ye~\—ú±±hK×’[®DûˆÛò®='•¸øxâãHˆïÏļBÄúÅÌÊèŵ’Ë8r/iÝ;Òð‡Å¬‰êB»N£i•ZŸ¶¯¬FU}$&yŠ#³¸Ä¥°‹gI=¼~ÌaÊ÷*ñuê’½ÿcWR2ÑŽÊgH:J³ÁÜÐ(ã·WY²)¯Ë¶u Üi{~cjyÊìC뎜³pëCLy/J$R@N%Eqçsû+“X²f.]ÍúÍqëùH_ý—×#ÊçDÃûî¥}¢ï°/wT&}¯¹–Éü‡í1nTÛÆ¶lìèh|™Ðaƒª›å;A+Laµ+xvìL–¬\βå«X?çE:§ÄàGˆDû‰rжn;œ¸ƒ„’Ä ã¶°uÎx^2ïAIlÈŬ96§*¢0»65’ãˆ>ÁöWD,m.íEÌÁ¯ßÏ!èu¢ºÛ‡Ûã<(Bsâ B »B$) §6…¥zˆIJ%3!…´Œ 2Ó£AÓ)LÄ[ÓgÝ–‘¤8Ž£l«±)4p5[ïý?xÒɮ߅6—p÷}3K–³ø½çyëí9¤^Øö Èä@ï+Êî—-ÂD7{0ò‹;nxœ}ËNgX­aXƒ.£ÚŠ×¸ìÁy%©°X”B¶Ô¯Næ1Y¥17ÝŸÉøç_6ïÛ‡…?Ĥ]ù°ûz' cBa¸ø» oÑ-ö.~&E‹GÓ-õA~;†°Çâ/¼’ÄUëøã›‰äБ›Fd0á«™²dOɹZ˨æc]ÓæÔŽ’$I$R@N-–ec2+œiZXöѤI Ó(nÜERõþ<ÿj/ví.ÂÕˆ›ÍyƒJ¦TöÒç3‹Û¿ý†m=‡]§uÈdu%û‰PóÎY¬8‘.­xJ­+b‚Å/wÕôsi6¾-Š¢¢(q´½y×p %»jÛ6¦õ×GÓãef}XŸq×Öá(8…sV£¡ v˜‚=t{‘_ t€¯0ÃìÞÿþˆö·–U:«kWýýzºô¬CÁ®=Ä]4ŠŸï‹âí+3KlW—oþ‰ïžíIZ´”‰äŒl´Ÿ õ@ö‡Ö.®ãQ:‡þQfkl¢*¤¡,¡àP•âhÂ.cEAUÿ¢D­Ên¿dŸJë>ˆ…OQo^`[eë†(¨ŽýÛÂFUUŽæ WEÝw<¶%Pö­÷ ÷B`Ûe¿?ÒaŸkußÿE->ac—òýÇ)‘T=lÛf÷îÝD"‘3¶ÈÙ•Â*1ìÁ‰-U-O<~垸hœ%¿)~©8=]y?ï …÷9Ûâõ)ªcߎŽ}Ⱪ^MýÖ§ (é\ÿÁB¶‹rö©ìúû׹ߩ*¨e>wäÄE-#;˜1jÙ~*ƒ^ý™-öÛ({<êë=è½rð÷G¶¿ª(§ºÿxõ€ã‘â!‘œÙTá¾Ëóµ·ˆQ•¶¾j\üøV>~ªŽ'™.÷|Ȳ{>”WµD"9)Èä³D"‘H¤€H$‰D ˆD"‘H¤€H$‰D ˆD"‘H$%œU£°vçna·á$-=…( ° ÉÍ5ˆƒ={ñ)qD¹Jfc2÷²a‹MZšBîš­%Ô¢qjɳä sÿd‹•N­$ƒMkr – Ãuúüddeá.ÚLΦÝDJ¶-l r%ÂÞùèlÛMr­š¤ú=üUÅv‘ŸÃÒ…%ã¾Äf5&+¬àrÖæ(·-4<ÑÕȪ“xèt,"Bþ¶\¶n/À@`ÛѤÕÉ$%Æ}’fºÕ)Ø–Ë–¼½èBàJÈ Fzrñ¹H$R@NgÞ{ôqFÏ 1ú¿¯2 y}ψ[Wpý/½æï¯ßN÷zIÅÎ|ÛésE?×Üø^_ù{¾¼™8XE9¼v}cþþsžÍ¥÷y/¢×ÎÄ.ÂWýn~êZ¯¸«†ÇQ; ·e¥ÒûoÝp¬[À„±óP2ýØ»=œwû3ÆÃwt'Ûq$$ô'“^ú÷½¾5®%û⟠í˜(ï4‰ä,ä¬Ja9š]E7ïzfÌúžE…€æ"*ʃ¦yˆŽöà,ûäšê&6ƃCquÁý<|g–Ø€ÍÎÙð…Ñ‹cT,O*Í|MîÚulز•¯êʬÿ~ÅîÔvôâg¶®]ÇúœMän›ÏÛO÷£vÖ<øål^·­{?£Þ„‰|óãö¡Õ>ÿ½¹vÕ0V¬Ï!''‡œußsÉ„ëèóòr”˜ê]ñ9¹ëÖ³>g#›·üδ1C¨SÞÔ,¶‰‘Ú{?YÀæµ›È-zñã$>ÿfù¾H鄲7DV¯¿óEî6nÞÁ»M#,;™¥†¼Ñ$œæèEQt»¶³ö.á—ßZÓ²ó(žv=“‹G4ä7~¦èÍZ|üÆT®øÛÓüöQª­S¸f:_ÌŠ&i[‹þÈÃÙj'‘³p2ãfæã „1<霓µK3*Y·…š‡ßã:‚¡¿cô;5ywÃÕÄîû¬%ÿö"³;Ê>ÑDrfòùŒXâC–p“˜M˶YD•»> #RRWK ~Hà † Ã_Î@\1"­=Òö…#˜Õ’Iñû‰rÈM"‘rš£XAveõç™&OñØôX”’‚ªÍå·i3YûûL_r.oýð:½ê%îs¬‡ïÇ¿q1[ƒjíS§dw’ŸÕGr—˜<áê;â…à ¾ Wd ‹§NgÝê DRzòøÓwrivL9ñ'¦c]‚ Syïù_Iè<˜Òå]&‘œ¥œumCÅ60¨ÎÍ·¤²mî<-ß…™à':wÛeÊØæ®a½Ç»/2À9C?âÉk_âŠ,kÿôæ„m”ô!Dˆ†+ ̃’ûv„`\nþ×d~úeSo®É¼O¿eNyxoÛ+b~à™–—©h¸YÏÌÚžhdš˜z»9ÐrVhGÄ´æºçÆòËÌ9Ìÿò¡ýâamaîŬÜ^„ (z3ÆÌ%'¨× ­fÚ'¿±ET¤6`Üå“yÿéé¸.½…;n=¯ü"[‰DF §ºn‚Y2ýyí¡tõNàñÝ9äÆ]ÉuçóõÛ¯S+¯ÓÁöÅÒhp2? Äw⡊ñ['aÙ:oÏ¿½ƒ¸í;Ù˜³—Ô»{P{ç>þnÏd.ÁÒ1,?Í r:)»óˆÐ‚îO`ÞÀgxâÿ6rëý·sIÝ܇øýÚ yïz&?ö4#Ã-Il{s~LäºWº~ƒ@Èw”mŒH€ü=ÅËèóÿÊs>¡Õ„çø{·úD}Ïýý'ó·œs}VêÎ ¿æWžìÿý´ãŒMv-àƒ»ïæÕUõ¹¾ÅB>xq Žì.ôèÜ–,¿œzW"‘rÓ¾C-´„¨’T—V>Æ?ëì$ÛÙ€vÏßMîƒÿbú¢ÂÄÈÆ'CÏ=\{I¼r`*ȓڎAƒ¤¦qå…«Y1k6¶OÝÖ×òÔUmÈ›±™óüÈÒ_æ¢`cDâPãÏ㜠;Q3+¥Ø°®Vüã•ëyê¹YlÛ„ì„r÷ÛÓjã~‰^]ÄVªæeÐøw¸²šEцv êu„j‡epgÓ©ûìö¤ú܉«!ý¸šŒÚ‰¸¼-¹áž(Zú½ÅQYl{†Ý‘A£ ̱n~]Ö“‹Sw“;ûG6DBÄ)õèÐî„%Ì$É©Ìøœ-¥è€RRÄ©ìG•eµ£Y™(ùgßNíâ×7ÿÃvÚW_ÃÆ2Òé1âV:§9¼‘Þêì\ý3cßø–µ>wI+ÀÆÐchÚý .ï֨̈®’4\[ BQ*Ù¥Ù(RB$’ƒògAA©³&9¨Žp ƒ¬Tç¥í2e4ÐCa‚Áàbê! lîRްMm„X8K$ ùEmˆUü±r±*ß™+6™D"‘),I¹­€TºüßCt©”µ¹I© w¾s‰lïK$’S†¡*"¤¿5ip‰D"D"‘H$R@$‰D"D"9ÉiIºÜÅ™qÁ«g™Õè¤:I¦ÛZ ìãS cã8î½2»Nh·Îñ_B^T’J ¿ßO||<~¿Ÿ¸¸8ü~?~¿ŸèèhTõôrÙÚYdýâžêœñŒüÇ(Æ.ڋÈPç¶÷yx'’] óx¼×}|“³‹°isî?&ð΀:¸²Ó¹¢( ü0}5«ò ¹i`Kœ¬åËG>dmzW®»¥3éêFÆÿo•‰?8èwËå´¯“ð…¶vÁfþìåï'vïQ ~â¡~“7ôsÞP½xÂÖ± z ©ùÿåó?T4§—Ÿ poGB&—=ò%Ot–'_RiÄÅÅ1räHV®\‰¦i!ˆŠŠ¢fÍš¤§§3`À) '̃­ÃONÆ<çV^–M¬çüçoù¥à%Þ},‹I½^ ÿ‚;y²y5üî<ýþrD¿ZàóWá›X·|»¶$uålÍÿ”¹Ï¡{!¤Ç®aæú ´R¯âŽYTKL௭®âŽÁç´ËWVv´rÙ¿í㈭ÃY°'õ_wñuǯ¸2SE mà·y:£Þ{Ž» «¿àÞ×£yò½«H¶4’ëyäI—T*Á`¡C‡2räHvïÞMrr25kÖ$++‹víÚí{¸P È àû×ÿ$èhÍßn¾†óümiþN’ÒÕš IDAT}Ÿ[Æê]aþ˜G»·®à’ hÅ[5"¸œ²¨²h½ƒMÆfò±ÒK›6µY›&ÈÛ ìÎ!Ô¹5 “rùìõUôêkóñ˜Z:ÿÁó_ng{ÂÍŸ¬á‘NNÔÐ$®k>œ™:`)lü4`®}ŸË;<Èbg* ێ䋯®dûÔøð÷F7ŸÆ<ÏeÕþË Ï—¯êìø'+"9ì^ý9+D ¶æçS°ö7>~j‘&÷ñÍò?xµµ#°áЙ¡xêÝ&þš÷x.·'Íeßt4€00L a›È‹’!¥ÿ‡Ãaâãã1bÉÉÉÔ¯_Ÿèèh Ã8í:×Ï*Ñ}1¸¢<UÞsá ED8ïÉiü4g%kzÍ¡Az ÷NÅ4lyõV¾ºõˆK«ƒñû,ܳ‹[–¬csqN¢¤™ËšzÕHˆŽ"Þ—NÍšYd\ü0s–¿Aï7&0Í0åè¬Ê"6´Ü…ŸO`GVþZçÒºU4ž¸ ,Ü‘NŠ3·Ã.¹$îdâ|J±ýU ¯ª¢DÂDb3Hò”,£”ÔpÑM¬¸ê$ŒÛ{w%ÞCjÖ~X´ž•Eݹ86߬1lMÁ_çb.a<ë Þ¦öçC¨£tçÉs¾VµÙ¼Ñé]FÍp£ÉUrB ª*‡ã!1M—Ë…mÛ§¥xœuÒ÷“E &ðéômO ¸»ßÆ|mš«ßrͣ߱;8£Hv…ÙX/TUzˆÊ£:Í[§’·c&¿ÿ±“ôtð×÷²òƒ™"|ÄÕª–]F°Å#lDv]²gá‡mÅ}ãÔ1Ìq:qUO"ùÛÿãÍ5€¢³jÅϬîsí£“IOHfó÷ÙܱÝë$áö±a³›ì˜ß™ðÃ\þ·ó\núèþus2ÆÆvšG¼¥hœ;ò.vÝøw枉'%’#ò†ç–÷t³N@¢»Žä«2{D}ECQRy¿Õ‹|úòµÔlÔƒKV§A’§KCñ=CûW†ÑØí”¢IKÕÙW|h¤™5(Zú'‰€?° "º‰m™D"Æþi¥…I8A·.åý¯ërc† ·ÇÍ?²i¡ |þ~¼ÝÒCèfñþ¡âòzƒ°*ÛD7-P¸4•â*‰lÅ…Óå@ÅB4'†ÀéÒP¥Øëàtk¨¶N0\&¨š†"T\n Å6‡tlEAQ]x< Û21 Ðû/yõI$ àvŸº´Ê# –eQ#3î¾UÎÌ*‘H$%8lÿ‡²†Ë’ê!‘H$§r ’D"‘H¤€H$‰D ˆD"‘H¤€H$‰D ˆD"‘H$R@$‰D"D"‘H$R@$‰Drf çÂ’3Š¢àp8d9à2ض}Tâ•Ö~¶+¦øá`ë¨f¢Õ4MÚí Û™¦yJ÷A ˆä˜Åò,V®\I0ÜW-­*ÛÃétR­Z5222Ðuý°Ë:N¶mÛFnn.º®Ÿvõ­O6ªªâñx¨S§n·ûˆ×’ÓédõêÕœr§yZ´ü5ØØX²³³1 C ˆäÌp–º®³hÑ"æÏŸOJJJ¹•Ôª@MÓèÖ½;i©©åF"‡ƒ¼mÛøñÇ ]å[ÓBvìØÁŽ;hÓ¦Íakb(ŠÂòåËùþûïIHH@Ó¤Û2M“Ý»wÓýâ‹É®[÷”5F䙓€ìÝ»—Y³fÑ«W/Ú¶m+lß¾‰'2}út†B(*·ý믿bè:ýúõ###CX¼x1ã'L FVµkÕ:¬øŽ7Žóڷ碋.Â-‹²‰D˜6mãÆŽåÁ…eÛ6¦iâp8þRlÛÆáp`š&¶mWùVÙÆÇ_¥`lÛÆétdGzIâóùН£SÙnPRQZÕBUZQ”}Ëío*ŒâÀív¢“HÄ<£K騶}òìvH¨é&Ú¡€Žuš ~8!²TR!ÇY#pâ‹õãq ”:bÅEt´•3£nØñ:´Š9AÍCŒß¿Ì+&Úƒ† xõœÆ&fNšÌ¤Y›pÄFáqª4<>7NM-9gÎõSañ—/ú»E{4Ô}v;ÔM:öÌäÅQ?°Í²>n¢¢œ('Á¦§Ë>HNM HÑpçóƃﳵóýÜ{Q:šCEÝõ#O½l2ðŽÎ$A"r¬ËW´õ¨ˆ»WŒçñ&°Ö( ؆‹ô&ݸnÄ54u…0ÐÐŒ\ÿúùqyäoûè”sèѦˆÏÞ[Oƹ-iY?Õ²O‰ÇnŽ@ ·™ÃoÎ×?,e¢`F"´¾ánìZŸX5ˆi+‡Dq΂E|òqˆ.kOB9ínE„ÙµúÞœË5·¶#*bRbs) ’S# -°œÉ³þdϧiÙhdFáÍÿƒ¯¾Ô¹äöŽ$:<Äø}8„a((ÂT=DylŠŠ T·Ÿ[Ì#\.\N#Á:ÉQý±:´ §bÕŠP°åw¦Î³ésOgbÃ:¦¥ŸYÅBqùˆõ¹q¸ýø£<¹¨]¿6>OQö*æÌüm²[Ñ1ÚM$?ˆiŸ| 9žã¯pÊÔ¡ E61ç×UìÔªÓ¾c6Q»eâs·SXø2·_VŸ8'xc|¸* ¡¢¶ÐðzÅ⯸ˆõ{q@˜ Š0m‹ÈîeL™–É ÿ× Ÿµ— b¢Ý¨L=D0ÂÊ)µŸÉÙ“³jfOîh4ƒûƬ`þß[€âÄë(8ñLbxÏ×X®9ñùÛsÏ;RoíW<ÿS wŽhÎΙùb’“ëÞè 3çòDz=Ôz)Y¡UâQ3ÍOzÛÜg¢öyXƒHáVó£FËN­ˆµ{kqõµØ´f#þnæ,˜ÂÒ¹“˜¶x<“¯}”Gw¡fœŠeWEI$ã¯GÇó¯äÖÁ-‰õ¥CÍ'ydêO,9§½ê/ç™ëF3}óN‚f=n{ïE®Jqš'¾¢)ÜÙëUþth¸£Ûp÷Ó*ðã_~“sbè×ïg®¸å!z«ã¹é¾1lr%Ñ¬ë †ÝÓŸ:Vz%™ùtL Dr\-˲*6"Æa¢„tŒ€Ej¿‡èõòpÞþm ‹7°mƒPøW^4ƒê·ÝBGË$´yo?5Ž»úlá7Wòç)f¼Íìõ]©±¢Ù›–²`®ƒZC¡“* Ç’’B‡ ñ¨vˆp`¿¹‡ó;¼ŒÛ41Ü´ê3„kê,áã—§á½àF®Ký“É3òql`þªþ¦~ú5¨ErF3²šµ¤s‹tœV¢"û$·h…øýþ£nI—^sB5PBa #L ;¶ç‘qR¿ÏeÔ}u›vÏàµ`µ½„Á—ùñnÿ•G§ÑÐ –m‰Ìá•Óɸõf:Ø&‘- xç‰ üóÞZd5oAƦDzõéH|ÞL>“GÛûï¦oþþ·b)cþ›É-ýëã•’Þòù|R@$g&–e‰Dޝª1 l+L¾«Ãû6e࿦pÉȶ°16ÌgììOØ™O¢m£leõv>· ¤ã9£ù}Y?ÒƒÑ4éífÁ¸¹TK+bWµFT  éÆIÍéË“ÑB à ‰T © ÚtÛAtö… º¥31!K‹&5ÓÁÚÅyìLïÉÝwö£ix6Û6Π l€ ¶¡”•ERzš\Гî-3ApäÔ¤@fþ°ÒÖ¶âˆSÅÝuÝÀ²L,S/^_D§ÐV‰*Ò1·.ãÇÙ_³l‘¬Wd=óþ·‘˯nŒ)TÌ 7ûc¶Eæ‘hÛ…[X¾9‡î£N‹æ¤/Jã²ç³õ“gxò›q°ýgô½ä¬¶¨Ù-žý³I×õJiàœ# ¥€H*Ô‚<î<¬ûzÈ…Q„»ÕƒÜ1íN>[ÚEèˆÂ ᆸ÷žŽD‡(Þ¨LjNì&Û˜¼2‡½y­i{i&K¿ÏúÁõIjчn£yøm£½h¹ã¸óŠôw+-ìÊ¢z¬v¨ŒÑkØv±í ·7Š˜Øüîµü·ß?ÉËN­6Id=úlÔnbH·úÄ9­âË~abg¤‘¶ü=6&½ÀÈV–(¾. vï`wQàŸ;)HM&ÞoáY÷fƒç¹—°a( èXªRá‡ÿNÙó0‡tIÅRÇõ²mlK'Œ`Z6¶ÆŠéÉ=·7! c9Ïgä«1Ôk؈†M[ÑqøxöÄúÐ’³pü’G“ ê번D«ü²:Vé&¦QDÞêÕ¬\½°ª Z{Ù°dë6ï!¢(¨ÖNVÍ_Éæ] !Ç»ÿ%¯ãƒÒ>¤ ÙNDh;+§ÜE‡ì†4;§MµæÒë?…s/¢iâ$º×H¡Ëß_fnn,If˜P8L$$Û…^]73öþÎô¼kwlcÕo+ÙZÆ”H.ü¾‚íº‰e ìÐf/]É.ÛÆ® ½*j» ]s–…e „âÀ™÷/ßz-Ö#«Z¾Íºža·t$Í{w½<ˆ£ús^“z4lMíË_cYQ@CíÀÈ×/fbïzÔoÔˆFMZpÞ°±ìôÅW· mbž¢Gó«ù¤¨+×÷<Ö<™šÙõ¨Ýºwÿg1ºWƒJ²Ý逌@$Ç-ºˆE˜¢˜n¢ƒ…’E÷»GÐI¸‰Û›Ï^µ1CF߇ðF[X@¾ÖŽû>o†3Á'b`UB:áXìPÚŠ®hKZà"±åM|4±/‘}ëVpùâ¨VÍOû^¦Å \^/NW 1^˨N/V~„†ã•‹ö`øÒˆ‰Wyô›¶¸SâÐ"A±—ñÊ”®Dûœ`˜Õ®âíÉq¦U)öªhR±¦{˜"5›«ÅÃBX„íÄŸ–NbŒ†Ðm<ðÈÛ](Ð-áJ¤Zªƒ×ß„DáÅÕéN^ÓŸ(Î':¢’ñ Ô”ú ym=n⪥×öQÞï´]U@õŸ„Œ‹Ø©NƒJ‘œ"R¡ßã#9¥x8¯m ÀÆÖâÈJ-Nk™Jiuêì ÷…°±M4‰™QÛÀDÓ€O؆‰†/>ž(Â01q›âFÛ41ðî-NXV%ÜÄÇj‡JIŪ;žŒ: ¤C„°68ãÒÈŽWJœÌOXÛ†ŽâM"½frq€€Ä ß>›˜øHÉŠBXÅj4©5•J±WESy•Ñò¶q”Flò¾+«ø4M,ÀÂEbfI¥çG§ «Ua[˜Š´ÚuÊô+ÙX¦‰JTr]ê$—<ðHÕ³K–+݆uVù) ’ãvœ–eUÐ „#¬ý#T„À*ÏaQÆ‘<ý„@XG~oY•k‡cuj¥HE'¢Ââ°ãAðÕ_þedï19)]β¬J˜À³øš°åº<øú³3¥‰e¸^ûÄÝR@$g¥‚aš&)))äååáp8ª¬ˆºÝnÉÍÍýËἚ¦ …ðûýB¡P•YÖ¶m’““÷ ð_‰‚Ó餰°ŒŒ 6mÚT¥gäBP½zu Ð4픊‰É1át:1 ƒ)S¦pÙe—‘””T¥K³ !X·n³fÍ"++ë°¶°m›¸¸8æÍ›GRR 6¬ÒNPQLÓdÚ´iâr¹Žhãøøx¾úê+ú÷ïOÆ «ü}XPPÀ×_MBB‚Œ@$gN«111‘Áƒóᇲ`Á‚JHc¢Ú¤IúôéC8.w™H$B=°,‹1cÆ`𦬉®ª8NHõêÕûP¡eYÜvÛm¼ñÆŒ5JÖD/‰fãââ¸ýöÛO©=¤€HŽ¹ÅššÊ}÷Ý'qõ”´®ëtëÖnݺIcüU?’¢( 6Lët²ãr"åü%©z7½DÚMÚN È1I‡ËåäÏ?W²~ýF–ÿù­Z4—V”H$) GÆ0L6Ȧe‹f|öÙ§lÛ¾[ZQ"‘Hª¥ýwÇ$ Š¢ ë:‘H¯×K0”a¥D"‘T! ??§Óy|sa)ŠR"R<$‰¤Ê‰HIà 'S”H$Éq!D"‘H$R@$‰D"D"‘H$R@ŽùH¢D"‘œH”J÷³§ÍT&ÑE¡ª¢ÈÁ]‰DRi²¡`X†^—Q‰2rÚHF¢Ÿ;öâsʬšD"‘T&¦màt:IòG …+íù½ÓF@Šª'DZuw!òÙD‰D"©„ŸÛ…ßã¬Tñ8­DQ‚Á Õ“üȉD"©4ïŠaBáâ.‚J䴛ν °Pžo‰D"©dÔÚ9íDέ%‘H$gˆ(IH$‰D ˆD"‘H¤€H$‰D ˆD"‘H¤€H$‰D"D"‘H$R@$‰D"D"‘H$R@$‰Drö¢IH$§'n·U•m¼RlÛ&‰üu«XUq¹\rV‹„X–…aR@$’ª€ÏçãË/¿dÆ „Ãa)¦n7™™™ôïßÿˆöÐ4½{÷2~üxvíÚ…eYUÚnŠ¢MëÖ­éСEEEgçl¼‰d¿üø“Oؾm={ö$11!ªî ÕŠ¢°wï^&OžÌ‡}ÄÀ°m»ÜÈcûöíŒ7¿ßϵ×^‹Çã)wÙªb7˲Xµj³ý•ˆ®ÓñüóÑu] ˆDr6ßø«W­bèСԬYÓ4«¼M’““éÛ·/o½ýö— ƒ„#†^y%111'$ms&¡ª*IIID"6ääÐ¥sçÊmìÈÛU"9ý$‰P£F t]¯ÒÑG)¶mÛ#9l FQlÛFs8HHH P–†À²,<ÉÉɬ_¿¾ò£ey»J$§·ã”p\"jÛ¶ìH?NÛI‘HäÍ/mwÆ…Ÿ\NË´°lqÚÛA ˆD"`1ª†K+6¬(Sǰ(œ˜†U\lºd9ËбD°êÀ¥9Ê„6&ºy"CÕCLÁ×\wÇú<0˜.RÐ,»Â¾Oä5$™K$§±´mû¤¼W …n¦Aõx¢¢¢ˆòùhÿÂtKAÉy“‹.zõ„eP4þF¢âÓxü·(\ª}Òöñhaér•²]‡‡è¹’–GTTÑQQÄÜ5 'æÜËD˜–U©v;Q""#‰¤ŠG ª'†=_  õ©¼>c%d&àõþ½ ]¸„Y|ßÛIJ–°‰,ËoØÂè%[¹!­€qöÚNuE±ýãËÉÃkë×Ó;ƃCQ˜6bߊ é&•‡„-]âôíJ8ÿ2‘Hª°€œØ—†Û=›7ßÎ w ¥u5?ª¥t`Ôüçq÷k¬b§¦/ž§qí’o¹!5„n‰“°b_$vrm§àp¬cÒçE<øÓ \åF)Ù‹FæB#Â’—/$))‰¤¤jÔj8„±Û ¶þü =»?Ä#C’HJJ¢Ñ…ødmþØüöþ:%~þm¯ñǦU¼óEd%%‘”Ô[Þû­† ‡B¥ÚMöH$UÓ4)((8Áá‡{ÓR–ÖiÇ L+¸—|[B ©d/œÌ²¢ºXæ7Ü~¾ƒÞ?ã*ßvvî=ùBsÔËëºN~~þñO£ºðm˜Ä¸ßª3 6@Q¡ÀqÐ"5nÏÚ!Â(bóÔg¹bÔd~ì²™Âõ?“øB¢ÑsùøwyûßïQk埌›]Àð9ô«@¸Wñßþöº#˜–w1u·}Ã#¿cZ‚›"LÂ" <8*ØÉT®€Àp8ñ²Èñ!ɉåÄãµ±ÕŒ –mßÜ(ئ…éPQ…øÝÉåO6áÙ»^ç¼Ïn¢®RÙé›ÊMÃTÜiÚØ6(Í2IGÛ>ðxí{‹Áý_cæ-–ÌÎÈñ¦’zÞ\Õt7»wiD§fÒpQ+òÜX5¯¦K­=À»gùêBÞõ/¿ì@ÁÂ2/¤AÏs‰ ¶m ” žÿR;TöpæRm8¬<[6l-TÉ-*ÿµµH¥0¢ ÊaÖÉ™›Â²LÌŒº4ÉËì%;(ÐAQ@Q-B¿/eù¹ÙÔ@ËtôßöžÎe|‡.à䥰Ž' Sa»Ô¨Ï9ë~àûÅ{–ñãF ˆàšsMÿ…ÜòÇNòrV2ÿãÉêÅ}¶‰i{XÛتM±Á6aŒ=á/ǪÜ\6oØÂ–¼Ï¸£}¾ˆ‰u íöW(@^‰1…u$Ñ’º!‘œxñ8ñH„`a3¬G¯×?§AÖ@ZWóãöÌçåïsï—d0a†NõþOóð´ž ~#nlˆWSNJ&âXaeD á¢s¹áéZ\|ëã$s]£Ü¨ŠÂ//¾FÊð¦$·kO­Ð –ÿ¹—%S§±ÒÑlsßè'˶±-Ã[—ìëX1ë ÆÎjÉe58“â¨)3ù[Áw5ãi‘BWãÈT ì}ˆ…b‹J¹†*[H¥ø%û@$’*ÂÂ{q]0Š)ÜGß»¯å‰=:vD§Ï[‹ùà|'Öæ¤$Û¨–éô}ûMÖu¼•«ãÞ „Œ/!ǓªðL¼‘|¢º¿É¯ÝÎe×]Í+º ÂFø6ó2[¡5lÃ5¾‹'ÊC³ËÓ#Ùƒêt’”èÓ ._4±Þ(ê¶¿’óÿXË£CÚñ¼bÑðŠ‘2%%‘œv”NxÒKRPîLߊŠJÐ æëÇœŒH¬2;­H€ürêXéÁ½èÁC?ß7°°0"¥oõpý R&f°ˆÈAëФÂv;¡ˆ¦ix\â˜ÄãÒp:TlKÞèɉ˲p:GU…ïlÄÜn7–eQ2MÓ0M³ÊN¨(„@UU4M«Ô‘X¢Äÿkš†¶bù2Žg½n—›‚ÝÛˆ•w»DræêÕ«©W¯;wî¬Ò³Ê !HNNfÍš5¸\®#F<‡Ã0ضmiiiìÞ½»Ê–.½Ž\.[¶lÁívWNãFUÙ°üwšíæ‡ßÎÙ6n›áwŒw¼DR‰Ø¶M‹-˜:u*Á`P6Ò€ÜÜ\fΜIóæÍè0£££INNfÒ¤I´k×§ÓY¥g4B““ÃÚµk9ÿüó+¥8™CU;~,Š¢ -[¶ì¸WT-%‡Ã!ïx‰¤±,‹Ë/¿Û¶Yºti•¯ªàt:©S§W^yåak¢ !HLL¤wïÞL™2…9sæTùz*Š¢àv»éСíÚµ«”šè¦iòÏçG£9+8 ËápÈzÉ  Ò»wï*›~9œ@N<Ê:·˜˜®»î:i°ƒìRâQJ AÓœr¯DrºRÕ;ÏÛ¶ …BÒåD#•lÞH$‰D ˆD"‘H¤€H$‰D ˆD"‘H¤€H$‰D"D"‘H$ǃø«‚R‰D"‘”Gi=) ‰D"9.ÑNìFª"k§K$É™Bq™ò£+ò¡ÈÈ«*R>$‰äL´•£*ñqB#ÝYªJ"‘HÎ,ŽÖkk§ÃNH$‰äÌCv¢K$‰D ˆD"‘HN•’”Ô~—9+‰D"9+)¯ôS…DM#!Ú[õJ K$ÉYŒ×£'TH@¢¢¢˜4qã¾SR:RA p9]X–‰Ã¡¡ªê¾ª…º®ãð¸QK7ðz<ض@8Áçó ‰ŠòašfIA¨Ó4QEQ1mp  9Tù¼‰Dr(]ÒuÛ¶ËMÈ{Ir8 ò+G@Ö¬YC‹-=z4˜¦‰Çãᡇ¢oß¾Lœ8‘yóçS;5Û4yâý÷øéê«ÑƒAÚ<ó ͺv¥]»v¸ÝnÆŽK||<ùùùx½^ Ä_|A(Âår1sæLºwïÎÁƒÙ±myë×3¬ys‚;vòc0Ș¹se}v‰ä(°,‹ ð¯WÞ V£–#ú""ø£}'¤‚Ý©ËòßeŠå#ÎP£jš³âRU(Š‚¦ihZñêžxâ TU¥Y³f!P(NuåÌ™CÁªUTkÛ–ìóÎ#3uêT.½ôR<º®sÕUWѧO^|ñERRRؾ};.— ˲‡Ãx\.æ¯ZÅG›6qsFÁÂÂ}7†D"9 Ç%lœ.n·ë ±4B€Çã)ž«âlc‘“äÙÏôH¯Ââr¹p¹\|V ”òví"wÆ <±±dˆmYX–…ªªL›6 EQ°,k_«GQòòòŽhpQ¯võê OJ"qï^>?^z‰¤’Üšr88q°nˆãŒF¤x”Ëÿ,o$ŽÃš YIEND®B`‚pev/doc/manual/en_us/tools.docbook0000644000175000017500000001504013034016462016222 0ustar useruser Included tools cpload Usage: cpload [-m MESSAGE] FILE Load .cpl (Control Panel Item) files for debugging Example: cpload -m init notafiscal.cpl Options: If -m is present, MESSAGE should be: Option Message ------------------------------ init CPL_INIT getcount CPL_GETCOUNT inquire CPL_INQUIRE select CPL_SELECT dblclk CPL_DBLCLK stop CPL_STOP exit CPL_EXIT newinquire CPL_NEWINQUIRE startwparms CPL_STARTWPARMS setup CPL_SETUP Otherwise, cpload will send all messages to CPlApplet() ofs2rva Usage: ofs2rva <offset> FILE Convert raw file offset to RVA Example: ofs2rva 0x1b9b8 calc.exe Options: -v, --version show version and exit --help show this help and exit pedis Usage: pedis OPTIONS FILE Disassemble PE sections and functions (by default, until found a RET or LEAVE instruction) Example: pedis -r 0x4c4df putty.exe Options: --att set AT&T syntax -e, --entrypoint disassemble entrypoint -f, --format <text|csv|xml|html> change output format (default: text) -m, --mode <16|32|64> disassembly mode (default: auto) -i, <number> number of instructions to be disassembled -n, <number> number of bytes to be disassembled -o, --offset <offset> disassemble at specified file offset -r, --rva <rva> disassemble at specified RVA -s, --section <section_name> disassemble entire section given -V, --version show version and exit --help show this help and exit pehash Usage: pehash OPTIONS FILE Calculate hashes of PE pieces Example: pehash -s '.text' winzip.exe Options: -f, --format <text|csv|xml|html> change output format (default: text) -a, --all hash file, sections and headers with md5, sha1, sha256, ssdeep and imphash -c, --content hash only the file content (default) -h, --header <dos|coff|optional> hash only the header with the specified name -s, --section <section_name> hash only the section with the specified name --section-index <section_index> hash only the section at the specified index (1..n) -V, --version show version and exit --help show this help and exit pepack Usage: pepack FILE Search for packers in PE files Example: pepack putty.exe Options: -d, --database <file> use database file (default: ./userdb.txt) -f, --format <text|csv|xml|html> change output format (default: text) -V, --version show version and exit --help show this help and exit peres Usage: peres OPTIONS FILE Show information about resource section and extract it Example: peres -a putty.exe Options: -a, --all Show all information, statistics and extract resources -i, --info Show resources information -s, --statistics Show resources statistics -x, --extract Extract resources -v, --file-version Show File Version from PE resource directory -V, --version show version and exit --help Show this help and exit pescan Usage: pescan OPTIONS FILE Search for suspicious things in PE files Example: pescan putty.exe Options: -f, --format <text|csv|xml|html> change output format (default: text) -v, --verbose show more info about items found -V, --version show version and exit --help show this help and exit pesec age: pesec [OPTIONS] FILE Check for security features in PE files Example: pesec wordpad.exe Options: -f, --format <text|csv|xml|html> change output format (default: text) -c, --certoutform <text|pem> specifies the certificate output format (default: text) -o, --certout <filename> specifies the output filename to write certificates to (default: stdout) -v, --version show version and exit --help show this help and exit pestr Usage: pestr OPTIONS FILE SSearch for strings in PE files Example: pestr acrobat.exe Options: -n, --min-length set minimun string length (default: 4) -o, --offset show string offset in file -s, --section show string section, if exists -V, --version show version and exit --help show this help and exit readpe Usage: readpe OPTIONS FILE Show PE file headers Example: readpe --header optional winzip.exe Options: -A, --all full output (default) -H, --all-headers print all PE headers -S, --all-sections print all PE sections headers -f, --format <text|csv|xml|html> change output format (default: text) -d, --dirs show data directories -h, --header <dos|coff|optional> show specific header -i, --imports show imported functions -e, --exports show exported functions -V, --version show version and exit --help show this help and exit rva2ofs Usage: rva2ofs <rva> FILE Convert RVA to raw file offset Example: rva2ofs 0x12db cards.dll Options: -V, --version show version and exit --help show this help and exit pev/doc/manual/en_us/faq.docbook0000644000175000017500000001133213034026413015626 0ustar useruser FAQ (Frequently Asked Questions) What's imphash? It's a MD5 hash from the imported functions names, normally used to search for variants of the same file. The ideas was took in place by Mandiant and it is explained in their blog Tracking malware with Import Hashing, but keep in mind there are some people out there saying that the current algorithm for calculating imphash is broken. See Imphash implementation and Imphash implementation does not follows convention to understand better. This implementation from pefile is the one used in all software that we are aware of - and it's the one we use too. I use pev in Windows and everytime I run one of the pev tools I see CYGWIN complaining about Windows-style file paths. Windows version of pev are dependant on CYGWIN libraries that are included in the ZIP package provided for Windows users, so CYGWIN is still there. A workaround is setting the CYGWIN environment variable to disable these warnings: $ set CYGWIN=nodosfilewarning You can confirm the variable is set by running the following command on MS-DOS Prompt or Powershell: $ set | findstr CYGWIN If you want to make it permanent, you'll have to add this variable with this value set in System Properties - Advanced - Environment Variables, as the image below shows: How can I get the File Version from PE files like I'm used to do with previous versions of pev? Use peres tool -v swtich. Can my machine be infected when analyzing malware with pev tools? Yes. We have cpload tool that actually EXECUTES the target on Windows machines. Apart from that, attackers could exploit a vulnerability we don't know about in one of the tools to execute arbitrary code by sending you a specially crafted PE file. So please, consider using pev tools in a protected/isolated virtual machine for binary file analysis. Can any pev tool rate a file as malicious? No. Some tools can give you a hint but it's nearly impossible to programatically claim a piece of code is malicious. I can't compile pev from the latest source code on git repository. What can I do? You can open an issue on GitHub. The repository usually has under development code and sometimes things are, indeed, broken. How do I uninstall the pev version I've installed from source code? On Linux and OS X, just point to the pev source code directory and run make uninstall. On Windows, just delete the pev folder. Can I use pev with my project? Yes, as long as you respect GPLv2 terms for pev tools and LGPLv3 terms for libpe. I like pev. How do I let you guys know that? We're glad you like it. Please, consider star it on GitHub or SourceForge (you can also make a comment), send your feedback to the pev-users list, tell your friends that pev exists, anything. We look forward to hear from you. Really. I found a bug. What do I do? If you suspect it is a bug we recommend you to first discuss that in the pev-users mailing list. If you are sure, please open an issue on GitHub project page. My question is not listed here. How do I get an answer for that? Send it over to pev-users mailing list or, if you're a developer, send it to pev-devel mailing list. pev/doc/pev-icon.png0000644000175000017500000003114313034014706013361 0ustar useruser‰PNG  IHDR€€Ã>aËbKGDÿÿÿ ½§“ pHYs × ×B(›xtIMEܪDG IDATxÚí}w|Õµÿ¹3³½i½«]µUYÙê½¹È–å‚Øƒi!4“Ç{^ yù…/y!/¿„›ŽªPŒ ƽ<[–-[Å+Y½wiµEÛµevæþþÐ(,ŠmÉ t>Ÿó™ÝÙ;å~ï÷œ{îÜsÌÉL"DI@!ŸUÑ¢QÜvhà?à¿.tjî_wA!•ËáyT Ð…hLˆÊBÊcÀcœzÀR·»˜9\Û+9„q:¡RNù֪5§á âÊó€0 }P NNÍ`âÔÌé0`+ü˜cŠ9\Å æq-—ϵTI݆ª‚k©jîw)ˆ¹ÿó¹Jš\¹Õ!•ú› ìÜÖ1ÍkmâA2€KŠ«8)÷ð¤\e†sö5‚kµ\ës[ pˆú¹Ê²@+ŒLR;GÕ¡Ô=ñ™½ ÷1Ä•)žÀùEµÔpN'Zn4gs£¸ï®¥ó¹Vé§F°r-ÓBÃnë€ ×Úée®Ãý9¹óJçð•DÀ¿@WÑQœýUpÏq<Ìi pûœÚB¶N®BYNqÈÃ÷à€ö­3‚ITò]ÍÑ1³×‡à­<Èu‹0œã´º9ìäZm¨zg@e^ŽL“7S€¸ó““q­2–£â¸æMq7F…(9©| ƒ“ö/€pçiûCÔ·M‚Ü}‘ß$îAOVñ¤>î„Ærݖ˹.̇ôƒ“þý!¶øÛ,À¦®5®Ÿ;Ye=OØÚ(îs4wÌ¥V.‚hP9.$ó8›þ]új3€k¡Q“ìn×jÕ“‚Ói­ÓmÍ(ÄDÀylrhy+›š¥öürd½bHà=®’ÃBŠ© ¿ÀÃFST>„T>ºH‡îC“޽Pë'á»'W €L¸-UÌ$Zžêᣋ€a*\ì3ºÄòd—azf³Lë^§€¤›Â»H%ãiÐøtèÿZ~¾k@W1çùïÅèxª–о¡"ùÏýMu³¯ MÄ\ÄyCßp¥^ŠHçàò þ–<ïª ÀW É$ï}¶v£Dß1@„8îWé ±áW*‚ï pU`¶ ï;ÈWÒYtÓ»Yþ.‚YF{x_s¥qr–1º€ãsYxýõ×QEEêííE>Ÿ¢££‰Å‹óx< ž9s†!I'%%á5kÖÀ† 0Bh&8ʃfÁ+1 ]Ž€1F~¿_pôèQÁè訪­­M]VV6¯¿¿_át:¥^¯WèñxæuuuÉ ‚ †ñQ>Ÿïíêê;zô¨£££ÃºcÇŽ!‰Db¹ñÆý¡À7âj€º@+›é@˜6“aŒ===Ú#GŽätvvfwuu%tuué£l6[„Ëåš €ßc $I‚@ ‘Hv»L&“',,l8""¢G¯×wõ÷÷78p ª   K¥R|C pÕLžÝÀ‹ó¼ûFcÎáÇ×677¯lhhXÐÑÑc4ÑÐÐ8Àxü¶y<ðù| ¿h˲,Ð4 6› L&ÓDiþ¼yóæGEEAdd¤7))©·½½½îÈ‘#ŠŠŠNÉd²ÖÙγ­å_¨Õ«NŸ>ý¯Ÿ~úégΜI©¯¯÷öö‚ÍfÀ‰¥¤¤@ll,hµZH$Àçó}$IºB –e1MÓ¢`0¨ƒ‘‘èíí…hhhÀ¢ººº”ØØØ”ôôôU­ÕÕÕäççï@\'¸ª>š%&àb‘ Æ8ëïÿûÖ#GŽVTTˆ{{{Áívc€ÄÄDTPP€’““A­V—ÉårƒD"é‹Å>Ÿï!Ir !ÄÂã`0( ·Û-w¹\qn·{¡Õj]ÚÖÖÆ¯ªª‚žžÖd2¡ÖÖVuuuµº®®.ã†n¸e``àù˜˜˜#ß4¦S‘NKŸm€Oà_aüþgà—?ùÉO\ñññî>ú(¾¾¾»Ýnœ––F¬Y³’““ *•ê ‰DRc“Éd6—ËåW(X"‘`‘H!`YH’¿ßN§FJ¥<–eç h<ÏšÑÑÑ' CôÁƒ¡«« Èd2”––†7lØ`*--ýCQQÑË×ÈQ\ orõ·àÛ@ïW$‰žyæ<44¤~á…Ô!„£££ÑÚµk‰’’’J­Vû󨨨êÔÔÔ±KìÊMü×ÜœŒñ¹ÎÎÎWÓÒÒn-..~þàÁƒš&“‰­ªªBÃÃÃÚÑÑÑ?Ûl6ݹsçžÍÊÊrÏT'p¶ ƒ1VïÛ·oÅ| øâ‹/°Ûí©TŠòóóáöÛoïÍËËûï%K–¼ÉÙö Juu5‰1&‚àÜL€!à'‚ÎÍÍÅ€Üð>Æøƒ <—ŸŸÿ/;vìÐTWWãÞÞ^ü׿þ¼^ïOn¸á†¨ÆÆÆ§§§›¯·8qÂ?Ïx™ JÀ{;wîLûä“Oönܸ‹Åb–$I6** ?øàƒþ;v|>::šqµžøš5kd……… ëׯçŸï÷ááá¤;v~衇ÑÑÑX™LÆ<úè£ø‹/¾ø¸««+â*àŸ®V÷]b€¯½<=::ú?\³ÿ~ðù|(116nÜèZ»víK—.ý#BÈt¥'½é¦›D###ÚþþþRµ2 þ|åÊ•U<8pàó"##Û0Æ·H$’gT*Õ£»wïž×ÖÖÛ·og†¹“¢(466öob±xt&õf[åc@R©”X·nݲ²2ñþýûall gdd »îºËxóÍ7?—ŸŸÿ&BÈ;U¡™™™¤Ýn'<3::Ê>øàƒ‚wÞyÇ?ñ{AAAz}}ý£ äcŒ£”Je+A>£Ñˆ@ZPPÀDFFºwïÞÍr¦a cüù|~¯H$úͧŸ~ÑÚÚ Ÿ|ò &â>ŸïÀÿ!D_ðm@è@¾ùæ›I’â}ûöa‡Ãiiiè®»îjÈÎÎþy~~þÁ©ìý„Ô××3ñññìèè(NKKû·®®. ìØ²e ùòË/ÿW0Ì‘ÉdÀ.׿gÏž!€øøx§ÛíÙl6 Æ'kc¼ÇãùBؾ}{Doo/»sçN$•Jï—Édðû9¸ôÖ€-((𦦦ò>þøc¾Éd½^6lØ0²`Á‚Çà$ןN°ˆ@±›7o–lݺõWn·»T*•>3ñû¾}û(…B!KLL|'..îo¯½öÚ`èñ=== ¸…B!¡P(ÃáÀ! Àðî©S§d>Ÿïo¿ý¶Øb±°»víâkµÚµ¶¶V$''» ÀL7Èóm ~ óßvÛm*~KK  CëׯgÒÓÓOÄé[n¹eºA‰ÜÜÜŸüyË–-¯2 “õpeeå?‚7µµµA@Ð( QKK‹öBù|>6´òCeÉ’%/ßrË-/Ý|óÍ,Ç#z{{ñÞ½{u555?¼‚çB|W 4:Iß|óÍV§Ó~ìØ1 ( JJJ`áÂ…o­]»öM…BqA»zÏ=÷ £Ñ¸¢³³ó1Š¢æÏŸ_át:$IÖƒÁ_QÕîóù~˜“““HQ”I­V¿°ÿþV½^Ï0 ×J¥c—{K—.ý…Íf[ØÛÛ»¼¬¬ ={NžŸ¤(Ê3oÞ¼jNwV ôÊd²N‚ Jn½õÖÒáááÛív;ùå—_¶\6‚Â………ÿz×]wÆÄÄ€ÓéÄååå‚ÆÆÆkmm½\ f“ @!ýwtÇ uëÖ9 ƒ²­­ K¥RbÑ¢EÎŒŒŒ7³³³§*dûöíøÈ‘#G7mÚtkxxøßD"Q·ÓéLmooÿµZ}˜$Ieeeå¯ Ãæááጶ¶¶âžžž*•êô½÷Þû_Wú"##Û²²²þïúõë$Ihkkƒ3gÎäZ­Öõ—›­&€½ à°°0Grr²ìµ×^†a 11gff–gggïäZ8 ƒ8¤ïž×ÑѱÂçó‰´ZmEMM̀ÇÒ4}£J¥:"‰ÂH’ˆD¢ºÖÖÖû”J¥Ín·!åóùt04ètºwÛÛÛe÷Þ{o´Óéä©Tª‘wÞyÇz™Lð~FFÆæÌÌÌäÚÚZl0øµµµ,]º´£¼¼Ü_¥ ›px‰†ºß¹\ý^1x“ZÚµdË=*,,477 úúú@"‘ œœœQ•JõfTT”  ˆï¼óÎøÆÆÆ§Îœ9³ŠeÙ8•Ju²¸¸8íäÉ“/ŠÅâ¿ß_ßÙÙY(•J‹Ün·J*•:Äbqßààà’ÈÈÈ“,ËBÚÔÔÔÏL&Óê}ûöýjllL( E.—k ¸¸øÝ»ï¾ûï›7oþ'úýË_þ‚ž|òÉóš¹Í›7»7nܸeÉ’%¯455¡ŽŽ\__Ÿ+‰Þ†¯rMG1Œ¿Ì‹`üU¸+@%WØLžÂfff&ýCµZ­ 1ã³²²Þîîîþ±P(ü÷Ï>ûÌ ŸM¾Ð'Ÿ|oÛ¶ Ào~ó›¯=Ó³gÏ2?ûÙÏòx¼šÄÄÄüææfèììäää˜>üÆ8_O–1Y'~cBL@ûtZÝÅD4Ã{lss³ü£>úäµ×^[n6›ñÚµkñ¦M›¿í¶Û^ ýãòåËA‰|>_—’’R±eË@FFÆãB¡ð!§Ó)öù|Õ~¿ÿ.¥R¹C­V×Ñ4Muww?ù1,ñûý§Ÿ~ú™ßýîw¿moo_+‰ ;;Û1<ûì—}ôÑsü1ŽE<òÈ©§žzê±X<ÈQýTq²S¯„¼0Ã_s:úúúú›Íaaa(>>¾iùòå'&ÿñøñã: ãÀÿØßÐÐð²^¯W:β,û=™L¶ßb±¨Ífó¯µZí§J¥²Üãñ,áñx>N·ÿܹs9ÑÑÑü‘‘¿\.ïäóùðððh·ÛýL^^Þ‡ú)I’¯˜Íæ?ÄÅÅUFDD=sæÌ×ežxâ æðáÃŒÇã! ä-f„®®®®Œ ÓFèííÍihhH†ñüFW5¡Õt €å¡¡Ì&Á^x¡¨§§'‚¦iP«Õ]©T*›.¥®®®ç¾÷½ïíõûýügŸ}¶eëÖ­÷vvvƺ\.µN§«aY¶Êb±,²Ùl‹«ªªHNWOÓt“N§ðx<‹Y–õ!„ šššÜš™™yŸÕj}: þª··÷á’’’_”••í =çêÕ«/ôL[4MCDD„¶¥¥FqYYY)Œ§³^ eã lÚ®7ÀkpÆóÖδžÓÖÖ–àp8!ÐjµLTTTËå¼›¿wïÞ³+W®Lxâ‰'¢(jÝàà Úï÷ót:ݘF£0*‹År3A.·Ûm[¼xñ“V«5U&“íA-óz½’ÑÑÑG–-[Vqâĉ*Œñcééé/{½Þ‡¬Vë&Øsž`Mh¦ ðÀX{챑ˆˆhii¡¡!hllü¹\~“ÓéĨd< ¡Û¥WÆ_lø-ç gCˆÀ£T*1<<ü$I’ Ñh¼:Îz‘{¹``¤´´4ýܹsïƒÁ´ØØXƒÇãÁ@`¾Éd²ôõõmY$‹¢(%Ã0½‹%M§ÓímmmML–Éd&‘H”lµZºãŽ;BcP¿uëÖ_íܹ³°±±ñ|]Þ²ÛMMM~™L6 R©’$I«ÕŠù|¾J h¯öœî[Á4g†f¢ °Ûíþ±±1 IT*­T*Ç.c8¯”””V«õÞ`0˜ªÓéê¥Ré<P…BP(CE醇‡Ál6ƒV«Óëõ»D"‘Ñ`0,­¬¬üwš¦“%‰%---¨T*7 €]\÷Î eS8k_»ÎÄÄÄ:•J5ÊãñÂÇÆÆF£±ˆÅâ‰äÔø‰D •J‰D♆wü5±Z­I’™©©©eqqq8އ²³³Û(Šê–H$v¥RÙÈãñ>v¹\ är¹Œa˜s4M·VWWïöz½z@€m6›Òét¶* ÜóÈ#”oÛ¶Ír9÷%—Ëär¹‹¢¨pš¦ÏçS$IRÓèÑáIQ^|5`ÆÆÚÚÚx>ŸOȲ,P|>‚¸dOY*•B( ‰¼.—ËH’ä˜N§ëR(å‡#c¼£¦¦¦ ¨¨hŸÏWõööbŒçEEEùGFFÀw¹\Ò˜˜˜Ã}}}k***žÇîOo$‡$]b±8@ƒA`&L(zàëù¿6çOßóíž\QQÁcF01U‹$I<Ýñþ¯y’ ƒY–u2 #V(N†a!›Çã‰Éjhhø]rròûË–-{$--­Ýãñhx<žcìÐ4Í„‡‡|HQ”‡ÇãYhšþ………/ßwß}šK½‚ <<&I0Æ  ©Tj¯§é›AÅ“¢SŽ­³f‡˜àÞÒ½$ᘃðz½’ï}ï{­!«Ç㉪©©¹¿¢¢â¶æææõ­­­÷VTT¼±ÿþ)ŠÒ«Õjsxxø‘HT÷ÖÝwß}‡L&ÆÛõzý™ÑÑQÃáøþÉ“'Üÿý±—È BˆEƳ, c.>Eo2\•$Q¼™ ¥RÉ`Œé‰É,Ë¢`0xÉþJGGëp8ÂGGGGï»ï> Ã0£>Ÿ/Îh4jD"K’$fÜnwl0¬€´®®®q¹\…ÝÝÝ€L(:5M×àà J$yý~ÿ Bh¤ººúÇ{lÚl EÁ`Ç0 „€ÏçOÌS¼ÜÄ›W€+÷ßP &|hš&X–½äXEZZZ²ÕjM—Ëå;ÆÆÆ,‰$L§ÓuPåÂE!‰äË·Þzk›Ë劻ýöÛoILLüAVVÖJ§ÓiæóùVŠ¢êº»»app0ÂápĽ% K*++7]Ä^¯—bH’D</èõzÕ!ö]/ðg2B>Œ±¢( i¸Á›KºæuëÖÅ666¾DQÔÈÙ³gßP(¿ßo›?~JJÊ«r¹üU™LvT£Ñ¼¹hÑ¢g}ôÑø†††¥ÃÃÃÿc4ÿÒÞÞ¾íÔ©S÷‰Åâáõë×WÃ0 ‹å###‰D²—$ÉïçääL«/Â].—˜a ( BŸÏ' Áõd€N©Tz„B!ƒAp8|—Ë6ÝcN§°¾¾þ ·Û]¢×ë÷›æñÚ1ÆV„м¸¸¸R©ô?Äbñ=B¡p³F£q·´´ünhh¨¸££#–Ïç‡ù|>½Íf»{ïÞ½¾µk×zSRRFGGw‰ÅbŸÃáP‹D¢­4M§ ‚¼àqóÍ7Ǭ[·î¼yÝnw¬Íf“ƒAàr¹4MOÕ÷¿f  €”””Q³Ù̺\.bttT<444íˆYuu5ŽŠŠ‹Å}ååå_LìolltFFFZ…Ba8ŸÏWwuuyÀsîÜ9ñ¦M›t8ë…B¡Ýëõò@¬P(Æd2Y·ßï÷èõz3˲F‡Ã‚#I²’Çã£iúç©©© X–%êêêVFGGW¬\¹ò§G LŠKèGGGå4MƒB¡ŸÏG{½^þ¾ï® ÈÊʲ+•Ê1–eÁd2AWW—~š÷+W®ô¯^½ú§Z­ö†Ðý·Ýv۟ϯ¤iÚ866–¹fÍš—yäõ›o¾Iĺ`0HEDDxD"Ð4BH&“ý½©©©ëñÇ×9Ž¡PhR«ÕN¹\Þ»ÿ~Bh«Íf 3™LÿaµZBÓtÇ£„Bá×®ÉårÉÍfs—tGEEÕj‡ÃqÕŸõm0‹-2;vÌÑÒÒ"5ÐÝÝñꫯ¦üèG?šÖˆàoû[;Œ¯ãÊ*äîݻա§Ó)11EEEA¥Ri kT©TZš¦•N§„B¡_«ÕþO]]Ý+yyyK>ùä“m@@?þü*«Õ¿qãÆÓG…±±±Ïãââšü~ŸÏPeJ¥mŸþù×Z__ß‚d£Ñ€ôz}phhˆ ä¤àÏu¦ ##£#55ÕTYYmµZÁb±¤Ò4½ ÆWϼ,yóÍ7—X,–Í~¿?: 4M³}}}Kù|~kXXØÉÌÌL‘Íf‹‹S„‡‡+FFFlßÿþ÷å'NœxÂét¦ù|>ÊŽ?úᇚÎ;‡a|h¶íbçîííM̰X, T*aÞ¼yŽÚÚZ2¤1^µ÷3ˆKÉŒ})D£ÑtdggDDD€ÏççÓYüÚk¯É.·L»ÝžÌãññññÏ‹Åâã<`YVËãñìf³9?Hx<žÍl6«FGG]b±X100ëóù`ÂY‰Dr‚ ^ÎÏÏŸvdÒb±„ ÞÐÒÒ4MãùóçMÓ¼ÎÎÎkbŠgÒK¡WÒÄÇŽ«HMM]ÝÖÖ&êììÄÃÃË‹‹‹“a|=ÞK±X<àóùJ¥²…¦é¿Rõ¾F£‰°ÙlÉcÖjµJL&ÓzŸÏ'4-©©©ÇµZíê¥K—Z[[5 ‰Dݧº¼¼|Ú ÚÒÒ¢ïïï¿­¹¹H’D™™™»ÝÎØl6ÑyB¾×54£§‘ÅÆÆ~V\\lW*•`·Û¡©©)~hhhÆø²ZÇ«’ÉdÍã[,Xà‘ËåƒÁà.£Ñ˜¢V«}Á`P>1åõz“m6›–eY>B(^¯×׉Åâ&†a^4 öK`žÑh¼¿ªªJb·Û±N§ƒèèhuuup’/v]M¦3×íjMMM=”ŸŸÏ°,‹›šš¨†††µgΜYv9å•——[¤RéÛgÑh¼µµµu(;;ûIII?lmm•H$‘R©ô‹ÅbˆŽŽ6Éd2ošÛíV/dÆð›ßü¦âRÎÙÙÙ™ÚÚÚúÄ©S§!ÙÙÙŒÏ烖–\£M—âÌø‰¤±±±[W¬XÁ†……!“É„Ož<×ÜÜüo.—Kq9åY­Öz†a†$IviiiüöíÛýGŽÙÿãÿxÇûOFó~||üѨ¨¨ê@ È0LÌððpŒËå*ONN~kÆ —4§¯¯¯ï»wïF‡GEE¡ÌÌÌ@yyùMÓ×,)&`ÆgËÌ̬KOO«¤¤aŒ¡¶¶ªªªn)//€ËçsIâõzmA ™Íæ5ÃÃà ûúÓŸŽÕ××oojjúaRRÒ&»Ý¾ulll;BèM·ÛýÛÛo¿ý™>úÈy)窪ªÚ|ðàÁkjj0ŸÏ‡¢¢"6 ºW;úw©b€ñÌW+aHGGGÊŸÿüç¾ÄÄD LRRþÃþбk×®™LvI NKK[Ñ?þüsË–-K¾V×ÜÛÛ[ôüóÏÛµZ-699?÷Üsc™™™6ÿ¿ÒüLß~'pBæÏŸß¢Óé¶®Zµ  ÑÖÖ†÷íÛ—Ø××÷§§Ÿ~:wºå,Y²$Íb±üÊãñD"„þzâĉk’âÕétê÷íÛ÷â{ï½§0™L8,, JKKƒ½½½cmmmb¸ÆKõ\Š8k’Iüú׿n'‚]¾|9ðx<8qâ{ðàÁB©TúÒ«¯¾š5­þ1EeÈd2qXXXCRRÒ±kq.—+öƒ>xþÃ?,jnnÆ<Š‹‹qdd¤s×®]”ßïÍp޾)Ìø@Ðdill$ýôSl6›åÜ_¿ñ(l?a<õèl‘àØ¼yó/_yåC^^F1b±¯ZµŠ}ã7*FãšéôðÃ_uàwwwg¿üòËW­ZÅÈd2 Œ^¯g_~ùe_iiéŒOéÍÍxÍ|€éˆL0žxp¶ÈD’Ä‚ÎÎÎ[_xáKFF&‚‹Å¸  €}þùçûêëëŸÀ_Wf;{öì/¼ðB×Â… ±X,ÆÀFDD°[¶laî¼Ý9eäIDATóÎ~Ÿƒq5+ÿŠ` Ü7‹p'ŒObɨ««{àÅ_´feeaŠ¢X>Ÿð“O>é=pàÀ;.—K{­/c,>|øðû?ÿùÏi½^)ŠbI’d)ŠÂ›7oÆ[·ní'I2×&+ë•9ª`ƒñ¬Û³‰ºa±õÃù'&~“ ð„znßú’’’÷î¸ãù‰'ðñãÇÑèè(ƒAG¬[·²³³ óæÍûsXXXeLLÌp\\œG(N{(Œ1!ŒF£Ìh4F9Ž£££ÏTVVF>|úûûY’$ Š¢0ÇÏ0í÷cš¦ñ~ô#‚$Éö—^zi>\ýuЕ 40¾š\9ƒÜ¶‡£[Çvppjç h0× wÂøúw÷NBèŒñß´Z­ô‰'ž°Z,EEE¯¥¥eb•X°`*))½^?ö‰Z­®U©TC2™Ì"ì!ŸÏˆÅb†[` ƒA>˲’@ æt:µF£Qo³ÙšÍæ[Z[[•gΜ®®.Œ1±XŒT*ÄÄİqqq>š¦Éªª*A__Žˆˆ€gŸ}Öñì³Ïú-‹.¾2ûuÀ2ˆ€pZˆäT _+‡â*Û ÎlX8ÂãSËMœš¹ß<ÃB”¾ ¹ž€ÀW)R€”¢(Ó† Äééé¬ÑhŸ;wŽ×ÚÚŠFGG1`FC¤¤¤@\\(•Ê™L6(‹­À!<|>Ÿ`†GÓ´Ðï÷+Ünw¸Ó錳X,êîînhoo³ÙŒ1Æ  Q||<$%%ù³³³‡“““ :®ÜçóéÞzë­û÷ìÙ£r¹\ìÆqBBÂÀŸþô§HøêEt-`:ïLδ!†ñœA_Idâsx0&À¡€$î?IŽ®Ò]XÜ8Œ0©™cW <œÉñMãšiŽü!û&ì) ƒŸ~úiÐ`0Œy—/_(((@ÝÝÝ’úúz400eee\.×Êd2­D"¡PB¡pâ5m`hš¯× .— œN'x<˜ÈF†‚¤¤$”••åÍÍÍ­OII9˜””t4##£ !4ˆ1455EÖÕÕÝÙÖÖ†***PNNŽ255ÕÒÜÜu=låå${ãôBQÃÉ*ä€0¡ZPrªæ€£ƒñ$2.ôà*ÚÇUü8L£Ø8p8¸ÏÎüÐ`4!æ'¡Ÿ©ÎÎNY?éËÌÌ êõzkrr2øý~ª««KÑÑÑ###0<< ,ËNk,ž›Ÿˆ(ŠÂEEEhùòå5YYYïGGG±dÉ#Bè3—BþúúúNŸ>½¢··Wc±Xp]]hÅŠtsss $ {͖빞}`¾J`<ñYÈ!ŒS9§ (Q›h¹J ]P!È©/^î{ Ç\›9Ü ïpå30éuwnf±3!!GFF¢ððp¿R©$ù|>%•JŸÏ§t¹\(MÓÀÍÕ„c°Ûí`0ðÐЊ‹‹ƒM›6u¬Y³æÑÅ‹Ÿ¸Øº@¯¿þú¡çŸ~uww7އ»îºËýù矣¦¦&éµö®gºþ9Aƒ›óÎw¡$gn„ÜVòY ±œFs@‰€Tøj6ó'!•?aΟ4ƒA åÐÔÔ„)Šâ………"‘ˆàóù¬T*Q«Õ¬P(ÔÈd2SXXØèD9ÜdT&##CÁçócwî܉ƒÁ bYVƦZjÅŠï;vlqoo¯Äh4âQzzº­©©‰‚¯rÍÉyP=ñ€$kÌãLJ,×ÒC% Æ3vtpæÂ5É NÑÿ¦ @K’$M’¤$I?§>”””ØÿøÇ?Ú ¦(Š}ðÁñöíÛ·ÛíS®¿üî»ï6ÆÆÆb‚ pff&ûôÓO›bccÝðÏy¯ûpðLb<œ åÈ>®’C¥ 6À|Ép#<ãùÞƒñ4.Ðɘ¸rüØx,Ë"†a(†a Ãð9¯¹¹™çp8 ''‚Á œ={ìvûF£Q9ÕÍäææn]¶l`Œ¡¿¿ÙíveBB‚7$×Á5¦¾Ã 2Äiùy~“sŽi §:NçqŽª,Ä_™øf³YÐÜÜLdffBee%´µµá¾¾¾¢-[¶«€_ñ8Üã 8 ¹«›àq—Ëõ'§Ó¹§¸¸455!Š¢„999.® ©ô ¥€A“_s>Àõ–¬¬¬žÖÖÖ#z½>appª««qCCÃí>Ÿ/^(öœçz ¼^/ZµjUVUUUÁñãǵCCC¸¯¯î¹çžrƒÁ°‹‰DsñçƒHCü×]FÓe÷9\áñx¶Ó§OïÌÊÊÚP__n±Xð±cÇPQQÑÀpÞ€o¼±Éb±lÏÉÉyêСC`0 ¸¸8c\‰ê˜tœŒ‹¦ª@Åièg Ìð,oßZÁGÿíoÛ•››‹'–«}ñÅcÝTÇž>}ú†§žzj$,, “$ÉÞwß}xïÞ½¿¸ŒË § $Íù×*J…Ð`ffæþ¬¬,—H$B‹ÊÊÊ”§OŸ~bªc +222'''Ã0PYY ?°Z­±—x L1x6€k(………û-ZÔ¤Ñh€eYl0xƒ¡t* IÒ˜˜¸'''Ç*‹Qww7®««K«­­½éj_ã®- ôÉÉÉñA•••󫪪6Lulvvö¡üüüúøøx i***Pww÷Ccùf‘¼ºjժѰ°0äóùpmm­¬¶¶v5Æø¢KÅ+ ³^¯ÿ´°°ÐÃãñ »»={6µ¢¢â¦9Ì.ÈÏÏß_XXˆišÆCCCDcccá™3g §Á{ bbb`ll WUU…uvv>€1&ç0‹$//ï¹›nº)(“ÉÍfÃuuuêöööïaŒç]ì¸ðððžùóçPXXÈ’$ íííP[[›uöìÙÕs˜EÂçó»³³³÷.\¸Ñ4 ===¼ÖÖÖÒŠŠŠ„i°Àî‚‚kDD²Ûí¸®®N×ÞÞ~ÛÕšÐ2€ë$:î—«W¯±XŒ¸5€ôCCCkY–½è²|çRSS?ÎÉÉ„466Bss󊺺º‚9Ì"ILLlNIIù¢°°ÛÞÞÎïìì¼±ºº:j ‚ÉÈÈØ•ŸŸ?ªV«‘ÑhÄ I«¯†/0€ë(r¹ü÷%%% ˆÎÎNhoo/2™L+ÌfóEë!>>þDVVÖÑôôtÀCMM ôôôÜ_WW3€Y$b±¸!>>~W^^x½^¶¡¡êïïß`6›ÕS°@`Á‚äååy êëëÃçÎK¾b˜Àu”ÈÈÈ1µZ½=??ø|>Q__===k§Ì\"“Éçåå?>°, §N‚¡¡¡Ÿ=zT0€Y"qqqldddU||ü¡ÔÔTðxtuuÁÉ“'S:;;×Í`Innn[RRRyrr2&I***pggçCíííº)œAllì¾üüüF>Ÿ——— ëëëŸÀ,„ÐXJJÊ—ééé]Z­Ùív|øða<88øË©ŽMIIiINNþ,##(Š‚ööv(//Ï7›ÍËæ0»XÀžž^‘À*** ±±ñvŸÏ7 ø’““÷æåå™är9òx<øÌ™3ªŠŠŠÌ`v±€-33óËììl›B¡@‹9rDY[[ûãi°À±ÜÜÜ“ÉÉÉ€1Æ­­­ÄéÓ§K=Oîf‘äååÍËË«Òét,AP]]Í3 7aŒc¦òÒÒÒvÙ²ÛíØ`0Ä=zôÆ9Ì.0çççïÏÍÍõòù|422åååI555ßŸêØ´´´-ZÔhšÆMMMBƒÁ°Ž¦iýf‘äää|\\\܉‚Á k05557bŒ§$¢“’’Þ]ºt©!„L&ª¯¯OÞ¿ÿ¢9Ì.0æççï)**¢BÄÀÀÔÖÖ.ª®®ž2;{^^ÞÅÅÅæèèhäõzqCCüÖÖÖ[0ƪ9Ì._àÕÒÒR£V«·ÛÏž=+ihhX‹1žjÈ»­¤¤‰ºººœ={ö$Ï`v±ÀpVVÖ'‹-–eQGG455­®©©™2³yDDÄ[ . GN§š››[ZZVbŒys˜Eõ§+VŒi4°ÙlPSS£îéé¹Ãét^t(55u(&&æ½E‹àþþ~ª¶¶6÷Àóæ0‹$>>~8))iÛâÅ‹eYÜÒÒ7 $LÁ¬F£y????(—Ë‘Éd‚ºººÄC‡éæ0Ë„ ˆ?/[¶ s¯~Aeee\OOÏ=•••Ä]¶˜˜˜ÏÒÒÒc F£1îøñãQ/½ôšÀ,’ùóç›^)**–eÙ¦¦&tîܹu±±±D2oÞ<‡V«=œšš ! i:Ìf³)wîÜ9Ç³Ì x5Í»‹-¢U*Ñ××555Yw^蘮®.¾Á`Xb2™Ö Æ(Š©TÊêõú9Ì6INNnKLLü077†akkk‰ÚÚÚ{0Æ‘¡ÿ òêêêBƒÁðß_~ùåûüñ­ÿû¿ÿËR111ÝùùùýÛ¶m›Ë2ÛD£ÑØËÊÊ>ÏÏÏ¿Ý`0H;::pMMÍ¢²²²Å¿îõz…555i}ôÑºæææÒ¦¦¦TƒÁ½½½˜¢(TXX«V­ª\¹reó›o¾ s˜…²`Á‚éééå™™™7;v —••¡¸¸¸ÍÙýýý¢îî¶¶¨®®.èëëÃcˆŒŒDK—.…âââÚ¬¬¬¿­\¹rdZ1ˆ¹Ç=3åøñã?üòË/ÿòöÛoK­V+މ‰A*• »\.d³ÙÀf³˲X¥R¡eË–AQQÑXBBÂ+z½þ⢢Ú“s˜bµZåûöíÛòùçŸ?ôå—_‚ÏçÃE˲À0 Òh4PZZ .´GFFþJ¥úlÁ‚=z½Þ})ç™33TT*•³­­íß ‚¨ÄÿìèÑ£z§Ó‰% *((è_±bŧiiiŸ!„ꢣ£½ . ^Îyþ?’:óÛÔæ¦IEND®B`‚pev/doc/tutorial/0000755000175000017500000000000013034014706012774 5ustar useruserpev/doc/tutorial/pt_BR/0000755000175000017500000000000013034014706014002 5ustar useruserpev/doc/tutorial/pt_BR/Makefile0000644000175000017500000000076713034014706015454 0ustar useruser# apt-get install docbook docbook-xsl xsltproc fop NAME=pev-tutorial XSL=/usr/share/xml/docbook/stylesheet/nwalsh/html/chunk.xsl FOXSL=/usr/share/xml/docbook/stylesheet/nwalsh/fo/docbook.xsl SRC=tutorial.docbook HTML_DIR=html PDF_DIR=pdf VERSION=1.0 html: mkdir -p $(HTML_DIR) xsltproc -o $(HTML_DIR)/ $(XSL) $(SRC) pdf: mkdir -p $(PDF_DIR) xsltproc -o $(NAME).fo $(FOXSL) $(SRC) fop $(NAME).fo -pdf $(PDF_DIR)/$(NAME)-$(VERSION).pdf clean: rm -rf *.html *.pdf *.fo *~ $(HTML_DIR) $(PDF_DIR) pev/doc/tutorial/pt_BR/tutorial.docbook0000644000175000017500000000037413034014706017213 0ustar useruser ]> &info; &pe; &license; pev/doc/tutorial/pt_BR/info.docbook0000644000175000017500000000152313034014706016300 0ustar useruser Análise de arquivos PE com o pev Tutorial para iniciantes 2013-12-03 1.0 2013 Fernando Mercês Você tem permissão para copiar, distribuir e/ou modificar este documento sob os termos da licença GNU Free Documentation License (GFDL), versão 1.3 ou superior, publicada pela Free Software Foundation. Uma cópia da licença (em inglês) está disponível no apêndice "GNU Free Documentation License". pev pe malware análise vírus ameaças executável executáveis pev/doc/tutorial/pt_BR/pe.docbook0000644000175000017500000001416613034014706015760 0ustar useruser Visão geral do formato PE O formato PE (Portable Executable) é o padrão para arquivos executáveis utilizados nos sistemas MS-Windows atuais. Faremos um breve resumo sobre sua estrutura, mas a documentação completa (em inglês) pode ser obtida aqui. Quando um programador escreve um programa e o compila, não é somente o código escrito por ele que vai para o executável. O compilador adiciona todas as estruturas e informações necessárias para este executável seja devidamente carregado pelo sistema operacional, utilize funções de bibliotecas externas etc. Essas adição de informações precisa obedecer um padrão, uma especificação, e é exatamente aí que o formato PE entra.
Cabeçalhos Os primeiros bytes de um arquivo PE são elementos de vários cabeçalhos diferentes. Estes bytes são na realidade os valores dos vários campos dos cabeçalhos do PE. Um cabeçalho é um conjunto de campos e seus respectivos valores. Vamos analisar o primeiro cabeçalho do PE, ou seja, o que está logo no início de um arquivo PE. O primeiro cabeçalho num arquivo PE é o chamado Cabeçalho do DOS, ou no inglês, DOS Header. Este cabeçalho possui a seguinte estrutura: Cabeçalho do DOS Posição Tamanho Nome Descrição Total 64 0x00 2 e_magic Magic Number - para executáveis PE deve ser sempre 0x5a4d 0x02 2 e_cblp 0x04 2 e_cp 0x06 2 e_crlc 0x08 2 e_cparhdr 0x0a 2 e_minalloc 0x0c 2 e_maxalloc 0x0e 2 e_ss 0x10 2 e_sp 0x12 2 e_csum 0x14 2 e_ip 0x16 2 e_cs 0x18 2 e_lfarlc 0x1a 2 e_ovno 0x1c 8 e_res 0x24 2 e_oemid 0x26 2 e_oeminfo 0x28 20 e_res2 0x3c 4 e_lfanew Posição no arquivo da assinatura PE
Perceba que o valor presente nos dois primeiro bytes representa o campo de nome e_magic. A posição do início do campo está representada em hexadecimal para facilitar. Podemos então dizer que os primeiros 64 bytes de um arquivo PE definem o cabeçalho do DOS. O formato especifica que o valor do último campo, chamado e_lfanew, é na verdade o endereço de uma assinatura PE. Esta assinatura possui 4 bytes e deve ser o número 0x4550, do contrário, o arquivo não é um PE válido. Existem outros cabeçalhos no arquivo PE. Por favor, leia a documentação oficial para maiores detalhes sobre este e outros cabeçalhos existentes.
Seções Uma outra região do PE muito importante são as sessões. Tratam-se de áreas delimitadas dentro do PE para abrigar certos tipos de dados. Cada seção tem uma posição dentro do arquivo PE, ou seja, onde ela começa, e um tamanho, que torna possível saber em qual byte ela termina. Se você imaginar um executável PE como um criado-mudo, as seções seriam as gavetas. E como todo criado-mudo organizado, cada gaveta possui um tipo de roupa (uma para calças, outra para camisas e assim por diante), mas nada impede de separar duas ou mais gavetas só para camisas. O que não se pode fazer, pelo menos no PE, é misturar as coisas. O código executável fica numa seção de código. Já dados do tipo texto utilizados pelo programador para criar o programa, ficam em outra seção, que não possui código executável e sim dados. As seções possuem um nome, apesar de não ser regra. Outro atributo importante são as permissões da seção. Ela pode ser executável, legível e/ou gravável. Abaixo uma lista de de seções normalmente encontradas em executáveis PE sadios: .text / .code Seção de código executável, normalmente a primeira a ser executada (mas não é regra). Precisa de permissão de leitura e execução. .data Seção para dados (variáveis e outros). Precisa de permissão de leitura e gravação. .rdata Seção para dados somente para leitura. Precisa de permissão de leitura somente. As seções podem conter qualquer configuração. Inclusive a partir destas configurações, podemos inferir que estamos tratando de uma seção de um PE onde o criador utilizou técnicas para evitar o trabalho de analistas de malware.
pev/doc/fdl-1.3.xml0000644000175000017500000007003213034014706012721 0ustar useruser GNU Free Documentation License Version 1.3, 3 November 2008 Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. 0. PREAMBLE The purpose of this License is to make a manual, textbook, or other functional and useful document “free” in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of “copyleft”, which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. 1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The “Document”, below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as “you”. You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. A “Modified Version” of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A “Secondary Section” is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document’s overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The “Invariant Sections” are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. The “Cover Texts” are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. A “Transparent” copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not “Transparent” is called “Opaque”. Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only. The “Title Page” means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, “Title Page” means the text near the most prominent appearance of the work’s title, preceding the beginning of the body of the text. The “publisher” means any person or entity that distributes copies of the Document to the public. A section “Entitled XYZ” means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as “Acknowledgements”, “Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” of such a section when you modify the Document means that it remains a section “Entitled XYZ” according to this definition. The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License. 2. VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies. 3. COPYING IN QUANTITY If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document’s license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. 4. MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. State on the Title page the name of the publisher of the Modified Version, as the publisher. Preserve all the copyright notices of the Document. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document’s license notice. Include an unaltered copy of this License. Preserve the section Entitled “History”, Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled “History” in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the “History” section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. For any section Entitled “Acknowledgements” or “Dedications”, Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. Delete any section Entitled “Endorsements”. Such a section may not be included in the Modified Version. Do not retitle any existing section to be Entitled “Endorsements” or to conflict in title with any Invariant Section. Preserve any Warranty Disclaimers. If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version’s license notice. These titles must be distinct from any other section titles. You may add a section Entitled “Endorsements”, provided it contains nothing but endorsements of your Modified Version by various parties — for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. 5. COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections Entitled “History” in the various original documents, forming one section Entitled “History”; likewise combine any sections Entitled “Acknowledgements”, and any sections Entitled “Dedications”. You must delete all sections Entitled “Endorsements”. 6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. 7. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an “aggregate” if the copyright resulting from the compilation is not used to limit the legal rights of the compilation’s users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document’s Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate. 8. TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. If a section in the Document is Entitled “Acknowledgements”, “Dedications”, or “History”, the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title. 9. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License. However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it. 10. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See Copyleft. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License “or any later version” applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy’s public statement of acceptance of a version permanently authorizes you to choose that version for the Document. 11. RELICENSING “Massive Multiauthor Collaboration Site” (or “MMC Site”) means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A “Massive Multiauthor Collaboration” (or “MMC”) contained in the site means any set of copyrightable works thus published on the MMC site. “CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization. “Incorporate” means to publish or republish a Document, in whole or in part, as part of another Document. An MMC is “eligible for relicensing” if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008. The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing. ADDENDUM: How to use this License for your documents To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: Copyright © YEAR YOUR NAME Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License”. If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the “with… Texts.” line with this: with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software. pev/include/0000755000175000017500000000000013034266337012020 5ustar useruserpev/include/ordlookup.h0000644000175000017500000004210513034266337014211 0ustar useruser/* pev - the PE file analyzer toolkit ordlookup.h Copyright (C) 2017 pev authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ // This lookup database is necessary to match Ero Carrera's pefile imphash implementation used by VT and other programs // https://github.com/erocarrera/pefile/tree/master/ordlookup #pragma once typedef struct { int number; char fname[255]; } ord_t; ord_t oleaut32_arr[] = { { 2, "SysAllocString" }, { 3, "SysReAllocString" }, { 4, "SysAllocStringLen" }, { 5, "SysReAllocStringLen" }, { 6, "SysFreeString" }, { 7, "SysStringLen" }, { 8, "VariantInit" }, { 9, "VariantClear" }, { 10, "VariantCopy" }, { 11, "VariantCopyInd" }, { 12, "VariantChangeType" }, { 13, "VariantTimeToDosDateTime" }, { 14, "DosDateTimeToVariantTime" }, { 15, "SafeArrayCreate" }, { 16, "SafeArrayDestroy" }, { 17, "SafeArrayGetDim" }, { 18, "SafeArrayGetElemsize" }, { 19, "SafeArrayGetUBound" }, { 20, "SafeArrayGetLBound" }, { 21, "SafeArrayLock" }, { 22, "SafeArrayUnlock" }, { 23, "SafeArrayAccessData" }, { 24, "SafeArrayUnaccessData" }, { 25, "SafeArrayGetElement" }, { 26, "SafeArrayPutElement" }, { 27, "SafeArrayCopy" }, { 28, "DispGetParam" }, { 29, "DispGetIDsOfNames" }, { 30, "DispInvoke" }, { 31, "CreateDispTypeInfo" }, { 32, "CreateStdDispatch" }, { 33, "RegisterActiveObject" }, { 34, "RevokeActiveObject" }, { 35, "GetActiveObject" }, { 36, "SafeArrayAllocDescriptor" }, { 37, "SafeArrayAllocData" }, { 38, "SafeArrayDestroyDescriptor" }, { 39, "SafeArrayDestroyData" }, { 40, "SafeArrayRedim" }, { 41, "SafeArrayAllocDescriptorEx" }, { 42, "SafeArrayCreateEx" }, { 43, "SafeArrayCreateVectorEx" }, { 44, "SafeArraySetRecordInfo" }, { 45, "SafeArrayGetRecordInfo" }, { 46, "VarParseNumFromStr" }, { 47, "VarNumFromParseNum" }, { 48, "VarI2FromUI1" }, { 49, "VarI2FromI4" }, { 50, "VarI2FromR4" }, { 51, "VarI2FromR8" }, { 52, "VarI2FromCy" }, { 53, "VarI2FromDate" }, { 54, "VarI2FromStr" }, { 55, "VarI2FromDisp" }, { 56, "VarI2FromBool" }, { 57, "SafeArraySetIID" }, { 58, "VarI4FromUI1" }, { 59, "VarI4FromI2" }, { 60, "VarI4FromR4" }, { 61, "VarI4FromR8" }, { 62, "VarI4FromCy" }, { 63, "VarI4FromDate" }, { 64, "VarI4FromStr" }, { 65, "VarI4FromDisp" }, { 66, "VarI4FromBool" }, { 67, "SafeArrayGetIID" }, { 68, "VarR4FromUI1" }, { 69, "VarR4FromI2" }, { 70, "VarR4FromI4" }, { 71, "VarR4FromR8" }, { 72, "VarR4FromCy" }, { 73, "VarR4FromDate" }, { 74, "VarR4FromStr" }, { 75, "VarR4FromDisp" }, { 76, "VarR4FromBool" }, { 77, "SafeArrayGetVartype" }, { 78, "VarR8FromUI1" }, { 79, "VarR8FromI2" }, { 80, "VarR8FromI4" }, { 81, "VarR8FromR4" }, { 82, "VarR8FromCy" }, { 83, "VarR8FromDate" }, { 84, "VarR8FromStr" }, { 85, "VarR8FromDisp" }, { 86, "VarR8FromBool" }, { 87, "VarFormat" }, { 88, "VarDateFromUI1" }, { 89, "VarDateFromI2" }, { 90, "VarDateFromI4" }, { 91, "VarDateFromR4" }, { 92, "VarDateFromR8" }, { 93, "VarDateFromCy" }, { 94, "VarDateFromStr" }, { 95, "VarDateFromDisp" }, { 96, "VarDateFromBool" }, { 97, "VarFormatDateTime" }, { 98, "VarCyFromUI1" }, { 99, "VarCyFromI2" }, { 100, "VarCyFromI4" }, { 101, "VarCyFromR4" }, { 102, "VarCyFromR8" }, { 103, "VarCyFromDate" }, { 104, "VarCyFromStr" }, { 105, "VarCyFromDisp" }, { 106, "VarCyFromBool" }, { 107, "VarFormatNumber" }, { 108, "VarBstrFromUI1" }, { 109, "VarBstrFromI2" }, { 110, "VarBstrFromI4" }, { 111, "VarBstrFromR4" }, { 112, "VarBstrFromR8" }, { 113, "VarBstrFromCy" }, { 114, "VarBstrFromDate" }, { 115, "VarBstrFromDisp" }, { 116, "VarBstrFromBool" }, { 117, "VarFormatPercent" }, { 118, "VarBoolFromUI1" }, { 119, "VarBoolFromI2" }, { 120, "VarBoolFromI4" }, { 121, "VarBoolFromR4" }, { 122, "VarBoolFromR8" }, { 123, "VarBoolFromDate" }, { 124, "VarBoolFromCy" }, { 125, "VarBoolFromStr" }, { 126, "VarBoolFromDisp" }, { 127, "VarFormatCurrency" }, { 128, "VarWeekdayName" }, { 129, "VarMonthName" }, { 130, "VarUI1FromI2" }, { 131, "VarUI1FromI4" }, { 132, "VarUI1FromR4" }, { 133, "VarUI1FromR8" }, { 134, "VarUI1FromCy" }, { 135, "VarUI1FromDate" }, { 136, "VarUI1FromStr" }, { 137, "VarUI1FromDisp" }, { 138, "VarUI1FromBool" }, { 139, "VarFormatFromTokens" }, { 140, "VarTokenizeFormatString" }, { 141, "VarAdd" }, { 142, "VarAnd" }, { 143, "VarDiv" }, { 144, "DllCanUnloadNow" }, { 145, "DllGetClassObject" }, { 146, "DispCallFunc" }, { 147, "VariantChangeTypeEx" }, { 148, "SafeArrayPtrOfIndex" }, { 149, "SysStringByteLen" }, { 150, "SysAllocStringByteLen" }, { 151, "DllRegisterServer" }, { 152, "VarEqv" }, { 153, "VarIdiv" }, { 154, "VarImp" }, { 155, "VarMod" }, { 156, "VarMul" }, { 157, "VarOr" }, { 158, "VarPow" }, { 159, "VarSub" }, { 160, "CreateTypeLib" }, { 161, "LoadTypeLib" }, { 162, "LoadRegTypeLib" }, { 163, "RegisterTypeLib" }, { 164, "QueryPathOfRegTypeLib" }, { 165, "LHashValOfNameSys" }, { 166, "LHashValOfNameSysA" }, { 167, "VarXor" }, { 168, "VarAbs" }, { 169, "VarFix" }, { 170, "OaBuildVersion" }, { 171, "ClearCustData" }, { 172, "VarInt" }, { 173, "VarNeg" }, { 174, "VarNot" }, { 175, "VarRound" }, { 176, "VarCmp" }, { 177, "VarDecAdd" }, { 178, "VarDecDiv" }, { 179, "VarDecMul" }, { 180, "CreateTypeLib2" }, { 181, "VarDecSub" }, { 182, "VarDecAbs" }, { 183, "LoadTypeLibEx" }, { 184, "SystemTimeToVariantTime" }, { 185, "VariantTimeToSystemTime" }, { 186, "UnRegisterTypeLib" }, { 187, "VarDecFix" }, { 188, "VarDecInt" }, { 189, "VarDecNeg" }, { 190, "VarDecFromUI1" }, { 191, "VarDecFromI2" }, { 192, "VarDecFromI4" }, { 193, "VarDecFromR4" }, { 194, "VarDecFromR8" }, { 195, "VarDecFromDate" }, { 196, "VarDecFromCy" }, { 197, "VarDecFromStr" }, { 198, "VarDecFromDisp" }, { 199, "VarDecFromBool" }, { 200, "GetErrorInfo" }, { 201, "SetErrorInfo" }, { 202, "CreateErrorInfo" }, { 203, "VarDecRound" }, { 204, "VarDecCmp" }, { 205, "VarI2FromI1" }, { 206, "VarI2FromUI2" }, { 207, "VarI2FromUI4" }, { 208, "VarI2FromDec" }, { 209, "VarI4FromI1" }, { 210, "VarI4FromUI2" }, { 211, "VarI4FromUI4" }, { 212, "VarI4FromDec" }, { 213, "VarR4FromI1" }, { 214, "VarR4FromUI2" }, { 215, "VarR4FromUI4" }, { 216, "VarR4FromDec" }, { 217, "VarR8FromI1" }, { 218, "VarR8FromUI2" }, { 219, "VarR8FromUI4" }, { 220, "VarR8FromDec" }, { 221, "VarDateFromI1" }, { 222, "VarDateFromUI2" }, { 223, "VarDateFromUI4" }, { 224, "VarDateFromDec" }, { 225, "VarCyFromI1" }, { 226, "VarCyFromUI2" }, { 227, "VarCyFromUI4" }, { 228, "VarCyFromDec" }, { 229, "VarBstrFromI1" }, { 230, "VarBstrFromUI2" }, { 231, "VarBstrFromUI4" }, { 232, "VarBstrFromDec" }, { 233, "VarBoolFromI1" }, { 234, "VarBoolFromUI2" }, { 235, "VarBoolFromUI4" }, { 236, "VarBoolFromDec" }, { 237, "VarUI1FromI1" }, { 238, "VarUI1FromUI2" }, { 239, "VarUI1FromUI4" }, { 240, "VarUI1FromDec" }, { 241, "VarDecFromI1" }, { 242, "VarDecFromUI2" }, { 243, "VarDecFromUI4" }, { 244, "VarI1FromUI1" }, { 245, "VarI1FromI2" }, { 246, "VarI1FromI4" }, { 247, "VarI1FromR4" }, { 248, "VarI1FromR8" }, { 249, "VarI1FromDate" }, { 250, "VarI1FromCy" }, { 251, "VarI1FromStr" }, { 252, "VarI1FromDisp" }, { 253, "VarI1FromBool" }, { 254, "VarI1FromUI2" }, { 255, "VarI1FromUI4" }, { 256, "VarI1FromDec" }, { 257, "VarUI2FromUI1" }, { 258, "VarUI2FromI2" }, { 259, "VarUI2FromI4" }, { 260, "VarUI2FromR4" }, { 261, "VarUI2FromR8" }, { 262, "VarUI2FromDate" }, { 263, "VarUI2FromCy" }, { 264, "VarUI2FromStr" }, { 265, "VarUI2FromDisp" }, { 266, "VarUI2FromBool" }, { 267, "VarUI2FromI1" }, { 268, "VarUI2FromUI4" }, { 269, "VarUI2FromDec" }, { 270, "VarUI4FromUI1" }, { 271, "VarUI4FromI2" }, { 272, "VarUI4FromI4" }, { 273, "VarUI4FromR4" }, { 274, "VarUI4FromR8" }, { 275, "VarUI4FromDate" }, { 276, "VarUI4FromCy" }, { 277, "VarUI4FromStr" }, { 278, "VarUI4FromDisp" }, { 279, "VarUI4FromBool" }, { 280, "VarUI4FromI1" }, { 281, "VarUI4FromUI2" }, { 282, "VarUI4FromDec" }, { 283, "BSTR_UserSize" }, { 284, "BSTR_UserMarshal" }, { 285, "BSTR_UserUnmarshal" }, { 286, "BSTR_UserFree" }, { 287, "VARIANT_UserSize" }, { 288, "VARIANT_UserMarshal" }, { 289, "VARIANT_UserUnmarshal" }, { 290, "VARIANT_UserFree" }, { 291, "LPSAFEARRAY_UserSize" }, { 292, "LPSAFEARRAY_UserMarshal" }, { 293, "LPSAFEARRAY_UserUnmarshal" }, { 294, "LPSAFEARRAY_UserFree" }, { 295, "LPSAFEARRAY_Size" }, { 296, "LPSAFEARRAY_Marshal" }, { 297, "LPSAFEARRAY_Unmarshal" }, { 298, "VarDecCmpR8" }, { 299, "VarCyAdd" }, { 300, "DllUnregisterServer" }, { 301, "OACreateTypeLib2" }, { 303, "VarCyMul" }, { 304, "VarCyMulI4" }, { 305, "VarCySub" }, { 306, "VarCyAbs" }, { 307, "VarCyFix" }, { 308, "VarCyInt" }, { 309, "VarCyNeg" }, { 310, "VarCyRound" }, { 311, "VarCyCmp" }, { 312, "VarCyCmpR8" }, { 313, "VarBstrCat" }, { 314, "VarBstrCmp" }, { 315, "VarR8Pow" }, { 316, "VarR4CmpR8" }, { 317, "VarR8Round" }, { 318, "VarCat" }, { 319, "VarDateFromUdateEx" }, { 322, "GetRecordInfoFromGuids" }, { 323, "GetRecordInfoFromTypeInfo" }, { 325, "SetVarConversionLocaleSetting" }, { 326, "GetVarConversionLocaleSetting" }, { 327, "SetOaNoCache" }, { 329, "VarCyMulI8" }, { 330, "VarDateFromUdate" }, { 331, "VarUdateFromDate" }, { 332, "GetAltMonthNames" }, { 333, "VarI8FromUI1" }, { 334, "VarI8FromI2" }, { 335, "VarI8FromR4" }, { 336, "VarI8FromR8" }, { 337, "VarI8FromCy" }, { 338, "VarI8FromDate" }, { 339, "VarI8FromStr" }, { 340, "VarI8FromDisp" }, { 341, "VarI8FromBool" }, { 342, "VarI8FromI1" }, { 343, "VarI8FromUI2" }, { 344, "VarI8FromUI4" }, { 345, "VarI8FromDec" }, { 346, "VarI2FromI8" }, { 347, "VarI2FromUI8" }, { 348, "VarI4FromI8" }, { 349, "VarI4FromUI8" }, { 360, "VarR4FromI8" }, { 361, "VarR4FromUI8" }, { 362, "VarR8FromI8" }, { 363, "VarR8FromUI8" }, { 364, "VarDateFromI8" }, { 365, "VarDateFromUI8" }, { 366, "VarCyFromI8" }, { 367, "VarCyFromUI8" }, { 368, "VarBstrFromI8" }, { 369, "VarBstrFromUI8" }, { 370, "VarBoolFromI8" }, { 371, "VarBoolFromUI8" }, { 372, "VarUI1FromI8" }, { 373, "VarUI1FromUI8" }, { 374, "VarDecFromI8" }, { 375, "VarDecFromUI8" }, { 376, "VarI1FromI8" }, { 377, "VarI1FromUI8" }, { 378, "VarUI2FromI8" }, { 379, "VarUI2FromUI8" }, { 401, "OleLoadPictureEx" }, { 402, "OleLoadPictureFileEx" }, { 411, "SafeArrayCreateVector" }, { 412, "SafeArrayCopyData" }, { 413, "VectorFromBstr" }, { 414, "BstrFromVector" }, { 415, "OleIconToCursor" }, { 416, "OleCreatePropertyFrameIndirect" }, { 417, "OleCreatePropertyFrame" }, { 418, "OleLoadPicture" }, { 419, "OleCreatePictureIndirect" }, { 420, "OleCreateFontIndirect" }, { 421, "OleTranslateColor" }, { 422, "OleLoadPictureFile" }, { 423, "OleSavePictureFile" }, { 424, "OleLoadPicturePath" }, { 425, "VarUI4FromI8" }, { 426, "VarUI4FromUI8" }, { 427, "VarI8FromUI8" }, { 428, "VarUI8FromI8" }, { 429, "VarUI8FromUI1" }, { 430, "VarUI8FromI2" }, { 431, "VarUI8FromR4" }, { 432, "VarUI8FromR8" }, { 433, "VarUI8FromCy" }, { 434, "VarUI8FromDate" }, { 435, "VarUI8FromStr" }, { 436, "VarUI8FromDisp" }, { 437, "VarUI8FromBool" }, { 438, "VarUI8FromI1" }, { 439, "VarUI8FromUI2" }, { 440, "VarUI8FromUI4" }, { 441, "VarUI8FromDec" }, { 442, "RegisterTypeLibForUser" }, { 443, "UnRegisterTypeLibForUser" } }; ord_t ws2_32_arr[] = { { 1, "accept" }, { 2, "bind" }, { 3, "closesocket" }, { 4, "connect" }, { 5, "getpeername" }, { 6, "getsockname" }, { 7, "getsockopt" }, { 8, "htonl" }, { 9, "htons" }, { 10, "ioctlsocket" }, { 11, "inet_addr" }, { 12, "inet_ntoa" }, { 13, "listen" }, { 14, "ntohl" }, { 15, "ntohs" }, { 16, "recv" }, { 17, "recvfrom" }, { 18, "select" }, { 19, "send" }, { 20, "sendto" }, { 21, "setsockopt" }, { 22, "shutdown" }, { 23, "socket" }, { 24, "GetAddrInfoW" }, { 25, "GetNameInfoW" }, { 26, "WSApSetPostRoutine" }, { 27, "FreeAddrInfoW" }, { 28, "WPUCompleteOverlappedRequest" }, { 29, "WSAAccept" }, { 30, "WSAAddressToStringA" }, { 31, "WSAAddressToStringW" }, { 32, "WSACloseEvent" }, { 33, "WSAConnect" }, { 34, "WSACreateEvent" }, { 35, "WSADuplicateSocketA" }, { 36, "WSADuplicateSocketW" }, { 37, "WSAEnumNameSpaceProvidersA" }, { 38, "WSAEnumNameSpaceProvidersW" }, { 39, "WSAEnumNetworkEvents" }, { 40, "WSAEnumProtocolsA" }, { 41, "WSAEnumProtocolsW" }, { 42, "WSAEventSelect" }, { 43, "WSAGetOverlappedResult" }, { 44, "WSAGetQOSByName" }, { 45, "WSAGetServiceClassInfoA" }, { 46, "WSAGetServiceClassInfoW" }, { 47, "WSAGetServiceClassNameByClassIdA" }, { 48, "WSAGetServiceClassNameByClassIdW" }, { 49, "WSAHtonl" }, { 50, "WSAHtons" }, { 51, "gethostbyaddr" }, { 52, "gethostbyname" }, { 53, "getprotobyname" }, { 54, "getprotobynumber" }, { 55, "getservbyname" }, { 56, "getservbyport" }, { 57, "gethostname" }, { 58, "WSAInstallServiceClassA" }, { 59, "WSAInstallServiceClassW" }, { 60, "WSAIoctl" }, { 61, "WSAJoinLeaf" }, { 62, "WSALookupServiceBeginA" }, { 63, "WSALookupServiceBeginW" }, { 64, "WSALookupServiceEnd" }, { 65, "WSALookupServiceNextA" }, { 66, "WSALookupServiceNextW" }, { 67, "WSANSPIoctl" }, { 68, "WSANtohl" }, { 69, "WSANtohs" }, { 70, "WSAProviderConfigChange" }, { 71, "WSARecv" }, { 72, "WSARecvDisconnect" }, { 73, "WSARecvFrom" }, { 74, "WSARemoveServiceClass" }, { 75, "WSAResetEvent" }, { 76, "WSASend" }, { 77, "WSASendDisconnect" }, { 78, "WSASendTo" }, { 79, "WSASetEvent" }, { 80, "WSASetServiceA" }, { 81, "WSASetServiceW" }, { 82, "WSASocketA" }, { 83, "WSASocketW" }, { 84, "WSAStringToAddressA" }, { 85, "WSAStringToAddressW" }, { 86, "WSAWaitForMultipleEvents" }, { 87, "WSCDeinstallProvider" }, { 88, "WSCEnableNSProvider" }, { 89, "WSCEnumProtocols" }, { 90, "WSCGetProviderPath" }, { 91, "WSCInstallNameSpace" }, { 92, "WSCInstallProvider" }, { 93, "WSCUnInstallNameSpace" }, { 94, "WSCUpdateProvider" }, { 95, "WSCWriteNameSpaceOrder" }, { 96, "WSCWriteProviderOrder" }, { 97, "freeaddrinfo" }, { 98, "getaddrinfo" }, { 99, "getnameinfo" }, { 101, "WSAAsyncSelect" }, { 102, "WSAAsyncGetHostByAddr" }, { 103, "WSAAsyncGetHostByName" }, { 104, "WSAAsyncGetProtoByNumber" }, { 105, "WSAAsyncGetProtoByName" }, { 106, "WSAAsyncGetServByPort" }, { 107, "WSAAsyncGetServByName" }, { 108, "WSACancelAsyncRequest" }, { 109, "WSASetBlockingHook" }, { 110, "WSAUnhookBlockingHook" }, { 111, "WSAGetLastError" }, { 112, "WSASetLastError" }, { 113, "WSACancelBlockingCall" }, { 114, "WSAIsBlocking" }, { 115, "WSAStartup" }, { 116, "WSACleanup" }, { 151, "__WSAFDIsSet" }, { 500, "WEP" } }; pev/include/plugin.h0000644000175000017500000000370513034014706013463 0ustar useruser/* pev - the PE file analyzer toolkit plugin.h - Plugin API that every plugin MUST implement. Copyright (C) 2012 - 2014 pev authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #pragma once #include #ifdef __cplusplus extern "C" { #endif struct _pev_api_t; typedef int (*plugin_loaded_fn_t)(void); typedef int (*plugin_initialize_fn_t)(const struct _pev_api_t *api); typedef void (*plugin_shutdown_fn_t)(void); typedef void (*plugin_unloaded_fn_t)(void); int plugin_loaded(void); int plugin_initialize(const struct _pev_api_t *api); void plugin_shutdown(void); void plugin_unloaded(void); #ifdef __cplusplus } //extern "C" #endif pev/include/output_plugin.h0000644000175000017500000000522113034014706015076 0ustar useruser/* pev - the PE file analyzer toolkit output_plugin.h - Symbols and APIs to be used by output plugins. Copyright (C) 2014 pev authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #pragma once #include "plugin.h" #include "output.h" #ifdef __cplusplus extern "C" { #endif // // Type definitions // // All definitions are in output.h // // Indentation macros // #define INDENT_TAB_SIZE 4 #define INDENT_COLUMNS_(level) (int)((int)(level) * (int)INDENT_TAB_SIZE) #define INDENT_FORMAT_ "%*s" #define INDENT_ARGS_(level) INDENT_COLUMNS_(level), "" #define INDENT(level, format) INDENT_FORMAT_ format, INDENT_ARGS_(level) // // Public API specific for output plugins. // typedef struct _output_plugin_api { const char * (* output_cmdline)(void); int (* output_plugin_register_format)(const format_t *format); void (* output_plugin_unregister_format)(const format_t *format); size_t (* escape_count_chars_ex)(const char *str, size_t len, const entity_table_t entities); char * (* escape_ex)(const char *str, const entity_table_t entities); char * (* escape_ex_quoted)(const char *str, const entity_table_t entities); char * (* escape)(const format_t *format, const char *str); char * (* escape_quoted)(const format_t *format, const char *str); } output_plugin_api_t; output_plugin_api_t *output_plugin_api_ptr(void); #ifdef __cplusplus } #endif pev/include/utils.h0000644000175000017500000000367713034014706013335 0ustar useruser/* pev - the PE file analyzer toolkit utils.h Copyright (C) 2012 - 2014 pev authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #pragma once #include #include bool utils_str_ends_with(const char *str, const char *suffix); char *utils_str_inplace_ltrim(char *str); char *utils_str_inplace_rtrim(char *str); char *utils_str_inplace_trim(char *str); char *utils_str_array_join(char *strings[], size_t count, char delimiter); int utils_round_up(int num_to_round, int multiple); int utils_is_file_readable(const char *path); // IMPORTANT: This is not thread-safe - not reentrant. const char *utils_get_homedir(void); pev/include/compat/0000755000175000017500000000000013034014706013272 5ustar useruserpev/include/compat/strlcat.h0000644000175000017500000000013713034014706015120 0ustar useruser#pragma once #include size_t bsd_strlcat(char *dst, const char *src, size_t siz); pev/include/compat/sys/0000755000175000017500000000000013034014706014110 5ustar useruserpev/include/compat/sys/queue.h0000644000175000017500000005634513034014706015422 0ustar useruser/*- * Copyright (c) 1991, 1993 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)queue.h 8.5 (Berkeley) 8/20/94 * $FreeBSD$ */ #ifndef _SYS_QUEUE_H_ #define _SYS_QUEUE_H_ #include /* * This file defines four types of data structures: singly-linked lists, * singly-linked tail queues, lists and tail queues. * * A singly-linked list is headed by a single forward pointer. The elements * are singly linked for minimum space and pointer manipulation overhead at * the expense of O(n) removal for arbitrary elements. New elements can be * added to the list after an existing element or at the head of the list. * Elements being removed from the head of the list should use the explicit * macro for this purpose for optimum efficiency. A singly-linked list may * only be traversed in the forward direction. Singly-linked lists are ideal * for applications with large datasets and few or no removals or for * implementing a LIFO queue. * * A singly-linked tail queue is headed by a pair of pointers, one to the * head of the list and the other to the tail of the list. The elements are * singly linked for minimum space and pointer manipulation overhead at the * expense of O(n) removal for arbitrary elements. New elements can be added * to the list after an existing element, at the head of the list, or at the * end of the list. Elements being removed from the head of the tail queue * should use the explicit macro for this purpose for optimum efficiency. * A singly-linked tail queue may only be traversed in the forward direction. * Singly-linked tail queues are ideal for applications with large datasets * and few or no removals or for implementing a FIFO queue. * * A list is headed by a single forward pointer (or an array of forward * pointers for a hash table header). The elements are doubly linked * so that an arbitrary element can be removed without a need to * traverse the list. New elements can be added to the list before * or after an existing element or at the head of the list. A list * may be traversed in either direction. * * A tail queue is headed by a pair of pointers, one to the head of the * list and the other to the tail of the list. The elements are doubly * linked so that an arbitrary element can be removed without a need to * traverse the list. New elements can be added to the list before or * after an existing element, at the head of the list, or at the end of * the list. A tail queue may be traversed in either direction. * * For details on the use of these macros, see the queue(3) manual page. * * * SLIST LIST STAILQ TAILQ * _HEAD + + + + * _HEAD_INITIALIZER + + + + * _ENTRY + + + + * _INIT + + + + * _EMPTY + + + + * _FIRST + + + + * _NEXT + + + + * _PREV - + - + * _LAST - - + + * _FOREACH + + + + * _FOREACH_FROM + + + + * _FOREACH_SAFE + + + + * _FOREACH_FROM_SAFE + + + + * _FOREACH_REVERSE - - - + * _FOREACH_REVERSE_FROM - - - + * _FOREACH_REVERSE_SAFE - - - + * _FOREACH_REVERSE_FROM_SAFE - - - + * _INSERT_HEAD + + + + * _INSERT_BEFORE - + - + * _INSERT_AFTER + + + + * _INSERT_TAIL - - + + * _CONCAT - - + + * _REMOVE_AFTER + - + - * _REMOVE_HEAD + - + - * _REMOVE + + + + * _SWAP + + + + * */ #ifdef QUEUE_MACRO_DEBUG /* Store the last 2 places the queue element or head was altered */ struct qm_trace { unsigned long lastline; unsigned long prevline; const char *lastfile; const char *prevfile; }; #define TRACEBUF struct qm_trace trace; #define TRACEBUF_INITIALIZER { __FILE__, __LINE__, NULL, 0 } , #define TRASHIT(x) do {(x) = (void *)-1;} while (0) #define QMD_SAVELINK(name, link) void **name = (void *)&(link) #define QMD_TRACE_HEAD(head) do { \ (head)->trace.prevline = (head)->trace.lastline; \ (head)->trace.prevfile = (head)->trace.lastfile; \ (head)->trace.lastline = __LINE__; \ (head)->trace.lastfile = __FILE__; \ } while (0) #define QMD_TRACE_ELEM(elem) do { \ (elem)->trace.prevline = (elem)->trace.lastline; \ (elem)->trace.prevfile = (elem)->trace.lastfile; \ (elem)->trace.lastline = __LINE__; \ (elem)->trace.lastfile = __FILE__; \ } while (0) #else #define QMD_TRACE_ELEM(elem) #define QMD_TRACE_HEAD(head) #define QMD_SAVELINK(name, link) #define TRACEBUF #define TRACEBUF_INITIALIZER #define TRASHIT(x) #endif /* QUEUE_MACRO_DEBUG */ /* * Singly-linked List declarations. */ #define SLIST_HEAD(name, type) \ struct name { \ struct type *slh_first; /* first element */ \ } #define SLIST_HEAD_INITIALIZER(head) \ { NULL } #define SLIST_ENTRY(type) \ struct { \ struct type *sle_next; /* next element */ \ } /* * Singly-linked List functions. */ #define SLIST_EMPTY(head) ((head)->slh_first == NULL) #define SLIST_FIRST(head) ((head)->slh_first) #define SLIST_FOREACH(var, head, field) \ for ((var) = SLIST_FIRST((head)); \ (var); \ (var) = SLIST_NEXT((var), field)) #define SLIST_FOREACH_FROM(var, head, field) \ for ((var) = ((var) ? (var) : SLIST_FIRST((head))); \ (var); \ (var) = SLIST_NEXT((var), field)) #define SLIST_FOREACH_SAFE(var, head, field, tvar) \ for ((var) = SLIST_FIRST((head)); \ (var) && ((tvar) = SLIST_NEXT((var), field), 1); \ (var) = (tvar)) #define SLIST_FOREACH_FROM_SAFE(var, head, field, tvar) \ for ((var) = ((var) ? (var) : SLIST_FIRST((head))); \ (var) && ((tvar) = SLIST_NEXT((var), field), 1); \ (var) = (tvar)) #define SLIST_FOREACH_PREVPTR(var, varp, head, field) \ for ((varp) = &SLIST_FIRST((head)); \ ((var) = *(varp)) != NULL; \ (varp) = &SLIST_NEXT((var), field)) #define SLIST_INIT(head) do { \ SLIST_FIRST((head)) = NULL; \ } while (0) #define SLIST_INSERT_AFTER(slistelm, elm, field) do { \ SLIST_NEXT((elm), field) = SLIST_NEXT((slistelm), field); \ SLIST_NEXT((slistelm), field) = (elm); \ } while (0) #define SLIST_INSERT_HEAD(head, elm, field) do { \ SLIST_NEXT((elm), field) = SLIST_FIRST((head)); \ SLIST_FIRST((head)) = (elm); \ } while (0) #define SLIST_NEXT(elm, field) ((elm)->field.sle_next) #define SLIST_REMOVE(head, elm, type, field) do { \ QMD_SAVELINK(oldnext, (elm)->field.sle_next); \ if (SLIST_FIRST((head)) == (elm)) { \ SLIST_REMOVE_HEAD((head), field); \ } \ else { \ struct type *curelm = SLIST_FIRST((head)); \ while (SLIST_NEXT(curelm, field) != (elm)) \ curelm = SLIST_NEXT(curelm, field); \ SLIST_REMOVE_AFTER(curelm, field); \ } \ TRASHIT(*oldnext); \ } while (0) #define SLIST_REMOVE_AFTER(elm, field) do { \ SLIST_NEXT(elm, field) = \ SLIST_NEXT(SLIST_NEXT(elm, field), field); \ } while (0) #define SLIST_REMOVE_HEAD(head, field) do { \ SLIST_FIRST((head)) = SLIST_NEXT(SLIST_FIRST((head)), field); \ } while (0) #define SLIST_SWAP(head1, head2, type) do { \ struct type *swap_first = SLIST_FIRST(head1); \ SLIST_FIRST(head1) = SLIST_FIRST(head2); \ SLIST_FIRST(head2) = swap_first; \ } while (0) /* * Singly-linked Tail queue declarations. */ #define STAILQ_HEAD(name, type) \ struct name { \ struct type *stqh_first;/* first element */ \ struct type **stqh_last;/* addr of last next element */ \ } #define STAILQ_HEAD_INITIALIZER(head) \ { NULL, &(head).stqh_first } #define STAILQ_ENTRY(type) \ struct { \ struct type *stqe_next; /* next element */ \ } /* * Singly-linked Tail queue functions. */ #define STAILQ_CONCAT(head1, head2) do { \ if (!STAILQ_EMPTY((head2))) { \ *(head1)->stqh_last = (head2)->stqh_first; \ (head1)->stqh_last = (head2)->stqh_last; \ STAILQ_INIT((head2)); \ } \ } while (0) #define STAILQ_EMPTY(head) ((head)->stqh_first == NULL) #define STAILQ_FIRST(head) ((head)->stqh_first) #define STAILQ_FOREACH(var, head, field) \ for((var) = STAILQ_FIRST((head)); \ (var); \ (var) = STAILQ_NEXT((var), field)) #define STAILQ_FOREACH_FROM(var, head, field) \ for ((var) = ((var) ? (var) : STAILQ_FIRST((head))); \ (var); \ (var) = STAILQ_NEXT((var), field)) #define STAILQ_FOREACH_SAFE(var, head, field, tvar) \ for ((var) = STAILQ_FIRST((head)); \ (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \ (var) = (tvar)) #define STAILQ_FOREACH_FROM_SAFE(var, head, field, tvar) \ for ((var) = ((var) ? (var) : STAILQ_FIRST((head))); \ (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \ (var) = (tvar)) #define STAILQ_INIT(head) do { \ STAILQ_FIRST((head)) = NULL; \ (head)->stqh_last = &STAILQ_FIRST((head)); \ } while (0) #define STAILQ_INSERT_AFTER(head, tqelm, elm, field) do { \ if ((STAILQ_NEXT((elm), field) = STAILQ_NEXT((tqelm), field)) == NULL)\ (head)->stqh_last = &STAILQ_NEXT((elm), field); \ STAILQ_NEXT((tqelm), field) = (elm); \ } while (0) #define STAILQ_INSERT_HEAD(head, elm, field) do { \ if ((STAILQ_NEXT((elm), field) = STAILQ_FIRST((head))) == NULL) \ (head)->stqh_last = &STAILQ_NEXT((elm), field); \ STAILQ_FIRST((head)) = (elm); \ } while (0) #define STAILQ_INSERT_TAIL(head, elm, field) do { \ STAILQ_NEXT((elm), field) = NULL; \ *(head)->stqh_last = (elm); \ (head)->stqh_last = &STAILQ_NEXT((elm), field); \ } while (0) #define STAILQ_LAST(head, type, field) \ (STAILQ_EMPTY((head)) ? NULL : \ __containerof((head)->stqh_last, struct type, field.stqe_next)) #define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next) #define STAILQ_REMOVE(head, elm, type, field) do { \ QMD_SAVELINK(oldnext, (elm)->field.stqe_next); \ if (STAILQ_FIRST((head)) == (elm)) { \ STAILQ_REMOVE_HEAD((head), field); \ } \ else { \ struct type *curelm = STAILQ_FIRST((head)); \ while (STAILQ_NEXT(curelm, field) != (elm)) \ curelm = STAILQ_NEXT(curelm, field); \ STAILQ_REMOVE_AFTER(head, curelm, field); \ } \ TRASHIT(*oldnext); \ } while (0) #define STAILQ_REMOVE_AFTER(head, elm, field) do { \ if ((STAILQ_NEXT(elm, field) = \ STAILQ_NEXT(STAILQ_NEXT(elm, field), field)) == NULL) \ (head)->stqh_last = &STAILQ_NEXT((elm), field); \ } while (0) #define STAILQ_REMOVE_HEAD(head, field) do { \ if ((STAILQ_FIRST((head)) = \ STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL) \ (head)->stqh_last = &STAILQ_FIRST((head)); \ } while (0) #define STAILQ_SWAP(head1, head2, type) do { \ struct type *swap_first = STAILQ_FIRST(head1); \ struct type **swap_last = (head1)->stqh_last; \ STAILQ_FIRST(head1) = STAILQ_FIRST(head2); \ (head1)->stqh_last = (head2)->stqh_last; \ STAILQ_FIRST(head2) = swap_first; \ (head2)->stqh_last = swap_last; \ if (STAILQ_EMPTY(head1)) \ (head1)->stqh_last = &STAILQ_FIRST(head1); \ if (STAILQ_EMPTY(head2)) \ (head2)->stqh_last = &STAILQ_FIRST(head2); \ } while (0) /* * List declarations. */ #define LIST_HEAD(name, type) \ struct name { \ struct type *lh_first; /* first element */ \ } #define LIST_HEAD_INITIALIZER(head) \ { NULL } #define LIST_ENTRY(type) \ struct { \ struct type *le_next; /* next element */ \ struct type **le_prev; /* address of previous next element */ \ } /* * List functions. */ #if (defined(_KERNEL) && defined(INVARIANTS)) #define QMD_LIST_CHECK_HEAD(head, field) do { \ if (LIST_FIRST((head)) != NULL && \ LIST_FIRST((head))->field.le_prev != \ &LIST_FIRST((head))) \ panic("Bad list head %p first->prev != head", (head)); \ } while (0) #define QMD_LIST_CHECK_NEXT(elm, field) do { \ if (LIST_NEXT((elm), field) != NULL && \ LIST_NEXT((elm), field)->field.le_prev != \ &((elm)->field.le_next)) \ panic("Bad link elm %p next->prev != elm", (elm)); \ } while (0) #define QMD_LIST_CHECK_PREV(elm, field) do { \ if (*(elm)->field.le_prev != (elm)) \ panic("Bad link elm %p prev->next != elm", (elm)); \ } while (0) #else #define QMD_LIST_CHECK_HEAD(head, field) #define QMD_LIST_CHECK_NEXT(elm, field) #define QMD_LIST_CHECK_PREV(elm, field) #endif /* (_KERNEL && INVARIANTS) */ #define LIST_EMPTY(head) ((head)->lh_first == NULL) #define LIST_FIRST(head) ((head)->lh_first) #define LIST_FOREACH(var, head, field) \ for ((var) = LIST_FIRST((head)); \ (var); \ (var) = LIST_NEXT((var), field)) #define LIST_FOREACH_FROM(var, head, field) \ for ((var) = ((var) ? (var) : LIST_FIRST((head))); \ (var); \ (var) = LIST_NEXT((var), field)) #define LIST_FOREACH_SAFE(var, head, field, tvar) \ for ((var) = LIST_FIRST((head)); \ (var) && ((tvar) = LIST_NEXT((var), field), 1); \ (var) = (tvar)) #define LIST_FOREACH_FROM_SAFE(var, head, field, tvar) \ for ((var) = ((var) ? (var) : LIST_FIRST((head))); \ (var) && ((tvar) = LIST_NEXT((var), field), 1); \ (var) = (tvar)) #define LIST_INIT(head) do { \ LIST_FIRST((head)) = NULL; \ } while (0) #define LIST_INSERT_AFTER(listelm, elm, field) do { \ QMD_LIST_CHECK_NEXT(listelm, field); \ if ((LIST_NEXT((elm), field) = LIST_NEXT((listelm), field)) != NULL)\ LIST_NEXT((listelm), field)->field.le_prev = \ &LIST_NEXT((elm), field); \ LIST_NEXT((listelm), field) = (elm); \ (elm)->field.le_prev = &LIST_NEXT((listelm), field); \ } while (0) #define LIST_INSERT_BEFORE(listelm, elm, field) do { \ QMD_LIST_CHECK_PREV(listelm, field); \ (elm)->field.le_prev = (listelm)->field.le_prev; \ LIST_NEXT((elm), field) = (listelm); \ *(listelm)->field.le_prev = (elm); \ (listelm)->field.le_prev = &LIST_NEXT((elm), field); \ } while (0) #define LIST_INSERT_HEAD(head, elm, field) do { \ QMD_LIST_CHECK_HEAD((head), field); \ if ((LIST_NEXT((elm), field) = LIST_FIRST((head))) != NULL) \ LIST_FIRST((head))->field.le_prev = &LIST_NEXT((elm), field);\ LIST_FIRST((head)) = (elm); \ (elm)->field.le_prev = &LIST_FIRST((head)); \ } while (0) #define LIST_NEXT(elm, field) ((elm)->field.le_next) #define LIST_PREV(elm, head, type, field) \ ((elm)->field.le_prev == &LIST_FIRST((head)) ? NULL : \ __containerof((elm)->field.le_prev, struct type, field.le_next)) #define LIST_REMOVE(elm, field) do { \ QMD_SAVELINK(oldnext, (elm)->field.le_next); \ QMD_SAVELINK(oldprev, (elm)->field.le_prev); \ QMD_LIST_CHECK_NEXT(elm, field); \ QMD_LIST_CHECK_PREV(elm, field); \ if (LIST_NEXT((elm), field) != NULL) \ LIST_NEXT((elm), field)->field.le_prev = \ (elm)->field.le_prev; \ *(elm)->field.le_prev = LIST_NEXT((elm), field); \ TRASHIT(*oldnext); \ TRASHIT(*oldprev); \ } while (0) #define LIST_SWAP(head1, head2, type, field) do { \ struct type *swap_tmp = LIST_FIRST((head1)); \ LIST_FIRST((head1)) = LIST_FIRST((head2)); \ LIST_FIRST((head2)) = swap_tmp; \ if ((swap_tmp = LIST_FIRST((head1))) != NULL) \ swap_tmp->field.le_prev = &LIST_FIRST((head1)); \ if ((swap_tmp = LIST_FIRST((head2))) != NULL) \ swap_tmp->field.le_prev = &LIST_FIRST((head2)); \ } while (0) /* * Tail queue declarations. */ #define TAILQ_HEAD(name, type) \ struct name { \ struct type *tqh_first; /* first element */ \ struct type **tqh_last; /* addr of last next element */ \ TRACEBUF \ } #define TAILQ_HEAD_INITIALIZER(head) \ { NULL, &(head).tqh_first, TRACEBUF_INITIALIZER } #define TAILQ_ENTRY(type) \ struct { \ struct type *tqe_next; /* next element */ \ struct type **tqe_prev; /* address of previous next element */ \ TRACEBUF \ } /* * Tail queue functions. */ #if (defined(_KERNEL) && defined(INVARIANTS)) #define QMD_TAILQ_CHECK_HEAD(head, field) do { \ if (!TAILQ_EMPTY(head) && \ TAILQ_FIRST((head))->field.tqe_prev != \ &TAILQ_FIRST((head))) \ panic("Bad tailq head %p first->prev != head", (head)); \ } while (0) #define QMD_TAILQ_CHECK_TAIL(head, field) do { \ if (*(head)->tqh_last != NULL) \ panic("Bad tailq NEXT(%p->tqh_last) != NULL", (head)); \ } while (0) #define QMD_TAILQ_CHECK_NEXT(elm, field) do { \ if (TAILQ_NEXT((elm), field) != NULL && \ TAILQ_NEXT((elm), field)->field.tqe_prev != \ &((elm)->field.tqe_next)) \ panic("Bad link elm %p next->prev != elm", (elm)); \ } while (0) #define QMD_TAILQ_CHECK_PREV(elm, field) do { \ if (*(elm)->field.tqe_prev != (elm)) \ panic("Bad link elm %p prev->next != elm", (elm)); \ } while (0) #else #define QMD_TAILQ_CHECK_HEAD(head, field) #define QMD_TAILQ_CHECK_TAIL(head, headname) #define QMD_TAILQ_CHECK_NEXT(elm, field) #define QMD_TAILQ_CHECK_PREV(elm, field) #endif /* (_KERNEL && INVARIANTS) */ #define TAILQ_CONCAT(head1, head2, field) do { \ if (!TAILQ_EMPTY(head2)) { \ *(head1)->tqh_last = (head2)->tqh_first; \ (head2)->tqh_first->field.tqe_prev = (head1)->tqh_last; \ (head1)->tqh_last = (head2)->tqh_last; \ TAILQ_INIT((head2)); \ QMD_TRACE_HEAD(head1); \ QMD_TRACE_HEAD(head2); \ } \ } while (0) #define TAILQ_EMPTY(head) ((head)->tqh_first == NULL) #define TAILQ_FIRST(head) ((head)->tqh_first) #define TAILQ_FOREACH(var, head, field) \ for ((var) = TAILQ_FIRST((head)); \ (var); \ (var) = TAILQ_NEXT((var), field)) #define TAILQ_FOREACH_FROM(var, head, field) \ for ((var) = ((var) ? (var) : TAILQ_FIRST((head))); \ (var); \ (var) = TAILQ_NEXT((var), field)) #define TAILQ_FOREACH_SAFE(var, head, field, tvar) \ for ((var) = TAILQ_FIRST((head)); \ (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \ (var) = (tvar)) #define TAILQ_FOREACH_FROM_SAFE(var, head, field, tvar) \ for ((var) = ((var) ? (var) : TAILQ_FIRST((head))); \ (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \ (var) = (tvar)) #define TAILQ_FOREACH_REVERSE(var, head, headname, field) \ for ((var) = TAILQ_LAST((head), headname); \ (var); \ (var) = TAILQ_PREV((var), headname, field)) #define TAILQ_FOREACH_REVERSE_FROM(var, head, headname, field) \ for ((var) = ((var) ? (var) : TAILQ_LAST((head), headname)); \ (var); \ (var) = TAILQ_PREV((var), headname, field)) #define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \ for ((var) = TAILQ_LAST((head), headname); \ (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \ (var) = (tvar)) #define TAILQ_FOREACH_REVERSE_FROM_SAFE(var, head, headname, field, tvar) \ for ((var) = ((var) ? (var) : TAILQ_LAST((head), headname)); \ (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \ (var) = (tvar)) #define TAILQ_INIT(head) do { \ TAILQ_FIRST((head)) = NULL; \ (head)->tqh_last = &TAILQ_FIRST((head)); \ QMD_TRACE_HEAD(head); \ } while (0) #define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \ QMD_TAILQ_CHECK_NEXT(listelm, field); \ if ((TAILQ_NEXT((elm), field) = TAILQ_NEXT((listelm), field)) != NULL)\ TAILQ_NEXT((elm), field)->field.tqe_prev = \ &TAILQ_NEXT((elm), field); \ else { \ (head)->tqh_last = &TAILQ_NEXT((elm), field); \ QMD_TRACE_HEAD(head); \ } \ TAILQ_NEXT((listelm), field) = (elm); \ (elm)->field.tqe_prev = &TAILQ_NEXT((listelm), field); \ QMD_TRACE_ELEM(&(elm)->field); \ QMD_TRACE_ELEM(&listelm->field); \ } while (0) #define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \ QMD_TAILQ_CHECK_PREV(listelm, field); \ (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \ TAILQ_NEXT((elm), field) = (listelm); \ *(listelm)->field.tqe_prev = (elm); \ (listelm)->field.tqe_prev = &TAILQ_NEXT((elm), field); \ QMD_TRACE_ELEM(&(elm)->field); \ QMD_TRACE_ELEM(&listelm->field); \ } while (0) #define TAILQ_INSERT_HEAD(head, elm, field) do { \ QMD_TAILQ_CHECK_HEAD(head, field); \ if ((TAILQ_NEXT((elm), field) = TAILQ_FIRST((head))) != NULL) \ TAILQ_FIRST((head))->field.tqe_prev = \ &TAILQ_NEXT((elm), field); \ else \ (head)->tqh_last = &TAILQ_NEXT((elm), field); \ TAILQ_FIRST((head)) = (elm); \ (elm)->field.tqe_prev = &TAILQ_FIRST((head)); \ QMD_TRACE_HEAD(head); \ QMD_TRACE_ELEM(&(elm)->field); \ } while (0) #define TAILQ_INSERT_TAIL(head, elm, field) do { \ QMD_TAILQ_CHECK_TAIL(head, field); \ TAILQ_NEXT((elm), field) = NULL; \ (elm)->field.tqe_prev = (head)->tqh_last; \ *(head)->tqh_last = (elm); \ (head)->tqh_last = &TAILQ_NEXT((elm), field); \ QMD_TRACE_HEAD(head); \ QMD_TRACE_ELEM(&(elm)->field); \ } while (0) #define TAILQ_LAST(head, headname) \ (*(((struct headname *)((head)->tqh_last))->tqh_last)) #define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next) #define TAILQ_PREV(elm, headname, field) \ (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last)) #define TAILQ_REMOVE(head, elm, field) do { \ QMD_SAVELINK(oldnext, (elm)->field.tqe_next); \ QMD_SAVELINK(oldprev, (elm)->field.tqe_prev); \ QMD_TAILQ_CHECK_NEXT(elm, field); \ QMD_TAILQ_CHECK_PREV(elm, field); \ if ((TAILQ_NEXT((elm), field)) != NULL) \ TAILQ_NEXT((elm), field)->field.tqe_prev = \ (elm)->field.tqe_prev; \ else { \ (head)->tqh_last = (elm)->field.tqe_prev; \ QMD_TRACE_HEAD(head); \ } \ *(elm)->field.tqe_prev = TAILQ_NEXT((elm), field); \ TRASHIT(*oldnext); \ TRASHIT(*oldprev); \ QMD_TRACE_ELEM(&(elm)->field); \ } while (0) #define TAILQ_SWAP(head1, head2, type, field) do { \ struct type *swap_first = (head1)->tqh_first; \ struct type **swap_last = (head1)->tqh_last; \ (head1)->tqh_first = (head2)->tqh_first; \ (head1)->tqh_last = (head2)->tqh_last; \ (head2)->tqh_first = swap_first; \ (head2)->tqh_last = swap_last; \ if ((swap_first = (head1)->tqh_first) != NULL) \ swap_first->field.tqe_prev = &(head1)->tqh_first; \ else \ (head1)->tqh_last = &(head1)->tqh_first; \ if ((swap_first = (head2)->tqh_first) != NULL) \ swap_first->field.tqe_prev = &(head2)->tqh_first; \ else \ (head2)->tqh_last = &(head2)->tqh_first; \ } while (0) #endif /* !_SYS_QUEUE_H_ */ pev/include/pev_api.h0000644000175000017500000000335313034014706013607 0ustar useruser/* pev - the PE file analyzer toolkit pev_api.h - Symbols and APIs to be used by all plugins. Copyright (C) 2014 pev authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #pragma once #ifdef __cplusplus extern "C" { #endif struct _output_plugin_api; // from output_plugin.h typedef struct _pev_api_t { struct _output_plugin_api *output; } pev_api_t; pev_api_t *pev_api_ptr(void); #ifdef __cplusplus } //extern "C" #endif pev/include/stack.h0000644000175000017500000001235113034014706013267 0ustar useruser/* stack.h - A simple stack implementation compatible with C99. The MIT License (MIT) Copyright (c) 2013, Jardel Weyrich Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #pragma once #include #define STACK_PASTE_2_(_1,_2) _1 ## _2 #define STACK_PASTE_2(_1,_2) STACK_PASTE_2_(_1, _2) #if !defined(STACK_PREFIX) # define STACK_PREFIX PEV_ #endif #if !defined(STACK_ELEMENT_TYPE) # define STACK_ELEMENT_TYPE void * #endif #define STACK_TYPE STACK_PASTE_2(STACK_PREFIX, stack_t) #define STACK_API(fnname) STACK_PASTE_2(STACK_PREFIX, fnname) // Use these macros! Don't call functions directly. #define STACK_ALLOC(capacity) STACK_API(stack_alloc)(capacity) #define STACK_DEALLOC(stack_ptr) STACK_API(stack_dealloc)(stack_ptr) #define STACK_COUNT(stack_ptr) STACK_API(stack_count)(stack_ptr) #define STACK_GROW(stack_ptr, capacity) STACK_API(stack_grow)(stack_ptr, capacity) #define STACK_PUSH(stack_ptr, element) STACK_API(stack_push)(stack_ptr, element) #define STACK_POP(stack_ptr, element_ptr) STACK_API(stack_pop)(stack_ptr, element_ptr) #define STACK_PEEK(stack_ptr, element_ptr) STACK_API(stack_peek)(stack_ptr, element_ptr) typedef struct { uint16_t capacity; uint16_t used; STACK_ELEMENT_TYPE *elements; } STACK_TYPE; static STACK_TYPE *STACK_API(stack_alloc)(uint16_t capacity); static void STACK_API(stack_dealloc)(STACK_TYPE *stack); static uint16_t STACK_API(stack_count)(STACK_TYPE *stack); static int STACK_API(stack_grow)(STACK_TYPE *stack, uint16_t capacity); static int STACK_API(stack_push)(STACK_TYPE *stack, STACK_ELEMENT_TYPE element); static int STACK_API(stack_pop)(STACK_TYPE *stack, STACK_ELEMENT_TYPE *element); static int STACK_API(stack_peek)(STACK_TYPE *stack, STACK_ELEMENT_TYPE *element); // ---------------------------------------------------------------------------- #include #include #include #include STACK_TYPE * STACK_API(stack_alloc)(uint16_t capacity) { STACK_TYPE *stack = malloc(sizeof(STACK_TYPE)); if (stack == NULL) { fprintf(stderr, "stack: failed to allocate\n"); return NULL; } memset(stack, 0, sizeof(*stack)); if (capacity > 0) { int ret = STACK_API(stack_grow)(stack, capacity); if (ret < 0) { STACK_API(stack_dealloc)(stack); return NULL; } } return stack; } void STACK_API(stack_dealloc)(STACK_TYPE *stack) { assert(stack != NULL); if (stack == NULL) { fprintf(stderr, "stack: attempt to deallocate NULL stack\n"); return; } if (stack->elements != NULL) free(stack->elements); //memset(stack, 0, sizeof(*stack)); free(stack); } uint16_t STACK_API(stack_count)(STACK_TYPE *stack) { assert(stack != NULL); return stack->used; } int STACK_API(stack_grow)(STACK_TYPE *stack, uint16_t capacity) { assert(stack != NULL); assert(capacity > stack->capacity); if (capacity <= stack->capacity) { fprintf(stderr, "stack: capacity cannot be decreased\n"); return -1; } const size_t element_size = sizeof(STACK_ELEMENT_TYPE); const size_t new_size = capacity * element_size; STACK_ELEMENT_TYPE *temp = realloc(stack->elements, new_size); if (temp == NULL) { fprintf(stderr, "stack: failed to allocate requested capacity\n"); return -2; } stack->elements = temp; stack->capacity = capacity; return 0; } int STACK_API(stack_push)(STACK_TYPE *stack, STACK_ELEMENT_TYPE element) { assert(stack != NULL); // Stack is full? if (stack->used >= stack->capacity) { // TODO(jweyrich): We could call `stack_grow` instead of failing miserably. Make this behavior adjustable? fprintf(stderr, "stack: stack is full - failed to push\n"); return -1; } stack->elements[stack->used++] = element; return 0; } int STACK_API(stack_pop)(STACK_TYPE *stack, STACK_ELEMENT_TYPE *element) { assert(stack != NULL); // Stack is empty? if (stack->used == 0) { fprintf(stderr, "stack: stack is empty - failed to pop\n"); return -1; } if (element != NULL) { *element = stack->elements[--stack->used]; } return 0; } int STACK_API(stack_peek)(STACK_TYPE *stack, STACK_ELEMENT_TYPE *element) { assert(stack != NULL); // Stack is empty? if (stack->used == 0) { fprintf(stderr, "stack: stack is empty - failed to peek\n"); return -1; } if (element != NULL) { *element = stack->elements[stack->used - 1]; } return 0; } pev/include/output.h0000644000175000017500000000664513034014706013533 0ustar useruser/* pev - the PE file analyzer toolkit output.h - Symbols and APIs to be used to output data in multiple formats. Copyright (C) 2012 - 2014 pev authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #pragma once #ifdef __cplusplus extern "C" { #endif #include #include typedef int format_id_t; typedef enum { OUTPUT_TYPE_SCOPE_UNKNOWN = 0, OUTPUT_TYPE_SCOPE_OPEN = 1, OUTPUT_TYPE_SCOPE_CLOSE = 2, OUTPUT_TYPE_ATTRIBUTE = 3 } output_type_e; typedef enum { OUTPUT_SCOPE_TYPE_UNKNOWN = 0, OUTPUT_SCOPE_TYPE_DOCUMENT = 1, OUTPUT_SCOPE_TYPE_OBJECT = 2, OUTPUT_SCOPE_TYPE_ARRAY = 3 } output_scope_type_e; typedef struct { const char *name; output_scope_type_e type; uint16_t depth; output_scope_type_e parent_type; } output_scope_t; struct _format_t; // Forward declaration typedef void (*output_fn)( const struct _format_t *format, const output_type_e type, const output_scope_t *scope, const char *key, const char *value); typedef char * (*escape_fn)( const struct _format_t *format, const char *str); typedef char * const entity_t; typedef char ** const entity_table_t; typedef struct _format_t { const format_id_t id; const char *name; const output_fn output_fn; const escape_fn escape_fn; const entity_table_t entities_table; } format_t; void output_init(void); // IMPORTANT: Requires the text plugin to be already loaded. void output_term(void); const char *output_cmdline(void); void output_set_cmdline(int argc, char *argv[]); const format_t *output_format(void); const format_t *output_parse_format(const char *format_name); void output_set_format(const format_t *format); int output_set_format_by_name(const char *format_name); size_t output_available_formats(char *buffer, size_t size, char separator); void output_open_document(void); void output_open_document_with_name(const char *document_name); void output_close_document(void); void output_open_scope(const char *scope_name, output_scope_type_e type); void output_close_scope(void); void output(const char *key, const char *value); void output_keyval(const char *key, const char *value); #ifdef __cplusplus } //extern "C" #endif pev/include/utlist.h0000644000175000017500000020365013034014706013512 0ustar useruser/* Copyright (c) 2007-2016, Troy D. Hanson http://troydhanson.github.com/uthash/ All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef UTLIST_H #define UTLIST_H #define UTLIST_VERSION 2.0.1 #include /* * This file contains macros to manipulate singly and doubly-linked lists. * * 1. LL_ macros: singly-linked lists. * 2. DL_ macros: doubly-linked lists. * 3. CDL_ macros: circular doubly-linked lists. * * To use singly-linked lists, your structure must have a "next" pointer. * To use doubly-linked lists, your structure must "prev" and "next" pointers. * Either way, the pointer to the head of the list must be initialized to NULL. * * ----------------.EXAMPLE ------------------------- * struct item { * int id; * struct item *prev, *next; * } * * struct item *list = NULL: * * int main() { * struct item *item; * ... allocate and populate item ... * DL_APPEND(list, item); * } * -------------------------------------------------- * * For doubly-linked lists, the append and delete macros are O(1) * For singly-linked lists, append and delete are O(n) but prepend is O(1) * The sort macro is O(n log(n)) for all types of single/double/circular lists. */ /* These macros use decltype or the earlier __typeof GNU extension. As decltype is only available in newer compilers (VS2010 or gcc 4.3+ when compiling c++ code), this code uses whatever method is needed or, for VS2008 where neither is available, uses casting workarounds. */ #ifdef _MSC_VER /* MS compiler */ #if _MSC_VER >= 1600 && defined(__cplusplus) /* VS2010 or newer in C++ mode */ #define LDECLTYPE(x) decltype(x) #else /* VS2008 or older (or VS2010 in C mode) */ #define NO_DECLTYPE #endif #elif defined(__ICCARM__) #define NO_DECLTYPE #else /* GNU, Sun and other compilers */ #define LDECLTYPE(x) __typeof(x) #endif /* for VS2008 we use some workarounds to get around the lack of decltype, * namely, we always reassign our tmp variable to the list head if we need * to dereference its prev/next pointers, and save/restore the real head.*/ #ifdef NO_DECLTYPE #define IF_NO_DECLTYPE(x) x #define LDECLTYPE(x) char* #define _SV(elt,list) _tmp = (char*)(list); {char **_alias = (char**)&(list); *_alias = (elt); } #define _NEXT(elt,list,next) ((char*)((list)->next)) #define _NEXTASGN(elt,list,to,next) { char **_alias = (char**)&((list)->next); *_alias=(char*)(to); } /* #define _PREV(elt,list,prev) ((char*)((list)->prev)) */ #define _PREVASGN(elt,list,to,prev) { char **_alias = (char**)&((list)->prev); *_alias=(char*)(to); } #define _RS(list) { char **_alias = (char**)&(list); *_alias=_tmp; } #define _CASTASGN(a,b) { char **_alias = (char**)&(a); *_alias=(char*)(b); } #else #define IF_NO_DECLTYPE(x) #define _SV(elt,list) #define _NEXT(elt,list,next) ((elt)->next) #define _NEXTASGN(elt,list,to,next) ((elt)->next)=(to) /* #define _PREV(elt,list,prev) ((elt)->prev) */ #define _PREVASGN(elt,list,to,prev) ((elt)->prev)=(to) #define _RS(list) #define _CASTASGN(a,b) (a)=(b) #endif /****************************************************************************** * The sort macro is an adaptation of Simon Tatham's O(n log(n)) mergesort * * Unwieldy variable names used here to avoid shadowing passed-in variables. * *****************************************************************************/ #define LL_SORT(list, cmp) \ LL_SORT2(list, cmp, next) #define LL_SORT2(list, cmp, next) \ do { \ LDECLTYPE(list) _ls_p; \ LDECLTYPE(list) _ls_q; \ LDECLTYPE(list) _ls_e; \ LDECLTYPE(list) _ls_tail; \ IF_NO_DECLTYPE(LDECLTYPE(list) _tmp;) \ int _ls_insize, _ls_nmerges, _ls_psize, _ls_qsize, _ls_i, _ls_looping; \ if (list) { \ _ls_insize = 1; \ _ls_looping = 1; \ while (_ls_looping) { \ _CASTASGN(_ls_p,list); \ (list) = NULL; \ _ls_tail = NULL; \ _ls_nmerges = 0; \ while (_ls_p) { \ _ls_nmerges++; \ _ls_q = _ls_p; \ _ls_psize = 0; \ for (_ls_i = 0; _ls_i < _ls_insize; _ls_i++) { \ _ls_psize++; \ _SV(_ls_q,list); _ls_q = _NEXT(_ls_q,list,next); _RS(list); \ if (!_ls_q) break; \ } \ _ls_qsize = _ls_insize; \ while (_ls_psize > 0 || (_ls_qsize > 0 && _ls_q)) { \ if (_ls_psize == 0) { \ _ls_e = _ls_q; _SV(_ls_q,list); _ls_q = \ _NEXT(_ls_q,list,next); _RS(list); _ls_qsize--; \ } else if (_ls_qsize == 0 || !_ls_q) { \ _ls_e = _ls_p; _SV(_ls_p,list); _ls_p = \ _NEXT(_ls_p,list,next); _RS(list); _ls_psize--; \ } else if (cmp(_ls_p,_ls_q) <= 0) { \ _ls_e = _ls_p; _SV(_ls_p,list); _ls_p = \ _NEXT(_ls_p,list,next); _RS(list); _ls_psize--; \ } else { \ _ls_e = _ls_q; _SV(_ls_q,list); _ls_q = \ _NEXT(_ls_q,list,next); _RS(list); _ls_qsize--; \ } \ if (_ls_tail) { \ _SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,_ls_e,next); _RS(list); \ } else { \ _CASTASGN(list,_ls_e); \ } \ _ls_tail = _ls_e; \ } \ _ls_p = _ls_q; \ } \ if (_ls_tail) { \ _SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,NULL,next); _RS(list); \ } \ if (_ls_nmerges <= 1) { \ _ls_looping=0; \ } \ _ls_insize *= 2; \ } \ } \ } while (0) #define DL_SORT(list, cmp) \ DL_SORT2(list, cmp, prev, next) #define DL_SORT2(list, cmp, prev, next) \ do { \ LDECLTYPE(list) _ls_p; \ LDECLTYPE(list) _ls_q; \ LDECLTYPE(list) _ls_e; \ LDECLTYPE(list) _ls_tail; \ IF_NO_DECLTYPE(LDECLTYPE(list) _tmp;) \ int _ls_insize, _ls_nmerges, _ls_psize, _ls_qsize, _ls_i, _ls_looping; \ if (list) { \ _ls_insize = 1; \ _ls_looping = 1; \ while (_ls_looping) { \ _CASTASGN(_ls_p,list); \ (list) = NULL; \ _ls_tail = NULL; \ _ls_nmerges = 0; \ while (_ls_p) { \ _ls_nmerges++; \ _ls_q = _ls_p; \ _ls_psize = 0; \ for (_ls_i = 0; _ls_i < _ls_insize; _ls_i++) { \ _ls_psize++; \ _SV(_ls_q,list); _ls_q = _NEXT(_ls_q,list,next); _RS(list); \ if (!_ls_q) break; \ } \ _ls_qsize = _ls_insize; \ while ((_ls_psize > 0) || ((_ls_qsize > 0) && _ls_q)) { \ if (_ls_psize == 0) { \ _ls_e = _ls_q; _SV(_ls_q,list); _ls_q = \ _NEXT(_ls_q,list,next); _RS(list); _ls_qsize--; \ } else if ((_ls_qsize == 0) || (!_ls_q)) { \ _ls_e = _ls_p; _SV(_ls_p,list); _ls_p = \ _NEXT(_ls_p,list,next); _RS(list); _ls_psize--; \ } else if (cmp(_ls_p,_ls_q) <= 0) { \ _ls_e = _ls_p; _SV(_ls_p,list); _ls_p = \ _NEXT(_ls_p,list,next); _RS(list); _ls_psize--; \ } else { \ _ls_e = _ls_q; _SV(_ls_q,list); _ls_q = \ _NEXT(_ls_q,list,next); _RS(list); _ls_qsize--; \ } \ if (_ls_tail) { \ _SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,_ls_e,next); _RS(list); \ } else { \ _CASTASGN(list,_ls_e); \ } \ _SV(_ls_e,list); _PREVASGN(_ls_e,list,_ls_tail,prev); _RS(list); \ _ls_tail = _ls_e; \ } \ _ls_p = _ls_q; \ } \ _CASTASGN((list)->prev, _ls_tail); \ _SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,NULL,next); _RS(list); \ if (_ls_nmerges <= 1) { \ _ls_looping=0; \ } \ _ls_insize *= 2; \ } \ } \ } while (0) #define CDL_SORT(list, cmp) \ CDL_SORT2(list, cmp, prev, next) #define CDL_SORT2(list, cmp, prev, next) \ do { \ LDECLTYPE(list) _ls_p; \ LDECLTYPE(list) _ls_q; \ LDECLTYPE(list) _ls_e; \ LDECLTYPE(list) _ls_tail; \ LDECLTYPE(list) _ls_oldhead; \ LDECLTYPE(list) _tmp; \ int _ls_insize, _ls_nmerges, _ls_psize, _ls_qsize, _ls_i, _ls_looping; \ if (list) { \ _ls_insize = 1; \ _ls_looping = 1; \ while (_ls_looping) { \ _CASTASGN(_ls_p,list); \ _CASTASGN(_ls_oldhead,list); \ (list) = NULL; \ _ls_tail = NULL; \ _ls_nmerges = 0; \ while (_ls_p) { \ _ls_nmerges++; \ _ls_q = _ls_p; \ _ls_psize = 0; \ for (_ls_i = 0; _ls_i < _ls_insize; _ls_i++) { \ _ls_psize++; \ _SV(_ls_q,list); \ if (_NEXT(_ls_q,list,next) == _ls_oldhead) { \ _ls_q = NULL; \ } else { \ _ls_q = _NEXT(_ls_q,list,next); \ } \ _RS(list); \ if (!_ls_q) break; \ } \ _ls_qsize = _ls_insize; \ while (_ls_psize > 0 || (_ls_qsize > 0 && _ls_q)) { \ if (_ls_psize == 0) { \ _ls_e = _ls_q; _SV(_ls_q,list); _ls_q = \ _NEXT(_ls_q,list,next); _RS(list); _ls_qsize--; \ if (_ls_q == _ls_oldhead) { _ls_q = NULL; } \ } else if (_ls_qsize == 0 || !_ls_q) { \ _ls_e = _ls_p; _SV(_ls_p,list); _ls_p = \ _NEXT(_ls_p,list,next); _RS(list); _ls_psize--; \ if (_ls_p == _ls_oldhead) { _ls_p = NULL; } \ } else if (cmp(_ls_p,_ls_q) <= 0) { \ _ls_e = _ls_p; _SV(_ls_p,list); _ls_p = \ _NEXT(_ls_p,list,next); _RS(list); _ls_psize--; \ if (_ls_p == _ls_oldhead) { _ls_p = NULL; } \ } else { \ _ls_e = _ls_q; _SV(_ls_q,list); _ls_q = \ _NEXT(_ls_q,list,next); _RS(list); _ls_qsize--; \ if (_ls_q == _ls_oldhead) { _ls_q = NULL; } \ } \ if (_ls_tail) { \ _SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,_ls_e,next); _RS(list); \ } else { \ _CASTASGN(list,_ls_e); \ } \ _SV(_ls_e,list); _PREVASGN(_ls_e,list,_ls_tail,prev); _RS(list); \ _ls_tail = _ls_e; \ } \ _ls_p = _ls_q; \ } \ _CASTASGN((list)->prev,_ls_tail); \ _CASTASGN(_tmp,list); \ _SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,_tmp,next); _RS(list); \ if (_ls_nmerges <= 1) { \ _ls_looping=0; \ } \ _ls_insize *= 2; \ } \ } \ } while (0) /****************************************************************************** * singly linked list macros (non-circular) * *****************************************************************************/ #define LL_PREPEND(head,add) \ LL_PREPEND2(head,add,next) #define LL_PREPEND2(head,add,next) \ do { \ (add)->next = (head); \ (head) = (add); \ } while (0) #define LL_CONCAT(head1,head2) \ LL_CONCAT2(head1,head2,next) #define LL_CONCAT2(head1,head2,next) \ do { \ LDECLTYPE(head1) _tmp; \ if (head1) { \ _tmp = (head1); \ while (_tmp->next) { _tmp = _tmp->next; } \ _tmp->next=(head2); \ } else { \ (head1)=(head2); \ } \ } while (0) #define LL_APPEND(head,add) \ LL_APPEND2(head,add,next) #define LL_APPEND2(head,add,next) \ do { \ LDECLTYPE(head) _tmp; \ (add)->next=NULL; \ if (head) { \ _tmp = (head); \ while (_tmp->next) { _tmp = _tmp->next; } \ _tmp->next=(add); \ } else { \ (head)=(add); \ } \ } while (0) #define LL_DELETE(head,del) \ LL_DELETE2(head,del,next) #define LL_DELETE2(head,del,next) \ do { \ LDECLTYPE(head) _tmp; \ if ((head) == (del)) { \ (head)=(head)->next; \ } else { \ _tmp = (head); \ while (_tmp->next && (_tmp->next != (del))) { \ _tmp = _tmp->next; \ } \ if (_tmp->next) { \ _tmp->next = (del)->next; \ } \ } \ } while (0) #define LL_COUNT(head,el,counter) \ LL_COUNT2(head,el,counter,next) \ #define LL_COUNT2(head,el,counter,next) \ do { \ (counter) = 0; \ LL_FOREACH2(head,el,next) { ++(counter); } \ } while (0) #define LL_FOREACH(head,el) \ LL_FOREACH2(head,el,next) #define LL_FOREACH2(head,el,next) \ for ((el) = (head); el; (el) = (el)->next) #define LL_FOREACH_SAFE(head,el,tmp) \ LL_FOREACH_SAFE2(head,el,tmp,next) #define LL_FOREACH_SAFE2(head,el,tmp,next) \ for ((el) = (head); (el) && ((tmp) = (el)->next, 1); (el) = (tmp)) #define LL_SEARCH_SCALAR(head,out,field,val) \ LL_SEARCH_SCALAR2(head,out,field,val,next) #define LL_SEARCH_SCALAR2(head,out,field,val,next) \ do { \ LL_FOREACH2(head,out,next) { \ if ((out)->field == (val)) break; \ } \ } while (0) #define LL_SEARCH(head,out,elt,cmp) \ LL_SEARCH2(head,out,elt,cmp,next) #define LL_SEARCH2(head,out,elt,cmp,next) \ do { \ LL_FOREACH2(head,out,next) { \ if ((cmp(out,elt))==0) break; \ } \ } while (0) #define LL_REPLACE_ELEM2(head, el, add, next) \ do { \ LDECLTYPE(head) _tmp; \ assert((head) != NULL); \ assert((el) != NULL); \ assert((add) != NULL); \ (add)->next = (el)->next; \ if ((head) == (el)) { \ (head) = (add); \ } else { \ _tmp = (head); \ while (_tmp->next && (_tmp->next != (el))) { \ _tmp = _tmp->next; \ } \ if (_tmp->next) { \ _tmp->next = (add); \ } \ } \ } while (0) #define LL_REPLACE_ELEM(head, el, add) \ LL_REPLACE_ELEM2(head, el, add, next) #define LL_PREPEND_ELEM2(head, el, add, next) \ do { \ if (el) { \ LDECLTYPE(head) _tmp; \ assert((head) != NULL); \ assert((add) != NULL); \ (add)->next = (el); \ if ((head) == (el)) { \ (head) = (add); \ } else { \ _tmp = (head); \ while (_tmp->next && (_tmp->next != (el))) { \ _tmp = _tmp->next; \ } \ if (_tmp->next) { \ _tmp->next = (add); \ } \ } \ } else { \ LL_APPEND2(head, add, next); \ } \ } while (0) \ #define LL_PREPEND_ELEM(head, el, add) \ LL_PREPEND_ELEM2(head, el, add, next) #define LL_APPEND_ELEM2(head, el, add, next) \ do { \ if (el) { \ assert((head) != NULL); \ assert((add) != NULL); \ (add)->next = (el)->next; \ (el)->next = (add); \ } else { \ LL_PREPEND2(head, add, next); \ } \ } while (0) \ #define LL_APPEND_ELEM(head, el, add) \ LL_APPEND_ELEM2(head, el, add, next) #ifdef NO_DECLTYPE /* Here are VS2008 / NO_DECLTYPE replacements for a few functions */ #undef LL_CONCAT2 #define LL_CONCAT2(head1,head2,next) \ do { \ char *_tmp; \ if (head1) { \ _tmp = (char*)(head1); \ while ((head1)->next) { (head1) = (head1)->next; } \ (head1)->next = (head2); \ _RS(head1); \ } else { \ (head1)=(head2); \ } \ } while (0) #undef LL_APPEND2 #define LL_APPEND2(head,add,next) \ do { \ if (head) { \ (add)->next = head; /* use add->next as a temp variable */ \ while ((add)->next->next) { (add)->next = (add)->next->next; } \ (add)->next->next=(add); \ } else { \ (head)=(add); \ } \ (add)->next=NULL; \ } while (0) #undef LL_DELETE2 #define LL_DELETE2(head,del,next) \ do { \ if ((head) == (del)) { \ (head)=(head)->next; \ } else { \ char *_tmp = (char*)(head); \ while ((head)->next && ((head)->next != (del))) { \ (head) = (head)->next; \ } \ if ((head)->next) { \ (head)->next = ((del)->next); \ } \ _RS(head); \ } \ } while (0) #undef LL_REPLACE_ELEM2 #define LL_REPLACE_ELEM2(head, el, add, next) \ do { \ assert((head) != NULL); \ assert((el) != NULL); \ assert((add) != NULL); \ if ((head) == (el)) { \ (head) = (add); \ } else { \ (add)->next = head; \ while ((add)->next->next && ((add)->next->next != (el))) { \ (add)->next = (add)->next->next; \ } \ if ((add)->next->next) { \ (add)->next->next = (add); \ } \ } \ (add)->next = (el)->next; \ } while (0) #undef LL_PREPEND_ELEM2 #define LL_PREPEND_ELEM2(head, el, add, next) \ do { \ if (el) { \ assert((head) != NULL); \ assert((add) != NULL); \ if ((head) == (el)) { \ (head) = (add); \ } else { \ (add)->next = (head); \ while ((add)->next->next && ((add)->next->next != (el))) { \ (add)->next = (add)->next->next; \ } \ if ((add)->next->next) { \ (add)->next->next = (add); \ } \ } \ (add)->next = (el); \ } else { \ LL_APPEND2(head, add, next); \ } \ } while (0) \ #endif /* NO_DECLTYPE */ /****************************************************************************** * doubly linked list macros (non-circular) * *****************************************************************************/ #define DL_PREPEND(head,add) \ DL_PREPEND2(head,add,prev,next) #define DL_PREPEND2(head,add,prev,next) \ do { \ (add)->next = (head); \ if (head) { \ (add)->prev = (head)->prev; \ (head)->prev = (add); \ } else { \ (add)->prev = (add); \ } \ (head) = (add); \ } while (0) #define DL_APPEND(head,add) \ DL_APPEND2(head,add,prev,next) #define DL_APPEND2(head,add,prev,next) \ do { \ if (head) { \ (add)->prev = (head)->prev; \ (head)->prev->next = (add); \ (head)->prev = (add); \ (add)->next = NULL; \ } else { \ (head)=(add); \ (head)->prev = (head); \ (head)->next = NULL; \ } \ } while (0) #define DL_CONCAT(head1,head2) \ DL_CONCAT2(head1,head2,prev,next) #define DL_CONCAT2(head1,head2,prev,next) \ do { \ LDECLTYPE(head1) _tmp; \ if (head2) { \ if (head1) { \ _CASTASGN(_tmp, (head2)->prev); \ (head2)->prev = (head1)->prev; \ (head1)->prev->next = (head2); \ _CASTASGN((head1)->prev, _tmp); \ } else { \ (head1)=(head2); \ } \ } \ } while (0) #define DL_DELETE(head,del) \ DL_DELETE2(head,del,prev,next) #define DL_DELETE2(head,del,prev,next) \ do { \ assert((del)->prev != NULL); \ if ((del)->prev == (del)) { \ (head)=NULL; \ } else if ((del)==(head)) { \ (del)->next->prev = (del)->prev; \ (head) = (del)->next; \ } else { \ (del)->prev->next = (del)->next; \ if ((del)->next) { \ (del)->next->prev = (del)->prev; \ } else { \ (head)->prev = (del)->prev; \ } \ } \ } while (0) #define DL_COUNT(head,el,counter) \ DL_COUNT2(head,el,counter,next) \ #define DL_COUNT2(head,el,counter,next) \ do { \ (counter) = 0; \ DL_FOREACH2(head,el,next) { ++(counter); } \ } while (0) #define DL_FOREACH(head,el) \ DL_FOREACH2(head,el,next) #define DL_FOREACH2(head,el,next) \ for ((el) = (head); el; (el) = (el)->next) /* this version is safe for deleting the elements during iteration */ #define DL_FOREACH_SAFE(head,el,tmp) \ DL_FOREACH_SAFE2(head,el,tmp,next) #define DL_FOREACH_SAFE2(head,el,tmp,next) \ for ((el) = (head); (el) && ((tmp) = (el)->next, 1); (el) = (tmp)) /* these are identical to their singly-linked list counterparts */ #define DL_SEARCH_SCALAR LL_SEARCH_SCALAR #define DL_SEARCH LL_SEARCH #define DL_SEARCH_SCALAR2 LL_SEARCH_SCALAR2 #define DL_SEARCH2 LL_SEARCH2 #define DL_REPLACE_ELEM2(head, el, add, prev, next) \ do { \ assert((head) != NULL); \ assert((el) != NULL); \ assert((add) != NULL); \ if ((head) == (el)) { \ (head) = (add); \ (add)->next = (el)->next; \ if ((el)->next == NULL) { \ (add)->prev = (add); \ } else { \ (add)->prev = (el)->prev; \ (add)->next->prev = (add); \ } \ } else { \ (add)->next = (el)->next; \ (add)->prev = (el)->prev; \ (add)->prev->next = (add); \ if ((el)->next == NULL) { \ (head)->prev = (add); \ } else { \ (add)->next->prev = (add); \ } \ } \ } while (0) #define DL_REPLACE_ELEM(head, el, add) \ DL_REPLACE_ELEM2(head, el, add, prev, next) #define DL_PREPEND_ELEM2(head, el, add, prev, next) \ do { \ if (el) { \ assert((head) != NULL); \ assert((add) != NULL); \ (add)->next = (el); \ (add)->prev = (el)->prev; \ (el)->prev = (add); \ if ((head) == (el)) { \ (head) = (add); \ } else { \ (add)->prev->next = (add); \ } \ } else { \ DL_APPEND2(head, add, prev, next); \ } \ } while (0) \ #define DL_PREPEND_ELEM(head, el, add) \ DL_PREPEND_ELEM2(head, el, add, prev, next) #define DL_APPEND_ELEM2(head, el, add, prev, next) \ do { \ if (el) { \ assert((head) != NULL); \ assert((add) != NULL); \ (add)->next = (el)->next; \ (add)->prev = (el); \ (el)->next = (add); \ if ((add)->next) { \ (add)->next->prev = (add); \ } else { \ (head)->prev = (add); \ } \ } else { \ DL_PREPEND2(head, add, prev, next); \ } \ } while (0) \ #define DL_APPEND_ELEM(head, el, add) \ DL_APPEND_ELEM2(head, el, add, prev, next) /****************************************************************************** * circular doubly linked list macros * *****************************************************************************/ #define CDL_APPEND(head,add) \ CDL_APPEND2(head,add,prev,next) #define CDL_APPEND2(head,add,prev,next) \ do { \ if (head) { \ (add)->prev = (head)->prev; \ (add)->next = (head); \ (head)->prev = (add); \ (add)->prev->next = (add); \ } else { \ (add)->prev = (add); \ (add)->next = (add); \ (head) = (add); \ } \ } while (0) #define CDL_PREPEND(head,add) \ CDL_PREPEND2(head,add,prev,next) #define CDL_PREPEND2(head,add,prev,next) \ do { \ if (head) { \ (add)->prev = (head)->prev; \ (add)->next = (head); \ (head)->prev = (add); \ (add)->prev->next = (add); \ } else { \ (add)->prev = (add); \ (add)->next = (add); \ } \ (head) = (add); \ } while (0) #define CDL_DELETE(head,del) \ CDL_DELETE2(head,del,prev,next) #define CDL_DELETE2(head,del,prev,next) \ do { \ if (((head)==(del)) && ((head)->next == (head))) { \ (head) = NULL; \ } else { \ (del)->next->prev = (del)->prev; \ (del)->prev->next = (del)->next; \ if ((del) == (head)) (head)=(del)->next; \ } \ } while (0) #define CDL_COUNT(head,el,counter) \ CDL_COUNT2(head,el,counter,next) \ #define CDL_COUNT2(head, el, counter,next) \ do { \ (counter) = 0; \ CDL_FOREACH2(head,el,next) { ++(counter); } \ } while (0) #define CDL_FOREACH(head,el) \ CDL_FOREACH2(head,el,next) #define CDL_FOREACH2(head,el,next) \ for ((el)=(head);el;(el)=(((el)->next==(head)) ? NULL : (el)->next)) #define CDL_FOREACH_SAFE(head,el,tmp1,tmp2) \ CDL_FOREACH_SAFE2(head,el,tmp1,tmp2,prev,next) #define CDL_FOREACH_SAFE2(head,el,tmp1,tmp2,prev,next) \ for ((el) = (head), (tmp1) = (head) ? (head)->prev : NULL; \ (el) && ((tmp2) = (el)->next, 1); \ (el) = ((el) == (tmp1) ? NULL : (tmp2))) #define CDL_SEARCH_SCALAR(head,out,field,val) \ CDL_SEARCH_SCALAR2(head,out,field,val,next) #define CDL_SEARCH_SCALAR2(head,out,field,val,next) \ do { \ CDL_FOREACH2(head,out,next) { \ if ((out)->field == (val)) break; \ } \ } while (0) #define CDL_SEARCH(head,out,elt,cmp) \ CDL_SEARCH2(head,out,elt,cmp,next) #define CDL_SEARCH2(head,out,elt,cmp,next) \ do { \ CDL_FOREACH2(head,out,next) { \ if ((cmp(out,elt))==0) break; \ } \ } while (0) #define CDL_REPLACE_ELEM2(head, el, add, prev, next) \ do { \ assert((head) != NULL); \ assert((el) != NULL); \ assert((add) != NULL); \ if ((el)->next == (el)) { \ (add)->next = (add); \ (add)->prev = (add); \ (head) = (add); \ } else { \ (add)->next = (el)->next; \ (add)->prev = (el)->prev; \ (add)->next->prev = (add); \ (add)->prev->next = (add); \ if ((head) == (el)) { \ (head) = (add); \ } \ } \ } while (0) #define CDL_REPLACE_ELEM(head, el, add) \ CDL_REPLACE_ELEM2(head, el, add, prev, next) #define CDL_PREPEND_ELEM2(head, el, add, prev, next) \ do { \ if (el) { \ assert((head) != NULL); \ assert((add) != NULL); \ (add)->next = (el); \ (add)->prev = (el)->prev; \ (el)->prev = (add); \ (add)->prev->next = (add); \ if ((head) == (el)) { \ (head) = (add); \ } \ } else { \ CDL_APPEND2(head, add, prev, next); \ } \ } while (0) #define CDL_PREPEND_ELEM(head, el, add) \ CDL_PREPEND_ELEM2(head, el, add, prev, next) #define CDL_APPEND_ELEM2(head, el, add, prev, next) \ do { \ if (el) { \ assert((head) != NULL); \ assert((add) != NULL); \ (add)->next = (el)->next; \ (add)->prev = (el); \ (el)->next = (add); \ (add)->next->prev = (add); \ } else { \ CDL_PREPEND2(head, add, prev, next); \ } \ } while (0) #define CDL_APPEND_ELEM(head, el, add) \ CDL_APPEND_ELEM2(head, el, add, prev, next) #endif /* UTLIST_H */ pev/include/config.h0000644000175000017500000000404113034014706013424 0ustar useruser/* pev - the PE file analyzer toolkit config.h Copyright (C) 2013 - 2014 pev authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #pragma once #include struct _pev_config_t; // Forward declaration. typedef bool (*pev_config_parse_callback_t)(struct _pev_config_t * const config, const char *name, const char *value); typedef void (*pev_config_cleanup_callback_t)(void *data); typedef struct _pev_config_t { char *plugins_path; struct { pev_config_parse_callback_t parse_callback; pev_config_cleanup_callback_t cleanup_callback; void *data; } user_defined; } pev_config_t; const char *pev_plugins_path(void); int pev_load_config(pev_config_t * const config); void pev_cleanup_config(pev_config_t * const config); pev/include/common.h0000644000175000017500000000520513034014706013452 0ustar useruser/* pev - the PE file analyzer toolkit common.h - common defitions for the pev toolkit. Copyright (C) 2013 - 2015 pev authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #pragma once #include #include #include #include #include #include #include #include #include "config.h" #include "output.h" #include "plugins.h" #define UNUSED(x) (void)(sizeof((x))) #define EXIT_ERROR(msg) \ { \ fprintf(stderr, "%s\n", msg); \ exit(1); \ } #define MAX_DLL_NAME 256 #define MAX_FUNCTION_NAME 512 #define MAX_MSG 80 #define VERSION "0.80" #define TOOLKIT "from pev " VERSION " toolkit" #define COPY \ "License GPLv2+: GNU GPL version 2 or later .\n" \ "This is free software: you are free to change and redistribute it.\n" \ "There is NO WARRANTY, to the extent permitted by law." void *malloc_s(size_t size); #define PEV_INITIALIZE(config) \ do { \ memset(config, 0, sizeof(*config)); \ pev_load_config(config); \ int ret = plugins_load_all(config); \ if (ret < 0) \ exit(EXIT_FAILURE); \ output_init(); /* Requires plugin for text output. */ \ } while (0) #define PEV_FINALIZE(config) \ do { \ output_term(); \ plugins_unload_all(); \ pev_cleanup_config(config); \ } while (0) pev/include/plugins.h0000644000175000017500000000340513034014706013643 0ustar useruser/* pev - the PE file analyzer toolkit plugins.h - Symbols and definitions for the plugins subsystem. Copyright (C) 2012 - 2014 pev authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. */ #pragma once #include "config.h" #ifdef __cplusplus extern "C" { #endif int plugins_load(const char *path); int plugins_load_all(pev_config_t *config); int plugins_load_all_from_directory(const char *path); void plugins_unload_all(void); #ifdef __cplusplus } #endif pev/Makefile0000644000175000017500000000127213034014706012026 0ustar useruserLIBPE_DIR = lib/libpe PEV_DIR = src VERSION = 0.80 ZIPDIR = pev-$(VERSION)-win32 ZIPFILE = $(ZIPDIR).zip all: %: cd $(LIBPE_DIR) && $(MAKE) $@ cd $(PEV_DIR) && $(MAKE) $@ # Cygwin only zip: cd $(PEV_DIR)/windows && $(MAKE) mkdir -p $(ZIPDIR)/plugins cp src/build/plugins/*.dll $(ZIPDIR)/plugins/ echo -ne "plugins_dir=plugins\r\n" > $(ZIPDIR)/pev.conf cp $(PEV_DIR)/userdb.txt $(ZIPDIR) cp lib/libpe/libpe.dll $(ZIPDIR)/ cp /usr/bin/cygwin1.dll $(ZIPDIR)/ cp /usr/bin/cygcrypto-1.0.0.dll $(ZIPDIR)/ cp /usr/bin/cygz.dll $(ZIPDIR)/ cp README.md $(ZIPDIR)/ cp $(PEV_DIR)/build/*.exe $(ZIPDIR)/ cp $(PEV_DIR)/windows/run.bat $(ZIPDIR)/ zip -r $(ZIPFILE) $(ZIPDIR)/* rm -rf $(ZIPDIR) pev/README.md0000644000175000017500000000243213034271604011646 0ustar useruser# pev pev is a full-featured, open source, multiplatform command line toolkit to work with PE (Portable Executables) binaries. This is the current source for a likely unreleased version. Use at your own risk. For more information and stable releases, please refer to http://pev.sourceforge.net/ [![Build Status](https://travis-ci.org/merces/pev.png)](https://travis-ci.org/merces/pev) ## How to get the source code? git clone --recursive https://github.com/merces/pev.git ## How to build on Linux? cd pev make **NOTE**: You may need to install OpenSSL using your package manager. Examples: apt-get install libssl-dev yum install openssl-devel ## How to build on OS X? cd pev CFLAGS="-I/usr/local/opt/openssl/include/" LDFLAGS="-L/usr/local/opt/openssl/lib/" make **NOTE**: You may need to install OpenSSL via [Homebrew](http://brew.sh/): brew update brew install openssl brew link --force openssl ## How to build on Windows (via [Cygwin](http://cygwin.com/))? cd pev make make zip **NOTE**: The following packages must be installed along with your Cygwin: - gcc-core - binutils - make - zip - openssl-devel - git (just to clone de repository and make things easier) Please check the [online documentation](http://pev.sourceforge.net/doc/manual/en_us) for more details. pev/lib/0000755000175000017500000000000013034014706011132 5ustar useruserpev/lib/libpe/0000755000175000017500000000000013034272345012232 5ustar useruserpev/lib/libpe/pe.h0000644000175000017500000001033113034014710012773 0ustar useruser/* libpe - the PE library Copyright (C) 2010 - 2015 libpe authors This file is part of libpe. libpe is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. libpe is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with libpe. If not, see . */ #ifndef LIBPE_H #define LIBPE_H #ifdef __cplusplus extern "C" { #endif #include "macros.h" #include #include #include #include #include #include "error.h" #include "hdr_dos.h" #include "hdr_coff.h" #include "hdr_optional.h" #include "directories.h" #include "sections.h" #define MAGIC_MZ 0x5a4d // Belongs to the DOS header #define MAX_DIRECTORIES 16 #define MAX_SECTIONS 96 #define IMAGE_ORDINAL_FLAG32 0x80000000 #define IMAGE_ORDINAL_FLAG64 0x8000000000000000ULL #define SIGNATURE_NE 0x454E // NE\0\0 in little-endian #define SIGNATURE_PE 0x4550 // PE\0\0 in little-endian typedef enum { LIBPE_OPT_NOCLOSE_FD = (1 << 0), // Keeps `stream` open for further usage. LIBPE_OPT_OPEN_RW = (1 << 1) // Open file for read and writing } pe_option_e; typedef uint16_t pe_options_e; // bitmasked pe_option_e values typedef struct { // DOS header IMAGE_DOS_HEADER *dos_hdr; // Signature uint32_t signature; // COFF header IMAGE_COFF_HEADER *coff_hdr; // Optional header void *optional_hdr_ptr; IMAGE_OPTIONAL_HEADER optional_hdr; // Directories uint32_t num_directories; void *directories_ptr; IMAGE_DATA_DIRECTORY **directories; // array up to MAX_DIRECTORIES // Sections uint16_t num_sections; void *sections_ptr; IMAGE_SECTION_HEADER **sections; // array up to MAX_SECTIONS uint64_t entrypoint; uint64_t imagebase; #if 0 uint16_t e_lfanew; uint16_t architecture; uint64_t entrypoint; uint64_t imagebase; uint64_t size; uint16_t num_rsrc_entries; uint16_t addr_rsrc_sec; uint16_t addr_rsrc_dir; // pointers (will be freed if needed) //IMAGE_TLS_DIRECTORY32 *tls_ptr; IMAGE_RESOURCE_DIRECTORY *rsrc_ptr; IMAGE_RESOURCE_DIRECTORY_ENTRY **rsrc_entries_ptr; #endif } pe_file_t; typedef struct { FILE *stream; char *path; void *map_addr; off_t map_size; uintptr_t map_end; pe_file_t pe; } pe_ctx_t; // General functions bool pe_can_read(const pe_ctx_t *ctx, const void *ptr, size_t size); pe_err_e pe_load_file(pe_ctx_t *ctx, const char *path); pe_err_e pe_load_file_ext(pe_ctx_t *ctx, const char *path, pe_options_e options); pe_err_e pe_unload(pe_ctx_t *ctx); pe_err_e pe_parse(pe_ctx_t *ctx); bool pe_is_loaded(const pe_ctx_t *ctx); bool pe_is_pe(const pe_ctx_t *ctx); bool pe_is_dll(const pe_ctx_t *ctx); uint64_t pe_filesize(const pe_ctx_t *ctx); IMAGE_SECTION_HEADER *pe_rva2section(pe_ctx_t *ctx, uint64_t rva); uint64_t pe_rva2ofs(const pe_ctx_t *ctx, uint64_t rva); uint64_t pe_ofs2rva(const pe_ctx_t *ctx, uint64_t ofs); // Header functions IMAGE_DOS_HEADER *pe_dos(pe_ctx_t *ctx); IMAGE_COFF_HEADER *pe_coff(pe_ctx_t *ctx); IMAGE_OPTIONAL_HEADER *pe_optional(pe_ctx_t *ctx); uint32_t pe_directories_count(const pe_ctx_t *ctx); IMAGE_DATA_DIRECTORY **pe_directories(pe_ctx_t *ctx); IMAGE_DATA_DIRECTORY *pe_directory_by_entry(pe_ctx_t *ctx, ImageDirectoryEntry entry); uint16_t pe_sections_count(const pe_ctx_t *ctx); IMAGE_SECTION_HEADER **pe_sections(pe_ctx_t *ctx); IMAGE_SECTION_HEADER *pe_section_by_name(pe_ctx_t *ctx, const char *section_name); const char *pe_machine_type_name(MachineType type); const char *pe_image_characteristic_name(ImageCharacteristics characteristic); const char *pe_image_dllcharacteristic_name(ImageDllCharacteristics characteristic); const char *pe_windows_subsystem_name(WindowsSubsystem subsystem); const char *pe_directory_name(ImageDirectoryEntry entry); const char *pe_section_characteristic_name(SectionCharacteristics characteristic); #ifdef __cplusplus } // extern "C" #endif #endif pev/lib/libpe/LICENSE0000644000175000017500000001674213034014710013237 0ustar useruser GNU LESSER GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below. 0. Additional Definitions. As used herein, "this License" refers to version 3 of the GNU Lesser General Public License, and the "GNU GPL" refers to version 3 of the GNU General Public License. "The Library" refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. An "Application" is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library. A "Combined Work" is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the "Linked Version". The "Minimal Corresponding Source" for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version. The "Corresponding Application Code" for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work. 1. Exception to Section 3 of the GNU GPL. You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. 2. Conveying Modified Versions. If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version: a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. 3. Object Code Incorporating Material from Library Header Files. The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following: a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the object code with a copy of the GNU GPL and this license document. 4. Combined Works. You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the Combined Work with a copy of the GNU GPL and this license document. c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. d) Do one of the following: 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source. 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.) 5. Combined Libraries. You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License. b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 6. Revised Versions of the GNU Lesser General Public License. The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation. If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library.pev/lib/libpe/dir_security.h0000644000175000017500000000531013034014710015075 0ustar useruser/* libpe - the PE library Copyright (C) 2010 - 2015 libpe authors This file is part of libpe. libpe is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. libpe is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with libpe. If not, see . */ #ifndef LIBPE_DIR_SECURITY_H #define LIBPE_DIR_SECURITY_H #include #define ANYSIZE_ARRAY 1 // #define WIN_TRUST_MAJOR_REVISION_MASK 0xFFFF0000 // #define WIN_TRUST_MINOR_REVISION_MASK 0x0000FFFF // #define WIN_TRUST_REVISION_1_0 0x00010000 typedef enum { // Version 1, legacy version of the Win_Certificate // structure. It is supported only for purposes of // verifying legacy Authenticode signatures WIN_CERT_REVISION_1_0 = 0x0100, // Version 2 is the current version of the Win_Certificate structure. WIN_CERT_REVISION_2_0 = 0x0200 } CertRevision; typedef enum { WIN_CERT_TYPE_X509 = 0x0001, // bCertificate contains an X.509 (Certificate) WIN_CERT_TYPE_PKCS_SIGNED_DATA = 0x0002, // bCertificate contains a PKCS#7 (SignedData structure) WIN_CERT_TYPE_RESERVED_1 = 0x0003, // Reserved WIN_CERT_TYPE_TS_STACK_SIGNED = 0x0004, // Terminal Server Protocol Stack (Certificate signing) WIN_CERT_TYPE_EFI_PKCS115 = 0x0EF0, WIN_CERT_TYPE_EFI_GUID = 0x0EF1 } CertType; #pragma pack(push, 4) // Originally declared in Wintrust.h typedef struct { // Specified the size, in bytes, of the WIN_CERTIFICATE structure, // including the data in bCertificate. uint32_t dwLength; // Indicates the revision of the structure. uint16_t wRevision; // Specifies the type of certificate. // This member can be one of the following values: // Value Meaning // ---------------------------------------------------------------------------------------- // WIN_CERT_TYPE_X509 The certificate contains an X.509 Certificate. // WIN_CERT_TYPE_PKCS_SIGNED_DATA The certificate contains a PKCS SignedData structure. // WIN_CERT_TYPE_RESERVED_1 Reserved. // WIN_CERT_TYPE_TS_STACK_SIGNED uint16_t wCertificateType; // A variable-sized array of bytes that contains the certificate data. uint8_t bCertificate[ANYSIZE_ARRAY]; } WIN_CERTIFICATE; typedef struct { uint32_t cbData; uint8_t *pbData; } CRYPT_DATA_BLOB; #pragma pack(pop) #endif pev/lib/libpe/hdr_dos.h0000644000175000017500000000247013034014710014016 0ustar useruser/* libpe - the PE library Copyright (C) 2010 - 2015 libpe authors This file is part of libpe. libpe is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. libpe is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with libpe. If not, see . */ #ifndef LIBPE_HDR_DOS_H #define LIBPE_HDR_DOS_H #include #pragma pack(push, 1) typedef struct { uint16_t e_magic; uint16_t e_cblp; uint16_t e_cp; uint16_t e_crlc; uint16_t e_cparhdr; uint16_t e_minalloc; uint16_t e_maxalloc; uint16_t e_ss; uint16_t e_sp; uint16_t e_csum; uint16_t e_ip; uint16_t e_cs; uint16_t e_lfarlc; uint16_t e_ovno; uint16_t e_res[4]; uint16_t e_oemid; uint16_t e_oeminfo; uint16_t e_res2[10]; uint32_t e_lfanew; // sizeof(IMAGE_DOS_HEADER) + size of MS-DOS stub } IMAGE_DOS_HEADER; #pragma pack(pop) #endif pev/lib/libpe/pe.c0000644000175000017500000004550013034014710012774 0ustar useruser/* libpe - the PE library Copyright (C) 2010 - 2015 libpe authors This file is part of libpe. libpe is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. libpe is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with libpe. If not, see . */ #include "pe.h" #include #include #include #include #include #include #include #include bool pe_can_read(const pe_ctx_t *ctx, const void *ptr, size_t size) { const uintptr_t end = (uintptr_t)LIBPE_PTR_ADD(ptr, size); return ptr >= ctx->map_addr && end <= ctx->map_end; } pe_err_e pe_load_file(pe_ctx_t *ctx, const char *path) { return pe_load_file_ext(ctx, path, 0); } pe_err_e pe_load_file_ext(pe_ctx_t *ctx, const char *path, pe_options_e options) { int ret = 0; // Cleanup the whole struct. memset(ctx, 0, sizeof(pe_ctx_t)); ctx->path = strdup(path); if (ctx->path == NULL) { //perror("strdup"); return LIBPE_E_ALLOCATION_FAILURE; } // Open the file. int oflag = options & LIBPE_OPT_OPEN_RW ? O_RDWR : O_RDONLY; const int fd = open(ctx->path, oflag); if (fd == -1) { //perror("open"); return LIBPE_E_OPEN_FAILED; } // Stat the fd to retrieve the file informations. // If file is a symlink, fstat will stat the pointed file, not the link. struct stat stat; ret = fstat(fd, &stat); if (ret == -1) { close(fd); //perror("fstat"); return LIBPE_E_FSTAT_FAILED; } // Check if we're dealing with a regular file. if (!S_ISREG(stat.st_mode)) { close(fd); //fprintf(stderr, "%s is not a file\n", ctx->path); return LIBPE_E_NOT_A_FILE; } // Grab the file size. ctx->map_size = stat.st_size; // Create the virtual memory mapping. int mprot = options & LIBPE_OPT_OPEN_RW ? PROT_READ|PROT_WRITE /* Pages may be written */ : PROT_READ; // MAP_SHARED makes updates to the mapping visible to other processes that map this file. // The file may not actually be updated until msync(2) or munmap() is called. int mflags = options & LIBPE_OPT_OPEN_RW ? MAP_SHARED : MAP_PRIVATE; ctx->map_addr = mmap(NULL, ctx->map_size, mprot, mflags, fd, 0); if (ctx->map_addr == MAP_FAILED) { close(fd); //perror("mmap"); return LIBPE_E_MMAP_FAILED; } ctx->map_end = (uintptr_t)LIBPE_PTR_ADD(ctx->map_addr, ctx->map_size); if (options & LIBPE_OPT_NOCLOSE_FD) { // The file descriptor is not dup'ed, and will be closed when the stream created by fdopen() is closed. FILE *fp = fdopen(fd, "r+b"); // NOTE: 'b' is ignored on all POSIX conforming systems. if (fp == NULL) { //perror("fdopen"); return LIBPE_E_FDOPEN_FAILED; } ctx->stream = fp; } else { // We can now close the fd. ret = close(fd); if (ret == -1) { //perror("close"); return LIBPE_E_CLOSE_FAILED; } } // Give advice about how we'll use our memory mapping. ret = madvise(ctx->map_addr, ctx->map_size, MADV_SEQUENTIAL); if (ret < 0) { //perror("madvise"); // NOTE: This is a recoverable error. Do not abort. } return LIBPE_E_OK; } pe_err_e pe_unload(pe_ctx_t *ctx) { int ret = 0; if (ctx->stream != NULL) { fclose(ctx->stream); } free(ctx->path); // Dealloc internal pointers. free(ctx->pe.directories); free(ctx->pe.sections); // Dealloc the virtual mapping. if (ctx->map_addr != NULL) { ret = munmap(ctx->map_addr, ctx->map_size); if (ret != 0) { //perror("munmap"); return LIBPE_E_MUNMAP_FAILED; } } // Cleanup the whole struct. memset(ctx, 0, sizeof(pe_ctx_t)); return LIBPE_E_OK; } pe_err_e pe_parse(pe_ctx_t *ctx) { ctx->pe.dos_hdr = ctx->map_addr; if (ctx->pe.dos_hdr->e_magic != MAGIC_MZ) return LIBPE_E_NOT_A_PE_FILE; const uint32_t *signature_ptr = LIBPE_PTR_ADD(ctx->pe.dos_hdr, ctx->pe.dos_hdr->e_lfanew); if (!pe_can_read(ctx, signature_ptr, sizeof(uint32_t))) return LIBPE_E_INVALID_LFANEW; // NT signature (PE\0\0), or 16-bit Windows NE signature (NE\0\0). ctx->pe.signature = *signature_ptr; switch (ctx->pe.signature) { default: //fprintf(stderr, "Invalid signature: %x\n", ctx->pe.signature); return LIBPE_E_INVALID_SIGNATURE; case SIGNATURE_NE: case SIGNATURE_PE: break; } ctx->pe.coff_hdr = LIBPE_PTR_ADD(signature_ptr, LIBPE_SIZEOF_MEMBER(pe_file_t, signature)); if (!pe_can_read(ctx, ctx->pe.coff_hdr, sizeof(IMAGE_COFF_HEADER))) return LIBPE_E_MISSING_COFF_HEADER; ctx->pe.num_sections = ctx->pe.coff_hdr->NumberOfSections; // Optional header points right after the COFF header. ctx->pe.optional_hdr_ptr = LIBPE_PTR_ADD(ctx->pe.coff_hdr, sizeof(IMAGE_COFF_HEADER)); // Figure out whether it's a PE32 or PE32+. uint16_t *opt_type_ptr = ctx->pe.optional_hdr_ptr; if (!pe_can_read(ctx, opt_type_ptr, LIBPE_SIZEOF_MEMBER(IMAGE_OPTIONAL_HEADER, type))) return LIBPE_E_MISSING_OPTIONAL_HEADER; ctx->pe.optional_hdr.type = *opt_type_ptr; switch (ctx->pe.optional_hdr.type) { default: case MAGIC_ROM: // Oh boy! We do not support ROM. Abort! //fprintf(stderr, "ROM image is not supported\n"); return LIBPE_E_UNSUPPORTED_IMAGE; case MAGIC_PE32: if (!pe_can_read(ctx, ctx->pe.optional_hdr_ptr, sizeof(IMAGE_OPTIONAL_HEADER_32))) return LIBPE_E_MISSING_OPTIONAL_HEADER; ctx->pe.optional_hdr._32 = ctx->pe.optional_hdr_ptr; ctx->pe.optional_hdr.length = sizeof(IMAGE_OPTIONAL_HEADER_32); ctx->pe.num_directories = ctx->pe.optional_hdr._32->NumberOfRvaAndSizes; ctx->pe.entrypoint = ctx->pe.optional_hdr._32->AddressOfEntryPoint; ctx->pe.imagebase = ctx->pe.optional_hdr._32->ImageBase; break; case MAGIC_PE64: if (!pe_can_read(ctx, ctx->pe.optional_hdr_ptr, sizeof(IMAGE_OPTIONAL_HEADER_64))) return LIBPE_E_MISSING_OPTIONAL_HEADER; ctx->pe.optional_hdr._64 = ctx->pe.optional_hdr_ptr; ctx->pe.optional_hdr.length = sizeof(IMAGE_OPTIONAL_HEADER_64); ctx->pe.num_directories = ctx->pe.optional_hdr._64->NumberOfRvaAndSizes; ctx->pe.entrypoint = ctx->pe.optional_hdr._64->AddressOfEntryPoint; ctx->pe.imagebase = ctx->pe.optional_hdr._64->ImageBase; break; } if (ctx->pe.num_directories > MAX_DIRECTORIES) { //fprintf(stderr, "Too many directories (%u)\n", ctx->pe.num_directories); return LIBPE_E_TOO_MANY_DIRECTORIES; } if (ctx->pe.num_sections > MAX_SECTIONS) { //fprintf(stderr, "Too many sections (%u)\n", ctx->pe.num_sections); return LIBPE_E_TOO_MANY_SECTIONS; } ctx->pe.directories_ptr = LIBPE_PTR_ADD(ctx->pe.optional_hdr_ptr, ctx->pe.optional_hdr.length); // If there are no directories, sections_ptr will point right // after the OPTIONAL header, otherwise, it will point right // after the directories. ctx->pe.sections_ptr = LIBPE_PTR_ADD(ctx->pe.directories_ptr, ctx->pe.num_directories * sizeof(IMAGE_DATA_DIRECTORY)); if (ctx->pe.num_directories > 0) { ctx->pe.directories = malloc(ctx->pe.num_directories * sizeof(IMAGE_DATA_DIRECTORY *)); if (ctx->pe.directories == NULL) return LIBPE_E_ALLOCATION_FAILURE; for (uint32_t i = 0; i < ctx->pe.num_directories; i++) { ctx->pe.directories[i] = LIBPE_PTR_ADD(ctx->pe.directories_ptr, i * sizeof(IMAGE_DATA_DIRECTORY)); } } else { ctx->pe.directories_ptr = NULL; } if (ctx->pe.num_sections > 0) { ctx->pe.sections = malloc(ctx->pe.num_sections * sizeof(IMAGE_SECTION_HEADER *)); if (ctx->pe.sections == NULL) return LIBPE_E_ALLOCATION_FAILURE; for (uint32_t i = 0; i < ctx->pe.num_sections; i++) { ctx->pe.sections[i] = LIBPE_PTR_ADD(ctx->pe.sections_ptr, i * sizeof(IMAGE_SECTION_HEADER)); } } else { ctx->pe.sections_ptr = NULL; } return LIBPE_E_OK; } bool pe_is_loaded(const pe_ctx_t *ctx) { return ctx->map_addr != NULL && ctx->map_size > 0; } bool pe_is_pe(const pe_ctx_t *ctx) { // Check MZ header if (ctx->pe.dos_hdr == NULL || ctx->pe.dos_hdr->e_magic != MAGIC_MZ) return false; // Check PE signature if (ctx->pe.signature != SIGNATURE_PE) return false; return true; } bool pe_is_dll(const pe_ctx_t *ctx) { if (ctx->pe.coff_hdr == NULL) return false; return ctx->pe.coff_hdr->Characteristics & IMAGE_FILE_DLL ? true : false; } uint64_t pe_filesize(const pe_ctx_t *ctx) { return ctx->map_size; } // return the section of given rva IMAGE_SECTION_HEADER *pe_rva2section(pe_ctx_t *ctx, uint64_t rva) { if (rva == 0 || ctx->pe.sections == NULL) return NULL; for (uint32_t i=0; i < ctx->pe.num_sections; i++) { if (rva >= ctx->pe.sections[i]->VirtualAddress && rva <= ctx->pe.sections[i]->VirtualAddress + ctx->pe.sections[i]->Misc.VirtualSize) return ctx->pe.sections[i]; } return NULL; } // Converts a RVA (Relative Virtual Address) to a raw file offset uint64_t pe_rva2ofs(const pe_ctx_t *ctx, uint64_t rva) { if (rva == 0 || ctx->pe.sections == NULL) return 0; // Find out which section the given RVA belongs for (uint32_t i=0; i < ctx->pe.num_sections; i++) { if (ctx->pe.sections[i] == NULL) return 0; // Use SizeOfRawData if VirtualSize == 0 size_t section_size = ctx->pe.sections[i]->Misc.VirtualSize; if (section_size == 0) section_size = ctx->pe.sections[i]->SizeOfRawData; if (ctx->pe.sections[i]->VirtualAddress <= rva) { if ((ctx->pe.sections[i]->VirtualAddress + section_size) > rva) { rva -= ctx->pe.sections[i]->VirtualAddress; rva += ctx->pe.sections[i]->PointerToRawData; return rva; } } } // Handle PE with a single section if (ctx->pe.num_sections == 1) { rva -= ctx->pe.sections[0]->VirtualAddress; rva += ctx->pe.sections[0]->PointerToRawData; return rva; } return rva; // PE with no sections, return RVA } // Returns the RVA for a given offset uint64_t pe_ofs2rva(const pe_ctx_t *ctx, uint64_t ofs) { if (ofs == 0 || ctx->pe.sections == NULL) return 0; for (uint32_t i=0; i < ctx->pe.num_sections; i++) { if (ctx->pe.sections[i] == NULL) return 0; if (ctx->pe.sections[i]->PointerToRawData <= ofs) { if ((ctx->pe.sections[i]->PointerToRawData + ctx->pe.sections[i]->SizeOfRawData) > ofs) { ofs -= ctx->pe.sections[i]->PointerToRawData; ofs += ctx->pe.sections[i]->VirtualAddress; return ofs; } } } return 0; } IMAGE_DOS_HEADER *pe_dos(pe_ctx_t *ctx) { return ctx->pe.dos_hdr; } IMAGE_COFF_HEADER *pe_coff(pe_ctx_t *ctx) { return ctx->pe.coff_hdr; } IMAGE_OPTIONAL_HEADER *pe_optional(pe_ctx_t *ctx) { return &ctx->pe.optional_hdr; } uint32_t pe_directories_count(const pe_ctx_t *ctx) { return ctx->pe.num_directories; } IMAGE_DATA_DIRECTORY **pe_directories(pe_ctx_t *ctx) { return ctx->pe.directories; } IMAGE_DATA_DIRECTORY *pe_directory_by_entry(pe_ctx_t *ctx, ImageDirectoryEntry entry) { if (ctx->pe.directories == NULL || entry > ctx->pe.num_directories - 1) return NULL; return ctx->pe.directories[entry]; } uint16_t pe_sections_count(const pe_ctx_t *ctx) { return ctx->pe.num_sections; } IMAGE_SECTION_HEADER **pe_sections(pe_ctx_t *ctx) { return ctx->pe.sections; } IMAGE_SECTION_HEADER *pe_section_by_name(pe_ctx_t *ctx, const char *name) { if (ctx->pe.sections == NULL || name == NULL) return NULL; for (uint32_t i=0; i < ctx->pe.num_sections; i++) { if (strcmp((const char *)ctx->pe.sections[i]->Name, name) == 0) return ctx->pe.sections[i]; } return NULL; } const char *pe_machine_type_name(MachineType type) { typedef struct { MachineType type; const char * const name; } MachineEntry; #define LIBPE_ENTRY(v) { v, # v } static const MachineEntry names[] = { LIBPE_ENTRY(IMAGE_FILE_MACHINE_UNKNOWN), LIBPE_ENTRY(IMAGE_FILE_MACHINE_AM33), LIBPE_ENTRY(IMAGE_FILE_MACHINE_AMD64), LIBPE_ENTRY(IMAGE_FILE_MACHINE_ARM), LIBPE_ENTRY(IMAGE_FILE_MACHINE_ARMV7), LIBPE_ENTRY(IMAGE_FILE_MACHINE_CEE), LIBPE_ENTRY(IMAGE_FILE_MACHINE_EBC), LIBPE_ENTRY(IMAGE_FILE_MACHINE_I386), LIBPE_ENTRY(IMAGE_FILE_MACHINE_IA64), LIBPE_ENTRY(IMAGE_FILE_MACHINE_M32R), LIBPE_ENTRY(IMAGE_FILE_MACHINE_MIPS16), LIBPE_ENTRY(IMAGE_FILE_MACHINE_MIPSFPU), LIBPE_ENTRY(IMAGE_FILE_MACHINE_MIPSFPU16), LIBPE_ENTRY(IMAGE_FILE_MACHINE_POWERPC), LIBPE_ENTRY(IMAGE_FILE_MACHINE_POWERPCFP), LIBPE_ENTRY(IMAGE_FILE_MACHINE_R4000), LIBPE_ENTRY(IMAGE_FILE_MACHINE_SH3), LIBPE_ENTRY(IMAGE_FILE_MACHINE_SH3DSP), LIBPE_ENTRY(IMAGE_FILE_MACHINE_SH4), LIBPE_ENTRY(IMAGE_FILE_MACHINE_SH5), LIBPE_ENTRY(IMAGE_FILE_MACHINE_THUMB), LIBPE_ENTRY(IMAGE_FILE_MACHINE_WCEMIPSV2) }; #undef LIBPE_ENTRY static const size_t max_index = LIBPE_SIZEOF_ARRAY(names); for (size_t i=0; i < max_index; i++) { if (type == names[i].type) return names[i].name; } return NULL; } const char *pe_image_characteristic_name(ImageCharacteristics characteristic) { typedef struct { ImageCharacteristics characteristic; const char * const name; } ImageCharacteristicsName; #define LIBPE_ENTRY(v) { v, # v } static const ImageCharacteristicsName names[] = { LIBPE_ENTRY(IMAGE_FILE_RELOCS_STRIPPED), LIBPE_ENTRY(IMAGE_FILE_EXECUTABLE_IMAGE), LIBPE_ENTRY(IMAGE_FILE_LINE_NUMS_STRIPPED), LIBPE_ENTRY(IMAGE_FILE_LOCAL_SYMS_STRIPPED), LIBPE_ENTRY(IMAGE_FILE_AGGRESSIVE_WS_TRIM), LIBPE_ENTRY(IMAGE_FILE_LARGE_ADDRESS_AWARE), LIBPE_ENTRY(IMAGE_FILE_RESERVED), LIBPE_ENTRY(IMAGE_FILE_BYTES_REVERSED_LO), LIBPE_ENTRY(IMAGE_FILE_32BIT_MACHINE), LIBPE_ENTRY(IMAGE_FILE_DEBUG_STRIPPED), LIBPE_ENTRY(IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP), LIBPE_ENTRY(IMAGE_FILE_NET_RUN_FROM_SWAP), LIBPE_ENTRY(IMAGE_FILE_SYSTEM), LIBPE_ENTRY(IMAGE_FILE_DLL), LIBPE_ENTRY(IMAGE_FILE_UP_SYSTEM_ONLY), LIBPE_ENTRY(IMAGE_FILE_BYTES_REVERSED_HI) }; #undef LIBPE_ENTRY static const size_t max_index = LIBPE_SIZEOF_ARRAY(names); for (size_t i=0; i < max_index; i++) { if (characteristic == names[i].characteristic) return names[i].name; } return NULL; } const char *pe_image_dllcharacteristic_name(ImageDllCharacteristics characteristic) { typedef struct { ImageDllCharacteristics characteristic; const char * const name; } ImageDllCharacteristicsName; #define LIBPE_ENTRY(v) { v, # v } static const ImageDllCharacteristicsName names[] = { LIBPE_ENTRY(IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE), LIBPE_ENTRY(IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY), LIBPE_ENTRY(IMAGE_DLLCHARACTERISTICS_NX_COMPAT), LIBPE_ENTRY(IMAGE_DLLCHARACTERISTICS_NO_ISOLATION), LIBPE_ENTRY(IMAGE_DLLCHARACTERISTICS_NO_SEH), LIBPE_ENTRY(IMAGE_DLLCHARACTERISTICS_NO_BIND), LIBPE_ENTRY(IMAGE_DLLCHARACTERISTICS_WDM_DRIVER), LIBPE_ENTRY(IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE) }; #undef LIBPE_ENTRY static const size_t max_index = LIBPE_SIZEOF_ARRAY(names); for (size_t i=0; i < max_index; i++) { if (characteristic == names[i].characteristic) return names[i].name; } return NULL; } const char *pe_windows_subsystem_name(WindowsSubsystem subsystem) { typedef struct { WindowsSubsystem subsystem; const char * const name; } WindowsSubsystemName; #define LIBPE_ENTRY(v) { v, # v } static const WindowsSubsystemName names[] = { LIBPE_ENTRY(IMAGE_SUBSYSTEM_UNKNOWN), LIBPE_ENTRY(IMAGE_SUBSYSTEM_NATIVE), LIBPE_ENTRY(IMAGE_SUBSYSTEM_WINDOWS_GUI), LIBPE_ENTRY(IMAGE_SUBSYSTEM_WINDOWS_CUI), LIBPE_ENTRY(IMAGE_SUBSYSTEM_OS2_CUI), LIBPE_ENTRY(IMAGE_SUBSYSTEM_POSIX_CUI), LIBPE_ENTRY(IMAGE_SUBSYSTEM_WINDOWS_CE_GUI), LIBPE_ENTRY(IMAGE_SUBSYSTEM_EFI_APPLICATION), LIBPE_ENTRY(IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER), LIBPE_ENTRY(IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER), LIBPE_ENTRY(IMAGE_SUBSYSTEM_EFI_ROM), LIBPE_ENTRY(IMAGE_SUBSYSTEM_XBOX), LIBPE_ENTRY(IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION) }; #undef LIBPE_ENTRY static const size_t max_index = LIBPE_SIZEOF_ARRAY(names); for (size_t i=0; i < max_index; i++) { if (subsystem == names[i].subsystem) return names[i].name; } return NULL; } const char *pe_directory_name(ImageDirectoryEntry entry) { typedef struct { ImageDirectoryEntry entry; const char * const name; } ImageDirectoryEntryName; #define LIBPE_ENTRY(v) { v, # v } static const ImageDirectoryEntryName names[] = { LIBPE_ENTRY(IMAGE_DIRECTORY_ENTRY_EXPORT), LIBPE_ENTRY(IMAGE_DIRECTORY_ENTRY_IMPORT), LIBPE_ENTRY(IMAGE_DIRECTORY_ENTRY_RESOURCE), LIBPE_ENTRY(IMAGE_DIRECTORY_ENTRY_EXCEPTION), LIBPE_ENTRY(IMAGE_DIRECTORY_ENTRY_SECURITY), LIBPE_ENTRY(IMAGE_DIRECTORY_ENTRY_BASERELOC), LIBPE_ENTRY(IMAGE_DIRECTORY_ENTRY_DEBUG), LIBPE_ENTRY(IMAGE_DIRECTORY_ENTRY_ARCHITECTURE), LIBPE_ENTRY(IMAGE_DIRECTORY_ENTRY_GLOBALPTR), LIBPE_ENTRY(IMAGE_DIRECTORY_ENTRY_TLS), LIBPE_ENTRY(IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG), LIBPE_ENTRY(IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT), LIBPE_ENTRY(IMAGE_DIRECTORY_ENTRY_IAT), LIBPE_ENTRY(IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT), LIBPE_ENTRY(IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR), LIBPE_ENTRY(IMAGE_DIRECTORY_RESERVED) }; #undef LIBPE_ENTRY static const size_t max_index = LIBPE_SIZEOF_ARRAY(names); for (size_t i=0; i < max_index; i++) { if (entry == names[i].entry) return names[i].name; } return NULL; } const char *pe_section_characteristic_name(SectionCharacteristics characteristic) { typedef struct { SectionCharacteristics characteristic; const char * const name; } SectionCharacteristicsName; #define LIBPE_ENTRY(v) { v, # v } static const SectionCharacteristicsName names[] = { LIBPE_ENTRY(IMAGE_SCN_TYPE_NO_PAD), LIBPE_ENTRY(IMAGE_SCN_CNT_CODE), LIBPE_ENTRY(IMAGE_SCN_CNT_INITIALIZED_DATA), LIBPE_ENTRY(IMAGE_SCN_CNT_UNINITIALIZED_DATA), LIBPE_ENTRY(IMAGE_SCN_LNK_OTHER), LIBPE_ENTRY(IMAGE_SCN_LNK_INFO), LIBPE_ENTRY(IMAGE_SCN_LNK_REMOVE), LIBPE_ENTRY(IMAGE_SCN_LNK_COMDAT), LIBPE_ENTRY(IMAGE_SCN_NO_DEFER_SPEC_EXC), LIBPE_ENTRY(IMAGE_SCN_GPREL), LIBPE_ENTRY(IMAGE_SCN_MEM_PURGEABLE), LIBPE_ENTRY(IMAGE_SCN_MEM_LOCKED), LIBPE_ENTRY(IMAGE_SCN_MEM_PRELOAD), LIBPE_ENTRY(IMAGE_SCN_ALIGN_1BYTES), LIBPE_ENTRY(IMAGE_SCN_ALIGN_2BYTES), LIBPE_ENTRY(IMAGE_SCN_ALIGN_4BYTES), LIBPE_ENTRY(IMAGE_SCN_ALIGN_8BYTES), LIBPE_ENTRY(IMAGE_SCN_ALIGN_16BYTES), LIBPE_ENTRY(IMAGE_SCN_ALIGN_32BYTES), LIBPE_ENTRY(IMAGE_SCN_ALIGN_64BYTES), LIBPE_ENTRY(IMAGE_SCN_ALIGN_128BYTES), LIBPE_ENTRY(IMAGE_SCN_ALIGN_256BYTES), LIBPE_ENTRY(IMAGE_SCN_ALIGN_512BYTES), LIBPE_ENTRY(IMAGE_SCN_ALIGN_1024BYTES), LIBPE_ENTRY(IMAGE_SCN_ALIGN_2048BYTES), LIBPE_ENTRY(IMAGE_SCN_ALIGN_4096BYTES), LIBPE_ENTRY(IMAGE_SCN_ALIGN_8192BYTES), LIBPE_ENTRY(IMAGE_SCN_LNK_NRELOC_OVFL), LIBPE_ENTRY(IMAGE_SCN_MEM_DISCARDABLE), LIBPE_ENTRY(IMAGE_SCN_MEM_NOT_CACHED), LIBPE_ENTRY(IMAGE_SCN_MEM_NOT_PAGED), LIBPE_ENTRY(IMAGE_SCN_MEM_SHARED), LIBPE_ENTRY(IMAGE_SCN_MEM_EXECUTE), LIBPE_ENTRY(IMAGE_SCN_MEM_READ), LIBPE_ENTRY(IMAGE_SCN_MEM_WRITE) }; #undef LIBPE_ENTRY static const size_t max_index = LIBPE_SIZEOF_ARRAY(names); for (size_t i=0; i < max_index; i++) { if (characteristic == names[i].characteristic) return names[i].name; } return NULL; } pev/lib/libpe/dir_resources.h0000644000175000017500000000607713034014710015253 0ustar useruser/* libpe - the PE library Copyright (C) 2010 - 2015 libpe authors This file is part of libpe. libpe is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. libpe is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with libpe. If not, see . */ #ifndef LIBPE_DIR_RESOURCES_H #define LIBPE_DIR_RESOURCES_H #include // resources types typedef enum { RT_CURSOR = 1, // cursor image RT_BITMAP = 2, // bitmap (.bmp) RT_ICON = 3, // icon RT_MENU = 4, // menu RT_DIALOG = 5, // dialog window RT_STRING = 6, // unicode string RT_FONTDIR = 7, // font directory RT_FONT = 8, // font RT_ACCELERATOR = 9, // hot keys RT_RCDATA = 10, // data RT_MESSAGETABLE = 11, // string table RT_GROUP_CURSOR = 12, // cursor group RT_GROUP_ICON = 14, // icon group RT_VERSION = 16, // version information RT_DLGINCLUDE = 17, // names of header files for dialogs (*.h) used by compiler RT_PLUGPLAY = 19, // data determined by application RT_VXD = 20, // vxd info RT_ANICURSOR = 21, // animated cursor RT_ANIICON = 22, // animated icon RT_HTML = 23, // html page RT_MANIFEST = 24, // manifest of Windows XP build RT_DLGINIT = 240, // strings used for initiating some controls in dialogs RT_TOOLBAR = 241 // configuration of toolbars } ResourceType; #pragma pack(push, 1) typedef struct { uint32_t Characteristics; uint32_t TimeDateStamp; uint16_t MajorVersion; uint16_t MinorVersion; uint16_t NumberOfNamedEntries; uint16_t NumberOfIdEntries; } IMAGE_RESOURCE_DIRECTORY; typedef struct { union { struct { uint32_t NameOffset:31; uint32_t NameIsString:1; } name; uint32_t Name; } DirectoryName; union { uint32_t OffsetToData; struct { uint32_t OffsetToDirectory:31; uint32_t DataIsDirectory:1; } data; } DirectoryData; } IMAGE_RESOURCE_DIRECTORY_ENTRY; typedef struct { uint16_t length; uint16_t string[1]; } IMAGE_RESOURCE_DATA_STRING; typedef struct { uint32_t offsetToData; uint32_t size; uint32_t codePage; uint32_t reserved; } IMAGE_RESOURCE_DATA_ENTRY; typedef struct { char name[20]; uint32_t nameOffset; char extension[20]; char dirName[20]; } RESOURCE_ENTRY; typedef struct tagVS_FIXEDFILEINFO { uint32_t dwSignature; uint32_t dwStrucVersion; uint32_t dwFileVersionMS; uint32_t dwFileVersionLS; uint32_t dwProductVersionMS; uint32_t dwProductVersionLS; uint32_t dwFileFlagsMask; uint32_t dwFileFlags; uint32_t dwFileOS; uint32_t dwFileType; uint32_t dwFileSubtype; uint32_t dwFileDateMS; uint32_t dwFileDateLS; } VS_FIXEDFILEINFO; #pragma pack(pop) #endif pev/lib/libpe/Makefile0000644000175000017500000000740113034014710013662 0ustar useruser####### Platform specifics # cut is necessary for Cygwin PLATFORM_OS := $(shell uname | cut -d_ -f1) ####### Makefile Conventions - Directory variables srcdir = . prefix = /usr/local exec_prefix = $(prefix) sysconfdir = $(prefix)/etc includedir = $(prefix)/include datarootdir = $(prefix)/share localstatedir = $(prefix)/var bindir = $(exec_prefix)/bin libdir = $(exec_prefix)/lib libexecdir = $(exec_prefix)/libexec sbindir = $(exec_prefix)/sbin datadir = $(datarootdir) docdir = $(datarootdir)/doc/pev infodir = $(datarootdir)/info localedir = $(datarootdir)/locale mandir = $(datarootdir)/man manext = .1 man1dir = $(mandir)/man1 man1ext = .1 ####### Makefile Conventions - Utilities CC ?= gcc LINK = $(CC) CHK_DIR_EXISTS = test -d CHK_FILE_EXISTS = test -f INSTALL = install INSTALL_DATA = ${INSTALL} -m 644 INSTALL_PROGRAM = $(INSTALL) SYMLINK = ln -sf MKDIR = mkdir -p RM = rm -f RM_DIR = rm -rf ifeq ($(PLATFORM_OS), Darwin) STRIP = strip -x else STRIP = strip --strip-unneeded endif ####### Compiler options override CFLAGS += -W -Wall -Wextra -pedantic -std=c99 -c ifneq ($(PLATFORM_OS), CYGWIN) override CFLAGS += -fPIC endif VERSION = 1.0 LIBNAME = libpe libpe_BUILDDIR = $(CURDIR)/build libpe_SRCS_FILTER = $(wildcard ${dir}/*.c) libpe_SRCS = $(foreach dir, ${srcdir}, ${libpe_SRCS_FILTER}) libpe_OBJS = $(addprefix ${libpe_BUILDDIR}/, $(addsuffix .o, $(basename ${libpe_SRCS}))) ####### Build rules .PHONY : libpe install strip-binaries install-strip uninstall clean all: libpe libpe: CPPFLAGS += -D_GNU_SOURCE ifeq ($(PLATFORM_OS), CYGWIN) libpe: CPPFLAGS += -D_XOPEN_SOURCE=500 endif libpe: $(libpe_OBJS) ifeq ($(PLATFORM_OS), Linux) $(LINK) -shared -Wl,-soname,$(LIBNAME).so.1 $(LDFLAGS) -o $(LIBNAME).so $^ else ifeq ($(PLATFORM_OS), NetBSD) $(LINK) -shared -Wl,-soname,$(LIBNAME).so.1 $(LDFLAGS) -o $(LIBNAME).so $^ else ifeq ($(PLATFORM_OS), Darwin) $(LINK) -headerpad_max_install_names -dynamiclib \ -flat_namespace -install_name $(LIBNAME).$(VERSION).dylib \ -current_version $(VERSION) -compatibility_version $(VERSION) \ $(LDFLAGS) -o $(LIBNAME).dylib $^ else ifeq ($(PLATFORM_OS), CYGWIN) $(LINK) -shared $(LDFLAGS) -o $(LIBNAME).dll $^ endif $(libpe_BUILDDIR)/%.o: %.c @$(CHK_DIR_EXISTS) $(dir $@) || $(MKDIR) $(dir $@) $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $< install: installdirs ifeq ($(PLATFORM_OS), Linux) $(INSTALL_DATA) $(LIBNAME).so $(DESTDIR)$(libdir)/$(LIBNAME).so.$(VERSION) cd $(DESTDIR)$(libdir); $(SYMLINK) $(LIBNAME).so.$(VERSION) $(LIBNAME).so cd $(DESTDIR)$(libdir); $(SYMLINK) $(LIBNAME).so.$(VERSION) $(LIBNAME).so.1 else ifeq ($(PLATFORM_OS), NetBSD) $(INSTALL_DATA) $(LIBNAME).so $(DESTDIR)$(libdir)/$(LIBNAME).so.$(VERSION) cd $(DESTDIR)$(libdir); $(SYMLINK) $(LIBNAME).so.$(VERSION) $(LIBNAME).so cd $(DESTDIR)$(libdir); $(SYMLINK) $(LIBNAME).so.$(VERSION) $(LIBNAME).so.1 else ifeq ($(PLATFORM_OS), Darwin) $(INSTALL_DATA) $(LIBNAME).dylib $(DESTDIR)$(libdir)/$(LIBNAME).$(VERSION).dylib cd $(DESTDIR)$(libdir); $(SYMLINK) $(LIBNAME).$(VERSION).dylib $(LIBNAME).dylib cd $(DESTDIR)$(libdir); $(SYMLINK) $(LIBNAME).$(VERSION).dylib $(LIBNAME).1.dylib else ifeq ($(PLATFORM_OS), CYGWIN) # TODO endif installdirs: @$(CHK_DIR_EXISTS) $(DESTDIR) || $(MKDIR) $(DESTDIR) @$(CHK_DIR_EXISTS) $(DESTDIR)$(libdir) || $(MKDIR) $(DESTDIR)$(libdir) strip-binaries: ifeq ($(PLATFORM_OS), Linux) $(STRIP) $(LIBNAME).so else ifeq ($(PLATFORM_OS), NetBSD) $(STRIP) $(LIBNAME).so else ifeq ($(PLATFORM_OS), Darwin) $(STRIP) $(LIBNAME).dylib else ifeq ($(PLATFORM_OS), CYGWIN) $(STRIP) $(LIBNAME).dll endif install-strip: strip-binaries install uninstall: $(RM) $(DESTDIR)$(libdir)/$(LIBNAME).so* \ $(DESTDIR)$(libdir)/$(LIBNAME)*.dylib clean: $(RM_DIR) $(libpe_BUILDDIR) $(RM) $(LIBNAME)*.o \ $(LIBNAME)*.so \ $(LIBNAME)*.dylib \ $(LIBNAME)*.dll pev/lib/libpe/README.md0000644000175000017500000000033313034014710013476 0ustar useruserlibpe ===== The PE library [![Build Status](https://travis-ci.org/merces/libpe.png)](https://travis-ci.org/merces/libpe) [![LGPL](http://www.gnu.org/graphics/lgplv3-147x51.png)](http://www.gnu.org/licenses/lgpl.html)pev/lib/libpe/error.c0000644000175000017500000000440013034014710013513 0ustar useruser/* libpe - the PE library Copyright (C) 2010 - 2015 libpe authors This file is part of libpe. libpe is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. libpe is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with libpe. If not, see . */ #include "error.h" #include "macros.h" #include #include const char *pe_error_msg(pe_err_e error) { static const char * const errors[] = { "no error", // LIBPE_E_OK, "allocation failure", // LIBPE_E_ALLOCATION_FAILURE, "open() failed", // LIBPE_E_OPEN_FAILED, "fdopen() failed", // LIBPE_E_FDOPEN_FAILED, "fstat() failed", // LIBPE_E_FSTAT_FAILED, "not a regular file", // LIBPE_E_NOT_A_FILE, "not a PE file", // LIBPE_E_NOT_A_PE_FILE, "invalid e_lfanew", // LIBPE_E_INVALID_LFANEW, "missing COFF header", // LIBPE_E_MISSING_COFF_HEADER, "missing OPTIONAL header", // LIBPE_E_MISSING_OPTIONAL_HEADER, "invalid signature", // LIBPE_E_INVALID_SIGNATURE, "unsupported image format", // LIBPE_E_UNSUPPORTED_IMAGE, "mmap() failed", // LIBPE_E_MMAP_FAILED, "munmap() failed", // LIBPE_E_MUNMAP_FAILED, "close() failed", // LIBPE_E_CLOSE_FAILED, "too many directories", // LIBPE_E_TOO_MANY_DIRECTORIES, "too many sections", // LIBPE_E_TOO_MANY_SECTIONS, }; static const size_t index_max = LIBPE_SIZEOF_ARRAY(errors); size_t index = index_max + error; return (index < index_max) ? errors[index] : (index == index_max) ? errors[0] // LIBPE_E_OK : "invalid error code"; } void pe_error_print(FILE *stream, pe_err_e error) { if (errno == 0) { fprintf(stream, "ERROR [%d]: %s\n", error, pe_error_msg(error)); } else { char errmsg[255]; strerror_r(errno, errmsg, sizeof(errmsg)); fprintf(stream, "ERROR [%d]: %s (%s)\n", error, pe_error_msg(error), errmsg); } } pev/lib/libpe/dir_import.h0000644000175000017500000000370613034014710014547 0ustar useruser/* libpe - the PE library Copyright (C) 2010 - 2015 libpe authors This file is part of libpe. libpe is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. libpe is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with libpe. If not, see . */ #ifndef LIBPE_DIR_IMPORT_H #define LIBPE_DIR_IMPORT_H #include #pragma pack(push, 1) typedef struct { union { uint32_t Characteristics; // 0 for terminating null import descriptor uint32_t OriginalFirstThunk; // RVA to original unbound IAT } u1; uint32_t TimeDateStamp; uint32_t ForwarderChain; // -1 if no forwarders uint32_t Name; // RVA to IAT (if bound this IAT has actual addresses) uint32_t FirstThunk; } IMAGE_IMPORT_DESCRIPTOR; // import name entry typedef struct { uint16_t Hint; uint8_t Name[1]; } IMAGE_IMPORT_BY_NAME; typedef struct { union { uint64_t ForwarderString; // RVA to a forwarder string uint64_t Function; // Memory address of the imported function uint64_t Ordinal; // Ordinal value of imported API uint64_t AddressOfData; // RVA to an IMAGE_IMPORT_BY_NAME with the imported API name } u1; } IMAGE_THUNK_DATA64; typedef struct { union { uint32_t ForwarderString; // RVA to a forwarder string uint32_t Function; // Memory address of the imported function uint32_t Ordinal; // Ordinal value of imported API uint32_t AddressOfData; // RVA to an IMAGE_IMPORT_BY_NAME with the imported API name } u1; } IMAGE_THUNK_DATA32; #pragma pack(pop) #endif pev/lib/libpe/docs/0000755000175000017500000000000013034014710013150 5ustar useruserpev/lib/libpe/hdr_optional.h0000644000175000017500000001351613034014710015061 0ustar useruser/* libpe - the PE library Copyright (C) 2010 - 2015 libpe authors This file is part of libpe. libpe is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. libpe is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with libpe. If not, see . */ #ifndef LIBPE_HDR_OPTIONAL_H #define LIBPE_HDR_OPTIONAL_H #include // REFERENCE: http://msdn.microsoft.com/en-us/library/windows/desktop/ms680339(v=vs.85).aspx typedef enum { // Unknown subsystem IMAGE_SUBSYSTEM_UNKNOWN = 0, // No subsystem required (device drivers and native system processes) IMAGE_SUBSYSTEM_NATIVE = 1, // Windows graphical user interface (GUI) subsystem IMAGE_SUBSYSTEM_WINDOWS_GUI = 2, // Windows character-mode user interface (CUI) subsystem IMAGE_SUBSYSTEM_WINDOWS_CUI = 3, // OS/2 CUI subsystem IMAGE_SUBSYSTEM_OS2_CUI = 5, // POSIX CUI subsystem IMAGE_SUBSYSTEM_POSIX_CUI = 7, // Windows CE system IMAGE_SUBSYSTEM_WINDOWS_CE_GUI = 9, // Extensible Firmware Interface (EFI) application IMAGE_SUBSYSTEM_EFI_APPLICATION = 10, // EFI driver with boot services IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER = 11, // EFI driver with run-time services IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER = 12, // EFI ROM image IMAGE_SUBSYSTEM_EFI_ROM = 13, // Xbox system IMAGE_SUBSYSTEM_XBOX = 14, // Boot application. IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION = 16 } WindowsSubsystem; // REFERENCE: http://msdn.microsoft.com/en-us/library/windows/desktop/ms680339(v=vs.85).aspx typedef enum { // IMAGE_DLLCHARACTERISTICS_RESERVED_1 = 0x0001, // IMAGE_DLLCHARACTERISTICS_RESERVED_2 = 0x0002, // IMAGE_DLLCHARACTERISTICS_RESERVED_4 = 0x0004, // IMAGE_DLLCHARACTERISTICS_RESERVED_8 = 0x0008, // The DLL can be relocated at load time. IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE = 0x0040, // Code integrity checks are forced. IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY = 0x0080, // The image is compatible with data execution prevention (DEP). IMAGE_DLLCHARACTERISTICS_NX_COMPAT = 0x0100, // The image is isolation aware, but should not be isolated. IMAGE_DLLCHARACTERISTICS_NO_ISOLATION = 0x0200, // The image does not use structured exception handling (SEH). // No handlers can be called in this image. IMAGE_DLLCHARACTERISTICS_NO_SEH = 0x0400, // Do not bind the image. IMAGE_DLLCHARACTERISTICS_NO_BIND = 0x0800, // IMAGE_DLLCHARACTERISTICS_RESERVED_1000 = 0x1000, // A WDM driver. IMAGE_DLLCHARACTERISTICS_WDM_DRIVER = 0x2000, // IMAGE_DLLCHARACTERISTICS_RESERVED_4000 = 0x4000, // The image is terminal server aware. IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = 0x8000 } ImageDllCharacteristics; typedef enum { MAGIC_ROM = 0x107, MAGIC_PE32 = 0x10b, MAGIC_PE64 = 0x20b // PE32+ } opt_type_e; #pragma pack(push, 1) typedef struct { uint16_t Magic; uint8_t MajorLinkerVersion; uint8_t MinorLinkerVersion; uint32_t SizeOfCode; uint32_t SizeOfInitializedData; uint32_t SizeOfUninitializedData; uint32_t AddressOfEntryPoint; uint32_t BaseOfCode; uint32_t BaseOfData; uint32_t BaseOfBss; uint32_t GprMask; uint32_t CprMask[4]; uint32_t GpValue; } IMAGE_ROM_OPTIONAL_HEADER; // REFERENCE: http://msdn.microsoft.com/en-us/library/windows/desktop/ms680339(v=vs.85).aspx typedef struct { uint16_t Magic; uint8_t MajorLinkerVersion; uint8_t MinorLinkerVersion; uint32_t SizeOfCode; uint32_t SizeOfInitializedData; uint32_t SizeOfUninitializedData; uint32_t AddressOfEntryPoint; uint32_t BaseOfCode; uint32_t BaseOfData; // only in PE32 uint32_t ImageBase; uint32_t SectionAlignment; uint32_t FileAlignment; uint16_t MajorOperatingSystemVersion; uint16_t MinorOperatingSystemVersion; uint16_t MajorImageVersion; uint16_t MinorImageVersion; uint16_t MajorSubsystemVersion; uint16_t MinorSubsystemVersion; uint32_t Reserved1; uint32_t SizeOfImage; uint32_t SizeOfHeaders; uint32_t CheckSum; uint16_t Subsystem; // WindowsSubsystem uint16_t DllCharacteristics; uint32_t SizeOfStackReserve; uint32_t SizeOfStackCommit; uint32_t SizeOfHeapReserve; uint32_t SizeOfHeapCommit; uint32_t LoaderFlags; uint32_t NumberOfRvaAndSizes; // IMAGE_DATA_DIRECTORY DataDirectory[MAX_DIRECTORIES]; } IMAGE_OPTIONAL_HEADER_32; // REFERENCE: http://msdn.microsoft.com/en-us/library/windows/desktop/ms680339(v=vs.85).aspx typedef struct { uint16_t Magic; uint8_t MajorLinkerVersion; uint8_t MinorLinkerVersion; uint32_t SizeOfCode; uint32_t SizeOfInitializedData; uint32_t SizeOfUninitializedData; uint32_t AddressOfEntryPoint; uint32_t BaseOfCode; uint64_t ImageBase; uint32_t SectionAlignment; uint32_t FileAlignment; uint16_t MajorOperatingSystemVersion; uint16_t MinorOperatingSystemVersion; uint16_t MajorImageVersion; uint16_t MinorImageVersion; uint16_t MajorSubsystemVersion; uint16_t MinorSubsystemVersion; uint32_t Reserved1; uint32_t SizeOfImage; uint32_t SizeOfHeaders; uint32_t CheckSum; uint16_t Subsystem; // WindowsSubsystem uint16_t DllCharacteristics; uint64_t SizeOfStackReserve; uint64_t SizeOfStackCommit; uint64_t SizeOfHeapReserve; uint64_t SizeOfHeapCommit; uint32_t LoaderFlags; /* must be zero */ uint32_t NumberOfRvaAndSizes; // IMAGE_DATA_DIRECTORY DataDirectory[MAX_DIRECTORIES]; } IMAGE_OPTIONAL_HEADER_64; typedef struct { uint16_t type; // opt_type_e size_t length; IMAGE_OPTIONAL_HEADER_32 *_32; IMAGE_OPTIONAL_HEADER_64 *_64; } IMAGE_OPTIONAL_HEADER; #pragma pack(pop) #endif pev/lib/libpe/error.h0000644000175000017500000000276413034014710013533 0ustar useruser/* libpe - the PE library Copyright (C) 2010 - 2015 libpe authors This file is part of libpe. libpe is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. libpe is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with libpe. If not, see . */ #ifndef LIBPE_ERROR_H #define LIBPE_ERROR_H #include typedef enum { LIBPE_E_OK = 0, // Declaring negative values this way is EVIL because it // BREAKS compatiblity every time we add/remove an error code. LIBPE_E_ALLOCATION_FAILURE = -16, LIBPE_E_OPEN_FAILED, LIBPE_E_FDOPEN_FAILED, LIBPE_E_FSTAT_FAILED, LIBPE_E_NOT_A_FILE, LIBPE_E_NOT_A_PE_FILE, LIBPE_E_INVALID_LFANEW, LIBPE_E_MISSING_COFF_HEADER, LIBPE_E_MISSING_OPTIONAL_HEADER, LIBPE_E_INVALID_SIGNATURE, LIBPE_E_UNSUPPORTED_IMAGE, LIBPE_E_MMAP_FAILED, LIBPE_E_MUNMAP_FAILED, LIBPE_E_CLOSE_FAILED, LIBPE_E_TOO_MANY_DIRECTORIES, LIBPE_E_TOO_MANY_SECTIONS, } pe_err_e; const char *pe_error_msg(pe_err_e error); void pe_error_print(FILE *stream, pe_err_e error); #endif pev/lib/libpe/directories.h0000644000175000017500000000544213034014710014712 0ustar useruser/* libpe - the PE library Copyright (C) 2010 - 2015 libpe authors This file is part of libpe. libpe is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. libpe is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with libpe. If not, see . */ #ifndef LIBPE_DIRECTORIES_H #define LIBPE_DIRECTORIES_H #include #include "dir_import.h" #include "dir_resources.h" #include "dir_security.h" // Directory entries typedef enum { IMAGE_DIRECTORY_ENTRY_EXPORT = 0, // Export Table IMAGE_DIRECTORY_ENTRY_IMPORT = 1, // Import Table IMAGE_DIRECTORY_ENTRY_RESOURCE = 2, // Resource Table IMAGE_DIRECTORY_ENTRY_EXCEPTION = 3, // Exception Table IMAGE_DIRECTORY_ENTRY_SECURITY = 4, // Certificate Table IMAGE_DIRECTORY_ENTRY_BASERELOC = 5, // Base Relocation Table IMAGE_DIRECTORY_ENTRY_DEBUG = 6, // Debug //IMAGE_DIRECTORY_ENTRY_COPYRIGHT = 7, // (X86 usage) IMAGE_DIRECTORY_ENTRY_ARCHITECTURE = 7, // Architecture IMAGE_DIRECTORY_ENTRY_GLOBALPTR = 8, // Global Ptr IMAGE_DIRECTORY_ENTRY_TLS = 9, // TLS Table IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG = 10, // Load Config Table IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT = 11, // Bound Import IMAGE_DIRECTORY_ENTRY_IAT = 12, // IAT IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT = 13, // Delay Import Descriptor IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR = 14, // CLR Runtime Header IMAGE_DIRECTORY_RESERVED = 15 // Reserved, must be zero } ImageDirectoryEntry; typedef struct { uint32_t Characteristics; uint32_t TimeDateStamp; uint16_t MajorVersion; uint16_t MinorVersion; uint32_t Name; uint32_t Base; uint32_t NumberOfFunctions; uint32_t NumberOfNames; uint32_t AddressOfFunctions; uint32_t AddressOfNames; uint32_t AddressOfNameOrdinals; } IMAGE_EXPORT_DIRECTORY; typedef struct { uint32_t StartAddressOfRawData; uint32_t EndAddressOfRawData; uint32_t AddressOfIndex; uint32_t AddressOfCallBacks; // PIMAGE_TLS_CALLBACK uint32_t SizeOfZeroFill; uint32_t Characteristics; // reserved for future use } IMAGE_TLS_DIRECTORY32; typedef struct { uint64_t StartAddressOfRawData; uint64_t EndAddressOfRawData; uint64_t AddressOfIndex; uint64_t AddressOfCallBacks; uint32_t SizeOfZeroFill; uint32_t Characteristics; } IMAGE_TLS_DIRECTORY64; typedef struct { uint32_t VirtualAddress; uint32_t Size; } IMAGE_DATA_DIRECTORY; #endif pev/lib/libpe/macros.h0000644000175000017500000000200613034014710013653 0ustar useruser/* libpe - the PE library Copyright (C) 2010 - 2015 libpe authors This file is part of libpe. libpe is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. libpe is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with libpe. If not, see . */ #ifndef LIBPE_MACROS_H #define LIBPE_MACROS_H #define LIBPE_PTR_ADD(p, o) ((void *)((char *)(p) + (o))) #define LIBPE_SIZEOF_ARRAY(array) (sizeof(array) / sizeof(array[0])) #define LIBPE_SIZEOF_MEMBER(type, member) sizeof(((type *)0)->member) #endif pev/lib/libpe/sections.h0000644000175000017500000000715613034014710014231 0ustar useruser/* libpe - the PE library Copyright (C) 2010 - 2015 libpe authors This file is part of libpe. libpe is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. libpe is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with libpe. If not, see . */ #ifndef LIBPE_SECTIONS_H #define LIBPE_SECTIONS_H #include #define SECTION_NAME_SIZE 8 typedef enum { IMAGE_SCN_TYPE_NO_PAD = 0x00000008, // Obsolete. Replaced by IMAGE_SCN_ALIGN_1BYTES IMAGE_SCN_CNT_CODE = 0x00000020, IMAGE_SCN_CNT_INITIALIZED_DATA = 0x00000040, IMAGE_SCN_CNT_UNINITIALIZED_DATA = 0x00000080, IMAGE_SCN_LNK_OTHER = 0x00000100, // Reserved. IMAGE_SCN_LNK_INFO = 0x00000200, // Valid only for object files. IMAGE_SCN_LNK_REMOVE = 0x00000800, // Valid only for object files. IMAGE_SCN_LNK_COMDAT = 0x00001000, // Valid only for object files. IMAGE_SCN_NO_DEFER_SPEC_EXC = 0x00004000, IMAGE_SCN_GPREL = 0x00008000, IMAGE_SCN_MEM_PURGEABLE = 0x00020000, // Reserved. IMAGE_SCN_MEM_LOCKED = 0x00040000, // Reserved. IMAGE_SCN_MEM_PRELOAD = 0x00080000, // Reserved. IMAGE_SCN_ALIGN_1BYTES = 0x00100000, // Valid only for object files. IMAGE_SCN_ALIGN_2BYTES = 0x00200000, // Valid only for object files. IMAGE_SCN_ALIGN_4BYTES = 0x00300000, // Valid only for object files. IMAGE_SCN_ALIGN_8BYTES = 0x00400000, // Valid only for object files. IMAGE_SCN_ALIGN_16BYTES = 0x00500000, // Valid only for object files. IMAGE_SCN_ALIGN_32BYTES = 0x00600000, // Valid only for object files. IMAGE_SCN_ALIGN_64BYTES = 0x00700000, // Valid only for object files. IMAGE_SCN_ALIGN_128BYTES = 0x00800000, // Valid only for object files. IMAGE_SCN_ALIGN_256BYTES = 0x00900000, // Valid only for object files. IMAGE_SCN_ALIGN_512BYTES = 0x00A00000, // Valid only for object files. IMAGE_SCN_ALIGN_1024BYTES = 0x00B00000, // Valid only for object files. IMAGE_SCN_ALIGN_2048BYTES = 0x00C00000, // Valid only for object files. IMAGE_SCN_ALIGN_4096BYTES = 0x00D00000, // Valid only for object files. IMAGE_SCN_ALIGN_8192BYTES = 0x00E00000, // Valid only for object files. IMAGE_SCN_LNK_NRELOC_OVFL = 0x01000000, IMAGE_SCN_MEM_DISCARDABLE = 0x02000000, IMAGE_SCN_MEM_NOT_CACHED = 0x04000000, IMAGE_SCN_MEM_NOT_PAGED = 0x08000000, IMAGE_SCN_MEM_SHARED = 0x10000000, IMAGE_SCN_MEM_EXECUTE = 0x20000000, IMAGE_SCN_MEM_READ = 0x40000000, IMAGE_SCN_MEM_WRITE = -2147483648 // Same as 0x80000000 } SectionCharacteristics; #pragma pack(push, 1) // Quoting pecoff_v8.docx: "Entries in the section table are numbered starting from one (1)". typedef struct { uint8_t Name[SECTION_NAME_SIZE]; // TODO: Should we use char instead? union { uint32_t PhysicalAddress; // same value as next field uint32_t VirtualSize; } Misc; uint32_t VirtualAddress; uint32_t SizeOfRawData; uint32_t PointerToRawData; uint32_t PointerToRelocations; // always zero in executables uint32_t PointerToLinenumbers; // deprecated uint16_t NumberOfRelocations; uint16_t NumberOfLinenumbers; // deprecated uint32_t Characteristics; // SectionCharacteristics } IMAGE_SECTION_HEADER; #pragma pack(pop) #endif pev/lib/libpe/hdr_coff.h0000644000175000017500000001014213034014710014141 0ustar useruser/* libpe - the PE library Copyright (C) 2010 - 2015 libpe authors This file is part of libpe. libpe is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. libpe is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with libpe. If not, see . */ #ifndef LIBPE_HDR_COFF_H #define LIBPE_HDR_COFF_H #include typedef enum { IMAGE_FILE_MACHINE_UNKNOWN = 0x0, IMAGE_FILE_MACHINE_AM33 = 0x1d3, IMAGE_FILE_MACHINE_AMD64 = 0x8664, IMAGE_FILE_MACHINE_ARM = 0x1c0, IMAGE_FILE_MACHINE_ARMV7 = 0x1c4, IMAGE_FILE_MACHINE_CEE = 0xc0ee, IMAGE_FILE_MACHINE_EBC = 0xebc, IMAGE_FILE_MACHINE_I386 = 0x14c, IMAGE_FILE_MACHINE_IA64 = 0x200, IMAGE_FILE_MACHINE_M32R = 0x9041, IMAGE_FILE_MACHINE_MIPS16 = 0x266, IMAGE_FILE_MACHINE_MIPSFPU = 0x366, IMAGE_FILE_MACHINE_MIPSFPU16 = 0x466, IMAGE_FILE_MACHINE_POWERPC = 0x1f0, IMAGE_FILE_MACHINE_POWERPCFP = 0x1f1, IMAGE_FILE_MACHINE_R4000 = 0x166, IMAGE_FILE_MACHINE_SH3 = 0x1a2, IMAGE_FILE_MACHINE_SH3DSP = 0x1a3, IMAGE_FILE_MACHINE_SH4 = 0x1a6, IMAGE_FILE_MACHINE_SH5 = 0x1a8, IMAGE_FILE_MACHINE_THUMB = 0x1c2, IMAGE_FILE_MACHINE_WCEMIPSV2 = 0x169 } MachineType; typedef enum { // Image only, Windows CE, Windows NT and above. Indicates that the // file does not contain base relocations and must therefore be // loaded at its preferred base address. If the base address is not // available, the loader reports an error. The default behavior of // the linker is to strip base relocations from EXEs. IMAGE_FILE_RELOCS_STRIPPED = 0x0001, // Image only. Indicates that the image file is valid and can be run. // If this flag is not set, it indicates a linker error. IMAGE_FILE_EXECUTABLE_IMAGE = 0x0002, // COFF line numbers have been removed. // Deprecated and should be zero. IMAGE_FILE_LINE_NUMS_STRIPPED = 0x0004, // COFF symbol table entries for local symbols have been removed. // Deprecated and should be zero. IMAGE_FILE_LOCAL_SYMS_STRIPPED = 0x0008, // Obsolete. Aggressively trim working set. // Deprecated in Windows 2000 and later. Must be zero. IMAGE_FILE_AGGRESSIVE_WS_TRIM = 0x0010, // App can handle > 2gb addresses. IMAGE_FILE_LARGE_ADDRESS_AWARE = 0x0020, // Reserved for future use. IMAGE_FILE_RESERVED = 0x0040, // Little endian: LSB precedes MSB in memory. // Deprecated and should be zero. IMAGE_FILE_BYTES_REVERSED_LO = 0x0080, // Machine based on 32-bit-word architecture. IMAGE_FILE_32BIT_MACHINE = 0x0100, // Debugging information removed from image file. IMAGE_FILE_DEBUG_STRIPPED = 0x0200, // If image is on removable media, fully load it and copy it to the // swap file. IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP = 0x0400, // If image is on network media, fully load it and copy it to the // swap file. IMAGE_FILE_NET_RUN_FROM_SWAP = 0x0800, // The image file is a system file, not a user program. IMAGE_FILE_SYSTEM = 0x1000, // The image file is a dynamic-link library (DLL). Such files are // considered executable files for almost all purposes, although // they cannot be directly run. IMAGE_FILE_DLL = 0x2000, // File should be run only on a UP machine. IMAGE_FILE_UP_SYSTEM_ONLY = 0x4000, // Big endian: MSB precedes LSB in memory. // Deprecated and should be zero. IMAGE_FILE_BYTES_REVERSED_HI = 0x8000 } ImageCharacteristics; #pragma pack(push, 1) typedef struct { uint16_t Machine; // MachineType uint16_t NumberOfSections; uint32_t TimeDateStamp; uint32_t PointerToSymbolTable; uint32_t NumberOfSymbols; uint16_t SizeOfOptionalHeader; uint16_t Characteristics; // ImageCharacteristics } IMAGE_FILE_HEADER, IMAGE_COFF_HEADER; #pragma pack(pop) #endif pev/lib/libfuzzy/0000755000175000017500000000000013034014706013010 5ustar useruserpev/lib/libfuzzy/fuzzy.h0000644000175000017500000001572213034014706014357 0ustar useruser/* * Copyright (C) ManTech International Corporation 2010 * Copyright (C) Kyrus 2012 * Copyright (C) 2013 Helmut Grohne * * $Id: fuzzy.h 180 2013-06-10 23:24:26Z jessekornblum $ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * * Earlier versions of this code can be found at: * http://ssdeep.sf.net/ */ /// \mainpage /// This is the documentation for the fuzzy hashing API from ssdeep. /// /// There is a complete function reference in fuzzy.h. /// /// The most recent version of this documentation can be found /// at http://ssdeep.sourceforge.net/. /// /// \copydoc fuzzy.h /// /// \version 3.0 /// /// \author Jesse Kornblum, research@jessekornblum.com /// \author Helmut Grohne, helmut@subdivi.de /// \file fuzzy.h /// \brief /// These functions allow a programmer to compute the fuzzy hashes /// (also called the context-triggered piecewise hashes) of /// \link fuzzy_hash_buf() a buffer /// of text @endlink, /// \link fuzzy_hash_filename() the contents of a file on the disk @endlink, /// and /// @link fuzzy_hash_file() the contents of /// an open file handle @endlink . /// There is also a function to /// @link fuzzy_compare() compute the /// similarity between any two fuzzy signatures @endlink. #include #include #ifdef __cplusplus extern "C" { #endif #ifndef FUZZY_H #define FUZZY_H /** * @brief fuzzy_digest flag indicating to eliminate sequences of more than * three identical characters */ #define FUZZY_FLAG_ELIMSEQ 0x1u /** * @brief fuzzy_digest flag indicating not to truncate the second part to * SPAMSUM_LENGTH/2 characters. */ #define FUZZY_FLAG_NOTRUNC 0x2u struct fuzzy_state; /** * @brief Construct a fuzzy_state object and return it. * * To use it call fuzzy_update and fuzzy_digest on it. It must be disposed * with fuzzy_free. * @return the constructed fuzzy_state or NULL on failure */ extern /*@only@*/ /*@null@*/ struct fuzzy_state *fuzzy_new(void); /** * @brief Feed the data contained in the given buffer to the state. * * When an error occurs, the state is undefined. In that case it must not be * passed to any function besides fuzzy_free. * @param buffer The data to be hashes * @param buffer_size The length of the given buffer * @return zero on success, non-zero on error */ extern int fuzzy_update(struct fuzzy_state *state, const unsigned char *buffer, size_t buffer_size); /** * @brief Obtain the fuzzy hash from the state. * * This operation does not change the state at all. It reports the hash for the * concatenation of the data previously fed using fuzzy_update. * @param result Where the fuzzy hash is stored. This variable * must be allocated to hold at least FUZZY_MAX_RESULT bytes. * @param flags is a bitwise or of FUZZY_FLAG_* macros. The absence of flags is * represented by a zero. * @return zero on success, non-zero on error */ extern int fuzzy_digest(const struct fuzzy_state *state, /*@out@*/ char *result, unsigned int flags); /** * @brief Dispose a fuzzy state. */ extern void fuzzy_free(/*@only@*/ struct fuzzy_state *state); /** * @brief Compute the fuzzy hash of a buffer * * The computes the fuzzy hash of the first buf_len bytes of the buffer. * It is the caller's responsibility to append the filename, * if any, to result after computation. * @param buf The data to be fuzzy hashed * @param buf_len The length of the data being hashed * @param result Where the fuzzy hash of buf is stored. This variable * must be allocated to hold at least FUZZY_MAX_RESULT bytes. * @return Returns zero on success, non-zero on error. */ extern int fuzzy_hash_buf(const unsigned char *buf, uint32_t buf_len, /*@out@*/ char *result); /** * @brief Compute the fuzzy hash of a file using an open handle * * Computes the fuzzy hash of the contents of the open file, starting * at the beginning of the file. When finished, the file pointer is * returned to its original position. If an error occurs, the file * pointer's value is undefined. * It is the callers's responsibility to append the filename * to the result after computation. * @param handle Open handle to the file to be hashed * @param result Where the fuzzy hash of the file is stored. This * variable must be allocated to hold at least FUZZY_MAX_RESULT bytes. * @return Returns zero on success, non-zero on error */ extern int fuzzy_hash_file(FILE *handle, /*@out@*/ char *result); /** * @brief Compute the fuzzy hash of a stream using an open handle * * Computes the fuzzy hash of the contents of the open stream, starting at the * current file position until reaching EOF. Unlike fuzzy_hash_file the stream * is never seeked. If an error occurs, the result as well as the file position * are undefined. * It is the callers's responsibility to append the filename * to the result after computation. * @param handle Open handle to the stream to be hashed * @param result Where the fuzzy hash of the file is stored. This * variable must be allocated to hold at least FUZZY_MAX_RESULT bytes. * @return Returns zero on success, non-zero on error */ extern int fuzzy_hash_stream(FILE *handle, /*@out@*/ char *result); /** * @brief Compute the fuzzy hash of a file * * Opens, reads, and hashes the contents of the file 'filename' * The result must be allocated to hold FUZZY_MAX_RESULT characters. * It is the caller's responsibility to append the filename * to the result after computation. * @param filename The file to be hashed * @param result Where the fuzzy hash of the file is stored. This * variable must be allocated to hold at least FUZZY_MAX_RESULT bytes. * @return Returns zero on success, non-zero on error. */ extern int fuzzy_hash_filename(const char *filename, /*@out@*/ char * result); /// Computes the match score between two fuzzy hash signatures. /// @return Returns a value from zero to 100 indicating the /// match score of the /// two signatures. A match score of zero indicates the sigantures /// did not match. When an error occurs, such as if one of the /// inputs is NULL, returns -1. extern int fuzzy_compare(const char *sig1, const char *sig2); /** Length of an individual fuzzy hash signature component. */ #define SPAMSUM_LENGTH 64 /** The longest possible length for a fuzzy hash signature * (without the filename) */ #define FUZZY_MAX_RESULT (2 * SPAMSUM_LENGTH + 20) #ifdef __cplusplus } #endif #endif pev/lib/libfuzzy/edit_dist.c0000644000175000017500000001646713034014706015142 0ustar useruser/* This edit distance code is taken from trn3.6. A few minor modifications have been made by Andrew Tridgell for use in spamsum. */ /***************************************************************************/ /* The authors make no claims as to the fitness or correctness of this software * for any use whatsoever, and it is provided as is. Any use of this software * is at the user's own risk. */ #include #include /* edit_dist -- returns the minimum edit distance between two strings Program by: Mark Maimone CMU Computer Science 13 Nov 89 Last Modified: 28 Jan 90 If the input strings have length n and m, the algorithm runs in time O(nm) and space O(min(m,n)). HISTORY 13 Nov 89 (mwm) Created edit_dist() and set_costs(). 28 Jan 90 (mwm) Added view_costs(). Should verify that THRESHOLD computations will work even when THRESHOLD is not a multiple of sizeof(int). 17 May 93 (mwm) Improved performance when used with trn's newsgroup processing; assume all costs are 1, and you can terminate when a threshold is exceeded. */ #define MIN_DIST 100 #define TRN_SPEEDUP /* Use a less-general version of the routine, one that's better for trn. All change costs are 1, and it's okay to terminate if the edit distance is known to exceed MIN_DIST */ #define THRESHOLD 4000 /* worry about allocating more memory only when this # of bytes is exceeded */ #define STRLENTHRESHOLD ((int) ((THRESHOLD / sizeof (int) - 3) / 2)) #define SAFE_ASSIGN(x,y) (((x) != NULL) ? (*(x) = (y)) : (y)) #define swap_int(x,y) do { int _iswap = (x); (x) = (y); (y) = _iswap; } while (0) #define swap_char(x,y) do { const char *_cswap = (x); (x) = (y); (y) = _cswap; } while (0) static inline int min3(int x, int y, int z) { return x < y ? (x < z ? x : z) : (z < y) ? z : y; } static inline int min2(int x, int y) { return x < y ? x : y; } static int insert_cost = 1; static int delete_cost = 1; #ifndef TRN_SPEEDUP static int change_cost = 1; static int swap_cost = 1; #endif /* edit_distn -- returns the edit distance between two strings, or -1 on failure */ int edit_distn(const char *from, int from_len, const char *to, int to_len) { #ifndef TRN_SPEEDUP register int ins, del, ch; /* local copies of edit costs */ #endif register int row, col, index; /* dynamic programming counters */ register int radix; /* radix for modular indexing */ #ifdef TRN_SPEEDUP register int low; #endif int *buffer; /* pointer to storage for one row of the d.p. array */ int store[THRESHOLD / sizeof (int)]; /* a small amount of static storage, to be used when the input strings are small enough */ /* Handle trivial cases when one string is empty */ if (from == NULL || !from_len) if (to == NULL || !to_len) return 0; else return to_len * insert_cost; else if (to == NULL || !to_len) return from_len * delete_cost; /* Initialize registers */ radix = 2 * from_len + 3; #ifdef TRN_SPEEDUP #define ins 1 #define del 1 #define ch 3 #define swap_cost 5 #else ins = insert_cost; del = delete_cost; ch = change_cost; #endif /* Make from short enough to fit in the static storage, if it's at all possible */ if (from_len > to_len && from_len > STRLENTHRESHOLD) { swap_int(from_len, to_len); swap_char(from, to); #ifndef TRN_SPEEDUP swap_int(ins, del); #endif } /* if from_len > to_len */ /* Allocate the array storage (from the heap if necessary) */ if (from_len <= STRLENTHRESHOLD) buffer = store; else buffer = (int *) malloc(radix * sizeof (int)); /* Here's where the fun begins. We will find the minimum edit distance using dynamic programming. We only need to store two rows of the matrix at a time, since we always progress down the matrix. For example, given the strings "one" and "two", and insert, delete and change costs equal to 1: _ o n e _ 0 1 2 3 t 1 1 2 3 w 2 2 2 3 o 3 2 3 3 The dynamic programming recursion is defined as follows: ar(x,0) := x * insert_cost ar(0,y) := y * delete_cost ar(x,y) := min(a(x - 1, y - 1) + (from[x] == to[y] ? 0 : change), a(x - 1, y) + insert_cost, a(x, y - 1) + delete_cost, a(x - 2, y - 2) + (from[x] == to[y-1] && from[x-1] == to[y] ? swap_cost : infinity)) Since this only looks at most two rows and three columns back, we need only store the values for the two preceeding rows. In this implementation, we do not explicitly store the zero column, so only 2 * from_len + 2 words are needed. However, in the implementation of the swap_cost check, the current matrix value is used as a buffer; we can't overwrite the earlier value until the swap_cost check has been performed. So we use 2 * from_len + 3 elements in the buffer. */ #define ar(x,y,index) (((x) == 0) ? (y) * del : (((y) == 0) ? (x) * ins : \ buffer[mod(index)])) #define NW(x,y) ar(x, y, index + from_len + 2) #define N(x,y) ar(x, y, index + from_len + 3) #define W(x,y) ar(x, y, index + radix - 1) #define NNWW(x,y) ar(x, y, index + 1) #define mod(x) ((x) % radix) index = 0; #ifdef DEBUG_EDITDIST printf(" "); for (col = 0; col < from_len; col++) printf(" %c ", from[col]); printf("\n "); for (col = 0; col <= from_len; col++) printf("%2d ", col * del); #endif /* Row 0 is handled implicitly; its value at a given column is col*del. The loop below computes the values for Row 1. At this point we know the strings are nonempty. We also don't need to consider swap costs in row 1. COMMENT: the indicies row and col below point into the STRING, so the corresponding MATRIX indicies are row+1 and col+1. */ buffer[index++] = min2(ins + del, (from[0] == to[0] ? 0 : ch)); #ifdef TRN_SPEEDUP low = buffer[mod(index + radix - 1)]; #endif #ifdef DEBUG_EDITDIST printf("\n %c %2d %2d ", to[0], ins, buffer[index - 1]); #endif for (col = 1; col < from_len; col++) { buffer[index] = min3( col * del + ((from[col] == to[0]) ? 0 : ch), (col + 1) * del + ins, buffer[index - 1] + del); #ifdef TRN_SPEEDUP if (buffer[index] < low) low = buffer[index]; #endif index++; #ifdef DEBUG_EDITDIST printf("%2d ", buffer[index - 1]); #endif } /* for col = 1 */ #ifdef DEBUG_EDITDIST printf("\n %c %2d ", to[1], 2 * ins); #endif /* Now handle the rest of the matrix */ for (row = 1; row < to_len; row++) { for (col = 0; col < from_len; col++) { buffer[index] = min3( NW(row, col) + ((from[col] == to[row]) ? 0 : ch), N(row, col + 1) + ins, W(row + 1, col) + del); if (from[col] == to[row - 1] && col > 0 && from[col - 1] == to[row]) buffer[index] = min2(buffer[index], NNWW(row - 1, col - 1) + swap_cost); #ifdef DEBUG_EDITDIST printf("%2d ", buffer[index]); #endif #ifdef TRN_SPEEDUP if (buffer[index] < low || col == 0) low = buffer[index]; #endif index = mod(index + 1); } /* for col = 1 */ #ifdef DEBUG_EDITDIST if (row < to_len - 1) printf("\n %c %2d ", to[row+1], (row + 2) * ins); else printf("\n"); #endif #ifdef TRN_SPEEDUP if (low > MIN_DIST) break; #endif } /* for row = 1 */ row = buffer[mod(index + radix - 1)]; if (buffer != store) free((char *) buffer); return row; } /* edit_distn */ pev/lib/libfuzzy/fuzzy.c0000644000175000017500000004561613034014706014357 0ustar useruser/* ssdeep * Copyright (C) 2002 Andrew Tridgell * Copyright (C) 2006 ManTech International Corporation * Copyright (C) 2013 Helmut Grohne * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * * Earlier versions of this code were named fuzzy.c and can be found at: * http://www.samba.org/ftp/unpacked/junkcode/spamsum/ * http://ssdeep.sf.net/ */ #include #include #include #include #include #include #include "fuzzy.h" #if defined(__GNUC__) && __GNUC__ >= 3 #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) #else #define likely(x) x #define unlikely(x) x #endif #ifndef MIN #define MIN(a,b) ((a)<(b)?(a):(b)) #endif #ifndef MAX #define MAX(a,b) ((a)>(b)?(a):(b)) #endif #define ROLLING_WINDOW 7 #define MIN_BLOCKSIZE 3 #define HASH_PRIME 0x01000193 #define HASH_INIT 0x28021967 #define NUM_BLOCKHASHES 31 struct roll_state { unsigned char window[ROLLING_WINDOW]; uint32_t h1, h2, h3; uint32_t n; }; static void roll_init(/*@out@*/ struct roll_state *self) { memset(self, 0, sizeof(struct roll_state)); } /* * a rolling hash, based on the Adler checksum. By using a rolling hash * we can perform auto resynchronisation after inserts/deletes * internally, h1 is the sum of the bytes in the window and h2 * is the sum of the bytes times the index * h3 is a shift/xor based rolling hash, and is mostly needed to ensure that * we can cope with large blocksize values */ static void roll_hash(struct roll_state *self, unsigned char c) { self->h2 -= self->h1; self->h2 += ROLLING_WINDOW * (uint32_t)c; self->h1 += (uint32_t)c; self->h1 -= (uint32_t)self->window[self->n % ROLLING_WINDOW]; self->window[self->n % ROLLING_WINDOW] = c; self->n++; /* The original spamsum AND'ed this value with 0xFFFFFFFF which * in theory should have no effect. This AND has been removed * for performance (jk) */ self->h3 <<= 5; self->h3 ^= c; } static uint32_t roll_sum(const struct roll_state *self) { return self->h1 + self->h2 + self->h3; } /* A simple non-rolling hash, based on the FNV hash. */ static uint32_t sum_hash(unsigned char c, uint32_t h) { return (h * HASH_PRIME) ^ c; } /* A blockhash contains a signature state for a specific (implicit) blocksize. * The blocksize is given by SSDEEP_BS(index). The h and halfh members are the * FNV hashes, where halfh stops to be reset after digest is SPAMSUM_LENGTH/2 * long. The halfh hash is needed be able to truncate digest for the second * output hash to stay compatible with ssdeep output. */ struct blockhash_context { uint32_t h, halfh; char digest[SPAMSUM_LENGTH]; unsigned int dlen; }; struct fuzzy_state { unsigned int bhstart, bhend; struct blockhash_context bh[NUM_BLOCKHASHES]; size_t total_size; struct roll_state roll; }; #define SSDEEP_BS(index) (((uint32_t)MIN_BLOCKSIZE) << (index)) /*@only@*/ /*@null@*/ struct fuzzy_state *fuzzy_new(void) { struct fuzzy_state *self; if(NULL == (self = malloc(sizeof(struct fuzzy_state)))) /* malloc sets ENOMEM */ return NULL; self->bhstart = 0; self->bhend = 1; self->bh[0].h = HASH_INIT; self->bh[0].halfh = HASH_INIT; self->bh[0].dlen = 0; self->total_size = 0; roll_init(&self->roll); return self; } static void fuzzy_try_fork_blockhash(struct fuzzy_state *self) { struct blockhash_context *obh, *nbh; if (self->bhend >= NUM_BLOCKHASHES) return; assert(self->bhend > 0); obh = self->bh + (self->bhend - 1); nbh = obh + 1; nbh->h = obh->h; nbh->halfh = obh->halfh; nbh->dlen = 0; ++self->bhend; } static void fuzzy_try_reduce_blockhash(struct fuzzy_state *self) { assert(self->bhstart < self->bhend); if (self->bhend - self->bhstart < 2) /* Need at least two working hashes. */ return; if ((size_t)SSDEEP_BS(self->bhstart) * SPAMSUM_LENGTH >= self->total_size) /* Initial blocksize estimate would select this or a smaller * blocksize. */ return; if (self->bh[self->bhstart + 1].dlen < SPAMSUM_LENGTH / 2) /* Estimate adjustment would select this blocksize. */ return; /* At this point we are clearly no longer interested in the * start_blocksize. Get rid of it. */ ++self->bhstart; } static const char *b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; static void fuzzy_engine_step(struct fuzzy_state *self, unsigned char c) { size_t h; unsigned int i; /* At each character we update the rolling hash and the normal hashes. * When the rolling hash hits a reset value then we emit a normal hash * as a element of the signature and reset the normal hash. */ roll_hash(&self->roll, c); h = roll_sum(&self->roll); for (i = self->bhstart; i < self->bhend; ++i) { self->bh[i].h = sum_hash(c, self->bh[i].h); self->bh[i].halfh = sum_hash(c, self->bh[i].halfh); } for (i = self->bhstart; i < self->bhend; ++i) { /* With growing blocksize almost no runs fail the next test. */ if (likely(h % SSDEEP_BS(i) != SSDEEP_BS(i) - 1)) /* Once this condition is false for one bs, it is * automatically false for all further bs. I.e. if * h === -1 (mod 2*bs) then h === -1 (mod bs). */ break; /* We have hit a reset point. We now emit hashes which are * based on all characters in the piece of the message between * the last reset point and this one */ if (unlikely(0 == self->bh[i].dlen)) { /* Can only happen 30 times. */ /* First step for this blocksize. Clone next. */ fuzzy_try_fork_blockhash(self); } if (self->bh[i].dlen < SPAMSUM_LENGTH - 1) { /* We can have a problem with the tail overflowing. The * easiest way to cope with this is to only reset the * normal hash if we have room for more characters in * our signature. This has the effect of combining the * last few pieces of the message into a single piece * */ self->bh[i].digest[self->bh[i].dlen++] = b64[self->bh[i].h % 64]; self->bh[i].h = HASH_INIT; if (self->bh[i].dlen < SPAMSUM_LENGTH / 2) self->bh[i].halfh = HASH_INIT; } else fuzzy_try_reduce_blockhash(self); } } int fuzzy_update(struct fuzzy_state *self, const unsigned char *buffer, size_t buffer_size) { self->total_size += buffer_size; for ( ;buffer_size > 0; ++buffer, --buffer_size) fuzzy_engine_step(self, *buffer); return 0; } static int memcpy_eliminate_sequences(char *dst, const char *src, int n) { const char *srcend = src + n; assert(n >= 0); if (src < srcend) *dst++ = *src++; if (src < srcend) *dst++ = *src++; if (src < srcend) *dst++ = *src++; while (src < srcend) if (*src == dst[-1] && *src == dst[-2] && *src == dst[-3]) { ++src; --n; } else *dst++ = *src++; return n; } #ifdef S_SPLINT_S extern const int EOVERFLOW; #endif // We need some extra help on Win32 #ifdef _WIN32 # define EOVERFLOW 84 # define ftello ftell # define fseeko fseek #endif int fuzzy_digest(const struct fuzzy_state *self, /*@out@*/ char *result, unsigned int flags) { unsigned int bi = self->bhstart; uint32_t h = roll_sum(&self->roll); int i, remain = FUZZY_MAX_RESULT - 1; /* Exclude terminating '\0'. */ /* Verify that our elimination was not overeager. */ assert(bi == 0 || (size_t)SSDEEP_BS(bi) / 2 * SPAMSUM_LENGTH < self->total_size); /* Initial blocksize guess. */ while ((size_t)SSDEEP_BS(bi) * SPAMSUM_LENGTH < self->total_size) { ++bi; if (bi >= NUM_BLOCKHASHES) { /* The input exceeds data types. */ errno = EOVERFLOW; return -1; } } /* Adapt blocksize guess to actual digest length. */ while (bi >= self->bhend) --bi; while (bi > self->bhstart && self->bh[bi].dlen < SPAMSUM_LENGTH / 2) --bi; assert (!(bi > 0 && self->bh[bi].dlen < SPAMSUM_LENGTH / 2)); i = snprintf(result, (size_t)remain, "%u:", SSDEEP_BS(bi)); if (i <= 0) /* Maybe snprintf has set errno here? */ return -1; assert(i < remain); remain -= i; result += i; i = (int)self->bh[bi].dlen; assert(i <= remain); if ((flags & FUZZY_FLAG_ELIMSEQ) != 0) i = memcpy_eliminate_sequences(result, self->bh[bi].digest, i); else memcpy(result, self->bh[bi].digest, (size_t)i); result += i; remain -= i; if (h != 0) { assert(remain > 0); *result = b64[self->bh[bi].h % 64]; if((flags & FUZZY_FLAG_ELIMSEQ) == 0 || i < 3 || *result != result[-1] || *result != result[-2] || *result != result[-3]) { ++result; --remain; } } assert(remain > 0); *result++ = ':'; --remain; if (bi < self->bhend - 1) { ++bi; i = (int)self->bh[bi].dlen; if ((flags & FUZZY_FLAG_NOTRUNC) == 0 && i > SPAMSUM_LENGTH / 2 - 1) i = SPAMSUM_LENGTH / 2 - 1; assert(i <= remain); if ((flags & FUZZY_FLAG_ELIMSEQ) != 0) i = memcpy_eliminate_sequences(result, self->bh[bi].digest, i); else memcpy(result, self->bh[bi].digest, (size_t)i); result += i; remain -= i; if (h != 0) { assert(remain > 0); h = (flags & FUZZY_FLAG_NOTRUNC) != 0 ? self->bh[bi].h : self->bh[bi].halfh; *result = b64[h % 64]; if ((flags & FUZZY_FLAG_ELIMSEQ) == 0 || i < 3 || *result != result[-1] || *result != result[-2] || *result != result[-3]) { ++result; --remain; } } } else if (h != 0) { assert(self->bh[bi].dlen == 0); assert(remain > 0); *result++ = b64[self->bh[bi].h % 64]; /* No need to bother with FUZZY_FLAG_ELIMSEQ, because this * digest has length 1. */ --remain; } *result = '\0'; return 0; } void fuzzy_free(/*@only@*/ struct fuzzy_state *self) { free(self); } int fuzzy_hash_buf(const unsigned char *buf, uint32_t buf_len, /*@out@*/ char *result) { struct fuzzy_state *ctx; int ret = -1; if (NULL == (ctx = fuzzy_new())) return -1; if (fuzzy_update(ctx, buf, buf_len) < 0) goto out; if (fuzzy_digest(ctx, result, 0) < 0) goto out; ret = 0; out: fuzzy_free(ctx); return ret; } int fuzzy_hash_stream(FILE *handle, /*@out@*/ char *result) { struct fuzzy_state *ctx; unsigned char buffer[4096]; size_t n; int ret = -1; if (NULL == (ctx = fuzzy_new())) return -1; for(;;) { n = fread(buffer, 1, 4096, handle); if (0 == n) break; if (fuzzy_update(ctx, buffer, n) < 0) goto out; } if (ferror(handle) != 0) goto out; if (fuzzy_digest(ctx, result, 0) < 0) goto out; ret = 0; out: fuzzy_free(ctx); return ret; } #ifdef S_SPLINT_S typedef size_t off_t; int fseeko(FILE *, off_t, int); off_t ftello(FILE *); #endif int fuzzy_hash_file(FILE *handle, /*@out@*/ char *result) { off_t fpos; int status; fpos = ftello(handle); if (fseek(handle, 0, SEEK_SET) < 0) return -1; status = fuzzy_hash_stream(handle, result); if (status == 0) { if (fseeko(handle, fpos, SEEK_SET) < 0) return -1; } return status; } int fuzzy_hash_filename(const char *filename, /*@out@*/ char *result) { int status; FILE *handle = fopen(filename, "rb"); if (NULL == handle) return -1; status = fuzzy_hash_stream(handle, result); /* We cannot do anything about an fclose failure. */ (void)fclose(handle); return status; } // // We only accept a match if we have at least one common substring in // the signature of length ROLLING_WINDOW. This dramatically drops the // false positive rate for low score thresholds while having // negligable affect on the rate of spam detection. // // return 1 if the two strings do have a common substring, 0 otherwise // static int has_common_substring(const char *s1, const char *s2) { int i, j; int num_hashes; uint32_t hashes[SPAMSUM_LENGTH]; // there are many possible algorithms for common substring // detection. In this case I am re-using the rolling hash code // to act as a filter for possible substring matches memset(hashes, 0, sizeof(hashes)); // first compute the windowed rolling hash at each offset in // the first string struct roll_state state; roll_init (&state); for (i=0;s1[i];i++) { roll_hash(&state, (unsigned char)s1[i]); hashes[i] = roll_sum(&state); } num_hashes = i; roll_init(&state); // now for each offset in the second string compute the // rolling hash and compare it to all of the rolling hashes // for the first string. If one matches then we have a // candidate substring match. We then confirm that match with // a direct string comparison */ for (i=0;s2[i];i++) { roll_hash(&state, (unsigned char)s2[i]); uint32_t h = roll_sum(&state); if (i < ROLLING_WINDOW-1) continue; for (j=ROLLING_WINDOW-1;j= ROLLING_WINDOW && strncmp(s2+i-(ROLLING_WINDOW-1), s1+j-(ROLLING_WINDOW-1), ROLLING_WINDOW) == 0) { return 1; } } } } return 0; } // eliminate sequences of longer than 3 identical characters. These // sequences contain very little information so they tend to just bias // the result unfairly static char *eliminate_sequences(const char *str) { char *ret; size_t i, j, len; ret = strdup(str); if (!ret) return NULL; len = strlen(str); if (len < 3) return ret; for (i=j=3 ; i SPAMSUM_LENGTH || len2 > SPAMSUM_LENGTH) { // not a real spamsum signature? return 0; } // the two strings must have a common substring of length // ROLLING_WINDOW to be candidates if (has_common_substring(s1, s2) == 0) { return 0; } // compute the edit distance between the two strings. The edit distance gives // us a pretty good idea of how closely related the two strings are score = edit_distn(s1, len1, s2, len2); // scale the edit distance by the lengths of the two // strings. This changes the score to be a measure of the // proportion of the message that has changed rather than an // absolute quantity. It also copes with the variability of // the string lengths. score = (score * SPAMSUM_LENGTH) / (len1 + len2); // at this stage the score occurs roughly on a 0-64 scale, // with 0 being a good match and 64 being a complete // mismatch // rescale to a 0-100 scale (friendlier to humans) score = (100 * score) / 64; // it is possible to get a score above 100 here, but it is a // really terrible match if (score >= 100) return 0; // now re-scale on a 0-100 scale with 0 being a poor match and // 100 being a excellent match. score = 100 - score; // printf ("len1: %"PRIu32" len2: %"PRIu32"\n", len1, len2); // when the blocksize is small we don't want to exaggerate the match size if (score > block_size/MIN_BLOCKSIZE * MIN(len1, len2)) { score = block_size/MIN_BLOCKSIZE * MIN(len1, len2); } return score; } // // Given two spamsum strings return a value indicating the degree // to which they match. // int fuzzy_compare(const char *str1, const char *str2) { unsigned int block_size1, block_size2; uint32_t score = 0; char *s1, *s2; char *s1_1, *s1_2, *s1_3; char *s2_1, *s2_2, *s2_3; if (NULL == str1 || NULL == str2) return -1; // each spamsum is prefixed by its block size if (sscanf(str1, "%u:", &block_size1) != 1 || sscanf(str2, "%u:", &block_size2) != 1) { return -1; } // if the blocksizes don't match then we are comparing // apples to oranges. This isn't an 'error' per se. We could // have two valid signatures, but they can't be compared. if (block_size1 != block_size2 && block_size1 != block_size2*2 && block_size2 != block_size1*2) { return 0; } // move past the prefix str1 = strchr(str1, ':'); str2 = strchr(str2, ':'); if (!str1 || !str2) { // badly formed ... return -1; } // there is very little information content is sequences of // the same character like 'LLLLL'. Eliminate any sequences // longer than 3. This is especially important when combined // with the has_common_substring() test below. // NOTE: This function duplciates str1 and str2 s1 = eliminate_sequences(str1+1); if (!s1) return 0; s2 = eliminate_sequences(str2+1); if (!s2) { free(s1); return 0; } // now break them into the two pieces s1_1 = s1; s2_1 = s2; s1_2 = strchr(s1, ':'); s2_2 = strchr(s2, ':'); if (!s1_2 || !s2_2) { // a signature is malformed - it doesn't have 2 parts free(s1); free(s2); return -1; } // Chop the first substring. We terminate the first substring // and then advance the pointer to the start of the second substring. *s1_2 = 0; s1_2++; *s2_2 = 0; s2_2++; // Chop the second string at the comma--just before the filename. // If the strings don't have a comma (i.e. don't have a filename) // that's ok. It's not an error. This function can be called on // signatures which don't have filenames attached. // We also don't have to advance past the comma however. We don't care // about the filename s1_3 = strchr(s1_2, ','); s2_3 = strchr(s2_2, ','); if (s1_3 != NULL) *s1_3 = 0; if (s2_3 != NULL) *s2_3 = 0; // each signature has a string for two block sizes. We now // choose how to combine the two block sizes. We checked above // that they have at least one block size in common if (block_size1 == block_size2) { uint32_t score1, score2; score1 = score_strings(s1_1, s2_1, block_size1); score2 = score_strings(s1_2, s2_2, block_size1*2); score = MAX(score1, score2); } else if (block_size1 == block_size2*2) { score = score_strings(s1_1, s2_2, block_size1); } else { score = score_strings(s1_2, s2_1, block_size2); } free(s1); free(s2); return (int)score; } pev/lib/libudis86/0000755000175000017500000000000013034014706012743 5ustar useruserpev/lib/libudis86/libudis86/0000755000175000017500000000000013034014706014554 5ustar useruserpev/lib/libudis86/libudis86/itab.c0000644000175000017500000115265513034014706015656 0ustar useruser/* itab.c -- generated by udis86:scripts/ud_itab.py, do no edit */ #include "decode.h" #define GROUP(n) (0x8000 | (n)) static const uint16_t ud_itab__1[] = { /* 0 */ 7, 0, }; static const uint16_t ud_itab__2[] = { /* 0 */ 8, 0, }; static const uint16_t ud_itab__3[] = { /* 0 */ 15, 0, }; static const uint16_t ud_itab__6[] = { /* 0 */ 16, 0, 0, 0, }; static const uint16_t ud_itab__7[] = { /* 0 */ 17, 0, 0, 0, }; static const uint16_t ud_itab__8[] = { /* 0 */ 18, 0, 0, 0, }; static const uint16_t ud_itab__9[] = { /* 0 */ 19, 0, 0, 0, }; static const uint16_t ud_itab__10[] = { /* 0 */ 20, 0, 0, 0, }; static const uint16_t ud_itab__11[] = { /* 0 */ 21, 0, 0, 0, }; static const uint16_t ud_itab__5[] = { /* 0 */ GROUP(6), GROUP(7), GROUP(8), GROUP(9), /* 4 */ GROUP(10), GROUP(11), 0, 0, }; static const uint16_t ud_itab__15[] = { /* 0 */ 22, 0, }; static const uint16_t ud_itab__14[] = { /* 0 */ GROUP(15), 0, 0, 0, }; static const uint16_t ud_itab__17[] = { /* 0 */ 23, 0, }; static const uint16_t ud_itab__16[] = { /* 0 */ GROUP(17), 0, 0, 0, }; static const uint16_t ud_itab__19[] = { /* 0 */ 24, 0, }; static const uint16_t ud_itab__18[] = { /* 0 */ GROUP(19), 0, 0, 0, }; static const uint16_t ud_itab__21[] = { /* 0 */ 25, 0, }; static const uint16_t ud_itab__20[] = { /* 0 */ GROUP(21), 0, 0, 0, }; static const uint16_t ud_itab__23[] = { /* 0 */ 26, 0, }; static const uint16_t ud_itab__22[] = { /* 0 */ GROUP(23), 0, 0, 0, }; static const uint16_t ud_itab__25[] = { /* 0 */ 27, 0, }; static const uint16_t ud_itab__24[] = { /* 0 */ GROUP(25), 0, 0, 0, }; static const uint16_t ud_itab__27[] = { /* 0 */ 28, 0, }; static const uint16_t ud_itab__26[] = { /* 0 */ GROUP(27), 0, 0, 0, }; static const uint16_t ud_itab__13[] = { /* 0 */ GROUP(14), GROUP(16), GROUP(18), GROUP(20), /* 4 */ GROUP(22), 0, GROUP(24), GROUP(26), }; static const uint16_t ud_itab__32[] = { /* 0 */ 0, 29, 0, }; static const uint16_t ud_itab__31[] = { /* 0 */ 0, GROUP(32), }; static const uint16_t ud_itab__30[] = { /* 0 */ GROUP(31), 0, 0, 0, }; static const uint16_t ud_itab__35[] = { /* 0 */ 0, 30, 0, }; static const uint16_t ud_itab__34[] = { /* 0 */ 0, GROUP(35), }; static const uint16_t ud_itab__33[] = { /* 0 */ GROUP(34), 0, 0, 0, }; static const uint16_t ud_itab__38[] = { /* 0 */ 0, 31, 0, }; static const uint16_t ud_itab__37[] = { /* 0 */ 0, GROUP(38), }; static const uint16_t ud_itab__36[] = { /* 0 */ GROUP(37), 0, 0, 0, }; static const uint16_t ud_itab__41[] = { /* 0 */ 0, 32, 0, }; static const uint16_t ud_itab__40[] = { /* 0 */ 0, GROUP(41), }; static const uint16_t ud_itab__39[] = { /* 0 */ GROUP(40), 0, 0, 0, }; static const uint16_t ud_itab__29[] = { /* 0 */ 0, GROUP(30), GROUP(33), GROUP(36), /* 4 */ GROUP(39), 0, 0, 0, }; static const uint16_t ud_itab__44[] = { /* 0 */ 0, 33, }; static const uint16_t ud_itab__43[] = { /* 0 */ GROUP(44), 0, 0, 0, }; static const uint16_t ud_itab__46[] = { /* 0 */ 0, 34, }; static const uint16_t ud_itab__45[] = { /* 0 */ GROUP(46), 0, 0, 0, }; static const uint16_t ud_itab__42[] = { /* 0 */ GROUP(43), GROUP(45), 0, 0, /* 4 */ 0, 0, 0, 0, }; static const uint16_t ud_itab__49[] = { /* 0 */ 0, 35, }; static const uint16_t ud_itab__48[] = { /* 0 */ GROUP(49), 0, 0, 0, }; static const uint16_t ud_itab__51[] = { /* 0 */ 0, 36, }; static const uint16_t ud_itab__50[] = { /* 0 */ GROUP(51), 0, 0, 0, }; static const uint16_t ud_itab__47[] = { /* 0 */ GROUP(48), GROUP(50), 0, 0, /* 4 */ 0, 0, 0, 0, }; static const uint16_t ud_itab__55[] = { /* 0 */ 37, 0, 0, }; static const uint16_t ud_itab__54[] = { /* 0 */ 0, GROUP(55), }; static const uint16_t ud_itab__53[] = { /* 0 */ GROUP(54), 0, 0, 0, }; static const uint16_t ud_itab__58[] = { /* 0 */ 38, 0, 0, }; static const uint16_t ud_itab__57[] = { /* 0 */ 0, GROUP(58), }; static const uint16_t ud_itab__56[] = { /* 0 */ GROUP(57), 0, 0, 0, }; static const uint16_t ud_itab__61[] = { /* 0 */ 39, 0, 0, }; static const uint16_t ud_itab__60[] = { /* 0 */ 0, GROUP(61), }; static const uint16_t ud_itab__59[] = { /* 0 */ GROUP(60), 0, 0, 0, }; static const uint16_t ud_itab__64[] = { /* 0 */ 40, 0, 0, }; static const uint16_t ud_itab__63[] = { /* 0 */ 0, GROUP(64), }; static const uint16_t ud_itab__62[] = { /* 0 */ GROUP(63), 0, 0, 0, }; static const uint16_t ud_itab__67[] = { /* 0 */ 41, 0, 0, }; static const uint16_t ud_itab__66[] = { /* 0 */ 0, GROUP(67), }; static const uint16_t ud_itab__65[] = { /* 0 */ GROUP(66), 0, 0, 0, }; static const uint16_t ud_itab__70[] = { /* 0 */ 42, 0, 0, }; static const uint16_t ud_itab__69[] = { /* 0 */ 0, GROUP(70), }; static const uint16_t ud_itab__68[] = { /* 0 */ GROUP(69), 0, 0, 0, }; static const uint16_t ud_itab__73[] = { /* 0 */ 43, 0, 0, }; static const uint16_t ud_itab__72[] = { /* 0 */ 0, GROUP(73), }; static const uint16_t ud_itab__71[] = { /* 0 */ GROUP(72), 0, 0, 0, }; static const uint16_t ud_itab__76[] = { /* 0 */ 44, 0, 0, }; static const uint16_t ud_itab__75[] = { /* 0 */ 0, GROUP(76), }; static const uint16_t ud_itab__74[] = { /* 0 */ GROUP(75), 0, 0, 0, }; static const uint16_t ud_itab__52[] = { /* 0 */ GROUP(53), GROUP(56), GROUP(59), GROUP(62), /* 4 */ GROUP(65), GROUP(68), GROUP(71), GROUP(74), }; static const uint16_t ud_itab__78[] = { /* 0 */ 0, 45, }; static const uint16_t ud_itab__77[] = { /* 0 */ GROUP(78), 0, 0, 0, }; static const uint16_t ud_itab__80[] = { /* 0 */ 0, 46, }; static const uint16_t ud_itab__79[] = { /* 0 */ GROUP(80), 0, 0, 0, }; static const uint16_t ud_itab__83[] = { /* 0 */ 0, 47, }; static const uint16_t ud_itab__82[] = { /* 0 */ GROUP(83), 0, 0, 0, }; static const uint16_t ud_itab__86[] = { /* 0 */ 48, 0, 0, }; static const uint16_t ud_itab__85[] = { /* 0 */ 0, GROUP(86), }; static const uint16_t ud_itab__84[] = { /* 0 */ GROUP(85), 0, 0, 0, }; static const uint16_t ud_itab__81[] = { /* 0 */ GROUP(82), GROUP(84), 0, 0, /* 4 */ 0, 0, 0, 0, }; static const uint16_t ud_itab__28[] = { /* 0 */ GROUP(29), GROUP(42), GROUP(47), GROUP(52), /* 4 */ GROUP(77), 0, GROUP(79), GROUP(81), }; static const uint16_t ud_itab__12[] = { /* 0 */ GROUP(13), GROUP(28), }; static const uint16_t ud_itab__87[] = { /* 0 */ 49, 0, 0, 0, }; static const uint16_t ud_itab__88[] = { /* 0 */ 50, 0, 0, 0, }; static const uint16_t ud_itab__89[] = { /* 0 */ 51, 0, 0, 0, }; static const uint16_t ud_itab__90[] = { /* 0 */ 52, 0, 0, 0, }; static const uint16_t ud_itab__91[] = { /* 0 */ 53, 0, 0, 0, }; static const uint16_t ud_itab__92[] = { /* 0 */ 54, 0, 0, 0, }; static const uint16_t ud_itab__93[] = { /* 0 */ 55, 0, 0, 0, }; static const uint16_t ud_itab__94[] = { /* 0 */ 56, 0, 0, 0, }; static const uint16_t ud_itab__96[] = { /* 0 */ 57, 0, 0, 0, }; static const uint16_t ud_itab__97[] = { /* 0 */ 58, 0, 0, 0, }; static const uint16_t ud_itab__98[] = { /* 0 */ 59, 0, 0, 0, }; static const uint16_t ud_itab__99[] = { /* 0 */ 60, 0, 0, 0, }; static const uint16_t ud_itab__100[] = { /* 0 */ 61, 0, 0, 0, }; static const uint16_t ud_itab__101[] = { /* 0 */ 62, 0, 0, 0, }; static const uint16_t ud_itab__102[] = { /* 0 */ 63, 0, 0, 0, }; static const uint16_t ud_itab__103[] = { /* 0 */ 64, 0, 0, 0, }; static const uint16_t ud_itab__95[] = { /* 0 */ GROUP(96), GROUP(97), GROUP(98), GROUP(99), /* 4 */ GROUP(100), GROUP(101), GROUP(102), GROUP(103), }; static const uint16_t ud_itab__104[] = { /* 0 */ 65, 0, 0, 0, }; static const uint16_t ud_itab__105[] = { /* 0 */ 0, 0, 0, 0, /* 4 */ 0, 0, 0, 0, /* 8 */ 0, 0, 0, 0, /* c */ 66, 67, 0, 0, /* 10 */ 0, 0, 0, 0, /* 14 */ 0, 0, 0, 0, /* 18 */ 0, 0, 0, 0, /* 1c */ 68, 69, 0, 0, /* 20 */ 0, 0, 0, 0, /* 24 */ 0, 0, 0, 0, /* 28 */ 0, 0, 0, 0, /* 2c */ 0, 0, 0, 0, /* 30 */ 0, 0, 0, 0, /* 34 */ 0, 0, 0, 0, /* 38 */ 0, 0, 0, 0, /* 3c */ 0, 0, 0, 0, /* 40 */ 0, 0, 0, 0, /* 44 */ 0, 0, 0, 0, /* 48 */ 0, 0, 0, 0, /* 4c */ 0, 0, 0, 0, /* 50 */ 0, 0, 0, 0, /* 54 */ 0, 0, 0, 0, /* 58 */ 0, 0, 0, 0, /* 5c */ 0, 0, 0, 0, /* 60 */ 0, 0, 0, 0, /* 64 */ 0, 0, 0, 0, /* 68 */ 0, 0, 0, 0, /* 6c */ 0, 0, 0, 0, /* 70 */ 0, 0, 0, 0, /* 74 */ 0, 0, 0, 0, /* 78 */ 0, 0, 0, 0, /* 7c */ 0, 0, 0, 0, /* 80 */ 0, 0, 0, 0, /* 84 */ 0, 0, 0, 0, /* 88 */ 0, 0, 70, 0, /* 8c */ 0, 0, 71, 0, /* 90 */ 72, 0, 0, 0, /* 94 */ 73, 0, 74, 75, /* 98 */ 0, 0, 76, 0, /* 9c */ 0, 0, 77, 0, /* a0 */ 78, 0, 0, 0, /* a4 */ 79, 0, 80, 81, /* a8 */ 0, 0, 82, 0, /* ac */ 0, 0, 83, 0, /* b0 */ 84, 0, 0, 0, /* b4 */ 85, 0, 86, 87, /* b8 */ 0, 0, 0, 88, /* bc */ 0, 0, 0, 89, /* c0 */ 0, 0, 0, 0, /* c4 */ 0, 0, 0, 0, /* c8 */ 0, 0, 0, 0, /* cc */ 0, 0, 0, 0, /* d0 */ 0, 0, 0, 0, /* d4 */ 0, 0, 0, 0, /* d8 */ 0, 0, 0, 0, /* dc */ 0, 0, 0, 0, /* e0 */ 0, 0, 0, 0, /* e4 */ 0, 0, 0, 0, /* e8 */ 0, 0, 0, 0, /* ec */ 0, 0, 0, 0, /* f0 */ 0, 0, 0, 0, /* f4 */ 0, 0, 0, 0, /* f8 */ 0, 0, 0, 0, /* fc */ 0, 0, 0, 0, }; static const uint16_t ud_itab__106[] = { /* 0 */ 90, 91, 92, 93, }; static const uint16_t ud_itab__107[] = { /* 0 */ 94, 95, 96, 97, }; static const uint16_t ud_itab__110[] = { /* 0 */ 98, 0, }; static const uint16_t ud_itab__111[] = { /* 0 */ 99, 0, }; static const uint16_t ud_itab__112[] = { /* 0 */ 100, 0, }; static const uint16_t ud_itab__113[] = { /* 0 */ 101, 0, }; static const uint16_t ud_itab__109[] = { /* 0 */ GROUP(110), GROUP(111), GROUP(112), GROUP(113), }; static const uint16_t ud_itab__115[] = { /* 0 */ 0, 102, }; static const uint16_t ud_itab__116[] = { /* 0 */ 0, 103, }; static const uint16_t ud_itab__117[] = { /* 0 */ 0, 104, }; static const uint16_t ud_itab__114[] = { /* 0 */ GROUP(115), GROUP(116), GROUP(117), 0, }; static const uint16_t ud_itab__108[] = { /* 0 */ GROUP(109), GROUP(114), }; static const uint16_t ud_itab__118[] = { /* 0 */ 105, 0, 0, 106, }; static const uint16_t ud_itab__119[] = { /* 0 */ 107, 0, 0, 108, }; static const uint16_t ud_itab__120[] = { /* 0 */ 109, 0, 0, 110, }; static const uint16_t ud_itab__123[] = { /* 0 */ 111, 0, }; static const uint16_t ud_itab__124[] = { /* 0 */ 112, 0, }; static const uint16_t ud_itab__125[] = { /* 0 */ 113, 0, }; static const uint16_t ud_itab__122[] = { /* 0 */ GROUP(123), 0, GROUP(124), GROUP(125), }; static const uint16_t ud_itab__127[] = { /* 0 */ 0, 114, }; static const uint16_t ud_itab__128[] = { /* 0 */ 0, 115, }; static const uint16_t ud_itab__126[] = { /* 0 */ GROUP(127), 0, GROUP(128), 0, }; static const uint16_t ud_itab__121[] = { /* 0 */ GROUP(122), GROUP(126), }; static const uint16_t ud_itab__129[] = { /* 0 */ 116, 0, 0, 117, }; static const uint16_t ud_itab__131[] = { /* 0 */ 118, 0, 0, 0, }; static const uint16_t ud_itab__132[] = { /* 0 */ 119, 0, 0, 0, }; static const uint16_t ud_itab__133[] = { /* 0 */ 120, 0, 0, 0, }; static const uint16_t ud_itab__134[] = { /* 0 */ 121, 0, 0, 0, }; static const uint16_t ud_itab__130[] = { /* 0 */ GROUP(131), GROUP(132), GROUP(133), GROUP(134), /* 4 */ 0, 0, 0, 0, }; static const uint16_t ud_itab__135[] = { /* 0 */ 122, 0, 0, 0, }; static const uint16_t ud_itab__136[] = { /* 0 */ 123, 0, 0, 0, }; static const uint16_t ud_itab__137[] = { /* 0 */ 124, 0, 0, 0, }; static const uint16_t ud_itab__138[] = { /* 0 */ 125, 0, 0, 0, }; static const uint16_t ud_itab__139[] = { /* 0 */ 126, 0, 0, 0, }; static const uint16_t ud_itab__140[] = { /* 0 */ 127, 0, 0, 0, }; static const uint16_t ud_itab__141[] = { /* 0 */ 128, 0, 0, 0, }; static const uint16_t ud_itab__142[] = { /* 0 */ 129, 0, 0, 0, }; static const uint16_t ud_itab__143[] = { /* 0 */ 130, 0, 0, 0, }; static const uint16_t ud_itab__144[] = { /* 0 */ 131, 0, 0, 0, }; static const uint16_t ud_itab__145[] = { /* 0 */ 132, 0, 0, 0, }; static const uint16_t ud_itab__146[] = { /* 0 */ 133, 0, 0, 134, }; static const uint16_t ud_itab__147[] = { /* 0 */ 135, 0, 0, 136, }; static const uint16_t ud_itab__148[] = { /* 0 */ 137, 138, 139, 140, }; static const uint16_t ud_itab__149[] = { /* 0 */ 141, 0, 0, 142, }; static const uint16_t ud_itab__150[] = { /* 0 */ 143, 144, 145, 146, }; static const uint16_t ud_itab__151[] = { /* 0 */ 147, 148, 149, 150, }; static const uint16_t ud_itab__152[] = { /* 0 */ 151, 0, 0, 152, }; static const uint16_t ud_itab__153[] = { /* 0 */ 153, 0, 0, 154, }; static const uint16_t ud_itab__154[] = { /* 0 */ 155, 0, 0, 0, }; static const uint16_t ud_itab__155[] = { /* 0 */ 156, 0, 0, 0, }; static const uint16_t ud_itab__156[] = { /* 0 */ 157, 0, 0, 0, }; static const uint16_t ud_itab__157[] = { /* 0 */ 158, 0, 0, 0, }; static const uint16_t ud_itab__160[] = { /* 0 */ 0, 160, 0, }; static const uint16_t ud_itab__159[] = { /* 0 */ 159, GROUP(160), }; static const uint16_t ud_itab__158[] = { /* 0 */ GROUP(159), 0, 0, 0, }; static const uint16_t ud_itab__163[] = { /* 0 */ 0, 162, 0, }; static const uint16_t ud_itab__162[] = { /* 0 */ 161, GROUP(163), }; static const uint16_t ud_itab__161[] = { /* 0 */ GROUP(162), 0, 0, 0, }; static const uint16_t ud_itab__164[] = { /* 0 */ 163, 0, 0, 0, }; static const uint16_t ud_itab__166[] = { /* 0 */ 164, 0, 0, 165, }; static const uint16_t ud_itab__167[] = { /* 0 */ 166, 0, 0, 167, }; static const uint16_t ud_itab__168[] = { /* 0 */ 168, 0, 0, 169, }; static const uint16_t ud_itab__169[] = { /* 0 */ 170, 0, 0, 171, }; static const uint16_t ud_itab__170[] = { /* 0 */ 172, 0, 0, 173, }; static const uint16_t ud_itab__171[] = { /* 0 */ 174, 0, 0, 175, }; static const uint16_t ud_itab__172[] = { /* 0 */ 176, 0, 0, 177, }; static const uint16_t ud_itab__173[] = { /* 0 */ 178, 0, 0, 179, }; static const uint16_t ud_itab__174[] = { /* 0 */ 180, 0, 0, 181, }; static const uint16_t ud_itab__175[] = { /* 0 */ 182, 0, 0, 183, }; static const uint16_t ud_itab__176[] = { /* 0 */ 184, 0, 0, 185, }; static const uint16_t ud_itab__177[] = { /* 0 */ 186, 0, 0, 187, }; static const uint16_t ud_itab__178[] = { /* 0 */ 0, 0, 0, 188, }; static const uint16_t ud_itab__179[] = { /* 0 */ 0, 0, 0, 189, }; static const uint16_t ud_itab__180[] = { /* 0 */ 0, 0, 0, 190, }; static const uint16_t ud_itab__181[] = { /* 0 */ 0, 0, 0, 191, }; static const uint16_t ud_itab__182[] = { /* 0 */ 192, 0, 0, 193, }; static const uint16_t ud_itab__183[] = { /* 0 */ 194, 0, 0, 195, }; static const uint16_t ud_itab__184[] = { /* 0 */ 196, 0, 0, 197, }; static const uint16_t ud_itab__185[] = { /* 0 */ 0, 0, 0, 198, }; static const uint16_t ud_itab__186[] = { /* 0 */ 0, 0, 0, 199, }; static const uint16_t ud_itab__187[] = { /* 0 */ 0, 0, 0, 200, }; static const uint16_t ud_itab__188[] = { /* 0 */ 0, 0, 0, 201, }; static const uint16_t ud_itab__189[] = { /* 0 */ 0, 0, 0, 202, }; static const uint16_t ud_itab__190[] = { /* 0 */ 0, 0, 0, 203, }; static const uint16_t ud_itab__191[] = { /* 0 */ 0, 0, 0, 204, }; static const uint16_t ud_itab__192[] = { /* 0 */ 0, 0, 0, 205, }; static const uint16_t ud_itab__193[] = { /* 0 */ 0, 0, 0, 206, }; static const uint16_t ud_itab__194[] = { /* 0 */ 0, 0, 0, 207, }; static const uint16_t ud_itab__195[] = { /* 0 */ 0, 0, 0, 208, }; static const uint16_t ud_itab__196[] = { /* 0 */ 0, 0, 0, 209, }; static const uint16_t ud_itab__197[] = { /* 0 */ 0, 0, 0, 210, }; static const uint16_t ud_itab__198[] = { /* 0 */ 0, 0, 0, 211, }; static const uint16_t ud_itab__199[] = { /* 0 */ 0, 0, 0, 212, }; static const uint16_t ud_itab__200[] = { /* 0 */ 0, 0, 0, 213, }; static const uint16_t ud_itab__201[] = { /* 0 */ 0, 0, 0, 214, }; static const uint16_t ud_itab__202[] = { /* 0 */ 0, 0, 0, 215, }; static const uint16_t ud_itab__203[] = { /* 0 */ 0, 0, 0, 216, }; static const uint16_t ud_itab__204[] = { /* 0 */ 0, 0, 0, 217, }; static const uint16_t ud_itab__205[] = { /* 0 */ 0, 0, 0, 218, }; static const uint16_t ud_itab__206[] = { /* 0 */ 0, 0, 0, 219, }; static const uint16_t ud_itab__207[] = { /* 0 */ 0, 0, 0, 220, }; static const uint16_t ud_itab__208[] = { /* 0 */ 0, 0, 0, 221, }; static const uint16_t ud_itab__209[] = { /* 0 */ 0, 0, 0, 222, }; static const uint16_t ud_itab__210[] = { /* 0 */ 0, 0, 0, 223, }; static const uint16_t ud_itab__211[] = { /* 0 */ 0, 0, 0, 224, }; static const uint16_t ud_itab__214[] = { /* 0 */ 0, 225, 0, }; static const uint16_t ud_itab__213[] = { /* 0 */ 0, GROUP(214), }; static const uint16_t ud_itab__212[] = { /* 0 */ 0, 0, 0, GROUP(213), }; static const uint16_t ud_itab__217[] = { /* 0 */ 0, 226, 0, }; static const uint16_t ud_itab__216[] = { /* 0 */ 0, GROUP(217), }; static const uint16_t ud_itab__215[] = { /* 0 */ 0, 0, 0, GROUP(216), }; static const uint16_t ud_itab__218[] = { /* 0 */ 0, 0, 0, 227, }; static const uint16_t ud_itab__219[] = { /* 0 */ 0, 0, 0, 228, }; static const uint16_t ud_itab__220[] = { /* 0 */ 0, 0, 0, 229, }; static const uint16_t ud_itab__221[] = { /* 0 */ 0, 0, 0, 230, }; static const uint16_t ud_itab__222[] = { /* 0 */ 0, 0, 0, 231, }; static const uint16_t ud_itab__223[] = { /* 0 */ 232, 233, 0, 0, }; static const uint16_t ud_itab__224[] = { /* 0 */ 234, 235, 0, 0, }; static const uint16_t ud_itab__165[] = { /* 0 */ GROUP(166), GROUP(167), GROUP(168), GROUP(169), /* 4 */ GROUP(170), GROUP(171), GROUP(172), GROUP(173), /* 8 */ GROUP(174), GROUP(175), GROUP(176), GROUP(177), /* c */ 0, 0, 0, 0, /* 10 */ GROUP(178), 0, 0, 0, /* 14 */ GROUP(179), GROUP(180), 0, GROUP(181), /* 18 */ 0, 0, 0, 0, /* 1c */ GROUP(182), GROUP(183), GROUP(184), 0, /* 20 */ GROUP(185), GROUP(186), GROUP(187), GROUP(188), /* 24 */ GROUP(189), GROUP(190), 0, 0, /* 28 */ GROUP(191), GROUP(192), GROUP(193), GROUP(194), /* 2c */ 0, 0, 0, 0, /* 30 */ GROUP(195), GROUP(196), GROUP(197), GROUP(198), /* 34 */ GROUP(199), GROUP(200), 0, GROUP(201), /* 38 */ GROUP(202), GROUP(203), GROUP(204), GROUP(205), /* 3c */ GROUP(206), GROUP(207), GROUP(208), GROUP(209), /* 40 */ GROUP(210), GROUP(211), 0, 0, /* 44 */ 0, 0, 0, 0, /* 48 */ 0, 0, 0, 0, /* 4c */ 0, 0, 0, 0, /* 50 */ 0, 0, 0, 0, /* 54 */ 0, 0, 0, 0, /* 58 */ 0, 0, 0, 0, /* 5c */ 0, 0, 0, 0, /* 60 */ 0, 0, 0, 0, /* 64 */ 0, 0, 0, 0, /* 68 */ 0, 0, 0, 0, /* 6c */ 0, 0, 0, 0, /* 70 */ 0, 0, 0, 0, /* 74 */ 0, 0, 0, 0, /* 78 */ 0, 0, 0, 0, /* 7c */ 0, 0, 0, 0, /* 80 */ GROUP(212), GROUP(215), 0, 0, /* 84 */ 0, 0, 0, 0, /* 88 */ 0, 0, 0, 0, /* 8c */ 0, 0, 0, 0, /* 90 */ 0, 0, 0, 0, /* 94 */ 0, 0, 0, 0, /* 98 */ 0, 0, 0, 0, /* 9c */ 0, 0, 0, 0, /* a0 */ 0, 0, 0, 0, /* a4 */ 0, 0, 0, 0, /* a8 */ 0, 0, 0, 0, /* ac */ 0, 0, 0, 0, /* b0 */ 0, 0, 0, 0, /* b4 */ 0, 0, 0, 0, /* b8 */ 0, 0, 0, 0, /* bc */ 0, 0, 0, 0, /* c0 */ 0, 0, 0, 0, /* c4 */ 0, 0, 0, 0, /* c8 */ 0, 0, 0, 0, /* cc */ 0, 0, 0, 0, /* d0 */ 0, 0, 0, 0, /* d4 */ 0, 0, 0, 0, /* d8 */ 0, 0, 0, GROUP(218), /* dc */ GROUP(219), GROUP(220), GROUP(221), GROUP(222), /* e0 */ 0, 0, 0, 0, /* e4 */ 0, 0, 0, 0, /* e8 */ 0, 0, 0, 0, /* ec */ 0, 0, 0, 0, /* f0 */ GROUP(223), GROUP(224), 0, 0, /* f4 */ 0, 0, 0, 0, /* f8 */ 0, 0, 0, 0, /* fc */ 0, 0, 0, 0, }; static const uint16_t ud_itab__226[] = { /* 0 */ 0, 0, 0, 236, }; static const uint16_t ud_itab__227[] = { /* 0 */ 0, 0, 0, 237, }; static const uint16_t ud_itab__228[] = { /* 0 */ 0, 0, 0, 238, }; static const uint16_t ud_itab__229[] = { /* 0 */ 0, 0, 0, 239, }; static const uint16_t ud_itab__230[] = { /* 0 */ 0, 0, 0, 240, }; static const uint16_t ud_itab__231[] = { /* 0 */ 0, 0, 0, 241, }; static const uint16_t ud_itab__232[] = { /* 0 */ 0, 0, 0, 242, }; static const uint16_t ud_itab__233[] = { /* 0 */ 243, 0, 0, 244, }; static const uint16_t ud_itab__234[] = { /* 0 */ 0, 0, 0, 245, }; static const uint16_t ud_itab__235[] = { /* 0 */ 0, 0, 0, 246, }; static const uint16_t ud_itab__237[] = { /* 0 */ 247, 248, 249, }; static const uint16_t ud_itab__236[] = { /* 0 */ 0, 0, 0, GROUP(237), }; static const uint16_t ud_itab__238[] = { /* 0 */ 0, 0, 0, 250, }; static const uint16_t ud_itab__239[] = { /* 0 */ 0, 0, 0, 251, }; static const uint16_t ud_itab__240[] = { /* 0 */ 0, 0, 0, 252, }; static const uint16_t ud_itab__242[] = { /* 0 */ 253, 254, 255, }; static const uint16_t ud_itab__241[] = { /* 0 */ 0, 0, 0, GROUP(242), }; static const uint16_t ud_itab__243[] = { /* 0 */ 0, 0, 0, 256, }; static const uint16_t ud_itab__244[] = { /* 0 */ 0, 0, 0, 257, }; static const uint16_t ud_itab__245[] = { /* 0 */ 0, 0, 0, 258, }; static const uint16_t ud_itab__246[] = { /* 0 */ 0, 0, 0, 259, }; static const uint16_t ud_itab__247[] = { /* 0 */ 0, 0, 0, 260, }; static const uint16_t ud_itab__248[] = { /* 0 */ 0, 0, 0, 261, }; static const uint16_t ud_itab__249[] = { /* 0 */ 0, 0, 0, 262, }; static const uint16_t ud_itab__250[] = { /* 0 */ 0, 0, 0, 263, }; static const uint16_t ud_itab__251[] = { /* 0 */ 0, 0, 0, 264, }; static const uint16_t ud_itab__225[] = { /* 0 */ 0, 0, 0, 0, /* 4 */ 0, 0, 0, 0, /* 8 */ GROUP(226), GROUP(227), GROUP(228), GROUP(229), /* c */ GROUP(230), GROUP(231), GROUP(232), GROUP(233), /* 10 */ 0, 0, 0, 0, /* 14 */ GROUP(234), GROUP(235), GROUP(236), GROUP(238), /* 18 */ 0, 0, 0, 0, /* 1c */ 0, 0, 0, 0, /* 20 */ GROUP(239), GROUP(240), GROUP(241), 0, /* 24 */ 0, 0, 0, 0, /* 28 */ 0, 0, 0, 0, /* 2c */ 0, 0, 0, 0, /* 30 */ 0, 0, 0, 0, /* 34 */ 0, 0, 0, 0, /* 38 */ 0, 0, 0, 0, /* 3c */ 0, 0, 0, 0, /* 40 */ GROUP(243), GROUP(244), GROUP(245), 0, /* 44 */ GROUP(246), 0, 0, 0, /* 48 */ 0, 0, 0, 0, /* 4c */ 0, 0, 0, 0, /* 50 */ 0, 0, 0, 0, /* 54 */ 0, 0, 0, 0, /* 58 */ 0, 0, 0, 0, /* 5c */ 0, 0, 0, 0, /* 60 */ GROUP(247), GROUP(248), GROUP(249), GROUP(250), /* 64 */ 0, 0, 0, 0, /* 68 */ 0, 0, 0, 0, /* 6c */ 0, 0, 0, 0, /* 70 */ 0, 0, 0, 0, /* 74 */ 0, 0, 0, 0, /* 78 */ 0, 0, 0, 0, /* 7c */ 0, 0, 0, 0, /* 80 */ 0, 0, 0, 0, /* 84 */ 0, 0, 0, 0, /* 88 */ 0, 0, 0, 0, /* 8c */ 0, 0, 0, 0, /* 90 */ 0, 0, 0, 0, /* 94 */ 0, 0, 0, 0, /* 98 */ 0, 0, 0, 0, /* 9c */ 0, 0, 0, 0, /* a0 */ 0, 0, 0, 0, /* a4 */ 0, 0, 0, 0, /* a8 */ 0, 0, 0, 0, /* ac */ 0, 0, 0, 0, /* b0 */ 0, 0, 0, 0, /* b4 */ 0, 0, 0, 0, /* b8 */ 0, 0, 0, 0, /* bc */ 0, 0, 0, 0, /* c0 */ 0, 0, 0, 0, /* c4 */ 0, 0, 0, 0, /* c8 */ 0, 0, 0, 0, /* cc */ 0, 0, 0, 0, /* d0 */ 0, 0, 0, 0, /* d4 */ 0, 0, 0, 0, /* d8 */ 0, 0, 0, 0, /* dc */ 0, 0, 0, GROUP(251), /* e0 */ 0, 0, 0, 0, /* e4 */ 0, 0, 0, 0, /* e8 */ 0, 0, 0, 0, /* ec */ 0, 0, 0, 0, /* f0 */ 0, 0, 0, 0, /* f4 */ 0, 0, 0, 0, /* f8 */ 0, 0, 0, 0, /* fc */ 0, 0, 0, 0, }; static const uint16_t ud_itab__252[] = { /* 0 */ 265, 0, 0, 0, }; static const uint16_t ud_itab__253[] = { /* 0 */ 266, 0, 0, 0, }; static const uint16_t ud_itab__254[] = { /* 0 */ 267, 0, 0, 0, }; static const uint16_t ud_itab__255[] = { /* 0 */ 268, 0, 0, 0, }; static const uint16_t ud_itab__256[] = { /* 0 */ 269, 0, 0, 0, }; static const uint16_t ud_itab__257[] = { /* 0 */ 270, 0, 0, 0, }; static const uint16_t ud_itab__258[] = { /* 0 */ 271, 0, 0, 0, }; static const uint16_t ud_itab__259[] = { /* 0 */ 272, 0, 0, 0, }; static const uint16_t ud_itab__260[] = { /* 0 */ 273, 0, 0, 0, }; static const uint16_t ud_itab__261[] = { /* 0 */ 274, 0, 0, 0, }; static const uint16_t ud_itab__262[] = { /* 0 */ 275, 0, 0, 0, }; static const uint16_t ud_itab__263[] = { /* 0 */ 276, 0, 0, 0, }; static const uint16_t ud_itab__264[] = { /* 0 */ 277, 0, 0, 0, }; static const uint16_t ud_itab__265[] = { /* 0 */ 278, 0, 0, 0, }; static const uint16_t ud_itab__266[] = { /* 0 */ 279, 0, 0, 0, }; static const uint16_t ud_itab__267[] = { /* 0 */ 280, 0, 0, 0, }; static const uint16_t ud_itab__268[] = { /* 0 */ 281, 0, 0, 282, }; static const uint16_t ud_itab__269[] = { /* 0 */ 283, 284, 285, 286, }; static const uint16_t ud_itab__270[] = { /* 0 */ 287, 0, 288, 0, }; static const uint16_t ud_itab__271[] = { /* 0 */ 289, 0, 290, 0, }; static const uint16_t ud_itab__272[] = { /* 0 */ 291, 0, 0, 292, }; static const uint16_t ud_itab__273[] = { /* 0 */ 293, 0, 0, 294, }; static const uint16_t ud_itab__274[] = { /* 0 */ 295, 0, 0, 296, }; static const uint16_t ud_itab__275[] = { /* 0 */ 297, 0, 0, 298, }; static const uint16_t ud_itab__276[] = { /* 0 */ 299, 300, 301, 302, }; static const uint16_t ud_itab__277[] = { /* 0 */ 303, 304, 305, 306, }; static const uint16_t ud_itab__278[] = { /* 0 */ 307, 308, 309, 310, }; static const uint16_t ud_itab__279[] = { /* 0 */ 311, 0, 312, 313, }; static const uint16_t ud_itab__280[] = { /* 0 */ 314, 315, 316, 317, }; static const uint16_t ud_itab__281[] = { /* 0 */ 318, 319, 320, 321, }; static const uint16_t ud_itab__282[] = { /* 0 */ 322, 323, 324, 325, }; static const uint16_t ud_itab__283[] = { /* 0 */ 326, 327, 328, 329, }; static const uint16_t ud_itab__284[] = { /* 0 */ 330, 0, 0, 331, }; static const uint16_t ud_itab__285[] = { /* 0 */ 332, 0, 0, 333, }; static const uint16_t ud_itab__286[] = { /* 0 */ 334, 0, 0, 335, }; static const uint16_t ud_itab__287[] = { /* 0 */ 336, 0, 0, 337, }; static const uint16_t ud_itab__288[] = { /* 0 */ 338, 0, 0, 339, }; static const uint16_t ud_itab__289[] = { /* 0 */ 340, 0, 0, 341, }; static const uint16_t ud_itab__290[] = { /* 0 */ 342, 0, 0, 343, }; static const uint16_t ud_itab__291[] = { /* 0 */ 344, 0, 0, 345, }; static const uint16_t ud_itab__292[] = { /* 0 */ 346, 0, 0, 347, }; static const uint16_t ud_itab__293[] = { /* 0 */ 348, 0, 0, 349, }; static const uint16_t ud_itab__294[] = { /* 0 */ 350, 0, 0, 351, }; static const uint16_t ud_itab__295[] = { /* 0 */ 352, 0, 0, 353, }; static const uint16_t ud_itab__296[] = { /* 0 */ 0, 0, 0, 354, }; static const uint16_t ud_itab__297[] = { /* 0 */ 0, 0, 0, 355, }; static const uint16_t ud_itab__298[] = { /* 0 */ 356, 0, 0, 357, }; static const uint16_t ud_itab__299[] = { /* 0 */ 358, 0, 359, 360, }; static const uint16_t ud_itab__300[] = { /* 0 */ 361, 362, 363, 364, }; static const uint16_t ud_itab__302[] = { /* 0 */ 365, 0, 0, 366, }; static const uint16_t ud_itab__303[] = { /* 0 */ 367, 0, 0, 368, }; static const uint16_t ud_itab__304[] = { /* 0 */ 369, 0, 0, 370, }; static const uint16_t ud_itab__301[] = { /* 0 */ 0, 0, GROUP(302), 0, /* 4 */ GROUP(303), 0, GROUP(304), 0, }; static const uint16_t ud_itab__306[] = { /* 0 */ 371, 0, 0, 372, }; static const uint16_t ud_itab__307[] = { /* 0 */ 373, 0, 0, 374, }; static const uint16_t ud_itab__308[] = { /* 0 */ 375, 0, 0, 376, }; static const uint16_t ud_itab__305[] = { /* 0 */ 0, 0, GROUP(306), 0, /* 4 */ GROUP(307), 0, GROUP(308), 0, }; static const uint16_t ud_itab__310[] = { /* 0 */ 377, 0, 0, 378, }; static const uint16_t ud_itab__311[] = { /* 0 */ 0, 0, 0, 379, }; static const uint16_t ud_itab__312[] = { /* 0 */ 380, 0, 0, 381, }; static const uint16_t ud_itab__313[] = { /* 0 */ 0, 0, 0, 382, }; static const uint16_t ud_itab__309[] = { /* 0 */ 0, 0, GROUP(310), GROUP(311), /* 4 */ 0, 0, GROUP(312), GROUP(313), }; static const uint16_t ud_itab__314[] = { /* 0 */ 383, 0, 0, 384, }; static const uint16_t ud_itab__315[] = { /* 0 */ 385, 0, 0, 386, }; static const uint16_t ud_itab__316[] = { /* 0 */ 387, 0, 0, 388, }; static const uint16_t ud_itab__317[] = { /* 0 */ 389, 0, 0, 0, }; static const uint16_t ud_itab__319[] = { /* 0 */ 0, 390, 0, }; static const uint16_t ud_itab__318[] = { /* 0 */ GROUP(319), 0, 0, 0, }; static const uint16_t ud_itab__321[] = { /* 0 */ 0, 391, 0, }; static const uint16_t ud_itab__320[] = { /* 0 */ GROUP(321), 0, 0, 0, }; static const uint16_t ud_itab__322[] = { /* 0 */ 0, 392, 0, 393, }; static const uint16_t ud_itab__323[] = { /* 0 */ 0, 394, 0, 395, }; static const uint16_t ud_itab__324[] = { /* 0 */ 396, 0, 397, 398, }; static const uint16_t ud_itab__325[] = { /* 0 */ 399, 0, 400, 401, }; static const uint16_t ud_itab__326[] = { /* 0 */ 402, 0, 0, 0, }; static const uint16_t ud_itab__327[] = { /* 0 */ 403, 0, 0, 0, }; static const uint16_t ud_itab__328[] = { /* 0 */ 404, 0, 0, 0, }; static const uint16_t ud_itab__329[] = { /* 0 */ 405, 0, 0, 0, }; static const uint16_t ud_itab__330[] = { /* 0 */ 406, 0, 0, 0, }; static const uint16_t ud_itab__331[] = { /* 0 */ 407, 0, 0, 0, }; static const uint16_t ud_itab__332[] = { /* 0 */ 408, 0, 0, 0, }; static const uint16_t ud_itab__333[] = { /* 0 */ 409, 0, 0, 0, }; static const uint16_t ud_itab__334[] = { /* 0 */ 410, 0, 0, 0, }; static const uint16_t ud_itab__335[] = { /* 0 */ 411, 0, 0, 0, }; static const uint16_t ud_itab__336[] = { /* 0 */ 412, 0, 0, 0, }; static const uint16_t ud_itab__337[] = { /* 0 */ 413, 0, 0, 0, }; static const uint16_t ud_itab__338[] = { /* 0 */ 414, 0, 0, 0, }; static const uint16_t ud_itab__339[] = { /* 0 */ 415, 0, 0, 0, }; static const uint16_t ud_itab__340[] = { /* 0 */ 416, 0, 0, 0, }; static const uint16_t ud_itab__341[] = { /* 0 */ 417, 0, 0, 0, }; static const uint16_t ud_itab__342[] = { /* 0 */ 418, 0, 0, 0, }; static const uint16_t ud_itab__343[] = { /* 0 */ 419, 0, 0, 0, }; static const uint16_t ud_itab__344[] = { /* 0 */ 420, 0, 0, 0, }; static const uint16_t ud_itab__345[] = { /* 0 */ 421, 0, 0, 0, }; static const uint16_t ud_itab__346[] = { /* 0 */ 422, 0, 0, 0, }; static const uint16_t ud_itab__347[] = { /* 0 */ 423, 0, 0, 0, }; static const uint16_t ud_itab__348[] = { /* 0 */ 424, 0, 0, 0, }; static const uint16_t ud_itab__349[] = { /* 0 */ 425, 0, 0, 0, }; static const uint16_t ud_itab__350[] = { /* 0 */ 426, 0, 0, 0, }; static const uint16_t ud_itab__351[] = { /* 0 */ 427, 0, 0, 0, }; static const uint16_t ud_itab__352[] = { /* 0 */ 428, 0, 0, 0, }; static const uint16_t ud_itab__353[] = { /* 0 */ 429, 0, 0, 0, }; static const uint16_t ud_itab__354[] = { /* 0 */ 430, 0, 0, 0, }; static const uint16_t ud_itab__355[] = { /* 0 */ 431, 0, 0, 0, }; static const uint16_t ud_itab__356[] = { /* 0 */ 432, 0, 0, 0, }; static const uint16_t ud_itab__357[] = { /* 0 */ 433, 0, 0, 0, }; static const uint16_t ud_itab__358[] = { /* 0 */ 434, 0, 0, 0, }; static const uint16_t ud_itab__359[] = { /* 0 */ 435, 0, 0, 0, }; static const uint16_t ud_itab__360[] = { /* 0 */ 436, 0, 0, 0, }; static const uint16_t ud_itab__361[] = { /* 0 */ 437, 0, 0, 0, }; static const uint16_t ud_itab__362[] = { /* 0 */ 438, 0, 0, 0, }; static const uint16_t ud_itab__363[] = { /* 0 */ 439, 0, 0, 0, }; static const uint16_t ud_itab__368[] = { /* 0 */ 0, 440, }; static const uint16_t ud_itab__367[] = { /* 0 */ GROUP(368), 0, 0, 0, }; static const uint16_t ud_itab__366[] = { /* 0 */ GROUP(367), 0, 0, 0, /* 4 */ 0, 0, 0, 0, }; static const uint16_t ud_itab__371[] = { /* 0 */ 0, 441, }; static const uint16_t ud_itab__370[] = { /* 0 */ GROUP(371), 0, 0, 0, }; static const uint16_t ud_itab__369[] = { /* 0 */ GROUP(370), 0, 0, 0, /* 4 */ 0, 0, 0, 0, }; static const uint16_t ud_itab__374[] = { /* 0 */ 0, 442, }; static const uint16_t ud_itab__373[] = { /* 0 */ GROUP(374), 0, 0, 0, }; static const uint16_t ud_itab__372[] = { /* 0 */ GROUP(373), 0, 0, 0, /* 4 */ 0, 0, 0, 0, }; static const uint16_t ud_itab__365[] = { /* 0 */ GROUP(366), GROUP(369), GROUP(372), 0, /* 4 */ 0, 0, 0, 0, }; static const uint16_t ud_itab__364[] = { /* 0 */ 0, GROUP(365), }; static const uint16_t ud_itab__379[] = { /* 0 */ 0, 443, }; static const uint16_t ud_itab__378[] = { /* 0 */ GROUP(379), 0, 0, 0, }; static const uint16_t ud_itab__377[] = { /* 0 */ GROUP(378), 0, 0, 0, /* 4 */ 0, 0, 0, 0, }; static const uint16_t ud_itab__382[] = { /* 0 */ 0, 444, }; static const uint16_t ud_itab__381[] = { /* 0 */ GROUP(382), 0, 0, 0, }; static const uint16_t ud_itab__380[] = { /* 0 */ GROUP(381), 0, 0, 0, /* 4 */ 0, 0, 0, 0, }; static const uint16_t ud_itab__385[] = { /* 0 */ 0, 445, }; static const uint16_t ud_itab__384[] = { /* 0 */ GROUP(385), 0, 0, 0, }; static const uint16_t ud_itab__383[] = { /* 0 */ GROUP(384), 0, 0, 0, /* 4 */ 0, 0, 0, 0, }; static const uint16_t ud_itab__388[] = { /* 0 */ 0, 446, }; static const uint16_t ud_itab__387[] = { /* 0 */ GROUP(388), 0, 0, 0, }; static const uint16_t ud_itab__386[] = { /* 0 */ GROUP(387), 0, 0, 0, /* 4 */ 0, 0, 0, 0, }; static const uint16_t ud_itab__391[] = { /* 0 */ 0, 447, }; static const uint16_t ud_itab__390[] = { /* 0 */ GROUP(391), 0, 0, 0, }; static const uint16_t ud_itab__389[] = { /* 0 */ GROUP(390), 0, 0, 0, /* 4 */ 0, 0, 0, 0, }; static const uint16_t ud_itab__394[] = { /* 0 */ 0, 448, }; static const uint16_t ud_itab__393[] = { /* 0 */ GROUP(394), 0, 0, 0, }; static const uint16_t ud_itab__392[] = { /* 0 */ GROUP(393), 0, 0, 0, /* 4 */ 0, 0, 0, 0, }; static const uint16_t ud_itab__376[] = { /* 0 */ GROUP(377), GROUP(380), GROUP(383), GROUP(386), /* 4 */ GROUP(389), GROUP(392), 0, 0, }; static const uint16_t ud_itab__375[] = { /* 0 */ 0, GROUP(376), }; static const uint16_t ud_itab__395[] = { /* 0 */ 449, 0, 0, 0, }; static const uint16_t ud_itab__396[] = { /* 0 */ 450, 0, 0, 0, }; static const uint16_t ud_itab__397[] = { /* 0 */ 451, 0, 0, 0, }; static const uint16_t ud_itab__398[] = { /* 0 */ 452, 0, 0, 0, }; static const uint16_t ud_itab__399[] = { /* 0 */ 453, 0, 0, 0, }; static const uint16_t ud_itab__400[] = { /* 0 */ 454, 0, 0, 0, }; static const uint16_t ud_itab__404[] = { /* 0 */ 455, 0, }; static const uint16_t ud_itab__403[] = { /* 0 */ GROUP(404), 0, 0, 0, }; static const uint16_t ud_itab__406[] = { /* 0 */ 456, 0, }; static const uint16_t ud_itab__405[] = { /* 0 */ GROUP(406), 0, 0, 0, }; static const uint16_t ud_itab__408[] = { /* 0 */ 457, 0, }; static const uint16_t ud_itab__407[] = { /* 0 */ GROUP(408), 0, 0, 0, }; static const uint16_t ud_itab__410[] = { /* 0 */ 458, 0, }; static const uint16_t ud_itab__409[] = { /* 0 */ GROUP(410), 0, 0, 0, }; static const uint16_t ud_itab__412[] = { /* 0 */ 459, 0, }; static const uint16_t ud_itab__411[] = { /* 0 */ GROUP(412), 0, 0, 0, }; static const uint16_t ud_itab__414[] = { /* 0 */ 460, 0, }; static const uint16_t ud_itab__413[] = { /* 0 */ GROUP(414), 0, 0, 0, }; static const uint16_t ud_itab__416[] = { /* 0 */ 461, 0, }; static const uint16_t ud_itab__415[] = { /* 0 */ GROUP(416), 0, 0, 0, }; static const uint16_t ud_itab__402[] = { /* 0 */ GROUP(403), GROUP(405), GROUP(407), GROUP(409), /* 4 */ GROUP(411), GROUP(413), 0, GROUP(415), }; static const uint16_t ud_itab__420[] = { /* 0 */ 0, 462, }; static const uint16_t ud_itab__419[] = { /* 0 */ GROUP(420), 0, 0, 0, }; static const uint16_t ud_itab__422[] = { /* 0 */ 0, 463, }; static const uint16_t ud_itab__421[] = { /* 0 */ GROUP(422), 0, 0, 0, }; static const uint16_t ud_itab__424[] = { /* 0 */ 0, 464, }; static const uint16_t ud_itab__423[] = { /* 0 */ GROUP(424), 0, 0, 0, }; static const uint16_t ud_itab__426[] = { /* 0 */ 0, 465, }; static const uint16_t ud_itab__425[] = { /* 0 */ GROUP(426), 0, 0, 0, }; static const uint16_t ud_itab__428[] = { /* 0 */ 0, 466, }; static const uint16_t ud_itab__427[] = { /* 0 */ GROUP(428), 0, 0, 0, }; static const uint16_t ud_itab__430[] = { /* 0 */ 0, 467, }; static const uint16_t ud_itab__429[] = { /* 0 */ GROUP(430), 0, 0, 0, }; static const uint16_t ud_itab__432[] = { /* 0 */ 0, 468, }; static const uint16_t ud_itab__431[] = { /* 0 */ GROUP(432), 0, 0, 0, }; static const uint16_t ud_itab__434[] = { /* 0 */ 0, 469, }; static const uint16_t ud_itab__433[] = { /* 0 */ GROUP(434), 0, 0, 0, }; static const uint16_t ud_itab__418[] = { /* 0 */ GROUP(419), GROUP(421), GROUP(423), GROUP(425), /* 4 */ GROUP(427), GROUP(429), GROUP(431), GROUP(433), }; static const uint16_t ud_itab__437[] = { /* 0 */ 0, 470, }; static const uint16_t ud_itab__436[] = { /* 0 */ GROUP(437), 0, 0, 0, }; static const uint16_t ud_itab__439[] = { /* 0 */ 0, 471, }; static const uint16_t ud_itab__438[] = { /* 0 */ GROUP(439), 0, 0, 0, }; static const uint16_t ud_itab__441[] = { /* 0 */ 0, 472, }; static const uint16_t ud_itab__440[] = { /* 0 */ GROUP(441), 0, 0, 0, }; static const uint16_t ud_itab__443[] = { /* 0 */ 0, 473, }; static const uint16_t ud_itab__442[] = { /* 0 */ GROUP(443), 0, 0, 0, }; static const uint16_t ud_itab__445[] = { /* 0 */ 0, 474, }; static const uint16_t ud_itab__444[] = { /* 0 */ GROUP(445), 0, 0, 0, }; static const uint16_t ud_itab__447[] = { /* 0 */ 0, 475, }; static const uint16_t ud_itab__446[] = { /* 0 */ GROUP(447), 0, 0, 0, }; static const uint16_t ud_itab__449[] = { /* 0 */ 0, 476, }; static const uint16_t ud_itab__448[] = { /* 0 */ GROUP(449), 0, 0, 0, }; static const uint16_t ud_itab__451[] = { /* 0 */ 0, 477, }; static const uint16_t ud_itab__450[] = { /* 0 */ GROUP(451), 0, 0, 0, }; static const uint16_t ud_itab__435[] = { /* 0 */ GROUP(436), GROUP(438), GROUP(440), GROUP(442), /* 4 */ GROUP(444), GROUP(446), GROUP(448), GROUP(450), }; static const uint16_t ud_itab__454[] = { /* 0 */ 0, 478, }; static const uint16_t ud_itab__453[] = { /* 0 */ GROUP(454), 0, 0, 0, }; static const uint16_t ud_itab__456[] = { /* 0 */ 0, 479, }; static const uint16_t ud_itab__455[] = { /* 0 */ GROUP(456), 0, 0, 0, }; static const uint16_t ud_itab__458[] = { /* 0 */ 0, 480, }; static const uint16_t ud_itab__457[] = { /* 0 */ GROUP(458), 0, 0, 0, }; static const uint16_t ud_itab__460[] = { /* 0 */ 0, 481, }; static const uint16_t ud_itab__459[] = { /* 0 */ GROUP(460), 0, 0, 0, }; static const uint16_t ud_itab__462[] = { /* 0 */ 0, 482, }; static const uint16_t ud_itab__461[] = { /* 0 */ GROUP(462), 0, 0, 0, }; static const uint16_t ud_itab__464[] = { /* 0 */ 0, 483, }; static const uint16_t ud_itab__463[] = { /* 0 */ GROUP(464), 0, 0, 0, }; static const uint16_t ud_itab__466[] = { /* 0 */ 0, 484, }; static const uint16_t ud_itab__465[] = { /* 0 */ GROUP(466), 0, 0, 0, }; static const uint16_t ud_itab__468[] = { /* 0 */ 0, 485, }; static const uint16_t ud_itab__467[] = { /* 0 */ GROUP(468), 0, 0, 0, }; static const uint16_t ud_itab__452[] = { /* 0 */ GROUP(453), GROUP(455), GROUP(457), GROUP(459), /* 4 */ GROUP(461), GROUP(463), GROUP(465), GROUP(467), }; static const uint16_t ud_itab__417[] = { /* 0 */ 0, 0, 0, 0, /* 4 */ 0, GROUP(418), GROUP(435), GROUP(452), }; static const uint16_t ud_itab__401[] = { /* 0 */ GROUP(402), GROUP(417), }; static const uint16_t ud_itab__469[] = { /* 0 */ 486, 0, 0, 0, }; static const uint16_t ud_itab__470[] = { /* 0 */ 487, 0, 0, 0, }; static const uint16_t ud_itab__471[] = { /* 0 */ 488, 0, 0, 0, }; static const uint16_t ud_itab__472[] = { /* 0 */ 489, 0, 0, 0, }; static const uint16_t ud_itab__473[] = { /* 0 */ 490, 0, 0, 0, }; static const uint16_t ud_itab__474[] = { /* 0 */ 491, 0, 0, 0, }; static const uint16_t ud_itab__475[] = { /* 0 */ 492, 0, 0, 0, }; static const uint16_t ud_itab__476[] = { /* 0 */ 493, 0, 0, 0, }; static const uint16_t ud_itab__477[] = { /* 0 */ 494, 0, 0, 0, }; static const uint16_t ud_itab__478[] = { /* 0 */ 0, 0, 495, 0, }; static const uint16_t ud_itab__480[] = { /* 0 */ 496, 0, 0, 0, }; static const uint16_t ud_itab__481[] = { /* 0 */ 497, 0, 0, 0, }; static const uint16_t ud_itab__482[] = { /* 0 */ 498, 0, 0, 0, }; static const uint16_t ud_itab__483[] = { /* 0 */ 499, 0, 0, 0, }; static const uint16_t ud_itab__479[] = { /* 0 */ 0, 0, 0, 0, /* 4 */ GROUP(480), GROUP(481), GROUP(482), GROUP(483), }; static const uint16_t ud_itab__484[] = { /* 0 */ 500, 0, 0, 0, }; static const uint16_t ud_itab__485[] = { /* 0 */ 501, 0, 0, 0, }; static const uint16_t ud_itab__486[] = { /* 0 */ 502, 0, 0, 0, }; static const uint16_t ud_itab__487[] = { /* 0 */ 503, 0, 0, 0, }; static const uint16_t ud_itab__488[] = { /* 0 */ 504, 0, 0, 0, }; static const uint16_t ud_itab__489[] = { /* 0 */ 505, 0, 0, 0, }; static const uint16_t ud_itab__490[] = { /* 0 */ 506, 0, 0, 0, }; static const uint16_t ud_itab__491[] = { /* 0 */ 507, 508, 509, 510, }; static const uint16_t ud_itab__492[] = { /* 0 */ 511, 0, 0, 0, }; static const uint16_t ud_itab__493[] = { /* 0 */ 512, 0, 0, 513, }; static const uint16_t ud_itab__494[] = { /* 0 */ 514, 0, 0, 515, }; static const uint16_t ud_itab__495[] = { /* 0 */ 516, 0, 0, 517, }; static const uint16_t ud_itab__498[] = { /* 0 */ 518, 519, 520, }; static const uint16_t ud_itab__497[] = { /* 0 */ GROUP(498), 0, 0, 0, }; static const uint16_t ud_itab__500[] = { /* 0 */ 0, 521, 0, }; static const uint16_t ud_itab__501[] = { /* 0 */ 0, 522, 0, }; static const uint16_t ud_itab__502[] = { /* 0 */ 0, 523, 0, }; static const uint16_t ud_itab__499[] = { /* 0 */ GROUP(500), 0, GROUP(501), GROUP(502), }; static const uint16_t ud_itab__504[] = { /* 0 */ 0, 524, 0, }; static const uint16_t ud_itab__503[] = { /* 0 */ GROUP(504), 0, 0, 0, }; static const uint16_t ud_itab__496[] = { /* 0 */ 0, GROUP(497), 0, 0, /* 4 */ 0, 0, GROUP(499), GROUP(503), }; static const uint16_t ud_itab__505[] = { /* 0 */ 525, 0, 0, 0, }; static const uint16_t ud_itab__506[] = { /* 0 */ 526, 0, 0, 0, }; static const uint16_t ud_itab__507[] = { /* 0 */ 527, 0, 0, 0, }; static const uint16_t ud_itab__508[] = { /* 0 */ 528, 0, 0, 0, }; static const uint16_t ud_itab__509[] = { /* 0 */ 529, 0, 0, 0, }; static const uint16_t ud_itab__510[] = { /* 0 */ 530, 0, 0, 0, }; static const uint16_t ud_itab__511[] = { /* 0 */ 531, 0, 0, 0, }; static const uint16_t ud_itab__512[] = { /* 0 */ 532, 0, 0, 0, }; static const uint16_t ud_itab__513[] = { /* 0 */ 0, 533, 0, 534, }; static const uint16_t ud_itab__514[] = { /* 0 */ 535, 0, 0, 536, }; static const uint16_t ud_itab__515[] = { /* 0 */ 537, 0, 0, 538, }; static const uint16_t ud_itab__516[] = { /* 0 */ 539, 0, 0, 540, }; static const uint16_t ud_itab__517[] = { /* 0 */ 541, 0, 0, 542, }; static const uint16_t ud_itab__518[] = { /* 0 */ 543, 0, 0, 544, }; static const uint16_t ud_itab__519[] = { /* 0 */ 0, 545, 546, 547, }; static const uint16_t ud_itab__520[] = { /* 0 */ 548, 0, 0, 549, }; static const uint16_t ud_itab__521[] = { /* 0 */ 550, 0, 0, 551, }; static const uint16_t ud_itab__522[] = { /* 0 */ 552, 0, 0, 553, }; static const uint16_t ud_itab__523[] = { /* 0 */ 554, 0, 0, 555, }; static const uint16_t ud_itab__524[] = { /* 0 */ 556, 0, 0, 557, }; static const uint16_t ud_itab__525[] = { /* 0 */ 558, 0, 0, 559, }; static const uint16_t ud_itab__526[] = { /* 0 */ 560, 0, 0, 561, }; static const uint16_t ud_itab__527[] = { /* 0 */ 562, 0, 0, 563, }; static const uint16_t ud_itab__528[] = { /* 0 */ 564, 0, 0, 565, }; static const uint16_t ud_itab__529[] = { /* 0 */ 566, 0, 0, 567, }; static const uint16_t ud_itab__530[] = { /* 0 */ 568, 0, 0, 569, }; static const uint16_t ud_itab__531[] = { /* 0 */ 570, 0, 0, 571, }; static const uint16_t ud_itab__532[] = { /* 0 */ 572, 0, 0, 573, }; static const uint16_t ud_itab__533[] = { /* 0 */ 574, 0, 0, 575, }; static const uint16_t ud_itab__534[] = { /* 0 */ 576, 0, 0, 577, }; static const uint16_t ud_itab__535[] = { /* 0 */ 0, 578, 579, 580, }; static const uint16_t ud_itab__536[] = { /* 0 */ 581, 0, 0, 582, }; static const uint16_t ud_itab__537[] = { /* 0 */ 583, 0, 0, 584, }; static const uint16_t ud_itab__538[] = { /* 0 */ 585, 0, 0, 586, }; static const uint16_t ud_itab__539[] = { /* 0 */ 587, 0, 0, 588, }; static const uint16_t ud_itab__540[] = { /* 0 */ 589, 0, 0, 590, }; static const uint16_t ud_itab__541[] = { /* 0 */ 591, 0, 0, 592, }; static const uint16_t ud_itab__542[] = { /* 0 */ 593, 0, 0, 594, }; static const uint16_t ud_itab__543[] = { /* 0 */ 595, 0, 0, 596, }; static const uint16_t ud_itab__544[] = { /* 0 */ 597, 0, 0, 598, }; static const uint16_t ud_itab__545[] = { /* 0 */ 0, 599, 0, 0, }; static const uint16_t ud_itab__546[] = { /* 0 */ 600, 0, 0, 601, }; static const uint16_t ud_itab__547[] = { /* 0 */ 602, 0, 0, 603, }; static const uint16_t ud_itab__548[] = { /* 0 */ 604, 0, 0, 605, }; static const uint16_t ud_itab__549[] = { /* 0 */ 606, 0, 0, 607, }; static const uint16_t ud_itab__550[] = { /* 0 */ 608, 0, 0, 609, }; static const uint16_t ud_itab__551[] = { /* 0 */ 610, 0, 0, 611, }; static const uint16_t ud_itab__554[] = { /* 0 */ 0, 612, }; static const uint16_t ud_itab__555[] = { /* 0 */ 0, 613, }; static const uint16_t ud_itab__553[] = { /* 0 */ GROUP(554), 0, 0, GROUP(555), }; static const uint16_t ud_itab__552[] = { /* 0 */ 0, GROUP(553), }; static const uint16_t ud_itab__556[] = { /* 0 */ 614, 0, 0, 615, }; static const uint16_t ud_itab__557[] = { /* 0 */ 616, 0, 0, 617, }; static const uint16_t ud_itab__558[] = { /* 0 */ 618, 0, 0, 619, }; static const uint16_t ud_itab__559[] = { /* 0 */ 620, 0, 0, 621, }; static const uint16_t ud_itab__560[] = { /* 0 */ 622, 0, 0, 623, }; static const uint16_t ud_itab__561[] = { /* 0 */ 624, 0, 0, 625, }; static const uint16_t ud_itab__562[] = { /* 0 */ 626, 0, 0, 627, }; static const uint16_t ud_itab__4[] = { /* 0 */ GROUP(5), GROUP(12), GROUP(87), GROUP(88), /* 4 */ 0, GROUP(89), GROUP(90), GROUP(91), /* 8 */ GROUP(92), GROUP(93), 0, GROUP(94), /* c */ 0, GROUP(95), GROUP(104), GROUP(105), /* 10 */ GROUP(106), GROUP(107), GROUP(108), GROUP(118), /* 14 */ GROUP(119), GROUP(120), GROUP(121), GROUP(129), /* 18 */ GROUP(130), GROUP(135), GROUP(136), GROUP(137), /* 1c */ GROUP(138), GROUP(139), GROUP(140), GROUP(141), /* 20 */ GROUP(142), GROUP(143), GROUP(144), GROUP(145), /* 24 */ 0, 0, 0, 0, /* 28 */ GROUP(146), GROUP(147), GROUP(148), GROUP(149), /* 2c */ GROUP(150), GROUP(151), GROUP(152), GROUP(153), /* 30 */ GROUP(154), GROUP(155), GROUP(156), GROUP(157), /* 34 */ GROUP(158), GROUP(161), 0, GROUP(164), /* 38 */ GROUP(165), 0, GROUP(225), 0, /* 3c */ 0, 0, 0, 0, /* 40 */ GROUP(252), GROUP(253), GROUP(254), GROUP(255), /* 44 */ GROUP(256), GROUP(257), GROUP(258), GROUP(259), /* 48 */ GROUP(260), GROUP(261), GROUP(262), GROUP(263), /* 4c */ GROUP(264), GROUP(265), GROUP(266), GROUP(267), /* 50 */ GROUP(268), GROUP(269), GROUP(270), GROUP(271), /* 54 */ GROUP(272), GROUP(273), GROUP(274), GROUP(275), /* 58 */ GROUP(276), GROUP(277), GROUP(278), GROUP(279), /* 5c */ GROUP(280), GROUP(281), GROUP(282), GROUP(283), /* 60 */ GROUP(284), GROUP(285), GROUP(286), GROUP(287), /* 64 */ GROUP(288), GROUP(289), GROUP(290), GROUP(291), /* 68 */ GROUP(292), GROUP(293), GROUP(294), GROUP(295), /* 6c */ GROUP(296), GROUP(297), GROUP(298), GROUP(299), /* 70 */ GROUP(300), GROUP(301), GROUP(305), GROUP(309), /* 74 */ GROUP(314), GROUP(315), GROUP(316), GROUP(317), /* 78 */ GROUP(318), GROUP(320), 0, 0, /* 7c */ GROUP(322), GROUP(323), GROUP(324), GROUP(325), /* 80 */ GROUP(326), GROUP(327), GROUP(328), GROUP(329), /* 84 */ GROUP(330), GROUP(331), GROUP(332), GROUP(333), /* 88 */ GROUP(334), GROUP(335), GROUP(336), GROUP(337), /* 8c */ GROUP(338), GROUP(339), GROUP(340), GROUP(341), /* 90 */ GROUP(342), GROUP(343), GROUP(344), GROUP(345), /* 94 */ GROUP(346), GROUP(347), GROUP(348), GROUP(349), /* 98 */ GROUP(350), GROUP(351), GROUP(352), GROUP(353), /* 9c */ GROUP(354), GROUP(355), GROUP(356), GROUP(357), /* a0 */ GROUP(358), GROUP(359), GROUP(360), GROUP(361), /* a4 */ GROUP(362), GROUP(363), GROUP(364), GROUP(375), /* a8 */ GROUP(395), GROUP(396), GROUP(397), GROUP(398), /* ac */ GROUP(399), GROUP(400), GROUP(401), GROUP(469), /* b0 */ GROUP(470), GROUP(471), GROUP(472), GROUP(473), /* b4 */ GROUP(474), GROUP(475), GROUP(476), GROUP(477), /* b8 */ GROUP(478), 0, GROUP(479), GROUP(484), /* bc */ GROUP(485), GROUP(486), GROUP(487), GROUP(488), /* c0 */ GROUP(489), GROUP(490), GROUP(491), GROUP(492), /* c4 */ GROUP(493), GROUP(494), GROUP(495), GROUP(496), /* c8 */ GROUP(505), GROUP(506), GROUP(507), GROUP(508), /* cc */ GROUP(509), GROUP(510), GROUP(511), GROUP(512), /* d0 */ GROUP(513), GROUP(514), GROUP(515), GROUP(516), /* d4 */ GROUP(517), GROUP(518), GROUP(519), GROUP(520), /* d8 */ GROUP(521), GROUP(522), GROUP(523), GROUP(524), /* dc */ GROUP(525), GROUP(526), GROUP(527), GROUP(528), /* e0 */ GROUP(529), GROUP(530), GROUP(531), GROUP(532), /* e4 */ GROUP(533), GROUP(534), GROUP(535), GROUP(536), /* e8 */ GROUP(537), GROUP(538), GROUP(539), GROUP(540), /* ec */ GROUP(541), GROUP(542), GROUP(543), GROUP(544), /* f0 */ GROUP(545), GROUP(546), GROUP(547), GROUP(548), /* f4 */ GROUP(549), GROUP(550), GROUP(551), GROUP(552), /* f8 */ GROUP(556), GROUP(557), GROUP(558), GROUP(559), /* fc */ GROUP(560), GROUP(561), GROUP(562), 0, }; static const uint16_t ud_itab__563[] = { /* 0 */ 634, 0, }; static const uint16_t ud_itab__564[] = { /* 0 */ 635, 0, }; static const uint16_t ud_itab__565[] = { /* 0 */ 642, 0, }; static const uint16_t ud_itab__566[] = { /* 0 */ 643, 0, }; static const uint16_t ud_itab__567[] = { /* 0 */ 650, 0, }; static const uint16_t ud_itab__568[] = { /* 0 */ 657, 0, }; static const uint16_t ud_itab__569[] = { /* 0 */ 664, 0, }; static const uint16_t ud_itab__570[] = { /* 0 */ 671, 0, }; static const uint16_t ud_itab__572[] = { /* 0 */ 704, 0, }; static const uint16_t ud_itab__573[] = { /* 0 */ 705, 0, }; static const uint16_t ud_itab__571[] = { /* 0 */ GROUP(572), GROUP(573), 0, }; static const uint16_t ud_itab__575[] = { /* 0 */ 706, 0, }; static const uint16_t ud_itab__576[] = { /* 0 */ 707, 0, }; static const uint16_t ud_itab__574[] = { /* 0 */ GROUP(575), GROUP(576), 0, }; static const uint16_t ud_itab__577[] = { /* 0 */ 708, 0, }; static const uint16_t ud_itab__578[] = { /* 0 */ 709, 710, }; static const uint16_t ud_itab__579[] = { /* 0 */ 716, 717, 0, }; static const uint16_t ud_itab__580[] = { /* 0 */ 719, 720, 0, }; static const uint16_t ud_itab__581[] = { /* 0 */ 737, 738, 739, 740, /* 4 */ 741, 742, 743, 744, }; static const uint16_t ud_itab__582[] = { /* 0 */ 745, 746, 747, 748, /* 4 */ 749, 750, 751, 752, }; static const uint16_t ud_itab__584[] = { /* 0 */ 753, 0, }; static const uint16_t ud_itab__585[] = { /* 0 */ 754, 0, }; static const uint16_t ud_itab__586[] = { /* 0 */ 755, 0, }; static const uint16_t ud_itab__587[] = { /* 0 */ 756, 0, }; static const uint16_t ud_itab__588[] = { /* 0 */ 757, 0, }; static const uint16_t ud_itab__589[] = { /* 0 */ 758, 0, }; static const uint16_t ud_itab__590[] = { /* 0 */ 759, 0, }; static const uint16_t ud_itab__591[] = { /* 0 */ 760, 0, }; static const uint16_t ud_itab__583[] = { /* 0 */ GROUP(584), GROUP(585), GROUP(586), GROUP(587), /* 4 */ GROUP(588), GROUP(589), GROUP(590), GROUP(591), }; static const uint16_t ud_itab__592[] = { /* 0 */ 761, 762, 763, 764, /* 4 */ 765, 766, 767, 768, }; static const uint16_t ud_itab__593[] = { /* 0 */ 780, 0, 0, 0, /* 4 */ 0, 0, 0, 0, }; static const uint16_t ud_itab__594[] = { /* 0 */ 789, 790, 791, }; static const uint16_t ud_itab__595[] = { /* 0 */ 792, 793, 794, }; static const uint16_t ud_itab__596[] = { /* 0 */ 795, 0, }; static const uint16_t ud_itab__598[] = { /* 0 */ 797, 798, }; static const uint16_t ud_itab__599[] = { /* 0 */ 799, 800, }; static const uint16_t ud_itab__600[] = { /* 0 */ 0, 801, }; static const uint16_t ud_itab__597[] = { /* 0 */ GROUP(598), GROUP(599), GROUP(600), }; static const uint16_t ud_itab__602[] = { /* 0 */ 802, 0, }; static const uint16_t ud_itab__603[] = { /* 0 */ 803, 804, }; static const uint16_t ud_itab__604[] = { /* 0 */ 0, 805, }; static const uint16_t ud_itab__601[] = { /* 0 */ GROUP(602), GROUP(603), GROUP(604), }; static const uint16_t ud_itab__605[] = { /* 0 */ 813, 814, 815, }; static const uint16_t ud_itab__606[] = { /* 0 */ 817, 818, 819, }; static const uint16_t ud_itab__607[] = { /* 0 */ 823, 824, 825, }; static const uint16_t ud_itab__608[] = { /* 0 */ 827, 828, 829, }; static const uint16_t ud_itab__609[] = { /* 0 */ 831, 832, 833, }; static const uint16_t ud_itab__610[] = { /* 0 */ 850, 851, 852, 853, /* 4 */ 854, 855, 856, 857, }; static const uint16_t ud_itab__611[] = { /* 0 */ 858, 859, 860, 861, /* 4 */ 862, 863, 864, 865, }; static const uint16_t ud_itab__612[] = { /* 0 */ 868, 0, }; static const uint16_t ud_itab__613[] = { /* 0 */ 869, 0, }; static const uint16_t ud_itab__614[] = { /* 0 */ 870, 0, 0, 0, /* 4 */ 0, 0, 0, 0, }; static const uint16_t ud_itab__615[] = { /* 0 */ 871, 0, 0, 0, /* 4 */ 0, 0, 0, 0, }; static const uint16_t ud_itab__616[] = { /* 0 */ 878, 0, }; static const uint16_t ud_itab__617[] = { /* 0 */ 879, 880, 881, }; static const uint16_t ud_itab__618[] = { /* 0 */ 882, 883, 884, 885, /* 4 */ 886, 887, 888, 889, }; static const uint16_t ud_itab__619[] = { /* 0 */ 890, 891, 892, 893, /* 4 */ 894, 895, 896, 897, }; static const uint16_t ud_itab__620[] = { /* 0 */ 898, 899, 900, 901, /* 4 */ 902, 903, 904, 905, }; static const uint16_t ud_itab__621[] = { /* 0 */ 906, 907, 908, 909, /* 4 */ 910, 911, 912, 913, }; static const uint16_t ud_itab__622[] = { /* 0 */ 914, 0, }; static const uint16_t ud_itab__623[] = { /* 0 */ 915, 0, }; static const uint16_t ud_itab__624[] = { /* 0 */ 916, 0, }; static const uint16_t ud_itab__627[] = { /* 0 */ 918, 0, }; static const uint16_t ud_itab__628[] = { /* 0 */ 919, 0, }; static const uint16_t ud_itab__629[] = { /* 0 */ 920, 0, }; static const uint16_t ud_itab__630[] = { /* 0 */ 921, 0, }; static const uint16_t ud_itab__631[] = { /* 0 */ 922, 0, }; static const uint16_t ud_itab__632[] = { /* 0 */ 923, 0, }; static const uint16_t ud_itab__633[] = { /* 0 */ 924, 0, }; static const uint16_t ud_itab__634[] = { /* 0 */ 925, 0, }; static const uint16_t ud_itab__626[] = { /* 0 */ GROUP(627), GROUP(628), GROUP(629), GROUP(630), /* 4 */ GROUP(631), GROUP(632), GROUP(633), GROUP(634), }; static const uint16_t ud_itab__636[] = { /* 0 */ 0, 926, }; static const uint16_t ud_itab__637[] = { /* 0 */ 0, 927, }; static const uint16_t ud_itab__638[] = { /* 0 */ 0, 928, }; static const uint16_t ud_itab__639[] = { /* 0 */ 0, 929, }; static const uint16_t ud_itab__640[] = { /* 0 */ 0, 930, }; static const uint16_t ud_itab__641[] = { /* 0 */ 0, 931, }; static const uint16_t ud_itab__642[] = { /* 0 */ 0, 932, }; static const uint16_t ud_itab__643[] = { /* 0 */ 0, 933, }; static const uint16_t ud_itab__644[] = { /* 0 */ 0, 934, }; static const uint16_t ud_itab__645[] = { /* 0 */ 0, 935, }; static const uint16_t ud_itab__646[] = { /* 0 */ 0, 936, }; static const uint16_t ud_itab__647[] = { /* 0 */ 0, 937, }; static const uint16_t ud_itab__648[] = { /* 0 */ 0, 938, }; static const uint16_t ud_itab__649[] = { /* 0 */ 0, 939, }; static const uint16_t ud_itab__650[] = { /* 0 */ 0, 940, }; static const uint16_t ud_itab__651[] = { /* 0 */ 0, 941, }; static const uint16_t ud_itab__652[] = { /* 0 */ 0, 942, }; static const uint16_t ud_itab__653[] = { /* 0 */ 0, 943, }; static const uint16_t ud_itab__654[] = { /* 0 */ 0, 944, }; static const uint16_t ud_itab__655[] = { /* 0 */ 0, 945, }; static const uint16_t ud_itab__656[] = { /* 0 */ 0, 946, }; static const uint16_t ud_itab__657[] = { /* 0 */ 0, 947, }; static const uint16_t ud_itab__658[] = { /* 0 */ 0, 948, }; static const uint16_t ud_itab__659[] = { /* 0 */ 0, 949, }; static const uint16_t ud_itab__660[] = { /* 0 */ 0, 950, }; static const uint16_t ud_itab__661[] = { /* 0 */ 0, 951, }; static const uint16_t ud_itab__662[] = { /* 0 */ 0, 952, }; static const uint16_t ud_itab__663[] = { /* 0 */ 0, 953, }; static const uint16_t ud_itab__664[] = { /* 0 */ 0, 954, }; static const uint16_t ud_itab__665[] = { /* 0 */ 0, 955, }; static const uint16_t ud_itab__666[] = { /* 0 */ 0, 956, }; static const uint16_t ud_itab__667[] = { /* 0 */ 0, 957, }; static const uint16_t ud_itab__668[] = { /* 0 */ 0, 958, }; static const uint16_t ud_itab__669[] = { /* 0 */ 0, 959, }; static const uint16_t ud_itab__670[] = { /* 0 */ 0, 960, }; static const uint16_t ud_itab__671[] = { /* 0 */ 0, 961, }; static const uint16_t ud_itab__672[] = { /* 0 */ 0, 962, }; static const uint16_t ud_itab__673[] = { /* 0 */ 0, 963, }; static const uint16_t ud_itab__674[] = { /* 0 */ 0, 964, }; static const uint16_t ud_itab__675[] = { /* 0 */ 0, 965, }; static const uint16_t ud_itab__676[] = { /* 0 */ 0, 966, }; static const uint16_t ud_itab__677[] = { /* 0 */ 0, 967, }; static const uint16_t ud_itab__678[] = { /* 0 */ 0, 968, }; static const uint16_t ud_itab__679[] = { /* 0 */ 0, 969, }; static const uint16_t ud_itab__680[] = { /* 0 */ 0, 970, }; static const uint16_t ud_itab__681[] = { /* 0 */ 0, 971, }; static const uint16_t ud_itab__682[] = { /* 0 */ 0, 972, }; static const uint16_t ud_itab__683[] = { /* 0 */ 0, 973, }; static const uint16_t ud_itab__684[] = { /* 0 */ 0, 974, }; static const uint16_t ud_itab__685[] = { /* 0 */ 0, 975, }; static const uint16_t ud_itab__686[] = { /* 0 */ 0, 976, }; static const uint16_t ud_itab__687[] = { /* 0 */ 0, 977, }; static const uint16_t ud_itab__688[] = { /* 0 */ 0, 978, }; static const uint16_t ud_itab__689[] = { /* 0 */ 0, 979, }; static const uint16_t ud_itab__690[] = { /* 0 */ 0, 980, }; static const uint16_t ud_itab__691[] = { /* 0 */ 0, 981, }; static const uint16_t ud_itab__692[] = { /* 0 */ 0, 982, }; static const uint16_t ud_itab__693[] = { /* 0 */ 0, 983, }; static const uint16_t ud_itab__694[] = { /* 0 */ 0, 984, }; static const uint16_t ud_itab__695[] = { /* 0 */ 0, 985, }; static const uint16_t ud_itab__696[] = { /* 0 */ 0, 986, }; static const uint16_t ud_itab__697[] = { /* 0 */ 0, 987, }; static const uint16_t ud_itab__698[] = { /* 0 */ 0, 988, }; static const uint16_t ud_itab__699[] = { /* 0 */ 0, 989, }; static const uint16_t ud_itab__635[] = { /* 0 */ GROUP(636), GROUP(637), GROUP(638), GROUP(639), /* 4 */ GROUP(640), GROUP(641), GROUP(642), GROUP(643), /* 8 */ GROUP(644), GROUP(645), GROUP(646), GROUP(647), /* c */ GROUP(648), GROUP(649), GROUP(650), GROUP(651), /* 10 */ GROUP(652), GROUP(653), GROUP(654), GROUP(655), /* 14 */ GROUP(656), GROUP(657), GROUP(658), GROUP(659), /* 18 */ GROUP(660), GROUP(661), GROUP(662), GROUP(663), /* 1c */ GROUP(664), GROUP(665), GROUP(666), GROUP(667), /* 20 */ GROUP(668), GROUP(669), GROUP(670), GROUP(671), /* 24 */ GROUP(672), GROUP(673), GROUP(674), GROUP(675), /* 28 */ GROUP(676), GROUP(677), GROUP(678), GROUP(679), /* 2c */ GROUP(680), GROUP(681), GROUP(682), GROUP(683), /* 30 */ GROUP(684), GROUP(685), GROUP(686), GROUP(687), /* 34 */ GROUP(688), GROUP(689), GROUP(690), GROUP(691), /* 38 */ GROUP(692), GROUP(693), GROUP(694), GROUP(695), /* 3c */ GROUP(696), GROUP(697), GROUP(698), GROUP(699), }; static const uint16_t ud_itab__625[] = { /* 0 */ GROUP(626), GROUP(635), }; static const uint16_t ud_itab__702[] = { /* 0 */ 990, 0, }; static const uint16_t ud_itab__703[] = { /* 0 */ 991, 0, }; static const uint16_t ud_itab__704[] = { /* 0 */ 992, 0, }; static const uint16_t ud_itab__705[] = { /* 0 */ 993, 0, }; static const uint16_t ud_itab__706[] = { /* 0 */ 994, 0, }; static const uint16_t ud_itab__707[] = { /* 0 */ 995, 0, }; static const uint16_t ud_itab__708[] = { /* 0 */ 996, 0, }; static const uint16_t ud_itab__701[] = { /* 0 */ GROUP(702), 0, GROUP(703), GROUP(704), /* 4 */ GROUP(705), GROUP(706), GROUP(707), GROUP(708), }; static const uint16_t ud_itab__710[] = { /* 0 */ 0, 997, }; static const uint16_t ud_itab__711[] = { /* 0 */ 0, 998, }; static const uint16_t ud_itab__712[] = { /* 0 */ 0, 999, }; static const uint16_t ud_itab__713[] = { /* 0 */ 0, 1000, }; static const uint16_t ud_itab__714[] = { /* 0 */ 0, 1001, }; static const uint16_t ud_itab__715[] = { /* 0 */ 0, 1002, }; static const uint16_t ud_itab__716[] = { /* 0 */ 0, 1003, }; static const uint16_t ud_itab__717[] = { /* 0 */ 0, 1004, }; static const uint16_t ud_itab__718[] = { /* 0 */ 0, 1005, }; static const uint16_t ud_itab__719[] = { /* 0 */ 0, 1006, }; static const uint16_t ud_itab__720[] = { /* 0 */ 0, 1007, }; static const uint16_t ud_itab__721[] = { /* 0 */ 0, 1008, }; static const uint16_t ud_itab__722[] = { /* 0 */ 0, 1009, }; static const uint16_t ud_itab__723[] = { /* 0 */ 0, 1010, }; static const uint16_t ud_itab__724[] = { /* 0 */ 0, 1011, }; static const uint16_t ud_itab__725[] = { /* 0 */ 0, 1012, }; static const uint16_t ud_itab__726[] = { /* 0 */ 0, 1013, }; static const uint16_t ud_itab__727[] = { /* 0 */ 0, 1014, }; static const uint16_t ud_itab__728[] = { /* 0 */ 0, 1015, }; static const uint16_t ud_itab__729[] = { /* 0 */ 0, 1016, }; static const uint16_t ud_itab__730[] = { /* 0 */ 0, 1017, }; static const uint16_t ud_itab__731[] = { /* 0 */ 0, 1018, }; static const uint16_t ud_itab__732[] = { /* 0 */ 0, 1019, }; static const uint16_t ud_itab__733[] = { /* 0 */ 0, 1020, }; static const uint16_t ud_itab__734[] = { /* 0 */ 0, 1021, }; static const uint16_t ud_itab__735[] = { /* 0 */ 0, 1022, }; static const uint16_t ud_itab__736[] = { /* 0 */ 0, 1023, }; static const uint16_t ud_itab__737[] = { /* 0 */ 0, 1024, }; static const uint16_t ud_itab__738[] = { /* 0 */ 0, 1025, }; static const uint16_t ud_itab__739[] = { /* 0 */ 0, 1026, }; static const uint16_t ud_itab__740[] = { /* 0 */ 0, 1027, }; static const uint16_t ud_itab__741[] = { /* 0 */ 0, 1028, }; static const uint16_t ud_itab__742[] = { /* 0 */ 0, 1029, }; static const uint16_t ud_itab__743[] = { /* 0 */ 0, 1030, }; static const uint16_t ud_itab__744[] = { /* 0 */ 0, 1031, }; static const uint16_t ud_itab__745[] = { /* 0 */ 0, 1032, }; static const uint16_t ud_itab__746[] = { /* 0 */ 0, 1033, }; static const uint16_t ud_itab__747[] = { /* 0 */ 0, 1034, }; static const uint16_t ud_itab__748[] = { /* 0 */ 0, 1035, }; static const uint16_t ud_itab__749[] = { /* 0 */ 0, 1036, }; static const uint16_t ud_itab__750[] = { /* 0 */ 0, 1037, }; static const uint16_t ud_itab__751[] = { /* 0 */ 0, 1038, }; static const uint16_t ud_itab__752[] = { /* 0 */ 0, 1039, }; static const uint16_t ud_itab__753[] = { /* 0 */ 0, 1040, }; static const uint16_t ud_itab__754[] = { /* 0 */ 0, 1041, }; static const uint16_t ud_itab__755[] = { /* 0 */ 0, 1042, }; static const uint16_t ud_itab__756[] = { /* 0 */ 0, 1043, }; static const uint16_t ud_itab__757[] = { /* 0 */ 0, 1044, }; static const uint16_t ud_itab__758[] = { /* 0 */ 0, 1045, }; static const uint16_t ud_itab__759[] = { /* 0 */ 0, 1046, }; static const uint16_t ud_itab__760[] = { /* 0 */ 0, 1047, }; static const uint16_t ud_itab__761[] = { /* 0 */ 0, 1048, }; static const uint16_t ud_itab__709[] = { /* 0 */ GROUP(710), GROUP(711), GROUP(712), GROUP(713), /* 4 */ GROUP(714), GROUP(715), GROUP(716), GROUP(717), /* 8 */ GROUP(718), GROUP(719), GROUP(720), GROUP(721), /* c */ GROUP(722), GROUP(723), GROUP(724), GROUP(725), /* 10 */ GROUP(726), 0, 0, 0, /* 14 */ 0, 0, 0, 0, /* 18 */ GROUP(727), GROUP(728), GROUP(729), GROUP(730), /* 1c */ GROUP(731), GROUP(732), GROUP(733), GROUP(734), /* 20 */ GROUP(735), GROUP(736), 0, 0, /* 24 */ GROUP(737), GROUP(738), 0, 0, /* 28 */ GROUP(739), GROUP(740), GROUP(741), GROUP(742), /* 2c */ GROUP(743), GROUP(744), GROUP(745), 0, /* 30 */ GROUP(746), GROUP(747), GROUP(748), GROUP(749), /* 34 */ GROUP(750), GROUP(751), GROUP(752), GROUP(753), /* 38 */ GROUP(754), GROUP(755), GROUP(756), GROUP(757), /* 3c */ GROUP(758), GROUP(759), GROUP(760), GROUP(761), }; static const uint16_t ud_itab__700[] = { /* 0 */ GROUP(701), GROUP(709), }; static const uint16_t ud_itab__764[] = { /* 0 */ 1049, 0, }; static const uint16_t ud_itab__765[] = { /* 0 */ 1050, 0, }; static const uint16_t ud_itab__766[] = { /* 0 */ 1051, 0, }; static const uint16_t ud_itab__767[] = { /* 0 */ 1052, 0, }; static const uint16_t ud_itab__768[] = { /* 0 */ 1053, 0, }; static const uint16_t ud_itab__769[] = { /* 0 */ 1054, 0, }; static const uint16_t ud_itab__770[] = { /* 0 */ 1055, 0, }; static const uint16_t ud_itab__771[] = { /* 0 */ 1056, 0, }; static const uint16_t ud_itab__763[] = { /* 0 */ GROUP(764), GROUP(765), GROUP(766), GROUP(767), /* 4 */ GROUP(768), GROUP(769), GROUP(770), GROUP(771), }; static const uint16_t ud_itab__773[] = { /* 0 */ 0, 1057, }; static const uint16_t ud_itab__774[] = { /* 0 */ 0, 1058, }; static const uint16_t ud_itab__775[] = { /* 0 */ 0, 1059, }; static const uint16_t ud_itab__776[] = { /* 0 */ 0, 1060, }; static const uint16_t ud_itab__777[] = { /* 0 */ 0, 1061, }; static const uint16_t ud_itab__778[] = { /* 0 */ 0, 1062, }; static const uint16_t ud_itab__779[] = { /* 0 */ 0, 1063, }; static const uint16_t ud_itab__780[] = { /* 0 */ 0, 1064, }; static const uint16_t ud_itab__781[] = { /* 0 */ 0, 1065, }; static const uint16_t ud_itab__782[] = { /* 0 */ 0, 1066, }; static const uint16_t ud_itab__783[] = { /* 0 */ 0, 1067, }; static const uint16_t ud_itab__784[] = { /* 0 */ 0, 1068, }; static const uint16_t ud_itab__785[] = { /* 0 */ 0, 1069, }; static const uint16_t ud_itab__786[] = { /* 0 */ 0, 1070, }; static const uint16_t ud_itab__787[] = { /* 0 */ 0, 1071, }; static const uint16_t ud_itab__788[] = { /* 0 */ 0, 1072, }; static const uint16_t ud_itab__789[] = { /* 0 */ 0, 1073, }; static const uint16_t ud_itab__790[] = { /* 0 */ 0, 1074, }; static const uint16_t ud_itab__791[] = { /* 0 */ 0, 1075, }; static const uint16_t ud_itab__792[] = { /* 0 */ 0, 1076, }; static const uint16_t ud_itab__793[] = { /* 0 */ 0, 1077, }; static const uint16_t ud_itab__794[] = { /* 0 */ 0, 1078, }; static const uint16_t ud_itab__795[] = { /* 0 */ 0, 1079, }; static const uint16_t ud_itab__796[] = { /* 0 */ 0, 1080, }; static const uint16_t ud_itab__797[] = { /* 0 */ 0, 1081, }; static const uint16_t ud_itab__798[] = { /* 0 */ 0, 1082, }; static const uint16_t ud_itab__799[] = { /* 0 */ 0, 1083, }; static const uint16_t ud_itab__800[] = { /* 0 */ 0, 1084, }; static const uint16_t ud_itab__801[] = { /* 0 */ 0, 1085, }; static const uint16_t ud_itab__802[] = { /* 0 */ 0, 1086, }; static const uint16_t ud_itab__803[] = { /* 0 */ 0, 1087, }; static const uint16_t ud_itab__804[] = { /* 0 */ 0, 1088, }; static const uint16_t ud_itab__805[] = { /* 0 */ 0, 1089, }; static const uint16_t ud_itab__772[] = { /* 0 */ GROUP(773), GROUP(774), GROUP(775), GROUP(776), /* 4 */ GROUP(777), GROUP(778), GROUP(779), GROUP(780), /* 8 */ GROUP(781), GROUP(782), GROUP(783), GROUP(784), /* c */ GROUP(785), GROUP(786), GROUP(787), GROUP(788), /* 10 */ GROUP(789), GROUP(790), GROUP(791), GROUP(792), /* 14 */ GROUP(793), GROUP(794), GROUP(795), GROUP(796), /* 18 */ GROUP(797), GROUP(798), GROUP(799), GROUP(800), /* 1c */ GROUP(801), GROUP(802), GROUP(803), GROUP(804), /* 20 */ 0, 0, 0, 0, /* 24 */ 0, 0, 0, 0, /* 28 */ 0, GROUP(805), 0, 0, /* 2c */ 0, 0, 0, 0, /* 30 */ 0, 0, 0, 0, /* 34 */ 0, 0, 0, 0, /* 38 */ 0, 0, 0, 0, /* 3c */ 0, 0, 0, 0, }; static const uint16_t ud_itab__762[] = { /* 0 */ GROUP(763), GROUP(772), }; static const uint16_t ud_itab__808[] = { /* 0 */ 1090, 0, }; static const uint16_t ud_itab__809[] = { /* 0 */ 1091, 0, }; static const uint16_t ud_itab__810[] = { /* 0 */ 1092, 0, }; static const uint16_t ud_itab__811[] = { /* 0 */ 1093, 0, }; static const uint16_t ud_itab__812[] = { /* 0 */ 1094, 0, }; static const uint16_t ud_itab__813[] = { /* 0 */ 1095, 0, }; static const uint16_t ud_itab__807[] = { /* 0 */ GROUP(808), GROUP(809), GROUP(810), GROUP(811), /* 4 */ 0, GROUP(812), 0, GROUP(813), }; static const uint16_t ud_itab__815[] = { /* 0 */ 0, 1096, }; static const uint16_t ud_itab__816[] = { /* 0 */ 0, 1097, }; static const uint16_t ud_itab__817[] = { /* 0 */ 0, 1098, }; static const uint16_t ud_itab__818[] = { /* 0 */ 0, 1099, }; static const uint16_t ud_itab__819[] = { /* 0 */ 0, 1100, }; static const uint16_t ud_itab__820[] = { /* 0 */ 0, 1101, }; static const uint16_t ud_itab__821[] = { /* 0 */ 0, 1102, }; static const uint16_t ud_itab__822[] = { /* 0 */ 0, 1103, }; static const uint16_t ud_itab__823[] = { /* 0 */ 0, 1104, }; static const uint16_t ud_itab__824[] = { /* 0 */ 0, 1105, }; static const uint16_t ud_itab__825[] = { /* 0 */ 0, 1106, }; static const uint16_t ud_itab__826[] = { /* 0 */ 0, 1107, }; static const uint16_t ud_itab__827[] = { /* 0 */ 0, 1108, }; static const uint16_t ud_itab__828[] = { /* 0 */ 0, 1109, }; static const uint16_t ud_itab__829[] = { /* 0 */ 0, 1110, }; static const uint16_t ud_itab__830[] = { /* 0 */ 0, 1111, }; static const uint16_t ud_itab__831[] = { /* 0 */ 0, 1112, }; static const uint16_t ud_itab__832[] = { /* 0 */ 0, 1113, }; static const uint16_t ud_itab__833[] = { /* 0 */ 0, 1114, }; static const uint16_t ud_itab__834[] = { /* 0 */ 0, 1115, }; static const uint16_t ud_itab__835[] = { /* 0 */ 0, 1116, }; static const uint16_t ud_itab__836[] = { /* 0 */ 0, 1117, }; static const uint16_t ud_itab__837[] = { /* 0 */ 0, 1118, }; static const uint16_t ud_itab__838[] = { /* 0 */ 0, 1119, }; static const uint16_t ud_itab__839[] = { /* 0 */ 0, 1120, }; static const uint16_t ud_itab__840[] = { /* 0 */ 0, 1121, }; static const uint16_t ud_itab__841[] = { /* 0 */ 0, 1122, }; static const uint16_t ud_itab__842[] = { /* 0 */ 0, 1123, }; static const uint16_t ud_itab__843[] = { /* 0 */ 0, 1124, }; static const uint16_t ud_itab__844[] = { /* 0 */ 0, 1125, }; static const uint16_t ud_itab__845[] = { /* 0 */ 0, 1126, }; static const uint16_t ud_itab__846[] = { /* 0 */ 0, 1127, }; static const uint16_t ud_itab__847[] = { /* 0 */ 0, 1128, }; static const uint16_t ud_itab__848[] = { /* 0 */ 0, 1129, }; static const uint16_t ud_itab__849[] = { /* 0 */ 0, 1130, }; static const uint16_t ud_itab__850[] = { /* 0 */ 0, 1131, }; static const uint16_t ud_itab__851[] = { /* 0 */ 0, 1132, }; static const uint16_t ud_itab__852[] = { /* 0 */ 0, 1133, }; static const uint16_t ud_itab__853[] = { /* 0 */ 0, 1134, }; static const uint16_t ud_itab__854[] = { /* 0 */ 0, 1135, }; static const uint16_t ud_itab__855[] = { /* 0 */ 0, 1136, }; static const uint16_t ud_itab__856[] = { /* 0 */ 0, 1137, }; static const uint16_t ud_itab__857[] = { /* 0 */ 0, 1138, }; static const uint16_t ud_itab__858[] = { /* 0 */ 0, 1139, }; static const uint16_t ud_itab__859[] = { /* 0 */ 0, 1140, }; static const uint16_t ud_itab__860[] = { /* 0 */ 0, 1141, }; static const uint16_t ud_itab__861[] = { /* 0 */ 0, 1142, }; static const uint16_t ud_itab__862[] = { /* 0 */ 0, 1143, }; static const uint16_t ud_itab__863[] = { /* 0 */ 0, 1144, }; static const uint16_t ud_itab__864[] = { /* 0 */ 0, 1145, }; static const uint16_t ud_itab__814[] = { /* 0 */ GROUP(815), GROUP(816), GROUP(817), GROUP(818), /* 4 */ GROUP(819), GROUP(820), GROUP(821), GROUP(822), /* 8 */ GROUP(823), GROUP(824), GROUP(825), GROUP(826), /* c */ GROUP(827), GROUP(828), GROUP(829), GROUP(830), /* 10 */ GROUP(831), GROUP(832), GROUP(833), GROUP(834), /* 14 */ GROUP(835), GROUP(836), GROUP(837), GROUP(838), /* 18 */ GROUP(839), GROUP(840), GROUP(841), GROUP(842), /* 1c */ GROUP(843), GROUP(844), GROUP(845), GROUP(846), /* 20 */ 0, 0, GROUP(847), GROUP(848), /* 24 */ 0, 0, 0, 0, /* 28 */ GROUP(849), GROUP(850), GROUP(851), GROUP(852), /* 2c */ GROUP(853), GROUP(854), GROUP(855), GROUP(856), /* 30 */ GROUP(857), GROUP(858), GROUP(859), GROUP(860), /* 34 */ GROUP(861), GROUP(862), GROUP(863), GROUP(864), /* 38 */ 0, 0, 0, 0, /* 3c */ 0, 0, 0, 0, }; static const uint16_t ud_itab__806[] = { /* 0 */ GROUP(807), GROUP(814), }; static const uint16_t ud_itab__867[] = { /* 0 */ 1146, 0, }; static const uint16_t ud_itab__868[] = { /* 0 */ 1147, 0, }; static const uint16_t ud_itab__869[] = { /* 0 */ 1148, 0, }; static const uint16_t ud_itab__870[] = { /* 0 */ 1149, 0, }; static const uint16_t ud_itab__871[] = { /* 0 */ 1150, 0, }; static const uint16_t ud_itab__872[] = { /* 0 */ 1151, 0, }; static const uint16_t ud_itab__873[] = { /* 0 */ 1152, 0, }; static const uint16_t ud_itab__874[] = { /* 0 */ 1153, 0, }; static const uint16_t ud_itab__866[] = { /* 0 */ GROUP(867), GROUP(868), GROUP(869), GROUP(870), /* 4 */ GROUP(871), GROUP(872), GROUP(873), GROUP(874), }; static const uint16_t ud_itab__876[] = { /* 0 */ 0, 1154, }; static const uint16_t ud_itab__877[] = { /* 0 */ 0, 1155, }; static const uint16_t ud_itab__878[] = { /* 0 */ 0, 1156, }; static const uint16_t ud_itab__879[] = { /* 0 */ 0, 1157, }; static const uint16_t ud_itab__880[] = { /* 0 */ 0, 1158, }; static const uint16_t ud_itab__881[] = { /* 0 */ 0, 1159, }; static const uint16_t ud_itab__882[] = { /* 0 */ 0, 1160, }; static const uint16_t ud_itab__883[] = { /* 0 */ 0, 1161, }; static const uint16_t ud_itab__884[] = { /* 0 */ 0, 1162, }; static const uint16_t ud_itab__885[] = { /* 0 */ 0, 1163, }; static const uint16_t ud_itab__886[] = { /* 0 */ 0, 1164, }; static const uint16_t ud_itab__887[] = { /* 0 */ 0, 1165, }; static const uint16_t ud_itab__888[] = { /* 0 */ 0, 1166, }; static const uint16_t ud_itab__889[] = { /* 0 */ 0, 1167, }; static const uint16_t ud_itab__890[] = { /* 0 */ 0, 1168, }; static const uint16_t ud_itab__891[] = { /* 0 */ 0, 1169, }; static const uint16_t ud_itab__892[] = { /* 0 */ 0, 1170, }; static const uint16_t ud_itab__893[] = { /* 0 */ 0, 1171, }; static const uint16_t ud_itab__894[] = { /* 0 */ 0, 1172, }; static const uint16_t ud_itab__895[] = { /* 0 */ 0, 1173, }; static const uint16_t ud_itab__896[] = { /* 0 */ 0, 1174, }; static const uint16_t ud_itab__897[] = { /* 0 */ 0, 1175, }; static const uint16_t ud_itab__898[] = { /* 0 */ 0, 1176, }; static const uint16_t ud_itab__899[] = { /* 0 */ 0, 1177, }; static const uint16_t ud_itab__900[] = { /* 0 */ 0, 1178, }; static const uint16_t ud_itab__901[] = { /* 0 */ 0, 1179, }; static const uint16_t ud_itab__902[] = { /* 0 */ 0, 1180, }; static const uint16_t ud_itab__903[] = { /* 0 */ 0, 1181, }; static const uint16_t ud_itab__904[] = { /* 0 */ 0, 1182, }; static const uint16_t ud_itab__905[] = { /* 0 */ 0, 1183, }; static const uint16_t ud_itab__906[] = { /* 0 */ 0, 1184, }; static const uint16_t ud_itab__907[] = { /* 0 */ 0, 1185, }; static const uint16_t ud_itab__908[] = { /* 0 */ 0, 1186, }; static const uint16_t ud_itab__909[] = { /* 0 */ 0, 1187, }; static const uint16_t ud_itab__910[] = { /* 0 */ 0, 1188, }; static const uint16_t ud_itab__911[] = { /* 0 */ 0, 1189, }; static const uint16_t ud_itab__912[] = { /* 0 */ 0, 1190, }; static const uint16_t ud_itab__913[] = { /* 0 */ 0, 1191, }; static const uint16_t ud_itab__914[] = { /* 0 */ 0, 1192, }; static const uint16_t ud_itab__915[] = { /* 0 */ 0, 1193, }; static const uint16_t ud_itab__916[] = { /* 0 */ 0, 1194, }; static const uint16_t ud_itab__917[] = { /* 0 */ 0, 1195, }; static const uint16_t ud_itab__918[] = { /* 0 */ 0, 1196, }; static const uint16_t ud_itab__919[] = { /* 0 */ 0, 1197, }; static const uint16_t ud_itab__920[] = { /* 0 */ 0, 1198, }; static const uint16_t ud_itab__921[] = { /* 0 */ 0, 1199, }; static const uint16_t ud_itab__922[] = { /* 0 */ 0, 1200, }; static const uint16_t ud_itab__923[] = { /* 0 */ 0, 1201, }; static const uint16_t ud_itab__924[] = { /* 0 */ 0, 1202, }; static const uint16_t ud_itab__925[] = { /* 0 */ 0, 1203, }; static const uint16_t ud_itab__926[] = { /* 0 */ 0, 1204, }; static const uint16_t ud_itab__927[] = { /* 0 */ 0, 1205, }; static const uint16_t ud_itab__928[] = { /* 0 */ 0, 1206, }; static const uint16_t ud_itab__929[] = { /* 0 */ 0, 1207, }; static const uint16_t ud_itab__930[] = { /* 0 */ 0, 1208, }; static const uint16_t ud_itab__931[] = { /* 0 */ 0, 1209, }; static const uint16_t ud_itab__932[] = { /* 0 */ 0, 1210, }; static const uint16_t ud_itab__933[] = { /* 0 */ 0, 1211, }; static const uint16_t ud_itab__934[] = { /* 0 */ 0, 1212, }; static const uint16_t ud_itab__935[] = { /* 0 */ 0, 1213, }; static const uint16_t ud_itab__936[] = { /* 0 */ 0, 1214, }; static const uint16_t ud_itab__937[] = { /* 0 */ 0, 1215, }; static const uint16_t ud_itab__938[] = { /* 0 */ 0, 1216, }; static const uint16_t ud_itab__939[] = { /* 0 */ 0, 1217, }; static const uint16_t ud_itab__875[] = { /* 0 */ GROUP(876), GROUP(877), GROUP(878), GROUP(879), /* 4 */ GROUP(880), GROUP(881), GROUP(882), GROUP(883), /* 8 */ GROUP(884), GROUP(885), GROUP(886), GROUP(887), /* c */ GROUP(888), GROUP(889), GROUP(890), GROUP(891), /* 10 */ GROUP(892), GROUP(893), GROUP(894), GROUP(895), /* 14 */ GROUP(896), GROUP(897), GROUP(898), GROUP(899), /* 18 */ GROUP(900), GROUP(901), GROUP(902), GROUP(903), /* 1c */ GROUP(904), GROUP(905), GROUP(906), GROUP(907), /* 20 */ GROUP(908), GROUP(909), GROUP(910), GROUP(911), /* 24 */ GROUP(912), GROUP(913), GROUP(914), GROUP(915), /* 28 */ GROUP(916), GROUP(917), GROUP(918), GROUP(919), /* 2c */ GROUP(920), GROUP(921), GROUP(922), GROUP(923), /* 30 */ GROUP(924), GROUP(925), GROUP(926), GROUP(927), /* 34 */ GROUP(928), GROUP(929), GROUP(930), GROUP(931), /* 38 */ GROUP(932), GROUP(933), GROUP(934), GROUP(935), /* 3c */ GROUP(936), GROUP(937), GROUP(938), GROUP(939), }; static const uint16_t ud_itab__865[] = { /* 0 */ GROUP(866), GROUP(875), }; static const uint16_t ud_itab__942[] = { /* 0 */ 1218, 0, }; static const uint16_t ud_itab__943[] = { /* 0 */ 1219, 0, }; static const uint16_t ud_itab__944[] = { /* 0 */ 1220, 0, }; static const uint16_t ud_itab__945[] = { /* 0 */ 1221, 0, }; static const uint16_t ud_itab__946[] = { /* 0 */ 1222, 0, }; static const uint16_t ud_itab__947[] = { /* 0 */ 1223, 0, }; static const uint16_t ud_itab__948[] = { /* 0 */ 1224, 0, }; static const uint16_t ud_itab__941[] = { /* 0 */ GROUP(942), GROUP(943), GROUP(944), GROUP(945), /* 4 */ GROUP(946), 0, GROUP(947), GROUP(948), }; static const uint16_t ud_itab__950[] = { /* 0 */ 0, 1225, }; static const uint16_t ud_itab__951[] = { /* 0 */ 0, 1226, }; static const uint16_t ud_itab__952[] = { /* 0 */ 0, 1227, }; static const uint16_t ud_itab__953[] = { /* 0 */ 0, 1228, }; static const uint16_t ud_itab__954[] = { /* 0 */ 0, 1229, }; static const uint16_t ud_itab__955[] = { /* 0 */ 0, 1230, }; static const uint16_t ud_itab__956[] = { /* 0 */ 0, 1231, }; static const uint16_t ud_itab__957[] = { /* 0 */ 0, 1232, }; static const uint16_t ud_itab__958[] = { /* 0 */ 0, 1233, }; static const uint16_t ud_itab__959[] = { /* 0 */ 0, 1234, }; static const uint16_t ud_itab__960[] = { /* 0 */ 0, 1235, }; static const uint16_t ud_itab__961[] = { /* 0 */ 0, 1236, }; static const uint16_t ud_itab__962[] = { /* 0 */ 0, 1237, }; static const uint16_t ud_itab__963[] = { /* 0 */ 0, 1238, }; static const uint16_t ud_itab__964[] = { /* 0 */ 0, 1239, }; static const uint16_t ud_itab__965[] = { /* 0 */ 0, 1240, }; static const uint16_t ud_itab__966[] = { /* 0 */ 0, 1241, }; static const uint16_t ud_itab__967[] = { /* 0 */ 0, 1242, }; static const uint16_t ud_itab__968[] = { /* 0 */ 0, 1243, }; static const uint16_t ud_itab__969[] = { /* 0 */ 0, 1244, }; static const uint16_t ud_itab__970[] = { /* 0 */ 0, 1245, }; static const uint16_t ud_itab__971[] = { /* 0 */ 0, 1246, }; static const uint16_t ud_itab__972[] = { /* 0 */ 0, 1247, }; static const uint16_t ud_itab__973[] = { /* 0 */ 0, 1248, }; static const uint16_t ud_itab__974[] = { /* 0 */ 0, 1249, }; static const uint16_t ud_itab__975[] = { /* 0 */ 0, 1250, }; static const uint16_t ud_itab__976[] = { /* 0 */ 0, 1251, }; static const uint16_t ud_itab__977[] = { /* 0 */ 0, 1252, }; static const uint16_t ud_itab__978[] = { /* 0 */ 0, 1253, }; static const uint16_t ud_itab__979[] = { /* 0 */ 0, 1254, }; static const uint16_t ud_itab__980[] = { /* 0 */ 0, 1255, }; static const uint16_t ud_itab__981[] = { /* 0 */ 0, 1256, }; static const uint16_t ud_itab__982[] = { /* 0 */ 0, 1257, }; static const uint16_t ud_itab__983[] = { /* 0 */ 0, 1258, }; static const uint16_t ud_itab__984[] = { /* 0 */ 0, 1259, }; static const uint16_t ud_itab__985[] = { /* 0 */ 0, 1260, }; static const uint16_t ud_itab__986[] = { /* 0 */ 0, 1261, }; static const uint16_t ud_itab__987[] = { /* 0 */ 0, 1262, }; static const uint16_t ud_itab__988[] = { /* 0 */ 0, 1263, }; static const uint16_t ud_itab__989[] = { /* 0 */ 0, 1264, }; static const uint16_t ud_itab__990[] = { /* 0 */ 0, 1265, }; static const uint16_t ud_itab__991[] = { /* 0 */ 0, 1266, }; static const uint16_t ud_itab__992[] = { /* 0 */ 0, 1267, }; static const uint16_t ud_itab__993[] = { /* 0 */ 0, 1268, }; static const uint16_t ud_itab__994[] = { /* 0 */ 0, 1269, }; static const uint16_t ud_itab__995[] = { /* 0 */ 0, 1270, }; static const uint16_t ud_itab__996[] = { /* 0 */ 0, 1271, }; static const uint16_t ud_itab__997[] = { /* 0 */ 0, 1272, }; static const uint16_t ud_itab__949[] = { /* 0 */ GROUP(950), GROUP(951), GROUP(952), GROUP(953), /* 4 */ GROUP(954), GROUP(955), GROUP(956), GROUP(957), /* 8 */ GROUP(958), GROUP(959), GROUP(960), GROUP(961), /* c */ GROUP(962), GROUP(963), GROUP(964), GROUP(965), /* 10 */ GROUP(966), GROUP(967), GROUP(968), GROUP(969), /* 14 */ GROUP(970), GROUP(971), GROUP(972), GROUP(973), /* 18 */ GROUP(974), GROUP(975), GROUP(976), GROUP(977), /* 1c */ GROUP(978), GROUP(979), GROUP(980), GROUP(981), /* 20 */ GROUP(982), GROUP(983), GROUP(984), GROUP(985), /* 24 */ GROUP(986), GROUP(987), GROUP(988), GROUP(989), /* 28 */ GROUP(990), GROUP(991), GROUP(992), GROUP(993), /* 2c */ GROUP(994), GROUP(995), GROUP(996), GROUP(997), /* 30 */ 0, 0, 0, 0, /* 34 */ 0, 0, 0, 0, /* 38 */ 0, 0, 0, 0, /* 3c */ 0, 0, 0, 0, }; static const uint16_t ud_itab__940[] = { /* 0 */ GROUP(941), GROUP(949), }; static const uint16_t ud_itab__1000[] = { /* 0 */ 1273, 0, }; static const uint16_t ud_itab__1001[] = { /* 0 */ 1274, 0, }; static const uint16_t ud_itab__1002[] = { /* 0 */ 1275, 0, }; static const uint16_t ud_itab__1003[] = { /* 0 */ 1276, 0, }; static const uint16_t ud_itab__1004[] = { /* 0 */ 1277, 0, }; static const uint16_t ud_itab__1005[] = { /* 0 */ 1278, 0, }; static const uint16_t ud_itab__1006[] = { /* 0 */ 1279, 0, }; static const uint16_t ud_itab__1007[] = { /* 0 */ 1280, 0, }; static const uint16_t ud_itab__999[] = { /* 0 */ GROUP(1000), GROUP(1001), GROUP(1002), GROUP(1003), /* 4 */ GROUP(1004), GROUP(1005), GROUP(1006), GROUP(1007), }; static const uint16_t ud_itab__1009[] = { /* 0 */ 0, 1281, }; static const uint16_t ud_itab__1010[] = { /* 0 */ 0, 1282, }; static const uint16_t ud_itab__1011[] = { /* 0 */ 0, 1283, }; static const uint16_t ud_itab__1012[] = { /* 0 */ 0, 1284, }; static const uint16_t ud_itab__1013[] = { /* 0 */ 0, 1285, }; static const uint16_t ud_itab__1014[] = { /* 0 */ 0, 1286, }; static const uint16_t ud_itab__1015[] = { /* 0 */ 0, 1287, }; static const uint16_t ud_itab__1016[] = { /* 0 */ 0, 1288, }; static const uint16_t ud_itab__1017[] = { /* 0 */ 0, 1289, }; static const uint16_t ud_itab__1018[] = { /* 0 */ 0, 1290, }; static const uint16_t ud_itab__1019[] = { /* 0 */ 0, 1291, }; static const uint16_t ud_itab__1020[] = { /* 0 */ 0, 1292, }; static const uint16_t ud_itab__1021[] = { /* 0 */ 0, 1293, }; static const uint16_t ud_itab__1022[] = { /* 0 */ 0, 1294, }; static const uint16_t ud_itab__1023[] = { /* 0 */ 0, 1295, }; static const uint16_t ud_itab__1024[] = { /* 0 */ 0, 1296, }; static const uint16_t ud_itab__1025[] = { /* 0 */ 0, 1297, }; static const uint16_t ud_itab__1026[] = { /* 0 */ 0, 1298, }; static const uint16_t ud_itab__1027[] = { /* 0 */ 0, 1299, }; static const uint16_t ud_itab__1028[] = { /* 0 */ 0, 1300, }; static const uint16_t ud_itab__1029[] = { /* 0 */ 0, 1301, }; static const uint16_t ud_itab__1030[] = { /* 0 */ 0, 1302, }; static const uint16_t ud_itab__1031[] = { /* 0 */ 0, 1303, }; static const uint16_t ud_itab__1032[] = { /* 0 */ 0, 1304, }; static const uint16_t ud_itab__1033[] = { /* 0 */ 0, 1305, }; static const uint16_t ud_itab__1034[] = { /* 0 */ 0, 1306, }; static const uint16_t ud_itab__1035[] = { /* 0 */ 0, 1307, }; static const uint16_t ud_itab__1036[] = { /* 0 */ 0, 1308, }; static const uint16_t ud_itab__1037[] = { /* 0 */ 0, 1309, }; static const uint16_t ud_itab__1038[] = { /* 0 */ 0, 1310, }; static const uint16_t ud_itab__1039[] = { /* 0 */ 0, 1311, }; static const uint16_t ud_itab__1040[] = { /* 0 */ 0, 1312, }; static const uint16_t ud_itab__1041[] = { /* 0 */ 0, 1313, }; static const uint16_t ud_itab__1042[] = { /* 0 */ 0, 1314, }; static const uint16_t ud_itab__1043[] = { /* 0 */ 0, 1315, }; static const uint16_t ud_itab__1044[] = { /* 0 */ 0, 1316, }; static const uint16_t ud_itab__1045[] = { /* 0 */ 0, 1317, }; static const uint16_t ud_itab__1046[] = { /* 0 */ 0, 1318, }; static const uint16_t ud_itab__1047[] = { /* 0 */ 0, 1319, }; static const uint16_t ud_itab__1048[] = { /* 0 */ 0, 1320, }; static const uint16_t ud_itab__1049[] = { /* 0 */ 0, 1321, }; static const uint16_t ud_itab__1050[] = { /* 0 */ 0, 1322, }; static const uint16_t ud_itab__1051[] = { /* 0 */ 0, 1323, }; static const uint16_t ud_itab__1052[] = { /* 0 */ 0, 1324, }; static const uint16_t ud_itab__1053[] = { /* 0 */ 0, 1325, }; static const uint16_t ud_itab__1054[] = { /* 0 */ 0, 1326, }; static const uint16_t ud_itab__1055[] = { /* 0 */ 0, 1327, }; static const uint16_t ud_itab__1056[] = { /* 0 */ 0, 1328, }; static const uint16_t ud_itab__1057[] = { /* 0 */ 0, 1329, }; static const uint16_t ud_itab__1058[] = { /* 0 */ 0, 1330, }; static const uint16_t ud_itab__1059[] = { /* 0 */ 0, 1331, }; static const uint16_t ud_itab__1060[] = { /* 0 */ 0, 1332, }; static const uint16_t ud_itab__1061[] = { /* 0 */ 0, 1333, }; static const uint16_t ud_itab__1062[] = { /* 0 */ 0, 1334, }; static const uint16_t ud_itab__1063[] = { /* 0 */ 0, 1335, }; static const uint16_t ud_itab__1064[] = { /* 0 */ 0, 1336, }; static const uint16_t ud_itab__1065[] = { /* 0 */ 0, 1337, }; static const uint16_t ud_itab__1008[] = { /* 0 */ GROUP(1009), GROUP(1010), GROUP(1011), GROUP(1012), /* 4 */ GROUP(1013), GROUP(1014), GROUP(1015), GROUP(1016), /* 8 */ GROUP(1017), GROUP(1018), GROUP(1019), GROUP(1020), /* c */ GROUP(1021), GROUP(1022), GROUP(1023), GROUP(1024), /* 10 */ GROUP(1025), GROUP(1026), GROUP(1027), GROUP(1028), /* 14 */ GROUP(1029), GROUP(1030), GROUP(1031), GROUP(1032), /* 18 */ 0, GROUP(1033), 0, 0, /* 1c */ 0, 0, 0, 0, /* 20 */ GROUP(1034), GROUP(1035), GROUP(1036), GROUP(1037), /* 24 */ GROUP(1038), GROUP(1039), GROUP(1040), GROUP(1041), /* 28 */ GROUP(1042), GROUP(1043), GROUP(1044), GROUP(1045), /* 2c */ GROUP(1046), GROUP(1047), GROUP(1048), GROUP(1049), /* 30 */ GROUP(1050), GROUP(1051), GROUP(1052), GROUP(1053), /* 34 */ GROUP(1054), GROUP(1055), GROUP(1056), GROUP(1057), /* 38 */ GROUP(1058), GROUP(1059), GROUP(1060), GROUP(1061), /* 3c */ GROUP(1062), GROUP(1063), GROUP(1064), GROUP(1065), }; static const uint16_t ud_itab__998[] = { /* 0 */ GROUP(999), GROUP(1008), }; static const uint16_t ud_itab__1068[] = { /* 0 */ 1338, 0, }; static const uint16_t ud_itab__1069[] = { /* 0 */ 1339, 0, }; static const uint16_t ud_itab__1070[] = { /* 0 */ 1340, 0, }; static const uint16_t ud_itab__1071[] = { /* 0 */ 1341, 0, }; static const uint16_t ud_itab__1072[] = { /* 0 */ 1342, 0, }; static const uint16_t ud_itab__1073[] = { /* 0 */ 1343, 0, }; static const uint16_t ud_itab__1074[] = { /* 0 */ 1344, 0, }; static const uint16_t ud_itab__1075[] = { /* 0 */ 1345, 0, }; static const uint16_t ud_itab__1067[] = { /* 0 */ GROUP(1068), GROUP(1069), GROUP(1070), GROUP(1071), /* 4 */ GROUP(1072), GROUP(1073), GROUP(1074), GROUP(1075), }; static const uint16_t ud_itab__1077[] = { /* 0 */ 0, 1346, }; static const uint16_t ud_itab__1078[] = { /* 0 */ 0, 1347, }; static const uint16_t ud_itab__1079[] = { /* 0 */ 0, 1348, }; static const uint16_t ud_itab__1080[] = { /* 0 */ 0, 1349, }; static const uint16_t ud_itab__1081[] = { /* 0 */ 0, 1350, }; static const uint16_t ud_itab__1082[] = { /* 0 */ 0, 1351, }; static const uint16_t ud_itab__1083[] = { /* 0 */ 0, 1352, }; static const uint16_t ud_itab__1084[] = { /* 0 */ 0, 1353, }; static const uint16_t ud_itab__1085[] = { /* 0 */ 0, 1354, }; static const uint16_t ud_itab__1086[] = { /* 0 */ 0, 1355, }; static const uint16_t ud_itab__1087[] = { /* 0 */ 0, 1356, }; static const uint16_t ud_itab__1088[] = { /* 0 */ 0, 1357, }; static const uint16_t ud_itab__1089[] = { /* 0 */ 0, 1358, }; static const uint16_t ud_itab__1090[] = { /* 0 */ 0, 1359, }; static const uint16_t ud_itab__1091[] = { /* 0 */ 0, 1360, }; static const uint16_t ud_itab__1092[] = { /* 0 */ 0, 1361, }; static const uint16_t ud_itab__1093[] = { /* 0 */ 0, 1362, }; static const uint16_t ud_itab__1094[] = { /* 0 */ 0, 1363, }; static const uint16_t ud_itab__1095[] = { /* 0 */ 0, 1364, }; static const uint16_t ud_itab__1096[] = { /* 0 */ 0, 1365, }; static const uint16_t ud_itab__1097[] = { /* 0 */ 0, 1366, }; static const uint16_t ud_itab__1098[] = { /* 0 */ 0, 1367, }; static const uint16_t ud_itab__1099[] = { /* 0 */ 0, 1368, }; static const uint16_t ud_itab__1100[] = { /* 0 */ 0, 1369, }; static const uint16_t ud_itab__1101[] = { /* 0 */ 0, 1370, }; static const uint16_t ud_itab__1102[] = { /* 0 */ 0, 1371, }; static const uint16_t ud_itab__1103[] = { /* 0 */ 0, 1372, }; static const uint16_t ud_itab__1104[] = { /* 0 */ 0, 1373, }; static const uint16_t ud_itab__1105[] = { /* 0 */ 0, 1374, }; static const uint16_t ud_itab__1106[] = { /* 0 */ 0, 1375, }; static const uint16_t ud_itab__1107[] = { /* 0 */ 0, 1376, }; static const uint16_t ud_itab__1108[] = { /* 0 */ 0, 1377, }; static const uint16_t ud_itab__1109[] = { /* 0 */ 0, 1378, }; static const uint16_t ud_itab__1110[] = { /* 0 */ 0, 1379, }; static const uint16_t ud_itab__1111[] = { /* 0 */ 0, 1380, }; static const uint16_t ud_itab__1112[] = { /* 0 */ 0, 1381, }; static const uint16_t ud_itab__1113[] = { /* 0 */ 0, 1382, }; static const uint16_t ud_itab__1114[] = { /* 0 */ 0, 1383, }; static const uint16_t ud_itab__1115[] = { /* 0 */ 0, 1384, }; static const uint16_t ud_itab__1116[] = { /* 0 */ 0, 1385, }; static const uint16_t ud_itab__1117[] = { /* 0 */ 0, 1386, }; static const uint16_t ud_itab__1118[] = { /* 0 */ 0, 1387, }; static const uint16_t ud_itab__1119[] = { /* 0 */ 0, 1388, }; static const uint16_t ud_itab__1120[] = { /* 0 */ 0, 1389, }; static const uint16_t ud_itab__1121[] = { /* 0 */ 0, 1390, }; static const uint16_t ud_itab__1122[] = { /* 0 */ 0, 1391, }; static const uint16_t ud_itab__1123[] = { /* 0 */ 0, 1392, }; static const uint16_t ud_itab__1124[] = { /* 0 */ 0, 1393, }; static const uint16_t ud_itab__1125[] = { /* 0 */ 0, 1394, }; static const uint16_t ud_itab__1076[] = { /* 0 */ GROUP(1077), GROUP(1078), GROUP(1079), GROUP(1080), /* 4 */ GROUP(1081), GROUP(1082), GROUP(1083), GROUP(1084), /* 8 */ GROUP(1085), GROUP(1086), GROUP(1087), GROUP(1088), /* c */ GROUP(1089), GROUP(1090), GROUP(1091), GROUP(1092), /* 10 */ GROUP(1093), GROUP(1094), GROUP(1095), GROUP(1096), /* 14 */ GROUP(1097), GROUP(1098), GROUP(1099), GROUP(1100), /* 18 */ GROUP(1101), GROUP(1102), GROUP(1103), GROUP(1104), /* 1c */ GROUP(1105), GROUP(1106), GROUP(1107), GROUP(1108), /* 20 */ GROUP(1109), 0, 0, 0, /* 24 */ 0, 0, 0, 0, /* 28 */ GROUP(1110), GROUP(1111), GROUP(1112), GROUP(1113), /* 2c */ GROUP(1114), GROUP(1115), GROUP(1116), GROUP(1117), /* 30 */ GROUP(1118), GROUP(1119), GROUP(1120), GROUP(1121), /* 34 */ GROUP(1122), GROUP(1123), GROUP(1124), GROUP(1125), /* 38 */ 0, 0, 0, 0, /* 3c */ 0, 0, 0, 0, }; static const uint16_t ud_itab__1066[] = { /* 0 */ GROUP(1067), GROUP(1076), }; static const uint16_t ud_itab__1126[] = { /* 0 */ 1398, 1399, 1400, }; static const uint16_t ud_itab__1127[] = { /* 0 */ 1407, 0, }; static const uint16_t ud_itab__1128[] = { /* 0 */ 1419, 1420, 1421, 1422, /* 4 */ 1423, 1424, 1425, 1426, }; static const uint16_t ud_itab__1129[] = { /* 0 */ 1427, 1428, 1429, 1430, /* 4 */ 1431, 1432, 1433, 1434, }; static const uint16_t ud_itab__1130[] = { /* 0 */ 1441, 1442, 0, 0, /* 4 */ 0, 0, 0, 0, }; static const uint16_t ud_itab__1132[] = { /* 0 */ 1445, 1446, }; static const uint16_t ud_itab__1131[] = { /* 0 */ 1443, 1444, GROUP(1132), 1447, /* 4 */ 1448, 1449, 1450, 0, }; const uint16_t ud_itab__0[] = { /* 0 */ 1, 2, 3, 4, /* 4 */ 5, 6, GROUP(1), GROUP(2), /* 8 */ 9, 10, 11, 12, /* c */ 13, 14, GROUP(3), GROUP(4), /* 10 */ 628, 629, 630, 631, /* 14 */ 632, 633, GROUP(563), GROUP(564), /* 18 */ 636, 637, 638, 639, /* 1c */ 640, 641, GROUP(565), GROUP(566), /* 20 */ 644, 645, 646, 647, /* 24 */ 648, 649, 0, GROUP(567), /* 28 */ 651, 652, 653, 654, /* 2c */ 655, 656, 0, GROUP(568), /* 30 */ 658, 659, 660, 661, /* 34 */ 662, 663, 0, GROUP(569), /* 38 */ 665, 666, 667, 668, /* 3c */ 669, 670, 0, GROUP(570), /* 40 */ 672, 673, 674, 675, /* 44 */ 676, 677, 678, 679, /* 48 */ 680, 681, 682, 683, /* 4c */ 684, 685, 686, 687, /* 50 */ 688, 689, 690, 691, /* 54 */ 692, 693, 694, 695, /* 58 */ 696, 697, 698, 699, /* 5c */ 700, 701, 702, 703, /* 60 */ GROUP(571), GROUP(574), GROUP(577), GROUP(578), /* 64 */ 0, 0, 0, 0, /* 68 */ 711, 712, 713, 714, /* 6c */ 715, GROUP(579), 718, GROUP(580), /* 70 */ 721, 722, 723, 724, /* 74 */ 725, 726, 727, 728, /* 78 */ 729, 730, 731, 732, /* 7c */ 733, 734, 735, 736, /* 80 */ GROUP(581), GROUP(582), GROUP(583), GROUP(592), /* 84 */ 769, 770, 771, 772, /* 88 */ 773, 774, 775, 776, /* 8c */ 777, 778, 779, GROUP(593), /* 90 */ 781, 782, 783, 784, /* 94 */ 785, 786, 787, 788, /* 98 */ GROUP(594), GROUP(595), GROUP(596), 796, /* 9c */ GROUP(597), GROUP(601), 806, 807, /* a0 */ 808, 809, 810, 811, /* a4 */ 812, GROUP(605), 816, GROUP(606), /* a8 */ 820, 821, 822, GROUP(607), /* ac */ 826, GROUP(608), 830, GROUP(609), /* b0 */ 834, 835, 836, 837, /* b4 */ 838, 839, 840, 841, /* b8 */ 842, 843, 844, 845, /* bc */ 846, 847, 848, 849, /* c0 */ GROUP(610), GROUP(611), 866, 867, /* c4 */ GROUP(612), GROUP(613), GROUP(614), GROUP(615), /* c8 */ 872, 873, 874, 875, /* cc */ 876, 877, GROUP(616), GROUP(617), /* d0 */ GROUP(618), GROUP(619), GROUP(620), GROUP(621), /* d4 */ GROUP(622), GROUP(623), GROUP(624), 917, /* d8 */ GROUP(625), GROUP(700), GROUP(762), GROUP(806), /* dc */ GROUP(865), GROUP(940), GROUP(998), GROUP(1066), /* e0 */ 1395, 1396, 1397, GROUP(1126), /* e4 */ 1401, 1402, 1403, 1404, /* e8 */ 1405, 1406, GROUP(1127), 1408, /* ec */ 1409, 1410, 1411, 1412, /* f0 */ 1413, 1414, 1415, 1416, /* f4 */ 1417, 1418, GROUP(1128), GROUP(1129), /* f8 */ 1435, 1436, 1437, 1438, /* fc */ 1439, 1440, GROUP(1130), GROUP(1131), }; struct ud_lookup_table_list_entry ud_lookup_table_list[] = { /* 000 */ { ud_itab__0, UD_TAB__OPC_TABLE, "table0" }, /* 001 */ { ud_itab__1, UD_TAB__OPC_MODE, "/m" }, /* 002 */ { ud_itab__2, UD_TAB__OPC_MODE, "/m" }, /* 003 */ { ud_itab__3, UD_TAB__OPC_MODE, "/m" }, /* 004 */ { ud_itab__4, UD_TAB__OPC_TABLE, "0f" }, /* 005 */ { ud_itab__5, UD_TAB__OPC_REG, "/reg" }, /* 006 */ { ud_itab__6, UD_TAB__OPC_SSE, "/sse" }, /* 007 */ { ud_itab__7, UD_TAB__OPC_SSE, "/sse" }, /* 008 */ { ud_itab__8, UD_TAB__OPC_SSE, "/sse" }, /* 009 */ { ud_itab__9, UD_TAB__OPC_SSE, "/sse" }, /* 010 */ { ud_itab__10, UD_TAB__OPC_SSE, "/sse" }, /* 011 */ { ud_itab__11, UD_TAB__OPC_SSE, "/sse" }, /* 012 */ { ud_itab__12, UD_TAB__OPC_MOD, "/mod" }, /* 013 */ { ud_itab__13, UD_TAB__OPC_REG, "/reg" }, /* 014 */ { ud_itab__14, UD_TAB__OPC_SSE, "/sse" }, /* 015 */ { ud_itab__15, UD_TAB__OPC_MOD, "/mod" }, /* 016 */ { ud_itab__16, UD_TAB__OPC_SSE, "/sse" }, /* 017 */ { ud_itab__17, UD_TAB__OPC_MOD, "/mod" }, /* 018 */ { ud_itab__18, UD_TAB__OPC_SSE, "/sse" }, /* 019 */ { ud_itab__19, UD_TAB__OPC_MOD, "/mod" }, /* 020 */ { ud_itab__20, UD_TAB__OPC_SSE, "/sse" }, /* 021 */ { ud_itab__21, UD_TAB__OPC_MOD, "/mod" }, /* 022 */ { ud_itab__22, UD_TAB__OPC_SSE, "/sse" }, /* 023 */ { ud_itab__23, UD_TAB__OPC_MOD, "/mod" }, /* 024 */ { ud_itab__24, UD_TAB__OPC_SSE, "/sse" }, /* 025 */ { ud_itab__25, UD_TAB__OPC_MOD, "/mod" }, /* 026 */ { ud_itab__26, UD_TAB__OPC_SSE, "/sse" }, /* 027 */ { ud_itab__27, UD_TAB__OPC_MOD, "/mod" }, /* 028 */ { ud_itab__28, UD_TAB__OPC_REG, "/reg" }, /* 029 */ { ud_itab__29, UD_TAB__OPC_RM, "/rm" }, /* 030 */ { ud_itab__30, UD_TAB__OPC_SSE, "/sse" }, /* 031 */ { ud_itab__31, UD_TAB__OPC_MOD, "/mod" }, /* 032 */ { ud_itab__32, UD_TAB__OPC_VENDOR, "intel" }, /* 033 */ { ud_itab__33, UD_TAB__OPC_SSE, "/sse" }, /* 034 */ { ud_itab__34, UD_TAB__OPC_MOD, "/mod" }, /* 035 */ { ud_itab__35, UD_TAB__OPC_VENDOR, "intel" }, /* 036 */ { ud_itab__36, UD_TAB__OPC_SSE, "/sse" }, /* 037 */ { ud_itab__37, UD_TAB__OPC_MOD, "/mod" }, /* 038 */ { ud_itab__38, UD_TAB__OPC_VENDOR, "intel" }, /* 039 */ { ud_itab__39, UD_TAB__OPC_SSE, "/sse" }, /* 040 */ { ud_itab__40, UD_TAB__OPC_MOD, "/mod" }, /* 041 */ { ud_itab__41, UD_TAB__OPC_VENDOR, "intel" }, /* 042 */ { ud_itab__42, UD_TAB__OPC_RM, "/rm" }, /* 043 */ { ud_itab__43, UD_TAB__OPC_SSE, "/sse" }, /* 044 */ { ud_itab__44, UD_TAB__OPC_MOD, "/mod" }, /* 045 */ { ud_itab__45, UD_TAB__OPC_SSE, "/sse" }, /* 046 */ { ud_itab__46, UD_TAB__OPC_MOD, "/mod" }, /* 047 */ { ud_itab__47, UD_TAB__OPC_RM, "/rm" }, /* 048 */ { ud_itab__48, UD_TAB__OPC_SSE, "/sse" }, /* 049 */ { ud_itab__49, UD_TAB__OPC_MOD, "/mod" }, /* 050 */ { ud_itab__50, UD_TAB__OPC_SSE, "/sse" }, /* 051 */ { ud_itab__51, UD_TAB__OPC_MOD, "/mod" }, /* 052 */ { ud_itab__52, UD_TAB__OPC_RM, "/rm" }, /* 053 */ { ud_itab__53, UD_TAB__OPC_SSE, "/sse" }, /* 054 */ { ud_itab__54, UD_TAB__OPC_MOD, "/mod" }, /* 055 */ { ud_itab__55, UD_TAB__OPC_VENDOR, "amd" }, /* 056 */ { ud_itab__56, UD_TAB__OPC_SSE, "/sse" }, /* 057 */ { ud_itab__57, UD_TAB__OPC_MOD, "/mod" }, /* 058 */ { ud_itab__58, UD_TAB__OPC_VENDOR, "amd" }, /* 059 */ { ud_itab__59, UD_TAB__OPC_SSE, "/sse" }, /* 060 */ { ud_itab__60, UD_TAB__OPC_MOD, "/mod" }, /* 061 */ { ud_itab__61, UD_TAB__OPC_VENDOR, "amd" }, /* 062 */ { ud_itab__62, UD_TAB__OPC_SSE, "/sse" }, /* 063 */ { ud_itab__63, UD_TAB__OPC_MOD, "/mod" }, /* 064 */ { ud_itab__64, UD_TAB__OPC_VENDOR, "amd" }, /* 065 */ { ud_itab__65, UD_TAB__OPC_SSE, "/sse" }, /* 066 */ { ud_itab__66, UD_TAB__OPC_MOD, "/mod" }, /* 067 */ { ud_itab__67, UD_TAB__OPC_VENDOR, "amd" }, /* 068 */ { ud_itab__68, UD_TAB__OPC_SSE, "/sse" }, /* 069 */ { ud_itab__69, UD_TAB__OPC_MOD, "/mod" }, /* 070 */ { ud_itab__70, UD_TAB__OPC_VENDOR, "amd" }, /* 071 */ { ud_itab__71, UD_TAB__OPC_SSE, "/sse" }, /* 072 */ { ud_itab__72, UD_TAB__OPC_MOD, "/mod" }, /* 073 */ { ud_itab__73, UD_TAB__OPC_VENDOR, "amd" }, /* 074 */ { ud_itab__74, UD_TAB__OPC_SSE, "/sse" }, /* 075 */ { ud_itab__75, UD_TAB__OPC_MOD, "/mod" }, /* 076 */ { ud_itab__76, UD_TAB__OPC_VENDOR, "amd" }, /* 077 */ { ud_itab__77, UD_TAB__OPC_SSE, "/sse" }, /* 078 */ { ud_itab__78, UD_TAB__OPC_MOD, "/mod" }, /* 079 */ { ud_itab__79, UD_TAB__OPC_SSE, "/sse" }, /* 080 */ { ud_itab__80, UD_TAB__OPC_MOD, "/mod" }, /* 081 */ { ud_itab__81, UD_TAB__OPC_RM, "/rm" }, /* 082 */ { ud_itab__82, UD_TAB__OPC_SSE, "/sse" }, /* 083 */ { ud_itab__83, UD_TAB__OPC_MOD, "/mod" }, /* 084 */ { ud_itab__84, UD_TAB__OPC_SSE, "/sse" }, /* 085 */ { ud_itab__85, UD_TAB__OPC_MOD, "/mod" }, /* 086 */ { ud_itab__86, UD_TAB__OPC_VENDOR, "amd" }, /* 087 */ { ud_itab__87, UD_TAB__OPC_SSE, "/sse" }, /* 088 */ { ud_itab__88, UD_TAB__OPC_SSE, "/sse" }, /* 089 */ { ud_itab__89, UD_TAB__OPC_SSE, "/sse" }, /* 090 */ { ud_itab__90, UD_TAB__OPC_SSE, "/sse" }, /* 091 */ { ud_itab__91, UD_TAB__OPC_SSE, "/sse" }, /* 092 */ { ud_itab__92, UD_TAB__OPC_SSE, "/sse" }, /* 093 */ { ud_itab__93, UD_TAB__OPC_SSE, "/sse" }, /* 094 */ { ud_itab__94, UD_TAB__OPC_SSE, "/sse" }, /* 095 */ { ud_itab__95, UD_TAB__OPC_REG, "/reg" }, /* 096 */ { ud_itab__96, UD_TAB__OPC_SSE, "/sse" }, /* 097 */ { ud_itab__97, UD_TAB__OPC_SSE, "/sse" }, /* 098 */ { ud_itab__98, UD_TAB__OPC_SSE, "/sse" }, /* 099 */ { ud_itab__99, UD_TAB__OPC_SSE, "/sse" }, /* 100 */ { ud_itab__100, UD_TAB__OPC_SSE, "/sse" }, /* 101 */ { ud_itab__101, UD_TAB__OPC_SSE, "/sse" }, /* 102 */ { ud_itab__102, UD_TAB__OPC_SSE, "/sse" }, /* 103 */ { ud_itab__103, UD_TAB__OPC_SSE, "/sse" }, /* 104 */ { ud_itab__104, UD_TAB__OPC_SSE, "/sse" }, /* 105 */ { ud_itab__105, UD_TAB__OPC_3DNOW, "/3dnow" }, /* 106 */ { ud_itab__106, UD_TAB__OPC_SSE, "/sse" }, /* 107 */ { ud_itab__107, UD_TAB__OPC_SSE, "/sse" }, /* 108 */ { ud_itab__108, UD_TAB__OPC_MOD, "/mod" }, /* 109 */ { ud_itab__109, UD_TAB__OPC_SSE, "/sse" }, /* 110 */ { ud_itab__110, UD_TAB__OPC_MOD, "/mod" }, /* 111 */ { ud_itab__111, UD_TAB__OPC_MOD, "/mod" }, /* 112 */ { ud_itab__112, UD_TAB__OPC_MOD, "/mod" }, /* 113 */ { ud_itab__113, UD_TAB__OPC_MOD, "/mod" }, /* 114 */ { ud_itab__114, UD_TAB__OPC_SSE, "/sse" }, /* 115 */ { ud_itab__115, UD_TAB__OPC_MOD, "/mod" }, /* 116 */ { ud_itab__116, UD_TAB__OPC_MOD, "/mod" }, /* 117 */ { ud_itab__117, UD_TAB__OPC_MOD, "/mod" }, /* 118 */ { ud_itab__118, UD_TAB__OPC_SSE, "/sse" }, /* 119 */ { ud_itab__119, UD_TAB__OPC_SSE, "/sse" }, /* 120 */ { ud_itab__120, UD_TAB__OPC_SSE, "/sse" }, /* 121 */ { ud_itab__121, UD_TAB__OPC_MOD, "/mod" }, /* 122 */ { ud_itab__122, UD_TAB__OPC_SSE, "/sse" }, /* 123 */ { ud_itab__123, UD_TAB__OPC_MOD, "/mod" }, /* 124 */ { ud_itab__124, UD_TAB__OPC_MOD, "/mod" }, /* 125 */ { ud_itab__125, UD_TAB__OPC_MOD, "/mod" }, /* 126 */ { ud_itab__126, UD_TAB__OPC_SSE, "/sse" }, /* 127 */ { ud_itab__127, UD_TAB__OPC_MOD, "/mod" }, /* 128 */ { ud_itab__128, UD_TAB__OPC_MOD, "/mod" }, /* 129 */ { ud_itab__129, UD_TAB__OPC_SSE, "/sse" }, /* 130 */ { ud_itab__130, UD_TAB__OPC_REG, "/reg" }, /* 131 */ { ud_itab__131, UD_TAB__OPC_SSE, "/sse" }, /* 132 */ { ud_itab__132, UD_TAB__OPC_SSE, "/sse" }, /* 133 */ { ud_itab__133, UD_TAB__OPC_SSE, "/sse" }, /* 134 */ { ud_itab__134, UD_TAB__OPC_SSE, "/sse" }, /* 135 */ { ud_itab__135, UD_TAB__OPC_SSE, "/sse" }, /* 136 */ { ud_itab__136, UD_TAB__OPC_SSE, "/sse" }, /* 137 */ { ud_itab__137, UD_TAB__OPC_SSE, "/sse" }, /* 138 */ { ud_itab__138, UD_TAB__OPC_SSE, "/sse" }, /* 139 */ { ud_itab__139, UD_TAB__OPC_SSE, "/sse" }, /* 140 */ { ud_itab__140, UD_TAB__OPC_SSE, "/sse" }, /* 141 */ { ud_itab__141, UD_TAB__OPC_SSE, "/sse" }, /* 142 */ { ud_itab__142, UD_TAB__OPC_SSE, "/sse" }, /* 143 */ { ud_itab__143, UD_TAB__OPC_SSE, "/sse" }, /* 144 */ { ud_itab__144, UD_TAB__OPC_SSE, "/sse" }, /* 145 */ { ud_itab__145, UD_TAB__OPC_SSE, "/sse" }, /* 146 */ { ud_itab__146, UD_TAB__OPC_SSE, "/sse" }, /* 147 */ { ud_itab__147, UD_TAB__OPC_SSE, "/sse" }, /* 148 */ { ud_itab__148, UD_TAB__OPC_SSE, "/sse" }, /* 149 */ { ud_itab__149, UD_TAB__OPC_SSE, "/sse" }, /* 150 */ { ud_itab__150, UD_TAB__OPC_SSE, "/sse" }, /* 151 */ { ud_itab__151, UD_TAB__OPC_SSE, "/sse" }, /* 152 */ { ud_itab__152, UD_TAB__OPC_SSE, "/sse" }, /* 153 */ { ud_itab__153, UD_TAB__OPC_SSE, "/sse" }, /* 154 */ { ud_itab__154, UD_TAB__OPC_SSE, "/sse" }, /* 155 */ { ud_itab__155, UD_TAB__OPC_SSE, "/sse" }, /* 156 */ { ud_itab__156, UD_TAB__OPC_SSE, "/sse" }, /* 157 */ { ud_itab__157, UD_TAB__OPC_SSE, "/sse" }, /* 158 */ { ud_itab__158, UD_TAB__OPC_SSE, "/sse" }, /* 159 */ { ud_itab__159, UD_TAB__OPC_MODE, "/m" }, /* 160 */ { ud_itab__160, UD_TAB__OPC_VENDOR, "intel" }, /* 161 */ { ud_itab__161, UD_TAB__OPC_SSE, "/sse" }, /* 162 */ { ud_itab__162, UD_TAB__OPC_MODE, "/m" }, /* 163 */ { ud_itab__163, UD_TAB__OPC_VENDOR, "intel" }, /* 164 */ { ud_itab__164, UD_TAB__OPC_SSE, "/sse" }, /* 165 */ { ud_itab__165, UD_TAB__OPC_TABLE, "38" }, /* 166 */ { ud_itab__166, UD_TAB__OPC_SSE, "/sse" }, /* 167 */ { ud_itab__167, UD_TAB__OPC_SSE, "/sse" }, /* 168 */ { ud_itab__168, UD_TAB__OPC_SSE, "/sse" }, /* 169 */ { ud_itab__169, UD_TAB__OPC_SSE, "/sse" }, /* 170 */ { ud_itab__170, UD_TAB__OPC_SSE, "/sse" }, /* 171 */ { ud_itab__171, UD_TAB__OPC_SSE, "/sse" }, /* 172 */ { ud_itab__172, UD_TAB__OPC_SSE, "/sse" }, /* 173 */ { ud_itab__173, UD_TAB__OPC_SSE, "/sse" }, /* 174 */ { ud_itab__174, UD_TAB__OPC_SSE, "/sse" }, /* 175 */ { ud_itab__175, UD_TAB__OPC_SSE, "/sse" }, /* 176 */ { ud_itab__176, UD_TAB__OPC_SSE, "/sse" }, /* 177 */ { ud_itab__177, UD_TAB__OPC_SSE, "/sse" }, /* 178 */ { ud_itab__178, UD_TAB__OPC_SSE, "/sse" }, /* 179 */ { ud_itab__179, UD_TAB__OPC_SSE, "/sse" }, /* 180 */ { ud_itab__180, UD_TAB__OPC_SSE, "/sse" }, /* 181 */ { ud_itab__181, UD_TAB__OPC_SSE, "/sse" }, /* 182 */ { ud_itab__182, UD_TAB__OPC_SSE, "/sse" }, /* 183 */ { ud_itab__183, UD_TAB__OPC_SSE, "/sse" }, /* 184 */ { ud_itab__184, UD_TAB__OPC_SSE, "/sse" }, /* 185 */ { ud_itab__185, UD_TAB__OPC_SSE, "/sse" }, /* 186 */ { ud_itab__186, UD_TAB__OPC_SSE, "/sse" }, /* 187 */ { ud_itab__187, UD_TAB__OPC_SSE, "/sse" }, /* 188 */ { ud_itab__188, UD_TAB__OPC_SSE, "/sse" }, /* 189 */ { ud_itab__189, UD_TAB__OPC_SSE, "/sse" }, /* 190 */ { ud_itab__190, UD_TAB__OPC_SSE, "/sse" }, /* 191 */ { ud_itab__191, UD_TAB__OPC_SSE, "/sse" }, /* 192 */ { ud_itab__192, UD_TAB__OPC_SSE, "/sse" }, /* 193 */ { ud_itab__193, UD_TAB__OPC_SSE, "/sse" }, /* 194 */ { ud_itab__194, UD_TAB__OPC_SSE, "/sse" }, /* 195 */ { ud_itab__195, UD_TAB__OPC_SSE, "/sse" }, /* 196 */ { ud_itab__196, UD_TAB__OPC_SSE, "/sse" }, /* 197 */ { ud_itab__197, UD_TAB__OPC_SSE, "/sse" }, /* 198 */ { ud_itab__198, UD_TAB__OPC_SSE, "/sse" }, /* 199 */ { ud_itab__199, UD_TAB__OPC_SSE, "/sse" }, /* 200 */ { ud_itab__200, UD_TAB__OPC_SSE, "/sse" }, /* 201 */ { ud_itab__201, UD_TAB__OPC_SSE, "/sse" }, /* 202 */ { ud_itab__202, UD_TAB__OPC_SSE, "/sse" }, /* 203 */ { ud_itab__203, UD_TAB__OPC_SSE, "/sse" }, /* 204 */ { ud_itab__204, UD_TAB__OPC_SSE, "/sse" }, /* 205 */ { ud_itab__205, UD_TAB__OPC_SSE, "/sse" }, /* 206 */ { ud_itab__206, UD_TAB__OPC_SSE, "/sse" }, /* 207 */ { ud_itab__207, UD_TAB__OPC_SSE, "/sse" }, /* 208 */ { ud_itab__208, UD_TAB__OPC_SSE, "/sse" }, /* 209 */ { ud_itab__209, UD_TAB__OPC_SSE, "/sse" }, /* 210 */ { ud_itab__210, UD_TAB__OPC_SSE, "/sse" }, /* 211 */ { ud_itab__211, UD_TAB__OPC_SSE, "/sse" }, /* 212 */ { ud_itab__212, UD_TAB__OPC_SSE, "/sse" }, /* 213 */ { ud_itab__213, UD_TAB__OPC_MODE, "/m" }, /* 214 */ { ud_itab__214, UD_TAB__OPC_VENDOR, "intel" }, /* 215 */ { ud_itab__215, UD_TAB__OPC_SSE, "/sse" }, /* 216 */ { ud_itab__216, UD_TAB__OPC_MODE, "/m" }, /* 217 */ { ud_itab__217, UD_TAB__OPC_VENDOR, "intel" }, /* 218 */ { ud_itab__218, UD_TAB__OPC_SSE, "/sse" }, /* 219 */ { ud_itab__219, UD_TAB__OPC_SSE, "/sse" }, /* 220 */ { ud_itab__220, UD_TAB__OPC_SSE, "/sse" }, /* 221 */ { ud_itab__221, UD_TAB__OPC_SSE, "/sse" }, /* 222 */ { ud_itab__222, UD_TAB__OPC_SSE, "/sse" }, /* 223 */ { ud_itab__223, UD_TAB__OPC_SSE, "/sse" }, /* 224 */ { ud_itab__224, UD_TAB__OPC_SSE, "/sse" }, /* 225 */ { ud_itab__225, UD_TAB__OPC_TABLE, "3a" }, /* 226 */ { ud_itab__226, UD_TAB__OPC_SSE, "/sse" }, /* 227 */ { ud_itab__227, UD_TAB__OPC_SSE, "/sse" }, /* 228 */ { ud_itab__228, UD_TAB__OPC_SSE, "/sse" }, /* 229 */ { ud_itab__229, UD_TAB__OPC_SSE, "/sse" }, /* 230 */ { ud_itab__230, UD_TAB__OPC_SSE, "/sse" }, /* 231 */ { ud_itab__231, UD_TAB__OPC_SSE, "/sse" }, /* 232 */ { ud_itab__232, UD_TAB__OPC_SSE, "/sse" }, /* 233 */ { ud_itab__233, UD_TAB__OPC_SSE, "/sse" }, /* 234 */ { ud_itab__234, UD_TAB__OPC_SSE, "/sse" }, /* 235 */ { ud_itab__235, UD_TAB__OPC_SSE, "/sse" }, /* 236 */ { ud_itab__236, UD_TAB__OPC_SSE, "/sse" }, /* 237 */ { ud_itab__237, UD_TAB__OPC_OSIZE, "/o" }, /* 238 */ { ud_itab__238, UD_TAB__OPC_SSE, "/sse" }, /* 239 */ { ud_itab__239, UD_TAB__OPC_SSE, "/sse" }, /* 240 */ { ud_itab__240, UD_TAB__OPC_SSE, "/sse" }, /* 241 */ { ud_itab__241, UD_TAB__OPC_SSE, "/sse" }, /* 242 */ { ud_itab__242, UD_TAB__OPC_OSIZE, "/o" }, /* 243 */ { ud_itab__243, UD_TAB__OPC_SSE, "/sse" }, /* 244 */ { ud_itab__244, UD_TAB__OPC_SSE, "/sse" }, /* 245 */ { ud_itab__245, UD_TAB__OPC_SSE, "/sse" }, /* 246 */ { ud_itab__246, UD_TAB__OPC_SSE, "/sse" }, /* 247 */ { ud_itab__247, UD_TAB__OPC_SSE, "/sse" }, /* 248 */ { ud_itab__248, UD_TAB__OPC_SSE, "/sse" }, /* 249 */ { ud_itab__249, UD_TAB__OPC_SSE, "/sse" }, /* 250 */ { ud_itab__250, UD_TAB__OPC_SSE, "/sse" }, /* 251 */ { ud_itab__251, UD_TAB__OPC_SSE, "/sse" }, /* 252 */ { ud_itab__252, UD_TAB__OPC_SSE, "/sse" }, /* 253 */ { ud_itab__253, UD_TAB__OPC_SSE, "/sse" }, /* 254 */ { ud_itab__254, UD_TAB__OPC_SSE, "/sse" }, /* 255 */ { ud_itab__255, UD_TAB__OPC_SSE, "/sse" }, /* 256 */ { ud_itab__256, UD_TAB__OPC_SSE, "/sse" }, /* 257 */ { ud_itab__257, UD_TAB__OPC_SSE, "/sse" }, /* 258 */ { ud_itab__258, UD_TAB__OPC_SSE, "/sse" }, /* 259 */ { ud_itab__259, UD_TAB__OPC_SSE, "/sse" }, /* 260 */ { ud_itab__260, UD_TAB__OPC_SSE, "/sse" }, /* 261 */ { ud_itab__261, UD_TAB__OPC_SSE, "/sse" }, /* 262 */ { ud_itab__262, UD_TAB__OPC_SSE, "/sse" }, /* 263 */ { ud_itab__263, UD_TAB__OPC_SSE, "/sse" }, /* 264 */ { ud_itab__264, UD_TAB__OPC_SSE, "/sse" }, /* 265 */ { ud_itab__265, UD_TAB__OPC_SSE, "/sse" }, /* 266 */ { ud_itab__266, UD_TAB__OPC_SSE, "/sse" }, /* 267 */ { ud_itab__267, UD_TAB__OPC_SSE, "/sse" }, /* 268 */ { ud_itab__268, UD_TAB__OPC_SSE, "/sse" }, /* 269 */ { ud_itab__269, UD_TAB__OPC_SSE, "/sse" }, /* 270 */ { ud_itab__270, UD_TAB__OPC_SSE, "/sse" }, /* 271 */ { ud_itab__271, UD_TAB__OPC_SSE, "/sse" }, /* 272 */ { ud_itab__272, UD_TAB__OPC_SSE, "/sse" }, /* 273 */ { ud_itab__273, UD_TAB__OPC_SSE, "/sse" }, /* 274 */ { ud_itab__274, UD_TAB__OPC_SSE, "/sse" }, /* 275 */ { ud_itab__275, UD_TAB__OPC_SSE, "/sse" }, /* 276 */ { ud_itab__276, UD_TAB__OPC_SSE, "/sse" }, /* 277 */ { ud_itab__277, UD_TAB__OPC_SSE, "/sse" }, /* 278 */ { ud_itab__278, UD_TAB__OPC_SSE, "/sse" }, /* 279 */ { ud_itab__279, UD_TAB__OPC_SSE, "/sse" }, /* 280 */ { ud_itab__280, UD_TAB__OPC_SSE, "/sse" }, /* 281 */ { ud_itab__281, UD_TAB__OPC_SSE, "/sse" }, /* 282 */ { ud_itab__282, UD_TAB__OPC_SSE, "/sse" }, /* 283 */ { ud_itab__283, UD_TAB__OPC_SSE, "/sse" }, /* 284 */ { ud_itab__284, UD_TAB__OPC_SSE, "/sse" }, /* 285 */ { ud_itab__285, UD_TAB__OPC_SSE, "/sse" }, /* 286 */ { ud_itab__286, UD_TAB__OPC_SSE, "/sse" }, /* 287 */ { ud_itab__287, UD_TAB__OPC_SSE, "/sse" }, /* 288 */ { ud_itab__288, UD_TAB__OPC_SSE, "/sse" }, /* 289 */ { ud_itab__289, UD_TAB__OPC_SSE, "/sse" }, /* 290 */ { ud_itab__290, UD_TAB__OPC_SSE, "/sse" }, /* 291 */ { ud_itab__291, UD_TAB__OPC_SSE, "/sse" }, /* 292 */ { ud_itab__292, UD_TAB__OPC_SSE, "/sse" }, /* 293 */ { ud_itab__293, UD_TAB__OPC_SSE, "/sse" }, /* 294 */ { ud_itab__294, UD_TAB__OPC_SSE, "/sse" }, /* 295 */ { ud_itab__295, UD_TAB__OPC_SSE, "/sse" }, /* 296 */ { ud_itab__296, UD_TAB__OPC_SSE, "/sse" }, /* 297 */ { ud_itab__297, UD_TAB__OPC_SSE, "/sse" }, /* 298 */ { ud_itab__298, UD_TAB__OPC_SSE, "/sse" }, /* 299 */ { ud_itab__299, UD_TAB__OPC_SSE, "/sse" }, /* 300 */ { ud_itab__300, UD_TAB__OPC_SSE, "/sse" }, /* 301 */ { ud_itab__301, UD_TAB__OPC_REG, "/reg" }, /* 302 */ { ud_itab__302, UD_TAB__OPC_SSE, "/sse" }, /* 303 */ { ud_itab__303, UD_TAB__OPC_SSE, "/sse" }, /* 304 */ { ud_itab__304, UD_TAB__OPC_SSE, "/sse" }, /* 305 */ { ud_itab__305, UD_TAB__OPC_REG, "/reg" }, /* 306 */ { ud_itab__306, UD_TAB__OPC_SSE, "/sse" }, /* 307 */ { ud_itab__307, UD_TAB__OPC_SSE, "/sse" }, /* 308 */ { ud_itab__308, UD_TAB__OPC_SSE, "/sse" }, /* 309 */ { ud_itab__309, UD_TAB__OPC_REG, "/reg" }, /* 310 */ { ud_itab__310, UD_TAB__OPC_SSE, "/sse" }, /* 311 */ { ud_itab__311, UD_TAB__OPC_SSE, "/sse" }, /* 312 */ { ud_itab__312, UD_TAB__OPC_SSE, "/sse" }, /* 313 */ { ud_itab__313, UD_TAB__OPC_SSE, "/sse" }, /* 314 */ { ud_itab__314, UD_TAB__OPC_SSE, "/sse" }, /* 315 */ { ud_itab__315, UD_TAB__OPC_SSE, "/sse" }, /* 316 */ { ud_itab__316, UD_TAB__OPC_SSE, "/sse" }, /* 317 */ { ud_itab__317, UD_TAB__OPC_SSE, "/sse" }, /* 318 */ { ud_itab__318, UD_TAB__OPC_SSE, "/sse" }, /* 319 */ { ud_itab__319, UD_TAB__OPC_VENDOR, "intel" }, /* 320 */ { ud_itab__320, UD_TAB__OPC_SSE, "/sse" }, /* 321 */ { ud_itab__321, UD_TAB__OPC_VENDOR, "intel" }, /* 322 */ { ud_itab__322, UD_TAB__OPC_SSE, "/sse" }, /* 323 */ { ud_itab__323, UD_TAB__OPC_SSE, "/sse" }, /* 324 */ { ud_itab__324, UD_TAB__OPC_SSE, "/sse" }, /* 325 */ { ud_itab__325, UD_TAB__OPC_SSE, "/sse" }, /* 326 */ { ud_itab__326, UD_TAB__OPC_SSE, "/sse" }, /* 327 */ { ud_itab__327, UD_TAB__OPC_SSE, "/sse" }, /* 328 */ { ud_itab__328, UD_TAB__OPC_SSE, "/sse" }, /* 329 */ { ud_itab__329, UD_TAB__OPC_SSE, "/sse" }, /* 330 */ { ud_itab__330, UD_TAB__OPC_SSE, "/sse" }, /* 331 */ { ud_itab__331, UD_TAB__OPC_SSE, "/sse" }, /* 332 */ { ud_itab__332, UD_TAB__OPC_SSE, "/sse" }, /* 333 */ { ud_itab__333, UD_TAB__OPC_SSE, "/sse" }, /* 334 */ { ud_itab__334, UD_TAB__OPC_SSE, "/sse" }, /* 335 */ { ud_itab__335, UD_TAB__OPC_SSE, "/sse" }, /* 336 */ { ud_itab__336, UD_TAB__OPC_SSE, "/sse" }, /* 337 */ { ud_itab__337, UD_TAB__OPC_SSE, "/sse" }, /* 338 */ { ud_itab__338, UD_TAB__OPC_SSE, "/sse" }, /* 339 */ { ud_itab__339, UD_TAB__OPC_SSE, "/sse" }, /* 340 */ { ud_itab__340, UD_TAB__OPC_SSE, "/sse" }, /* 341 */ { ud_itab__341, UD_TAB__OPC_SSE, "/sse" }, /* 342 */ { ud_itab__342, UD_TAB__OPC_SSE, "/sse" }, /* 343 */ { ud_itab__343, UD_TAB__OPC_SSE, "/sse" }, /* 344 */ { ud_itab__344, UD_TAB__OPC_SSE, "/sse" }, /* 345 */ { ud_itab__345, UD_TAB__OPC_SSE, "/sse" }, /* 346 */ { ud_itab__346, UD_TAB__OPC_SSE, "/sse" }, /* 347 */ { ud_itab__347, UD_TAB__OPC_SSE, "/sse" }, /* 348 */ { ud_itab__348, UD_TAB__OPC_SSE, "/sse" }, /* 349 */ { ud_itab__349, UD_TAB__OPC_SSE, "/sse" }, /* 350 */ { ud_itab__350, UD_TAB__OPC_SSE, "/sse" }, /* 351 */ { ud_itab__351, UD_TAB__OPC_SSE, "/sse" }, /* 352 */ { ud_itab__352, UD_TAB__OPC_SSE, "/sse" }, /* 353 */ { ud_itab__353, UD_TAB__OPC_SSE, "/sse" }, /* 354 */ { ud_itab__354, UD_TAB__OPC_SSE, "/sse" }, /* 355 */ { ud_itab__355, UD_TAB__OPC_SSE, "/sse" }, /* 356 */ { ud_itab__356, UD_TAB__OPC_SSE, "/sse" }, /* 357 */ { ud_itab__357, UD_TAB__OPC_SSE, "/sse" }, /* 358 */ { ud_itab__358, UD_TAB__OPC_SSE, "/sse" }, /* 359 */ { ud_itab__359, UD_TAB__OPC_SSE, "/sse" }, /* 360 */ { ud_itab__360, UD_TAB__OPC_SSE, "/sse" }, /* 361 */ { ud_itab__361, UD_TAB__OPC_SSE, "/sse" }, /* 362 */ { ud_itab__362, UD_TAB__OPC_SSE, "/sse" }, /* 363 */ { ud_itab__363, UD_TAB__OPC_SSE, "/sse" }, /* 364 */ { ud_itab__364, UD_TAB__OPC_MOD, "/mod" }, /* 365 */ { ud_itab__365, UD_TAB__OPC_REG, "/reg" }, /* 366 */ { ud_itab__366, UD_TAB__OPC_RM, "/rm" }, /* 367 */ { ud_itab__367, UD_TAB__OPC_SSE, "/sse" }, /* 368 */ { ud_itab__368, UD_TAB__OPC_MOD, "/mod" }, /* 369 */ { ud_itab__369, UD_TAB__OPC_RM, "/rm" }, /* 370 */ { ud_itab__370, UD_TAB__OPC_SSE, "/sse" }, /* 371 */ { ud_itab__371, UD_TAB__OPC_MOD, "/mod" }, /* 372 */ { ud_itab__372, UD_TAB__OPC_RM, "/rm" }, /* 373 */ { ud_itab__373, UD_TAB__OPC_SSE, "/sse" }, /* 374 */ { ud_itab__374, UD_TAB__OPC_MOD, "/mod" }, /* 375 */ { ud_itab__375, UD_TAB__OPC_MOD, "/mod" }, /* 376 */ { ud_itab__376, UD_TAB__OPC_REG, "/reg" }, /* 377 */ { ud_itab__377, UD_TAB__OPC_RM, "/rm" }, /* 378 */ { ud_itab__378, UD_TAB__OPC_SSE, "/sse" }, /* 379 */ { ud_itab__379, UD_TAB__OPC_MOD, "/mod" }, /* 380 */ { ud_itab__380, UD_TAB__OPC_RM, "/rm" }, /* 381 */ { ud_itab__381, UD_TAB__OPC_SSE, "/sse" }, /* 382 */ { ud_itab__382, UD_TAB__OPC_MOD, "/mod" }, /* 383 */ { ud_itab__383, UD_TAB__OPC_RM, "/rm" }, /* 384 */ { ud_itab__384, UD_TAB__OPC_SSE, "/sse" }, /* 385 */ { ud_itab__385, UD_TAB__OPC_MOD, "/mod" }, /* 386 */ { ud_itab__386, UD_TAB__OPC_RM, "/rm" }, /* 387 */ { ud_itab__387, UD_TAB__OPC_SSE, "/sse" }, /* 388 */ { ud_itab__388, UD_TAB__OPC_MOD, "/mod" }, /* 389 */ { ud_itab__389, UD_TAB__OPC_RM, "/rm" }, /* 390 */ { ud_itab__390, UD_TAB__OPC_SSE, "/sse" }, /* 391 */ { ud_itab__391, UD_TAB__OPC_MOD, "/mod" }, /* 392 */ { ud_itab__392, UD_TAB__OPC_RM, "/rm" }, /* 393 */ { ud_itab__393, UD_TAB__OPC_SSE, "/sse" }, /* 394 */ { ud_itab__394, UD_TAB__OPC_MOD, "/mod" }, /* 395 */ { ud_itab__395, UD_TAB__OPC_SSE, "/sse" }, /* 396 */ { ud_itab__396, UD_TAB__OPC_SSE, "/sse" }, /* 397 */ { ud_itab__397, UD_TAB__OPC_SSE, "/sse" }, /* 398 */ { ud_itab__398, UD_TAB__OPC_SSE, "/sse" }, /* 399 */ { ud_itab__399, UD_TAB__OPC_SSE, "/sse" }, /* 400 */ { ud_itab__400, UD_TAB__OPC_SSE, "/sse" }, /* 401 */ { ud_itab__401, UD_TAB__OPC_MOD, "/mod" }, /* 402 */ { ud_itab__402, UD_TAB__OPC_REG, "/reg" }, /* 403 */ { ud_itab__403, UD_TAB__OPC_SSE, "/sse" }, /* 404 */ { ud_itab__404, UD_TAB__OPC_MOD, "/mod" }, /* 405 */ { ud_itab__405, UD_TAB__OPC_SSE, "/sse" }, /* 406 */ { ud_itab__406, UD_TAB__OPC_MOD, "/mod" }, /* 407 */ { ud_itab__407, UD_TAB__OPC_SSE, "/sse" }, /* 408 */ { ud_itab__408, UD_TAB__OPC_MOD, "/mod" }, /* 409 */ { ud_itab__409, UD_TAB__OPC_SSE, "/sse" }, /* 410 */ { ud_itab__410, UD_TAB__OPC_MOD, "/mod" }, /* 411 */ { ud_itab__411, UD_TAB__OPC_SSE, "/sse" }, /* 412 */ { ud_itab__412, UD_TAB__OPC_MOD, "/mod" }, /* 413 */ { ud_itab__413, UD_TAB__OPC_SSE, "/sse" }, /* 414 */ { ud_itab__414, UD_TAB__OPC_MOD, "/mod" }, /* 415 */ { ud_itab__415, UD_TAB__OPC_SSE, "/sse" }, /* 416 */ { ud_itab__416, UD_TAB__OPC_MOD, "/mod" }, /* 417 */ { ud_itab__417, UD_TAB__OPC_REG, "/reg" }, /* 418 */ { ud_itab__418, UD_TAB__OPC_RM, "/rm" }, /* 419 */ { ud_itab__419, UD_TAB__OPC_SSE, "/sse" }, /* 420 */ { ud_itab__420, UD_TAB__OPC_MOD, "/mod" }, /* 421 */ { ud_itab__421, UD_TAB__OPC_SSE, "/sse" }, /* 422 */ { ud_itab__422, UD_TAB__OPC_MOD, "/mod" }, /* 423 */ { ud_itab__423, UD_TAB__OPC_SSE, "/sse" }, /* 424 */ { ud_itab__424, UD_TAB__OPC_MOD, "/mod" }, /* 425 */ { ud_itab__425, UD_TAB__OPC_SSE, "/sse" }, /* 426 */ { ud_itab__426, UD_TAB__OPC_MOD, "/mod" }, /* 427 */ { ud_itab__427, UD_TAB__OPC_SSE, "/sse" }, /* 428 */ { ud_itab__428, UD_TAB__OPC_MOD, "/mod" }, /* 429 */ { ud_itab__429, UD_TAB__OPC_SSE, "/sse" }, /* 430 */ { ud_itab__430, UD_TAB__OPC_MOD, "/mod" }, /* 431 */ { ud_itab__431, UD_TAB__OPC_SSE, "/sse" }, /* 432 */ { ud_itab__432, UD_TAB__OPC_MOD, "/mod" }, /* 433 */ { ud_itab__433, UD_TAB__OPC_SSE, "/sse" }, /* 434 */ { ud_itab__434, UD_TAB__OPC_MOD, "/mod" }, /* 435 */ { ud_itab__435, UD_TAB__OPC_RM, "/rm" }, /* 436 */ { ud_itab__436, UD_TAB__OPC_SSE, "/sse" }, /* 437 */ { ud_itab__437, UD_TAB__OPC_MOD, "/mod" }, /* 438 */ { ud_itab__438, UD_TAB__OPC_SSE, "/sse" }, /* 439 */ { ud_itab__439, UD_TAB__OPC_MOD, "/mod" }, /* 440 */ { ud_itab__440, UD_TAB__OPC_SSE, "/sse" }, /* 441 */ { ud_itab__441, UD_TAB__OPC_MOD, "/mod" }, /* 442 */ { ud_itab__442, UD_TAB__OPC_SSE, "/sse" }, /* 443 */ { ud_itab__443, UD_TAB__OPC_MOD, "/mod" }, /* 444 */ { ud_itab__444, UD_TAB__OPC_SSE, "/sse" }, /* 445 */ { ud_itab__445, UD_TAB__OPC_MOD, "/mod" }, /* 446 */ { ud_itab__446, UD_TAB__OPC_SSE, "/sse" }, /* 447 */ { ud_itab__447, UD_TAB__OPC_MOD, "/mod" }, /* 448 */ { ud_itab__448, UD_TAB__OPC_SSE, "/sse" }, /* 449 */ { ud_itab__449, UD_TAB__OPC_MOD, "/mod" }, /* 450 */ { ud_itab__450, UD_TAB__OPC_SSE, "/sse" }, /* 451 */ { ud_itab__451, UD_TAB__OPC_MOD, "/mod" }, /* 452 */ { ud_itab__452, UD_TAB__OPC_RM, "/rm" }, /* 453 */ { ud_itab__453, UD_TAB__OPC_SSE, "/sse" }, /* 454 */ { ud_itab__454, UD_TAB__OPC_MOD, "/mod" }, /* 455 */ { ud_itab__455, UD_TAB__OPC_SSE, "/sse" }, /* 456 */ { ud_itab__456, UD_TAB__OPC_MOD, "/mod" }, /* 457 */ { ud_itab__457, UD_TAB__OPC_SSE, "/sse" }, /* 458 */ { ud_itab__458, UD_TAB__OPC_MOD, "/mod" }, /* 459 */ { ud_itab__459, UD_TAB__OPC_SSE, "/sse" }, /* 460 */ { ud_itab__460, UD_TAB__OPC_MOD, "/mod" }, /* 461 */ { ud_itab__461, UD_TAB__OPC_SSE, "/sse" }, /* 462 */ { ud_itab__462, UD_TAB__OPC_MOD, "/mod" }, /* 463 */ { ud_itab__463, UD_TAB__OPC_SSE, "/sse" }, /* 464 */ { ud_itab__464, UD_TAB__OPC_MOD, "/mod" }, /* 465 */ { ud_itab__465, UD_TAB__OPC_SSE, "/sse" }, /* 466 */ { ud_itab__466, UD_TAB__OPC_MOD, "/mod" }, /* 467 */ { ud_itab__467, UD_TAB__OPC_SSE, "/sse" }, /* 468 */ { ud_itab__468, UD_TAB__OPC_MOD, "/mod" }, /* 469 */ { ud_itab__469, UD_TAB__OPC_SSE, "/sse" }, /* 470 */ { ud_itab__470, UD_TAB__OPC_SSE, "/sse" }, /* 471 */ { ud_itab__471, UD_TAB__OPC_SSE, "/sse" }, /* 472 */ { ud_itab__472, UD_TAB__OPC_SSE, "/sse" }, /* 473 */ { ud_itab__473, UD_TAB__OPC_SSE, "/sse" }, /* 474 */ { ud_itab__474, UD_TAB__OPC_SSE, "/sse" }, /* 475 */ { ud_itab__475, UD_TAB__OPC_SSE, "/sse" }, /* 476 */ { ud_itab__476, UD_TAB__OPC_SSE, "/sse" }, /* 477 */ { ud_itab__477, UD_TAB__OPC_SSE, "/sse" }, /* 478 */ { ud_itab__478, UD_TAB__OPC_SSE, "/sse" }, /* 479 */ { ud_itab__479, UD_TAB__OPC_REG, "/reg" }, /* 480 */ { ud_itab__480, UD_TAB__OPC_SSE, "/sse" }, /* 481 */ { ud_itab__481, UD_TAB__OPC_SSE, "/sse" }, /* 482 */ { ud_itab__482, UD_TAB__OPC_SSE, "/sse" }, /* 483 */ { ud_itab__483, UD_TAB__OPC_SSE, "/sse" }, /* 484 */ { ud_itab__484, UD_TAB__OPC_SSE, "/sse" }, /* 485 */ { ud_itab__485, UD_TAB__OPC_SSE, "/sse" }, /* 486 */ { ud_itab__486, UD_TAB__OPC_SSE, "/sse" }, /* 487 */ { ud_itab__487, UD_TAB__OPC_SSE, "/sse" }, /* 488 */ { ud_itab__488, UD_TAB__OPC_SSE, "/sse" }, /* 489 */ { ud_itab__489, UD_TAB__OPC_SSE, "/sse" }, /* 490 */ { ud_itab__490, UD_TAB__OPC_SSE, "/sse" }, /* 491 */ { ud_itab__491, UD_TAB__OPC_SSE, "/sse" }, /* 492 */ { ud_itab__492, UD_TAB__OPC_SSE, "/sse" }, /* 493 */ { ud_itab__493, UD_TAB__OPC_SSE, "/sse" }, /* 494 */ { ud_itab__494, UD_TAB__OPC_SSE, "/sse" }, /* 495 */ { ud_itab__495, UD_TAB__OPC_SSE, "/sse" }, /* 496 */ { ud_itab__496, UD_TAB__OPC_REG, "/reg" }, /* 497 */ { ud_itab__497, UD_TAB__OPC_SSE, "/sse" }, /* 498 */ { ud_itab__498, UD_TAB__OPC_OSIZE, "/o" }, /* 499 */ { ud_itab__499, UD_TAB__OPC_SSE, "/sse" }, /* 500 */ { ud_itab__500, UD_TAB__OPC_VENDOR, "intel" }, /* 501 */ { ud_itab__501, UD_TAB__OPC_VENDOR, "intel" }, /* 502 */ { ud_itab__502, UD_TAB__OPC_VENDOR, "intel" }, /* 503 */ { ud_itab__503, UD_TAB__OPC_SSE, "/sse" }, /* 504 */ { ud_itab__504, UD_TAB__OPC_VENDOR, "intel" }, /* 505 */ { ud_itab__505, UD_TAB__OPC_SSE, "/sse" }, /* 506 */ { ud_itab__506, UD_TAB__OPC_SSE, "/sse" }, /* 507 */ { ud_itab__507, UD_TAB__OPC_SSE, "/sse" }, /* 508 */ { ud_itab__508, UD_TAB__OPC_SSE, "/sse" }, /* 509 */ { ud_itab__509, UD_TAB__OPC_SSE, "/sse" }, /* 510 */ { ud_itab__510, UD_TAB__OPC_SSE, "/sse" }, /* 511 */ { ud_itab__511, UD_TAB__OPC_SSE, "/sse" }, /* 512 */ { ud_itab__512, UD_TAB__OPC_SSE, "/sse" }, /* 513 */ { ud_itab__513, UD_TAB__OPC_SSE, "/sse" }, /* 514 */ { ud_itab__514, UD_TAB__OPC_SSE, "/sse" }, /* 515 */ { ud_itab__515, UD_TAB__OPC_SSE, "/sse" }, /* 516 */ { ud_itab__516, UD_TAB__OPC_SSE, "/sse" }, /* 517 */ { ud_itab__517, UD_TAB__OPC_SSE, "/sse" }, /* 518 */ { ud_itab__518, UD_TAB__OPC_SSE, "/sse" }, /* 519 */ { ud_itab__519, UD_TAB__OPC_SSE, "/sse" }, /* 520 */ { ud_itab__520, UD_TAB__OPC_SSE, "/sse" }, /* 521 */ { ud_itab__521, UD_TAB__OPC_SSE, "/sse" }, /* 522 */ { ud_itab__522, UD_TAB__OPC_SSE, "/sse" }, /* 523 */ { ud_itab__523, UD_TAB__OPC_SSE, "/sse" }, /* 524 */ { ud_itab__524, UD_TAB__OPC_SSE, "/sse" }, /* 525 */ { ud_itab__525, UD_TAB__OPC_SSE, "/sse" }, /* 526 */ { ud_itab__526, UD_TAB__OPC_SSE, "/sse" }, /* 527 */ { ud_itab__527, UD_TAB__OPC_SSE, "/sse" }, /* 528 */ { ud_itab__528, UD_TAB__OPC_SSE, "/sse" }, /* 529 */ { ud_itab__529, UD_TAB__OPC_SSE, "/sse" }, /* 530 */ { ud_itab__530, UD_TAB__OPC_SSE, "/sse" }, /* 531 */ { ud_itab__531, UD_TAB__OPC_SSE, "/sse" }, /* 532 */ { ud_itab__532, UD_TAB__OPC_SSE, "/sse" }, /* 533 */ { ud_itab__533, UD_TAB__OPC_SSE, "/sse" }, /* 534 */ { ud_itab__534, UD_TAB__OPC_SSE, "/sse" }, /* 535 */ { ud_itab__535, UD_TAB__OPC_SSE, "/sse" }, /* 536 */ { ud_itab__536, UD_TAB__OPC_SSE, "/sse" }, /* 537 */ { ud_itab__537, UD_TAB__OPC_SSE, "/sse" }, /* 538 */ { ud_itab__538, UD_TAB__OPC_SSE, "/sse" }, /* 539 */ { ud_itab__539, UD_TAB__OPC_SSE, "/sse" }, /* 540 */ { ud_itab__540, UD_TAB__OPC_SSE, "/sse" }, /* 541 */ { ud_itab__541, UD_TAB__OPC_SSE, "/sse" }, /* 542 */ { ud_itab__542, UD_TAB__OPC_SSE, "/sse" }, /* 543 */ { ud_itab__543, UD_TAB__OPC_SSE, "/sse" }, /* 544 */ { ud_itab__544, UD_TAB__OPC_SSE, "/sse" }, /* 545 */ { ud_itab__545, UD_TAB__OPC_SSE, "/sse" }, /* 546 */ { ud_itab__546, UD_TAB__OPC_SSE, "/sse" }, /* 547 */ { ud_itab__547, UD_TAB__OPC_SSE, "/sse" }, /* 548 */ { ud_itab__548, UD_TAB__OPC_SSE, "/sse" }, /* 549 */ { ud_itab__549, UD_TAB__OPC_SSE, "/sse" }, /* 550 */ { ud_itab__550, UD_TAB__OPC_SSE, "/sse" }, /* 551 */ { ud_itab__551, UD_TAB__OPC_SSE, "/sse" }, /* 552 */ { ud_itab__552, UD_TAB__OPC_MOD, "/mod" }, /* 553 */ { ud_itab__553, UD_TAB__OPC_SSE, "/sse" }, /* 554 */ { ud_itab__554, UD_TAB__OPC_MOD, "/mod" }, /* 555 */ { ud_itab__555, UD_TAB__OPC_MOD, "/mod" }, /* 556 */ { ud_itab__556, UD_TAB__OPC_SSE, "/sse" }, /* 557 */ { ud_itab__557, UD_TAB__OPC_SSE, "/sse" }, /* 558 */ { ud_itab__558, UD_TAB__OPC_SSE, "/sse" }, /* 559 */ { ud_itab__559, UD_TAB__OPC_SSE, "/sse" }, /* 560 */ { ud_itab__560, UD_TAB__OPC_SSE, "/sse" }, /* 561 */ { ud_itab__561, UD_TAB__OPC_SSE, "/sse" }, /* 562 */ { ud_itab__562, UD_TAB__OPC_SSE, "/sse" }, /* 563 */ { ud_itab__563, UD_TAB__OPC_MODE, "/m" }, /* 564 */ { ud_itab__564, UD_TAB__OPC_MODE, "/m" }, /* 565 */ { ud_itab__565, UD_TAB__OPC_MODE, "/m" }, /* 566 */ { ud_itab__566, UD_TAB__OPC_MODE, "/m" }, /* 567 */ { ud_itab__567, UD_TAB__OPC_MODE, "/m" }, /* 568 */ { ud_itab__568, UD_TAB__OPC_MODE, "/m" }, /* 569 */ { ud_itab__569, UD_TAB__OPC_MODE, "/m" }, /* 570 */ { ud_itab__570, UD_TAB__OPC_MODE, "/m" }, /* 571 */ { ud_itab__571, UD_TAB__OPC_OSIZE, "/o" }, /* 572 */ { ud_itab__572, UD_TAB__OPC_MODE, "/m" }, /* 573 */ { ud_itab__573, UD_TAB__OPC_MODE, "/m" }, /* 574 */ { ud_itab__574, UD_TAB__OPC_OSIZE, "/o" }, /* 575 */ { ud_itab__575, UD_TAB__OPC_MODE, "/m" }, /* 576 */ { ud_itab__576, UD_TAB__OPC_MODE, "/m" }, /* 577 */ { ud_itab__577, UD_TAB__OPC_MODE, "/m" }, /* 578 */ { ud_itab__578, UD_TAB__OPC_MODE, "/m" }, /* 579 */ { ud_itab__579, UD_TAB__OPC_OSIZE, "/o" }, /* 580 */ { ud_itab__580, UD_TAB__OPC_OSIZE, "/o" }, /* 581 */ { ud_itab__581, UD_TAB__OPC_REG, "/reg" }, /* 582 */ { ud_itab__582, UD_TAB__OPC_REG, "/reg" }, /* 583 */ { ud_itab__583, UD_TAB__OPC_REG, "/reg" }, /* 584 */ { ud_itab__584, UD_TAB__OPC_MODE, "/m" }, /* 585 */ { ud_itab__585, UD_TAB__OPC_MODE, "/m" }, /* 586 */ { ud_itab__586, UD_TAB__OPC_MODE, "/m" }, /* 587 */ { ud_itab__587, UD_TAB__OPC_MODE, "/m" }, /* 588 */ { ud_itab__588, UD_TAB__OPC_MODE, "/m" }, /* 589 */ { ud_itab__589, UD_TAB__OPC_MODE, "/m" }, /* 590 */ { ud_itab__590, UD_TAB__OPC_MODE, "/m" }, /* 591 */ { ud_itab__591, UD_TAB__OPC_MODE, "/m" }, /* 592 */ { ud_itab__592, UD_TAB__OPC_REG, "/reg" }, /* 593 */ { ud_itab__593, UD_TAB__OPC_REG, "/reg" }, /* 594 */ { ud_itab__594, UD_TAB__OPC_OSIZE, "/o" }, /* 595 */ { ud_itab__595, UD_TAB__OPC_OSIZE, "/o" }, /* 596 */ { ud_itab__596, UD_TAB__OPC_MODE, "/m" }, /* 597 */ { ud_itab__597, UD_TAB__OPC_OSIZE, "/o" }, /* 598 */ { ud_itab__598, UD_TAB__OPC_MODE, "/m" }, /* 599 */ { ud_itab__599, UD_TAB__OPC_MODE, "/m" }, /* 600 */ { ud_itab__600, UD_TAB__OPC_MODE, "/m" }, /* 601 */ { ud_itab__601, UD_TAB__OPC_OSIZE, "/o" }, /* 602 */ { ud_itab__602, UD_TAB__OPC_MODE, "/m" }, /* 603 */ { ud_itab__603, UD_TAB__OPC_MODE, "/m" }, /* 604 */ { ud_itab__604, UD_TAB__OPC_MODE, "/m" }, /* 605 */ { ud_itab__605, UD_TAB__OPC_OSIZE, "/o" }, /* 606 */ { ud_itab__606, UD_TAB__OPC_OSIZE, "/o" }, /* 607 */ { ud_itab__607, UD_TAB__OPC_OSIZE, "/o" }, /* 608 */ { ud_itab__608, UD_TAB__OPC_OSIZE, "/o" }, /* 609 */ { ud_itab__609, UD_TAB__OPC_OSIZE, "/o" }, /* 610 */ { ud_itab__610, UD_TAB__OPC_REG, "/reg" }, /* 611 */ { ud_itab__611, UD_TAB__OPC_REG, "/reg" }, /* 612 */ { ud_itab__612, UD_TAB__OPC_MODE, "/m" }, /* 613 */ { ud_itab__613, UD_TAB__OPC_MODE, "/m" }, /* 614 */ { ud_itab__614, UD_TAB__OPC_REG, "/reg" }, /* 615 */ { ud_itab__615, UD_TAB__OPC_REG, "/reg" }, /* 616 */ { ud_itab__616, UD_TAB__OPC_MODE, "/m" }, /* 617 */ { ud_itab__617, UD_TAB__OPC_OSIZE, "/o" }, /* 618 */ { ud_itab__618, UD_TAB__OPC_REG, "/reg" }, /* 619 */ { ud_itab__619, UD_TAB__OPC_REG, "/reg" }, /* 620 */ { ud_itab__620, UD_TAB__OPC_REG, "/reg" }, /* 621 */ { ud_itab__621, UD_TAB__OPC_REG, "/reg" }, /* 622 */ { ud_itab__622, UD_TAB__OPC_MODE, "/m" }, /* 623 */ { ud_itab__623, UD_TAB__OPC_MODE, "/m" }, /* 624 */ { ud_itab__624, UD_TAB__OPC_MODE, "/m" }, /* 625 */ { ud_itab__625, UD_TAB__OPC_MOD, "/mod" }, /* 626 */ { ud_itab__626, UD_TAB__OPC_REG, "/reg" }, /* 627 */ { ud_itab__627, UD_TAB__OPC_MOD, "/mod" }, /* 628 */ { ud_itab__628, UD_TAB__OPC_MOD, "/mod" }, /* 629 */ { ud_itab__629, UD_TAB__OPC_MOD, "/mod" }, /* 630 */ { ud_itab__630, UD_TAB__OPC_MOD, "/mod" }, /* 631 */ { ud_itab__631, UD_TAB__OPC_MOD, "/mod" }, /* 632 */ { ud_itab__632, UD_TAB__OPC_MOD, "/mod" }, /* 633 */ { ud_itab__633, UD_TAB__OPC_MOD, "/mod" }, /* 634 */ { ud_itab__634, UD_TAB__OPC_MOD, "/mod" }, /* 635 */ { ud_itab__635, UD_TAB__OPC_X87, "/x87" }, /* 636 */ { ud_itab__636, UD_TAB__OPC_MOD, "/mod" }, /* 637 */ { ud_itab__637, UD_TAB__OPC_MOD, "/mod" }, /* 638 */ { ud_itab__638, UD_TAB__OPC_MOD, "/mod" }, /* 639 */ { ud_itab__639, UD_TAB__OPC_MOD, "/mod" }, /* 640 */ { ud_itab__640, UD_TAB__OPC_MOD, "/mod" }, /* 641 */ { ud_itab__641, UD_TAB__OPC_MOD, "/mod" }, /* 642 */ { ud_itab__642, UD_TAB__OPC_MOD, "/mod" }, /* 643 */ { ud_itab__643, UD_TAB__OPC_MOD, "/mod" }, /* 644 */ { ud_itab__644, UD_TAB__OPC_MOD, "/mod" }, /* 645 */ { ud_itab__645, UD_TAB__OPC_MOD, "/mod" }, /* 646 */ { ud_itab__646, UD_TAB__OPC_MOD, "/mod" }, /* 647 */ { ud_itab__647, UD_TAB__OPC_MOD, "/mod" }, /* 648 */ { ud_itab__648, UD_TAB__OPC_MOD, "/mod" }, /* 649 */ { ud_itab__649, UD_TAB__OPC_MOD, "/mod" }, /* 650 */ { ud_itab__650, UD_TAB__OPC_MOD, "/mod" }, /* 651 */ { ud_itab__651, UD_TAB__OPC_MOD, "/mod" }, /* 652 */ { ud_itab__652, UD_TAB__OPC_MOD, "/mod" }, /* 653 */ { ud_itab__653, UD_TAB__OPC_MOD, "/mod" }, /* 654 */ { ud_itab__654, UD_TAB__OPC_MOD, "/mod" }, /* 655 */ { ud_itab__655, UD_TAB__OPC_MOD, "/mod" }, /* 656 */ { ud_itab__656, UD_TAB__OPC_MOD, "/mod" }, /* 657 */ { ud_itab__657, UD_TAB__OPC_MOD, "/mod" }, /* 658 */ { ud_itab__658, UD_TAB__OPC_MOD, "/mod" }, /* 659 */ { ud_itab__659, UD_TAB__OPC_MOD, "/mod" }, /* 660 */ { ud_itab__660, UD_TAB__OPC_MOD, "/mod" }, /* 661 */ { ud_itab__661, UD_TAB__OPC_MOD, "/mod" }, /* 662 */ { ud_itab__662, UD_TAB__OPC_MOD, "/mod" }, /* 663 */ { ud_itab__663, UD_TAB__OPC_MOD, "/mod" }, /* 664 */ { ud_itab__664, UD_TAB__OPC_MOD, "/mod" }, /* 665 */ { ud_itab__665, UD_TAB__OPC_MOD, "/mod" }, /* 666 */ { ud_itab__666, UD_TAB__OPC_MOD, "/mod" }, /* 667 */ { ud_itab__667, UD_TAB__OPC_MOD, "/mod" }, /* 668 */ { ud_itab__668, UD_TAB__OPC_MOD, "/mod" }, /* 669 */ { ud_itab__669, UD_TAB__OPC_MOD, "/mod" }, /* 670 */ { ud_itab__670, UD_TAB__OPC_MOD, "/mod" }, /* 671 */ { ud_itab__671, UD_TAB__OPC_MOD, "/mod" }, /* 672 */ { ud_itab__672, UD_TAB__OPC_MOD, "/mod" }, /* 673 */ { ud_itab__673, UD_TAB__OPC_MOD, "/mod" }, /* 674 */ { ud_itab__674, UD_TAB__OPC_MOD, "/mod" }, /* 675 */ { ud_itab__675, UD_TAB__OPC_MOD, "/mod" }, /* 676 */ { ud_itab__676, UD_TAB__OPC_MOD, "/mod" }, /* 677 */ { ud_itab__677, UD_TAB__OPC_MOD, "/mod" }, /* 678 */ { ud_itab__678, UD_TAB__OPC_MOD, "/mod" }, /* 679 */ { ud_itab__679, UD_TAB__OPC_MOD, "/mod" }, /* 680 */ { ud_itab__680, UD_TAB__OPC_MOD, "/mod" }, /* 681 */ { ud_itab__681, UD_TAB__OPC_MOD, "/mod" }, /* 682 */ { ud_itab__682, UD_TAB__OPC_MOD, "/mod" }, /* 683 */ { ud_itab__683, UD_TAB__OPC_MOD, "/mod" }, /* 684 */ { ud_itab__684, UD_TAB__OPC_MOD, "/mod" }, /* 685 */ { ud_itab__685, UD_TAB__OPC_MOD, "/mod" }, /* 686 */ { ud_itab__686, UD_TAB__OPC_MOD, "/mod" }, /* 687 */ { ud_itab__687, UD_TAB__OPC_MOD, "/mod" }, /* 688 */ { ud_itab__688, UD_TAB__OPC_MOD, "/mod" }, /* 689 */ { ud_itab__689, UD_TAB__OPC_MOD, "/mod" }, /* 690 */ { ud_itab__690, UD_TAB__OPC_MOD, "/mod" }, /* 691 */ { ud_itab__691, UD_TAB__OPC_MOD, "/mod" }, /* 692 */ { ud_itab__692, UD_TAB__OPC_MOD, "/mod" }, /* 693 */ { ud_itab__693, UD_TAB__OPC_MOD, "/mod" }, /* 694 */ { ud_itab__694, UD_TAB__OPC_MOD, "/mod" }, /* 695 */ { ud_itab__695, UD_TAB__OPC_MOD, "/mod" }, /* 696 */ { ud_itab__696, UD_TAB__OPC_MOD, "/mod" }, /* 697 */ { ud_itab__697, UD_TAB__OPC_MOD, "/mod" }, /* 698 */ { ud_itab__698, UD_TAB__OPC_MOD, "/mod" }, /* 699 */ { ud_itab__699, UD_TAB__OPC_MOD, "/mod" }, /* 700 */ { ud_itab__700, UD_TAB__OPC_MOD, "/mod" }, /* 701 */ { ud_itab__701, UD_TAB__OPC_REG, "/reg" }, /* 702 */ { ud_itab__702, UD_TAB__OPC_MOD, "/mod" }, /* 703 */ { ud_itab__703, UD_TAB__OPC_MOD, "/mod" }, /* 704 */ { ud_itab__704, UD_TAB__OPC_MOD, "/mod" }, /* 705 */ { ud_itab__705, UD_TAB__OPC_MOD, "/mod" }, /* 706 */ { ud_itab__706, UD_TAB__OPC_MOD, "/mod" }, /* 707 */ { ud_itab__707, UD_TAB__OPC_MOD, "/mod" }, /* 708 */ { ud_itab__708, UD_TAB__OPC_MOD, "/mod" }, /* 709 */ { ud_itab__709, UD_TAB__OPC_X87, "/x87" }, /* 710 */ { ud_itab__710, UD_TAB__OPC_MOD, "/mod" }, /* 711 */ { ud_itab__711, UD_TAB__OPC_MOD, "/mod" }, /* 712 */ { ud_itab__712, UD_TAB__OPC_MOD, "/mod" }, /* 713 */ { ud_itab__713, UD_TAB__OPC_MOD, "/mod" }, /* 714 */ { ud_itab__714, UD_TAB__OPC_MOD, "/mod" }, /* 715 */ { ud_itab__715, UD_TAB__OPC_MOD, "/mod" }, /* 716 */ { ud_itab__716, UD_TAB__OPC_MOD, "/mod" }, /* 717 */ { ud_itab__717, UD_TAB__OPC_MOD, "/mod" }, /* 718 */ { ud_itab__718, UD_TAB__OPC_MOD, "/mod" }, /* 719 */ { ud_itab__719, UD_TAB__OPC_MOD, "/mod" }, /* 720 */ { ud_itab__720, UD_TAB__OPC_MOD, "/mod" }, /* 721 */ { ud_itab__721, UD_TAB__OPC_MOD, "/mod" }, /* 722 */ { ud_itab__722, UD_TAB__OPC_MOD, "/mod" }, /* 723 */ { ud_itab__723, UD_TAB__OPC_MOD, "/mod" }, /* 724 */ { ud_itab__724, UD_TAB__OPC_MOD, "/mod" }, /* 725 */ { ud_itab__725, UD_TAB__OPC_MOD, "/mod" }, /* 726 */ { ud_itab__726, UD_TAB__OPC_MOD, "/mod" }, /* 727 */ { ud_itab__727, UD_TAB__OPC_MOD, "/mod" }, /* 728 */ { ud_itab__728, UD_TAB__OPC_MOD, "/mod" }, /* 729 */ { ud_itab__729, UD_TAB__OPC_MOD, "/mod" }, /* 730 */ { ud_itab__730, UD_TAB__OPC_MOD, "/mod" }, /* 731 */ { ud_itab__731, UD_TAB__OPC_MOD, "/mod" }, /* 732 */ { ud_itab__732, UD_TAB__OPC_MOD, "/mod" }, /* 733 */ { ud_itab__733, UD_TAB__OPC_MOD, "/mod" }, /* 734 */ { ud_itab__734, UD_TAB__OPC_MOD, "/mod" }, /* 735 */ { ud_itab__735, UD_TAB__OPC_MOD, "/mod" }, /* 736 */ { ud_itab__736, UD_TAB__OPC_MOD, "/mod" }, /* 737 */ { ud_itab__737, UD_TAB__OPC_MOD, "/mod" }, /* 738 */ { ud_itab__738, UD_TAB__OPC_MOD, "/mod" }, /* 739 */ { ud_itab__739, UD_TAB__OPC_MOD, "/mod" }, /* 740 */ { ud_itab__740, UD_TAB__OPC_MOD, "/mod" }, /* 741 */ { ud_itab__741, UD_TAB__OPC_MOD, "/mod" }, /* 742 */ { ud_itab__742, UD_TAB__OPC_MOD, "/mod" }, /* 743 */ { ud_itab__743, UD_TAB__OPC_MOD, "/mod" }, /* 744 */ { ud_itab__744, UD_TAB__OPC_MOD, "/mod" }, /* 745 */ { ud_itab__745, UD_TAB__OPC_MOD, "/mod" }, /* 746 */ { ud_itab__746, UD_TAB__OPC_MOD, "/mod" }, /* 747 */ { ud_itab__747, UD_TAB__OPC_MOD, "/mod" }, /* 748 */ { ud_itab__748, UD_TAB__OPC_MOD, "/mod" }, /* 749 */ { ud_itab__749, UD_TAB__OPC_MOD, "/mod" }, /* 750 */ { ud_itab__750, UD_TAB__OPC_MOD, "/mod" }, /* 751 */ { ud_itab__751, UD_TAB__OPC_MOD, "/mod" }, /* 752 */ { ud_itab__752, UD_TAB__OPC_MOD, "/mod" }, /* 753 */ { ud_itab__753, UD_TAB__OPC_MOD, "/mod" }, /* 754 */ { ud_itab__754, UD_TAB__OPC_MOD, "/mod" }, /* 755 */ { ud_itab__755, UD_TAB__OPC_MOD, "/mod" }, /* 756 */ { ud_itab__756, UD_TAB__OPC_MOD, "/mod" }, /* 757 */ { ud_itab__757, UD_TAB__OPC_MOD, "/mod" }, /* 758 */ { ud_itab__758, UD_TAB__OPC_MOD, "/mod" }, /* 759 */ { ud_itab__759, UD_TAB__OPC_MOD, "/mod" }, /* 760 */ { ud_itab__760, UD_TAB__OPC_MOD, "/mod" }, /* 761 */ { ud_itab__761, UD_TAB__OPC_MOD, "/mod" }, /* 762 */ { ud_itab__762, UD_TAB__OPC_MOD, "/mod" }, /* 763 */ { ud_itab__763, UD_TAB__OPC_REG, "/reg" }, /* 764 */ { ud_itab__764, UD_TAB__OPC_MOD, "/mod" }, /* 765 */ { ud_itab__765, UD_TAB__OPC_MOD, "/mod" }, /* 766 */ { ud_itab__766, UD_TAB__OPC_MOD, "/mod" }, /* 767 */ { ud_itab__767, UD_TAB__OPC_MOD, "/mod" }, /* 768 */ { ud_itab__768, UD_TAB__OPC_MOD, "/mod" }, /* 769 */ { ud_itab__769, UD_TAB__OPC_MOD, "/mod" }, /* 770 */ { ud_itab__770, UD_TAB__OPC_MOD, "/mod" }, /* 771 */ { ud_itab__771, UD_TAB__OPC_MOD, "/mod" }, /* 772 */ { ud_itab__772, UD_TAB__OPC_X87, "/x87" }, /* 773 */ { ud_itab__773, UD_TAB__OPC_MOD, "/mod" }, /* 774 */ { ud_itab__774, UD_TAB__OPC_MOD, "/mod" }, /* 775 */ { ud_itab__775, UD_TAB__OPC_MOD, "/mod" }, /* 776 */ { ud_itab__776, UD_TAB__OPC_MOD, "/mod" }, /* 777 */ { ud_itab__777, UD_TAB__OPC_MOD, "/mod" }, /* 778 */ { ud_itab__778, UD_TAB__OPC_MOD, "/mod" }, /* 779 */ { ud_itab__779, UD_TAB__OPC_MOD, "/mod" }, /* 780 */ { ud_itab__780, UD_TAB__OPC_MOD, "/mod" }, /* 781 */ { ud_itab__781, UD_TAB__OPC_MOD, "/mod" }, /* 782 */ { ud_itab__782, UD_TAB__OPC_MOD, "/mod" }, /* 783 */ { ud_itab__783, UD_TAB__OPC_MOD, "/mod" }, /* 784 */ { ud_itab__784, UD_TAB__OPC_MOD, "/mod" }, /* 785 */ { ud_itab__785, UD_TAB__OPC_MOD, "/mod" }, /* 786 */ { ud_itab__786, UD_TAB__OPC_MOD, "/mod" }, /* 787 */ { ud_itab__787, UD_TAB__OPC_MOD, "/mod" }, /* 788 */ { ud_itab__788, UD_TAB__OPC_MOD, "/mod" }, /* 789 */ { ud_itab__789, UD_TAB__OPC_MOD, "/mod" }, /* 790 */ { ud_itab__790, UD_TAB__OPC_MOD, "/mod" }, /* 791 */ { ud_itab__791, UD_TAB__OPC_MOD, "/mod" }, /* 792 */ { ud_itab__792, UD_TAB__OPC_MOD, "/mod" }, /* 793 */ { ud_itab__793, UD_TAB__OPC_MOD, "/mod" }, /* 794 */ { ud_itab__794, UD_TAB__OPC_MOD, "/mod" }, /* 795 */ { ud_itab__795, UD_TAB__OPC_MOD, "/mod" }, /* 796 */ { ud_itab__796, UD_TAB__OPC_MOD, "/mod" }, /* 797 */ { ud_itab__797, UD_TAB__OPC_MOD, "/mod" }, /* 798 */ { ud_itab__798, UD_TAB__OPC_MOD, "/mod" }, /* 799 */ { ud_itab__799, UD_TAB__OPC_MOD, "/mod" }, /* 800 */ { ud_itab__800, UD_TAB__OPC_MOD, "/mod" }, /* 801 */ { ud_itab__801, UD_TAB__OPC_MOD, "/mod" }, /* 802 */ { ud_itab__802, UD_TAB__OPC_MOD, "/mod" }, /* 803 */ { ud_itab__803, UD_TAB__OPC_MOD, "/mod" }, /* 804 */ { ud_itab__804, UD_TAB__OPC_MOD, "/mod" }, /* 805 */ { ud_itab__805, UD_TAB__OPC_MOD, "/mod" }, /* 806 */ { ud_itab__806, UD_TAB__OPC_MOD, "/mod" }, /* 807 */ { ud_itab__807, UD_TAB__OPC_REG, "/reg" }, /* 808 */ { ud_itab__808, UD_TAB__OPC_MOD, "/mod" }, /* 809 */ { ud_itab__809, UD_TAB__OPC_MOD, "/mod" }, /* 810 */ { ud_itab__810, UD_TAB__OPC_MOD, "/mod" }, /* 811 */ { ud_itab__811, UD_TAB__OPC_MOD, "/mod" }, /* 812 */ { ud_itab__812, UD_TAB__OPC_MOD, "/mod" }, /* 813 */ { ud_itab__813, UD_TAB__OPC_MOD, "/mod" }, /* 814 */ { ud_itab__814, UD_TAB__OPC_X87, "/x87" }, /* 815 */ { ud_itab__815, UD_TAB__OPC_MOD, "/mod" }, /* 816 */ { ud_itab__816, UD_TAB__OPC_MOD, "/mod" }, /* 817 */ { ud_itab__817, UD_TAB__OPC_MOD, "/mod" }, /* 818 */ { ud_itab__818, UD_TAB__OPC_MOD, "/mod" }, /* 819 */ { ud_itab__819, UD_TAB__OPC_MOD, "/mod" }, /* 820 */ { ud_itab__820, UD_TAB__OPC_MOD, "/mod" }, /* 821 */ { ud_itab__821, UD_TAB__OPC_MOD, "/mod" }, /* 822 */ { ud_itab__822, UD_TAB__OPC_MOD, "/mod" }, /* 823 */ { ud_itab__823, UD_TAB__OPC_MOD, "/mod" }, /* 824 */ { ud_itab__824, UD_TAB__OPC_MOD, "/mod" }, /* 825 */ { ud_itab__825, UD_TAB__OPC_MOD, "/mod" }, /* 826 */ { ud_itab__826, UD_TAB__OPC_MOD, "/mod" }, /* 827 */ { ud_itab__827, UD_TAB__OPC_MOD, "/mod" }, /* 828 */ { ud_itab__828, UD_TAB__OPC_MOD, "/mod" }, /* 829 */ { ud_itab__829, UD_TAB__OPC_MOD, "/mod" }, /* 830 */ { ud_itab__830, UD_TAB__OPC_MOD, "/mod" }, /* 831 */ { ud_itab__831, UD_TAB__OPC_MOD, "/mod" }, /* 832 */ { ud_itab__832, UD_TAB__OPC_MOD, "/mod" }, /* 833 */ { ud_itab__833, UD_TAB__OPC_MOD, "/mod" }, /* 834 */ { ud_itab__834, UD_TAB__OPC_MOD, "/mod" }, /* 835 */ { ud_itab__835, UD_TAB__OPC_MOD, "/mod" }, /* 836 */ { ud_itab__836, UD_TAB__OPC_MOD, "/mod" }, /* 837 */ { ud_itab__837, UD_TAB__OPC_MOD, "/mod" }, /* 838 */ { ud_itab__838, UD_TAB__OPC_MOD, "/mod" }, /* 839 */ { ud_itab__839, UD_TAB__OPC_MOD, "/mod" }, /* 840 */ { ud_itab__840, UD_TAB__OPC_MOD, "/mod" }, /* 841 */ { ud_itab__841, UD_TAB__OPC_MOD, "/mod" }, /* 842 */ { ud_itab__842, UD_TAB__OPC_MOD, "/mod" }, /* 843 */ { ud_itab__843, UD_TAB__OPC_MOD, "/mod" }, /* 844 */ { ud_itab__844, UD_TAB__OPC_MOD, "/mod" }, /* 845 */ { ud_itab__845, UD_TAB__OPC_MOD, "/mod" }, /* 846 */ { ud_itab__846, UD_TAB__OPC_MOD, "/mod" }, /* 847 */ { ud_itab__847, UD_TAB__OPC_MOD, "/mod" }, /* 848 */ { ud_itab__848, UD_TAB__OPC_MOD, "/mod" }, /* 849 */ { ud_itab__849, UD_TAB__OPC_MOD, "/mod" }, /* 850 */ { ud_itab__850, UD_TAB__OPC_MOD, "/mod" }, /* 851 */ { ud_itab__851, UD_TAB__OPC_MOD, "/mod" }, /* 852 */ { ud_itab__852, UD_TAB__OPC_MOD, "/mod" }, /* 853 */ { ud_itab__853, UD_TAB__OPC_MOD, "/mod" }, /* 854 */ { ud_itab__854, UD_TAB__OPC_MOD, "/mod" }, /* 855 */ { ud_itab__855, UD_TAB__OPC_MOD, "/mod" }, /* 856 */ { ud_itab__856, UD_TAB__OPC_MOD, "/mod" }, /* 857 */ { ud_itab__857, UD_TAB__OPC_MOD, "/mod" }, /* 858 */ { ud_itab__858, UD_TAB__OPC_MOD, "/mod" }, /* 859 */ { ud_itab__859, UD_TAB__OPC_MOD, "/mod" }, /* 860 */ { ud_itab__860, UD_TAB__OPC_MOD, "/mod" }, /* 861 */ { ud_itab__861, UD_TAB__OPC_MOD, "/mod" }, /* 862 */ { ud_itab__862, UD_TAB__OPC_MOD, "/mod" }, /* 863 */ { ud_itab__863, UD_TAB__OPC_MOD, "/mod" }, /* 864 */ { ud_itab__864, UD_TAB__OPC_MOD, "/mod" }, /* 865 */ { ud_itab__865, UD_TAB__OPC_MOD, "/mod" }, /* 866 */ { ud_itab__866, UD_TAB__OPC_REG, "/reg" }, /* 867 */ { ud_itab__867, UD_TAB__OPC_MOD, "/mod" }, /* 868 */ { ud_itab__868, UD_TAB__OPC_MOD, "/mod" }, /* 869 */ { ud_itab__869, UD_TAB__OPC_MOD, "/mod" }, /* 870 */ { ud_itab__870, UD_TAB__OPC_MOD, "/mod" }, /* 871 */ { ud_itab__871, UD_TAB__OPC_MOD, "/mod" }, /* 872 */ { ud_itab__872, UD_TAB__OPC_MOD, "/mod" }, /* 873 */ { ud_itab__873, UD_TAB__OPC_MOD, "/mod" }, /* 874 */ { ud_itab__874, UD_TAB__OPC_MOD, "/mod" }, /* 875 */ { ud_itab__875, UD_TAB__OPC_X87, "/x87" }, /* 876 */ { ud_itab__876, UD_TAB__OPC_MOD, "/mod" }, /* 877 */ { ud_itab__877, UD_TAB__OPC_MOD, "/mod" }, /* 878 */ { ud_itab__878, UD_TAB__OPC_MOD, "/mod" }, /* 879 */ { ud_itab__879, UD_TAB__OPC_MOD, "/mod" }, /* 880 */ { ud_itab__880, UD_TAB__OPC_MOD, "/mod" }, /* 881 */ { ud_itab__881, UD_TAB__OPC_MOD, "/mod" }, /* 882 */ { ud_itab__882, UD_TAB__OPC_MOD, "/mod" }, /* 883 */ { ud_itab__883, UD_TAB__OPC_MOD, "/mod" }, /* 884 */ { ud_itab__884, UD_TAB__OPC_MOD, "/mod" }, /* 885 */ { ud_itab__885, UD_TAB__OPC_MOD, "/mod" }, /* 886 */ { ud_itab__886, UD_TAB__OPC_MOD, "/mod" }, /* 887 */ { ud_itab__887, UD_TAB__OPC_MOD, "/mod" }, /* 888 */ { ud_itab__888, UD_TAB__OPC_MOD, "/mod" }, /* 889 */ { ud_itab__889, UD_TAB__OPC_MOD, "/mod" }, /* 890 */ { ud_itab__890, UD_TAB__OPC_MOD, "/mod" }, /* 891 */ { ud_itab__891, UD_TAB__OPC_MOD, "/mod" }, /* 892 */ { ud_itab__892, UD_TAB__OPC_MOD, "/mod" }, /* 893 */ { ud_itab__893, UD_TAB__OPC_MOD, "/mod" }, /* 894 */ { ud_itab__894, UD_TAB__OPC_MOD, "/mod" }, /* 895 */ { ud_itab__895, UD_TAB__OPC_MOD, "/mod" }, /* 896 */ { ud_itab__896, UD_TAB__OPC_MOD, "/mod" }, /* 897 */ { ud_itab__897, UD_TAB__OPC_MOD, "/mod" }, /* 898 */ { ud_itab__898, UD_TAB__OPC_MOD, "/mod" }, /* 899 */ { ud_itab__899, UD_TAB__OPC_MOD, "/mod" }, /* 900 */ { ud_itab__900, UD_TAB__OPC_MOD, "/mod" }, /* 901 */ { ud_itab__901, UD_TAB__OPC_MOD, "/mod" }, /* 902 */ { ud_itab__902, UD_TAB__OPC_MOD, "/mod" }, /* 903 */ { ud_itab__903, UD_TAB__OPC_MOD, "/mod" }, /* 904 */ { ud_itab__904, UD_TAB__OPC_MOD, "/mod" }, /* 905 */ { ud_itab__905, UD_TAB__OPC_MOD, "/mod" }, /* 906 */ { ud_itab__906, UD_TAB__OPC_MOD, "/mod" }, /* 907 */ { ud_itab__907, UD_TAB__OPC_MOD, "/mod" }, /* 908 */ { ud_itab__908, UD_TAB__OPC_MOD, "/mod" }, /* 909 */ { ud_itab__909, UD_TAB__OPC_MOD, "/mod" }, /* 910 */ { ud_itab__910, UD_TAB__OPC_MOD, "/mod" }, /* 911 */ { ud_itab__911, UD_TAB__OPC_MOD, "/mod" }, /* 912 */ { ud_itab__912, UD_TAB__OPC_MOD, "/mod" }, /* 913 */ { ud_itab__913, UD_TAB__OPC_MOD, "/mod" }, /* 914 */ { ud_itab__914, UD_TAB__OPC_MOD, "/mod" }, /* 915 */ { ud_itab__915, UD_TAB__OPC_MOD, "/mod" }, /* 916 */ { ud_itab__916, UD_TAB__OPC_MOD, "/mod" }, /* 917 */ { ud_itab__917, UD_TAB__OPC_MOD, "/mod" }, /* 918 */ { ud_itab__918, UD_TAB__OPC_MOD, "/mod" }, /* 919 */ { ud_itab__919, UD_TAB__OPC_MOD, "/mod" }, /* 920 */ { ud_itab__920, UD_TAB__OPC_MOD, "/mod" }, /* 921 */ { ud_itab__921, UD_TAB__OPC_MOD, "/mod" }, /* 922 */ { ud_itab__922, UD_TAB__OPC_MOD, "/mod" }, /* 923 */ { ud_itab__923, UD_TAB__OPC_MOD, "/mod" }, /* 924 */ { ud_itab__924, UD_TAB__OPC_MOD, "/mod" }, /* 925 */ { ud_itab__925, UD_TAB__OPC_MOD, "/mod" }, /* 926 */ { ud_itab__926, UD_TAB__OPC_MOD, "/mod" }, /* 927 */ { ud_itab__927, UD_TAB__OPC_MOD, "/mod" }, /* 928 */ { ud_itab__928, UD_TAB__OPC_MOD, "/mod" }, /* 929 */ { ud_itab__929, UD_TAB__OPC_MOD, "/mod" }, /* 930 */ { ud_itab__930, UD_TAB__OPC_MOD, "/mod" }, /* 931 */ { ud_itab__931, UD_TAB__OPC_MOD, "/mod" }, /* 932 */ { ud_itab__932, UD_TAB__OPC_MOD, "/mod" }, /* 933 */ { ud_itab__933, UD_TAB__OPC_MOD, "/mod" }, /* 934 */ { ud_itab__934, UD_TAB__OPC_MOD, "/mod" }, /* 935 */ { ud_itab__935, UD_TAB__OPC_MOD, "/mod" }, /* 936 */ { ud_itab__936, UD_TAB__OPC_MOD, "/mod" }, /* 937 */ { ud_itab__937, UD_TAB__OPC_MOD, "/mod" }, /* 938 */ { ud_itab__938, UD_TAB__OPC_MOD, "/mod" }, /* 939 */ { ud_itab__939, UD_TAB__OPC_MOD, "/mod" }, /* 940 */ { ud_itab__940, UD_TAB__OPC_MOD, "/mod" }, /* 941 */ { ud_itab__941, UD_TAB__OPC_REG, "/reg" }, /* 942 */ { ud_itab__942, UD_TAB__OPC_MOD, "/mod" }, /* 943 */ { ud_itab__943, UD_TAB__OPC_MOD, "/mod" }, /* 944 */ { ud_itab__944, UD_TAB__OPC_MOD, "/mod" }, /* 945 */ { ud_itab__945, UD_TAB__OPC_MOD, "/mod" }, /* 946 */ { ud_itab__946, UD_TAB__OPC_MOD, "/mod" }, /* 947 */ { ud_itab__947, UD_TAB__OPC_MOD, "/mod" }, /* 948 */ { ud_itab__948, UD_TAB__OPC_MOD, "/mod" }, /* 949 */ { ud_itab__949, UD_TAB__OPC_X87, "/x87" }, /* 950 */ { ud_itab__950, UD_TAB__OPC_MOD, "/mod" }, /* 951 */ { ud_itab__951, UD_TAB__OPC_MOD, "/mod" }, /* 952 */ { ud_itab__952, UD_TAB__OPC_MOD, "/mod" }, /* 953 */ { ud_itab__953, UD_TAB__OPC_MOD, "/mod" }, /* 954 */ { ud_itab__954, UD_TAB__OPC_MOD, "/mod" }, /* 955 */ { ud_itab__955, UD_TAB__OPC_MOD, "/mod" }, /* 956 */ { ud_itab__956, UD_TAB__OPC_MOD, "/mod" }, /* 957 */ { ud_itab__957, UD_TAB__OPC_MOD, "/mod" }, /* 958 */ { ud_itab__958, UD_TAB__OPC_MOD, "/mod" }, /* 959 */ { ud_itab__959, UD_TAB__OPC_MOD, "/mod" }, /* 960 */ { ud_itab__960, UD_TAB__OPC_MOD, "/mod" }, /* 961 */ { ud_itab__961, UD_TAB__OPC_MOD, "/mod" }, /* 962 */ { ud_itab__962, UD_TAB__OPC_MOD, "/mod" }, /* 963 */ { ud_itab__963, UD_TAB__OPC_MOD, "/mod" }, /* 964 */ { ud_itab__964, UD_TAB__OPC_MOD, "/mod" }, /* 965 */ { ud_itab__965, UD_TAB__OPC_MOD, "/mod" }, /* 966 */ { ud_itab__966, UD_TAB__OPC_MOD, "/mod" }, /* 967 */ { ud_itab__967, UD_TAB__OPC_MOD, "/mod" }, /* 968 */ { ud_itab__968, UD_TAB__OPC_MOD, "/mod" }, /* 969 */ { ud_itab__969, UD_TAB__OPC_MOD, "/mod" }, /* 970 */ { ud_itab__970, UD_TAB__OPC_MOD, "/mod" }, /* 971 */ { ud_itab__971, UD_TAB__OPC_MOD, "/mod" }, /* 972 */ { ud_itab__972, UD_TAB__OPC_MOD, "/mod" }, /* 973 */ { ud_itab__973, UD_TAB__OPC_MOD, "/mod" }, /* 974 */ { ud_itab__974, UD_TAB__OPC_MOD, "/mod" }, /* 975 */ { ud_itab__975, UD_TAB__OPC_MOD, "/mod" }, /* 976 */ { ud_itab__976, UD_TAB__OPC_MOD, "/mod" }, /* 977 */ { ud_itab__977, UD_TAB__OPC_MOD, "/mod" }, /* 978 */ { ud_itab__978, UD_TAB__OPC_MOD, "/mod" }, /* 979 */ { ud_itab__979, UD_TAB__OPC_MOD, "/mod" }, /* 980 */ { ud_itab__980, UD_TAB__OPC_MOD, "/mod" }, /* 981 */ { ud_itab__981, UD_TAB__OPC_MOD, "/mod" }, /* 982 */ { ud_itab__982, UD_TAB__OPC_MOD, "/mod" }, /* 983 */ { ud_itab__983, UD_TAB__OPC_MOD, "/mod" }, /* 984 */ { ud_itab__984, UD_TAB__OPC_MOD, "/mod" }, /* 985 */ { ud_itab__985, UD_TAB__OPC_MOD, "/mod" }, /* 986 */ { ud_itab__986, UD_TAB__OPC_MOD, "/mod" }, /* 987 */ { ud_itab__987, UD_TAB__OPC_MOD, "/mod" }, /* 988 */ { ud_itab__988, UD_TAB__OPC_MOD, "/mod" }, /* 989 */ { ud_itab__989, UD_TAB__OPC_MOD, "/mod" }, /* 990 */ { ud_itab__990, UD_TAB__OPC_MOD, "/mod" }, /* 991 */ { ud_itab__991, UD_TAB__OPC_MOD, "/mod" }, /* 992 */ { ud_itab__992, UD_TAB__OPC_MOD, "/mod" }, /* 993 */ { ud_itab__993, UD_TAB__OPC_MOD, "/mod" }, /* 994 */ { ud_itab__994, UD_TAB__OPC_MOD, "/mod" }, /* 995 */ { ud_itab__995, UD_TAB__OPC_MOD, "/mod" }, /* 996 */ { ud_itab__996, UD_TAB__OPC_MOD, "/mod" }, /* 997 */ { ud_itab__997, UD_TAB__OPC_MOD, "/mod" }, /* 998 */ { ud_itab__998, UD_TAB__OPC_MOD, "/mod" }, /* 999 */ { ud_itab__999, UD_TAB__OPC_REG, "/reg" }, /* 1000 */ { ud_itab__1000, UD_TAB__OPC_MOD, "/mod" }, /* 1001 */ { ud_itab__1001, UD_TAB__OPC_MOD, "/mod" }, /* 1002 */ { ud_itab__1002, UD_TAB__OPC_MOD, "/mod" }, /* 1003 */ { ud_itab__1003, UD_TAB__OPC_MOD, "/mod" }, /* 1004 */ { ud_itab__1004, UD_TAB__OPC_MOD, "/mod" }, /* 1005 */ { ud_itab__1005, UD_TAB__OPC_MOD, "/mod" }, /* 1006 */ { ud_itab__1006, UD_TAB__OPC_MOD, "/mod" }, /* 1007 */ { ud_itab__1007, UD_TAB__OPC_MOD, "/mod" }, /* 1008 */ { ud_itab__1008, UD_TAB__OPC_X87, "/x87" }, /* 1009 */ { ud_itab__1009, UD_TAB__OPC_MOD, "/mod" }, /* 1010 */ { ud_itab__1010, UD_TAB__OPC_MOD, "/mod" }, /* 1011 */ { ud_itab__1011, UD_TAB__OPC_MOD, "/mod" }, /* 1012 */ { ud_itab__1012, UD_TAB__OPC_MOD, "/mod" }, /* 1013 */ { ud_itab__1013, UD_TAB__OPC_MOD, "/mod" }, /* 1014 */ { ud_itab__1014, UD_TAB__OPC_MOD, "/mod" }, /* 1015 */ { ud_itab__1015, UD_TAB__OPC_MOD, "/mod" }, /* 1016 */ { ud_itab__1016, UD_TAB__OPC_MOD, "/mod" }, /* 1017 */ { ud_itab__1017, UD_TAB__OPC_MOD, "/mod" }, /* 1018 */ { ud_itab__1018, UD_TAB__OPC_MOD, "/mod" }, /* 1019 */ { ud_itab__1019, UD_TAB__OPC_MOD, "/mod" }, /* 1020 */ { ud_itab__1020, UD_TAB__OPC_MOD, "/mod" }, /* 1021 */ { ud_itab__1021, UD_TAB__OPC_MOD, "/mod" }, /* 1022 */ { ud_itab__1022, UD_TAB__OPC_MOD, "/mod" }, /* 1023 */ { ud_itab__1023, UD_TAB__OPC_MOD, "/mod" }, /* 1024 */ { ud_itab__1024, UD_TAB__OPC_MOD, "/mod" }, /* 1025 */ { ud_itab__1025, UD_TAB__OPC_MOD, "/mod" }, /* 1026 */ { ud_itab__1026, UD_TAB__OPC_MOD, "/mod" }, /* 1027 */ { ud_itab__1027, UD_TAB__OPC_MOD, "/mod" }, /* 1028 */ { ud_itab__1028, UD_TAB__OPC_MOD, "/mod" }, /* 1029 */ { ud_itab__1029, UD_TAB__OPC_MOD, "/mod" }, /* 1030 */ { ud_itab__1030, UD_TAB__OPC_MOD, "/mod" }, /* 1031 */ { ud_itab__1031, UD_TAB__OPC_MOD, "/mod" }, /* 1032 */ { ud_itab__1032, UD_TAB__OPC_MOD, "/mod" }, /* 1033 */ { ud_itab__1033, UD_TAB__OPC_MOD, "/mod" }, /* 1034 */ { ud_itab__1034, UD_TAB__OPC_MOD, "/mod" }, /* 1035 */ { ud_itab__1035, UD_TAB__OPC_MOD, "/mod" }, /* 1036 */ { ud_itab__1036, UD_TAB__OPC_MOD, "/mod" }, /* 1037 */ { ud_itab__1037, UD_TAB__OPC_MOD, "/mod" }, /* 1038 */ { ud_itab__1038, UD_TAB__OPC_MOD, "/mod" }, /* 1039 */ { ud_itab__1039, UD_TAB__OPC_MOD, "/mod" }, /* 1040 */ { ud_itab__1040, UD_TAB__OPC_MOD, "/mod" }, /* 1041 */ { ud_itab__1041, UD_TAB__OPC_MOD, "/mod" }, /* 1042 */ { ud_itab__1042, UD_TAB__OPC_MOD, "/mod" }, /* 1043 */ { ud_itab__1043, UD_TAB__OPC_MOD, "/mod" }, /* 1044 */ { ud_itab__1044, UD_TAB__OPC_MOD, "/mod" }, /* 1045 */ { ud_itab__1045, UD_TAB__OPC_MOD, "/mod" }, /* 1046 */ { ud_itab__1046, UD_TAB__OPC_MOD, "/mod" }, /* 1047 */ { ud_itab__1047, UD_TAB__OPC_MOD, "/mod" }, /* 1048 */ { ud_itab__1048, UD_TAB__OPC_MOD, "/mod" }, /* 1049 */ { ud_itab__1049, UD_TAB__OPC_MOD, "/mod" }, /* 1050 */ { ud_itab__1050, UD_TAB__OPC_MOD, "/mod" }, /* 1051 */ { ud_itab__1051, UD_TAB__OPC_MOD, "/mod" }, /* 1052 */ { ud_itab__1052, UD_TAB__OPC_MOD, "/mod" }, /* 1053 */ { ud_itab__1053, UD_TAB__OPC_MOD, "/mod" }, /* 1054 */ { ud_itab__1054, UD_TAB__OPC_MOD, "/mod" }, /* 1055 */ { ud_itab__1055, UD_TAB__OPC_MOD, "/mod" }, /* 1056 */ { ud_itab__1056, UD_TAB__OPC_MOD, "/mod" }, /* 1057 */ { ud_itab__1057, UD_TAB__OPC_MOD, "/mod" }, /* 1058 */ { ud_itab__1058, UD_TAB__OPC_MOD, "/mod" }, /* 1059 */ { ud_itab__1059, UD_TAB__OPC_MOD, "/mod" }, /* 1060 */ { ud_itab__1060, UD_TAB__OPC_MOD, "/mod" }, /* 1061 */ { ud_itab__1061, UD_TAB__OPC_MOD, "/mod" }, /* 1062 */ { ud_itab__1062, UD_TAB__OPC_MOD, "/mod" }, /* 1063 */ { ud_itab__1063, UD_TAB__OPC_MOD, "/mod" }, /* 1064 */ { ud_itab__1064, UD_TAB__OPC_MOD, "/mod" }, /* 1065 */ { ud_itab__1065, UD_TAB__OPC_MOD, "/mod" }, /* 1066 */ { ud_itab__1066, UD_TAB__OPC_MOD, "/mod" }, /* 1067 */ { ud_itab__1067, UD_TAB__OPC_REG, "/reg" }, /* 1068 */ { ud_itab__1068, UD_TAB__OPC_MOD, "/mod" }, /* 1069 */ { ud_itab__1069, UD_TAB__OPC_MOD, "/mod" }, /* 1070 */ { ud_itab__1070, UD_TAB__OPC_MOD, "/mod" }, /* 1071 */ { ud_itab__1071, UD_TAB__OPC_MOD, "/mod" }, /* 1072 */ { ud_itab__1072, UD_TAB__OPC_MOD, "/mod" }, /* 1073 */ { ud_itab__1073, UD_TAB__OPC_MOD, "/mod" }, /* 1074 */ { ud_itab__1074, UD_TAB__OPC_MOD, "/mod" }, /* 1075 */ { ud_itab__1075, UD_TAB__OPC_MOD, "/mod" }, /* 1076 */ { ud_itab__1076, UD_TAB__OPC_X87, "/x87" }, /* 1077 */ { ud_itab__1077, UD_TAB__OPC_MOD, "/mod" }, /* 1078 */ { ud_itab__1078, UD_TAB__OPC_MOD, "/mod" }, /* 1079 */ { ud_itab__1079, UD_TAB__OPC_MOD, "/mod" }, /* 1080 */ { ud_itab__1080, UD_TAB__OPC_MOD, "/mod" }, /* 1081 */ { ud_itab__1081, UD_TAB__OPC_MOD, "/mod" }, /* 1082 */ { ud_itab__1082, UD_TAB__OPC_MOD, "/mod" }, /* 1083 */ { ud_itab__1083, UD_TAB__OPC_MOD, "/mod" }, /* 1084 */ { ud_itab__1084, UD_TAB__OPC_MOD, "/mod" }, /* 1085 */ { ud_itab__1085, UD_TAB__OPC_MOD, "/mod" }, /* 1086 */ { ud_itab__1086, UD_TAB__OPC_MOD, "/mod" }, /* 1087 */ { ud_itab__1087, UD_TAB__OPC_MOD, "/mod" }, /* 1088 */ { ud_itab__1088, UD_TAB__OPC_MOD, "/mod" }, /* 1089 */ { ud_itab__1089, UD_TAB__OPC_MOD, "/mod" }, /* 1090 */ { ud_itab__1090, UD_TAB__OPC_MOD, "/mod" }, /* 1091 */ { ud_itab__1091, UD_TAB__OPC_MOD, "/mod" }, /* 1092 */ { ud_itab__1092, UD_TAB__OPC_MOD, "/mod" }, /* 1093 */ { ud_itab__1093, UD_TAB__OPC_MOD, "/mod" }, /* 1094 */ { ud_itab__1094, UD_TAB__OPC_MOD, "/mod" }, /* 1095 */ { ud_itab__1095, UD_TAB__OPC_MOD, "/mod" }, /* 1096 */ { ud_itab__1096, UD_TAB__OPC_MOD, "/mod" }, /* 1097 */ { ud_itab__1097, UD_TAB__OPC_MOD, "/mod" }, /* 1098 */ { ud_itab__1098, UD_TAB__OPC_MOD, "/mod" }, /* 1099 */ { ud_itab__1099, UD_TAB__OPC_MOD, "/mod" }, /* 1100 */ { ud_itab__1100, UD_TAB__OPC_MOD, "/mod" }, /* 1101 */ { ud_itab__1101, UD_TAB__OPC_MOD, "/mod" }, /* 1102 */ { ud_itab__1102, UD_TAB__OPC_MOD, "/mod" }, /* 1103 */ { ud_itab__1103, UD_TAB__OPC_MOD, "/mod" }, /* 1104 */ { ud_itab__1104, UD_TAB__OPC_MOD, "/mod" }, /* 1105 */ { ud_itab__1105, UD_TAB__OPC_MOD, "/mod" }, /* 1106 */ { ud_itab__1106, UD_TAB__OPC_MOD, "/mod" }, /* 1107 */ { ud_itab__1107, UD_TAB__OPC_MOD, "/mod" }, /* 1108 */ { ud_itab__1108, UD_TAB__OPC_MOD, "/mod" }, /* 1109 */ { ud_itab__1109, UD_TAB__OPC_MOD, "/mod" }, /* 1110 */ { ud_itab__1110, UD_TAB__OPC_MOD, "/mod" }, /* 1111 */ { ud_itab__1111, UD_TAB__OPC_MOD, "/mod" }, /* 1112 */ { ud_itab__1112, UD_TAB__OPC_MOD, "/mod" }, /* 1113 */ { ud_itab__1113, UD_TAB__OPC_MOD, "/mod" }, /* 1114 */ { ud_itab__1114, UD_TAB__OPC_MOD, "/mod" }, /* 1115 */ { ud_itab__1115, UD_TAB__OPC_MOD, "/mod" }, /* 1116 */ { ud_itab__1116, UD_TAB__OPC_MOD, "/mod" }, /* 1117 */ { ud_itab__1117, UD_TAB__OPC_MOD, "/mod" }, /* 1118 */ { ud_itab__1118, UD_TAB__OPC_MOD, "/mod" }, /* 1119 */ { ud_itab__1119, UD_TAB__OPC_MOD, "/mod" }, /* 1120 */ { ud_itab__1120, UD_TAB__OPC_MOD, "/mod" }, /* 1121 */ { ud_itab__1121, UD_TAB__OPC_MOD, "/mod" }, /* 1122 */ { ud_itab__1122, UD_TAB__OPC_MOD, "/mod" }, /* 1123 */ { ud_itab__1123, UD_TAB__OPC_MOD, "/mod" }, /* 1124 */ { ud_itab__1124, UD_TAB__OPC_MOD, "/mod" }, /* 1125 */ { ud_itab__1125, UD_TAB__OPC_MOD, "/mod" }, /* 1126 */ { ud_itab__1126, UD_TAB__OPC_ASIZE, "/a" }, /* 1127 */ { ud_itab__1127, UD_TAB__OPC_MODE, "/m" }, /* 1128 */ { ud_itab__1128, UD_TAB__OPC_REG, "/reg" }, /* 1129 */ { ud_itab__1129, UD_TAB__OPC_REG, "/reg" }, /* 1130 */ { ud_itab__1130, UD_TAB__OPC_REG, "/reg" }, /* 1131 */ { ud_itab__1131, UD_TAB__OPC_REG, "/reg" }, /* 1132 */ { ud_itab__1132, UD_TAB__OPC_MODE, "/m" }, }; /* itab entry operand definitions (for readability) */ #define O_AL { OP_AL, SZ_B } #define O_AX { OP_AX, SZ_W } #define O_Av { OP_A, SZ_V } #define O_C { OP_C, SZ_NA } #define O_CL { OP_CL, SZ_B } #define O_CS { OP_CS, SZ_NA } #define O_CX { OP_CX, SZ_W } #define O_D { OP_D, SZ_NA } #define O_DL { OP_DL, SZ_B } #define O_DS { OP_DS, SZ_NA } #define O_DX { OP_DX, SZ_W } #define O_E { OP_E, SZ_NA } #define O_ES { OP_ES, SZ_NA } #define O_Eb { OP_E, SZ_B } #define O_Ed { OP_E, SZ_D } #define O_Eq { OP_E, SZ_Q } #define O_Ev { OP_E, SZ_V } #define O_Ew { OP_E, SZ_W } #define O_Ey { OP_E, SZ_Y } #define O_Ez { OP_E, SZ_Z } #define O_FS { OP_FS, SZ_NA } #define O_Fv { OP_F, SZ_V } #define O_G { OP_G, SZ_NA } #define O_GS { OP_GS, SZ_NA } #define O_Gb { OP_G, SZ_B } #define O_Gd { OP_G, SZ_D } #define O_Gq { OP_G, SZ_Q } #define O_Gv { OP_G, SZ_V } #define O_Gw { OP_G, SZ_W } #define O_Gy { OP_G, SZ_Y } #define O_Gz { OP_G, SZ_Z } #define O_I1 { OP_I1, SZ_NA } #define O_I3 { OP_I3, SZ_NA } #define O_Ib { OP_I, SZ_B } #define O_Iv { OP_I, SZ_V } #define O_Iw { OP_I, SZ_W } #define O_Iz { OP_I, SZ_Z } #define O_Jb { OP_J, SZ_B } #define O_Jv { OP_J, SZ_V } #define O_Jz { OP_J, SZ_Z } #define O_M { OP_M, SZ_NA } #define O_Mb { OP_M, SZ_B } #define O_MbRd { OP_MR, SZ_BD } #define O_MbRv { OP_MR, SZ_BV } #define O_Md { OP_M, SZ_D } #define O_MdRy { OP_MR, SZ_DY } #define O_MdU { OP_MU, SZ_DO } #define O_Mo { OP_M, SZ_O } #define O_Mq { OP_M, SZ_Q } #define O_MqU { OP_MU, SZ_QO } #define O_Ms { OP_M, SZ_W } #define O_Mt { OP_M, SZ_T } #define O_Mv { OP_M, SZ_V } #define O_Mw { OP_M, SZ_W } #define O_MwRd { OP_MR, SZ_WD } #define O_MwRv { OP_MR, SZ_WV } #define O_MwRy { OP_MR, SZ_WY } #define O_MwU { OP_MU, SZ_WO } #define O_N { OP_N, SZ_Q } #define O_NONE { OP_NONE, SZ_NA } #define O_Ob { OP_O, SZ_B } #define O_Ov { OP_O, SZ_V } #define O_Ow { OP_O, SZ_W } #define O_P { OP_P, SZ_Q } #define O_Q { OP_Q, SZ_Q } #define O_R { OP_R, SZ_RDQ } #define O_R0b { OP_R0, SZ_B } #define O_R0v { OP_R0, SZ_V } #define O_R0w { OP_R0, SZ_W } #define O_R0y { OP_R0, SZ_Y } #define O_R0z { OP_R0, SZ_Z } #define O_R1b { OP_R1, SZ_B } #define O_R1v { OP_R1, SZ_V } #define O_R1w { OP_R1, SZ_W } #define O_R1y { OP_R1, SZ_Y } #define O_R1z { OP_R1, SZ_Z } #define O_R2b { OP_R2, SZ_B } #define O_R2v { OP_R2, SZ_V } #define O_R2w { OP_R2, SZ_W } #define O_R2y { OP_R2, SZ_Y } #define O_R2z { OP_R2, SZ_Z } #define O_R3b { OP_R3, SZ_B } #define O_R3v { OP_R3, SZ_V } #define O_R3w { OP_R3, SZ_W } #define O_R3y { OP_R3, SZ_Y } #define O_R3z { OP_R3, SZ_Z } #define O_R4b { OP_R4, SZ_B } #define O_R4v { OP_R4, SZ_V } #define O_R4w { OP_R4, SZ_W } #define O_R4y { OP_R4, SZ_Y } #define O_R4z { OP_R4, SZ_Z } #define O_R5b { OP_R5, SZ_B } #define O_R5v { OP_R5, SZ_V } #define O_R5w { OP_R5, SZ_W } #define O_R5y { OP_R5, SZ_Y } #define O_R5z { OP_R5, SZ_Z } #define O_R6b { OP_R6, SZ_B } #define O_R6v { OP_R6, SZ_V } #define O_R6w { OP_R6, SZ_W } #define O_R6y { OP_R6, SZ_Y } #define O_R6z { OP_R6, SZ_Z } #define O_R7b { OP_R7, SZ_B } #define O_R7v { OP_R7, SZ_V } #define O_R7w { OP_R7, SZ_W } #define O_R7y { OP_R7, SZ_Y } #define O_R7z { OP_R7, SZ_Z } #define O_S { OP_S, SZ_NA } #define O_SS { OP_SS, SZ_NA } #define O_ST0 { OP_ST0, SZ_NA } #define O_ST1 { OP_ST1, SZ_NA } #define O_ST2 { OP_ST2, SZ_NA } #define O_ST3 { OP_ST3, SZ_NA } #define O_ST4 { OP_ST4, SZ_NA } #define O_ST5 { OP_ST5, SZ_NA } #define O_ST6 { OP_ST6, SZ_NA } #define O_ST7 { OP_ST7, SZ_NA } #define O_U { OP_U, SZ_O } #define O_V { OP_V, SZ_O } #define O_W { OP_W, SZ_O } #define O_eAX { OP_eAX, SZ_Z } #define O_eCX { OP_eCX, SZ_Z } #define O_eDX { OP_eDX, SZ_Z } #define O_rAX { OP_rAX, SZ_V } #define O_rCX { OP_rCX, SZ_V } #define O_rDX { OP_rDX, SZ_V } #define O_sIb { OP_sI, SZ_B } #define O_sIv { OP_sI, SZ_V } #define O_sIz { OP_sI, SZ_Z } struct ud_itab_entry ud_itab[] = { /* 0000 */ { UD_Iinvalid, O_NONE, O_NONE, O_NONE, P_none }, /* 0001 */ { UD_Iadd, O_Eb, O_Gb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0002 */ { UD_Iadd, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0003 */ { UD_Iadd, O_Gb, O_Eb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0004 */ { UD_Iadd, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0005 */ { UD_Iadd, O_AL, O_Ib, O_NONE, P_none }, /* 0006 */ { UD_Iadd, O_rAX, O_sIz, O_NONE, P_oso|P_rexw }, /* 0007 */ { UD_Ipush, O_ES, O_NONE, O_NONE, P_inv64 }, /* 0008 */ { UD_Ipop, O_ES, O_NONE, O_NONE, P_inv64 }, /* 0009 */ { UD_Ior, O_Eb, O_Gb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0010 */ { UD_Ior, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0011 */ { UD_Ior, O_Gb, O_Eb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0012 */ { UD_Ior, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0013 */ { UD_Ior, O_AL, O_Ib, O_NONE, P_none }, /* 0014 */ { UD_Ior, O_rAX, O_sIz, O_NONE, P_oso|P_rexw }, /* 0015 */ { UD_Ipush, O_CS, O_NONE, O_NONE, P_inv64 }, /* 0016 */ { UD_Isldt, O_MwRv, O_NONE, O_NONE, P_aso|P_oso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0017 */ { UD_Istr, O_MwRv, O_NONE, O_NONE, P_aso|P_oso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0018 */ { UD_Illdt, O_Ew, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0019 */ { UD_Iltr, O_Ew, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0020 */ { UD_Iverr, O_Ew, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0021 */ { UD_Iverw, O_Ew, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0022 */ { UD_Isgdt, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0023 */ { UD_Isidt, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0024 */ { UD_Ilgdt, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0025 */ { UD_Ilidt, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0026 */ { UD_Ismsw, O_MwRv, O_NONE, O_NONE, P_aso|P_oso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0027 */ { UD_Ilmsw, O_Ew, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0028 */ { UD_Iinvlpg, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0029 */ { UD_Ivmcall, O_NONE, O_NONE, O_NONE, P_none }, /* 0030 */ { UD_Ivmlaunch, O_NONE, O_NONE, O_NONE, P_none }, /* 0031 */ { UD_Ivmresume, O_NONE, O_NONE, O_NONE, P_none }, /* 0032 */ { UD_Ivmxoff, O_NONE, O_NONE, O_NONE, P_none }, /* 0033 */ { UD_Imonitor, O_NONE, O_NONE, O_NONE, P_none }, /* 0034 */ { UD_Imwait, O_NONE, O_NONE, O_NONE, P_none }, /* 0035 */ { UD_Ixgetbv, O_NONE, O_NONE, O_NONE, P_none }, /* 0036 */ { UD_Ixsetbv, O_NONE, O_NONE, O_NONE, P_none }, /* 0037 */ { UD_Ivmrun, O_NONE, O_NONE, O_NONE, P_none }, /* 0038 */ { UD_Ivmmcall, O_NONE, O_NONE, O_NONE, P_none }, /* 0039 */ { UD_Ivmload, O_NONE, O_NONE, O_NONE, P_none }, /* 0040 */ { UD_Ivmsave, O_NONE, O_NONE, O_NONE, P_none }, /* 0041 */ { UD_Istgi, O_NONE, O_NONE, O_NONE, P_none }, /* 0042 */ { UD_Iclgi, O_NONE, O_NONE, O_NONE, P_none }, /* 0043 */ { UD_Iskinit, O_NONE, O_NONE, O_NONE, P_none }, /* 0044 */ { UD_Iinvlpga, O_NONE, O_NONE, O_NONE, P_none }, /* 0045 */ { UD_Ismsw, O_MwRv, O_NONE, O_NONE, P_aso|P_oso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0046 */ { UD_Ilmsw, O_Ew, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0047 */ { UD_Iswapgs, O_NONE, O_NONE, O_NONE, P_none }, /* 0048 */ { UD_Irdtscp, O_NONE, O_NONE, O_NONE, P_none }, /* 0049 */ { UD_Ilar, O_Gv, O_Ew, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0050 */ { UD_Ilsl, O_Gv, O_Ew, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0051 */ { UD_Isyscall, O_NONE, O_NONE, O_NONE, P_none }, /* 0052 */ { UD_Iclts, O_NONE, O_NONE, O_NONE, P_none }, /* 0053 */ { UD_Isysret, O_NONE, O_NONE, O_NONE, P_none }, /* 0054 */ { UD_Iinvd, O_NONE, O_NONE, O_NONE, P_none }, /* 0055 */ { UD_Iwbinvd, O_NONE, O_NONE, O_NONE, P_none }, /* 0056 */ { UD_Iud2, O_NONE, O_NONE, O_NONE, P_none }, /* 0057 */ { UD_Iprefetch, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0058 */ { UD_Iprefetch, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0059 */ { UD_Iprefetch, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0060 */ { UD_Iprefetch, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0061 */ { UD_Iprefetch, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0062 */ { UD_Iprefetch, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0063 */ { UD_Iprefetch, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0064 */ { UD_Iprefetch, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0065 */ { UD_Ifemms, O_NONE, O_NONE, O_NONE, P_none }, /* 0066 */ { UD_Ipi2fw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0067 */ { UD_Ipi2fd, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0068 */ { UD_Ipf2iw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0069 */ { UD_Ipf2id, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0070 */ { UD_Ipfnacc, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0071 */ { UD_Ipfpnacc, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0072 */ { UD_Ipfcmpge, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0073 */ { UD_Ipfmin, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0074 */ { UD_Ipfrcp, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0075 */ { UD_Ipfrsqrt, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0076 */ { UD_Ipfsub, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0077 */ { UD_Ipfadd, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0078 */ { UD_Ipfcmpgt, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0079 */ { UD_Ipfmax, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0080 */ { UD_Ipfrcpit1, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0081 */ { UD_Ipfrsqit1, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0082 */ { UD_Ipfsubr, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0083 */ { UD_Ipfacc, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0084 */ { UD_Ipfcmpeq, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0085 */ { UD_Ipfmul, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0086 */ { UD_Ipfrcpit2, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0087 */ { UD_Ipmulhrw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0088 */ { UD_Ipswapd, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0089 */ { UD_Ipavgusb, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0090 */ { UD_Imovups, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0091 */ { UD_Imovsd, O_V, O_W, O_NONE, P_str|P_aso|P_rexr|P_rexx|P_rexb }, /* 0092 */ { UD_Imovss, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0093 */ { UD_Imovupd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0094 */ { UD_Imovups, O_W, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0095 */ { UD_Imovsd, O_W, O_V, O_NONE, P_str|P_aso|P_rexr|P_rexx|P_rexb }, /* 0096 */ { UD_Imovss, O_W, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0097 */ { UD_Imovupd, O_W, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0098 */ { UD_Imovlps, O_V, O_M, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0099 */ { UD_Imovddup, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0100 */ { UD_Imovsldup, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0101 */ { UD_Imovlpd, O_V, O_M, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0102 */ { UD_Imovhlps, O_V, O_U, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0103 */ { UD_Imovddup, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0104 */ { UD_Imovsldup, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0105 */ { UD_Imovlps, O_M, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0106 */ { UD_Imovlpd, O_M, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0107 */ { UD_Iunpcklps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0108 */ { UD_Iunpcklpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0109 */ { UD_Iunpckhps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0110 */ { UD_Iunpckhpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0111 */ { UD_Imovhps, O_V, O_M, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0112 */ { UD_Imovshdup, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0113 */ { UD_Imovhpd, O_V, O_M, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0114 */ { UD_Imovlhps, O_V, O_U, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0115 */ { UD_Imovshdup, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0116 */ { UD_Imovhps, O_M, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0117 */ { UD_Imovhpd, O_M, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0118 */ { UD_Iprefetchnta, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0119 */ { UD_Iprefetcht0, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0120 */ { UD_Iprefetcht1, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0121 */ { UD_Iprefetcht2, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0122 */ { UD_Inop, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0123 */ { UD_Inop, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0124 */ { UD_Inop, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0125 */ { UD_Inop, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0126 */ { UD_Inop, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0127 */ { UD_Inop, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0128 */ { UD_Inop, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0129 */ { UD_Imov, O_R, O_C, O_NONE, P_rexr|P_rexw|P_rexb }, /* 0130 */ { UD_Imov, O_R, O_D, O_NONE, P_rexr|P_rexw|P_rexb }, /* 0131 */ { UD_Imov, O_C, O_R, O_NONE, P_rexr|P_rexw|P_rexb }, /* 0132 */ { UD_Imov, O_D, O_R, O_NONE, P_rexr|P_rexw|P_rexb }, /* 0133 */ { UD_Imovaps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0134 */ { UD_Imovapd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0135 */ { UD_Imovaps, O_W, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0136 */ { UD_Imovapd, O_W, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0137 */ { UD_Icvtpi2ps, O_V, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0138 */ { UD_Icvtsi2sd, O_V, O_Ey, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0139 */ { UD_Icvtsi2ss, O_V, O_Ey, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0140 */ { UD_Icvtpi2pd, O_V, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0141 */ { UD_Imovntps, O_M, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0142 */ { UD_Imovntpd, O_M, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0143 */ { UD_Icvttps2pi, O_P, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0144 */ { UD_Icvttsd2si, O_Gy, O_W, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0145 */ { UD_Icvttss2si, O_Gy, O_W, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0146 */ { UD_Icvttpd2pi, O_P, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0147 */ { UD_Icvtps2pi, O_P, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0148 */ { UD_Icvtsd2si, O_Gy, O_W, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0149 */ { UD_Icvtss2si, O_Gy, O_W, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0150 */ { UD_Icvtpd2pi, O_P, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0151 */ { UD_Iucomiss, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0152 */ { UD_Iucomisd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0153 */ { UD_Icomiss, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0154 */ { UD_Icomisd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0155 */ { UD_Iwrmsr, O_NONE, O_NONE, O_NONE, P_none }, /* 0156 */ { UD_Irdtsc, O_NONE, O_NONE, O_NONE, P_none }, /* 0157 */ { UD_Irdmsr, O_NONE, O_NONE, O_NONE, P_none }, /* 0158 */ { UD_Irdpmc, O_NONE, O_NONE, O_NONE, P_none }, /* 0159 */ { UD_Isysenter, O_NONE, O_NONE, O_NONE, P_none }, /* 0160 */ { UD_Isysenter, O_NONE, O_NONE, O_NONE, P_none }, /* 0161 */ { UD_Isysexit, O_NONE, O_NONE, O_NONE, P_none }, /* 0162 */ { UD_Isysexit, O_NONE, O_NONE, O_NONE, P_none }, /* 0163 */ { UD_Igetsec, O_NONE, O_NONE, O_NONE, P_none }, /* 0164 */ { UD_Ipshufb, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0165 */ { UD_Ipshufb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0166 */ { UD_Iphaddw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0167 */ { UD_Iphaddw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0168 */ { UD_Iphaddd, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0169 */ { UD_Iphaddd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0170 */ { UD_Iphaddsw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0171 */ { UD_Iphaddsw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0172 */ { UD_Ipmaddubsw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0173 */ { UD_Ipmaddubsw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0174 */ { UD_Iphsubw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0175 */ { UD_Iphsubw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0176 */ { UD_Iphsubd, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0177 */ { UD_Iphsubd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0178 */ { UD_Iphsubsw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0179 */ { UD_Iphsubsw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0180 */ { UD_Ipsignb, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0181 */ { UD_Ipsignb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0182 */ { UD_Ipsignw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0183 */ { UD_Ipsignw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0184 */ { UD_Ipsignd, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0185 */ { UD_Ipsignd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0186 */ { UD_Ipmulhrsw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0187 */ { UD_Ipmulhrsw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0188 */ { UD_Ipblendvb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0189 */ { UD_Iblendvps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0190 */ { UD_Iblendvpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0191 */ { UD_Iptest, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0192 */ { UD_Ipabsb, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0193 */ { UD_Ipabsb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0194 */ { UD_Ipabsw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0195 */ { UD_Ipabsw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0196 */ { UD_Ipabsd, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0197 */ { UD_Ipabsd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0198 */ { UD_Ipmovsxbw, O_V, O_MqU, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0199 */ { UD_Ipmovsxbd, O_V, O_MdU, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0200 */ { UD_Ipmovsxbq, O_V, O_MwU, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0201 */ { UD_Ipmovsxwd, O_V, O_MqU, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0202 */ { UD_Ipmovsxwq, O_V, O_MdU, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0203 */ { UD_Ipmovsxdq, O_V, O_MqU, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0204 */ { UD_Ipmuldq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0205 */ { UD_Ipcmpeqq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0206 */ { UD_Imovntdqa, O_V, O_Mo, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0207 */ { UD_Ipackusdw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0208 */ { UD_Ipmovzxbw, O_V, O_MqU, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0209 */ { UD_Ipmovzxbd, O_V, O_MdU, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0210 */ { UD_Ipmovzxbq, O_V, O_MwU, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0211 */ { UD_Ipmovzxwd, O_V, O_MqU, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0212 */ { UD_Ipmovzxwq, O_V, O_MdU, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0213 */ { UD_Ipmovzxdq, O_V, O_MqU, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0214 */ { UD_Ipcmpgtq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0215 */ { UD_Ipminsb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0216 */ { UD_Ipminsd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0217 */ { UD_Ipminuw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0218 */ { UD_Ipminud, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0219 */ { UD_Ipmaxsb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0220 */ { UD_Ipmaxsd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0221 */ { UD_Ipmaxuw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0222 */ { UD_Ipmaxud, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0223 */ { UD_Ipmulld, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0224 */ { UD_Iphminposuw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0225 */ { UD_Iinvept, O_Gq, O_Mo, O_NONE, P_none }, /* 0226 */ { UD_Iinvvpid, O_Gq, O_Mo, O_NONE, P_none }, /* 0227 */ { UD_Iaesimc, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0228 */ { UD_Iaesenc, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0229 */ { UD_Iaesenclast, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0230 */ { UD_Iaesdec, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0231 */ { UD_Iaesdeclast, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0232 */ { UD_Imovbe, O_Gv, O_Mv, O_NONE, P_aso|P_oso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0233 */ { UD_Icrc32, O_Gy, O_Eb, O_NONE, P_aso|P_oso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0234 */ { UD_Imovbe, O_Mv, O_Gv, O_NONE, P_aso|P_oso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0235 */ { UD_Icrc32, O_Gy, O_Ev, O_NONE, P_aso|P_oso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0236 */ { UD_Iroundps, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, /* 0237 */ { UD_Iroundpd, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, /* 0238 */ { UD_Iroundss, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, /* 0239 */ { UD_Iroundsd, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, /* 0240 */ { UD_Iblendps, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, /* 0241 */ { UD_Iblendpd, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, /* 0242 */ { UD_Ipblendw, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, /* 0243 */ { UD_Ipalignr, O_P, O_Q, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, /* 0244 */ { UD_Ipalignr, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, /* 0245 */ { UD_Ipextrb, O_MbRv, O_V, O_Ib, P_aso|P_rexx|P_rexr|P_rexb|P_def64 }, /* 0246 */ { UD_Ipextrw, O_MwRd, O_V, O_Ib, P_aso|P_rexx|P_rexr|P_rexb }, /* 0247 */ { UD_Ipextrd, O_Ed, O_V, O_Ib, P_aso|P_rexr|P_rexx|P_rexw|P_rexb }, /* 0248 */ { UD_Ipextrd, O_Ed, O_V, O_Ib, P_aso|P_rexr|P_rexx|P_rexw|P_rexb }, /* 0249 */ { UD_Ipextrq, O_Eq, O_V, O_Ib, P_aso|P_rexr|P_rexw|P_rexb|P_def64 }, /* 0250 */ { UD_Iextractps, O_MdRy, O_V, O_Ib, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0251 */ { UD_Ipinsrb, O_V, O_MbRd, O_Ib, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0252 */ { UD_Iinsertps, O_V, O_Md, O_Ib, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0253 */ { UD_Ipinsrd, O_V, O_Ed, O_Ib, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0254 */ { UD_Ipinsrd, O_V, O_Ed, O_Ib, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0255 */ { UD_Ipinsrq, O_V, O_Eq, O_Ib, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0256 */ { UD_Idpps, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, /* 0257 */ { UD_Idppd, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, /* 0258 */ { UD_Impsadbw, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, /* 0259 */ { UD_Ipclmulqdq, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, /* 0260 */ { UD_Ipcmpestrm, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0261 */ { UD_Ipcmpestri, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0262 */ { UD_Ipcmpistrm, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0263 */ { UD_Ipcmpistri, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0264 */ { UD_Iaeskeygenassist, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, /* 0265 */ { UD_Icmovo, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0266 */ { UD_Icmovno, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0267 */ { UD_Icmovb, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0268 */ { UD_Icmovae, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0269 */ { UD_Icmovz, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0270 */ { UD_Icmovnz, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0271 */ { UD_Icmovbe, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0272 */ { UD_Icmova, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0273 */ { UD_Icmovs, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0274 */ { UD_Icmovns, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0275 */ { UD_Icmovp, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0276 */ { UD_Icmovnp, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0277 */ { UD_Icmovl, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0278 */ { UD_Icmovge, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0279 */ { UD_Icmovle, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0280 */ { UD_Icmovg, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0281 */ { UD_Imovmskps, O_Gd, O_U, O_NONE, P_oso|P_rexr|P_rexb }, /* 0282 */ { UD_Imovmskpd, O_Gd, O_U, O_NONE, P_oso|P_rexr|P_rexb }, /* 0283 */ { UD_Isqrtps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0284 */ { UD_Isqrtsd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0285 */ { UD_Isqrtss, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0286 */ { UD_Isqrtpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0287 */ { UD_Irsqrtps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0288 */ { UD_Irsqrtss, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0289 */ { UD_Ircpps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0290 */ { UD_Ircpss, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0291 */ { UD_Iandps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0292 */ { UD_Iandpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0293 */ { UD_Iandnps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0294 */ { UD_Iandnpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0295 */ { UD_Iorps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0296 */ { UD_Iorpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0297 */ { UD_Ixorps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0298 */ { UD_Ixorpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0299 */ { UD_Iaddps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0300 */ { UD_Iaddsd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0301 */ { UD_Iaddss, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0302 */ { UD_Iaddpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0303 */ { UD_Imulps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0304 */ { UD_Imulsd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0305 */ { UD_Imulss, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0306 */ { UD_Imulpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0307 */ { UD_Icvtps2pd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0308 */ { UD_Icvtsd2ss, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0309 */ { UD_Icvtss2sd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0310 */ { UD_Icvtpd2ps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0311 */ { UD_Icvtdq2ps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0312 */ { UD_Icvttps2dq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0313 */ { UD_Icvtps2dq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0314 */ { UD_Isubps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0315 */ { UD_Isubsd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0316 */ { UD_Isubss, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0317 */ { UD_Isubpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0318 */ { UD_Iminps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0319 */ { UD_Iminsd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0320 */ { UD_Iminss, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0321 */ { UD_Iminpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0322 */ { UD_Idivps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0323 */ { UD_Idivsd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0324 */ { UD_Idivss, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0325 */ { UD_Idivpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0326 */ { UD_Imaxps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0327 */ { UD_Imaxsd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0328 */ { UD_Imaxss, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0329 */ { UD_Imaxpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0330 */ { UD_Ipunpcklbw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0331 */ { UD_Ipunpcklbw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0332 */ { UD_Ipunpcklwd, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0333 */ { UD_Ipunpcklwd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0334 */ { UD_Ipunpckldq, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0335 */ { UD_Ipunpckldq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0336 */ { UD_Ipacksswb, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0337 */ { UD_Ipacksswb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0338 */ { UD_Ipcmpgtb, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0339 */ { UD_Ipcmpgtb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0340 */ { UD_Ipcmpgtw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0341 */ { UD_Ipcmpgtw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0342 */ { UD_Ipcmpgtd, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0343 */ { UD_Ipcmpgtd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0344 */ { UD_Ipackuswb, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0345 */ { UD_Ipackuswb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0346 */ { UD_Ipunpckhbw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0347 */ { UD_Ipunpckhbw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0348 */ { UD_Ipunpckhwd, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0349 */ { UD_Ipunpckhwd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0350 */ { UD_Ipunpckhdq, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0351 */ { UD_Ipunpckhdq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0352 */ { UD_Ipackssdw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0353 */ { UD_Ipackssdw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0354 */ { UD_Ipunpcklqdq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0355 */ { UD_Ipunpckhqdq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0356 */ { UD_Imovd, O_P, O_Ey, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0357 */ { UD_Imovd, O_V, O_Ey, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0358 */ { UD_Imovq, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0359 */ { UD_Imovdqu, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0360 */ { UD_Imovdqa, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0361 */ { UD_Ipshufw, O_P, O_Q, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, /* 0362 */ { UD_Ipshuflw, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, /* 0363 */ { UD_Ipshufhw, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, /* 0364 */ { UD_Ipshufd, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, /* 0365 */ { UD_Ipsrlw, O_N, O_Ib, O_NONE, P_none }, /* 0366 */ { UD_Ipsrlw, O_U, O_Ib, O_NONE, P_rexb }, /* 0367 */ { UD_Ipsraw, O_N, O_Ib, O_NONE, P_none }, /* 0368 */ { UD_Ipsraw, O_U, O_Ib, O_NONE, P_rexb }, /* 0369 */ { UD_Ipsllw, O_N, O_Ib, O_NONE, P_none }, /* 0370 */ { UD_Ipsllw, O_U, O_Ib, O_NONE, P_rexb }, /* 0371 */ { UD_Ipsrld, O_N, O_Ib, O_NONE, P_none }, /* 0372 */ { UD_Ipsrld, O_U, O_Ib, O_NONE, P_rexb }, /* 0373 */ { UD_Ipsrad, O_N, O_Ib, O_NONE, P_none }, /* 0374 */ { UD_Ipsrad, O_U, O_Ib, O_NONE, P_rexb }, /* 0375 */ { UD_Ipslld, O_N, O_Ib, O_NONE, P_none }, /* 0376 */ { UD_Ipslld, O_U, O_Ib, O_NONE, P_rexb }, /* 0377 */ { UD_Ipsrlq, O_N, O_Ib, O_NONE, P_none }, /* 0378 */ { UD_Ipsrlq, O_U, O_Ib, O_NONE, P_rexb }, /* 0379 */ { UD_Ipsrldq, O_U, O_Ib, O_NONE, P_rexb }, /* 0380 */ { UD_Ipsllq, O_N, O_Ib, O_NONE, P_none }, /* 0381 */ { UD_Ipsllq, O_U, O_Ib, O_NONE, P_rexb }, /* 0382 */ { UD_Ipslldq, O_U, O_Ib, O_NONE, P_rexb }, /* 0383 */ { UD_Ipcmpeqb, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0384 */ { UD_Ipcmpeqb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0385 */ { UD_Ipcmpeqw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0386 */ { UD_Ipcmpeqw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0387 */ { UD_Ipcmpeqd, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0388 */ { UD_Ipcmpeqd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0389 */ { UD_Iemms, O_NONE, O_NONE, O_NONE, P_none }, /* 0390 */ { UD_Ivmread, O_Ey, O_Gy, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_def64 }, /* 0391 */ { UD_Ivmwrite, O_Gy, O_Ey, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_def64 }, /* 0392 */ { UD_Ihaddps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0393 */ { UD_Ihaddpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0394 */ { UD_Ihsubps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0395 */ { UD_Ihsubpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0396 */ { UD_Imovd, O_Ey, O_P, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0397 */ { UD_Imovq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0398 */ { UD_Imovd, O_Ey, O_V, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0399 */ { UD_Imovq, O_Q, O_P, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0400 */ { UD_Imovdqu, O_W, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0401 */ { UD_Imovdqa, O_W, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0402 */ { UD_Ijo, O_Jz, O_NONE, O_NONE, P_oso|P_def64 }, /* 0403 */ { UD_Ijno, O_Jz, O_NONE, O_NONE, P_oso|P_def64 }, /* 0404 */ { UD_Ijb, O_Jz, O_NONE, O_NONE, P_oso|P_def64 }, /* 0405 */ { UD_Ijae, O_Jz, O_NONE, O_NONE, P_oso|P_def64 }, /* 0406 */ { UD_Ijz, O_Jz, O_NONE, O_NONE, P_oso|P_def64 }, /* 0407 */ { UD_Ijnz, O_Jz, O_NONE, O_NONE, P_oso|P_def64 }, /* 0408 */ { UD_Ijbe, O_Jz, O_NONE, O_NONE, P_oso|P_def64 }, /* 0409 */ { UD_Ija, O_Jz, O_NONE, O_NONE, P_oso|P_def64 }, /* 0410 */ { UD_Ijs, O_Jz, O_NONE, O_NONE, P_oso|P_def64 }, /* 0411 */ { UD_Ijns, O_Jz, O_NONE, O_NONE, P_oso|P_def64 }, /* 0412 */ { UD_Ijp, O_Jz, O_NONE, O_NONE, P_oso|P_def64 }, /* 0413 */ { UD_Ijnp, O_Jz, O_NONE, O_NONE, P_oso|P_def64 }, /* 0414 */ { UD_Ijl, O_Jz, O_NONE, O_NONE, P_oso|P_def64 }, /* 0415 */ { UD_Ijge, O_Jz, O_NONE, O_NONE, P_oso|P_def64 }, /* 0416 */ { UD_Ijle, O_Jz, O_NONE, O_NONE, P_oso|P_def64 }, /* 0417 */ { UD_Ijg, O_Jz, O_NONE, O_NONE, P_oso|P_def64 }, /* 0418 */ { UD_Iseto, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0419 */ { UD_Isetno, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0420 */ { UD_Isetb, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0421 */ { UD_Isetae, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0422 */ { UD_Isetz, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0423 */ { UD_Isetnz, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0424 */ { UD_Isetbe, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0425 */ { UD_Iseta, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0426 */ { UD_Isets, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0427 */ { UD_Isetns, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0428 */ { UD_Isetp, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0429 */ { UD_Isetnp, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0430 */ { UD_Isetl, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0431 */ { UD_Isetge, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0432 */ { UD_Isetle, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0433 */ { UD_Isetg, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0434 */ { UD_Ipush, O_FS, O_NONE, O_NONE, P_none }, /* 0435 */ { UD_Ipop, O_FS, O_NONE, O_NONE, P_none }, /* 0436 */ { UD_Icpuid, O_NONE, O_NONE, O_NONE, P_none }, /* 0437 */ { UD_Ibt, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0438 */ { UD_Ishld, O_Ev, O_Gv, O_Ib, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0439 */ { UD_Ishld, O_Ev, O_Gv, O_CL, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0440 */ { UD_Imontmul, O_NONE, O_NONE, O_NONE, P_none }, /* 0441 */ { UD_Ixsha1, O_NONE, O_NONE, O_NONE, P_none }, /* 0442 */ { UD_Ixsha256, O_NONE, O_NONE, O_NONE, P_none }, /* 0443 */ { UD_Ixstore, O_NONE, O_NONE, O_NONE, P_none }, /* 0444 */ { UD_Ixcryptecb, O_NONE, O_NONE, O_NONE, P_none }, /* 0445 */ { UD_Ixcryptcbc, O_NONE, O_NONE, O_NONE, P_none }, /* 0446 */ { UD_Ixcryptctr, O_NONE, O_NONE, O_NONE, P_none }, /* 0447 */ { UD_Ixcryptcfb, O_NONE, O_NONE, O_NONE, P_none }, /* 0448 */ { UD_Ixcryptofb, O_NONE, O_NONE, O_NONE, P_none }, /* 0449 */ { UD_Ipush, O_GS, O_NONE, O_NONE, P_none }, /* 0450 */ { UD_Ipop, O_GS, O_NONE, O_NONE, P_none }, /* 0451 */ { UD_Irsm, O_NONE, O_NONE, O_NONE, P_none }, /* 0452 */ { UD_Ibts, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0453 */ { UD_Ishrd, O_Ev, O_Gv, O_Ib, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0454 */ { UD_Ishrd, O_Ev, O_Gv, O_CL, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0455 */ { UD_Ifxsave, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0456 */ { UD_Ifxrstor, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0457 */ { UD_Ildmxcsr, O_Md, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0458 */ { UD_Istmxcsr, O_Md, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0459 */ { UD_Ixsave, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0460 */ { UD_Ixrstor, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0461 */ { UD_Iclflush, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0462 */ { UD_Ilfence, O_NONE, O_NONE, O_NONE, P_none }, /* 0463 */ { UD_Ilfence, O_NONE, O_NONE, O_NONE, P_none }, /* 0464 */ { UD_Ilfence, O_NONE, O_NONE, O_NONE, P_none }, /* 0465 */ { UD_Ilfence, O_NONE, O_NONE, O_NONE, P_none }, /* 0466 */ { UD_Ilfence, O_NONE, O_NONE, O_NONE, P_none }, /* 0467 */ { UD_Ilfence, O_NONE, O_NONE, O_NONE, P_none }, /* 0468 */ { UD_Ilfence, O_NONE, O_NONE, O_NONE, P_none }, /* 0469 */ { UD_Ilfence, O_NONE, O_NONE, O_NONE, P_none }, /* 0470 */ { UD_Imfence, O_NONE, O_NONE, O_NONE, P_none }, /* 0471 */ { UD_Imfence, O_NONE, O_NONE, O_NONE, P_none }, /* 0472 */ { UD_Imfence, O_NONE, O_NONE, O_NONE, P_none }, /* 0473 */ { UD_Imfence, O_NONE, O_NONE, O_NONE, P_none }, /* 0474 */ { UD_Imfence, O_NONE, O_NONE, O_NONE, P_none }, /* 0475 */ { UD_Imfence, O_NONE, O_NONE, O_NONE, P_none }, /* 0476 */ { UD_Imfence, O_NONE, O_NONE, O_NONE, P_none }, /* 0477 */ { UD_Imfence, O_NONE, O_NONE, O_NONE, P_none }, /* 0478 */ { UD_Isfence, O_NONE, O_NONE, O_NONE, P_none }, /* 0479 */ { UD_Isfence, O_NONE, O_NONE, O_NONE, P_none }, /* 0480 */ { UD_Isfence, O_NONE, O_NONE, O_NONE, P_none }, /* 0481 */ { UD_Isfence, O_NONE, O_NONE, O_NONE, P_none }, /* 0482 */ { UD_Isfence, O_NONE, O_NONE, O_NONE, P_none }, /* 0483 */ { UD_Isfence, O_NONE, O_NONE, O_NONE, P_none }, /* 0484 */ { UD_Isfence, O_NONE, O_NONE, O_NONE, P_none }, /* 0485 */ { UD_Isfence, O_NONE, O_NONE, O_NONE, P_none }, /* 0486 */ { UD_Iimul, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0487 */ { UD_Icmpxchg, O_Eb, O_Gb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0488 */ { UD_Icmpxchg, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0489 */ { UD_Ilss, O_Gv, O_M, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0490 */ { UD_Ibtr, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0491 */ { UD_Ilfs, O_Gz, O_M, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0492 */ { UD_Ilgs, O_Gz, O_M, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0493 */ { UD_Imovzx, O_Gv, O_Eb, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0494 */ { UD_Imovzx, O_Gy, O_Ew, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0495 */ { UD_Ipopcnt, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexr|P_rexw|P_rexx|P_rexb }, /* 0496 */ { UD_Ibt, O_Ev, O_Ib, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0497 */ { UD_Ibts, O_Ev, O_Ib, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0498 */ { UD_Ibtr, O_Ev, O_Ib, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0499 */ { UD_Ibtc, O_Ev, O_Ib, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0500 */ { UD_Ibtc, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0501 */ { UD_Ibsf, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0502 */ { UD_Ibsr, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0503 */ { UD_Imovsx, O_Gv, O_Eb, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0504 */ { UD_Imovsx, O_Gy, O_Ew, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0505 */ { UD_Ixadd, O_Eb, O_Gb, O_NONE, P_aso|P_oso|P_rexr|P_rexx|P_rexb }, /* 0506 */ { UD_Ixadd, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0507 */ { UD_Icmpps, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, /* 0508 */ { UD_Icmpsd, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, /* 0509 */ { UD_Icmpss, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, /* 0510 */ { UD_Icmppd, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, /* 0511 */ { UD_Imovnti, O_M, O_Gy, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0512 */ { UD_Ipinsrw, O_P, O_MwRy, O_Ib, P_aso|P_rexw|P_rexr|P_rexx|P_rexb|P_def64 }, /* 0513 */ { UD_Ipinsrw, O_V, O_MwRy, O_Ib, P_aso|P_rexw|P_rexr|P_rexx|P_rexb|P_def64 }, /* 0514 */ { UD_Ipextrw, O_Gd, O_N, O_Ib, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0515 */ { UD_Ipextrw, O_Gd, O_U, O_Ib, P_aso|P_rexr|P_rexb }, /* 0516 */ { UD_Ishufps, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, /* 0517 */ { UD_Ishufpd, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb }, /* 0518 */ { UD_Icmpxchg8b, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0519 */ { UD_Icmpxchg8b, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0520 */ { UD_Icmpxchg16b, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0521 */ { UD_Ivmptrld, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0522 */ { UD_Ivmxon, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0523 */ { UD_Ivmclear, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0524 */ { UD_Ivmptrst, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0525 */ { UD_Ibswap, O_R0y, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, /* 0526 */ { UD_Ibswap, O_R1y, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, /* 0527 */ { UD_Ibswap, O_R2y, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, /* 0528 */ { UD_Ibswap, O_R3y, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, /* 0529 */ { UD_Ibswap, O_R4y, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, /* 0530 */ { UD_Ibswap, O_R5y, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, /* 0531 */ { UD_Ibswap, O_R6y, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, /* 0532 */ { UD_Ibswap, O_R7y, O_NONE, O_NONE, P_oso|P_rexw|P_rexb }, /* 0533 */ { UD_Iaddsubps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0534 */ { UD_Iaddsubpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0535 */ { UD_Ipsrlw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0536 */ { UD_Ipsrlw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0537 */ { UD_Ipsrld, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0538 */ { UD_Ipsrld, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0539 */ { UD_Ipsrlq, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0540 */ { UD_Ipsrlq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0541 */ { UD_Ipaddq, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0542 */ { UD_Ipaddq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0543 */ { UD_Ipmullw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0544 */ { UD_Ipmullw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0545 */ { UD_Imovdq2q, O_P, O_U, O_NONE, P_aso|P_rexb }, /* 0546 */ { UD_Imovq2dq, O_V, O_N, O_NONE, P_aso|P_rexr }, /* 0547 */ { UD_Imovq, O_W, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0548 */ { UD_Ipmovmskb, O_Gd, O_N, O_NONE, P_oso|P_rexr|P_rexb }, /* 0549 */ { UD_Ipmovmskb, O_Gd, O_U, O_NONE, P_rexr|P_rexb }, /* 0550 */ { UD_Ipsubusb, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0551 */ { UD_Ipsubusb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0552 */ { UD_Ipsubusw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0553 */ { UD_Ipsubusw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0554 */ { UD_Ipminub, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0555 */ { UD_Ipminub, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0556 */ { UD_Ipand, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0557 */ { UD_Ipand, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0558 */ { UD_Ipaddusb, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0559 */ { UD_Ipaddusb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0560 */ { UD_Ipaddusw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0561 */ { UD_Ipaddusw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0562 */ { UD_Ipmaxub, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0563 */ { UD_Ipmaxub, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0564 */ { UD_Ipandn, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0565 */ { UD_Ipandn, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0566 */ { UD_Ipavgb, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0567 */ { UD_Ipavgb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0568 */ { UD_Ipsraw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0569 */ { UD_Ipsraw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0570 */ { UD_Ipsrad, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0571 */ { UD_Ipsrad, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0572 */ { UD_Ipavgw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0573 */ { UD_Ipavgw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0574 */ { UD_Ipmulhuw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0575 */ { UD_Ipmulhuw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0576 */ { UD_Ipmulhw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0577 */ { UD_Ipmulhw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0578 */ { UD_Icvtpd2dq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0579 */ { UD_Icvtdq2pd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0580 */ { UD_Icvttpd2dq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0581 */ { UD_Imovntq, O_M, O_P, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0582 */ { UD_Imovntdq, O_M, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0583 */ { UD_Ipsubsb, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0584 */ { UD_Ipsubsb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0585 */ { UD_Ipsubsw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0586 */ { UD_Ipsubsw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0587 */ { UD_Ipminsw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0588 */ { UD_Ipminsw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0589 */ { UD_Ipor, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0590 */ { UD_Ipor, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0591 */ { UD_Ipaddsb, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0592 */ { UD_Ipaddsb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0593 */ { UD_Ipaddsw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0594 */ { UD_Ipaddsw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0595 */ { UD_Ipmaxsw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0596 */ { UD_Ipmaxsw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0597 */ { UD_Ipxor, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0598 */ { UD_Ipxor, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0599 */ { UD_Ilddqu, O_V, O_M, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0600 */ { UD_Ipsllw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0601 */ { UD_Ipsllw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0602 */ { UD_Ipslld, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0603 */ { UD_Ipslld, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0604 */ { UD_Ipsllq, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0605 */ { UD_Ipsllq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0606 */ { UD_Ipmuludq, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0607 */ { UD_Ipmuludq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0608 */ { UD_Ipmaddwd, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0609 */ { UD_Ipmaddwd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0610 */ { UD_Ipsadbw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0611 */ { UD_Ipsadbw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0612 */ { UD_Imaskmovq, O_P, O_N, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0613 */ { UD_Imaskmovdqu, O_V, O_U, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0614 */ { UD_Ipsubb, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0615 */ { UD_Ipsubb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0616 */ { UD_Ipsubw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0617 */ { UD_Ipsubw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0618 */ { UD_Ipsubd, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0619 */ { UD_Ipsubd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0620 */ { UD_Ipsubq, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0621 */ { UD_Ipsubq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0622 */ { UD_Ipaddb, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0623 */ { UD_Ipaddb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0624 */ { UD_Ipaddw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0625 */ { UD_Ipaddw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0626 */ { UD_Ipaddd, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0627 */ { UD_Ipaddd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0628 */ { UD_Iadc, O_Eb, O_Gb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0629 */ { UD_Iadc, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0630 */ { UD_Iadc, O_Gb, O_Eb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0631 */ { UD_Iadc, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0632 */ { UD_Iadc, O_AL, O_Ib, O_NONE, P_none }, /* 0633 */ { UD_Iadc, O_rAX, O_sIz, O_NONE, P_oso|P_rexw }, /* 0634 */ { UD_Ipush, O_SS, O_NONE, O_NONE, P_inv64 }, /* 0635 */ { UD_Ipop, O_SS, O_NONE, O_NONE, P_inv64 }, /* 0636 */ { UD_Isbb, O_Eb, O_Gb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0637 */ { UD_Isbb, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0638 */ { UD_Isbb, O_Gb, O_Eb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0639 */ { UD_Isbb, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0640 */ { UD_Isbb, O_AL, O_Ib, O_NONE, P_none }, /* 0641 */ { UD_Isbb, O_rAX, O_sIz, O_NONE, P_oso|P_rexw }, /* 0642 */ { UD_Ipush, O_DS, O_NONE, O_NONE, P_inv64 }, /* 0643 */ { UD_Ipop, O_DS, O_NONE, O_NONE, P_inv64 }, /* 0644 */ { UD_Iand, O_Eb, O_Gb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0645 */ { UD_Iand, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0646 */ { UD_Iand, O_Gb, O_Eb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0647 */ { UD_Iand, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0648 */ { UD_Iand, O_AL, O_Ib, O_NONE, P_none }, /* 0649 */ { UD_Iand, O_rAX, O_sIz, O_NONE, P_oso|P_rexw }, /* 0650 */ { UD_Idaa, O_NONE, O_NONE, O_NONE, P_inv64 }, /* 0651 */ { UD_Isub, O_Eb, O_Gb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0652 */ { UD_Isub, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0653 */ { UD_Isub, O_Gb, O_Eb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0654 */ { UD_Isub, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0655 */ { UD_Isub, O_AL, O_Ib, O_NONE, P_none }, /* 0656 */ { UD_Isub, O_rAX, O_sIz, O_NONE, P_oso|P_rexw }, /* 0657 */ { UD_Idas, O_NONE, O_NONE, O_NONE, P_inv64 }, /* 0658 */ { UD_Ixor, O_Eb, O_Gb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0659 */ { UD_Ixor, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0660 */ { UD_Ixor, O_Gb, O_Eb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0661 */ { UD_Ixor, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0662 */ { UD_Ixor, O_AL, O_Ib, O_NONE, P_none }, /* 0663 */ { UD_Ixor, O_rAX, O_sIz, O_NONE, P_oso|P_rexw }, /* 0664 */ { UD_Iaaa, O_NONE, O_NONE, O_NONE, P_none }, /* 0665 */ { UD_Icmp, O_Eb, O_Gb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0666 */ { UD_Icmp, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0667 */ { UD_Icmp, O_Gb, O_Eb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0668 */ { UD_Icmp, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0669 */ { UD_Icmp, O_AL, O_Ib, O_NONE, P_none }, /* 0670 */ { UD_Icmp, O_rAX, O_sIz, O_NONE, P_oso|P_rexw }, /* 0671 */ { UD_Iaas, O_NONE, O_NONE, O_NONE, P_none }, /* 0672 */ { UD_Iinc, O_R0z, O_NONE, O_NONE, P_oso }, /* 0673 */ { UD_Iinc, O_R1z, O_NONE, O_NONE, P_oso }, /* 0674 */ { UD_Iinc, O_R2z, O_NONE, O_NONE, P_oso }, /* 0675 */ { UD_Iinc, O_R3z, O_NONE, O_NONE, P_oso }, /* 0676 */ { UD_Iinc, O_R4z, O_NONE, O_NONE, P_oso }, /* 0677 */ { UD_Iinc, O_R5z, O_NONE, O_NONE, P_oso }, /* 0678 */ { UD_Iinc, O_R6z, O_NONE, O_NONE, P_oso }, /* 0679 */ { UD_Iinc, O_R7z, O_NONE, O_NONE, P_oso }, /* 0680 */ { UD_Idec, O_R0z, O_NONE, O_NONE, P_oso }, /* 0681 */ { UD_Idec, O_R1z, O_NONE, O_NONE, P_oso }, /* 0682 */ { UD_Idec, O_R2z, O_NONE, O_NONE, P_oso }, /* 0683 */ { UD_Idec, O_R3z, O_NONE, O_NONE, P_oso }, /* 0684 */ { UD_Idec, O_R4z, O_NONE, O_NONE, P_oso }, /* 0685 */ { UD_Idec, O_R5z, O_NONE, O_NONE, P_oso }, /* 0686 */ { UD_Idec, O_R6z, O_NONE, O_NONE, P_oso }, /* 0687 */ { UD_Idec, O_R7z, O_NONE, O_NONE, P_oso }, /* 0688 */ { UD_Ipush, O_R0v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, /* 0689 */ { UD_Ipush, O_R1v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, /* 0690 */ { UD_Ipush, O_R2v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, /* 0691 */ { UD_Ipush, O_R3v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, /* 0692 */ { UD_Ipush, O_R4v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, /* 0693 */ { UD_Ipush, O_R5v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, /* 0694 */ { UD_Ipush, O_R6v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, /* 0695 */ { UD_Ipush, O_R7v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, /* 0696 */ { UD_Ipop, O_R0v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, /* 0697 */ { UD_Ipop, O_R1v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, /* 0698 */ { UD_Ipop, O_R2v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, /* 0699 */ { UD_Ipop, O_R3v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, /* 0700 */ { UD_Ipop, O_R4v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, /* 0701 */ { UD_Ipop, O_R5v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, /* 0702 */ { UD_Ipop, O_R6v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, /* 0703 */ { UD_Ipop, O_R7v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 }, /* 0704 */ { UD_Ipusha, O_NONE, O_NONE, O_NONE, P_oso|P_inv64 }, /* 0705 */ { UD_Ipushad, O_NONE, O_NONE, O_NONE, P_oso|P_inv64 }, /* 0706 */ { UD_Ipopa, O_NONE, O_NONE, O_NONE, P_oso|P_inv64 }, /* 0707 */ { UD_Ipopad, O_NONE, O_NONE, O_NONE, P_oso|P_inv64 }, /* 0708 */ { UD_Ibound, O_Gv, O_M, O_NONE, P_aso|P_oso }, /* 0709 */ { UD_Iarpl, O_Ew, O_Gw, O_NONE, P_aso }, /* 0710 */ { UD_Imovsxd, O_Gq, O_Ed, O_NONE, P_aso|P_oso|P_rexw|P_rexx|P_rexr|P_rexb }, /* 0711 */ { UD_Ipush, O_sIz, O_NONE, O_NONE, P_oso|P_def64 }, /* 0712 */ { UD_Iimul, O_Gv, O_Ev, O_Iz, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0713 */ { UD_Ipush, O_sIb, O_NONE, O_NONE, P_oso|P_def64 }, /* 0714 */ { UD_Iimul, O_Gv, O_Ev, O_sIb, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0715 */ { UD_Iinsb, O_NONE, O_NONE, O_NONE, P_str|P_seg }, /* 0716 */ { UD_Iinsw, O_NONE, O_NONE, O_NONE, P_str|P_oso|P_seg }, /* 0717 */ { UD_Iinsd, O_NONE, O_NONE, O_NONE, P_str|P_oso|P_seg }, /* 0718 */ { UD_Ioutsb, O_NONE, O_NONE, O_NONE, P_str|P_seg }, /* 0719 */ { UD_Ioutsw, O_NONE, O_NONE, O_NONE, P_str|P_oso|P_seg }, /* 0720 */ { UD_Ioutsd, O_NONE, O_NONE, O_NONE, P_str|P_oso|P_seg }, /* 0721 */ { UD_Ijo, O_Jb, O_NONE, O_NONE, P_none }, /* 0722 */ { UD_Ijno, O_Jb, O_NONE, O_NONE, P_none }, /* 0723 */ { UD_Ijb, O_Jb, O_NONE, O_NONE, P_none }, /* 0724 */ { UD_Ijae, O_Jb, O_NONE, O_NONE, P_none }, /* 0725 */ { UD_Ijz, O_Jb, O_NONE, O_NONE, P_none }, /* 0726 */ { UD_Ijnz, O_Jb, O_NONE, O_NONE, P_none }, /* 0727 */ { UD_Ijbe, O_Jb, O_NONE, O_NONE, P_none }, /* 0728 */ { UD_Ija, O_Jb, O_NONE, O_NONE, P_none }, /* 0729 */ { UD_Ijs, O_Jb, O_NONE, O_NONE, P_none }, /* 0730 */ { UD_Ijns, O_Jb, O_NONE, O_NONE, P_none }, /* 0731 */ { UD_Ijp, O_Jb, O_NONE, O_NONE, P_none }, /* 0732 */ { UD_Ijnp, O_Jb, O_NONE, O_NONE, P_none }, /* 0733 */ { UD_Ijl, O_Jb, O_NONE, O_NONE, P_none }, /* 0734 */ { UD_Ijge, O_Jb, O_NONE, O_NONE, P_none }, /* 0735 */ { UD_Ijle, O_Jb, O_NONE, O_NONE, P_none }, /* 0736 */ { UD_Ijg, O_Jb, O_NONE, O_NONE, P_none }, /* 0737 */ { UD_Iadd, O_Eb, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0738 */ { UD_Ior, O_Eb, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0739 */ { UD_Iadc, O_Eb, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0740 */ { UD_Isbb, O_Eb, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0741 */ { UD_Iand, O_Eb, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0742 */ { UD_Isub, O_Eb, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0743 */ { UD_Ixor, O_Eb, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0744 */ { UD_Icmp, O_Eb, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0745 */ { UD_Iadd, O_Ev, O_sIz, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0746 */ { UD_Ior, O_Ev, O_sIz, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0747 */ { UD_Iadc, O_Ev, O_sIz, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0748 */ { UD_Isbb, O_Ev, O_sIz, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0749 */ { UD_Iand, O_Ev, O_sIz, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0750 */ { UD_Isub, O_Ev, O_sIz, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0751 */ { UD_Ixor, O_Ev, O_sIz, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0752 */ { UD_Icmp, O_Ev, O_sIz, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0753 */ { UD_Iadd, O_Eb, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_inv64 }, /* 0754 */ { UD_Ior, O_Eb, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0755 */ { UD_Iadc, O_Eb, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_inv64 }, /* 0756 */ { UD_Isbb, O_Eb, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_inv64 }, /* 0757 */ { UD_Iand, O_Eb, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_inv64 }, /* 0758 */ { UD_Isub, O_Eb, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_inv64 }, /* 0759 */ { UD_Ixor, O_Eb, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_inv64 }, /* 0760 */ { UD_Icmp, O_Eb, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_inv64 }, /* 0761 */ { UD_Iadd, O_Ev, O_sIb, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0762 */ { UD_Ior, O_Ev, O_sIb, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0763 */ { UD_Iadc, O_Ev, O_sIb, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0764 */ { UD_Isbb, O_Ev, O_sIb, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0765 */ { UD_Iand, O_Ev, O_sIb, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0766 */ { UD_Isub, O_Ev, O_sIb, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0767 */ { UD_Ixor, O_Ev, O_sIb, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0768 */ { UD_Icmp, O_Ev, O_sIb, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0769 */ { UD_Itest, O_Eb, O_Gb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0770 */ { UD_Itest, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0771 */ { UD_Ixchg, O_Eb, O_Gb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0772 */ { UD_Ixchg, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0773 */ { UD_Imov, O_Eb, O_Gb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0774 */ { UD_Imov, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0775 */ { UD_Imov, O_Gb, O_Eb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0776 */ { UD_Imov, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0777 */ { UD_Imov, O_MwRv, O_S, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0778 */ { UD_Ilea, O_Gv, O_M, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0779 */ { UD_Imov, O_S, O_MwRv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0780 */ { UD_Ipop, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb|P_def64 }, /* 0781 */ { UD_Ixchg, O_R0v, O_rAX, O_NONE, P_oso|P_rexw|P_rexb }, /* 0782 */ { UD_Ixchg, O_R1v, O_rAX, O_NONE, P_oso|P_rexw|P_rexb }, /* 0783 */ { UD_Ixchg, O_R2v, O_rAX, O_NONE, P_oso|P_rexw|P_rexb }, /* 0784 */ { UD_Ixchg, O_R3v, O_rAX, O_NONE, P_oso|P_rexw|P_rexb }, /* 0785 */ { UD_Ixchg, O_R4v, O_rAX, O_NONE, P_oso|P_rexw|P_rexb }, /* 0786 */ { UD_Ixchg, O_R5v, O_rAX, O_NONE, P_oso|P_rexw|P_rexb }, /* 0787 */ { UD_Ixchg, O_R6v, O_rAX, O_NONE, P_oso|P_rexw|P_rexb }, /* 0788 */ { UD_Ixchg, O_R7v, O_rAX, O_NONE, P_oso|P_rexw|P_rexb }, /* 0789 */ { UD_Icbw, O_NONE, O_NONE, O_NONE, P_oso|P_rexw }, /* 0790 */ { UD_Icwde, O_NONE, O_NONE, O_NONE, P_oso|P_rexw }, /* 0791 */ { UD_Icdqe, O_NONE, O_NONE, O_NONE, P_oso|P_rexw }, /* 0792 */ { UD_Icwd, O_NONE, O_NONE, O_NONE, P_oso|P_rexw }, /* 0793 */ { UD_Icdq, O_NONE, O_NONE, O_NONE, P_oso|P_rexw }, /* 0794 */ { UD_Icqo, O_NONE, O_NONE, O_NONE, P_oso|P_rexw }, /* 0795 */ { UD_Icall, O_Av, O_NONE, O_NONE, P_oso }, /* 0796 */ { UD_Iwait, O_NONE, O_NONE, O_NONE, P_none }, /* 0797 */ { UD_Ipushfw, O_NONE, O_NONE, O_NONE, P_oso }, /* 0798 */ { UD_Ipushfw, O_NONE, O_NONE, O_NONE, P_oso|P_rexw|P_def64 }, /* 0799 */ { UD_Ipushfd, O_NONE, O_NONE, O_NONE, P_oso }, /* 0800 */ { UD_Ipushfq, O_NONE, O_NONE, O_NONE, P_oso|P_rexw|P_def64 }, /* 0801 */ { UD_Ipushfq, O_NONE, O_NONE, O_NONE, P_oso|P_rexw|P_def64 }, /* 0802 */ { UD_Ipopfw, O_NONE, O_NONE, O_NONE, P_oso }, /* 0803 */ { UD_Ipopfd, O_NONE, O_NONE, O_NONE, P_oso }, /* 0804 */ { UD_Ipopfq, O_NONE, O_NONE, O_NONE, P_oso|P_def64 }, /* 0805 */ { UD_Ipopfq, O_NONE, O_NONE, O_NONE, P_oso|P_def64 }, /* 0806 */ { UD_Isahf, O_NONE, O_NONE, O_NONE, P_none }, /* 0807 */ { UD_Ilahf, O_NONE, O_NONE, O_NONE, P_none }, /* 0808 */ { UD_Imov, O_AL, O_Ob, O_NONE, P_none }, /* 0809 */ { UD_Imov, O_rAX, O_Ov, O_NONE, P_aso|P_oso|P_rexw }, /* 0810 */ { UD_Imov, O_Ob, O_AL, O_NONE, P_none }, /* 0811 */ { UD_Imov, O_Ov, O_rAX, O_NONE, P_aso|P_oso|P_rexw }, /* 0812 */ { UD_Imovsb, O_NONE, O_NONE, O_NONE, P_str|P_seg }, /* 0813 */ { UD_Imovsw, O_NONE, O_NONE, O_NONE, P_str|P_seg|P_oso|P_rexw }, /* 0814 */ { UD_Imovsd, O_NONE, O_NONE, O_NONE, P_str|P_seg|P_oso|P_rexw }, /* 0815 */ { UD_Imovsq, O_NONE, O_NONE, O_NONE, P_str|P_seg|P_oso|P_rexw }, /* 0816 */ { UD_Icmpsb, O_NONE, O_NONE, O_NONE, P_strz|P_seg }, /* 0817 */ { UD_Icmpsw, O_NONE, O_NONE, O_NONE, P_strz|P_oso|P_rexw|P_seg }, /* 0818 */ { UD_Icmpsd, O_NONE, O_NONE, O_NONE, P_strz|P_oso|P_rexw|P_seg }, /* 0819 */ { UD_Icmpsq, O_NONE, O_NONE, O_NONE, P_strz|P_oso|P_rexw|P_seg }, /* 0820 */ { UD_Itest, O_AL, O_Ib, O_NONE, P_none }, /* 0821 */ { UD_Itest, O_rAX, O_sIz, O_NONE, P_oso|P_rexw }, /* 0822 */ { UD_Istosb, O_NONE, O_NONE, O_NONE, P_str|P_seg }, /* 0823 */ { UD_Istosw, O_NONE, O_NONE, O_NONE, P_str|P_seg|P_oso|P_rexw }, /* 0824 */ { UD_Istosd, O_NONE, O_NONE, O_NONE, P_str|P_seg|P_oso|P_rexw }, /* 0825 */ { UD_Istosq, O_NONE, O_NONE, O_NONE, P_str|P_seg|P_oso|P_rexw }, /* 0826 */ { UD_Ilodsb, O_NONE, O_NONE, O_NONE, P_str|P_seg }, /* 0827 */ { UD_Ilodsw, O_NONE, O_NONE, O_NONE, P_str|P_seg|P_oso|P_rexw }, /* 0828 */ { UD_Ilodsd, O_NONE, O_NONE, O_NONE, P_str|P_seg|P_oso|P_rexw }, /* 0829 */ { UD_Ilodsq, O_NONE, O_NONE, O_NONE, P_str|P_seg|P_oso|P_rexw }, /* 0830 */ { UD_Iscasb, O_NONE, O_NONE, O_NONE, P_strz }, /* 0831 */ { UD_Iscasw, O_NONE, O_NONE, O_NONE, P_strz|P_oso|P_rexw }, /* 0832 */ { UD_Iscasd, O_NONE, O_NONE, O_NONE, P_strz|P_oso|P_rexw }, /* 0833 */ { UD_Iscasq, O_NONE, O_NONE, O_NONE, P_strz|P_oso|P_rexw }, /* 0834 */ { UD_Imov, O_R0b, O_Ib, O_NONE, P_rexb }, /* 0835 */ { UD_Imov, O_R1b, O_Ib, O_NONE, P_rexb }, /* 0836 */ { UD_Imov, O_R2b, O_Ib, O_NONE, P_rexb }, /* 0837 */ { UD_Imov, O_R3b, O_Ib, O_NONE, P_rexb }, /* 0838 */ { UD_Imov, O_R4b, O_Ib, O_NONE, P_rexb }, /* 0839 */ { UD_Imov, O_R5b, O_Ib, O_NONE, P_rexb }, /* 0840 */ { UD_Imov, O_R6b, O_Ib, O_NONE, P_rexb }, /* 0841 */ { UD_Imov, O_R7b, O_Ib, O_NONE, P_rexb }, /* 0842 */ { UD_Imov, O_R0v, O_Iv, O_NONE, P_oso|P_rexw|P_rexb }, /* 0843 */ { UD_Imov, O_R1v, O_Iv, O_NONE, P_oso|P_rexw|P_rexb }, /* 0844 */ { UD_Imov, O_R2v, O_Iv, O_NONE, P_oso|P_rexw|P_rexb }, /* 0845 */ { UD_Imov, O_R3v, O_Iv, O_NONE, P_oso|P_rexw|P_rexb }, /* 0846 */ { UD_Imov, O_R4v, O_Iv, O_NONE, P_oso|P_rexw|P_rexb }, /* 0847 */ { UD_Imov, O_R5v, O_Iv, O_NONE, P_oso|P_rexw|P_rexb }, /* 0848 */ { UD_Imov, O_R6v, O_Iv, O_NONE, P_oso|P_rexw|P_rexb }, /* 0849 */ { UD_Imov, O_R7v, O_Iv, O_NONE, P_oso|P_rexw|P_rexb }, /* 0850 */ { UD_Irol, O_Eb, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0851 */ { UD_Iror, O_Eb, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0852 */ { UD_Ircl, O_Eb, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0853 */ { UD_Ircr, O_Eb, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0854 */ { UD_Ishl, O_Eb, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0855 */ { UD_Ishr, O_Eb, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0856 */ { UD_Ishl, O_Eb, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0857 */ { UD_Isar, O_Eb, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0858 */ { UD_Irol, O_Ev, O_Ib, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0859 */ { UD_Iror, O_Ev, O_Ib, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0860 */ { UD_Ircl, O_Ev, O_Ib, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0861 */ { UD_Ircr, O_Ev, O_Ib, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0862 */ { UD_Ishl, O_Ev, O_Ib, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0863 */ { UD_Ishr, O_Ev, O_Ib, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0864 */ { UD_Ishl, O_Ev, O_Ib, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0865 */ { UD_Isar, O_Ev, O_Ib, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0866 */ { UD_Iret, O_Iw, O_NONE, O_NONE, P_none }, /* 0867 */ { UD_Iret, O_NONE, O_NONE, O_NONE, P_none }, /* 0868 */ { UD_Iles, O_Gv, O_M, O_NONE, P_aso|P_oso }, /* 0869 */ { UD_Ilds, O_Gv, O_M, O_NONE, P_aso|P_oso }, /* 0870 */ { UD_Imov, O_Eb, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0871 */ { UD_Imov, O_Ev, O_sIz, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0872 */ { UD_Ienter, O_Iw, O_Ib, O_NONE, P_def64 }, /* 0873 */ { UD_Ileave, O_NONE, O_NONE, O_NONE, P_none }, /* 0874 */ { UD_Iretf, O_Iw, O_NONE, O_NONE, P_none }, /* 0875 */ { UD_Iretf, O_NONE, O_NONE, O_NONE, P_none }, /* 0876 */ { UD_Iint3, O_NONE, O_NONE, O_NONE, P_none }, /* 0877 */ { UD_Iint, O_Ib, O_NONE, O_NONE, P_none }, /* 0878 */ { UD_Iinto, O_NONE, O_NONE, O_NONE, P_inv64 }, /* 0879 */ { UD_Iiretw, O_NONE, O_NONE, O_NONE, P_oso|P_rexw }, /* 0880 */ { UD_Iiretd, O_NONE, O_NONE, O_NONE, P_oso|P_rexw }, /* 0881 */ { UD_Iiretq, O_NONE, O_NONE, O_NONE, P_oso|P_rexw }, /* 0882 */ { UD_Irol, O_Eb, O_I1, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0883 */ { UD_Iror, O_Eb, O_I1, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0884 */ { UD_Ircl, O_Eb, O_I1, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0885 */ { UD_Ircr, O_Eb, O_I1, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0886 */ { UD_Ishl, O_Eb, O_I1, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0887 */ { UD_Ishr, O_Eb, O_I1, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0888 */ { UD_Ishl, O_Eb, O_I1, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0889 */ { UD_Isar, O_Eb, O_I1, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0890 */ { UD_Irol, O_Ev, O_I1, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0891 */ { UD_Iror, O_Ev, O_I1, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0892 */ { UD_Ircl, O_Ev, O_I1, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0893 */ { UD_Ircr, O_Ev, O_I1, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0894 */ { UD_Ishl, O_Ev, O_I1, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0895 */ { UD_Ishr, O_Ev, O_I1, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0896 */ { UD_Ishl, O_Ev, O_I1, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0897 */ { UD_Isar, O_Ev, O_I1, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0898 */ { UD_Irol, O_Eb, O_CL, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0899 */ { UD_Iror, O_Eb, O_CL, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0900 */ { UD_Ircl, O_Eb, O_CL, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0901 */ { UD_Ircr, O_Eb, O_CL, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0902 */ { UD_Ishl, O_Eb, O_CL, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0903 */ { UD_Ishr, O_Eb, O_CL, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0904 */ { UD_Ishl, O_Eb, O_CL, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0905 */ { UD_Isar, O_Eb, O_CL, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0906 */ { UD_Irol, O_Ev, O_CL, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0907 */ { UD_Iror, O_Ev, O_CL, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0908 */ { UD_Ircl, O_Ev, O_CL, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0909 */ { UD_Ircr, O_Ev, O_CL, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0910 */ { UD_Ishl, O_Ev, O_CL, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0911 */ { UD_Ishr, O_Ev, O_CL, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0912 */ { UD_Ishl, O_Ev, O_CL, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0913 */ { UD_Isar, O_Ev, O_CL, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 0914 */ { UD_Iaam, O_Ib, O_NONE, O_NONE, P_none }, /* 0915 */ { UD_Iaad, O_Ib, O_NONE, O_NONE, P_none }, /* 0916 */ { UD_Isalc, O_NONE, O_NONE, O_NONE, P_inv64 }, /* 0917 */ { UD_Ixlatb, O_NONE, O_NONE, O_NONE, P_rexw|P_seg }, /* 0918 */ { UD_Ifadd, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0919 */ { UD_Ifmul, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0920 */ { UD_Ifcom, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0921 */ { UD_Ifcomp, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0922 */ { UD_Ifsub, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0923 */ { UD_Ifsubr, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0924 */ { UD_Ifdiv, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0925 */ { UD_Ifdivr, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0926 */ { UD_Ifadd, O_ST0, O_ST0, O_NONE, P_none }, /* 0927 */ { UD_Ifadd, O_ST0, O_ST1, O_NONE, P_none }, /* 0928 */ { UD_Ifadd, O_ST0, O_ST2, O_NONE, P_none }, /* 0929 */ { UD_Ifadd, O_ST0, O_ST3, O_NONE, P_none }, /* 0930 */ { UD_Ifadd, O_ST0, O_ST4, O_NONE, P_none }, /* 0931 */ { UD_Ifadd, O_ST0, O_ST5, O_NONE, P_none }, /* 0932 */ { UD_Ifadd, O_ST0, O_ST6, O_NONE, P_none }, /* 0933 */ { UD_Ifadd, O_ST0, O_ST7, O_NONE, P_none }, /* 0934 */ { UD_Ifmul, O_ST0, O_ST0, O_NONE, P_none }, /* 0935 */ { UD_Ifmul, O_ST0, O_ST1, O_NONE, P_none }, /* 0936 */ { UD_Ifmul, O_ST0, O_ST2, O_NONE, P_none }, /* 0937 */ { UD_Ifmul, O_ST0, O_ST3, O_NONE, P_none }, /* 0938 */ { UD_Ifmul, O_ST0, O_ST4, O_NONE, P_none }, /* 0939 */ { UD_Ifmul, O_ST0, O_ST5, O_NONE, P_none }, /* 0940 */ { UD_Ifmul, O_ST0, O_ST6, O_NONE, P_none }, /* 0941 */ { UD_Ifmul, O_ST0, O_ST7, O_NONE, P_none }, /* 0942 */ { UD_Ifcom, O_ST0, O_ST0, O_NONE, P_none }, /* 0943 */ { UD_Ifcom, O_ST0, O_ST1, O_NONE, P_none }, /* 0944 */ { UD_Ifcom, O_ST0, O_ST2, O_NONE, P_none }, /* 0945 */ { UD_Ifcom, O_ST0, O_ST3, O_NONE, P_none }, /* 0946 */ { UD_Ifcom, O_ST0, O_ST4, O_NONE, P_none }, /* 0947 */ { UD_Ifcom, O_ST0, O_ST5, O_NONE, P_none }, /* 0948 */ { UD_Ifcom, O_ST0, O_ST6, O_NONE, P_none }, /* 0949 */ { UD_Ifcom, O_ST0, O_ST7, O_NONE, P_none }, /* 0950 */ { UD_Ifcomp, O_ST0, O_ST0, O_NONE, P_none }, /* 0951 */ { UD_Ifcomp, O_ST0, O_ST1, O_NONE, P_none }, /* 0952 */ { UD_Ifcomp, O_ST0, O_ST2, O_NONE, P_none }, /* 0953 */ { UD_Ifcomp, O_ST0, O_ST3, O_NONE, P_none }, /* 0954 */ { UD_Ifcomp, O_ST0, O_ST4, O_NONE, P_none }, /* 0955 */ { UD_Ifcomp, O_ST0, O_ST5, O_NONE, P_none }, /* 0956 */ { UD_Ifcomp, O_ST0, O_ST6, O_NONE, P_none }, /* 0957 */ { UD_Ifcomp, O_ST0, O_ST7, O_NONE, P_none }, /* 0958 */ { UD_Ifsub, O_ST0, O_ST0, O_NONE, P_none }, /* 0959 */ { UD_Ifsub, O_ST0, O_ST1, O_NONE, P_none }, /* 0960 */ { UD_Ifsub, O_ST0, O_ST2, O_NONE, P_none }, /* 0961 */ { UD_Ifsub, O_ST0, O_ST3, O_NONE, P_none }, /* 0962 */ { UD_Ifsub, O_ST0, O_ST4, O_NONE, P_none }, /* 0963 */ { UD_Ifsub, O_ST0, O_ST5, O_NONE, P_none }, /* 0964 */ { UD_Ifsub, O_ST0, O_ST6, O_NONE, P_none }, /* 0965 */ { UD_Ifsub, O_ST0, O_ST7, O_NONE, P_none }, /* 0966 */ { UD_Ifsubr, O_ST0, O_ST0, O_NONE, P_none }, /* 0967 */ { UD_Ifsubr, O_ST0, O_ST1, O_NONE, P_none }, /* 0968 */ { UD_Ifsubr, O_ST0, O_ST2, O_NONE, P_none }, /* 0969 */ { UD_Ifsubr, O_ST0, O_ST3, O_NONE, P_none }, /* 0970 */ { UD_Ifsubr, O_ST0, O_ST4, O_NONE, P_none }, /* 0971 */ { UD_Ifsubr, O_ST0, O_ST5, O_NONE, P_none }, /* 0972 */ { UD_Ifsubr, O_ST0, O_ST6, O_NONE, P_none }, /* 0973 */ { UD_Ifsubr, O_ST0, O_ST7, O_NONE, P_none }, /* 0974 */ { UD_Ifdiv, O_ST0, O_ST0, O_NONE, P_none }, /* 0975 */ { UD_Ifdiv, O_ST0, O_ST1, O_NONE, P_none }, /* 0976 */ { UD_Ifdiv, O_ST0, O_ST2, O_NONE, P_none }, /* 0977 */ { UD_Ifdiv, O_ST0, O_ST3, O_NONE, P_none }, /* 0978 */ { UD_Ifdiv, O_ST0, O_ST4, O_NONE, P_none }, /* 0979 */ { UD_Ifdiv, O_ST0, O_ST5, O_NONE, P_none }, /* 0980 */ { UD_Ifdiv, O_ST0, O_ST6, O_NONE, P_none }, /* 0981 */ { UD_Ifdiv, O_ST0, O_ST7, O_NONE, P_none }, /* 0982 */ { UD_Ifdivr, O_ST0, O_ST0, O_NONE, P_none }, /* 0983 */ { UD_Ifdivr, O_ST0, O_ST1, O_NONE, P_none }, /* 0984 */ { UD_Ifdivr, O_ST0, O_ST2, O_NONE, P_none }, /* 0985 */ { UD_Ifdivr, O_ST0, O_ST3, O_NONE, P_none }, /* 0986 */ { UD_Ifdivr, O_ST0, O_ST4, O_NONE, P_none }, /* 0987 */ { UD_Ifdivr, O_ST0, O_ST5, O_NONE, P_none }, /* 0988 */ { UD_Ifdivr, O_ST0, O_ST6, O_NONE, P_none }, /* 0989 */ { UD_Ifdivr, O_ST0, O_ST7, O_NONE, P_none }, /* 0990 */ { UD_Ifld, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0991 */ { UD_Ifst, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0992 */ { UD_Ifstp, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0993 */ { UD_Ifldenv, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0994 */ { UD_Ifldcw, O_Mw, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0995 */ { UD_Ifnstenv, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0996 */ { UD_Ifnstcw, O_Mw, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0997 */ { UD_Ifld, O_ST0, O_NONE, O_NONE, P_none }, /* 0998 */ { UD_Ifld, O_ST1, O_NONE, O_NONE, P_none }, /* 0999 */ { UD_Ifld, O_ST2, O_NONE, O_NONE, P_none }, /* 1000 */ { UD_Ifld, O_ST3, O_NONE, O_NONE, P_none }, /* 1001 */ { UD_Ifld, O_ST4, O_NONE, O_NONE, P_none }, /* 1002 */ { UD_Ifld, O_ST5, O_NONE, O_NONE, P_none }, /* 1003 */ { UD_Ifld, O_ST6, O_NONE, O_NONE, P_none }, /* 1004 */ { UD_Ifld, O_ST7, O_NONE, O_NONE, P_none }, /* 1005 */ { UD_Ifxch, O_ST0, O_ST0, O_NONE, P_none }, /* 1006 */ { UD_Ifxch, O_ST0, O_ST1, O_NONE, P_none }, /* 1007 */ { UD_Ifxch, O_ST0, O_ST2, O_NONE, P_none }, /* 1008 */ { UD_Ifxch, O_ST0, O_ST3, O_NONE, P_none }, /* 1009 */ { UD_Ifxch, O_ST0, O_ST4, O_NONE, P_none }, /* 1010 */ { UD_Ifxch, O_ST0, O_ST5, O_NONE, P_none }, /* 1011 */ { UD_Ifxch, O_ST0, O_ST6, O_NONE, P_none }, /* 1012 */ { UD_Ifxch, O_ST0, O_ST7, O_NONE, P_none }, /* 1013 */ { UD_Ifnop, O_NONE, O_NONE, O_NONE, P_none }, /* 1014 */ { UD_Ifstp1, O_ST0, O_NONE, O_NONE, P_none }, /* 1015 */ { UD_Ifstp1, O_ST1, O_NONE, O_NONE, P_none }, /* 1016 */ { UD_Ifstp1, O_ST2, O_NONE, O_NONE, P_none }, /* 1017 */ { UD_Ifstp1, O_ST3, O_NONE, O_NONE, P_none }, /* 1018 */ { UD_Ifstp1, O_ST4, O_NONE, O_NONE, P_none }, /* 1019 */ { UD_Ifstp1, O_ST5, O_NONE, O_NONE, P_none }, /* 1020 */ { UD_Ifstp1, O_ST6, O_NONE, O_NONE, P_none }, /* 1021 */ { UD_Ifstp1, O_ST7, O_NONE, O_NONE, P_none }, /* 1022 */ { UD_Ifchs, O_NONE, O_NONE, O_NONE, P_none }, /* 1023 */ { UD_Ifabs, O_NONE, O_NONE, O_NONE, P_none }, /* 1024 */ { UD_Iftst, O_NONE, O_NONE, O_NONE, P_none }, /* 1025 */ { UD_Ifxam, O_NONE, O_NONE, O_NONE, P_none }, /* 1026 */ { UD_Ifld1, O_NONE, O_NONE, O_NONE, P_none }, /* 1027 */ { UD_Ifldl2t, O_NONE, O_NONE, O_NONE, P_none }, /* 1028 */ { UD_Ifldl2e, O_NONE, O_NONE, O_NONE, P_none }, /* 1029 */ { UD_Ifldpi, O_NONE, O_NONE, O_NONE, P_none }, /* 1030 */ { UD_Ifldlg2, O_NONE, O_NONE, O_NONE, P_none }, /* 1031 */ { UD_Ifldln2, O_NONE, O_NONE, O_NONE, P_none }, /* 1032 */ { UD_Ifldz, O_NONE, O_NONE, O_NONE, P_none }, /* 1033 */ { UD_If2xm1, O_NONE, O_NONE, O_NONE, P_none }, /* 1034 */ { UD_Ifyl2x, O_NONE, O_NONE, O_NONE, P_none }, /* 1035 */ { UD_Ifptan, O_NONE, O_NONE, O_NONE, P_none }, /* 1036 */ { UD_Ifpatan, O_NONE, O_NONE, O_NONE, P_none }, /* 1037 */ { UD_Ifxtract, O_NONE, O_NONE, O_NONE, P_none }, /* 1038 */ { UD_Ifprem1, O_NONE, O_NONE, O_NONE, P_none }, /* 1039 */ { UD_Ifdecstp, O_NONE, O_NONE, O_NONE, P_none }, /* 1040 */ { UD_Ifincstp, O_NONE, O_NONE, O_NONE, P_none }, /* 1041 */ { UD_Ifprem, O_NONE, O_NONE, O_NONE, P_none }, /* 1042 */ { UD_Ifyl2xp1, O_NONE, O_NONE, O_NONE, P_none }, /* 1043 */ { UD_Ifsqrt, O_NONE, O_NONE, O_NONE, P_none }, /* 1044 */ { UD_Ifsincos, O_NONE, O_NONE, O_NONE, P_none }, /* 1045 */ { UD_Ifrndint, O_NONE, O_NONE, O_NONE, P_none }, /* 1046 */ { UD_Ifscale, O_NONE, O_NONE, O_NONE, P_none }, /* 1047 */ { UD_Ifsin, O_NONE, O_NONE, O_NONE, P_none }, /* 1048 */ { UD_Ifcos, O_NONE, O_NONE, O_NONE, P_none }, /* 1049 */ { UD_Ifiadd, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1050 */ { UD_Ifimul, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1051 */ { UD_Ificom, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1052 */ { UD_Ificomp, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1053 */ { UD_Ifisub, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1054 */ { UD_Ifisubr, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1055 */ { UD_Ifidiv, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1056 */ { UD_Ifidivr, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1057 */ { UD_Ifcmovb, O_ST0, O_ST0, O_NONE, P_none }, /* 1058 */ { UD_Ifcmovb, O_ST0, O_ST1, O_NONE, P_none }, /* 1059 */ { UD_Ifcmovb, O_ST0, O_ST2, O_NONE, P_none }, /* 1060 */ { UD_Ifcmovb, O_ST0, O_ST3, O_NONE, P_none }, /* 1061 */ { UD_Ifcmovb, O_ST0, O_ST4, O_NONE, P_none }, /* 1062 */ { UD_Ifcmovb, O_ST0, O_ST5, O_NONE, P_none }, /* 1063 */ { UD_Ifcmovb, O_ST0, O_ST6, O_NONE, P_none }, /* 1064 */ { UD_Ifcmovb, O_ST0, O_ST7, O_NONE, P_none }, /* 1065 */ { UD_Ifcmove, O_ST0, O_ST0, O_NONE, P_none }, /* 1066 */ { UD_Ifcmove, O_ST0, O_ST1, O_NONE, P_none }, /* 1067 */ { UD_Ifcmove, O_ST0, O_ST2, O_NONE, P_none }, /* 1068 */ { UD_Ifcmove, O_ST0, O_ST3, O_NONE, P_none }, /* 1069 */ { UD_Ifcmove, O_ST0, O_ST4, O_NONE, P_none }, /* 1070 */ { UD_Ifcmove, O_ST0, O_ST5, O_NONE, P_none }, /* 1071 */ { UD_Ifcmove, O_ST0, O_ST6, O_NONE, P_none }, /* 1072 */ { UD_Ifcmove, O_ST0, O_ST7, O_NONE, P_none }, /* 1073 */ { UD_Ifcmovbe, O_ST0, O_ST0, O_NONE, P_none }, /* 1074 */ { UD_Ifcmovbe, O_ST0, O_ST1, O_NONE, P_none }, /* 1075 */ { UD_Ifcmovbe, O_ST0, O_ST2, O_NONE, P_none }, /* 1076 */ { UD_Ifcmovbe, O_ST0, O_ST3, O_NONE, P_none }, /* 1077 */ { UD_Ifcmovbe, O_ST0, O_ST4, O_NONE, P_none }, /* 1078 */ { UD_Ifcmovbe, O_ST0, O_ST5, O_NONE, P_none }, /* 1079 */ { UD_Ifcmovbe, O_ST0, O_ST6, O_NONE, P_none }, /* 1080 */ { UD_Ifcmovbe, O_ST0, O_ST7, O_NONE, P_none }, /* 1081 */ { UD_Ifcmovu, O_ST0, O_ST0, O_NONE, P_none }, /* 1082 */ { UD_Ifcmovu, O_ST0, O_ST1, O_NONE, P_none }, /* 1083 */ { UD_Ifcmovu, O_ST0, O_ST2, O_NONE, P_none }, /* 1084 */ { UD_Ifcmovu, O_ST0, O_ST3, O_NONE, P_none }, /* 1085 */ { UD_Ifcmovu, O_ST0, O_ST4, O_NONE, P_none }, /* 1086 */ { UD_Ifcmovu, O_ST0, O_ST5, O_NONE, P_none }, /* 1087 */ { UD_Ifcmovu, O_ST0, O_ST6, O_NONE, P_none }, /* 1088 */ { UD_Ifcmovu, O_ST0, O_ST7, O_NONE, P_none }, /* 1089 */ { UD_Ifucompp, O_NONE, O_NONE, O_NONE, P_none }, /* 1090 */ { UD_Ifild, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1091 */ { UD_Ifisttp, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1092 */ { UD_Ifist, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1093 */ { UD_Ifistp, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1094 */ { UD_Ifld, O_Mt, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1095 */ { UD_Ifstp, O_Mt, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1096 */ { UD_Ifcmovnb, O_ST0, O_ST0, O_NONE, P_none }, /* 1097 */ { UD_Ifcmovnb, O_ST0, O_ST1, O_NONE, P_none }, /* 1098 */ { UD_Ifcmovnb, O_ST0, O_ST2, O_NONE, P_none }, /* 1099 */ { UD_Ifcmovnb, O_ST0, O_ST3, O_NONE, P_none }, /* 1100 */ { UD_Ifcmovnb, O_ST0, O_ST4, O_NONE, P_none }, /* 1101 */ { UD_Ifcmovnb, O_ST0, O_ST5, O_NONE, P_none }, /* 1102 */ { UD_Ifcmovnb, O_ST0, O_ST6, O_NONE, P_none }, /* 1103 */ { UD_Ifcmovnb, O_ST0, O_ST7, O_NONE, P_none }, /* 1104 */ { UD_Ifcmovne, O_ST0, O_ST0, O_NONE, P_none }, /* 1105 */ { UD_Ifcmovne, O_ST0, O_ST1, O_NONE, P_none }, /* 1106 */ { UD_Ifcmovne, O_ST0, O_ST2, O_NONE, P_none }, /* 1107 */ { UD_Ifcmovne, O_ST0, O_ST3, O_NONE, P_none }, /* 1108 */ { UD_Ifcmovne, O_ST0, O_ST4, O_NONE, P_none }, /* 1109 */ { UD_Ifcmovne, O_ST0, O_ST5, O_NONE, P_none }, /* 1110 */ { UD_Ifcmovne, O_ST0, O_ST6, O_NONE, P_none }, /* 1111 */ { UD_Ifcmovne, O_ST0, O_ST7, O_NONE, P_none }, /* 1112 */ { UD_Ifcmovnbe, O_ST0, O_ST0, O_NONE, P_none }, /* 1113 */ { UD_Ifcmovnbe, O_ST0, O_ST1, O_NONE, P_none }, /* 1114 */ { UD_Ifcmovnbe, O_ST0, O_ST2, O_NONE, P_none }, /* 1115 */ { UD_Ifcmovnbe, O_ST0, O_ST3, O_NONE, P_none }, /* 1116 */ { UD_Ifcmovnbe, O_ST0, O_ST4, O_NONE, P_none }, /* 1117 */ { UD_Ifcmovnbe, O_ST0, O_ST5, O_NONE, P_none }, /* 1118 */ { UD_Ifcmovnbe, O_ST0, O_ST6, O_NONE, P_none }, /* 1119 */ { UD_Ifcmovnbe, O_ST0, O_ST7, O_NONE, P_none }, /* 1120 */ { UD_Ifcmovnu, O_ST0, O_ST0, O_NONE, P_none }, /* 1121 */ { UD_Ifcmovnu, O_ST0, O_ST1, O_NONE, P_none }, /* 1122 */ { UD_Ifcmovnu, O_ST0, O_ST2, O_NONE, P_none }, /* 1123 */ { UD_Ifcmovnu, O_ST0, O_ST3, O_NONE, P_none }, /* 1124 */ { UD_Ifcmovnu, O_ST0, O_ST4, O_NONE, P_none }, /* 1125 */ { UD_Ifcmovnu, O_ST0, O_ST5, O_NONE, P_none }, /* 1126 */ { UD_Ifcmovnu, O_ST0, O_ST6, O_NONE, P_none }, /* 1127 */ { UD_Ifcmovnu, O_ST0, O_ST7, O_NONE, P_none }, /* 1128 */ { UD_Ifclex, O_NONE, O_NONE, O_NONE, P_none }, /* 1129 */ { UD_Ifninit, O_NONE, O_NONE, O_NONE, P_none }, /* 1130 */ { UD_Ifucomi, O_ST0, O_ST0, O_NONE, P_none }, /* 1131 */ { UD_Ifucomi, O_ST0, O_ST1, O_NONE, P_none }, /* 1132 */ { UD_Ifucomi, O_ST0, O_ST2, O_NONE, P_none }, /* 1133 */ { UD_Ifucomi, O_ST0, O_ST3, O_NONE, P_none }, /* 1134 */ { UD_Ifucomi, O_ST0, O_ST4, O_NONE, P_none }, /* 1135 */ { UD_Ifucomi, O_ST0, O_ST5, O_NONE, P_none }, /* 1136 */ { UD_Ifucomi, O_ST0, O_ST6, O_NONE, P_none }, /* 1137 */ { UD_Ifucomi, O_ST0, O_ST7, O_NONE, P_none }, /* 1138 */ { UD_Ifcomi, O_ST0, O_ST0, O_NONE, P_none }, /* 1139 */ { UD_Ifcomi, O_ST0, O_ST1, O_NONE, P_none }, /* 1140 */ { UD_Ifcomi, O_ST0, O_ST2, O_NONE, P_none }, /* 1141 */ { UD_Ifcomi, O_ST0, O_ST3, O_NONE, P_none }, /* 1142 */ { UD_Ifcomi, O_ST0, O_ST4, O_NONE, P_none }, /* 1143 */ { UD_Ifcomi, O_ST0, O_ST5, O_NONE, P_none }, /* 1144 */ { UD_Ifcomi, O_ST0, O_ST6, O_NONE, P_none }, /* 1145 */ { UD_Ifcomi, O_ST0, O_ST7, O_NONE, P_none }, /* 1146 */ { UD_Ifadd, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1147 */ { UD_Ifmul, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1148 */ { UD_Ifcom, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1149 */ { UD_Ifcomp, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1150 */ { UD_Ifsub, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1151 */ { UD_Ifsubr, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1152 */ { UD_Ifdiv, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1153 */ { UD_Ifdivr, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1154 */ { UD_Ifadd, O_ST0, O_ST0, O_NONE, P_none }, /* 1155 */ { UD_Ifadd, O_ST1, O_ST0, O_NONE, P_none }, /* 1156 */ { UD_Ifadd, O_ST2, O_ST0, O_NONE, P_none }, /* 1157 */ { UD_Ifadd, O_ST3, O_ST0, O_NONE, P_none }, /* 1158 */ { UD_Ifadd, O_ST4, O_ST0, O_NONE, P_none }, /* 1159 */ { UD_Ifadd, O_ST5, O_ST0, O_NONE, P_none }, /* 1160 */ { UD_Ifadd, O_ST6, O_ST0, O_NONE, P_none }, /* 1161 */ { UD_Ifadd, O_ST7, O_ST0, O_NONE, P_none }, /* 1162 */ { UD_Ifmul, O_ST0, O_ST0, O_NONE, P_none }, /* 1163 */ { UD_Ifmul, O_ST1, O_ST0, O_NONE, P_none }, /* 1164 */ { UD_Ifmul, O_ST2, O_ST0, O_NONE, P_none }, /* 1165 */ { UD_Ifmul, O_ST3, O_ST0, O_NONE, P_none }, /* 1166 */ { UD_Ifmul, O_ST4, O_ST0, O_NONE, P_none }, /* 1167 */ { UD_Ifmul, O_ST5, O_ST0, O_NONE, P_none }, /* 1168 */ { UD_Ifmul, O_ST6, O_ST0, O_NONE, P_none }, /* 1169 */ { UD_Ifmul, O_ST7, O_ST0, O_NONE, P_none }, /* 1170 */ { UD_Ifcom2, O_ST0, O_NONE, O_NONE, P_none }, /* 1171 */ { UD_Ifcom2, O_ST1, O_NONE, O_NONE, P_none }, /* 1172 */ { UD_Ifcom2, O_ST2, O_NONE, O_NONE, P_none }, /* 1173 */ { UD_Ifcom2, O_ST3, O_NONE, O_NONE, P_none }, /* 1174 */ { UD_Ifcom2, O_ST4, O_NONE, O_NONE, P_none }, /* 1175 */ { UD_Ifcom2, O_ST5, O_NONE, O_NONE, P_none }, /* 1176 */ { UD_Ifcom2, O_ST6, O_NONE, O_NONE, P_none }, /* 1177 */ { UD_Ifcom2, O_ST7, O_NONE, O_NONE, P_none }, /* 1178 */ { UD_Ifcomp3, O_ST0, O_NONE, O_NONE, P_none }, /* 1179 */ { UD_Ifcomp3, O_ST1, O_NONE, O_NONE, P_none }, /* 1180 */ { UD_Ifcomp3, O_ST2, O_NONE, O_NONE, P_none }, /* 1181 */ { UD_Ifcomp3, O_ST3, O_NONE, O_NONE, P_none }, /* 1182 */ { UD_Ifcomp3, O_ST4, O_NONE, O_NONE, P_none }, /* 1183 */ { UD_Ifcomp3, O_ST5, O_NONE, O_NONE, P_none }, /* 1184 */ { UD_Ifcomp3, O_ST6, O_NONE, O_NONE, P_none }, /* 1185 */ { UD_Ifcomp3, O_ST7, O_NONE, O_NONE, P_none }, /* 1186 */ { UD_Ifsubr, O_ST0, O_ST0, O_NONE, P_none }, /* 1187 */ { UD_Ifsubr, O_ST1, O_ST0, O_NONE, P_none }, /* 1188 */ { UD_Ifsubr, O_ST2, O_ST0, O_NONE, P_none }, /* 1189 */ { UD_Ifsubr, O_ST3, O_ST0, O_NONE, P_none }, /* 1190 */ { UD_Ifsubr, O_ST4, O_ST0, O_NONE, P_none }, /* 1191 */ { UD_Ifsubr, O_ST5, O_ST0, O_NONE, P_none }, /* 1192 */ { UD_Ifsubr, O_ST6, O_ST0, O_NONE, P_none }, /* 1193 */ { UD_Ifsubr, O_ST7, O_ST0, O_NONE, P_none }, /* 1194 */ { UD_Ifsub, O_ST0, O_ST0, O_NONE, P_none }, /* 1195 */ { UD_Ifsub, O_ST1, O_ST0, O_NONE, P_none }, /* 1196 */ { UD_Ifsub, O_ST2, O_ST0, O_NONE, P_none }, /* 1197 */ { UD_Ifsub, O_ST3, O_ST0, O_NONE, P_none }, /* 1198 */ { UD_Ifsub, O_ST4, O_ST0, O_NONE, P_none }, /* 1199 */ { UD_Ifsub, O_ST5, O_ST0, O_NONE, P_none }, /* 1200 */ { UD_Ifsub, O_ST6, O_ST0, O_NONE, P_none }, /* 1201 */ { UD_Ifsub, O_ST7, O_ST0, O_NONE, P_none }, /* 1202 */ { UD_Ifdivr, O_ST0, O_ST0, O_NONE, P_none }, /* 1203 */ { UD_Ifdivr, O_ST1, O_ST0, O_NONE, P_none }, /* 1204 */ { UD_Ifdivr, O_ST2, O_ST0, O_NONE, P_none }, /* 1205 */ { UD_Ifdivr, O_ST3, O_ST0, O_NONE, P_none }, /* 1206 */ { UD_Ifdivr, O_ST4, O_ST0, O_NONE, P_none }, /* 1207 */ { UD_Ifdivr, O_ST5, O_ST0, O_NONE, P_none }, /* 1208 */ { UD_Ifdivr, O_ST6, O_ST0, O_NONE, P_none }, /* 1209 */ { UD_Ifdivr, O_ST7, O_ST0, O_NONE, P_none }, /* 1210 */ { UD_Ifdiv, O_ST0, O_ST0, O_NONE, P_none }, /* 1211 */ { UD_Ifdiv, O_ST1, O_ST0, O_NONE, P_none }, /* 1212 */ { UD_Ifdiv, O_ST2, O_ST0, O_NONE, P_none }, /* 1213 */ { UD_Ifdiv, O_ST3, O_ST0, O_NONE, P_none }, /* 1214 */ { UD_Ifdiv, O_ST4, O_ST0, O_NONE, P_none }, /* 1215 */ { UD_Ifdiv, O_ST5, O_ST0, O_NONE, P_none }, /* 1216 */ { UD_Ifdiv, O_ST6, O_ST0, O_NONE, P_none }, /* 1217 */ { UD_Ifdiv, O_ST7, O_ST0, O_NONE, P_none }, /* 1218 */ { UD_Ifld, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1219 */ { UD_Ifisttp, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1220 */ { UD_Ifst, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1221 */ { UD_Ifstp, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1222 */ { UD_Ifrstor, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1223 */ { UD_Ifnsave, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1224 */ { UD_Ifnstsw, O_Mw, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1225 */ { UD_Iffree, O_ST0, O_NONE, O_NONE, P_none }, /* 1226 */ { UD_Iffree, O_ST1, O_NONE, O_NONE, P_none }, /* 1227 */ { UD_Iffree, O_ST2, O_NONE, O_NONE, P_none }, /* 1228 */ { UD_Iffree, O_ST3, O_NONE, O_NONE, P_none }, /* 1229 */ { UD_Iffree, O_ST4, O_NONE, O_NONE, P_none }, /* 1230 */ { UD_Iffree, O_ST5, O_NONE, O_NONE, P_none }, /* 1231 */ { UD_Iffree, O_ST6, O_NONE, O_NONE, P_none }, /* 1232 */ { UD_Iffree, O_ST7, O_NONE, O_NONE, P_none }, /* 1233 */ { UD_Ifxch4, O_ST0, O_NONE, O_NONE, P_none }, /* 1234 */ { UD_Ifxch4, O_ST1, O_NONE, O_NONE, P_none }, /* 1235 */ { UD_Ifxch4, O_ST2, O_NONE, O_NONE, P_none }, /* 1236 */ { UD_Ifxch4, O_ST3, O_NONE, O_NONE, P_none }, /* 1237 */ { UD_Ifxch4, O_ST4, O_NONE, O_NONE, P_none }, /* 1238 */ { UD_Ifxch4, O_ST5, O_NONE, O_NONE, P_none }, /* 1239 */ { UD_Ifxch4, O_ST6, O_NONE, O_NONE, P_none }, /* 1240 */ { UD_Ifxch4, O_ST7, O_NONE, O_NONE, P_none }, /* 1241 */ { UD_Ifst, O_ST0, O_NONE, O_NONE, P_none }, /* 1242 */ { UD_Ifst, O_ST1, O_NONE, O_NONE, P_none }, /* 1243 */ { UD_Ifst, O_ST2, O_NONE, O_NONE, P_none }, /* 1244 */ { UD_Ifst, O_ST3, O_NONE, O_NONE, P_none }, /* 1245 */ { UD_Ifst, O_ST4, O_NONE, O_NONE, P_none }, /* 1246 */ { UD_Ifst, O_ST5, O_NONE, O_NONE, P_none }, /* 1247 */ { UD_Ifst, O_ST6, O_NONE, O_NONE, P_none }, /* 1248 */ { UD_Ifst, O_ST7, O_NONE, O_NONE, P_none }, /* 1249 */ { UD_Ifstp, O_ST0, O_NONE, O_NONE, P_none }, /* 1250 */ { UD_Ifstp, O_ST1, O_NONE, O_NONE, P_none }, /* 1251 */ { UD_Ifstp, O_ST2, O_NONE, O_NONE, P_none }, /* 1252 */ { UD_Ifstp, O_ST3, O_NONE, O_NONE, P_none }, /* 1253 */ { UD_Ifstp, O_ST4, O_NONE, O_NONE, P_none }, /* 1254 */ { UD_Ifstp, O_ST5, O_NONE, O_NONE, P_none }, /* 1255 */ { UD_Ifstp, O_ST6, O_NONE, O_NONE, P_none }, /* 1256 */ { UD_Ifstp, O_ST7, O_NONE, O_NONE, P_none }, /* 1257 */ { UD_Ifucom, O_ST0, O_NONE, O_NONE, P_none }, /* 1258 */ { UD_Ifucom, O_ST1, O_NONE, O_NONE, P_none }, /* 1259 */ { UD_Ifucom, O_ST2, O_NONE, O_NONE, P_none }, /* 1260 */ { UD_Ifucom, O_ST3, O_NONE, O_NONE, P_none }, /* 1261 */ { UD_Ifucom, O_ST4, O_NONE, O_NONE, P_none }, /* 1262 */ { UD_Ifucom, O_ST5, O_NONE, O_NONE, P_none }, /* 1263 */ { UD_Ifucom, O_ST6, O_NONE, O_NONE, P_none }, /* 1264 */ { UD_Ifucom, O_ST7, O_NONE, O_NONE, P_none }, /* 1265 */ { UD_Ifucomp, O_ST0, O_NONE, O_NONE, P_none }, /* 1266 */ { UD_Ifucomp, O_ST1, O_NONE, O_NONE, P_none }, /* 1267 */ { UD_Ifucomp, O_ST2, O_NONE, O_NONE, P_none }, /* 1268 */ { UD_Ifucomp, O_ST3, O_NONE, O_NONE, P_none }, /* 1269 */ { UD_Ifucomp, O_ST4, O_NONE, O_NONE, P_none }, /* 1270 */ { UD_Ifucomp, O_ST5, O_NONE, O_NONE, P_none }, /* 1271 */ { UD_Ifucomp, O_ST6, O_NONE, O_NONE, P_none }, /* 1272 */ { UD_Ifucomp, O_ST7, O_NONE, O_NONE, P_none }, /* 1273 */ { UD_Ifiadd, O_Mw, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1274 */ { UD_Ifimul, O_Mw, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1275 */ { UD_Ificom, O_Mw, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1276 */ { UD_Ificomp, O_Mw, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1277 */ { UD_Ifisub, O_Mw, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1278 */ { UD_Ifisubr, O_Mw, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1279 */ { UD_Ifidiv, O_Mw, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1280 */ { UD_Ifidivr, O_Mw, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1281 */ { UD_Ifaddp, O_ST0, O_ST0, O_NONE, P_none }, /* 1282 */ { UD_Ifaddp, O_ST1, O_ST0, O_NONE, P_none }, /* 1283 */ { UD_Ifaddp, O_ST2, O_ST0, O_NONE, P_none }, /* 1284 */ { UD_Ifaddp, O_ST3, O_ST0, O_NONE, P_none }, /* 1285 */ { UD_Ifaddp, O_ST4, O_ST0, O_NONE, P_none }, /* 1286 */ { UD_Ifaddp, O_ST5, O_ST0, O_NONE, P_none }, /* 1287 */ { UD_Ifaddp, O_ST6, O_ST0, O_NONE, P_none }, /* 1288 */ { UD_Ifaddp, O_ST7, O_ST0, O_NONE, P_none }, /* 1289 */ { UD_Ifmulp, O_ST0, O_ST0, O_NONE, P_none }, /* 1290 */ { UD_Ifmulp, O_ST1, O_ST0, O_NONE, P_none }, /* 1291 */ { UD_Ifmulp, O_ST2, O_ST0, O_NONE, P_none }, /* 1292 */ { UD_Ifmulp, O_ST3, O_ST0, O_NONE, P_none }, /* 1293 */ { UD_Ifmulp, O_ST4, O_ST0, O_NONE, P_none }, /* 1294 */ { UD_Ifmulp, O_ST5, O_ST0, O_NONE, P_none }, /* 1295 */ { UD_Ifmulp, O_ST6, O_ST0, O_NONE, P_none }, /* 1296 */ { UD_Ifmulp, O_ST7, O_ST0, O_NONE, P_none }, /* 1297 */ { UD_Ifcomp5, O_ST0, O_NONE, O_NONE, P_none }, /* 1298 */ { UD_Ifcomp5, O_ST1, O_NONE, O_NONE, P_none }, /* 1299 */ { UD_Ifcomp5, O_ST2, O_NONE, O_NONE, P_none }, /* 1300 */ { UD_Ifcomp5, O_ST3, O_NONE, O_NONE, P_none }, /* 1301 */ { UD_Ifcomp5, O_ST4, O_NONE, O_NONE, P_none }, /* 1302 */ { UD_Ifcomp5, O_ST5, O_NONE, O_NONE, P_none }, /* 1303 */ { UD_Ifcomp5, O_ST6, O_NONE, O_NONE, P_none }, /* 1304 */ { UD_Ifcomp5, O_ST7, O_NONE, O_NONE, P_none }, /* 1305 */ { UD_Ifcompp, O_NONE, O_NONE, O_NONE, P_none }, /* 1306 */ { UD_Ifsubrp, O_ST0, O_ST0, O_NONE, P_none }, /* 1307 */ { UD_Ifsubrp, O_ST1, O_ST0, O_NONE, P_none }, /* 1308 */ { UD_Ifsubrp, O_ST2, O_ST0, O_NONE, P_none }, /* 1309 */ { UD_Ifsubrp, O_ST3, O_ST0, O_NONE, P_none }, /* 1310 */ { UD_Ifsubrp, O_ST4, O_ST0, O_NONE, P_none }, /* 1311 */ { UD_Ifsubrp, O_ST5, O_ST0, O_NONE, P_none }, /* 1312 */ { UD_Ifsubrp, O_ST6, O_ST0, O_NONE, P_none }, /* 1313 */ { UD_Ifsubrp, O_ST7, O_ST0, O_NONE, P_none }, /* 1314 */ { UD_Ifsubp, O_ST0, O_ST0, O_NONE, P_none }, /* 1315 */ { UD_Ifsubp, O_ST1, O_ST0, O_NONE, P_none }, /* 1316 */ { UD_Ifsubp, O_ST2, O_ST0, O_NONE, P_none }, /* 1317 */ { UD_Ifsubp, O_ST3, O_ST0, O_NONE, P_none }, /* 1318 */ { UD_Ifsubp, O_ST4, O_ST0, O_NONE, P_none }, /* 1319 */ { UD_Ifsubp, O_ST5, O_ST0, O_NONE, P_none }, /* 1320 */ { UD_Ifsubp, O_ST6, O_ST0, O_NONE, P_none }, /* 1321 */ { UD_Ifsubp, O_ST7, O_ST0, O_NONE, P_none }, /* 1322 */ { UD_Ifdivrp, O_ST0, O_ST0, O_NONE, P_none }, /* 1323 */ { UD_Ifdivrp, O_ST1, O_ST0, O_NONE, P_none }, /* 1324 */ { UD_Ifdivrp, O_ST2, O_ST0, O_NONE, P_none }, /* 1325 */ { UD_Ifdivrp, O_ST3, O_ST0, O_NONE, P_none }, /* 1326 */ { UD_Ifdivrp, O_ST4, O_ST0, O_NONE, P_none }, /* 1327 */ { UD_Ifdivrp, O_ST5, O_ST0, O_NONE, P_none }, /* 1328 */ { UD_Ifdivrp, O_ST6, O_ST0, O_NONE, P_none }, /* 1329 */ { UD_Ifdivrp, O_ST7, O_ST0, O_NONE, P_none }, /* 1330 */ { UD_Ifdivp, O_ST0, O_ST0, O_NONE, P_none }, /* 1331 */ { UD_Ifdivp, O_ST1, O_ST0, O_NONE, P_none }, /* 1332 */ { UD_Ifdivp, O_ST2, O_ST0, O_NONE, P_none }, /* 1333 */ { UD_Ifdivp, O_ST3, O_ST0, O_NONE, P_none }, /* 1334 */ { UD_Ifdivp, O_ST4, O_ST0, O_NONE, P_none }, /* 1335 */ { UD_Ifdivp, O_ST5, O_ST0, O_NONE, P_none }, /* 1336 */ { UD_Ifdivp, O_ST6, O_ST0, O_NONE, P_none }, /* 1337 */ { UD_Ifdivp, O_ST7, O_ST0, O_NONE, P_none }, /* 1338 */ { UD_Ifild, O_Mw, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1339 */ { UD_Ifisttp, O_Mw, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1340 */ { UD_Ifist, O_Mw, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1341 */ { UD_Ifistp, O_Mw, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1342 */ { UD_Ifbld, O_Mt, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1343 */ { UD_Ifild, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1344 */ { UD_Ifbstp, O_Mt, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1345 */ { UD_Ifistp, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 1346 */ { UD_Iffreep, O_ST0, O_NONE, O_NONE, P_none }, /* 1347 */ { UD_Iffreep, O_ST1, O_NONE, O_NONE, P_none }, /* 1348 */ { UD_Iffreep, O_ST2, O_NONE, O_NONE, P_none }, /* 1349 */ { UD_Iffreep, O_ST3, O_NONE, O_NONE, P_none }, /* 1350 */ { UD_Iffreep, O_ST4, O_NONE, O_NONE, P_none }, /* 1351 */ { UD_Iffreep, O_ST5, O_NONE, O_NONE, P_none }, /* 1352 */ { UD_Iffreep, O_ST6, O_NONE, O_NONE, P_none }, /* 1353 */ { UD_Iffreep, O_ST7, O_NONE, O_NONE, P_none }, /* 1354 */ { UD_Ifxch7, O_ST0, O_NONE, O_NONE, P_none }, /* 1355 */ { UD_Ifxch7, O_ST1, O_NONE, O_NONE, P_none }, /* 1356 */ { UD_Ifxch7, O_ST2, O_NONE, O_NONE, P_none }, /* 1357 */ { UD_Ifxch7, O_ST3, O_NONE, O_NONE, P_none }, /* 1358 */ { UD_Ifxch7, O_ST4, O_NONE, O_NONE, P_none }, /* 1359 */ { UD_Ifxch7, O_ST5, O_NONE, O_NONE, P_none }, /* 1360 */ { UD_Ifxch7, O_ST6, O_NONE, O_NONE, P_none }, /* 1361 */ { UD_Ifxch7, O_ST7, O_NONE, O_NONE, P_none }, /* 1362 */ { UD_Ifstp8, O_ST0, O_NONE, O_NONE, P_none }, /* 1363 */ { UD_Ifstp8, O_ST1, O_NONE, O_NONE, P_none }, /* 1364 */ { UD_Ifstp8, O_ST2, O_NONE, O_NONE, P_none }, /* 1365 */ { UD_Ifstp8, O_ST3, O_NONE, O_NONE, P_none }, /* 1366 */ { UD_Ifstp8, O_ST4, O_NONE, O_NONE, P_none }, /* 1367 */ { UD_Ifstp8, O_ST5, O_NONE, O_NONE, P_none }, /* 1368 */ { UD_Ifstp8, O_ST6, O_NONE, O_NONE, P_none }, /* 1369 */ { UD_Ifstp8, O_ST7, O_NONE, O_NONE, P_none }, /* 1370 */ { UD_Ifstp9, O_ST0, O_NONE, O_NONE, P_none }, /* 1371 */ { UD_Ifstp9, O_ST1, O_NONE, O_NONE, P_none }, /* 1372 */ { UD_Ifstp9, O_ST2, O_NONE, O_NONE, P_none }, /* 1373 */ { UD_Ifstp9, O_ST3, O_NONE, O_NONE, P_none }, /* 1374 */ { UD_Ifstp9, O_ST4, O_NONE, O_NONE, P_none }, /* 1375 */ { UD_Ifstp9, O_ST5, O_NONE, O_NONE, P_none }, /* 1376 */ { UD_Ifstp9, O_ST6, O_NONE, O_NONE, P_none }, /* 1377 */ { UD_Ifstp9, O_ST7, O_NONE, O_NONE, P_none }, /* 1378 */ { UD_Ifnstsw, O_AX, O_NONE, O_NONE, P_none }, /* 1379 */ { UD_Ifucomip, O_ST0, O_ST0, O_NONE, P_none }, /* 1380 */ { UD_Ifucomip, O_ST0, O_ST1, O_NONE, P_none }, /* 1381 */ { UD_Ifucomip, O_ST0, O_ST2, O_NONE, P_none }, /* 1382 */ { UD_Ifucomip, O_ST0, O_ST3, O_NONE, P_none }, /* 1383 */ { UD_Ifucomip, O_ST0, O_ST4, O_NONE, P_none }, /* 1384 */ { UD_Ifucomip, O_ST0, O_ST5, O_NONE, P_none }, /* 1385 */ { UD_Ifucomip, O_ST0, O_ST6, O_NONE, P_none }, /* 1386 */ { UD_Ifucomip, O_ST0, O_ST7, O_NONE, P_none }, /* 1387 */ { UD_Ifcomip, O_ST0, O_ST0, O_NONE, P_none }, /* 1388 */ { UD_Ifcomip, O_ST0, O_ST1, O_NONE, P_none }, /* 1389 */ { UD_Ifcomip, O_ST0, O_ST2, O_NONE, P_none }, /* 1390 */ { UD_Ifcomip, O_ST0, O_ST3, O_NONE, P_none }, /* 1391 */ { UD_Ifcomip, O_ST0, O_ST4, O_NONE, P_none }, /* 1392 */ { UD_Ifcomip, O_ST0, O_ST5, O_NONE, P_none }, /* 1393 */ { UD_Ifcomip, O_ST0, O_ST6, O_NONE, P_none }, /* 1394 */ { UD_Ifcomip, O_ST0, O_ST7, O_NONE, P_none }, /* 1395 */ { UD_Iloopne, O_Jb, O_NONE, O_NONE, P_none }, /* 1396 */ { UD_Iloope, O_Jb, O_NONE, O_NONE, P_none }, /* 1397 */ { UD_Iloop, O_Jb, O_NONE, O_NONE, P_none }, /* 1398 */ { UD_Ijcxz, O_Jb, O_NONE, O_NONE, P_aso }, /* 1399 */ { UD_Ijecxz, O_Jb, O_NONE, O_NONE, P_aso }, /* 1400 */ { UD_Ijrcxz, O_Jb, O_NONE, O_NONE, P_aso }, /* 1401 */ { UD_Iin, O_AL, O_Ib, O_NONE, P_none }, /* 1402 */ { UD_Iin, O_eAX, O_Ib, O_NONE, P_oso }, /* 1403 */ { UD_Iout, O_Ib, O_AL, O_NONE, P_none }, /* 1404 */ { UD_Iout, O_Ib, O_eAX, O_NONE, P_oso }, /* 1405 */ { UD_Icall, O_Jz, O_NONE, O_NONE, P_oso|P_def64 }, /* 1406 */ { UD_Ijmp, O_Jz, O_NONE, O_NONE, P_oso|P_def64 }, /* 1407 */ { UD_Ijmp, O_Av, O_NONE, O_NONE, P_oso }, /* 1408 */ { UD_Ijmp, O_Jb, O_NONE, O_NONE, P_def64 }, /* 1409 */ { UD_Iin, O_AL, O_DX, O_NONE, P_none }, /* 1410 */ { UD_Iin, O_eAX, O_DX, O_NONE, P_oso }, /* 1411 */ { UD_Iout, O_DX, O_AL, O_NONE, P_none }, /* 1412 */ { UD_Iout, O_DX, O_eAX, O_NONE, P_oso }, /* 1413 */ { UD_Ilock, O_NONE, O_NONE, O_NONE, P_none }, /* 1414 */ { UD_Iint1, O_NONE, O_NONE, O_NONE, P_none }, /* 1415 */ { UD_Irepne, O_NONE, O_NONE, O_NONE, P_none }, /* 1416 */ { UD_Irep, O_NONE, O_NONE, O_NONE, P_none }, /* 1417 */ { UD_Ihlt, O_NONE, O_NONE, O_NONE, P_none }, /* 1418 */ { UD_Icmc, O_NONE, O_NONE, O_NONE, P_none }, /* 1419 */ { UD_Itest, O_Eb, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 1420 */ { UD_Itest, O_Eb, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 1421 */ { UD_Inot, O_Eb, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 1422 */ { UD_Ineg, O_Eb, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 1423 */ { UD_Imul, O_Eb, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 1424 */ { UD_Iimul, O_Eb, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 1425 */ { UD_Idiv, O_Eb, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 1426 */ { UD_Iidiv, O_Eb, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 1427 */ { UD_Itest, O_Ev, O_sIz, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 1428 */ { UD_Itest, O_Ev, O_Iz, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 1429 */ { UD_Inot, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 1430 */ { UD_Ineg, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 1431 */ { UD_Imul, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 1432 */ { UD_Iimul, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 1433 */ { UD_Idiv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 1434 */ { UD_Iidiv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 1435 */ { UD_Iclc, O_NONE, O_NONE, O_NONE, P_none }, /* 1436 */ { UD_Istc, O_NONE, O_NONE, O_NONE, P_none }, /* 1437 */ { UD_Icli, O_NONE, O_NONE, O_NONE, P_none }, /* 1438 */ { UD_Isti, O_NONE, O_NONE, O_NONE, P_none }, /* 1439 */ { UD_Icld, O_NONE, O_NONE, O_NONE, P_none }, /* 1440 */ { UD_Istd, O_NONE, O_NONE, O_NONE, P_none }, /* 1441 */ { UD_Iinc, O_Eb, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 1442 */ { UD_Idec, O_Eb, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 1443 */ { UD_Iinc, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 1444 */ { UD_Idec, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 1445 */ { UD_Icall, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 1446 */ { UD_Icall, O_Eq, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb|P_def64 }, /* 1447 */ { UD_Icall, O_Fv, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 1448 */ { UD_Ijmp, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb|P_def64 }, /* 1449 */ { UD_Ijmp, O_Fv, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, /* 1450 */ { UD_Ipush, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb|P_def64 }, }; const char * ud_mnemonics_str[] = { "invalid", "3dnow", "none", "db", "pause", "aaa", "aad", "aam", "aas", "adc", "add", "addpd", "addps", "addsd", "addss", "and", "andpd", "andps", "andnpd", "andnps", "arpl", "movsxd", "bound", "bsf", "bsr", "bswap", "bt", "btc", "btr", "bts", "call", "cbw", "cwde", "cdqe", "clc", "cld", "clflush", "clgi", "cli", "clts", "cmc", "cmovo", "cmovno", "cmovb", "cmovae", "cmovz", "cmovnz", "cmovbe", "cmova", "cmovs", "cmovns", "cmovp", "cmovnp", "cmovl", "cmovge", "cmovle", "cmovg", "cmp", "cmppd", "cmpps", "cmpsb", "cmpsw", "cmpsd", "cmpsq", "cmpss", "cmpxchg", "cmpxchg8b", "cmpxchg16b", "comisd", "comiss", "cpuid", "cvtdq2pd", "cvtdq2ps", "cvtpd2dq", "cvtpd2pi", "cvtpd2ps", "cvtpi2ps", "cvtpi2pd", "cvtps2dq", "cvtps2pi", "cvtps2pd", "cvtsd2si", "cvtsd2ss", "cvtsi2ss", "cvtss2si", "cvtss2sd", "cvttpd2pi", "cvttpd2dq", "cvttps2dq", "cvttps2pi", "cvttsd2si", "cvtsi2sd", "cvttss2si", "cwd", "cdq", "cqo", "daa", "das", "dec", "div", "divpd", "divps", "divsd", "divss", "emms", "enter", "f2xm1", "fabs", "fadd", "faddp", "fbld", "fbstp", "fchs", "fclex", "fcmovb", "fcmove", "fcmovbe", "fcmovu", "fcmovnb", "fcmovne", "fcmovnbe", "fcmovnu", "fucomi", "fcom", "fcom2", "fcomp3", "fcomi", "fucomip", "fcomip", "fcomp", "fcomp5", "fcompp", "fcos", "fdecstp", "fdiv", "fdivp", "fdivr", "fdivrp", "femms", "ffree", "ffreep", "ficom", "ficomp", "fild", "fincstp", "fninit", "fiadd", "fidivr", "fidiv", "fisub", "fisubr", "fist", "fistp", "fisttp", "fld", "fld1", "fldl2t", "fldl2e", "fldpi", "fldlg2", "fldln2", "fldz", "fldcw", "fldenv", "fmul", "fmulp", "fimul", "fnop", "fpatan", "fprem", "fprem1", "fptan", "frndint", "frstor", "fnsave", "fscale", "fsin", "fsincos", "fsqrt", "fstp", "fstp1", "fstp8", "fstp9", "fst", "fnstcw", "fnstenv", "fnstsw", "fsub", "fsubp", "fsubr", "fsubrp", "ftst", "fucom", "fucomp", "fucompp", "fxam", "fxch", "fxch4", "fxch7", "fxrstor", "fxsave", "fxtract", "fyl2x", "fyl2xp1", "hlt", "idiv", "in", "imul", "inc", "insb", "insw", "insd", "int1", "int3", "int", "into", "invd", "invept", "invlpg", "invlpga", "invvpid", "iretw", "iretd", "iretq", "jo", "jno", "jb", "jae", "jz", "jnz", "jbe", "ja", "js", "jns", "jp", "jnp", "jl", "jge", "jle", "jg", "jcxz", "jecxz", "jrcxz", "jmp", "lahf", "lar", "lddqu", "ldmxcsr", "lds", "lea", "les", "lfs", "lgs", "lidt", "lss", "leave", "lfence", "lgdt", "lldt", "lmsw", "lock", "lodsb", "lodsw", "lodsd", "lodsq", "loopne", "loope", "loop", "lsl", "ltr", "maskmovq", "maxpd", "maxps", "maxsd", "maxss", "mfence", "minpd", "minps", "minsd", "minss", "monitor", "montmul", "mov", "movapd", "movaps", "movd", "movhpd", "movhps", "movlhps", "movlpd", "movlps", "movhlps", "movmskpd", "movmskps", "movntdq", "movnti", "movntpd", "movntps", "movntq", "movq", "movsb", "movsw", "movsd", "movsq", "movss", "movsx", "movupd", "movups", "movzx", "mul", "mulpd", "mulps", "mulsd", "mulss", "mwait", "neg", "nop", "not", "or", "orpd", "orps", "out", "outsb", "outsw", "outsd", "packsswb", "packssdw", "packuswb", "paddb", "paddw", "paddd", "paddsb", "paddsw", "paddusb", "paddusw", "pand", "pandn", "pavgb", "pavgw", "pcmpeqb", "pcmpeqw", "pcmpeqd", "pcmpgtb", "pcmpgtw", "pcmpgtd", "pextrb", "pextrd", "pextrq", "pextrw", "pinsrb", "pinsrw", "pinsrd", "pinsrq", "pmaddwd", "pmaxsw", "pmaxub", "pminsw", "pminub", "pmovmskb", "pmulhuw", "pmulhw", "pmullw", "pop", "popa", "popad", "popfw", "popfd", "popfq", "por", "prefetch", "prefetchnta", "prefetcht0", "prefetcht1", "prefetcht2", "psadbw", "pshufw", "psllw", "pslld", "psllq", "psraw", "psrad", "psrlw", "psrld", "psrlq", "psubb", "psubw", "psubd", "psubsb", "psubsw", "psubusb", "psubusw", "punpckhbw", "punpckhwd", "punpckhdq", "punpcklbw", "punpcklwd", "punpckldq", "pi2fw", "pi2fd", "pf2iw", "pf2id", "pfnacc", "pfpnacc", "pfcmpge", "pfmin", "pfrcp", "pfrsqrt", "pfsub", "pfadd", "pfcmpgt", "pfmax", "pfrcpit1", "pfrsqit1", "pfsubr", "pfacc", "pfcmpeq", "pfmul", "pfrcpit2", "pmulhrw", "pswapd", "pavgusb", "push", "pusha", "pushad", "pushfw", "pushfd", "pushfq", "pxor", "rcl", "rcr", "rol", "ror", "rcpps", "rcpss", "rdmsr", "rdpmc", "rdtsc", "rdtscp", "repne", "rep", "ret", "retf", "rsm", "rsqrtps", "rsqrtss", "sahf", "salc", "sar", "shl", "shr", "sbb", "scasb", "scasw", "scasd", "scasq", "seto", "setno", "setb", "setae", "setz", "setnz", "setbe", "seta", "sets", "setns", "setp", "setnp", "setl", "setge", "setle", "setg", "sfence", "sgdt", "shld", "shrd", "shufpd", "shufps", "sidt", "sldt", "smsw", "sqrtps", "sqrtpd", "sqrtsd", "sqrtss", "stc", "std", "stgi", "sti", "skinit", "stmxcsr", "stosb", "stosw", "stosd", "stosq", "str", "sub", "subpd", "subps", "subsd", "subss", "swapgs", "syscall", "sysenter", "sysexit", "sysret", "test", "ucomisd", "ucomiss", "ud2", "unpckhpd", "unpckhps", "unpcklps", "unpcklpd", "verr", "verw", "vmcall", "vmclear", "vmxon", "vmptrld", "vmptrst", "vmlaunch", "vmresume", "vmxoff", "vmread", "vmwrite", "vmrun", "vmmcall", "vmload", "vmsave", "wait", "wbinvd", "wrmsr", "xadd", "xchg", "xgetbv", "xlatb", "xor", "xorpd", "xorps", "xcryptecb", "xcryptcbc", "xcryptctr", "xcryptcfb", "xcryptofb", "xrstor", "xsave", "xsetbv", "xsha1", "xsha256", "xstore", "aesdec", "aesdeclast", "aesenc", "aesenclast", "aesimc", "aeskeygenassist", "pclmulqdq", "getsec", "movdqa", "maskmovdqu", "movdq2q", "movdqu", "movq2dq", "paddq", "psubq", "pmuludq", "pshufhw", "pshuflw", "pshufd", "pslldq", "psrldq", "punpckhqdq", "punpcklqdq", "addsubpd", "addsubps", "haddpd", "haddps", "hsubpd", "hsubps", "movddup", "movshdup", "movsldup", "pabsb", "pabsw", "pabsd", "pshufb", "phaddw", "phaddd", "phaddsw", "pmaddubsw", "phsubw", "phsubd", "phsubsw", "psignb", "psignd", "psignw", "pmulhrsw", "palignr", "pblendvb", "pmuldq", "pminsb", "pminsd", "pminuw", "pminud", "pmaxsb", "pmaxsd", "pmaxud", "pmaxuw", "pmulld", "phminposuw", "roundps", "roundpd", "roundss", "roundsd", "blendpd", "pblendw", "blendps", "blendvpd", "blendvps", "dpps", "dppd", "mpsadbw", "extractps", "insertps", "movntdqa", "packusdw", "pmovsxbw", "pmovsxbd", "pmovsxbq", "pmovsxwd", "pmovsxwq", "pmovsxdq", "pmovzxbw", "pmovzxbd", "pmovzxbq", "pmovzxwd", "pmovzxwq", "pmovzxdq", "pcmpeqq", "popcnt", "ptest", "pcmpestri", "pcmpestrm", "pcmpgtq", "pcmpistri", "pcmpistrm", "movbe", "crc32" }; pev/lib/libudis86/libudis86/types.h0000644000175000017500000001625613034014706016103 0ustar useruser/* udis86 - libudis86/types.h * * Copyright (c) 2002-2013 Vivek Thampi * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef UD_TYPES_H #define UD_TYPES_H #ifdef __KERNEL__ /* -D__KERNEL__ is automatically passed on the command line when building something as part of the Linux kernel */ # include # include # ifndef __UD_STANDALONE__ # define __UD_STANDALONE__ 1 #endif #endif /* __KERNEL__ */ #if defined(_MSC_VER) || defined(__BORLANDC__) # include # include # define inline __inline /* MS Visual Studio requires __inline instead of inline for C code */ #elif !defined(__UD_STANDALONE__) # include # include #endif /* !__UD_STANDALONE__ */ /* gcc specific extensions */ #ifdef __GNUC__ # define UD_ATTR_PACKED __attribute__((packed)) #else # define UD_ATTR_PACKED #endif /* UD_ATTR_PACKED */ /* ----------------------------------------------------------------------------- * All possible "types" of objects in udis86. Order is Important! * ----------------------------------------------------------------------------- */ enum ud_type { UD_NONE, /* 8 bit GPRs */ UD_R_AL, UD_R_CL, UD_R_DL, UD_R_BL, UD_R_AH, UD_R_CH, UD_R_DH, UD_R_BH, UD_R_SPL, UD_R_BPL, UD_R_SIL, UD_R_DIL, UD_R_R8B, UD_R_R9B, UD_R_R10B, UD_R_R11B, UD_R_R12B, UD_R_R13B, UD_R_R14B, UD_R_R15B, /* 16 bit GPRs */ UD_R_AX, UD_R_CX, UD_R_DX, UD_R_BX, UD_R_SP, UD_R_BP, UD_R_SI, UD_R_DI, UD_R_R8W, UD_R_R9W, UD_R_R10W, UD_R_R11W, UD_R_R12W, UD_R_R13W, UD_R_R14W, UD_R_R15W, /* 32 bit GPRs */ UD_R_EAX, UD_R_ECX, UD_R_EDX, UD_R_EBX, UD_R_ESP, UD_R_EBP, UD_R_ESI, UD_R_EDI, UD_R_R8D, UD_R_R9D, UD_R_R10D, UD_R_R11D, UD_R_R12D, UD_R_R13D, UD_R_R14D, UD_R_R15D, /* 64 bit GPRs */ UD_R_RAX, UD_R_RCX, UD_R_RDX, UD_R_RBX, UD_R_RSP, UD_R_RBP, UD_R_RSI, UD_R_RDI, UD_R_R8, UD_R_R9, UD_R_R10, UD_R_R11, UD_R_R12, UD_R_R13, UD_R_R14, UD_R_R15, /* segment registers */ UD_R_ES, UD_R_CS, UD_R_SS, UD_R_DS, UD_R_FS, UD_R_GS, /* control registers*/ UD_R_CR0, UD_R_CR1, UD_R_CR2, UD_R_CR3, UD_R_CR4, UD_R_CR5, UD_R_CR6, UD_R_CR7, UD_R_CR8, UD_R_CR9, UD_R_CR10, UD_R_CR11, UD_R_CR12, UD_R_CR13, UD_R_CR14, UD_R_CR15, /* debug registers */ UD_R_DR0, UD_R_DR1, UD_R_DR2, UD_R_DR3, UD_R_DR4, UD_R_DR5, UD_R_DR6, UD_R_DR7, UD_R_DR8, UD_R_DR9, UD_R_DR10, UD_R_DR11, UD_R_DR12, UD_R_DR13, UD_R_DR14, UD_R_DR15, /* mmx registers */ UD_R_MM0, UD_R_MM1, UD_R_MM2, UD_R_MM3, UD_R_MM4, UD_R_MM5, UD_R_MM6, UD_R_MM7, /* x87 registers */ UD_R_ST0, UD_R_ST1, UD_R_ST2, UD_R_ST3, UD_R_ST4, UD_R_ST5, UD_R_ST6, UD_R_ST7, /* extended multimedia registers */ UD_R_XMM0, UD_R_XMM1, UD_R_XMM2, UD_R_XMM3, UD_R_XMM4, UD_R_XMM5, UD_R_XMM6, UD_R_XMM7, UD_R_XMM8, UD_R_XMM9, UD_R_XMM10, UD_R_XMM11, UD_R_XMM12, UD_R_XMM13, UD_R_XMM14, UD_R_XMM15, UD_R_RIP, /* Operand Types */ UD_OP_REG, UD_OP_MEM, UD_OP_PTR, UD_OP_IMM, UD_OP_JIMM, UD_OP_CONST }; #include "itab.h" union ud_lval { int8_t sbyte; uint8_t ubyte; int16_t sword; uint16_t uword; int32_t sdword; uint32_t udword; int64_t sqword; uint64_t uqword; struct { uint16_t seg; uint32_t off; } ptr; }; /* ----------------------------------------------------------------------------- * struct ud_operand - Disassembled instruction Operand. * ----------------------------------------------------------------------------- */ struct ud_operand { enum ud_type type; uint8_t size; enum ud_type base; enum ud_type index; uint8_t scale; uint8_t offset; union ud_lval lval; /* * internal use only */ uint64_t _legacy; /* this will be removed in 1.8 */ uint8_t _oprcode; }; /* ----------------------------------------------------------------------------- * struct ud - The udis86 object. * ----------------------------------------------------------------------------- */ struct ud { /* * input buffering */ int (*inp_hook) (struct ud*); #ifndef __UD_STANDALONE__ FILE* inp_file; #endif const uint8_t* inp_buf; size_t inp_buf_size; size_t inp_buf_index; uint8_t inp_curr; size_t inp_ctr; uint8_t inp_sess[64]; int inp_end; void (*translator)(struct ud*); uint64_t insn_offset; char insn_hexcode[64]; /* * Assembly output buffer */ char *asm_buf; size_t asm_buf_size; size_t asm_buf_fill; char asm_buf_int[128]; /* * Symbol resolver for use in the translation phase. */ const char* (*sym_resolver)(struct ud*, uint64_t addr, int64_t *offset); uint8_t dis_mode; uint64_t pc; uint8_t vendor; enum ud_mnemonic_code mnemonic; struct ud_operand operand[3]; uint8_t error; uint8_t pfx_rex; uint8_t pfx_seg; uint8_t pfx_opr; uint8_t pfx_adr; uint8_t pfx_lock; uint8_t pfx_str; uint8_t pfx_rep; uint8_t pfx_repe; uint8_t pfx_repne; uint8_t opr_mode; uint8_t adr_mode; uint8_t br_far; uint8_t br_near; uint8_t have_modrm; uint8_t modrm; uint8_t primary_opcode; void * user_opaque_data; struct ud_itab_entry * itab_entry; struct ud_lookup_table_list_entry *le; }; /* ----------------------------------------------------------------------------- * Type-definitions * ----------------------------------------------------------------------------- */ typedef enum ud_type ud_type_t; typedef enum ud_mnemonic_code ud_mnemonic_code_t; typedef struct ud ud_t; typedef struct ud_operand ud_operand_t; #define UD_SYN_INTEL ud_translate_intel #define UD_SYN_ATT ud_translate_att #define UD_EOI (-1) #define UD_INP_CACHE_SZ 32 #define UD_VENDOR_AMD 0 #define UD_VENDOR_INTEL 1 #define UD_VENDOR_ANY 2 #endif /* vim: set ts=2 sw=2 expandtab */ pev/lib/libudis86/libudis86/udint.h0000644000175000017500000000520713034014706016054 0ustar useruser/* udis86 - libudis86/udint.h -- definitions for internal use only * * Copyright (c) 2002-2009 Vivek Thampi * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _UDINT_H_ #define _UDINT_H_ #ifdef HAVE_CONFIG_H # include #endif /* HAVE_CONFIG_H */ #if defined(UD_DEBUG) && HAVE_ASSERT_H # include # define UD_ASSERT(_x) assert(_x) #else # define UD_ASSERT(_x) #endif /* !HAVE_ASSERT_H */ #if defined(UD_DEBUG) #define UDERR(u, msg) \ do { \ (u)->error = 1; \ fprintf(stderr, "decode-error: %s:%d: %s", \ __FILE__, __LINE__, (msg)); \ } while (0) #else #define UDERR(u, m) \ do { \ (u)->error = 1; \ } while (0) #endif /* !LOGERR */ #define UD_RETURN_ON_ERROR(u) \ do { \ if ((u)->error != 0) { \ return (u)->error; \ } \ } while (0) #define UD_RETURN_WITH_ERROR(u, m) \ do { \ UDERR(u, m); \ return (u)->error; \ } while (0) #ifndef __UD_STANDALONE__ # define UD_NON_STANDALONE(x) x #else # define UD_NON_STANDALONE(x) #endif /* printf formatting int64 specifier */ #ifdef FMT64 # undef FMT64 #endif #if defined(_MSC_VER) || defined(__BORLANDC__) # define FMT64 "I64" #else # if defined(__APPLE__) # define FMT64 "ll" # elif defined(__amd64__) || defined(__x86_64__) # define FMT64 "l" # else # define FMT64 "ll" # endif /* !x64 */ #endif #endif /* _UDINT_H_ */ pev/lib/libudis86/libudis86/syn.c0000644000175000017500000001412713034014706015536 0ustar useruser/* udis86 - libudis86/syn.c * * Copyright (c) 2002-2013 Vivek Thampi * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "types.h" #include "decode.h" #include "syn.h" #include "udint.h" /* ----------------------------------------------------------------------------- * Intel Register Table - Order Matters (types.h)! * ----------------------------------------------------------------------------- */ const char* ud_reg_tab[] = { "al", "cl", "dl", "bl", "ah", "ch", "dh", "bh", "spl", "bpl", "sil", "dil", "r8b", "r9b", "r10b", "r11b", "r12b", "r13b", "r14b", "r15b", "ax", "cx", "dx", "bx", "sp", "bp", "si", "di", "r8w", "r9w", "r10w", "r11w", "r12w", "r13w" , "r14w", "r15w", "eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi", "r8d", "r9d", "r10d", "r11d", "r12d", "r13d", "r14d", "r15d", "rax", "rcx", "rdx", "rbx", "rsp", "rbp", "rsi", "rdi", "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15", "es", "cs", "ss", "ds", "fs", "gs", "cr0", "cr1", "cr2", "cr3", "cr4", "cr5", "cr6", "cr7", "cr8", "cr9", "cr10", "cr11", "cr12", "cr13", "cr14", "cr15", "dr0", "dr1", "dr2", "dr3", "dr4", "dr5", "dr6", "dr7", "dr8", "dr9", "dr10", "dr11", "dr12", "dr13", "dr14", "dr15", "mm0", "mm1", "mm2", "mm3", "mm4", "mm5", "mm6", "mm7", "st0", "st1", "st2", "st3", "st4", "st5", "st6", "st7", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6", "xmm7", "xmm8", "xmm9", "xmm10", "xmm11", "xmm12", "xmm13", "xmm14", "xmm15", "rip" }; uint64_t ud_syn_rel_target(struct ud *u, struct ud_operand *opr) { const uint64_t trunc_mask = 0xffffffffffffffffull >> (64 - u->opr_mode); switch (opr->size) { case 8 : return (u->pc + opr->lval.sbyte) & trunc_mask; case 16: return (u->pc + opr->lval.sword) & trunc_mask; case 32: return (u->pc + opr->lval.sdword) & trunc_mask; default: UD_ASSERT(!"invalid relative offset size."); return 0ull; } } /* * asmprintf * Printf style function for printing translated assembly * output. Returns the number of characters written and * moves the buffer pointer forward. On an overflow, * returns a negative number and truncates the output. */ int ud_asmprintf(struct ud *u, const char *fmt, ...) { int ret; int avail; va_list ap; va_start(ap, fmt); avail = u->asm_buf_size - u->asm_buf_fill - 1 /* nullchar */; ret = vsnprintf((char*) u->asm_buf + u->asm_buf_fill, avail, fmt, ap); if (ret < 0 || ret > avail) { u->asm_buf_fill = u->asm_buf_size - 1; } else { u->asm_buf_fill += ret; } va_end(ap); return ret; } void ud_syn_print_addr(struct ud *u, uint64_t addr) { const char *name = NULL; if (u->sym_resolver) { int64_t offset = 0; name = u->sym_resolver(u, addr, &offset); if (name) { if (offset) { ud_asmprintf(u, "%s%+" FMT64 "d", name, offset); } else { ud_asmprintf(u, "%s", name); } return; } } ud_asmprintf(u, "0x%" FMT64 "x", addr); } void ud_syn_print_imm(struct ud* u, const struct ud_operand *op) { uint64_t v; if (op->_oprcode == OP_sI && op->size != u->opr_mode) { if (op->size == 8) { v = (int64_t)op->lval.sbyte; } else { UD_ASSERT(op->size == 32); v = (int64_t)op->lval.sdword; } if (u->opr_mode < 64) { v = v & ((1ull << u->opr_mode) - 1ull); } } else { switch (op->size) { case 8 : v = op->lval.ubyte; break; case 16: v = op->lval.uword; break; case 32: v = op->lval.udword; break; case 64: v = op->lval.uqword; break; default: UD_ASSERT(!"invalid offset"); v = 0; /* keep cc happy */ } } ud_asmprintf(u, "0x%" FMT64 "x", v); } void ud_syn_print_mem_disp(struct ud* u, const struct ud_operand *op, int sign) { UD_ASSERT(op->offset != 0); if (op->base == UD_NONE && op->index == UD_NONE) { uint64_t v; UD_ASSERT(op->scale == UD_NONE && op->offset != 8); /* unsigned mem-offset */ switch (op->offset) { case 16: v = op->lval.uword; break; case 32: v = op->lval.udword; break; case 64: v = op->lval.uqword; break; default: UD_ASSERT(!"invalid offset"); v = 0; /* keep cc happy */ } ud_asmprintf(u, "0x%" FMT64 "x", v); } else { int64_t v; UD_ASSERT(op->offset != 64); switch (op->offset) { case 8 : v = op->lval.sbyte; break; case 16: v = op->lval.sword; break; case 32: v = op->lval.sdword; break; default: UD_ASSERT(!"invalid offset"); v = 0; /* keep cc happy */ } if (v < 0) { ud_asmprintf(u, "-0x%" FMT64 "x", -v); } else if (v > 0) { ud_asmprintf(u, "%s0x%" FMT64 "x", sign? "+" : "", v); } } } /* vim: set ts=2 sw=2 expandtab */ pev/lib/libudis86/libudis86/udis86.c0000644000175000017500000003074013034014706016046 0ustar useruser/* udis86 - libudis86/udis86.c * * Copyright (c) 2002-2013 Vivek Thampi * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "udint.h" #include "extern.h" #include "decode.h" #if !defined(__UD_STANDALONE__) # if HAVE_STRING_H # include # endif #endif /* !__UD_STANDALONE__ */ static void ud_inp_init(struct ud *u); /* ============================================================================= * ud_init * Initializes ud_t object. * ============================================================================= */ extern void ud_init(struct ud* u) { memset((void*)u, 0, sizeof(struct ud)); ud_set_mode(u, 16); u->mnemonic = UD_Iinvalid; ud_set_pc(u, 0); #ifndef __UD_STANDALONE__ ud_set_input_file(u, stdin); #endif /* __UD_STANDALONE__ */ ud_set_asm_buffer(u, u->asm_buf_int, sizeof(u->asm_buf_int)); } /* ============================================================================= * ud_disassemble * Disassembles one instruction and returns the number of * bytes disassembled. A zero means end of disassembly. * ============================================================================= */ extern unsigned int ud_disassemble(struct ud* u) { int len; if (u->inp_end) { return 0; } if ((len = ud_decode(u)) > 0) { if (u->translator != NULL) { u->asm_buf[0] = '\0'; u->translator(u); } } return len; } /* ============================================================================= * ud_set_mode() - Set Disassemly Mode. * ============================================================================= */ extern void ud_set_mode(struct ud* u, uint8_t m) { switch(m) { case 16: case 32: case 64: u->dis_mode = m ; return; default: u->dis_mode = 16; return; } } /* ============================================================================= * ud_set_vendor() - Set vendor. * ============================================================================= */ extern void ud_set_vendor(struct ud* u, unsigned v) { switch(v) { case UD_VENDOR_INTEL: u->vendor = v; break; case UD_VENDOR_ANY: u->vendor = v; break; default: u->vendor = UD_VENDOR_AMD; } } /* ============================================================================= * ud_set_pc() - Sets code origin. * ============================================================================= */ extern void ud_set_pc(struct ud* u, uint64_t o) { u->pc = o; } /* ============================================================================= * ud_set_syntax() - Sets the output syntax. * ============================================================================= */ extern void ud_set_syntax(struct ud* u, void (*t)(struct ud*)) { u->translator = t; } /* ============================================================================= * ud_insn() - returns the disassembled instruction * ============================================================================= */ const char* ud_insn_asm(const struct ud* u) { return u->asm_buf; } /* ============================================================================= * ud_insn_offset() - Returns the offset. * ============================================================================= */ uint64_t ud_insn_off(const struct ud* u) { return u->insn_offset; } /* ============================================================================= * ud_insn_hex() - Returns hex form of disassembled instruction. * ============================================================================= */ const char* ud_insn_hex(struct ud* u) { u->insn_hexcode[0] = 0; if (!u->error) { unsigned int i; const unsigned char *src_ptr = ud_insn_ptr(u); char* src_hex; src_hex = (char*) u->insn_hexcode; /* for each byte used to decode instruction */ for (i = 0; i < ud_insn_len(u) && i < sizeof(u->insn_hexcode) / 2; ++i, ++src_ptr) { sprintf(src_hex, "%02x", *src_ptr & 0xFF); src_hex += 2; } } return u->insn_hexcode; } /* ============================================================================= * ud_insn_ptr * Returns a pointer to buffer containing the bytes that were * disassembled. * ============================================================================= */ extern const uint8_t* ud_insn_ptr(const struct ud* u) { return (u->inp_buf == NULL) ? u->inp_sess : u->inp_buf + (u->inp_buf_index - u->inp_ctr); } /* ============================================================================= * ud_insn_len * Returns the count of bytes disassembled. * ============================================================================= */ extern unsigned int ud_insn_len(const struct ud* u) { return u->inp_ctr; } /* ============================================================================= * ud_insn_get_opr * Return the operand struct representing the nth operand of * the currently disassembled instruction. Returns NULL if * there's no such operand. * ============================================================================= */ const struct ud_operand* ud_insn_opr(const struct ud *u, unsigned int n) { if (n > 2 || u->operand[n].type == UD_NONE) { return NULL; } else { return &u->operand[n]; } } /* ============================================================================= * ud_opr_is_sreg * Returns non-zero if the given operand is of a segment register type. * ============================================================================= */ int ud_opr_is_sreg(const struct ud_operand *opr) { return opr->type == UD_OP_REG && opr->base >= UD_R_ES && opr->base <= UD_R_GS; } /* ============================================================================= * ud_opr_is_sreg * Returns non-zero if the given operand is of a general purpose * register type. * ============================================================================= */ int ud_opr_is_gpr(const struct ud_operand *opr) { return opr->type == UD_OP_REG && opr->base >= UD_R_AL && opr->base <= UD_R_R15; } /* ============================================================================= * ud_set_user_opaque_data * ud_get_user_opaque_data * Get/set user opaqute data pointer * ============================================================================= */ void ud_set_user_opaque_data(struct ud * u, void* opaque) { u->user_opaque_data = opaque; } void* ud_get_user_opaque_data(const struct ud *u) { return u->user_opaque_data; } /* ============================================================================= * ud_set_asm_buffer * Allow the user to set an assembler output buffer. If `buf` is NULL, * we switch back to the internal buffer. * ============================================================================= */ void ud_set_asm_buffer(struct ud *u, char *buf, size_t size) { if (buf == NULL) { ud_set_asm_buffer(u, u->asm_buf_int, sizeof(u->asm_buf_int)); } else { u->asm_buf = buf; u->asm_buf_size = size; } } /* ============================================================================= * ud_set_sym_resolver * Set symbol resolver for relative targets used in the translation * phase. * * The resolver is a function that takes a uint64_t address and returns a * symbolic name for the that address. The function also takes a second * argument pointing to an integer that the client can optionally set to a * non-zero value for offsetted targets. (symbol+offset) The function may * also return NULL, in which case the translator only prints the target * address. * * The function pointer maybe NULL which resets symbol resolution. * ============================================================================= */ void ud_set_sym_resolver(struct ud *u, const char* (*resolver)(struct ud*, uint64_t addr, int64_t *offset)) { u->sym_resolver = resolver; } /* ============================================================================= * ud_insn_mnemonic * Return the current instruction mnemonic. * ============================================================================= */ enum ud_mnemonic_code ud_insn_mnemonic(const struct ud *u) { return u->mnemonic; } /* ============================================================================= * ud_lookup_mnemonic * Looks up mnemonic code in the mnemonic string table. * Returns NULL if the mnemonic code is invalid. * ============================================================================= */ const char* ud_lookup_mnemonic(enum ud_mnemonic_code c) { if (c < UD_MAX_MNEMONIC_CODE) { return ud_mnemonics_str[c]; } else { return NULL; } } /* * ud_inp_init * Initializes the input system. */ static void ud_inp_init(struct ud *u) { u->inp_hook = NULL; u->inp_buf = NULL; u->inp_buf_size = 0; u->inp_buf_index = 0; u->inp_curr = 0; u->inp_ctr = 0; u->inp_end = 0; UD_NON_STANDALONE(u->inp_file = NULL); } /* ============================================================================= * ud_inp_set_hook * Sets input hook. * ============================================================================= */ void ud_set_input_hook(register struct ud* u, int (*hook)(struct ud*)) { ud_inp_init(u); u->inp_hook = hook; } /* ============================================================================= * ud_inp_set_buffer * Set buffer as input. * ============================================================================= */ void ud_set_input_buffer(register struct ud* u, const uint8_t* buf, size_t len) { ud_inp_init(u); u->inp_buf = buf; u->inp_buf_size = len; u->inp_buf_index = 0; } #ifndef __UD_STANDALONE__ /* ============================================================================= * ud_input_set_file * Set FILE as input. * ============================================================================= */ static int inp_file_hook(struct ud* u) { return fgetc(u->inp_file); } void ud_set_input_file(register struct ud* u, FILE* f) { ud_inp_init(u); u->inp_hook = inp_file_hook; u->inp_file = f; } #endif /* __UD_STANDALONE__ */ /* ============================================================================= * ud_input_skip * Skip n input bytes. * ============================================================================ */ void ud_input_skip(struct ud* u, size_t n) { if (u->inp_end) { return; } if (u->inp_buf == NULL) { while (n--) { int c = u->inp_hook(u); if (c == UD_EOI) { goto eoi; } } return; } else { if (n > u->inp_buf_size || u->inp_buf_index > u->inp_buf_size - n) { u->inp_buf_index = u->inp_buf_size; goto eoi; } u->inp_buf_index += n; return; } eoi: u->inp_end = 1; UDERR(u, "cannot skip, eoi received\b"); return; } /* ============================================================================= * ud_input_end * Returns non-zero on end-of-input. * ============================================================================= */ int ud_input_end(const struct ud *u) { return u->inp_end; } /* vim:set ts=2 sw=2 expandtab */ pev/lib/libudis86/libudis86/Makefile.am0000644000175000017500000000166013034014706016613 0ustar useruser# # -- udis86/libudis86 # PYTHON = @PYTHON@ OPTABLE = @top_srcdir@/docs/x86/optable.xml MAINTAINERCLEANFILES = Makefile.in lib_LTLIBRARIES = libudis86.la libudis86_la_SOURCES = \ itab.c \ decode.c \ syn.c \ syn-intel.c \ syn-att.c \ udis86.c \ udint.h \ syn.h \ decode.h include_ladir = ${includedir}/libudis86 include_la_HEADERS = \ types.h \ extern.h \ itab.h BUILT_SOURCES = \ itab.c \ itab.h # # DLLs may not contain undefined symbol references. # We have the linker check this explicitly. # if TARGET_WINDOWS libudis86_la_LDFLAGS = -no-undefined -version-info 0:0:0 endif itab.c itab.h: $(OPTABLE) \ $(top_srcdir)/scripts/ud_itab.py \ $(top_srcdir)/scripts/ud_opcode.py \ $(top_srcdir)/scripts/ud_optable.py $(PYTHON) $(top_srcdir)/scripts/ud_itab.py $(OPTABLE) $(srcdir) clean-local: rm -rf $(BUILT_SOURCES) maintainer-clean-local: pev/lib/libudis86/libudis86/Makefile.in0000644000175000017500000005251113034014706016625 0ustar useruser# Makefile.in generated by automake 1.13.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2012 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # -- udis86/libudis86 # VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = libudis86 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/build/depcomp $(include_la_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/build/m4/libtool.m4 \ $(top_srcdir)/build/m4/ltoptions.m4 \ $(top_srcdir)/build/m4/ltsugar.m4 \ $(top_srcdir)/build/m4/ltversion.m4 \ $(top_srcdir)/build/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/ax_compare_version.m4 \ $(top_srcdir)/m4/ax_prog_sphinx_version.m4 \ $(top_srcdir)/m4/ax_prog_yasm_version.m4 \ $(top_srcdir)/m4/ax_with_prog.m4 \ $(top_srcdir)/m4/ax_with_python.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(include_ladir)" LTLIBRARIES = $(lib_LTLIBRARIES) libudis86_la_LIBADD = am_libudis86_la_OBJECTS = itab.lo decode.lo syn.lo syn-intel.lo \ syn-att.lo udis86.lo libudis86_la_OBJECTS = $(am_libudis86_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libudis86_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libudis86_la_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/build/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libudis86_la_SOURCES) DIST_SOURCES = $(libudis86_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(include_la_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SPHINX_BUILD = @SPHINX_BUILD@ SPHINX_VERSION = @SPHINX_VERSION@ STRIP = @STRIP@ VERSION = @VERSION@ YASM = @YASM@ YASM_VERSION = @YASM_VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ OPTABLE = @top_srcdir@/docs/x86/optable.xml MAINTAINERCLEANFILES = Makefile.in lib_LTLIBRARIES = libudis86.la libudis86_la_SOURCES = \ itab.c \ decode.c \ syn.c \ syn-intel.c \ syn-att.c \ udis86.c \ udint.h \ syn.h \ decode.h include_ladir = ${includedir}/libudis86 include_la_HEADERS = \ types.h \ extern.h \ itab.h BUILT_SOURCES = \ itab.c \ itab.h # # DLLs may not contain undefined symbol references. # We have the linker check this explicitly. # @TARGET_WINDOWS_TRUE@libudis86_la_LDFLAGS = -no-undefined -version-info 0:0:0 all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libudis86/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign libudis86/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libudis86.la: $(libudis86_la_OBJECTS) $(libudis86_la_DEPENDENCIES) $(EXTRA_libudis86_la_DEPENDENCIES) $(AM_V_CCLD)$(libudis86_la_LINK) -rpath $(libdir) $(libudis86_la_OBJECTS) $(libudis86_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/decode.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/itab.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syn-att.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syn-intel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syn.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/udis86.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-include_laHEADERS: $(include_la_HEADERS) @$(NORMAL_INSTALL) @list='$(include_la_HEADERS)'; test -n "$(include_ladir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(include_ladir)'"; \ $(MKDIR_P) "$(DESTDIR)$(include_ladir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(include_ladir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(include_ladir)" || exit $$?; \ done uninstall-include_laHEADERS: @$(NORMAL_UNINSTALL) @list='$(include_la_HEADERS)'; test -n "$(include_ladir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(include_ladir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile $(LTLIBRARIES) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(include_ladir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool clean-local \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-include_laHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic \ maintainer-clean-local mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-include_laHEADERS uninstall-libLTLIBRARIES .MAKE: all check install install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool clean-local cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am \ install-include_laHEADERS install-info install-info-am \ install-libLTLIBRARIES install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic maintainer-clean-local mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ uninstall-include_laHEADERS uninstall-libLTLIBRARIES itab.c itab.h: $(OPTABLE) \ $(top_srcdir)/scripts/ud_itab.py \ $(top_srcdir)/scripts/ud_opcode.py \ $(top_srcdir)/scripts/ud_optable.py $(PYTHON) $(top_srcdir)/scripts/ud_itab.py $(OPTABLE) $(srcdir) clean-local: rm -rf $(BUILT_SOURCES) maintainer-clean-local: # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: pev/lib/libudis86/libudis86/decode.c0000644000175000017500000006541413034014706016155 0ustar useruser/* udis86 - libudis86/decode.c * * Copyright (c) 2002-2009 Vivek Thampi * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "udint.h" #include "types.h" #include "decode.h" #ifndef __UD_STANDALONE__ # include #endif /* __UD_STANDALONE__ */ /* The max number of prefixes to an instruction */ #define MAX_PREFIXES 15 /* rex prefix bits */ #define REX_W(r) ( ( 0xF & ( r ) ) >> 3 ) #define REX_R(r) ( ( 0x7 & ( r ) ) >> 2 ) #define REX_X(r) ( ( 0x3 & ( r ) ) >> 1 ) #define REX_B(r) ( ( 0x1 & ( r ) ) >> 0 ) #define REX_PFX_MASK(n) ( ( P_REXW(n) << 3 ) | \ ( P_REXR(n) << 2 ) | \ ( P_REXX(n) << 1 ) | \ ( P_REXB(n) << 0 ) ) /* scable-index-base bits */ #define SIB_S(b) ( ( b ) >> 6 ) #define SIB_I(b) ( ( ( b ) >> 3 ) & 7 ) #define SIB_B(b) ( ( b ) & 7 ) /* modrm bits */ #define MODRM_REG(b) ( ( ( b ) >> 3 ) & 7 ) #define MODRM_NNN(b) ( ( ( b ) >> 3 ) & 7 ) #define MODRM_MOD(b) ( ( ( b ) >> 6 ) & 3 ) #define MODRM_RM(b) ( ( b ) & 7 ) static int decode_ext(struct ud *u, uint16_t ptr); enum reg_class { /* register classes */ REGCLASS_GPR, REGCLASS_MMX, REGCLASS_CR, REGCLASS_DB, REGCLASS_SEG, REGCLASS_XMM }; /* * inp_start * Should be called before each de-code operation. */ static void inp_start(struct ud *u) { u->inp_ctr = 0; } static uint8_t inp_next(struct ud *u) { if (u->inp_end == 0) { if (u->inp_buf != NULL) { if (u->inp_buf_index < u->inp_buf_size) { u->inp_ctr++; return (u->inp_curr = u->inp_buf[u->inp_buf_index++]); } } else { int c; if ((c = u->inp_hook(u)) != UD_EOI) { u->inp_curr = c; u->inp_sess[u->inp_ctr++] = u->inp_curr; return u->inp_curr; } } } u->inp_end = 1; UDERR(u, "byte expected, eoi received\n"); return 0; } static uint8_t inp_curr(struct ud *u) { return u->inp_curr; } /* * inp_uint8 * int_uint16 * int_uint32 * int_uint64 * Load little-endian values from input */ static uint8_t inp_uint8(struct ud* u) { return inp_next(u); } static uint16_t inp_uint16(struct ud* u) { uint16_t r, ret; ret = inp_next(u); r = inp_next(u); return ret | (r << 8); } static uint32_t inp_uint32(struct ud* u) { uint32_t r, ret; ret = inp_next(u); r = inp_next(u); ret = ret | (r << 8); r = inp_next(u); ret = ret | (r << 16); r = inp_next(u); return ret | (r << 24); } static uint64_t inp_uint64(struct ud* u) { uint64_t r, ret; ret = inp_next(u); r = inp_next(u); ret = ret | (r << 8); r = inp_next(u); ret = ret | (r << 16); r = inp_next(u); ret = ret | (r << 24); r = inp_next(u); ret = ret | (r << 32); r = inp_next(u); ret = ret | (r << 40); r = inp_next(u); ret = ret | (r << 48); r = inp_next(u); return ret | (r << 56); } static inline int eff_opr_mode(int dis_mode, int rex_w, int pfx_opr) { if (dis_mode == 64) { return rex_w ? 64 : (pfx_opr ? 16 : 32); } else if (dis_mode == 32) { return pfx_opr ? 16 : 32; } else { UD_ASSERT(dis_mode == 16); return pfx_opr ? 32 : 16; } } static inline int eff_adr_mode(int dis_mode, int pfx_adr) { if (dis_mode == 64) { return pfx_adr ? 32 : 64; } else if (dis_mode == 32) { return pfx_adr ? 16 : 32; } else { UD_ASSERT(dis_mode == 16); return pfx_adr ? 32 : 16; } } /* * decode_prefixes * * Extracts instruction prefixes. */ static int decode_prefixes(struct ud *u) { int done = 0; uint8_t curr = 0, last = 0; UD_RETURN_ON_ERROR(u); do { last = curr; curr = inp_next(u); UD_RETURN_ON_ERROR(u); if (u->inp_ctr == MAX_INSN_LENGTH) { UD_RETURN_WITH_ERROR(u, "max instruction length"); } switch (curr) { case 0x2E: u->pfx_seg = UD_R_CS; break; case 0x36: u->pfx_seg = UD_R_SS; break; case 0x3E: u->pfx_seg = UD_R_DS; break; case 0x26: u->pfx_seg = UD_R_ES; break; case 0x64: u->pfx_seg = UD_R_FS; break; case 0x65: u->pfx_seg = UD_R_GS; break; case 0x67: /* adress-size override prefix */ u->pfx_adr = 0x67; break; case 0xF0: u->pfx_lock = 0xF0; break; case 0x66: u->pfx_opr = 0x66; break; case 0xF2: u->pfx_str = 0xf2; break; case 0xF3: u->pfx_str = 0xf3; break; default: /* consume if rex */ done = (u->dis_mode == 64 && (curr & 0xF0) == 0x40) ? 0 : 1; break; } } while (!done); /* rex prefixes in 64bit mode, must be the last prefix */ if (u->dis_mode == 64 && (last & 0xF0) == 0x40) { u->pfx_rex = last; } return 0; } static inline unsigned int modrm( struct ud * u ) { if ( !u->have_modrm ) { u->modrm = inp_next( u ); u->have_modrm = 1; } return u->modrm; } static unsigned int resolve_operand_size( const struct ud * u, unsigned int s ) { switch ( s ) { case SZ_V: return ( u->opr_mode ); case SZ_Z: return ( u->opr_mode == 16 ) ? 16 : 32; case SZ_Y: return ( u->opr_mode == 16 ) ? 32 : u->opr_mode; case SZ_RDQ: return ( u->dis_mode == 64 ) ? 64 : 32; default: return s; } } static int resolve_mnemonic( struct ud* u ) { /* resolve 3dnow weirdness. */ if ( u->mnemonic == UD_I3dnow ) { u->mnemonic = ud_itab[ u->le->table[ inp_curr( u ) ] ].mnemonic; } /* SWAPGS is only valid in 64bits mode */ if ( u->mnemonic == UD_Iswapgs && u->dis_mode != 64 ) { UDERR(u, "swapgs invalid in 64bits mode\n"); return -1; } if (u->mnemonic == UD_Ixchg) { if ((u->operand[0].type == UD_OP_REG && u->operand[0].base == UD_R_AX && u->operand[1].type == UD_OP_REG && u->operand[1].base == UD_R_AX) || (u->operand[0].type == UD_OP_REG && u->operand[0].base == UD_R_EAX && u->operand[1].type == UD_OP_REG && u->operand[1].base == UD_R_EAX)) { u->operand[0].type = UD_NONE; u->operand[1].type = UD_NONE; u->mnemonic = UD_Inop; } } if (u->mnemonic == UD_Inop && u->pfx_repe) { u->pfx_repe = 0; u->mnemonic = UD_Ipause; } return 0; } /* ----------------------------------------------------------------------------- * decode_a()- Decodes operands of the type seg:offset * ----------------------------------------------------------------------------- */ static void decode_a(struct ud* u, struct ud_operand *op) { if (u->opr_mode == 16) { /* seg16:off16 */ op->type = UD_OP_PTR; op->size = 32; op->lval.ptr.off = inp_uint16(u); op->lval.ptr.seg = inp_uint16(u); } else { /* seg16:off32 */ op->type = UD_OP_PTR; op->size = 48; op->lval.ptr.off = inp_uint32(u); op->lval.ptr.seg = inp_uint16(u); } } /* ----------------------------------------------------------------------------- * decode_gpr() - Returns decoded General Purpose Register * ----------------------------------------------------------------------------- */ static enum ud_type decode_gpr(register struct ud* u, unsigned int s, unsigned char rm) { switch (s) { case 64: return UD_R_RAX + rm; case 32: return UD_R_EAX + rm; case 16: return UD_R_AX + rm; case 8: if (u->dis_mode == 64 && u->pfx_rex) { if (rm >= 4) return UD_R_SPL + (rm-4); return UD_R_AL + rm; } else return UD_R_AL + rm; case 0: /* invalid size in case of a decode error */ UD_ASSERT(u->error); return UD_NONE; default: UD_ASSERT(!"invalid operand size"); return UD_NONE; } } static void decode_reg(struct ud *u, struct ud_operand *opr, int type, int num, int size) { int reg; size = resolve_operand_size(u, size); switch (type) { case REGCLASS_GPR : reg = decode_gpr(u, size, num); break; case REGCLASS_MMX : reg = UD_R_MM0 + (num & 7); break; case REGCLASS_XMM : reg = UD_R_XMM0 + num; break; case REGCLASS_CR : reg = UD_R_CR0 + num; break; case REGCLASS_DB : reg = UD_R_DR0 + num; break; case REGCLASS_SEG : { /* * Only 6 segment registers, anything else is an error. */ if ((num & 7) > 5) { UDERR(u, "invalid segment register value\n"); return; } else { reg = UD_R_ES + (num & 7); } break; } default: UD_ASSERT(!"invalid register type"); return; } opr->type = UD_OP_REG; opr->base = reg; opr->size = size; } /* * decode_imm * * Decode Immediate values. */ static void decode_imm(struct ud* u, unsigned int size, struct ud_operand *op) { op->size = resolve_operand_size(u, size); op->type = UD_OP_IMM; switch (op->size) { case 8: op->lval.sbyte = inp_uint8(u); break; case 16: op->lval.uword = inp_uint16(u); break; case 32: op->lval.udword = inp_uint32(u); break; case 64: op->lval.uqword = inp_uint64(u); break; default: return; } } /* * decode_mem_disp * * Decode mem address displacement. */ static void decode_mem_disp(struct ud* u, unsigned int size, struct ud_operand *op) { switch (size) { case 8: op->offset = 8; op->lval.ubyte = inp_uint8(u); break; case 16: op->offset = 16; op->lval.uword = inp_uint16(u); break; case 32: op->offset = 32; op->lval.udword = inp_uint32(u); break; case 64: op->offset = 64; op->lval.uqword = inp_uint64(u); break; default: return; } } /* * decode_modrm_reg * * Decodes reg field of mod/rm byte * */ static inline void decode_modrm_reg(struct ud *u, struct ud_operand *operand, unsigned int type, unsigned int size) { uint8_t reg = (REX_R(u->pfx_rex) << 3) | MODRM_REG(modrm(u)); decode_reg(u, operand, type, reg, size); } /* * decode_modrm_rm * * Decodes rm field of mod/rm byte * */ static void decode_modrm_rm(struct ud *u, struct ud_operand *op, unsigned char type, /* register type */ unsigned int size) /* operand size */ { size_t offset = 0; unsigned char mod, rm; /* get mod, r/m and reg fields */ mod = MODRM_MOD(modrm(u)); rm = (REX_B(u->pfx_rex) << 3) | MODRM_RM(modrm(u)); /* * If mod is 11b, then the modrm.rm specifies a register. * */ if (mod == 3) { decode_reg(u, op, type, rm, size); return; } /* * !11b => Memory Address */ op->type = UD_OP_MEM; op->size = resolve_operand_size(u, size); if (u->adr_mode == 64) { op->base = UD_R_RAX + rm; if (mod == 1) { offset = 8; } else if (mod == 2) { offset = 32; } else if (mod == 0 && (rm & 7) == 5) { op->base = UD_R_RIP; offset = 32; } else { offset = 0; } /* * Scale-Index-Base (SIB) */ if ((rm & 7) == 4) { inp_next(u); op->scale = (1 << SIB_S(inp_curr(u))) & ~1; op->index = UD_R_RAX + (SIB_I(inp_curr(u)) | (REX_X(u->pfx_rex) << 3)); op->base = UD_R_RAX + (SIB_B(inp_curr(u)) | (REX_B(u->pfx_rex) << 3)); /* special conditions for base reference */ if (op->index == UD_R_RSP) { op->index = UD_NONE; op->scale = UD_NONE; } if (op->base == UD_R_RBP || op->base == UD_R_R13) { if (mod == 0) { op->base = UD_NONE; } if (mod == 1) { offset = 8; } else { offset = 32; } } } } else if (u->adr_mode == 32) { op->base = UD_R_EAX + rm; if (mod == 1) { offset = 8; } else if (mod == 2) { offset = 32; } else if (mod == 0 && rm == 5) { op->base = UD_NONE; offset = 32; } else { offset = 0; } /* Scale-Index-Base (SIB) */ if ((rm & 7) == 4) { inp_next(u); op->scale = (1 << SIB_S(inp_curr(u))) & ~1; op->index = UD_R_EAX + (SIB_I(inp_curr(u)) | (REX_X(u->pfx_rex) << 3)); op->base = UD_R_EAX + (SIB_B(inp_curr(u)) | (REX_B(u->pfx_rex) << 3)); if (op->index == UD_R_ESP) { op->index = UD_NONE; op->scale = UD_NONE; } /* special condition for base reference */ if (op->base == UD_R_EBP) { if (mod == 0) { op->base = UD_NONE; } if (mod == 1) { offset = 8; } else { offset = 32; } } } } else { const unsigned int bases[] = { UD_R_BX, UD_R_BX, UD_R_BP, UD_R_BP, UD_R_SI, UD_R_DI, UD_R_BP, UD_R_BX }; const unsigned int indices[] = { UD_R_SI, UD_R_DI, UD_R_SI, UD_R_DI, UD_NONE, UD_NONE, UD_NONE, UD_NONE }; op->base = bases[rm & 7]; op->index = indices[rm & 7]; if (mod == 0 && rm == 6) { offset = 16; op->base = UD_NONE; } else if (mod == 1) { offset = 8; } else if (mod == 2) { offset = 16; } } if (offset) { decode_mem_disp(u, offset, op); } } /* * decode_moffset * Decode offset-only memory operand */ static void decode_moffset(struct ud *u, unsigned int size, struct ud_operand *opr) { opr->type = UD_OP_MEM; opr->size = resolve_operand_size(u, size); decode_mem_disp(u, u->adr_mode, opr); } /* ----------------------------------------------------------------------------- * decode_operands() - Disassembles Operands. * ----------------------------------------------------------------------------- */ static int decode_operand(struct ud *u, struct ud_operand *operand, enum ud_operand_code type, unsigned int size) { operand->_oprcode = type; switch (type) { case OP_A : decode_a(u, operand); break; case OP_MR: decode_modrm_rm(u, operand, REGCLASS_GPR, MODRM_MOD(modrm(u)) == 3 ? Mx_reg_size(size) : Mx_mem_size(size)); break; case OP_F: u->br_far = 1; /* intended fall through */ case OP_M: if (MODRM_MOD(modrm(u)) == 3) { UDERR(u, "expected modrm.mod != 3\n"); } /* intended fall through */ case OP_E: decode_modrm_rm(u, operand, REGCLASS_GPR, size); break; case OP_G: decode_modrm_reg(u, operand, REGCLASS_GPR, size); break; case OP_sI: case OP_I: decode_imm(u, size, operand); break; case OP_I1: operand->type = UD_OP_CONST; operand->lval.udword = 1; break; case OP_N: if (MODRM_MOD(modrm(u)) != 3) { UDERR(u, "expected modrm.mod == 3\n"); } /* intended fall through */ case OP_Q: decode_modrm_rm(u, operand, REGCLASS_MMX, size); break; case OP_P: decode_modrm_reg(u, operand, REGCLASS_MMX, size); break; case OP_U: if (MODRM_MOD(modrm(u)) != 3) { UDERR(u, "expected modrm.mod == 3\n"); } /* intended fall through */ case OP_W: decode_modrm_rm(u, operand, REGCLASS_XMM, size); break; case OP_V: decode_modrm_reg(u, operand, REGCLASS_XMM, size); break; case OP_MU: decode_modrm_rm(u, operand, REGCLASS_XMM, MODRM_MOD(modrm(u)) == 3 ? Mx_reg_size(size) : Mx_mem_size(size)); break; case OP_S: decode_modrm_reg(u, operand, REGCLASS_SEG, size); break; case OP_O: decode_moffset(u, size, operand); break; case OP_R0: case OP_R1: case OP_R2: case OP_R3: case OP_R4: case OP_R5: case OP_R6: case OP_R7: decode_reg(u, operand, REGCLASS_GPR, (REX_B(u->pfx_rex) << 3) | (type - OP_R0), size); break; case OP_AL: case OP_AX: case OP_eAX: case OP_rAX: decode_reg(u, operand, REGCLASS_GPR, 0, size); break; case OP_CL: case OP_CX: case OP_eCX: decode_reg(u, operand, REGCLASS_GPR, 1, size); break; case OP_DL: case OP_DX: case OP_eDX: decode_reg(u, operand, REGCLASS_GPR, 2, size); break; case OP_ES: case OP_CS: case OP_DS: case OP_SS: case OP_FS: case OP_GS: /* in 64bits mode, only fs and gs are allowed */ if (u->dis_mode == 64) { if (type != OP_FS && type != OP_GS) { UDERR(u, "invalid segment register in 64bits\n"); } } operand->type = UD_OP_REG; operand->base = (type - OP_ES) + UD_R_ES; operand->size = 16; break; case OP_J : decode_imm(u, size, operand); operand->type = UD_OP_JIMM; break ; case OP_R : if (MODRM_MOD(modrm(u)) != 3) { UDERR(u, "expected modrm.mod == 3\n"); } decode_modrm_rm(u, operand, REGCLASS_GPR, size); break; case OP_C: decode_modrm_reg(u, operand, REGCLASS_CR, size); break; case OP_D: decode_modrm_reg(u, operand, REGCLASS_DB, size); break; case OP_I3 : operand->type = UD_OP_CONST; operand->lval.sbyte = 3; break; case OP_ST0: case OP_ST1: case OP_ST2: case OP_ST3: case OP_ST4: case OP_ST5: case OP_ST6: case OP_ST7: operand->type = UD_OP_REG; operand->base = (type - OP_ST0) + UD_R_ST0; operand->size = 80; break; default : break; } return 0; } /* * decode_operands * * Disassemble upto 3 operands of the current instruction being * disassembled. By the end of the function, the operand fields * of the ud structure will have been filled. */ static int decode_operands(struct ud* u) { decode_operand(u, &u->operand[0], u->itab_entry->operand1.type, u->itab_entry->operand1.size); decode_operand(u, &u->operand[1], u->itab_entry->operand2.type, u->itab_entry->operand2.size); decode_operand(u, &u->operand[2], u->itab_entry->operand3.type, u->itab_entry->operand3.size); return 0; } /* ----------------------------------------------------------------------------- * clear_insn() - clear instruction structure * ----------------------------------------------------------------------------- */ static void clear_insn(register struct ud* u) { u->error = 0; u->pfx_seg = 0; u->pfx_opr = 0; u->pfx_adr = 0; u->pfx_lock = 0; u->pfx_repne = 0; u->pfx_rep = 0; u->pfx_repe = 0; u->pfx_rex = 0; u->pfx_str = 0; u->mnemonic = UD_Inone; u->itab_entry = NULL; u->have_modrm = 0; u->br_far = 0; memset( &u->operand[ 0 ], 0, sizeof( struct ud_operand ) ); memset( &u->operand[ 1 ], 0, sizeof( struct ud_operand ) ); memset( &u->operand[ 2 ], 0, sizeof( struct ud_operand ) ); } static inline int resolve_pfx_str(struct ud* u) { if (u->pfx_str == 0xf3) { if (P_STR(u->itab_entry->prefix)) { u->pfx_rep = 0xf3; } else { u->pfx_repe = 0xf3; } } else if (u->pfx_str == 0xf2) { u->pfx_repne = 0xf3; } return 0; } static int resolve_mode( struct ud* u ) { int default64; /* if in error state, bail out */ if ( u->error ) return -1; /* propagate prefix effects */ if ( u->dis_mode == 64 ) { /* set 64bit-mode flags */ /* Check validity of instruction m64 */ if ( P_INV64( u->itab_entry->prefix ) ) { UDERR(u, "instruction invalid in 64bits\n"); return -1; } /* effective rex prefix is the effective mask for the * instruction hard-coded in the opcode map. */ u->pfx_rex = ( u->pfx_rex & 0x40 ) | ( u->pfx_rex & REX_PFX_MASK( u->itab_entry->prefix ) ); /* whether this instruction has a default operand size of * 64bit, also hardcoded into the opcode map. */ default64 = P_DEF64( u->itab_entry->prefix ); /* calculate effective operand size */ if ( REX_W( u->pfx_rex ) ) { u->opr_mode = 64; } else if ( u->pfx_opr ) { u->opr_mode = 16; } else { /* unless the default opr size of instruction is 64, * the effective operand size in the absence of rex.w * prefix is 32. */ u->opr_mode = default64 ? 64 : 32; } /* calculate effective address size */ u->adr_mode = (u->pfx_adr) ? 32 : 64; } else if ( u->dis_mode == 32 ) { /* set 32bit-mode flags */ u->opr_mode = ( u->pfx_opr ) ? 16 : 32; u->adr_mode = ( u->pfx_adr ) ? 16 : 32; } else if ( u->dis_mode == 16 ) { /* set 16bit-mode flags */ u->opr_mode = ( u->pfx_opr ) ? 32 : 16; u->adr_mode = ( u->pfx_adr ) ? 32 : 16; } return 0; } static inline int decode_insn(struct ud *u, uint16_t ptr) { UD_ASSERT((ptr & 0x8000) == 0); u->itab_entry = &ud_itab[ ptr ]; u->mnemonic = u->itab_entry->mnemonic; return (resolve_pfx_str(u) == 0 && resolve_mode(u) == 0 && decode_operands(u) == 0 && resolve_mnemonic(u) == 0) ? 0 : -1; } /* * decode_3dnow() * * Decoding 3dnow is a little tricky because of its strange opcode * structure. The final opcode disambiguation depends on the last * byte that comes after the operands have been decoded. Fortunately, * all 3dnow instructions have the same set of operand types. So we * go ahead and decode the instruction by picking an arbitrarily chosen * valid entry in the table, decode the operands, and read the final * byte to resolve the menmonic. */ static inline int decode_3dnow(struct ud* u) { uint16_t ptr; UD_ASSERT(u->le->type == UD_TAB__OPC_3DNOW); UD_ASSERT(u->le->table[0xc] != 0); decode_insn(u, u->le->table[0xc]); inp_next(u); if (u->error) { return -1; } ptr = u->le->table[inp_curr(u)]; UD_ASSERT((ptr & 0x8000) == 0); u->mnemonic = ud_itab[ptr].mnemonic; return 0; } static int decode_ssepfx(struct ud *u) { uint8_t idx; uint8_t pfx; /* * String prefixes (f2, f3) take precedence over operand * size prefix (66). */ pfx = u->pfx_str; if (pfx == 0) { pfx = u->pfx_opr; } idx = ((pfx & 0xf) + 1) / 2; if (u->le->table[idx] == 0) { idx = 0; } if (idx && u->le->table[idx] != 0) { /* * "Consume" the prefix as a part of the opcode, so it is no * longer exported as an instruction prefix. */ u->pfx_str = 0; if (pfx == 0x66) { /* * consume "66" only if it was used for decoding, leaving * it to be used as an operands size override for some * simd instructions. */ u->pfx_opr = 0; } } return decode_ext(u, u->le->table[idx]); } /* * decode_ext() * * Decode opcode extensions (if any) */ static int decode_ext(struct ud *u, uint16_t ptr) { uint8_t idx = 0; if ((ptr & 0x8000) == 0) { return decode_insn(u, ptr); } u->le = &ud_lookup_table_list[(~0x8000 & ptr)]; if (u->le->type == UD_TAB__OPC_3DNOW) { return decode_3dnow(u); } switch (u->le->type) { case UD_TAB__OPC_MOD: /* !11 = 0, 11 = 1 */ idx = (MODRM_MOD(modrm(u)) + 1) / 4; break; /* disassembly mode/operand size/address size based tables. * 16 = 0,, 32 = 1, 64 = 2 */ case UD_TAB__OPC_MODE: idx = u->dis_mode != 64 ? 0 : 1; break; case UD_TAB__OPC_OSIZE: idx = eff_opr_mode(u->dis_mode, REX_W(u->pfx_rex), u->pfx_opr) / 32; break; case UD_TAB__OPC_ASIZE: idx = eff_adr_mode(u->dis_mode, u->pfx_adr) / 32; break; case UD_TAB__OPC_X87: idx = modrm(u) - 0xC0; break; case UD_TAB__OPC_VENDOR: if (u->vendor == UD_VENDOR_ANY) { /* choose a valid entry */ idx = (u->le->table[idx] != 0) ? 0 : 1; } else if (u->vendor == UD_VENDOR_AMD) { idx = 0; } else { idx = 1; } break; case UD_TAB__OPC_RM: idx = MODRM_RM(modrm(u)); break; case UD_TAB__OPC_REG: idx = MODRM_REG(modrm(u)); break; case UD_TAB__OPC_SSE: return decode_ssepfx(u); default: UD_ASSERT(!"not reached"); break; } return decode_ext(u, u->le->table[idx]); } static int decode_opcode(struct ud *u) { uint16_t ptr; UD_ASSERT(u->le->type == UD_TAB__OPC_TABLE); UD_RETURN_ON_ERROR(u); u->primary_opcode = inp_curr(u); ptr = u->le->table[inp_curr(u)]; if (ptr & 0x8000) { u->le = &ud_lookup_table_list[ptr & ~0x8000]; if (u->le->type == UD_TAB__OPC_TABLE) { inp_next(u); return decode_opcode(u); } } return decode_ext(u, ptr); } /* ============================================================================= * ud_decode() - Instruction decoder. Returns the number of bytes decoded. * ============================================================================= */ unsigned int ud_decode(struct ud *u) { inp_start(u); clear_insn(u); u->le = &ud_lookup_table_list[0]; u->error = decode_prefixes(u) == -1 || decode_opcode(u) == -1 || u->error; /* Handle decode error. */ if (u->error) { /* clear out the decode data. */ clear_insn(u); /* mark the sequence of bytes as invalid. */ u->itab_entry = &ud_itab[0]; /* entry 0 is invalid */ u->mnemonic = u->itab_entry->mnemonic; } /* maybe this stray segment override byte * should be spewed out? */ if ( !P_SEG( u->itab_entry->prefix ) && u->operand[0].type != UD_OP_MEM && u->operand[1].type != UD_OP_MEM ) u->pfx_seg = 0; u->insn_offset = u->pc; /* set offset of instruction */ u->asm_buf_fill = 0; /* set translation buffer index to 0 */ u->pc += u->inp_ctr; /* move program counter by bytes decoded */ /* return number of bytes disassembled. */ return u->inp_ctr; } /* vim: set ts=2 sw=2 expandtab */ pev/lib/libudis86/libudis86/decode.h0000644000175000017500000001243313034014706016153 0ustar useruser/* udis86 - libudis86/decode.h * * Copyright (c) 2002-2009 Vivek Thampi * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef UD_DECODE_H #define UD_DECODE_H #include "types.h" #include "itab.h" #define MAX_INSN_LENGTH 15 /* itab prefix bits */ #define P_none ( 0 ) #define P_cast ( 1 << 0 ) #define P_CAST(n) ( ( n >> 0 ) & 1 ) #define P_rexb ( 1 << 1 ) #define P_REXB(n) ( ( n >> 1 ) & 1 ) #define P_inv64 ( 1 << 4 ) #define P_INV64(n) ( ( n >> 4 ) & 1 ) #define P_rexw ( 1 << 5 ) #define P_REXW(n) ( ( n >> 5 ) & 1 ) #define P_def64 ( 1 << 7 ) #define P_DEF64(n) ( ( n >> 7 ) & 1 ) #define P_rexr ( 1 << 8 ) #define P_REXR(n) ( ( n >> 8 ) & 1 ) #define P_oso ( 1 << 9 ) #define P_OSO(n) ( ( n >> 9 ) & 1 ) #define P_aso ( 1 << 10 ) #define P_ASO(n) ( ( n >> 10 ) & 1 ) #define P_rexx ( 1 << 11 ) #define P_REXX(n) ( ( n >> 11 ) & 1 ) #define P_ImpAddr ( 1 << 12 ) #define P_IMPADDR(n) ( ( n >> 12 ) & 1 ) #define P_seg ( 1 << 13 ) #define P_SEG(n) ( ( n >> 13 ) & 1 ) #define P_str ( 1 << 14 ) #define P_STR(n) ( ( n >> 14 ) & 1 ) #define P_strz ( 1 << 15 ) #define P_STR_ZF(n) ( ( n >> 15 ) & 1 ) /* operand type constants -- order is important! */ enum ud_operand_code { OP_NONE, OP_A, OP_E, OP_M, OP_G, OP_I, OP_F, OP_R0, OP_R1, OP_R2, OP_R3, OP_R4, OP_R5, OP_R6, OP_R7, OP_AL, OP_CL, OP_DL, OP_AX, OP_CX, OP_DX, OP_eAX, OP_eCX, OP_eDX, OP_rAX, OP_rCX, OP_rDX, OP_ES, OP_CS, OP_SS, OP_DS, OP_FS, OP_GS, OP_ST0, OP_ST1, OP_ST2, OP_ST3, OP_ST4, OP_ST5, OP_ST6, OP_ST7, OP_J, OP_S, OP_O, OP_I1, OP_I3, OP_sI, OP_V, OP_W, OP_Q, OP_P, OP_U, OP_N, OP_MU, OP_R, OP_C, OP_D, OP_MR } UD_ATTR_PACKED; /* operand size constants */ enum ud_operand_size { SZ_NA = 0, SZ_Z = 1, SZ_V = 2, SZ_RDQ = 7, /* the following values are used as is, * and thus hard-coded. changing them * will break internals */ SZ_B = 8, SZ_W = 16, SZ_D = 32, SZ_Q = 64, SZ_T = 80, SZ_O = 128, SZ_Y = 17, /* * complex size types, that encode sizes for operands * of type MR (memory or register), for internal use * only. Id space 256 and above. */ SZ_BD = (SZ_B << 8) | SZ_D, SZ_BV = (SZ_B << 8) | SZ_V, SZ_WD = (SZ_W << 8) | SZ_D, SZ_WV = (SZ_W << 8) | SZ_V, SZ_WY = (SZ_W << 8) | SZ_Y, SZ_DY = (SZ_D << 8) | SZ_Y, SZ_WO = (SZ_W << 8) | SZ_O, SZ_DO = (SZ_D << 8) | SZ_O, SZ_QO = (SZ_Q << 8) | SZ_O, } UD_ATTR_PACKED; /* resolve complex size type. */ static inline enum ud_operand_size Mx_mem_size(enum ud_operand_size size) { return (size >> 8) & 0xff; } static inline enum ud_operand_size Mx_reg_size(enum ud_operand_size size) { return size & 0xff; } /* A single operand of an entry in the instruction table. * (internal use only) */ struct ud_itab_entry_operand { enum ud_operand_code type; enum ud_operand_size size; }; /* A single entry in an instruction table. *(internal use only) */ struct ud_itab_entry { enum ud_mnemonic_code mnemonic; struct ud_itab_entry_operand operand1; struct ud_itab_entry_operand operand2; struct ud_itab_entry_operand operand3; uint32_t prefix; }; struct ud_lookup_table_list_entry { const uint16_t *table; enum ud_table_type type; const char *meta; }; static inline int ud_opcode_field_sext(uint8_t primary_opcode) { return (primary_opcode & 0x02) != 0; } extern struct ud_itab_entry ud_itab[]; extern struct ud_lookup_table_list_entry ud_lookup_table_list[]; #endif /* UD_DECODE_H */ /* vim:cindent * vim:expandtab * vim:ts=4 * vim:sw=4 */ pev/lib/libudis86/libudis86/extern.h0000644000175000017500000000705113034014706016235 0ustar useruser/* udis86 - libudis86/extern.h * * Copyright (c) 2002-2009, 2013 Vivek Thampi * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef UD_EXTERN_H #define UD_EXTERN_H #ifdef __cplusplus extern "C" { #endif #include "types.h" /* ============================= PUBLIC API ================================= */ extern void ud_init(struct ud*); extern void ud_set_mode(struct ud*, uint8_t); extern void ud_set_pc(struct ud*, uint64_t); extern void ud_set_input_hook(struct ud*, int (*)(struct ud*)); extern void ud_set_input_buffer(struct ud*, const uint8_t*, size_t); #ifndef __UD_STANDALONE__ extern void ud_set_input_file(struct ud*, FILE*); #endif /* __UD_STANDALONE__ */ extern void ud_set_vendor(struct ud*, unsigned); extern void ud_set_syntax(struct ud*, void (*)(struct ud*)); extern void ud_input_skip(struct ud*, size_t); extern int ud_input_end(const struct ud*); extern unsigned int ud_decode(struct ud*); extern unsigned int ud_disassemble(struct ud*); extern void ud_translate_intel(struct ud*); extern void ud_translate_att(struct ud*); extern const char* ud_insn_asm(const struct ud* u); extern const uint8_t* ud_insn_ptr(const struct ud* u); extern uint64_t ud_insn_off(const struct ud*); extern const char* ud_insn_hex(struct ud*); extern unsigned int ud_insn_len(const struct ud* u); extern const struct ud_operand* ud_insn_opr(const struct ud *u, unsigned int n); extern int ud_opr_is_sreg(const struct ud_operand *opr); extern int ud_opr_is_gpr(const struct ud_operand *opr); extern enum ud_mnemonic_code ud_insn_mnemonic(const struct ud *u); extern const char* ud_lookup_mnemonic(enum ud_mnemonic_code c); extern void ud_set_user_opaque_data(struct ud*, void*); extern void* ud_get_user_opaque_data(const struct ud*); extern uint64_t ud_insn_sext_imm(const struct ud*, const struct ud_operand*); extern void ud_set_asm_buffer(struct ud *u, char *buf, size_t size); extern void ud_set_sym_resolver(struct ud *u, const char* (*resolver)(struct ud*, uint64_t addr, int64_t *offset)); /* ========================================================================== */ #ifdef __cplusplus } #endif #endif /* UD_EXTERN_H */ pev/lib/libudis86/libudis86/syn-intel.c0000644000175000017500000001433413034014706016647 0ustar useruser/* udis86 - libudis86/syn-intel.c * * Copyright (c) 2002-2013 Vivek Thampi * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "types.h" #include "extern.h" #include "decode.h" #include "itab.h" #include "syn.h" #include "udint.h" /* ----------------------------------------------------------------------------- * opr_cast() - Prints an operand cast. * ----------------------------------------------------------------------------- */ static void opr_cast(struct ud* u, struct ud_operand* op) { if (u->br_far) { ud_asmprintf(u, "far "); } switch(op->size) { case 8: ud_asmprintf(u, "byte " ); break; case 16: ud_asmprintf(u, "word " ); break; case 32: ud_asmprintf(u, "dword "); break; case 64: ud_asmprintf(u, "qword "); break; case 80: ud_asmprintf(u, "tword "); break; default: break; } } /* ----------------------------------------------------------------------------- * gen_operand() - Generates assembly output for each operand. * ----------------------------------------------------------------------------- */ static void gen_operand(struct ud* u, struct ud_operand* op, int syn_cast) { switch(op->type) { case UD_OP_REG: ud_asmprintf(u, "%s", ud_reg_tab[op->base - UD_R_AL]); break; case UD_OP_MEM: if (syn_cast) { opr_cast(u, op); } ud_asmprintf(u, "["); if (u->pfx_seg) { ud_asmprintf(u, "%s:", ud_reg_tab[u->pfx_seg - UD_R_AL]); } if (op->base) { ud_asmprintf(u, "%s", ud_reg_tab[op->base - UD_R_AL]); } if (op->index) { ud_asmprintf(u, "%s%s", op->base != UD_NONE? "+" : "", ud_reg_tab[op->index - UD_R_AL]); if (op->scale) { ud_asmprintf(u, "*%d", op->scale); } } if (op->offset != 0) { ud_syn_print_mem_disp(u, op, (op->base != UD_NONE || op->index != UD_NONE) ? 1 : 0); } ud_asmprintf(u, "]"); break; case UD_OP_IMM: ud_syn_print_imm(u, op); break; case UD_OP_JIMM: ud_syn_print_addr(u, ud_syn_rel_target(u, op)); break; case UD_OP_PTR: switch (op->size) { case 32: ud_asmprintf(u, "word 0x%x:0x%x", op->lval.ptr.seg, op->lval.ptr.off & 0xFFFF); break; case 48: ud_asmprintf(u, "dword 0x%x:0x%x", op->lval.ptr.seg, op->lval.ptr.off); break; } break; case UD_OP_CONST: if (syn_cast) opr_cast(u, op); ud_asmprintf(u, "%d", op->lval.udword); break; default: return; } } /* ============================================================================= * translates to intel syntax * ============================================================================= */ extern void ud_translate_intel(struct ud* u) { /* check if P_OSO prefix is used */ if (!P_OSO(u->itab_entry->prefix) && u->pfx_opr) { switch (u->dis_mode) { case 16: ud_asmprintf(u, "o32 "); break; case 32: case 64: ud_asmprintf(u, "o16 "); break; } } /* check if P_ASO prefix was used */ if (!P_ASO(u->itab_entry->prefix) && u->pfx_adr) { switch (u->dis_mode) { case 16: ud_asmprintf(u, "a32 "); break; case 32: ud_asmprintf(u, "a16 "); break; case 64: ud_asmprintf(u, "a32 "); break; } } if (u->pfx_seg && u->operand[0].type != UD_OP_MEM && u->operand[1].type != UD_OP_MEM ) { ud_asmprintf(u, "%s ", ud_reg_tab[u->pfx_seg - UD_R_AL]); } if (u->pfx_lock) { ud_asmprintf(u, "lock "); } if (u->pfx_rep) { ud_asmprintf(u, "rep "); } else if (u->pfx_repe) { ud_asmprintf(u, "repe "); } else if (u->pfx_repne) { ud_asmprintf(u, "repne "); } /* print the instruction mnemonic */ ud_asmprintf(u, "%s", ud_lookup_mnemonic(u->mnemonic)); if (u->operand[0].type != UD_NONE) { int cast = 0; ud_asmprintf(u, " "); if (u->operand[0].type == UD_OP_MEM) { if (u->operand[1].type == UD_OP_IMM || u->operand[1].type == UD_OP_CONST || u->operand[1].type == UD_NONE || (u->operand[0].size != u->operand[1].size && u->operand[1].type != UD_OP_REG)) { cast = 1; } else if (u->operand[1].type == UD_OP_REG && u->operand[1].base == UD_R_CL) { switch (u->mnemonic) { case UD_Ircl: case UD_Irol: case UD_Iror: case UD_Ircr: case UD_Ishl: case UD_Ishr: case UD_Isar: cast = 1; break; default: break; } } } gen_operand(u, &u->operand[0], cast); } if (u->operand[1].type != UD_NONE) { int cast = 0; ud_asmprintf(u, ", "); if (u->operand[1].type == UD_OP_MEM && u->operand[0].size != u->operand[1].size && !ud_opr_is_sreg(&u->operand[0])) { cast = 1; } gen_operand(u, &u->operand[1], cast); } if (u->operand[2].type != UD_NONE) { ud_asmprintf(u, ", "); gen_operand(u, &u->operand[2], 0); } } /* vim: set ts=2 sw=2 expandtab */ pev/lib/libudis86/libudis86/syn.h0000644000175000017500000000404513034014706015541 0ustar useruser/* udis86 - libudis86/syn.h * * Copyright (c) 2002-2009 * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef UD_SYN_H #define UD_SYN_H #include "types.h" #ifndef __UD_STANDALONE__ # include #endif /* __UD_STANDALONE__ */ extern const char* ud_reg_tab[]; uint64_t ud_syn_rel_target(struct ud*, struct ud_operand*); #ifdef __GNUC__ int ud_asmprintf(struct ud *u, const char *fmt, ...) __attribute__ ((format (printf, 2, 3))); #else int ud_asmprintf(struct ud *u, const char *fmt, ...); #endif void ud_syn_print_addr(struct ud *u, uint64_t addr); void ud_syn_print_imm(struct ud* u, const struct ud_operand *op); void ud_syn_print_mem_disp(struct ud* u, const struct ud_operand *, int sign); #endif /* UD_SYN_H */ /* vim: set ts=2 sw=2 expandtab */ pev/lib/libudis86/libudis86/itab.h0000644000175000017500000002476213034014706015657 0ustar useruser#ifndef UD_ITAB_H #define UD_ITAB_H /* itab.h -- generated by udis86:scripts/ud_itab.py, do no edit */ /* ud_table_type -- lookup table types (see decode.c) */ enum ud_table_type { UD_TAB__OPC_TABLE, UD_TAB__OPC_X87, UD_TAB__OPC_MOD, UD_TAB__OPC_VEX_M, UD_TAB__OPC_VEX_P, UD_TAB__OPC_RM, UD_TAB__OPC_VENDOR, UD_TAB__OPC_OSIZE, UD_TAB__OPC_MODE, UD_TAB__OPC_3DNOW, UD_TAB__OPC_REG, UD_TAB__OPC_ASIZE, UD_TAB__OPC_SSE }; /* ud_mnemonic -- mnemonic constants */ enum ud_mnemonic_code { UD_Iinvalid, UD_I3dnow, UD_Inone, UD_Idb, UD_Ipause, UD_Iaaa, UD_Iaad, UD_Iaam, UD_Iaas, UD_Iadc, UD_Iadd, UD_Iaddpd, UD_Iaddps, UD_Iaddsd, UD_Iaddss, UD_Iand, UD_Iandpd, UD_Iandps, UD_Iandnpd, UD_Iandnps, UD_Iarpl, UD_Imovsxd, UD_Ibound, UD_Ibsf, UD_Ibsr, UD_Ibswap, UD_Ibt, UD_Ibtc, UD_Ibtr, UD_Ibts, UD_Icall, UD_Icbw, UD_Icwde, UD_Icdqe, UD_Iclc, UD_Icld, UD_Iclflush, UD_Iclgi, UD_Icli, UD_Iclts, UD_Icmc, UD_Icmovo, UD_Icmovno, UD_Icmovb, UD_Icmovae, UD_Icmovz, UD_Icmovnz, UD_Icmovbe, UD_Icmova, UD_Icmovs, UD_Icmovns, UD_Icmovp, UD_Icmovnp, UD_Icmovl, UD_Icmovge, UD_Icmovle, UD_Icmovg, UD_Icmp, UD_Icmppd, UD_Icmpps, UD_Icmpsb, UD_Icmpsw, UD_Icmpsd, UD_Icmpsq, UD_Icmpss, UD_Icmpxchg, UD_Icmpxchg8b, UD_Icmpxchg16b, UD_Icomisd, UD_Icomiss, UD_Icpuid, UD_Icvtdq2pd, UD_Icvtdq2ps, UD_Icvtpd2dq, UD_Icvtpd2pi, UD_Icvtpd2ps, UD_Icvtpi2ps, UD_Icvtpi2pd, UD_Icvtps2dq, UD_Icvtps2pi, UD_Icvtps2pd, UD_Icvtsd2si, UD_Icvtsd2ss, UD_Icvtsi2ss, UD_Icvtss2si, UD_Icvtss2sd, UD_Icvttpd2pi, UD_Icvttpd2dq, UD_Icvttps2dq, UD_Icvttps2pi, UD_Icvttsd2si, UD_Icvtsi2sd, UD_Icvttss2si, UD_Icwd, UD_Icdq, UD_Icqo, UD_Idaa, UD_Idas, UD_Idec, UD_Idiv, UD_Idivpd, UD_Idivps, UD_Idivsd, UD_Idivss, UD_Iemms, UD_Ienter, UD_If2xm1, UD_Ifabs, UD_Ifadd, UD_Ifaddp, UD_Ifbld, UD_Ifbstp, UD_Ifchs, UD_Ifclex, UD_Ifcmovb, UD_Ifcmove, UD_Ifcmovbe, UD_Ifcmovu, UD_Ifcmovnb, UD_Ifcmovne, UD_Ifcmovnbe, UD_Ifcmovnu, UD_Ifucomi, UD_Ifcom, UD_Ifcom2, UD_Ifcomp3, UD_Ifcomi, UD_Ifucomip, UD_Ifcomip, UD_Ifcomp, UD_Ifcomp5, UD_Ifcompp, UD_Ifcos, UD_Ifdecstp, UD_Ifdiv, UD_Ifdivp, UD_Ifdivr, UD_Ifdivrp, UD_Ifemms, UD_Iffree, UD_Iffreep, UD_Ificom, UD_Ificomp, UD_Ifild, UD_Ifincstp, UD_Ifninit, UD_Ifiadd, UD_Ifidivr, UD_Ifidiv, UD_Ifisub, UD_Ifisubr, UD_Ifist, UD_Ifistp, UD_Ifisttp, UD_Ifld, UD_Ifld1, UD_Ifldl2t, UD_Ifldl2e, UD_Ifldpi, UD_Ifldlg2, UD_Ifldln2, UD_Ifldz, UD_Ifldcw, UD_Ifldenv, UD_Ifmul, UD_Ifmulp, UD_Ifimul, UD_Ifnop, UD_Ifpatan, UD_Ifprem, UD_Ifprem1, UD_Ifptan, UD_Ifrndint, UD_Ifrstor, UD_Ifnsave, UD_Ifscale, UD_Ifsin, UD_Ifsincos, UD_Ifsqrt, UD_Ifstp, UD_Ifstp1, UD_Ifstp8, UD_Ifstp9, UD_Ifst, UD_Ifnstcw, UD_Ifnstenv, UD_Ifnstsw, UD_Ifsub, UD_Ifsubp, UD_Ifsubr, UD_Ifsubrp, UD_Iftst, UD_Ifucom, UD_Ifucomp, UD_Ifucompp, UD_Ifxam, UD_Ifxch, UD_Ifxch4, UD_Ifxch7, UD_Ifxrstor, UD_Ifxsave, UD_Ifxtract, UD_Ifyl2x, UD_Ifyl2xp1, UD_Ihlt, UD_Iidiv, UD_Iin, UD_Iimul, UD_Iinc, UD_Iinsb, UD_Iinsw, UD_Iinsd, UD_Iint1, UD_Iint3, UD_Iint, UD_Iinto, UD_Iinvd, UD_Iinvept, UD_Iinvlpg, UD_Iinvlpga, UD_Iinvvpid, UD_Iiretw, UD_Iiretd, UD_Iiretq, UD_Ijo, UD_Ijno, UD_Ijb, UD_Ijae, UD_Ijz, UD_Ijnz, UD_Ijbe, UD_Ija, UD_Ijs, UD_Ijns, UD_Ijp, UD_Ijnp, UD_Ijl, UD_Ijge, UD_Ijle, UD_Ijg, UD_Ijcxz, UD_Ijecxz, UD_Ijrcxz, UD_Ijmp, UD_Ilahf, UD_Ilar, UD_Ilddqu, UD_Ildmxcsr, UD_Ilds, UD_Ilea, UD_Iles, UD_Ilfs, UD_Ilgs, UD_Ilidt, UD_Ilss, UD_Ileave, UD_Ilfence, UD_Ilgdt, UD_Illdt, UD_Ilmsw, UD_Ilock, UD_Ilodsb, UD_Ilodsw, UD_Ilodsd, UD_Ilodsq, UD_Iloopne, UD_Iloope, UD_Iloop, UD_Ilsl, UD_Iltr, UD_Imaskmovq, UD_Imaxpd, UD_Imaxps, UD_Imaxsd, UD_Imaxss, UD_Imfence, UD_Iminpd, UD_Iminps, UD_Iminsd, UD_Iminss, UD_Imonitor, UD_Imontmul, UD_Imov, UD_Imovapd, UD_Imovaps, UD_Imovd, UD_Imovhpd, UD_Imovhps, UD_Imovlhps, UD_Imovlpd, UD_Imovlps, UD_Imovhlps, UD_Imovmskpd, UD_Imovmskps, UD_Imovntdq, UD_Imovnti, UD_Imovntpd, UD_Imovntps, UD_Imovntq, UD_Imovq, UD_Imovsb, UD_Imovsw, UD_Imovsd, UD_Imovsq, UD_Imovss, UD_Imovsx, UD_Imovupd, UD_Imovups, UD_Imovzx, UD_Imul, UD_Imulpd, UD_Imulps, UD_Imulsd, UD_Imulss, UD_Imwait, UD_Ineg, UD_Inop, UD_Inot, UD_Ior, UD_Iorpd, UD_Iorps, UD_Iout, UD_Ioutsb, UD_Ioutsw, UD_Ioutsd, UD_Ipacksswb, UD_Ipackssdw, UD_Ipackuswb, UD_Ipaddb, UD_Ipaddw, UD_Ipaddd, UD_Ipaddsb, UD_Ipaddsw, UD_Ipaddusb, UD_Ipaddusw, UD_Ipand, UD_Ipandn, UD_Ipavgb, UD_Ipavgw, UD_Ipcmpeqb, UD_Ipcmpeqw, UD_Ipcmpeqd, UD_Ipcmpgtb, UD_Ipcmpgtw, UD_Ipcmpgtd, UD_Ipextrb, UD_Ipextrd, UD_Ipextrq, UD_Ipextrw, UD_Ipinsrb, UD_Ipinsrw, UD_Ipinsrd, UD_Ipinsrq, UD_Ipmaddwd, UD_Ipmaxsw, UD_Ipmaxub, UD_Ipminsw, UD_Ipminub, UD_Ipmovmskb, UD_Ipmulhuw, UD_Ipmulhw, UD_Ipmullw, UD_Ipop, UD_Ipopa, UD_Ipopad, UD_Ipopfw, UD_Ipopfd, UD_Ipopfq, UD_Ipor, UD_Iprefetch, UD_Iprefetchnta, UD_Iprefetcht0, UD_Iprefetcht1, UD_Iprefetcht2, UD_Ipsadbw, UD_Ipshufw, UD_Ipsllw, UD_Ipslld, UD_Ipsllq, UD_Ipsraw, UD_Ipsrad, UD_Ipsrlw, UD_Ipsrld, UD_Ipsrlq, UD_Ipsubb, UD_Ipsubw, UD_Ipsubd, UD_Ipsubsb, UD_Ipsubsw, UD_Ipsubusb, UD_Ipsubusw, UD_Ipunpckhbw, UD_Ipunpckhwd, UD_Ipunpckhdq, UD_Ipunpcklbw, UD_Ipunpcklwd, UD_Ipunpckldq, UD_Ipi2fw, UD_Ipi2fd, UD_Ipf2iw, UD_Ipf2id, UD_Ipfnacc, UD_Ipfpnacc, UD_Ipfcmpge, UD_Ipfmin, UD_Ipfrcp, UD_Ipfrsqrt, UD_Ipfsub, UD_Ipfadd, UD_Ipfcmpgt, UD_Ipfmax, UD_Ipfrcpit1, UD_Ipfrsqit1, UD_Ipfsubr, UD_Ipfacc, UD_Ipfcmpeq, UD_Ipfmul, UD_Ipfrcpit2, UD_Ipmulhrw, UD_Ipswapd, UD_Ipavgusb, UD_Ipush, UD_Ipusha, UD_Ipushad, UD_Ipushfw, UD_Ipushfd, UD_Ipushfq, UD_Ipxor, UD_Ircl, UD_Ircr, UD_Irol, UD_Iror, UD_Ircpps, UD_Ircpss, UD_Irdmsr, UD_Irdpmc, UD_Irdtsc, UD_Irdtscp, UD_Irepne, UD_Irep, UD_Iret, UD_Iretf, UD_Irsm, UD_Irsqrtps, UD_Irsqrtss, UD_Isahf, UD_Isalc, UD_Isar, UD_Ishl, UD_Ishr, UD_Isbb, UD_Iscasb, UD_Iscasw, UD_Iscasd, UD_Iscasq, UD_Iseto, UD_Isetno, UD_Isetb, UD_Isetae, UD_Isetz, UD_Isetnz, UD_Isetbe, UD_Iseta, UD_Isets, UD_Isetns, UD_Isetp, UD_Isetnp, UD_Isetl, UD_Isetge, UD_Isetle, UD_Isetg, UD_Isfence, UD_Isgdt, UD_Ishld, UD_Ishrd, UD_Ishufpd, UD_Ishufps, UD_Isidt, UD_Isldt, UD_Ismsw, UD_Isqrtps, UD_Isqrtpd, UD_Isqrtsd, UD_Isqrtss, UD_Istc, UD_Istd, UD_Istgi, UD_Isti, UD_Iskinit, UD_Istmxcsr, UD_Istosb, UD_Istosw, UD_Istosd, UD_Istosq, UD_Istr, UD_Isub, UD_Isubpd, UD_Isubps, UD_Isubsd, UD_Isubss, UD_Iswapgs, UD_Isyscall, UD_Isysenter, UD_Isysexit, UD_Isysret, UD_Itest, UD_Iucomisd, UD_Iucomiss, UD_Iud2, UD_Iunpckhpd, UD_Iunpckhps, UD_Iunpcklps, UD_Iunpcklpd, UD_Iverr, UD_Iverw, UD_Ivmcall, UD_Ivmclear, UD_Ivmxon, UD_Ivmptrld, UD_Ivmptrst, UD_Ivmlaunch, UD_Ivmresume, UD_Ivmxoff, UD_Ivmread, UD_Ivmwrite, UD_Ivmrun, UD_Ivmmcall, UD_Ivmload, UD_Ivmsave, UD_Iwait, UD_Iwbinvd, UD_Iwrmsr, UD_Ixadd, UD_Ixchg, UD_Ixgetbv, UD_Ixlatb, UD_Ixor, UD_Ixorpd, UD_Ixorps, UD_Ixcryptecb, UD_Ixcryptcbc, UD_Ixcryptctr, UD_Ixcryptcfb, UD_Ixcryptofb, UD_Ixrstor, UD_Ixsave, UD_Ixsetbv, UD_Ixsha1, UD_Ixsha256, UD_Ixstore, UD_Iaesdec, UD_Iaesdeclast, UD_Iaesenc, UD_Iaesenclast, UD_Iaesimc, UD_Iaeskeygenassist, UD_Ipclmulqdq, UD_Igetsec, UD_Imovdqa, UD_Imaskmovdqu, UD_Imovdq2q, UD_Imovdqu, UD_Imovq2dq, UD_Ipaddq, UD_Ipsubq, UD_Ipmuludq, UD_Ipshufhw, UD_Ipshuflw, UD_Ipshufd, UD_Ipslldq, UD_Ipsrldq, UD_Ipunpckhqdq, UD_Ipunpcklqdq, UD_Iaddsubpd, UD_Iaddsubps, UD_Ihaddpd, UD_Ihaddps, UD_Ihsubpd, UD_Ihsubps, UD_Imovddup, UD_Imovshdup, UD_Imovsldup, UD_Ipabsb, UD_Ipabsw, UD_Ipabsd, UD_Ipshufb, UD_Iphaddw, UD_Iphaddd, UD_Iphaddsw, UD_Ipmaddubsw, UD_Iphsubw, UD_Iphsubd, UD_Iphsubsw, UD_Ipsignb, UD_Ipsignd, UD_Ipsignw, UD_Ipmulhrsw, UD_Ipalignr, UD_Ipblendvb, UD_Ipmuldq, UD_Ipminsb, UD_Ipminsd, UD_Ipminuw, UD_Ipminud, UD_Ipmaxsb, UD_Ipmaxsd, UD_Ipmaxud, UD_Ipmaxuw, UD_Ipmulld, UD_Iphminposuw, UD_Iroundps, UD_Iroundpd, UD_Iroundss, UD_Iroundsd, UD_Iblendpd, UD_Ipblendw, UD_Iblendps, UD_Iblendvpd, UD_Iblendvps, UD_Idpps, UD_Idppd, UD_Impsadbw, UD_Iextractps, UD_Iinsertps, UD_Imovntdqa, UD_Ipackusdw, UD_Ipmovsxbw, UD_Ipmovsxbd, UD_Ipmovsxbq, UD_Ipmovsxwd, UD_Ipmovsxwq, UD_Ipmovsxdq, UD_Ipmovzxbw, UD_Ipmovzxbd, UD_Ipmovzxbq, UD_Ipmovzxwd, UD_Ipmovzxwq, UD_Ipmovzxdq, UD_Ipcmpeqq, UD_Ipopcnt, UD_Iptest, UD_Ipcmpestri, UD_Ipcmpestrm, UD_Ipcmpgtq, UD_Ipcmpistri, UD_Ipcmpistrm, UD_Imovbe, UD_Icrc32, UD_MAX_MNEMONIC_CODE } UD_ATTR_PACKED; extern const char * ud_mnemonics_str[]; #endif /* UD_ITAB_H */ pev/lib/libudis86/libudis86/syn-att.c0000644000175000017500000001341413034014706016322 0ustar useruser/* udis86 - libudis86/syn-att.c * * Copyright (c) 2002-2009 Vivek Thampi * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "types.h" #include "extern.h" #include "decode.h" #include "itab.h" #include "syn.h" #include "udint.h" /* ----------------------------------------------------------------------------- * opr_cast() - Prints an operand cast. * ----------------------------------------------------------------------------- */ static void opr_cast(struct ud* u, struct ud_operand* op) { switch(op->size) { case 16 : case 32 : ud_asmprintf(u, "*"); break; default: break; } } /* ----------------------------------------------------------------------------- * gen_operand() - Generates assembly output for each operand. * ----------------------------------------------------------------------------- */ static void gen_operand(struct ud* u, struct ud_operand* op) { switch(op->type) { case UD_OP_CONST: ud_asmprintf(u, "$0x%x", op->lval.udword); break; case UD_OP_REG: ud_asmprintf(u, "%%%s", ud_reg_tab[op->base - UD_R_AL]); break; case UD_OP_MEM: if (u->br_far) { opr_cast(u, op); } if (u->pfx_seg) { ud_asmprintf(u, "%%%s:", ud_reg_tab[u->pfx_seg - UD_R_AL]); } if (op->offset != 0) { ud_syn_print_mem_disp(u, op, 0); } if (op->base) { ud_asmprintf(u, "(%%%s", ud_reg_tab[op->base - UD_R_AL]); } if (op->index) { if (op->base) { ud_asmprintf(u, ","); } else { ud_asmprintf(u, "("); } ud_asmprintf(u, "%%%s", ud_reg_tab[op->index - UD_R_AL]); } if (op->scale) { ud_asmprintf(u, ",%d", op->scale); } if (op->base || op->index) { ud_asmprintf(u, ")"); } break; case UD_OP_IMM: ud_asmprintf(u, "$"); ud_syn_print_imm(u, op); break; case UD_OP_JIMM: ud_syn_print_addr(u, ud_syn_rel_target(u, op)); break; case UD_OP_PTR: switch (op->size) { case 32: ud_asmprintf(u, "$0x%x, $0x%x", op->lval.ptr.seg, op->lval.ptr.off & 0xFFFF); break; case 48: ud_asmprintf(u, "$0x%x, $0x%x", op->lval.ptr.seg, op->lval.ptr.off); break; } break; default: return; } } /* ============================================================================= * translates to AT&T syntax * ============================================================================= */ extern void ud_translate_att(struct ud *u) { int size = 0; int star = 0; /* check if P_OSO prefix is used */ if (! P_OSO(u->itab_entry->prefix) && u->pfx_opr) { switch (u->dis_mode) { case 16: ud_asmprintf(u, "o32 "); break; case 32: case 64: ud_asmprintf(u, "o16 "); break; } } /* check if P_ASO prefix was used */ if (! P_ASO(u->itab_entry->prefix) && u->pfx_adr) { switch (u->dis_mode) { case 16: ud_asmprintf(u, "a32 "); break; case 32: ud_asmprintf(u, "a16 "); break; case 64: ud_asmprintf(u, "a32 "); break; } } if (u->pfx_lock) ud_asmprintf(u, "lock "); if (u->pfx_rep) { ud_asmprintf(u, "rep "); } else if (u->pfx_rep) { ud_asmprintf(u, "repe "); } else if (u->pfx_repne) { ud_asmprintf(u, "repne "); } /* special instructions */ switch (u->mnemonic) { case UD_Iretf: ud_asmprintf(u, "lret "); break; case UD_Idb: ud_asmprintf(u, ".byte 0x%x", u->operand[0].lval.ubyte); return; case UD_Ijmp: case UD_Icall: if (u->br_far) ud_asmprintf(u, "l"); if (u->operand[0].type == UD_OP_REG) { star = 1; } ud_asmprintf(u, "%s", ud_lookup_mnemonic(u->mnemonic)); break; case UD_Ibound: case UD_Ienter: if (u->operand[0].type != UD_NONE) gen_operand(u, &u->operand[0]); if (u->operand[1].type != UD_NONE) { ud_asmprintf(u, ","); gen_operand(u, &u->operand[1]); } return; default: ud_asmprintf(u, "%s", ud_lookup_mnemonic(u->mnemonic)); } if (size == 8) ud_asmprintf(u, "b"); else if (size == 16) ud_asmprintf(u, "w"); else if (size == 64) ud_asmprintf(u, "q"); if (star) { ud_asmprintf(u, " *"); } else { ud_asmprintf(u, " "); } if (u->operand[2].type != UD_NONE) { gen_operand(u, &u->operand[2]); ud_asmprintf(u, ", "); } if (u->operand[1].type != UD_NONE) { gen_operand(u, &u->operand[1]); ud_asmprintf(u, ", "); } if (u->operand[0].type != UD_NONE) gen_operand(u, &u->operand[0]); } /* vim: set ts=2 sw=2 expandtab */ pev/lib/libudis86/udis86.h0000644000175000017500000000302213034014706014233 0ustar useruser/* udis86 - udis86.h * * Copyright (c) 2002-2009 Vivek Thampi * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef UDIS86_H #define UDIS86_H #include "libudis86/types.h" #include "libudis86/extern.h" #include "libudis86/itab.h" #endif pev/pev.conf0000644000175000017500000000003613034014706012024 0ustar useruserplugins_dir=src/build/plugins pev/tests/0000755000175000017500000000000013034177414011534 5ustar useruserpev/tests/test_build.sh0000755000175000017500000000165713034014706014234 0ustar useruser#!/bin/bash report_file=${now}_${so}_${arch}_$(basename $0 .sh).log function report { if [ -z "$1" ]; then while read l; do echo "$l" >> $report_file done <&0 echo >> $report_file else echo -e "$1\n" >> $report_file fi } function report_status { [ "$1" -eq 0 ] && report '>>> SUCCESS' || report '>>> FAILED'; } pushd $ROOT_DIR report \ "pev test report ---------------- Type: $(basename $0 .sh) Date: $now Arch: $arch Version: $version" echo -n "Compiling... " make clean >/dev/null 2>&1 make 2>&1 | report pipe=${PIPESTATUS[0]} [ "$pipe" -eq 0 ] && echo ok || echo failed report_status $pipe mv "$report_file" $TESTS_DIR cd $TESTS_DIR # Darwin output of `wc` and `ls -lh` is somewhat different, therefore we need to pipe it through `xargs` # before piping to `cut`. echo -e "\nReport: $TESTS_DIR/$report_file, $(wc -l $report_file | xargs | cut -d' ' -f1) lines, \ $(ls -lh $report_file | xargs | cut -d' ' -f5)." popdpev/tests/valgrind_pedis.sh0000755000175000017500000000057713034014706015070 0ustar useruser#!/bin/bash prog="valgrind -q ../src/pedis" samples=../support_files/samples/* n=0 err=0 for sample in $samples; do echo -e "\n$sample" func=$(../src/readpe -f csv -h optional "$sample" | grep Entry | cut -d, -f2) for format in text csv xml html; do $prog -f $format -F $func $sample || let err++ done let n++ done echo "$n samples analyzed. $err errors." > /dev/fd/2 pev/tests/run.sh0000755000175000017500000002264613034177414012711 0ustar useruser#!/bin/bash ROOT_DIR=. INC_DIR=include SRC_DIR=src TOOLS_DIR=$SRC_DIR/build TESTS_DIR=tests REPORTS_DIR=$TESTS_DIR/running_report EXPECTED_OUTPUTS_DIR=$TESTS_DIR/expected_outputs SUPPORTED_FORMATS="csv html json text xml" BINDIFF=$(which diff) now=$(date +"%F_%H-%M") arch=$(uname -m) so=$(uname -s) # We use `-s` because `-o` is not supported on Mac OS X so=${so#*/} version=$(sed -n 's/^.*VERSION \"\([0-9]\.[0-9]*\)\"/\1/p' $INC_DIR/common.h) function test_build { . $TESTS_DIR/test_build.sh } function test_binary { local onsuccess=$1; shift; local onfailure=$1; shift; local logname=$1; shift; local binname=$1; shift; local args=$* if [ ! -d $REPORTS_DIR/${binname} ] then mkdir -p $REPORTS_DIR/${binname} fi echo -n "Testing ${binname} ${args}... " if $TOOLS_DIR/${binname} ${args} > "$REPORTS_DIR/${binname}/${now}_${binname}_${logname}.txt" then eval ${onsuccess} else eval ${onfailure} return # Stop at error fi } function test_binary_using_all_formats { local onsuccess=$1; shift; local onfailure=$1; shift; local logname=$1; shift; local binname=$1; shift; local args=$* # First run using the default output format. test_binary "${onsuccess}" "${onfailure}" "${logname}" ${binname} ${args} # Then run using every supported output format. for format in $SUPPORTED_FORMATS do echo -n "Testing ${binname} -f ${format} ${args}... " if $TOOLS_DIR/${binname} -f ${format} ${args} > "$REPORTS_DIR/${binname}/${now}_${binname}_${logname}_${format}.txt" then eval ${onsuccess} else eval ${onfailure} break # Stop at 1st error fi done } function test_binary_output_against_expected_output { local onsuccess=$1; shift; local onfailure=$1; shift; local logname=$1; shift; local binname=$1; shift; local binsample=$1; shift; local args=$*; local reported_output="$EXPECTED_OUTPUTS_DIR/_tmp/${binsample}/${binname}_${logname}.txt"; local expected_output_ok="$EXPECTED_OUTPUTS_DIR/${binsample}/${binname}_${logname}.txt"; local expected_output_fail="$EXPECTED_OUTPUTS_DIR/${binsample}/${binname}_${logname}_fail.txt"; if [ ! -d $EXPECTED_OUTPUTS_DIR/_tmp/${binsample} ] then mkdir -p $EXPECTED_OUTPUTS_DIR/_tmp/${binsample} fi echo -n "Running $TOOLS_DIR/${binname} -f json ${args} ${binsample} &> \"${reported_output}\"... " $TOOLS_DIR/${binname} -f json ${args} ${binsample} &> "${reported_output}" local ret="$?" echo "ret=$ret" if [ "$ret" -eq "0" ] then expected_output=${expected_output_ok} else expected_output=${expected_output_fail} fi echo -n "Comparing \"${expected_output}\" against \"${reported_output}\"... " ${BINDIFF} -u "${expected_output}" "${reported_output}" &> /dev/null ret="$?" if [ "$ret" -eq "0" ] then eval ${onsuccess} else eval ${onfailure} #echo "Showing differences:" #head -n 5 tmp.diff return # Stop at error fi } function run_pepack { local binname=pepack local args=$* echo "---------- ${binname} ----------" test_binary_using_all_formats "echo OK" "echo NOK" "default" ${binname} ${args} } function run_pehash { local binname=pehash local args=$* echo "---------- ${binname} ----------" test_binary_using_all_formats "echo OK" "echo NOK" "default" ${binname} ${args} test_binary_using_all_formats "echo OK" "echo NOK" "h_dos" ${binname} -h dos ${args} test_binary_using_all_formats "echo OK" "echo NOK" "a_sha512" ${binname} -a sha512 ${args} test_binary_using_all_formats "echo OK" "echo NOK" "s_text" ${binname} -s '.text' ${args} test_binary_using_all_formats "echo OK" "echo NOK" "section_index_1" ${binname} --section-index 1 ${args} } function run_pescan { local binname=pescan local args=$* echo "---------- ${binname} ----------" test_binary_using_all_formats "echo OK" "echo NOK" "default" ${binname} ${args} test_binary_using_all_formats "echo OK" "echo NOK" "v" ${binname} -v ${args} } function run_pestr { local binname=pestr local args=$* echo "---------- ${binname} ----------" test_binary "echo OK" "echo NOK" "default" ${binname} ${args} test_binary "echo OK" "echo NOK" "n_5" ${binname} -n 5 ${args} test_binary "echo OK" "echo NOK" "o" ${binname} -o ${args} test_binary "echo OK" "echo NOK" "s" ${binname} -s ${args} } function peres_on_success { if [ -d resources ] then echo "OK" rm -rf resources else echo "binary returns OK, but no resource was extracted" fi } function run_peres { local binname=peres local args=$* echo "---------- ${binname} ----------" test_binary "echo OK" "echo NOK" "i" ${binname} -i ${args} test_binary "echo OK" "echo NOK" "s" ${binname} -s ${args} test_binary peres_on_success "echo NOK" "x" ${binname} -x ${args} test_binary peres_on_success "echo NOK" "a" ${binname} -a ${args} } function pesec_on_success { if [ -f tmp_cert -a -s tmp_cert ] then echo "OK" else echo "Command returns OK but don't export the cert to file." fi rm tmp_cert } function run_pesec { local binname=pesec local args=$* echo "---------- ${binname} ----------" test_binary_using_all_formats "echo OK" "echo NOK" "default" ${binname} ${args} test_binary_using_all_formats "echo OK" "echo NOK" "c_pem" ${binname} -c pem ${args} test_binary_using_all_formats pesec_on_success "echo NOK" "o_tmp_cert" ${binname} -o tmp_cert ${args} } function run_readpe { local binname=readpe local args=$* echo "---------- ${binname} ----------" test_binary_using_all_formats "echo OK" "echo NOK" "default" ${binname} ${args} test_binary_using_all_formats "echo OK" "echo NOK" "H" ${binname} -H ${args} test_binary_using_all_formats "echo OK" "echo NOK" "S" ${binname} -S ${args} test_binary_using_all_formats "echo OK" "echo NOK" "d" ${binname} -d ${args} test_binary_using_all_formats "echo OK" "echo NOK" "h_dos" ${binname} -h dos ${args} test_binary_using_all_formats "echo OK" "echo NOK" "i" ${binname} -i ${args} test_binary_using_all_formats "echo OK" "echo NOK" "e" ${binname} -e ${args} } function test_regression { if [ ! -d $EXPECTED_OUTPUTS_DIR ] then mkdir -p $EXPECTED_OUTPUTS_DIR fi local binsample="$1" test_binary_output_against_expected_output "echo OK" "echo NOK" "default" pepack ${binsample} test_binary_output_against_expected_output "echo OK" "echo NOK" "default" pehash ${binsample} test_binary_output_against_expected_output "echo OK" "echo NOK" "h_dos" pehash ${binsample} -h dos test_binary_output_against_expected_output "echo OK" "echo NOK" "a_sha512" pehash ${binsample} -a sha512 test_binary_output_against_expected_output "echo OK" "echo NOK" "s_text" pehash ${binsample} -s '.text' test_binary_output_against_expected_output "echo OK" "echo NOK" "section_index_1" pehash ${binsample} --section-index 1 test_binary_output_against_expected_output "echo OK" "echo NOK" "default" pescan ${binsample} test_binary_output_against_expected_output "echo OK" "echo NOK" "v" pescan ${binsample} -v test_binary_output_against_expected_output "echo OK" "echo NOK" "i" peres ${binsample} -i test_binary_output_against_expected_output "echo OK" "echo NOK" "s" peres ${binsample} -s test_binary_output_against_expected_output "echo OK" "echo NOK" "x" peres ${binsample} -x test_binary_output_against_expected_output "echo OK" "echo NOK" "a" peres ${binsample} -a test_binary_output_against_expected_output "echo OK" "echo NOK" "default" pesec ${binsample} test_binary_output_against_expected_output "echo OK" "echo NOK" "c_pem" pesec ${binsample} -c pem test_binary_output_against_expected_output "echo OK" "echo NOK" "o_tmp_cert" pesec ${binsample} -o tmp_cert test_binary_output_against_expected_output "echo OK" "echo NOK" "default" readpe ${binsample} test_binary_output_against_expected_output "echo OK" "echo NOK" "H" readpe ${binsample} -H test_binary_output_against_expected_output "echo OK" "echo NOK" "S" readpe ${binsample} -S test_binary_output_against_expected_output "echo OK" "echo NOK" "d" readpe ${binsample} -d test_binary_output_against_expected_output "echo OK" "echo NOK" "h_dos" readpe ${binsample} -h dos test_binary_output_against_expected_output "echo OK" "echo NOK" "i" readpe ${binsample} -i test_binary_output_against_expected_output "echo OK" "echo NOK" "e" readpe ${binsample} -e } function test_pe32 { if [ ! -d $REPORTS_DIR ] then mkdir -p $REPORTS_DIR fi run_pepack $1 run_pehash $1 run_pescan $1 run_peres $1 run_pestr $1 run_pesec $1 run_readpe $1 } function test_pe64 { echo 'coming soon...' } function clean { if [ -d $REPORTS_DIR ] then rm -rf $REPORTS_DIR fi rm -rf $TESTS_DIR/*.log } case "$1" in "clean") clean ;; "build") test_build ;; "pe32") if [ $# -ne 2 ] then echo "missing argument: use $0 pe32 " else test_pe32 $2 fi ;; "pe64") test_pe64 ;; "regression") if [ $# -ne 2 ] then echo "missing argument: use $0 regression " else test_regression $2 fi ;; *) echo "illegal option -- $1" echo "usage: run.sh