Re: [BLACKBOX] Seasoned Linux.

From: [at]} <Norayr>
Date: Thu, 13 Jan 2011 03:13:20 +0400

----boundary-LibPST-iamunique-1844327810_-_-
Content-type: text/plain

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

>Is it possible to write and compile kernel-mode programs in Oberon or
> Component Pascal? These could be loaded into the kernel with insmod.
>

Kernel module is actually a binary file which contains code, which
should be run by CPU. Then compiler which generates a native code could
be used to produce Linux kernel modules. The difference is, that
1) kernel modules do not use standard RTL, instead they use kernel RTL.
2) generated code should be possible to link in the different from the
userspace programs way.

There is an example, how FreePascal compiler could be used to generate
Linux kernel module:
http://wiki.freepascal.org/linux/kernel/module_development
You may have noticed, that in my Oberon-07 port RTL is really minimal.
Empty program, which does not include any modules, contains only one
kernel call - call number one (exit). Which allows to finish process.
Empty program, which does not include any other library modules may
contain only one other kernel call - mmap(), because in my
implementation I use mmap() in order to allocate memory with NEW.
This is done for several reasons:
1) it's simpler. I have been written several versions of memory
managers(more fast and more slow, with more or less heap fragmentation),
and they all did not satisfy me. Also, minimal ELF binary size
increased. I am glad it is less than 1kb.
So, I realized that I need to use mmap() to allocate memory anonymously.
It was the simplest way, and may be, that hints to the good design. good
design is often simple. :)
(DISPOSE, i. e. freeing memory is possible to implement on the language
level, but that is not necessary, because a) embedded code should just
allocate some memory at start, and there should be no need in having a
garbage collector, or just freeing it. b) if necessary, DISPOSE can be
implemented in the library module.)

2) As I mentioned, I wanted to keep minimal binary size as small as
possible.

So, in my case, modifications are minimal, "RTL" is minimal.

And, the answer to your question. Yes, it should be possible. I think it
is quite possible to write a C kernel header bindings for Ofront or may
be even oo2c, and link produced .o object files with ld in a different
manner. Some modifications may be required, I guess less modifications
in Ofront than in oo2c.

>2) The other question is user-mode embedded systems like Oberon System
>or BlackBox. These are user-mode apps. They are activated every few
>milliseconds. They are not real-time. These apps can process buffered
>data. They can have a GUI. It would be great if these GUIs could be
>ran on embedded CPUs and display the graphics over X-windows. Is it
>possible to port one of the GUIs to the embedded environment?

My main question is which are limitations of your hardware? I guess if
it runs GNU/Linux and X server, then it is powerful enough to draw GTK
widgets.
Do you mind using GTK? After all, again, we have binary code, linked to
each other. People already did a huge amount of work by writing
libraries in C. Why we should avoid using them, if they tested and work
well? We can write in Oberon, and use GTK. That's very fun. Of course,
if we would have community, we would draw Oberon Gadgets using X calls.
But we cannot now.
I noticed there are languages and compilers, which just produce code,
and have bindings to GNU C library. There are compilers of the languages
like Modula-2 or Pascal which come with own huge set of libraries. For
that there is a need in community, and a platform to work. Like oo2c +
community.
That is why I decided to port Ulm's libraries to oo2c.
(Besides, FreePascal basic libraries do not contain calls to the GNU
system (or let's say GNU C Library). They only interface to kernel API.
This allows them to not have dependencies from the GLIBC versions, fpc
compiled binaries work just on top of Linux kernel, without the GNU system.)

Right now I do not see problems for developing user mode GUI
applications for GNU/Linux by using Ofront or oo2c. If you do not see
problems in using code, generated via C and/or link to the C libraries.

So, if it is necessary to write a kernel RTL and do bindings in order to
produce kernel modules, then, writing GUI application is already possible.
With Ofront, there are two ways: use Ofront as an Oberon V4 system, or
generate GTK (or other GUI toolkit) bindings.

With oo2c - two other ways: to use VisualOberon - native oo2c gui
library set, or to use GTK bindings.
Recently I have generated GTK bindings with H2O in order to use on my
embedded Maemo / Debian (ARM EABI) on Nokia n900 or n810.
Glade3 makes this even more fun, because it generates xml description of
GUI, and then you need to do one call to GTK with the path to that xml
description in order to get that GUI interface drawed.

With Ofront - one need to prepare bindings, and that is hard without a
tool. Stewart Greenhill's H2O is very much useful and impressive, but it
generates code for oo2c only. Currently. Unless someone modifies it to
generate bindings for other compilers, for instance, for Ofront.

However, so far I didn't use that GTK bindings, because I was trying to
compile FreePascal and Lazarus with the whole huge library set on Maemo
embedded device. I succeed, and even compiled right on device simple
three lines application, to test whether touchscreen applications could
be developed by using OnMouseDown OnMouseUp events. :) I've dropped a
couple of links in my previous posts to the mailing list. I can repeat
them if you are interested.
Sincerely,
Norayr

