Re: Swap Compression

rmoser (mlmoser@comcast.net)
Mon, 28 Apr 2003 22:58:46 -0400


This is a MIME-formatted message. If you see this text it means that your
E-mail software does not support MIME-formatted messages.

--=_courier-4997-1051586786-0001-2
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

*********** REPLY SEPARATOR ***********

On 4/28/2003 at 6:25 PM Timothy Miller wrote:

>rmoser wrote:
>
>>So what's the best way to do this? I was originally thinking like this:
>>
>>Grab some swap data
>>Stuff it into fcomp_push()
>>When you have 100k of data, seal it up
>>Write that 100k block
>>
>>But does swap compress in 64k blocks? 80x86 has 64k segments.
>>The calculation for compression performance loss, 256/size_of_input,
>>gives a loss of 0.003906 (0.3906%) for a dataset 65536 bytes long.
>>So would it be better to just compress segments, whatever size they
>>may be, and index those? This would, of course, be much more efficient
>>in terms of finding the data to uncompress. (And system dependant)
>>
>>
>We're not using DOS here. x86 has arbitrarily-sized segments. It is
>the PAGES you want to swap, and they are typically 4k.
>
>
>BTW, I see swap compression as being more valuable for over-loaded
>servers than for PDA's. Yes, I see the advantage for a PDA, but you
>only get any significant benefit out of this if you have the horsepower
>and RAM required for doing heavy-weight compression. If you can't
>compress a page very much, you don't benefit much from swapping it to RAM.

Feh. Selectable compression is the eventual goal. If you want serious
heavy-weight compression, go with fcomp2. Ahh heck I'll attatch the
.plan file for fcomp2; this is rediculously RAM and CPU intensive in good
implimentation, so don't even think for a second that you'll want to use
this on your cpu-overloaded boxen.

And no implimenting this right away, it's too much to code!

--Bluefox Icy

--=_courier-4997-1051586786-0001-2
Content-Type: application/octet-stream; name="__fcomp2.plan"
Content-Transfer-Encoding: base64
Content-disposition: attachment; filename=__fcomp2.plan

