(unknown charset) Re: [BLACKBOX] Read-only IN parameters for all data types

From: (unknown charset) Oleg N. Cher <"Oleg>
Date: Wed, 20 Feb 2008 17:53:15 +0200

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

Hi Chris,

>What we would call a 'double-edged sword' - but I don't agree.

Yes, it is that I wanted to say, thank you :-)

>> - Parameters IN can be used for building of more
>> optimal machine code, in some cases. (+)
>Yes. Particularly so for large arrays and records. It means that the

>programmer does not have to resort to the 'kludge' of passing such large
>read-only parameters as VARs just for reasons of efficiency. This dubious
>practice has the associated real risk that the parameters could be
>inadvertently modified.

It is serious argument. As a way of additional secure,
the obvious indication of an invariance. And why you
do not want to use for this purpose CONST? Instead of IN ?

Using of CONST is logically continuation of using VAR:
CONST indicates that parameter is guarded for read-only,
VAR indicates that parametr may change. It's Oberon-style.

>Language features that give optimisation hints to the compiler are not a new
>concept in Oberon. e.g. INC and DEC, FOR loops (partially so - not to the
>same extent as in Pascal though), etc.

INC/DEC maybe for optimization. Though it is convenient
for using, and for the indication of monotonously
increasing or decreasing value. And I do not see the reasons
on which it would be impossible to optimize this:

  a := a + 1;

Just simply two various ways of recording which became
habitual since Pascal/Modula times.

Cycle FOR though it a little also is ambiguous, but very
convenient for programming. Its analogue is practically
in all programming languages.

Btw, I used compiler of Oberon (not Oberon-2) for MS-DOS.
It has not cycle FOR :-) That is shown by some inconvenience
in programm, the way of recording turns out hardly
more bulky and not so clear.

Other curious moment, that the high portability occuring
(from following to the standard has led) to that I
practically invariable broadcast game sources from
old MS-DOS Oberon-1 Compiler to modern Component Pascal.
The only thing that is requiring in the amendment these
are EXTENSIBLE RECORDs.

I ascertain very good compatibility Component Pascal with
an old Oberon, not speaking already about Oberon-2.
All this allows me to use BlackBox as the compiler
of Oberon giving very small EXEcutables to an output.

>The precedent has already been set - Component Pascal
>is not standard Oberon.

It is other strong standard around of which everyone are
going to and which has many chances to become a new
beacon of component programming in general.

And as we know, your project called Microbe, but not
MicrComPas ;-)
  
>> - Here the compiler can understand, that parameter IN
>> does not change anywhere (at second pass in moment of
>> compiling. More difficultly if compiler is one-passed).
>> So the obvious indication of IN from the given point
>> of view is excessive. (-)
>It is no more difficult in a one-pass Component Pascal compiler as all items

>have to be declared before being used as a formal parameter.

However if it is not specified (as is now made) the compiler
does not know, whether the parameter will change inside
a body of procedure. Until then it will not change.

I have thought: after first pass the compiler will knows
whether the parameter changes. And in moment of second pass
will be generated corresponding optimal code.

>> I want to say what. When the programmer describes
>> the decision a tasks - it is the most important for him
>> WHAT is done, instead of HOW. And so IN here is an
>> indication to the compiler HOW more effectively to generate
>> a code instead of WHAT programmer wanted to say about an
>> algorithm of program.

The Oberon (and Component Pascal) is very useful to us to those,

that hides low-level details of realization. For example:

PROCEDURE Do* (VAR a: INTEGER; b, c: INTEGER);

C language:

extern "C" __declspec(dllexport) void stdcall Do (int &a, int *b, unsigned int c);

And it very much helps our thinking to concentrate on features
of our problems, but not on realization details. -
inline, calling model (stdcall or maybe other?), using procedure
in DLL only, transfering parameters by an adress, by a pointer, or as value?)
All these complexities very much reduce our programmer's efficiency.

And I have made the shy remark, that parameters IN yet will need
to be written down in almost each procedure, and it will make your
Microbe sources incompatible with Component Pascal/Oberon-2.

Can be eat sense to make some various additions of the standard,
but to try to realize them in one compiler? Especially in view
of that people like to create own standards. And then also
we shall see which of them there is more hardy.

>That is how Oms have approached the implementation of IN parameters -
>primarily for efficiency purposes rather than improved expressiveness.

Yes, but as far as we know BlackBox compiler is one-passed.
In principle, is a method to generate optimal code on-the-fly.
For this, I propose generate two variants of the code:
one for unchanged arguments, another for changed, and,
after the ending of procedure, to insert the necessary variant.

>However, I see the real usefulness of IN parameters as part of a bigger
>picture. (Before reading on - note that I am *NOT* not proposing that
>Component Pascal should introduce these ideas)