On 01/13/11 01:05, Wojtek Skulski wrote:
> On Wed, 12 Jan 2011, Norayr Chilingarian wrote:
>

>>> Oberon 07 compiler Port to Linux/i386
>>> http://barcamp.am/wp-content/uploads/2009/04/barcampevn09/oberon.pdf
>> it's mine :)
>
> My congratulations!
>
> Since you are an expert, let me ask you the following two questions.
>
> I think it is important to distinguish between the kernel-mode drivers
> and user-mode applications. The Unix/Linux design imposes a sharp
> boundary between kernel-mode and user-mode programs. (So does Windows.)
> A kernel-mode driver is a very different software from a user-mode
> application. Therefore we should treat them separately.
>
> 1) Is it possible to write and compile kernel-mode programs in Oberon or
> Component Pascal? These could be loaded into the kernel with insmod.
> Such programs will run at max speed. Interrupt handlers could be
> developed this way. What would it take to prepare a framework for this?
>
> 2) The other question is user-mode embedded systems like Oberon System
> or BlackBox. These are user-mode apps. They are activated every few
> milliseconds. They are not real-time. These apps can process buffered
> data. They can have a GUI. It would be great if these GUIs could be ran
> on embedded CPUs and display the graphics over X-windows. Is it possible
> to port one of the GUIs to the embedded environment?
>
> Wojtek
>
>
> ----
> To unsubscribe, send a message with body "SIGNOFF BLACKBOX" to
> LISTSERV{([at]})nowhere.xy
>

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.16 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJNLjWQAAoJEDbv/aplkZ1F2B8H/17xDG6k9oksm4b7WyQMmyHf
n6lcO62L9jZ6gdUciNPJsPzsm9iC+n8JG+HdS1YqUZTvMuS45DDk+UV687NhKLX6
ADHMX9pyRJtIKLGBUBBAIoWpJVNo1fDmKtAPywLyelXQzvaNs892Sp6cxKFOF7bp
n/aoHqUnMit8ypXrIgfF09HgPGXwjyJN8mv6Feu15zLShX3W2kyOt1iAxajdzree
xLXzCnsBLTKdAovb9m5r5d/k+Fn3hus3lN0MKnlUfSjOrvxdZf+XKqVGBbntl2Uz
QekCDKsZfteAmm+E18dAwCUjG33Sy8pyOF0qUPw3jE+J/KVbqepuEqM6j/yckxE=
=Wwa1
-----END PGP SIGNATURE-----