ZmNvbXAKRm94IENvbXByZXNzaW9uIDI6ICBTaXplIGlzIGV2ZXJ5dGhpbmcK
CmJ5IEJsdWVmb3ggSWN5CgpUaGlzIGFsZ29yaXRtIGlzIGNvcHlyaWdodCBC
bHVlZm94IEljeSB1bmRlciB0aGUgTEdQTCBhcyBpdCBleGlzdHMgb24gQXBy
aWwKMjgsIDIwMDMuICBMR1BMIHYyLjAKCkRlZmluaXRpb25zOgogIEJhc2Ug
MDogIEEgbnVtYmVyIHRoYXQgc3RhcnRzIGF0IDAuICBTbyAxIGJ5dGUgYmFz
ZSAwIGNvdW50ZXJzIGFyZSByYW5nZWQKICBmcm9tIDAgdG8gMjU1LgoKICBC
YXNlIDE6ICBBIG51bWJlciB0aGF0IHN0YXJ0cyBhdCAxLiAgU28gMSBieXRl
IGJhc2UgMSBjb3VudGVycyBhcmUgcmFuZ2VkCiAgZnJvbSAxIHRvIDI1Niwg
d2l0aCAweDAwIGJlaW5nIDEgYW5kIDB4MDEgYmVpbmcgMiBhbmQgMHhGRiBi
ZWluZyAyNTYuCgogIE9yZGVyIG9mIFJlZHVuZGFuY3k6ICBBIG51bWVyaWMg
Y291bnQgb2YgaG93IG11Y2ggYSBzcGVjaWZpYyBzdHJpbmcgaXMgdXNlZAog
IHRvIHJlZmVyZW5jZSBvdGhlciBkYXRhIGluIGEgZmlsZSdzIGNvbXByZXNz
ZWQgb3V0cHV0LgoKZmNvbXAgdXNlcyBhIGNvbXByZXNzaW9uIGFsZ29yaXRo
bSB0aGF0IGlzIGZvY3Vzc2VkIG9uIHNwZWVkIG9ubHkuICBJdCB1c2VzCmxp
dHRsZSBSQU0sIGFuZCB3YXMgaW50ZW5kZWQgZm9yIGtlcm5lbC1sZXZlbCBS
QU0gY29tcHJlc3Npb24gYW5kIGZvciBwYWNraW5nCmV4ZWN1dGFibGUgZmls
ZXMgb24gMSBNaHogNjUwMiBwcm9jZXNzb3JzIChpdHMgY3JlYXRpb24gcHVy
cG9zZSkuICBmY29tcDIgaXMKcXVpdGUgZGlmZmVyZW50LgoKZmNvbXAyIHVz
ZXMgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24gcm91dGluZXMgYnkg
Qmx1ZWZveCBJY3kuICBJdCB3YXMKY3JlYXRlZCBsaXRlcmFsbHkgd2l0aCBz
aXplIGluIG1pbmQgb25seS4gIGZjb21wMiBjb21wcmVzc2lvbiBzaG91bGQg
YmUgc2FuZSwKYnV0IHRoZXJlJ3MgYWx3YXlzIHRoZSB3YXJuaW5nIHRoYXQg
SSB3cm90ZSB0aGUgYm95ZXItbW9vcmUgc2VhcmNoIG15c2VsZiwgYW5kCnNv
bWVvbmUgcmVhbGx5IG5lZWRzIHRvIEZTQS1wcm92ZSB0aGF0IGl0IHdvcmtz
LiAgUmVwbGFjZSBpdCB3aXRoIEtNUCwgIGJydXRlCmZvcmNlLCBvciB5b3Vy
IG93biBlcXVpdmFsZW50IEJNIGlmIHlvdSB3YW50IGEgMTAwJSBndWFyZW50
ZWUuCgpmY29tcDIgY29tcHJlc3NlZCBkYXRhIGlzIGEgbWl4ZWQgYmFja3Bv
aW50ZXIvdGFibGUgZGF0YSBmb3JtYXQuICBPZmZpY2lhbGx5LApmY29tcDIg
aXMgYSBmbG9hdGluZyBzaXplIGJhY2twb2ludGVyIGZvcm1hdDsgYmFja3Bv
aW50ZXIgc2l6ZSBhbmQgbWF4IGRpc3RhbmNlCmlzIGNhcGFibGUgb2Ygc3dp
dGNoaW5nIGFsb25nIHRoZSB3YXkuICBNb3N0IGltcGxpbWVudGF0aW9ucyB3
aWxsIHdhbnQgdG8gdXNlCmEgZml4ZWQgc2l6ZSBiYWNrcG9pbnRlciB0aG91
Z2gsIHVzdWFsbHkgMjQgYml0ICgxNiBNQikuCgpmY29tcDIgdXNlcyBhIHBv
aW50ZXIgdGFibGUgYW5kIHZhcmlvdXMgcG9pbnRlciB0eXBlcy4gIFRoZSBw
b2ludGVyIHR5cGVzIGFyZQpxdWl0ZSBkaXZlcnNlLiAgQSBnZW5lcmFsIHBv
aW50ZXIgY29udGFpbmVyIGxvb2tzIGxpa2Ugc286CgpUWVBFICAgIFNJWkUg
ICAgREVTQwpCeXRlICAgICAgIDEgICAgVHlwZSBvZiBwb2ludGVyClggICAg
ICAgICAgWCAgICBUaGUgcG9pbnRlciBpdHNlbGYKM0J5dGUgICAgICAzICAg
IDI0IGJpdCBmb3J3YXJkIHJlZmVyZW5jZSBpbmRpY2F0aW5nIHRoZSBsb2Nh
dGlvbiBvZiB0aGUgbmV4dAogICAgICAgICAgICAgICAgcG9pbnRlci4gIEl0
IGlzIGJhc2UgMCwgYW5kIGEgMCBpbmRpY2F0ZXMgRU9TIChqdXN0IGxpa2Ug
aW4KCQlmY29tcCkKCkxpdGVyYWwgcG9pbnRlcnMgKDEpIHBvaW50IGJhY2sg
aW50byB0aGUgc3RyZWFtIGFuZCBtYXkgYmUgOCwgMTYsIDI0LCBvciAzMgpi
aXQuIFRoZXNlIHBvaW50ZXJzIGFyZSBzdGFuZGFyZCBnby1iYWNrLWFuZC1j
b3B5LU4gcG9pbnRlcnMsIGxpa2UgZmNvbXAgdXNlcy4KVGhleSBwcm92aWRl
IGEgcG9pbnRlciB3aXRoaW4gdGhlIHdpbmRvdyB0aGF0IHRoZSBzY2FuIGlz
IHVzaW5nLgoKVFlQRSAgICBTSVpFICAgIERFU0MKQnl0ZSAgICAgICAxICAg
IFNpemUgTiBpbiBieXRlcyBvZiBwb2ludGVyIGRhdGEKTkJ5dGUgICAgICBO
ICAgIERpc3RhbmNlIGJhY2sgdG8gbG9vaywgYmFzZSAxICgwID09IDEsIHJh
bmdlIGlzIDEuLjJeTikKTkJ5dGUgICAgICBOICAgIERpc3RhbmNlIHRvIGNv
cHksIGJhc2UgMSAoMCA9PSAxLCByYW5nZSBpcyAwLi4yXk4pCgpUYWJsZSBw
b2ludGVycyAoMikgYXJlIGV4dHJhIHBvd2VyLiAgVGFibGUgcG9pbnRlcnMg
YXJlIHBvaW50ZXJzIHRoYXQgcmVmZXJlbmNlCmEgdGFibGUgd2hpY2ggaG9s
ZHMgdGhlIGFic29sdXRlIGxvY2F0aW9ucyBpbiB0aGUgc3RyZWFtIChub3Qg
aW5jbHVkaW5nIHRoZQp0YWJsZSkgb2YgZGF0YSB0aGF0IGVhY2ggcG9pbnRl
ciBwb2ludHMgdG8uICBJbiByZWFsaXR5LCBhbGwgYmFjayBwb2ludGVycyBj
YW4KYmUgcmVwbGFjZWQgd2l0aCB0YWJsZSBwb2ludGVycy4KClBsZWFzZSBu
b3RlIHRoYXQgYnkgc3RyZWFtLCB3ZSBtZWFuIHRoZSBhY3R1YWwgcG9pbnRl
ci1hbmQtZGF0YSBzdHJlYW0gdGhhdCBpcwpwcm9jZXNzZWQgaW4gdGhlIGNv
bXByZXNzaW9uIGFuZCBOT1QgdGhlIHN1cHBsaW1lbnRhcnkgaGVhZGVyIG9y
IHRhYmxlLgoKVFlQRSAgICBTSVpFICAgIERFU0MKQnl0ZSAgICAgICAxICAg
IFNpemUgTiBpbiBieXRlcyBvZiBwb2ludGVyIGRhdGEuICBJbmNyZWFzaW5n
IHRoZSBzaXplIGluY3JlYXNlcwogICAgICAgICAgICAgICAgeW91ciByYW5n
ZSBpbiB0aGUgdGFibGUsIGkuZS4gMSBieXRlIGNhbiBhY2Nlc3MgZW50cmll
cyAwLi4yNTUsCgkJMiBjYW4gYWNjZXNzIDAuLjY1NTM1LCAzIDAuLjE2Nzc3
MzgzLCBhbmQgc28gb24uCk5CeXRlICAgICAgTiAgICBJbmRleCBvZiB0aGUg
ZW50cnkgdG8gY29weQpOQnl0ZSAgICAgIE4gICAgTnVtYmVyIG9mIGJ5dGVz
IGJhc2UgMCB0byBza2lwIGZyb20gdGhlIGJlZ2lubmluZwpOQnl0ZSAgICAg
IE4gICAgTnVtYmVyIG9mIGJ5dGVzIGJhc2UgMSB0byBjb3B5CgpUaGUgZmlu
YWwgdHlwZSBvZiBwb2ludGVyIGlzIGEgTlVMTCAoMCkgcG9pbnRlci4gIElm
IHRoZSBwb2ludGVyIGlzIG51bGwsIGl0CnNpbXBseSBpcyBibGFuaywgaS5l
LiBYID0gMCBpbiB0aGUgZ2VuZXJhbCBwb2ludGVyIGNvbnRhaW5lciBkZWZp
bml0aW9uLiAgQQpudWxsIHBvaW50ZXIgaXMgYWx3YXlzIDQgYnl0ZXMgbG9u
ZyBpbmNsdWRpbmcgdGhlIGdlbmVyYWwgcG9pbnRlciBjb250YWluZXIKZGVm
aW5lZCBhYm92ZSwgYW5kIDAgYnl0ZXMgbG9uZyBub3QgaW5jbHVkaW5nIGl0
LiAgSXQgbG9va3MgbGlrZSB0aGlzOgoKVFlQRSAgICBTSVpFICAgIERFU0MK
ClllcywgdGhpcyBpcyBjb21wbGV0ZS4KClRoZSBzdHJlYW0gZm9ybWF0IGlz
OgoKZmNvbXAyIHN0cmVhbToKVFlQRSAgIFNJWkUgICAgREVTQwozQnl0ZSAg
ICAgMyAgICBMZW5ndGggb2YgWCBiYXNlIDAgKGZvciBjb25zaXN0ZW5jeSkK
c3RyZWFtICAgIFggICAgYSBidW5jaCBvZiBieXRlcyB0byB0YWtlIGFzIHB1
cmUgc3RyZWFtClBvaW50ZXIgICBZICAgIEEgcG9pbnRlciBpbnNpZGUgYSBn
ZW5lcmFsIHBvaW50ZXIgY29udGFpbmVyCgpUaGUgbGFzdCAyIHJlcGVhdCB1
bnRpbCBFT1MsIHdoaWNoIGlzIHdoZXJlIHRoZSBnZW5lcmFsIHBvaW50ZXIg
Y29udGFpbmVyIGhhcwppdHMgbmV4dCBwb2ludGVyIGFzIGEgMC4gIFRoZSBz
dHJlYW0gc2hvdWxkIGFsd2F5cyBlbmQgd2l0aCBhIHBvaW50ZXIgd2l0aCBh
CmZvcndhcmQgcmVmZXJlbmNlIG9mIDAsIGVpdGhlciBMaXRlcmFsLCBUYWJs
ZSwgb3IgTlVMTC4KClRoZSBmY29tcDIgdGFibGUgaXMgcHJldHR5IHNpbXBs
ZS4gIEl0IHBvaW50cyB0byBvZmZzZXRzIGluIHRoZSBzdHJlYW0gb2YgZGF0
YSwKd2hpY2ggaXMgcmVhZCBieSBhIGRlY29tcHJlc3NvciBhbmQgdXNlZCB0
byBnaXZlIGZ1cnRoZXIKY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBwZXJm
b3JtYW5jZS4gIFRoaXMgd29ya3Mgd2hlbiB0aGluZ3MgYXJlIG91dCBvZiBy
ZWFjaApvZiBiYWNrcG9pbnRlcnMuICBBbHNvLCBhIHZlcnkgZ29vZCBpbXBs
aW1lbnRhdGlvbiBtYXkgdGFrZSB0aGUgdGltZSB0bwpvcHRpbWl6ZSB0aGUg
dGFibGUgYW5kIHN0cmVhbTsgdGhhdCBpcywgaXQgbWF5IG1vdmUgYWxsIHRo
ZSBtb3N0IGNvbW1vbmx5IHVzZWQKdGFibGUgZW50cmllcyB0byB0aGUgYmVn
aW5uaW5nIGFuZCB1c2UgdGhlIHNtYWxsZXN0IHBvaW50ZXIgZGF0YSBzaXpl
IHBvc3NpYmxlLgoKVGhlIGZjb21wMiB0YWJsZSBpcyBpbiBpdHNlbGYgbm90
IGJ1aWx0IGZvciBzaXplLiAgRGF0YSBvZiBtdWx0aXBsZSByZWR1bmRhbmN5
CmlzIGluaXRpYWxseSBlbnRlcmVkIGludG8gdGhlIHRhYmxlIGFzIGEgMzIg
Yml0ICg0IGJ5dGUpIG9mZnNldC4gIFRoZSBsZW5ndGggaXMKbm90IHN0b3Jl
ZDsgdGhlIGNvbXByZXNzb3Igd2lsbCBmaW5kIGFuIG9mZnNldCBmcm9tIHRo
aXMgd2l0aGluIHRoZSByZWFjaCBvZgp0aGUgbmV4dCB0YWJsZSBlbnRyeSBh
dCBjb21wcmVzc2lvbiB0aW1lLCB3aGlsZSB0aGUgZGVjb21wcmVzc29yIHJl
YWRzIGVudHJ5LApza2lwLCBhbmQgY29weS4gIFRvIGRvIHRoaXMgbW9yZSBl
YXNpbHksIHRoZSBjb21wcmVzc29yIHNob3VsZCBrZWVwIHRoZSBkYXRhCnRh
YmxlIGluIHRoZSBvcmRlciB0aGUgZGF0YSBhcHBlYXJzIGluIHRoZSBmaWxl
IHVudGlsIGNvbXByZXNzaW9uIGlzIGZpbmlzaGVkLAphbmQgdGhlbiBzb3J0
IHRoZSB0YWJsZSBiYXNlZCBvbiBvcmRlciBvZiByZWR1bmRhbmN5IChha2Eg
aG93IG1hbnkgdGltZXMgZWFjaAplbnRyeSBpcyB1c2VkKSBmcm9tIGdyZWF0
ZXN0IHRvIGxlYXN0LiAgQXMgdGhlIHRhYmxlIGlzIHNvcnRlZCwgdGhlIHN0
cmVhbSBhbmQKdGFibGUgYm90aCBtYXkgYmUgYWRqdXN0ZWQgc28gYXMgdG8g
c3F1ZWV6ZSBvdXQgbW9yZSBzcGFjZSAoaS5lLiB0aGUgbW9zdCB1c2VkCnRh
YmxlIGVudHJpZXMgYXJlIHJlZmVyZW5jZWQgYXMgOCBiaXQgcG9pbnRlcnMs
IGNoYW5naW5nIHRoZSBwb2ludGVycyB0byBwb2ludAphdCB0aGVzZSBhbmQg
dXNlIDggYml0IHN0b3JhZ2UgY2hhbmdlcyB0aGUgY29tcHJlc3NlZCBzdHJl
YW0pLiAgTm90ZSB0aGF0CmFsdGVyaW5nIHRoZSBzaXplIG9mIHRoZSBjb21w
cmVzc2VkIHN0cmVhbSBzaG91bGQgbm90IGFsdGVyIHRoZSB0YWJsZSwgYXMg
aXQgaXMKaW4gcmVmZXJlbmNlIHRvIHRoZSB1bmNvbXByZXNzZWQgc3RyZWFt
LgoKZmNvbXAyLXRhYmxlOgpUWVBFICAgIFNJWkUgICAgREVTQwpEd29yZCAg
ICAgIDQgICAgQSAzMiBiaXQgb2Zmc2V0IG9mIHRoZSBkYXRhIGluIHRoZSB1
bmNvbXByZXNzZWQgc3RyZWFtCgpBbiBmY29tcDIgZGF0YSBmaWxlIGNvbnRh
aW5zIGEgZmV3IHRoaW5ncy4gIEZpcnN0IGFyZSAyIGxvbmdzOiAgVGFibGUg
YW5kClN0cmVhbSBvZmZzZXRzIGluIHRoZSBmaWxlLiAgU2Vjb25kIGlzIHNv
bWUgZGF0YSwgdGhlIHRhYmxlLCBhbmQgdGhlIHN0cmVhbS4KVGhlICJzb21l
IGRhdGEiIGNhbiBiZSBhbnl0aGluZyAoZW5jcnlwdGlvbiBmbGFncywgQ1JD
J3MsIGV0YykuCgpmY29tcDIgZGF0YSBmaWxlOgpUWVBFICAgU0laRSAgICBE
RVNDCkRXb3JkICAgICA0ICAgIDMyIGJpdCBvZmZzZXQgYmFzZSAwICh0aGlz
IGlzIEFUIDApIG9mIHdoZXJlIHRoZSB0YWJsZSBpcyBpbiB0aGUKICAgICAg
ICAgICAgICAgZmlyZQpEV29yZCAgICAgNCAgICAzMiBiaXQgYmFzZSAwIG9m
ZnNldCBvZiB0aGUgZmNvbXAyIHN0cmVhbQpzdHJlYW0gICAgWCAgICBXaGF0
ZXZlciB5b3Ugd2FudCB1bnRpbCB0aGUgdGFibGUgb2NjdXJzCmZjb21wMi10
YWJsZSBZICBUaGUgdGFibGUKZmNvbXAyLXN0cmVhbSBaIFRoZSBzdHJlYW0u
ICBUaGUgYmVnaW5uaW5nIG9mIHRoaXMgaXMgZXhhY3RseSB3aGVyZSBhIHBv
aW50ZXIgdG8KICAgICAgICAgICAgICAgb2Zmc2V0IDAgaW4gdGhlIHRhYmxl
IHdvdWxkIHBvaW50IHRvCgpJIHdvdWxkIGVuY291cmFnZSB0aGUgb3BlbiBz
b3VyY2UgY29tbXVuaXR5IHRvIGV4cGVyaW1lbnQgd2l0aCBpbXBsaW1lbnRp
bmcKdGhpcyBjb21wcmVzc2lvbiBzY2hlbWEuICBJdCBpcyBWRVJZIFJBTSBp
bnRlbnNpdmUsIGJ1dCBhIGdvb2QgaW1wbGltZW50YXRpb24Kc2hvdWxkIGJl
IGFibGUgdG8gc3F1ZWV6ZSBncmVhdCBjb21wcmVzc2lvbiByYXRpb3MgZnJv
bSB0aGlzLiAgSGVyZSBhcmUgdGhlCnJlcXVpcmVtZW50cyBmb3IgdGhlIGJl
c3QgaW1wbGltZW50YXRpb246CgoxLiAgSW50ZWxsaWdlbnQgVGFibGUgR2Vu
ZXJhdGlvbgogIFRhYmxlIGVudHJpZXMgYXJlIGVhY2ggNCBieXRlcyBpbiBz
aXplLiAgQSB0YWJsZSBzaG91bGQgbm90IGJlIGdlbmVyYXRlZCBhdCBhCiAg
cG9pbnQgbGVzcyB0aGFuIDQgYnl0ZXMgZnJvbSB0aGUgcHJldmlvdXMgdGFi
bGUuCjIuICBPcHRpbWl6ZWQgVGFibGUgU29ydGluZwogIFRoZSBlbnRyaWVz
IG1vc3QgdXNlZCBpbiB0aGUgdGFibGUgc2hvdWxkIGJlIHBsYWNlZCBhdCB0
aGUgYmVnaW5uaW5nOyB0aGUKICB0YWJsZSBzaG91bGQgYmUgc29ydGVkIGlu
IGRlc2NlbmRpbmcgcmVmZXJlbmNlIG9yZGVyLiAgVGhlbiB0aGUgcG9pbnRl
cnMgbXVzdAogIGJlIGFkanVzdGVkIChtdXN0IGFzIGluIHRoaXMgd2lsbCBi
cmVhayB0aGUgc3RyZWFtIGlmIHlvdSBkb24ndCBkbyB0aGlzKSBpbgogIHRo
ZSBjb21wcmVzc2VkIHN0cmVhbSB0byBwb2ludCB0byB0aGUgbmV3IGxvY2F0
aW9ucyBvZiB0aGUgdGFibGUgZW50cmllcy4gIEluCiAgYWRqdXN0aW5nIHRo
ZSBwb2ludGVycywgdGhlIGNvbXByZXNzb3Igc2hvdWxkIHNocmluayB0aGVt
IHRvIHRoZSBzbWFsbGVzdAogIHBvc3NpYmxlIHNpemUgZ2l2ZW4gdGhlIGlu
ZGV4IG51bWJlciB0aGV5IG11c3QgcmVmZXJlbmNlIGFuZCB0aGUKICBkaXN0
YW5jZS92ZWN0b3IgdGhleSBtdXN0IHNraXAgYW5kIGNvcHkuICBGb3IgdGhl
IGJlc3Qgb3B0aW1pemF0aW9uLCB0aGlzCiAgc3RlcCBzaG91bGQgYWxzbyB0
YWtlIGludG8gYWNjb3VudCB0aGUgZGlzdGFuY2UvdmVjdG9yIHNpemVzIGlu
IHRoZSBwb2ludGVycywKICB0byBhc3Nlc3MgaG93IG1hbnkgcG9pbnRlcnMg
d291bGQgZ2FpbiBhbmQgbG9zZSBzaXplIGluIGVhY2ggcmFuZ2Ugb2YgaW5k
ZXgKICBzaXplICgxLzIvMy80IGJ5dGVzKSBhbmQgY29tcHV0ZSB0aGUgdG90
YWwgc2l6ZSBnYWluIChwb3NpdGl2ZSBvciBuZWdhdGl2ZSkKICBmb3IgZWFj
aCBwb2ludGVyIGdpdmVuIHRoZSBwb3NpdGlvbnMsIGFuZCBhZGp1c3QgYWNj
b3JkaW5nIHRvIHRoZXNlIGZpbmFsCiAgc2NvcmVzLgozLiAgSW50ZWxsaWdl
bnQgVGFibGUgRGlzY2FyZGluZwogIFdoZW4gdGFibGUgZW50cmllcyBpbiB0
aGUgdGFibGUgYXJlIGNsb3NlIGVub3VnaCB0b2dldGhlciwgdGhlIHBvaW50
ZXJzIHdoaWNoCiAgcmVmZXJlbmNlIHRoZW0gbWF5IGJlIGNhcGFibGUgb2Yg
dXNpbmcgb25seSBhIHNtYWxsIHNldCBmcm9tIGEgbGFyZ2VyIHNldCBvZgog
IHRhYmxlIGVudHJpZXMuICBJZiB0aGlzIGlzIHRoZSBjYXNlLCB0aGUgY29t
cHJlc3NvciBzaG91bGQgcmVtb3ZlIHRob3NlIHRhYmxlCiAgZW50cmllcyBh
bmQgcmVhZGp1c3QgYWxsIHJlbGF0ZWQgcG9pbnRlcnMuCgpJZiBhIGNvbXBy
ZXNzb3IgaXMgd3JpdHRlbiwgaXQgZG9lcyBub3QgaGF2ZSB0byBmb2xsb3cg
YW55IG9mIHRoZSBhYm92ZSB0byBoYXZlCmNvbXBhdGlibGUgb3V0cHV0IHdp
dGggZmNvbXAyIGJpbmFyeSBmaWxlczsgaG93ZXZlciwgdGhlIGFib3ZlIGd1
aWRlbGluZXMgZ2l2ZQp0aGUgYmVzdCBjb21wcmVzc2lvbiByYXRpb3MgZm9y
IGZjb21wMiBjb21wcmVzc2VkIGZpbGVzLgo=

--=_courier-4997-1051586786-0001-2--