[Pkg-clamav-commits] [SCM] Debian repository for ClamAV branch, debian/unstable, updated. debian/0.95+dfsg-1-6156-g094ec9b

Török Edvin edwin at clamav.net
Sun Apr 4 01:10:12 UTC 2010


The following commit has been merged in the debian/unstable branch:
commit 3ae0a76d0320be7b4bb2426e13bb442dde8eee12
Author: Török Edvin <edwin at clamav.net>
Date:   Wed Dec 2 17:13:07 2009 +0200

    Support for scanning files created by bytecode.

diff --git a/libclamav/bytecode.c b/libclamav/bytecode.c
index c901d7e..3d6e0b1 100644
--- a/libclamav/bytecode.c
+++ b/libclamav/bytecode.c
@@ -45,9 +45,13 @@ struct cli_bc_ctx *cli_bytecode_context_alloc(void)
     ctx->opsizes = NULL;
     ctx->fd = -1;
     ctx->off = 0;
+    ctx->ctx = NULL;
     ctx->hooks.match_counts = nomatch;
     /* TODO: init all hooks with safe values */
     ctx->virname = NULL;
+    ctx->outfd = -1;
+    ctx->tempfile = NULL;
+    ctx->written = 0;
     return ctx;
 }
 
@@ -57,6 +61,16 @@ void cli_bytecode_context_destroy(struct cli_bc_ctx *ctx)
    free(ctx);
 }
 
+int cli_bytecode_context_getresult_file(struct cli_bc_ctx *ctx, char **tempfilename)
+{
+    int fd;
+    *tempfilename = ctx->tempfile;
+    fd  = ctx->outfd;
+    ctx->tempfile = NULL;
+    ctx->outfd = -1;
+    return fd;
+}
+
 /* resets bytecode state, so you can run another bytecode with same ctx */
 int cli_bytecode_context_reset(struct cli_bc_ctx *ctx)
 {
@@ -66,6 +80,17 @@ int cli_bytecode_context_reset(struct cli_bc_ctx *ctx)
     ctx->operands = NULL;
     ctx->values = NULL;
     ctx->opsizes = NULL;
+    ctx->written = 0;
+    if (ctx->outfd != -1) {
+	cli_dbgmsg("Bytecode: nobody cared about FD %d, %s\n", ctx->outfd,
+		   ctx->tempfile);
+	ftruncate(ctx->outfd, 0);
+	close(ctx->outfd);
+	cli_unlink(ctx->tempfile);
+	free(ctx->tempfile);
+	ctx->tempfile = NULL;
+	ctx->outfd = -1;
+    }
     return CL_SUCCESS;
 }
 
@@ -1581,6 +1606,37 @@ int cli_bytecode_runhook(const struct cl_engine *engine, struct cli_bc_ctx *ctx,
 	ret = cli_bytecode_context_getresult_int(ctx);
 	/* TODO: use prefix here */
 	cli_dbgmsg("Bytecode %u returned %u\n", bc->id, ret);
+	if (!ret) {
+	    char *tempfile;
+	    cli_ctx *cctx = ctx->ctx;
+	    int fd = cli_bytecode_context_getresult_file(ctx, &tempfile);
+	    if (fd != -1) {
+		if (cctx && cctx->engine->keeptmp)
+		    cli_dbgmsg("Bytecode %u unpacked file saved in %s\n",
+			       bc->id, tempfile);
+		else
+		    cli_dbgmsg("Bytecode %u unpacked file\n", bc->id);
+		lseek(fd, 0, SEEK_SET);
+		cli_dbgmsg("***** Scanning unpacked file ******\n");
+		ret = cli_magic_scandesc(fd, cctx);
+		if (!cctx || !cctx->engine->keeptmp)
+		    ftruncate(fd, 0);
+		close(fd);
+		if (!cctx || !cctx->engine->keeptmp) {
+		    if (cli_unlink(tempfile))
+			ret = CL_EUNLINK;
+		}
+		free(tempfile);
+		if (ret != CL_CLEAN) {
+		    if (ret == CL_VIRUS)
+			cli_dbgmsg("Scanning unpacked file by bytecode %u found a virus\n", bc->id);
+		    cli_bytecode_context_clear(ctx);
+		    return ret;
+		}
+		cli_bytecode_context_reset(ctx);
+		continue;
+	    }
+	}
 	cli_bytecode_context_reset(ctx);
     }
     return CL_CLEAN;
@@ -1592,3 +1648,8 @@ int cli_bytecode_context_setpe(struct cli_bc_ctx *ctx, const struct cli_pe_hook_
     ctx->hooks.pedata = data;
     return 0;
 }
