From: Subject: RE: [nfsv4] 4.1 client - LAYOUTCOMMIT & close Date: Thu, 8 Jul 2010 16:30:48 -0400 Message-ID: References: <6206CE0E-0A32-46A7-B648-3FCC12ED1961@netapp.com> <0E2B1FE3-3B42-4BF2-BECE-A611DADF3983@netapp.com> <1278448834.16176.5.camel@heimdal.trondhjem.org> <4C346D80.8010405@panasas.com> <1278507985.2804.30.camel@heimdal.trondhjem.org> <1278508696.2804.35.camel@heimdal.trondhjem.org> <4C348679.6010507@panasas.com> <1278511416.2804.52.camel@heimdal.trondhjem.org> <1278536484.12889.4.camel@heimdal.trondhjem.org> <1278543175.15524.2.camel@heimdal.trondhjem.org> <1278544149.15524.15.camel@heimdal.trondhjem.org> <1278544497.15524.17.camel@heimdal.trondhje! m .org> < 4C35F5E3.3000604@panasas.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Cc: , , , , , , To: , Return-path: Received: from mexforward.lss.emc.com ([128.222.32.20]:55435 "EHLO mexforward.lss.emc.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753208Ab0GHUiH (ORCPT ); Thu, 8 Jul 2010 16:38:07 -0400 In-Reply-To: <4C35F5E3.3000604@panasas.com> Sender: linux-nfs-owner@vger.kernel.org List-ID: PiBOb3RlIHRoYXQgYSBMQVlPVVRSRVRVUk4gY2FuIGFycml2ZSB3aXRob3V0IExBWU9VVENPTU1J VCBpZiB0aGUgY2xpZW50IGhhc24ndA0KPiB3cml0dGVuIHRvIHRoZSBmaWxlLiAgSSdtIG5vdCBz dXJlIHdoYXQgYWJvdXQgdGhlIGJsb2NrcyBjYXNlIHRob3VnaCwgZG8geW91DQo+IGltcGxpY2l0 bHkgZnJlZSB1cCBhbnkgcHJvdmlzaW9uYWxseSBhbGxvY2F0ZWQgYmxvY2tzIHRoYXQgdGhlIGNs aWVudCBoYWQgbm90DQo+IGV4cGxpY2l0bHkgY29tbWl0dGVkIHVzaW5nIExBWU9VVENPTU1JVD8N Cg0KSW4gcHJpbmNpcGxlLCB5ZXMgYXMgdGhlIGJsb2NrcyBhcmUgbm8gbG9uZ2VyIHByb21pc2Vk IHRvIHRoZSBjbGllbnQsIGFsdGhvdWdoDQpsYXp5IGV2YWx1YXRpb24gb2YgdGhpcyBpcyBhbiBv YnZpb3VzIG9wdGltaXphdGlvbi4NCg0KPiA+PiAiVXBvbiByZWNlaXZpbmcgYW4gT1BFTiwgTE9D SyBvciBhIFdBTlRfREVMRUdBVElPTiwgdGhlIHNlcnZlciBtdXN0DQo+ID4+IGNoZWNrIHRoYXQg aXQgaGFzIHJlY2VpdmVkIExBWU9VVENPTU1JVHMgZnJvbSBhbnkgb3RoZXIgY2xpZW50cyB0aGF0 IG1heQ0KPiA+PiBoYXZlIHRoZSBmaWxlIG9wZW4gZm9yIHdyaXRpbmcuIElmIGl0IGhhc24ndCwg dGhlbiBpdCBNVVNUIHRha2Ugc29tZQ0KPiA+PiBhY3Rpb24gdG8gZW5zdXJlIHRoYXQgYW55IGZp bGUgZGF0YSBjaGFuZ2VzIGFyZSBhY2NvbXBhbmllZCBieSBhIGNoYW5nZQ0KPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4gcG90ZW50aWFsbHkgdmlzaWJsZQ0KPiA+PiBhdHRyaWJ1dGUg dXBkYXRlLiINCj4gDQo+IFRoYXQgc2hvdWxkIGJlIE9LIGFzIGxvbmcgYXMgaXQncyBub3QgZm9y IGV2ZXJ5IEdFVEFUVFIgZm9yIHRoZSBjaGFuZ2UsIG10aW1lLA0KPiBvciBzaXplIGF0dHJpYnV0 ZXMuDQo+IA0KPiA+Pg0KPiA+PiBUaGVuIHlvdSBjYW4gYWRkIHRoZSBhYm92ZSBzdWdnZXN0aW9u IHdpdGhvdXQgdGhlIG9mZmVuZGluZyBjYXZlYXQuIE5vdGUNCj4gPj4gaG93ZXZlciB0aGF0IGl0 IGRvZXMgYnJlYWsgdGhlICJTSE9VTEQgTk9UIiBhZG1vbml0aW9uIGluIHNlY3Rpb24NCj4gPj4g MTguMzIuNC4NCj4gDQo+IEJldHRlciBiZSBzYWZlIHRoYW4gc29ycnkgaW4gdGhpcyByYXJlIGVy cm9yIGNhc2UuDQoNCkkgY29uY3VyIHdpdGggQmVubnkgb24gYm90aCBvZiB0aGUgYWJvdmUgLSBp biBlc3NlbmNlLCB0aGUgdW5yZWNvdmVyZWQgY2xpZW50IGZhaWx1cmUgaXMgYSByZWFzb24gdG8g cG90ZW50aWFsbHkgaWdub3JlIHRoZSAiU0hPVUxEIiAoc2VydmVyIGNhbid0IGtub3cgd2hldGhl ciBpdCBhY3R1YWxseSBpZ25vcmVkIHRoZSAiU0hPVUxEIiwgaGVuY2UgYmV0dGVyIHNhZmUgdGhh biBzb3JyeSkuICBXZSBwcm9iYWJseSBvdWdodCB0byBmaW5kIGEgc29tZXBsYWNlIGFwcHJvcHJp YXRlIHRvIGFkZCBhIHBhcmFncmFwaCBvciB0d28gZXhwbGFpbmluZyB0aGlzIGluIG9uZSBvZiB0 aGUgNC4yIGRvY3VtZW50cy4NCg0KVGhhbmtzLA0KLS1EYXZpZA0KDQoNCj4gLS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQmVubnkgSGFsZXZ5IFttYWlsdG86YmhhbGV2eS5saXN0 c0BnbWFpbC5jb21dIE9uIEJlaGFsZiBPZiBCZW5ueSBIYWxldnkNCj4gU2VudDogVGh1cnNkYXks IEp1bHkgMDgsIDIwMTAgMTI6MDAgUE0NCj4gVG86IFRyb25kIE15a2xlYnVzdA0KPiBDYzogQmxh Y2ssIERhdmlkOyBOb3ZlY2ssIERhdmlkOyBNdW50eiwgRGFuaWVsOyBsaW51eC1uZnNAdmdlci5r ZXJuZWwub3JnOyBnYXJ0aEBwYW5hc2FzLmNvbTsNCj4gd2VsY2hAcGFuYXNhcy5jb207IG5mc3Y0 QGlldGYub3JnOyBhbmRyb3NAbmV0YXBwLmNvbQ0KPiBTdWJqZWN0OiBSZTogW25mc3Y0XSA0LjEg Y2xpZW50IC0gTEFZT1VUQ09NTUlUICYgY2xvc2UNCj4gDQo+IE9uIEp1bC4gMDgsIDIwMTAsIDI6 MTQgKzAzMDAsIFRyb25kIE15a2xlYnVzdCA8dHJvbmQubXlrbGVidXN0QGZ5cy51aW8ubm8+IHdy b3RlOg0KPiA+IE9uIFdlZCwgMjAxMC0wNy0wNyBhdCAxOTowOSAtMDQwMCwgVHJvbmQgTXlrbGVi dXN0IHdyb3RlOg0KPiA+PiBPbiBXZWQsIDIwMTAtMDctMDcgYXQgMTg6NTIgLTA0MDAsIFRyb25k IE15a2xlYnVzdCB3cm90ZToNCj4gPj4+IE9uIFdlZCwgMjAxMC0wNy0wNyBhdCAxODo0NCAtMDQw MCwgZGF2aWQuYmxhY2tAZW1jLmNvbSB3cm90ZToNCj4gPj4+PiBMZXQgbWUgdHJ5IHRoaXMgLi4u DQo+ID4+Pj4NCj4gPj4+PiBBIGNvcnJlY3QgY2xpZW50IHdpbGwgYWx3YXlzIHNlbmQgTEFZT1VU Q09NTUlULg0KPiA+Pj4+IEFzc3VtZSB0aGF0IHRoZSBjbGllbnQgaXMgY29ycmVjdC4NCj4gPj4+ PiBIZW5jZSBpZiB0aGUgTEFZT1VUQ09NTUlUIGRvZXNuJ3QgYXJyaXZlLCBzb21ldGhpbmcncyBm YWlsZWQuDQo+ID4+Pj4NCj4gPj4+PiBJbXBvcnRhbnQgaW1wbGljYXRpb246IE5vIExBWU9VVENP TU1JVCBpcyBhbiBlcnJvci9mYWlsdXJlIGNhc2UuICBJdA0KPiA+Pj4+IGp1c3QgaGFzIHRvIHdv cms7IGl0IGRvZXNuJ3QgaGF2ZSB0byBiZSBmYXN0Lg0KPiA+Pj4+DQo+IA0KPiBOb3RlIHRoYXQg YSBMQVlPVVRSRVRVUk4gY2FuIGFycml2ZSB3aXRob3V0IExBWU9VVENPTU1JVCBpZiB0aGUgY2xp ZW50IGhhc24ndA0KPiB3cml0dGVuIHRvIHRoZSBmaWxlLiAgSSdtIG5vdCBzdXJlIHdoYXQgYWJv dXQgdGhlIGJsb2NrcyBjYXNlIHRob3VnaCwgZG8geW91DQo+IGltcGxpY2l0bHkgZnJlZSB1cCBh bnkgcHJvdmlzaW9uYWxseSBhbGxvY2F0ZWQgYmxvY2tzIHRoYXQgdGhlIGNsaWVudCBoYWQgbm90 DQo+IGV4cGxpY2l0bHkgY29tbWl0dGVkIHVzaW5nIExBWU9VVENPTU1JVD8NCj4gDQo+ID4+Pj4g U3VnZ2VzdGlvbjogSWYgYSBjbGllbnQgZGllcyB3aGlsZSBob2xkaW5nIHdyaXRlYWJsZSBsYXlv dXRzIHRoYXQgcGVybWl0DQo+ID4+Pj4gd3JpdGUtaW4tcGxhY2UsIGFuZCB0aGUgY2xpZW50IGRv ZXNuJ3QgcmVhcHBlYXIgb3IgZG9lc24ndCByZWNsYWltIHRob3NlDQo+ID4+Pj4gbGF5b3V0cywg dGhlbiB0aGUgc2VydmVyIHNob3VsZCBhc3N1bWUgdGhhdCB0aGUgZmlsZXMgaW52b2x2ZWQgd2Vy ZQ0KPiA+Pj4+IHdyaXR0ZW4gYmVmb3JlIHRoZSBjbGllbnQgZGllZCwgYW5kIHNldCB0aGUgZmls ZSBhdHRyaWJ1dGVzIGFjY29yZGluZ2x5DQo+ID4+Pj4gYXMgcGFydCBvZiBpbnRlcm5hbGx5IHJl Y2xhaW1pbmcgdGhlIGxheW91dCB0aGF0IHRoZSBjbGllbnQgaGFzDQo+ID4+Pj4gYWJhbmRvbmVk Lg0KPiANCj4gT2YgY291cnNlLiBUaGF0J3MgcGFydCBvZiB0aGUgc2VydmVyIHJlY292ZXJ5Lg0K PiANCj4gPj4+Pg0KPiA+Pj4+IENhdmVhdDogSXQgbWF5IHRha2UgYSB3aGlsZSBmb3IgdGhlIHNl cnZlciB0byBkZXRlcm1pbmUgdGhhdCB0aGUgY2xpZW50DQo+ID4+Pj4gaGFzIGFiYW5kb25lZCBh IGxheW91dC4NCj4gDQo+IFRoYXQncyB0d28gbGVhc2UgdGltZXMgYWZ0ZXIgYSByZXNwZWN0aXZl IENCX0xBWU9VVFJFQ0FMTC4NCj4gDQo+ID4+Pj4NCj4gPj4+PiBUaGlzIGNhbiByZXN1bHQgaW4g ZmFsc2UgcG9zaXRpdmVzIChmaWxlIGFwcGVhcnMgdG8gYmUgbW9kaWZpZWQgd2hlbiBpdA0KPiA+ Pj4+IHdhc24ndCkgYnV0IHdvbid0IHlpZWxkIGZhbHNlIG5lZ2F0aXZlcyAoZmlsZSBkb2VzIG5v dCBhcHBlYXIgdG8gYmUNCj4gPj4+PiBtb2RpZmllZCBldmVuIHRob3VnaCBpdCB3YXMgbW9kaWZp ZWQpLg0KPiA+Pj4NCj4gPj4+IE9LLi4uIFNvIHdlJ3JlIGdvaW5nIHRvIGhhdmUgdG8gdHVybiBv ZmYgY2xpZW50IHNpZGUgZmlsZSBjYWNoaW5nDQo+ID4+PiBlbnRpcmVseSBmb3IgcE5GUz8gSSBj YW4gZG8gdGhhdC4uLg0KPiA+Pj4NCj4gPj4+IFRoZSBhYm92ZSB3b24ndCB3b3JrLiBUaGluayBy ZWFkYWhlYWQuLi4NCj4gPj4NCj4gPj4gU28uLi4gV2hhdCBjYW4gd29yaywgaXMgaWYgeW91IG1v ZGlmeSBpdCB0byB3b3JrIGV4cGxpY2l0bHkgZm9yDQo+ID4+IGNsb3NlLXRvLW9wZW4NCj4gPj4N Cj4gPj4gIlVwb24gcmVjZWl2aW5nIGFuIE9QRU4sIExPQ0sgb3IgYSBXQU5UX0RFTEVHQVRJT04s IHRoZSBzZXJ2ZXIgbXVzdA0KPiA+PiBjaGVjayB0aGF0IGl0IGhhcyByZWNlaXZlZCBMQVlPVVRD T01NSVRzIGZyb20gYW55IG90aGVyIGNsaWVudHMgdGhhdCBtYXkNCj4gPj4gaGF2ZSB0aGUgZmls ZSBvcGVuIGZvciB3cml0aW5nLiBJZiBpdCBoYXNuJ3QsIHRoZW4gaXQgTVVTVCB0YWtlIHNvbWUN Cj4gPj4gYWN0aW9uIHRvIGVuc3VyZSB0aGF0IGFueSBmaWxlIGRhdGEgY2hhbmdlcyBhcmUgYWNj b21wYW5pZWQgYnkgYSBjaGFuZ2UNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICBeIHBv dGVudGlhbGx5IHZpc2libGUNCj4gPj4gYXR0cmlidXRlIHVwZGF0ZS4iDQo+IA0KPiBUaGF0IHNo b3VsZCBiZSBPSyBhcyBsb25nIGFzIGl0J3Mgbm90IGZvciBldmVyeSBHRVRBVFRSIGZvciB0aGUg Y2hhbmdlLCBtdGltZSwNCj4gb3Igc2l6ZSBhdHRyaWJ1dGVzLg0KPiANCj4gPj4NCj4gPj4gVGhl biB5b3UgY2FuIGFkZCB0aGUgYWJvdmUgc3VnZ2VzdGlvbiB3aXRob3V0IHRoZSBvZmZlbmRpbmcg Y2F2ZWF0LiBOb3RlDQo+ID4+IGhvd2V2ZXIgdGhhdCBpdCBkb2VzIGJyZWFrIHRoZSAiU0hPVUxE IE5PVCIgYWRtb25pdGlvbiBpbiBzZWN0aW9uDQo+ID4+IDE4LjMyLjQuDQo+IA0KPiBCZXR0ZXIg YmUgc2FmZSB0aGFuIHNvcnJ5IGluIHRoaXMgcmFyZSBlcnJvciBjYXNlLg0KPiANCj4gQmVubnkN Cj4gDQo+ID4+DQo+ID4+IFRyb25kDQo+ID4+DQo+ID4+DQo+ID4+PiBUcm9uZA0KPiA+Pj4NCj4g Pj4+PiBUaGFua3MsDQo+ID4+Pj4gLS1EYXZpZA0KPiA+Pj4+DQo+ID4+Pj4+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+ID4+Pj4+IEZyb206IG5mc3Y0LWJvdW5jZXNAaWV0Zi5vcmcgW21h aWx0bzpuZnN2NC1ib3VuY2VzQGlldGYub3JnXSBPbiBCZWhhbGYNCj4gPj4+PiBPZiBOb3ZlY2tf RGF2aWRAZW1jLmNvbQ0KPiA+Pj4+PiBTZW50OiBXZWRuZXNkYXksIEp1bHkgMDcsIDIwMTAgNjow NCBQTQ0KPiA+Pj4+PiBUbzogVHJvbmQuTXlrbGVidXN0QG5ldGFwcC5jb207IE11bnR6LCBEYW5p ZWwNCj4gPj4+Pj4gQ2M6IGxpbnV4LW5mc0B2Z2VyLmtlcm5lbC5vcmc7IGdhcnRoQHBhbmFzYXMu Y29tOyB3ZWxjaEBwYW5hc2FzLmNvbTsNCj4gPj4+PiBuZnN2NEBpZXRmLm9yZzsNCj4gPj4+Pj4g YW5kcm9zQG5ldGFwcC5jb207IGJoYWxldnlAcGFuYXNhcy5jb20NCj4gPj4+Pj4gU3ViamVjdDog UmU6IFtuZnN2NF0gNC4xIGNsaWVudCAtIExBWU9VVENPTU1JVCAmIGNsb3NlDQo+ID4+Pj4+DQo+ ID4+Pj4+PiBZZXMuIEkgd291bGQgYWdyZWUgdGhhdCB0aGUgY2xpZW50IGNhbm5vdCByZWx5IG9u IHRoZSB1cGRhdGVzIGJlaW5nDQo+ID4+Pj4gbWFkZQ0KPiA+Pj4+Pj4gdmlzaWJsZSBpZiBpdCBm YWlscyB0byBzZW5kIHRoZSBMQVlPVVRDT01NSVQuIE15IHBvaW50IHdhcyBzaW1wbHkNCj4gPj4+ PiB0aGF0IGENCj4gPj4+Pj4+IGNvbXBsaWFudCBzZXJ2ZXIgTVVTVCBhbHNvIGhhdmUgYSB2YWxp ZCBzdHJhdGVneSBmb3IgZGVhbGluZyB3aXRoDQo+ID4+Pj4gdGhlDQo+ID4+Pj4+PiBjYXNlIHdo ZXJlIHRoZSBjbGllbnQgZG9lc24ndCBzZW5kIGl0Lg0KPiA+Pj4+Pg0KPiA+Pj4+PiBTbyB5b3Ug YXJlIHNheWluZyB0aGUgdXBkYXRlcyAiTVVTVCBiZSBtYWRlIHZpc2libGUiIHRocm91Z2ggdGhl DQo+ID4+Pj4+IHNlcnZlcidzIHZhbGlkIHN0cmF0ZWd5LiAgSXMgdGhhdCByaWdodC4NCj4gPj4+ Pj4NCj4gPj4+Pj4gQW5kIHRoYXQgdGhlIGNsaWVudCBjYW5ub3QgcmVseSBvbiB0aGF0LiAgV2h5 IG5vdCwgaWYgdGhlIHNlcnZlciBtdXN0DQo+ID4+Pj4+IGhhdmUgYSB2YWxpZCBzdHJhdGVneS4N Cj4gPj4+Pj4NCj4gPj4+Pj4gSXMgdGhpcyBqdXN0IHBydWRlbnQgImJlbHQgYW5kIHN1c3BlbmRl cnMiIGRlc2lnbiBvciB3aGF0Pw0KPiA+Pj4+Pg0KPiA+Pj4+PiBJdCBzZWVtcyB0byBtZSB0aGF0 IGlmIG9uZSBzaWRlIGhlcmUgaXMgTVVTVCAoYW5kIHRoZSBzcGVjIG5lZWRzIHRvIGJlDQo+ID4+ Pj4+IGNsZWFyZXIgYWJvdXQgd2hhdCBtaWdodCBvciBtaWdodCBub3QgY29uc3RpdHV0ZSBhIHZh bGlkIHN0cmF0ZWd5KSwNCj4gPj4+PiB0aGVuDQo+ID4+Pj4+IHRoZSBvdGhlciBzaWRlIHNob3Vs ZCBiZSBTSE9VTEQuDQo+ID4+Pj4+DQo+ID4+Pj4+IElmIGJvdGggc2lkZXMgYXJlICJNVVNUIiwg dGhlbiBpZiB0aGluZ3MgZG9uJ3Qgd29yayBvdXQgdGhlbiB0aGUNCj4gPj4+PiBjbGllbnQNCj4g Pj4+Pj4gYW5kIHNlcnZlciBjYW4gZXF1YWxseSBwb2ludCB0byBvbmUgYW5vdGhlciBhbmQgc2F5 ICJJdCdzIGhpcyBmYXVsdCIuDQo+ID4+Pj4+DQo+ID4+Pj4+IEFtIEkgbWlzc2luZyBzb21ldGhp bmcgaGVyZT8NCj4gPj4+Pj4NCj4gPj4+Pj4NCj4gPj4+Pj4NCj4gPj4+Pj4gLS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS0NCj4gPj4+Pj4gRnJvbTogbmZzdjQtYm91bmNlc0BpZXRmLm9yZyBbbWFp bHRvOm5mc3Y0LWJvdW5jZXNAaWV0Zi5vcmddIE9uIEJlaGFsZg0KPiA+Pj4+PiBPZiBUcm9uZCBN eWtsZWJ1c3QNCj4gPj4+Pj4gU2VudDogV2VkbmVzZGF5LCBKdWx5IDA3LCAyMDEwIDU6MDEgUE0N Cj4gPj4+Pj4gVG86IE11bnR6LCBEYW5pZWwNCj4gPj4+Pj4gQ2M6IGxpbnV4LW5mc0B2Z2VyLmtl cm5lbC5vcmc7IGdhcnRoQHBhbmFzYXMuY29tOyB3ZWxjaEBwYW5hc2FzLmNvbTsNCj4gPj4+Pj4g bmZzdjRAaWV0Zi5vcmc7IGFuZHJvc0BuZXRhcHAuY29tOyBiaGFsZXZ5QHBhbmFzYXMuY29tDQo+ ID4+Pj4+IFN1YmplY3Q6IFJlOiBbbmZzdjRdIDQuMSBjbGllbnQgLSBMQVlPVVRDT01NSVQgJiBj bG9zZQ0KPiA+Pj4+Pg0KPiA+Pj4+PiBPbiBXZWQsIDIwMTAtMDctMDcgYXQgMTY6MzkgLTA0MDAs IERhbmllbC5NdW50ekBlbWMuY29tIHdyb3RlOg0KPiA+Pj4+Pj4gVG8gYnJpbmcgdGhpcyBkaXNj dXNzaW9uIGZ1bGwgY2lyY2xlLCBzaW5jZSB3ZSBhZ3JlZSB0aGF0IGENCj4gPj4+PiBjb21wbGlh bnQNCj4gPj4+Pj4+IHNlcnZlciBjYW4gaW1wbGVtZW50IGEgc2NoZW1lIHdoZXJlIHdyaXR0ZW4g ZGF0YSBkb2VzIG5vdCBiZWNvbWUNCj4gPj4+Pj4gdmlzaWJsZQ0KPiA+Pj4+Pj4gdW50aWwgYWZ0 ZXIgYSBMQVlPVVRDT01NSVQsIGRvIHdlIGFsc28gYWdyZWUgdGhhdCBMQVlPVVRDT01NSVQgaXMg YQ0KPiA+Pj4+Pj4gIk1VU1QiIGZyb20gYSBjb21wbGlhbnQgY2xpZW50IChpbmRlcGVuZGVudCBv ZiBsYXlvdXQgdHlwZSk/DQo+ID4+Pj4+DQo+ID4+Pj4+IFllcy4gSSB3b3VsZCBhZ3JlZSB0aGF0 IHRoZSBjbGllbnQgY2Fubm90IHJlbHkgb24gdGhlIHVwZGF0ZXMgYmVpbmcNCj4gPj4+PiBtYWRl DQo+ID4+Pj4+IHZpc2libGUgaWYgaXQgZmFpbHMgdG8gc2VuZCB0aGUgTEFZT1VUQ09NTUlULiBN eSBwb2ludCB3YXMgc2ltcGx5IHRoYXQNCj4gPj4+PiBhDQo+ID4+Pj4+IGNvbXBsaWFudCBzZXJ2 ZXIgTVVTVCBhbHNvIGhhdmUgYSB2YWxpZCBzdHJhdGVneSBmb3IgZGVhbGluZyB3aXRoIHRoZQ0K PiA+Pj4+PiBjYXNlIHdoZXJlIHRoZSBjbGllbnQgZG9lc24ndCBzZW5kIGl0Lg0KPiA+Pj4+Pg0K PiA+Pj4+PiBDaGVlcnMNCj4gPj4+Pj4gICBUcm9uZA0KPiA+Pj4+Pg0KPiA+Pj4+Pj4gICAtRGFu DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+Pj4+ Pj4gRnJvbTogbmZzdjQtYm91bmNlc0BpZXRmLm9yZyBbbWFpbHRvOm5mc3Y0LWJvdW5jZXNAaWV0 Zi5vcmddDQo+ID4+Pj4+Pj4gT24gQmVoYWxmIE9mIFRyb25kIE15a2xlYnVzdA0KPiA+Pj4+Pj4+ IFNlbnQ6IFdlZG5lc2RheSwgSnVseSAwNywgMjAxMCA3OjA0IEFNDQo+ID4+Pj4+Pj4gVG86IEJl bm55IEhhbGV2eQ0KPiA+Pj4+Pj4+IENjOiBhbmRyb3NAbmV0YXBwLmNvbTsgbGludXgtbmZzQHZn ZXIua2VybmVsLm9yZzsgR2FydGgNCj4gPj4+Pj4+PiBHaWJzb247IEJyZW50IFdlbGNoOyBORlN2 NA0KPiA+Pj4+Pj4+IFN1YmplY3Q6IFJlOiBbbmZzdjRdIDQuMSBjbGllbnQgLSBMQVlPVVRDT01N SVQgJiBjbG9zZQ0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gT24gV2VkLCAyMDEwLTA3LTA3IGF0IDE2 OjUxICswMzAwLCBCZW5ueSBIYWxldnkgd3JvdGU6DQo+ID4+Pj4+Pj4+IE9uIEp1bC4gMDcsIDIw MTAsIDE2OjE4ICswMzAwLCBUcm9uZCBNeWtsZWJ1c3QNCj4gPj4+Pj4+PiA8VHJvbmQuTXlrbGVi dXN0QG5ldGFwcC5jb20+IHdyb3RlOg0KPiA+Pj4+Pj4+Pj4gT24gV2VkLCAyMDEwLTA3LTA3IGF0 IDA5OjA2IC0wNDAwLCBUcm9uZCBNeWtsZWJ1c3Qgd3JvdGU6DQo+ID4+Pj4+Pj4+Pj4gT24gV2Vk LCAyMDEwLTA3LTA3IGF0IDE1OjA1ICswMzAwLCBCZW5ueSBIYWxldnkgd3JvdGU6DQo+ID4+Pj4+ Pj4+Pj4+IE9uIEp1bC4gMDYsIDIwMTAsIDIzOjQwICswMzAwLCBUcm9uZCBNeWtsZWJ1c3QNCj4g Pj4+Pj4+PiA8dHJvbmQubXlrbGVidXN0QGZ5cy51aW8ubm8+IHdyb3RlOg0KPiA+Pj4+Pj4+Pj4+ Pj4gT24gVHVlLCAyMDEwLTA3LTA2IGF0IDE1OjIwIC0wNDAwLCBEYW5pZWwuTXVudHpAZW1jLmNv bQ0KPiA+Pj4+PiB3cm90ZToNCj4gPj4+Pj4+Pj4+Pj4+PiBUaGUgQ09NTUlUIHRvIHRoZSBEUywg dHRib21rLCBjb21taXRzIGRhdGEgb24gdGhlIERTLiBJDQo+ID4+Pj4gc2VlIGl0IGFzDQo+ID4+ Pj4+Pj4+Pj4+Pj4gb3J0aG9nb25hbCB0byB1cGRhdGluZyB0aGUgbWV0YWRhdGEgb24gdGhlIE1E UyAoYnV0DQo+ID4+Pj4gcGVyaGFwcyBJJ20gd3JvbmcpLg0KPiA+Pj4+Pj4+Pj4+Pj4+IEFzIHNq b3NoaUBibHVlYXJjIG1lbnRpb25lZCwgdGhlIExBWU9VVENPTU1JVCBwcm92aWRlcyBhDQo+ID4+ Pj4gc3luY2hyb25pemF0aW9uDQo+ID4+Pj4+Pj4+Pj4+Pj4gcG9pbnQsIHNvIGV2ZW4gaWYgdGhl IG5vbi1jbHVzdGVyZWQgc2VydmVyIGRvZXMgbm90IHdhbnQNCj4gPj4+PiB0byB1cGRhdGUNCj4g Pj4+Pj4+Pj4+Pj4+PiBtZXRhZGF0YSBvbiBldmVyeSBEUyBJL08sIHRoZSBMQVlPVVRDT01NSVQg Y291bGQgYWxzbyBiZSBhDQo+ID4+Pj4gdHJpZ2dlciB0bw0KPiA+Pj4+Pj4+Pj4+Pj4+IGV4ZWN1 dGUgd2hhdGV2ZXIgc3luY2hyb25pemF0aW9uIG1lY2hhbmlzbSB0aGUgaW1wbGVtZW50ZXINCj4g Pj4+PiB3aXNoZXMgdG8gcHV0DQo+ID4+Pj4+Pj4+Pj4+Pj4gaW4gdGhlIGNvbnRyb2wgcHJvdG9j b2wuDQo+ID4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4gQXMgZmFyIGFzIEknbSBhd2FyZSwg dGhlcmUgYXJlIG5vIGV4Y2VwdGlvbnMgaW4gUkZDNTY2MQ0KPiA+Pj4+IHRoYXQgd291bGQgYWxs b3cNCj4gPj4+Pj4+Pj4+Pj4+IHBORlMgc2VydmVycyB0byBicmVhayB0aGUgcnVsZSB0aGF0IGFu eSB2aXNpYmxlIGNoYW5nZSB0bw0KPiA+Pj4+IHRoZSBkYXRhIG11c3QNCj4gPj4+Pj4+Pj4+Pj4+ IGJlIGF0b21pY2FsbHkgYWNjb21wYW5pZWQgd2l0aCBhIGNoYW5nZSBhdHRyaWJ1dGUgdXBkYXRl Lg0KPiA+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4gVHJvbmQsIEkn bSBub3Qgc3VyZSBob3cgdGhpcyBydWxlIHlvdSBtZW50aW9uZWQgaXMNCj4gPj4+PiBzcGVjaWZp ZWQuDQo+ID4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+IFNlZSBtb3JlIGluIHNlY3Rpb24gMTIu NS40IGFuZCAxMi41LjQuMS4gTEFZT1VUQ09NTUlUIGFuZA0KPiA+Pj4+IGNoYW5nZS90aW1lX21v ZGlmeQ0KPiA+Pj4+Pj4+Pj4+PiBpbiBwYXJ0aWN1bGFyOg0KPiA+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+ Pj4+Pj4+PiAgICBGb3Igc29tZSBsYXlvdXQgcHJvdG9jb2xzLCB0aGUgc3RvcmFnZSBkZXZpY2Ug aXMgYWJsZSB0bw0KPiA+Pj4+IG5vdGlmeSB0aGUNCj4gPj4+Pj4+Pj4+Pj4gICAgbWV0YWRhdGEg c2VydmVyIG9mIHRoZSBvY2N1cnJlbmNlIG9mIGFuIEkvTzsgYXMgYSByZXN1bHQsDQo+ID4+Pj4g dGhlIGNoYW5nZQ0KPiA+Pj4+Pj4+Pj4+PiAgICBhbmQgdGltZV9tb2RpZnkgYXR0cmlidXRlcyBt YXkgYmUgdXBkYXRlZCBhdCB0aGUgbWV0YWRhdGENCj4gPj4+PiBzZXJ2ZXIuDQo+ID4+Pj4+Pj4+ Pj4+ICAgIEZvciBhIG1ldGFkYXRhIHNlcnZlciB0aGF0IGlzIGNhcGFibGUgb2YgbW9uaXRvcmlu Zw0KPiA+Pj4+IHVwZGF0ZXMgdG8gdGhlDQo+ID4+Pj4+Pj4+Pj4+ICAgIGNoYW5nZSBhbmQgdGlt ZV9tb2RpZnkgYXR0cmlidXRlcywgTEFZT1VUQ09NTUlUDQo+ID4+Pj4gcHJvY2Vzc2luZyBpcyBu b3QNCj4gPj4+Pj4+Pj4+Pj4gICAgcmVxdWlyZWQgdG8gdXBkYXRlIHRoZSBjaGFuZ2UgYXR0cmli dXRlLiAgSW4gdGhpcyBjYXNlLA0KPiA+Pj4+IHRoZSBtZXRhZGF0YQ0KPiA+Pj4+Pj4+Pj4+PiAg ICBzZXJ2ZXIgbXVzdCBlbnN1cmUgdGhhdCBubyBmdXJ0aGVyIHVwZGF0ZSB0byB0aGUgZGF0YSBo YXMNCj4gPj4+PiBvY2N1cnJlZA0KPiA+Pj4+Pj4+Pj4+PiAgICBzaW5jZSB0aGUgbGFzdCB1cGRh dGUgb2YgdGhlIGF0dHJpYnV0ZXM7IGZpbGUtYmFzZWQNCj4gPj4+PiBwcm90b2NvbHMgbWF5DQo+ ID4+Pj4+Pj4+Pj4+ICAgIGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIHRvIG1ha2UgdGhpcyBkZXRl cm1pbmF0aW9uIG9yIG1heQ0KPiA+Pj4+IHVwZGF0ZSB0aGUNCj4gPj4+Pj4+Pj4+Pj4gICAgY2hh bmdlIGF0dHJpYnV0ZSB1cG9uIGVhY2ggZmlsZSBtb2RpZmljYXRpb24uICBUaGlzIGFsc28NCj4g Pj4+PiBhcHBsaWVzIGZvcg0KPiA+Pj4+Pj4+Pj4+PiAgICB0aGUgdGltZV9tb2RpZnkgYXR0cmli dXRlLiAgSWYgdGhlIHNlcnZlciBpbXBsZW1lbnRhdGlvbg0KPiA+Pj4+IGlzIGFibGUgdG8NCj4g Pj4+Pj4+Pj4+Pj4gICAgZGV0ZXJtaW5lIHRoYXQgdGhlIGZpbGUgaGFzIG5vdCBiZWVuIG1vZGlm aWVkIHNpbmNlIHRoZQ0KPiA+Pj4+IGxhc3QNCj4gPj4+Pj4+Pj4+Pj4gICAgdGltZV9tb2RpZnkg dXBkYXRlLCB0aGUgc2VydmVyIG5lZWQgbm90IHVwZGF0ZQ0KPiA+Pj4+IHRpbWVfbW9kaWZ5IGF0 DQo+ID4+Pj4+Pj4+Pj4+ICAgIExBWU9VVENPTU1JVC4gIEF0IExBWU9VVENPTU1JVCBjb21wbGV0 aW9uLCB0aGUgdXBkYXRlZA0KPiA+Pj4+IGF0dHJpYnV0ZXMNCj4gPj4+Pj4+Pj4+Pj4gICAgc2hv dWxkIGJlIHZpc2libGUgaWYgdGhhdCBmaWxlIHdhcyBtb2RpZmllZCBzaW5jZSB0aGUNCj4gPj4+ PiBsYXRlc3QgcHJldmlvdXMNCj4gPj4+Pj4+Pj4+Pj4gICAgTEFZT1VUQ09NTUlUIG9yIExBWU9V VEdFVA0KPiA+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4gSSBrbm93LiBIb3dldmVyIHRoZSBhYm92 ZSBwYXJhZ3JhcGggZG9lcyBub3Qgc3RhdGUgdGhhdCB0aGUNCj4gPj4+PiBzZXJ2ZXINCj4gPj4+ Pj4+Pj4+PiBzaG91bGQgbWFrZSB0aG9zZSBjaGFuZ2VzIHZpc2libGUgdG8gY2xpZW50cyBvdGhl ciB0aGFuIHRoZQ0KPiA+Pj4+IG9uZSB0aGF0IGlzDQo+ID4+Pj4+Pj4+Pj4gd3JpdGluZy4NCj4g Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+IFNlY3Rpb24gMTguMzIuNCBzdGF0ZXMgdGhhdCB3cml0 ZXMgd2lsbCBjYXVzZSB0aGUNCj4gPj4+PiB0aW1lX21vZGlmaWVkIGFuZA0KPiA+Pj4+Pj4+Pj4+ IGNoYW5nZSBhdHRyaWJ1dGVzIHRvIGJlIHVwZGF0ZWQgKGlmIGFuZCBvbmx5IGlmIHRoZSBmaWxl IGRhdGENCj4gPj4+PiBpcw0KPiA+Pj4+Pj4+Pj4+IG1vZGlmaWVkKS4gU2V2ZXJhbCBvdGhlciBz ZWN0aW9ucyByZWx5IG9uIHRoaXMgYmVoYXZpb3VyLA0KPiA+Pj4+IGluY2x1ZGluZw0KPiA+Pj4+ Pj4+Pj4+IHNlY3Rpb24gMTAuMy4xLCBzZWN0aW9uIDExLjcuMi4yLCBhbmQgc2VjdGlvbiAxMS43 LjcuDQo+ID4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+PiBUaGUgb25seSAnc3BlY2lhbCBiZWhhdmlv dXInIHRoYXQgSSBzZWUgYWxsb3dlZCBmb3IgcE5GUyBpcw0KPiA+Pj4+IGluIHNlY3Rpb24NCj4g Pj4+Pj4+Pj4+PiAxMy4xMCwgd2hpY2ggc3RhdGVzIHRoYXQgY2xpZW50cyBjYW4ndCBleHBlY3Qg dG8gc2VlIGNoYW5nZXMNCj4gPj4+Pj4+Pj4+PiBpbW1lZGlhdGVseSwgYnV0IHRoYXQgdGhleSBt dXN0IGJlIGFibGUgdG8gZXhwZWN0DQo+ID4+Pj4gY2xvc2UtdG8tb3Blbg0KPiA+Pj4+Pj4+Pj4+ IHNlbWFudGljcyB0byB3b3JrLiBBZ2FpbiwgaWYgdGhpcyBpcyB0byBiZSB0aGUgY2FzZSwgdGhl biB0aGUNCj4gPj4+PiBzZXJ2ZXINCj4gPj4+Pj4+Pj4+PiBfbXVzdF8gYmUgYWJsZSB0byBkZWFs IHdpdGggdGhlIGNhc2Ugd2hlcmUgY2xpZW50IDEgZGllcw0KPiA+Pj4+IGJlZm9yZSBpdCBjYW4N Cj4gPj4+Pj4+Pj4+PiBpc3N1ZSB0aGUgTEFZT1VUQ09NTUlULg0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+ Pj4+PiBBZ3JlZWQuDQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pg0KPiA+ Pj4+Pj4+Pj4+Pj4gQXMgSSBzZWUgaXQsIGlmIHlvdXIgc2VydmVyIGFsbG93cyBvbmUgY2xpZW50 IHRvIHJlYWQgZGF0YQ0KPiA+Pj4+IHRoYXQgbWF5IGhhdmUNCj4gPj4+Pj4+Pj4+Pj4+IGJlZW4g bW9kaWZpZWQgYnkgYW5vdGhlciBjbGllbnQgdGhhdCBob2xkcyBhIFdSSVRFIGxheW91dA0KPiA+ Pj4+IGZvciB0aGF0IHJhbmdlDQo+ID4+Pj4+Pj4+Pj4+PiB0aGVuIChzaW5jZSB0aGF0IGlzIGEg dmlzaWJsZSBkYXRhIGNoYW5nZSkgaXQgc2hvdWxkDQo+ID4+Pj4gcHJvdmlkZSBhIGNoYW5nZQ0K PiA+Pj4+Pj4+Pj4+Pj4gYXR0cmlidXRlIHVwZGF0ZSBpcnJlc3BlY3RpdmUgb2Ygd2hldGhlciBv ciBub3QgYQ0KPiA+Pj4+IExBWU9VVENPTU1JVCBoYXMgYmVlbg0KPiA+Pj4+Pj4+Pj4+Pj4gc2Vu dC4NCj4gPj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4gdGhlIHJlcXVpcmVtZW50IGZvciB0aGUg c2VydmVyIGluIFdSSVRFJ3MgaW1wbGVtZW50YXRpb24NCj4gPj4+PiBzZWN0aW9uDQo+ID4+Pj4+ Pj4+Pj4+IGlzIHF1aXRlIHdlYWs6ICJJdCBpcyBhc3N1bWVkIHRoYXQgdGhlIGFjdCBvZiB3cml0 aW5nIGRhdGENCj4gPj4+PiB0byBhIGZpbGUgd2lsbA0KPiA+Pj4+Pj4+Pj4+PiBjYXVzZSB0aGUg dGltZV9tb2RpZmllZCBhbmQgY2hhbmdlIGF0dHJpYnV0ZXMgb2YgdGhlIGZpbGUgdG8NCj4gPj4+ PiBiZSB1cGRhdGVkLiINCj4gPj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4gVGhlIGRpZmZlcmVu Y2UgaGVyZSBpcyB0aGF0IGZvciBwTkZTIHRoZSB3cml0dGVuIGRhdGEgaXMgbm90DQo+ID4+Pj4g Z3VhcmFudGVlZA0KPiA+Pj4+Pj4+Pj4+PiB0byBiZSB2aXNpYmxlIHVudGlsIExBWU9VVENPTU1J VC4gIEluIGEgYnJvYWRlciBzZW5zZSwNCj4gPj4+PiBhc3N1bWluZyB0aGUgY2xpZW50cw0KPiA+ Pj4+Pj4+Pj4+PiBhcmUgY2FjaGluZyBkaXJ0eSBkYXRhIGFuZCB1c2UgYSB3cml0ZS1iZWhpbmQg Y2FjaGUsDQo+ID4+Pj4gYXBwbGljYXRpb24td3JpdHRlbiBkYXRhDQo+ID4+Pj4+Pj4+Pj4+IG1h eSBiZSB2aXNpYmxlIHRvIG90aGVyIHByb2Nlc3NlcyBvbiB0aGUgc2FtZSBob3N0IGJ1dCBub3QN Cj4gPj4+PiB0byBvdGhlcnMgdW50aWwNCj4gPj4+Pj4+Pj4+Pj4gZnN5bmMoKSBvciBjbG9zZSgp IC0gb3Blbi10by1jbG9zZSBzZW1hbnRpY3MgYXJlIHRoZSBvbmx5DQo+ID4+Pj4gdGhpbmcgdGhl IGNsaWVudA0KPiA+Pj4+Pj4+Pj4+PiBndWFyYW50ZWVzLCByaWdodD8gIElzc3VpbmcgTEFZT1VU Q09NTUlUIG9uIGZzeW5jKCkgYW5kDQo+ID4+Pj4gY2xvc2UoKSBlbnN1cmUgdGhlDQo+ID4+Pj4+ Pj4+Pj4+IGRhdGEgaXMgY29tbWl0dGVkIHRvIHN0YWJsZSBzdG9yYWdlIGFuZCBpcyB2aXNpYmxl IHRvIGFsbA0KPiA+Pj4+IG90aGVyIGNsaWVudHMgaW4NCj4gPj4+Pj4+Pj4+Pj4gdGhlIGNsdXN0 ZXIuDQo+ID4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+PiBTZWUgYWJvdmUuIEknbSBub3QgZGlzcHV0 aW5nIHlvdXIgc3RhdGVtZW50IHRoYXQgJ3RoZSB3cml0dGVuDQo+ID4+Pj4gZGF0YSBpcw0KPiA+ Pj4+Pj4+Pj4+IG5vdCBndWFyYW50ZWVkIHRvIGJlIHZpc2libGUgdW50aWwgTEFZT1VUQ09NTUlU Jy4gSSBhbQ0KPiA+Pj4+IGRpc3B1dGluZyBhbg0KPiA+Pj4+Pj4+Pj4+IGFzc3VtcHRpb24gdGhh dCAndGhlIHdyaXR0ZW4gZGF0YSBtYXkgYmUgdmlzaWJsZSB3aXRob3V0IGFuDQo+ID4+Pj4gYWNj b21wYW55aW5nDQo+ID4+Pj4+Pj4+Pj4gY2hhbmdlIGF0dHJpYnV0ZSB1cGRhdGUnLg0KPiA+Pj4+ Pj4+Pj4NCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+PiBJbiBvdGhlciB3b3JkcywgSSdkIGV4cGVj dCB0aGUgZm9sbG93aW5nIHNjZW5hcmlvIHRvIGdpdmUgdGhlDQo+ID4+Pj4gc2FtZQ0KPiA+Pj4+ Pj4+Pj4gcmVzdWx0cyBpbiBORlN2NC4xIHcvcE5GUyBhcyBpdCBkb2VzIGluIE5GU3Y0Og0KPiA+ Pj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBUaGF0J3MgYSBzdHJvbmcgcmVxdWlyZW1lbnQgdGhhdCBtYXkg bGltaXQgdGhlIHNjYWxhYmlsaXR5IG9mDQo+ID4+Pj4gdGhlIHNlcnZlci4NCj4gPj4+Pj4+Pj4N Cj4gPj4+Pj4+Pj4gVGhlIHNwaXJpdCBvZiB0aGUgcE5GUyBvcGVyYXRpb25zLCBhdCBsZWFzdCBm cm9tIFBhbmFzYXMNCj4gPj4+PiBwZXJzcGVjdGl2ZSB3YXMgdGhhdA0KPiA+Pj4+Pj4+PiB0aGUg ZGF0YSBpcyB0cmFuc2llbnQgdW50aWwgTEFZT1VUQ09NTUlULCBtZWFuaW5nIGl0IG1heSBvciBt YXkNCj4gPj4+PiBub3QgYmUgdmlzaWJsZQ0KPiA+Pj4+Pj4+PiB0byBjbGllbnRzIG90aGVyIHRo YW4gdGhlIG9uZSB3aG8gd3JvdGUgaXQsIGFuZCBpdHMgYXNzb2NpYXRlZA0KPiA+Pj4+IG1ldGFk YXRhIE1VU1QNCj4gPj4+Pj4+Pj4gYmUgdXBkYXRlZCBhbmQgZGVzY3JpYmUgdGhlIG5ldyBkYXRh IG9ubHkgb24gTEFZT1VUQ09NTUlUIGFuZA0KPiA+Pj4+IHVudGlsIHRoZW4gaXQncw0KPiA+Pj4+ Pj4+PiB1bmRlZmluZWQsIGkuZS4gaXQncyB1cCB0byB0aGUgc2VydmVyIGltcGxlbWVudGF0aW9u IHdoZXRoZXIgdG8NCj4gPj4+PiB1cGRhdGUgaXQgb3Igbm90Lg0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+ Pj4+PiBXaXRob3V0IGxvY2tpbmcsIHdoYXQgZG8gdGhlIHN0cm9uZ2VyIHNlbWFudGljcyBidXkg eW91Pw0KPiA+Pj4+Pj4+PiBFdmVuIGlmIGEgY2xpZW50IHZlcmlmaWVkIHRoZSBjaGFuZ2VfYXR0 cmlidXRlIG5ldyBkYXRhIG1heQ0KPiA+Pj4+IGJlY29tZSB2aXNpYmxlDQo+ID4+Pj4+Pj4+IGF0 IGFueSB0aW1lIGFmdGVyIHRoZSBHRVRBVFRSIGlmIHRoZSBmaWxlL2J5dGUgcmFuZ2UgYXJlbid0 DQo+ID4+Pj4gbG9ja2VkLg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gVGhlcmUgaXMgbm8gbG9ja2lu ZyBuZWVkZWQgaW4gdGhlIHNjZW5hcmlvIGJlbG93OiBpdCBpcyBvcmRpbmFyeQ0KPiA+Pj4+Pj4+ IGNsb3NlLXRvLW9wZW4gc2VtYW50aWNzLg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gVGhlIHBvaW50 IGlzIHRoYXQgaWYgeW91IHJlbW92ZSB0aGUgb25lIGFuZCBvbmx5IHdheSB0aGF0IGNsaWVudHMN Cj4gPj4+PiBoYXZlDQo+ID4+Pj4+Pj4gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRoZWly IGRhdGEgY2FjaGVzIGFyZSB2YWxpZCwgdGhlbiB0aGV5DQo+ID4+Pj4gY2FuDQo+ID4+Pj4+Pj4g bm8gbG9uZ2VyIGNhY2hlIGRhdGEgYXQgYWxsLCBhbmQgc2VydmVyIHNjYWxhYmlsaXR5IHdpbGwg YmUgc2hvdA0KPiA+Pj4+IHRvDQo+ID4+Pj4+Pj4gc21pdGhlcmVlbnMgYW55d2F5Lg0KPiA+Pj4+ Pj4+DQo+ID4+Pj4+Pj4gVHJvbmQNCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBCZW5ueQ0KPiA+Pj4+ Pj4+Pg0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+IENsaWVudCAxCQkJQ2xpZW50IDINCj4gPj4+ Pj4+Pj4+ID09PT09PT09CQkJPT09PT09PT0NCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+PiBPUEVO IGZvbw0KPiA+Pj4+Pj4+Pj4gUkVBRA0KPiA+Pj4+Pj4+Pj4gQ0xPU0UNCj4gPj4+Pj4+Pj4+IAkJ CQlPUEVODQo+ID4+Pj4+Pj4+PiAJCQkJTEFZT1VUR0VUIC4uLg0KPiA+Pj4+Pj4+Pj4gCQkJCVdS SVRFIHZpYSBEUw0KPiA+Pj4+Pj4+Pj4gCQkJCTxkaWVzPi4uLg0KPiA+Pj4+Pj4+Pj4gT1BFTiBm b28NCj4gPj4+Pj4+Pj4+IHZlcmlmeSBjaGFuZ2VfYXR0cg0KPiA+Pj4+Pj4+Pj4gUkVBRCBpZiBh Ym92ZSBXUklURSBpcyB2aXNpYmxlDQo+ID4+Pj4+Pj4+PiBDTE9TRQ0KPiA+Pj4+Pj4+Pj4NCj4g Pj4+Pj4+Pj4+IFRyb25kDQo+ID4+Pj4+Pj4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXw0KPiA+Pj4+Pj4+Pj4gbmZzdjQgbWFpbGluZyBsaXN0DQo+ID4+ Pj4+Pj4+PiBuZnN2NEBpZXRmLm9yZw0KPiA+Pj4+Pj4+Pj4gaHR0cHM6Ly93d3cuaWV0Zi5vcmcv bWFpbG1hbi9saXN0aW5mby9uZnN2NA0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiA+Pj4+Pj4+ IG5mc3Y0IG1haWxpbmcgbGlzdA0KPiA+Pj4+Pj4+IG5mc3Y0QGlldGYub3JnDQo+ID4+Pj4+Pj4g aHR0cHM6Ly93d3cuaWV0Zi5vcmcvbWFpbG1hbi9saXN0aW5mby9uZnN2NA0KPiA+Pj4+Pj4+DQo+ ID4+Pj4+Pj4NCj4gPj4+Pj4NCj4gPj4+Pj4NCj4gPj4+Pj4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gPj4+Pj4gbmZzdjQgbWFpbGluZyBsaXN0DQo+ ID4+Pj4+IG5mc3Y0QGlldGYub3JnDQo+ID4+Pj4+IGh0dHBzOi8vd3d3LmlldGYub3JnL21haWxt YW4vbGlzdGluZm8vbmZzdjQNCj4gPj4+Pj4NCj4gPj4+Pj4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gPj4+Pj4gbmZzdjQgbWFpbGluZyBsaXN0DQo+ ID4+Pj4+IG5mc3Y0QGlldGYub3JnDQo+ID4+Pj4+IGh0dHBzOi8vd3d3LmlldGYub3JnL21haWxt YW4vbGlzdGluZm8vbmZzdjQNCj4gPj4+Pg0KPiA+Pj4NCj4gPj4+DQo+ID4+DQo+ID4+DQo+ID4+ IC0tDQo+ID4+IFRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBsaXN0OiBzZW5kIHRoZSBsaW5lICJ1 bnN1YnNjcmliZSBsaW51eC1uZnMiIGluDQo+ID4+IHRoZSBib2R5IG9mIGEgbWVzc2FnZSB0byBt YWpvcmRvbW9Admdlci5rZXJuZWwub3JnDQo+ID4+IE1vcmUgbWFqb3Jkb21vIGluZm8gYXQgIGh0 dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRtbA0KPiA+DQo+ID4NCj4gPg0K PiA+IC0tDQo+ID4gVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhlIGxpbmUg InVuc3Vic2NyaWJlIGxpbnV4LW5mcyIgaW4NCj4gPiB0aGUgYm9keSBvZiBhIG1lc3NhZ2UgdG8g bWFqb3Jkb21vQHZnZXIua2VybmVsLm9yZw0KPiA+IE1vcmUgbWFqb3Jkb21vIGluZm8gYXQgIGh0 dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRtbA0KPiANCg0K