From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kip Macy Subject: Re: compile fixes for mini-os Date: Sat, 24 Jan 2004 17:27:10 -0800 (PST) Sender: xen-devel-admin@lists.sourceforge.net Message-ID: <20040124171555.S81692@demos.bsdclusters.com> References: Mime-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="0-932234660-1074994030=:81692" Return-path: In-Reply-To: Errors-To: xen-devel-admin@lists.sourceforge.net List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , List-Archive: To: Keir Fraser Cc: xen-devel@lists.sourceforge.net List-Id: xen-devel@lists.xenproject.org This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --0-932234660-1074994030=:81692 Content-Type: TEXT/PLAIN; charset=US-ASCII I've attached the full diff as well as interface.tex. I sent interface.tex to Ian, but haven't got any ack back. > Personally I dislike the warnings GCC emits when it's placed in > super-anal mode. I would never take fixes for Xen or Xenolinux to stop > those warnings since I think GCC should be run with a more permissive > set of options. I admit that many of the options are just plain annoying. However, in one instance you were casting away volatile, which could get you in trouble. There are more mundane problems that could cause issues, such as signed/unsigned comparisons. I would argue that you might as well never use the const qualifier if you're just going to cast it away in most cases. In addition you frequently do pointer arithmetic with void pointers, you're just relying on the compiler to know that you really mean char pointer. The changes to inline usage are neccessary to get the code to compile at all with -ansi. > For the mini-os I'll give the patches some thought. I guess it's being > used as a starting point for ports that may use a different compiler > or have a predetermined set of command-line options, so perhaps it > makes sense... Your point is taken for Xen. However, a lot of environments are more restrictive, so it would be a service to users to accomodate them in that respect. > PS. Please send your documentation updates when you think it's > worthwhile. They'll be vey useful! > . It is pretty incomplete as things stand, but it might provide a sufficient start so that others would feel happy adding a bit here and there as the pieces fall into place for them. --0-932234660-1074994030=:81692 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=diffout Content-Transfer-Encoding: BASE64 Content-ID: <20040124172710.B81692@demos.bsdclusters.com> Content-Description: Content-Disposition: attachment; filename=diffout PT09PT0gZG9jcy9pbnRlcmZhY2UudGV4IDEuMSB2cyBlZGl0ZWQgPT09PT0N CjE4LDE5YzE4LDIwDQo8IHtcaHVnZSBYZW4gdjEuMSBmb3IgeDg2fSBcXFs4 MG1tXQ0KPCB7XExhcmdlIENvcHlyaWdodCAoYykgMjAwMywgVGhlIFhlbiBU ZWFtfSBcXFszbW1dDQotLS0NCj4ge1xodWdlIFhlbiB2MS4zIGZvciB4ODZ9 IFxcWzgwbW1dDQo+IA0KPiB7XExhcmdlIFhlbiBpcyBDb3B5cmlnaHQgKGMp IDIwMDQsIFRoZSBYZW4gVGVhbX0gXFxbM21tXQ0KMjFjMjINCjwge1xsYXJn ZSBMYXN0IHVwZGF0ZWQgb24gMjh0aCBPY3RvYmVyLCAyMDAzfQ0KLS0tDQo+ IHtcbGFyZ2UgTGFzdCB1cGRhdGVkIG9uIDE4dGggSmFudWFyeSwgMjAwNH0N CjQ2YTQ4LDgzDQo+IFhlbiBhbGxvd3MgdGhlIGhhcmR3YXJlIHJlc291Y2Vz IG9mIGEgbWFjaGluZSB0byBiZSB2aXJ0dWFsaXplZCBhbmQNCj4gZHluYW1p Y2FsbHkgcGFydGl0aW9uZWQgc3VjaCBhcyB0byBhbGxvdyBtdWx0aXBsZSBk aWZmZXJlbnQgJ2d1ZXN0Jw0KPiBvcGVyYXRpbmcgc3lzdGVtIGltYWdlcyB0 byBiZSBydW4gc2ltdWx0YW5lb3VzbHkuDQo+IA0KPiBWaXJ0dWFsaXppbmcg dGhlIG1hY2hpbmUgaW4gdGhpcyBtYW5uZXIgcHJvdmlkZXMgZmxleGliaWxp dHkgYWxsb3dpbmcNCj4gZGlmZmVyZW50IHVzZXJzIHRvIGNob29zZSB0aGVp ciBwcmVmZXJyZWQgb3BlcmF0aW5nIHN5c3RlbSAoV2luZG93cywNCj4gTGlu dXgsIEZyZWVCU0QsIG9yIGEgY3VzdG9tIG9wZXJhdGluZyBzeXN0ZW0pLiBG dXJ0aGVybW9yZSwgWGVuIHByb3ZpZGVzDQo+IHNlY3VyZSBwYXJ0aXRpb25p bmcgYmV0d2VlbiB0aGVzZSAnZG9tYWlucycsIGFuZCBlbmFibGVzIGJldHRl ciByZXNvdXJjZQ0KPiBhY2NvdW50aW5nIGFuZCBRb1MgaXNvbGF0aW9uIHRo YW4gY2FuIGJlIGFjaGlldmVkIHdpdGggYSBjb252ZW50aW9uYWwNCj4gb3Bl cmF0aW5nIHN5c3RlbS4NCj4gDQo+IFRoZSBoeXBlcnZpc29yIHJ1bnMgZGly ZWN0bHkgb24gc2VydmVyIGhhcmR3YXJlIGFuZCBkeW5hbWljYWxseSBwYXJ0 aXRpb25zDQo+IGl0IGJldHdlZW4gYSBudW1iZXIgb2Yge1xpdCBkb21haW5z fSwgZWFjaCBvZiB3aGljaCBob3N0cyBhbiBpbnN0YW5jZQ0KPiBvZiBhIHtc aXQgZ3Vlc3Qgb3BlcmF0aW5nIHN5c3RlbX0uIFRoZSBoeXBlcnZpc29yIHBy b3ZpZGVzIGp1c3QgZW5vdWdoDQo+IGFic3RyYWN0aW9uIG9mIHRoZSBtYWNo aW5lIHRvIGFsbG93IGVmZmVjdGl2ZSBpc29sYXRpb24gYW5kIHJlc291cmNl IA0KPiBtYW5hZ2VtZW50IGJldHdlZW4gdGhlc2UgZG9tYWlucy4NCj4gDQo+ IFhlbiBlc3NlbnRpYWxseSB0YWtlcyBhIHZpcnR1YWwgbWFjaGluZSBhcHBy b2FjaCBhcyBwaW9uZWVyZWQgYnkgSUJNIFZNLzM3MC4NCj4gSG93ZXZlciwg dW5saWtlIFZNLzM3MCBvciBtb3JlIHJlY2VudCBlZmZvcnRzIHN1Y2ggYXMg Vk1XYXJlIGFuZCBWaXJ0dWFsIFBDLA0KPiBYZW4gZG9lc24gbm90IGF0dGVt cHQgdG8gY29tcGxldGVseSB2aXJ0dWFsaXplIHRoZSB1bmRlcmx5aW5nIGhh cmR3YXJlLiBJbnN0ZWFkDQo+IHBhcnRzIG9mIHRoZSBob3N0ZWQgZ3Vlc3Qg b3BlcmF0aW5nIHN5c3RlbXMgdG8gd29yayB3aXRoIHRoZSBoeXBlcnZpc29y OyB0aGUNCj4gb3BlcmF0aW5nIHN5c3RlbSBpcyBlZmZlY3RpdmVseSBwb3J0 ZWQgdG8gYSBuZXcgdGFyZ2V0IGFyY2hpdGVjdHVyZSwgdHlwaWNhbGx5DQo+ IHJlcXVpcmluZyBjaGFuZ2VzIGluIGp1c3QgdGhlIG1hY2hpbmUtZGVwZW5k ZW50IGNvZGUuIFRoZSB1c2VyLWxldmVsIEFQSSBpcw0KPiB1bmNoYW5nZWQs IHRodXMgZXhpc3RpbmcgYmluYXJpZXMgYW5kIG9wZXJhdGluZyBzeXN0ZW0g ZGlzdHJpYnV0aW9ucyBjYW4gd29yaw0KPiB1bm1vZGlmaWVkLg0KPiANCj4g SW4gYWRkaXRpb24gdG8gZXhwb3J0aW5nIHZpcnR1YWxpemVkIGluc3RhbmNl cyBvZiBDUFUsIG1lbW9yeSwgbmV0d29yayBhbmQNCj4gYmxvY2sgZGV2aWNl ZXMsIFhlbiBleHBvc2VzIGEgY29udHJvbCBpbnRlcmZhY2UgdG8gc2V0IGhv dyB0aGVzZSByZXNvdXJjZXMNCj4gYXJlIHNoYXJlZCBiZXR3ZWVuIHRoZSBy dW5uaW5nIGRvbWFpbnMuIFRoZSBjb250cm9sIGludGVyZmFjZSBpcyBwcml2 aWxlZ2VkDQo+IGFuZCBtYXkgb25seSBiZSBhY2Nlc3NlZCBieSBvbmUgcGFy dGljdWxhciB2aXJ0dWFsIG1hY2hpbmU6IHtcaXQgZG9tYWluMH0uDQo+IFRo aXMgZG9tYWluIGlzIGEgcmVxdWlyZWQgcGFydCBvZiBhbnkgWGVuLWJhc2Ug c2VydmVyIGFuZCBydW5zIHRoZSBhcHBsaWNhdGlvbg0KPiBzb2Z0d2FyZSB0 aGF0IG1hbmFnZXMgdGhlIGNvbnRyb2wtcGxhbmUgYXNwZWN0cyBvZiB0aGUg cGxhdGZvcm0uIFJ1bm5pbmcgdGhlDQo+IGNvbnRyb2wgc29mdHdhcmUgaW4g e1xpdCBkb21haW4wfSwgZGlzdGluY3QgZnJvbSB0aGUgaHlwZXJ2aXNvciBp dHNlbGYsIGFsbG93cw0KPiB0aGUgWGVuIGZyYW1ld29yayB0byBzZXBhcmF0 ZSB0aGUgbm90aW9ucyBvZiB7XGl0IG1lY2hhbmlzbX0gYW5kIHtcaXQgcG9s aWN5fQ0KPiB3aXRoaW4gdGhlIHN5c3RlbS4NCj4gDQo0OWE4Nyw4OQ0KPiBB bGwgcHJpdmlsZWdlZCBzdGF0ZSBtdXN0IGJlIGhhbmRsZWQgYnkgWGVuLiBU aGUgZ3Vlc3QgT1MgaGFzIG5vIGRpcmVjdCBhY2Nlc3MNCj4gdG8gQ1IzIGFu ZCBpcyBub3QgcGVybWl0dGVkIHRvIHVwZGF0ZSBwcml2aWxlZ2VkIGJpdHMg aW4gRUZMQUdTLg0KPiANCjUwYTkxLDkzDQo+IFRoZSBJRFQgaXMgdmlydHVh bGlzZWQgYnkgc3VibWl0dGluZyBhIHZpcnR1YWwgJ3RyYXANCj4gdGFibGUn IHRvIFhlbi4gTW9zdCB0cmFwIGhhbmRsZXJzIGFyZSBpZGVudGljYWwgdG8g bmF0aXZlIHg4Ng0KPiBoYW5kbGVycy4gVGhlIHBhZ2UtZmF1bHQgaGFuZGxl ciBpcyBhIG5vdGVhYmxlIGV4Y2VwdGlvbi4NCjUyYTk2LDEwOA0KPiBJbnRl cnJ1cHRzIGFyZSB2aXJ0dWFsaXplZCBieSBtYXBwaW5nIHRoZW0gdG8gZXZl bnRzLCB3aGljaCBhcmUgZGVsaXZlcmVkIA0KPiBhc3luY2hyb25vdXNseSB0 byB0aGUgdGFyZ2V0IGRvbWFpbi4gQSBndWVzdCBPUyBjYW4gbWFwIHRoZXNl IGV2ZW50cyBvbnRvDQo+IGl0cyBzdGFuZGFyZCBpbnRlcnJ1cHQgZGlzcGF0 Y2ggbWVjaGFuaXNtcywgc3VjaCBhcyBhIHNpbXBsZSB2ZWN0b3JpbmcgDQo+ IHNjaGVtZS4gRWFjaCBwaHlzaWNhbCBpbnRlcnJ1cHQgc291cmNlIGNvbnRy b2xsZWQgYnkgdGhlIGh5cGVydmlzb3IsIGluY2x1ZGluZw0KPiBuZXR3b3Jr IGRldmljZXMsIGRpc2tzLCBvciB0aGUgdGltZXIgc3Vic3lzdGVtLCBpcyBy ZXNwb25zaWJsZSBmb3IgaWRlbnRpZnlpbmcNCj4gdGhlIHRhcmdldCBmb3Ig YW4gaW5jb21pbmcgaW50ZXJydXB0IGFuZCBzZW5kaW5nIGFuIGV2ZW50IHRv IHRoYXQgZG9tYWluLg0KPiANCj4gVGhpcyBkZW11bHRpcGxleGluZyBtZWNo YW5pc20gYWxzbyBwcm92aWRlcyBhIGRldmljZS1zcGVjaWZpYyBtZWNoYW5p c20gZm9yIA0KPiBldmVudCBjb2FsZXNjaW5nIG9yIGhvbGQtb2ZmLiBGb3Ig ZXhhbXBsZSwgYSBndWVzdCBPUyBtYXkgcmVxdWVzdCB0byBvbmx5IA0KPiBh Y3R1YWxseSByZWNlaXZlIGFuIGV2ZW50IGFmdGVyIHtcaXQgbn0gcGFja2V0 cyBhcmUgcXVldWVkIHJlYWR5IGZvciBkZWxpdmVyeQ0KPiB0byBpdCwge1xp dCB0fSBuYW5vc2Vjb25kcyBhZnRlciB0aGUgZmlyc3QgcGFja2V0IGFycml2 ZWQgKHdoaWNoIGV2ZXIgaXMgdHJ1ZQ0KPiBmaXJzdCkuIFRoaXMgYWxsb3dz IGxhdGVuY3kgYW5kIHRocm91Z2hwdXQgcmVxdWlyZW1lbnRzIHRvIGJlIGFk ZHJlc3NlZCBvbiBhDQo+IGRvbWFpbi1zcGVjaWZpYyBiYXNpcy4NCjU0YTEx MSwxNDYNCj4gR3Vlc3Qgb3BlcmF0aW5nIHN5c3RlbXMgbmVlZCB0byBiZSBh d2FyZSBvZiB0aGUgcGFzc2FnZSBvZiByZWFsIHRpbWUgYW5kIHRoZWlyDQo+ IG93biBgYHZpcnR1YWwgdGltZScnLCBpLmUuIHRoZSB0aW1lIHRoZXkgaGF2 ZSBiZWVuIGV4ZWN1dGluZy4gRnVydGhlcm1vcmUsIGENCj4gbm90aW9uIG9m IHRpbWUgaXMgcmVxdWlyZWQgaW4gdGhlIGh5cGVydmlzb3IgaXRzZWxmIGZv ciBzY2hlZHVsaW5nIGFuZCB0aGUNCj4gYWN0aXZpdGllcyB0aGF0IHJlbGF0 ZSB0byBpdC4gVG8gdGhpcyBlbmQgdGhlIGh5cGVydmlzb3IgcHJvdmlkZXMg Zm9yIG5vdGlvbnMNCj4gb2YgdGltZTogY3ljbGUgY291bnRlciB0aW1lLCBz eXN0ZW0gdGltZSwgd2FsbCBjbG9jayB0aW1lLCBkb21haW4gdmlydHVhbCAN Cj4gdGltZS4NCj4gDQo+IA0KPiBcc2VjdGlvbntDeWNsZSBjb3VudGVyIHRp bWV9DQo+IFRoaXMgcHJvdmlkZXMgdGhlIGZpbmVzdC1ncmFpbmVkLCBmcmVl LXJ1bm5pbmcgdGltZSByZWZlcmVuY2UsIHdpdGggdGhlIGFwcHJveGltYXRl DQo+IGZyZXF1ZW5jeSBiZWluZyBwdWJsaWNseSBhY2Nlc3NpYmxlLiBUaGUg Y3ljbGUgY291bnRlciB0aW1lIGlzIHVzZWQgdG8gYWNjdXJhdGVseQ0KPiBl eHRyYXBvbGF0ZSB0aGUgb3RoZXIgdGltZSByZWZlcmVuY2VzLiBPbiBTTVAg bWFjaGluZXMgaXQgaXMgY3VycmVudGx5IGFzc3VtZWQNCj4gdGhhdCB0aGUg Y3ljbGUgY291bnRlciB0aW1lIGlzIHN5bmNocm9uaXNlZCBiZXR3ZWVuIENQ VXMuIFRoZSBjdXJyZW50IHg4Ni1iYXNlZA0KPiBpbXBsZW1lbnRhdGlvbiBh Y2hpZXZlcyB0aGlzIHdpdGhpbiBpbnRlci1DUFUgY29tbXVuaWNhdGlvbiBs YXRlbmNpZXMuDQo+IA0KPiBcc2VjdGlvbntTeXN0ZW0gdGltZX0NCj4gVGhp cyBpcyBhIDY0LWJpdCB2YWx1ZSBjb250YWluaW5nIHRoZSBuYW5vc2Vjb25k cyBlbGFwc2VkIHNpbmNlIGJvb3QgdGltZS4gVW5saWtlDQo+IGN5Y2xlIGNv dW50ZXIgdGltZSwgc3lzdGVtIHRpbWUgYWNjdXJhdGVseSByZWZsZWN0cyB0 aGUgcGFzc2FnZSBvZiByZWFsIHRpbWUsIGkuZS4NCj4gaXQgaXMgYWRqdXN0 ZWQgc2V2ZXJhbCB0aW1lcyBhIHNlY29uZCBmb3IgdGltZXIgZHJpZnQuIFRo aXMgaXMgZG9uZSBieSBydW5uaW5nIGFuDQo+IE5UUCBjbGllbnQgaW4ge1xp dCBkb21haW4wfSBvbiBiZWhhbGYgb2YgdGhlIG1hY2hpbmUsIGZlZWRpbmcg dXBkYXRlcyB0byB0aGUgDQo+IGh5cGVydmlzb3IuIEludGVybWVkaWF0ZSB2 YWx1ZXMgY2FuIGJlIGV4dHJhcG9sYXRlZCB1c2luZyB0aGUgY3ljbGUgY291 bnRlci4gDQo+IA0KPiBcc2VjdGlvbntXYWxsIGNsb2NrIHRpbWV9DQo+IFRo aXMgaXMgdGhlIGFjdHVhbCBgYHRpbWUgb2YgZGF5JycgVW5peCBzdHlsZSBz dHJ1Y3QgdGltZXZhbCAoaS5lLiBzZWNvbmRzIGFuZA0KPiBtaWNyb3NlY29u ZHMgc2luY2UgMSBKYW51YXJ5IDE5NzAsIGFkanVzdGVkIGJ5IGxlYXAgc2Vj b25kcyBldGMuKS4gQWdhaW4sIGFuIA0KPiBOVFAgY2xpZW50IGhvc3RlZCBi eSB7XGl0IGRvbWFpbjB9IGNhbiBoZWxwIG1haW50YWluIHRoaXMgdmFsdWUu IFRvIGd1ZXN0IA0KPiBvcGVyYXRpbmcgc3lzdGVtcyB0aGlzIHZhbHVlIHdp bGwgYmUgcmVwb3J0ZWQgaW5zdGVhZCBvZiB0aGUgaGFyZHdhcmUgUlRDDQo+ IGNsb2NrIHZhbHVlIGFuZCB0aGV5IGNhbiB1c2UgdGhlIHN5c3RlbSB0aW1l IGFuZCBjeWNsZSBjb3VudGVyIHRpbWVzIHRvIHN0YXJ0DQo+IGFuZCByZW1h aW4gcGVyZmVjdGx5IGluIHRpbWUuDQo+IA0KPiANCj4gXHNlY3Rpb257RG9t YWluIHZpcnR1YWwgdGltZX0NCj4gVGhpcyBwcm9ncmVzc2VzIGF0IHRoZSBz YW1lIHBhY2UgYXMgY3ljbGUgY291bnRlciB0aW1lLCBidXQgb25seSB3aGls ZSBhIGRvbWFpbg0KPiBpcyBleGVjdXRpbmcuIEl0IHN0b3BzIHdoaWxlIGEg ZG9tYWluIGlzIGRlLXNjaGVkdWxlZC4gVGhlcmVmb3JlIHRoZSBzaGFyZSBv ZiB0aGUgDQo+IENQVSB0aGF0IGEgZG9tYWluIHJlY2VpdmVzIGlzIGluZGlj YXRlZCBieSB0aGUgcmF0ZSBhdCB3aGljaCBpdHMgZG9tYWluIHZpcnR1YWwN Cj4gdGltZSBpbmNyZWFzZXMsIHJlbGF0aXZlIHRvIHRoZSByYXRlIGF0IHdo aWNoIGN5Y2xlIGNvdW50ZXIgdGltZSBkb2VzIHNvLg0KNThjMTUwLDMyNQ0K PCBcY2hhcHRlcntJL099DQotLS0NCj4gVGhlIGh5cGVydmlzb3IgaXMgcmVz cG9uc2libGUgZm9yIHByb3ZpZGluZyBtZW1vcnkgdG8gZWFjaCBvZiB0aGUg ZG9tYWlucyBydW5uaW5nIA0KPiBvdmVyIGl0LiBIb3dldmVyLCB0aGUgWGVu IGh5cGVydmlzb3IncyBkdXR5IGlzIHJlc3RyaWN0ZWQgdG8gbWFuYWdpbmcg cGh5c2ljYWwNCj4gbWVtb3J5IGFuZCB0byBwb2xpY2luZyBwYWdlIHRhYmxl IHVwZGF0ZXMuIEFsbCBvdGhlciBtZW1vcnkgbWFuYWdlbWVudCBmdW5jdGlv bnMNCj4gYXJlIGhhbmRseSBleHRlcm5hbGx5LiBTdGFydC1vZi1kYXkgaXNz dWVzIHN1Y2ggYXMgYnVpbGRpbmcgaW5pdGlhbCBwYWdlIHRhYmxlcw0KPiBm b3IgYSBkb21haW4sIGxvYWRpbmcgaXRzIGtlcm5lbCBpbWFnZSBhbmQgc28g b24gYXJlIGRvbmUgYnkgdGhlIHtcaXQgZG9tYWluIGJ1aWxkZXJ9DQo+IHJ1 bm5pbmcgaW4gdXNlci1zcGFjZSB3aXRoIHtcaXQgZG9tYWluMH0uIFBhZ2lu ZyB0byBkaXNrIGFuZCBzd2FwcGluZyBpcyBoYW5kbGVkDQo+IGJ5IHRoZSBn dWVzdCBvcGVyYXRpbmcgc3lzdGVtcyB0aGVtc2VsdmVzLCBpZiB0aGV5IG5l ZWQgaXQuDQo+IA0KPiBPbiBhIFhlbi1iYXNlZCBzeXN0ZW0sIHRoZSBoeXBl cnZpc29yIGl0c2VsZiBydW5zIGluIHtcaXQgcmluZyAwfS4gSXQgaGFzIGZ1 bGwNCj4gYWNjZXNzIHRvIHRoZSBwaHlzaWNhbCBtZW1vcnkgYXZhaWxhYmxl IGluIHRoZSBzeXN0ZW0gYW5kIGlzIHJlc3BvbnNpYmxlIGZvciANCj4gYWxs b2NhdGluZyBwb3J0aW9ucyBvZiBpdCB0byB0aGUgZG9tYWlucy4gR3Vlc3Qg b3BlcmF0aW5nIHN5c3RlbXMgcnVuIGluIGFuZCB1c2UNCj4ge1xpdCByaW5n cyAxfSwge1xpdCAyfSBhbmQge1xpdCAzfSBhcyB0aGV5IHNlZSBmaXQsIGFz aWRlIGZyb20gdGhlIGZhY3QgdGhhdA0KPiBzZWdtZW50YXRpb24gaXMgdXNl ZCB0byBwcmV2ZW50IHRoZSBndWVzdCBPUyBmcm9tIGFjY2Vzc2luZyBhIHBv cnRpb24gb2YgdGhlIA0KPiBsaW5lYXIgYWRkcmVzcyBzcGFjZSB0aGF0IGlz IHJlc2VydmVkIGZvciB1c2UgYnkgdGhlIGh5cGVydmlzb3IuIFRoaXMgYXBw cm9hY2gNCj4gYWxsb3dzIHRyYW5zaXRpb25zIGJldHdlZW4gdGhlIGd1ZXN0 IE9TIGFuZCBoeXBlcnZpc29yIHdpdGhvdXQgZmx1c2hpbmcgdGhlIFRMQi4N Cj4gV2UgZXhwZWN0IG1vc3QgZ3Vlc3Qgb3BlcmF0aW5nIHN5c3RlbXMgd2ls bCB1c2UgcmluZyAxIGZvciB0aGVpciBvd24gb3BlcmF0aW9uDQo+IGFuZCBw bGFjZSBhcHBsaWNhdGlvbnMgKGlmIHRoZXkgc3VwcG9ydCBzdWNoIGEgbm90 aW9uKSBpbiByaW5nIDMuDQo+IA0KPiBcc2VjdGlvbntQaHlzaWNhbCBNZW1v cnkgQWxsb2NhdGlvbn0NCj4gVGhlIGh5cGVydmlzb3IgcmVzZXJ2ZXMgYSBz bWFsbCBmaXhlZCBwb3J0aW9uIG9mIHBoeXNpY2FsIG1lbW9yeSBhdCBzeXN0 ZW0gYm9vdA0KPiB0aW1lLiBUaGlzIHNwZWNpYWwgbWVtb3J5IHJlZ2lvbiBp cyBsb2NhdGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgcGh5c2ljYWwgbWVtb3J5 DQo+IGFuZCBpcyBtYXBwZWQgYXQgdGhlIHZlcnkgdG9wIG9mIGV2ZXJ5IHZp cnR1YWwgYWRkcmVzcyBzcGFjZS4gDQo+IA0KPiBBbnkgcGh5c2ljYWwgbWVt b3J5IHRoYXQgaXMgbm90IHVzZWQgZGlyZWN0bHkgYnkgdGhlIGh5cGVydmlz b3IgaXMgZGl2aWRlZCBpbnRvDQo+IHBhZ2VzIGFuZCBpcyBhdmFpbGFibGUg Zm9yIGFsbG9jYXRpb24gdG8gZG9tYWlucy4gVGhlIGh5cGVydmlzb3IgdHJh Y2tzIHdoaWNoDQo+IHBhZ2VzIGFyZSBmcmVlIGFuZCB3aGljaCBwYWdlcyBo YXZlIGJlZW4gYWxsb2NhdGVkIHRvIGVhY2ggZG9tYWluLiBXaGVuIGEgbmV3 DQo+IGRvbWFpbiBpcyBpbml0aWFsaXplZCwgdGhlIGh5cGVydmlzb3IgYWxs b2NhdGVzIGl0IHBhZ2VzIGRyYXduIGZyb20gdGhlIGZyZWUgDQo+IGxpc3Qu IFRoZSBhbW91bnQgb2YgbWVtb3J5IHJlcXVpcmVkIGJ5IHRoZSBkb21haW4g aXMgcGFzc2VkIHRvIHRoZSBoeXBlcnZpc29yDQo+IGFzIG9uZSBvZiB0aGUg cGFyYW1ldGVycyBmb3IgbmV3IGRvbWFpbiBpbml0aWFsaXphdGlvbiBieSB0 aGUgZG9tYWluIGJ1aWxkZXIuDQo+IA0KPiBEb21haW5zIGNhbiBuZXZlciBi ZSBhbGxvY2F0ZWQgZnVydGhlciBtZW1vcnkgYmV5b25kIHRoYXQgd2hpY2gg d2FzIHJlcXVlc3RlZA0KPiBmb3IgdGhlbSBvbiBpbml0aWFsaXphdGlvbi4g SG93ZXZlciwgYSBkb21haW4gY2FuIHJldHVybiBwYWdlcyB0byB0aGUgaHlw ZXJ2aXNvcg0KPiBpZiBpdCBkaXNjb3ZlcnMgdGhhdCBpdHMgbWVtb3J5IHJl cXVpcmVtZW50cyBoYXZlIGRpbWluaXNoZWQuDQo+IA0KPiAlIHB1dCByZWFz b25zIGZvciB3aHkgcGFnZXMgbWlnaHQgYmUgcmV0dXJuZWQgaGVyZS4NCj4g XHNlY3Rpb257UGFnZSBUYWJsZSBVcGRhdGVzfQ0KPiBJbiBhZGRpdGlvbiB0 byBtYW5hZ2luZyBwaHlzaWNhbCBtZW1vcnkgYWxsb2NhdGlvbiwgdGhlIGh5 cGVydmlzb3IgaXMgYWxzbyBpbg0KPiBjaGFyZ2Ugb2YgcGVyZm9ybWluZyBw YWdlIHRhYmxlIHVwZGF0ZXMgb24gYmVoYWxmIG9mIHRoZSBkb21haW5zLiBU aGlzIGlzIA0KPiBuZWNjZXNzYXJ5IHRvIHByZXZlbnQgZG9tYWlucyBmcm9t IGFkZGluZyBhcmJpdHJhcnkgbWFwcGluZ3MgdG8gdGhlaXIgcGFnZQ0KPiB0 YWJsZXMgb3IgaW50cm9kdWNpbmcgbWFwcGluZ3MgdG8gb3RoZXIncyBwYWdl IHRhYmxlcy4NCj4gDQo+IA0KPiANCj4gDQo+IFxzZWN0aW9ue1BzZXVkby1Q aHlzaWNhbCBNZW1vcnl9DQo+IFRoZSB1c3VhbCBwcm9ibGVtIG9mIGV4dGVy bmFsIGZyYWdtZW50YXRpb24gbWVhbnMgdGhhdCBhIGRvbWFpbiBpcyB1bmxp a2VseSB0bw0KPiByZWNlaXZlIGEgY29udGlndW91cyBzdHJldGNoIG9mIHBo eXNpY2FsIG1lbW9yeS4gSG93ZXZlciwgbW9zdCBndWVzdCBvcGVyYXRpbmcN Cj4gc3lzdGVtcyBkbyBub3QgaGF2ZSBidWlsdC1pbiBzdXBwb3J0IGZvciBv cGVyYXRpbmcgaW4gYSBmcmFnbWVudGVkIHBoeXNpY2FsDQo+IGFkZHJlc3Mg c3BhY2UgZS5nLiBMaW51eCBoYXMgdG8gaGF2ZSBhIG9uZS10by1vbmUgbWFw cGluZyBmb3IgaXQgcGh5c2ljYWwNCj4gbWVtb3J5LiBUaGVyZSBhIG5vdGlv biBvZiB7XGl0IHBzZXVkbyBwaHlzaWNhbCBtZW1vcnl9IGlzIGludHJvZG91 Y2VkLiANCj4gT25jZSBhIGRvbWFpbiBpcyBhbGxvY2F0ZWQgYSBudW1iZXIg b2YgcGFnZXMsIGF0IGl0cyBzdGFydCBvZiB0aGUgZGF5LCBvbmUgb2YNCj4g dGhlIGZpcnN0IHRoaW5ncyBpdCBuZWVkcyB0byBkbyBpcyBidWlsZCBpdHMg b3duIHtcaXQgcmVhbCBwaHlzaWNhbH0gdG8gDQo+IHtcaXQgcHNldWRvIHBo eXNpY2FsfSBtYXBwaW5nLiBGcm9tIHRoYXQgbW9tZW50IG9ud2FyZHMge1xp dCBwc2V1ZG8gcGh5c2ljYWx9DQo+IGFkZHJlc3MgYXJlIHVzZWQgaW5zdGVh ZCBvZiBkaXNjb250aWd1b3VzIHtcaXQgcmVhbCBwaHlzaWNhbH0gYWRkcmVz c2VzLiBUaHVzLA0KPiB0aGUgcmVzdCBvZiB0aGUgZ3Vlc3QgT1MgY29kZSBo YXMgYW4gaW1wcmVzc2lvbiBvZiBvcGVyYXRpbmcgaW4gYSBjb250aWd1b3Vz DQo+IGFkZHJlc3Mgc3BhY2UuIEd1ZXN0IE9TIHBhZ2UgdGFibGVzIGNvbnRh aW4gcmVhbCBwaHlzaWNhbCBhZGRyZXNzZXMuIE1hcHBpbmcNCj4ge1xpdCBw c2V1ZG8gcGh5c2ljYWx9IHRvIHtcaXQgcmVhbCBwaHlzaWNhbH0gYWRkcmVz c2VzIGlzIG5lZWQgb24gcGFnZQ0KPiB0YWJsZSB1cGRhdGVzIGFuZCBhbHNv IG9uIHJlbWFwcGluZyBtZW1vcnkgcmVnaW9ucyB3aXRoIHRoZSBndWVzdCBP Uy4NCj4gDQo+IA0KPiANCj4gXGNoYXB0ZXJ7TmV0d29yayBJL099DQo+IFNp bmNlIHRoZSBoeXBlcnZpc29yIG11c3QgbXVsdGlwbGV4IG5ldHdvcmsgcmVz b3VyY2VzLCBpdHMgbmV0d29yayBzdWJzeXN0ZW0NCj4gbWF5IGJlIHZpZXdl ZCBhcyBhIHZpcnR1YWwgbmV0d29yayBzd2l0Y2hpbmcgZWxlbWVudCB3aXRo IGVhY2ggZG9tYWluIGhhdmluZw0KPiBvbmUgb3IgbW9yZSB2aXJ0dWFsIG5l dHdvcmsgaW50ZXJmYWNlcyB0byB0aGlzIG5ldHdvcmsuDQo+IA0KPiBUaGUg aHlwZXJ2aXNvciBhY3RzIGNvbmNlcHR1YWxseSBhcyBhbiBJUCByb3V0ZXIs IGZvcndhcmRpbmcgZWFjaCBkb21haW4ncw0KPiB0cmFmZmljIGFjY29yZGlu ZyB0byBhIHNldCBvZiBydWxlcy4NCj4gDQo+IFxzZWN0aW9ue0h5cGVydmlz b3IgUGFja2V0IEhhbmRsaW5nfQ0KPiBUaGUgaHlwZXJ2aXNvciBpcyByZXNw b25zaWJsZSBwcmltYXJpbHkgZm9yIHtcaXQgZGF0YS1wYXRofSBvcGVyYXRp b25zLg0KPiBJbiB0ZXJtcyBvZiBuZXR3b3JraW5nIHRoaXMgbWVhbnMgcGFj a2V0IHRyYW5zbWlzc2lvbiBhbmQgcmVjZXB0aW9uLg0KPiANCj4gT24gdGhl IHRyYW5zbWlzc2lvbiBzaWRlLCB0aGUgaHlwZXJ2aXNvciBuZWVkcyB0byBw ZXJmb3JtIHR3byBrZXkgYWN0aW9uczoNCj4gXGJlZ2lue2l0ZW1pemV9DQo+ IFxpdGVtIHtcdHQgVmFsaWRhdGlvbjp9IEEgZG9tYWluIGlzIG9ubHkgYWxs b3dlZCB0byBlbWl0IHBhY2tldHMgbWF0Y2hpbmcgYSBjZXJ0YWluDQo+IHNw ZWNpZmljYXRpb247IGZvciBleGFtcGxlLCBvbmVzIGluIHdoaWNoIHRoZSBz b3VyY2UgSVAgYWRkcmVzcyBtYXRjaGVzDQo+IG9uZSBhc3NpZ25lZCB0byB0 aGUgdmlydHVhbCBpbnRlcmZhY2Ugb3ZlciB3aGljaCBpdCBpcyBzZW50LiBU aGUgaHlwZXJ2aXNvcg0KPiBpcyByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcg YW55IHN1Y2ggcmVxdWlyZW1lbnRzIGFyZSBtZXQsIGVpdGhlciBieSBjaGVj a2luZw0KPiBvciBieSBzdGFtcGluZyBvdXRnb2luZyBwYWNrZXRzIHdpdGgg cHJlc2NyaWJlZCB2YWx1ZXMgZm9yIGNlcnRhaW4gZmllbGRzLg0KPiANCj4g XGl0ZW0ge1x0dCBTY2hlZHVsaW5nOn0gU2luY2UgYSBudW1iZXIgb2YgZG9t YWlucyBjYW4gc2hhcmUgYSBzaW5nbGUgYGByZWFsJycgbmV0d29yayANCj4g aW50ZXJmYWNlLCB0aGUgaHlwZXJ2aXNvciBtdXN0IG1lZGlhdGUgYWNjZXNz IHdoZW4gc2V2ZXJhbCBkb21haW5zIGVhY2ggDQo+IGhhdmUgcGFja2V0cyBx dWV1ZWQgZm9yIHRyYW5zbWlzc2lvbi4gT2YgY291cnNlLCB0aGlzIGdlbmVy YWwgc2NoZWR1bGluZw0KPiBmdW5jdGlvbiBzdWJzdW1lcyBiYXNpYyBzaGFw aW5nIG9yIHJhdGUtbGltaXRpbmcgc2NoZW1lcy4NCj4gDQo+IFxpdGVtIHtc dHQgTG9nZ2luZyBhbmQgQWNjb3VudGluZzp9IFRoZSBoeXBlcnZpc29yIGNh biBiZSBjb25maWd1cmVkIHdpdGggY2xhc3NpZmllciANCj4gcnVsZXMgdGhh dCBjb250cm9sIGhvdyBwYWNrZXRzIGFyZSBhY2NvdW50ZWQgb3IgbG9nZ2Vk LiBGb3IgZXhhbXBsZSwgDQo+IHtcaXQgZG9tYWluMH0gY291bGQgcmVxdWVz dCB0aGF0IGl0IHJlY2VpdmVzIGEgbG9nIG1lc3NhZ2Ugb3IgY29weSBvZiB0 aGUNCj4gcGFja2V0IHdoZW5ldmVyIGFub3RoZXIgZG9tYWluIGF0dGVtcHRz IHRvIHNlbmQgYSBUQ1AgcGFja2V0IGNvbnRhaW5nIGEgDQo+IFNZTi4NCj4g XGVuZHtpdGVtaXplfQ0KPiBPbiB0aGUgcmVjaXZlIHNpZGUsIHRoZSBoeXBl cnZpc29yJ3Mgcm9sZSBpcyByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZDoN Cj4gb25jZSBhIHBhY2tldCBpcyByZWNlaXZlZCwgaXQganVzdCBuZWVkcyB0 byBkZXRlcm1pbmUgdGhlIHZpcnR1YWwgaW50ZXJmYWNlKHMpDQo+IHRvIHdo aWNoIGl0IG11c3QgYmUgZGVsaXZlcmVkIGFuZCBkZWxpdmVyIGl0IHZpYSBw YWdlLWZsaXBwaW5nLiANCj4gDQo+IA0KPiBcc2VjdGlvbntEYXRhIFRyYW5z ZmVyfQ0KPiANCj4gRWFjaCB2aXJ0dWFsIGludGVyZmFjZSB1c2VzIHR3byBg YGRlc2NyaXB0b3IgcmluZ3MnJywgb25lIGZvciB0cmFuc21pdCwNCj4gdGhl IG90aGVyIGZvciByZWNlaXZlLiBFYWNoIGRlc2NyaXB0b3IgaWRlbnRpZmll cyBhIGJsb2NrIG9mIGNvbnRpZ3VvdXMNCj4gcGh5c2ljYWwgbWVtb3J5IGFs bG9jYXRlZCB0byB0aGUgZG9tYWluLiBUaGVyZSBhcmUgZm91ciBjYXNlczoN Cj4gDQo+IFxiZWdpbntpdGVtaXplfQ0KPiANCj4gXGl0ZW0gVGhlIHRyYW5z bWl0IHJpbmcgY2FycmllcyBwYWNrZXRzIHRvIHRyYW5zbWl0IGZyb20gdGhl IGRvbWFpbiB0byB0aGUNCj4gaHlwZXJ2aXNvci4NCj4gDQo+IFxpdGVtIFRo ZSByZXR1cm4gcGF0aCBvZiB0aGUgdHJhbnNtaXQgcmluZyBjYXJyaWVzIGBg ZW1wdHknJyBkZXNjcmlwdG9ycw0KPiBpbmRpY2F0aW5nIHRoYXQgdGhlIGNv bnRlbnRzIGhhdmUgYmVlbiB0cmFuc21pdHRlZCBhbmQgdGhlIG1lbW9yeSBj YW4gYmUNCj4gcmUtdXNlZC4NCj4gDQo+IFxpdGVtIFRoZSByZWNlaXZlIHJp bmcgY2FycmllcyBlbXB0eSBkZXNjcmlwdG9ycyBmcm9tIHRoZSBkb21haW4g dG8gdGhlIA0KPiBoeXBlcnZpc29yOyB0aGVzZSBwcm92aWRlIHN0b3JhZ2Ug c3BhY2UgZm9yIHRoYXQgZG9tYWluJ3MgcmVjZWl2ZWQgcGFja2V0cy4NCj4g DQo+IFxpdGVtIFRoZSByZXR1cm4gcGF0aCBvZiB0aGUgcmVjZWl2ZSByaW5n IGNhcnJpZXMgcGFja2V0cyB0aGF0IGhhdmUgYmVlbg0KPiByZWNlaXZlZC4N Cj4gXGVuZHtpdGVtaXplfQ0KPiANCj4gUmVhbCBwaHlzaWNhbCBhZGRyZXNz ZXMgYXJlIHVzZWQgdGhyb3VnaG91dCwgd2l0aCB0aGUgZG9tYWluIHBlcmZv cm1pbmcgDQo+IHRyYW5zbGF0aW9uIGZyb20gcHNldWRvLXBoeXNpY2FsIGFk ZHJlc3NlcyBpZiB0aGF0IGlzIG5lY2Vzc2FyeS4NCj4gDQo+IElmIGEgZG9t YWluIGRvZXMgbm90IGtlZXAgaXRzIHJlY2VpdmUgcmluZyBzdG9ja2VkIHdp dGggZW1wdHkgYnVmZmVycyB0aGVuIA0KPiBwYWNrZXRzIGRlc3RpbmVkIHRv IGl0IG1heSBiZSBkcm9wcGVkLiBUaGlzIHByb3ZpZGVzIHNvbWUgZGVmZW5z ZSBhZ2FpbnN0IA0KPiByZWNlaXZlci1saXZlbG9jayBwcm9ibGVtcyBiZWNh dXNlIGFuIG92ZXJsb2FkIGRvbWFpbiB3aWxsIGNlYXNlIHRvIHJlY2VpdmUN Cj4gZnVydGhlciBkYXRhLiBTaW1pbGFybHksIG9uIHRoZSB0cmFuc21pdCBw YXRoLCBpdCBwcm92aWRlcyB0aGUgYXBwbGljYXRpb24NCj4gd2l0aCBmZWVk YmFjayBvbiB0aGUgcmF0ZSBhdCB3aGljaCBwYWNrZXRzIGFyZSBhYmxlIHRv IGxlYXZlIHRoZSBzeXN0ZW0uDQo+IA0KPiBTeW5jaHJvbml6YXRpb24gYmV0 d2VlbiB0aGUgaHlwZXJ2aXNvciBhbmQgdGhlIGRvbWFpbiBpcyBhY2hpZXZl ZCB1c2luZyANCj4gY291bnRlcnMgaGVsZCBpbiBzaGFyZWQgbWVtb3J5IHRo YXQgaXMgYWNjZXNzaWJsZSB0byBib3RoLiBFYWNoIHJpbmcgaGFzDQo+IGFz c29jaWF0ZWQgcHJvZHVjZXIgYW5kIGNvbnN1bWVyIGluZGljZXMgaW5kaWNh dGluZyB0aGUgYXJlYSBpbiB0aGUgcmluZw0KPiB0aGF0IGhvbGRzIGRlc2Ny aXB0b3JzIHRoYXQgY29udGFpbiBkYXRhLiBBZnRlciByZWNlaXZpbmcge1xp dCBufSBwYWNrZXRzDQo+IG9yIHtcdCBuYW5vc2Vjb25kc30gYWZ0ZXIgcmVj ZWl2aW5nIHRoZSBmaXJzdCBwYWNrZXQsIHRoZSBoeXBlcnZpc29yIHNlbmRz DQo+IGFuIGV2ZW50IHRvIHRoZSBkb21haW4uIA0KPiANCj4gXGNoYXB0ZXJ7 QmxvY2sgSS9PfQ0KPiANCj4gXHNlY3Rpb257VmlydHVhbCBCbG9jayBEZXZp Y2VzIChWQkRzKX0NCj4gDQo+IEFsbCBndWVzdCBPUyBkaXNrIGFjY2VzcyBn b2VzIHRocm91Z2ggdGhlIFZCRCBpbnRlcmZhY2UuIFRoZSBWQkQgaW50ZXJm YWNlDQo+IHByb3ZpZGVzIHRoZSBhZG1pbmlzdHJhdG9yIHdpdGggdGhlIGFi aWxpdHkgdG8gc2VsZWN0aXZlbHkgZ3JhbnQgZG9tYWlucyANCj4gYWNjZXNz IHRvIHBvcnRpb25zIG9mIGJsb2NrIHN0b3JhZ2UgZGV2aWNlcyB2aXNpYmxl IHRvIHRoZSBzeXN0ZW0uDQo+IA0KPiBBIFZCRCBjYW4gYWxzbyBiZSBjb21w cmlzZWQgb2YgYSBzZXQgb2YgZXh0ZW50cyBmcm9tIG11bHRpcGxlIHN0b3Jh Z2UgZGV2aWNlcy4NCj4gVGhpcyBwcm92aWRlcyB0aGUgc2FtZSBmdW5jdGlv bmFsaXR5IGFzIGEgY29uY2F0ZW5hdGVkIGRpc2sgZHJpdmVyLg0KPiANCj4g XHNlY3Rpb257VmlydHVhbCBEaXNrcyAoVkRzKX0NCj4gDQo+IFZEcyBhcmUg YW4gYWJzdHJhY3Rpb24gYnVpbHQgb24gdG9wIG9mIHRoZSBWQkQgaW50ZXJm YWNlLiBPbmUgY2FuIHJlc2VydmUgZGlzaw0KPiBzcGFjZSBmb3IgdXNlIGJ5 IHRoZSBWRCBsYXllci4gVGhpcyBzcGFjZSBpcyB0aGVuIG1hbmFnZWQgYXMg YSBwb29sIG9mIGZyZWUgZXh0ZW50cy4NCj4gVGhlIFZEIHRvb2xzIGNhbiBh dXRvbWF0aWNhbGx5IGFsbG9jYXRlIGNvbGxlY3Rpb25zIG9mIGV4dGVudHMg ZnJvbSB0aGlzIHBvb2wgdG8NCj4gY3JlYXRlIGBgdmlydHVhbCBkaXNrcycn IG9uIGRlbWFuZC4gDQo+IA0KPiBcc3Vic2VjdGlvbntWaXJ0dWFsIERpc2sg TWFuYWdlbWVudH0NCj4gVGhlIFZEIG1hbmFnZW1lbnQgY29kZSBjb25zaXN0 cyBvZiBhIHNldCBvZiBweXRob24gbGlicmFyaWVzLiBJdCBjYW4gdGhlcmVm b3JlDQo+IGJlIGFjY2Vzc2VkIGJ5IGN1c3RvbSBzY3JpcHRzIGFzIHdlbGwg YXMgdGhlIGNvbnZlbmllbmNlIHNjcmlwdHMgcHJvdmlkZWQuIFRoZQ0KPiBW RCBkYXRhYmFzZSBpcyBhIFNRTGl0ZSBkYXRhYmFzZSBpbiAvdmFyL3Nwb29s L3hlblxfdmRpc2suc3FsaXRlLg0KPiANCj4gVGhlIFZEIHNjcmlwdHMgYW5k IGdlbmVyYWwgVkQgdXNhZ2UgYXJlIGRvY3VtZW50ZWQgaW4gdGhlIFZCRC1I T1dUTy50eHQuDQo+IA0KPiBcc3Vic2VjdGlvbntEYXRhIFRyYW5zZmVyfQ0K PiBEb21haW5zIHdoaWNoIGhhdmUgYmVlbiBncmFudGVkIGFjY2VzcyB0byBh IGxvZ2ljYWwgYmxvY2sgZGV2aWNlIGFyZSBwZXJtaXR0ZWQNCj4gdG8gcmVh ZCBhbmQgd3JpdGUgaXQgZGlyZWN0bHkgdGhyb3VnaCB0aGUgaHlwZXJ2aXNv ciwgcmF0aGVyIHRoYW4gcmVxdWlyaW5nDQo+IHtcaXQgZG9tYWluMH0gdG8g bWVkaWF0ZSBldmVyeSBkYXRhIGFjY2Vzcy4gDQo+IA0KPiBJbiBvdmVydmll dywgdGhlIHNhbWUgc3R5bGUgb2YgZGVzY3JpcHRvci1yaW5nIHRoYXQgaXMg dXNlZCBmb3IgbmV0d29yaw0KPiBwYWNrZXRzIGlzIHVzZWQgaGVyZS4gRWFj aCBkb21haW4gaGFzIG9uZSByaW5nIHRoYXQgY2FycmllcyBvcGVyYXRpb24g cmVxdWVzdHMgdG8gdGhlIA0KPiBoeXBlcnZpc29yIGFuZCBjYXJyaWVzIHRo ZSByZXN1bHRzIGJhY2sgYWdhaW4uIA0KPiANCj4gUmF0aGVyIHRoYW4gY29w eWluZyBkYXRhIGluIGFuZCBvdXQgb2YgdGhlIGh5cGVydmlzb3IsIHdlIHVz ZSBwYWdlIHBpbm5pbmcgdG8NCj4gZW5hYmxlIERNQSB0cmFuc2ZlcnMgZGly ZWN0bHkgYmV0d2VlbiB0aGUgcGh5c2ljYWwgZGV2aWNlIGFuZCB0aGUgZG9t YWluJ3MgDQo+IGJ1ZmZlcnMuIERpc2sgcmVhZCBvcGVyYXRpb25zIGFyZSBz dHJhaWdodGZvcndhcmQ7IHRoZSBoeXBlcnZpc29yIGp1c3QgbmVlZHMNCj4g dG8ga25vdyB3aGljaCBwYWdlcyBoYXZlIHBlbmRpbmcgRE1BIHRyYW5zZmVy cywgYW5kIHByZXZlbnQgdGhlIGd1ZXN0IE9TIGZyb20NCj4gZ2l2aW5nIHRo ZSBwYWdlIGJhY2sgdG8gdGhlIGh5cGVydmlzb3IsIG9yIHRvIHVzZSB0aGVt IGZvciBzdG9yaW5nIHBhZ2UgdGFibGVzLg0KPiANCj4gJWJsb2NrIEFQSSBo ZXJlIA0KNjBhMzI4LDQzOA0KPiB7XGl0IERvbWFpbjB9IGlzIHJlc3BvbnNp YmxlIGZvciBidWlsZGluZyBhbGwgb3RoZXIgZG9tYWlucyBvbiB0aGUgc2Vy dmVyDQo+IGFuZCBwcm92aWRpbmcgY29udHJvbCBpbnRlcmZhY2VzIGZvciBt YW5hZ2luZyBzY2hlZHVsaW5nLCBuZXR3b3JraW5nLCBhbmQNCj4gYmxvY2tz Lg0KPiANCj4gDQo+IFxjaGFwdGVye0h5cGVydmlzb3IgY2FsbHN9DQo+IA0K PiBcc2VjdGlvbnsgc2V0XF90cmFwXF90YWJsZSh0cmFwXF9pbmZvXF90ICp0 YWJsZSl9IA0KPiANCj4gSW5zdGFsbCB0cmFwIGhhbmRsZXIgdGFibGUuDQo+ IA0KPiBcc2VjdGlvbnsgbW11XF91cGRhdGUobW11XF91cGRhdGVcX3QgKnJl cSwgaW50IGNvdW50KX0gDQo+IFVwZGF0ZSB0aGUgcGFnZSB0YWJsZSBmb3Ig dGhlIGRvbWFpbi4gVXBkYXRlcyBjYW4gYmUgYmF0Y2hlZC4NCj4gVGhlIHVw ZGF0ZSB0eXBlcyBhcmU6IA0KPiANCj4ge1xpdCBNTVVcX05PUk1BTFxfUFRc X1VQREFURX06DQo+IA0KPiB7XGl0IE1NVVxfVU5DSEVDS0VEXF9QVFxfVVBE QVRFfToNCj4gDQo+IHtcaXQgTU1VXF9NQUNIUEhZU1xfVVBEQVRFfToNCj4g DQo+IHtcaXQgTU1VXF9FWFRFTkRFRFxfQ09NTUFORH06DQo+IA0KPiBcc2Vj dGlvbnsgY29uc29sZVxfd3JpdGUoY29uc3QgY2hhciAqc3RyLCBpbnQgY291 bnQpfQ0KPiBPdXRwdXQgYnVmZmVyIHN0ciB0byB0aGUgY29uc29sZS4NCj4g DQo+IFxzZWN0aW9ueyBzZXRcX2dkdCh1bnNpZ25lZCBsb25nICpmcmFtZVxf bGlzdCwgaW50IGVudHJpZXMpfSANCj4gU2V0IHRoZSBnbG9iYWwgZGVzY3Jp cHRvciB0YWJsZSAtIHZpcnR1YWxpemF0aW9uIGZvciBsZ2R0Lg0KPiANCj4g XHNlY3Rpb257IHN0YWNrXF9zd2l0Y2godW5zaWduZWQgbG9uZyBzcywgdW5z aWduZWQgbG9uZyBlc3ApfSANCj4gUmVxdWVzdCBjb250ZXh0IHN3aXRjaCBm cm9tIGh5cGVydmlzb3IuDQo+IA0KPiBcc2VjdGlvbnsgc2V0XF9jYWxsYmFj a3ModW5zaWduZWQgbG9uZyBldmVudFxfc2VsZWN0b3IsIHVuc2lnbmVkIGxv bmcgZXZlbnRcX2FkZHJlc3MsDQo+ICAgICAJCQl1bnNpZ25lZCBsb25nIGZh aWxzYWZlXF9zZWxlY3RvciwgdW5zaWduZWQgbG9uZyBmYWlsc2FmZVxfYWRk cmVzcykgfSANCj4gIFJlZ2lzdGVyIE9TIGV2ZW50IHByb2Nlc3Npbmcgcm91 dGluZS4gSW4gTGludXggYm90aCB0aGUgZXZlbnRcX3NlbGVjdG9yIGFuZCAN Cj4gZmFpbHNhZmVcX3NlbGVjdG9yIGFyZSB0aGUga2VybmVsJ3MgQ1MuIFRo ZSB2YWx1ZSBldmVudFxfYWRkcmVzcyBzcGVjaWZpZXMgdGhlIGFkZHJlc3Mg Zm9yDQo+IGFuIGludGVycnVwdCBoYW5kbGVyIGRpc3BhdGNoIHJvdXRpbmUg YW5kIGZhaWxzYWZlXF9hZGRyZXNzIHNwZWNpZmllcyBhIGhhbmRsZXIgZm9y IA0KPiBhcHBsaWNhdGlvbiBmYXVsdHMuDQo+IA0KPiBcc2VjdGlvbnsgbmV0 XF9pb1xfb3AobmV0b3BcX3QgKm9wKX0gIA0KPiBOb3RpZnkgaHlwZXJ2aXNv ciBvZiB1cGRhdGVzIHRvIHRyYW5zbWl0IGFuZC9vciByZWNlaXZlIGRlc2Ny aXB0b3IgcmluZ3MuDQo+IA0KPiBcc2VjdGlvbnsgZnB1XF90YXNrc3dpdGNo KHZvaWQpfSANCj4gTm90aWZ5IGh5cGVydmlzb3IgdGhhdCBmcHUgcmVnaXN0 ZXJzIG5lZWRlZCB0byBiZSBzYXZlIG9uIGNvbnRleHQgc3dpdGNoLg0KPiAN Cj4gXHNlY3Rpb257IHNjaGVkXF9vcCh1bnNpZ25lZCBsb25nIG9wKX0gDQo+ IFJlcXVlc3Qgc2NoZWR1bGluZyBvcGVyYXRpb24gZnJvbSBoeXBlcnZpc29y LiBUaGUgb3B0aW9ucyBhcmU6IHlpZWxkLCBzdG9wLCBhbmQgZXhpdC4NCj4g DQo+IFxzZWN0aW9ueyBkb20wXF9vcChkb20wXF9vcFxfdCAqb3ApfSANCj4g QWRtaW5pc3RyYXRpdmUgZG9tYWluIG9wZXJhdGlvbnMgZm9yIGRvbWFpbiBt YW5hZ2VtZW50LiBUaGUgb3B0aW9ucyBhcmU6DQo+IA0KPiB7XGl0IERPTTBc X0NSRUFURURPTUFJTn06IGNyZWF0ZSBuZXcgZG9tYWluLCBzcGVjaWZ5aW5n IHRoZSBuYW1lIGFuZCBtZW1vcnkgdXNhZ2UNCj4gaW4ga2lsb2J5dGVzLg0K PiANCj4ge1xpdCBET00wXF9TVEFSVERPTUFJTn06IG1ha2UgZG9tYWluIHNj aGVkdWxhYmxlDQo+IA0KPiB7XGl0IERPTTBcX1NUT1BET01BSU59OiBtYXJr IGRvbWFpbiBhcyB1bnNjaGVkdWxhYmxlDQo+IA0KPiB7XGl0IERPTTBcX0RF U1RST1lET01BSU59OiBkZWFsbG9jYXRlIHJlc291cmNlcyBhc3NvY2lhdGVk IHdpdGggdGhlIGRvbWFpbg0KPiANCj4ge1xpdCBET00wXF9HRVRNRU1MSVNU fTogZ2V0IGxpc3Qgb2YgcGFnZXMgdXNlZCBieSB0aGUgZG9tYWluDQo+IA0K PiB7XGl0IERPTTBcX0JVSUxERE9NQUlOfTogZG8gZmluYWwgZ3Vlc3QgT1Mg c2V0dXAgZm9yIGRvbWFpbg0KPiANCj4ge1xpdCBET00wXF9CVlRDVEx9OiBh ZGp1c3Qgc2NoZWR1bGVyIGNvbnRleHQgc3dpdGNoIHRpbWUNCj4gDQo+IHtc aXQgRE9NMFxfQURKVVNURE9NfTogYWRqdXN0IHNjaGVkdWxpbmcgcHJpb3Jp dGllcyBmb3IgZG9tYWluDQo+IA0KPiB7XGl0IERPTTBcX0dFVERPTUFJTkZP fTogZ2V0IHN0YXRpc3RpY3MgYWJvdXQgdGhlIGRvbWFpbg0KPiANCj4ge1xp dCBET00wXF9JT1BMfToNCj4gDQo+IHtcaXQgRE9NMFxfTVNSfToNCj4gDQo+ IHtcaXQgRE9NMFxfREVCVUd9Og0KPiANCj4ge1xpdCBET00wXF9TRVRUSU1F fTogc2V0IHN5c3RlbSB0aW1lDQo+IA0KPiB7XGl0IERPTU9cX1JFQURDT05T T0xFfTogcmVhZCBjb25zb2xlIGNvbnRlbnQgZnJvbSBoeXBlcnZpc29yIGJ1 ZmZlciByaW5nDQo+IA0KPiB7XGl0IERPTU9cX1BJTkNQVURPTUFJTn06IHBp biBkb21haW4gdG8gYSBwYXJ0aWN1bGFyIENQVQ0KPiANCj4gDQo+IFxzZWN0 aW9ue25ldHdvcmtcX29wKG5ldHdvcmtcX29wXF90ICpvcCl9IA0KPiB1cGRh dGUgbmV0d29yayBydWxlc2V0DQo+IA0KPiBcc2VjdGlvbnsgYmxvY2tcX2lv XF9vcChibG9ja1xfaW9cX29wXF90ICpvcCl9DQo+IA0KPiBcc2VjdGlvbnsg c2V0XF9kZWJ1Z3JlZyhpbnQgcmVnLCB1bnNpZ25lZCBsb25nIHZhbHVlKX0N Cj4gc2V0IGRlYnVnIHJlZ2lzdGVyIHJlZyB0byB2YWx1ZQ0KPiANCj4gXHNl Y3Rpb257IGdldFxfZGVidWdyZWcoaW50IHJlZyl9DQo+ICBnZXQgdGhlIGRl YnVnIHJlZ2lzdGVyIHJlZw0KPiANCj4gXHNlY3Rpb257IHVwZGF0ZVxfZGVz Y3JpcHRvcih1bnNpZ25lZCBsb25nIHBhLCB1bnNpZ25lZCBsb25nIHdvcmQx LCB1bnNpZ25lZCBsb25nIHdvcmQyKX0gDQo+IA0KPiBcc2VjdGlvbnsgc2V0 XF9mYXN0XF90cmFwKGludCBpZHgpfQ0KPiAgaW5zdGFsbCB0cmFwcyB0byBh bGxvdyBndWVzdCBPUyB0byBieXBhc3MgaHlwZXJ2aXNvcg0KPiANCj4gXHNl Y3Rpb257IGRvbVxfbWVtXF9vcChkb21cX21lbVxfb3BcX3QgKm9wKX0NCj4g IGluY3JlYXNlIG9yIGRlY3JlYXNlIG1lbW9yeSByZXNlcnZhdGlvbnMgZm9y IGd1ZXN0IE9TDQo+IA0KPiBcc2VjdGlvbnsgbXVsdGljYWxsKG11bHRpY2Fs bFxfZW50cnlcX3QgKmNhbGxcX2xpc3QsIGludCBuclxfY2FsbHMpfQ0KPiAg ZXhlY3V0ZSBhIHNlcmllcyBvZiBoeXBlcnZpc29yIGNhbGxzDQo+IA0KPiBc c2VjdGlvbnsga2JkXF9vcCh1bnNpZ25lZCBjaGFyIG9wLCB1bnNpZ25lZCBj aGFyIHZhbCl9DQo+IA0KPiBcc2VjdGlvbnt1cGRhdGVcX3ZhXF9tYXBwaW5n KHVuc2lnbmVkIGxvbmcgcGFnZVxfbnIsIHVuc2lnbmVkIGxvbmcgdmFsLCB1 bnNpZ25lZCBsb25nIGZsYWdzKX0NCj4gDQo+IFxzZWN0aW9ueyBldmVudFxf Y2hhbm5lbFxfb3AodW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgaW50IGlk KX0gDQo+IGludGVyLWRvbWFpbiBldmVudC1jaGFubmVsIG1hbmFnZW1lbnQs IG9wdGlvbnMgYXJlOiBvcGVuLCBjbG9zZSwgc2VuZCwgYW5kIHN0YXR1cy4N Cj09PT09IGRvY3Mvc3R5bGUudGV4IDEuMSB2cyBlZGl0ZWQgPT09PT0NCjdj Nw0KPCBcdXNlcGFja2FnZXtzYWJvbn0NCi0tLQ0KPiAlIFx1c2VwYWNrYWdl e3NhYm9ufQ0KPT09PT0gZXh0cmFzL21pbmktb3MvTWFrZWZpbGUgMS41IHZz IGVkaXRlZCA9PT09PQ0KNmM2LDcNCjwgQ0ZMQUdTICA6PSAtZm5vLWJ1aWx0 aW4gLU8zIC1XYWxsIC1JaC8NCi0tLQ0KPiBDRkxBR1MgIDo9IC1mbm8tYnVp bHRpbiAtTzMgLVdhbGwgLUloLyAtV2Nhc3QtcXVhbCAtV3JlZHVuZGFudC1k ZWNscyAtV25lc3RlZC1leHRlcm5zIC1Xc3RyaWN0LXByb3RvdHlwZXMgLVdw b2ludGVyLWFyaXRoIC1XaW5saW5lIC1hbnNpDQo+IA0KPT09PT0gZXh0cmFz L21pbmktb3MvZXZlbnRzLmMgMS4zIHZzIGVkaXRlZCA9PT09PQ0KMzUsMzZj MzUsMzYNCjwgDQo8ICAgICBpZiAoZXYgPj0gTlJfRVZTKSB7DQotLS0NCj4g CS8qIGFzc3VtaW5nIGV2IGNhbid0IGJlIG5lZ2F0aXZlICovDQo+ICAgICBp ZiAoKHVuc2lnbmVkIGludClldiA+PSBOUl9FVlMpIHsNCjk0Yzk0DQo8ICAg ICBpbnQgaTsNCi0tLQ0KPiAgICAgdW5zaWduZWQgaW50IGk7DQo9PT09PSBl eHRyYXMvbWluaS1vcy9rZXJuZWwuYyAxLjggdnMgZWRpdGVkID09PT09DQo2 M2M2Mw0KPCANCi0tLQ0KPiBleHRlcm4gY2hhciBzaGFyZWRfaW5mb1tQQUdF X1NJWkVdOw0KNjZjNjYNCjwgICAgIGV4dGVybiBjaGFyIHNoYXJlZF9pbmZv W1BBR0VfU0laRV07DQotLS0NCj4gDQo9PT09PSBleHRyYXMvbWluaS1vcy9t bS5jIDEuNCB2cyBlZGl0ZWQgPT09PT0NCjkwYzkwDQo8ICAgICAgICAgaW50 IGk7DQotLS0NCj4gICAgICAgICB1bnNpZ25lZCBpbnQgaTsNCjIyMmMyMjIN CjwgICAgIGludCBpOw0KLS0tDQo+ICAgICB1bnNpZ25lZCBpbnQgaTsNCjI1 OWMyNTkNCjwgICAgICAgICBmb3IgKCBpID0gUEFHRV9TSElGVDsgKDE8PChp KzEpKSA8PSByYW5nZTsgaSsrICkNCi0tLQ0KPiAgICAgICAgIGZvciAoIGkg PSBQQUdFX1NISUZUOyAgKHVuc2lnbmVkIGludCkoMTw8KGkrMSkpIDw9IHJh bmdlOyAgaSsrICkNCjI4MWMyODENCjwgICAgIGludCBpOw0KLS0tDQo+ICAg ICB1bnNpZ25lZCBpbnQgaTsNCjMwMGMzMDANCjwgICAgIHdoaWxlICggaSAh PSBvcmRlciApDQotLS0NCj4gICAgIHdoaWxlICggaSAhPSAodW5zaWduZWQg aW50KW9yZGVyICkNCj09PT09IGV4dHJhcy9taW5pLW9zL3RpbWUuYyAxLjQg dnMgZWRpdGVkID09PT09DQo5MWM5MQ0KPCBzdGF0aWMgaW5saW5lIHVuc2ln bmVkIGxvbmcgZ2V0X3RpbWVfZGVsdGFfdXNlY3Modm9pZCkNCi0tLQ0KPiBf X2lubGluZV9fIHN0YXRpYyB1bnNpZ25lZCBsb25nIGdldF90aW1lX2RlbHRh X3VzZWNzKHZvaWQpDQo9PT09PSBleHRyYXMvbWluaS1vcy90cmFwcy5jIDEu NSB2cyBlZGl0ZWQgPT09PT0NCjYwYzYwDQo8IHN0YXRpYyBpbmxpbmUgdm9p ZCBkdW1wX2NvZGUodW5zaWduZWQgZWlwKQ0KLS0tDQo+IF9faW5saW5lX18g c3RhdGljIHZvaWQgZHVtcF9jb2RlKHVuc2lnbmVkIGVpcCkNCjgzYzgzDQo8 IHN0YXRpYyB2b2lkIGlubGluZSBkb190cmFwKGludCB0cmFwbnIsIGNoYXIg KnN0ciwNCi0tLQ0KPiBfX2lubGluZV9fIHN0YXRpYyB2b2lkIGRvX3RyYXAo aW50IHRyYXBuciwgY2hhciAqc3RyLA0KODdjODcNCjwgICBwcmludGYoIiVk ICVzIiwgdHJhcG5yLCBzdHIpOw0KLS0tDQo+ICAgcHJpbnRmKCIlZCAlcyA6 ICVsZCIsIHRyYXBuciwgc3RyLCBlcnJvcl9jb2RlKTsNCj09PT09IGV4dHJh cy9taW5pLW9zL2gvaHlwZXJ2aXNvci5oIDEuOCB2cyBlZGl0ZWQgPT09PT0N CjM1YzM1DQo8IHN0YXRpYyBpbmxpbmUgaW50IEhZUEVSVklTT1Jfc2V0X3Ry YXBfdGFibGUodHJhcF9pbmZvX3QgKnRhYmxlKQ0KLS0tDQo+IF9faW5saW5l X18gc3RhdGljIGludCBIWVBFUlZJU09SX3NldF90cmFwX3RhYmxlKHRyYXBf aW5mb190ICp0YWJsZSkNCjQ2YzQ2DQo8IHN0YXRpYyBpbmxpbmUgaW50IEhZ UEVSVklTT1JfbW11X3VwZGF0ZShtbXVfdXBkYXRlX3QgKnJlcSwgaW50IGNv dW50KQ0KLS0tDQo+IF9faW5saW5lX18gc3RhdGljIGludCBIWVBFUlZJU09S X21tdV91cGRhdGUobW11X3VwZGF0ZV90ICpyZXEsIGludCBjb3VudCkNCjU3 YzU3DQo8IHN0YXRpYyBpbmxpbmUgaW50IEhZUEVSVklTT1JfY29uc29sZV93 cml0ZShjb25zdCBjaGFyICpzdHIsIGludCBjb3VudCkNCi0tLQ0KPiBfX2lu bGluZV9fIHN0YXRpYyBpbnQgSFlQRVJWSVNPUl9jb25zb2xlX3dyaXRlKGNv bnN0IGNoYXIgKnN0ciwgaW50IGNvdW50KQ0KNjljNjkNCjwgc3RhdGljIGlu bGluZSBpbnQgSFlQRVJWSVNPUl9zZXRfZ2R0KHVuc2lnbmVkIGxvbmcgKmZy YW1lX2xpc3QsIGludCBlbnRyaWVzKQ0KLS0tDQo+IF9faW5saW5lX18gc3Rh dGljIGludCBIWVBFUlZJU09SX3NldF9nZHQodW5zaWduZWQgbG9uZyAqZnJh bWVfbGlzdCwgaW50IGVudHJpZXMpDQo4MWM4MQ0KPCBzdGF0aWMgaW5saW5l IGludCBIWVBFUlZJU09SX3N0YWNrX3N3aXRjaCh1bnNpZ25lZCBsb25nIHNz LCB1bnNpZ25lZCBsb25nIGVzcCkNCi0tLQ0KPiBfX2lubGluZV9fIHN0YXRp YyBpbnQgSFlQRVJWSVNPUl9zdGFja19zd2l0Y2godW5zaWduZWQgbG9uZyBz cywgdW5zaWduZWQgbG9uZyBlc3ApDQo5MmM5Mg0KPCBzdGF0aWMgaW5saW5l IGludCBIWVBFUlZJU09SX3NldF9jYWxsYmFja3MoDQotLS0NCj4gX19pbmxp bmVfXyBzdGF0aWMgaW50IEhZUEVSVklTT1Jfc2V0X2NhbGxiYWNrcygNCjEw NmMxMDYNCjwgc3RhdGljIGlubGluZSBpbnQgSFlQRVJWSVNPUl9uZXRfaW9f b3AobmV0b3BfdCAqb3ApDQotLS0NCj4gX19pbmxpbmVfXyBzdGF0aWMgaW50 IEhZUEVSVklTT1JfbmV0X2lvX29wKG5ldG9wX3QgKm9wKQ0KMTE3YzExNw0K PCBzdGF0aWMgaW5saW5lIGludCBIWVBFUlZJU09SX2ZwdV90YXNrc3dpdGNo KHZvaWQpDQotLS0NCj4gX19pbmxpbmVfXyBzdGF0aWMgaW50IEhZUEVSVklT T1JfZnB1X3Rhc2tzd2l0Y2godm9pZCkNCjEyN2MxMjcNCjwgc3RhdGljIGlu bGluZSBpbnQgSFlQRVJWSVNPUl95aWVsZCh2b2lkKQ0KLS0tDQo+IF9faW5s aW5lX18gc3RhdGljIGludCBIWVBFUlZJU09SX3lpZWxkKHZvaWQpDQoxMzhj MTM4DQo8IHN0YXRpYyBpbmxpbmUgaW50IEhZUEVSVklTT1JfZXhpdCh2b2lk KQ0KLS0tDQo+IF9faW5saW5lX18gc3RhdGljIGludCBIWVBFUlZJU09SX2V4 aXQodm9pZCkNCjE0OWMxNDkNCjwgc3RhdGljIGlubGluZSBpbnQgSFlQRVJW SVNPUl9zdG9wKHZvaWQpDQotLS0NCj4gX19pbmxpbmVfXyBzdGF0aWMgaW50 IEhZUEVSVklTT1Jfc3RvcCh2b2lkKQ0KMTYwYzE2MA0KPCBzdGF0aWMgaW5s aW5lIGludCBIWVBFUlZJU09SX2RvbTBfb3Aodm9pZCAqZG9tMF9vcCkNCi0t LQ0KPiBfX2lubGluZV9fIHN0YXRpYyBpbnQgSFlQRVJWSVNPUl9kb20wX29w KHZvaWQgKmRvbTBfb3ApDQoxNzFjMTcxDQo8IHN0YXRpYyBpbmxpbmUgaW50 IEhZUEVSVklTT1JfbmV0d29ya19vcCh2b2lkICpuZXR3b3JrX29wKQ0KLS0t DQo+IF9faW5saW5lX18gc3RhdGljIGludCBIWVBFUlZJU09SX25ldHdvcmtf b3Aodm9pZCAqbmV0d29ya19vcCkNCjE4MmMxODINCjwgc3RhdGljIGlubGlu ZSBpbnQgSFlQRVJWSVNPUl9ibG9ja19pb19vcCh1bnNpZ25lZCBpbnQgb3Ap DQotLS0NCj4gX19pbmxpbmVfXyBzdGF0aWMgaW50IEhZUEVSVklTT1JfYmxv Y2tfaW9fb3AodW5zaWduZWQgaW50IG9wKQ0KMTkzYzE5Mw0KPCBzdGF0aWMg aW5saW5lIGludCBIWVBFUlZJU09SX3NldF9kZWJ1Z3JlZyhpbnQgcmVnLCB1 bnNpZ25lZCBsb25nIHZhbHVlKQ0KLS0tDQo+IF9faW5saW5lX18gc3RhdGlj IGludCBIWVBFUlZJU09SX3NldF9kZWJ1Z3JlZyhpbnQgcmVnLCB1bnNpZ25l ZCBsb25nIHZhbHVlKQ0KMjA0YzIwNA0KPCBzdGF0aWMgaW5saW5lIHVuc2ln bmVkIGxvbmcgSFlQRVJWSVNPUl9nZXRfZGVidWdyZWcoaW50IHJlZykNCi0t LQ0KPiBfX2lubGluZV9fIHN0YXRpYyB1bnNpZ25lZCBsb25nIEhZUEVSVklT T1JfZ2V0X2RlYnVncmVnKGludCByZWcpDQoyMTVjMjE1DQo8IHN0YXRpYyBp bmxpbmUgaW50IEhZUEVSVklTT1JfdXBkYXRlX2Rlc2NyaXB0b3IoDQotLS0N Cj4gX19pbmxpbmVfXyBzdGF0aWMgaW50IEhZUEVSVklTT1JfdXBkYXRlX2Rl c2NyaXB0b3IoDQoyMjdjMjI3DQo8IHN0YXRpYyBpbmxpbmUgaW50IEhZUEVS VklTT1Jfc2V0X2Zhc3RfdHJhcChpbnQgaWR4KQ0KLS0tDQo+IF9faW5saW5l X18gc3RhdGljIGludCBIWVBFUlZJU09SX3NldF9mYXN0X3RyYXAoaW50IGlk eCkNCjIzOGMyMzgNCjwgc3RhdGljIGlubGluZSBpbnQgSFlQRVJWSVNPUl9k b21fbWVtX29wKHZvaWQgKmRvbV9tZW1fb3ApDQotLS0NCj4gX19pbmxpbmVf XyBzdGF0aWMgaW50IEhZUEVSVklTT1JfZG9tX21lbV9vcCh2b2lkICpkb21f bWVtX29wKQ0KMjQ5YzI0OQ0KPCBzdGF0aWMgaW5saW5lIGludCBIWVBFUlZJ U09SX211bHRpY2FsbCh2b2lkICpjYWxsX2xpc3QsIGludCBucl9jYWxscykN Ci0tLQ0KPiBfX2lubGluZV9fIHN0YXRpYyBpbnQgSFlQRVJWSVNPUl9tdWx0 aWNhbGwodm9pZCAqY2FsbF9saXN0LCBpbnQgbnJfY2FsbHMpDQoyNjBjMjYw DQo8IHN0YXRpYyBpbmxpbmUgbG9uZyBIWVBFUlZJU09SX2tiZF9vcCh1bnNp Z25lZCBjaGFyIG9wLCB1bnNpZ25lZCBjaGFyIHZhbCkNCi0tLQ0KPiBfX2lu bGluZV9fIHN0YXRpYyBsb25nIEhZUEVSVklTT1Jfa2JkX29wKHVuc2lnbmVk IGNoYXIgb3AsIHVuc2lnbmVkIGNoYXIgdmFsKQ0KMjcxYzI3MQ0KPCBzdGF0 aWMgaW5saW5lIGludCBIWVBFUlZJU09SX3VwZGF0ZV92YV9tYXBwaW5nKA0K LS0tDQo+IF9faW5saW5lX18gc3RhdGljIGludCBIWVBFUlZJU09SX3VwZGF0 ZV92YV9tYXBwaW5nKA0KPT09PT0gZXh0cmFzL21pbmktb3MvaC9saWIuaCAx LjIgdnMgZWRpdGVkID09PT09DQoxMTdjMTE3DQo8IHN0cnVjdCBtYWxsaW5m byBtYWxsaW5mbygpOw0KLS0tDQo+IHN0cnVjdCBtYWxsaW5mbyBtYWxsaW5m byh2b2lkKTsNCjEyNmMxMjYNCjwgdm9pZCBtYWxsb2Nfc3RhdHMoKTsNCi0t LQ0KPiB2b2lkIG1hbGxvY19zdGF0cyh2b2lkKTsNCj09PT09IGV4dHJhcy9t aW5pLW9zL2gvbW0uaCAxLjMgdnMgZWRpdGVkID09PT09DQo1NGM1NA0KPCBz dGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgcGh5c190b19tYWNoaW5lKHVu c2lnbmVkIGxvbmcgcGh5cykNCi0tLQ0KPiBfX2lubGluZV9fIHN0YXRpYyB1 bnNpZ25lZCBsb25nIHBoeXNfdG9fbWFjaGluZSh1bnNpZ25lZCBsb25nIHBo eXMpDQo2MGM2MA0KPCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgbWFj aGluZV90b19waHlzKHVuc2lnbmVkIGxvbmcgbWFjaGluZSkNCi0tLQ0KPiBf X2lubGluZV9fIHN0YXRpYyB1bnNpZ25lZCBsb25nIG1hY2hpbmVfdG9fcGh5 cyh1bnNpZ25lZCBsb25nIG1hY2hpbmUpDQo3MmM3Mg0KPCB2b2lkIGluaXRf bW0oKTsNCi0tLQ0KPiB2b2lkIGluaXRfbW0odm9pZCk7DQo9PT09PSBleHRy YXMvbWluaS1vcy9oL29zLmggMS41IHZzIGVkaXRlZCA9PT09PQ0KMTQwLDE0 MWMxNDAsMTQyDQo8ICNkZWZpbmUgX194Zyh4KSAoKHN0cnVjdCBfX3hjaGdf ZHVtbXkgKikoeCkpDQo8IHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBf X3hjaGcodW5zaWduZWQgbG9uZyB4LCB2b2xhdGlsZSB2b2lkICogcHRyLA0K LS0tDQo+ICNkZWZpbmUgX194Zyh4KSAoKHZvbGF0aWxlIHN0cnVjdCBfX3hj aGdfZHVtbXkgKikoeCkpDQo+IA0KPiBfX2lubGluZV9fIHN0YXRpYyB1bnNp Z25lZCBsb25nIF9feGNoZyh1bnNpZ25lZCBsb25nIHgsIHZvbGF0aWxlIHZv aWQgKiBwdHIsDQo9PT09PSBleHRyYXMvbWluaS1vcy9saWIvbWFsbG9jLmMg MS4zIHZzIGVkaXRlZCA9PT09PQ0KNDdjNDcNCjwgICAgIHN0YXRpYyB2b2lk ICpsYXN0Ow0KLS0tDQo+ICAgICBzdGF0aWMgY2hhciAqbGFzdDsNCjQ5YzQ5 DQo8ICAgICB2b2lkICpyZXQ7DQotLS0NCj4gICAgIGNoYXIgKnJldDsNCjU3 YzU3DQo8ICAgICByZXQgPSAodm9pZCAqKWFsbG9jX3BhZ2VzKG9yZGVyKTsN Ci0tLQ0KPiAgICAgcmV0ID0gKGNoYXIgKilhbGxvY19wYWdlcyhvcmRlcik7 DQo9PT09PSBleHRyYXMvbWluaS1vcy9saWIvbWF0aC5jIDEuMiB2cyBlZGl0 ZWQgPT09PT0NCjE0MywxNDRjMTQzDQo8IF9fcWRpdnJlbSh1cSwgdnEsIGFy cSkNCjwgCXU2NCB1cSwgdnEsICphcnE7DQotLS0NCj4gX19xZGl2cmVtKHU2 NCB1cSwgdTY0IHZxLCB1NjQgKmFycSkNCjM2NiwzNjdjMzY1DQo8IF9fdWRp dmRpMyhhLCBiKQ0KPCAgICAgICAgIHU2NCBhLCBiOw0KLS0tDQo+IF9fdWRp dmRpMyh1NjQgYSwgdTY0IGIpDQozNzcsMzc4YzM3NQ0KPCBfX3Vtb2RkaTMo YSwgYikNCjwgICAgICAgICB1X3F1YWRfdCBhLCBiOw0KLS0tDQo+IF9fdW1v ZGRpMyh1X3F1YWRfdCBhLCB1X3F1YWRfdCBiKQ0KPT09PT0gZXh0cmFzL21p bmktb3MvbGliL3N0cmluZy5jIDEuMiB2cyBlZGl0ZWQgPT09PT0NCjM4YzM4 LDM5DQo8IAljaGFyICp0bXAgPSAoY2hhciAqKSBkZXN0LCAqcyA9IChjaGFy ICopIHNyYzsNCi0tLQ0KPiAJY2hhciAqdG1wID0gKGNoYXIgKikgZGVzdDsN Cj4gCWNvbnN0IGNoYXIgKnMgPSAoY29uc3QgY2hhciAqKSBzcmM7DQoxMjNj MTI0DQo8ICAgICAgICAgcmV0dXJuIChjaGFyICopIHM7DQotLS0NCj4gICAg ICAgICByZXR1cm4gKGNoYXIgKilzOw0KMTI2LDEzOGMxMjcsMTQ0DQo8IGNo YXIgKiBzdHJzdHIoY29uc3QgY2hhciAqIHMxLGNvbnN0IGNoYXIgKiBzMikN Cjwgew0KPCAgICAgICAgIGludCBsMSwgbDI7DQo8IA0KPCAgICAgICAgIGwy ID0gc3RybGVuKHMyKTsNCjwgICAgICAgICBpZiAoIWwyKQ0KPCAgICAgICAg ICAgICAgICAgcmV0dXJuIChjaGFyICopIHMxOw0KPCAgICAgICAgIGwxID0g c3RybGVuKHMxKTsNCjwgICAgICAgICB3aGlsZSAobDEgPj0gbDIpIHsNCjwg ICAgICAgICAgICAgICAgIGwxLS07DQo8ICAgICAgICAgICAgICAgICBpZiAo IW1lbWNtcChzMSxzMixsMikpDQo8ICAgICAgICAgICAgICAgICAgICAgICAg IHJldHVybiAoY2hhciAqKSBzMTsNCjwgICAgICAgICAgICAgICAgIHMxKys7 DQotLS0NCj4gLyoNCj4gICogRmluZCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBv ZiBmaW5kIGluIHMuDQo+ICAqLw0KPiBjaGFyICoNCj4gc3Ryc3RyKGNvbnN0 IGNoYXIgKnMsIGNvbnN0IGNoYXIgKmZpbmQpDQo+IHsNCj4gCSAgICBjaGFy IGMsIHNjOw0KPiAgICAgICAgIHNpemVfdCBsZW47DQo+IA0KPiAgICAgICAg IGlmICgoYyA9ICpmaW5kKyspICE9IDApIHsNCj4gICAgICAgICAgICAgICAg IGxlbiA9IHN0cmxlbihmaW5kKTsNCj4gICAgICAgICAgICAgICAgIGRvIHsN Cj4gICAgICAgICAgICAgICAgICAgICAgICAgZG8gew0KPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlmICgoc2MgPSAqcysrKSA9PSAwKQ0K PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIChOVUxMKTsNCj4gICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGls ZSAoc2MgIT0gYyk7DQo+ICAgICAgICAgICAgICAgICB9IHdoaWxlIChzdHJu Y21wKHMsIGZpbmQsIGxlbikgIT0gMCk7DQo+ICAgICAgICAgICAgICAgICBz LS07DQoxNDBjMTQ2DQo8ICAgICAgICAgcmV0dXJuIE5VTEw7DQotLS0NCj4g ICAgICAgICByZXR1cm4gKChjaGFyICopcyk7DQoxNDJkMTQ3DQo8IA0KPT09 PT0geGVuL2luY2x1ZGUvaHlwZXJ2aXNvci1pZnMvYmxvY2suaCAxLjI0IHZz IGVkaXRlZCA9PT09PQ0KMTA3LDEwOGMxMDcsMTA4DQo8ICAgICBpbnQgICAg ICAgICBtYXg7ICAgICAgICAgICAgIC8vIG1heGltdW11bSBudW1iZXIgb2Yg ZGlza3MgdG8gcmVwb3J0DQo8ICAgICB4ZW5fZGlza190ICpkaXNrczsgICAg ICAgICAgIC8vIHBvaW50ZXIgdG8gYXJyYXkgb2YgZGlzayBpbmZvIA0KLS0t DQo+ICAgICBpbnQgICAgICAgICBtYXg7ICAgICAgICAgICAgIC8qIG1heGlt dW11bSBudW1iZXIgb2YgZGlza3MgdG8gcmVwb3J0ICovDQo+ICAgICB4ZW5f ZGlza190ICpkaXNrczsgICAgICAgICAgIC8qIHBvaW50ZXIgdG8gYXJyYXkg b2YgZGlzayBpbmZvICovIA0KMTEwYzExMA0KPCAgICAgaW50ICAgICAgICAg Y291bnQ7ICAgICAgICAgICAvLyBob3cgbWFueSBkaXNrcyB3ZSBoYXZlIGlu Zm8gYWJvdXQgDQotLS0NCj4gICAgIGludCAgICAgICAgIGNvdW50OyAgICAg ICAgICAgLyogaG93IG1hbnkgZGlza3Mgd2UgaGF2ZSBpbmZvIGFib3V0ICov DQo= --0-932234660-1074994030=:81692 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="interface.tex" Content-Transfer-Encoding: BASE64 Content-ID: <20040124172710.G81692@demos.bsdclusters.com> Content-Description: Content-Disposition: attachment; filename="interface.tex" XGRvY3VtZW50Y2xhc3NbMTFwdCx0d29zaWRlLGZpbmFsLG9wZW5yaWdodF17 eGVuc3R5bGV9DQpcdXNlcGFja2FnZXthNCxncmFwaGljeCxzZXRzcGFjZX0N ClxzZXRzdHJldGNoezEuMTV9DQpcaW5wdXR7c3R5bGUudGV4fQ0KDQpcYmVn aW57ZG9jdW1lbnR9DQoNCiUgVElUTEUgUEFHRQ0KXHBhZ2VzdHlsZXtlbXB0 eX0NClxiZWdpbntjZW50ZXJ9DQpcdnNwYWNlKntcZmlsbH0NClxpbmNsdWRl Z3JhcGhpY3N7ZXBzL3hlbmxvZ28uZXBzfQ0KXHZmaWxsDQpcdmZpbGwNClx2 ZmlsbA0KXGJlZ2lue3RhYnVsYXJ9e2x9DQp7XEh1Z2UgXGJmIEludGVyZmFj ZSBtYW51YWx9IFxcWzRtbV0NCntcaHVnZSBYZW4gdjEuMyBmb3IgeDg2fSBc XFs4MG1tXQ0KDQp7XExhcmdlIFhlbiBpcyBDb3B5cmlnaHQgKGMpIDIwMDQs IFRoZSBYZW4gVGVhbX0gXFxbM21tXQ0Ke1xMYXJnZSBVbml2ZXJzaXR5IG9m IENhbWJyaWRnZSwgVUt9IFxcWzIwbW1dDQp7XGxhcmdlIExhc3QgdXBkYXRl ZCBvbiAxOHRoIEphbnVhcnksIDIwMDR9DQpcZW5ke3RhYnVsYXJ9DQpcdmZp bGwNClxlbmR7Y2VudGVyfQ0KXGNsZWFyZG91YmxlcGFnZQ0KDQolIFRBQkxF IE9GIENPTlRFTlRTDQpccGFnZXN0eWxle3BsYWlufQ0KXHBhZ2VudW1iZXJp bmd7cm9tYW59DQp7IFxwYXJza2lwIDBwdCBwbHVzIDFwdA0KICBcdGFibGVv ZmNvbnRlbnRzIH0NClxjbGVhcmRvdWJsZXBhZ2UNCg0KJSBQUkVQQVJFIEZP UiBNQUlOIFRFWFQNClxwYWdlbnVtYmVyaW5ne2FyYWJpY30NClxyYWdnZWRi b3R0b20NClx3aWRvd3BlbmFsdHk9MTAwMDANClxjbHVicGVuYWx0eT0xMDAw MA0KXHBhcmluZGVudD0wcHQNClxyZW5ld2NvbW1hbmR7XHRvcGZyYWN0aW9u fXsuOH0NClxyZW5ld2NvbW1hbmR7XGJvdHRvbWZyYWN0aW9ufXsuOH0NClxy ZW5ld2NvbW1hbmR7XHRleHRmcmFjdGlvbn17LjJ9DQpccmVuZXdjb21tYW5k e1xmbG9hdHBhZ2VmcmFjdGlvbn17Ljh9DQpcc2V0c3RyZXRjaHsxLjE1fQ0K DQpcY2hhcHRlcntJbnRyb2R1Y3Rpb259DQpYZW4gYWxsb3dzIHRoZSBoYXJk d2FyZSByZXNvdWNlcyBvZiBhIG1hY2hpbmUgdG8gYmUgdmlydHVhbGl6ZWQg YW5kDQpkeW5hbWljYWxseSBwYXJ0aXRpb25lZCBzdWNoIGFzIHRvIGFsbG93 IG11bHRpcGxlIGRpZmZlcmVudCAnZ3Vlc3QnDQpvcGVyYXRpbmcgc3lzdGVt IGltYWdlcyB0byBiZSBydW4gc2ltdWx0YW5lb3VzbHkuDQoNClZpcnR1YWxp emluZyB0aGUgbWFjaGluZSBpbiB0aGlzIG1hbm5lciBwcm92aWRlcyBmbGV4 aWJpbGl0eSBhbGxvd2luZw0KZGlmZmVyZW50IHVzZXJzIHRvIGNob29zZSB0 aGVpciBwcmVmZXJyZWQgb3BlcmF0aW5nIHN5c3RlbSAoV2luZG93cywNCkxp bnV4LCBGcmVlQlNELCBvciBhIGN1c3RvbSBvcGVyYXRpbmcgc3lzdGVtKS4g RnVydGhlcm1vcmUsIFhlbiBwcm92aWRlcw0Kc2VjdXJlIHBhcnRpdGlvbmlu ZyBiZXR3ZWVuIHRoZXNlICdkb21haW5zJywgYW5kIGVuYWJsZXMgYmV0dGVy IHJlc291cmNlDQphY2NvdW50aW5nIGFuZCBRb1MgaXNvbGF0aW9uIHRoYW4g Y2FuIGJlIGFjaGlldmVkIHdpdGggYSBjb252ZW50aW9uYWwNCm9wZXJhdGlu ZyBzeXN0ZW0uDQoNClRoZSBoeXBlcnZpc29yIHJ1bnMgZGlyZWN0bHkgb24g c2VydmVyIGhhcmR3YXJlIGFuZCBkeW5hbWljYWxseSBwYXJ0aXRpb25zDQpp dCBiZXR3ZWVuIGEgbnVtYmVyIG9mIHtcaXQgZG9tYWluc30sIGVhY2ggb2Yg d2hpY2ggaG9zdHMgYW4gaW5zdGFuY2UNCm9mIGEge1xpdCBndWVzdCBvcGVy YXRpbmcgc3lzdGVtfS4gVGhlIGh5cGVydmlzb3IgcHJvdmlkZXMganVzdCBl bm91Z2gNCmFic3RyYWN0aW9uIG9mIHRoZSBtYWNoaW5lIHRvIGFsbG93IGVm ZmVjdGl2ZSBpc29sYXRpb24gYW5kIHJlc291cmNlIA0KbWFuYWdlbWVudCBi ZXR3ZWVuIHRoZXNlIGRvbWFpbnMuDQoNClhlbiBlc3NlbnRpYWxseSB0YWtl cyBhIHZpcnR1YWwgbWFjaGluZSBhcHByb2FjaCBhcyBwaW9uZWVyZWQgYnkg SUJNIFZNLzM3MC4NCkhvd2V2ZXIsIHVubGlrZSBWTS8zNzAgb3IgbW9yZSBy ZWNlbnQgZWZmb3J0cyBzdWNoIGFzIFZNV2FyZSBhbmQgVmlydHVhbCBQQywN ClhlbiBkb2VzbiBub3QgYXR0ZW1wdCB0byBjb21wbGV0ZWx5IHZpcnR1YWxp emUgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUuIEluc3RlYWQNCnBhcnRzIG9m IHRoZSBob3N0ZWQgZ3Vlc3Qgb3BlcmF0aW5nIHN5c3RlbXMgdG8gd29yayB3 aXRoIHRoZSBoeXBlcnZpc29yOyB0aGUNCm9wZXJhdGluZyBzeXN0ZW0gaXMg ZWZmZWN0aXZlbHkgcG9ydGVkIHRvIGEgbmV3IHRhcmdldCBhcmNoaXRlY3R1 cmUsIHR5cGljYWxseQ0KcmVxdWlyaW5nIGNoYW5nZXMgaW4ganVzdCB0aGUg bWFjaGluZS1kZXBlbmRlbnQgY29kZS4gVGhlIHVzZXItbGV2ZWwgQVBJIGlz DQp1bmNoYW5nZWQsIHRodXMgZXhpc3RpbmcgYmluYXJpZXMgYW5kIG9wZXJh dGluZyBzeXN0ZW0gZGlzdHJpYnV0aW9ucyBjYW4gd29yaw0KdW5tb2RpZmll ZC4NCg0KSW4gYWRkaXRpb24gdG8gZXhwb3J0aW5nIHZpcnR1YWxpemVkIGlu c3RhbmNlcyBvZiBDUFUsIG1lbW9yeSwgbmV0d29yayBhbmQNCmJsb2NrIGRl dmljZWVzLCBYZW4gZXhwb3NlcyBhIGNvbnRyb2wgaW50ZXJmYWNlIHRvIHNl dCBob3cgdGhlc2UgcmVzb3VyY2VzDQphcmUgc2hhcmVkIGJldHdlZW4gdGhl IHJ1bm5pbmcgZG9tYWlucy4gVGhlIGNvbnRyb2wgaW50ZXJmYWNlIGlzIHBy aXZpbGVnZWQNCmFuZCBtYXkgb25seSBiZSBhY2Nlc3NlZCBieSBvbmUgcGFy dGljdWxhciB2aXJ0dWFsIG1hY2hpbmU6IHtcaXQgZG9tYWluMH0uDQpUaGlz IGRvbWFpbiBpcyBhIHJlcXVpcmVkIHBhcnQgb2YgYW55IFhlbi1iYXNlIHNl cnZlciBhbmQgcnVucyB0aGUgYXBwbGljYXRpb24NCnNvZnR3YXJlIHRoYXQg bWFuYWdlcyB0aGUgY29udHJvbC1wbGFuZSBhc3BlY3RzIG9mIHRoZSBwbGF0 Zm9ybS4gUnVubmluZyB0aGUNCmNvbnRyb2wgc29mdHdhcmUgaW4ge1xpdCBk b21haW4wfSwgZGlzdGluY3QgZnJvbSB0aGUgaHlwZXJ2aXNvciBpdHNlbGYs IGFsbG93cw0KdGhlIFhlbiBmcmFtZXdvcmsgdG8gc2VwYXJhdGUgdGhlIG5v dGlvbnMgb2Yge1xpdCBtZWNoYW5pc219IGFuZCB7XGl0IHBvbGljeX0NCndp dGhpbiB0aGUgc3lzdGVtLg0KDQoNClxjaGFwdGVye0NQVSBzdGF0ZX0NCg0K QWxsIHByaXZpbGVnZWQgc3RhdGUgbXVzdCBiZSBoYW5kbGVkIGJ5IFhlbi4g VGhlIGd1ZXN0IE9TIGhhcyBubyBkaXJlY3QgYWNjZXNzDQp0byBDUjMgYW5k IGlzIG5vdCBwZXJtaXR0ZWQgdG8gdXBkYXRlIHByaXZpbGVnZWQgYml0cyBp biBFRkxBR1MuDQoNClxjaGFwdGVye0V4Y2VwdGlvbnN9DQpUaGUgSURUIGlz IHZpcnR1YWxpc2VkIGJ5IHN1Ym1pdHRpbmcgYSB2aXJ0dWFsICd0cmFwDQp0 YWJsZScgdG8gWGVuLiBNb3N0IHRyYXAgaGFuZGxlcnMgYXJlIGlkZW50aWNh bCB0byBuYXRpdmUgeDg2DQpoYW5kbGVycy4gVGhlIHBhZ2UtZmF1bHQgaGFu ZGxlciBpcyBhIG5vdGVhYmxlIGV4Y2VwdGlvbi4NCg0KXGNoYXB0ZXJ7SW50 ZXJydXB0cyBhbmQgZXZlbnRzfQ0KSW50ZXJydXB0cyBhcmUgdmlydHVhbGl6 ZWQgYnkgbWFwcGluZyB0aGVtIHRvIGV2ZW50cywgd2hpY2ggYXJlIGRlbGl2 ZXJlZCANCmFzeW5jaHJvbm91c2x5IHRvIHRoZSB0YXJnZXQgZG9tYWluLiBB IGd1ZXN0IE9TIGNhbiBtYXAgdGhlc2UgZXZlbnRzIG9udG8NCml0cyBzdGFu ZGFyZCBpbnRlcnJ1cHQgZGlzcGF0Y2ggbWVjaGFuaXNtcywgc3VjaCBhcyBh IHNpbXBsZSB2ZWN0b3JpbmcgDQpzY2hlbWUuIEVhY2ggcGh5c2ljYWwgaW50 ZXJydXB0IHNvdXJjZSBjb250cm9sbGVkIGJ5IHRoZSBoeXBlcnZpc29yLCBp bmNsdWRpbmcNCm5ldHdvcmsgZGV2aWNlcywgZGlza3MsIG9yIHRoZSB0aW1l ciBzdWJzeXN0ZW0sIGlzIHJlc3BvbnNpYmxlIGZvciBpZGVudGlmeWluZw0K dGhlIHRhcmdldCBmb3IgYW4gaW5jb21pbmcgaW50ZXJydXB0IGFuZCBzZW5k aW5nIGFuIGV2ZW50IHRvIHRoYXQgZG9tYWluLg0KDQpUaGlzIGRlbXVsdGlw bGV4aW5nIG1lY2hhbmlzbSBhbHNvIHByb3ZpZGVzIGEgZGV2aWNlLXNwZWNp ZmljIG1lY2hhbmlzbSBmb3IgDQpldmVudCBjb2FsZXNjaW5nIG9yIGhvbGQt b2ZmLiBGb3IgZXhhbXBsZSwgYSBndWVzdCBPUyBtYXkgcmVxdWVzdCB0byBv bmx5IA0KYWN0dWFsbHkgcmVjZWl2ZSBhbiBldmVudCBhZnRlciB7XGl0IG59 IHBhY2tldHMgYXJlIHF1ZXVlZCByZWFkeSBmb3IgZGVsaXZlcnkNCnRvIGl0 LCB7XGl0IHR9IG5hbm9zZWNvbmRzIGFmdGVyIHRoZSBmaXJzdCBwYWNrZXQg YXJyaXZlZCAod2hpY2ggZXZlciBpcyB0cnVlDQpmaXJzdCkuIFRoaXMgYWxs b3dzIGxhdGVuY3kgYW5kIHRocm91Z2hwdXQgcmVxdWlyZW1lbnRzIHRvIGJl IGFkZHJlc3NlZCBvbiBhDQpkb21haW4tc3BlY2lmaWMgYmFzaXMuDQoNClxj aGFwdGVye1RpbWV9DQpHdWVzdCBvcGVyYXRpbmcgc3lzdGVtcyBuZWVkIHRv IGJlIGF3YXJlIG9mIHRoZSBwYXNzYWdlIG9mIHJlYWwgdGltZSBhbmQgdGhl aXINCm93biBgYHZpcnR1YWwgdGltZScnLCBpLmUuIHRoZSB0aW1lIHRoZXkg aGF2ZSBiZWVuIGV4ZWN1dGluZy4gRnVydGhlcm1vcmUsIGENCm5vdGlvbiBv ZiB0aW1lIGlzIHJlcXVpcmVkIGluIHRoZSBoeXBlcnZpc29yIGl0c2VsZiBm b3Igc2NoZWR1bGluZyBhbmQgdGhlDQphY3Rpdml0aWVzIHRoYXQgcmVsYXRl IHRvIGl0LiBUbyB0aGlzIGVuZCB0aGUgaHlwZXJ2aXNvciBwcm92aWRlcyBm b3Igbm90aW9ucw0Kb2YgdGltZTogY3ljbGUgY291bnRlciB0aW1lLCBzeXN0 ZW0gdGltZSwgd2FsbCBjbG9jayB0aW1lLCBkb21haW4gdmlydHVhbCANCnRp bWUuDQoNCg0KXHNlY3Rpb257Q3ljbGUgY291bnRlciB0aW1lfQ0KVGhpcyBw cm92aWRlcyB0aGUgZmluZXN0LWdyYWluZWQsIGZyZWUtcnVubmluZyB0aW1l IHJlZmVyZW5jZSwgd2l0aCB0aGUgYXBwcm94aW1hdGUNCmZyZXF1ZW5jeSBi ZWluZyBwdWJsaWNseSBhY2Nlc3NpYmxlLiBUaGUgY3ljbGUgY291bnRlciB0 aW1lIGlzIHVzZWQgdG8gYWNjdXJhdGVseQ0KZXh0cmFwb2xhdGUgdGhlIG90 aGVyIHRpbWUgcmVmZXJlbmNlcy4gT24gU01QIG1hY2hpbmVzIGl0IGlzIGN1 cnJlbnRseSBhc3N1bWVkDQp0aGF0IHRoZSBjeWNsZSBjb3VudGVyIHRpbWUg aXMgc3luY2hyb25pc2VkIGJldHdlZW4gQ1BVcy4gVGhlIGN1cnJlbnQgeDg2 LWJhc2VkDQppbXBsZW1lbnRhdGlvbiBhY2hpZXZlcyB0aGlzIHdpdGhpbiBp bnRlci1DUFUgY29tbXVuaWNhdGlvbiBsYXRlbmNpZXMuDQoNClxzZWN0aW9u e1N5c3RlbSB0aW1lfQ0KVGhpcyBpcyBhIDY0LWJpdCB2YWx1ZSBjb250YWlu aW5nIHRoZSBuYW5vc2Vjb25kcyBlbGFwc2VkIHNpbmNlIGJvb3QgdGltZS4g VW5saWtlDQpjeWNsZSBjb3VudGVyIHRpbWUsIHN5c3RlbSB0aW1lIGFjY3Vy YXRlbHkgcmVmbGVjdHMgdGhlIHBhc3NhZ2Ugb2YgcmVhbCB0aW1lLCBpLmUu DQppdCBpcyBhZGp1c3RlZCBzZXZlcmFsIHRpbWVzIGEgc2Vjb25kIGZvciB0 aW1lciBkcmlmdC4gVGhpcyBpcyBkb25lIGJ5IHJ1bm5pbmcgYW4NCk5UUCBj bGllbnQgaW4ge1xpdCBkb21haW4wfSBvbiBiZWhhbGYgb2YgdGhlIG1hY2hp bmUsIGZlZWRpbmcgdXBkYXRlcyB0byB0aGUgDQpoeXBlcnZpc29yLiBJbnRl cm1lZGlhdGUgdmFsdWVzIGNhbiBiZSBleHRyYXBvbGF0ZWQgdXNpbmcgdGhl IGN5Y2xlIGNvdW50ZXIuIA0KDQpcc2VjdGlvbntXYWxsIGNsb2NrIHRpbWV9 DQpUaGlzIGlzIHRoZSBhY3R1YWwgYGB0aW1lIG9mIGRheScnIFVuaXggc3R5 bGUgc3RydWN0IHRpbWV2YWwgKGkuZS4gc2Vjb25kcyBhbmQNCm1pY3Jvc2Vj b25kcyBzaW5jZSAxIEphbnVhcnkgMTk3MCwgYWRqdXN0ZWQgYnkgbGVhcCBz ZWNvbmRzIGV0Yy4pLiBBZ2FpbiwgYW4gDQpOVFAgY2xpZW50IGhvc3RlZCBi eSB7XGl0IGRvbWFpbjB9IGNhbiBoZWxwIG1haW50YWluIHRoaXMgdmFsdWUu IFRvIGd1ZXN0IA0Kb3BlcmF0aW5nIHN5c3RlbXMgdGhpcyB2YWx1ZSB3aWxs IGJlIHJlcG9ydGVkIGluc3RlYWQgb2YgdGhlIGhhcmR3YXJlIFJUQw0KY2xv Y2sgdmFsdWUgYW5kIHRoZXkgY2FuIHVzZSB0aGUgc3lzdGVtIHRpbWUgYW5k IGN5Y2xlIGNvdW50ZXIgdGltZXMgdG8gc3RhcnQNCmFuZCByZW1haW4gcGVy ZmVjdGx5IGluIHRpbWUuDQoNCg0KXHNlY3Rpb257RG9tYWluIHZpcnR1YWwg dGltZX0NClRoaXMgcHJvZ3Jlc3NlcyBhdCB0aGUgc2FtZSBwYWNlIGFzIGN5 Y2xlIGNvdW50ZXIgdGltZSwgYnV0IG9ubHkgd2hpbGUgYSBkb21haW4NCmlz IGV4ZWN1dGluZy4gSXQgc3RvcHMgd2hpbGUgYSBkb21haW4gaXMgZGUtc2No ZWR1bGVkLiBUaGVyZWZvcmUgdGhlIHNoYXJlIG9mIHRoZSANCkNQVSB0aGF0 IGEgZG9tYWluIHJlY2VpdmVzIGlzIGluZGljYXRlZCBieSB0aGUgcmF0ZSBh dCB3aGljaCBpdHMgZG9tYWluIHZpcnR1YWwNCnRpbWUgaW5jcmVhc2VzLCBy ZWxhdGl2ZSB0byB0aGUgcmF0ZSBhdCB3aGljaCBjeWNsZSBjb3VudGVyIHRp bWUgZG9lcyBzby4NCg0KXGNoYXB0ZXJ7TWVtb3J5fQ0KDQpUaGUgaHlwZXJ2 aXNvciBpcyByZXNwb25zaWJsZSBmb3IgcHJvdmlkaW5nIG1lbW9yeSB0byBl YWNoIG9mIHRoZSBkb21haW5zIHJ1bm5pbmcgDQpvdmVyIGl0LiBIb3dldmVy LCB0aGUgWGVuIGh5cGVydmlzb3IncyBkdXR5IGlzIHJlc3RyaWN0ZWQgdG8g bWFuYWdpbmcgcGh5c2ljYWwNCm1lbW9yeSBhbmQgdG8gcG9saWNpbmcgcGFn ZSB0YWJsZSB1cGRhdGVzLiBBbGwgb3RoZXIgbWVtb3J5IG1hbmFnZW1lbnQg ZnVuY3Rpb25zDQphcmUgaGFuZGx5IGV4dGVybmFsbHkuIFN0YXJ0LW9mLWRh eSBpc3N1ZXMgc3VjaCBhcyBidWlsZGluZyBpbml0aWFsIHBhZ2UgdGFibGVz DQpmb3IgYSBkb21haW4sIGxvYWRpbmcgaXRzIGtlcm5lbCBpbWFnZSBhbmQg c28gb24gYXJlIGRvbmUgYnkgdGhlIHtcaXQgZG9tYWluIGJ1aWxkZXJ9DQpy dW5uaW5nIGluIHVzZXItc3BhY2Ugd2l0aCB7XGl0IGRvbWFpbjB9LiBQYWdp bmcgdG8gZGlzayBhbmQgc3dhcHBpbmcgaXMgaGFuZGxlZA0KYnkgdGhlIGd1 ZXN0IG9wZXJhdGluZyBzeXN0ZW1zIHRoZW1zZWx2ZXMsIGlmIHRoZXkgbmVl ZCBpdC4NCg0KT24gYSBYZW4tYmFzZWQgc3lzdGVtLCB0aGUgaHlwZXJ2aXNv ciBpdHNlbGYgcnVucyBpbiB7XGl0IHJpbmcgMH0uIEl0IGhhcyBmdWxsDQph Y2Nlc3MgdG8gdGhlIHBoeXNpY2FsIG1lbW9yeSBhdmFpbGFibGUgaW4gdGhl IHN5c3RlbSBhbmQgaXMgcmVzcG9uc2libGUgZm9yIA0KYWxsb2NhdGluZyBw b3J0aW9ucyBvZiBpdCB0byB0aGUgZG9tYWlucy4gR3Vlc3Qgb3BlcmF0aW5n IHN5c3RlbXMgcnVuIGluIGFuZCB1c2UNCntcaXQgcmluZ3MgMX0sIHtcaXQg Mn0gYW5kIHtcaXQgM30gYXMgdGhleSBzZWUgZml0LCBhc2lkZSBmcm9tIHRo ZSBmYWN0IHRoYXQNCnNlZ21lbnRhdGlvbiBpcyB1c2VkIHRvIHByZXZlbnQg dGhlIGd1ZXN0IE9TIGZyb20gYWNjZXNzaW5nIGEgcG9ydGlvbiBvZiB0aGUg DQpsaW5lYXIgYWRkcmVzcyBzcGFjZSB0aGF0IGlzIHJlc2VydmVkIGZvciB1 c2UgYnkgdGhlIGh5cGVydmlzb3IuIFRoaXMgYXBwcm9hY2gNCmFsbG93cyB0 cmFuc2l0aW9ucyBiZXR3ZWVuIHRoZSBndWVzdCBPUyBhbmQgaHlwZXJ2aXNv ciB3aXRob3V0IGZsdXNoaW5nIHRoZSBUTEIuDQpXZSBleHBlY3QgbW9zdCBn dWVzdCBvcGVyYXRpbmcgc3lzdGVtcyB3aWxsIHVzZSByaW5nIDEgZm9yIHRo ZWlyIG93biBvcGVyYXRpb24NCmFuZCBwbGFjZSBhcHBsaWNhdGlvbnMgKGlm IHRoZXkgc3VwcG9ydCBzdWNoIGEgbm90aW9uKSBpbiByaW5nIDMuDQoNClxz ZWN0aW9ue1BoeXNpY2FsIE1lbW9yeSBBbGxvY2F0aW9ufQ0KVGhlIGh5cGVy dmlzb3IgcmVzZXJ2ZXMgYSBzbWFsbCBmaXhlZCBwb3J0aW9uIG9mIHBoeXNp Y2FsIG1lbW9yeSBhdCBzeXN0ZW0gYm9vdA0KdGltZS4gVGhpcyBzcGVjaWFs IG1lbW9yeSByZWdpb24gaXMgbG9jYXRlZCBhdCB0aGUgYmVnaW5uaW5nIG9m IHBoeXNpY2FsIG1lbW9yeQ0KYW5kIGlzIG1hcHBlZCBhdCB0aGUgdmVyeSB0 b3Agb2YgZXZlcnkgdmlydHVhbCBhZGRyZXNzIHNwYWNlLiANCg0KQW55IHBo eXNpY2FsIG1lbW9yeSB0aGF0IGlzIG5vdCB1c2VkIGRpcmVjdGx5IGJ5IHRo ZSBoeXBlcnZpc29yIGlzIGRpdmlkZWQgaW50bw0KcGFnZXMgYW5kIGlzIGF2 YWlsYWJsZSBmb3IgYWxsb2NhdGlvbiB0byBkb21haW5zLiBUaGUgaHlwZXJ2 aXNvciB0cmFja3Mgd2hpY2gNCnBhZ2VzIGFyZSBmcmVlIGFuZCB3aGljaCBw YWdlcyBoYXZlIGJlZW4gYWxsb2NhdGVkIHRvIGVhY2ggZG9tYWluLiBXaGVu IGEgbmV3DQpkb21haW4gaXMgaW5pdGlhbGl6ZWQsIHRoZSBoeXBlcnZpc29y IGFsbG9jYXRlcyBpdCBwYWdlcyBkcmF3biBmcm9tIHRoZSBmcmVlIA0KbGlz dC4gVGhlIGFtb3VudCBvZiBtZW1vcnkgcmVxdWlyZWQgYnkgdGhlIGRvbWFp biBpcyBwYXNzZWQgdG8gdGhlIGh5cGVydmlzb3INCmFzIG9uZSBvZiB0aGUg cGFyYW1ldGVycyBmb3IgbmV3IGRvbWFpbiBpbml0aWFsaXphdGlvbiBieSB0 aGUgZG9tYWluIGJ1aWxkZXIuDQoNCkRvbWFpbnMgY2FuIG5ldmVyIGJlIGFs bG9jYXRlZCBmdXJ0aGVyIG1lbW9yeSBiZXlvbmQgdGhhdCB3aGljaCB3YXMg cmVxdWVzdGVkDQpmb3IgdGhlbSBvbiBpbml0aWFsaXphdGlvbi4gSG93ZXZl ciwgYSBkb21haW4gY2FuIHJldHVybiBwYWdlcyB0byB0aGUgaHlwZXJ2aXNv cg0KaWYgaXQgZGlzY292ZXJzIHRoYXQgaXRzIG1lbW9yeSByZXF1aXJlbWVu dHMgaGF2ZSBkaW1pbmlzaGVkLg0KDQolIHB1dCByZWFzb25zIGZvciB3aHkg cGFnZXMgbWlnaHQgYmUgcmV0dXJuZWQgaGVyZS4NClxzZWN0aW9ue1BhZ2Ug VGFibGUgVXBkYXRlc30NCkluIGFkZGl0aW9uIHRvIG1hbmFnaW5nIHBoeXNp Y2FsIG1lbW9yeSBhbGxvY2F0aW9uLCB0aGUgaHlwZXJ2aXNvciBpcyBhbHNv IGluDQpjaGFyZ2Ugb2YgcGVyZm9ybWluZyBwYWdlIHRhYmxlIHVwZGF0ZXMg b24gYmVoYWxmIG9mIHRoZSBkb21haW5zLiBUaGlzIGlzIA0KbmVjY2Vzc2Fy eSB0byBwcmV2ZW50IGRvbWFpbnMgZnJvbSBhZGRpbmcgYXJiaXRyYXJ5IG1h cHBpbmdzIHRvIHRoZWlyIHBhZ2UNCnRhYmxlcyBvciBpbnRyb2R1Y2luZyBt YXBwaW5ncyB0byBvdGhlcidzIHBhZ2UgdGFibGVzLg0KDQoNCg0KDQpcc2Vj dGlvbntQc2V1ZG8tUGh5c2ljYWwgTWVtb3J5fQ0KVGhlIHVzdWFsIHByb2Js ZW0gb2YgZXh0ZXJuYWwgZnJhZ21lbnRhdGlvbiBtZWFucyB0aGF0IGEgZG9t YWluIGlzIHVubGlrZWx5IHRvDQpyZWNlaXZlIGEgY29udGlndW91cyBzdHJl dGNoIG9mIHBoeXNpY2FsIG1lbW9yeS4gSG93ZXZlciwgbW9zdCBndWVzdCBv cGVyYXRpbmcNCnN5c3RlbXMgZG8gbm90IGhhdmUgYnVpbHQtaW4gc3VwcG9y dCBmb3Igb3BlcmF0aW5nIGluIGEgZnJhZ21lbnRlZCBwaHlzaWNhbA0KYWRk cmVzcyBzcGFjZSBlLmcuIExpbnV4IGhhcyB0byBoYXZlIGEgb25lLXRvLW9u ZSBtYXBwaW5nIGZvciBpdCBwaHlzaWNhbA0KbWVtb3J5LiBUaGVyZSBhIG5v dGlvbiBvZiB7XGl0IHBzZXVkbyBwaHlzaWNhbCBtZW1vcnl9IGlzIGludHJv ZG91Y2VkLiANCk9uY2UgYSBkb21haW4gaXMgYWxsb2NhdGVkIGEgbnVtYmVy IG9mIHBhZ2VzLCBhdCBpdHMgc3RhcnQgb2YgdGhlIGRheSwgb25lIG9mDQp0 aGUgZmlyc3QgdGhpbmdzIGl0IG5lZWRzIHRvIGRvIGlzIGJ1aWxkIGl0cyBv d24ge1xpdCByZWFsIHBoeXNpY2FsfSB0byANCntcaXQgcHNldWRvIHBoeXNp Y2FsfSBtYXBwaW5nLiBGcm9tIHRoYXQgbW9tZW50IG9ud2FyZHMge1xpdCBw c2V1ZG8gcGh5c2ljYWx9DQphZGRyZXNzIGFyZSB1c2VkIGluc3RlYWQgb2Yg ZGlzY29udGlndW91cyB7XGl0IHJlYWwgcGh5c2ljYWx9IGFkZHJlc3Nlcy4g VGh1cywNCnRoZSByZXN0IG9mIHRoZSBndWVzdCBPUyBjb2RlIGhhcyBhbiBp bXByZXNzaW9uIG9mIG9wZXJhdGluZyBpbiBhIGNvbnRpZ3VvdXMNCmFkZHJl c3Mgc3BhY2UuIEd1ZXN0IE9TIHBhZ2UgdGFibGVzIGNvbnRhaW4gcmVhbCBw aHlzaWNhbCBhZGRyZXNzZXMuIE1hcHBpbmcNCntcaXQgcHNldWRvIHBoeXNp Y2FsfSB0byB7XGl0IHJlYWwgcGh5c2ljYWx9IGFkZHJlc3NlcyBpcyBuZWVk IG9uIHBhZ2UNCnRhYmxlIHVwZGF0ZXMgYW5kIGFsc28gb24gcmVtYXBwaW5n IG1lbW9yeSByZWdpb25zIHdpdGggdGhlIGd1ZXN0IE9TLg0KDQoNCg0KXGNo YXB0ZXJ7TmV0d29yayBJL099DQpTaW5jZSB0aGUgaHlwZXJ2aXNvciBtdXN0 IG11bHRpcGxleCBuZXR3b3JrIHJlc291cmNlcywgaXRzIG5ldHdvcmsgc3Vi c3lzdGVtDQptYXkgYmUgdmlld2VkIGFzIGEgdmlydHVhbCBuZXR3b3JrIHN3 aXRjaGluZyBlbGVtZW50IHdpdGggZWFjaCBkb21haW4gaGF2aW5nDQpvbmUg b3IgbW9yZSB2aXJ0dWFsIG5ldHdvcmsgaW50ZXJmYWNlcyB0byB0aGlzIG5l dHdvcmsuDQoNClRoZSBoeXBlcnZpc29yIGFjdHMgY29uY2VwdHVhbGx5IGFz IGFuIElQIHJvdXRlciwgZm9yd2FyZGluZyBlYWNoIGRvbWFpbidzDQp0cmFm ZmljIGFjY29yZGluZyB0byBhIHNldCBvZiBydWxlcy4NCg0KXHNlY3Rpb257 SHlwZXJ2aXNvciBQYWNrZXQgSGFuZGxpbmd9DQpUaGUgaHlwZXJ2aXNvciBp cyByZXNwb25zaWJsZSBwcmltYXJpbHkgZm9yIHtcaXQgZGF0YS1wYXRofSBv cGVyYXRpb25zLg0KSW4gdGVybXMgb2YgbmV0d29ya2luZyB0aGlzIG1lYW5z IHBhY2tldCB0cmFuc21pc3Npb24gYW5kIHJlY2VwdGlvbi4NCg0KT24gdGhl IHRyYW5zbWlzc2lvbiBzaWRlLCB0aGUgaHlwZXJ2aXNvciBuZWVkcyB0byBw ZXJmb3JtIHR3byBrZXkgYWN0aW9uczoNClxiZWdpbntpdGVtaXplfQ0KXGl0 ZW0ge1x0dCBWYWxpZGF0aW9uOn0gQSBkb21haW4gaXMgb25seSBhbGxvd2Vk IHRvIGVtaXQgcGFja2V0cyBtYXRjaGluZyBhIGNlcnRhaW4NCnNwZWNpZmlj YXRpb247IGZvciBleGFtcGxlLCBvbmVzIGluIHdoaWNoIHRoZSBzb3VyY2Ug SVAgYWRkcmVzcyBtYXRjaGVzDQpvbmUgYXNzaWduZWQgdG8gdGhlIHZpcnR1 YWwgaW50ZXJmYWNlIG92ZXIgd2hpY2ggaXQgaXMgc2VudC4gVGhlIGh5cGVy dmlzb3INCmlzIHJlc3BvbnNpYmxlIGZvciBlbnN1cmluZyBhbnkgc3VjaCBy ZXF1aXJlbWVudHMgYXJlIG1ldCwgZWl0aGVyIGJ5IGNoZWNraW5nDQpvciBi eSBzdGFtcGluZyBvdXRnb2luZyBwYWNrZXRzIHdpdGggcHJlc2NyaWJlZCB2 YWx1ZXMgZm9yIGNlcnRhaW4gZmllbGRzLg0KDQpcaXRlbSB7XHR0IFNjaGVk dWxpbmc6fSBTaW5jZSBhIG51bWJlciBvZiBkb21haW5zIGNhbiBzaGFyZSBh IHNpbmdsZSBgYHJlYWwnJyBuZXR3b3JrIA0KaW50ZXJmYWNlLCB0aGUgaHlw ZXJ2aXNvciBtdXN0IG1lZGlhdGUgYWNjZXNzIHdoZW4gc2V2ZXJhbCBkb21h aW5zIGVhY2ggDQpoYXZlIHBhY2tldHMgcXVldWVkIGZvciB0cmFuc21pc3Np b24uIE9mIGNvdXJzZSwgdGhpcyBnZW5lcmFsIHNjaGVkdWxpbmcNCmZ1bmN0 aW9uIHN1YnN1bWVzIGJhc2ljIHNoYXBpbmcgb3IgcmF0ZS1saW1pdGluZyBz Y2hlbWVzLg0KDQpcaXRlbSB7XHR0IExvZ2dpbmcgYW5kIEFjY291bnRpbmc6 fSBUaGUgaHlwZXJ2aXNvciBjYW4gYmUgY29uZmlndXJlZCB3aXRoIGNsYXNz aWZpZXIgDQpydWxlcyB0aGF0IGNvbnRyb2wgaG93IHBhY2tldHMgYXJlIGFj Y291bnRlZCBvciBsb2dnZWQuIEZvciBleGFtcGxlLCANCntcaXQgZG9tYWlu MH0gY291bGQgcmVxdWVzdCB0aGF0IGl0IHJlY2VpdmVzIGEgbG9nIG1lc3Nh Z2Ugb3IgY29weSBvZiB0aGUNCnBhY2tldCB3aGVuZXZlciBhbm90aGVyIGRv bWFpbiBhdHRlbXB0cyB0byBzZW5kIGEgVENQIHBhY2tldCBjb250YWluZyBh IA0KU1lOLg0KXGVuZHtpdGVtaXplfQ0KT24gdGhlIHJlY2l2ZSBzaWRlLCB0 aGUgaHlwZXJ2aXNvcidzIHJvbGUgaXMgcmVsYXRpdmVseSBzdHJhaWdodGZv cndhcmQ6DQpvbmNlIGEgcGFja2V0IGlzIHJlY2VpdmVkLCBpdCBqdXN0IG5l ZWRzIHRvIGRldGVybWluZSB0aGUgdmlydHVhbCBpbnRlcmZhY2UocykNCnRv IHdoaWNoIGl0IG11c3QgYmUgZGVsaXZlcmVkIGFuZCBkZWxpdmVyIGl0IHZp YSBwYWdlLWZsaXBwaW5nLiANCg0KDQpcc2VjdGlvbntEYXRhIFRyYW5zZmVy fQ0KDQpFYWNoIHZpcnR1YWwgaW50ZXJmYWNlIHVzZXMgdHdvIGBgZGVzY3Jp cHRvciByaW5ncycnLCBvbmUgZm9yIHRyYW5zbWl0LA0KdGhlIG90aGVyIGZv ciByZWNlaXZlLiBFYWNoIGRlc2NyaXB0b3IgaWRlbnRpZmllcyBhIGJsb2Nr IG9mIGNvbnRpZ3VvdXMNCnBoeXNpY2FsIG1lbW9yeSBhbGxvY2F0ZWQgdG8g dGhlIGRvbWFpbi4gVGhlcmUgYXJlIGZvdXIgY2FzZXM6DQoNClxiZWdpbntp dGVtaXplfQ0KDQpcaXRlbSBUaGUgdHJhbnNtaXQgcmluZyBjYXJyaWVzIHBh Y2tldHMgdG8gdHJhbnNtaXQgZnJvbSB0aGUgZG9tYWluIHRvIHRoZQ0KaHlw ZXJ2aXNvci4NCg0KXGl0ZW0gVGhlIHJldHVybiBwYXRoIG9mIHRoZSB0cmFu c21pdCByaW5nIGNhcnJpZXMgYGBlbXB0eScnIGRlc2NyaXB0b3JzDQppbmRp Y2F0aW5nIHRoYXQgdGhlIGNvbnRlbnRzIGhhdmUgYmVlbiB0cmFuc21pdHRl ZCBhbmQgdGhlIG1lbW9yeSBjYW4gYmUNCnJlLXVzZWQuDQoNClxpdGVtIFRo ZSByZWNlaXZlIHJpbmcgY2FycmllcyBlbXB0eSBkZXNjcmlwdG9ycyBmcm9t IHRoZSBkb21haW4gdG8gdGhlIA0KaHlwZXJ2aXNvcjsgdGhlc2UgcHJvdmlk ZSBzdG9yYWdlIHNwYWNlIGZvciB0aGF0IGRvbWFpbidzIHJlY2VpdmVkIHBh Y2tldHMuDQoNClxpdGVtIFRoZSByZXR1cm4gcGF0aCBvZiB0aGUgcmVjZWl2 ZSByaW5nIGNhcnJpZXMgcGFja2V0cyB0aGF0IGhhdmUgYmVlbg0KcmVjZWl2 ZWQuDQpcZW5ke2l0ZW1pemV9DQoNClJlYWwgcGh5c2ljYWwgYWRkcmVzc2Vz IGFyZSB1c2VkIHRocm91Z2hvdXQsIHdpdGggdGhlIGRvbWFpbiBwZXJmb3Jt aW5nIA0KdHJhbnNsYXRpb24gZnJvbSBwc2V1ZG8tcGh5c2ljYWwgYWRkcmVz c2VzIGlmIHRoYXQgaXMgbmVjZXNzYXJ5Lg0KDQpJZiBhIGRvbWFpbiBkb2Vz IG5vdCBrZWVwIGl0cyByZWNlaXZlIHJpbmcgc3RvY2tlZCB3aXRoIGVtcHR5 IGJ1ZmZlcnMgdGhlbiANCnBhY2tldHMgZGVzdGluZWQgdG8gaXQgbWF5IGJl IGRyb3BwZWQuIFRoaXMgcHJvdmlkZXMgc29tZSBkZWZlbnNlIGFnYWluc3Qg DQpyZWNlaXZlci1saXZlbG9jayBwcm9ibGVtcyBiZWNhdXNlIGFuIG92ZXJs b2FkIGRvbWFpbiB3aWxsIGNlYXNlIHRvIHJlY2VpdmUNCmZ1cnRoZXIgZGF0 YS4gU2ltaWxhcmx5LCBvbiB0aGUgdHJhbnNtaXQgcGF0aCwgaXQgcHJvdmlk ZXMgdGhlIGFwcGxpY2F0aW9uDQp3aXRoIGZlZWRiYWNrIG9uIHRoZSByYXRl IGF0IHdoaWNoIHBhY2tldHMgYXJlIGFibGUgdG8gbGVhdmUgdGhlIHN5c3Rl bS4NCg0KU3luY2hyb25pemF0aW9uIGJldHdlZW4gdGhlIGh5cGVydmlzb3Ig YW5kIHRoZSBkb21haW4gaXMgYWNoaWV2ZWQgdXNpbmcgDQpjb3VudGVycyBo ZWxkIGluIHNoYXJlZCBtZW1vcnkgdGhhdCBpcyBhY2Nlc3NpYmxlIHRvIGJv dGguIEVhY2ggcmluZyBoYXMNCmFzc29jaWF0ZWQgcHJvZHVjZXIgYW5kIGNv bnN1bWVyIGluZGljZXMgaW5kaWNhdGluZyB0aGUgYXJlYSBpbiB0aGUgcmlu Zw0KdGhhdCBob2xkcyBkZXNjcmlwdG9ycyB0aGF0IGNvbnRhaW4gZGF0YS4g QWZ0ZXIgcmVjZWl2aW5nIHtcaXQgbn0gcGFja2V0cw0Kb3Ige1x0IG5hbm9z ZWNvbmRzfSBhZnRlciByZWNlaXZpbmcgdGhlIGZpcnN0IHBhY2tldCwgdGhl IGh5cGVydmlzb3Igc2VuZHMNCmFuIGV2ZW50IHRvIHRoZSBkb21haW4uIA0K DQpcY2hhcHRlcntCbG9jayBJL099DQoNClxzZWN0aW9ue1ZpcnR1YWwgQmxv Y2sgRGV2aWNlcyAoVkJEcyl9DQoNCkFsbCBndWVzdCBPUyBkaXNrIGFjY2Vz cyBnb2VzIHRocm91Z2ggdGhlIFZCRCBpbnRlcmZhY2UuIFRoZSBWQkQgaW50 ZXJmYWNlDQpwcm92aWRlcyB0aGUgYWRtaW5pc3RyYXRvciB3aXRoIHRoZSBh YmlsaXR5IHRvIHNlbGVjdGl2ZWx5IGdyYW50IGRvbWFpbnMgDQphY2Nlc3Mg dG8gcG9ydGlvbnMgb2YgYmxvY2sgc3RvcmFnZSBkZXZpY2VzIHZpc2libGUg dG8gdGhlIHN5c3RlbS4NCg0KQSBWQkQgY2FuIGFsc28gYmUgY29tcHJpc2Vk IG9mIGEgc2V0IG9mIGV4dGVudHMgZnJvbSBtdWx0aXBsZSBzdG9yYWdlIGRl dmljZXMuDQpUaGlzIHByb3ZpZGVzIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdHkg YXMgYSBjb25jYXRlbmF0ZWQgZGlzayBkcml2ZXIuDQoNClxzZWN0aW9ue1Zp cnR1YWwgRGlza3MgKFZEcyl9DQoNClZEcyBhcmUgYW4gYWJzdHJhY3Rpb24g YnVpbHQgb24gdG9wIG9mIHRoZSBWQkQgaW50ZXJmYWNlLiBPbmUgY2FuIHJl c2VydmUgZGlzaw0Kc3BhY2UgZm9yIHVzZSBieSB0aGUgVkQgbGF5ZXIuIFRo aXMgc3BhY2UgaXMgdGhlbiBtYW5hZ2VkIGFzIGEgcG9vbCBvZiBmcmVlIGV4 dGVudHMuDQpUaGUgVkQgdG9vbHMgY2FuIGF1dG9tYXRpY2FsbHkgYWxsb2Nh dGUgY29sbGVjdGlvbnMgb2YgZXh0ZW50cyBmcm9tIHRoaXMgcG9vbCB0bw0K Y3JlYXRlIGBgdmlydHVhbCBkaXNrcycnIG9uIGRlbWFuZC4gDQoNClxzdWJz ZWN0aW9ue1ZpcnR1YWwgRGlzayBNYW5hZ2VtZW50fQ0KVGhlIFZEIG1hbmFn ZW1lbnQgY29kZSBjb25zaXN0cyBvZiBhIHNldCBvZiBweXRob24gbGlicmFy aWVzLiBJdCBjYW4gdGhlcmVmb3JlDQpiZSBhY2Nlc3NlZCBieSBjdXN0b20g c2NyaXB0cyBhcyB3ZWxsIGFzIHRoZSBjb252ZW5pZW5jZSBzY3JpcHRzIHBy b3ZpZGVkLiBUaGUNClZEIGRhdGFiYXNlIGlzIGEgU1FMaXRlIGRhdGFiYXNl IGluIC92YXIvc3Bvb2wveGVuXF92ZGlzay5zcWxpdGUuDQoNClRoZSBWRCBz Y3JpcHRzIGFuZCBnZW5lcmFsIFZEIHVzYWdlIGFyZSBkb2N1bWVudGVkIGlu IHRoZSBWQkQtSE9XVE8udHh0Lg0KDQpcc3Vic2VjdGlvbntEYXRhIFRyYW5z ZmVyfQ0KRG9tYWlucyB3aGljaCBoYXZlIGJlZW4gZ3JhbnRlZCBhY2Nlc3Mg dG8gYSBsb2dpY2FsIGJsb2NrIGRldmljZSBhcmUgcGVybWl0dGVkDQp0byBy ZWFkIGFuZCB3cml0ZSBpdCBkaXJlY3RseSB0aHJvdWdoIHRoZSBoeXBlcnZp c29yLCByYXRoZXIgdGhhbiByZXF1aXJpbmcNCntcaXQgZG9tYWluMH0gdG8g bWVkaWF0ZSBldmVyeSBkYXRhIGFjY2Vzcy4gDQoNCkluIG92ZXJ2aWV3LCB0 aGUgc2FtZSBzdHlsZSBvZiBkZXNjcmlwdG9yLXJpbmcgdGhhdCBpcyB1c2Vk IGZvciBuZXR3b3JrDQpwYWNrZXRzIGlzIHVzZWQgaGVyZS4gRWFjaCBkb21h aW4gaGFzIG9uZSByaW5nIHRoYXQgY2FycmllcyBvcGVyYXRpb24gcmVxdWVz dHMgdG8gdGhlIA0KaHlwZXJ2aXNvciBhbmQgY2FycmllcyB0aGUgcmVzdWx0 cyBiYWNrIGFnYWluLiANCg0KUmF0aGVyIHRoYW4gY29weWluZyBkYXRhIGlu IGFuZCBvdXQgb2YgdGhlIGh5cGVydmlzb3IsIHdlIHVzZSBwYWdlIHBpbm5p bmcgdG8NCmVuYWJsZSBETUEgdHJhbnNmZXJzIGRpcmVjdGx5IGJldHdlZW4g dGhlIHBoeXNpY2FsIGRldmljZSBhbmQgdGhlIGRvbWFpbidzIA0KYnVmZmVy cy4gRGlzayByZWFkIG9wZXJhdGlvbnMgYXJlIHN0cmFpZ2h0Zm9yd2FyZDsg dGhlIGh5cGVydmlzb3IganVzdCBuZWVkcw0KdG8ga25vdyB3aGljaCBwYWdl cyBoYXZlIHBlbmRpbmcgRE1BIHRyYW5zZmVycywgYW5kIHByZXZlbnQgdGhl IGd1ZXN0IE9TIGZyb20NCmdpdmluZyB0aGUgcGFnZSBiYWNrIHRvIHRoZSBo eXBlcnZpc29yLCBvciB0byB1c2UgdGhlbSBmb3Igc3RvcmluZyBwYWdlIHRh Ymxlcy4NCg0KJWJsb2NrIEFQSSBoZXJlIA0KDQpcY2hhcHRlcntQcml2aWxl Z2VkIG9wZXJhdGlvbnN9DQp7XGl0IERvbWFpbjB9IGlzIHJlc3BvbnNpYmxl IGZvciBidWlsZGluZyBhbGwgb3RoZXIgZG9tYWlucyBvbiB0aGUgc2VydmVy DQphbmQgcHJvdmlkaW5nIGNvbnRyb2wgaW50ZXJmYWNlcyBmb3IgbWFuYWdp bmcgc2NoZWR1bGluZywgbmV0d29ya2luZywgYW5kDQpibG9ja3MuDQoNCg0K XGNoYXB0ZXJ7SHlwZXJ2aXNvciBjYWxsc30NCg0KXHNlY3Rpb257IHNldFxf dHJhcFxfdGFibGUodHJhcFxfaW5mb1xfdCAqdGFibGUpfSANCg0KSW5zdGFs bCB0cmFwIGhhbmRsZXIgdGFibGUuDQoNClxzZWN0aW9ueyBtbXVcX3VwZGF0 ZShtbXVcX3VwZGF0ZVxfdCAqcmVxLCBpbnQgY291bnQpfSANClVwZGF0ZSB0 aGUgcGFnZSB0YWJsZSBmb3IgdGhlIGRvbWFpbi4gVXBkYXRlcyBjYW4gYmUg YmF0Y2hlZC4NClRoZSB1cGRhdGUgdHlwZXMgYXJlOiANCg0Ke1xpdCBNTVVc X05PUk1BTFxfUFRcX1VQREFURX06DQoNCntcaXQgTU1VXF9VTkNIRUNLRURc X1BUXF9VUERBVEV9Og0KDQp7XGl0IE1NVVxfTUFDSFBIWVNcX1VQREFURX06 DQoNCntcaXQgTU1VXF9FWFRFTkRFRFxfQ09NTUFORH06DQoNClxzZWN0aW9u eyBjb25zb2xlXF93cml0ZShjb25zdCBjaGFyICpzdHIsIGludCBjb3VudCl9 DQpPdXRwdXQgYnVmZmVyIHN0ciB0byB0aGUgY29uc29sZS4NCg0KXHNlY3Rp b257IHNldFxfZ2R0KHVuc2lnbmVkIGxvbmcgKmZyYW1lXF9saXN0LCBpbnQg ZW50cmllcyl9IA0KU2V0IHRoZSBnbG9iYWwgZGVzY3JpcHRvciB0YWJsZSAt IHZpcnR1YWxpemF0aW9uIGZvciBsZ2R0Lg0KDQpcc2VjdGlvbnsgc3RhY2tc X3N3aXRjaCh1bnNpZ25lZCBsb25nIHNzLCB1bnNpZ25lZCBsb25nIGVzcCl9 IA0KUmVxdWVzdCBjb250ZXh0IHN3aXRjaCBmcm9tIGh5cGVydmlzb3IuDQoN ClxzZWN0aW9ueyBzZXRcX2NhbGxiYWNrcyh1bnNpZ25lZCBsb25nIGV2ZW50 XF9zZWxlY3RvciwgdW5zaWduZWQgbG9uZyBldmVudFxfYWRkcmVzcywNCiAg ICAJCQl1bnNpZ25lZCBsb25nIGZhaWxzYWZlXF9zZWxlY3RvciwgdW5zaWdu ZWQgbG9uZyBmYWlsc2FmZVxfYWRkcmVzcykgfSANCiBSZWdpc3RlciBPUyBl dmVudCBwcm9jZXNzaW5nIHJvdXRpbmUuIEluIExpbnV4IGJvdGggdGhlIGV2 ZW50XF9zZWxlY3RvciBhbmQgDQpmYWlsc2FmZVxfc2VsZWN0b3IgYXJlIHRo ZSBrZXJuZWwncyBDUy4gVGhlIHZhbHVlIGV2ZW50XF9hZGRyZXNzIHNwZWNp ZmllcyB0aGUgYWRkcmVzcyBmb3INCmFuIGludGVycnVwdCBoYW5kbGVyIGRp c3BhdGNoIHJvdXRpbmUgYW5kIGZhaWxzYWZlXF9hZGRyZXNzIHNwZWNpZmll cyBhIGhhbmRsZXIgZm9yIA0KYXBwbGljYXRpb24gZmF1bHRzLg0KDQpcc2Vj dGlvbnsgbmV0XF9pb1xfb3AobmV0b3BcX3QgKm9wKX0gIA0KTm90aWZ5IGh5 cGVydmlzb3Igb2YgdXBkYXRlcyB0byB0cmFuc21pdCBhbmQvb3IgcmVjZWl2 ZSBkZXNjcmlwdG9yIHJpbmdzLg0KDQpcc2VjdGlvbnsgZnB1XF90YXNrc3dp dGNoKHZvaWQpfSANCk5vdGlmeSBoeXBlcnZpc29yIHRoYXQgZnB1IHJlZ2lz dGVycyBuZWVkZWQgdG8gYmUgc2F2ZSBvbiBjb250ZXh0IHN3aXRjaC4NCg0K XHNlY3Rpb257IHNjaGVkXF9vcCh1bnNpZ25lZCBsb25nIG9wKX0gDQpSZXF1 ZXN0IHNjaGVkdWxpbmcgb3BlcmF0aW9uIGZyb20gaHlwZXJ2aXNvci4gVGhl IG9wdGlvbnMgYXJlOiB5aWVsZCwgc3RvcCwgYW5kIGV4aXQuDQoNClxzZWN0 aW9ueyBkb20wXF9vcChkb20wXF9vcFxfdCAqb3ApfSANCkFkbWluaXN0cmF0 aXZlIGRvbWFpbiBvcGVyYXRpb25zIGZvciBkb21haW4gbWFuYWdlbWVudC4g VGhlIG9wdGlvbnMgYXJlOg0KDQp7XGl0IERPTTBcX0NSRUFURURPTUFJTn06 IGNyZWF0ZSBuZXcgZG9tYWluLCBzcGVjaWZ5aW5nIHRoZSBuYW1lIGFuZCBt ZW1vcnkgdXNhZ2UNCmluIGtpbG9ieXRlcy4NCg0Ke1xpdCBET00wXF9TVEFS VERPTUFJTn06IG1ha2UgZG9tYWluIHNjaGVkdWxhYmxlDQoNCntcaXQgRE9N MFxfU1RPUERPTUFJTn06IG1hcmsgZG9tYWluIGFzIHVuc2NoZWR1bGFibGUN Cg0Ke1xpdCBET00wXF9ERVNUUk9ZRE9NQUlOfTogZGVhbGxvY2F0ZSByZXNv dXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBkb21haW4NCg0Ke1xpdCBET00w XF9HRVRNRU1MSVNUfTogZ2V0IGxpc3Qgb2YgcGFnZXMgdXNlZCBieSB0aGUg ZG9tYWluDQoNCntcaXQgRE9NMFxfQlVJTERET01BSU59OiBkbyBmaW5hbCBn dWVzdCBPUyBzZXR1cCBmb3IgZG9tYWluDQoNCntcaXQgRE9NMFxfQlZUQ1RM fTogYWRqdXN0IHNjaGVkdWxlciBjb250ZXh0IHN3aXRjaCB0aW1lDQoNCntc aXQgRE9NMFxfQURKVVNURE9NfTogYWRqdXN0IHNjaGVkdWxpbmcgcHJpb3Jp dGllcyBmb3IgZG9tYWluDQoNCntcaXQgRE9NMFxfR0VURE9NQUlORk99OiBn ZXQgc3RhdGlzdGljcyBhYm91dCB0aGUgZG9tYWluDQoNCntcaXQgRE9NMFxf SU9QTH06DQoNCntcaXQgRE9NMFxfTVNSfToNCg0Ke1xpdCBET00wXF9ERUJV R306DQoNCntcaXQgRE9NMFxfU0VUVElNRX06IHNldCBzeXN0ZW0gdGltZQ0K DQp7XGl0IERPTU9cX1JFQURDT05TT0xFfTogcmVhZCBjb25zb2xlIGNvbnRl bnQgZnJvbSBoeXBlcnZpc29yIGJ1ZmZlciByaW5nDQoNCntcaXQgRE9NT1xf UElOQ1BVRE9NQUlOfTogcGluIGRvbWFpbiB0byBhIHBhcnRpY3VsYXIgQ1BV DQoNCg0KXHNlY3Rpb257bmV0d29ya1xfb3AobmV0d29ya1xfb3BcX3QgKm9w KX0gDQp1cGRhdGUgbmV0d29yayBydWxlc2V0DQoNClxzZWN0aW9ueyBibG9j a1xfaW9cX29wKGJsb2NrXF9pb1xfb3BcX3QgKm9wKX0NCg0KXHNlY3Rpb257 IHNldFxfZGVidWdyZWcoaW50IHJlZywgdW5zaWduZWQgbG9uZyB2YWx1ZSl9 DQpzZXQgZGVidWcgcmVnaXN0ZXIgcmVnIHRvIHZhbHVlDQoNClxzZWN0aW9u eyBnZXRcX2RlYnVncmVnKGludCByZWcpfQ0KIGdldCB0aGUgZGVidWcgcmVn aXN0ZXIgcmVnDQoNClxzZWN0aW9ueyB1cGRhdGVcX2Rlc2NyaXB0b3IodW5z aWduZWQgbG9uZyBwYSwgdW5zaWduZWQgbG9uZyB3b3JkMSwgdW5zaWduZWQg bG9uZyB3b3JkMil9IA0KDQpcc2VjdGlvbnsgc2V0XF9mYXN0XF90cmFwKGlu dCBpZHgpfQ0KIGluc3RhbGwgdHJhcHMgdG8gYWxsb3cgZ3Vlc3QgT1MgdG8g YnlwYXNzIGh5cGVydmlzb3INCg0KXHNlY3Rpb257IGRvbVxfbWVtXF9vcChk b21cX21lbVxfb3BcX3QgKm9wKX0NCiBpbmNyZWFzZSBvciBkZWNyZWFzZSBt ZW1vcnkgcmVzZXJ2YXRpb25zIGZvciBndWVzdCBPUw0KDQpcc2VjdGlvbnsg bXVsdGljYWxsKG11bHRpY2FsbFxfZW50cnlcX3QgKmNhbGxcX2xpc3QsIGlu dCBuclxfY2FsbHMpfQ0KIGV4ZWN1dGUgYSBzZXJpZXMgb2YgaHlwZXJ2aXNv ciBjYWxscw0KDQpcc2VjdGlvbnsga2JkXF9vcCh1bnNpZ25lZCBjaGFyIG9w LCB1bnNpZ25lZCBjaGFyIHZhbCl9DQoNClxzZWN0aW9ue3VwZGF0ZVxfdmFc X21hcHBpbmcodW5zaWduZWQgbG9uZyBwYWdlXF9uciwgdW5zaWduZWQgbG9u ZyB2YWwsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpfQ0KDQpcc2VjdGlvbnsgZXZl bnRcX2NoYW5uZWxcX29wKHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGlu dCBpZCl9IA0KaW50ZXItZG9tYWluIGV2ZW50LWNoYW5uZWwgbWFuYWdlbWVu dCwgb3B0aW9ucyBhcmU6IG9wZW4sIGNsb3NlLCBzZW5kLCBhbmQgc3RhdHVz Lg0KDQpcZW5ke2RvY3VtZW50fQ0K --0-932234660-1074994030=:81692-- ------------------------------------------------------- The SF.Net email is sponsored by EclipseCon 2004 Premiere Conference on Open Tools Development and Integration See the breadth of Eclipse activity. February 3-5 in Anaheim, CA. http://www.eclipsecon.org/osdn