+
+void cli_bytecode_context_setctx(struct cli_bc_ctx *ctx, void *cctx)
+{
+    ctx->ctx = cctx;
+}
diff --git a/libclamav/bytecode.h b/libclamav/bytecode.h
index c22503b..bc4ec4d 100644
--- a/libclamav/bytecode.h
+++ b/libclamav/bytecode.h
@@ -75,12 +75,17 @@ struct cli_all_bc {
 
 struct cli_pe_hook_data;
 struct cli_bc_ctx *cli_bytecode_context_alloc(void);
+/* FIXME: we can't include others.h because others.h includes us...*/
+void cli_bytecode_context_setctx(struct cli_bc_ctx *ctx, void *cctx);
 int cli_bytecode_context_setfuncid(struct cli_bc_ctx *ctx, const struct cli_bc *bc, unsigned funcid);
 int cli_bytecode_context_setparam_int(struct cli_bc_ctx *ctx, unsigned i, uint64_t c);
 int cli_bytecode_context_setparam_ptr(struct cli_bc_ctx *ctx, unsigned i, void *data, unsigned datalen);
 int cli_bytecode_context_setfile(struct cli_bc_ctx *ctx, int fd);
 int cli_bytecode_context_setpe(struct cli_bc_ctx *ctx, const struct cli_pe_hook_data *data);
 int cli_bytecode_context_clear(struct cli_bc_ctx *ctx);
+/* returns file descriptor, sets tempfile. Caller takes ownership, and is
+ * responsible for freeing/unlinking */
+int cli_bytecode_context_getresult_file(struct cli_bc_ctx *ctx, char **tempfilename);
 uint64_t cli_bytecode_context_getresult_int(struct cli_bc_ctx *ctx);
 void cli_bytecode_context_destroy(struct cli_bc_ctx *ctx);
 
diff --git a/libclamav/bytecode_api.c b/libclamav/bytecode_api.c
index f3dadfa..e3207c9 100644
--- a/libclamav/bytecode_api.c
+++ b/libclamav/bytecode_api.c
@@ -23,6 +23,8 @@
 #define _XOPEN_SOURCE 600
 #include <unistd.h>
 #include <stdlib.h>
+#include <fcntl.h>
+#include <errno.h>
 #include "cltypes.h"
 #include "clambc.h"
 #include "bytecode_priv.h"
@@ -98,8 +100,32 @@ uint32_t cli_bcapi_disasm_x86(struct cli_bc_ctx *ctx, struct DISASM_RESULT *res,
 
 int32_t cli_bcapi_write(struct cli_bc_ctx *ctx, uint8_t*data, int32_t len)
 {
-    //TODO: write to tempfile (checking maxsize), and later scan it via
-    //magicscandesc
+    int32_t res;
+    cli_ctx *cctx = (cli_ctx*)ctx->ctx;
+    if (len < 0) {
+	cli_warnmsg("Bytecode API: called with negative length!\n");
+	return -1;
+    }
+    if (ctx->outfd == -1) {
+	ctx->tempfile = cli_gentemp(cctx ? cctx->engine->tmpdir : NULL);
+	if (!ctx->tempfile) {
+	    cli_dbgmsg("Bytecode API: Unable to allocate memory for tempfile\n");
+	    return -1;
+	}
+	ctx->outfd = open(ctx->tempfile, O_RDWR|O_CREAT|O_EXCL|O_TRUNC|O_BINARY, 0600);
+	if (ctx->outfd == -1) {
+	    cli_warnmsg("Bytecode API: Can't create file %s\n", ctx->tempfile);
+	    free(ctx->tempfile);
+	    return -1;
+	}
+    }
+    if (cli_checklimits("bytecode api", cctx, ctx->written + len, 0, 0))
+	return -1;
+    res = cli_writen(ctx->outfd, data, len);
+    if (res > 0) ctx->written += res;
+    if (res == -1)
+	    cli_dbgmsg("Bytecode API: write failed: %s\n", errno);
+    return res;
 }
 
 
diff --git a/libclamav/bytecode_priv.h b/libclamav/bytecode_priv.h
index c7650f5..2616a7d 100644
--- a/libclamav/bytecode_priv.h
+++ b/libclamav/bytecode_priv.h
@@ -116,6 +116,10 @@ struct cli_bc_ctx {
     int fd;
     const char *virname;
     struct cli_bc_hooks hooks;
+    int outfd;
+    char *tempfile;
+    void *ctx;
+    unsigned written;
 };
 struct cli_all_bc;
 int cli_vm_execute(const struct cli_bc *bc, struct cli_bc_ctx *ctx, const struct cli_bc_func *func, const struct cli_bc_inst *inst);
diff --git a/libclamav/pe.c b/libclamav/pe.c
index ae3285f..9a87dc7 100644
--- a/libclamav/pe.c
+++ b/libclamav/pe.c
@@ -2271,9 +2271,21 @@ int cli_scanpe(int desc, cli_ctx *ctx)
     pedata.overlays = overlays;
     pedata.overlays_sz = fsize - overlays;
     cli_bytecode_context_setpe(bc_ctx, &pedata);
-    if (cli_bytecode_runhook(ctx->engine, bc_ctx, BC_PE_UNPACKER, desc, ctx->virname) == CL_VIRUS)
-	return CL_VIRUS;
-    cli_bytecode_context_destroy(bc_ctx);
+    cli_bytecode_context_setctx(bc_ctx, ctx);
+    ret = cli_bytecode_runhook(ctx->engine, bc_ctx, BC_PE_UNPACKER, desc, ctx->virname);
+    switch (ret) {
+	case CL_VIRUS:
+	    return CL_VIRUS;
+	case CL_SUCCESS:
+	    ndesc = cli_bytecode_context_getresult_file(bc_ctx, &tempfile);
+	    cli_bytecode_context_destroy(bc_ctx);
+	    if (ndesc != -1) {
+		CLI_UNPRESULTS("bytecode PE hook", 1, 1, (0));
+	    }
+	    break;
+	default:
+	    cli_bytecode_context_destroy(bc_ctx);
+    }
 
     free(exe_sections);
     return CL_CLEAN;
diff --git a/unit_tests/input/apicalls2.cbc b/unit_tests/input/apicalls2.cbc
index 0655053..d1bc79b 100644
--- a/unit_tests/input/apicalls2.cbc
+++ b/unit_tests/input/apicalls2.cbc
@@ -1,10 +1,10 @@
 ClamBCaa`|``````|`akafp`clamcoincidencejb
 
-Tedaa`cabjdebjdacb`bbjdb`bacb`bb`bb`bebfd
+Tedcabjdebjdaa`acb`bbjdb`bacb`bb`bb`bebed
 Eababaabhd|afdgefcgdg`c``abbid|afdgefcgdgac``
 G``
-A`b`bLahbfdabgd```b`b`aa`b`b`aa`b`b`Fajac
-Bbgdaadb`@d at d``fb`aab`bacabbabHonnkm``odHm``oonnkdaaadeab`bacHhgfedcbadTaaadaaab
+A`b`bLahbedabfd```b`b`aa`b`b`aa`b`b`Fajac
+Bbfdaadb`@d at d``fb`aab`bacabbabHonnkm``odHm``oonnkdaaadeab`bacHhgfedcbadTaaadaaab
 Bb`baeabbaa`Honnkmjnmdaaafeab`baeHhgfedcbadb`bagoaafDm``odDmjnmdTcab`bag
 BTcab`bDmjnmdE
 Aab`bLabah`aa`b`b`Facaa
diff --git a/unit_tests/input/arith.cbc b/unit_tests/input/arith.cbc
index b274a27..27ccfad 100644
--- a/unit_tests/input/arith.cbc
+++ b/unit_tests/input/arith.cbc
@@ -4,7 +4,247 @@ Tedaa`
 E``
 G``
 A`b`bLbabb`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`Fbbbaa
-Bb`b``b`bnbb`baa`b`blcb`bab`b`bdcb`bac`b`bncb`bad`b`bgcb`bae`b`bfcb`baf`b`bkcb`bag`b`bccb`bah`b`b`cb`bai`b`bobb`baj`b`becb`bak`b`bocb`bal`b`bjcb`bam`b`b`db`ban`b`bmcb`bao`b`bacb`bb`a`b`bhcb`bbaaa`aa`b`bbbaa`baaabb`bbcaa`bbaacb`bbdaa`bcaadb`bbeaa`bdaaeb`bbfaa`beaafb`bbgaa`bfaagb`bbhaa`bgaahb`bbiaa`bhaaib`bbjaa`biaajb`bbkaa`bjaakb`bblaa`bkaalb`bbmaa`blaamb`bbnaa`bmaanb`bboaa`bnaaob`bb`ba`boab`aTcab`bb`bE
+Bb`b``b`abb`baa`b`anb`bab`b`agb`bac`b`b`ab`bad`b`ajb`bae`b`aib`baf`b`amb`bag`b`afb`bah`b`adb`bai`b`acb`baj`b`ahb`bak`b`baab`bal`b`alb`bam`b`bbab`ban`b`aob`bao`b`aeb`bb`a`b`akb`bbaaa`aa`b`bbbaa`baaabb`bbcaa`bbaacb`bbdaa`bcaadb`bbeaa`bdaaeb`bbfaa`beaafb`bbgaa`bfaagb`bbhaa`bgaahb`bbiaa`bhaaib`bbjaa`biaajb`bbkaa`bjaakb`bblaa`bkaalb`bbmaa`blaamb`bbnaa`bmaanb`bboaa`bnaaob`bb`ba`boab`aTcab`bb`bE
+A`b`bLb`cah`aa`b`b`ah`aa`b`b`ah`aa`b`b`ah`aa`b`b`b`a`aa`b`b`b`a`aa`b`b`b`a`aa`b`b`b`a`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`d`aa`b`b`b`d`aa`b`b`b`d`aa`b`b`b`d`aa`b`b`Fbaebab
+Bah``bbb`bAaaAaaaaaaeaah`AbaTaaaaabaa
+Bb`bab`babca at dTcab`bab
+Bahac`bbb`bAaaBooaaaadeaahac at aTaaadadac
+Bb`bae`babca at dTcab`bae
+Bahaf`bbb`bBooaBooaaaageaahafBnoaTaaagafae
+Bb`bah`babca at dTcab`bah
+Bahai`bbb`bBooaAaaaaajeaahai at aTaaajahag
+Bb`bak`babca at dTcab`bak
+Bb`aal`bbbmaAabAabaaameab`aalAbbTaaamajai
+Bb`ban`babca at dTcab`ban
+Bb`aao`bbbmaAabDoooobaab`aeab`aao at bTaab`aalak
+Bb`bbaa`babca at dTcab`bbaa
+Bb`abba`bbbmaDoooobDoooobaabcaeab`abbaDnooobTaabcaanam
+Bb`bbda`babca at dTcab`bbda
+Bb`abea`bbbmaDoooobAabaabfaeab`abea at bTaabfab`aao
+Bb`bbga`babca at dTcab`bbga
+Bb`bbha`bbbnaAadAadaabiaeab`bbhaAbdTaabiabbabaa
+Bb`bbja`babca at dTcab`bbja
+Bb`bbka`bbbnaAadHoooooooodaablaeab`bbka at dTaablabdabca
+Bb`bbma`babca at dTcab`bbma
+Bb`bbna`bbbnaHoooooooodHoooooooodaaboaeab`bbnaHnooooooodTaaboabfabea
+Bb`bb`b`babca at dTcab`bb`b
+Bb`bbab`bbbnaHoooooooodAadaabbbeab`bbab at dTaabbbbhabga
+Bb`bbcb`babca at dTcab`bbcb
+Bb`dbdb`bbboaAahAahaabebeab`dbdbAbhTaabebbjabia
+Bb`bbfb`babca at dTcab`bbfb
+Bb`dbgb`bbboaAahPoooooooooooooooohaabhbeab`dbgb at hTaabhbblabka
+Bb`bbib`babca at dTcab`bbib
+Bb`dbjb`bbboaPoooooooooooooooohPoooooooooooooooohaabkbeab`dbjbPnooooooooooooooohTaabkbbnabma
+Bb`bblb`babca at dTcab`bblb
+Bb`dbmb`bbboaPoooooooooooooooohAahaabnbeab`dbmb at hTaabnbb`bboa
+Bb`bbob`babca at dTcab`bbob
+BTcab`bAadE
+A`b`bLalah`aa`b`b`b`a`aa`b`b`b`b`aa`b`b`b`d`aa`b`b`Fbeaai
+Bah``bbbdbBjeaAoaaaaaeaah`AjaTaaaaabaa
+Bb`bab`babca at dTcab`bab
+Bb`aac`bbbabDlkjebD```obaaadeab`aacD```ebTaaadadac
+Bb`bae`babca at dTcab`bae
+Bb`baf`bbbbbHdcbalkjedG``````odaaageab`bafG``````jdTaaagafae
+Bb`bah`babca at dTcab`bah
+Bb`dai`bbbcbPdcbahgfedcbalkjehG``````ohaaajeab`daiG``````fhTaaajahag
+Bb`bak`babca at dTcab`bak
+BTcab`bE````ddE
+A`b`bLafah`aa`b`b`ah`aa`b`b`Fakae
+Bah``bbbhbBnoaAaaaaaaeaah`BooaTaaaaabaa
+Bb`bab`babca at dTcab`bab
+Bahac`bbbhbBngaAaaaaadeaahacBocaTaaadadac
+Bb`bae`babca at dTcab`bae
+BTcab`bE````adE
+A`b`bLaob`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`Fbjaak
+Bb`b``bdbbeHoooooooodAbd at dAddaaaaeab`b`CijbdTaaaaabaa
+Bb`bab`babca at dTcab`bab
+Bb`bac`bdbbeHoooooooodHoooooooodAadHoooooooodaaadeab`bacCbbcdTaaadadac
+Bb`bae`babca at dTcab`bae
+Bb`baf`bdbbeHooooooood at dAcdHnooooooodaaageab`bafCcjbdTaaagafae
+Bb`bah`babca at dTcab`bah
+Bb`bai`bdbbeHooooooood at dAcd@daaajeab`baiCcnbdTaaajahag
+Bb`bak`babca at dTcab`bak
+Bb`bal`bdbbeHooooooood at d@dHoooooooodaaameab`balBkbdTaaamajai
+Bb`ban`babca at dTcab`ban
+BTcab`bH```````ddE
+A`b`bLagah`aa`b`b`ah`ah`aa`b`b`Falae
+Bah``bbblbBnoaAadaaaaeaah`BogaTaaaaabaa
+Bb`bab`babca at dTcab`bab
+Bahac`bbb`bBnoaAeaahad`bbblbacAadaaaeeaahadAaaTaaaeadac
+Bb`baf`babca at dTcab`baf
+BTcab`bD```ddE
+A`b`bLb`cah`aa`b`b`ah`aa`b`b`ah`aa`b`b`ah`aa`b`b`b`a`aa`b`b`b`a`aa`b`b`b`a`aa`b`b`b`a`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`d`aa`b`b`b`d`aa`b`b`b`d`aa`b`b`b`d`aa`b`b`Fbaebab
+Bah``bbb`cBooaAaaaaaaeaah`BooaTaaaaabaa
+Bb`bab`babca at dTcab`bab
+Bahac`bbb`cBooaBooaaaadeaahacAaaTaaadadac
+Bb`bae`babca at dTcab`bae
+Bahaf`bbb`cAaaAaaaaageaahafAaaTaaagafae
+Bb`bah`babca at dTcab`bah
+Bahai`bbb`cBaaaBcbaaaajeaahaiBceaTaaajahag
+Bb`bak`babca at dTcab`bak
+Bb`aal`bbbmbDoooobAabaaameab`aalDoooobTaaamajai
+Bb`ban`babca at dTcab`ban
+Bb`aao`bbbmbDoooobDoooobaab`aeab`aaoAabTaab`aalak
+Bb`bbaa`babca at dTcab`bbaa
+Bb`abba`bbbmbAabAabaabcaeab`abbaAabTaabcaanam
+Bb`bbda`babca at dTcab`bbda
+Bb`abea`bbbmbBckbCgfcbaabfaeab`abeaDe`afbTaabfab`aao
+Bb`bbga`babca at dTcab`bbga
+Bb`bbha`bbbnbHoooooooodAadaabiaeab`bbhaHoooooooodTaabiabbabaa
+Bb`bbja`babca at dTcab`bbja
+Bb`bbka`bbbnbHoooooooodHoooooooodaablaeab`bbkaAadTaablabdabca
+Bb`bbma`babca at dTcab`bbma
+Bb`bbna`bbbnbAadAadaaboaeab`bbnaAadTaaboabfabea
+Bb`bb`b`babca at dTcab`bb`b
+Bb`bbab`bbbnbE`emkbdEhnmdmdaabbbeab`bbabH`h`jlgbgdTaabbbbhabga
+Bb`bbcb`babca at dTcab`bbcb
+Bb`dbdb`bbbobPoooooooooooooooohAahaabebeab`dbdbPoooooooooooooooohTaabebbjabia
+Bb`bbfb`babca at dTcab`bbfb
+Bb`dbgb`bbbobPoooooooooooooooohPoooooooooooooooohaabhbeab`dbgbAahTaabhbblabka
+Bb`bbib`babca at dTcab`bbib
+Bb`dbjb`bbbobAahAahaabkbeab`dbjbAahTaabkbbnabma
+Bb`bblb`babca at dTcab`bblb
+Bb`dbmb`bbbobImaghnanbdhIogjdckg`bhaabnbeab`dbmbPcfifjghokjjemflghTaabnbb`bboa
+Bb`bbob`babca at dTcab`bbob
+BTcab`bB`adE
+A`b`bLalah`aa`b`b`b`a`aa`b`b`b`b`aa`b`b`b`d`aa`b`b`Fbeaai
+Bah``bbbdcBjeaAoaaaaaeaah`BoeaTaaaaabaa
+Bb`bab`babca at dTcab`bab
+Bb`aac`bbbacDlkjebD```obaaadeab`aacDlkjobTaaadadac
+Bb`bae`babca at dTcab`bae
+Bb`baf`bbbbcHdcbalkjedG``````odaaageab`bafHdcbalkoedTaaagafae
+Bb`bah`babca at dTcab`bah
+Bb`dai`bbbccPdcbahgfedcbalkjehG``````ohaaajeab`daiPdcbahgoedcbalkjehTaaajahag
+Bb`bak`babca at dTcab`bak
+BTcab`bF`````adE
+A`b`bLaoah`aa`b`b`ah`aa`b`b`ah`aa`b`b`b`a`aa`b`b`b`a`aa`b`b`Fbjaak
+Bah``bbb`dBooaAaaaaaaeaah`@aTaaaaabaa
+Bb`bab`babca at dTcab`bab
+Bahac`bbbldBooaAaaaaadeaahac at aTaaadadac
+Bb`bae`babca at dTcab`bae
+Bahaf`bbb`dAaaBooaaaageaahaf at aTaaagafae
+Bb`bah`babca at dTcab`bah
+Bb`aai`bbbmcDinmobAgbaaajeab`aaiDmooobTaaajahag
+Bb`bak`babca at dTcab`bak
+Bb`aal`bbbidDinmobAgbaaameab`aalAfbTaaamajai
+Bb`ban`babca at dTcab`ban
+BTcab`bC``ddE
+A`b`bLbfaah`aa`b`b`ah`aa`b`b`ah`aa`b`b`ah`aa`b`b`ah`ah`aa`b`b`ah`aa`b`b`b`a`aa`b`b`Fbebao
+Bah``bbbhcAaaBooaaaaaeaah`BooaTaaaaabaa
+Bb`bab`babca at dTcab`bab
+Bahac`bbbhcBooaAaaaaadeaahacBooaTaaadadac
+Bb`bae`babca at dTcab`bae
+Bahaf`bbbhcBooaBooaaaageaahafAaaTaaagafae
+Bb`bah`babca at dTcab`bah
+Bahai`bbbhcAaaAaaaaajeaahaiAaaTaaajahag
+Bb`bak`babca at dTcab`bak
+Bahal`bbb`bBnoaAeaaham`bbbhcAfaalaaaneaahamAbaTaaanajai
+Bb`bao`babca at dTcab`bao
+Bahb`a`bbbhcalAbaaabaaeaahb`aAaaTaabaaalak
+Bb`bbba`babca at dTcab`bbba
+Bb`abca`bbbecDjnmobAgbaabdaeab`abcaDdkoobTaabdaanam
+Bb`bbea`babca at dTcab`bbea
+BTcab`bC``adE
+A`b`bLafb`b`aa`b`b`b`b`aa`b`b`Fakae
+Bb`b``bcbaeAddAedAfdaaaaeab`b`AedTaaaaabaa
+Bb`bab`babca at dTcab`bab
+Bb`bac`bcbae at dAedAfdaaadeab`bacAfdTaaadadac
+Bb`bae`babca at dTcab`bae
+BTcab`bH```````hdE
+A`b`bLaib`a`aa`b`b`b`b`aa`b`b`b`d`aa`b`b`Fb`aag
+Bb`a``babfaBloaaaaaeab`a`DlooobTaaaaabaa
+Bb`bab`babca at dTcab`bab
+Bb`bac`babdaDjooobaaadeab`bacHjooooooodTaaadadac
+Bb`bae`babca at dTcab`bae
+Bb`daf`babeaHjooooooodaaageab`dafPjooooooooooooooohTaaagafae
+Bb`bah`babca at dTcab`bah
+BTcab`bG``````adE
+A`b`bLalah`aa`b`b`ah`aa`b`b`ah`aa`b`b`b`a`aa`b`b`Fbeaai
+Bah``bbblcAaaAadaaaaeaah`AbaTaaaaabaa
+Bb`bab`babca at dTcab`bab
+Bahac`bbblcAaa at daaadeaahacAaaTaaadadac
+Bb`bae`babca at dTcab`bae
+Bahaf`bbblcBnoaAbdaaageaahafBhoaTaaagafae
+Bb`bah`babca at dTcab`bah
+Bb`aai`bbbicDnojobAbdaaajeab`aaiDhoknbTaaajahag
+Bb`bak`babca at dTcab`bak
+BTcab`bD```adE
+A`b`bLbdbah`aa`b`b`ah`aa`b`b`ah`aa`b`b`b`a`aa`b`b`b`a`aa`b`b`b`a`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`d`aa`b`b`b`d`aa`b`b`b`d`aa`b`b`Fbmcbia
+Bah``bbbddBooaAaaaaaaeaah`BnoaTaaaaabaa
+Bb`bab`babca at dTcab`bab
+Bahac`bbbddAaaBooaaaadeaahacAbaTaaadadac
+Bb`bae`babca at dTcab`bae
+Bahaf`bbbddAaaAaaaaageaahaf at aTaaagafae
+Bb`bah`babca at dTcab`bah
+Bb`aai`bbbadDoooobAabaaajeab`aaiDnooobTaaajahag
+Bb`bak`babca at dTcab`bak
+Bb`aal`bbbadAabDoooobaaameab`aalAbbTaaamajai
+Bb`ban`babca at dTcab`ban
+Bb`aao`bbbadAabAabaab`aeab`aao at bTaab`aalak
+Bb`bbaa`babca at dTcab`bbaa
+Bb`bbba`bbbbdHoooooooodAadaabcaeab`bbbaHnooooooodTaabcaanam
+Bb`bbda`babca at dTcab`bbda
+Bb`bbea`bbbbdAadHoooooooodaabfaeab`bbeaAbdTaabfab`aao
+Bb`bbga`babca at dTcab`bbga
+Bb`bbha`bbbbdAadAadaabiaeab`bbha at dTaabiabbabaa
+Bb`bbja`babca at dTcab`bbja
+Bb`dbka`bbbcdPoooooooooooooooohAahaablaeab`dbkaPnooooooooooooooohTaablabdabca
+Bb`bbma`babca at dTcab`bbma
+Bb`dbna`bbbcdAahPoooooooooooooooohaaboaeab`dbnaAbhTaaboabfabea
+Bb`bb`b`babca at dTcab`bb`b
+Bb`dbab`bbbcdAahAahaabbbeab`dbab at hTaabbbbhabga
+Bb`bbcb`babca at dTcab`bbcb
+BTcab`bAddE
+A`b`bLaiah`aa`b`b`b`a`aa`b`b`b`b`aa`b`b`Fb`aag
+Bah``babgaDmnnobaaaaeaah`BmnaTaaaaabaa
+Bb`bab`babca at dTcab`bab
+Bb`aac`babhaHmnnomjnmdaaadeab`aacDmnnobTaaadadac
+Bb`bae`babca at dTcab`bae
+Bb`baf`babiaPonnkmnnomjnmonnkhaaageab`bafHonnkmnnodTaaagafae
+Bb`bah`babca at dTcab`bah
+BTcab`bH```````adE
+A`b`bLacb`a`aa`b`b`Fafac
+Bb`a``bbbedDjnmobAgbaaaaeab`a`DfddbbTaaaaabaa
+Bb`bab`babca at dTcab`bab
+BTcab`bB`ddE
+A`b`bLalah`aa`b`b`b`a`aa`b`b`b`b`aa`b`b`b`d`aa`b`b`Fbeaai
+Bah``bbb`eBjeaB`oaaaaaeaah`BjjaTaaaaabaa
+Bb`bab`babca at dTcab`bab
+Bb`aac`bbbmdDjejebD``oobaaadeab`aacDjeejbTaaadadac
+Bb`bae`babca at dTcab`bae
+Bb`baf`bbbndHjejejejedH``oooooodaaageab`bafHjeejejejdTaaagafae
+Bb`bah`babca at dTcab`bah
+Bb`dai`bbbodPjejejejejejejejehP``oooooooooooooohaaajeab`daiPjeejejejejejejejhTaaajahag
+Bb`bak`babca at dTcab`bak
+BTcab`bF`````ddE
+A`b`bLaib`a`aa`b`b`b`b`aa`b`b`b`d`aa`b`b`Fb`aag
+Bb`a``bablaBloaaaaaeab`a`BlobTaaaaabaa
+Bb`bab`babca at dTcab`bab
+Bb`bac`babjaDlooobaaadeab`bacDlooodTaaadadac
+Bb`bae`babca at dTcab`bae
+Bb`daf`babkaHlooooooodaaageab`dafHlooooooohTaaagafae
+Bb`bah`babca at dTcab`bah
+BTcab`bG``````ddE
+Aab`bLaab`b`b`b`Fabaa
+Bb`baae`Aad`Tcab`baaE
+Aab`bLaab`a`b`b`Fabaa
+Bb`baao``Tcab`baaE
+Aab`dLaab`b`b`d`Fabaa
+Bb`daao``Tcab`daaE
+Aab`aLaaah`b`a`Fabaa
+Bb`aaao``Tcab`aaaE
+AaahLaab`a`ah`Fabaa
+Bahaan``TcaahaaE
+Aab`aLaab`b`b`a`Fabaa
+Bb`aaan``Tcab`aaaE
+Aab`bLaab`d`b`b`Fabaa
+Bb`baan``Tcab`baaE
+Aab`bLaab`a`b`b`Fabaa
+Bb`baa`a`Tcab`baaE
+Aab`dLaab`b`b`d`Fabaa
+Bb`daa`a`Tcab`daaE
+Aab`aLaaah`b`a`Fabaa
+Bb`aaa`a`Tcab`aaaE
 Abb`aLaab`a`b`a`b`a`Fabaa
 Bb`aaba`aa`Tcab`aabE
 Abb`bLaab`b`b`b`b`b`Fabaa
@@ -29,8 +269,6 @@ Abb`dLaab`d`b`d`b`d`Fabaa
 Bb`dabj``aaTcab`dabE
 AbahLadah`ah`b`b`b`b`b`b`ah`Faeaa
 Bb`babo``b`baco`aab`badj`abacahaen`adTcaahaeE
-Aab`bLaab`b`b`b`Fabaa
-Bb`baae`Aad`Tcab`baaE
 Abb`aLacb`a`b`b`b`b`b`b`b`a`Fadaa
 Bb`bab`a`b`baci`abaab`aadn`acTcab`aadE
 Abb`bLaab`b`b`b`b`b`Fabaa
@@ -63,12 +301,6 @@ Abb`dLaab`d`b`d`b`d`Fabaa
 Bb`dabe``aaTcab`dabE
 AbahLadah`ah`b`b`b`b`b`b`ah`Faeaa
 Bb`babo``b`baco`aab`bade`abacahaen`adTcaahaeE
-Aab`bLaab`a`b`b`Fabaa
-Bb`baao``Tcab`baaE
-Aab`dLaab`b`b`d`Fabaa
-Bb`daao``Tcab`daaE
-Aab`aLaaah`b`a`Fabaa
-Bb`aaao``Tcab`aaaE
 Abb`aLacb`a`b`b`b`b`b`b`b`a`Fadaa
 Bb`babo``b`bach`abaab`aadn`acTcab`aadE
 Abb`bLaab`b`b`b`b`b`Fabaa
@@ -93,236 +325,6 @@ Abb`dLaab`d`b`d`b`d`Fabaa
 Bb`dabb``aaTcab`dabE
 AbahLaaah`ah`ah`Fabaa
 Bahabb``aaTcaahabE
-A`b`bLb`cah`aa`b`b`ah`aa`b`b`ah`aa`b`b`ah`aa`b`b`b`a`aa`b`b`b`a`aa`b`b`b`a`aa`b`b`b`a`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`d`aa`b`b`b`d`aa`b`b`b`d`aa`b`b`b`d`aa`b`b`Fbaebab
-Bah``bbaeAaaAaaaaaaeaah`AbaTaaaaabaa
-Bb`bab`baan at dTcab`bab
-Bahac`bbaeAaaBooaaaadeaahac at aTaaadadac
-Bb`bae`baan at dTcab`bae
-Bahaf`bbaeBooaBooaaaageaahafBnoaTaaagafae
-Bb`bah`baan at dTcab`bah
-Bahai`bbaeBooaAaaaaajeaahai at aTaaajahag
-Bb`bak`baan at dTcab`bak
-Bb`aal`bbabAabAabaaameab`aalAbbTaaamajai
-Bb`ban`baan at dTcab`ban
-Bb`aao`bbabAabDoooobaab`aeab`aao at bTaab`aalak
-Bb`bbaa`baan at dTcab`bbaa
-Bb`abba`bbabDoooobDoooobaabcaeab`abbaDnooobTaabcaanam
-Bb`bbda`baan at dTcab`bbda
-Bb`abea`bbabDoooobAabaabfaeab`abea at bTaabfab`aao
-Bb`bbga`baan at dTcab`bbga
-Bb`bbha`bbacAadAadaabiaeab`bbhaAbdTaabiabbabaa
-Bb`bbja`baan at dTcab`bbja
-Bb`bbka`bbacAadHoooooooodaablaeab`bbka at dTaablabdabca
-Bb`bbma`baan at dTcab`bbma
-Bb`bbna`bbacHoooooooodHoooooooodaaboaeab`bbnaHnooooooodTaaboabfabea
-Bb`bb`b`baan at dTcab`bb`b
-Bb`bbab`bbacHoooooooodAadaabbbeab`bbab at dTaabbbbhabga
-Bb`bbcb`baan at dTcab`bbcb
-Bb`dbdb`bbadAahAahaabebeab`dbdbAbhTaabebbjabia
-Bb`bbfb`baan at dTcab`bbfb
-Bb`dbgb`bbadAahPoooooooooooooooohaabhbeab`dbgb at hTaabhbblabka
-Bb`bbib`baan at dTcab`bbib
-Bb`dbjb`bbadPoooooooooooooooohPoooooooooooooooohaabkbeab`dbjbPnooooooooooooooohTaabkbbnabma
-Bb`bblb`baan at dTcab`bblb
-Bb`dbmb`bbadPoooooooooooooooohAahaabnbeab`dbmb at hTaabnbb`bboa
-Bb`bbob`baan at dTcab`bbob
-BTcab`bAadE
-A`b`bLalah`aa`b`b`b`a`aa`b`b`b`b`aa`b`b`b`d`aa`b`b`Fbeaai
-Bah``bbaiBjeaAoaaaaaeaah`AjaTaaaaabaa
-Bb`bab`baan at dTcab`bab
-Bb`aac`bbafDlkjebD```obaaadeab`aacD```ebTaaadadac
-Bb`bae`baan at dTcab`bae
-Bb`baf`bbagHdcbalkjedG``````odaaageab`bafG``````jdTaaagafae
-Bb`bah`baan at dTcab`bah
-Bb`dai`bbahPdcbahgfedcbalkjehG``````ohaaajeab`daiG``````fhTaaajahag
-Bb`bak`baan at dTcab`bak
-BTcab`bE````ddE
-A`b`bLafah`aa`b`b`ah`aa`b`b`Fakae
-Bah``bbamBnoaAaaaaaaeaah`BooaTaaaaabaa
-Bb`bab`baan at dTcab`bab
-Bahac`bbamBngaAaaaaadeaahacBocaTaaadadac
-Bb`bae`baan at dTcab`bae
-BTcab`bE````adE
-A`b`bLaob`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`Fbjaak
-Bb`b``bdbbcHoooooooodAbd at dAddaaaaeab`b`CijbdTaaaaabaa
-Bb`bab`baan at dTcab`bab
-Bb`bac`bdbbcHoooooooodHoooooooodAadHoooooooodaaadeab`bacCbbcdTaaadadac
-Bb`bae`baan at dTcab`bae
-Bb`baf`bdbbcHooooooood at dAcdHnooooooodaaageab`bafCcjbdTaaagafae
-Bb`bah`baan at dTcab`bah
-Bb`bai`bdbbcHooooooood at dAcd@daaajeab`baiCcnbdTaaajahag
-Bb`bak`baan at dTcab`bak
-Bb`bal`bdbbcHooooooood at d@dHoooooooodaaameab`balBkbdTaaamajai
-Bb`ban`baan at dTcab`ban
-BTcab`bH```````ddE
-Adb`bLbmab`b`b`b`b`b`b`b`aa`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`Fbnaaa
-Baaadnab`b`aab`bae`aadaaafkab`baaabb`bagl`aeAbdb`bahoaafaeagaaaikab`b`aab`bajl`ahAddb`bakoaaiajahaaalnab`baaabb`baml`akAhdb`banoaalakamaaaoiab`b`acb`bb`al`anB`adb`bbaaoaaob`aanaabbagab`baaacb`bbcal`baaB`bdb`bbdaoabbabaabcaaabeaiab`babacb`bbfal`bdaB`ddb`bbgaoabeabdabfaaabhagab`b`acb`bbial`bgaB`hdb`bbjaoabhabiabgaaabkaeab`b`aab`bblal`bjaC``adb`bbmaoabkablabjaaabnaeab`baaabb`bboal`bmaC``bdb`bb`boabnabmaboaTcab`bb`bE
-A`b`bLagah`aa`b`b`ah`ah`aa`b`b`Falae
-Bah``bbbbaBnoaAadaaaaeaah`BogaTaaaaabaa
-Bb`bab`baan at dTcab`bab
-Bahac`bbaeBnoaAeaahad`bbbbaacAadaaaeeaahadAaaTaaaeadac
-Bb`baf`baan at dTcab`baf
-BTcab`bD```ddE
-A`b`bLb`cah`aa`b`b`ah`aa`b`b`ah`aa`b`b`ah`aa`b`b`b`a`aa`b`b`b`a`aa`b`b`b`a`aa`b`b`b`a`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`d`aa`b`b`b`d`aa`b`b`b`d`aa`b`b`b`d`aa`b`b`Fbaebab
-Bah``bbbfaBooaAaaaaaaeaah`BooaTaaaaabaa
-Bb`bab`baan at dTcab`bab
-Bahac`bbbfaBooaBooaaaadeaahacAaaTaaadadac
-Bb`bae`baan at dTcab`bae
-Bahaf`bbbfaAaaAaaaaageaahafAaaTaaagafae
-Bb`bah`baan at dTcab`bah
-Bahai`bbbfaBaaaBcbaaaajeaahaiBceaTaaajahag
-Bb`bak`baan at dTcab`bak
-Bb`aal`bbbcaDoooobAabaaameab`aalDoooobTaaamajai
-Bb`ban`baan at dTcab`ban
-Bb`aao`bbbcaDoooobDoooobaab`aeab`aaoAabTaab`aalak
-Bb`bbaa`baan at dTcab`bbaa
-Bb`abba`bbbcaAabAabaabcaeab`abbaAabTaabcaanam
-Bb`bbda`baan at dTcab`bbda
-Bb`abea`bbbcaBckbCgfcbaabfaeab`abeaDe`afbTaabfab`aao
-Bb`bbga`baan at dTcab`bbga
-Bb`bbha`bbbdaHoooooooodAadaabiaeab`bbhaHoooooooodTaabiabbabaa
-Bb`bbja`baan at dTcab`bbja
-Bb`bbka`bbbdaHoooooooodHoooooooodaablaeab`bbkaAadTaablabdabca
-Bb`bbma`baan at dTcab`bbma
-Bb`bbna`bbbdaAadAadaaboaeab`bbnaAadTaaboabfabea
-Bb`bb`b`baan at dTcab`bb`b
-Bb`bbab`bbbdaE`emkbdEhnmdmdaabbbeab`bbabH`h`jlgbgdTaabbbbhabga
-Bb`bbcb`baan at dTcab`bbcb
-Bb`dbdb`bbbeaPoooooooooooooooohAahaabebeab`dbdbPoooooooooooooooohTaabebbjabia
-Bb`bbfb`baan at dTcab`bbfb
-Bb`dbgb`bbbeaPoooooooooooooooohPoooooooooooooooohaabhbeab`dbgbAahTaabhbblabka
-Bb`bbib`baan at dTcab`bbib
-Bb`dbjb`bbbeaAahAahaabkbeab`dbjbAahTaabkbbnabma
-Bb`bblb`baan at dTcab`bblb
-Bb`dbmb`bbbeaImaghnanbdhIogjdckg`bhaabnbeab`dbmbPcfifjghokjjemflghTaabnbb`bboa
-Bb`bbob`baan at dTcab`bbob
-BTcab`bB`adE
-A`b`bLalah`aa`b`b`b`a`aa`b`b`b`b`aa`b`b`b`d`aa`b`b`Fbeaai
-Bah``bbbjaBjeaAoaaaaaeaah`BoeaTaaaaabaa
-Bb`bab`baan at dTcab`bab
-Bb`aac`bbbgaDlkjebD```obaaadeab`aacDlkjobTaaadadac
-Bb`bae`baan at dTcab`bae
-Bb`baf`bbbhaHdcbalkjedG``````odaaageab`bafHdcbalkoedTaaagafae
-Bb`bah`baan at dTcab`bah
-Bb`dai`bbbiaPdcbahgfedcbalkjehG``````ohaaajeab`daiPdcbahgoedcbalkjehTaaajahag
-Bb`bak`baan at dTcab`bak
-BTcab`bF`````adE
-A`b`bLaoah`aa`b`b`ah`aa`b`b`ah`aa`b`b`b`a`aa`b`b`b`a`aa`b`b`Fbjaak
-Bah``bbbibBooaAaaaaaaeaah`@aTaaaaabaa
-Bb`bab`baan at dTcab`bab
-Bahac`bbbkdBooaAaaaaadeaahac at aTaaadadac
-Bb`bae`baan at dTcab`bae
-Bahaf`bbbibAaaBooaaaageaahaf at aTaaagafae
-Bb`bah`baan at dTcab`bah
-Bb`aai`bbbfbDinmobAgbaaajeab`aaiDmooobTaaajahag
-Bb`bak`baan at dTcab`bak
-Bb`aal`bbbhdDinmobAgbaaameab`aalAfbTaaamajai
-Bb`ban`baan at dTcab`ban
-BTcab`bC``ddE
-A`b`bLbfaah`aa`b`b`ah`aa`b`b`ah`aa`b`b`ah`aa`b`b`ah`ah`aa`b`b`ah`aa`b`b`b`a`aa`b`b`Fbebao
-Bah``bbbnaAaaBooaaaaaeaah`BooaTaaaaabaa
-Bb`bab`baan at dTcab`bab
-Bahac`bbbnaBooaAaaaaadeaahacBooaTaaadadac
-Bb`bae`baan at dTcab`bae
-Bahaf`bbbnaBooaBooaaaageaahafAaaTaaagafae
-Bb`bah`baan at dTcab`bah
-Bahai`bbbnaAaaAaaaaajeaahaiAaaTaaajahag
-Bb`bak`baan at dTcab`bak
-Bahal`bbaeBnoaAeaaham`bbbnaAfaalaaaneaahamAbaTaaanajai
-Bb`bao`baan at dTcab`bao
-Bahb`a`bbbnaalAbaaabaaeaahb`aAaaTaabaaalak
-Bb`bbba`baan at dTcab`bbba
-Bb`abca`bbbkaDjnmobAgbaabdaeab`abcaDdkoobTaabdaanam
-Bb`bbea`baan at dTcab`bbea
-BTcab`bC``adE
-A`b`bLafb`b`aa`b`b`b`b`aa`b`b`Fakae
-Bb`b``bcbicAddAedAfdaaaaeab`b`AedTaaaaabaa
-Bb`bab`baan at dTcab`bab
-Bb`bac`bcbic at dAedAfdaaadeab`bacAfdTaaadadac
-Bb`bae`baan at dTcab`bae
-BTcab`bH```````hdE
-Acb`bLabb`b`b`b`b`b`aa`b`b`Facaa
-Baaacfab`b`@db`badoaacaaabTcab`badE
-A`b`bLaib`a`aa`b`b`b`b`aa`b`b`b`d`aa`b`b`Fb`aag
-Bb`a``bababBloaaaaaeab`a`DlooobTaaaaabaa
-Bb`bab`baan at dTcab`bab
-Bb`bac`baboaDjooobaaadeab`bacHjooooooodTaaadadac
-Bb`bae`baan at dTcab`bae
-Bb`daf`bab`bHjooooooodaaageab`dafPjooooooooooooooohTaaagafae
-Bb`bah`baan at dTcab`bah
-BTcab`bG``````adE
-A`b`bLalah`aa`b`b`ah`aa`b`b`ah`aa`b`b`b`a`aa`b`b`Fbeaai
-Bah``bbbebAaaAadaaaaeaah`AbaTaaaaabaa
-Bb`bab`baan at dTcab`bab
-Bahac`bbbebAaa at daaadeaahacAaaTaaadadac
-Bb`bae`baan at dTcab`bae
-Bahaf`bbbebBnoaAbdaaageaahafBhoaTaaagafae
-Bb`bah`baan at dTcab`bah
-Bb`aai`bbbbbDnojobAbdaaajeab`aaiDhoknbTaaajahag
-Bb`bak`baan at dTcab`bak
-BTcab`bD```adE
-A`b`bLbdbah`aa`b`b`ah`aa`b`b`ah`aa`b`b`b`a`aa`b`b`b`a`aa`b`b`b`a`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`d`aa`b`b`b`d`aa`b`b`b`d`aa`b`b`Fbmcbia
-Bah``bbbmbBooaAaaaaaaeaah`BnoaTaaaaabaa
-Bb`bab`baan at dTcab`bab
-Bahac`bbbmbAaaBooaaaadeaahacAbaTaaadadac
-Bb`bae`baan at dTcab`bae
-Bahaf`bbbmbAaaAaaaaageaahaf at aTaaagafae
-Bb`bah`baan at dTcab`bah
-Bb`aai`bbbjbDoooobAabaaajeab`aaiDnooobTaaajahag
-Bb`bak`baan at dTcab`bak
-Bb`aal`bbbjbAabDoooobaaameab`aalAbbTaaamajai
-Bb`ban`baan at dTcab`ban
-Bb`aao`bbbjbAabAabaab`aeab`aao at bTaab`aalak
-Bb`bbaa`baan at dTcab`bbaa
-Bb`bbba`bbbkbHoooooooodAadaabcaeab`bbbaHnooooooodTaabcaanam
-Bb`bbda`baan at dTcab`bbda
-Bb`bbea`bbbkbAadHoooooooodaabfaeab`bbeaAbdTaabfab`aao
-Bb`bbga`baan at dTcab`bbga
-Bb`bbha`bbbkbAadAadaabiaeab`bbha at dTaabiabbabaa
-Bb`bbja`baan at dTcab`bbja
-Bb`dbka`bbblbPoooooooooooooooohAahaablaeab`dbkaPnooooooooooooooohTaablabdabca
-Bb`bbma`baan at dTcab`bbma
-Bb`dbna`bbblbAahPoooooooooooooooohaaboaeab`dbnaAbhTaaboabfabea
-Bb`bb`b`baan at dTcab`bb`b
-Bb`dbab`bbblbAahAahaabbbeab`dbab at hTaabbbbhabga
-Bb`bbcb`baan at dTcab`bbcb
-BTcab`bAddE
-A`b`bLaiah`aa`b`b`b`a`aa`b`b`b`b`aa`b`b`Fb`aag
-Bah``babadDmnnobaaaaeaah`BmnaTaaaaabaa
-Bb`bab`baan at dTcab`bab
-Bb`aac`babbdHmnnomjnmdaaadeab`aacDmnnobTaaadadac
-Bb`bae`baan at dTcab`bae
-Bb`baf`babcdPonnkmnnomjnmonnkhaaageab`bafHonnkmnnodTaaagafae
-Bb`bah`baan at dTcab`bah
-BTcab`bH```````adE
-A`b`bLacb`a`aa`b`b`Fafac
-Bb`a``bbbddDjnmobAgbaaaaeab`a`DfddbbTaaaaabaa
-Bb`bab`baan at dTcab`bab
-BTcab`bB`ddE
-A`b`bLalah`aa`b`b`b`a`aa`b`b`b`b`aa`b`b`b`d`aa`b`b`Fbeaai
-Bah``bbbodBjeaB`oaaaaaeaah`BjjaTaaaaabaa
-Bb`bab`baan at dTcab`bab
-Bb`aac`bbbldDjejebD``oobaaadeab`aacDjeejbTaaadadac
-Bb`bae`baan at dTcab`bae
-Bb`baf`bbbmdHjejejejedH``oooooodaaageab`bafHjeejejejdTaaagafae
-Bb`bah`baan at dTcab`bah
-Bb`dai`bbbndPjejejejejejejejehP``oooooooooooooohaaajeab`daiPjeejejejejejejejhTaaajahag
-Bb`bak`baan at dTcab`bak
-BTcab`bF`````ddE
-A`b`bLaib`a`aa`b`b`b`b`aa`b`b`b`d`aa`b`b`Fb`aag
-Bb`a``babbeBloaaaaaeab`a`BlobTaaaaabaa
-Bb`bab`baan at dTcab`bab
-Bb`bac`bab`eDlooobaaadeab`bacDlooodTaaadadac
-Bb`bae`baan at dTcab`bae
-Bb`daf`babaeHlooooooodaaageab`dafHlooooooohTaaagafae
-Bb`bah`baan at dTcab`bah
-BTcab`bG``````ddE
-AaahLaab`a`ah`Fabaa
-Bahaan``TcaahaaE
-Aab`aLaab`b`b`a`Fabaa
-Bb`aaan``Tcab`aaaE
-Aab`bLaab`d`b`b`Fabaa
-Bb`baan``Tcab`baaE
 Abb`aLaab`a`b`a`b`a`Fabaa
 Bb`aabd``aaTcab`aabE
 Abb`bLaab`b`b`b`b`b`Fabaa
@@ -347,9 +349,7 @@ Abb`dLaab`d`b`d`b`d`Fabaa
 Bb`dabm`aa`Tcab`dabE
 AbahLaaah`ah`ah`Fabaa
 Bahabm`aa`TcaahabE
-Aab`bLaab`a`b`b`Fabaa
-Bb`baa`a`Tcab`baaE
-Aab`dLaab`b`b`d`Fabaa
-Bb`daa`a`Tcab`daaE
-Aab`aLaaah`b`a`Fabaa
-Bb`aaa`a`Tcab`aaaE
+Acb`bLabb`b`b`b`b`b`aa`b`b`Facaa
+Baaacfab`b`@db`badoaacaaabTcab`badE
+Adb`bLbmab`b`b`b`b`b`b`b`aa`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`Fbnaaa
+Baaadnab`b`aab`bae`aadaaafkab`baaabb`bagl`aeAbdb`bahoaafaeagaaaikab`b`aab`bajl`ahAddb`bakoaaiajahaaalnab`baaabb`baml`akAhdb`banoaalakamaaaoiab`b`acb`bb`al`anB`adb`bbaaoaaob`aanaabbagab`baaacb`bbcal`baaB`bdb`bbdaoabbabaabcaaabeaiab`babacb`bbfal`bdaB`ddb`bbgaoabeabdabfaaabhagab`b`acb`bbial`bgaB`hdb`bbjaoabhabiabgaaabkaeab`b`aab`bblal`bjaC``adb`bbmaoabkablabjaaabnaeab`baaabb`bboal`bmaC``bdb`bb`boabnabmaboaTcab`bb`bE
diff --git a/unit_tests/input/lsig.cbc b/unit_tests/input/lsig.cbc
index 52c695f..6c17475 100644
--- a/unit_tests/input/lsig.cbc
+++ b/unit_tests/input/lsig.cbc
@@ -1,11 +1,11 @@
 ClamBCaa`|``c``a```|`bjaabp`clamcoincidencejb
-Trojan.Foo.{A,B};Target:0;((0|1|2)=42,2);aabb;ffffffff;aaccee;f00d
-Tedebieebheebgeebfeebeeebdeebbeebaeebadebcdaa`acb`bbadb`bdb`db`bchbadbcebadbcebadbcebadbcecab`bdagahdaiahdaeahdabbaddabahdakah
+Trojan.Foo.{A,B};Target:2;(((0|1|2)=42,2)|(3=10));EP+0:aabb;ffff;aaccee;f00d;dead
+Tedebieebheebgeebfeebeeebdeebbeebaeebadebcdaa`acb`bbadb`bdb`db`bcjbadbcebadbcebadbcebadbcebadbcecab`bdagahdaeahdajahdabbaddabahdakah
 Eafaaafb`e|amcgefdgfgifbgegcgnfafmfef``
-Gd```hbeabieBdeBbgBofBjfBafBnfBnbBfdBofBof@`bheBad@`bheBbd@`bge at Aa@Ab`b`a@`b`aC``a`bfeBafBafBbfBbf@`beeBffBffBffBffBffBffBffBff@`bfeBffB`cB`cBdf@`bdeBafBafBcfBcfBefBef@`bbe at Af@@AgAa at AhAc@AiAb`bad at Aa`bad at Ab`bad at Af`bad at Ag`bad at Ah`bad at Ai`bcdAcD```h`bcdAbD```h`bcdAaD```h`bcd at D```h`
+Gd```hbhabieBdeBbgBofBjfBafBnfBnbBfdBofBof@`bheBad@`bheBbd@`bge at Aa@Ab`b`aAb`b`aC``a`bfeBedB`eBkbB`cBjcBafBafBbfBbf@`beeBffBffBffBff@`beeBffB`cB`cBdf@`bdeBafBafBcfBcfBefBef@`beeBdfBefBafBdf@`bbe at Af@@AgAa at AhAc@AiAb at AjAd`bad at Aa`bad at Ab`bad at Af`bad at Ag`bad at Ah`bad at Ai`bad at Aj`bcdAdD```h`bcdAcD```h`bcdAbD```h`bcdAaD```h`bcd at D```h`
 A`b`bLaeb`b`aa`aa`bad`b`b`Fahac
-Bb`b`gbBaa`aaaagab`b`AadTaaaaaaab
-Baaabeab`b`AbdbadacoaabAk`Al`b`badabbafac at dTcab`b at d
+Bb`b`gbBca`aaaagab`b`AadTaaaaaaab
+Baaabeab`b`AbdbadacoaabAl`Am`b`badabbafac at dTcab`b at d
 BTcab`b at dE
-A`aaLb`ab`b`b`b`b`b`b`b`b`b`aa`aa`aa`aa`b`b`b`b`b`b`b`b`b`b`aa`aa`Fbaaaa
-Bb`b`gbBda`b`baagbBca`b`babgbBba`b`baca`aa`b`bada`acabaaaeeab`badBjbdaaaffab`bab at daaagfab`baa at daaahfab`b`@db`bai`aafb`baj`aagb`bak`aahb`bala`ajakb`bama`alaiaaaneab`bamAbdaaaok`anaeTcaaaaoE
+A`aaLbcab`b`b`b`b`b`b`b`b`b`aa`aa`aa`aa`b`b`b`b`b`b`b`b`b`b`aa`aa`b`b`aa`aa`Fbdaaa
+Bb`b`gbBga`b`baagbBfa`b`babgbBea`b`baca`aa`b`bada`acabaaaeeab`badBjbdaaaffab`bab at daaagfab`baa at daaahfab`b`@db`bai`aafb`baj`aagb`bak`aahb`bala`ajakb`bama`alaiaaaneab`bamAbdaaaok`anaeb`bb`agbBda`aabaaeab`bb`aAjdaabbal`aobaaTcaaabbaE

-- 
Debian repository for ClamAV



More information about the Pkg-clamav-commits mailing list