From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0088.outbound.protection.outlook.com [104.47.32.88]) by dpdk.org (Postfix) with ESMTP id 4C7751B33C for ; Tue, 26 Dec 2017 12:15:44 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=MSQOjQj5gfLSdbNgoA5EAwWLFXaeeOLVBvxXUGa29qI=; b=WydGP0H9BqGU0c0joZtc79VnlIWEu/hyxm7ey34FnR3GSM/CS1tOyx5VkVhFq2jm4cfdBJ5PGCVuADSE8H6o4FxjlpHusZ0UrwWiL45GnbjTjvXQOeO0m9UL6CTpKq0mIuuk4dBcFlpreUYTJ+bbMKYWXHe1R1ogQ7KCHXRaWlc= Received: from DM2PR0701MB1120.namprd07.prod.outlook.com (10.160.246.151) by DM2PR0701MB1066.namprd07.prod.outlook.com (10.160.26.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.345.14; Tue, 26 Dec 2017 11:15:42 +0000 Received: from DM2PR0701MB1120.namprd07.prod.outlook.com ([fe80::bd61:162a:22b5:f93c]) by DM2PR0701MB1120.namprd07.prod.outlook.com ([fe80::bd61:162a:22b5:f93c%16]) with mapi id 15.20.0345.016; Tue, 26 Dec 2017 11:15:40 +0000 From: "Verma, Shally" To: "Trahe, Fiona" , "dev@dpdk.org" CC: "Athreya, Narayana Prasad" , "Gupta, Ashish" , "Sahu, Sunila" , "De Lara Guarch, Pablo" , "Challa, Mahipal" , "Jain, Deepak K" , Hemant Agrawal , Roy Pledge , Youri Querry , Ahmed Mansour Thread-Topic: [RFC v1] doc compression API for DPDK Thread-Index: AdN5YkDnST0/zTP6Qnydb7p68QcP6AAL8pPAACHKh0AARa5m8AC38Q+Q Date: Tue, 26 Dec 2017 11:15:40 +0000 Message-ID: References: <348A99DA5F5B7549AA880327E580B435892E72D2@IRSMSX101.ger.corp.intel.com> <348A99DA5F5B7549AA880327E580B435892E9A94@IRSMSX101.ger.corp.intel.com> In-Reply-To: <348A99DA5F5B7549AA880327E580B435892E9A94@IRSMSX101.ger.corp.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Shally.Verma@cavium.com; x-originating-ip: [115.113.156.2] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DM2PR0701MB1066; 7:/VIBc/OOKvjkIT4McJvXZlixdX6SYixmjSPwd0OGuT0Ft8ScYp9HRe0iSdijLiC1Wyb+jO2CuyNu3YLfrwVGwTYIVOsi8FS5DqyeHLMcoWixzI6c895L7uqDA9dxq/b2PR4QtDETgVrNv082uLq3N+VgBmWxE2M8RkYzlYFDhGGDBRypDR2V2CY33BKJB/er3kkWGuPm/2aWVXH/z2KI7G1H2qDsxNz//eTSO1iTpg04NJdIc+nmuozLYHPdTshd x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-forefront-antispam-report: SFV:SKI; SCL:-1; SFV:NSPM; SFS:(10009020)(346002)(396003)(376002)(39850400004)(39380400002)(366004)(13464003)(55674003)(40224003)(57704003)(199004)(189003)(53946003)(5890100001)(16200700003)(72206003)(93886005)(14454004)(99286004)(8936002)(97736004)(106356001)(2501003)(76176011)(66066001)(105586002)(8656006)(478600001)(966005)(7696005)(5250100002)(2900100001)(81156014)(8676002)(1720100001)(2906002)(2950100002)(68736007)(5660300001)(59450400001)(3280700002)(7736002)(53546011)(74316002)(33656002)(561944003)(305945005)(9686003)(316002)(3660700001)(55236004)(6436002)(6506007)(54906003)(110136005)(102836004)(229853002)(6116002)(6306002)(3846002)(81166006)(4326008)(55016002)(53376002)(86362001)(6246003)(25786009)(53936002)(569006); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR0701MB1066; H:DM2PR0701MB1120.namprd07.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; x-ms-office365-filtering-correlation-id: 723b1f3f-e017-4b70-3ea1-08d54c51ffaf x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4602075)(7168020)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(3008032)(2017052603307)(7153060); SRVR:DM2PR0701MB1066; x-ms-traffictypediagnostic: DM2PR0701MB1066: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(185117386973197)(228905959029699); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(10201501046)(93006095)(93001095)(3002001)(3231023)(944501075)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123560045)(20161123558120)(6072148)(201708071742011); SRVR:DM2PR0701MB1066; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:DM2PR0701MB1066; x-forefront-prvs: 053315510E received-spf: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: 1Bw1dYaHe3MlvWljFD+7AKqEB+lSOMT2TjLQrroBBo18CDJwQnTzU/jCSdbRYADFH+pBCEkjVUGJb5bFtcJNcg== spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-Network-Message-Id: 723b1f3f-e017-4b70-3ea1-08d54c51ffaf X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Dec 2017 11:15:40.5092 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR0701MB1066 Subject: Re: [dpdk-dev] [RFC v1] doc compression API for DPDK X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Dec 2017 11:15:45 -0000 SEkgRmlvbmENCg0KPiBbRmlvbmFdIFdvdWxkIGl0IGJlIHByZWZlcmFibGUgdG8gaXNzdWUgdjIg ZXZlbiB3aXRoIGRlc2lnbiBzbyBmYXI/DQpTdXJlIHdpbGwgZG8uIA0KUGxlYXNlIHNlZSBpbmxp bmUgZm9yIGZlZWRiYWNrIG9uIG90aGVyIHBvaW50cy4NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KPiBGcm9tOiBUcmFoZSwgRmlvbmEgW21haWx0bzpmaW9uYS50cmFoZUBpbnRlbC5j b21dDQo+IFNlbnQ6IDIyIERlY2VtYmVyIDIwMTcgMjA6NDMNCj4gVG86IFZlcm1hLCBTaGFsbHkg PFNoYWxseS5WZXJtYUBjYXZpdW0uY29tPjsgZGV2QGRwZGsub3JnDQo+IENjOiBBdGhyZXlhLCBO YXJheWFuYSBQcmFzYWQgPE5hcmF5YW5hUHJhc2FkLkF0aHJleWFAY2F2aXVtLmNvbT47DQo+IEd1 cHRhLCBBc2hpc2ggPEFzaGlzaC5HdXB0YUBjYXZpdW0uY29tPjsgU2FodSwgU3VuaWxhDQo+IDxT dW5pbGEuU2FodUBjYXZpdW0uY29tPjsgRGUgTGFyYSBHdWFyY2gsIFBhYmxvDQo+IDxwYWJsby5k ZS5sYXJhLmd1YXJjaEBpbnRlbC5jb20+OyBDaGFsbGEsIE1haGlwYWwNCj4gPE1haGlwYWwuQ2hh bGxhQGNhdml1bS5jb20+OyBKYWluLCBEZWVwYWsgSyA8ZGVlcGFrLmsuamFpbkBpbnRlbC5jb20+ Ow0KPiBIZW1hbnQgQWdyYXdhbCA8aGVtYW50LmFncmF3YWxAbnhwLmNvbT47IFJveSBQbGVkZ2UN Cj4gPHJveS5wbGVkZ2VAbnhwLmNvbT47IFlvdXJpIFF1ZXJyeSA8eW91cmkucXVlcnJ5XzFAbnhw LmNvbT47IEFobWVkDQo+IE1hbnNvdXIgPGFobWVkLm1hbnNvdXJAbnhwLmNvbT47IFRyYWhlLCBG aW9uYQ0KPiA8ZmlvbmEudHJhaGVAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSRTogW1JGQyB2MV0g ZG9jIGNvbXByZXNzaW9uIEFQSSBmb3IgRFBESw0KPiANCj4gSGkgU2hhbGx5LA0KPiANCj4gPiAt LS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IFZlcm1hLCBTaGFsbHkgW21haWx0 bzpTaGFsbHkuVmVybWFAY2F2aXVtLmNvbV0NCj4gPiBTZW50OiBGcmlkYXksIERlY2VtYmVyIDIy LCAyMDE3IDc6NDYgQU0NCj4gPiBUbzogVHJhaGUsIEZpb25hIDxmaW9uYS50cmFoZUBpbnRlbC5j b20+OyBkZXZAZHBkay5vcmcNCj4gPiBDYzogQXRocmV5YSwgTmFyYXlhbmEgUHJhc2FkIDxOYXJh eWFuYVByYXNhZC5BdGhyZXlhQGNhdml1bS5jb20+Ow0KPiBHdXB0YSwgQXNoaXNoDQo+ID4gPEFz aGlzaC5HdXB0YUBjYXZpdW0uY29tPjsgU2FodSwgU3VuaWxhIDxTdW5pbGEuU2FodUBjYXZpdW0u Y29tPjsNCj4gRGUgTGFyYSBHdWFyY2gsIFBhYmxvDQo+ID4gPHBhYmxvLmRlLmxhcmEuZ3VhcmNo QGludGVsLmNvbT47IENoYWxsYSwgTWFoaXBhbA0KPiA8TWFoaXBhbC5DaGFsbGFAY2F2aXVtLmNv bT47IEphaW4sIERlZXBhayBLDQo+ID4gPGRlZXBhay5rLmphaW5AaW50ZWwuY29tPjsgSGVtYW50 IEFncmF3YWwNCj4gPGhlbWFudC5hZ3Jhd2FsQG54cC5jb20+OyBSb3kgUGxlZGdlDQo+ID4gPHJv eS5wbGVkZ2VAbnhwLmNvbT47IFlvdXJpIFF1ZXJyeSA8eW91cmkucXVlcnJ5XzFAbnhwLmNvbT47 DQo+IEFobWVkIE1hbnNvdXINCj4gPiA8YWhtZWQubWFuc291ckBueHAuY29tPjsgVHJhaGUsIEZp b25hIDxmaW9uYS50cmFoZUBpbnRlbC5jb20+DQo+ID4gU3ViamVjdDogUkU6IFtSRkMgdjFdIGRv YyBjb21wcmVzc2lvbiBBUEkgZm9yIERQREsNCj4gPg0KPiA+IEhpIEZpb25hDQo+ID4NCj4gPiA+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBUcmFoZSwgRmlvbmEgW21h aWx0bzpmaW9uYS50cmFoZUBpbnRlbC5jb21dDQo+ID4gPiBTZW50OiAyMCBEZWNlbWJlciAyMDE3 IDIxOjAzDQo+ID4gPiBUbzogVmVybWEsIFNoYWxseSA8U2hhbGx5LlZlcm1hQGNhdml1bS5jb20+ OyBkZXZAZHBkay5vcmcNCj4gPiA+IENjOiBBdGhyZXlhLCBOYXJheWFuYSBQcmFzYWQgPE5hcmF5 YW5hUHJhc2FkLkF0aHJleWFAY2F2aXVtLmNvbT47DQo+ID4gPiBHdXB0YSwgQXNoaXNoIDxBc2hp c2guR3VwdGFAY2F2aXVtLmNvbT47IFNhaHUsIFN1bmlsYQ0KPiA+ID4gPFN1bmlsYS5TYWh1QGNh dml1bS5jb20+OyBEZSBMYXJhIEd1YXJjaCwgUGFibG8NCj4gPiA+IDxwYWJsby5kZS5sYXJhLmd1 YXJjaEBpbnRlbC5jb20+OyBDaGFsbGEsIE1haGlwYWwNCj4gPiA+IDxNYWhpcGFsLkNoYWxsYUBj YXZpdW0uY29tPjsgSmFpbiwgRGVlcGFrIEsNCj4gPGRlZXBhay5rLmphaW5AaW50ZWwuY29tPjsN Cj4gPiA+IEhlbWFudCBBZ3Jhd2FsIDxoZW1hbnQuYWdyYXdhbEBueHAuY29tPjsgUm95IFBsZWRn ZQ0KPiA+ID4gPHJveS5wbGVkZ2VAbnhwLmNvbT47IFlvdXJpIFF1ZXJyeSA8eW91cmkucXVlcnJ5 XzFAbnhwLmNvbT47DQo+IEFobWVkDQo+ID4gPiBNYW5zb3VyIDxhaG1lZC5tYW5zb3VyQG54cC5j b20+OyBUcmFoZSwgRmlvbmENCj4gPiA+IDxmaW9uYS50cmFoZUBpbnRlbC5jb20+DQo+ID4gPiBT dWJqZWN0OiBSRTogW1JGQyB2MV0gZG9jIGNvbXByZXNzaW9uIEFQSSBmb3IgRFBESw0KPiA+ID4N Cj4gPiA+IEhpIFNoYWxseSwNCj4gPiA+DQo+ID4gPiBJIHRoaW5rIHdlIGFyZSBhbG1vc3QgaW4g c3luYyBub3cgLSBhIGZldyBjb21tZW50cyBiZWxvdyB3aXRoIGp1c3Qgb25lDQo+ID4gPiBvcGVu IHF1ZXN0aW9uIHdoaWNoIEkgc3VzcGVjdCB3YXMgYSB0eXBvLg0KPiA+ID4gSWYgdGhpcyBpcyBv ayB0aGVuIG5vIG5lZWQgZm9yIGEgbWVldGluZyBJIHRoaW5rLg0KPiA+ID4gSW4gdGhpcyBjYXNl IHdpbGwgeW91IGlzc3VlIGEgdjIgb2YgdGhpcyBkb2MgPw0KPiA+ID4NCj4gPiA+DQo+ID4gPiA+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+IEZyb206IFZlcm1hLCBTaGFsbHkg W21haWx0bzpTaGFsbHkuVmVybWFAY2F2aXVtLmNvbV0NCj4gPiA+ID4gU2VudDogV2VkbmVzZGF5 LCBEZWNlbWJlciAyMCwgMjAxNyA3OjE1IEFNDQo+ID4gPiA+IFRvOiBUcmFoZSwgRmlvbmEgPGZp b25hLnRyYWhlQGludGVsLmNvbT47IGRldkBkcGRrLm9yZw0KPiA+ID4gPiBDYzogQXRocmV5YSwg TmFyYXlhbmEgUHJhc2FkDQo+IDxOYXJheWFuYVByYXNhZC5BdGhyZXlhQGNhdml1bS5jb20+Ow0K PiA+ID4gR3VwdGEsIEFzaGlzaA0KPiA+ID4gPiA8QXNoaXNoLkd1cHRhQGNhdml1bS5jb20+OyBT YWh1LCBTdW5pbGENCj4gPFN1bmlsYS5TYWh1QGNhdml1bS5jb20+Ow0KPiA+ID4gRGUgTGFyYSBH dWFyY2gsIFBhYmxvDQo+ID4gPiA+IDxwYWJsby5kZS5sYXJhLmd1YXJjaEBpbnRlbC5jb20+OyBD aGFsbGEsIE1haGlwYWwNCj4gPiA+IDxNYWhpcGFsLkNoYWxsYUBjYXZpdW0uY29tPjsgSmFpbiwg RGVlcGFrIEsNCj4gPiA+ID4gPGRlZXBhay5rLmphaW5AaW50ZWwuY29tPjsgSGVtYW50IEFncmF3 YWwNCj4gPiA+IDxoZW1hbnQuYWdyYXdhbEBueHAuY29tPjsgUm95IFBsZWRnZQ0KPiA+ID4gPiA8 cm95LnBsZWRnZUBueHAuY29tPjsgWW91cmkgUXVlcnJ5IDx5b3VyaS5xdWVycnlfMUBueHAuY29t PjsNCj4gPiA+IEFobWVkIE1hbnNvdXINCj4gPiA+ID4gPGFobWVkLm1hbnNvdXJAbnhwLmNvbT4N Cj4gPiA+ID4gU3ViamVjdDogUkU6IFtSRkMgdjFdIGRvYyBjb21wcmVzc2lvbiBBUEkgZm9yIERQ REsNCj4gPiA+ID4NCj4gPiA+ID4gSGkgRmlvbmENCj4gPiA+ID4NCj4gPiA+ID4gUGxlYXNlIHJl ZmVyIHRvIG15IGNvbW1lbnRzIGJlbG93IHdpdGggbXkgdW5kZXJzdGFuZGluZyBvbiB0d28NCj4g bWFqb3INCj4gPiA+IHBvaW50cyBPVVRfT0ZfU1BBQ0UgYW5kDQo+ID4gPiA+IFN0YXRlZnVsIERl c2lnbi4NCj4gPiA+ID4gSWYgeW91IGJlbGlldmUgd2Ugc3RpbGwgbmVlZCBhIG1lZXRpbmcgdG8g Y29udmVyZ2Ugb24gc2FtZSBwbGVhc2UNCj4gc2hhcmUNCj4gPiA+IG1lZXRpbmcgZGV0YWlscyB0 byBtZS4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2Ut LS0tLQ0KPiA+ID4gPiA+IEZyb206IFRyYWhlLCBGaW9uYSBbbWFpbHRvOmZpb25hLnRyYWhlQGlu dGVsLmNvbV0NCj4gPiA+ID4gPiBTZW50OiAxNSBEZWNlbWJlciAyMDE3IDIzOjExDQo+ID4gPiA+ ID4gVG86IFZlcm1hLCBTaGFsbHkgPFNoYWxseS5WZXJtYUBjYXZpdW0uY29tPjsgZGV2QGRwZGsu b3JnDQo+ID4gPiA+ID4gQ2M6IEF0aHJleWEsIE5hcmF5YW5hIFByYXNhZA0KPiA8TmFyYXlhbmFQ cmFzYWQuQXRocmV5YUBjYXZpdW0uY29tPjsNCj4gPiA+ID4gPiBDaGFsbGEsIE1haGlwYWwgPE1h aGlwYWwuQ2hhbGxhQGNhdml1bS5jb20+OyBEZSBMYXJhIEd1YXJjaCwgUGFibG8NCj4gPiA+ID4g PiA8cGFibG8uZGUubGFyYS5ndWFyY2hAaW50ZWwuY29tPjsgR3VwdGEsIEFzaGlzaA0KPiA+ID4g PiA+IDxBc2hpc2guR3VwdGFAY2F2aXVtLmNvbT47IFNhaHUsIFN1bmlsYQ0KPiA8U3VuaWxhLlNh aHVAY2F2aXVtLmNvbT47DQo+ID4gPiA+ID4gVHJhaGUsIEZpb25hIDxmaW9uYS50cmFoZUBpbnRl bC5jb20+OyBKYWluLCBEZWVwYWsgSw0KPiA+ID4gPiA+IDxkZWVwYWsuay5qYWluQGludGVsLmNv bT4NCj4gPiA+ID4gPiBTdWJqZWN0OiBSRTogW1JGQyB2MV0gZG9jIGNvbXByZXNzaW9uIEFQSSBm b3IgRFBESw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gSGkgU2hhbGx5LA0KPiA+ID4gPiA+DQo+ID4g PiA+ID4NCj4gPiA+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ID4g PiBGcm9tOiBWZXJtYSwgU2hhbGx5IFttYWlsdG86U2hhbGx5LlZlcm1hQGNhdml1bS5jb21dDQo+ ID4gPiA+ID4gPiBTZW50OiBUaHVyc2RheSwgRGVjZW1iZXIgNywgMjAxNyA1OjQzIEFNDQo+ID4g PiA+ID4gPiBUbzogVHJhaGUsIEZpb25hIDxmaW9uYS50cmFoZUBpbnRlbC5jb20+OyBkZXZAZHBk ay5vcmcNCj4gPiA+ID4gPiA+IENjOiBBdGhyZXlhLCBOYXJheWFuYSBQcmFzYWQNCj4gPiA+IDxO YXJheWFuYVByYXNhZC5BdGhyZXlhQGNhdml1bS5jb20+Ow0KPiA+ID4gPiA+IENoYWxsYSwgTWFo aXBhbA0KPiA+ID4gPiA+ID4gPE1haGlwYWwuQ2hhbGxhQGNhdml1bS5jb20+OyBEZSBMYXJhIEd1 YXJjaCwgUGFibG8NCj4gPiA+ID4gPiA8cGFibG8uZGUubGFyYS5ndWFyY2hAaW50ZWwuY29tPjsg R3VwdGEsIEFzaGlzaA0KPiA+ID4gPiA+ID4gPEFzaGlzaC5HdXB0YUBjYXZpdW0uY29tPjsgU2Fo dSwgU3VuaWxhDQo+ID4gPiA8U3VuaWxhLlNhaHVAY2F2aXVtLmNvbT4NCj4gPiA+ID4gPiA+IFN1 YmplY3Q6IFJFOiBbUkZDIHYxXSBkb2MgY29tcHJlc3Npb24gQVBJIGZvciBEUERLDQo+ID4gPiA+ ID4NCj4gPiA+ID4gPiAvL3NuaXAuLi4uDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4g UGxlYXNlIG5vdGUgYW55IHRpbWUgb3V0cHV0IGJ1ZmZlciByYW4gb3V0IG9mIHNwYWNlIGR1cmlu Zw0KPiB3cml0ZQ0KPiA+ID4gPiA+IHRoZW4NCj4gPiA+ID4gPiA+ID4gPiA+IG9wZXJhdGlvbiB3 aWxsIHR1cm4g4oCcU3RhdGVmdWzigJ0uwqAgU2VlDQo+ID4gPiA+ID4gPiA+ID4gPiA+IG1vcmUg b24gU3RhdGVmdWwgdW5kZXIgcmVzcGVjdGl2ZSBzZWN0aW9uLg0KPiA+ID4gPiA+ID4gPiA+ID4g W0Zpb25hXSBMZXQncyBjb21lIGJhY2sgdG8gdGhpcyBsYXRlci4gQW4gYWx0ZXJuYXRpdmUgaXMg dGhhdA0KPiA+ID4gPiA+ID4gPiBPVVRfT0ZfU1BBQ0UgaXMNCj4gPiA+ID4gPiA+ID4gPiA+IHJl dHVybmVkIGFuZCB0aGUgIGFwcGxpY2F0aW9uDQo+ID4gPiA+ID4gPiA+ID4gPiBtdXN0IHRyZWF0 IGFzIGEgZmFpbCBhbmQgcmVzdWJtaXQgdGhlIG9wZXJhdGlvbiB3aXRoIGEgbGFyZ2VyDQo+ID4g PiA+ID4gZGVzdGluYXRpb24NCj4gPiA+ID4gPiA+ID4gPiA+IGJ1ZmZlci4NCj4gPiA+ID4gPiA+ ID4gPg0KPiA+ID4gPiA+ID4gPiA+IFtTaGFsbHldIFRoZW4gSSBwcm9wb3NlIHRvIGFkZCBhIGZl YXR1cmUgZmxhZw0KPiA+ID4gPiA+ID4gPiAiRkZfU1VQUE9SVF9PVVRfT0ZfU1BBQ0UiIHBlciB4 Zm9ybSB0eXBlIGZvciBmbGV4aWJsZQ0KPiA+ID4gPiA+ID4gPiA+IFBNRCBkZXNpZ24uDQo+ID4g PiA+ID4gPiA+ID4gQXMgdGhlcmUncmUgZGV2aWNlcyB3aGljaCB0cmVhdCBpdCBhcyBlcnJvciBv biBjb21wcmVzc2lvbiBidXQNCj4gbm90DQo+ID4gPiBvbg0KPiA+ID4gPiA+ID4gPiBkZWNvbXBy ZXNzaW9uLg0KPiA+ID4gPiA+ID4gPiA+IElmIGl0IGlzIG5vdCBzdXBwb3J0ZWQsIHRoZW4gaXQg c2hvdWxkIGJlIHRyZWF0ZWQgYXMgZmFpbHVyZQ0KPiBjb25kaXRpb24NCj4gPiA+IGFuZA0KPiA+ ID4gPiA+IGFwcA0KPiA+ID4gPiA+ID4gPiBjYW4gcmVzdWJtaXQgb3BlcmF0aW9uLg0KPiA+ID4g PiA+ID4gPiA+IGlmIHN1cHBvcnRlZCwgYmVoYXZpb3VyICpUby1iZS1EZWZpbmVkKiB1bmRlciBz dGF0ZWZ1bC4NCj4gPiA+ID4gPiA+ID4gW0Zpb25hXSBDYW4geW91IGV4cGxhaW4gJ3R1cm4gc3Rh dGVmdWwnIHNvbWUgbW9yZT8NCj4gPiA+ID4gPiA+ID4gSWYgY29tcHJlc3NvciBydW5zIG91dCBv ZiBzcGFjZSBkdXJpbmcgc3RhdGVsZXNzIG9wZXJhdGlvbiwgZWl0aGVyDQo+ID4gPiBjb21wDQo+ ID4gPiA+ID4gb3INCj4gPiA+ID4gPiA+ID4gZGVjb21wLCBhbmQgdHVybnMgc3RhdGVmdWwsIGhv dyB3b3VsZCB0aGUgYXBwIGtub3c/IEFuZCB3aGF0DQo+ID4gPiB3b3VsZA0KPiA+ID4gPiA+IGJl IGluDQo+ID4gPiA+ID4gPiA+IHN0YXR1cywgY29uc3VtZWQgYW5kIHByb2R1Y2VkPw0KPiA+ID4g PiA+ID4gPiBDb3VsZCBpdCByZXR1cm4gT1VUX09GX1NQQUNFLCBhbmQgaWYgYm90aCBjb25zdW1l ZCBhbmQNCj4gcHJvZHVjZWQNCj4gPiA+ID09IDANCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBb U2hhbGx5XSBJZiBjb25zdW1lZCA9IHByb2R1Y2VkID09IDAsIHRoZW4gaXQncyBub3QgT1VUX09G X1NQQUNFDQo+ID4gPiA+ID4gY29uZGl0aW9uLg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4g dGhlbiB0aGUgd2hvbGUgb3AgbXVzdCBiZSByZXN1Ym1pdHRlZCB3aXRoIGEgYmlnZ2VyIG91dHB1 dA0KPiBidWZmZXIuDQo+ID4gPiBCdXQNCj4gPiA+ID4gPiBpZg0KPiA+ID4gPiA+ID4gPiBjb25z dW1lZCBhbmQgcHJvZHVjZWQgPiAwIHRoZW4gYXBwIGNvdWxkIHRha2UgdGhlIG91dHB1dCBhbmQN Cj4gPiA+IHN1Ym1pdA0KPiA+ID4gPiA+IG5leHQNCj4gPiA+ID4gPiA+ID4gb3ANCj4gPiA+ID4g PiA+ID4gY29udGludWluZyBmcm9tIGNvbnN1bWVkKzEuDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ ID4gPg0KPiA+ID4gPiA+ID4gW1NoYWxseV0gY29uc3VtZWQgYW5kIHByb2R1Y2VkIHdpbGwgKmFs d2F5cyogYmUgPiAwIGluIGNhc2Ugb2YNCj4gPiA+ID4gPiBPVVRfT0ZfU1BBQ0UuDQo+ID4gPiA+ ID4gPiBPVVRfT0ZfU1BBQ0UgbWVhbnMgb3V0cHV0IGJ1ZmZlciBleGhhdXN0ZWQgd2hpbGUgd3Jp dGluZyBkYXRhDQo+IGludG8NCj4gPiA+IGl0DQo+ID4gPiA+ID4gYW5kIFBNRCBtYXkgaGF2ZSBt b3JlIHRvDQo+ID4gPiA+ID4gPiB3cml0ZSB0byBpdC4gU28gaW4gc3VjaCBjYXNlLCBQTUQgc2hv dWxkIHNldA0KPiA+ID4gPiA+ID4gUHJvZHVjZWQgPSBjb21wbGV0ZSBsZW5ndGggb2Ygb3V0cHV0 IGJ1ZmZlcg0KPiA+ID4gPiA+ID4gU3RhdHVzID0gT1VUX09GX1NQQUNFDQo+ID4gPiA+ID4gPiBj b25zdW1lLCBmb2xsb3dpbmcgcG9zc2liaWxpdGllcyBoZXJlOg0KPiA+ID4gPiA+ID4gMS4gY29u c3VtZWQgPSBjb21wbGV0ZSBsZW5ndGggb2Ygc3JjIG1idWYgbWVhbnMgUE1EIGhhcyByZWFkDQo+ IGZ1bGwNCj4gPiA+IGlucHV0LA0KPiA+ID4gPiA+IE9SDQo+ID4gPiA+ID4gPiAyLiBjb25zdW1l ZCA9IHBhcnRpYWwgbGVuZ3RoIG9mIHNyYyBtYnVmIG1lYW5zIFBNRCBoYXMgcmVhZA0KPiBwYXJ0 aWFsDQo+ID4gPiBpbnB1dA0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IE9uIHNlZWluZyB0aGlz IHN0YXR1cywgYXBwIHNob3VsZCBjb25zdW1lIG91dHB1dCBhbmQgcmUtZW5xdWV1ZQ0KPiA+ID4g c2FtZQ0KPiA+ID4gPiA+IG9wIHdpdGggZW1wdHkgb3V0cHV0IGJ1ZmZlciBhbmQNCj4gPiA+ID4g PiA+IHNyYyA9IGNvbnN1bWVkKzEuDQo+ID4gPiA+ID4gW0Zpb25hXSBBcyB0aGlzIHdhcyBhIHN0 YXRlbGVzcyBvcCwgdGhlIFBNRCBjYW5ub3QgYmUgZXhwZWN0ZWQgdG8NCj4gaGF2ZQ0KPiA+ID4g PiA+IHN0b3JlZCB0aGUgaGlzdG9yeSBhbmQgc3RhdGUgYW5kIHNvDQo+ID4gPiA+ID4gY2Fubm90 IGJlIGV4cGVjdGVkIHRvIGNvbnRpbnVlIGZyb20gY29uc3VtZWQrMS4gVGhpcyB3b3VsZCBiZQ0K PiA+ID4gc3RhdGVmdWwNCj4gPiA+ID4gPiBiZWhhdmlvdXIuDQo+ID4gPiA+DQo+ID4gPiA+IFtT aGFsbHldIEV4YWN0bHkuDQo+ID4gPiA+DQo+ID4gPiA+ID4gQnV0IGl0IHNlZW1zIHlvdSBhcmUg c2F5aW5nIHRoYXQgZXZlbiBvbiBpbiB0aGlzIHN0YXRlbGVzcyBjYXNlIHlvdSdkDQo+IGxpa2UN Cj4gPiA+IHRoZQ0KPiA+ID4gPiA+IFBNRHMgd2hvIGNhbiBzdG9yZSBzdGF0ZQ0KPiA+ID4gPiA+ IHRvIGhhdmUgdGhlIG9wdGlvbiBvZiBjb252ZXJ0aW5nIHRvIHN0YXRlZnVsLiBTbw0KPiA+ID4g PiA+IGEgUE1EIHdoaWNoIGNhbiBzdXBwb3J0IHRoaXMgY291bGQgcmV0dXJuIE9VVF9PRl9TUEFD RSB3aXRoDQo+ID4gPiA+ID4gcHJvZHVjZWQvY29uc3VtZWQgYXMgeW91IGRlc2NyaWJlIGFib3Zl Lg0KPiA+ID4gPiA+IGEgUE1EIHdoaWNoIGNhbid0IHN1cHBvcnQgaXQgc2hvdWxkIHJldHVybiBh biBlcnJvci4NCj4gPiA+ID4gPiBUaGUgYXBwbCBjYW4gY29udGludWUgb24gZnJvbSBjb25zdW1l ZCsxIGluIHRoZSBmb3JtZXIgY2FzZSBhbmQNCj4gPiA+IHJlc3VibWl0DQo+ID4gPiA+ID4gdGhl IGZ1bGwgcmVxdWVzdA0KPiA+ID4gPiA+IHdpdGggYSBiaWdnZXIgYnVmZmVyIGluIHRoZSBsYXR0 ZXIgY2FzZS4NCj4gPiA+ID4gPiBJcyB0aGlzIHRoZSBiZWhhdmlvdXIgeW91J3JlIGxvb2tpbmcg Zm9yPw0KPiA+ID4gPiA+IElmIHNvIHRoZSBlcnJvciBjb3VsZCBiZSBzb21ldGhpbmcgbGlrZSBO RUVEX0JJR0dFUl9EU1RfQlVGPw0KPiA+ID4gPiA+IEhvd2V2ZXIsIHdvdWxkbid0IE9VVF9PRl9T UEFDRSB3aXRoIHByb2R1Y2VkPWNvbnN1bWVkPTANCj4gY29udmV5DQo+ID4gPiB0aGUNCj4gPiA+ ID4gPiBzYW1lIGluZm9ybWF0aW9uIG9uIHRoZSBBUEk/DQo+ID4gPiA+ID4gSXQgbWF5IGNvcnJl c3BvbmQgdG8gYW4gZXJyb3Igb24gdGhlIHVuZGVybHlpbmcgUE1ELCBidXQgd291bGQgaXQgYmUN Cj4gPiA+IHNpbXBsZXINCj4gPiA+ID4gPiBvbiB0aGUgY29tcHJlc3NkZXYgQVBJDQo+ID4gPiA+ ID4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gUGxlYXNlIG5vdGUgYXMgcGVyIGN1cnJlbnQgcHJv cG9zYWwsIGFwcCBzaG91bGQgY2FsbA0KPiA+ID4gPiA+IHJ0ZV9jb21wZGV2X2VucXVldWVfc3Ry ZWFtKCkgdmVyc2lvbiBvZiBBUEkgaWYgaXQNCj4gPiA+ID4gPiA+IGRvZXNuJ3Qga25vdyBvdXRw dXQgc2l6ZSBiZWZvcmVoYW5kLg0KPiA+ID4gPiA+IFtGaW9uYV0gVHJ1ZS4gQnV0IGFib3ZlIGlz IG9ubHkgdHJ5aW5nIHRvIGRlc2NyaWJlIGJlaGF2aW91ciBpbiB0aGUNCj4gPiA+IHN0YXRlbGVz cw0KPiA+ID4gPiA+IGVycm9yIGNhc2UuDQo+ID4gPiA+DQo+ID4gPiA+IFtTaGFsbHldIE9rLiBO b3cgSSBnb3QgcG9pbnQgb2YgY29uZnVzaW9uIHdpdGggdGVybSAndHVybnMgc3RhdGVmdWwnIGhl cmUuDQo+IE5vDQo+ID4gPiBpdCdzIG5vdCBsaWtlIHN0YXRlbGVzcyB0bw0KPiA+ID4gPiBzdGF0 ZWZ1bCBjb252ZXJzaW9uLg0KPiA+ID4gPiBTdGF0ZWxlc3Mgb3BlcmF0aW9uIGlzIHN0YXRlbGVz cyBvbmx5IGFuZCBpbiBzdGF0ZWxlc3Mgd2UgZG9uJ3QgZXhwZWN0DQo+ID4gPiBPVVRfT0ZfU1BB Q0UgZXJyb3IuIFNvLCBub3cgSQ0KPiA+ID4gPiBhbHNvIHVuZGVyc3RhbmQgd2hhdCB5b3UncmUg dHJ5aW5nIHRvIGltcGx5IHdpdGgNCj4gcHJvZHVjZWQ9Y29uc3VtZWQ9MC4NCj4gPiA+ID4NCj4g PiA+ID4gU28sIGxldCBtZSBzdW1tYXJpc2UgcmVkZWZpbml0aW9uIG9mIE9VVF9PRl9TUEFDRSBi YXNlZCBvbiBSRkMgdjM6DQo+ID4gPiA+DQo+ID4gPiA+IEludGVycHJldGluZyBPVVRfT0ZfU1BB Q0UgY29uZGl0aW9uOg0KPiA+ID4gPiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fg0K PiA+ID4gPiBBLiBTdGF0ZWxlc3MgT3BlcmF0aW9uczoNCj4gPiA+ID4gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ID4gPiBBLjEgSWYgb3BlcmF0aW9uIGlzIHN0YXRlbGVz cyBpLmUuIHJ0ZV9jb21wX29wLiBvcF90eXBlID09DQo+ID4gPiBSVEVfQ09NUF9PUF9TVEFURUxF U1MsIGFuZCBQTUQgcnVucyBvdXQNCj4gPiA+ID4gb2YgYnVmZmVyIGR1cmluZyBjb21wcmVzc2lv biBvciBkZWNvbXByZXNzaW9uIHRoZW4gaXQgaXMgYW4gZXJyb3INCj4gY29uZGl0aW9uDQo+ID4g PiBmb3IgUE1ELg0KPiA+ID4gPiBJdCB3aWxsIHJlc2V0IGl0c2VsZiBhbmQgcmV0dXJuIHdpdGgg cHJvZHVjZWQ9Y29uc3VtZWQ9MCB3aXRoIHN0YXR1cw0KPiA+ID4gT1VUX09GX1NQQUNFLiBPbiBz ZWVpbmcgdGhpcywNCj4gPiA+ID4gYXBwbGljYXRpb24gc2hvdWxkIHJlc3VibWl0IGZ1bGwgcmVx dWVzdCB3aXRoIGJpZ2dlciBvdXRwdXQgYnVmZmVyIHNpemUuDQo+ID4gPiA+DQo+ID4gPiA+IEIu IFN0YXRlZnVsIE9wZXJhdGlvbnM6DQo+ID4gPiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCj4gPiA+ID4gQi4xIElmIG9wZXJhdGlvbiBpcyBzdGF0ZWZ1bCBpLmUuIHJ0ZV9jb21w X29wLm9wX3R5cGUgPT0NCj4gPiA+IFJURV9DT01QX09QX1NUQVRFRlVMLCAgYW5kIFBNRCBydW5z IG91dA0KPiA+ID4gPiBvZiBidWZmZXIgZHVyaW5nIGNvbXByZXNzaW9uIG9yIGRlY29tcHJlc3Np b24sIHRoZW4gUE1EIHdpbGwgdXBkYXRlDQo+ID4gPiA+IHByb2R1Y2VkPWNvbnN1bWVkIChhcyBt ZW50aW9uZWQgYWJvdmUpDQo+ID4gPiBbRmlvbmFdID8gRGlkIHlvdSBtZWFuIHRvIHNheSAid2ls bCB1cGRhdGUgcHJvZHVjZWQgJiBjb25zdW1lZCIgPw0KPiA+DQo+ID4gW1NoYWxseV0gWWVzIHlv dSByaWdodCB0aGF0IHdhcyB0eXBvLiBJdCBzaG91bGQgYmUgcHJvZHVjZWQgJiBjb25zdW1lZC4N Cj4gPg0KPiA+ID4gSSB0aGluaw0KPiA+ID4gICAtIGNvbnN1bWVkIHdvdWxkIGJlIDw9IGlucHV0 IGxlbmd0aCAodHlwaWNhbGx5IDwpDQo+ID4gPiAgIC0gcHJvZHVjZWQgd291bGQgYmUgPD0gb3V0 cHV0IGJ1ZmZlciBsZW4gKHR5cGljYWxseSA9LCBidXQgY291bGQgYmUgYQ0KPiBmZXcNCj4gPiA+ IGJ5dGVzIGxlc3MpDQo+ID4gPiAgIC0gc3RhdHVzIHdvdWxkIGJlIE9VVF9PRl9TUEFDRQ0KPiA+ ID4gRG8geW91IGFncmVlPw0KPiA+ID4NCj4gPg0KPiA+IFtTaGFsbHldIFllcy4NCj4gPg0KPiA+ ID4gPiBhbmQgYXBwIHNob3VsZCByZXN1Ym1pdCBvcCB3aXRoIGlucHV0IGZyb20gY29uc3VtZWQr MQ0KPiA+ID4gPiBhbmQgb3V0cHV0IGJ1ZmZlciB3aXRoIGZyZWUgc3BhY2UuDQo+ID4gPiA+IFBs ZWFzZSBub3RlIGZvciBzdWNoIGNhc2UsIGFwcGxpY2F0aW9uIHNob3VsZCBhbGxvY2F0ZSBzdHJl YW0gdmlhIGNhbGwgdG8NCj4gPiA+IHJ0ZV9jb21wX3N0cmVhbV9jcmVhdGUoKSBhbmQNCj4gPiA+ ID4gYXR0YWNoIGl0IHRvIG9wIGFuZCBwYXNzIGl0IGFsb25nIGV2ZXJ5IHRpbWUgcGVuZGluZyBv cCBpcyBlbnF1ZXVlZCB1bnRpbA0KPiBvcA0KPiA+ID4gcHJvY2Vzc2luZyBpcyBjb21wbGV0ZSB3 aXRoDQo+ID4gPiA+IHN0YXR1cyBzZXQgdG8gU1VDQ0VTUy9GQUlMVVJFLg0KPiA+ID4gW0Zpb25h XSBBZ3JlZWQNCj4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAvL3NuaXAuLi4u Lg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+IEQu Mi4xLjIgU3RhdGVmdWwgb3BlcmF0aW9uIHN0YXRlIG1haW50ZW5hbmNlDQo+ID4gPiA+ID4gPiA+ ID4gPiA+IMKgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiBUaGlzIHNlY3Rpb24gc3RhcnRzIHdp dGggZGVzY3JpcHRpb24gb2Ygb3VyIHVuZGVyc3RhbmRpbmcNCj4gYWJvdXQNCj4gPiA+ID4gPiA+ ID4gPiA+IGNvbXByZXNzaW9uIEFQSSBzdXBwb3J0IGZvciBzdGF0ZWZ1bC4NCj4gPiA+ID4gPiA+ ID4gPiA+ID4gRGVwZW5kaW5nIHVwb24gdW5kZXJzdGFuZGluZyBidWlsZCB1cG9uIHRoZXNlIGNv bmNlcHRzLA0KPiB3ZQ0KPiA+ID4gd2lsbA0KPiA+ID4gPiA+ID4gPiBpZGVudGlmeQ0KPiA+ID4g PiA+ID4gPiA+ID4gcmVxdWlyZWQgZGF0YSBzdHJ1Y3R1cmUvcGFyYW0NCj4gPiA+ID4gPiA+ID4g PiA+ID4gdG8gbWFpbnRhaW4gaW4tcHJvZ3Jlc3Mgb3BlcmF0aW9uIGNvbnRleHQgYnkgUE1ELg0K PiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiBGb3Igc3RhdGVmdWwgY29t cHJlc3Npb24sIGJhdGNoIG9mIGRlcGVuZGVudCBwYWNrZXRzIHN0YXJ0cw0KPiBhdCBhDQo+ID4g PiA+ID4gcGFja2V0DQo+ID4gPiA+ID4gPiA+ID4gPiBoYXZpbmcNCj4gPiA+ID4gPiA+ID4gPiA+ ID4gUlRFX05PX0ZMVVNIL1JURV9TWU5DX0ZMVVNIIGZsdXNoIHZhbHVlIGFuZCBlbmQgYXQNCj4g cGFja2V0DQo+ID4gPiA+ID4gaGF2aW5nDQo+ID4gPiA+ID4gPiA+ID4gPiBSVEVfRlVMTF9GTFVT SC9GSU5BTF9GTFVTSC4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gaS5lLiBhcnJheSBvZiBvcGVyYXRp b25zIHdpbGwgY2Fycnkgc3RydWN0dXJlIGxpa2UgdGhpczoNCj4gPiA+ID4gPiA+ID4gPiA+ID4N Cj4gPiA+ID4gPiA+ID4gPiA+ID4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gLS0tLQ0KPiA+ID4gLS0t LS0NCj4gPiA+ID4gPiAtDQo+ID4gPiA+ID4gPiA+ID4gPiA+IHxvcDEubm9fZmx1c2ggfCBvcDIu bm9fZmx1c2ggfCBvcDMubm9fZmx1c2ggfA0KPiBvcDQuZnVsbF9mbHVzaHwNCj4gPiA+ID4gPiA+ ID4gPiA+ID4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gLS0tLQ0KPiA+ID4gLS0tLS0NCj4gPiA+ID4g PiAtDQo+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IFtGaW9uYV0gSSB0aGluayBp dCBuZWVkcyB0byBiZSBtb3JlIGNvbnN0cmFpbmVkIHRoYW4geW91cg0KPiBleGFtcGxlcw0KPiA+ ID4gPiA+IGJlbG93Lg0KPiA+ID4gPiA+ID4gPiBPbmx5IDEgb3BlcmF0aW9uIGZyb20gYSBzdHJl YW0gY2FuIGJlIGluIGEgYnVyc3QuIEFzIGVhY2gNCj4gb3BlcmF0aW9uDQo+ID4gPiA+ID4gPiA+ IGluIGEgc3RhdGVmdWwgc3RyZWFtIG11c3QgY29tcGxldGUsIGFzIG5leHQgb3BlcmF0aW9uIG5l ZWRzIHN0YXRlDQo+ID4gPiBhbmQNCj4gPiA+ID4gPiA+ID4gaGlzdG9yeQ0KPiA+ID4gPiA+ID4g PiBvZiBwcmV2aW91cyBvcGVyYXRpb24gdG8gYmUgY29tcGxldGUgYmVmb3JlIGl0IGNhbiBiZSBw cm9jZXNzZWQuDQo+ID4gPiA+ID4gPiA+IEFuZCBpZiBvbmUgZmFpbGVkLCBlLmcuIGR1ZSB0byBP VVRfT0ZfU1BBQ0UsIHRoaXMgc2hvdWxkIGFmZmVjdA0KPiA+ID4gPiA+ID4gPiB0aGUgZm9sbG93 aW5nIG9wZXJhdGlvbiBpbiB0aGUgc2FtZSBzdHJlYW0uDQo+ID4gPiA+ID4gPiA+IFdvcnN0IGNh c2UgdGhpcyBtZWFucyBidXJzdHMgb2YgMS4gQnVyc3QgY2FuIGJlID4xIGlmIHRoZXJlIGFyZQ0K PiA+ID4gbXVsdGlwbGUNCj4gPiA+ID4gPiA+ID4gaW5kZXBlbmRlbnQgc3RyZWFtcyB3aXRoIGF2 YWlsYWJsZSBkYXRhIGZvciBwcm9jZXNzaW5nLiBPciBpZg0KPiB0aGVyZSBpcw0KPiA+ID4gPiA+ ID4gPiBkYXRhIGF2YWlsYWJsZSB3aGljaCBjYW4gYmUgc3RhdGVsZXNzbHkgcHJvY2Vzc2VkLg0K PiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgYnVmZmVy cyBhdmFpbGFibGUgZnJvbSBhIHN0cmVhbSAsIHRoZW4gaW5zdGVhZA0KPiA+ID4gdGhleQ0KPiA+ ID4gPiA+IGNhbg0KPiA+ID4gPiA+ID4gPiBiZSBsaW5rZWQgdG9nZXRoZXIgaW4gYW4gbWJ1ZiBj aGFpbiBzZW50IGluIGEgc2luZ2xlIG9wZXJhdGlvbi4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4g PiA+ID4gVG8gaGFuZGxlIHRoZSBzZXF1ZW5jZXMgYmVsb3cgd291bGQgbWVhbiB0aGUgUE1EDQo+ ID4gPiA+ID4gPiA+IHdvdWxkIG5lZWQgdG8gc3RvcmUgb3BzIHNlbmRpbmcgb25lIGF0IGEgdGlt ZSB0byBiZSBwcm9jZXNzZWQuDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IEFzIHRoaXMg aXMgc2lnbmlmaWNhbnRseSBkaWZmZXJlbnQgZnJvbSB3aGF0IHlvdSBkZXNjcmliZSBiZWxvdywg SSdsbA0KPiB3YWl0DQo+ID4gPiBmb3INCj4gPiA+ID4gPiA+ID4gZnVydGhlciBmZWVkYmFjaw0K PiA+ID4gPiA+ID4gPiBiZWZvcmUgY29udGludWluZy4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4g PiBbU2hhbGx5XSBJIGNvbmN1ciB3aXRoIHlvdXIgdGhvdWdodHMuIEFuZCB0aGVzZSdyZSBhcmUg bm90DQo+IHNpZ25pZmljYW50bHkNCj4gPiA+ID4gPiBkaWZmZXJlbnQgZnJvbSB0aGUgY29uY2Vw dA0KPiA+ID4gPiA+ID4gcHJlc2VudGVkIGJlbG93Lg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ IFllcyBhcyB5b3UgbWVudGlvbmVkLCBldmVuIGZvciBidXJzdF9zaXplPjEgUE1EIHdpbGwgaGF2 ZSB0bw0KPiBzZXJpYWxpemUNCj4gPiA+ID4gPiBlYWNoIG9wIGludGVybmFsbHkgaS5lLg0KPiA+ ID4gPiA+ID4gSXQgaGFzIHRvIHdhaXQgZm9yIHByZXZpb3VzIHRvIGZpbmlzaCBiZWZvcmUgcHV0 dGluZyBuZXh0IGZvcg0KPiBwcm9jZXNzaW5nDQo+ID4gPiB3aGljaA0KPiA+ID4gPiA+IGlzDQo+ ID4gPiA+ID4gPiBhcyBnb29kIGFzIGFwcGxpY2F0aW9uIG1ha2luZyBzZXJpYWxpc2VkIGNhbGwg cGFzc2luZyBvbmUgb3AgYXQtYS10aW1lDQo+IG9yDQo+ID4gPiBpZg0KPiA+ID4gPiA+ID4gc3Ry ZWFtIGNvbnNpc3RzIG9mIG11bHRpcGxlIGJ1ZmZlcnMsIG1ha2luZyB0aGVpciBzY2F0dGVyLWdh dGhlciBsaXN0DQo+IGFuZA0KPiA+ID4gPiA+ID4gdGhlbiBlbnF1ZXVlIGl0IGFzIG9uZSBvcCBh dCBhIHRpbWUgd2hpY2ggaXMgbW9yZSBlZmZpY2llbnQgYW5kDQo+IGlkZWFsDQo+ID4gPiB1c2Fn ZS4NCj4gPiA+ID4gPiA+IEhvd2V2ZXIgaW4gb3JkZXIgdG8gYWxsb3cgZXh0ZW5zaWJpbGl0eSwg SSBkaWRuJ3QgbWVudGlvbiBsaW1pdGF0aW9uDQo+IG9uDQo+ID4gPiA+ID4gYnVyc3Rfc2l6ZS4N Cj4gPiA+ID4gPiA+IEJlY2F1c2UgSWYgUE1EIGRvZXNuJ3Qgc3VwcG9ydCBidXJzdF9zaXplID4g MSBpdCBjYW4gYWx3YXlzIHJldHVybg0KPiA+ID4gPiA+IG5iX2VucXVldWVkID0gMSwgaW4gd2hp Y2ggY2FzZQ0KPiA+ID4gPiA+ID4gYXBwIGNhbiBlbnF1ZXVlIG5leHQgaG93ZXZlciB3aXRoIGNv bmRpdGlvbiBpdCBzaG91bGQgd2FpdCBmb3INCj4gPiA+IHByZXZpb3VzDQo+ID4gPiA+ID4gdG8g Y29tcGxldGUNCj4gPiA+ID4gPiA+IGJlZm9yZSBtYWtpbmcgbmV4dCBlbnF1ZXVlIGNhbGwuDQo+ ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gU28sIGlmIHdlIHRha2Ugc2ltcGxlIGV4YW1wbGUgdG8g Y29tcHJlc3MgMmsgb2YgZGF0YSB3aXRoIHNyYyBtYnVmDQo+IHNpemUNCj4gPiA+ID0NCj4gPiA+ ID4gPiAxay4NCj4gPiA+ID4gPiA+IFRoZW4gd2l0aCBidXJzdF9zaXplPTEsIGV4cGVjdGVkIGNh bGwgZmxvdyB3b3VsZCBiZSh0aGlzIGlzIGp1c3Qgb25lDQo+ID4gPiBmbG93LA0KPiA+ID4gPiA+ IG90aGVyIHZhcmlhdGlvbnMgYXJlIGFsc28gcG9zc2libGUNCj4gPiA+ID4gPiA+IHN1Y2hhcyBt YWtpbmcgY2hhaW4gb2YgMWsgYnVmZmVycyBhbmQgcGFzcyB3aG9sZSBkYXRhIGluIG9uZSBnbyk6 DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gMS4gZmlsbCAxc3QgMWsgY2h1bmsgb2YgZGF0YSBp biBvcC5tc3JjDQo+ID4gPiA+ID4gPiAyLmVucXVldWVfc3RyZWFtICguLi4sIHxvcC5mbHVzaCA9 IG5vX2ZsdXNofCwgMSwgcHRyX3N0cmVhbSk7DQo+ID4gPiA+ID4gPiAzLmRlcXVldWVfYnVyc3Qo fG9wfCwxKTsNCj4gPiA+ID4gPiA+IDQucmVmaWxsIG5leHQgMWsgY2h1bmsgaW4gb3AubXNyYw0K PiA+ID4gPiA+ID4gNS5lbnF1ZXVlX3N0cmVhbSguLi4sfG9wLmZsdXNoID0gZnVsbF9mbHVzaHws IDEgLCBwdHJfc3RyZWFtKTsNCj4gPiA+ID4gPiA+IDYuZGVxdWV1ZV9idXJzdCh8b3B8LCAxKTsN Cj4gPiA+ID4gPiA+IDcuZW5kDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gU28sIEkgZG9u4oCZ dCBzZWUgbXVjaCBvZiBhIGNoYW5nZSBpbiBBUEkgY2FsbCBmbG93IGZyb20gaGVyZSB0byBkZXNp Z24NCj4gPiA+ID4gPiBwcmVzZW50ZWQgYmVsb3cgZXhjZXB0IG5iX29wcyA9IDEgaW4NCj4gPiA+ ID4gPiA+IGVhY2ggY2FsbC4NCj4gPiA+ID4gPiA+IEhvd2V2ZXIgSSBhbSBhc3N1bWluZyB0aGF0 IG9wIHN0cnVjdHVyZSB3b3VsZCBzdGlsbCBiZSBzYW1lIGZvcg0KPiA+ID4gc3RhdGVmdWwNCj4g PiA+ID4gPiBwcm9jZXNzaW5nIGkuZS4gaXQgd291bGQgc3RhcnQgd2l0aA0KPiA+ID4gPiA+ID4g b3AuZmx1c2ggdmFsdWUgPSBOTy9TWU5DX0ZMVVNIIGFuZCBlbmQgYXQgb3Agd2l0aCBmbHVzaCB2 YWx1ZSA9DQo+IEZVTEwNCj4gPiA+ID4gPiBGTFVTSC4NCj4gPiA+ID4gPiA+IEFyZSB3ZSBvbiBz YW1lIHBhZ2UgaGVyZT8NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBUaGFua3MNCj4gPiA+ID4g PiA+IFNoYWxseQ0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gW0Zpb25hXSBXZSBzdGlsbCBoYXZlIGEg ZGlmZmVyZW50IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN0YXRlZnVsIGZsb3cNCj4gPiA+IG5lZWRl ZA0KPiA+ID4gPiA+IG9uIHRoZSBBUEkuDQo+ID4gPiA+ID4gSeKAmWxsIHRyeSB0byBjbGFyaWZ5 IGFuZCBtYXliZSB3ZSBjYW4gc2V0IHVwIGEgbWVldGluZyB0byBkaXNjdXNzLg0KPiA+ID4gPiA+ IE15IGFzc3VtcHRpb25zIGZpcnN0Og0KPiA+ID4gPiA+IOKAoglPcmRlciBvZiBvcHMgb24gYSBx cCBtdXN0IGJlIG1haW50YWluZWQg4oCTIG9wcyBzaG91bGQgYmUNCj4gZGVxdWV1ZWQNCj4gPiA+ ID4gPiBpbiBzYW1lIHNlcXVlbmNlIHRoZXkgYXJlIGVucXVldWVkLg0KPiA+ID4gPiA+IOKAoglP cHMgZnJvbSBtYW55IHN0cmVhbXMgY2FuIGJlIGVucXVldWVkIG9uIHNhbWUgcXAuDQo+ID4gPiA+ ID4g4oCiCU9wcyBmcm9tIGEgcXAgbWF5IGJlIGZhbm5lZCBvdXQgdG8gYXZhaWxhYmxlIGh3IG9y IHN3DQo+IGVuZ2luZXMgYW5kDQo+ID4gPiA+ID4gcHJvY2Vzc2VkIGluIHBhcmFsbGVsLCBzbyBl YWNoIG9wIG11c3QgYmUgaW5kZXBlbmRlbnQuDQo+ID4gPiA+ID4g4oCiCVN0YXRlbGVzcyBhbmQg c3RhdGVmdWwgb3BzIGNhbiBiZSBlbnF1ZXVlZCBvbiB0aGUgc2FtZSBxcA0KPiA+ID4gPiA+DQo+ ID4gPiA+ID4gU3VibWl0dGluZyBhIGJ1cnN0IG9mIHN0YXRlbGVzcyBvcHMgdG8gYSBxcCBpcyBu byBwcm9ibGVtLg0KPiA+ID4gPiA+IFN1Ym1pdHRpbmcgbW9yZSB0aGFuIDEgb3AgYXQgYSB0aW1l IGZyb20gdGhlIHNhbWUgc3RhdGVmdWwgc3RyZWFtIHRvDQo+IGENCj4gPiA+IHFwIGlzDQo+ID4g PiA+ID4gYSBwcm9ibGVtLg0KPiA+ID4gPiA+IEV4YW1wbGU6DQo+ID4gPiA+ID4gQXBwbCBzdWJt aXRzIDIgb3BzIGluIHNhbWUgc3RyZWFtIGluIGEgYnVyc3QsIGVhY2ggaGFzIHNyYyBhbmQgZGVz dA0KPiA+ID4gbWJ1ZnMsDQo+ID4gPiA+ID4gaW5wdXQgbGVuZ3RoL29mZnNldCBhbmQNCj4gPiA+ ID4gPiByZXF1aXJlcyBjaGVja3N1bSB0byBiZSBjYWxjdWxhdGVkLg0KPiA+ID4gPiA+IFRoZSBm aXJzdCBvcCBtdXN0IGJlIHByb2Nlc3NlZCB0byBjb21wbGV0aW9uIGJlZm9yZSB0aGUgc2Vjb25k IGNhbg0KPiBiZQ0KPiA+ID4gPiA+IHN0YXJ0ZWQgYXMgaXQgbmVlZHMgdGhlIGhpc3RvcnkgYW5k IHRoZSBjaGVja3N1bSBzbyBmYXIuDQo+ID4gPiA+ID4gSWYgZWFjaCBkZXN0IG1idWYgaXMgYmln IGVub3VnaCBzbyBubyBvdmVyZmxvdywgZWFjaCBkZXN0IG1idWYgd2lsbA0KPiBiZQ0KPiA+ID4g PiA+IHBhcnRpYWxseSBmaWxsZWQuIFRoaXMgaXMgcHJvYmFibHkgbm90DQo+ID4gPiA+ID4gd2hh dOKAmXMgZGVzaXJlZCwgYW5kIHdpbGwgZm9yY2UgYW4gZXh0cmEgY29weSB0byBtYWtlIHRoZSBv dXRwdXQgZGF0YQ0KPiA+ID4gPiA+IGNvbnRpZ3VvdXMuDQo+ID4gPiA+ID4gSWYgdGhlIGRlc3Qg bWJ1ZiBpbiB0aGUgZmlyc3Qgb3AgaXMgdG9vIHNtYWxsLCB0aGVuIGRvZXMgdGhlIFBNRCBhbGxv Yw0KPiBtb3JlDQo+ID4gPiA+ID4gbWVtb3J5IGluIHRoZSBkZXN0IG1idWY/DQo+ID4gPiA+ID4g T3IgYWxsb2MgYW5vdGhlciBtYnVmPyBPciBmYWlsIGFuZCB0aGUgd2hvbGUgYnVyc3QgbXVzdCBi ZQ0KPiByZXN1Ym1pdHRlZD8NCj4gPiA+ID4gPiBPciBzdG9yZSB0aGUgMm5kIG9wLCB3YWl0LCBv biBzZWVpbmcgdGhlIE9VVF9PRl9TUEFDRSBvbiB0aGUgMXN0DQo+IG9wLA0KPiA+ID4gPiA+IG92 ZXJ3cml0ZSB0aGUgc3JjLCBkZXN0LCBsZW4gZXRjIG9mIHRoZSAybmQgb3ANCj4gPiA+ID4gPiB0 byBpbmNsdWRlIHRoZSB1bnByb2Nlc3NlZCBwYXJ0IG9mIHRoZSAxc3Qgb3A/DQo+ID4gPiA+ID4g SW4gdGhlIG1lYW50aW1lLCBhcmUgYWxsIG90aGVyIG9wcyBvbiB0aGUgcXAgYmxvY2tlZCBiZWhp bmQgdGhlc2U/DQo+ID4gPiA+ID4gRm9yIGh3IGFjY2VsZXJhdG9ycyBpdOKAmXMgd29yc2UsIGFz IFBNRCB3b3VsZCBub3JtYWxseSByZXR1cm4gb25jZQ0KPiBvcHMNCj4gPiA+IGFyZQ0KPiA+ID4g PiA+IG9mZmxvYWRlZCBhbmQgdGhlIGRlcXVldWUgd291bGQNCj4gPiA+ID4gPiBwYXNzIHByb2Nl c3NlZCBvcHMgc3RyYWlnaHQgYmFjayB0byB0aGUgYXBwbC4gSW5zdGVhZCwgdGhlIGVucXVldWUN Cj4gd291bGQNCj4gPiA+ID4gPiBuZWVkIHRvIGtpY2sgb2ZmIGEgdGhyZWFkIHRvDQo+ID4gPiA+ ID4gZGVxdWV1ZSBvcHMgYW5kIGZpbHRlciB0byBmaW5kIHRoZSBzdGF0ZWZ1bCBvbmUsIHN0b3Jp bmcgdGhlIG90aGVycyB0aWwNCj4gdGhlDQo+ID4gPiBuZXh0DQo+ID4gPiA+ID4gYXBwbGljYXRp b24gZGVxdWV1ZSBpcyBjYWxsZWQuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBBYm92ZSBzY2VuYXJp b3MgZG9u4oCZdCBsZW5kIHRoZW1zZWx2ZXMgdG8gYWNjZWxlcmF0aW5nIGEgcGFja2V0DQo+ID4g PiBwcm9jZXNzaW5nDQo+ID4gPiA+ID4gd29ya2xvYWQuDQo+ID4gPiA+ID4gSXQgcHVzaGVzIGEg d29ya2xvYWQgZG93biB0byBhbGwgUE1EcyB3aGljaCBJIGJlbGlldmUgYmVsb25ncyBhYm92ZQ0K PiB0aGlzDQo+ID4gPiBBUEkNCj4gPiA+ID4gPiBhcw0KPiA+ID4gPiA+IHRoYXQgd29yayBpcyBu b3QgYWJvdXQgb2ZmbG9hZGluZyB0aGUgY29tcHV0ZSBpbnRlbnNpdmUgY29tcHJlc3Npb24NCj4g PiA+IHdvcmsNCj4gPiA+ID4gPiBidXQNCj4gPiA+ID4gPiBhYm91dCB0aGUgc2VxdWVuY2luZyBv ZiBkYXRhIGFuZCBzbyBpcyBiZXR0ZXIgY29kZWQgb25jZSwgYWJvdmUgdGhlDQo+IEFQSQ0KPiA+ ID4gaW4NCj4gPiA+ID4gPiBhbiBhcHBsaWNhdGlvbiBsYXllcg0KPiA+ID4gPiA+IGNvbW1vbiB0 byBhbGwgUE1Ecy4gKFNlZSBOb3RlMSBpbg0KPiA+ID4gaHR0cDovL2RwZGsub3JnL21sL2FyY2hp dmVzL2Rldi8yMDE3LQ0KPiA+ID4gPiA+IE9jdG9iZXIvMDc4OTQ0Lmh0bWwgKQ0KPiA+ID4gPiA+ IElmIGFuIGFwcGxpY2F0aW9uIGhhcyBzZXZlcmFsIHBhY2tldHMgd2l0aCBkYXRhIGZyb20gYSBz dHJlYW0gdGhhdCBpdA0KPiBuZWVkcw0KPiA+ID4gdG8NCj4gPiA+ID4gPiAoZGUpY29tcHJlc3Mg c3RhdGVmdWxseSwNCj4gPiA+ID4gPiB3aGF0IGl0IHByb2JhYmx5IHdhbnRzIGlzIGZvciB0aGUg b3V0cHV0IGRhdGEgdG8gZmlsbCBlYWNoIG91dHB1dCBidWZmZXINCj4gPiA+ID4gPiBjb21wbGV0 ZWx5IGJlZm9yZSB3cml0aW5nIHRvIHRoZSBuZXh0IGJ1ZmZlci4NCj4gPiA+ID4gPiBDaGFpbmlu ZyB0aGUgc3JjIG1idWZzIGluIHRoZXNlIHBrdHMgaW50byBvbmUgY2hhaW4gYW5kIHNlbmRpbmcg YXMNCj4gb25lIG9wDQo+ID4gPiA+ID4gYWxsb3dzIHRoZSBvdXRwdXQNCj4gPiA+ID4gPiBkYXRh IHRvIGJlIHBhY2tlZCBpbnRvIGEgZGVzdCBtYnVmIG9yIG1idWYgY2hhaW4uDQo+ID4gPiA+ID4g SSB0aGluayB3aGF04oCZcyBuZWVkZWQgaXMgYSBsYXllciBhYm92ZSB0aGUgQVBJIHRvIGFjY3Vt dWxhdGUgaW5jb21pbmcNCj4gPiA+ID4gPiBwYWNrZXRzIHdoaWxlIHdhaXRpbmcgZm9yIHRoZQ0K PiA+ID4gPiA+IHByZXZpb3VzIHNldCBvZiBwYWNrZXRzIHRvIGJlIGNvbXByZXNzZWQuIEZvcndh cmRpbmcgdG8gdGhlIFBNRCB0bw0KPiA+ID4gcXVldWUNCj4gPiA+ID4gPiB0aGVyZSBpcyBub3Qg dGhlIHJpZ2h0IHBsYWNlDQo+ID4gPiA+ID4gdG8gYnVmZmVyIHRoZW0gYXMgdGhlIHF1ZXVlIHNo b3VsZCBiZSBwZXIgc3RyZWFtIHJhdGhlciB0aGFuIG9uIHRoZQ0KPiA+ID4gPiA+IGFjY2VsZXJh dG9yIGVuZ2luZeKAmXMgcXVldWUNCj4gPiA+ID4gPiB3aGljaCBoYXMgbG90cyBvZiBvdGhlciBp bmRlcGVuZGVudCBwYWNrZXRzLg0KPiA+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+IFtTaGFsbHld IE9rLiBJIGJlbGlldmUgSSBnZXQgaXQuDQo+ID4gPiA+IEluIGdlbmVyYWwgSSBhZ3JlZSB0byB0 aGlzIHByb3Bvc2FsLiBIb3dldmVyIGhhdmUgY29uY2VybiBvbiAxIHBvaW50DQo+IGhlcmUNCj4g PiA+IGkuZS4gb3JkZXIgbWFpbnRlbmFuY2UuIFBsZWFzZQ0KPiA+ID4gPiBzZWUgZnVydGhlciBm b3IgbW9yZSBleHBsYW5hdGlvbi4NCj4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFByb3Bv c2FsOg0KPiA+ID4gPiA+IOKAoiBPcHMgZnJvbSBhIHFwIG1heSBiZSBmYW5uZWQgb3V0IHRvIGF2 YWlsYWJsZSBodyBvciBzdyBlbmdpbmVzIGFuZA0KPiA+ID4gPiA+ICAgICBwcm9jZXNzZWQgaW4g cGFyYWxsZWwsIHNvIGVhY2ggb3AgbXVzdCBiZSBpbmRlcGVuZGVudC4NCj4gPiA+ID4gW1NoYWxs eV0gUG9zc2libGUgb25seSBpZiAgUE1EIHN1cHBvcnQgY29tYmluYXRpb24gb2YgU1cgYW5kIEhX DQo+ID4gPiBwcm9jZXNzaW5nLiBSaWdodD8NCj4gPiA+IFtGaW9uYV0gTm90IG5lY2Vzc2FyaWx5 LCBJbnRlbCBRdWlja0Fzc2lzdCBhY2NlbGVyYXRvcnMgYXJlIEhXIGFuZCBjYW4NCj4gPiA+IHBy b2Nlc3Mgb3BzIGZyb20gc2FtZSBxcCBpbiBwYXJhbGxlbA0KPiA+ID4NCj4gPiA+DQo+ID4gPiA+ ID4g4oCiIE9yZGVyIG9mIG9wcyBvbiBhIHFwIG11c3QgYmUgbWFpbnRhaW5lZCDigJMgb3BzIHNo b3VsZCBiZQ0KPiBkZXF1ZXVlZCBpbg0KPiA+ID4gPiA+IHNhbWUgc2VxdWVuY2UgdGhleSBhcmUg ZW5xdWV1ZWQuDQo+ID4gPiA+IFtTaGFsbHldIElmIGVhY2ggb3AgaXMgaW5kZXBlbmRlbnQgdGhl biB3aHkgZG8gd2UgbmVlZCB0byBtYWludGFpbg0KPiA+ID4gb3JkZXJpbmcuIFNpbmNlIHRoZXkn cmUgaW5kZXBlbmRlbnQNCj4gPiA+ID4gYW5kIHRodXMgY2FuIGJlIHByb2Nlc3NlZCBpbiBwYXJh bGxlbCBzbyB0aGV5IGNhbiB3ZWxsIGJlIHF1aXRlIG91dC1vZi0NCj4gb3JkZXINCj4gPiA+IGFu ZCBhdmFpbGFibGUgZm9yIGRlcXVldWUgYXMNCj4gPiA+ID4gc29vbiBhcyBjb21wbGV0ZWQuDQo+ ID4gPiA+IFNlcmlhbGl6aW5nIHRoZW0gd2lsbCBsaW1pdCBIVyB0aHJvdWdocHV0IGNhcGFiaWxp dHkuIEFuZCBJIGNhbiBlbnZpc2lvbg0KPiA+ID4gc29tZSBhcHAgbWF5IG5vdCBjYXJlIGFib3V0 DQo+ID4gPiA+IG9yZGVyaW5nIGp1c3QgY29tcGxldGlvbi4NCj4gPiA+ID4gU28gSSB3b3VsZCBz dWdnZXN0IGlmIGFwcGxpY2F0aW9uIG5lZWQgb3JkZXJpbmcgc2hvdWxkIHRhZyBlYWNoIG9wIHdp dGgNCj4gPiA+IHNvbWUgaWQgb3Igc2VyaWFsIG51bWJlciBpbiBvcA0KPiA+ID4gPiB1c2VyX2Rh dGEgYXJlYSB0byBpZGVudGlmeSBlbnF1ZXVlIG9yZGVyIE9SIHdlIG1heSBhZGQgZmxhZyBpbg0K PiA+ID4gZW5xdWV1ZV9idXJzdCgpIEFQSSB0byBlbmZvcmNlDQo+ID4gPiA+IHNlcmlhbGl6ZWQg ZGVxdWV1aW5nLCBpZiB0aGF0J3MgaGFyZCByZXF1aXJlbWVudCBvZiBhbnkuDQo+ID4gPiBbRmlv bmFdIE9rLCAgSSB0aGluayB5b3UncmUgcmlnaHQsIHRoaXMgcmVxdWlyZW1lbnQgaXNuJ3QgbmVl ZGVkLg0KPiA+ID4gSW4gc3RhdGVsZXNzIG9wcyBpdCdzIG5vdCBuZWVkZWQuDQo+ID4gPiBGb3Ig c3RhdGVmdWwgdGhlIGFwcGwgc2hvdWxkIG9ubHkgaGF2ZSBvbmUgb3AgcGVyIHN0cmVhbSBpbmZs aWdodCBhdCBhbnkNCj4gdGltZQ0KPiA+ID4gc28gbWFuYWdlcyB0aGUgb3JkZXJpbmcuDQo+ID4g PiBTbyB3ZSBjYW4gc3BlY2lmeSBvbiB0aGUgQVBJIHRoYXQgb3JkZXJpbmcgaXMgbm90IG5lY2Vz c2FyaWx5IG1haW50YWluZWQNCj4gb24NCj4gPiA+IHRoZSBxcCBhbmQgUE1EcyBtYXkgcmV0dXJu IHJlc3BvbnNlcyBvdXQtb2Ytb3JkZXIuDQo+ID4gPiBUaGUgcmVzcG9uc2liaWxpdHkgaXMgb24g dGhlIGFwcGxpY2F0aW9uIHRvIG1haW50YWluIG9yZGVyIGlmIGl0J3MgbmVlZGVkLg0KPiA+ID4g SWYgbGF0ZXIgd2UgZmluZCBzb21lIGFyZ3VtZW50IGZvciBtYWludGFpbmluZyBvcmRlciBJJ2Qg c3VnZ2VzdCBhDQo+ID4gPiBjb25maWd1cmF0aW9uIHBhcmFtIHBlciBxcCBvciBldmVuIHBlciBk ZXZpY2UgcmF0aGVyIHRoYW4gb24gdGhlDQo+ID4gPiBlbnF1ZXVlX2J1cnN0KCkNCj4gPg0KPiA+ IFtTaGFsbHldIERvbmUuDQo+ID4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gPiA+IOKAoiBTdGF0ZWxl c3MgYW5kIHN0YXRlZnVsIG9wcyBjYW4gYmUgZW5xdWV1ZWQgb24gdGhlIHNhbWUgcXANCj4gPiA+ ID4gPiDigKIgU3RhdGVsZXNzIGFuZCBzdGF0ZWZ1bCBvcHMgY2FuIGJlIGVucXVldWVkIGluIHRo ZSBzYW1lIGJ1cnN0DQo+ID4gPiA+ID4g4oCiIE9ubHkgMSBvcCBhdCBhIHRpbWUgbWF5IGJlIGVu cXVldWVkIHRvIHRoZSBxcCBmcm9tIGFueSBzdGF0ZWZ1bA0KPiA+ID4gc3RyZWFtLg0KPiA+ID4g PiA+IOKAoiBBIGJ1cnN0IGNhbiBoYXZlIG11bHRpcGxlIHN0YXRlZnVsIG9wcywgYnV0IGVhY2gg bXVzdCBiZSBmcm9tIGENCj4gPiA+IGRpZmZlcmVudA0KPiA+ID4gPiA+IHN0cmVhbS4NCj4gPiA+ ID4gPiDigKIgQWxsIG9wcyB3aWxsIGhhdmUgYSBzZXNzaW9uIGF0dGFjaGVkIOKAkyB0aGlzIHdp bGwgb25seSBjb250YWluDQo+IGltbXV0YWJsZQ0KPiA+ID4gZGF0YQ0KPiA+ID4gPiA+IHdoaWNo DQo+ID4gPiA+ID4gICAgY2FuIGJlIHVzZWQgYnkgbWFueSBvcHMsIGRldmljZXMgYW5kIG9yIGRy aXZlcnMgYXQgdGhlIHNhbWUgdGltZS4NCj4gPiA+ID4gPiDigKIgQWxsIHN0YXRlZnVsIG9wcyB3 aWxsIGhhdmUgYSBzdHJlYW0gYXR0YWNoZWQgZm9yIG1haW50YWluaW5nIHN0YXRlIGFuZA0KPiA+ ID4gPiA+ICAgIGhpc3RvcnksIHRoaXMgY2FuIG9ubHkgYmUgdXNlZCBieSBvbmUgb3AgYXQgYSB0 aW1lLg0KPiA+ID4gPiBbU2hhbGx5XSBTbywgeW91IG1lYW46DQo+ID4gPiA+DQo+ID4gPiA+IEEg c2luZ2xlIGVucXVlX2J1cnN0KCkgKmNhbiogY2FycnkgbXVsdGlwbGUgc3RyZWFtcy4gSS5FLiBU aGlzIGlzIGFsbG93ZWQNCj4gPiA+IGJvdGggaW4gYnVyc3Qgb3IgaW4gcXAgKHNheSwgd2hlbg0K PiA+ID4gPiBtdWx0aXBsZSB0aHJlYWRzIGNhbGwgZW5xdWVfYnVyc3QoKSBvbiBzYW1lIHFwKQ0K PiA+ID4gPg0KPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCj4gLS0tLS0NCj4gPiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KPiA+ID4gPiAgICAgICAgICAgICAgIGVucXVlX2J1cnN0ICh8b3AxLm5vX2ZsdXNoIHwgb3Ay Lm5vX2ZsdXNoIHwgb3AzLmZsdXNoX2ZpbmFsIHwNCj4gPiA+IG9wNC5ub19mbHVzaCB8IG9wNS5u b19mbHVzaCB8KQ0KPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQo+IC0tLS0NCj4gPiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCj4gPiA+ID4gV2hlcmUsDQo+ID4gPiA+IEFsbCBvcDEsIG9wMi4uLm9wNSBiZWxvbmdz IHRvIGFsbCAqZGlmZmVyZW50KiBzdHJlYW1zLiBPcDMgY2FuIGJlDQo+ID4gPiBzdGF0ZWxlc3Mv c3RhdGVmdWwgZGVwZW5kaW5nIHVwb24NCj4gPiA+ID4gb3BfdHlwZSB2YWx1ZSBhbmQgZWFjaCBj YW4gaGF2ZSAqc2FtZSBvciBkaWZmZXJlbnQqIHNlc3Npb25zLg0KPiA+ID4gW0Zpb25hXSBFeGFj dGx5DQo+ID4gPg0KPiA+ID4gPiBJZiBJIHVuZGVyc3RhbmQgdGhpcyByaWdodCwgdGhlbiB5ZXMg aXQgbG9va3MgZ29vZCB0byBtZS4gSG93ZXZlciB0aGlzDQo+IGFsc28NCj4gPiA+IGJyaW5nIG9u ZSBtaW5vciBwb2ludCBmb3INCj4gPiA+ID4gZGlzY3Vzc2lvbiBidXQgSSB3b3VsZCB3YWl0IHRv IGluaXRpYXRlIHRoYXQgdW50aWwgd2UgY2xvc2Ugb24gY3VycmVudA0KPiBvcGVuDQo+ID4gPiBw b2ludHMuDQo+ID4gPiA+DQo+ID4gPiA+IFRoYW5rcw0KPiA+ID4gPiBTaGFsbHkNCj4gPg0KPiA+ IFtTaGFsbHldIFNpbmNlIHdlIGFyZSBpbiBzeW5jIG5vdy4gU28gSSB3aWxsIGJyaW5nIHVwIGFu b3RoZXIgcG9pbnQgZm9yDQo+IGRpc2N1c3Npb24uDQo+ID4NCj4gPiBJJ20gdGhpbmtpbmcgcHJv YmFibHkgd2Ugc2hvdWxkIGhhdmUgc3RyZWFtIHJlZ2FyZGxlc3Mgb2Ygb3BfdHlwZSB3aGVyZQ0K PiBpdCBzaG91bGQgYmUgbWFya2VkDQo+ID4gKm1hbmRhdG9yeSogZm9yIHN0YXRlZnVsIGJ1dCAq b3B0aW9uYWwqICAob3IgbWF5IGJlIG1hbmRhdG9yeSkgZm9yDQo+IHN0YXRlbGVzcyBhcyBoYXZp bmcgaXQgZm9yIHN0YXRlbGVzcyBtYXkNCj4gPiBoZWxwIHNvbWUgUE1EIHRvIGdhaW4gcGVyZm9y bWFuY2UgaW4gZGF0YSBwYXRoIGFuZCByZWFzb24gaXMgaGVyZToNCj4gPg0KPiA+IEN1cnJlbnRs eSB3ZSBzZWUgc3RyZWFtIGFzIHJlc291cmNlIHdoaWNoIG1haW50YWluIHN0YXRlcyAoZXQgZWwp IGZvcg0KPiBzdGF0ZWZ1bCBwcm9jZXNzaW5nIGJ1dCB0aGlzIGlzIGFsc28gYQ0KPiA+IHBsYWNl aG9sZGVyIHdoZXJlIFBNRCBjYW4gY2hvb3NlIHRvIGRvIG9uZS10aW1lIHJlc291cmNlIHNldHVw DQo+IGNvbW1vbiB0byBib3RoIG9wX3R5cGVzIChzdWNoIGFzDQo+ID4gYWxsb2NhdGluZyBpbnN0 cnVjdGlvbiBmcm9tIGl0cyBpbnRlcm5hbCBwb29sIGFuZCBpbml0aWFsaXplIGl0IHdpdGggc2Vz c2lvbg0KPiBwYXJhbXMpLg0KPiA+IFNvIGZvciBzdWNoIFBNRCBkZXNpZ25zLCBpdCB3aWxsIGJl IGJlbmVmaWNpYWwgdG8gdXNlIHN0cmVhbSBmb3Igc3RhdGVsZXNzIGFzDQo+IHdlbGwgYXMgaXQg d2lsbCBoZWxwIG1pbmltaXplDQo+ID4gaW5zdHJ1Y3Rpb24gc2V0dXAgdGltZSBvbiBkYXRhIHBh dGggYXMgYWxsIDEtdGltZSBvcGVyYXRpb25zIHdpbGwgYmUgZG9uZSBpbg0KPiBzdHJlYW1fY3Jl YXRlKCkuDQo+ID4gSW4gY2FzZSBvZiBzdGF0ZWxlc3MsIGlmIHN0cmVhbSBpcyBwcmVzZW50IHdv dWxkIG1lYW4gaXQgaXMgYXZhaWxhYmxlIGZvciBuZXh0DQo+IHVzZSBhcyBzb29uIGFzIGxhc3Qg YXNzb2NpYXRlZA0KPiA+IG9wIGlzIGRlcXVldWVkIGFzIGl0IGhvbGQgbm8gY29udGV4dCBvZiBs YXN0IG9wIGJ1dCBjb21tb24gcmVzb3VyY2VzIHJlLQ0KPiB1c2VhYmxlIGZvciBuZXh0IG9wLg0K PiBbRmlvbmFdIFdlIGludGVuZCB0byB1c2Ugc2Vzc2lvbiBwcml2YXRlIGFyZWEgZm9yIHNpbWls YXIuICBCdXQgSSBkb24ndCBzZWUgYQ0KPiBwcm9ibGVtIHdpdGggd2hhdCB5b3Ugc3VnZ2VzdC4N Cj4gV2UgY2FuIGVpdGhlciBhZGQgYSBjYXBhYmlsaXR5IHdoaWNoIGFwcGwgbXVzdCBjaGVjayB0 byBrbm93IGlmIGl0IHNob3VsZCBjYWxsDQo+IHN0cmVhbV9jcmVhdGUoKSBmb3IgU1RBVEVMRVNT IHNlc3Npb25zIE9SIHdlIGNvdWxkIHNheSBzdHJlYW1fY3JlYXRlDQo+IHNob3VsZCBiZSBjYWxs ZWQgZm9yIGV2ZXJ5IHNlc3Npb24sIGlmIGl0IHJldHVybnMgbm9uLU5VTEwgZm9yIHN0YXRlbGVz cyBzZXNzaW9uDQo+IHRoZW4gaXQgc2hvdWxkIGJlIGF0dGFjaGVkIHRvIGV2ZXJ5IG9wIHNlbnQg dG8gdGhlIHNlc3Npb24/DQo+IA0KDQpbU2hhbGx5XSBJIHdvdWxkIHByZWZlciBmb3Igc2Vjb25k IG9wdGlvbiBpLmUgInNheSBzdHJlYW1fY3JlYXRlIHNob3VsZCBiZSBjYWxsZWQgZm9yIGV2ZXJ5 IHNlc3Npb24iLg0KSXQgd2lsbCBnaXZlIG1vcmUgZmxleGliaWxpdHkgdG8gUE1EIGFzIHRoZW4g aXQgY2FuIGRlY2lkZSBpdCdzIHN1cHBvcnQgcGVyIHNlc3Npb24uIEFsc28sIGl0IGtlZXBzIHNw ZWMgc2ltcGxlLg0KDQo+IA0KPiA+IEFwYXJ0LCB0aGVyZSdzIGFub3RoZXIgcG9pbnQuIFdlIGNh biBlbmFibGUgQVBJIHNwZWMgdG8gbGV2ZXJhZ2UgbWVtcG9vbA0KPiBvYmplY3QgY2FjaGUgY29u Y2VwdCBieQ0KPiA+IGFsbG93aW5nIFBNRCB0byBhbGxvY2F0ZSBzdHJlYW0gZnJvbSBvcCBwb29s IGFzIHBlci1vcCBwcml2YXRlIGRhdGEgaS5lLg0KPiBlYWNoIG9iamVjdCBlbHRfc2l6ZSA9DQo+ ID4gc2l6ZW9mKHJ0ZV9jb21wX29wKSArIHVzZXJfc2l6ZSArIHN0cmVhbV9zaXplLg0KPiA+IFRo aXMgd291bGQgaGVscCBQTUQgcmVkdWNlIG1lbW9yeSBhY2Nlc3MgdGltZSBpZiBjYWNoaW5nIGlz IGVuYWJsZWQgYXMNCj4gZWFjaCBvcCBzdHJlYW0gcmVzaWRlIHdpdGggaXQgaW4NCj4gPiBjYWNo ZSByYXRoZXIgdGhhbiBoYXZpbmcgdGhlbSBmcm9tIGRpZmZlcmVudCBwb29sIHdpdGggZGlmZmVy ZW50IHBvbGljaWVzLg0KPiBbRmlvbmFdIEknbSBub3Qgc3VyZSBhYm91dCB0aGlzLiBUaGUgaW50 ZW50aW9uIHdhcyB0aGUgb3AtcG9vbCB3b3VsZCBiZQ0KPiBkZXZpY2UtaW5kZXBlbmRlbnQuDQo+ IFNvIHRoZSBhcHBsIHdvdWxkIGhhdmUgdG8gcmV0cmlldmUgdGhlIHNpemUgb2Ygc3RyZWFtIGZy b20gYWxsIFBNRHMgYW5kIHNpemUNCj4gZm9yIHRoZSBsYXJnZXN0Lg0KPiBTbyBjb3VsZCBiZSB3 YXN0ZWZ1bCBmb3IgbWVtb3J5Lg0KPiBGb3Igc3RhdGVmdWwgSSBjYW4gc2VlLCBpZiBtZW1vcnkg d2FzIG5vdCBhbiBpc3N1ZSB0aGlzIHdvdWxkIGJlIGdvb2QsIGFzIG9uZQ0KPiBvcCBjb3VsZCBi ZSByZS11c2VkLCBzdHJlYW0gd291bGQgYmUgYWxyZWFkeSBhdHRhY2hlZC4NCj4gQnV0IGZvciBz dGF0ZWxlc3MsIEkgdGhpbmsgeW91J3JlIHN1Z2dlc3RpbmcgdGhlcmUgd291bGQgYmUgb25lIHN0 cmVhbSB1c2VkDQo+IGJ5IG1hbnkgb3BzIGluIGEgYnVyc3Qgb3IgZXZlbiBpbiBkaWZmZXJlbnQg YnVyc3RzLiBTbyBob3cgY291bGQgdGhhdCB3b3JrIGFzDQo+IGVhY2ggb3Agd291bGQgaGF2ZSBh IHNlcGFyYXRlIHN0cmVhbT8NCg0KW1NoYWxseV0gTm8gdGhhdOKAmXMgbm90IHdoYXQgSSBpbnRl bmQuIEVhY2ggb3Agd291bGQgc3RpbGwgYmUgc2VwYXJhdGUgc3RyZWFtLiBPbmx5IHJlcXVpcmVt ZW50IEkgcmFpc2VkIHRoYXQsIHN0cmVhbSBjb3VsZCBhbHNvIGJlIGtlcHQgaW4gcGVyLW9wIHBy aXZhdGUgYXJlYSB0byB1dGlsaXplIG9iamVjdCBjYWNoaW5nIGJlY2F1c2UgaW4gYW55IGNhc2Ug ZWFjaCBvcCB1c2VzIHNlcGFyYXRlIHN0cmVhbS4gDQpJdCBjYW4gYmUgaW1wbGVtZW50ZWQgaW4g bXVsdGlwbGUgd2F5cyAobWF5YmUgYWRkIGFub3RoZXIgQVBJICwgc2F5IGFsbG9jX3N0cmVhbV9m cm9tX29wX3ByaXZfYXJlYSgpIG9yIGFkZCBzaW1wbHkgZ2V0X3N0cmVhbV9zaXplKCkpLiANClN1 cmVseSwgdGhpcyBtYWtlcyBvcCBwb29sIGRldmljZSBkZXBlbmRlbnQgc28gSSBzZWUgaXQgYXMg YWRkaXRpb25hbCBmZWF0dXJlIHRvIG1lZXQgc3BlY2lmaWMgcmVxdWlyZW1lbnQgb2YgYXBwIHVz aW5nIG1lbXBvb2wgY2FjaGluZy4NCkhvd2V2ZXIgSSBkbyBub3Qgc2VlIGl0IGFzIGJsb2NrZXIg dG8gZnJlZXplIG9uIGN1cnJlbnQgc3BlYyBhbmQgdGh1cyBzdWdnZXN0IHRvIGxlYXZlIGl0IG9w ZW4gZm9yIGRpc2N1c3Npb24gYW5kIGFkZCBsYXRlciBhcyBpbmNyZW1lbnRhbCBwYXRjaCBpZiB3 ZSBzZWUgdmFsdWUgaW4gaXQuDQoNClRoYW5rcw0KU2hhbGx5DQoNCj4gDQo+IA0KPiA+IElmIGFn cmVlZCwgdGhlbiBpdCBjYW4gYmUgZW5hYmxlZCBpbiBBUEkgc3BlYyBzdWNoIGFzICh0aGlzIGlz IGp1c3QgYSBwcm9wb3NhbCwNCj4gdGhlcmUgY291bGQgYmUgb3RoZXIgIC4uKQ0KPiA+DQo+ID4g LSBNb2RpZnkgc3RyZWFtX2NyZWF0ZSBzcGVjIGZvbGxvd2luZzoNCj4gPg0KPiA+IHN0cnVjdCBy dGVfY29tcF9vcF9wb29sX3ByaXZhdGUgew0KPiA+IAl1aW50MTZfdCB1c2VyX3NpemU7DQo+ID4g CS8qKjwgU2l6ZSBvZiBwcml2YXRlIHVzZXIgZGF0YSB3aXRoIGVhY2ggb3BlcmF0aW9uLiAqLw0K PiA+IAl1aW50MTZfdCBkZXZfcHJpdl9kYXRhX3NpemU7DQo+ID4gCS8qKjwgU2l6ZSBvZiBkZXZp Y2UgcHJpdmF0ZSBkYXRhIHdpdGggZWFjaCBvcGVyYXRpb24uICovDQo+ID4gfTsNCj4gPg0KPiA+ IGludCBydGVfY29tcF9zdHJlYW1fY3JlYXRlKHVpbnQzMl90IGRldl9pZCwNCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0ZV9jb21wX3Nlc3Npb24g KnNlc3MsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB2b2lkICoqc3RyZWFtLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcnRlX21lbXBvb2wgKm9wX3Bvb2wgLyogb3B0aW9uYWwgKi8pOw0KPiA+DQo+ ID4gLSBUaGlzIHdpbGwgbWFwIHRvIFBNRCBvcHMgc3RyZWFtX2NyZWF0ZSgpLiBIZXJlIGlmIG9w X3Bvb2wgIT0gTlVMTCwgdGhlbg0KPiBQTUQgY2FuIHJlLWFsbG9jYXRlIG9wIHBvb2wNCj4gPiB3 aXRoIG5ldyBlbHRfc2l6ZSA9IHJ0ZV9jb21wX29wICsgb3BfcHJpdmF0ZS0+dXNlcl9zaXplICsN Cj4gZGV2X3ByaXZhdGVfc3RyZWFtX3NpemUgc28gdGhhdCBzdHJlYW0gcmVzaWRlDQo+ID4gaW4g b3AgcHJpdmF0ZSBhcmVhLg0KPiA+DQo+ID4gT3IsIHdlIG1heSBhZGQgYW5vdGhlciBBUEkgYWx0 b2dldGhlciB0byBkbyBzdHJlYW0gYWxsb2NhdGlvbnMgZnJvbQ0KPiBvcF9wb29sIHN1Y2ggYXMN Cj4gPiBydGVfY29tcF9zdHJlYW1fY3JlYXRlX2Zyb21fcG9vbCguLi4pOw0KPiA+DQo+ID4gSSB3 aWxsIGlzc3VlIFJGQyBEb2MgdjIgYWZ0ZXIgeW91ciBmZWVkYmFjayB0aGVzZS4NCj4gW0Zpb25h XSBXb3VsZCBpdCBiZSBwcmVmZXJhYmxlIHRvIGlzc3VlIHYyIGV2ZW4gd2l0aCBkZXNpZ24gc28g ZmFyPyBUbyBnaXZlDQo+IEFobWVkIGFuZCB0aGUgY29tbXVuaXR5IGEgYmV0dGVyIGRvYyB0byBy ZXZpZXcuIEFsc28gSSdtIG9uIGhvbGlkYXlzIHVudGlsDQo+IGFmdGVyIENocmlzdG1hcyBzbyB3 aWxsIG5vdCBnZXQgYmFjayB0byB0aGlzIHRpbCA4dGggSmFudWFyeS4NCj4gDQo+IA0KPiANCj4g PiBUaGFua3MNCj4gPiBTaGFsbHkNCj4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4g PiBDb2RlIGFydGVmYWN0czoNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IGVudW0gcnRlX2NvbXBfb3Bf dHlwZSB7DQo+ID4gPiA+ID4gICAgIFJURV9DT01QX09QX1NUQVRFTEVTUywNCj4gPiA+ID4gPiAg ICAgUlRFX0NPTVBfT1BfU1RBVEVGVUwNCj4gPiA+ID4gPiB9DQo+ID4gPiA+ID4NCj4gPiA+ID4g PiBBZGQgZm9sbG93aW5nIHRvIHJ0ZV9jb21wX29wOg0KPiA+ID4gPiA+ICAgICBlbnVtIHJ0ZV9j b21wX29wX3R5cGUgb3BfdHlwZTsNCj4gPiA+ID4gPiAgICAgdm9pZCAqIHN0cmVhbV9wcml2YXRl Ow0KPiA+ID4gPiA+ICAgICAvKiBsb2NhdGlvbiB3aGVyZSBQTUQgbWFpbnRhaW5zIHN0cmVhbSBz dGF0ZSDigJMgb25seSByZXF1aXJlZCBpZg0KPiA+ID4gb3BfdHlwZSBpcw0KPiA+ID4gPiA+IFNU QVRFRlVMLCBlbHNlIHNldCB0byBOVUxMICovDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBBcyBzaXpl IG9mIHN0cmVhbSBkYXRhIHdpbGwgdmFyeSBkZXBlbmRpbmcgb24gUE1ELCBlYWNoIFBNRCBvcg0K PiBkZXZpY2UNCj4gPiA+ID4gPiBzaG91bGQgYWxsb2NhdGUgJiBtYW5hZ2UgaXRzIG93biBtZW1w b29sLiBBc3NvY2lhdGVkIEFQSXMgYXJlOg0KPiA+ID4gPiA+IHJ0ZV9jb21wX3N0cmVhbV9jcmVh dGUodWludDhfdCBkZXZfaWQsIHJ0ZV9jb21wX3Nlc3Npb24gKnNlc3MsDQo+IHZvaWQNCj4gPiA+ ICoqDQo+ID4gPiA+ID4gc3RyZWFtKTsNCj4gPiA+ID4gPiAvKiBUaGlzIHNob3VsZCBhbGxvYyBh IHN0cmVhbSBmcm9tIHRoZSBkZXZpY2XigJlzIG1lbXBvb2wgYW5kIGluaXRpYWxpc2UNCj4gaXQu DQo+ID4gPiBUaGlzDQo+ID4gPiA+ID4gaGFuZGxlIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBQTUQg d2l0aCBldmVyeSBvcCBpbiB0aGUgc3RyZWFtLiBRLg0KPiBTaG91bGQNCj4gPiA+ID4gPiBxcF9p ZCBhbHNvIGJlIGFkZGVkLCB3aXRoIGNvbnN0cmFpbnQgdGhhdCBhbGwgb3BzIGluIHRoZSBzYW1l IHN0cmVhbQ0KPiA+ID4gc2hvdWxkDQo+ID4gPiA+ID4gYmUgc2VudCB0byB0aGUgc2FtZSBxcD8g ICovDQo+ID4gPiA+ID4gcnRlX2NvbXBfc3RyZWFtX2ZyZWUodWludDhfdCBkZXZfaWQsIHZvaWQg KiBzdHJlYW0pOw0KPiA+ID4gPiA+IC8qIFRoaXMgc2hvdWxkIGNsZWFyIHRoZSBzdHJlYW0gYW5k IHJldHVybiBpdCB0byB0aGUgZGV2aWNl4oCZcyBtZW1wb29sDQo+ICovDQo+ID4gPiA+ID4NCj4g PiA+ID4gPiBBbGwgb3BzIGFyZSBlbnF1ZXVlZC9kZXF1ZXVlZCB0byBkZXZpY2UgJiBxcCB1c2lu ZyBzYW1lDQo+ID4gPiA+ID4gcnRlX2NvbXByZXNzZGV2X2VucXVldWVfYnVyc3QoKS/igKZkZXF1 ZXVlX2J1cnN0Ow0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gUmUgZmx1c2ggZmxhZ3MsIHN0YXRlZnVs IHN0cmVhbSB3b3VsZCBzdGFydCB3aXRoIG9wLmZsdXNoID0gTk9ORSBvcg0KPiBTWU5DDQo+ID4g PiBhbmQNCj4gPiA+ID4gPiBlbmQgd2l0aCBGVUxMIG9yIEZJTkFMDQo+ID4gPiA+ID4gU1RBVEVM RVNTIG9wcyB3b3VsZCBqdXN0IHVzZSBlaXRoZXIgRlVMTCBvciBGSU5BTA0KPiA+ID4gPiA+DQo+ ID4gPiA+ID4NCj4gPiA+ID4gPiBMZXQgbWUga25vdyBpZiB5b3Ugd2FudCB0byBzZXQgdXAgYSBt ZWV0aW5nIC0gaXQgbWlnaHQgYmUgYSBtb3JlDQo+ID4gPiBlZmZlY3RpdmUNCj4gPiA+ID4gPiB3 YXkgdG8NCj4gPiA+ID4gPiBhcnJpdmUgYXQgYW4gQVBJIHRoYXQgd29ya3MgZm9yIGFsbCBQTURz Lg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gSSdsbCBzZW5kIG91dCBhIHYzIHRvZGF5IHdpdGggYWJv dmUgcGx1cyB1cGRhdGVzIGJhc2VkIG9uIGFsbCB0aGUgb3RoZXINCj4gPiA+ID4gPiBmZWVkYmFj ay4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFJlZ2FyZHMsDQo+ID4gPiA+ID4gRmlvbmENCg0K