----
To unsubscribe, send a message with body "SIGNOFF BLACKBOX" to LISTSERV{([at]})nowhere.xy----boundary-LibPST-iamunique-1844327810_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"
e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy
c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj
b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh
cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwIC0tLS0tQkVHSU4gUEdQIFNJR05FRCBNRVNTQUdF
LS0tLS1ccGFyDQpIYXNoOiBTSEExXHBhcg0KXHBhcg0KPklzIGl0IHBvc3NpYmxlIHRvIHdyaXRl
IGFuZCBjb21waWxlIGtlcm5lbC1tb2RlIHByb2dyYW1zIGluIE9iZXJvbiBvclxwYXINCj4gQ29t
cG9uZW50IFBhc2NhbD8gVGhlc2UgY291bGQgYmUgbG9hZGVkIGludG8gdGhlIGtlcm5lbCB3aXRo
IGluc21vZC5ccGFyDQo+XHBhcg0KXHBhcg0KS2VybmVsIG1vZHVsZSBpcyBhY3R1YWxseSBhIGJp
bmFyeSBmaWxlIHdoaWNoIGNvbnRhaW5zIGNvZGUsIHdoaWNoXHBhcg0Kc2hvdWxkIGJlIHJ1biBi
eSBDUFUuIFRoZW4gY29tcGlsZXIgd2hpY2ggZ2VuZXJhdGVzIGEgbmF0aXZlIGNvZGUgY291bGRc
cGFyDQpiZSB1c2VkIHRvIHByb2R1Y2UgTGludXgga2VybmVsIG1vZHVsZXMuIFRoZSBkaWZmZXJl
bmNlIGlzLCB0aGF0XHBhcg0KMSkga2VybmVsIG1vZHVsZXMgZG8gbm90IHVzZSBzdGFuZGFyZCBS
VEwsIGluc3RlYWQgdGhleSB1c2Uga2VybmVsIFJUTC5ccGFyDQoyKSBnZW5lcmF0ZWQgY29kZSBz
aG91bGQgYmUgcG9zc2libGUgdG8gbGluayBpbiB0aGUgZGlmZmVyZW50IGZyb20gdGhlXHBhcg0K
dXNlcnNwYWNlIHByb2dyYW1zIHdheS5ccGFyDQpccGFyDQpUaGVyZSBpcyBhbiBleGFtcGxlLCBo
b3cgRnJlZVBhc2NhbCBjb21waWxlciBjb3VsZCBiZSB1c2VkIHRvIGdlbmVyYXRlXHBhcg0KTGlu
dXgga2VybmVsIG1vZHVsZTpccGFyDQpodHRwOi8vd2lraS5mcmVlcGFzY2FsLm9yZy9saW51eC9r
ZXJuZWwvbW9kdWxlX2RldmVsb3BtZW50XHBhcg0KWW91IG1heSBoYXZlIG5vdGljZWQsIHRoYXQg
aW4gbXkgT2Jlcm9uLTA3IHBvcnQgUlRMIGlzIHJlYWxseSBtaW5pbWFsLlxwYXINCkVtcHR5IHBy
b2dyYW0sIHdoaWNoIGRvZXMgbm90IGluY2x1ZGUgYW55IG1vZHVsZXMsIGNvbnRhaW5zIG9ubHkg
b25lXHBhcg0Ka2VybmVsIGNhbGwgLSBjYWxsIG51bWJlciBvbmUgKGV4aXQpLiBXaGljaCBhbGxv
d3MgdG8gZmluaXNoIHByb2Nlc3MuXHBhcg0KRW1wdHkgcHJvZ3JhbSwgd2hpY2ggZG9lcyBub3Qg
aW5jbHVkZSBhbnkgb3RoZXIgbGlicmFyeSBtb2R1bGVzIG1heVxwYXINCmNvbnRhaW4gb25seSBv
bmUgb3RoZXIga2VybmVsIGNhbGwgLSBtbWFwKCksIGJlY2F1c2UgaW4gbXlccGFyDQppbXBsZW1l
bnRhdGlvbiBJIHVzZSBtbWFwKCkgaW4gb3JkZXIgdG8gYWxsb2NhdGUgbWVtb3J5IHdpdGggTkVX
LlxwYXINClRoaXMgaXMgZG9uZSBmb3Igc2V2ZXJhbCByZWFzb25zOlxwYXINCjEpIGl0J3Mgc2lt
cGxlci4gSSBoYXZlIGJlZW4gd3JpdHRlbiBzZXZlcmFsIHZlcnNpb25zIG9mIG1lbW9yeVxwYXIN
Cm1hbmFnZXJzKG1vcmUgZmFzdCBhbmQgbW9yZSBzbG93LCB3aXRoIG1vcmUgb3IgbGVzcyBoZWFw
IGZyYWdtZW50YXRpb24pLFxwYXINCmFuZCB0aGV5IGFsbCBkaWQgbm90IHNhdGlzZnkgbWUuIEFs
c28sIG1pbmltYWwgRUxGIGJpbmFyeSBzaXplXHBhcg0KaW5jcmVhc2VkLiBJIGFtIGdsYWQgaXQg
aXMgbGVzcyB0aGFuIDFrYi5ccGFyDQpTbywgSSByZWFsaXplZCB0aGF0IEkgbmVlZCB0byB1c2Ug
bW1hcCgpIHRvIGFsbG9jYXRlIG1lbW9yeSBhbm9ueW1vdXNseS5ccGFyDQpJdCB3YXMgdGhlIHNp
bXBsZXN0IHdheSwgYW5kIG1heSBiZSwgdGhhdCBoaW50cyB0byB0aGUgZ29vZCBkZXNpZ24uIGdv
b2RccGFyDQpkZXNpZ24gaXMgb2Z0ZW4gc2ltcGxlLiA6KVxwYXINCihESVNQT1NFLCBpLiBlLiBm
cmVlaW5nIG1lbW9yeSBpcyBwb3NzaWJsZSB0byBpbXBsZW1lbnQgb24gdGhlIGxhbmd1YWdlXHBh
cg0KbGV2ZWwsIGJ1dCB0aGF0IGlzIG5vdCBuZWNlc3NhcnksIGJlY2F1c2UgYSkgZW1iZWRkZWQg
Y29kZSBzaG91bGQganVzdFxwYXINCmFsbG9jYXRlIHNvbWUgbWVtb3J5IGF0IHN0YXJ0LCBhbmQg
dGhlcmUgc2hvdWxkIGJlIG5vIG5lZWQgaW4gaGF2aW5nIGFccGFyDQpnYXJiYWdlIGNvbGxlY3Rv
ciwgb3IganVzdCBmcmVlaW5nIGl0LiBiKSBpZiBuZWNlc3NhcnksIERJU1BPU0UgY2FuIGJlXHBh
cg0KaW1wbGVtZW50ZWQgaW4gdGhlIGxpYnJhcnkgbW9kdWxlLilccGFyDQpccGFyDQoyKSBBcyBJ
IG1lbnRpb25lZCwgSSB3YW50ZWQgdG8ga2VlcCBtaW5pbWFsIGJpbmFyeSBzaXplIGFzIHNtYWxs
IGFzXHBhcg0KcG9zc2libGUuXHBhcg0KXHBhcg0KU28sIGluIG15IGNhc2UsIG1vZGlmaWNhdGlv
bnMgYXJlIG1pbmltYWwsICJSVEwiIGlzIG1pbmltYWwuXHBhcg0KXHBhcg0KQW5kLCB0aGUgYW5z
d2VyIHRvIHlvdXIgcXVlc3Rpb24uIFllcywgaXQgc2hvdWxkIGJlIHBvc3NpYmxlLiBJIHRoaW5r
IGl0XHBhcg0KaXMgcXVpdGUgcG9zc2libGUgdG8gd3JpdGUgYSBDIGtlcm5lbCBoZWFkZXIgYmlu
ZGluZ3MgZm9yIE9mcm9udCBvciBtYXlccGFyDQpiZSBldmVuIG9vMmMsIGFuZCBsaW5rIHByb2R1
Y2VkIC5vIG9iamVjdCBmaWxlcyB3aXRoIGxkIGluIGEgZGlmZmVyZW50XHBhcg0KbWFubmVyLiBT
b21lIG1vZGlmaWNhdGlvbnMgbWF5IGJlIHJlcXVpcmVkLCBJIGd1ZXNzIGxlc3MgbW9kaWZpY2F0
aW9uc1xwYXINCmluIE9mcm9udCB0aGFuIGluIG9vMmMuXHBhcg0KXHBhcg0KPjIpIFRoZSBvdGhl
ciBxdWVzdGlvbiBpcyB1c2VyLW1vZGUgZW1iZWRkZWQgc3lzdGVtcyBsaWtlIE9iZXJvbiBTeXN0
ZW1ccGFyDQo+b3IgQmxhY2tCb3guIFRoZXNlIGFyZSB1c2VyLW1vZGUgYXBwcy4gVGhleSBhcmUg
YWN0aXZhdGVkIGV2ZXJ5IGZld1xwYXINCj5taWxsaXNlY29uZHMuIFRoZXkgYXJlIG5vdCByZWFs
LXRpbWUuIFRoZXNlIGFwcHMgY2FuIHByb2Nlc3MgYnVmZmVyZWRccGFyDQo+ZGF0YS4gVGhleSBj
YW4gaGF2ZSBhIEdVSS4gSXQgd291bGQgYmUgZ3JlYXQgaWYgdGhlc2UgR1VJcyBjb3VsZCBiZVxw
YXINCj5yYW4gb24gZW1iZWRkZWQgQ1BVcyBhbmQgZGlzcGxheSB0aGUgZ3JhcGhpY3Mgb3ZlciBY
LXdpbmRvd3MuIElzIGl0XHBhcg0KPnBvc3NpYmxlIHRvIHBvcnQgb25lIG9mIHRoZSBHVUlzIHRv
IHRoZSBlbWJlZGRlZCBlbnZpcm9ubWVudD9ccGFyDQpccGFyDQpNeSBtYWluIHF1ZXN0aW9uIGlz
IHdoaWNoIGFyZSBsaW1pdGF0aW9ucyBvZiB5b3VyIGhhcmR3YXJlPyBJIGd1ZXNzIGlmXHBhcg0K
aXQgcnVucyBHTlUvTGludXggYW5kIFggc2VydmVyLCB0aGVuIGl0IGlzIHBvd2VyZnVsIGVub3Vn
aCB0byBkcmF3IEdUS1xwYXINCndpZGdldHMuXHBhcg0KRG8geW91IG1pbmQgdXNpbmcgR1RLPyBB
ZnRlciBhbGwsIGFnYWluLCB3ZSBoYXZlIGJpbmFyeSBjb2RlLCBsaW5rZWQgdG9ccGFyDQplYWNo
IG90aGVyLiBQZW9wbGUgYWxyZWFkeSBkaWQgYSBodWdlIGFtb3VudCBvZiB3b3JrIGJ5IHdyaXRp
bmdccGFyDQpsaWJyYXJpZXMgaW4gQy4gV2h5IHdlIHNob3VsZCBhdm9pZCB1c2luZyB0aGVtLCBp
ZiB0aGV5IHRlc3RlZCBhbmQgd29ya1xwYXINCndlbGw/IFdlIGNhbiB3cml0ZSBpbiBPYmVyb24s
IGFuZCB1c2UgR1RLLiBUaGF0J3MgdmVyeSBmdW4uIE9mIGNvdXJzZSxccGFyDQppZiB3ZSB3b3Vs
ZCBoYXZlIGNvbW11bml0eSwgd2Ugd291bGQgZHJhdyBPYmVyb24gR2FkZ2V0cyB1c2luZyBYIGNh
bGxzLlxwYXINCkJ1dCB3ZSBjYW5ub3Qgbm93LlxwYXINCkkgbm90aWNlZCB0aGVyZSBhcmUgbGFu
Z3VhZ2VzIGFuZCBjb21waWxlcnMsIHdoaWNoIGp1c3QgcHJvZHVjZSBjb2RlLFxwYXINCmFuZCBo
YXZlIGJpbmRpbmdzIHRvIEdOVSBDIGxpYnJhcnkuIFRoZXJlIGFyZSBjb21waWxlcnMgb2YgdGhl
IGxhbmd1YWdlc1xwYXINCmxpa2UgTW9kdWxhLTIgb3IgUGFzY2FsIHdoaWNoIGNvbWUgd2l0aCBv
d24gaHVnZSBzZXQgb2YgbGlicmFyaWVzLiBGb3JccGFyDQp0aGF0IHRoZXJlIGlzIGEgbmVlZCBp
biBjb21tdW5pdHksIGFuZCBhIHBsYXRmb3JtIHRvIHdvcmsuIExpa2Ugb28yYyArXHBhcg0KY29t
bXVuaXR5LlxwYXINClRoYXQgaXMgd2h5IEkgZGVjaWRlZCB0byBwb3J0IFVsbSdzIGxpYnJhcmll
cyB0byBvbzJjLlxwYXINCihCZXNpZGVzLCBGcmVlUGFzY2FsIGJhc2ljIGxpYnJhcmllcyBkbyBu
b3QgY29udGFpbiBjYWxscyB0byB0aGUgR05VXHBhcg0Kc3lzdGVtIChvciBsZXQncyBzYXkgR05V
IEMgTGlicmFyeSkuIFRoZXkgb25seSBpbnRlcmZhY2UgdG8ga2VybmVsIEFQSS5ccGFyDQpUaGlz
IGFsbG93cyB0aGVtIHRvIG5vdCBoYXZlIGRlcGVuZGVuY2llcyBmcm9tIHRoZSBHTElCQyB2ZXJz
aW9ucywgZnBjXHBhcg0KY29tcGlsZWQgYmluYXJpZXMgd29yayBqdXN0IG9uIHRvcCBvZiBMaW51
eCBrZXJuZWwsIHdpdGhvdXQgdGhlIEdOVSBzeXN0ZW0uKVxwYXINClxwYXINClJpZ2h0IG5vdyBJ
IGRvIG5vdCBzZWUgcHJvYmxlbXMgZm9yIGRldmVsb3BpbmcgdXNlciBtb2RlIEdVSVxwYXINCmFw
cGxpY2F0aW9ucyBmb3IgR05VL0xpbnV4IGJ5IHVzaW5nIE9mcm9udCBvciBvbzJjLiBJZiB5b3Ug
ZG8gbm90IHNlZVxwYXINCnByb2JsZW1zIGluIHVzaW5nIGNvZGUsIGdlbmVyYXRlZCB2aWEgQyBh
bmQvb3IgbGluayB0byB0aGUgQyBsaWJyYXJpZXMuXHBhcg0KXHBhcg0KU28sIGlmIGl0IGlzIG5l
Y2Vzc2FyeSB0byB3cml0ZSBhIGtlcm5lbCBSVEwgYW5kIGRvIGJpbmRpbmdzIGluIG9yZGVyIHRv
XHBhcg0KcHJvZHVjZSBrZXJuZWwgbW9kdWxlcywgdGhlbiwgd3JpdGluZyBHVUkgYXBwbGljYXRp
b24gaXMgYWxyZWFkeSBwb3NzaWJsZS5ccGFyDQpXaXRoIE9mcm9udCwgdGhlcmUgYXJlIHR3byB3
YXlzOiB1c2UgT2Zyb250IGFzIGFuIE9iZXJvbiBWNCBzeXN0ZW0sIG9yXHBhcg0KZ2VuZXJhdGUg
R1RLIChvciBvdGhlciBHVUkgdG9vbGtpdCkgYmluZGluZ3MuXHBhcg0KXHBhcg0KV2l0aCBvbzJj
IC0gdHdvIG90aGVyIHdheXM6IHRvIHVzZSBWaXN1YWxPYmVyb24gLSBuYXRpdmUgb28yYyBndWlc
cGFyDQpsaWJyYXJ5IHNldCwgb3IgdG8gdXNlIEdUSyBiaW5kaW5ncy5ccGFyDQpSZWNlbnRseSBJ
IGhhdmUgZ2VuZXJhdGVkIEdUSyBiaW5kaW5ncyB3aXRoIEgyTyBpbiBvcmRlciB0byB1c2Ugb24g
bXlccGFyDQplbWJlZGRlZCBNYWVtbyAvIERlYmlhbiAoQVJNIEVBQkkpIG9uIE5va2lhIG45MDAg
b3IgbjgxMC5ccGFyDQpHbGFkZTMgbWFrZXMgdGhpcyBldmVuIG1vcmUgZnVuLCBiZWNhdXNlIGl0
IGdlbmVyYXRlcyB4bWwgZGVzY3JpcHRpb24gb2ZccGFyDQpHVUksIGFuZCB0aGVuIHlvdSBuZWVk
IHRvIGRvIG9uZSBjYWxsIHRvIEdUSyB3aXRoIHRoZSBwYXRoIHRvIHRoYXQgeG1sXHBhcg0KZGVz
Y3JpcHRpb24gaW4gb3JkZXIgdG8gZ2V0IHRoYXQgR1VJIGludGVyZmFjZSBkcmF3ZWQuXHBhcg0K
XHBhcg0KV2l0aCBPZnJvbnQgLSBvbmUgbmVlZCB0byBwcmVwYXJlIGJpbmRpbmdzLCBhbmQgdGhh
dCBpcyBoYXJkIHdpdGhvdXQgYVxwYXINCnRvb2wuIFN0ZXdhcnQgR3JlZW5oaWxsJ3MgSDJPIGlz
IHZlcnkgbXVjaCB1c2VmdWwgYW5kIGltcHJlc3NpdmUsIGJ1dCBpdFxwYXINCmdlbmVyYXRlcyBj
b2RlIGZvciBvbzJjIG9ubHkuIEN1cnJlbnRseS4gVW5sZXNzIHNvbWVvbmUgbW9kaWZpZXMgaXQg
dG9ccGFyDQpnZW5lcmF0ZSBiaW5kaW5ncyBmb3Igb3RoZXIgY29tcGlsZXJzLCBmb3IgaW5zdGFu
Y2UsIGZvciBPZnJvbnQuXHBhcg0KXHBhcg0KSG93ZXZlciwgc28gZmFyIEkgZGlkbid0IHVzZSB0
aGF0IEdUSyBiaW5kaW5ncywgYmVjYXVzZSBJIHdhcyB0cnlpbmcgdG9ccGFyDQpjb21waWxlIEZy
ZWVQYXNjYWwgYW5kIExhemFydXMgd2l0aCB0aGUgd2hvbGUgaHVnZSBsaWJyYXJ5IHNldCBvbiBN
YWVtb1xwYXINCmVtYmVkZGVkIGRldmljZS4gSSBzdWNjZWVkLCBhbmQgZXZlbiBjb21waWxlZCBy
aWdodCBvbiBkZXZpY2Ugc2ltcGxlXHBhcg0KdGhyZWUgbGluZXMgYXBwbGljYXRpb24sIHRvIHRl
c3Qgd2hldGhlciB0b3VjaHNjcmVlbiBhcHBsaWNhdGlvbnMgY291bGRccGFyDQpiZSBkZXZlbG9w
ZWQgYnkgdXNpbmcgT25Nb3VzZURvd24gT25Nb3VzZVVwIGV2ZW50cy4gOikgSSd2ZSBkcm9wcGVk
IGFccGFyDQpjb3VwbGUgb2YgbGlua3MgaW4gbXkgcHJldmlvdXMgcG9zdHMgdG8gdGhlIG1haWxp
bmcgbGlzdC4gSSBjYW4gcmVwZWF0XHBhcg0KdGhlbSBpZiB5b3UgYXJlIGludGVyZXN0ZWQuXHBh
cg0KU2luY2VyZWx5LFxwYXINCk5vcmF5clxwYXINClxwYXINCk9uIDAxLzEzLzExIDAxOjA1LCBX
b2p0ZWsgU2t1bHNraSB3cm90ZTpccGFyDQo+IE9uIFdlZCwgMTIgSmFuIDIwMTEsIE5vcmF5ciBD
aGlsaW5nYXJpYW4gd3JvdGU6XHBhcg0KPiBccGFyDQo+Pj4gT2Jlcm9uIDA3IGNvbXBpbGVyIFBv
cnQgdG8gTGludXgvaTM4NlxwYXINCj4+PiBodHRwOi8vYmFyY2FtcC5hbS93cC1jb250ZW50L3Vw
bG9hZHMvMjAwOS8wNC9iYXJjYW1wZXZuMDkvb2Jlcm9uLnBkZlxwYXINCj4+IGl0J3MgbWluZSA6
KVxwYXINCj4gXHBhcg0KPiBNeSBjb25ncmF0dWxhdGlvbnMhXHBhcg0KPiBccGFyDQo+IFNpbmNl
IHlvdSBhcmUgYW4gZXhwZXJ0LCBsZXQgbWUgYXNrIHlvdSB0aGUgZm9sbG93aW5nIHR3byBxdWVz
dGlvbnMuXHBhcg0KPiBccGFyDQo+IEkgdGhpbmsgaXQgaXMgaW1wb3J0YW50IHRvIGRpc3Rpbmd1
aXNoIGJldHdlZW4gdGhlIGtlcm5lbC1tb2RlIGRyaXZlcnNccGFyDQo+IGFuZCB1c2VyLW1vZGUg
YXBwbGljYXRpb25zLiBUaGUgVW5peC9MaW51eCBkZXNpZ24gaW1wb3NlcyBhIHNoYXJwXHBhcg0K
PiBib3VuZGFyeSBiZXR3ZWVuIGtlcm5lbC1tb2RlIGFuZCB1c2VyLW1vZGUgcHJvZ3JhbXMuIChT
byBkb2VzIFdpbmRvd3MuKVxwYXINCj4gQSBrZXJuZWwtbW9kZSBkcml2ZXIgaXMgYSB2ZXJ5IGRp
ZmZlcmVudCBzb2Z0d2FyZSBmcm9tIGEgdXNlci1tb2RlXHBhcg0KPiBhcHBsaWNhdGlvbi4gVGhl
cmVmb3JlIHdlIHNob3VsZCB0cmVhdCB0aGVtIHNlcGFyYXRlbHkuXHBhcg0KPiBccGFyDQo+IDEp
IElzIGl0IHBvc3NpYmxlIHRvIHdyaXRlIGFuZCBjb21waWxlIGtlcm5lbC1tb2RlIHByb2dyYW1z
IGluIE9iZXJvbiBvclxwYXINCj4gQ29tcG9uZW50IFBhc2NhbD8gVGhlc2UgY291bGQgYmUgbG9h
ZGVkIGludG8gdGhlIGtlcm5lbCB3aXRoIGluc21vZC5ccGFyDQo+IFN1Y2ggcHJvZ3JhbXMgd2ls
bCBydW4gYXQgbWF4IHNwZWVkLiBJbnRlcnJ1cHQgaGFuZGxlcnMgY291bGQgYmVccGFyDQo+IGRl
dmVsb3BlZCB0aGlzIHdheS4gV2hhdCB3b3VsZCBpdCB0YWtlIHRvIHByZXBhcmUgYSBmcmFtZXdv
cmsgZm9yIHRoaXM/XHBhcg0KPiBccGFyDQo+IDIpIFRoZSBvdGhlciBxdWVzdGlvbiBpcyB1c2Vy
LW1vZGUgZW1iZWRkZWQgc3lzdGVtcyBsaWtlIE9iZXJvbiBTeXN0ZW1ccGFyDQo+IG9yIEJsYWNr
Qm94LiBUaGVzZSBhcmUgdXNlci1tb2RlIGFwcHMuIFRoZXkgYXJlIGFjdGl2YXRlZCBldmVyeSBm
ZXdccGFyDQo+IG1pbGxpc2Vjb25kcy4gVGhleSBhcmUgbm90IHJlYWwtdGltZS4gVGhlc2UgYXBw
cyBjYW4gcHJvY2VzcyBidWZmZXJlZFxwYXINCj4gZGF0YS4gVGhleSBjYW4gaGF2ZSBhIEdVSS4g
SXQgd291bGQgYmUgZ3JlYXQgaWYgdGhlc2UgR1VJcyBjb3VsZCBiZSByYW5ccGFyDQo+IG9uIGVt
YmVkZGVkIENQVXMgYW5kIGRpc3BsYXkgdGhlIGdyYXBoaWNzIG92ZXIgWC13aW5kb3dzLiBJcyBp
dCBwb3NzaWJsZVxwYXINCj4gdG8gcG9ydCBvbmUgb2YgdGhlIEdVSXMgdG8gdGhlIGVtYmVkZGVk
IGVudmlyb25tZW50P1xwYXINCj4gXHBhcg0KPiBXb2p0ZWtccGFyDQo+IFxwYXINCj4gXHBhcg0K
PiAtLS0tXHBhcg0KPiBUbyB1bnN1YnNjcmliZSwgc2VuZCBhIG1lc3NhZ2Ugd2l0aCBib2R5ICJT
SUdOT0ZGIEJMQUNLQk9YIiB0b1xwYXINCj4gTElTVFNFUlZATElTVFMuT0JFUk9OLkNIXHBhcg0K
PiBccGFyDQpccGFyDQotLS0tLUJFR0lOIFBHUCBTSUdOQVRVUkUtLS0tLVxwYXINClZlcnNpb246
IEdudVBHIHYyLjAuMTYgKEdOVS9MaW51eClccGFyDQpDb21tZW50OiBVc2luZyBHbnVQRyB3aXRo
IE1vemlsbGEgLSBodHRwOi8vZW5pZ21haWwubW96ZGV2Lm9yZy9ccGFyDQpccGFyDQppUUVjQkFF
QkFnQUdCUUpOTGpXUUFBb0pFRGJ2L2FwbGtaMUYyQjhILzE3eERHNms5b2tzbTRiN1d5UU1teUhm
XHBhcg0KbjZsY082Mkw5alo2Z2RVY2lOUEpzUHpzbTlpQytuOEpHK0hkUzFZcVVaVHZNdVM0NURE
aytVVjY4N05oS0xYNlxwYXINCkFESE1YOXB5Ukp0SUtMR0JVQkJBSW9XcEpWTm8xZkRtS3RBUHl3
THllbFhRenZhTnM4OTJTcDZjeEtGT0Y3YnBccGFyDQpuL2FvSHFVbk1pdDh5cFhySWdmRjA5SGdQ
R1h3anlKTjhtdjZGZXUxNXpMU2hYM1cya3lPdDFpQXhhamR6cmVlXHBhcg0KeExYekNuc0JMVEtk
QW92YjltNXI1ZC9rK0ZuM2h1czNsTjBNS25sVWZTak9ydnhkWmYrWEtxVkdCYm50bDJVelxwYXIN
ClFla0NES3NaZnRlQW1tK0UxOGRBd0NVakczM1N5OHB5T0YwcVVQdzNqRStKL0tWYnFlcHVFcU02
ai95Y2t4RT1ccGFyDQo9V3dhMVxwYXINCi0tLS0tRU5EIFBHUCBTSUdOQVRVUkUtLS0tLVxwYXIN
ClxwYXINClxwYXINCi0tLS1ccGFyDQpUbyB1bnN1YnNjcmliZSwgc2VuZCBhIG1lc3NhZ2Ugd2l0
aCBib2R5ICJTSUdOT0ZGIEJMQUNLQk9YIiB0byBMSVNUU0VSVkBMSVNUUy5PfX0Aak0zT1N4MFNX
NHdM
----boundary-LibPST-iamunique-1844327810_-_---
Received on Thu Jan 13 2011 - 00:13:20 UTC

This archive was generated by hypermail 2.3.0 : Thu Sep 26 2013 - 06:30:19 UTC