RE: - Hiding abstract methods

From: null <">
Date: Fri, 15 Jun 2007 07:10:18 +0000

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

Hi Bob & Doug,

what about a hierarchy of modules like the abstraction
layers given in BlackBox:

Abstractions in almost purely abstract modules (like e.g.
the Files module of BlackBox), which reveal only the
very necessary details and provide mechanisms for
factories (directories in BB terminology). Concrete
implementations (like HostFiles) import these, initialize
the factories and have (more or less) private interfaces.

Although now the details are still visible (in principle
via the low level interfaces) you have a least a separation
of the published stuff.

regards
--
	Bernhard Treutwein, IuK, Ref. III A 3
	Bernhard.Treutwein(at)verwaltung uni-muenchen de
> -----Original Message-----
> From: blackbox{([at]})nowhere.xy> Behalf Of Bob Walkden
> Sent: Friday, June 15, 2007 8:28 AM
> To: BlackBox Mailing List
> Subject: [BlackBox] - Hiding abstract methods
> 
> 
> You can't simultaneously hide the methods of A and have A as 
> an abstract type extensible from other modules - it's a 
> contradiction. An abstract type can't be instantiated, it 
> must be inherited and its inheritors must instantiate its 
> parts. If the parts are hidden then it's impossible for its 
> inheritors (in other modules) to instantiate them.
>  
> --
> Regards,
>  Bob 
>  
> 
> 
>   _____  
> 
> 	From: blackbox{([at]})nowhere.xy> Behalf Of Douglas G. Danforth
> 	Sent: 15 June 2007 03:35
> 	To: BlackBox Mailing List
> 	Subject: [BlackBox] - Hiding abstract methods
> 	
> 	
> 	Bob,
> 	I am trying to keep the amount of stuff shown to a minimum.
> 	
> 	There is also a procedure Run that is exported from M 
> that when called starts up and eventually calls the installed 
> reader and writer (repeatedly).
> 	The reader and writer do not invoke the hidden 
> procedures they are passive and are called by M when needed.
> 	
> 	How do I hide the methods of A, Bits, and Ints?
> 	
> 	-Doug Danforth
> 	
> 	
> 	
> 	
> 	Bob Walkden wrote: 
> 
> 		How and when are M's internal procedures 
> invoked? If the client's reader is to invoke them directly 
> then they must be made public. If you want M's hidden 
> procedures to be invoked indirectly by the reader or writer 
> you may need to provide a couple of Notifier procedures in M 
> and have the reader or writer call them explicitly.
> 		 
> 		--
> 		Regards,
> 		 Bob 
> 		 
> 
> 
>   _____  
> 
> 			From: blackbox{([at]})nowhere.xy> [mailto:blackbox{([at]})nowhere.xy> 			Sent: 14 June 2007 22:25
> 			To: BlackBox Mailing List
> 			Subject: [BlackBox] - Hiding abstract methods
> 			
> 			
> 			Chris,
> 			
> 			Here is what I would like the interface 
> to module M to appear
> 			
> 			DEFINITION M;
> 			
> 			    TYPE
> 			        A = POINTER TO ABSTRACT RECORD  END;
> 			
> 			        Bits = POINTER TO RECORD (A)
> 			            x: POINTER TO ARRAY OF SET
> 			        END;
> 			
> 			        Ints = POINTER TO RECORD (A)
> 			            x: POINTER TO ARRAY OF INTEGER
> 			        END;
> 			
> 			        Reader = PROCEDURE (VAR a: A): BOOLEAN;
> 			
> 			        Writer = PROCEDURE (a: A);
> 			
> 			    PROCEDURE InstallReader (rd: Reader);
> 			    PROCEDURE InstallWriter (wr: Writer);
> 			
> 			END M.
> 			
> 			One just installs a specific reader 
> that generates a Bits or an Ints.
> 			Internally to M there are many 
> procedures that take the abstract
> 			quantity 'a' when a read operation is 
> done and operate on it with procedures
> 			that are methods of type either Bits or 
> Ints whose definitions are given internally
> 			and are abstractions of the of type A.  
> But the user of M need not know anything
> 			about this and BlackBox should not 
> force the user to see these methods.
> 			
> 			How can this be accomplished?
> 			
> 			-Doug Danforth
> 			
> 			
> 			CFB Software wrote: 
> 
> 				Hi Doug,
> 				
> 				I don't know if I can help but 
> as nobody else has responded yet I'm
> 				willing to give it a try. I'm 
> interested in learning more about the
> 				finer details of issues like 
> this. However, I'm not sure from your
> 				desription that I understand 
> exactly what you are trying to do. Would it
> 				be possible for you to show 
> complete minimal examples of: 
> 				
> 				a) What you would like the code 
> to look like 
> 				
> 				b) How you think it needs to be 
> written to make it acceptable to
> 				Blackbox
> 				
> 				Regards,
> 				Chris Burrows
> 				CFB Software
> 				http://www.cfbsoftware.com/gpcp
> 				
> 				  
> 
> 					-----Original Message-----
> 					From: 
> blackbox{([at]})nowhere.xy> 					Behalf Of Douglas G. Danforth
> 					Sent: Wednesday, 13 
> June 2007 10:22 AM
> 					To: BlackBox Mailing List
> 					Subject: [BlackBox] - 
> Hiding abstract methods
> 					
> 					
> 					Folks,
> 					
> 					I have a conceptual 
> problem on which I would like your advice.
> 					
> 					I have an ABSTRACT type 
> A and two concrete types C1 and
> 					C2 which are extensions of A.
> 					
> 					    TYPE
> 					       A* = POINTER TO 
> ABSTRACT RECORD END;
> 					       C1* = POINTER TO 
> RECORD(A) END;
> 					       C2* = POINTER TO 
> RECORD(A) END;
> 					
> 					I would like to export 
> A (as shown with the '*'') but within the
> 					module M where A is 
> defined I *do not want* to export its
> 					methods.  I want them 
> to be completely hidden so that the user
> 					of M only needs to 
> create the instance Ci (and fill its 
> 					fields (not shown))
> 					and pass Ci to the 
> module M in which the specific methods 
> 					appropriate to Ci
> 					are specified (but also 
> not exported).  Within M, procedures take 'a'
> 					(an instance of A which 
> is either C1 or C2) and operates on it without
> 					knowledge of its 
> concrete form.  The methods of A are simply called
> 					and the concrete forms 
> of those methods as C1 or C2 are actually
> 					run.
> 					
> 					Unfortunately, it seems 
> that this scheme of things is not possible in 
> 					BlackBox.
> 					I am forced to export 
> the methods of A and also the methods of C1 and
> 					the methods of C2, 
> greatly cluttering the interface to M when 
> 					none of that
> 					information will be 
> used by the person operating with M.  
> 					Only the existence
> 					of A and the extensions 
> C1 and C2 are needed.
> 					
> 					Is there a clean way to 
> hide all of these methods?
> 					
> 					-Doug Danforth
> 					
> 					--- BlackBox
> 					--- send subject HELP 
> or UNSUBSCRIBE to blackbox{([at]})nowhere.xy> 					    
> 
> 				
> 				--- BlackBox
> 				--- send subject HELP or 
> UNSUBSCRIBE to blackbox{([at]})nowhere.xy> 				
> 				
> 				  
> 
> 
----boundary-LibPST-iamunique-1834862327_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"
e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy
c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj
b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh
cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwIEhpIEJvYiAmIERvdWcsXHBhcg0KXHBhcg0Kd2hh
dCBhYm91dCBhIGhpZXJhcmNoeSBvZiBtb2R1bGVzIGxpa2UgdGhlIGFic3RyYWN0aW9uXHBhcg0K
bGF5ZXJzIGdpdmVuIGluIEJsYWNrQm94OlxwYXINClxwYXINCkFic3RyYWN0aW9ucyBpbiBhbG1v
c3QgcHVyZWx5IGFic3RyYWN0IG1vZHVsZXMgKGxpa2UgZS5nLlxwYXINCnRoZSBGaWxlcyBtb2R1
bGUgb2YgQmxhY2tCb3gpLCB3aGljaCByZXZlYWwgb25seSB0aGVccGFyDQp2ZXJ5IG5lY2Vzc2Fy
eSBkZXRhaWxzIGFuZCBwcm92aWRlIG1lY2hhbmlzbXMgZm9yXHBhcg0KZmFjdG9yaWVzIChkaXJl
Y3RvcmllcyBpbiBCQiB0ZXJtaW5vbG9neSkuIENvbmNyZXRlIFxwYXINCmltcGxlbWVudGF0aW9u
cyAobGlrZSBIb3N0RmlsZXMpIGltcG9ydCB0aGVzZSwgaW5pdGlhbGl6ZVxwYXINCnRoZSBmYWN0
b3JpZXMgYW5kIGhhdmUgKG1vcmUgb3IgbGVzcykgcHJpdmF0ZSBpbnRlcmZhY2VzLlxwYXINClxw
YXINCkFsdGhvdWdoIG5vdyB0aGUgZGV0YWlscyBhcmUgc3RpbGwgdmlzaWJsZSAoaW4gcHJpbmNp
cGxlXHBhcg0KdmlhIHRoZSBsb3cgbGV2ZWwgaW50ZXJmYWNlcykgeW91IGhhdmUgYSBsZWFzdCBh
IHNlcGFyYXRpb25ccGFyDQpvZiB0aGUgcHVibGlzaGVkIHN0dWZmLlxwYXINClxwYXINCnJlZ2Fy
ZHNccGFyDQotLVxwYXINClx0YWIgQmVybmhhcmQgVHJldXR3ZWluLCBJdUssIFJlZi4gSUlJIEEg
M1xwYXINClx0YWIgQmVybmhhcmQuVHJldXR3ZWluKGF0KXZlcndhbHR1bmcgdW5pLW11ZW5jaGVu
IGRlXHBhcg0KXHBhcg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLVxwYXINCj4gRnJvbTog
YmxhY2tib3hAb2Jlcm9uLmNoIFttYWlsdG86YmxhY2tib3hAb2Jlcm9uLmNoXSBPbiBccGFyDQo+
IEJlaGFsZiBPZiBCb2IgV2Fsa2RlblxwYXINCj4gU2VudDogRnJpZGF5LCBKdW5lIDE1LCAyMDA3
IDg6MjggQU1ccGFyDQo+IFRvOiBCbGFja0JveCBNYWlsaW5nIExpc3RccGFyDQo+IFN1YmplY3Q6
IFtCbGFja0JveF0gLSBIaWRpbmcgYWJzdHJhY3QgbWV0aG9kc1xwYXINCj4gXHBhcg0KPiBccGFy
DQo+IFlvdSBjYW4ndCBzaW11bHRhbmVvdXNseSBoaWRlIHRoZSBtZXRob2RzIG9mIEEgYW5kIGhh
dmUgQSBhcyBccGFyDQo+IGFuIGFic3RyYWN0IHR5cGUgZXh0ZW5zaWJsZSBmcm9tIG90aGVyIG1v
ZHVsZXMgLSBpdCdzIGEgXHBhcg0KPiBjb250cmFkaWN0aW9uLiBBbiBhYnN0cmFjdCB0eXBlIGNh
bid0IGJlIGluc3RhbnRpYXRlZCwgaXQgXHBhcg0KPiBtdXN0IGJlIGluaGVyaXRlZCBhbmQgaXRz
IGluaGVyaXRvcnMgbXVzdCBpbnN0YW50aWF0ZSBpdHMgXHBhcg0KPiBwYXJ0cy4gSWYgdGhlIHBh
cnRzIGFyZSBoaWRkZW4gdGhlbiBpdCdzIGltcG9zc2libGUgZm9yIGl0cyBccGFyDQo+IGluaGVy
aXRvcnMgKGluIG90aGVyIG1vZHVsZXMpIHRvIGluc3RhbnRpYXRlIHRoZW0uXHBhcg0KPiAgXHBh
cg0KPiAtLVxwYXINCj4gUmVnYXJkcyxccGFyDQo+ICBCb2IgXHBhcg0KPiAgXHBhcg0KPiBccGFy
DQo+IFxwYXINCj4gICBfX19fXyAgXHBhcg0KPiBccGFyDQo+IFx0YWIgRnJvbTogYmxhY2tib3hA
b2Jlcm9uLmNoIFttYWlsdG86YmxhY2tib3hAb2Jlcm9uLmNoXSBPbiBccGFyDQo+IEJlaGFsZiBP
ZiBEb3VnbGFzIEcuIERhbmZvcnRoXHBhcg0KPiBcdGFiIFNlbnQ6IDE1IEp1bmUgMjAwNyAwMzoz
NVxwYXINCj4gXHRhYiBUbzogQmxhY2tCb3ggTWFpbGluZyBMaXN0XHBhcg0KPiBcdGFiIFN1Ympl
Y3Q6IFtCbGFja0JveF0gLSBIaWRpbmcgYWJzdHJhY3QgbWV0aG9kc1xwYXINCj4gXHRhYiBccGFy
DQo+IFx0YWIgXHBhcg0KPiBcdGFiIEJvYixccGFyDQo+IFx0YWIgSSBhbSB0cnlpbmcgdG8ga2Vl
cCB0aGUgYW1vdW50IG9mIHN0dWZmIHNob3duIHRvIGEgbWluaW11bS5ccGFyDQo+IFx0YWIgXHBh
cg0KPiBcdGFiIFRoZXJlIGlzIGFsc28gYSBwcm9jZWR1cmUgUnVuIHRoYXQgaXMgZXhwb3J0ZWQg
ZnJvbSBNIFxwYXINCj4gdGhhdCB3aGVuIGNhbGxlZCBzdGFydHMgdXAgYW5kIGV2ZW50dWFsbHkg
Y2FsbHMgdGhlIGluc3RhbGxlZCBccGFyDQo+IHJlYWRlciBhbmQgd3JpdGVyIChyZXBlYXRlZGx5
KS5ccGFyDQo+IFx0YWIgVGhlIHJlYWRlciBhbmQgd3JpdGVyIGRvIG5vdCBpbnZva2UgdGhlIGhp
ZGRlbiBccGFyDQo+IHByb2NlZHVyZXMgdGhleSBhcmUgcGFzc2l2ZSBhbmQgYXJlIGNhbGxlZCBi
eSBNIHdoZW4gbmVlZGVkLlxwYXINCj4gXHRhYiBccGFyDQo+IFx0YWIgSG93IGRvIEkgaGlkZSB0
aGUgbWV0aG9kcyBvZiBBLCBCaXRzLCBhbmQgSW50cz9ccGFyDQo+IFx0YWIgXHBhcg0KPiBcdGFi
IC1Eb3VnIERhbmZvcnRoXHBhcg0KPiBcdGFiIFxwYXINCj4gXHRhYiBccGFyDQo+IFx0YWIgXHBh
cg0KPiBcdGFiIFxwYXINCj4gXHRhYiBCb2IgV2Fsa2RlbiB3cm90ZTogXHBhcg0KPiBccGFyDQo+
IFx0YWIgXHRhYiBIb3cgYW5kIHdoZW4gYXJlIE0ncyBpbnRlcm5hbCBwcm9jZWR1cmVzIFxwYXIN
Cj4gaW52b2tlZD8gSWYgdGhlIGNsaWVudCdzIHJlYWRlciBpcyB0byBpbnZva2UgdGhlbSBkaXJl
Y3RseSBccGFyDQo+IHRoZW4gdGhleSBtdXN0IGJlIG1hZGUgcHVibGljLiBJZiB5b3Ugd2FudCBN
J3MgaGlkZGVuIFxwYXINCj4gcHJvY2VkdXJlcyB0byBiZSBpbnZva2VkIGluZGlyZWN0bHkgYnkg
dGhlIHJlYWRlciBvciB3cml0ZXIgXHBhcg0KPiB5b3UgbWF5IG5lZWQgdG8gcHJvdmlkZSBhIGNv
dXBsZSBvZiBOb3RpZmllciBwcm9jZWR1cmVzIGluIE0gXHBhcg0KPiBhbmQgaGF2ZSB0aGUgcmVh
ZGVyIG9yIHdyaXRlciBjYWxsIHRoZW0gZXhwbGljaXRseS5ccGFyDQo+IFx0YWIgXHRhYiAgXHBh
cg0KPiBcdGFiIFx0YWIgLS1ccGFyDQo+IFx0YWIgXHRhYiBSZWdhcmRzLFxwYXINCj4gXHRhYiBc
dGFiICBCb2IgXHBhcg0KPiBcdGFiIFx0YWIgIFxwYXINCj4gXHBhcg0KPiBccGFyDQo+ICAgX19f
X18gIFxwYXINCj4gXHBhcg0KPiBcdGFiIFx0YWIgXHRhYiBGcm9tOiBibGFja2JveEBvYmVyb24u
Y2ggXHBhcg0KPiBbbWFpbHRvOmJsYWNrYm94QG9iZXJvbi5jaF0gT24gQmVoYWxmIE9mIERvdWds
YXMgRy4gRGFuZm9ydGhccGFyDQo+IFx0YWIgXHRhYiBcdGFiIFNlbnQ6IDE0IEp1bmUgMjAwNyAy
MjoyNVxwYXINCj4gXHRhYiBcdGFiIFx0YWIgVG86IEJsYWNrQm94IE1haWxpbmcgTGlzdFxwYXIN
Cj4gXHRhYiBcdGFiIFx0YWIgU3ViamVjdDogW0JsYWNrQm94XSAtIEhpZGluZyBhYnN0cmFjdCBt
ZXRob2RzXHBhcg0KPiBcdGFiIFx0YWIgXHRhYiBccGFyDQo+IFx0YWIgXHRhYiBcdGFiIFxwYXIN
Cj4gXHRhYiBcdGFiIFx0YWIgQ2hyaXMsXHBhcg0KPiBcdGFiIFx0YWIgXHRhYiBccGFyDQo+IFx0
YWIgXHRhYiBcdGFiIEhlcmUgaXMgd2hhdCBJIHdvdWxkIGxpa2UgdGhlIGludGVyZmFjZSBccGFy
DQo+IHRvIG1vZHVsZSBNIHRvIGFwcGVhclxwYXINCj4gXHRhYiBcdGFiIFx0YWIgXHBhcg0KPiBc
dGFiIFx0YWIgXHRhYiBERUZJTklUSU9OIE07XHBhcg0KPiBcdGFiIFx0YWIgXHRhYiBccGFyDQo+
IFx0YWIgXHRhYiBcdGFiICAgICBUWVBFXHBhcg0KPiBcdGFiIFx0YWIgXHRhYiAgICAgICAgIEEg
PSBQT0lOVEVSIFRPIEFCU1RSQUNUIFJFQ09SRCAgRU5EO1xwYXINCj4gXHRhYiBcdGFiIFx0YWIg
XHBhcg0KPiBcdGFiIFx0YWIgXHRhYiAgICAgICAgIEJpdHMgPSBQT0lOVEVSIFRPIFJFQ09SRCAo
QSlccGFyDQo+IFx0YWIgXHRhYiBcdGFiICAgICAgICAgICAgIHg6IFBPSU5URVIgVE8gQVJSQVkg
T0YgU0VUXHBhcg0KPiBcdGFiIFx0YWIgXHRhYiAgICAgICAgIEVORDtccGFyDQo+IFx0YWIgXHRh
YiBcdGFiIFxwYXINCj4gXHRhYiBcdGFiIFx0YWIgICAgICAgICBJbnRzID0gUE9JTlRFUiBUTyBS
RUNPUkQgKEEpXHBhcg0KPiBcdGFiIFx0YWIgXHRhYiAgICAgICAgICAgICB4OiBQT0lOVEVSIFRP
IEFSUkFZIE9GIElOVEVHRVJccGFyDQo+IFx0YWIgXHRhYiBcdGFiICAgICAgICAgRU5EO1xwYXIN
Cj4gXHRhYiBcdGFiIFx0YWIgXHBhcg0KPiBcdGFiIFx0YWIgXHRhYiAgICAgICAgIFJlYWRlciA9
IFBST0NFRFVSRSAoVkFSIGE6IEEpOiBCT09MRUFOO1xwYXINCj4gXHRhYiBcdGFiIFx0YWIgXHBh
cg0KPiBcdGFiIFx0YWIgXHRhYiAgICAgICAgIFdyaXRlciA9IFBST0NFRFVSRSAoYTogQSk7XHBh
cg0KPiBcdGFiIFx0YWIgXHRhYiBccGFyDQo+IFx0YWIgXHRhYiBcdGFiICAgICBQUk9DRURVUkUg
SW5zdGFsbFJlYWRlciAocmQ6IFJlYWRlcik7XHBhcg0KPiBcdGFiIFx0YWIgXHRhYiAgICAgUFJP
Q0VEVVJFIEluc3RhbGxXcml0ZXIgKHdyOiBXcml0ZXIpO1xwYXINCj4gXHRhYiBcdGFiIFx0YWIg
XHBhcg0KPiBcdGFiIFx0YWIgXHRhYiBFTkQgTS5ccGFyDQo+IFx0YWIgXHRhYiBcdGFiIFxwYXIN
Cj4gXHRhYiBcdGFiIFx0YWIgT25lIGp1c3QgaW5zdGFsbHMgYSBzcGVjaWZpYyByZWFkZXIgXHBh
cg0KPiB0aGF0IGdlbmVyYXRlcyBhIEJpdHMgb3IgYW4gSW50cy5ccGFyDQo+IFx0YWIgXHRhYiBc
dGFiIEludGVybmFsbHkgdG8gTSB0aGVyZSBhcmUgbWFueSBccGFyDQo+IHByb2NlZHVyZXMgdGhh
dCB0YWtlIHRoZSBhYnN0cmFjdFxwYXINCj4gXHRhYiBcdGFiIFx0YWIgcXVhbnRpdHkgJ2EnIHdo
ZW4gYSByZWFkIG9wZXJhdGlvbiBpcyBccGFyDQo+IGRvbmUgYW5kIG9wZXJhdGUgb24gaXQgd2l0
aCBwcm9jZWR1cmVzXHBhcg0KPiBcdGFiIFx0YWIgXHRhYiB0aGF0IGFyZSBtZXRob2RzIG9mIHR5
cGUgZWl0aGVyIEJpdHMgb3IgXHBhcg0KPiBJbnRzIHdob3NlIGRlZmluaXRpb25zIGFyZSBnaXZl
biBpbnRlcm5hbGx5XHBhcg0KPiBcdGFiIFx0YWIgXHRhYiBhbmQgYXJlIGFic3RyYWN0aW9ucyBv
ZiB0aGUgb2YgdHlwZSBBLiAgXHBhcg0KPiBCdXQgdGhlIHVzZXIgb2YgTSBuZWVkIG5vdCBrbm93
IGFueXRoaW5nXHBhcg0KPiBcdGFiIFx0YWIgXHRhYiBhYm91dCB0aGlzIGFuZCBCbGFja0JveCBz
aG91bGQgbm90IFxwYXINCj4gZm9yY2UgdGhlIHVzZXIgdG8gc2VlIHRoZXNlIG1ldGhvZHMuXHBh
cg0KPiBcdGFiIFx0YWIgXHRhYiBccGFyDQo+IFx0YWIgXHRhYiBcdGFiIEhvdyBjYW4gdGhpcyBi
ZSBhY2NvbXBsaXNoZWQ/XHBhcg0KPiBcdGFiIFx0YWIgXHRhYiBccGFyDQo+IFx0YWIgXHRhYiBc
dGFiIC1Eb3VnIERhbmZvcnRoXHBhcg0KPiBcdGFiIFx0YWIgXHRhYiBccGFyDQo+IFx0YWIgXHRh
YiBcdGFiIFxwYXINCj4gXHRhYiBcdGFiIFx0YWIgQ0ZCIFNvZnR3YXJlIHdyb3RlOiBccGFyDQo+
IFxwYXINCj4gXHRhYiBcdGFiIFx0YWIgXHRhYiBIaSBEb3VnLFxwYXINCj4gXHRhYiBcdGFiIFx0
YWIgXHRhYiBccGFyDQo+IFx0YWIgXHRhYiBcdGFiIFx0YWIgSSBkb24ndCBrbm93IGlmIEkgY2Fu
IGhlbHAgYnV0IFxwYXINCj4gYXMgbm9ib2R5IGVsc2UgaGFzIHJlc3BvbmRlZCB5ZXQgSSdtXHBh
cg0KPiBcdGFiIFx0YWIgXHRhYiBcdGFiIHdpbGxpbmcgdG8gZ2l2ZSBpdCBhIHRyeS4gSSdtIFxw
YXINCj4gaW50ZXJlc3RlZCBpbiBsZWFybmluZyBtb3JlIGFib3V0IHRoZVxwYXINCj4gXHRhYiBc
dGFiIFx0YWIgXHRhYiBmaW5lciBkZXRhaWxzIG9mIGlzc3VlcyBsaWtlIFxwYXINCj4gdGhpcy4g
SG93ZXZlciwgSSdtIG5vdCBzdXJlIGZyb20geW91clxwYXINCj4gXHRhYiBcdGFiIFx0YWIgXHRh
YiBkZXNyaXB0aW9uIHRoYXQgSSB1bmRlcnN0YW5kIFxwYXINCj4gZXhhY3RseSB3aGF0IHlvdSBh
cmUgdHJ5aW5nIHRvIGRvLiBXb3VsZCBpdFxwYXINCj4gXHRhYiBcdGFiIFx0YWIgXHRhYiBiZSBw
b3NzaWJsZSBmb3IgeW91IHRvIHNob3cgXHBhcg0KPiBjb21wbGV0ZSBtaW5pbWFsIGV4YW1wbGVz
IG9mOiBccGFyDQo+IFx0YWIgXHRhYiBcdGFiIFx0YWIgXHBhcg0KPiBcdGFiIFx0YWIgXHRhYiBc
dGFiIGEpIFdoYXQgeW91IHdvdWxkIGxpa2UgdGhlIGNvZGUgXHBhcg0KPiB0byBsb29rIGxpa2Ug
XHBhcg0KPiBcdGFiIFx0YWIgXHRhYiBcdGFiIFxwYXINCj4gXHRhYiBcdGFiIFx0YWIgXHRhYiBi
KSBIb3cgeW91IHRoaW5rIGl0IG5lZWRzIHRvIGJlIFxwYXINCj4gd3JpdHRlbiB0byBtYWtlIGl0
IGFjY2VwdGFibGUgdG9ccGFyDQo+IFx0YWIgXHRhYiBcdGFiIFx0YWIgQmxhY2tib3hccGFyDQo+
IFx0YWIgXHRhYiBcdGFiIFx0YWIgXHBhcg0KPiBcdGFiIFx0YWIgXHRhYiBcdGFiIFJlZ2FyZHMs
XHBhcg0KPiBcdGFiIFx0YWIgXHRhYiBcdGFiIENocmlzIEJ1cnJvd3NccGFyDQo+IFx0YWIgXHRh
YiBcdGFiIFx0YWIgQ0ZCIFNvZnR3YXJlXHBhcg0KPiBcdGFiIFx0YWIgXHRhYiBcdGFiIGh0dHA6
Ly93d3cuY2Zic29mdHdhcmUuY29tL2dwY3BccGFyDQo+IFx0YWIgXHRhYiBcdGFiIFx0YWIgXHBh
cg0KPiBcdGFiIFx0YWIgXHRhYiBcdGFiICAgXHBhcg0KPiBccGFyDQo+IFx0YWIgXHRhYiBcdGFi
IFx0YWIgXHRhYiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLVxwYXINCj4gXHRhYiBcdGFiIFx0
YWIgXHRhYiBcdGFiIEZyb206IFxwYXINCj4gYmxhY2tib3hAb2Jlcm9uLmNoIFttYWlsdG86Ymxh
Y2tib3hAb2Jlcm9uLmNoXSBPbiBccGFyDQo+IFx0YWIgXHRhYiBcdGFiIFx0YWIgXHRhYiBCZWhh
bGYgT2YgRG91Z2xhcyBHLiBEYW5mb3J0aFxwYXINCj4gXHRhYiBcdGFiIFx0YWIgXHRhYiBcdGFi
IFNlbnQ6IFdlZG5lc2RheSwgMTMgXHBhcg0KPiBKdW5lIDIwMDcgMTA6MjIgQU1ccGFyDQo+IFx0
YWIgXHRhYiBcdGFiIFx0YWIgXHRhYiBUbzogQmxhY2tCb3ggTWFpbGluZyBMaXN0XHBhcg0KPiBc
dGFiIFx0YWIgXHRhYiBcdGFiIFx0YWIgU3ViamVjdDogW0JsYWNrQm94XSAtIFxwYXINCj4gSGlk
aW5nIGFic3RyYWN0IG1ldGhvZHNccGFyDQo+IFx0YWIgXHRhYiBcdGFiIFx0YWIgXHRhYiBccGFy
DQo+IFx0YWIgXHRhYiBcdGFiIFx0YWIgXHRhYiBccGFyDQo+IFx0YWIgXHRhYiBcdGFiIFx0YWIg
XHRhYiBGb2xrcyxccGFyDQo+IFx0YWIgXHRhYiBcdGFiIFx0YWIgXHRhYiBccGFyDQo+IFx0YWIg
XHRhYiBcdGFiIFx0YWIgXHRhYiBJIGhhdmUgYSBjb25jZXB0dWFsIFxwYXINCj4gcHJvYmxlbSBv
biB3aGljaCBJIHdvdWxkIGxpa2UgeW91ciBhZHZpY2UuXHBhcg0KPiBcdGFiIFx0YWIgXHRhYiBc
dGFiIFx0YWIgXHBhcg0KPiBcdGFiIFx0YWIgXHRhYiBcdGFiIFx0YWIgSSBoYXZlIGFuIEFCU1RS
QUNUIHR5cGUgXHBhcg0KPiBBIGFuZCB0d28gY29uY3JldGUgdHlwZXMgQzEgYW5kXHBhcg0KPiBc
dGFiIFx0YWIgXHRhYiBcdGFiIFx0YWIgQzIgd2hpY2ggYXJlIGV4dGVuc2lvbnMgb2YgQS5ccGFy
DQo+IFx0YWIgXHRhYiBcdGFiIFx0YWIgXHRhYiBccGFyDQo+IFx0YWIgXHRhYiBcdGFiIFx0YWIg
XHRhYiAgICAgVFlQRVxwYXINCj4gXHRhYiBcdGFiIFx0YWIgXHRhYiBcdGFiICAgICAgICBBKiA9
IFBPSU5URVIgVE8gXHBhcg0KPiBBQlNUUkFDVCBSRUNPUkQgRU5EO1xwYXINCj4gXHRhYiBcdGFi
IFx0YWIgXHRhYiBcdGFiICAgICAgICBDMSogPSBQT0lOVEVSIFRPIFxwYXINCj4gUkVDT1JEKEEp
IEVORDtccGFyDQo+IFx0YWIgXHRhYiBcdGFiIFx0YWIgXHRhYiAgICAgICAgQzIqID0gUE9JTlRF
UiBUTyBccGFyDQo+IFJFQ09SRChBKSBFTkQ7XHBhcg0KPiBcdGFiIFx0YWIgXHRhYiBcdGFiIFx0
YWIgXHBhcg0KPiBcdGFiIFx0YWIgXHRhYiBcdGFiIFx0YWIgSSB3b3VsZCBsaWtlIHRvIGV4cG9y
dCBccGFyDQo+IEEgKGFzIHNob3duIHdpdGggdGhlICcqJycpIGJ1dCB3aXRoaW4gdGhlXHBhcg0K
PiBcdGFiIFx0YWIgXHRhYiBcdGFiIFx0YWIgbW9kdWxlIE0gd2hlcmUgQSBpcyBccGFyDQo+IGRl
ZmluZWQgSSAqZG8gbm90IHdhbnQqIHRvIGV4cG9ydCBpdHNccGFyDQo+IFx0YWIgXHRhYiBcdGFi
IFx0YWIgXHRhYiBtZXRob2RzLiAgSSB3YW50IHRoZW0gXHBhcg0KPiB0byBiZSBjb21wbGV0ZWx5
IGhpZGRlbiBzbyB0aGF0IHRoZSB1c2VyXHBhcg0KPiBcdGFiIFx0YWIgXHRhYiBcdGFiIFx0YWIg
b2YgTSBvbmx5IG5lZWRzIHRvIFxwYXINCj4gY3JlYXRlIHRoZSBpbnN0YW5jZSBDaSAoYW5kIGZp
bGwgaXRzIFxwYXINCj4gXHRhYiBcdGFiIFx0YWIgXHRhYiBcdGFiIGZpZWxkcyAobm90IHNob3du
KSlccGFyDQo+IFx0YWIgXHRhYiBcdGFiIFx0YWIgXHRhYiBhbmQgcGFzcyBDaSB0byB0aGUgXHBh
cg0KPiBtb2R1bGUgTSBpbiB3aGljaCB0aGUgc3BlY2lmaWMgbWV0aG9kcyBccGFyDQo+IFx0YWIg
XHRhYiBcdGFiIFx0YWIgXHRhYiBhcHByb3ByaWF0ZSB0byBDaVxwYXINCj4gXHRhYiBcdGFiIFx0
YWIgXHRhYiBcdGFiIGFyZSBzcGVjaWZpZWQgKGJ1dCBhbHNvIFxwYXINCj4gbm90IGV4cG9ydGVk
KS4gIFdpdGhpbiBNLCBwcm9jZWR1cmVzIHRha2UgJ2EnXHBhcg0KPiBcdGFiIFx0YWIgXHRhYiBc
dGFiIFx0YWIgKGFuIGluc3RhbmNlIG9mIEEgd2hpY2ggXHBhcg0KPiBpcyBlaXRoZXIgQzEgb3Ig
QzIpIGFuZCBvcGVyYXRlcyBvbiBpdCB3aXRob3V0XHBhcg0KPiBcdGFiIFx0YWIgXHRhYiBcdGFi
IFx0YWIga25vd2xlZGdlIG9mIGl0cyBccGFyDQo+IGNvbmNyZXRlIGZvcm0uICBUaGUgbWV0aG9k
cyBvZiBBIGFyZSBzaW1wbHkgY2FsbGVkXHBhcg0KPiBcdGFiIFx0YWIgXHRhYiBcdGFiIFx0YWIg
YW5kIHRoZSBjb25jcmV0ZSBmb3JtcyBccGFyDQo+IG9mIHRob3NlIG1ldGhvZHMgYXMgQzEgb3Ig
QzIgYXJlIGFjdHVhbGx5XHBhcg0KPiBcdGFiIFx0YWIgXHRhYiBcdGFiIFx0YWIgcnVuLlxwYXIN
Cj4gXHRhYiBcdGFiIFx0YWIgXHRhYiBcdGFiIFxwYXINCj4gXHRhYiBcdGFiIFx0YWIgXHRhYiBc
dGFiIFVuZm9ydHVuYXRlbHksIGl0IHNlZW1zIFxwYXINCj4gdGhhdCB0aGlzIHNjaGVtZSBvZiB0
aGluZ3MgaXMgbm90IHBvc3NpYmxlIGluIFxwYXINCj4gXHRhYiBcdGFiIFx0YWIgXHRhYiBcdGFi
IEJsYWNrQm94LlxwYXINCj4gXHRhYiBcdGFiIFx0YWIgXHRhYiBcdGFiIEkgYW0gZm9yY2VkIHRv
IGV4cG9ydCBccGFyDQo+IHRoZSBtZXRob2RzIG9mIEEgYW5kIGFsc28gdGhlIG1ldGhvZHMgb2Yg
QzEgYW5kXHBhcg0KPiBcdGFiIFx0YWIgXHRhYiBcdGFiIFx0YWIgdGhlIG1ldGhvZHMgb2YgQzIs
IFxwYXINCj4gZ3JlYXRseSBjbHV0dGVyaW5nIHRoZSBpbnRlcmZhY2UgdG8gTSB3aGVuIFxwYXIN
Cj4gXHRhYiBcdGFiIFx0YWIgXHRhYiBcdGFiIG5vbmUgb2YgdGhhdFxwYXINCj4gXHRhYiBcdGFi
IFx0YWIgXHRhYiBcdGFiIGluZm9ybWF0aW9uIHdpbGwgYmUgXHBhcg0KPiB1c2VkIGJ5IHRoZSBw
ZXJzb24gb3BlcmF0aW5nIHdpdGggTS4gIFxwYXINCj4gXHRhYiBcdGFiIFx0YWIgXHRhYiBcdGFi
IE9ubHkgdGhlIGV4aXN0ZW5jZVxwYXINCj4gXHRhYiBcdGFiIFx0YWIgXHRhYiBcdGFiIG9mIEEg
YW5kIHRoZSBleHRlbnNpb25zIFxwYXINCj4gQzEgYW5kIEMyIGFyZSBuZWVkZWQuXHBhcg0KPiBc
dGFiIFx0YWIgXHRhYiBcdGFiIFx0YWIgXHBhcg0KPiBcdGFiIFx0YWIgXHRhYiBcdGFiIFx0YWIg
SXMgdGhlcmUgYSBjbGVhbiB3YXkgdG8gXHBhcg0KPiBoaWRlIGFsbCBvZiB0aGVzZSBtZXRob2Rz
P1xwYXINCj4gXHRhYiBcdGFiIFx0YWIgXHRhYiBcdGFiIFxwYXINCj4gXHRhYiBcdGFiIFx0YWIg
XHRhYiBcdGFiIC1Eb3VnIERhbmZvcnRoXHBhcg0KPiBcdGFiIFx0YWIgXHRhYiBcdGFiIFx0YWIg
XHBhcg0KPiBcdGFiIFx0YWIgXHRhYiBcdGFiIFx0YWIgLS0tIEJsYWNrQm94XHBhcg0KPiBcdGFi
IFx0YWIgXHRhYiBcdGFiIFx0YWIgLS0tIHNlbmQgc3ViamVjdCBIRUxQIFxwYXINCj4gb3IgVU5T
VUJTQ1JJQkUgdG8gYmxhY2tib3hAb2Jlcm9uLmNoXHBhcg0KPiBcdGFiIFx0YWIgXHRhYiBcdGFi
IFx0YWIgICAgIFxwYXINCj4gXHBhcg0KPiBcdGFiIFx0YWIgXHRhYiBcdGFiIFxwYXINCj4gXHRh
YiBcdGFiIFx0YWIgXHRhYiAtLS0gQmxhY2tCb3hccGFyDQo+IFx0YWIgXHRhYiBcdGFiIFx0YWIg
LS0tIHNlbmQgc3ViamVjdCBIRUxQIG9yIFxwYXINCj4gVU5TVUJTQ1JJQkUgdG8gYmxhY2tib3hA
b2Jlcm9uLmNoXHBhcg0KPiBcdGFiIFx0YWIgXHRhYiBcdGFiIFxwYXINCj4gXHRhYiBcdGFiIFx0
YWIgXHRhYiBccGFyDQo+IFx0YWIgXHRhYiBcdGFiIFx0YWIgICBccGFyDQo+IFxwYXINCj4gXHBh
cg0KfQ==
----boundary-LibPST-iamunique-1834862327_-_---
Received on Fri Jun 15 2007 - 09:10:18 UTC

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