Hmmm.. Component Pascal should be a little bit conservative
to not incorporate all rattles and knickknacks, and to remain
more or less constant core (nucleus) for several years.
Now it looks very modern but who knows that will be after 20 years? :-)

>One of the most common errors for new programmers (and not-so-new
>programmers!) using Pascal-heritage languages is to pass a parameter by
>value when it should have been passed by reference:
>
>e.g.
>
>PROCEDURE Double(i: INTEGER);
>BEGIN
> i := i * 2
>END Double;
>
>(This example is perhaps too trivial - in the real world the prcoedure would
>be much more complex and the mistake more easily overlooked)

The transfering of parameters concepts of language C ( & * )
are much more complex than for understanding, than a way
accepted in Pascal. But I agree with you - such mistakes happen.
But beginners in Oberon can admit such mistake once. While
they will understand a difference of transfers by value and by reference.

But before the beginners having a chanse to make such mistake,
the beginners should choose for itself Oberon as a language to working.
Then he should choose the compiler. But with a choice of language,
the beginner understands, that there is no uniform an Oberon.
He should choose among various subsets of Oberon (with different
names, and with very partly compatiblity), and every platform has
unofficial features. If he need works in .NET - he must know
Zonnon, or, maybe GPCP to choose?)

All it puts the beginner in the big difficulty from which he finds
exit in uniform and safe (and well supported) C#.NET or still something.

>I'm also sorry if I have misinterpreted some of your comments - I did have a
>little difficulty fully understanding some of the things you were trying to
>say - but nothing too major I hope!

Yes, nothing too major :-)
Thank you, you are serious opponent.
And I do not see anything bad in the project Microbe,
probably each programmer should reach the language...

