From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1GISGL-0004Ue-6g for qemu-devel@nongnu.org; Wed, 30 Aug 2006 11:45:57 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1GISGI-0004Pq-Na for qemu-devel@nongnu.org; Wed, 30 Aug 2006 11:45:56 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1GISGI-0004PN-Hj for qemu-devel@nongnu.org; Wed, 30 Aug 2006 11:45:54 -0400 Received: from [66.133.182.167] (helo=relay04.roc.ny.frontiernet.net) by monty-python.gnu.org with esmtp (Exim 4.52) id 1GISPi-000128-Ko for qemu-devel@nongnu.org; Wed, 30 Aug 2006 11:55:39 -0400 Received: from localhost (67-137-85-135.dsl1.cok.tn.frontiernet.net [67.137.85.135]) by relay04.roc.ny.frontiernet.net (Postfix) with ESMTP id 51843101249 for ; Wed, 30 Aug 2006 15:45:50 +0000 (UTC) Date: Wed, 30 Aug 2006 10:45:49 -0500 From: Frederick Reeve Message-Id: <20060830104549.fe233e29.cylix@solace.info> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Multipart=_Wed__30_Aug_2006_10_45_49_-0500_KR0sJoPVTQ1wM=5R" Subject: [Qemu-devel] esd audio output patch and debuging. Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org This is a multi-part message in MIME format. --Multipart=_Wed__30_Aug_2006_10_45_49_-0500_KR0sJoPVTQ1wM=5R Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Hello. Attached you will find a patch for esd audio support in QEMU. It is more or less a large modification of audio/wavaudio.c. The patch will apply against the latest tarball release http://fabrice.bellard.free.fr/qemu/qemu-0.8.2.tar.gz (0.8.2 at the time of this writing). You will of course need libesd to compile this. To apply and test on linux/*nix simply: $ cd qemu-src-dir $ patch -Np1 -i path/to/patch/file $ ./configure --enable-esd $ make $ sudo make install $ export QEMU_AUDIO_DRV=esd $ qemu (your options here) -soundhw es1370 You will also need to make sure esd is running when you do that of course. Sorry if that is insulting your intelegence. I just wanted to make everything very clear. Now, I would not have you thinking this patch is a ready to go. I am writing this email because I am having a little trouble with this. It outputs sound fine but it produces artafacts. I'm not sure of the cause. Though I think it may have to do with frame alignment or with the conversion process (see code). It sounds like its clipping at high sample volume but this is the first time I have done anything with audio programing. I had planed to submit a completed patch but... anyway if anyone can point me in the right direction I would appreciate it. Alternately if you just want to fix it that would be great to. :-) Just a note also on esd as far as I can tell it only supports 8 and 16 bit unsigned. You may be wondering why with all the sound support options qemu has that I would want to write another one. Here is the logic. I am running an LTSP server setup. The servers I use have no sound card at all. Yet all the programs run on that server. The clients however have sound cards. None of QEMUs sound outputs will work without a sound card with the exeption of wav. None of QEMUs sound outputs can be broadcast over a network to clients but esd can. In short esd support allows me to run many QEMU copies on a server and output the audio to client terminals with out the server even having a sound card. esd is old but its about the only well supported option for network audio output in both linux distros and LTSP. Background: I am maintaining LTSP servers for small elementy schools with "no budget". I currently maintain these networks for free to help with education though they may be offering me a job in the future. The teachers require a small few windows programs that do not run under wine. So I pipe qemu over the thin terms and use gdm so when they log into a qemu session it just pulls up windows full screen. Howerver they have resently needed sound and yes they actualy need it (though I whish I could say they didn't). School will be starting on september 4 and I am trying to be ready. Anyway if you have any questions or I can help at all let me know. If you can see what is wrong or have sugestions I welcome help. Also if you know of a better way that I would be happy to here it but after looking at our situation I think this sound module is the path of least resistance. I thank you also for QEMU it has been a huge boon to the schools. Thanks Frederick --Multipart=_Wed__30_Aug_2006_10_45_49_-0500_KR0sJoPVTQ1wM=5R Content-Type: application/octet-stream; name="qemu-0.8.2-esd.patch" Content-Disposition: attachment; filename="qemu-0.8.2-esd.patch" Content-Transfer-Encoding: base64 ZGlmZiAtTnJ1IHFlbXUtMC44LjIvYXVkaW8vYXVkaW8uYyBxZW11LTAuOC4yLm5ldy9hdWRpby9h dWRpby5jCi0tLSBxZW11LTAuOC4yL2F1ZGlvL2F1ZGlvLmMJMjAwNi0wNy0yMiAxMjoyMzozNC4w MDAwMDAwMDAgLTA1MDAKKysrIHFlbXUtMC44LjIubmV3L2F1ZGlvL2F1ZGlvLmMJMjAwNi0wOC0y OSAyMTo0MjoxNy4wMDAwMDAwMDAgLTA1MDAKQEAgLTQ2LDYgKzQ2LDkgQEAKICNpZmRlZiBDT05G SUdfRFNPVU5ECiAgICAgJmRzb3VuZF9hdWRpb19kcml2ZXIsCiAjZW5kaWYKKyNpZmRlZiBDT05G SUdfRVNECisgICAgJmVzZF9hdWRpb19kcml2ZXIsCisjZW5kaWYKICNpZmRlZiBDT05GSUdfRk1P RAogICAgICZmbW9kX2F1ZGlvX2RyaXZlciwKICNlbmRpZgpkaWZmIC1OcnUgcWVtdS0wLjguMi9h dWRpby9hdWRpb19pbnQuaCBxZW11LTAuOC4yLm5ldy9hdWRpby9hdWRpb19pbnQuaAotLS0gcWVt dS0wLjguMi9hdWRpby9hdWRpb19pbnQuaAkyMDA2LTA3LTIyIDEyOjIzOjM0LjAwMDAwMDAwMCAt MDUwMAorKysgcWVtdS0wLjguMi5uZXcvYXVkaW8vYXVkaW9faW50LmgJMjAwNi0wOC0yOSAyMToy NzozMS4wMDAwMDAwMDAgLTA1MDAKQEAgLTIwMCw2ICsyMDAsNyBAQAogZXh0ZXJuIHN0cnVjdCBh dWRpb19kcml2ZXIgd2F2X2F1ZGlvX2RyaXZlcjsKIGV4dGVybiBzdHJ1Y3QgYXVkaW9fZHJpdmVy IGZtb2RfYXVkaW9fZHJpdmVyOwogZXh0ZXJuIHN0cnVjdCBhdWRpb19kcml2ZXIgYWxzYV9hdWRp b19kcml2ZXI7CitleHRlcm4gc3RydWN0IGF1ZGlvX2RyaXZlciBlc2RfYXVkaW9fZHJpdmVyOwog ZXh0ZXJuIHN0cnVjdCBhdWRpb19kcml2ZXIgY29yZWF1ZGlvX2F1ZGlvX2RyaXZlcjsKIGV4dGVy biBzdHJ1Y3QgYXVkaW9fZHJpdmVyIGRzb3VuZF9hdWRpb19kcml2ZXI7CiBleHRlcm4gdm9sdW1l X3Qgbm9taW5hbF92b2x1bWU7CmRpZmYgLU5ydSBxZW11LTAuOC4yL2F1ZGlvL2VzZGF1ZGlvLmMg cWVtdS0wLjguMi5uZXcvYXVkaW8vZXNkYXVkaW8uYwotLS0gcWVtdS0wLjguMi9hdWRpby9lc2Rh dWRpby5jCTE5NjktMTItMzEgMTg6MDA6MDAuMDAwMDAwMDAwIC0wNjAwCisrKyBxZW11LTAuOC4y Lm5ldy9hdWRpby9lc2RhdWRpby5jCTIwMDYtMDgtMjkgMjM6MjA6NTYuMDAwMDAwMDAwIC0wNTAw CkBAIC0wLDAgKzEsMjM1IEBACisvKgorICogUUVNVSBFU0QgYXVkaW8gZHJpdmVyCisgKgorICog Q29weXJpZ2h0IChjKSAyMDA2IFZhc3NpbGkgS2FycG92IChtYWxjKSArIEZyZWRlcmljayBSZWV2 ZQorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0 byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFz c29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCisg KiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQg bGltaXRhdGlvbiB0aGUgcmlnaHRzCisgKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1 Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCisgKiBjb3BpZXMgb2Yg dGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUg aXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz c2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3Rh bnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQ Uk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9S CisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT IE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF IEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBP UiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBP VEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9S VCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9O IFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KKyAqIFRI RSBTT0ZUV0FSRS4KKyAqLworI2luY2x1ZGUgInZsLmgiCisKKyNkZWZpbmUgQVVESU9fQ0FQICJl c2QiCisKKyNpbmNsdWRlICJhdWRpb19pbnQuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1 ZGUgPGVzZC5oPgorCit0eXBlZGVmIHN0cnVjdCBFU0RWb2ljZU91dCB7CisgICAgSFdWb2ljZU91 dCBodzsKKyAgICBpbnQ2NF90IG9sZF90aWNrczsKKyAgICB2b2lkICpwY21fYnVmOworfSBFU0RW b2ljZU91dDsKKworc3RhdGljIHN0cnVjdCB7CisgICAgYXVkc2V0dGluZ3NfdCBzZXR0aW5nczsK KwlpbnQgZXNkX19vdXRfc29jazsKKwlpbnQgZXNkX19vdXRfY2hhbm5lbHM7CisJaW50IGVzZF9f b3V0X2JpdHM7CisJaW50IGVzZF9fb3V0X3JhdGU7CisJaW50IGVzZF9fb3V0X21vZGU7CisJaW50 IGVzZF9fb3V0X2Z1bmM7CisJZXNkX2Zvcm1hdF90IGVzZF9fb3V0X2Zvcm1hdDsKK30gY29uZiA9 IHsKKyAgICB7CisgICAgICAgIDQ0MTAwLAorICAgICAgICAxLAorICAgICAgICBBVURfRk1UX1U4 CisgICAgfSwKKyAgICAwLAorCUVTRF9NT05PLAorCUVTRF9CSVRTOCwKKwk0NDEwMCwKKwlFU0Rf U1RSRUFNLAorCUVTRF9QTEFZLAorCTAKK307CisKK3N0YXRpYyBpbnQgZXNkX3J1bl9vdXQgKEhX Vm9pY2VPdXQgKmh3KQoreworICAgIEVTRFZvaWNlT3V0ICplc2QgPSAoRVNEVm9pY2VPdXQgKikg aHc7CisgICAgaW50IHJwb3MsIGxpdmUsIGRlY3IsIHNhbXBsZXM7CisgICAgdWludDhfdCAqZHN0 OworICAgIHN0X3NhbXBsZV90ICpzcmM7CisgICAgaW50NjRfdCBub3cgPSBxZW11X2dldF9jbG9j ayAodm1fY2xvY2spOworICAgIGludDY0X3QgdGlja3MgPSBub3cgLSBlc2QtPm9sZF90aWNrczsK KyAgICBpbnQ2NF90IGJ5dGVzID0gKHRpY2tzICogaHctPmluZm8uYnl0ZXNfcGVyX3NlY29uZCkg LyB0aWNrc19wZXJfc2VjOworCisgICAgaWYgKGJ5dGVzID4gSU5UX01BWCkgeworICAgICAgICBz YW1wbGVzID0gSU5UX01BWCA+PiBody0+aW5mby5zaGlmdDsKKyAgICB9CisgICAgZWxzZSB7Cisg ICAgICAgIHNhbXBsZXMgPSBieXRlcyA+PiBody0+aW5mby5zaGlmdDsKKyAgICB9CisKKyAgICBs aXZlID0gYXVkaW9fcGNtX2h3X2dldF9saXZlX291dCAoaHcpOworICAgIGlmICghbGl2ZSkgewor ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBlc2QtPm9sZF90aWNrcyA9IG5vdzsKKyAg ICBkZWNyID0gYXVkaW9fTUlOIChsaXZlLCBzYW1wbGVzKTsKKyAgICBzYW1wbGVzID0gZGVjcjsK KyAgICBycG9zID0gaHctPnJwb3M7CisgICAgd2hpbGUgKHNhbXBsZXMpIHsKKyAgICAgICAgaW50 IGxlZnRfdGlsbF9lbmRfc2FtcGxlcyA9IGh3LT5zYW1wbGVzIC0gcnBvczsKKyAgICAgICAgaW50 IGNvbnZlcnRfc2FtcGxlcyA9IGF1ZGlvX01JTiAoc2FtcGxlcywgbGVmdF90aWxsX2VuZF9zYW1w bGVzKTsKKworICAgICAgICBzcmMgPSBody0+bWl4X2J1ZiArIHJwb3M7CisgICAgICAgIGRzdCA9 IGFkdmFuY2UgKGVzZC0+cGNtX2J1ZiwgcnBvcyA8PCBody0+aW5mby5zaGlmdCk7CisKKyAgICAg ICAgaHctPmNsaXAgKGRzdCwgc3JjLCBjb252ZXJ0X3NhbXBsZXMpOworCQkKKwkJd3JpdGUgKGNv bmYuZXNkX19vdXRfc29jaywgZHN0LCBjb252ZXJ0X3NhbXBsZXMgPDwgaHctPmluZm8uc2hpZnQp OworCQkKKyAgICAgICAgcnBvcyA9IChycG9zICsgY29udmVydF9zYW1wbGVzKSAlIGh3LT5zYW1w bGVzOworICAgICAgICBzYW1wbGVzIC09IGNvbnZlcnRfc2FtcGxlczsKKyAgICB9CisKKyAgICBo dy0+cnBvcyA9IHJwb3M7CisgICAgcmV0dXJuIGRlY3I7Cit9CisKK3N0YXRpYyBpbnQgZXNkX3dy aXRlX291dCAoU1dWb2ljZU91dCAqc3csIHZvaWQgKmJ1ZiwgaW50IGxlbikKK3sKKyAgICByZXR1 cm4gYXVkaW9fcGNtX3N3X3dyaXRlIChzdywgYnVmLCBsZW4pOworfQorCitzdGF0aWMgaW50IGVz ZF9pbml0X291dCAoSFdWb2ljZU91dCAqaHcsIGF1ZHNldHRpbmdzX3QgKmFzKQoreworCUVTRFZv aWNlT3V0ICplc2QgPSAoRVNEVm9pY2VPdXQgKikgaHc7CisgICAgYXVkc2V0dGluZ3NfdCBlc2Rf X2FzID0gY29uZi5zZXR0aW5nczsKKworICAgICh2b2lkKSBhczsKKworICAgIGNvbmYuZXNkX19v dXRfY2hhbm5lbHMgPSAoZXNkX19hcy5uY2hhbm5lbHMgPT0gMikgPyBFU0RfU1RFUkVPIDogRVNE X01PTk87CisJCisJLyogIyMjZml4LW1lIyMjIHNob3VsZCB0aHJvdWdoIGFuIGVycm9yIGlmIHdl IGdldCBhIHNpZ25lZCB0eXBlICovCisgICAgc3dpdGNoIChlc2RfX2FzLmZtdCkgeworCWNhc2Ug QVVEX0ZNVF9TODoKKyAgICBjYXNlIEFVRF9GTVRfVTg6CisgICAgICAgIGNvbmYuZXNkX19vdXRf Yml0cyA9IEVTRF9CSVRTODsKKy8qCQljb25mLmVzZF9fYnl0ZXNfcGVyX2ZyYW1lID0gZXNkX19h cy5uY2hhbm5lbHM7ICovCisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBVURfRk1UX1MxNjoK KyAgICBjYXNlIEFVRF9GTVRfVTE2OgorCQljb25mLmVzZF9fb3V0X2JpdHMgPSBFU0RfQklUUzE2 OworLyoJCWNvbmYuZXNkX19ieXRlc19wZXJfZnJhbWUgPSAoZXNkX19hcy5uY2hhbm5lbHMgKiAy KTsgKi8KKyAgICAgICAgYnJlYWs7CisgICAgfQorCisJY29uZi5lc2RfX291dF9mb3JtYXQgPSBj b25mLmVzZF9fb3V0X2JpdHMgfCBjb25mLmVzZF9fb3V0X2NoYW5uZWxzIHwgY29uZi5lc2RfX291 dF9tb2RlIHwgY29uZi5lc2RfX291dF9mdW5jOworCWNvbmYuZXNkX19vdXRfcmF0ZSA9IChpbnQp IGNvbmYuc2V0dGluZ3MuZnJlcTsKKyAgICBlc2RfX2FzLmVuZGlhbm5lc3MgPSAwOworICAgIGF1 ZGlvX3BjbV9pbml0X2luZm8gKCZody0+aW5mbywgJmVzZF9fYXMpOworCisJCisgICAgaHctPnNh bXBsZXMgPSAyMDQ4OyAgLyogMTAyNCAqLworICAgIGVzZC0+cGNtX2J1ZiA9IGF1ZGlvX2NhbGxv YyAoQVVESU9fRlVOQywgaHctPnNhbXBsZXMsIDEgPDwgaHctPmluZm8uc2hpZnQpOworICAgIGlm ICghZXNkLT5wY21fYnVmKSB7CisgICAgICAgIGRvbG9nICgiQ291bGQgbm90IGFsbG9jYXRlIGJ1 ZmZlciAoJWQgYnl0ZXMpXG4iLAorICAgICAgICAgICAgICAgaHctPnNhbXBsZXMgPDwgaHctPmlu Zm8uc2hpZnQpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCQorCWNvbmYuZXNkX19vdXRf c29jayA9IGVzZF9wbGF5X3N0cmVhbSAoY29uZi5lc2RfX291dF9mb3JtYXQsIGNvbmYuZXNkX19v dXRfcmF0ZSwgTlVMTCwgKGNoYXIgKikgTlVMTCk7CisJCisgICAgaWYgKCFjb25mLmVzZF9fb3V0 X3NvY2spIHsKKwkJLyogRmFpbGVkIHRvIG9wZW4gZXNkIHNvY2tldCAqLworICAgICAgICBxZW11 X2ZyZWUgKGVzZC0+cGNtX2J1Zik7CisgICAgICAgIGVzZC0+cGNtX2J1ZiA9IE5VTEw7CisgICAg ICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQg ZXNkX2Zpbmlfb3V0IChIV1ZvaWNlT3V0ICpodykKK3sKKyAgICBFU0RWb2ljZU91dCAqZXNkID0g KEVTRFZvaWNlT3V0ICopIGh3OworCisgICAgaWYgKCFjb25mLmVzZF9fb3V0X3NvY2spIHsKKyAg ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNsb3NlIChjb25mLmVzZF9fb3V0X3NvY2spOwor ICAgIGNvbmYuZXNkX19vdXRfc29jayA9IDA7CisKKyAgICBxZW11X2ZyZWUgKGVzZC0+cGNtX2J1 Zik7CisgICAgZXNkLT5wY21fYnVmID0gTlVMTDsKK30KKworc3RhdGljIGludCBlc2RfY3RsX291 dCAoSFdWb2ljZU91dCAqaHcsIGludCBjbWQsIC4uLikKK3sKKyAgICAodm9pZCkgaHc7CisgICAg KHZvaWQpIGNtZDsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgKmVzZF9hdWRpb19p bml0ICh2b2lkKQoreworICAgIHJldHVybiAmY29uZjsKK30KKworc3RhdGljIHZvaWQgZXNkX2F1 ZGlvX2ZpbmkgKHZvaWQgKm9wYXF1ZSkKK3sKKyAgICAodm9pZCkgb3BhcXVlOworICAgIGxkZWJ1 ZyAoImVzZF9maW5pIik7Cit9CisKK3N0cnVjdCBhdWRpb19vcHRpb24gZXNkX29wdGlvbnNbXSA9 IHsKKyAgICB7IkZSRVFVRU5DWSIsIEFVRF9PUFRfSU5ULCAmY29uZi5zZXR0aW5ncy5mcmVxLAor ICAgICAiRnJlcXVlbmN5IiwgTlVMTCwgMH0sCisKKy8qICAgIHsiRk9STUFUIiwgQVVEX09QVF9G TVQsICZjb25mLnNldHRpbmdzLmZtdCwKKyAgICAgIkZvcm1hdCIsIE5VTEwsIDB9LCAqLworCisg ICAgeyJEQUNfRklYRURfQ0hBTk5FTFMiLCBBVURfT1BUX0lOVCwgJmNvbmYuc2V0dGluZ3MubmNo YW5uZWxzLAorICAgICAiTnVtYmVyIG9mIGNoYW5uZWxzICgxIC0gbW9ubywgMiAtIHN0ZXJlbyki LCBOVUxMLCAwfSwKKworICAgIHtOVUxMLCAwLCBOVUxMLCBOVUxMLCBOVUxMLCAwfQorfTsKKwor c3RydWN0IGF1ZGlvX3BjbV9vcHMgZXNkX3BjbV9vcHMgPSB7CisgICAgZXNkX2luaXRfb3V0LAor ICAgIGVzZF9maW5pX291dCwKKyAgICBlc2RfcnVuX291dCwKKyAgICBlc2Rfd3JpdGVfb3V0LAor ICAgIGVzZF9jdGxfb3V0LAorCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAg TlVMTCwKKyAgICBOVUxMCit9OworCitzdHJ1Y3QgYXVkaW9fZHJpdmVyIGVzZF9hdWRpb19kcml2 ZXIgPSB7CisgICAgSU5JVF9GSUVMRCAobmFtZSAgICAgICAgICAgPSApICJlc2QiLAorICAgIElO SVRfRklFTEQgKGRlc2NyICAgICAgICAgID0gKQorICAgICJlc2QgbmV0d29ya2VkIGF1ZGlvIG1p eGluZyIsCisgICAgSU5JVF9GSUVMRCAob3B0aW9ucyAgICAgICAgPSApIGVzZF9vcHRpb25zLAor ICAgIElOSVRfRklFTEQgKGluaXQgICAgICAgICAgID0gKSBlc2RfYXVkaW9faW5pdCwKKyAgICBJ TklUX0ZJRUxEIChmaW5pICAgICAgICAgICA9ICkgZXNkX2F1ZGlvX2ZpbmksCisgICAgSU5JVF9G SUVMRCAocGNtX29wcyAgICAgICAgPSApICZlc2RfcGNtX29wcywKKyAgICBJTklUX0ZJRUxEIChj YW5fYmVfZGVmYXVsdCA9ICkgMCwKKyAgICBJTklUX0ZJRUxEIChtYXhfdm9pY2VzX291dCA9ICkg MSwKKyAgICBJTklUX0ZJRUxEIChtYXhfdm9pY2VzX2luICA9ICkgMCwKKyAgICBJTklUX0ZJRUxE ICh2b2ljZV9zaXplX291dCA9ICkgc2l6ZW9mIChFU0RWb2ljZU91dCksCisgICAgSU5JVF9GSUVM RCAodm9pY2Vfc2l6ZV9pbiAgPSApIDAKK307CmRpZmYgLU5ydSBxZW11LTAuOC4yL2NvbmZpZ3Vy ZSBxZW11LTAuOC4yLm5ldy9jb25maWd1cmUKLS0tIHFlbXUtMC44LjIvY29uZmlndXJlCTIwMDYt MDctMjIgMTI6MjM6MzQuMDAwMDAwMDAwIC0wNTAwCisrKyBxZW11LTAuOC4yLm5ldy9jb25maWd1 cmUJMjAwNi0wOC0yOSAyMDo1MjoyMS4wMDAwMDAwMDAgLTA1MDAKQEAgLTgxLDYgKzgxLDcgQEAK IGRzb3VuZD0ibm8iCiBjb3JlYXVkaW89Im5vIgogYWxzYT0ibm8iCitlc2Q9Im5vIgogZm1vZD0i bm8iCiBmbW9kX2xpYj0iIgogZm1vZF9pbmM9IiIKQEAgLTIwNyw2ICsyMDgsOCBAQAogICA7Owog ICAtLWVuYWJsZS1kc291bmQpIGRzb3VuZD0ieWVzIgogICA7OworICAtLWVuYWJsZS1lc2QpIGVz ZD0ieWVzIgorICA7OwogICAtLWVuYWJsZS1mbW9kKSBmbW9kPSJ5ZXMiCiAgIDs7CiAgIC0tZm1v ZC1saWI9KikgZm1vZF9saWI9IiRvcHRhcmciCkBAIC0yODIsNiArMjg1LDcgQEAKIGVjaG8gIiAg LS1lbmFibGUtYWRsaWIgICAgICAgICAgIGVuYWJsZSBBZGxpYiBlbXVsYXRpb24iCiBlY2hvICIg IC0tZW5hYmxlLWNvcmVhdWRpbyAgICAgICBlbmFibGUgQ29yZWF1ZGlvIGF1ZGlvIGRyaXZlciIK IGVjaG8gIiAgLS1lbmFibGUtYWxzYSAgICAgICAgICAgIGVuYWJsZSBBTFNBIGF1ZGlvIGRyaXZl ciIKK2VjaG8gIiAgLS1lbmFibGUtZXNkICAgICAgICAgICAgIGVuYWJsZSBlc2QgYXVkaW8iCiBl Y2hvICIgIC0tZW5hYmxlLWZtb2QgICAgICAgICAgICBlbmFibGUgRk1PRCBhdWRpbyBkcml2ZXIi CiBlY2hvICIgIC0tZW5hYmxlZC1kc291bmQgICAgICAgICBlbmFibGUgRGlyZWN0U291bmQgYXVk aW8gZHJpdmVyIgogZWNobyAiICAtLWVuYWJsZS1zeXN0ZW0gICAgICAgICAgZW5hYmxlIGFsbCBz eXN0ZW0gZW11bGF0aW9uIHRhcmdldHMiCkBAIC01NDUsNiArNTQ5LDcgQEAKIGVjaG8gIkNvcmVB dWRpbyBzdXBwb3J0ICRjb3JlYXVkaW8iCiBlY2hvICJBTFNBIHN1cHBvcnQgICAgICAkYWxzYSIK IGVjaG8gIkRTb3VuZCBzdXBwb3J0ICAgICRkc291bmQiCitlY2hvICJFU0Qgc3VwcG9ydCAgICAg ICAkZXNkIgogaWYgdGVzdCAiJGZtb2QiID0gInllcyI7IHRoZW4KICAgICBpZiB0ZXN0IC16ICRm bW9kX2xpYiB8fCB0ZXN0IC16ICRmbW9kX2luYzsgdGhlbgogICAgICAgICBlY2hvCkBAIC02OTQs NiArNjk5LDEwIEBACiAgIGVjaG8gIkNPTkZJR19EU09VTkQ9eWVzIiA+PiAkY29uZmlnX21hawog ICBlY2hvICIjZGVmaW5lIENPTkZJR19EU09VTkQgMSIgPj4gJGNvbmZpZ19oCiBmaQoraWYgdGVz dCAiJGVzZCIgPSAieWVzIiA7IHRoZW4KKyAgZWNobyAiQ09ORklHX0VTRD15ZXMiID4+ICRjb25m aWdfbWFrCisgIGVjaG8gIiNkZWZpbmUgQ09ORklHX0VTRCAxIiA+PiAkY29uZmlnX2gKK2ZpCiBp ZiB0ZXN0ICIkZm1vZCIgPSAieWVzIiA7IHRoZW4KICAgZWNobyAiQ09ORklHX0ZNT0Q9eWVzIiA+ PiAkY29uZmlnX21hawogICBlY2hvICJDT05GSUdfRk1PRF9MSUI9JGZtb2RfbGliIiA+PiAkY29u ZmlnX21hawpkaWZmIC1OcnUgcWVtdS0wLjguMi9NYWtlZmlsZS50YXJnZXQgcWVtdS0wLjguMi5u ZXcvTWFrZWZpbGUudGFyZ2V0Ci0tLSBxZW11LTAuOC4yL01ha2VmaWxlLnRhcmdldAkyMDA2LTA3 LTIyIDEyOjIzOjM0LjAwMDAwMDAwMCAtMDUwMAorKysgcWVtdS0wLjguMi5uZXcvTWFrZWZpbGUu dGFyZ2V0CTIwMDYtMDgtMjkgMjE6MDY6MDguMDAwMDAwMDAwIC0wNTAwCkBAIC0zMTQsNiArMzE0 LDEwIEBACiBBVURJT0RSViArPSBkc291bmRhdWRpby5vCiBMSUJTICs9IC1sb2xlMzIgLWxkeGd1 aWQKIGVuZGlmCitpZmRlZiBDT05GSUdfRVNECitBVURJT0RSViArPSBlc2RhdWRpby5vCitMSUJT ICs9IC1sZXNkCitlbmRpZgogaWZkZWYgQ09ORklHX0ZNT0QKIEFVRElPRFJWICs9IGZtb2RhdWRp by5vCiBhdWRpby5vIGZtb2RhdWRpby5vOiBERUZJTkVTIDo9IC1JJChDT05GSUdfRk1PRF9JTkMp ICQoREVGSU5FUykKQEAgLTUzOSw2ICs1NDMsNiBAQAogCiBpZmVxICgxLCAwKQogYXVkaW8ubyBz ZGxhdWRpby5vIGRzb3VuZGF1ZGlvLm8gb3NzYXVkaW8ubyB3YXZhdWRpby5vIG5vYXVkaW8ubyBc Ci1mbW9kYXVkaW8ubyBhbHNhYXVkaW8ubyBtaXhlbmcubyBzYjE2Lm8gZXMxMzcwLm8gZ3VzLm8g YWRsaWIubzogXAorZm1vZGF1ZGlvLm8gYWxzYWF1ZGlvLm8gZXNkYXVkaW8ubyBtaXhlbmcubyBz YjE2Lm8gZXMxMzcwLm8gZ3VzLm8gYWRsaWIubzogXAogQ0ZMQUdTIDo9ICQoQ0ZMQUdTKSAtV2Fs bCAtV2Vycm9yIC1XIC1Xc2lnbi1jb21wYXJlCiBlbmRpZgo= --Multipart=_Wed__30_Aug_2006_10_45_49_-0500_KR0sJoPVTQ1wM=5R--