Return-Path: X-Original-To: apmail-cordova-dev-archive@www.apache.org Delivered-To: apmail-cordova-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id E05651737E for ; Thu, 23 Apr 2015 18:00:59 +0000 (UTC) Received: (qmail 33889 invoked by uid 500); 23 Apr 2015 18:00:59 -0000 Delivered-To: apmail-cordova-dev-archive@cordova.apache.org Received: (qmail 33847 invoked by uid 500); 23 Apr 2015 18:00:59 -0000 Mailing-List: contact dev-help@cordova.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cordova.apache.org Delivered-To: mailing list dev@cordova.apache.org Received: (qmail 33833 invoked by uid 99); 23 Apr 2015 18:00:59 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 23 Apr 2015 18:00:59 +0000 X-ASF-Spam-Status: No, hits=-0.0 required=5.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: message received from 54.191.145.13 which is an MX secondary for dev@cordova.apache.org) Received: from [54.191.145.13] (HELO mx1-us-west.apache.org) (54.191.145.13) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 23 Apr 2015 18:00:54 +0000 Received: from na01-bl2-obe.outbound.protection.outlook.com (mail-bl2on0143.outbound.protection.outlook.com [65.55.169.143]) by mx1-us-west.apache.org (ASF Mail Server at mx1-us-west.apache.org) with ESMTPS id 598CA2508B for ; Thu, 23 Apr 2015 18:00:26 +0000 (UTC) Received: from DM2PR03MB366.namprd03.prod.outlook.com (10.141.55.18) by DM2PR03MB366.namprd03.prod.outlook.com (10.141.55.18) with Microsoft SMTP Server (TLS) id 15.1.136.17; Thu, 23 Apr 2015 18:00:17 +0000 Received: from DM2PR03MB366.namprd03.prod.outlook.com ([10.141.55.18]) by DM2PR03MB366.namprd03.prod.outlook.com ([10.141.55.18]) with mapi id 15.01.0136.026; Thu, 23 Apr 2015 18:00:17 +0000 From: "Parashuram N (MS OPEN TECH)" To: "dev@cordova.apache.org" Subject: RE: Proposal: Expose check_reqs at the CLI level Thread-Topic: Proposal: Expose check_reqs at the CLI level Thread-Index: AdB2GlWXKU3z26GJQHGbYHjZne6ESgAE9WbQABFxcoAAA9UYgAAUH+2AABDmG5AAAdUXgAAbh4EAAAHbDQAA2bHjMAAg8PmgAAdNs4AAAC3doABaVVnQAAIdAYAAI05LMAATl9cwAAELFIAAAD3aMA== Date: Thu, 23 Apr 2015 18:00:17 +0000 Message-ID: References: <957F1ECDA90E004B8DBDE23CFC94E3A3D2CE9F95@XMB111CNC.rim.net> <957F1ECDA90E004B8DBDE23CFC94E3A3D2CF8316@XMB112CNC.rim.net> <85A3E123BABF314D9D3656D0B4181256448F7515@FMSMSX103.amr.corp.intel.com> <957F1ECDA90E004B8DBDE23CFC94E3A3D2D0D51C@XMB111CNC.rim.net> <957F1ECDA90E004B8DBDE23CFC94E3A3D2D1DA7F@XMB111CNC.rim.net> <85A3E123BABF314D9D3656D0B418125644900E8A@FMSMSX103.amr.corp.intel.com> <957F1ECDA90E004B8DBDE23CFC94E3A3D2D22379@XMB111CNC.rim.net> In-Reply-To: <957F1ECDA90E004B8DBDE23CFC94E3A3D2D22379@XMB111CNC.rim.net> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: cordova.apache.org; dkim=none (message not signed) header.d=none; x-originating-ip: [2001:4898:80e0:ee43::2] x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(42134001)(42139001);SRVR:DM2PR03MB366; x-microsoft-antispam-prvs: x-forefront-antispam-report: BMV:1;SFV:NSPM;SFS:(10019020)(6009001)(377454003)(479174004)(164054003)(24454002)(13464003)(51704005)(252514010)(93886004)(62966003)(77156002)(40100003)(450100001)(76576001)(122556002)(92566002)(46102003)(2351001)(107886001)(110136001)(77096005)(15975445007)(102836002)(2950100001)(561944003)(33656002)(2900100001)(99286002)(76176999)(54356999)(86362001)(74316001)(2501003)(87936001)(50986999)(19580405001)(19580395003)(2656002)(3826002)(579004)(134885004);DIR:OUT;SFP:1102;SCL:1;SRVR:DM2PR03MB366;H:DM2PR03MB366.namprd03.prod.outlook.com;FPR:;SPF:None;MLV:sfv;LANG:en; x-exchange-antispam-report-test: UriScan:; x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(601004)(5005006)(5002010);SRVR:DM2PR03MB366;BCL:0;PCL:0;RULEID:;SRVR:DM2PR03MB366; x-forefront-prvs: 0555EC8317 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: microsoft.onmicrosoft.com X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Apr 2015 18:00:17.7058 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR03MB366 X-Virus-Checked: Checked by ClamAV on apache.org TXkgYmFkIC0gSSBkaWQgbm90IG1lYW4gdGhhdCB0aGlzIHdpbGwgcnVuICJ3aGVuIiBwbGF0Zm9y bSBpcyBhZGRlZC4gSSBtZWFuLCB0aGlzIGNhbiBydW4gb25seSB3aGVuIGEgcHJvamVjdCBpcyBw cmVzZW50IGFuZCBwbGF0Zm9ybSBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkLiBGb3IgdGhpcyBmaXJz dCBwaGFzZSwgd2UgYXJlIG5vdCBpbXBsZW1lbnRpbmcgdGhpcyBjb21tYW5kIGZvciBhIHBsYXRm b3JtIHRoYXQgaGFzIG5vdCBhbHJlYWR5IGJlZW4gYWRkZWQgdG8gdGhlIHByb2plY3QuICANCg0K LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IEpvc2ggU29yZWYgW21haWx0bzpqc29y ZWZAYmxhY2tiZXJyeS5jb21dIA0KU2VudDogVGh1cnNkYXksIEFwcmlsIDIzLCAyMDE1IDEwOjUy IEFNDQpUbzogZGV2QGNvcmRvdmEuYXBhY2hlLm9yZw0KU3ViamVjdDogUkU6IFByb3Bvc2FsOiBF eHBvc2UgY2hlY2tfcmVxcyBhdCB0aGUgQ0xJIGxldmVsDQoNCllvdSBtZWFuIHJ1biBidXQgbm90 IGVycm9yPw0KDQpCZWNhdXNlLCBhZ2FpbiwgdGhpcyBjb2RlICp1c2VkKiB0byBydW4gd2hlbiBw bGF0Zm9ybXMgd2VyZSBhZGRlZCAtLSBleGNlcHQsIHRoYXQgdGhlbiBpdCBlcnJvcmVkIHdoZW4g dGhlIHJlcXVpcmVtZW50cyB3ZXJlbuKAmXQgc2F0aXNmaWVkLg0KDQo+IC0tLS0tT3JpZ2luYWwg TWVzc2FnZS0tLS0tDQo+IEZyb206IFBhcmFzaHVyYW0gTiAoTVMgT1BFTiBURUNIKSBbbWFpbHRv OnBhbmFyYXNpQG1pY3Jvc29mdC5jb21dDQo+IFNlbnQ6IFRodXJzZGF5LCBBcHJpbCAyMywgMjAx NSAxOjIzIFBNDQo+IFRvOiBkZXZAY29yZG92YS5hcGFjaGUub3JnDQo+IFN1YmplY3Q6IFJFOiBQ cm9wb3NhbDogRXhwb3NlIGNoZWNrX3JlcXMgYXQgdGhlIENMSSBsZXZlbA0KPiANCj4gSSB0aGlu ayBhcyB0aGUgZmlyc3Qgc3RlcCwgaXQgd291bGQgbWFrZSBzZW5zZSB0byBydW4gaXQgd2hlbiBw bGF0Zm9ybSBpcyBhZGRlZA0KPiBhbmQgcHJvamVjdCBpcyBwcmVzZW50LiBXZSBjb3VsZCBjaGFu Z2UgaXQgbGF0ZXIgdG8gcnVuIGEgc3lzdGVtIHdpZGUgY2hlY2suDQo+IEZvciBub3csIHRoaXMg anVzdCBwaWNrcyB1cCB3aGF0IGNoZWNrX3JlcXMgYWxyZWFkeSBkb2VzLg0KPiANCj4gV2UgbWF5 IG5lZWQgYW5vdGhlciBlZmZvcnQgdG8gaW1wcm92ZSBjaGVja19yZXFzIGl0c2VsZi4NCj4gDQo+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFZsYWRpbWlyIEtvdGlrb3YgKEFr dmVsb24pIFttYWlsdG86di12bGtvdGlAbWljcm9zb2Z0LmNvbV0NCj4gU2VudDogVGh1cnNkYXks IEFwcmlsIDIzLCAyMDE1IDE6MjggQU0NCj4gVG86IGRldkBjb3Jkb3ZhLmFwYWNoZS5vcmcNCj4g U3ViamVjdDogUkU6IFByb3Bvc2FsOiBFeHBvc2UgY2hlY2tfcmVxcyBhdCB0aGUgQ0xJIGxldmVs DQo+IA0KPiBIZXksIExlby4gVGhhbmtzIGZvciBmZWVkYmFjayENCj4gDQo+IEkndmUgY2hhbmdl ZCB2ZXJiIG5hbWUgdG8gInJlcXVpcmVtZW50cyIgYmVjYXVzZSBpdCBsb29rcyBsaWtlIGl0IGlz IGEgaGFwcHkNCj4gbWVkaXVtIGZvciB0aGUgbWFqb3JpdHkuDQo+IFVwZGF0ZWQgY29kZSBmb3Ig Y29yZG92YSBsaWIgYW5kIGNvcmRvdmEtY2xpIHN1Ym1pdHRlZCB0aHJvdWdoIHRoZQ0KPiBmb2xs b3dpbmcgUFJzOiBodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL2NvcmRvdmEtY2xpL3B1bGwvMjEy DQo+IGh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvY29yZG92YS1saWIvcHVsbC8yMDguDQo+IA0K PiBSZWdhcmRpbmcgeW91ciBxdWVzdGlvbnM6DQo+IDEuIFRoZSBzcGVjaWZpY2F0aW9uIGZvciBj b21tYW5kIGlzIGV4YWN0bHkgdGhlIHNhbWUgYXMgeW91IG1lbnRpb25lZDoNCj4gDQo+IAljb3Jk b3ZhIHJlcXVpcmVtZW50cyBbcGxhdGZvcm0uLi5dDQo+IA0KPiBJJ3ZlIGFsc28gYWRkZWQgYSBo ZWxwIGZpbGUgdG8gY29yZG92YS1jbGksIHNvICdjb3Jkb3ZhIGhlbHAgcmVxdWlyZW1lbnRzJyB3 aWxsDQo+IHdvcmsgbm93LCBhbmQgd2lsbCBwcm92aWRlIGFsbCBpbmZvcm1hdGlvbiBhYm91dCB1 c2FnZS4NCj4gDQo+IDIuIFRoZXJlIGFyZSBubyBzcGVjaWFsIG9wdGlvbnMgZm9yIHJlcXVpcmVt ZW50cyBjb21tYW5kLiBUaGVyZSBhcmUNCj4gY29tbW9uIG9wdGlvbnMgZm9yIGFsbCBjbGkgY29t bWFuZHMgbGlrZSAnLS1zaWxsZW50JyBhbmQgJy0tdmVyYm9zZScgYW5kDQo+IHRoZXkncmUgc3Vw cG9ydGVkIGF1dG9tYXRpY2FsbHkuDQo+IA0KPiAzLiBUaGUgY29tbWFuZCByZXF1aXJlcyBhIHBy b2plY3QgYW5kIHBsYXRmb3JtIGFkZGVkIHRvIHByb2plY3QuIFRoaXMgd2FzDQo+IHRoZSBmYXN0 ZXN0IHdheSB0byBpbXBsZW1lbnQgaXQsIGFuZCBpdCBjb3VsZCBiZSBjaGFuZ2VkIGluIGZ1dHVy ZSBpZiB3ZQ0KPiBkZWNpZGUgdG8gc3VwcG9ydCBjYXNlIHdoZW4gcHJvamVjdCBkb2Vzbid0IGV4 aXN0cy4NCj4gDQo+IC0tLS0tLS0tLS0tLS0tLQ0KPiBCZXN0IHJlZ2FyZHMsIFZsYWRpbWlyDQo+ IA0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBUcmVnZ2lhcmksIExlbyBb bWFpbHRvOmxlby50cmVnZ2lhcmlAaW50ZWwuY29tXQ0KPiBTZW50OiBXZWRuZXNkYXksIDIyIEFw cmlsLCAyMDE1IDE4OjExDQo+IFRvOiBkZXZAY29yZG92YS5hcGFjaGUub3JnDQo+IFN1YmplY3Q6 IFJFOiBQcm9wb3NhbDogRXhwb3NlIGNoZWNrX3JlcXMgYXQgdGhlIENMSSBsZXZlbA0KPiANCj4g SGkgVmxhZGltaXIsDQo+IA0KPiBJdCdzIGdyZWF0IHRvIHNlZSB0aGlzIGJlaW5nIHdvcmtlZCBv biBhbmQgZGlzY3Vzc2VkLiAgTXkgY29tbWVudHMgYmVsb3cNCj4gYXJlIG1pbmUgYW5kIG1pbmUg YWxvbmUuDQo+IA0KPiBJbiBhZGRpdGlvbiB0byB0aGUgY29kZSBjaGFuZ2VzLCBJIHdvdWxkIGhh dmUgcHJlZmVycmVkIHRvIHNlZSBhIHNwZWNpZmljYXRpb24NCj4gb2YgdGhlIGNvbW1hbmQsIGUu Zy4NCj4gDQo+IAljb3Jkb3ZhIGNoZWNrLXJlcXMgcGxhdGZvcm0gW3BsYXRmb3JtLi4uXQ0KPiAN Cj4gSSB0b29rIGEgcXVpY2sgbG9vayBhdCB0aGUgQ0xJIGNvZGUgY2hhbmdlcyBhbmQgZGlkbid0 IHNlZSBhbnkgb3B0aW9uDQo+IHByb2Nlc3NpbmcuICBBcmUgdGhlcmUgYW55IG9wdGlvbnM/DQo+ IERvIHRoZSBwbGF0Zm9ybShzKSBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbmVlZCB0byBoYXZl IGJlZW4gYWxyZWFkeQ0KPiBhZGRlZCB0byB0aGUgcHJvamVjdD8NCj4gRG9lcyB0aGUgY29tbWFu ZCByZXF1aXJlIGEgcHJvamVjdCAtIGkuZS4gYmUgZXhlY3V0ZWQgaW4gYSBwcm9qZWN0IGRpcmVj dG9yeT8NCj4gUmVnYXJkaW5nIHRoZSBjb21tYW5kIG5hbWUsIEkgZG9uJ3QgdGhpbmsgYmVpbmcg J2N1dGUnIGlzIGhlbHBmdWwgdG8gdXNlcnMgLQ0KPiBpLmUuIEkgcmVjb21tZW5kIGFnYWluc3Qg J2RvY3RvcicuDQo+IEkgdGhpbmsgJ2NoZWNrLXJlcXVpcmVtZW50cycgd291bGQgYmUgT0suICBJ dCdzIGxvbmcgYnV0IGhvdyBtYW55IHRpbWVzIGRvZXMNCj4gYSB1c2VyIG5lZWQgdG8gdHlwZSBp dD8NCj4gDQo+IFRoYW5rcywNCj4gTGVvDQo+IA0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPiBGcm9tOiBWbGFkaW1pciBLb3Rpa292IChBa3ZlbG9uKSBbbWFpbHRvOnYtdmxrb3RpQG1p Y3Jvc29mdC5jb21dDQo+IFNlbnQ6IFdlZG5lc2RheSwgQXByaWwgMjIsIDIwMTUgNzoxOCBBTQ0K PiBUbzogZGV2QGNvcmRvdmEuYXBhY2hlLm9yZw0KPiBTdWJqZWN0OiBSRTogUHJvcG9zYWw6IEV4 cG9zZSBjaGVja19yZXFzIGF0IHRoZSBDTEkgbGV2ZWwNCj4gDQo+IEhleSwgZ3V5cy4gSGF2ZSBh bnlvbmUgbG9va2VkIGF0IGl0Pw0KPiBJJ3ZlIG1hZGUgc29tZSByZWZhY3RvcmluZyB0byBtYWtl IGNoYW5nZXMgbW9yZSByZWFkYWJsZSwgYW5kIHVwZGF0ZWQNCj4gZGF0YSBjb250cmFjdCBiZXR3 ZWVuIHBsYXRmb3JtJ3MgY2hlY2tfcmVxcyBjb2RlIGFuZCBMSUIgQVBJLg0KPiANCj4gSm9zaCwg cmVnYXJkaW5nIGNvbW1hbmQgbmFtZS4gSSB0aG91Z2h0IHRoYXQgdGhlcmUgaXMgc3RpbGwgbm8g YWdyZWVtZW50DQo+IGFib3V0IHZlcmIgbmFtZS4NCj4gUGVyc29uYWxseSBJIGFncmVlIHRoYXQg YGNvcmRvdmEgZG9jdG9yYCBvciBgY29yZG92YSByZXF1aXJlbWVudHNgIHNvdW5kcw0KPiBiZXR0 ZXIsIGJ1dCB0aGlzIGlzIGp1c3QgYSBjb21tYW5kIG5hbWUgYW50IGl0IGNvdWxkIGJlIGNoYW5n ZWQgYXQgYW55IHRpbWUuDQo+IA0KPiAtLS0tLS0tLS0tLS0tLS0NCj4gQmVzdCByZWdhcmRzLCBW bGFkaW1pcg0KPiANCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogUGFyYXNo dXJhbSBOIChNUyBPUEVOIFRFQ0gpIFttYWlsdG86cGFuYXJhc2lAbWljcm9zb2Z0LmNvbV0NCj4g U2VudDogTW9uZGF5LCAyMCBBcHJpbCwgMjAxNSAyMjowNA0KPiBUbzogZGV2QGNvcmRvdmEuYXBh Y2hlLm9yZw0KPiBTdWJqZWN0OiBSRTogUHJvcG9zYWw6IEV4cG9zZSBjaGVja19yZXFzIGF0IHRo ZSBDTEkgbGV2ZWwNCj4gDQo+IFRoaXMgd2FzIG9ubHkgYW4gaW5pdGlhbCBpbXBsZW1lbnRhdGlv biAtIG5vIHB1bGwgcmVxdWVzdCBoYXMgYmVlbiBzZW50LiBJDQo+IHRoaW5rIHRoaXMgaXMganVz dCBhIHdheSBmb3IgZm9sa3MgdG8gcGxheSB3aXRoIHdoYXQgVmxhZCBoYXMgbm93LiBJIGFtIHN1 cmUgd2UNCj4gd2lsbCBjaGFuZ2UgdGhlIHZlcmIgbmFtZSBiZWZvcmUgYSBQUiBjb21lcyBpbi4N Cj4gDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEpvc2ggU29yZWYgW21h aWx0bzpqc29yZWZAYmxhY2tiZXJyeS5jb21dDQo+IFNlbnQ6IE1vbmRheSwgQXByaWwgMjAsIDIw MTUgMTE6NTkgQU0NCj4gVG86IGRldkBjb3Jkb3ZhLmFwYWNoZS5vcmcNCj4gU3ViamVjdDogUkU6 IFByb3Bvc2FsOiBFeHBvc2UgY2hlY2tfcmVxcyBhdCB0aGUgQ0xJIGxldmVsDQo+IA0KPiAtMQ0K PiANCj4gRGlkbid0IGV2ZXJ5b25lIGFncmVlIHRvIGNhbGwgaXQgYGNvcmRvdmEgZG9jdG9yYCBv ciB3b3JzdCwgYGNvcmRvdmENCj4gcmVxdWlyZW1lbnRzYD8NCj4gDQo+ID4gLS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBWbGFkaW1pciBLb3Rpa292IChBa3ZlbG9uKSBbbWFp bHRvOnYtdmxrb3RpQG1pY3Jvc29mdC5jb21dDQo+ID4gU2VudDogTW9uZGF5LCBBcHJpbCAyMCwg MjAxNSAxMTo0NiBBTQ0KPiA+IFRvOiBkZXZAY29yZG92YS5hcGFjaGUub3JnDQo+ID4gU3ViamVj dDogUkU6IFByb3Bvc2FsOiBFeHBvc2UgY2hlY2tfcmVxcyBhdCB0aGUgQ0xJIGxldmVsDQo+ID4N Cj4gPiBIaSwgbGlzdC4NCj4gPg0KPiA+IEkgd291bGQgbGlrZSB0byBzaGFyZSBhIGRyYWZ0IGlt cGxlbWVudGF0aW9uIGZvciBjaGVja19yZXFzIGNvbW1hbmQNCj4gPiBhbmQgY2hlY2tfcmVxcyBB UEk6DQo+ID4gQ2hhbmdlcyAgY291bGQgYmUgZm91bmQgaGVyZToNCj4gPiAgICAgQ0xJOiBodHRw czovL2dpdGh1Yi5jb20vYXBhY2hlL2NvcmRvdmEtDQo+ID4gY2xpL2NvbXBhcmUvbWFzdGVyLi4u TVNPcGVuVGVjaDpyZXF1aXJlbWVudHNfY2hlY2sNCj4gPiAgICAgTElCOiBodHRwczovL2dpdGh1 Yi5jb20vYXBhY2hlL2NvcmRvdmEtDQo+ID4gbGliL2NvbXBhcmUvbWFzdGVyLi4uTVNPcGVuVGVj aDpyZXF1aXJlbWVudHNfY2hlY2sNCj4gPiAgICAgQ29yZG92YS1hbmRyb2lkOiBodHRwczovL2dp dGh1Yi5jb20vYXBhY2hlL2NvcmRvdmEtDQo+ID4gYW5kcm9pZC9jb21wYXJlL21hc3Rlci4uLk1T T3BlblRlY2g6cmVxdWlyZW1lbnRzX2NoZWNrDQo+ID4NCj4gPiBUaGUgaW1wbGVtZW50YXRpb24g Y29uc2lzdHMgb2YgZm9sbG93aW5nOg0KPiA+IDEuICdjb3Jkb3ZhIGNoZWNrLXJlcXMnIGNvbW1h bmQgZm9yIGNvcmRvdmEgQ0xJLCB3aGljaCBjYWxscw0KPiA+IGNvcnJlc3BvbmRpbmcgY29yZG92 YS1saWIgQVBJIHdpdGggb3B0aW9ucywgc3BlY2lmaWVkIGZyb20gQ0xJDQo+ID4NCj4gPiAyLiAn Y2hlY2tfcmVxcycgbW9kdWxlIGZvciBjb3Jkb3ZhLWxpYiwgd2hpY2ggd29ya3MgYXMgYSB3cmFw cGVyDQo+ID4gYXJvdW5kIHBsYXRmb3JtcycgY2hlY2tfcmVxcyBzY3JpcHRzLiBJdCByZXR1cm5z IGEgcHJvbWlzZSwgZWl0aGVyDQo+ID4gcmVzb2x2ZWQgaWYgY2hlY2tfcmVxcyBwbGF0Zm9ybSBz Y3JpcHQgaXMgZm91bmQgYW5kIHJhbiBzdWNjZXNzZnVsbHkNCj4gPiBvciByZWplY3RlZCBpbiBj YXNlIGlmIGNoZWNrX3JlcXMgc2NyaXB0IGlzIGZhaWxlZCBkdWUgdG8gc29tZSBpbnRlcm5hbCBl cnJvcnMNCj4gb3Igbm90IGZvdW5kIGF0IGFsbC4NCj4gPg0KPiA+IDMuIGNoZWNrX3JlcXMgc2Ny aXB0IGZvciBhbmRyb2lkIHBsYXRmb3JtLCB1cGRhdGVkIHRvIHJldHVybiBhcnJheSBvZg0KPiA+ IHJlcXVpcmVtZW50cy4NCj4gPg0KPiA+ICAgICAqIEVhY2ggcmVxdWlyZW1lbnRzIGlzIGFuIG9i amVjdCB3aXRoIGZvbGxvd2luZyBmaWVsZHM6DQo+ID4gICAgICAgICAtIGlkIC0gc29tZSBzaG9y dCBpZCwgY291bGQgYmUgdXNlZnVsIGZvciB0b29scywgdGhhdCBjb25zdW1lIEFQSSBkaXJlY3Rs eQ0KPiA+ICAgICAgICAgLSBuYW1lIC0gcmVhZGFibGUgbmFtZSBmb3IgdGhpcyByZXF1aXJlbWVu dCwgc3VjaCBhcyAnSmF2IEpESycNCj4gPiBvciAnR3JhZGxlIGJ1aWxkIHRvb2xzJywgZXRjLg0K PiA+ICAgICAgICAgLSBpbnN0YWxsZWQgLSBCb29sZWFuIHBhcmVtZXRlciB0aGF0IGluZGljYXRl cyBpZiByZXF1aXJlbWVudA0KPiA+IGlzIHByb3Blcmx5IGluc3RhbGxlZC9zYXRpc2ZpZWQNCj4g PiAgICAgICAgIC0gcmVhc29uIC0gZXJyb3IsIHJlcG9ydGVkIGJ5IHJlcXVpcmVtZW50cyBjaGVj ayByb3V0aW5lcyBpZg0KPiA+IHJlcXVpcmVtZW50IGlzIG1pc3NpbmcuDQo+ID4NCj4gPiBQbGVh c2Ugbm90ZSB0aGF0IHdvcmsgaXMgc3RpbGwgaW4gcHJvZ3Jlc3MsIGFuZCB3aWxsIGJlIGNoYW5n ZWQNCj4gPiBhY2NvcmRpbmcgdG8gcmV2aWV3IGNvbW1lbnRzLg0KPiA+IFRCRDoNCj4gPiAgICAg KiBtb3ZlIHByZXNlbnRhdGlvbiBsb2dpYyBmcm9tIExJQiB0byBDTEk7DQo+ID4gICAgICogcmVm aW5lIGRhdGEgZm9ybWF0LCByZXR1cm5lZCBieSBjb3Jkb3ZhLWxpYiBBUEkNCj4gPiAgICAgKiBh ZGQgb3RoZXIgcGxhdGZvcm1zDQo+ID4gICAgICogYW5kIG1vcmUuLi4gOikNCj4gPg0KPiA+IC0t LS0tLS0tLS0tLS0tLQ0KPiA+IEJlc3QgcmVnYXJkcywgVmxhZGltaXINCj4gPg0KPiA+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogUGFyYXNodXJhbSBOIChNUyBPUEVOIFRF Q0gpIFttYWlsdG86cGFuYXJhc2lAbWljcm9zb2Z0LmNvbV0NCj4gPiBTZW50OiBNb25kYXksIDIw IEFwcmlsLCAyMDE1IDM6NDkNCj4gPiBUbzogZGV2QGNvcmRvdmEuYXBhY2hlLm9yZw0KPiA+IFN1 YmplY3Q6IFJFOiBQcm9wb3NhbDogRXhwb3NlIGNoZWNrX3JlcXMgYXQgdGhlIENMSSBsZXZlbA0K PiA+DQo+ID4gTG9va3MgbGlrZSBpbXBsZW1lbnRpbmcgYSBnbG9iYWwgbGV2ZWwgY2hlY2tfcmVx cyB3aXRob3V0IGEgcHJvamVjdA0KPiA+IHNlZW1zIGhhcmRlciwgSSB3b3VsZCBzdWdnZXN0IHdl IG1ha2UgaXQgYSBwYXJ0IG9mIGEgc2Vjb25kIHBoYXNlIG9mDQo+ID4gdGhpcyBpbXBsZW1lbnRh dGlvbi4gRm9yIG5vdywgd2UgaGF2ZSBhIGJhc2ljIHZlcnNpb24gdGhhdCBzaW1wbHkNCj4gPiBh YnN0cmFjdHMgb3V0IGV4aXN0aW5nIGNoZWNrX3JlcXMgaW50byBhIHNlcGFyYXRlLCBwbGF0Zm9y bSBsZXZlbA0KPiA+IGNvbW1hbmQuIFRoaXMgY291bGQgYmUgYSBnb29kIGZpcnN0IHBoYXNlLCBh bmQgc2hvdWxkIGFsc28gZ2l2ZSB1cyBhbg0KPiA+IGlkZWEgYWJvdXQgaG93IGRldmVsb3BlcnMg dXNlIHRoaXMgY29tbWFuZC4NCj4gPg0KPiA+IEFzIGEgcGFydCBvZiBQaGFzZSAyLCBhbnlvbmUg ZnJvbSB0aGUgY29tbXVuaXR5IHNob3VsZCBiZSBhYmxlIHRvDQo+ID4gYnVpbGQgb24gYSBjb3Jk b3ZhIGxldmVsIGNoZWNrIHJlcXMsIGFuZCBwb3NzaWJseSBleHRlbmQgaXQgdG8NCj4gPiBjaGVj a2luZyByZXFzIHdoZW4gbm8gcHJvamVjdCBpcyBwcmVzZW50Lg0KPiA+DQo+ID4NCj4gPiAtLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IEpvc2ggU29yZWYgW21haWx0bzpqc29y ZWZAYmxhY2tiZXJyeS5jb21dDQo+ID4gU2VudDogV2VkbmVzZGF5LCBBcHJpbCAxNSwgMjAxNSA4 OjUzIEFNDQo+ID4gVG86IGRldkBjb3Jkb3ZhLmFwYWNoZS5vcmcNCj4gPiBTdWJqZWN0OiBSRTog UHJvcG9zYWw6IEV4cG9zZSBjaGVja19yZXFzIGF0IHRoZSBDTEkgbGV2ZWwNCj4gPg0KPiA+IFdl IGFscmVhZHkgc3VwcG9ydDoNCj4gPg0KPiA+IGBjb3Jkb3ZhIGJ1aWxkIGFuZHJvaWRgDQo+ID4N Cj4gPiBUaGVyZSdzIG5vIG5lZWQgZm9yIHRoZSBleHRyYSBgcGxhdGZvcm1gIHZlcmIuLg0KPiA+ DQo+ID4gQnV0LA0KPiA+IGBjb3Jkb3ZhIGJ1aWxkIGFuZHJvaWQgLS1ub2J1aWxkYCBpc24ndCBh bnkgbW9yZSBpbnR1aXRpdmUgdGhhbiB3LyB0aGUNCj4gPiBleHRyYSAicGxhdGZvcm0iLg0KPiA+ DQo+ID4NCj4gPiBBbmQgeWVzLCBhcyBJIG5vdGVkLCBhbmQgb3RoZXJzIGhhdmUgbm90ZWQsIHdl IHVzZWQgdG8gcnVuIGNoZWNrX3JlcXMNCj4gPiBpbiBhZGQsIHdlJ3JlIG5vdCBnb2luZyBiYWNr IHRvIGRvaW5nIHRoYXQuDQo+ID4NCj4gPiBBIGBjb3Jkb3ZhIGRvY3RvcmAgb3IgYGNvcmRvdmEg cmVxdWlyZW1lbnRzYCB2ZXJiIHNlZW1zIGZpbmUuDQo+ID4NCj4gPiBJJ20gYWxzbyBmaW5lIGBj b3Jkb3ZhIGRvY3RvciBQTEFURk9STWAgaW5zdGVhZCBvZiBgY29yZG92YSBwbGF0Zm9ybQ0KPiA+ IGRvY3RvciBQTEFURk9STWAsDQo+ID4NCj4gPiBBcyBmb3Igd2hlbiBzb21lb25lIGlzIGxpa2Vs eSB0byB3YW50IHRvIGFzayAid2hhdCByZXF1aXJlbWVudHMgZG8gSQ0KPiA+IG5lZWQgZm9yIGEg cGxhdGZvcm0iLCBpdCdzIGZhaXJseSBhcmJpdHJhcnkuDQo+ID4NCj4gPiBTb21lb25lIHdobyBp cyBnaXZlbiBhIHByb2plY3QgbWlnaHQga25vdyB0aGF0IHRoZXkgZG9uJ3QgaGF2ZSB0aGUNCj4g PiBlbnZpcm9ubWVudCBmb3IgYSBwbGF0Zm9ybSwgdGhleSBhcmVuJ3QgbGlrZWx5IHRvIHdhbnQg dG8gZ28gZG93biBhDQo+ID4gImJ1aWxkIiByYWJiaXQgaG9sZSwgc28sIEknbSAtMSBvbiBoaWRp bmcgaXQgYW55d2hlcmUgbmVhciBidWlsZC4NCj4gPg0KPiA+IEl0J3MgcGVyZmVjdGx5IHJlYXNv bmFibGUgZnJvbSBteSBwZXJzcGVjdGl2ZSBmb3Igc29tZW9uZSB0byB3YW50IHRvDQo+ID4gcnVu IGBjb3Jkb3ZhIHJlcXVpcmVtZW50cyBQTEFURk9STWAgd2l0aG91dCBhIHByb2plY3QgYXQgYWxs Lg0KPiA+IEltYWdpbmUgc29tZW9uZSBpcyBnZXR0aW5nIHN0YXJ0ZWQsIHRoZXkgImluc3RhbGwg Y29yZG92YSIsIGFuZCBrbm93DQo+ID4gdGhleSB3YW50IHRvIGRldmVsb3AgZm9yIFBMQVRGT1JN LCB0aGV5IGNvdWxkIHJlYXNvbmFibHkgd2FudCB0byBzZXQNCj4gPiB1cCB0aGVpciByZXF1aXJl bWVudHMgZm9yIHRoYXQgcGxhdGZvcm0gYmVmb3JlIHRyeWluZyB0byBjcmVhdGUgYQ0KPiA+IHBy b2plY3QuLi4NCj4gPg0KPiA+IEkgZG9uJ3Qga25vdyBpZiBhbnlvbmUncyBjaGVja19yZXFzIHNj cmlwdHMgYWN0dWFsbHkgcmVxdWlyZXMgYQ0KPiA+IHByb2plY3QsIEkgYWN0dWFsbHkgdGhpbmsg dGhleSBkb24ndCwgc28gaXQncyBwcm9iYWJseSBzdWZmaWNpZW50IHRvDQo+ID4gcnVuIHRoZW0g c3RyYWlnaHQgZnJvbSB0aGUgcGxhdGZvcm0gb3JpZ2luIGluc3RlYWQgb2YgZnJvbSBhIGNyZWF0 ZWQNCj4gcHJvamVjdC4NCj4gPg0KPiA+IE9uZSBub3RhYmxlIHRoaW5nOiBjaGVja19yZXFzIGlz bid0IGEgLmpzIGZpbGUgeWV0LCBhcyBhbiBBUEksIGl0J3MNCj4gPiAiY2hlY2tfcmVxcyIgKCpu aXgpIGFuZCAiY2hlY2tfcmVxcyIgKyBzb21ldGhpbmcgZnJvbSAlUEFUSEVYVCUNCj4gPiAoV2lu ZG93cykNCj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206 IGFncmlldmVAZ29vZ2xlLmNvbSBbbWFpbHRvOmFncmlldmVAZ29vZ2xlLmNvbV0gT24gQmVoYWxm IE9mDQo+ID4gPiBBbmRyZXcgR3JpZXZlDQo+ID4gPiBTZW50OiBXZWRuZXNkYXksIEFwcmlsIDE1 LCAyMDE1IDExOjAwIEFNDQo+ID4gPiBUbzogZGV2DQo+ID4gPiBTdWJqZWN0OiBSZTogUHJvcG9z YWw6IEV4cG9zZSBjaGVja19yZXFzIGF0IHRoZSBDTEkgbGV2ZWwNCj4gPiA+DQo+ID4gPiBXZSd2 ZSB3b3JrZWQgdG8gbWFrZSBpT1MgYWRkJ2FibGUgZnJvbSBXaW5kb3dzLCBzbyBJIGRvIHRoaW5r IGl0J3MgYQ0KPiA+ID4gZ29vZCBpZGVhIHRvICpub3QqIHJ1biBjaGVja19yZXFzIGZyb20gYWRk ICh3ZSB1c2VkIHRvIGJ1dCByZW1vdmVkDQo+IGl0KS4NCj4gPiA+DQo+ID4gPiBXZSBhbHJlYWR5 IHJ1biBpdCBvbiBidWlsZCwgc28gcG90ZW50aWFsbHkgd2UgYWxyZWFkeSBoYXZlIHRoaXMgY29t bWFuZDoNCj4gPiA+ICJjb3Jkb3ZhIHBsYXRmb3JtIGJ1aWxkIGFuZHJvaWQgLS1ub2J1aWxkIg0K PiA+ID4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gT24gVHVlLCBBcHIgMTQsIDIwMTUgYXQgOTo1MSBQ TSwgVHJlZ2dpYXJpLCBMZW8NCj4gPiA+IDxsZW8udHJlZ2dpYXJpQGludGVsLmNvbT4NCj4gPiA+ IHdyb3RlOg0KPiA+ID4NCj4gPiA+ID4gTXkgb3BpbmlvbnMuDQo+ID4gPiA+DQo+ID4gPiA+IFEx LiAgSnVzdCBzYXkgdGhhdCBwbGF0Zm9ybSBpcyBub3QgYWRkZWQsIHNvIGNhbm5vdCBjaGVjayBy ZXF1aXJlbWVudHMuDQo+ID4gPiA+DQo+ID4gPiA+IEkgZG9uJ3QgdGhpbmsgaXQgaXMgaW1wb3J0 YW50IHRvIHN1cHBvcnQgdGhlIHBsYXRmb3JtLW5vdC1hZGRlZCBjYXNlLg0KPiA+ID4gPg0KPiA+ ID4gPiBRMi4gIFNob3VsZCB0aGUgcmVxdWlyZW1lbnRzIGJlIGNoZWNrZWQgd2hlbiBhIHBsYXRm b3JtIGlzIGFkZGVkLA0KPiA+ID4gPiBvcg0KPiA+ID4gd2hlbg0KPiA+ID4gPiBpdCBpcyBidWls dCA/DQo+ID4gPiA+DQo+ID4gPiA+ICdwbGF0Zm9ybSBhZGQnIHNob3VsZCB3b3JrIGV2ZW4gd2hl biB0aGUgcmVxdWlyZW1lbnRzIGFyZSBub3QgbWV0Lg0KPiA+ID4gPiBJZiByZXF1aXJlbWVudHMg dXNlZCB0byBiZSBjaGVja2VkIG9uICdwbGF0Zm9ybSBhZGQnLCB0aGVuIEkNCj4gPiA+ID4gc3Vz cGVjdCB0aGV5IHdlcmUgcmVtb3ZlZA0KPiA+IHRvDQo+ID4gPiA+IHN1cHBvcnQNCj4gPiA+ID4g dGhlIHNjZW5hcmlvIG9mIHVzaW5nIHRoZSBzYW1lIENvcmRvdmEgcHJvamVjdCBvbiBtdWx0aXBs ZSBob3N0DQo+ID4gcGxhdGZvcm1zLg0KPiA+ID4gPiBFLmcuIGEgdGVhbSB3aXRoIHNvbWUgZGV2 ZWxvcGVycyBvbiBXaW5kb3dzIGFuZCBzb21lIG9uIE1hYy4gIEFzIGENCj4gPiB1c2VyDQo+ID4g PiBvZg0KPiA+ID4gPiBDb3Jkb3ZhIENMSSBvbiBXaW5kb3dzLCBJIHdhbnQgaXQgdG8gYmUgT0sg dG8gaGF2ZSB0aGUgcHJvamVjdCBJJ20NCj4gPiB3b3JraW5nDQo+ID4gPiA+IG9uIGhhdmUgdGhl DQo+ID4gPiA+IGlPUyBwbGF0Zm9ybSBhZGRlZCBhbmQgSSBvbmx5IGdldCBlcnJvcnMgaWYgSSB0 cnkgdG8gZG8gc29tZXRoaW5nDQo+ID4gPiA+IChidWlsZCwNCj4gPiA+ID4gZW11bGF0ZSkNCj4g PiA+ID4gd2hpY2ggcmVxdWlyZXMgdGhlIG5hdGl2ZSBTREsuDQo+ID4gPiA+DQo+ID4gPiA+IExl bw0KPiA+ID4gPg0KPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiBG cm9tOiBQYXJhc2h1cmFtIE4gKE1TIE9QRU4gVEVDSCkgW21haWx0bzpwYW5hcmFzaUBtaWNyb3Nv ZnQuY29tXQ0KPiA+ID4gPiBTZW50OiBUdWVzZGF5LCBBcHJpbCAxNCwgMjAxNSA2OjA0IFBNDQo+ ID4gPiA+IFRvOiBkZXZAY29yZG92YS5hcGFjaGUub3JnDQo+ID4gPiA+IFN1YmplY3Q6IFJFOiBQ cm9wb3NhbDogRXhwb3NlIGNoZWNrX3JlcXMgYXQgdGhlIENMSSBsZXZlbA0KPiA+ID4gPg0KPiA+ ID4gPiBJIHRoaW5rIHlvdSByYWlzZSBhbiBpbnRlcmVzdGluZyBwb2ludCBvbiB0aGUgYmVoYXZp b3Igb2YNCj4gPiA+ID4gY2hlY2tfcmVxcyBmb3IgcGxhdGZvcm0gdGhhdCBhcmUgbm90IHlldCBh ZGRlZC4NCj4gPiA+ID4NCj4gPiA+ID4gVGhlIG9wdGlvbnMsIGFzIHlvdSBtZW50aW9uIGFyZQ0K PiA+ID4gPg0KPiA+ID4gPiBRdWVzdGlvbiAxDQo+ID4gPiA+IDEgLSAgQWRkIHRoZSBwbGF0Zm9y bSwgcnVuIGNoZWNrX3JlcXMgc2NyaXB0LCByZW1vdmUgdGhlIHBsYXRmb3JtDQo+ID4gPiA+IGFu ZCByZXBvcnQgcmVzdWx0cy4NCj4gPiA+ID4gMS41IC0gSnVzdCBkb3dubG9hZCB0aGUgY2hlY2tf cmVxcyBzY3JpcHQgKG9yIHVzZSBpdCBmcm9tIHRoZQ0KPiA+ID4gPiBjYWNoZWQgcGxhdGZvcm0g ZGlyZWN0b3J5KSB3aXRob3V0IGFkZGluZyB0aGUgcGxhdGZvcm0sIGFuZCBydW4gdGhhdC4NCj4g PiA+ID4gMiAtICBKdXN0IHNheSB0aGF0IHBsYXRmb3JtIGlzIG5vdCBhZGRlZCwgc28gY2Fubm90 IGNoZWNrIHJlcXVpcmVtZW50cy4NCj4gPiA+ID4NCj4gPiA+ID4gUXVlc3Rpb24gMjogSXQgYWxz byBjb21lcyB0byB0aGUgY2FzZSBvZiAtIHdoZW4gd291bGQgYSB1c2VyIHdhbnQNCj4gPiA+ID4g dG8gcnVuIHRoZSByZXF1aXJlbWVudCBjaGVjaw0KPiA+ID4gPiAtIGJlZm9yZSBzdGFydGluZyBh IGNvcmRvdmEgcHJvamVjdCA/DQo+ID4gPiA+IC0gYmVmb3JlIGFkZGluZyBhIHBsYXRmb3JtID8N Cj4gPiA+ID4gLSBzaG91bGQgdGhlIHJlcXVpcmVtZW50cyBiZSBjaGVja2VkIHdoZW4gYSBwbGF0 Zm9ybSBpcyBhZGRlZCwgb3INCj4gPiB3aGVuIGl0DQo+ID4gPiA+IGlzIGJ1aWx0ID8NCj4gPiA+ ID4NCj4gPiA+ID4gVGhlIGFuc3dlciB0byB0aGUgYWJvdmUgcXVlc3Rpb25zIHdpbGwgaGVscCB1 cyB1bmRlcnN0YW5kIGlmIGEgdG9wDQo+ID4gPiA+IGxldmVsIHJlcV9jaGVjayBpcyByZXF1aXJl ZCBvciBub3QuIFdlIHNob3VsZCBhbHNvIGxvb2sgYXQgd2hhdA0KPiA+ID4gPiBjaGVja19yZXFz IGRvIHRvZGF5IC0gdGhlIGRvIG5vdCB0ZWxsIHlvdSBBTEwgdGhlIG1pc3NpbmcgcGllY2VzIGZv cg0KPiBidWlsZGluZyBhbiBTREsuDQo+ID4gPiA+DQo+ID4gPiA+IEl0IHdvdWxkIGJlIGdvb2Qg dG8gaGVhciB3aGF0IHRoZSBvdGhlcnMgaW4gdGhlIGNvbW11bml0eSB0aGluaw0KPiA+ID4gPiBh Ym91dCB0aGVzZSBhbnN3ZXJzLg0KPiA+ID4gPg0KPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KPiA+ID4gPiBGcm9tOiBKb3NoIFNvcmVmIFttYWlsdG86anNvcmVmQGJsYWNrYmVy cnkuY29tXQ0KPiA+ID4gPiBTZW50OiBUdWVzZGF5LCBBcHJpbCAxNCwgMjAxNSA5OjU1IEFNDQo+ ID4gPiA+IFRvOiBkZXZAY29yZG92YS5hcGFjaGUub3JnDQo+ID4gPiA+IFN1YmplY3Q6IFJFOiBQ cm9wb3NhbDogRXhwb3NlIGNoZWNrX3JlcXMgYXQgdGhlIENMSSBsZXZlbA0KPiA+ID4gPg0KPiA+ ID4gPiBGd2l3LCBmb3IgdGhlIGNhc2Ugb2YgYSBwbGF0Zm9ybSB0aGF0IGlzbid0IGluIGEgcHJv amVjdCB5ZXQsIEknZA0KPiA+ID4gPiBlbnZpc2lvbjoNCj4gPiA+ID4NCj4gPiA+ID4gYGNvcmRv dmEgcGxhdGZvcm0gZG9jdG9yIG5vdC15ZXQtaW5zdGFsbGVkYA0KPiA+ID4gPg0KPiA+ID4gPiB0 byBkbyBlZmZlY3RpdmVseToNCj4gPiA+ID4gYGBgc2gNCj4gPiA+ID4gKA0KPiA+ID4gPiBQTEFU Rk9STT1ub3QteWV0LWluc3RhbGxlZA0KPiA+ID4gPiAoY29yZG92YSBwbGF0Zm9ybSBhZGQgJFBM QVRGT1JNIDI+JjEpID4gL2Rldi9udWxsICYmIGNvcmRvdmENCj4gPiA+ID4gcGxhdGZvcm0gZG9j dG9yICRQTEFURk9STTsgKGNvcmRvdmEgcGxhdGZvcm0gcmVtb3ZlICRQTEFURk9STQ0KPiA+ID4g PiAyPiYxKQ0KPiA+ID4gPiApDQo+ID4gPiA+IGBgYA0KPiA+ID4gPg0KPiA+ID4gPiBpLmUuIGFk ZCB0aGUgcGxhdGZvcm0gKG9yIGNyZWF0ZSBhIHRlbXBvcmFyeSBwcm9qZWN0LCBhbmQgYWRkIHRo ZQ0KPiA+IHBsYXRmb3JtDQo+ID4gPiA+IHRvIHRoZSB0ZW1wb3JhcnkgcHJvamVjdCksIGFuZCB0 aGVuIHJ1biBwbGF0Zm9ybSBkb2N0b3IsIGFuZCB0aGVuDQo+ID4gcmVtb3ZlDQo+ID4gPiA+IHRo ZQ0KPiA+ID4gPiBwbGF0Zm9ybSAoYW5kIGlmIGl0IHdhcyBpbiBhIHRlbXBvcmFyeSBwcm9qZWN0 LCBkZWxldGUgdGhlDQo+ID4gPiA+IHRlbXBvcmFyeSBwcm9qZWN0Li4uKS4NCj4gPiA+ID4NCj4g PiA+ID4gSSBkb24ndCByZWFsbHkgd2FudCB0byBleHBvcyBhICdjaGVja19yZXFzJyB2ZXJiIHZp YSBDTEkuDQo+ID4gPiA+DQo+ID4gPiA+IElmIHdlIHJlYWxseSByZWFsbHkgd2FudCB0bywgd2Ug Y291bGQgaGF2ZSBgY29yZG92YSBwbGF0Zm9ybQ0KPiA+ID4gPiByZXF1aXJlbWVudHMgW1BMQVRG T1JNLi4uXWAgYXMgYSB2ZXJiLCB0aGF0J3Mgb2suDQo+ID4gPiA+DQo+ID4gPiA+IElmIHNvbWVv bmUgd2FudHMgdG8gY2FsbCBgY2hlY2tfcmVxc2AgZGlyZWN0bHksIHRoZXkncmUgd2VsY29tZSB0 bw0KPiA+ID4gPiBkbyBzbywgYnV0IGl0J3MgYW4gaW5jcmVkaWJseSB1Z2x5IHRoaW5nIGFuZCBk b2Vzbid0IGJlbG9uZyBpbiBhDQo+ID4gPiA+IHB1YmxpYyBmYWNpbmcgaW50ZXJmYWNlLg0KPiA+ ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4g PiA+ID4gRnJvbTogUGFyYXNodXJhbSBOIChNUyBPUEVOIFRFQ0gpDQo+ID4gPiA+ID4gW21haWx0 bzpwYW5hcmFzaUBtaWNyb3NvZnQuY29tXQ0KPiA+ID4gPiA+IFNlbnQ6IFR1ZXNkYXksIEFwcmls IDE0LCAyMDE1IDEwOjE5IEFNDQo+ID4gPiA+ID4gVG86IGRldkBjb3Jkb3ZhLmFwYWNoZS5vcmcN Cj4gPiA+ID4gPiBTdWJqZWN0OiBSZTogUHJvcG9zYWw6IEV4cG9zZSBjaGVja19yZXFzIGF0IHRo ZSBDTEkgbGV2ZWwNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IENhcmxvcywgeW91IGFyZSByaWdodCwg Y2hlY2tfcmVxcyBzaG91bGQgYmUgaW4gdGhlIHBsYXRmb3JtDQo+ID4gPiA+ID4gcmVwbywgQ0xJ DQo+ID4gPiA+IHdpbGwNCj4gPiA+ID4gPiBqdXN0IHByb3h5IHRoZSBjYWxsIHRvIHRoZSBwbGF0 Zm9ybXMuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBPbiA0LzEzLzE1LCAxMDoyOSBQTSwgIkNhcmxv cyBTYW50YW5hIiA8Y3NhbnRhbmEyM0BnbWFpbC5jb20+DQo+ID4gd3JvdGU6DQo+ID4gPiA+ID4N Cj4gPiA+ID4gPiA+KzEgaWYgY2hlY2tfcmVxcyBhcmUga2VwdCBpbiB0aGUgcGxhdGZvcm0gcmVw b3MsIGN1cnJlbnRseQ0KPiA+ID4gPiA+ID4rY2hlY2tfcmVxcw0KPiA+ID4gPiA+ID5pcw0KPiA+ ID4gPiBhDQo+ID4gPiA+ID4gPnBsYXRmb3JtIGNvbmNlcm5lZA0KPiA+ID4gPiA+ID5pZiBpdCdz IGF2YWlsYWJsZSBmcm9tIENMSSBpdCB3aWxsIGJlIGp1c3QgYSBwcm94eSB0byB0aGUNCj4gPiA+ ID4gPiA+cGxhdGZvcm0gY2hlY2tfcmVxcy4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPmlmIGRv bid0IGtlZXAgaXQgaW4gdGhlIHBsYXRmb3JtIHJlcG8sIGFuZCBhZGQgdGhpcyBsb2dpYyB0bw0K PiA+ID4gPiA+ID5jbGkgcmVwbywNCj4gPiA+ID4gd2UNCj4gPiA+ID4gPiA+d2lsbCBuZWVkIHRv IG1haW50YWluZWQgYSBsaXN0IG9mIHJlcXMgZm9yIGVhY2ggcGxhdGZvcm0sIGZvcg0KPiA+ID4g PiA+ID5lYWNoDQo+ID4gPiA+IHZlcnNpb24NCj4gPiA+ID4gPiA+b2YgZWFjaCBwbGF0Zm9ybS4N Cj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPlRoaXMgaXMgdGhlIHJlYXNvbiB3aHkgaXQgd2FzIHJl bW92ZWQgZnJvbSBjbGkgYW5kIGp1c3QgaXMNCj4gPiA+ID4gPiA+cHJlc2VudCBpbg0KPiA+ID4g PiB0aGUNCj4gPiA+ID4gPiA+cGxhdGZvcm0gcmVwby9jb2RlDQo+ID4gPiA+ID4gPg0KPiA+ID4g PiA+ID4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPk9uIE1vbiwgQXByIDEzLCAyMDE1IGF0IDU6 MTMgUE0sIEpvc2ggU29yZWYNCj4gPiA8anNvcmVmQGJsYWNrYmVycnkuY29tPg0KPiA+ID4gPiA+ IHdyb3RlOg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+PiBJJ20gKzEgZm9yIGBjb3Jkb3ZhIGRv Y3RvcmAgYW5kIGBjb3Jkb3ZhIHBsYXRmb3JtIGRvY3Rvcg0KPiA+ID4gPiA+ID4+e3BsYXRmb3Jt bmFtZX1gLg0KPiA+ID4gPiA+ID4+DQo+ID4gPiA+ID4gPj4gVGhlIGZvcm1lciBzaG91bGQgYXBw bHkgdG8gYWxsIGN1cnJlbnQgcGxhdGZvcm1zLCB0aGUgbGF0dGVyDQo+ID4gPiA+ID4gPj5zaG91 bGQgc3VwcG9ydCAgZG9jdG9yaW5nIGZvciBhdmFpbGFibGUgYnV0IG5vdCBhZGRlZA0KPiA+ID4g PiA+ID4+cGxhdGZvcm1zIC0tIGlmIHNhaWQgcGxhdGZvcm0NCj4gPiA+ID4gd2VyZQ0KPiA+ID4g PiA+ID4+IHNwZWNpZmllZC4NCj4gPiA+ID4gPiA+PiBBbmQgd2Ugc2hvdWxkIG5vdGUgaW4gdGhl IGRvY3VtZW50YXRpb24gb3IgYGNvcmRvdmEgZG9jdG9yYA0KPiA+ID4gPiA+ID4+IHRoYXQgaXQN Cj4gPiA+ID4gbWF5DQo+ID4gPiA+ID4gPj5kbw0KPiA+ID4gPiA+ID4+IG90aGVyIGNoZWNrcyAt LSBlLmcuIGxpbnRpbmcgdGhlIGNvbmZpZy54bWwsIHdhcm5pbmcgYWJvdXQNCj4gPiA+ID4gPiA+ PkNTUCwNCj4gPiA+ID4gcG9zc2libHkNCj4gPiA+ID4gPiA+PiBtZW50aW9uaW5nIHdoZW4gYSBw bHVnaW4gaXMgb3V0IG9mIGRhdGUgLS0ganVzdCB0byBpbmRpY2F0ZQ0KPiA+ID4gPiA+ID4+dG8g cGVvcGxlIHRoYXQgIHRoZSBiZWhhdmlvciBtYXkgZXZvbHZlLg0KPiA+ID4gPiA+ID4+DQo+ID4g PiA+ID4gPj4gTm90IHRoYXQgdGhpcyBpcyBtb3JlIG9yIGxlc3MgZml4aW5nIGEgcmVncmVzc2lv biB0aGF0IHdlDQo+ID4gPiA+ID4gPj5pbnRyb2R1Y2VkIHdoZW4gIHdlICBtYWRlIGBjb3Jkb3Zh IHBsYXRmb3JtIGFkZGAgbm90IGNhbGwNCj4gPiA+ID4gPiA+PmNoZWNrX3JlcXMuDQo+ID4gPiA+ ID4gPj4NCj4gPiA+ID4gPiA+PiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ ID4gPj4gPiBGcm9tOiBQYXJhc2h1cmFtIE4gKE1TIE9QRU4gVEVDSCkNCj4gPiA+IFttYWlsdG86 cGFuYXJhc2lAbWljcm9zb2Z0LmNvbV0NCj4gPiA+ID4gPiA+PiA+IFNlbnQ6IE1vbmRheSwgQXBy aWwgMTMsIDIwMTUgMjo1MyBQTQ0KPiA+ID4gPiA+ID4+ID4gVG86IGRldkBjb3Jkb3ZhLmFwYWNo ZS5vcmcNCj4gPiA+ID4gPiA+PiA+IFN1YmplY3Q6IFByb3Bvc2FsOiBFeHBvc2UgY2hlY2tfcmVx cyBhdCB0aGUgQ0xJIGxldmVsDQo+ID4gPiA+ID4gPj4gPg0KPiA+ID4gPiA+ID4+ID4gSGksDQo+ ID4gPiA+ID4gPj4gPg0KPiA+ID4gPiA+ID4+ID4gT25lIG9mIHRoZSBtYWluIHByb2JsZW1zIGEg bG90IG9mIGRldmVsb3BlcnMgc2VlbSB0byBoYXZlDQo+ID4gPiA+ID4gPj4gPiBpcyB0aGUNCj4g PiA+ID4gPiA+Pmlzc3VlIHRvDQo+ID4gPiA+ID4gPj4gPiBzZXR0aW5nIHVwIHRoZWlyIG1hY2hp bmVzIGZvciBidWlsZGluZyB2YXJpb3VzIHBsYXRmb3Jtcy4NCj4gPiA+ID4gPiA+PiA+IFRoaXMg Y2FtZQ0KPiA+ID4gPiA+ID4+b3V0DQo+ID4gPiA+ID4gPj4gZnJvbQ0KPiA+ID4gPiA+ID4+ID4g dGhlIFN0YWNrIG92ZXJmbG93IHN1cnZleSwgYW5kIHRoZSBudW1iZXIgb2YgcXVlc3Rpb25zIG9u DQo+ID4gPiA+ID4gPj4gPiBzdGFjaw0KPiA+ID4gPiA+ID4+b3ZlcmZsb3csDQo+ID4gPiA+ID4g Pj4gPiB0d2l0dGVyLiBFdGMuDQo+ID4gPiA+ID4gPj4gPg0KPiA+ID4gPiA+ID4+ID4gSSB0aG91 Z2h0IGl0IHdvdWxkIGJlIGhlbHBmdWwgdG8gaGF2ZSBhIGNoZWNrX3JlcXMgY29tbWFuZA0KPiA+ ID4gZXhwb3NlZA0KPiA+ID4gPiBhdA0KPiA+ID4gPiA+ID4+dGhlDQo+ID4gPiA+ID4gPj4gPiBD TEkgbGV2ZWwuIFRoaXMgaXMgc2ltaWxhciB0byBgYnJldyBkb2N0b3JgIG9yIGBhcHBpdW0NCj4g PiA+ID4gPiA+PiA+IGRvY3RvcmAuIFRoZQ0KPiA+ID4gPiA+ID4+aWRlYQ0KPiA+ID4gPiA+ID4+ IGlzDQo+ID4gPiA+ID4gPj4gPg0KPiA+ID4gPiA+ID4+ID4NCj4gPiA+ID4gPiA+PiA+IDEuICAg ICAgIEhhdmUgYSB3YXkgZm9yIHRoZSB1c2VyIHRvIHNlZSBpZiB0aGV5IGhhdmUgYWxsDQo+ID4g PiA+IGRlcGVuZGVuY2llcw0KPiA+ID4gPiA+ID4+IChsaWtlDQo+ID4gPiA+ID4gPj4gPiBKQVZB X0hPTUUgb3IgQU5EUk9JRF9IT01FKSBzZXQgdXA/IFRoaXMgaGFwcGVucyBhdCBidWlsZA0KPiA+ IHRpbWUsDQo+ID4gPiBidXQNCj4gPiA+ID4gPiA+PiA+IG1vdmluZyBpdCBvdXQgdG8gYSBDTEkg bGV2ZWwgY29tbWFuZCB3aGVyZSB5b3UgY2FuIHJ1bg0KPiA+ID4gPiA+ID4+ID4gY29yZG92YQ0K PiA+ID4gPiA+ID4+Y2hlY2tfcmVxcw0KPiA+ID4gPiA+ID4+ID4gKG9yIHNvbWV0aGluZyBzaW1p bGFyKSB3b3VsZCBiZSB1c2VmdWwgdG8gdGhlIHVzZXJzLg0KPiA+ID4gPiA+ID4+ID4NCj4gPiA+ ID4gPiA+PiA+IDIuICAgICAgIFRvZGF5LCB0aGUgYnVpbGQgY29tbWFuZCBzaG93cyBvbmUgZXJy b3IgYXQgYSB0aW1lLiBUaGUNCj4gPiA+ID4gPiA+PiBjaGVja19yZXFzDQo+ID4gPiA+ID4gPj4g PiBjb3VsZCBydW4gYWxsIHRoZSBjaGVja3MsIGFuZCBzaG93IGEgc3VtbWFyeSBvZiB0aGUgaXNz dWVzDQo+ID4gPiA+ID4gPj4gPiBzbyB0aGF0DQo+ID4gPiA+IHRoZQ0KPiA+ID4gPiA+ID4+IHVz ZXINCj4gPiA+ID4gPiA+PiA+IGNhbiBmaXggdGhlbSBhbGwsIGluc3RlYWQgb2YgZml4aW5nIG9u ZSwgcnVubmluZyBidWlsZCwNCj4gPiA+ID4gPiA+PiA+IGZpeGluZw0KPiA+ID4gPiBhZ2FpbiwN Cj4gPiA+ID4gPiA+PiBldGMuDQo+ID4gPiA+ID4gPj4gPg0KPiA+ID4gPiA+ID4+ID4gV2hhdCBk b2VzIHRoZSBjb21tdW5pdHkgdGhpbmsgb2YgdGhpcyBpZGVhID8gQ2FuIHdlDQo+ID4gPiA+ID4g Pj4gPiBpbXBsZW1lbnQgYQ0KPiA+ID4gPiA+ID4+cHJvdG90eXBlDQo+ID4gPiA+ID4gPj4gPiBh bmQgc2VlIGlmIHRoaXMgaXMgdXNlZnVsIHRvIG91ciBkZXZlbG9wZXJzID8NCj4gPiA+ID4gPiA+ PiA+IE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGNoYW5nZSBvciBicmVhayBleGlzdGluZw0KPiA+ ID4gPiA+ID4+ID4gZnVuY3Rpb25hbGl0eSAtIGl0DQo+ID4gPiA+ID4gPj5qdXN0DQo+ID4gPiA+ ID4gPj4gZXhwb3Nlcw0KPiA+ID4gPiA+ID4+ID4gdGhlIGFscmVhZHkgZXhpc3RpbmcgY2hlY2tf cmVxcyBpbiB0aGUgQ0xJLiBCdWlsZCB3aWxsDQo+ID4gPiA+ID4gPj4gPiBjb250aW51ZSB0bw0K PiA+ID4gPiA+ID4+Y2FsbA0KPiA+ID4gPiA+ID4+ID4gY2hlY2tfcmVxcy4NCj4gPiA+ID4gPiA+ PiA+DQo+ID4gPiA+ID4gPj4gPiBQbGVhc2Ugdm90ZSBvbiB0aGlzIHByb3Bvc2FsLCBvciByYWlz ZSBhbnkgY29uY2VybnMgeW91IG1heQ0KPiBoYXZlLg0KPiA+ID4gPiA+ID4+DQo+ID4gPiA+ID4g Pg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPi0tDQo+ID4gPiA+ID4gPkNh cmxvcyBTYW50YW5hDQo+ID4gPiA+ID4gPjxjc2FudGFuYTIzQGdtYWlsLmNvbT4NCj4gPiA+ID4g Pg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ID4gPiA+IC0tLS0tIFRvIHVuc3Vi c2NyaWJlLCBlLW1haWw6IGRldi11bnN1YnNjcmliZUBjb3Jkb3ZhLmFwYWNoZS5vcmcNCj4gPiA+ ID4gPiBGb3IgYWRkaXRpb25hbCBjb21tYW5kcywgZS1tYWlsOiBkZXYtaGVscEBjb3Jkb3ZhLmFw YWNoZS5vcmcNCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gPiA+IC0t LSBUbyB1bnN1YnNjcmliZSwgZS1tYWlsOiBkZXYtdW5zdWJzY3JpYmVAY29yZG92YS5hcGFjaGUu b3JnDQo+ID4gPiA+IEZvciBhZGRpdGlvbmFsIGNvbW1hbmRzLCBlLW1haWw6IGRldi1oZWxwQGNv cmRvdmEuYXBhY2hlLm9yZw0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4g PiA+ID4gLS0tIFRvIHVuc3Vic2NyaWJlLCBlLW1haWw6IGRldi11bnN1YnNjcmliZUBjb3Jkb3Zh LmFwYWNoZS5vcmcNCj4gPiA+ID4gRm9yIGFkZGl0aW9uYWwgY29tbWFuZHMsIGUtbWFpbDogZGV2 LWhlbHBAY29yZG92YS5hcGFjaGUub3JnDQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gA0INCj4gPg0K PiBLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL S0tLDQo+ID4gS0tLS0tLS0tLS0NCIBsgHVsgIFggINyaWCBLCBlLW1haWw0KPiA+ICAZGV0gXVsg IFggINyaWCBQGCDcmRvdmEsgXBhYIBlLINyZIEIgINyIGFkZGl0aW9uYWwgYICBbWFsgHCAIGUtb WFpbICAZGV0NCj4gPiBaGVscEBgg3Jkb3ZhLIFwYWCAZSyDcmSBCDQo+IA0KPiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCj4gVG8gdW5zdWJzY3JpYmUsIGUtbWFpbDogZGV2LXVuc3Vic2NyaWJlQGNvcmRvdmEuYXBh Y2hlLm9yZw0KPiBGb3IgYWRkaXRpb25hbCBjb21tYW5kcywgZS1tYWlsOiBkZXYtaGVscEBjb3Jk b3ZhLmFwYWNoZS5vcmcgA0INCj4gS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL S0tLS0tLS0tLS0tLS0tLS0tLS0tLSw0KPiBLS0tLS0tLS0tLQ0IgGyAdWyAgWCAg3JpYIEsIGUtb WFpbDQo+ICAZGV0gXVsgIFggINyaWCBQGCDcmRvdmEsgXBhYIBlLINyZIEIgINyIGFkZGl0aW9uY WwgYICBbWFsgHCAIGUtbWFpbDQo+ICAZGV0gWhlbHBAYINyZG92YSyBcGFggGUsg3JkgQg0K DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NClRvIHVuc3Vic2NyaWJlLCBlLW1haWw6IGRldi11bnN1YnNj cmliZUBjb3Jkb3ZhLmFwYWNoZS5vcmcNCkZvciBhZGRpdGlvbmFsIGNvbW1hbmRzLCBlLW1h aWw6IGRldi1oZWxwQGNvcmRvdmEuYXBhY2hlLm9yZw0K