But really I do not need the Oberon for ARM (or .NET, it doesn't matter)
only, compatible with itself only. Because ARM (or Windows, or .NET, etc)
it yesterday a novelty, today wide it is used, and tomorrow it is too obsolete.

Instead of it I want uniform constant years a formal way of recording
algorithms and one standard language (let an Oberon-2) the compiler,
which can build programs for old, modern and future devices and platform.
It is a sight in the future and the past simultaneously.

Some things switched in Oberon-SA seem to me doubtful for
convenient programming. Its can appear useful only for optimization.
For example, what in convenience of restriction CASE that
all elements of a choice followed successively?
Or, only one size of type INTEGER? Good, let it will be only 32 bits,
but as with it to save memory allocating the big array of small numbers {0..7}?

I think more likely, that the Oberon-SA is a hobby of Prof. Wirth, than
the serious industrial decision, But I can be not right.


Oleg N. Cher,
Colossoft Research.
allot{([at]})nowhere.xy
2008-02-20


----
To unsubscribe, send a message with body "SIGNOFF BLACKBOX" to LISTSERV{([at]})nowhere.xy----boundary-LibPST-iamunique-256942694_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"
e1xydGYxXGFuc2lcYW5zaWNwZzEyNTFcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy
c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj
b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh
cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwIEhpIENocmlzLFxwYXINClxwYXINCj5XaGF0IHdl
IHdvdWxkIGNhbGwgYSAnZG91YmxlLWVkZ2VkIHN3b3JkJyAtIGJ1dCBJIGRvbid0IGFncmVlLlxw
YXINClxwYXINClllcywgaXQgaXMgdGhhdCBJIHdhbnRlZCB0byBzYXksIHRoYW5rIHlvdSA6LSlc
cGFyDQpccGFyDQo+PiAtIFBhcmFtZXRlcnMgSU4gY2FuIGJlIHVzZWQgZm9yIGJ1aWxkaW5nIG9m
IG1vcmVccGFyDQo+PiAgIG9wdGltYWwgbWFjaGluZSBjb2RlLCBpbiBzb21lIGNhc2VzLiAoKylc
cGFyDQo+WWVzLiBQYXJ0aWN1bGFybHkgc28gZm9yIGxhcmdlIGFycmF5cyBhbmQgcmVjb3Jkcy4g
SXQgbWVhbnMgdGhhdCB0aGVccGFyDQo+cHJvZ3JhbW1lciBkb2VzIG5vdCBoYXZlIHRvIHJlc29y
dCB0byB0aGUgJ2tsdWRnZScgb2YgcGFzc2luZyBzdWNoIGxhcmdlXHBhcg0KPnJlYWQtb25seSBw
YXJhbWV0ZXJzIGFzIFZBUnMganVzdCBmb3IgcmVhc29ucyBvZiBlZmZpY2llbmN5LiBUaGlzIGR1
YmlvdXNccGFyDQo+cHJhY3RpY2UgaGFzIHRoZSBhc3NvY2lhdGVkIHJlYWwgcmlzayB0aGF0IHRo
ZSBwYXJhbWV0ZXJzIGNvdWxkIGJlXHBhcg0KPmluYWR2ZXJ0ZW50bHkgbW9kaWZpZWQuXHBhcg0K
XHBhcg0KSXQgaXMgc2VyaW91cyBhcmd1bWVudC4gQXMgYSB3YXkgb2YgYWRkaXRpb25hbCBzZWN1
cmUsXHBhcg0KdGhlIG9idmlvdXMgaW5kaWNhdGlvbiBvZiBhbiBpbnZhcmlhbmNlLiBBbmQgd2h5
IHlvdVxwYXINCmRvIG5vdCB3YW50IHRvIHVzZSBmb3IgdGhpcyBwdXJwb3NlIENPTlNUPyBJbnN0
ZWFkIG9mIElOID9ccGFyDQpccGFyDQpVc2luZyBvZiBDT05TVCBpcyBsb2dpY2FsbHkgY29udGlu
dWF0aW9uIG9mIHVzaW5nIFZBUjpccGFyDQpDT05TVCBpbmRpY2F0ZXMgdGhhdCBwYXJhbWV0ZXIg
aXMgZ3VhcmRlZCBmb3IgcmVhZC1vbmx5LFxwYXINClZBUiBpbmRpY2F0ZXMgdGhhdCBwYXJhbWV0
ciBtYXkgY2hhbmdlLiBJdCdzIE9iZXJvbi1zdHlsZS5ccGFyDQpccGFyDQo+TGFuZ3VhZ2UgZmVh
dHVyZXMgdGhhdCBnaXZlIG9wdGltaXNhdGlvbiBoaW50cyB0byB0aGUgY29tcGlsZXIgYXJlIG5v
dCBhIG5ld1xwYXINCj5jb25jZXB0IGluIE9iZXJvbi4gZS5nLiBJTkMgYW5kIERFQywgRk9SIGxv
b3BzIChwYXJ0aWFsbHkgc28gLSBub3QgdG8gdGhlXHBhcg0KPnNhbWUgZXh0ZW50IGFzIGluIFBh
c2NhbCB0aG91Z2gpLCBldGMuXHBhcg0KXHBhcg0KSU5DL0RFQyBtYXliZSBmb3Igb3B0aW1pemF0
aW9uLiBUaG91Z2ggaXQgaXMgY29udmVuaWVudCBccGFyDQpmb3IgdXNpbmcsIGFuZCBmb3IgdGhl
IGluZGljYXRpb24gb2YgbW9ub3Rvbm91c2x5XHBhcg0KaW5jcmVhc2luZyBvciBkZWNyZWFzaW5n
IHZhbHVlLiBBbmQgSSBkbyBub3Qgc2VlIHRoZSByZWFzb25zXHBhcg0Kb24gd2hpY2ggaXQgd291
bGQgYmUgaW1wb3NzaWJsZSB0byBvcHRpbWl6ZSB0aGlzOlxwYXINClxwYXINCiAgYSA6PSBhICsg
MTtccGFyDQpccGFyDQpKdXN0IHNpbXBseSB0d28gdmFyaW91cyB3YXlzIG9mIHJlY29yZGluZyB3
aGljaCBiZWNhbWVccGFyDQpoYWJpdHVhbCBzaW5jZSBQYXNjYWwvTW9kdWxhIHRpbWVzLlxwYXIN
ClxwYXINCkN5Y2xlIEZPUiB0aG91Z2ggaXQgYSBsaXR0bGUgYWxzbyBpcyBhbWJpZ3VvdXMsIGJ1
dCB2ZXJ5XHBhcg0KY29udmVuaWVudCBmb3IgcHJvZ3JhbW1pbmcuIEl0cyBhbmFsb2d1ZSBpcyBw
cmFjdGljYWxseVxwYXINCmluIGFsbCBwcm9ncmFtbWluZyBsYW5ndWFnZXMuXHBhcg0KXHBhcg0K
QnR3LCBJIHVzZWQgY29tcGlsZXIgb2YgT2Jlcm9uIChub3QgT2Jlcm9uLTIpIGZvciBNUy1ET1Mu
XHBhcg0KSXQgaGFzIG5vdCBjeWNsZSBGT1IgOi0pIFRoYXQgaXMgc2hvd24gYnkgc29tZSBpbmNv
bnZlbmllbmNlXHBhcg0KaW4gcHJvZ3JhbW0sIHRoZSB3YXkgb2YgcmVjb3JkaW5nIHR1cm5zIG91
dCBoYXJkbHlccGFyDQptb3JlIGJ1bGt5IGFuZCBub3Qgc28gY2xlYXIuXHBhcg0KXHBhcg0KT3Ro
ZXIgY3VyaW91cyBtb21lbnQsIHRoYXQgdGhlIGhpZ2ggcG9ydGFiaWxpdHkgb2NjdXJpbmdccGFy
DQooZnJvbSBmb2xsb3dpbmcgdG8gdGhlIHN0YW5kYXJkIGhhcyBsZWQpIHRvIHRoYXQgSVxwYXIN
CnByYWN0aWNhbGx5IGludmFyaWFibGUgYnJvYWRjYXN0IGdhbWUgc291cmNlcyBmcm9tXHBhcg0K
b2xkIE1TLURPUyBPYmVyb24tMSBDb21waWxlciB0byBtb2Rlcm4gQ29tcG9uZW50IFBhc2NhbC5c
cGFyDQpUaGUgb25seSB0aGluZyB0aGF0IGlzIHJlcXVpcmluZyBpbiB0aGUgYW1lbmRtZW50IHRo
ZXNlXHBhcg0KYXJlIEVYVEVOU0lCTEUgUkVDT1JEcy5ccGFyDQpccGFyDQpJIGFzY2VydGFpbiB2
ZXJ5IGdvb2QgY29tcGF0aWJpbGl0eSBDb21wb25lbnQgUGFzY2FsIHdpdGhccGFyDQphbiBvbGQg
T2Jlcm9uLCBub3Qgc3BlYWtpbmcgYWxyZWFkeSBhYm91dCBPYmVyb24tMi5ccGFyDQpBbGwgdGhp
cyBhbGxvd3MgbWUgdG8gdXNlIEJsYWNrQm94IGFzIHRoZSBjb21waWxlclxwYXINCm9mIE9iZXJv
biBnaXZpbmcgdmVyeSBzbWFsbCBFWEVjdXRhYmxlcyB0byBhbiBvdXRwdXQuXHBhcg0KXHBhcg0K
PlRoZSBwcmVjZWRlbnQgaGFzIGFscmVhZHkgYmVlbiBzZXQgLSBDb21wb25lbnQgUGFzY2FsXHBh
cg0KPmlzIG5vdCBzdGFuZGFyZCBPYmVyb24uXHBhcg0KXHBhcg0KSXQgaXMgb3RoZXIgc3Ryb25n
IHN0YW5kYXJkIGFyb3VuZCBvZiB3aGljaCBldmVyeW9uZSBhcmVccGFyDQpnb2luZyB0byBhbmQg
d2hpY2ggaGFzIG1hbnkgY2hhbmNlcyB0byBiZWNvbWUgYSBuZXdccGFyDQpiZWFjb24gb2YgY29t
cG9uZW50IHByb2dyYW1taW5nIGluIGdlbmVyYWwuXHBhcg0KXHBhcg0KQW5kIGFzIHdlIGtub3cs
IHlvdXIgcHJvamVjdCBjYWxsZWQgTWljcm9iZSwgYnV0IG5vdFxwYXINCk1pY3JDb21QYXMgOy0p
XHBhcg0KICBccGFyDQo+PiAtIEhlcmUgdGhlIGNvbXBpbGVyIGNhbiB1bmRlcnN0YW5kLCB0aGF0
IHBhcmFtZXRlciBJTlxwYXINCj4+IGRvZXMgbm90IGNoYW5nZSBhbnl3aGVyZSAoYXQgc2Vjb25k
IHBhc3MgaW4gbW9tZW50IG9mXHBhcg0KPj4gY29tcGlsaW5nLiBNb3JlIGRpZmZpY3VsdGx5IGlm
IGNvbXBpbGVyIGlzIG9uZS1wYXNzZWQpLlxwYXINCj4+IFNvIHRoZSBvYnZpb3VzIGluZGljYXRp
b24gb2YgSU4gZnJvbSB0aGUgZ2l2ZW4gcG9pbnRccGFyDQo+PiBvZiB2aWV3IGlzIGV4Y2Vzc2l2
ZS4gKC0pXHBhcg0KPkl0IGlzIG5vIG1vcmUgZGlmZmljdWx0IGluIGEgb25lLXBhc3MgQ29tcG9u
ZW50IFBhc2NhbCBjb21waWxlciBhcyBhbGwgaXRlbXNccGFyDQo+aGF2ZSB0byBiZSBkZWNsYXJl
ZCBiZWZvcmUgYmVpbmcgdXNlZCBhcyBhIGZvcm1hbCBwYXJhbWV0ZXIuXHBhcg0KXHBhcg0KSG93
ZXZlciBpZiBpdCBpcyBub3Qgc3BlY2lmaWVkIChhcyBpcyBub3cgbWFkZSkgdGhlIGNvbXBpbGVy
XHBhcg0KZG9lcyBub3Qga25vdywgd2hldGhlciB0aGUgcGFyYW1ldGVyIHdpbGwgY2hhbmdlIGlu
c2lkZVxwYXINCmEgYm9keSBvZiBwcm9jZWR1cmUuIFVudGlsIHRoZW4gaXQgd2lsbCBub3QgY2hh
bmdlLlxwYXINClxwYXINCkkgaGF2ZSB0aG91Z2h0OiBhZnRlciBmaXJzdCBwYXNzIHRoZSBjb21w
aWxlciB3aWxsIGtub3dzXHBhcg0Kd2hldGhlciB0aGUgcGFyYW1ldGVyIGNoYW5nZXMuIEFuZCBp
biBtb21lbnQgb2Ygc2Vjb25kIHBhc3NccGFyDQp3aWxsIGJlIGdlbmVyYXRlZCBjb3JyZXNwb25k
aW5nIG9wdGltYWwgY29kZS5ccGFyDQpccGFyDQo+PiBJIHdhbnQgdG8gc2F5IHdoYXQuIFdoZW4g
dGhlIHByb2dyYW1tZXIgZGVzY3JpYmVzXHBhcg0KPj4gdGhlIGRlY2lzaW9uIGEgdGFza3MgLSBp
dCBpcyB0aGUgbW9zdCBpbXBvcnRhbnQgZm9yIGhpbVxwYXINCj4+IFdIQVQgaXMgZG9uZSwgaW5z
dGVhZCBvZiBIT1cuIEFuZCBzbyBJTiBoZXJlIGlzIGFuXHBhcg0KPj4gaW5kaWNhdGlvbiB0byB0
aGUgY29tcGlsZXIgSE9XIG1vcmUgZWZmZWN0aXZlbHkgdG8gZ2VuZXJhdGVccGFyDQo+PiBhIGNv
ZGUgaW5zdGVhZCBvZiBXSEFUIHByb2dyYW1tZXIgd2FudGVkIHRvIHNheSBhYm91dCBhblxwYXIN
Cj4+IGFsZ29yaXRobSBvZiBwcm9ncmFtLlxwYXINClxwYXINClRoZSBPYmVyb24gKGFuZCBDb21w
b25lbnQgUGFzY2FsKSBpcyB2ZXJ5IHVzZWZ1bCB0byB1cyB0byB0aG9zZSxccGFyDQp0aGF0IGhp
ZGVzIGxvdy1sZXZlbCBkZXRhaWxzIG9mIHJlYWxpemF0aW9uLiBGb3IgZXhhbXBsZTpccGFyDQpc
cGFyDQpQUk9DRURVUkUgRG8qIChWQVIgYTogSU5URUdFUjsgYiwgYzogSU5URUdFUik7XHBhcg0K
XHBhcg0KQyBsYW5ndWFnZTpccGFyDQpccGFyDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhw
b3J0KSB2b2lkIHN0ZGNhbGwgRG8gKGludCAmYSwgaW50ICpiLCB1bnNpZ25lZCBpbnQgYyk7XHBh
cg0KXHBhcg0KQW5kIGl0IHZlcnkgbXVjaCBoZWxwcyBvdXIgdGhpbmtpbmcgdG8gY29uY2VudHJh
dGUgb24gZmVhdHVyZXNccGFyDQpvZiBvdXIgcHJvYmxlbXMsIGJ1dCBub3Qgb24gcmVhbGl6YXRp
b24gZGV0YWlscy4gLVxwYXINCmlubGluZSwgY2FsbGluZyBtb2RlbCAoc3RkY2FsbCBvciBtYXli
ZSBvdGhlcj8pLCB1c2luZyBwcm9jZWR1cmVccGFyDQppbiBETEwgb25seSwgdHJhbnNmZXJpbmcg
cGFyYW1ldGVycyBieSBhbiBhZHJlc3MsIGJ5IGEgcG9pbnRlciwgb3IgYXMgdmFsdWU/KVxwYXIN
CkFsbCB0aGVzZSBjb21wbGV4aXRpZXMgdmVyeSBtdWNoIHJlZHVjZSBvdXIgcHJvZ3JhbW1lcidz
IGVmZmljaWVuY3kuXHBhcg0KXHBhcg0KQW5kIEkgaGF2ZSBtYWRlIHRoZSBzaHkgcmVtYXJrLCB0
aGF0IHBhcmFtZXRlcnMgSU4geWV0IHdpbGwgbmVlZFxwYXINCnRvIGJlIHdyaXR0ZW4gZG93biBp
biBhbG1vc3QgZWFjaCBwcm9jZWR1cmUsIGFuZCBpdCB3aWxsIG1ha2UgeW91clxwYXINCk1pY3Jv
YmUgc291cmNlcyBpbmNvbXBhdGlibGUgd2l0aCBDb21wb25lbnQgUGFzY2FsL09iZXJvbi0yLlxw
YXINClxwYXINCkNhbiBiZSBlYXQgc2Vuc2UgdG8gbWFrZSBzb21lIHZhcmlvdXMgYWRkaXRpb25z
IG9mIHRoZSBzdGFuZGFyZCxccGFyDQpidXQgdG8gdHJ5IHRvIHJlYWxpemUgdGhlbSBpbiBvbmUg
Y29tcGlsZXI/IEVzcGVjaWFsbHkgaW4gdmlld1xwYXINCm9mIHRoYXQgcGVvcGxlIGxpa2UgdG8g
Y3JlYXRlIG93biBzdGFuZGFyZHMuIEFuZCB0aGVuIGFsc29ccGFyDQp3ZSBzaGFsbCBzZWUgd2hp
Y2ggb2YgdGhlbSB0aGVyZSBpcyBtb3JlIGhhcmR5LlxwYXINClxwYXINCj5UaGF0IGlzIGhvdyBP
bXMgaGF2ZSBhcHByb2FjaGVkIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBJTiBwYXJhbWV0ZXJzIC1c
cGFyDQo+cHJpbWFyaWx5IGZvciBlZmZpY2llbmN5IHB1cnBvc2VzIHJhdGhlciB0aGFuIGltcHJv
dmVkIGV4cHJlc3NpdmVuZXNzLiBccGFyDQpccGFyDQpZZXMsIGJ1dCBhcyBmYXIgYXMgd2Uga25v
dyBCbGFja0JveCBjb21waWxlciBpcyBvbmUtcGFzc2VkLlxwYXINCkluIHByaW5jaXBsZSwgaXMg
YSBtZXRob2QgdG8gZ2VuZXJhdGUgb3B0aW1hbCBjb2RlIG9uLXRoZS1mbHkuXHBhcg0KRm9yIHRo
aXMsIEkgcHJvcG9zZSBnZW5lcmF0ZSB0d28gdmFyaWFudHMgb2YgdGhlIGNvZGU6XHBhcg0Kb25l
IGZvciB1bmNoYW5nZWQgYXJndW1lbnRzLCBhbm90aGVyIGZvciBjaGFuZ2VkLCBhbmQsXHBhcg0K
YWZ0ZXIgdGhlIGVuZGluZyBvZiBwcm9jZWR1cmUsIHRvIGluc2VydCB0aGUgbmVjZXNzYXJ5IHZh
cmlhbnQuXHBhcg0KXHBhcg0KPkhvd2V2ZXIsIEkgc2VlIHRoZSByZWFsIHVzZWZ1bG5lc3Mgb2Yg
SU4gcGFyYW1ldGVycyBhcyBwYXJ0IG9mIGEgYmlnZ2VyXHBhcg0KPnBpY3R1cmUuIChCZWZvcmUg
cmVhZGluZyBvbiAtIG5vdGUgdGhhdCBJIGFtICpOT1QqIG5vdCBwcm9wb3NpbmcgdGhhdFxwYXIN
Cj5Db21wb25lbnQgUGFzY2FsIHNob3VsZCBpbnRyb2R1Y2UgdGhlc2UgaWRlYXMpXHBhcg0KXHBh
cg0KSG1tbS4uIENvbXBvbmVudCBQYXNjYWwgc2hvdWxkIGJlIGEgbGl0dGxlIGJpdCBjb25zZXJ2
YXRpdmVccGFyDQp0byBub3QgaW5jb3Jwb3JhdGUgYWxsIHJhdHRsZXMgYW5kIGtuaWNra25hY2tz
LCBhbmQgdG8gcmVtYWluXHBhcg0KbW9yZSBvciBsZXNzIGNvbnN0YW50IGNvcmUgKG51Y2xldXMp
IGZvciBzZXZlcmFsIHllYXJzLlxwYXINCk5vdyBpdCBsb29rcyB2ZXJ5IG1vZGVybiBidXQgd2hv
IGtub3dzIHRoYXQgd2lsbCBiZSBhZnRlciAyMCB5ZWFycz8gOi0pXHBhcg0KXHBhcg0KPk9uZSBv
ZiB0aGUgbW9zdCBjb21tb24gZXJyb3JzIGZvciBuZXcgcHJvZ3JhbW1lcnMgKGFuZCBub3Qtc28t
bmV3XHBhcg0KPnByb2dyYW1tZXJzISkgdXNpbmcgUGFzY2FsLWhlcml0YWdlIGxhbmd1YWdlcyBp
cyB0byBwYXNzIGEgcGFyYW1ldGVyIGJ5XHBhcg0KPnZhbHVlIHdoZW4gaXQgc2hvdWxkIGhhdmUg
YmVlbiBwYXNzZWQgYnkgcmVmZXJlbmNlOlxwYXINCj5ccGFyDQo+ZS5nLlxwYXINCj5ccGFyDQo+
UFJPQ0VEVVJFIERvdWJsZShpOiBJTlRFR0VSKTtccGFyDQo+QkVHSU5ccGFyDQo+ICBpIDo9IGkg
KiAyXHBhcg0KPkVORCBEb3VibGU7XHBhcg0KPlxwYXINCj4oVGhpcyBleGFtcGxlIGlzIHBlcmhh
cHMgdG9vIHRyaXZpYWwgLSBpbiB0aGUgcmVhbCB3b3JsZCB0aGUgcHJjb2VkdXJlIHdvdWxkXHBh
cg0KPmJlIG11Y2ggbW9yZSBjb21wbGV4IGFuZCB0aGUgbWlzdGFrZSBtb3JlIGVhc2lseSBvdmVy
bG9va2VkKVxwYXINClxwYXINClRoZSB0cmFuc2ZlcmluZyBvZiBwYXJhbWV0ZXJzIGNvbmNlcHRz
IG9mIGxhbmd1YWdlIEMgKCAmICogKVxwYXINCmFyZSBtdWNoIG1vcmUgY29tcGxleCB0aGFuIGZv
ciB1bmRlcnN0YW5kaW5nLCB0aGFuIGEgd2F5XHBhcg0KYWNjZXB0ZWQgaW4gUGFzY2FsLiBCdXQg
SSBhZ3JlZSB3aXRoIHlvdSAtIHN1Y2ggbWlzdGFrZXMgaGFwcGVuLlxwYXINCkJ1dCBiZWdpbm5l
cnMgaW4gT2Jlcm9uIGNhbiBhZG1pdCBzdWNoIG1pc3Rha2Ugb25jZS4gV2hpbGVccGFyDQp0aGV5
IHdpbGwgdW5kZXJzdGFuZCBhIGRpZmZlcmVuY2Ugb2YgdHJhbnNmZXJzIGJ5IHZhbHVlIGFuZCBi
eSByZWZlcmVuY2UuXHBhcg0KXHBhcg0KQnV0IGJlZm9yZSB0aGUgYmVnaW5uZXJzIGhhdmluZyBh
IGNoYW5zZSB0byBtYWtlIHN1Y2ggbWlzdGFrZSxccGFyDQp0aGUgYmVnaW5uZXJzIHNob3VsZCBj
aG9vc2UgZm9yIGl0c2VsZiBPYmVyb24gYXMgYSBsYW5ndWFnZSB0byB3b3JraW5nLlxwYXINClRo
ZW4gaGUgc2hvdWxkIGNob29zZSB0aGUgY29tcGlsZXIuIEJ1dCB3aXRoIGEgY2hvaWNlIG9mIGxh
bmd1YWdlLFxwYXINCnRoZSBiZWdpbm5lciB1bmRlcnN0YW5kcywgdGhhdCB0aGVyZSBpcyBubyB1
bmlmb3JtIGFuIE9iZXJvbi5ccGFyDQpIZSBzaG91bGQgY2hvb3NlIGFtb25nIHZhcmlvdXMgc3Vi
c2V0cyBvZiBPYmVyb24gKHdpdGggZGlmZmVyZW50XHBhcg0KbmFtZXMsIGFuZCB3aXRoIHZlcnkg
cGFydGx5IGNvbXBhdGlibGl0eSksIGFuZCBldmVyeSBwbGF0Zm9ybSBoYXNccGFyDQp1bm9mZmlj
aWFsIGZlYXR1cmVzLiBJZiBoZSBuZWVkIHdvcmtzIGluIC5ORVQgLSBoZSBtdXN0IGtub3dccGFy
DQpab25ub24sIG9yLCBtYXliZSBHUENQIHRvIGNob29zZT8pXHBhcg0KXHBhcg0KQWxsIGl0IHB1
dHMgdGhlIGJlZ2lubmVyIGluIHRoZSBiaWcgZGlmZmljdWx0eSBmcm9tIHdoaWNoIGhlIGZpbmRz
XHBhcg0KZXhpdCBpbiB1bmlmb3JtIGFuZCBzYWZlIChhbmQgd2VsbCBzdXBwb3J0ZWQpIEMjLk5F
VCBvciBzdGlsbCBzb21ldGhpbmcuXHBhcg0KXHBhcg0KPkknbSBhbHNvIHNvcnJ5IGlmIEkgaGF2
ZSBtaXNpbnRlcnByZXRlZCBzb21lIG9mIHlvdXIgY29tbWVudHMgLSBJIGRpZCBoYXZlIGFccGFy
DQo+bGl0dGxlIGRpZmZpY3VsdHkgZnVsbHkgdW5kZXJzdGFuZGluZyBzb21lIG9mIHRoZSB0aGlu
Z3MgeW91IHdlcmUgdHJ5aW5nIHRvXHBhcg0KPnNheSAtIGJ1dCBub3RoaW5nIHRvbyBtYWpvciBJ
IGhvcGUhXHBhcg0KXHBhcg0KWWVzLCBub3RoaW5nIHRvbyBtYWpvciA6LSlccGFyDQpUaGFuayB5
b3UsIHlvdSBhcmUgc2VyaW91cyBvcHBvbmVudC5ccGFyDQpBbmQgSSBkbyBub3Qgc2VlIGFueXRo
aW5nIGJhZCBpbiB0aGUgcHJvamVjdCBNaWNyb2JlLFxwYXINCnByb2JhYmx5IGVhY2ggcHJvZ3Jh
bW1lciBzaG91bGQgcmVhY2ggdGhlIGxhbmd1YWdlLi4uXHBhcg0KXHBhcg0KQnV0IHJlYWxseSBJ
IGRvIG5vdCBuZWVkIHRoZSBPYmVyb24gZm9yIEFSTSAob3IgLk5FVCwgaXQgZG9lc24ndCBtYXR0
ZXIpXHBhcg0Kb25seSwgY29tcGF0aWJsZSB3aXRoIGl0c2VsZiBvbmx5LiBCZWNhdXNlIEFSTSAo
b3IgV2luZG93cywgb3IgLk5FVCwgZXRjKVxwYXINCml0IHllc3RlcmRheSBhIG5vdmVsdHksIHRv
ZGF5IHdpZGUgaXQgaXMgdXNlZCwgYW5kIHRvbW9ycm93IGl0IGlzIHRvbyBvYnNvbGV0ZS5ccGFy
DQpccGFyDQpJbnN0ZWFkIG9mIGl0IEkgd2FudCB1bmlmb3JtIGNvbnN0YW50IHllYXJzIGEgZm9y
bWFsIHdheSBvZiByZWNvcmRpbmdccGFyDQphbGdvcml0aG1zIGFuZCBvbmUgc3RhbmRhcmQgbGFu
Z3VhZ2UgKGxldCBhbiBPYmVyb24tMikgdGhlIGNvbXBpbGVyLFxwYXINCndoaWNoIGNhbiBidWls
ZCBwcm9ncmFtcyBmb3Igb2xkLCBtb2Rlcm4gYW5kIGZ1dHVyZSBkZXZpY2VzIGFuZCBwbGF0Zm9y
bS5ccGFyDQpJdCBpcyBhIHNpZ2h0IGluIHRoZSBmdXR1cmUgYW5kIHRoZSBwYXN0IHNpbXVsdGFu
ZW91c2x5LlxwYXINClxwYXINClNvbWUgdGhpbmdzIHN3aXRjaGVkIGluIE9iZXJvbi1TQSBzZWVt
IHRvIG1lIGRvdWJ0ZnVsIGZvclxwYXINCmNvbnZlbmllbnQgcHJvZ3JhbW1pbmcuIEl0cyBjYW4g
YXBwZWFyIHVzZWZ1bCBvbmx5IGZvciBvcHRpbWl6YXRpb24uXHBhcg0KRm9yIGV4YW1wbGUsIHdo
YXQgaW4gY29udmVuaWVuY2Ugb2YgcmVzdHJpY3Rpb24gQ0FTRSB0aGF0XHBhcg0KYWxsIGVsZW1l
bnRzIG9mIGEgY2hvaWNlIGZvbGxvd2VkIHN1Y2Nlc3NpdmVseT9ccGFyDQpPciwgb25seSBvbmUg
c2l6ZSBvZiB0eXBlIElOVEVHRVI/IEdvb2QsIGxldCBpdCB3aWxsIGJlIG9ubHkgMzIgYml0cyxc
cGFyDQpidXQgYXMgd2l0aCBpdCB0byBzYXZlIG1lbW9yeSBhbGxvY2F0aW5nIHRoZSBiaWcgYXJy
YXkgb2Ygc21hbGwgbnVtYmVycyBcezAuLjdcfT9ccGFyDQpccGFyDQpJIHRoaW5rIG1vcmUgbGlr
ZWx5LCB0aGF0IHRoZSBPYmVyb24tU0EgaXMgYSBob2JieSBvZiBQcm9mLiBXaXJ0aCwgdGhhblxw
YXINCnRoZSBzZXJpb3VzIGluZHVzdHJpYWwgZGVjaXNpb24sIEJ1dCBJIGNhbiBiZSBub3Qgcmln
aHQuXHBhcg0KXHBhcg0KXHBhcg0KT2xlZyBOLiBDaGVyLFxwYXINCkNvbG9zc29mdCBSZXNlYXJj
aC5ccGFyDQphbGxvdEB1a3IubmV0XHBhcg0KMjAwOC0wMi0yMFxwYXINClxwYXINClxwYXINCi0t
LS1ccGFyDQpUbyB1bnN1YnNjcmliZSwgc2VuZCBhIG1lc3NhZ2Ugd2l0aCBib2R5ICJTSUdOT0ZG
IEJMQUNLQk9YIiB0byBMSVNUU0VSVkBMSVNUUy5PQkVST04uQ0hccGFyDQp9
----boundary-LibPST-iamunique-256942694_-_---
Received on Wed Feb 20 2008 - 16:53:15 UTC

This archive was generated by hypermail 2.3.0 : Thu Sep 26 2013 - 06:31:00 UTC