From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4398BC433E0 for ; Wed, 20 Jan 2021 07:36:20 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id DB23323142 for ; Wed, 20 Jan 2021 07:36:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DB23323142 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 4D9036E12E; Wed, 20 Jan 2021 07:36:19 +0000 (UTC) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id A07D56E12E for ; Wed, 20 Jan 2021 07:36:17 +0000 (UTC) IronPort-SDR: KfqnXPBbHWRrbjzw5bV6/aFyGHqIPSsNfDc6aWs837P8PtcQwCLyAmtNL9KRVsFLFqu9EbXezQ 1rd8AaitQQVA== X-IronPort-AV: E=McAfee;i="6000,8403,9869"; a="179146621" X-IronPort-AV: E=Sophos;i="5.79,360,1602572400"; d="scan'208";a="179146621" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Jan 2021 23:36:15 -0800 IronPort-SDR: F4sdDbbmMIGz3/k4ydo6uGQBxUqUcZDg27YQj9Zn0zmDBaxkyOG1G2ojdcDcDcng1qLYNEFBwF BqDyqVcQ2cOA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.79,360,1602572400"; d="scan'208";a="350957274" Received: from irsmsx603.ger.corp.intel.com ([163.33.146.9]) by orsmga003.jf.intel.com with ESMTP; 19 Jan 2021 23:36:13 -0800 Received: from irsmsx605.ger.corp.intel.com (163.33.146.138) by irsmsx603.ger.corp.intel.com (163.33.146.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 20 Jan 2021 07:36:13 +0000 Received: from irsmsx605.ger.corp.intel.com ([163.33.146.138]) by IRSMSX605.ger.corp.intel.com ([163.33.146.138]) with mapi id 15.01.1713.004; Wed, 20 Jan 2021 07:36:12 +0000 From: "Mun, Gwan-gyeong" To: "intel-gfx@lists.freedesktop.org" , "Souza, Jose" Thread-Topic: [PATCH v11 1/2] drm/i915/display: Support PSR Multiple Instances Thread-Index: AQHW7c3irKvOnFVJ6kO63JoSQTTVs6owIj2A Date: Wed, 20 Jan 2021 07:36:12 +0000 Message-ID: <3eaebf4ee27dcf3795cc1fc62565839699ea7b90.camel@intel.com> References: <20210108095315.1636814-1-gwan-gyeong.mun@intel.com> <73fb0b9a34f509e17d417ae14d6f1acd232dd7e1.camel@intel.com> In-Reply-To: <73fb0b9a34f509e17d417ae14d6f1acd232dd7e1.camel@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [163.33.253.164] Content-ID: MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH v11 1/2] drm/i915/display: Support PSR Multiple Instances X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Nikula, Jani" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gTW9uLCAyMDIxLTAxLTE4IGF0IDExOjEyIC0wODAwLCBTb3V6YSwgSm9zZSB3cm90ZToNCj4g T24gRnJpLCAyMDIxLTAxLTA4IGF0IDExOjUzICswMjAwLCBHd2FuLWd5ZW9uZyBNdW4gd3JvdGU6 DQo+ID4gSXQgaXMgYSBwcmVsaW1pbmFyeSB3b3JrIGZvciBzdXBwb3J0aW5nIG11bHRpcGxlIEVE UCBQU1IgYW5kDQo+ID4gRFAgUGFuZWxSZXBsYXkuIEFuZCBpdCByZWZhY3RvcnMgc2luZ2xldG9u IFBTUiB0byBNdWx0aSBUcmFuc2NvZGVyDQo+ID4gc3VwcG9ydGFibGUgUFNSLg0KPiA+IEFuZCB0 aGlzIG1vdmVzIGFuZCByZW5hbWVzIHRoZSBpOTE1X3BzciBzdHJ1Y3R1cmUgb2YNCj4gPiBkcm1f aTkxNV9wcml2YXRlJ3MgdG8NCj4gPiBpbnRlbF9kcCdzIGludGVsX3BzciBzdHJ1Y3R1cmUuDQo+ ID4gSXQgYWxzbyBjYXVzZXMgY2hhbmdlcyBpbiBQU1IgaW50ZXJydXB0IGhhbmRsaW5nIHJvdXRp bmUgZm9yDQo+ID4gc3VwcG9ydGluZw0KPiA+IG11bHRpcGxlIHRyYW5zY29kZXJzLiBCdXQgaXQg ZG9lcyBub3QgY2hhbmdlIHRoZSBzY2VuYXJpbyBhbmQNCj4gPiB0aW1pbmcgb2YNCj4gPiBlbmFi bGluZyBhbmQgZGlzYWJsaW5nIFBTUi4gQW5kIGl0IG5vdCBzdXBwb3J0IG11bHRpcGxlIHBpcGVz IHdpdGgNCj4gPiBhIHNpbmdsZSB0cmFuc2NvZGVyIFBTUiBjYXNlIHlldC4NCj4gPiANCj4gPiB2 MjogRml4IGluZGVudGF0aW9uIGFuZCBhZGQgY29tbWVudHMNCj4gPiB2MzogUmVtb3ZlIEJsYW5r IGxpbmUNCj4gPiB2NDogUmViYXNlZA0KPiA+IHY1OiBSZWJhc2VkIGFuZCBBZGRyZXNzZWQgQW5z aHVtYW4ncyByZXZpZXcgY29tbWVudC4NCj4gPiDCoMKgwqDCoC0gTW92ZSBjYWxsaW5nIG9mIGlu dGVsX3Bzcl9pbml0KCkgdG8gaW50ZWxfZHBfaW5pdF9jb25uZWN0b3IoKQ0KPiA+IHY2OiBBZGRy ZXNzIEFuc2h1bWFuJ3MgcmV2aWV3IGNvbW1lbnRzDQo+ID4gwqDCoMKgLSBSZW1vdmUgd3Jvbmcg Y29tbWVudHMgYW5kIGFkZCBjb21tZW50cyBmb3IgYSBsaW1pdCBvZg0KPiA+IHN1cHBvcnRpbmcg b2YNCj4gPiDCoMKgwqDCoMKgYSBzaW5nbGUgcGlwZSBQU1INCj4gPiB2NzogVXBkYXRlIGludGVs X3Bzcl9jb21wdXRlX2NvbmZpZygpIGZvciBzdXBwb3J0aW5nIG11bHRpcGxlDQo+ID4gdHJhbnNj b2Rlcg0KPiA+IMKgwqDCoMKgUFNSIG9uIEJEVysNCj4gPiB2ODogQWRkcmVzcyBBbnNodW1hbidz IHJldmlldyBjb21tZW50cw0KPiA+IMKgwqDCoC0gUmVwbGFjZSBEUk1fREVCVUdfS01TIHdpdGgg ZHJtX2RiZ19rbXMoKSAvIERSTV9XQVJOIHdpdGgNCj4gPiBkcm1fd2FybigpDQo+ID4gdjk6IEZp eCBjb21taXQgbWVzc2FnZQ0KPiA+IHYxMDogUmViYXNlZA0KPiA+IFYxMTogQWRkcmVzcyBKb3Nl J3MgcmV2aWV3IGNvbW1lbnQuDQo+ID4gwqDCoC0gUmVvcmRlciBjYWxsaW5nIG9yZGVyIG9mDQo+ ID4gaW50ZWxfcHNyMl9wcm9ncmFtX3RyYW5zX21hbl90cmtfY3RsKCkuDQo+ID4gwqDCoC0gSW4g b3JkZXIgdG8gcmVkdWNlIGNoYW5nZXMga2VlcCB0aGUgb2xkIG5hbWUgZm9yDQo+ID4gZHJtX2k5 MTVfcHJpdmF0ZS4NCj4gPiDCoMKgLSBDaGFuZ2UgcmVzdHJpY3Rpb25zIG9mIG11bHRpcGxlIGlu c3RhbmNlcyBvZiBQU1IuDQo+ID4gDQo+ID4gU2lnbmVkLW9mZi1ieTogR3dhbi1neWVvbmcgTXVu IDxnd2FuLWd5ZW9uZy5tdW5AaW50ZWwuY29tPg0KPiA+IENjOiBKb3PDqSBSb2JlcnRvIGRlIFNv dXphIDxqb3NlLnNvdXphQGludGVsLmNvbT4NCj4gPiBDYzogSnVoYS1QZWtrYSBIZWlra2lsYSA8 anVoYXBla2thLmhlaWtraWxhQGdtYWlsLmNvbT4NCj4gPiBDYzogQW5zaHVtYW4gR3VwdGEgPGFu c2h1bWFuLmd1cHRhQGludGVsLmNvbT4NCj4gPiBSZXZpZXdlZC1ieTogQW5zaHVtYW4gR3VwdGEg PGFuc2h1bWFuLmd1cHRhQGludGVsLmNvbT4NCj4gPiAtLS0NCj4gPiDCoGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmPCoMKgwqDCoMKgIHzCoMKgIDMgKw0KPiA+IMKgZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmPCoCB8wqDCoCA0IC0NCj4g PiDCoC4uLi9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfZGVidWdmcy5jwqAgfCAxMTEg KystLQ0KPiA+IMKgLi4uL2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5owqDC oMKgIHzCoCAzOCArKw0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k cC5jwqDCoMKgwqDCoMKgIHzCoCAyMyArLQ0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9wc3IuY8KgwqDCoMKgwqAgfCA1NjggKysrKysrKysrKy0tLS0NCj4gPiAtLS0t DQo+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bzci5owqDCoMKgwqDC oCB8wqAgMTQgKy0NCj4gPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfc3By aXRlLmPCoMKgIHzCoMKgIDYgKy0NCj4gPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAzOCAtLQ0KPiA+IMKgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9pcnEuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDQ5 ICstDQo+ID4gwqAxMCBmaWxlcyBjaGFuZ2VkLCA0ODMgaW5zZXJ0aW9ucygrKSwgMzcxIGRlbGV0 aW9ucygtKQ0KPiA+IA0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2RkaS5jDQo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2RkaS5jDQo+ID4gaW5kZXggM2RmNjkxMzM2OWJjLi43YmY4NmQ0MzljNjYgMTAwNjQ0DQo+ID4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYw0KPiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMNCj4gPiBAQCAtNDM2MSw2 ICs0MzYxLDkgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3VwZGF0ZV9waXBlX2RwKHN0cnVjdA0K PiA+IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsDQo+ID4gwqDCoMKgwqDCoMKgwqDCoGludGVs X2RkaV9zZXRfZHBfbXNhKGNydGNfc3RhdGUsIGNvbm5fc3RhdGUpOw0KPiA+IMKgDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gwqDCoMKgwqDCoMKgwqDCoGlu dGVsX3Bzcl91cGRhdGUoaW50ZWxfZHAsIGNydGNfc3RhdGUsIGNvbm5fc3RhdGUpOw0KPiA+ICvC oMKgwqDCoMKgwqDCoC8vVE9ETzogbW92ZSBQU1IgcmVsYXRlZCBmdW5jdGlvbnMgaW50byBpbnRl bF9wc3JfdXBkYXRlKCkNCj4gPiArwqDCoMKgwqDCoMKgwqBpbnRlbF9wc3IyX3Byb2dyYW1fdHJh bnNfbWFuX3Rya19jdGwoaW50ZWxfZHAsIGNydGNfc3RhdGUpOw0KPiANCj4gVGhpcyBpcyBiZWlu ZyBjYWxsZWQgZnJvbSBhIGZ1bmN0aW9uIHRoYXQgaXMgbm90IHBhcnQgb2YgdGhlIHZibGFuaw0K PiBldmFzaW9uIGJsb2NrKGludGVsX3BpcGVfdXBkYXRlX3N0YXJ0IGFuZCBpbnRlbF9waXBlX3Vw ZGF0ZV9lbmQpLCBzbw0KPiBQU1IyX01BTl9UUktfQ1RMIGNvdWxkIGhhdmUgYSB2YWx1ZSBzZXQs IHZibGFuayBwYXNzZWQsIGFuZCAiU0YNCj4gUGFydGlhbCBGcmFtZSBFbmFibGUiIHdvdWxkIGJl IHNldCBiYWNrIHRvIDAgaW4gUFNSMl9NQU5fVFJLX0NUTA0KPiBjYXVzaW5nIHRoZSBzZWxlY3Rp dmUNCj4gZmV0Y2ggdG8gbm90IGhhcHBlbiB3aXRoIHRoZSBleHBlY3RlZCBwbGFuZSByZWdpc3Rl cnMgc2V0Lg0KPiANClRoYW5rIHlvdSBmb3IgZXhwbGFpbmdpbmcgdGhlIHNjZW5hcmlvLg0KSSds bCB1cGRhdGUgdG8gbW92ZSB0aGUgcHJvZ3JhbW1pbmcgb2YgcHNyIG1hbiB0cmsgY3RsIHRvDQpj b21taXRfcGlwZV9jb25maWcoKS4gKG9yaWdpbmFsIGxvY2FsdGlvbi4pDQo+IA0KPiA+ICsNCj4g PiDCoMKgwqDCoMKgwqDCoMKgaW50ZWxfZHBfc2V0X2luZm9mcmFtZXMoZW5jb2RlciwgdHJ1ZSwg Y3J0Y19zdGF0ZSwNCj4gPiBjb25uX3N0YXRlKTsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgaW50ZWxf ZWRwX2RycnNfdXBkYXRlKGludGVsX2RwLCBjcnRjX3N0YXRlKTsNCj4gPiDCoA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYw0KPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMNCj4gPiBpbmRleCAwMTg5ZDM3OWE1NWUuLmNiMTFmNGM0 MjE3NCAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2Rpc3BsYXkuYw0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf ZGlzcGxheS5jDQo+ID4gQEAgLTE0ODQxLDggKzE0ODQxLDYgQEAgc3RhdGljIHZvaWQgY29tbWl0 X3BpcGVfY29uZmlnKHN0cnVjdA0KPiA+IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsDQo+ID4g wqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGlmIChuZXdfY3J0Y19zdGF0ZS0+dXBkYXRlX3BpcGUpDQo+ID4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW50ZWxfcGlwZV9m YXN0c2V0KG9sZF9jcnRjX3N0YXRlLA0KPiA+IG5ld19jcnRjX3N0YXRlKTsNCj4gPiAtDQo+ID4g LQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGludGVsX3BzcjJfcHJvZ3JhbV90 cmFuc19tYW5fdHJrX2N0bChuZXdfY3J0Y19zdGF0ZSk7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoH0N Cj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IMKgwqDCoMKgwqDC oMKgwqBpZiAoZGV2X3ByaXYtPmRpc3BsYXkuYXRvbWljX3VwZGF0ZV93YXRlcm1hcmtzKQ0KPiA+ IEBAIC0xNjM2OCw4ICsxNjM2Niw2IEBAIHN0YXRpYyB2b2lkIGludGVsX3NldHVwX291dHB1dHMo c3RydWN0DQo+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpDQo+ID4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpbnRlbF9kdm9faW5pdChkZXZfcHJpdik7DQo+ID4gwqDCoMKg wqDCoMKgwqDCoH0NCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IC3CoMKgwqDCoMKgwqDCoGludGVsX3Bzcl9pbml0KGRldl9wcml2KTsNCj4gPiAtDQo+ID4gwqDC oMKgwqDCoMKgwqDCoGZvcl9lYWNoX2ludGVsX2VuY29kZXIoJmRldl9wcml2LT5kcm0sIGVuY29k ZXIpIHsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVuY29kZXItPmJhc2Uu cG9zc2libGVfY3J0Y3MgPQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGludGVsX2VuY29kZXJfcG9zc2libGVfY3J0Y3MoZW5jb2Rlcik7DQo+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9k ZWJ1Z2ZzLmMNCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxh eV9kZWJ1Z2ZzLmMNCj4gPiBpbmRleCBjZDdlNTUxOWVlN2QuLjA0MTA1MzE2N2Q3ZiAxMDA2NDQN Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfZGVi dWdmcy5jDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNw bGF5X2RlYnVnZnMuYw0KPiA+IEBAIC0yNDksMTggKzI0OSwxNyBAQCBzdGF0aWMgaW50IGk5MTVf cHNyX3Npbmtfc3RhdHVzX3Nob3coc3RydWN0DQo+ID4gc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEp DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAic2luayBpbnRlcm5hbCBlcnJv ciIsDQo+ID4gwqDCoMKgwqDCoMKgwqDCoH07DQo+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSBtLT5wcml2YXRlOw0KPiA+IC3CoMKgwqDCoMKgwqDC oHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLQ0K PiA+ID5kZXYpOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw ID0NCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGludGVsX2F0dGFjaGVkX2Rw KHRvX2ludGVsX2Nvbm5lY3Rvcihjb25uZWN0b3IpKTsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgaW50 IHJldDsNCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IC3CoMKg wqDCoMKgwqDCoGlmICghQ0FOX1BTUihkZXZfcHJpdikpIHsNCj4gPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgc2VxX3B1dHMobSwgIlBTUiBVbnN1cHBvcnRlZFxuIik7DQo+ID4gK8Kg wqDCoMKgwqDCoMKgaWYgKGNvbm5lY3Rvci0+c3RhdHVzICE9IGNvbm5lY3Rvcl9zdGF0dXNfY29u bmVjdGVkKQ0KPiANCj4gDQo+IFlvdSBhcmUgY2hhbmdpbmcgb2xkIGJlaGF2aW9yIGhlcmUsIENB Tl9QU1Igd291bGQgYWxyZWFkeSBoYW5kbGUgdGhlDQo+IGRpc2Nvbm5lY3RlZCBzdGF0ZS4NCj4g SWYgeW91IHJlYWxseSB3YW50IHRvIGRvIHRoYXQgcGxlYXNlIGRvIGluIGEgc2VwYXJhdGVkIHBh dGNoLg0KPiANCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRU5P REVWOw0KPiA+IC3CoMKgwqDCoMKgwqDCoH3CoA0KPiA+IA0KPiA+IC3CoMKgwqDCoMKgwqDCoGlm IChjb25uZWN0b3ItPnN0YXR1cyAhPSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZCkNCj4gPiAr wqDCoMKgwqDCoMKgwqBpZiAoIUNBTl9QU1IoaW50ZWxfZHApKSB7DQo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHNlcV9wdXRzKG0sICJQU1IgVW5zdXBwb3J0ZWRcbiIpOw0KPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1FTk9ERVY7DQo+ID4gK8Kg wqDCoMKgwqDCoMKgfQ0KPiA+IMKgDQo+ID4gDQpJJ2xsIHVwZGF0ZSB0byBvcmlnaW5hbCBvcmRl ciBvZiBjaGVja2luZyBDQU5fUFNSIGFuZCBjb25uZWN0b3ItDQo+c3RhdHVzLg0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IMKgwqDCoMKgwqDCoMKgwqByZXQgPSBkcm1fZHBfZHBjZF9y ZWFkYigmaW50ZWxfZHAtPmF1eCwgRFBfUFNSX1NUQVRVUywNCj4gPiAmdmFsKTsNCj4gPiDCoA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IEBAIC0yODAsMTIgKzI3OSwxMyBA QCBzdGF0aWMgaW50IGk5MTVfcHNyX3Npbmtfc3RhdHVzX3Nob3coc3RydWN0DQo+ID4gc2VxX2Zp bGUgKm0sIHZvaWQgKmRhdGEpDQo+ID4gwqBERUZJTkVfU0hPV19BVFRSSUJVVEUoaTkxNV9wc3Jf c2lua19zdGF0dXMpOw0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gwqBzdGF0aWMgdm9pZA0KPiA+IC1wc3Jfc291cmNlX3N0YXR1cyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsIHN0cnVjdA0KPiA+IHNlcV9maWxlICptKQ0KPiA+ICtwc3Jfc291 cmNlX3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0p DQo+ID4gwqB7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoHUzMiB2YWwsIHN0YXR1c192YWw7DQo+ID4g wqDCoMKgwqDCoMKgwqDCoGNvbnN0IGNoYXIgKnN0YXR1cyA9ICJ1bmtub3duIjsNCj4gPiArwqDC oMKgwqDCoMKgwqBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1 KGludGVsX2RwKTsNCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IC3CoMKgwqDCoMKgwqDCoGlmIChkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCkgew0KPiA+ICvC oMKgwqDCoMKgwqDCoGlmIChpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCkgew0KPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBsaXZl X3N0YXR1c1tdID0gew0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCJJRExFIiwNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAiQ0FQVFVSRSIsDQo+ID4gQEAgLTMwMCw3ICszMDAsNyBAQCBwc3Jfc291 cmNlX3N0YXR1cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQ0KPiA+ICpkZXZfcHJpdiwgc3RydWN0 IHNlcV9maWxlICptKQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCJUR19PTiINCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH07 DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2YWwgPSBpbnRlbF9kZV9yZWFk KGRldl9wcml2LA0KPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBFRFBfUFNSMl9TVEFUVVMoZGV2X3ByaXYtDQo+ ID4gPnBzci50cmFuc2NvZGVyKSk7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEVEUF9QU1IyX1NUQVRVUyhp bnRlbF9kcC0NCj4gPiA+cHNyLnRyYW5zY29kZXIpKTsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHN0YXR1c192YWwgPSAodmFsICYgRURQX1BTUjJfU1RBVFVTX1NUQVRFX01B U0spID4+DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBFRFBfUFNSMl9TVEFUVVNfU1RBVEVfU0hJRlQ7DQo+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoc3RhdHVzX3ZhbCA8IEFSUkFZX1NJWkUobGl2ZV9z dGF0dXMpKQ0KPiA+IEBAIC0zMTcsNyArMzE3LDcgQEAgcHNyX3NvdXJjZV9zdGF0dXMoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUNCj4gPiAqZGV2X3ByaXYsIHN0cnVjdCBzZXFfZmlsZSAqbSkNCj4g PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAiU1JERU5U X09OIiwNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH07DQo+ID4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LA0K PiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBFRFBfUFNSX1NUQVRVUyhkZXZfcHJpdi0NCj4gPiA+cHNyLnRyYW5z Y29kZXIpKTsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRURQX1BTUl9TVEFUVVMoaW50ZWxfZHAtDQo+ID4g PnBzci50cmFuc2NvZGVyKSk7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBz dGF0dXNfdmFsID0gKHZhbCAmIEVEUF9QU1JfU1RBVFVTX1NUQVRFX01BU0spID4+DQo+ID4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBF RFBfUFNSX1NUQVRVU19TVEFURV9TSElGVDsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGlmIChzdGF0dXNfdmFsIDwgQVJSQVlfU0laRShsaXZlX3N0YXR1cykpDQo+ID4gQEAg LTMyNywyMSArMzI3LDE4IEBAIHBzcl9zb3VyY2Vfc3RhdHVzKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlDQo+ID4gKmRldl9wcml2LCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0pDQo+ID4gwqDCoMKgwqDCoMKg wqDCoHNlcV9wcmludGYobSwgIlNvdXJjZSBQU1Igc3RhdHVzOiAlcyBbMHglMDh4XVxuIiwgc3Rh dHVzLA0KPiA+IHZhbCk7DQo+ID4gwqB9DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiAtc3RhdGljIGludCBpOTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdCBzZXFf ZmlsZSAqbSwgdm9pZCAqZGF0YSkNCj4gPiArc3RhdGljIGludCBpbnRlbF9wc3Jfc3RhdHVzKHN0 cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IGludGVsX2RwDQo+ID4gKmludGVsX2RwKQ0KPiA+IMKg ew0KPiA+IC3CoMKgwqDCoMKgwqDCoHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IG5vZGVfdG9faTkxNShtLQ0KPiA+ID5wcml2YXRlKTsNCj4gPiAtwqDCoMKgwqDCoMKgwqBzdHJ1 Y3QgaTkxNV9wc3IgKnBzciA9ICZkZXZfcHJpdi0+cHNyOw0KPiA+ICvCoMKgwqDCoMKgwqDCoHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOw0K PiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBpbnRlbF9wc3IgKnBzciA9ICZpbnRlbF9kcC0+cHNy Ow0KPiA+IMKgwqDCoMKgwqDCoMKgwqBpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsNCj4gPiDCoMKg wqDCoMKgwqDCoMKgY29uc3QgY2hhciAqc3RhdHVzOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqBib29s IGVuYWJsZWQ7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoHUzMiB2YWw7DQo+ID4gwqANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAtwqDCoMKgwqDCoMKgwqBpZiAoIUhBU19QU1Io ZGV2X3ByaXYpKQ0KPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVO T0RFVjsNCj4gPiAtDQo+ID4gwqDCoMKgwqDCoMKgwqDCoHNlcV9wcmludGYobSwgIlNpbmsgc3Vw cG9ydDogJXMiLCB5ZXNubyhwc3ItDQo+ID4gPnNpbmtfc3VwcG9ydCkpOw0KPiA+IC3CoMKgwqDC oMKgwqDCoGlmIChwc3ItPmRwKQ0KPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBz ZXFfcHJpbnRmKG0sICIgWzB4JTAyeF0iLCBwc3ItPmRwLT5wc3JfZHBjZFswXSk7DQo+ID4gK8Kg wqDCoMKgwqDCoMKgaWYgKHBzci0+c2lua19zdXBwb3J0KQ0KPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBzZXFfcHJpbnRmKG0sICIgWzB4JTAyeF0iLCBpbnRlbF9kcC0+cHNyX2Rw Y2RbMF0pOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqBzZXFfcHV0cyhtLCAiXG4iKTsNCj4gPiDCoA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAo IXBzci0+c2lua19zdXBwb3J0KQ0KPiA+IEBAIC0zNjUsMTYgKzM2MiwxNiBAQCBzdGF0aWMgaW50 IGk5MTVfZWRwX3Bzcl9zdGF0dXMoc3RydWN0DQo+ID4gc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEp DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiDCoMKgwqDCoMKg wqDCoMKgaWYgKHBzci0+cHNyMl9lbmFibGVkKSB7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LA0KPiA+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBFRFBfUFNSMl9DVEwoZGV2X3ByaXYtDQo+ID4gPnBzci50cmFuc2NvZGVyKSk7DQo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIEVEUF9QU1IyX0NUTChpbnRlbF9kcC0NCj4gPiA+cHNyLnRyYW5zY29kZXIpKTsN Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVuYWJsZWQgPSB2YWwgJiBFRFBf UFNSMl9FTkFCTEU7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSB7DQo+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LA0KPiA+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBFRFBfUFNSX0NUTChkZXZfcHJpdi0NCj4gPiA+cHNyLnRyYW5zY29kZXIp KTsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgRURQX1BTUl9DVEwoaW50ZWxfZHAtDQo+ID4gPnBzci50cmFu c2NvZGVyKSk7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlbmFibGVkID0g dmFsICYgRURQX1BTUl9FTkFCTEU7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoH0NCj4gPiDCoMKgwqDC oMKgwqDCoMKgc2VxX3ByaW50ZihtLCAiU291cmNlIFBTUiBjdGw6ICVzIFsweCUwOHhdXG4iLA0K PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbmFibGVkZGlzYWJsZWQo ZW5hYmxlZCksIHZhbCk7DQo+ID4gLcKgwqDCoMKgwqDCoMKgcHNyX3NvdXJjZV9zdGF0dXMoZGV2 X3ByaXYsIG0pOw0KPiA+ICvCoMKgwqDCoMKgwqDCoHBzcl9zb3VyY2Vfc3RhdHVzKGludGVsX2Rw LCBtKTsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgc2VxX3ByaW50ZihtLCAiQnVzeSBmcm9udGJ1ZmZl ciBiaXRzOiAweCUwOHhcbiIsDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHBzci0+YnVzeV9mcm9udGJ1ZmZlcl9iaXRzKTsNCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IEBAIC0zODMsNyArMzgwLDcgQEAgc3RhdGljIGludCBpOTE1 X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZQ0KPiA+ICptLCB2b2lkICpkYXRhKQ0KPiA+ IMKgwqDCoMKgwqDCoMKgwqAgKi8NCj4gPiDCoMKgwqDCoMKgwqDCoMKgaWYgKElTX0hBU1dFTEwo ZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpIHsNCj4gPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsDQo+ID4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIEVEUF9QU1JfUEVSRl9DTlQoZGV2X3ByaXYtDQo+ID4gPnBzci50cmFuc2NvZGVy KSk7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIEVEUF9QU1JfUEVSRl9DTlQoaW50ZWxfZHAtDQo+ID4gPnBz ci50cmFuc2NvZGVyKSk7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2YWwg Jj0gRURQX1BTUl9QRVJGX0NOVF9NQVNLOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgc2VxX3ByaW50ZihtLCAiUGVyZm9ybWFuY2UgY291bnRlcjogJXVcbiIsIHZhbCk7DQo+ ID4gwqDCoMKgwqDCoMKgwqDCoH0NCj4gPiBAQCAtNDA0LDcgKzQwMSw3IEBAIHN0YXRpYyBpbnQg aTkxNV9lZHBfcHNyX3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUNCj4gPiAqbSwgdm9pZCAqZGF0YSkN Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLw0KPiA+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9yIChmcmFtZSA9IDA7IGZyYW1lIDwgUFNSMl9TVV9TVEFU VVNfRlJBTUVTOw0KPiA+IGZyYW1lICs9IDMpIHsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LA0K PiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqANCj4gPiBQU1IyX1NVX1NUQVRVUyhkZXZf cHJpdi0+cHNyLnRyYW5zY29kZXIsIGZyYW1lKSk7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoA0KPiA+IFBTUjJfU1VfU1RBVFVTKGludGVsX2RwLT5wc3IudHJhbnNjb2RlciwgZnJh bWUpKTsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBzdV9mcmFtZXNfdmFsW2ZyYW1lIC8gM10gPSB2YWw7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB9DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiBAQCAtNDMwLDIzICs0MjcsNTcgQEAgc3RhdGljIGludCBpOTE1X2VkcF9wc3Jfc3RhdHVz KHN0cnVjdA0KPiA+IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQ0KPiA+IMKgwqDCoMKgwqDCoMKg wqByZXR1cm4gMDsNCj4gPiDCoH0NCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+ICtzdGF0aWMgaW50IGk5MTVfZWRwX3Bzcl9zdGF0dXMoc3RydWN0IHNlcV9maWxl ICptLCB2b2lkICpkYXRhKQ0KPiA+ICt7DQo+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbm9kZV90b19pOTE1KG0tDQo+ID4gPnByaXZhdGUpOw0K PiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOw0KPiA+ICvC oMKgwqDCoMKgwqDCoHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBOVUxMOw0KPiA+ICsNCj4g PiArwqDCoMKgwqDCoMKgwqBpZiAoIUhBU19QU1IoZGV2X3ByaXYpKQ0KPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVOT0RFVjsNCj4gPiArDQo+ID4gK8KgwqDCoMKg wqDCoMKgLyogRmluZCB0aGUgZmlyc3QgRURQICovDQo+ID4gK8KgwqDCoMKgwqDCoMKgZm9yX2Vh Y2hfaW50ZWxfZHAoJmRldl9wcml2LT5kcm0sIGVuY29kZXIpIHsNCj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgaWYgKGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkg ew0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW50 ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoZW5jb2Rlcik7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsNCj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgfQ0KPiA+ICvCoMKgwqDCoMKgwqDCoH0NCj4gPiArDQo+ID4gK8KgwqDC oMKgwqDCoMKgaWYgKCFpbnRlbF9kcCkNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgcmV0dXJuIC1FTk9ERVY7DQo+ID4gKw0KPiA+ICvCoMKgwqDCoMKgwqDCoHJldHVybiBpbnRl bF9wc3Jfc3RhdHVzKG0sIGludGVsX2RwKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiDCoHN0YXRpYyBp bnQNCj4gPiDCoGk5MTVfZWRwX3Bzcl9kZWJ1Z19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkNCj4g PiDCoHsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGF0YTsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7 DQo+ID4gLcKgwqDCoMKgwqDCoMKgaW50IHJldDsNCj4gPiArwqDCoMKgwqDCoMKgwqBpbnQgcmV0 ID0gLUVOT0RFVjsNCj4gPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlcjsNCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IC3CoMKg wqDCoMKgwqDCoGlmICghQ0FOX1BTUihkZXZfcHJpdikpDQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHJldHVybiAtRU5PREVWOw0KPiA+ICvCoMKgwqDCoMKgwqDCoGlmICghSEFT X1BTUihkZXZfcHJpdikpDQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVy biByZXQ7DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAtwqDC oMKgwqDCoMKgwqBkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwgIlNldHRpbmcgUFNSIGRlYnVn IHRvICVsbHhcbiIsDQo+ID4gdmFsKTsNCj4gPiArwqDCoMKgwqDCoMKgwqBmb3JfZWFjaF9pbnRl bF9kcCgmZGV2X3ByaXYtPmRybSwgZW5jb2Rlcikgew0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0NCj4gPiBlbmNfdG9faW50ZWxf ZHAoZW5jb2Rlcik7DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiAtwqDCoMKgwqDCoMKgwqB3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoJmRldl9wcml2 LT5ydW50aW1lX3BtKTsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFD QU5fUFNSKGludGVsX2RwKSkNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGNvbnRpbnVlOw0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gLcKgwqDCoMKgwqDCoMKgcmV0ID0gaW50ZWxfcHNyX2RlYnVnX3NldChkZXZf cHJpdiwgdmFsKTsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGVuY29k ZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgew0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sICJT ZXR0aW5nIFBTUg0KPiA+IGRlYnVnIHRvICVsbHhcbiIsIHZhbCk7DQo+ID4gwqANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAtwqDCoMKgwqDCoMKgwqBpbnRlbF9ydW50aW1l X3BtX3B1dCgmZGV2X3ByaXYtPnJ1bnRpbWVfcG0sIHdha2VyZWYpOw0KPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgd2FrZXJlZiA9IGludGVsX3J1bnRp bWVfcG1fZ2V0KCZkZXZfcHJpdi0NCj4gPiA+cnVudGltZV9wbSk7DQo+ID4gKw0KPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLy8gVE9ETzogc3BsaXQg dG8gZWFjaCB0cmFuc2NvZGVyJ3MgUFNSDQo+ID4gZGVidWcgc3RhdGUNCj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldCA9IGludGVsX3Bzcl9kZWJ1 Z19zZXQoaW50ZWxfZHAsIHZhbCk7DQo+ID4gKw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW50ZWxfcnVudGltZV9wbV9wdXQoJmRldl9wcml2LT5y dW50aW1lX3BtLA0KPiA+IHdha2VyZWYpOw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB9DQo+ID4gK8KgwqDCoMKgwqDCoMKgfQ0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7DQo+ID4gwqB9DQo+ ID4gQEAgLTQ1NSwxMiArNDg2LDI1IEBAIHN0YXRpYyBpbnQNCj4gPiDCoGk5MTVfZWRwX3Bzcl9k ZWJ1Z19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpDQo+ID4gwqB7DQo+ID4gwqDCoMKgwqDCoMKg wqDCoHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRhdGE7DQo+ID4gK8KgwqDC oMKgwqDCoMKgc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7DQo+ID4gwqANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAtwqDCoMKgwqDCoMKgwqBpZiAoIUNBTl9QU1Io ZGV2X3ByaXYpKQ0KPiA+ICvCoMKgwqDCoMKgwqDCoGlmICghSEFTX1BTUihkZXZfcHJpdikpDQo+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVOT0RFVjsNCj4gPiDC oA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IC3CoMKgwqDCoMKgwqDCoCp2 YWwgPSBSRUFEX09OQ0UoZGV2X3ByaXYtPnBzci5kZWJ1Zyk7DQo+ID4gLcKgwqDCoMKgwqDCoMKg cmV0dXJuIDA7DQo+ID4gK8KgwqDCoMKgwqDCoMKgZm9yX2VhY2hfaW50ZWxfZHAoJmRldl9wcml2 LT5kcm0sIGVuY29kZXIpIHsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCA9DQo+ID4gZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpOw0K PiA+ICsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFDQU5fUFNSKGlu dGVsX2RwKSkNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGNvbnRpbnVlOw0KPiA+ICsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Ly8gVE9ETzogc3BsaXQgdG8gZWFjaCB0cmFuc2NvZGVyJ3MgUFNSIGRlYnVnIHN0YXRlDQo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChlbmNvZGVyLT50eXBlID09IElOVEVM X09VVFBVVF9FRFApIHsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCp2YWwgPSBSRUFEX09OQ0UoaW50ZWxfZHAtPnBzci5kZWJ1Zyk7DQo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsNCj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQ0KPiA+ICvCoMKgwqDCoMKgwqDCoH0N Cj4gPiArDQo+ID4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIC1FTk9ERVY7DQo+ID4gwqB9DQo+ID4g wqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiDCoERFRklORV9TSU1QTEVf QVRUUklCVVRFKGk5MTVfZWRwX3Bzcl9kZWJ1Z19mb3BzLA0KPiA+IEBAIC0xMjM0LDkgKzEyNzgs NiBAQCBzdGF0aWMgdm9pZCBkcnJzX3N0YXR1c19wZXJfY3J0YyhzdHJ1Y3QNCj4gPiBzZXFfZmls ZSAqbSwNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIGRpc2FibGVfZHJy cygpIHdpbGwgbWFrZSBkcnJzLT5kcCBOVUxMICovDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBpZiAoIWRycnMtPmRwKSB7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2VxX3B1dHMobSwgIklkbGVuZXNzIERSUlM6IERpc2Fi bGVkXG4iKTsNCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGlmIChkZXZfcHJpdi0+cHNyLmVuYWJsZWQpDQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2VxX3B1dHMobSwNCj4g PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAiXHRBcyBQU1IgaXMgZW5hYmxlZCwgRFJSUyBpcyBub3QNCj4gPiBlbmFibGVkXG4i KTsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBt dXRleF91bmxvY2soJmRycnMtPm11dGV4KTsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm47DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB9DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZGlzcGxheV90eXBlcy5oDQo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaA0KPiA+IGluZGV4IDEwNjdiZDA3M2M5NS4uZTJmNzE4 NThlMGJhIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZGlzcGxheV90eXBlcy5oDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgNCj4gPiBAQCAtMTM0NCw2ICsxMzQ0LDQyIEBAIHN0cnVj dCBpbnRlbF9kcF9wY29uX2ZybCB7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoGludCB0cmFpbmVkX3Jh dGVfZ2JwczsNCj4gPiDCoH07DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiArc3RydWN0IGludGVsX3BzciB7DQo+ID4gK8KgwqDCoMKgwqDCoMKgLyogTXV0ZXgg Zm9yIFBTUiBzdGF0ZSBvZiB0aGUgdHJhbnNjb2RlciAqLw0KPiA+ICvCoMKgwqDCoMKgwqDCoHN0 cnVjdCBtdXRleCBsb2NrOw0KPiA+ICsNCj4gPiArI2RlZmluZSBJOTE1X1BTUl9ERUJVR19NT0RF X01BU0vCoMKgwqDCoMKgwqDCoDB4MGYNCj4gPiArI2RlZmluZSBJOTE1X1BTUl9ERUJVR19ERUZB VUxUwqDCoMKgwqDCoMKgwqDCoMKgMHgwMA0KPiA+ICsjZGVmaW5lIEk5MTVfUFNSX0RFQlVHX0RJ U0FCTEXCoMKgwqDCoMKgwqDCoMKgwqAweDAxDQo+ID4gKyNkZWZpbmUgSTkxNV9QU1JfREVCVUdf RU5BQkxFwqDCoMKgwqDCoMKgwqDCoMKgwqAweDAyDQo+ID4gKyNkZWZpbmUgSTkxNV9QU1JfREVC VUdfRk9SQ0VfUFNSMcKgwqDCoMKgwqDCoDB4MDMNCj4gPiArI2RlZmluZSBJOTE1X1BTUl9ERUJV R19JUlHCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDB4MTANCj4gPiArDQo+ID4gK8KgwqDCoMKg wqDCoMKgdTMyIGRlYnVnOw0KPiA+ICvCoMKgwqDCoMKgwqDCoGJvb2wgc2lua19zdXBwb3J0Ow0K PiA+ICvCoMKgwqDCoMKgwqDCoGJvb2wgZW5hYmxlZDsNCj4gPiArwqDCoMKgwqDCoMKgwqBlbnVt IHBpcGUgcGlwZTsNCj4gPiArwqDCoMKgwqDCoMKgwqBlbnVtIHRyYW5zY29kZXIgdHJhbnNjb2Rl cjsNCj4gPiArwqDCoMKgwqDCoMKgwqBib29sIGFjdGl2ZTsNCj4gPiArwqDCoMKgwqDCoMKgwqBz dHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsNCj4gPiArwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBpbnQg YnVzeV9mcm9udGJ1ZmZlcl9iaXRzOw0KPiA+ICvCoMKgwqDCoMKgwqDCoGJvb2wgc2lua19wc3Iy X3N1cHBvcnQ7DQo+ID4gK8KgwqDCoMKgwqDCoMKgYm9vbCBsaW5rX3N0YW5kYnk7DQo+ID4gK8Kg wqDCoMKgwqDCoMKgYm9vbCBjb2xvcmltZXRyeV9zdXBwb3J0Ow0KPiA+ICvCoMKgwqDCoMKgwqDC oGJvb2wgcHNyMl9lbmFibGVkOw0KPiA+ICvCoMKgwqDCoMKgwqDCoGJvb2wgcHNyMl9zZWxfZmV0 Y2hfZW5hYmxlZDsNCj4gPiArwqDCoMKgwqDCoMKgwqB1OCBzaW5rX3N5bmNfbGF0ZW5jeTsNCj4g PiArwqDCoMKgwqDCoMKgwqBrdGltZV90IGxhc3RfZW50cnlfYXR0ZW1wdDsNCj4gPiArwqDCoMKg wqDCoMKgwqBrdGltZV90IGxhc3RfZXhpdDsNCj4gPiArwqDCoMKgwqDCoMKgwqBib29sIHNpbmtf bm90X3JlbGlhYmxlOw0KPiA+ICvCoMKgwqDCoMKgwqDCoGJvb2wgaXJxX2F1eF9lcnJvcjsNCj4g PiArwqDCoMKgwqDCoMKgwqB1MTYgc3VfeF9ncmFudWxhcml0eTsNCj4gPiArwqDCoMKgwqDCoMKg wqBib29sIGRjM2NvX2VuYWJsZWQ7DQo+ID4gK8KgwqDCoMKgwqDCoMKgdTMyIGRjM2NvX2V4aXRf ZGVsYXk7DQo+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGRlbGF5ZWRfd29yayBkYzNjb193b3Jr Ow0KPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBkcm1fZHBfdnNjX3NkcCB2c2M7DQo+ID4gK307 DQo+ID4gKw0KPiA+IMKgc3RydWN0IGludGVsX2RwIHsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgaTkx NV9yZWdfdCBvdXRwdXRfcmVnOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqB1MzIgRFA7DQo+ID4gQEAg LTE0NzMsNiArMTUwOSw4IEBAIHN0cnVjdCBpbnRlbF9kcCB7DQo+ID4gwqDCoMKgwqDCoMKgwqDC oGJvb2wgaG9ibF9hY3RpdmU7DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGludGVsX2RwX3Bjb25fZnJsIGZybDsNCj4g PiArDQo+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGludGVsX3BzciBwc3I7DQo+ID4gwqB9Ow0K PiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gwqBlbnVtIGxzcGNv bl92ZW5kb3Igew0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2RwLmMNCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAu Yw0KPiA+IGluZGV4IDhhMDBlNjA5MDg1Zi4uNjQyYWNhZTg3Y2YzIDEwMDY0NA0KPiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYw0KPiA+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYw0KPiA+IEBAIC0yNzI5LDEyICsyNzI5 LDEwIEBAIHZvaWQgaW50ZWxfZHBfY29tcHV0ZV9wc3JfdnNjX3NkcChzdHJ1Y3QNCj4gPiBpbnRl bF9kcCAqaW50ZWxfZHAsDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9y X3N0YXRlDQo+ID4gKmNvbm5fc3RhdGUsDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fZHBfdnNj X3NkcCAqdnNjKQ0KPiA+IMKgew0KPiA+IC3CoMKgwqDCoMKgwqDCoHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOw0KPiA+IC0NCj4gPiDCoMKg wqDCoMKgwqDCoMKgdnNjLT5zZHBfdHlwZSA9IERQX1NEUF9WU0M7DQo+ID4gwqANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAtwqDCoMKgwqDCoMKgwqBpZiAoZGV2X3ByaXYt PnBzci5wc3IyX2VuYWJsZWQpIHsNCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg aWYgKGRldl9wcml2LT5wc3IuY29sb3JpbWV0cnlfc3VwcG9ydCAmJg0KPiA+ICvCoMKgwqDCoMKg wqDCoGlmIChpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCkgew0KPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBpZiAoaW50ZWxfZHAtPnBzci5jb2xvcmltZXRyeV9zdXBwb3J0ICYm DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50ZWxfZHBfbmVl ZHNfdnNjX3NkcChjcnRjX3N0YXRlLCBjb25uX3N0YXRlKSkNCj4gPiB7DQo+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogW1BTUjIsICtDb2xvcmlt ZXRyeV0gKi8NCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpbnRlbF9kcF9jb21wdXRlX3ZzY19jb2xvcmltZXRyeShjcnRjX3N0YXRlDQo+ID4gLCBj b25uX3N0YXRlLA0KPiA+IEBAIC0zODk4LDcgKzM4OTYsNyBAQCBib29sIGludGVsX2RwX2luaXRp YWxfZmFzdHNldF9jaGVjayhzdHJ1Y3QNCj4gPiBpbnRlbF9lbmNvZGVyICplbmNvZGVyLA0KPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGZhbHNlOw0KPiA+IMKgwqDC oMKgwqDCoMKgwqB9DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiAtwqDCoMKgwqDCoMKgwqBpZiAoQ0FOX1BTUihpOTE1KSAmJiBpbnRlbF9kcF9pc19lZHAoaW50 ZWxfZHApKSB7DQo+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKENBTl9QU1IoaW50ZWxfZHApICYmIGlu dGVsX2RwX2lzX2VkcChpbnRlbF9kcCkpIHsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGRybV9kYmdfa21zKCZpOTE1LT5kcm0sICJGb3JjaW5nIGZ1bGwgbW9kZXNldCB0bw0K PiA+IGNvbXB1dGUgUFNSIHN0YXRlXG4iKTsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGNydGNfc3RhdGUtPnVhcGkubW9kZV9jaGFuZ2VkID0gdHJ1ZTsNCj4gPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBmYWxzZTsNCj4gPiBAQCAtODUxMCw2ICs4 NTA4LDE3IEBAIHN0YXRpYyB2b2lkDQo+ID4gaW50ZWxfZHBfbW9kZXNldF9yZXRyeV93b3JrX2Zu KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykNCj4gPiDCoMKgwqDCoMKgwqDCoMKgZHJtX2ttc19o ZWxwZXJfaG90cGx1Z19ldmVudChjb25uZWN0b3ItPmRldik7DQo+ID4gwqB9DQo+ID4gwqANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gDQo+IA0KPiBUaGlzIGZ1bmN0aW9uIHdp bGwgb25seSBiZSBjYWxsZWQgYnkgb2xkIHBsYXRmb3JtcyB3aXRob3V0IERESSB0aGF0DQo+IGRv IG5vdCBzdXBwb3J0IFBTUiwgc2hvdWxkIGJlIGRyb3BwZWQuDQo+IA0Kb2theSwgSSdsbCBkcm9w dCB0aGUgZnVjdGlvbi4NCj4gPiArc3RhdGljIHZvaWQgaW50ZWxfZHBfdXBkYXRlX3BpcGUoc3Ry dWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsDQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyLA0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZQ0KPiA+ICpjcnRjX3N0YXRlLA0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rv cl9zdGF0ZQ0KPiA+ICpjb25uX3N0YXRlKQ0KPiA+ICt7DQo+ID4gK8KgwqDCoMKgwqDCoMKgc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcChlbmNvZGVyKTsNCj4gPiAr DQo+ID4gK8KgwqDCoMKgwqDCoMKgaW50ZWxfcGFuZWxfdXBkYXRlX2JhY2tsaWdodChzdGF0ZSwg ZW5jb2RlciwgY3J0Y19zdGF0ZSwNCj4gPiBjb25uX3N0YXRlKTsNCj4gPiArwqDCoMKgwqDCoMKg wqBpbnRlbF9wc3IyX3Byb2dyYW1fdHJhbnNfbWFuX3Rya19jdGwoaW50ZWxfZHAsIGNydGNfc3Rh dGUpOw0KPiA+ICt9DQo+ID4gKw0KPiA+IMKgYm9vbA0KPiA+IMKgaW50ZWxfZHBfaW5pdF9jb25u ZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQsDQo+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGludGVsX2Nvbm5l Y3RvciAqaW50ZWxfY29ubmVjdG9yKQ0KPiA+IEBAIC04NjI3LDYgKzg2MzYsOCBAQCBpbnRlbF9k cF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QNCj4gPiBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0 LA0KPiA+IMKgwqDCoMKgwqDCoMKgwqBpbnRlbF9kcC0+ZnJsLmlzX3RyYWluZWQgPSBmYWxzZTsN Cj4gPiDCoMKgwqDCoMKgwqDCoMKgaW50ZWxfZHAtPmZybC50cmFpbmVkX3JhdGVfZ2JwcyA9IDA7 DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAr wqDCoMKgwqDCoMKgwqBpbnRlbF9wc3JfaW5pdChpbnRlbF9kcCk7DQo+ID4gKw0KPiA+IMKgwqDC oMKgwqDCoMKgwqByZXR1cm4gdHJ1ZTsNCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IMKgZmFpbDoNCj4gPiBAQCAtODY2OCw3ICs4Njc5LDcgQEAg Ym9vbCBpbnRlbF9kcF9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlDQo+ID4gKmRldl9wcml2 LA0KPiA+IMKgwqDCoMKgwqDCoMKgwqBpbnRlbF9lbmNvZGVyLT5nZXRfY29uZmlnID0gaW50ZWxf ZHBfZ2V0X2NvbmZpZzsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgaW50ZWxfZW5jb2Rlci0+c3luY19z dGF0ZSA9IGludGVsX2RwX3N5bmNfc3RhdGU7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoGludGVsX2Vu Y29kZXItPmluaXRpYWxfZmFzdHNldF9jaGVjayA9DQo+ID4gaW50ZWxfZHBfaW5pdGlhbF9mYXN0 c2V0X2NoZWNrOw0KPiA+IC3CoMKgwqDCoMKgwqDCoGludGVsX2VuY29kZXItPnVwZGF0ZV9waXBl ID0gaW50ZWxfcGFuZWxfdXBkYXRlX2JhY2tsaWdodDsNCj4gPiArwqDCoMKgwqDCoMKgwqBpbnRl bF9lbmNvZGVyLT51cGRhdGVfcGlwZSA9IGludGVsX2RwX3VwZGF0ZV9waXBlOw0KPiA+IMKgwqDC oMKgwqDCoMKgwqBpbnRlbF9lbmNvZGVyLT5zdXNwZW5kID0gaW50ZWxfZHBfZW5jb2Rlcl9zdXNw ZW5kOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqBpbnRlbF9lbmNvZGVyLT5zaHV0ZG93biA9IGludGVs X2RwX2VuY29kZXJfc2h1dGRvd247DQo+ID4gwqDCoMKgwqDCoMKgwqDCoGlmIChJU19DSEVSUllW SUVXKGRldl9wcml2KSkgew0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX3Bzci5jDQo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX3Bzci5jDQo+ID4gaW5kZXggYzI0YWU2OTQyNmNmLi40MWU3Y2M0NDg5N2QgMTAwNjQ0DQo+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wc3IuYw0KPiA+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmMNCj4gPiBAQCAtNzks OSArNzksMTEgQEANCj4gPiDCoMKgKiB1c2UgcGFnZSBmbGlwcy4NCj4gPiDCoMKgKi8NCj4gPiDC oA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IC1zdGF0aWMg Ym9vbCBwc3JfZ2xvYmFsX2VuYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpDQo+ ID4gK3N0YXRpYyBib29sIHBzcl9nbG9iYWxfZW5hYmxlZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwKQ0KPiA+IMKgew0KPiA+IC3CoMKgwqDCoMKgwqDCoHN3aXRjaCAoaTkxNS0+cHNyLmRlYnVn ICYgSTkxNV9QU1JfREVCVUdfTU9ERV9NQVNLKSB7DQo+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBkcF90b19pOTE1KGludGVsX2RwKTsNCj4gPiArDQo+ ID4gK8KgwqDCoMKgwqDCoMKgc3dpdGNoIChpbnRlbF9kcC0+cHNyLmRlYnVnICYgSTkxNV9QU1Jf REVCVUdfTU9ERV9NQVNLKSB7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoGNhc2UgSTkxNV9QU1JfREVC VUdfREVGQVVMVDoNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBp OTE1LT5wYXJhbXMuZW5hYmxlX3BzcjsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgY2FzZSBJOTE1X1BT Ul9ERUJVR19ESVNBQkxFOg0KPiA+IEBAIC05MSw5ICs5Myw5IEBAIHN0YXRpYyBib29sIHBzcl9n bG9iYWxfZW5hYmxlZChzdHJ1Y3QNCj4gPiBkcm1faTkxNV9wcml2YXRlICppOTE1KQ0KPiA+IMKg wqDCoMKgwqDCoMKgwqB9DQo+ID4gwqB9DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiAtc3RhdGljIGJvb2wgcHNyMl9nbG9iYWxfZW5hYmxlZChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpDQo+ID4gK3N0YXRpYyBib29sIHBzcjJf Z2xvYmFsX2VuYWJsZWQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkNCj4gPiDCoHsNCj4gPiAt wqDCoMKgwqDCoMKgwqBzd2l0Y2ggKGRldl9wcml2LT5wc3IuZGVidWcgJiBJOTE1X1BTUl9ERUJV R19NT0RFX01BU0spIHsNCj4gPiArwqDCoMKgwqDCoMKgwqBzd2l0Y2ggKGludGVsX2RwLT5wc3Iu ZGVidWcgJiBJOTE1X1BTUl9ERUJVR19NT0RFX01BU0spIHsNCj4gPiDCoMKgwqDCoMKgwqDCoMKg Y2FzZSBJOTE1X1BTUl9ERUJVR19ESVNBQkxFOg0KPiA+IMKgwqDCoMKgwqDCoMKgwqBjYXNlIEk5 MTVfUFNSX0RFQlVHX0ZPUkNFX1BTUjE6DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqByZXR1cm4gZmFsc2U7DQo+ID4gQEAgLTEwMiwxMSArMTA0LDEyIEBAIHN0YXRpYyBib29s IHBzcjJfZ2xvYmFsX2VuYWJsZWQoc3RydWN0DQo+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpDQo+ID4gwqDCoMKgwqDCoMKgwqDCoH0NCj4gPiDCoH0NCj4gPiDCoA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IC1zdGF0aWMgdm9pZCBwc3JfaXJxX2Nv bnRyb2woc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQ0KPiA+ICtzdGF0aWMgdm9p ZCBwc3JfaXJxX2NvbnRyb2woc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkNCj4gPiDCoHsNCj4g PiDCoMKgwqDCoMKgwqDCoMKgZW51bSB0cmFuc2NvZGVyIHRyYW5zX3NoaWZ0Ow0KPiA+IMKgwqDC oMKgwqDCoMKgwqB1MzIgbWFzaywgdmFsOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqBpOTE1X3JlZ190 IGltcl9yZWc7DQo+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiDCoMKgwqDCoMKgwqDCoMKgLyoNCj4gPiDCoMKg wqDCoMKgwqDCoMKgICogZ2VuMTIrIGhhcyByZWdpc3RlcnMgcmVsYXRpdmUgdG8gdHJhbnNjb2Rl ciBhbmQgb25lIHBlcg0KPiA+IHRyYW5zY29kZXINCj4gPiBAQCAtMTE1LDE0ICsxMTgsMTQgQEAg c3RhdGljIHZvaWQgcHNyX2lycV9jb250cm9sKHN0cnVjdA0KPiA+IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqAgKi8NCj4gPiDCoMKgwqDCoMKgwqDCoMKg aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIpIHsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHRyYW5zX3NoaWZ0ID0gMDsNCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgaW1yX3JlZyA9IFRSQU5TX1BTUl9JTVIoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVy KTsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW1yX3JlZyA9IFRSQU5TX1BT Ul9JTVIoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKTsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgfSBl bHNlIHsNCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdHJhbnNfc2hpZnQgPSBk ZXZfcHJpdi0+cHNyLnRyYW5zY29kZXI7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHRyYW5zX3NoaWZ0ID0gaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyOw0KPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW1yX3JlZyA9IEVEUF9QU1JfSU1SOw0KPiA+IMKgwqDC oMKgwqDCoMKgwqB9DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiDCoMKgwqDCoMKgwqDCoMKgbWFzayA9IEVEUF9QU1JfRVJST1IodHJhbnNfc2hp ZnQpOw0KPiA+IC3CoMKgwqDCoMKgwqDCoGlmIChkZXZfcHJpdi0+cHNyLmRlYnVnICYgSTkxNV9Q U1JfREVCVUdfSVJRKQ0KPiA+ICvCoMKgwqDCoMKgwqDCoGlmIChpbnRlbF9kcC0+cHNyLmRlYnVn ICYgSTkxNV9QU1JfREVCVUdfSVJRKQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgbWFzayB8PSBFRFBfUFNSX1BPU1RfRVhJVCh0cmFuc19zaGlmdCkgfA0KPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEVEUF9QU1JfUFJFX0VOVFJZ KHRyYW5zX3NoaWZ0KTsNCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IEBAIC0xNzEsMzAgKzE3NCwzMSBAQCBzdGF0aWMgdm9pZCBwc3JfZXZlbnRf cHJpbnQoc3RydWN0DQo+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwNCj4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRybV9kYmdfa21zKCZpOTE1LT5kcm0sICJcdFBTUiBkaXNh YmxlZFxuIik7DQo+ID4gwqB9DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiAtdm9pZCBpbnRlbF9wc3JfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzINCj4gPiBwc3JfaWlyKQ0KPiA+ICt2b2lkIGludGVs X3Bzcl9pcnFfaGFuZGxlcihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1MzIgcHNyX2lpcikN Cj4gPiDCoHsNCj4gPiAtwqDCoMKgwqDCoMKgwqBlbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29k ZXIgPSBkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXI7DQo+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7DQo+ID4g K8KgwqDCoMKgwqDCoMKgZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gaW50ZWxfZHAt PnBzci50cmFuc2NvZGVyOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqBlbnVtIHRyYW5zY29kZXIgdHJh bnNfc2hpZnQ7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoGk5MTVfcmVnX3QgaW1yX3JlZzsNCj4gPiDC oMKgwqDCoMKgwqDCoMKga3RpbWVfdCB0aW1lX25zID3CoCBrdGltZV9nZXQoKTsNCj4gPiDCoA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IMKgwqDCoMKgwqDC oMKgwqBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMikgew0KPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgdHJhbnNfc2hpZnQgPSAwOw0KPiA+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBpbXJfcmVnID0gVFJBTlNfUFNSX0lNUihkZXZfcHJpdi0+cHNyLnRyYW5z Y29kZXIpOw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpbXJfcmVnID0gVFJB TlNfUFNSX0lNUihpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpOw0KPiA+IMKgwqDCoMKgwqDCoMKg wqB9IGVsc2Ugew0KPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0cmFuc19zaGlm dCA9IGRldl9wcml2LT5wc3IudHJhbnNjb2RlcjsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgdHJhbnNfc2hpZnQgPSBpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXI7DQo+ID4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpbXJfcmVnID0gRURQX1BTUl9JTVI7DQo+ID4g wqDCoMKgwqDCoMKgwqDCoH0NCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAocHNyX2lpciAmIEVEUF9QU1JfUFJF X0VOVFJZKHRyYW5zX3NoaWZ0KSkgew0KPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBkZXZfcHJpdi0+cHNyLmxhc3RfZW50cnlfYXR0ZW1wdCA9IHRpbWVfbnM7DQo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGludGVsX2RwLT5wc3IubGFzdF9lbnRyeV9hdHRlbXB0 ID0gdGltZV9uczsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRybV9kYmdf a21zKCZkZXZfcHJpdi0+ZHJtLA0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiW3RyYW5zY29kZXIgJXNdIFBTUiBlbnRyeSBhdHRlbXB0 IGluIDINCj4gPiB2YmxhbmtzXG4iLA0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0cmFuc2NvZGVyX25hbWUoY3B1X3RyYW5zY29kZXIp KTsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgfQ0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gwqDCoMKgwqDCoMKgwqDCoGlmIChwc3JfaWlyICYgRURQ X1BTUl9QT1NUX0VYSVQodHJhbnNfc2hpZnQpKSB7DQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGRldl9wcml2LT5wc3IubGFzdF9leGl0ID0gdGltZV9uczsNCj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW50ZWxfZHAtPnBzci5sYXN0X2V4aXQgPSB0aW1lX25z Ow0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZHJtX2RiZ19rbXMoJmRldl9w cml2LT5kcm0sDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICJbdHJhbnNjb2RlciAlc10gUFNSIGV4aXQgY29tcGxldGVkXG4iLA0KPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0 cmFuc2NvZGVyX25hbWUoY3B1X3RyYW5zY29kZXIpKTsNCj4gPiBAQCAtMjAyLDcgKzIwNiw3IEBA IHZvaWQgaW50ZWxfcHNyX2lycV9oYW5kbGVyKHN0cnVjdA0KPiA+IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LCB1MzIgcHNyX2lpcikNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsNCj4gPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1MzIgdmFsID0gaW50ZWxfZGVfcmVhZChk ZXZfcHJpdiwNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBQU1Jf RVZFTlQoY3B1X3RyYW5zDQo+ID4gY29kZXIpKTsNCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJvb2wgcHNyMl9lbmFibGVkID0gZGV2X3ByaXYtDQo+ ID4gPnBzci5wc3IyX2VuYWJsZWQ7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBib29sIHBzcjJfZW5hYmxlZCA9IGludGVsX2RwLQ0KPiA+ID5wc3Iu cHNyMl9lbmFibGVkOw0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsDQo+ID4gUFNSX0VWRU5UKGNwdV90cmFuc2NvZGVy KSwNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZhbCk7DQo+ID4gQEAgLTIxNiw3ICsyMjAsNyBA QCB2b2lkIGludGVsX3Bzcl9pcnFfaGFuZGxlcihzdHJ1Y3QNCj4gPiBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwgdTMyIHBzcl9paXIpDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBkcm1fd2FybigmZGV2X3ByaXYtPmRybSwgIlt0cmFuc2NvZGVyICVzXSBQU1IgYXV4DQo+ ID4gZXJyb3JcbiIsDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHRyYW5zY29kZXJfbmFtZShjcHVfdHJhbnNjb2RlcikpOw0KPiA+IMKgDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGRldl9wcml2LT5wc3IuaXJxX2F1eF9lcnJvciA9IHRydWU7DQo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGludGVsX2RwLT5wc3IuaXJxX2F1eF9lcnJv ciA9IHRydWU7DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qDQo+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBJZiB0aGlzIGludGVycnVwdGlvbiBpcyBub3QgbWFz a2VkIGl0IHdpbGwga2VlcA0KPiA+IEBAIC0yMzAsNyArMjM0LDcgQEAgdm9pZCBpbnRlbF9wc3Jf aXJxX2hhbmRsZXIoc3RydWN0DQo+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBw c3JfaWlyKQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdmFsIHw9IEVEUF9Q U1JfRVJST1IodHJhbnNfc2hpZnQpOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIGltcl9yZWcsIHZhbCk7DQo+ID4gwqANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgc2NoZWR1bGVfd29yaygmZGV2X3ByaXYtPnBzci53b3JrKTsNCj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2NoZWR1bGVfd29yaygmaW50ZWxfZHAtPnBz ci53b3JrKTsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgfQ0KPiA+IMKgfQ0KPiA+IMKgDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gQEAgLTI5MSwxMiArMjk1LDYg QEAgdm9pZCBpbnRlbF9wc3JfaW5pdF9kcGNkKHN0cnVjdCBpbnRlbF9kcA0KPiA+ICppbnRlbF9k cCkNCj4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0NCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRvX2k5MTUoZHBfdG9fZGln X3BvcnQoaW50ZWxfZHApLT5iYXNlLmJhc2UuZGV2KTsNCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IC3CoMKgwqDCoMKgwqDCoGlmIChkZXZfcHJp di0+cHNyLmRwKSB7DQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRybV93YXJu KCZkZXZfcHJpdi0+ZHJtLA0KPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICJNb3JlIHRoYW4gb25lIGVEUCBwYW5lbCBmb3VuZCwgUFNSDQo+ID4gc3Vw cG9ydCBzaG91bGQgYmUgZXh0ZW5kZWRcbiIpOw0KPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqByZXR1cm47DQo+ID4gLcKgwqDCoMKgwqDCoMKgfQ0KPiA+IC0NCj4gPiDCoMKgwqDC oMKgwqDCoMKgZHJtX2RwX2RwY2RfcmVhZCgmaW50ZWxfZHAtPmF1eCwgRFBfUFNSX1NVUFBPUlQs IGludGVsX2RwLQ0KPiA+ID5wc3JfZHBjZCwNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2l6ZW9mKGludGVsX2RwLT5wc3JfZHBjZCkpOw0KPiA+ IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gQEAgLTMx NywxMiArMzE1LDEwIEBAIHZvaWQgaW50ZWxfcHNyX2luaXRfZHBjZChzdHJ1Y3QgaW50ZWxfZHAN Cj4gPiAqaW50ZWxfZHApDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1 cm47DQo+ID4gwqDCoMKgwqDCoMKgwqDCoH0NCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IC3CoMKgwqDCoMKgwqDCoGRldl9wcml2LT5wc3Iuc2lu a19zdXBwb3J0ID0gdHJ1ZTsNCj4gPiAtwqDCoMKgwqDCoMKgwqBkZXZfcHJpdi0+cHNyLnNpbmtf c3luY19sYXRlbmN5ID0NCj4gPiArwqDCoMKgwqDCoMKgwqBpbnRlbF9kcC0+cHNyLnNpbmtfc3Vw cG9ydCA9IHRydWU7DQo+ID4gK8KgwqDCoMKgwqDCoMKgaW50ZWxfZHAtPnBzci5zaW5rX3N5bmNf bGF0ZW5jeSA9DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpbnRlbF9kcF9n ZXRfc2lua19zeW5jX2xhdGVuY3koaW50ZWxfZHApOw0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gLcKgwqDCoMKgwqDCoMKgZGV2X3ByaXYtPnBz ci5kcCA9IGludGVsX2RwOw0KPiA+IC0NCj4gPiDCoMKgwqDCoMKgwqDCoMKgaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gOSAmJg0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGludGVsX2Rw LT5wc3JfZHBjZFswXSA9PQ0KPiA+IERQX1BTUjJfV0lUSF9ZX0NPT1JEX0lTX1NVUFBPUlRFRCkp IHsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJvb2wgeV9yZXEgPSBpbnRl bF9kcC0+cHNyX2RwY2RbMV0gJg0KPiA+IEBAIC0zNDAsMTQgKzMzNiwxNCBAQCB2b2lkIGludGVs X3Bzcl9pbml0X2RwY2Qoc3RydWN0IGludGVsX2RwDQo+ID4gKmludGVsX2RwKQ0KPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogWS1jb29yZGluYXRlIHJlcXVpcmVtZW50IHBh bmVscyB3ZSB3b3VsZCBuZWVkIHRvDQo+ID4gZW5hYmxlDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgKiBHVEMgZmlyc3QuDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgKi8NCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGV2X3ByaXYt PnBzci5zaW5rX3BzcjJfc3VwcG9ydCA9IHlfcmVxICYmIGFscG07DQo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGludGVsX2RwLT5wc3Iuc2lua19wc3IyX3N1cHBvcnQgPSB5X3Jl cSAmJiBhbHBtOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZHJtX2RiZ19r bXMoJmRldl9wcml2LT5kcm0sICJQU1IyICVzc3VwcG9ydGVkXG4iLA0KPiA+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRldl9wcml2LT5wc3Iu c2lua19wc3IyX3N1cHBvcnQgPyAiIiA6DQo+ID4gIm5vdCAiKTsNCj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnRlbF9kcC0+cHNyLnNp bmtfcHNyMl9zdXBwb3J0ID8gIiIgOg0KPiA+ICJub3QgIik7DQo+ID4gwqANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgaWYgKGRldl9wcml2LT5wc3Iuc2lua19wc3IyX3N1cHBvcnQpIHsNCj4gPiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRldl9wcml2LT5wc3Iu Y29sb3JpbWV0cnlfc3VwcG9ydCA9DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGlmIChpbnRlbF9kcC0+cHNyLnNpbmtfcHNyMl9zdXBwb3J0KSB7DQo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpbnRlbF9kcC0+cHNyLmNvbG9yaW1l dHJ5X3N1cHBvcnQgPQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpbnRlbF9kcF9nZXRfY29sb3JpbWV0cnlfc3RhdHVz KGludA0KPiA+IGVsX2RwKTsNCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGRldl9wcml2LT5wc3Iuc3VfeF9ncmFudWxhcml0eSA9DQo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpbnRlbF9kcC0+cHNyLnN1 X3hfZ3JhbnVsYXJpdHkgPQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpbnRlbF9kcF9nZXRfc3VfeF9ncmFudWxhcnRp eShpbnRlbA0KPiA+IF9kcCk7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9 DQo+ID4gwqDCoMKgwqDCoMKgwqDCoH0NCj4gPiBAQCAtMzczLDcgKzM2OSw3IEBAIHN0YXRpYyB2 b2lkIGhzd19wc3Jfc2V0dXBfYXV4KHN0cnVjdCBpbnRlbF9kcA0KPiA+ICppbnRlbF9kcCkNCj4g PiDCoMKgwqDCoMKgwqDCoMKgQlVJTERfQlVHX09OKHNpemVvZihhdXhfbXNnKSA+IDIwKTsNCj4g PiDCoMKgwqDCoMKgwqDCoMKgZm9yIChpID0gMDsgaSA8IHNpemVvZihhdXhfbXNnKTsgaSArPSA0 KQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW50ZWxfZGVfd3JpdGUoZGV2 X3ByaXYsDQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgRURQX1BTUl9BVVhfREFUQShkZXZfcHJpdi0NCj4gPiA+cHNyLnRyYW5z Y29kZXIsIGkgPj4gMiksDQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRURQX1BTUl9BVVhfREFUQShpbnRlbF9kcC0NCj4gPiA+ cHNyLnRyYW5zY29kZXIsIGkgPj4gMiksDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludGVsX2RwX3BhY2tfYXV4KCZhdXhf bXNnW2ldLA0KPiA+IHNpemVvZihhdXhfbXNnKSAtIGkpKTsNCj4gPiDCoA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IMKgwqDCoMKgwqDCoMKgwqBhdXhfY2xv Y2tfZGl2aWRlciA9IGludGVsX2RwLQ0KPiA+ID5nZXRfYXV4X2Nsb2NrX2RpdmlkZXIoaW50ZWxf ZHAsIDApOw0KPiA+IEBAIC0zODQsNyArMzgwLDcgQEAgc3RhdGljIHZvaWQgaHN3X3Bzcl9zZXR1 cF9hdXgoc3RydWN0IGludGVsX2RwDQo+ID4gKmludGVsX2RwKQ0KPiA+IMKgDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gwqDCoMKgwqDCoMKgwqDCoC8qIFNl bGVjdCBvbmx5IHZhbGlkIGJpdHMgZm9yIFNSRF9BVVhfQ1RMICovDQo+ID4gwqDCoMKgwqDCoMKg wqDCoGF1eF9jdGwgJj0gcHNyX2F1eF9tYXNrOw0KPiA+IC3CoMKgwqDCoMKgwqDCoGludGVsX2Rl X3dyaXRlKGRldl9wcml2LCBFRFBfUFNSX0FVWF9DVEwoZGV2X3ByaXYtDQo+ID4gPnBzci50cmFu c2NvZGVyKSwNCj4gPiArwqDCoMKgwqDCoMKgwqBpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgRURQ X1BTUl9BVVhfQ1RMKGludGVsX2RwLQ0KPiA+ID5wc3IudHJhbnNjb2RlciksDQo+ID4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXV4X2N0bCk7DQo+ID4gwqB9 DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiBA QCAtMzk0LDE0ICszOTAsMTQgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2VuYWJsZV9zaW5rKHN0 cnVjdA0KPiA+IGludGVsX2RwICppbnRlbF9kcCkNCj4gPiDCoMKgwqDCoMKgwqDCoMKgdTggZHBj ZF92YWwgPSBEUF9QU1JfRU5BQkxFOw0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gwqDCoMKgwqDCoMKgwqDCoC8qIEVuYWJsZSBBTFBNIGF0IHNp bmsgZm9yIHBzcjIgKi8NCj4gPiAtwqDCoMKgwqDCoMKgwqBpZiAoZGV2X3ByaXYtPnBzci5wc3Iy X2VuYWJsZWQpIHsNCj4gPiArwqDCoMKgwqDCoMKgwqBpZiAoaW50ZWxfZHAtPnBzci5wc3IyX2Vu YWJsZWQpIHsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRybV9kcF9kcGNk X3dyaXRlYigmaW50ZWxfZHAtPmF1eCwNCj4gPiBEUF9SRUNFSVZFUl9BTFBNX0NPTkZJRywNCj4g PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBEUF9BTFBNX0VOQUJMRSB8DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqANCj4gPiBEUF9B TFBNX0xPQ0tfRVJST1JfSVJRX0hQRF9FTkFCTEUpOw0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBkcGNkX3ZhbCB8PSBEUF9QU1JfRU5BQkxFX1BTUjIgfA0KPiA+IERQX1BTUl9JUlFfSFBE X1dJVEhfQ1JDX0VSUk9SUzsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgfSBlbHNlIHsNCj4gPiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGRldl9wcml2LT5wc3IubGlua19zdGFuZGJ5 KQ0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoaW50ZWxfZHAtPnBzci5s aW5rX3N0YW5kYnkpDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZHBjZF92YWwgfD0gRFBfUFNSX01BSU5fTElOS19BQ1RJVkU7DQo+ID4gwqANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpDQo+ID4gQEAg LTQ2NCw3ICs0NjAsNyBAQCBzdGF0aWMgdTggcHNyX2NvbXB1dGVfaWRsZV9mcmFtZXMoc3RydWN0 DQo+ID4gaW50ZWxfZHAgKmludGVsX2RwKQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqAgKiBvZmYtYnkt b25lIGlzc3VlIHRoYXQgSFcgaGFzIGluIHNvbWUgY2FzZXMuDQo+ID4gwqDCoMKgwqDCoMKgwqDC oCAqLw0KPiA+IMKgwqDCoMKgwqDCoMKgwqBpZGxlX2ZyYW1lcyA9IG1heCg2LCBkZXZfcHJpdi0+ dmJ0LnBzci5pZGxlX2ZyYW1lcyk7DQo+ID4gLcKgwqDCoMKgwqDCoMKgaWRsZV9mcmFtZXMgPSBt YXgoaWRsZV9mcmFtZXMsIGRldl9wcml2LQ0KPiA+ID5wc3Iuc2lua19zeW5jX2xhdGVuY3kgKyAx KTsNCj4gPiArwqDCoMKgwqDCoMKgwqBpZGxlX2ZyYW1lcyA9IG1heChpZGxlX2ZyYW1lcywgaW50 ZWxfZHAtDQo+ID4gPnBzci5zaW5rX3N5bmNfbGF0ZW5jeSArIDEpOw0KPiA+IMKgDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gwqDCoMKgwqDCoMKgwqDCoGlm IChkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwgaWRsZV9mcmFtZXMgPiAweGYpKQ0KPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWRsZV9mcmFtZXMgPSAweGY7DQo+ID4gQEAg LTQ4NCw3ICs0ODAsNyBAQCBzdGF0aWMgdm9pZCBoc3dfYWN0aXZhdGVfcHNyMShzdHJ1Y3QgaW50 ZWxfZHANCj4gPiAqaW50ZWxfZHApDQo+ID4gwqDCoMKgwqDCoMKgwqDCoGlmIChJU19IQVNXRUxM KGRldl9wcml2KSkNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHZhbCB8PSBF RFBfUFNSX01JTl9MSU5LX0VOVFJZX1RJTUVfOF9MSU5FUzsNCj4gPiDCoA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IC3CoMKgwqDCoMKgwqDCoGlmIChkZXZf cHJpdi0+cHNyLmxpbmtfc3RhbmRieSkNCj4gPiArwqDCoMKgwqDCoMKgwqBpZiAoaW50ZWxfZHAt PnBzci5saW5rX3N0YW5kYnkpDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2 YWwgfD0gRURQX1BTUl9MSU5LX1NUQU5EQlk7DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiDCoMKgwqDCoMKgwqDCoMKgdmFsIHw9IGludGVsX3Bz cjFfZ2V0X3RwX3RpbWUoaW50ZWxfZHApOw0KPiA+IEBAIC00OTIsOSArNDg4LDkgQEAgc3RhdGlj IHZvaWQgaHN3X2FjdGl2YXRlX3BzcjEoc3RydWN0IGludGVsX2RwDQo+ID4gKmludGVsX2RwKQ0K PiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KQ0KPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdmFsIHw9IEVEUF9QU1JfQ1JDX0VOQUJMRTsN Cj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IC3C oMKgwqDCoMKgwqDCoHZhbCB8PSAoaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgRURQX1BTUl9DVEwo ZGV2X3ByaXYtDQo+ID4gPnBzci50cmFuc2NvZGVyKSkgJg0KPiA+ICvCoMKgwqDCoMKgwqDCoHZh bCB8PSAoaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgRURQX1BTUl9DVEwoaW50ZWxfZHAtDQo+ID4g PnBzci50cmFuc2NvZGVyKSkgJg0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg RURQX1BTUl9SRVNUT1JFX1BTUl9BQ1RJVkVfQ1RYX01BU0spOw0KPiA+IC3CoMKgwqDCoMKgwqDC oGludGVsX2RlX3dyaXRlKGRldl9wcml2LCBFRFBfUFNSX0NUTChkZXZfcHJpdi0NCj4gPiA+cHNy LnRyYW5zY29kZXIpLCB2YWwpOw0KPiA+ICvCoMKgwqDCoMKgwqDCoGludGVsX2RlX3dyaXRlKGRl dl9wcml2LCBFRFBfUFNSX0NUTChpbnRlbF9kcC0NCj4gPiA+cHNyLnRyYW5zY29kZXIpLCB2YWwp Ow0KPiA+IMKgfQ0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gwqBzdGF0aWMgdTMyIGludGVsX3BzcjJfZ2V0X3RwX3RpbWUoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCkNCj4gPiBAQCAtNTI5LDcgKzUyNSw3IEBAIHN0YXRpYyB2b2lkIGhzd19h Y3RpdmF0ZV9wc3IyKHN0cnVjdCBpbnRlbF9kcA0KPiA+ICppbnRlbF9kcCkNCj4gPiDCoMKgwqDC oMKgwqDCoMKgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTAgfHwgSVNfR0VNSU5JTEFLRShk ZXZfcHJpdikpDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2YWwgfD0gRURQ X1lfQ09PUkRJTkFURV9FTkFCTEU7DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiAtwqDCoMKgwqDCoMKgwqB2YWwgfD0gRURQX1BTUjJfRlJBTUVf QkVGT1JFX1NVKGRldl9wcml2LQ0KPiA+ID5wc3Iuc2lua19zeW5jX2xhdGVuY3kgKyAxKTsNCj4g PiArwqDCoMKgwqDCoMKgwqB2YWwgfD0gRURQX1BTUjJfRlJBTUVfQkVGT1JFX1NVKGludGVsX2Rw LQ0KPiA+ID5wc3Iuc2lua19zeW5jX2xhdGVuY3kgKyAxKTsNCj4gPiDCoMKgwqDCoMKgwqDCoMKg dmFsIHw9IGludGVsX3BzcjJfZ2V0X3RwX3RpbWUoaW50ZWxfZHApOw0KPiA+IMKgDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gwqDCoMKgwqDCoMKgwqDCoGlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyKSB7DQo+ID4gQEAgLTU0OCw3ICs1NDQsNyBAQCBz dGF0aWMgdm9pZCBoc3dfYWN0aXZhdGVfcHNyMihzdHJ1Y3QgaW50ZWxfZHANCj4gPiAqaW50ZWxf ZHApDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2YWwgfD0gRURQX1BTUjJf RkFTVF9XQUtFKDcpOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqB9DQo+ID4gwqANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAtwqDCoMKgwqDCoMKgwqBpZiAoZGV2 X3ByaXYtPnBzci5wc3IyX3NlbF9mZXRjaF9lbmFibGVkKSB7DQo+ID4gK8KgwqDCoMKgwqDCoMKg aWYgKGludGVsX2RwLT5wc3IucHNyMl9zZWxfZmV0Y2hfZW5hYmxlZCkgew0KPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogV0EgMTQwODMzMDg0NyAqLw0KPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKElTX1RHTF9ESVNQX1JFVklEKGRldl9wcml2LCBU R0xfUkVWSURfQTAsDQo+ID4gVEdMX1JFVklEX0EwKSB8fA0KPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIElTX1JLTF9SRVZJRChkZXZfcHJpdiwgUktMX1JFVklEX0Ew LA0KPiA+IFJLTF9SRVZJRF9BMCkpDQo+ID4gQEAgLTU1NywyMCArNTUzLDIwIEBAIHN0YXRpYyB2 b2lkIGhzd19hY3RpdmF0ZV9wc3IyKHN0cnVjdCBpbnRlbF9kcA0KPiA+ICppbnRlbF9kcCkNCj4g PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqANCj4gPiBESVNfUkFNX0JZUEFTU19QU1IyX01BTl9UUkFDSyk7DQo+ ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGludGVsX2RlX3dyaXRlKGRldl9wcml2LA0KPiA+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIFBTUjJfTUFOX1RSS19DVEwoZGV2X3ByaXYtDQo+ID4gPnBzci50cmFuc2NvZGVyKSwNCj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBQU1IyX01BTl9UUktfQ1RMKGludGVsX2RwLQ0KPiA+ID5wc3IudHJhbnNjb2RlciksDQo+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIFBTUjJfTUFOX1RSS19DVExfRU5BQkxFKTsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgfSBl bHNlIGlmIChIQVNfUFNSMl9TRUxfRkVUQ0goZGV2X3ByaXYpKSB7DQo+ID4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwNCj4gPiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBQU1Iy X01BTl9UUktfQ1RMKGRldl9wcml2LQ0KPiA+ID5wc3IudHJhbnNjb2RlciksIDApOw0KPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IFBTUjJfTUFOX1RSS19DVEwoaW50ZWxfZHAtDQo+ID4gPnBzci50cmFuc2NvZGVyKSwgMCk7DQo+ ID4gwqDCoMKgwqDCoMKgwqDCoH0NCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IMKgwqDCoMKgwqDCoMKgwqAvKg0KPiA+IMKgwqDCoMKgwqDCoMKg wqAgKiBQU1IyIEhXIGlzIGluY29ycmVjdGx5IHVzaW5nIEVEUF9QU1JfVFAxX1RQM19TRUwgYW5k DQo+ID4gQlNwZWMgaXMNCj4gPiDCoMKgwqDCoMKgwqDCoMKgICogcmVjb21tZW5kaW5nIGtlZXAg dGhpcyBiaXQgdW5zZXQgd2hpbGUgUFNSMiBpcyBlbmFibGVkLg0KPiA+IMKgwqDCoMKgwqDCoMKg wqAgKi8NCj4gPiAtwqDCoMKgwqDCoMKgwqBpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgRURQX1BT Ul9DVEwoZGV2X3ByaXYtDQo+ID4gPnBzci50cmFuc2NvZGVyKSwgMCk7DQo+ID4gK8KgwqDCoMKg wqDCoMKgaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIEVEUF9QU1JfQ1RMKGludGVsX2RwLQ0KPiA+ ID5wc3IudHJhbnNjb2RlciksIDApOw0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gLcKgwqDCoMKgwqDCoMKgaW50ZWxfZGVfd3JpdGUoZGV2X3By aXYsIEVEUF9QU1IyX0NUTChkZXZfcHJpdi0NCj4gPiA+cHNyLnRyYW5zY29kZXIpLCB2YWwpOw0K PiA+ICvCoMKgwqDCoMKgwqDCoGludGVsX2RlX3dyaXRlKGRldl9wcml2LCBFRFBfUFNSMl9DVEwo aW50ZWxfZHAtDQo+ID4gPnBzci50cmFuc2NvZGVyKSwgdmFsKTsNCj4gPiDCoH0NCj4gPiDCoA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IMKgc3RhdGljIGJv b2wNCj4gPiBAQCAtNTkzLDU1ICs1ODksNTggQEAgc3RhdGljIHUzMiBpbnRlbF9nZXRfZnJhbWVf dGltZV91cyhjb25zdA0KPiA+IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpDQo+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRy bV9tb2RlX3ZyZWZyZXNoKCZjc3RhdGUtDQo+ID4gPmh3LmFkanVzdGVkX21vZGUpKTsNCj4gPiDC oH0NCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IC1zdGF0aWMgdm9pZCBwc3IyX3Byb2dyYW1faWRsZV9mcmFtZXMoc3RydWN0IGRybV9pOTE1X3By aXZhdGUNCj4gPiAqZGV2X3ByaXYsDQo+ID4gK3N0YXRpYyB2b2lkIHBzcjJfcHJvZ3JhbV9pZGxl X2ZyYW1lcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLA0KPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1 MzIgaWRsZV9mcmFtZXMpDQo+ID4gwqB7DQo+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7DQo+ID4gwqDCoMKg wqDCoMKgwqDCoHUzMiB2YWw7DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiDCoMKgwqDCoMKgwqDCoMKgaWRsZV9mcmFtZXMgPDw9wqAgRURQX1BT UjJfSURMRV9GUkFNRV9TSElGVDsNCj4gPiAtwqDCoMKgwqDCoMKgwqB2YWwgPSBpbnRlbF9kZV9y ZWFkKGRldl9wcml2LCBFRFBfUFNSMl9DVEwoZGV2X3ByaXYtDQo+ID4gPnBzci50cmFuc2NvZGVy KSk7DQo+ID4gK8KgwqDCoMKgwqDCoMKgdmFsID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgRURQ X1BTUjJfQ1RMKGludGVsX2RwLQ0KPiA+ID5wc3IudHJhbnNjb2RlcikpOw0KPiA+IMKgwqDCoMKg wqDCoMKgwqB2YWwgJj0gfkVEUF9QU1IyX0lETEVfRlJBTUVfTUFTSzsNCj4gPiDCoMKgwqDCoMKg wqDCoMKgdmFsIHw9IGlkbGVfZnJhbWVzOw0KPiA+IC3CoMKgwqDCoMKgwqDCoGludGVsX2RlX3dy aXRlKGRldl9wcml2LCBFRFBfUFNSMl9DVEwoZGV2X3ByaXYtDQo+ID4gPnBzci50cmFuc2NvZGVy KSwgdmFsKTsNCj4gPiArwqDCoMKgwqDCoMKgwqBpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgRURQ X1BTUjJfQ1RMKGludGVsX2RwLQ0KPiA+ID5wc3IudHJhbnNjb2RlciksIHZhbCk7DQo+ID4gwqB9 DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAt c3RhdGljIHZvaWQgdGdsX3BzcjJfZW5hYmxlX2RjM2NvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl DQo+ID4gKmRldl9wcml2KQ0KPiA+ICtzdGF0aWMgdm9pZCB0Z2xfcHNyMl9lbmFibGVfZGMzY28o c3RydWN0IGludGVsX2RwICppbnRlbF9kcCkNCj4gPiDCoHsNCj4gPiAtwqDCoMKgwqDCoMKgwqBw c3IyX3Byb2dyYW1faWRsZV9mcmFtZXMoZGV2X3ByaXYsIDApOw0KPiA+ICvCoMKgwqDCoMKgwqDC oHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHAp Ow0KPiA+ICsNCj4gPiArwqDCoMKgwqDCoMKgwqBwc3IyX3Byb2dyYW1faWRsZV9mcmFtZXMoaW50 ZWxfZHAsIDApOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqBpbnRlbF9kaXNwbGF5X3Bvd2VyX3NldF90 YXJnZXRfZGNfc3RhdGUoZGV2X3ByaXYsDQo+ID4gRENfU1RBVEVfRU5fREMzQ08pOw0KPiA+IMKg fQ0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g LXN0YXRpYyB2b2lkIHRnbF9wc3IyX2Rpc2FibGVfZGMzY28oc3RydWN0IGRybV9pOTE1X3ByaXZh dGUNCj4gPiAqZGV2X3ByaXYpDQo+ID4gK3N0YXRpYyB2b2lkIHRnbF9wc3IyX2Rpc2FibGVfZGMz Y28oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkNCj4gPiDCoHsNCj4gPiAtwqDCoMKgwqDCoMKg wqBzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZGV2X3ByaXYtPnBzci5kcDsNCj4gPiArwqDC oMKgwqDCoMKgwqBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1 KGludGVsX2RwKTsNCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IMKgwqDCoMKgwqDCoMKgwqBpbnRlbF9kaXNwbGF5X3Bvd2VyX3NldF90YXJnZXRf ZGNfc3RhdGUoZGV2X3ByaXYsDQo+ID4gRENfU1RBVEVfRU5fVVBUT19EQzYpOw0KPiA+IC3CoMKg wqDCoMKgwqDCoHBzcjJfcHJvZ3JhbV9pZGxlX2ZyYW1lcyhkZXZfcHJpdiwNCj4gPiBwc3JfY29t cHV0ZV9pZGxlX2ZyYW1lcyhpbnRlbF9kcCkpOw0KPiA+ICvCoMKgwqDCoMKgwqDCoHBzcjJfcHJv Z3JhbV9pZGxlX2ZyYW1lcyhpbnRlbF9kcCwNCj4gPiBwc3JfY29tcHV0ZV9pZGxlX2ZyYW1lcyhp bnRlbF9kcCkpOw0KPiA+IMKgfQ0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gwqBzdGF0aWMgdm9pZCB0Z2xfZGMzY29fZGlzYWJsZV93b3JrKHN0 cnVjdCB3b3JrX3N0cnVjdCAqd29yaykNCj4gPiDCoHsNCj4gPiAtwqDCoMKgwqDCoMKgwqBzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQ0KPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBjb250YWluZXJfb2Yod29yaywgdHlwZW9mKCpkZXZfcHJpdiksDQo+ID4gcHNy LmRjM2NvX3dvcmsud29yayk7DQo+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCA9DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbnRhaW5lcl9v Zih3b3JrLCB0eXBlb2YoKmludGVsX2RwKSwNCj4gPiBwc3IuZGMzY29fd29yay53b3JrKTsNCj4g PiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IC3CoMKg wqDCoMKgwqDCoG11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7DQo+ID4gK8KgwqDCoMKg wqDCoMKgbXV0ZXhfbG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsNCj4gPiDCoMKgwqDCoMKgwqDC oMKgLyogSWYgZGVsYXllZCB3b3JrIGlzIHBlbmRpbmcsIGl0IGlzIG5vdCBpZGxlICovDQo+ID4g LcKgwqDCoMKgwqDCoMKgaWYgKGRlbGF5ZWRfd29ya19wZW5kaW5nKCZkZXZfcHJpdi0+cHNyLmRj M2NvX3dvcmspKQ0KPiA+ICvCoMKgwqDCoMKgwqDCoGlmIChkZWxheWVkX3dvcmtfcGVuZGluZygm aW50ZWxfZHAtPnBzci5kYzNjb193b3JrKSkNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGdvdG8gdW5sb2NrOw0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gLcKgwqDCoMKgwqDCoMKgdGdsX3BzcjJfZGlzYWJsZV9kYzNjbyhk ZXZfcHJpdik7DQo+ID4gK8KgwqDCoMKgwqDCoMKgdGdsX3BzcjJfZGlzYWJsZV9kYzNjbyhpbnRl bF9kcCk7DQo+ID4gwqB1bmxvY2s6DQo+ID4gLcKgwqDCoMKgwqDCoMKgbXV0ZXhfdW5sb2NrKCZk ZXZfcHJpdi0+cHNyLmxvY2spOw0KPiA+ICvCoMKgwqDCoMKgwqDCoG11dGV4X3VubG9jaygmaW50 ZWxfZHAtPnBzci5sb2NrKTsNCj4gPiDCoH0NCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IC1zdGF0aWMgdm9pZCB0Z2xfZGlzYWxsb3dfZGMzY29f b25fcHNyMl9leGl0KHN0cnVjdA0KPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQ0KPiA+ ICtzdGF0aWMgdm9pZCB0Z2xfZGlzYWxsb3dfZGMzY29fb25fcHNyMl9leGl0KHN0cnVjdCBpbnRl bF9kcA0KPiA+ICppbnRlbF9kcCkNCj4gPiDCoHsNCj4gPiAtwqDCoMKgwqDCoMKgwqBpZiAoIWRl dl9wcml2LT5wc3IuZGMzY29fZW5hYmxlZCkNCj4gPiArwqDCoMKgwqDCoMKgwqBpZiAoIWludGVs X2RwLT5wc3IuZGMzY29fZW5hYmxlZCkNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHJldHVybjsNCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IC3CoMKgwqDCoMKgwqDCoGNhbmNlbF9kZWxheWVkX3dvcmsoJmRldl9wcml2LT5w c3IuZGMzY29fd29yayk7DQo+ID4gK8KgwqDCoMKgwqDCoMKgY2FuY2VsX2RlbGF5ZWRfd29yaygm aW50ZWxfZHAtPnBzci5kYzNjb193b3JrKTsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgLyogQmVmb3Jl IFBTUjIgZXhpdCBkaXNhbGxvdyBkYzNjbyovDQo+ID4gLcKgwqDCoMKgwqDCoMKgdGdsX3BzcjJf ZGlzYWJsZV9kYzNjbyhkZXZfcHJpdik7DQo+ID4gK8KgwqDCoMKgwqDCoMKgdGdsX3BzcjJfZGlz YWJsZV9kYzNjbyhpbnRlbF9kcCk7DQo+ID4gwqB9DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiDCoHN0YXRpYyB2b2lkDQo+ID4gQEAgLTcxNCw3 ICs3MTMsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9wc3IyX2NvbmZpZ192YWxpZChzdHJ1Y3QNCj4g PiBpbnRlbF9kcCAqaW50ZWxfZHAsDQo+ID4gwqDCoMKgwqDCoMKgwqDCoGludCBjcnRjX3ZkaXNw bGF5ID0gY3J0Y19zdGF0ZS0NCj4gPiA+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZkaXNwbGF5Ow0K PiA+IMKgwqDCoMKgwqDCoMKgwqBpbnQgcHNyX21heF9oID0gMCwgcHNyX21heF92ID0gMCwgbWF4 X2JwcCA9IDA7DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiAtwqDCoMKgwqDCoMKgwqBpZiAoIWRldl9wcml2LT5wc3Iuc2lua19wc3IyX3N1cHBv cnQpDQo+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKCFpbnRlbF9kcC0+cHNyLnNpbmtfcHNyMl9zdXBw b3J0KQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGZhbHNlOw0K PiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gwqDC oMKgwqDCoMKgwqDCoGlmICghdHJhbnNjb2Rlcl9oYXNfcHNyMihkZXZfcHJpdiwgY3J0Y19zdGF0 ZS0NCj4gPiA+Y3B1X3RyYW5zY29kZXIpKSB7DQo+ID4gQEAgLTcyNCw3ICs3MjMsNyBAQCBzdGF0 aWMgYm9vbCBpbnRlbF9wc3IyX2NvbmZpZ192YWxpZChzdHJ1Y3QNCj4gPiBpbnRlbF9kcCAqaW50 ZWxfZHAsDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZmFsc2U7 DQo+ID4gwqDCoMKgwqDCoMKgwqDCoH0NCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IC3CoMKgwqDCoMKgwqDCoGlmICghcHNyMl9nbG9iYWxfZW5h YmxlZChkZXZfcHJpdikpIHsNCj4gPiArwqDCoMKgwqDCoMKgwqBpZiAoIXBzcjJfZ2xvYmFsX2Vu YWJsZWQoaW50ZWxfZHApKSB7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBk cm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwgIlBTUjIgZGlzYWJsZWQgYnkNCj4gPiBmbGFnXG4i KTsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBmYWxzZTsNCj4g PiDCoMKgwqDCoMKgwqDCoMKgfQ0KPiA+IEBAIC03NzMsMTAgKzc3MiwxMCBAQCBzdGF0aWMgYm9v bCBpbnRlbF9wc3IyX2NvbmZpZ192YWxpZChzdHJ1Y3QNCj4gPiBpbnRlbF9kcCAqaW50ZWxfZHAs DQo+ID4gwqDCoMKgwqDCoMKgwqDCoCAqIG9ubHkgbmVlZCB0byB2YWxpZGF0ZSB0aGUgU1UgYmxv Y2sgd2lkdGggaXMgYSBtdWx0aXBsZQ0KPiA+IG9mDQo+ID4gwqDCoMKgwqDCoMKgwqDCoCAqIHgg Z3JhbnVsYXJpdHkuDQo+ID4gwqDCoMKgwqDCoMKgwqDCoCAqLw0KPiA+IC3CoMKgwqDCoMKgwqDC oGlmIChjcnRjX2hkaXNwbGF5ICUgZGV2X3ByaXYtPnBzci5zdV94X2dyYW51bGFyaXR5KSB7DQo+ ID4gK8KgwqDCoMKgwqDCoMKgaWYgKGNydGNfaGRpc3BsYXkgJSBpbnRlbF9kcC0+cHNyLnN1X3hf Z3JhbnVsYXJpdHkpIHsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRybV9k Ymdfa21zKCZkZXZfcHJpdi0+ZHJtLA0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiUFNSMiBub3QgZW5hYmxlZCwgaGRpc3BsYXkoJWQp IG5vdA0KPiA+IG11bHRpcGxlIG9mICVkXG4iLA0KPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNydGNfaGRpc3BsYXksIGRldl9wcml2LQ0K PiA+ID5wc3Iuc3VfeF9ncmFudWxhcml0eSk7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY3J0Y19oZGlzcGxheSwgaW50ZWxfZHAtDQo+ ID4gPnBzci5zdV94X2dyYW51bGFyaXR5KTsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHJldHVybiBmYWxzZTsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgfQ0KPiA+IMKgDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gQEAgLTgxMSwxMyArODEw LDEwIEBAIHZvaWQgaW50ZWxfcHNyX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9kcA0KPiA+ ICppbnRlbF9kcCwNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCZjcnRjX3N0 YXRlLT5ody5hZGp1c3RlZF9tb2RlOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqBpbnQgcHNyX3NldHVw X3RpbWU7DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiAtwqDCoMKgwqDCoMKgwqBpZiAoIUNBTl9QU1IoZGV2X3ByaXYpKQ0KPiA+ICvCoMKgwqDC oMKgwqDCoGlmICghQ0FOX1BTUihpbnRlbF9kcCkpDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqByZXR1cm47DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiAtwqDCoMKgwqDCoMKgwqBpZiAoaW50ZWxfZHAgIT0gZGV2X3ByaXYt PnBzci5kcCkNCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuOw0KPiA+ IC0NCj4gPiAtwqDCoMKgwqDCoMKgwqBpZiAoIXBzcl9nbG9iYWxfZW5hYmxlZChkZXZfcHJpdikp IHsNCj4gPiArwqDCoMKgwqDCoMKgwqBpZiAoIXBzcl9nbG9iYWxfZW5hYmxlZChpbnRlbF9kcCkp IHsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRybV9kYmdfa21zKCZkZXZf cHJpdi0+ZHJtLCAiUFNSIGRpc2FibGVkIGJ5DQo+ID4gZmxhZ1xuIik7DQo+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm47DQo+ID4gwqDCoMKgwqDCoMKgwqDCoH0NCj4g PiBAQCAtODI1LDE2ICs4MjEsMTggQEAgdm9pZCBpbnRlbF9wc3JfY29tcHV0ZV9jb25maWcoc3Ry dWN0IGludGVsX2RwDQo+ID4gKmludGVsX2RwLA0KPiA+IMKgwqDCoMKgwqDCoMKgwqAvKg0KPiA+ IMKgwqDCoMKgwqDCoMKgwqAgKiBIU1cgc3BlYyBleHBsaWNpdGx5IHNheXMgUFNSIGlzIHRpZWQg dG8gcG9ydCBBLg0KPiA+IMKgwqDCoMKgwqDCoMKgwqAgKiBCRFcrIHBsYXRmb3JtcyBoYXZlIGEg aW5zdGFuY2Ugb2YgUFNSIHJlZ2lzdGVycyBwZXINCj4gPiB0cmFuc2NvZGVyIGJ1dA0KPiA+IC3C oMKgwqDCoMKgwqDCoCAqIGZvciBub3cgaXQgb25seSBzdXBwb3J0cyBvbmUgaW5zdGFuY2Ugb2Yg UFNSLCBzbyBsZXRzDQo+ID4ga2VlcCBpdA0KPiA+IC3CoMKgwqDCoMKgwqDCoCAqIGhhcmRjb2Rl ZCB0byBQT1JUX0ENCj4gPiArwqDCoMKgwqDCoMKgwqAgKiBCRFcsIEdFTjkgYW5kIEdFTjExIGFy ZSBub3QgdmFsaWRhdGVkIGJ5IEhXIHRlYW0uDQo+ID4gK8KgwqDCoMKgwqDCoMKgICogRm9yIG5v dyBpdCBvbmx5IHN1cHBvcnRzIG9uZSBpbnN0YW5jZSBvZiBQU1IgZm9yDQo+ID4gQkRXLEdFTjkg YW5kIEdFTjExLg0KPiANCj4gTml0OiBtaXNzaW5nIGEgc3BhY2UgaW4gQkRXLEdFTjkuDQo+IA0K d2xsIHVwZGF0ZSB2MTIgcGF0Y2guDQo+ID4gK8KgwqDCoMKgwqDCoMKgICogU28gbGV0cyBrZWVw IGl0IGhhcmRjb2RlZCB0byBQT1JUX0EgZm9yIEJEVywgR0VOOSBhbmQNCj4gPiBHRU4xMS4NCj4g PiArwqDCoMKgwqDCoMKgwqAgKiBCdXQgR0VOMTIgc3VwcG9ydHMgYSBpbnN0YW5jZSBvZiBQU1Ig cmVnaXN0ZXJzIHBlcg0KPiA+IHRyYW5zY29kZXIuDQo+ID4gwqDCoMKgwqDCoMKgwqDCoCAqLw0K PiA+IC3CoMKgwqDCoMKgwqDCoGlmIChkaWdfcG9ydC0+YmFzZS5wb3J0ICE9IFBPUlRfQSkgew0K PiA+ICvCoMKgwqDCoMKgwqDCoGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgMTIgJiYgZGlnX3Bv cnQtPmJhc2UucG9ydCAhPQ0KPiA+IFBPUlRfQSkgew0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sDQo+ID4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJQU1IgY29uZGl0aW9u IGZhaWxlZDogUG9ydCBub3QNCj4gPiBzdXBwb3J0ZWRcbiIpOw0KPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqB9DQo+ID4gwqAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAtwqDCoMKgwqDCoMKgwqBpZiAo ZGV2X3ByaXYtPnBzci5zaW5rX25vdF9yZWxpYWJsZSkgew0KPiA+ICvCoMKgwqDCoMKgwqDCoGlm IChpbnRlbF9kcC0+cHNyLnNpbmtfbm90X3JlbGlhYmxlKSB7DQo+ID4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwNCj4gPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIlBTUiBzaW5r IGltcGxlbWVudGF0aW9uIGlzIG5vdA0KPiA+IHJlbGlhYmxlXG4iKTsNCj4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybjsNCj4gPiBAQCAtODcwLDIzICs4NjgsMjQgQEAg dm9pZCBpbnRlbF9wc3JfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2RwDQo+ID4gKmludGVs X2RwLA0KPiA+IMKgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2FjdGl2YXRlKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHApDQo+ID4gwqB7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOw0KPiA+ICvCoMKgwqDC oMKgwqDCoGVudW0gdHJhbnNjb2RlciB0cmFuc2NvZGVyID0gaW50ZWxfZHAtPnBzci50cmFuc2Nv ZGVyOw0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gLcKgwqDC oMKgwqDCoMKgaWYgKHRyYW5zY29kZXJfaGFzX3BzcjIoZGV2X3ByaXYsIGRldl9wcml2LQ0KPiA+ ID5wc3IudHJhbnNjb2RlcikpDQo+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKHRyYW5zY29kZXJfaGFz X3BzcjIoZGV2X3ByaXYsIHRyYW5zY29kZXIpKQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sDQo+ID4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50ZWxfZGVfcmVhZChkZXZf cHJpdiwNCj4gPiBFRFBfUFNSMl9DVEwoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSkgJiBFRFBf UFNSMl9FTkFCTEUpOw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGludGVsX2RlX3JlYWQoZGV2X3ByaXYsDQo+ID4gRURQX1BTUjJfQ1RM KHRyYW5zY29kZXIpKSAmIEVEUF9QU1IyX0VOQUJMRSk7DQo+ID4gwqANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiDCoMKgwqDCoMKgwqDCoMKgZHJtX1dBUk5fT04oJmRldl9w cml2LT5kcm0sDQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnRl bF9kZV9yZWFkKGRldl9wcml2LCBFRFBfUFNSX0NUTChkZXZfcHJpdi0NCj4gPiA+cHNyLnRyYW5z Y29kZXIpKSAmIEVEUF9QU1JfRU5BQkxFKTsNCj4gPiAtwqDCoMKgwqDCoMKgwqBkcm1fV0FSTl9P TigmZGV2X3ByaXYtPmRybSwgZGV2X3ByaXYtPnBzci5hY3RpdmUpOw0KPiA+IC3CoMKgwqDCoMKg wqDCoGxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5wc3IubG9jayk7DQo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnRlbF9kZV9yZWFkKGRldl9wcml2LA0K PiA+IEVEUF9QU1JfQ1RMKHRyYW5zY29kZXIpKSAmIEVEUF9QU1JfRU5BQkxFKTsNCj4gPiArwqDC oMKgwqDCoMKgwqBkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwgaW50ZWxfZHAtPnBzci5hY3Rp dmUpOw0KPiA+ICvCoMKgwqDCoMKgwqDCoGxvY2tkZXBfYXNzZXJ0X2hlbGQoJmludGVsX2RwLT5w c3IubG9jayk7DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiDC oMKgwqDCoMKgwqDCoMKgLyogcHNyMSBhbmQgcHNyMiBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiov DQo+ID4gLcKgwqDCoMKgwqDCoMKgaWYgKGRldl9wcml2LT5wc3IucHNyMl9lbmFibGVkKQ0KPiA+ ICvCoMKgwqDCoMKgwqDCoGlmIChpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCkNCj4gPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGhzd19hY3RpdmF0ZV9wc3IyKGludGVsX2RwKTsN Cj4gPiDCoMKgwqDCoMKgwqDCoMKgZWxzZQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaHN3X2FjdGl2YXRlX3BzcjEoaW50ZWxfZHApOw0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gLcKgwqDCoMKgwqDCoMKgZGV2X3ByaXYtPnBzci5hY3Rp dmUgPSB0cnVlOw0KPiA+ICvCoMKgwqDCoMKgwqDCoGludGVsX2RwLT5wc3IuYWN0aXZlID0gdHJ1 ZTsNCj4gPiDCoH0NCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IMKgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2VuYWJsZV9zb3VyY2Uoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCwNCj4gPiBAQCAtOTAyLDcgKzkwMSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Bzcl9l bmFibGVfc291cmNlKHN0cnVjdA0KPiA+IGludGVsX2RwICppbnRlbF9kcCwNCj4gPiDCoMKgwqDC oMKgwqDCoMKgaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJp dikpDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBoc3dfcHNyX3NldHVwX2F1 eChpbnRlbF9kcCk7DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiAtwqDCoMKgwqDCoMKgwqBpZiAoZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQgJiYgKElTX0dF TihkZXZfcHJpdiwgOSkgJiYNCj4gPiArwqDCoMKgwqDCoMKgwqBpZiAoaW50ZWxfZHAtPnBzci5w c3IyX2VuYWJsZWQgJiYgKElTX0dFTihkZXZfcHJpdiwgOSkgJiYNCj4gPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqANCj4gPiAhSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpKSB7DQo+ID4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpOTE1X3JlZ190IHJlZyA9IENISUNLRU5fVFJB TlMoY3B1X3RyYW5zY29kZXIpOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg dTMyIGNoaWNrZW4gPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCByZWcpOw0KPiA+IEBAIC05MjYs MTAgKzkyNSwxMCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wc3JfZW5hYmxlX3NvdXJjZShzdHJ1Y3QN Cj4gPiBpbnRlbF9kcCAqaW50ZWxfZHAsDQo+ID4gwqDCoMKgwqDCoMKgwqDCoGlmIChJTlRFTF9H RU4oZGV2X3ByaXYpIDwgMTEpDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBt YXNrIHw9IEVEUF9QU1JfREVCVUdfTUFTS19ESVNQX1JFR19XUklURTsNCj4gPiDCoA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IC3CoMKgwqDCoMKgwqDCoGludGVsX2RlX3dy aXRlKGRldl9wcml2LCBFRFBfUFNSX0RFQlVHKGRldl9wcml2LQ0KPiA+ID5wc3IudHJhbnNjb2Rl ciksDQo+ID4gK8KgwqDCoMKgwqDCoMKgaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIEVEUF9QU1Jf REVCVUcoaW50ZWxfZHAtDQo+ID4gPnBzci50cmFuc2NvZGVyKSwNCj4gPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtYXNrKTsNCj4gPiDCoA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IC3CoMKgwqDCoMKgwqDCoHBzcl9pcnFfY29udHJv bChkZXZfcHJpdik7DQo+ID4gK8KgwqDCoMKgwqDCoMKgcHNyX2lycV9jb250cm9sKGludGVsX2Rw KTsNCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IMKgwqDCoMKg wqDCoMKgwqBpZiAoY3J0Y19zdGF0ZS0+ZGMzY29fZXhpdGxpbmUpIHsNCj4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHUzMiB2YWw7DQo+ID4gQEAgLTk0NywzMCArOTQ2LDMwIEBA IHN0YXRpYyB2b2lkIGludGVsX3Bzcl9lbmFibGVfc291cmNlKHN0cnVjdA0KPiA+IGludGVsX2Rw ICppbnRlbF9kcCwNCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IMKgwqDCoMKgwqDCoMKgwqBpZiAoSEFTX1BTUl9IV19UUkFDS0lORyhkZXZfcHJpdikgJiYNCj4g PiBIQVNfUFNSMl9TRUxfRkVUQ0goZGV2X3ByaXYpKQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaW50ZWxfZGVfcm13KGRldl9wcml2LCBDSElDS0VOX1BBUjFfMSwNCj4gPiBJ R05PUkVfUFNSMl9IV19UUkFDS0lORywNCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRldl9wcml2LT5wc3IucHNyMl9zZWxfZmV0Y2hf ZW5hYmxlZCA/DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBpbnRlbF9kcC0+cHNyLnBzcjJfc2VsX2ZldGNoX2VuYWJsZWQgPw0KPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IElHTk9SRV9QU1IyX0hXX1RSQUNLSU5HIDogMCk7DQo+ID4gwqB9DQo+ID4gwqANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAtc3RhdGljIHZvaWQgaW50ZWxfcHNyX2VuYWJs ZV9sb2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUNCj4gPiAqZGV2X3ByaXYsDQo+ID4gK3N0 YXRpYyB2b2lkIGludGVsX3Bzcl9lbmFibGVfbG9ja2VkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHAsDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQ0KPiA+ ICpjcnRjX3N0YXRlLA0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3Qgc3RydWN0DQo+ID4gZHJtX2Nv bm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkNCj4gPiDCoHsNCj4gPiAtwqDCoMKgwqDCoMKgwqBz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZGV2X3ByaXYtPnBzci5kcDsNCj4gPiArwqDCoMKg wqDCoMKgwqBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGlu dGVsX2RwKTsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAq ZGlnX3BvcnQgPQ0KPiA+IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsNCj4gPiDCoMKgwqDCoMKg wqDCoMKgc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIgPSAmZGlnX3BvcnQtPmJhc2U7DQo+ ID4gwqDCoMKgwqDCoMKgwqDCoHUzMiB2YWw7DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiAtwqDCoMKgwqDCoMKgwqBkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRy bSwgZGV2X3ByaXYtPnBzci5lbmFibGVkKTsNCj4gPiArwqDCoMKgwqDCoMKgwqBkcm1fV0FSTl9P TigmZGV2X3ByaXYtPmRybSwgaW50ZWxfZHAtPnBzci5lbmFibGVkKTsNCj4gPiDCoA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IC3CoMKgwqDCoMKgwqDCoGRldl9wcml2LT5w c3IucHNyMl9lbmFibGVkID0gY3J0Y19zdGF0ZS0+aGFzX3BzcjI7DQo+ID4gLcKgwqDCoMKgwqDC oMKgZGV2X3ByaXYtPnBzci5idXN5X2Zyb250YnVmZmVyX2JpdHMgPSAwOw0KPiA+IC3CoMKgwqDC oMKgwqDCoGRldl9wcml2LT5wc3IucGlwZSA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFw aS5jcnRjKS0NCj4gPiA+cGlwZTsNCj4gPiAtwqDCoMKgwqDCoMKgwqBkZXZfcHJpdi0+cHNyLmRj M2NvX2VuYWJsZWQgPSAhIWNydGNfc3RhdGUtPmRjM2NvX2V4aXRsaW5lOw0KPiA+IC3CoMKgwqDC oMKgwqDCoGRldl9wcml2LT5wc3IudHJhbnNjb2RlciA9IGNydGNfc3RhdGUtPmNwdV90cmFuc2Nv ZGVyOw0KPiA+ICvCoMKgwqDCoMKgwqDCoGludGVsX2RwLT5wc3IucHNyMl9lbmFibGVkID0gY3J0 Y19zdGF0ZS0+aGFzX3BzcjI7DQo+ID4gK8KgwqDCoMKgwqDCoMKgaW50ZWxfZHAtPnBzci5idXN5 X2Zyb250YnVmZmVyX2JpdHMgPSAwOw0KPiA+ICvCoMKgwqDCoMKgwqDCoGludGVsX2RwLT5wc3Iu cGlwZSA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKS0NCj4gPiA+cGlwZTsN Cj4gPiArwqDCoMKgwqDCoMKgwqBpbnRlbF9kcC0+cHNyLmRjM2NvX2VuYWJsZWQgPSAhIWNydGNf c3RhdGUtPmRjM2NvX2V4aXRsaW5lOw0KPiA+ICvCoMKgwqDCoMKgwqDCoGludGVsX2RwLT5wc3Iu dHJhbnNjb2RlciA9IGNydGNfc3RhdGUtPmNwdV90cmFuc2NvZGVyOw0KPiA+IMKgwqDCoMKgwqDC oMKgwqAvKiBEQzUvREM2IHJlcXVpcmVzIGF0IGxlYXN0IDYgaWRsZSBmcmFtZXMgKi8NCj4gPiDC oMKgwqDCoMKgwqDCoMKgdmFsID0gdXNlY3NfdG9famlmZmllcyhpbnRlbF9nZXRfZnJhbWVfdGlt ZV91cyhjcnRjX3N0YXRlKQ0KPiA+ICogNik7DQo+ID4gLcKgwqDCoMKgwqDCoMKgZGV2X3ByaXYt PnBzci5kYzNjb19leGl0X2RlbGF5ID0gdmFsOw0KPiA+IC3CoMKgwqDCoMKgwqDCoGRldl9wcml2 LT5wc3IucHNyMl9zZWxfZmV0Y2hfZW5hYmxlZCA9IGNydGNfc3RhdGUtDQo+ID4gPmVuYWJsZV9w c3IyX3NlbF9mZXRjaDsNCj4gPiArwqDCoMKgwqDCoMKgwqBpbnRlbF9kcC0+cHNyLmRjM2NvX2V4 aXRfZGVsYXkgPSB2YWw7DQo+ID4gK8KgwqDCoMKgwqDCoMKgaW50ZWxfZHAtPnBzci5wc3IyX3Nl bF9mZXRjaF9lbmFibGVkID0gY3J0Y19zdGF0ZS0NCj4gPiA+ZW5hYmxlX3BzcjJfc2VsX2ZldGNo Ow0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gwqDCoMKgwqDC oMKgwqDCoC8qDQo+ID4gwqDCoMKgwqDCoMKgwqDCoCAqIElmIGEgUFNSIGVycm9yIGhhcHBlbmVk IGFuZCB0aGUgZHJpdmVyIGlzIHJlbG9hZGVkLCB0aGUNCj4gPiBFRFBfUFNSX0lJUg0KPiA+IEBA IC05ODIsMjcgKzk4MSwyNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wc3JfZW5hYmxlX2xvY2tlZChz dHJ1Y3QNCj4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwNCj4gPiDCoMKgwqDCoMKgwqDC oMKgICovDQo+ID4gwqDCoMKgwqDCoMKgwqDCoGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEy KSB7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2YWwgPSBpbnRlbF9kZV9y ZWFkKGRldl9wcml2LA0KPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBUUkFOU19QU1JfSUlSKGRldl9wcml2LQ0K PiA+ID5wc3IudHJhbnNjb2RlcikpOw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBUUkFOU19QU1JfSUlSKGlu dGVsX2RwLQ0KPiA+ID5wc3IudHJhbnNjb2RlcikpOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgdmFsICY9IEVEUF9QU1JfRVJST1IoMCk7DQo+ID4gwqDCoMKgwqDCoMKgwqDC oH0gZWxzZSB7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2YWwgPSBpbnRl bF9kZV9yZWFkKGRldl9wcml2LCBFRFBfUFNSX0lJUik7DQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHZhbCAmPSBFRFBfUFNSX0VSUk9SKGRldl9wcml2LT5wc3IudHJhbnNjb2Rl cik7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHZhbCAmPSBFRFBfUFNSX0VS Uk9SKGludGVsX2RwLT5wc3IudHJhbnNjb2Rlcik7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoH0NCj4g PiDCoMKgwqDCoMKgwqDCoMKgaWYgKHZhbCkgew0KPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBkZXZfcHJpdi0+cHNyLnNpbmtfbm90X3JlbGlhYmxlID0gdHJ1ZTsNCj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW50ZWxfZHAtPnBzci5zaW5rX25vdF9yZWxpYWJs ZSA9IHRydWU7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkcm1fZGJnX2tt cygmZGV2X3ByaXYtPmRybSwNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgIlBTUiBpbnRlcnJ1cHRpb24gZXJyb3Igc2V0LCBub3QNCj4g PiBlbmFibGluZyBQU1JcbiIpOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg cmV0dXJuOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqB9DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiDCoMKgwqDCoMKgwqDCoMKgZHJtX2RiZ19rbXMoJmRldl9wcml2 LT5kcm0sICJFbmFibGluZyBQU1Ilc1xuIiwNCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGRldl9wcml2LT5wc3IucHNyMl9lbmFibGVkID8gIjIiIDogIjEiKTsNCj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludGVsX2RwLT5wc3IucHNy Ml9lbmFibGVkID8gIjIiIDogIjEiKTsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgaW50ZWxfZHBfY29t cHV0ZV9wc3JfdnNjX3NkcChpbnRlbF9kcCwgY3J0Y19zdGF0ZSwNCj4gPiBjb25uX3N0YXRlLA0K PiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICZkZXZfcHJpdi0+cHNyLnZzYyk7DQo+ID4gLcKgwqDCoMKgwqDC oMKgaW50ZWxfd3JpdGVfZHBfdnNjX3NkcChlbmNvZGVyLCBjcnRjX3N0YXRlLCAmZGV2X3ByaXYt DQo+ID4gPnBzci52c2MpOw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZpbnRlbF9kcC0+cHNyLnZzYyk7 DQo+ID4gK8KgwqDCoMKgwqDCoMKgaW50ZWxfd3JpdGVfZHBfdnNjX3NkcChlbmNvZGVyLCBjcnRj X3N0YXRlLCAmaW50ZWxfZHAtDQo+ID4gPnBzci52c2MpOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqBp bnRlbF9wc3JfZW5hYmxlX3NpbmsoaW50ZWxfZHApOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqBpbnRl bF9wc3JfZW5hYmxlX3NvdXJjZShpbnRlbF9kcCwgY3J0Y19zdGF0ZSk7DQo+ID4gLcKgwqDCoMKg wqDCoMKgZGV2X3ByaXYtPnBzci5lbmFibGVkID0gdHJ1ZTsNCj4gPiArwqDCoMKgwqDCoMKgwqBp bnRlbF9kcC0+cHNyLmVuYWJsZWQgPSB0cnVlOw0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gwqDCoMKgwqDCoMKgwqDCoGludGVsX3Bzcl9hY3RpdmF0ZShpbnRl bF9kcCk7DQo+ID4gwqB9DQo+ID4gQEAgLTEwMjEsNyArMTAyMCw3IEBAIHZvaWQgaW50ZWxfcHNy X2VuYWJsZShzdHJ1Y3QgaW50ZWxfZHANCj4gPiAqaW50ZWxfZHAsDQo+ID4gwqB7DQo+ID4gwqDC oMKgwqDCoMKgwqDCoHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5 MTUoaW50ZWxfZHApOw0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gLcKgwqDCoMKgwqDCoMKgaWYgKCFDQU5fUFNSKGRldl9wcml2KSB8fCBkZXZfcHJpdi0+cHNy LmRwICE9IGludGVsX2RwKQ0KPiA+ICvCoMKgwqDCoMKgwqDCoGlmICghQ0FOX1BTUihpbnRlbF9k cCkpDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm47DQo+ID4gwqAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiDCoMKgwqDCoMKgwqDCoMKgaWYg KCFjcnRjX3N0YXRlLT5oYXNfcHNyKQ0KPiA+IEBAIC0xMDI5LDQ2ICsxMDI4LDQ3IEBAIHZvaWQg aW50ZWxfcHNyX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZHANCj4gPiAqaW50ZWxfZHAsDQo+ID4gwqAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiDCoMKgwqDCoMKgwqDCoMKgZHJt X1dBUk5fT04oJmRldl9wcml2LT5kcm0sIGRldl9wcml2LT5kcnJzLmRwKTsNCj4gPiDCoA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IC3CoMKgwqDCoMKgwqDCoG11dGV4X2xv Y2soJmRldl9wcml2LT5wc3IubG9jayk7DQo+ID4gLcKgwqDCoMKgwqDCoMKgaW50ZWxfcHNyX2Vu YWJsZV9sb2NrZWQoZGV2X3ByaXYsIGNydGNfc3RhdGUsIGNvbm5fc3RhdGUpOw0KPiA+IC3CoMKg wqDCoMKgwqDCoG11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gPiArwqDCoMKg wqDCoMKgwqBtdXRleF9sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOw0KPiA+ICvCoMKgwqDCoMKg wqDCoGludGVsX3Bzcl9lbmFibGVfbG9ja2VkKGludGVsX2RwLCBjcnRjX3N0YXRlLCBjb25uX3N0 YXRlKTsNCj4gPiArwqDCoMKgwqDCoMKgwqBtdXRleF91bmxvY2soJmludGVsX2RwLT5wc3IubG9j ayk7DQo+ID4gwqB9DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiAtc3RhdGljIHZvaWQgaW50ZWxfcHNyX2V4aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQ0KPiA+ICtzdGF0aWMgdm9pZCBpbnRlbF9wc3JfZXhpdChzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwKQ0KPiA+IMKgew0KPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOw0KPiA+IMKgwqDCoMKgwqDC oMKgwqB1MzIgdmFsOw0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gLcKgwqDCoMKgwqDCoMKgaWYgKCFkZXZfcHJpdi0+cHNyLmFjdGl2ZSkgew0KPiA+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAodHJhbnNjb2Rlcl9oYXNfcHNyMihkZXZfcHJp diwgZGV2X3ByaXYtDQo+ID4gPnBzci50cmFuc2NvZGVyKSkgew0KPiA+ICvCoMKgwqDCoMKgwqDC oGlmICghaW50ZWxfZHAtPnBzci5hY3RpdmUpIHsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgaWYgKHRyYW5zY29kZXJfaGFzX3BzcjIoZGV2X3ByaXYsIGludGVsX2RwLQ0KPiA+ ID5wc3IudHJhbnNjb2RlcikpIHsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LA0KPiA+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRURQX1BTUjJfQ1RMKGRldl9wcml2LQ0KPiA+ID5wc3Iu dHJhbnNjb2RlcikpOw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRURQX1BTUjJf Q1RMKGludGVsX2RwLQ0KPiA+ID5wc3IudHJhbnNjb2RlcikpOw0KPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRybV9XQVJOX09OKCZkZXZfcHJpdi0+ ZHJtLCB2YWwgJg0KPiA+IEVEUF9QU1IyX0VOQUJMRSk7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB9DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHZhbCA9IGludGVsX2RlX3JlYWQo ZGV2X3ByaXYsDQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEVEUF9QU1JfQ1RMKGRldl9wcml2LQ0KPiA+ID5w c3IudHJhbnNjb2RlcikpOw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBFRFBfUFNSX0NUTChpbnRlbF9kcC0N Cj4gPiA+cHNyLnRyYW5zY29kZXIpKTsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJtLCB2YWwgJiBFRFBfUFNSX0VOQUJMRSk7DQo+ ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybjsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgfQ0KPiA+IMKg DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gLcKgwqDCoMKgwqDCoMKgaWYg KGRldl9wcml2LT5wc3IucHNyMl9lbmFibGVkKSB7DQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHRnbF9kaXNhbGxvd19kYzNjb19vbl9wc3IyX2V4aXQoZGV2X3ByaXYpOw0KPiA+ ICvCoMKgwqDCoMKgwqDCoGlmIChpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCkgew0KPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0Z2xfZGlzYWxsb3dfZGMzY29fb25fcHNyMl9l eGl0KGludGVsX2RwKTsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHZhbCA9 IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsDQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEVEUF9QU1IyX0NUTChk ZXZfcHJpdi0NCj4gPiA+cHNyLnRyYW5zY29kZXIpKTsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRURQX1BT UjJfQ1RMKGludGVsX2RwLQ0KPiA+ID5wc3IudHJhbnNjb2RlcikpOw0KPiA+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sICEodmFsICYN Cj4gPiBFRFBfUFNSMl9FTkFCTEUpKTsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHZhbCAmPSB+RURQX1BTUjJfRU5BQkxFOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsDQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRURQX1BTUjJfQ1RMKGRl dl9wcml2LQ0KPiA+ID5wc3IudHJhbnNjb2RlciksIHZhbCk7DQo+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRURQX1BTUjJfQ1RM KGludGVsX2RwLQ0KPiA+ID5wc3IudHJhbnNjb2RlciksIHZhbCk7DQo+ID4gwqDCoMKgwqDCoMKg wqDCoH0gZWxzZSB7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2YWwgPSBp bnRlbF9kZV9yZWFkKGRldl9wcml2LA0KPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBFRFBfUFNSX0NUTChkZXZf cHJpdi0NCj4gPiA+cHNyLnRyYW5zY29kZXIpKTsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRURQX1BTUl9D VEwoaW50ZWxfZHAtDQo+ID4gPnBzci50cmFuc2NvZGVyKSk7DQo+ID4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwgISh2YWwgJg0KPiA+ IEVEUF9QU1JfRU5BQkxFKSk7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2 YWwgJj0gfkVEUF9QU1JfRU5BQkxFOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsDQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRURQX1BTUl9DVEwoZGV2X3ByaXYt DQo+ID4gPnBzci50cmFuc2NvZGVyKSwgdmFsKTsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBFRFBfUFNSX0NUTChpbnRlbF9k cC0NCj4gPiA+cHNyLnRyYW5zY29kZXIpLCB2YWwpOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqB9DQo+ ID4gLcKgwqDCoMKgwqDCoMKgZGV2X3ByaXYtPnBzci5hY3RpdmUgPSBmYWxzZTsNCj4gPiArwqDC oMKgwqDCoMKgwqBpbnRlbF9kcC0+cHNyLmFjdGl2ZSA9IGZhbHNlOw0KPiA+IMKgfQ0KPiA+IMKg DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gwqBzdGF0aWMgdm9pZCBpbnRl bF9wc3JfZGlzYWJsZV9sb2NrZWQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkNCj4gPiBAQCAt MTA3NywyMSArMTA3NywyMSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wc3JfZGlzYWJsZV9sb2NrZWQo c3RydWN0DQo+ID4gaW50ZWxfZHAgKmludGVsX2RwKQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqBpOTE1 X3JlZ190IHBzcl9zdGF0dXM7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoHUzMiBwc3Jfc3RhdHVzX21h c2s7DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAtwqDCoMKg wqDCoMKgwqBsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+cHNyLmxvY2spOw0KPiA+ICvC oMKgwqDCoMKgwqDCoGxvY2tkZXBfYXNzZXJ0X2hlbGQoJmludGVsX2RwLT5wc3IubG9jayk7DQo+ ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAtwqDCoMKgwqDCoMKg wqBpZiAoIWRldl9wcml2LT5wc3IuZW5hYmxlZCkNCj4gPiArwqDCoMKgwqDCoMKgwqBpZiAoIWlu dGVsX2RwLT5wc3IuZW5hYmxlZCkNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHJldHVybjsNCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IMKg wqDCoMKgwqDCoMKgwqBkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwgIkRpc2FibGluZyBQU1Il c1xuIiwNCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRldl9wcml2 LT5wc3IucHNyMl9lbmFibGVkID8gIjIiIDogIjEiKTsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGludGVsX2RwLT5wc3IucHNyMl9lbmFibGVkID8gIjIiIDogIjEi KTsNCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IC3CoMKgwqDC oMKgwqDCoGludGVsX3Bzcl9leGl0KGRldl9wcml2KTsNCj4gPiArwqDCoMKgwqDCoMKgwqBpbnRl bF9wc3JfZXhpdChpbnRlbF9kcCk7DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiAtwqDCoMKgwqDCoMKgwqBpZiAoZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQp IHsNCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcHNyX3N0YXR1cyA9IEVEUF9Q U1IyX1NUQVRVUyhkZXZfcHJpdi0NCj4gPiA+cHNyLnRyYW5zY29kZXIpOw0KPiA+ICvCoMKgwqDC oMKgwqDCoGlmIChpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCkgew0KPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBwc3Jfc3RhdHVzID0gRURQX1BTUjJfU1RBVFVTKGludGVsX2Rw LQ0KPiA+ID5wc3IudHJhbnNjb2Rlcik7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBwc3Jfc3RhdHVzX21hc2sgPSBFRFBfUFNSMl9TVEFUVVNfU1RBVEVfTUFTSzsNCj4gPiDC oMKgwqDCoMKgwqDCoMKgfSBlbHNlIHsNCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgcHNyX3N0YXR1cyA9IEVEUF9QU1JfU1RBVFVTKGRldl9wcml2LQ0KPiA+ID5wc3IudHJhbnNj b2Rlcik7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBzcl9zdGF0dXMgPSBF RFBfUFNSX1NUQVRVUyhpbnRlbF9kcC0NCj4gPiA+cHNyLnRyYW5zY29kZXIpOw0KPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcHNyX3N0YXR1c19tYXNrID0gRURQX1BTUl9TVEFU VVNfU1RBVEVfTUFTSzsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgfQ0KPiA+IMKgDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gQEAgLTExMDEsNyArMTEwMSw3IEBAIHN0YXRpYyB2 b2lkIGludGVsX3Bzcl9kaXNhYmxlX2xvY2tlZChzdHJ1Y3QNCj4gPiBpbnRlbF9kcCAqaW50ZWxf ZHApDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkcm1fZXJyKCZkZXZfcHJp di0+ZHJtLCAiVGltZWQgb3V0IHdhaXRpbmcgUFNSIGlkbGUNCj4gPiBzdGF0ZVxuIik7DQo+ID4g wqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiDCoMKgwqDCoMKgwqDCoMKg LyogV0EgMTQwODMzMDg0NyAqLw0KPiA+IC3CoMKgwqDCoMKgwqDCoGlmIChkZXZfcHJpdi0+cHNy LnBzcjJfc2VsX2ZldGNoX2VuYWJsZWQgJiYNCj4gPiArwqDCoMKgwqDCoMKgwqBpZiAoaW50ZWxf ZHAtPnBzci5wc3IyX3NlbF9mZXRjaF9lbmFibGVkICYmDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAoSVNfVEdMX0RJU1BfUkVWSUQoZGV2X3ByaXYsIFRHTF9SRVZJRF9BMCwNCj4gPiBUR0xf UkVWSURfQTApIHx8DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIElTX1JLTF9SRVZJRChk ZXZfcHJpdiwgUktMX1JFVklEX0EwLCBSS0xfUkVWSURfQTApKSkNCj4gPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGludGVsX2RlX3JtdyhkZXZfcHJpdiwgQ0hJQ0tFTl9QQVIxXzEs DQo+ID4gQEAgLTExMTAsMTAgKzExMTAsMTAgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2Rpc2Fi bGVfbG9ja2VkKHN0cnVjdA0KPiA+IGludGVsX2RwICppbnRlbF9kcCkNCj4gPiDCoMKgwqDCoMKg wqDCoMKgLyogRGlzYWJsZSBQU1Igb24gU2luayAqLw0KPiA+IMKgwqDCoMKgwqDCoMKgwqBkcm1f ZHBfZHBjZF93cml0ZWIoJmludGVsX2RwLT5hdXgsIERQX1BTUl9FTl9DRkcsIDApOw0KPiA+IMKg DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gLcKgwqDCoMKgwqDCoMKgaWYg KGRldl9wcml2LT5wc3IucHNyMl9lbmFibGVkKQ0KPiA+ICvCoMKgwqDCoMKgwqDCoGlmIChpbnRl bF9kcC0+cHNyLnBzcjJfZW5hYmxlZCkNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGRybV9kcF9kcGNkX3dyaXRlYigmaW50ZWxfZHAtPmF1eCwNCj4gPiBEUF9SRUNFSVZFUl9B TFBNX0NPTkZJRywgMCk7DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiAtwqDCoMKgwqDCoMKgwqBkZXZfcHJpdi0+cHNyLmVuYWJsZWQgPSBmYWxzZTsNCj4gPiAr wqDCoMKgwqDCoMKgwqBpbnRlbF9kcC0+cHNyLmVuYWJsZWQgPSBmYWxzZTsNCj4gPiDCoH0NCj4g PiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IMKgLyoqDQo+ID4gQEAg LTExMzEsMjAgKzExMzEsMjIgQEAgdm9pZCBpbnRlbF9wc3JfZGlzYWJsZShzdHJ1Y3QgaW50ZWxf ZHANCj4gPiAqaW50ZWxfZHAsDQo+ID4gwqDCoMKgwqDCoMKgwqDCoGlmICghb2xkX2NydGNfc3Rh dGUtPmhhc19wc3IpDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm47 DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAtwqDCoMKgwqDC oMKgwqBpZiAoZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sICFDQU5fUFNSKGRldl9wcml2KSkp DQo+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKGRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJtLCAhQ0FO X1BTUihpbnRlbF9kcCkpKQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0 dXJuOw0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gLcKgwqDC oMKgwqDCoMKgbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gPiArwqDCoMKgwqDC oMKgwqBtdXRleF9sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOw0KPiA+IMKgDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gwqDCoMKgwqDCoMKgwqDCoGludGVsX3Bzcl9kaXNh YmxlX2xvY2tlZChpbnRlbF9kcCk7DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiAtwqDCoMKgwqDCoMKgwqBtdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9j ayk7DQo+ID4gLcKgwqDCoMKgwqDCoMKgY2FuY2VsX3dvcmtfc3luYygmZGV2X3ByaXYtPnBzci53 b3JrKTsNCj4gPiAtwqDCoMKgwqDCoMKgwqBjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmRldl9w cml2LT5wc3IuZGMzY29fd29yayk7DQo+ID4gK8KgwqDCoMKgwqDCoMKgbXV0ZXhfdW5sb2NrKCZp bnRlbF9kcC0+cHNyLmxvY2spOw0KPiA+ICvCoMKgwqDCoMKgwqDCoGNhbmNlbF93b3JrX3N5bmMo JmludGVsX2RwLT5wc3Iud29yayk7DQo+ID4gK8KgwqDCoMKgwqDCoMKgY2FuY2VsX2RlbGF5ZWRf d29ya19zeW5jKCZpbnRlbF9kcC0+cHNyLmRjM2NvX3dvcmspOw0KPiA+IMKgfQ0KPiA+IMKgDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gLXN0YXRpYyB2b2lkIHBzcl9mb3Jj ZV9od190cmFja2luZ19leGl0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlDQo+ID4gKmRldl9wcml2 KQ0KPiA+ICtzdGF0aWMgdm9pZCBwc3JfZm9yY2VfaHdfdHJhY2tpbmdfZXhpdChzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwKQ0KPiA+IMKgew0KPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOw0KPiA+ICsNCj4g PiDCoMKgwqDCoMKgwqDCoMKgaWYgKElTX1RJR0VSTEFLRShkZXZfcHJpdikpDQo+ID4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKg0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICogV3JpdGVzIHRvIENVUlNVUkZMSVZFIGluIFRHTCBhcmUgY2F1c2luZyBJT01N VQ0KPiA+IGVycm9ycyBhbmQNCj4gPiBAQCAtMTE1OCw3ICsxMTYwLDcgQEAgc3RhdGljIHZvaWQg cHNyX2ZvcmNlX2h3X3RyYWNraW5nX2V4aXQoc3RydWN0DQo+ID4gZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBTbyB1c2lu ZyB0aGlzIHdvcmthcm91bmQgdW50aWwgdGhpcyBpc3N1ZSBpcw0KPiA+IHJvb3QgY2F1c2VkDQo+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBhbmQgYSBiZXR0ZXIgZml4IGlz IGZvdW5kLg0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovDQo+ID4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGludGVsX3Bzcl9leGl0KGRldl9wcml2KTsNCj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW50ZWxfcHNyX2V4aXQoaW50ZWxfZHAp Ow0KPiA+IMKgwqDCoMKgwqDCoMKgwqBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkp DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKg0KPiA+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICogRGlzcGxheSBXQSAjMDg4NDogc2tsKw0KPiA+IEBAIC0x MTY5LDEzICsxMTcxLDEzIEBAIHN0YXRpYyB2b2lkDQo+ID4gcHNyX2ZvcmNlX2h3X3RyYWNraW5n X2V4aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQ0KPiA+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICogYnV0IGl0IG1ha2VzIG1vcmUgc2Vuc2Ugd3JpdGUgdG8g dGhlIGN1cnJlbnQNCj4gPiBhY3RpdmUNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAqIHBpcGUuDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8NCj4g PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYs IENVUlNVUkZMSVZFKGRldl9wcml2LQ0KPiA+ID5wc3IucGlwZSksIDApOw0KPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgQ1VSU1VSRkxJ VkUoaW50ZWxfZHAtDQo+ID4gPnBzci5waXBlKSwgMCk7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoGVs c2UNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qDQo+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBBIHdyaXRlIHRvIENVUlNVUkZMSVZFIGRvIG5vdCBj YXVzZSBIVyB0cmFja2luZw0KPiA+IHRvIGV4aXQgUFNSDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgKiBvbiBvbGRlciBnZW5zIHNvIGRvaW5nIHRoZSBtYW51YWwgZXhpdCBp bnN0ZWFkLg0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovDQo+ID4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGludGVsX3Bzcl9leGl0KGRldl9wcml2KTsNCj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW50ZWxfcHNyX2V4aXQoaW50ZWxfZHAp Ow0KPiA+IMKgfQ0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g wqB2b2lkIGludGVsX3BzcjJfcHJvZ3JhbV9wbGFuZV9zZWxfZmV0Y2goc3RydWN0IGludGVsX3Bs YW5lICpwbGFuZSwNCj4gPiBAQCAtMTIyMSwxMSArMTIyMywxMSBAQCB2b2lkDQo+ID4gaW50ZWxf cHNyMl9wcm9ncmFtX3BsYW5lX3NlbF9mZXRjaChzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLA0K PiA+IMKgwqDCoMKgwqDCoMKgwqBpbnRlbF9kZV93cml0ZV9mdyhkZXZfcHJpdiwgUExBTkVfU0VM X0ZFVENIX1NJWkUocGlwZSwNCj4gPiBwbGFuZS0+aWQpLCB2YWwpOw0KPiA+IMKgfQ0KPiA+IMKg DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gLXZvaWQgaW50ZWxfcHNyMl9w cm9ncmFtX3RyYW5zX21hbl90cmtfY3RsKGNvbnN0IHN0cnVjdA0KPiA+IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUpDQo+ID4gK3ZvaWQgaW50ZWxfcHNyMl9wcm9ncmFtX3RyYW5zX21hbl90 cmtfY3RsKHN0cnVjdCBpbnRlbF9kcA0KPiA+ICppbnRlbF9kcCwNCj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgY29uc3Qgc3RydWN0DQo+ID4gaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSkNCj4gPiDCoHsNCj4gPiAtwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9 IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0NCj4gPiA+dWFwaS5jcnRjKTsNCj4gPiAtwqDCoMKg wqDCoMKgwqBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMt DQo+ID4gPmJhc2UuZGV2KTsNCj4gPiAtwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaTkxNV9wc3IgKnBz ciA9ICZkZXZfcHJpdi0+cHNyOw0KPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOw0KPiA+ICvCoMKgwqDCoMKg wqDCoHN0cnVjdCBpbnRlbF9wc3IgKnBzciA9ICZpbnRlbF9kcC0+cHNyOw0KPiA+IMKgDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gwqDCoMKgwqDCoMKgwqDCoGlmICghSEFT X1BTUjJfU0VMX0ZFVENIKGRldl9wcml2KSB8fA0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg IWNydGNfc3RhdGUtPmVuYWJsZV9wc3IyX3NlbF9mZXRjaCkNCj4gPiBAQCAtMTQyNywxMyArMTQy OSwxMyBAQCB2b2lkIGludGVsX3Bzcl91cGRhdGUoc3RydWN0IGludGVsX2RwDQo+ID4gKmludGVs X2RwLA0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25z dCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkNCj4gPiDCoHsNCj4gPiDC oMKgwqDCoMKgwqDCoMKgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9f aTkxNShpbnRlbF9kcCk7DQo+ID4gLcKgwqDCoMKgwqDCoMKgc3RydWN0IGk5MTVfcHNyICpwc3Ig PSAmZGV2X3ByaXYtPnBzcjsNCj4gPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaW50ZWxfcHNyICpw c3IgPSAmaW50ZWxfZHAtPnBzcjsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgYm9vbCBlbmFibGUsIHBz cjJfZW5hYmxlOw0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g LcKgwqDCoMKgwqDCoMKgaWYgKCFDQU5fUFNSKGRldl9wcml2KSB8fCBSRUFEX09OQ0UocHNyLT5k cCkgIT0gaW50ZWxfZHApDQo+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKCFDQU5fUFNSKGludGVsX2Rw KSkNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybjsNCj4gPiDCoA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IC3CoMKgwqDCoMKgwqDCoG11dGV4 X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7DQo+ID4gK8KgwqDCoMKgwqDCoMKgbXV0ZXhfbG9j aygmaW50ZWxfZHAtPnBzci5sb2NrKTsNCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IMKgwqDCoMKgwqDCoMKgwqBlbmFibGUgPSBjcnRjX3N0YXRlLT5oYXNfcHNy Ow0KPiA+IMKgwqDCoMKgwqDCoMKgwqBwc3IyX2VuYWJsZSA9IGNydGNfc3RhdGUtPmhhc19wc3Iy Ow0KPiA+IEBAIC0xNDQxLDE1ICsxNDQzLDE1IEBAIHZvaWQgaW50ZWxfcHNyX3VwZGF0ZShzdHJ1 Y3QgaW50ZWxfZHANCj4gPiAqaW50ZWxfZHAsDQo+ID4gwqDCoMKgwqDCoMKgwqDCoGlmIChlbmFi bGUgPT0gcHNyLT5lbmFibGVkICYmIHBzcjJfZW5hYmxlID09IHBzci0NCj4gPiA+cHNyMl9lbmFi bGVkKSB7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBGb3JjZSBhIFBT UiBleGl0IHdoZW4gZW5hYmxpbmcgQ1JDIHRvIGF2b2lkIENSQw0KPiA+IHRpbWVvdXRzICovDQo+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoY3J0Y19zdGF0ZS0+Y3JjX2Vu YWJsZWQgJiYgcHNyLT5lbmFibGVkKQ0KPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgcHNyX2ZvcmNlX2h3X3RyYWNraW5nX2V4aXQoZGV2X3ByaXYpOw0K PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcHNyX2Zv cmNlX2h3X3RyYWNraW5nX2V4aXQoaW50ZWxfZHApOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDkgJiYgcHNyLT5lbmFi bGVkKSB7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgLyoNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgKiBBY3RpdmF0ZSBQU1IgYWdhaW4gYWZ0ZXIgYSBmb3JjZSBleGl0DQo+ID4gd2hlbiBlbmFi bGluZw0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAqIENSQyBpbiBvbGRlciBnZW5zDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICovDQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBpZiAoIWRldl9wcml2LT5wc3IuYWN0aXZlICYmDQo+ID4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIWRldl9wcml2 LT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzKQ0KPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNjaGVkdWxlX3dvcmsoJmRl dl9wcml2LT5wc3Iud29yayk7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBpZiAoIWludGVsX2RwLT5wc3IuYWN0aXZlICYmDQo+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIWludGVsX2RwLT5w c3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzKQ0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNjaGVkdWxlX3dvcmsoJmludGVs X2RwLT5wc3Iud29yayk7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9DQo+ ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gdW5sb2NrOw0KPiA+IEBAIC0xNDU5LDM0ICsxNDYxLDIz IEBAIHZvaWQgaW50ZWxfcHNyX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfZHANCj4gPiAqaW50ZWxfZHAs DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpbnRlbF9wc3JfZGlzYWJsZV9s b2NrZWQoaW50ZWxfZHApOw0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gwqDCoMKgwqDCoMKgwqDCoGlmIChlbmFibGUpDQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGludGVsX3Bzcl9lbmFibGVfbG9ja2VkKGRldl9wcml2LCBjcnRjX3N0YXRl LA0KPiA+IGNvbm5fc3RhdGUpOw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp bnRlbF9wc3JfZW5hYmxlX2xvY2tlZChpbnRlbF9kcCwgY3J0Y19zdGF0ZSwNCj4gPiBjb25uX3N0 YXRlKTsNCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IMKgdW5s b2NrOg0KPiA+IC3CoMKgwqDCoMKgwqDCoG11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2Nr KTsNCj4gPiArwqDCoMKgwqDCoMKgwqBtdXRleF91bmxvY2soJmludGVsX2RwLT5wc3IubG9jayk7 DQo+ID4gwqB9DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiDC oC8qKg0KPiA+IC0gKiBpbnRlbF9wc3Jfd2FpdF9mb3JfaWRsZSAtIHdhaXQgZm9yIFBTUjEgdG8g aWRsZQ0KPiA+IC0gKiBAbmV3X2NydGNfc3RhdGU6IG5ldyBDUlRDIHN0YXRlDQo+ID4gKyAqIHBz cl93YWl0X2Zvcl9pZGxlIC0gd2FpdCBmb3IgUFNSMSB0byBpZGxlDQo+ID4gKyAqIEBpbnRlbF9k cDogSW50ZWwgRFANCj4gPiDCoMKgKiBAb3V0X3ZhbHVlOiBQU1Igc3RhdHVzIGluIGNhc2Ugb2Yg ZmFpbHVyZQ0KPiA+IMKgwqAqDQo+ID4gLSAqIFRoaXMgZnVuY3Rpb24gaXMgZXhwZWN0ZWQgdG8g YmUgY2FsbGVkIGZyb20gcGlwZV91cGRhdGVfc3RhcnQoKQ0KPiA+IHdoZXJlIGl0IGlzDQo+ID4g LSAqIG5vdCBleHBlY3RlZCB0byByYWNlIHdpdGggUFNSIGVuYWJsZSBvciBkaXNhYmxlLg0KPiA+ IC0gKg0KPiA+IMKgwqAqIFJldHVybnM6IDAgb24gc3VjY2VzcyBvciAtRVRJTUVPVVQgaWYgUFNS IHN0YXR1cyBkb2VzIG5vdCBpZGxlLg0KPiA+ICsgKg0KPiA+IMKgwqAqLw0KPiA+IC1pbnQgaW50 ZWxfcHNyX3dhaXRfZm9yX2lkbGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUNCj4gPiAq bmV3X2NydGNfc3RhdGUsDQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgdTMyICpvdXRfdmFsdWUpDQo+ID4gK3N0YXRpYyBpbnQgcHNyX3dh aXRfZm9yX2lkbGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgdTMyDQo+ID4gKm91dF92YWx1 ZSkNCj4gPiDCoHsNCj4gPiAtwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9 IHRvX2ludGVsX2NydGMobmV3X2NydGNfc3RhdGUtDQo+ID4gPnVhcGkuY3J0Yyk7DQo+ID4gLcKg wqDCoMKgwqDCoMKgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShj cnRjLQ0KPiA+ID5iYXNlLmRldik7DQo+ID4gLQ0KPiA+IC3CoMKgwqDCoMKgwqDCoGlmICghZGV2 X3ByaXYtPnBzci5lbmFibGVkIHx8ICFuZXdfY3J0Y19zdGF0ZS0+aGFzX3BzcikNCj4gPiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7DQo+ID4gLQ0KPiA+IC3CoMKgwqDC oMKgwqDCoC8qIEZJWE1FOiBVcGRhdGUgdGhpcyBmb3IgUFNSMiBpZiB3ZSBuZWVkIHRvIHdhaXQg Zm9yIGlkbGUNCj4gPiAqLw0KPiA+IC3CoMKgwqDCoMKgwqDCoGlmIChSRUFEX09OQ0UoZGV2X3By aXYtPnBzci5wc3IyX2VuYWJsZWQpKQ0KPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqByZXR1cm4gMDsNCj4gPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsNCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IMKgwqDCoMKgwqDCoMKgwqAvKg0KPiA+IMKgwqDCoMKgwqDC oMKgwqAgKiBGcm9tIGJzcGVjOiBQYW5lbCBTZWxmIFJlZnJlc2ggKEJEVyspDQo+ID4gQEAgLTE0 OTQsMzIgKzE0ODUsNjQgQEAgaW50IGludGVsX3Bzcl93YWl0X2Zvcl9pZGxlKGNvbnN0IHN0cnVj dA0KPiA+IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlLA0KPiA+IMKgwqDCoMKgwqDC oMKgwqAgKiBleGl0IHRyYWluaW5nIHRpbWUgKyAxLjUgbXMgb2YgYXV4IGNoYW5uZWwgaGFuZHNo YWtlLiA1MA0KPiA+IG1zIGlzDQo+ID4gwqDCoMKgwqDCoMKgwqDCoCAqIGRlZmVuc2l2ZSBlbm91 Z2ggdG8gY292ZXIgZXZlcnl0aGluZy4NCj4gPiDCoMKgwqDCoMKgwqDCoMKgICovDQo+ID4gLQ0K PiA+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gX19pbnRlbF93YWl0X2Zvcl9yZWdpc3RlcigmZGV2 X3ByaXYtPnVuY29yZSwNCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEVEUF9QU1JfU1RBVFVT KGRldl9wcml2LQ0KPiA+ID5wc3IudHJhbnNjb2RlciksDQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBFRFBfUFNSX1NUQVRVUyhpbnRlbF9kcC0NCj4gPiA+cHNyLnRyYW5zY29kZXIpLA0KPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEVEUF9QU1JfU1RBVFVTX1NUQVRFX01BU0ssDQo+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRURQX1BTUl9TVEFUVVNfU1RBVEVfSURMRSwNCj4gPiAy LCA1MCwNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvdXRfdmFsdWUpOw0KPiA+IMKgfQ0K PiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gLXN0YXRpYyBib29s IF9fcHNyX3dhaXRfZm9yX2lkbGVfbG9ja2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlDQo+ID4g KmRldl9wcml2KQ0KPiA+ICsvKioNCj4gPiArICogaW50ZWxfcHNyX3dhaXRfZm9yX2lkbGUgLSB3 YWl0IGZvciBQU1IxIHRvIGlkbGUNCj4gPiArICogQG5ld19jcnRjX3N0YXRlOiBuZXcgQ1JUQyBz dGF0ZQ0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIGlzIGV4cGVjdGVkIHRvIGJlIGNh bGxlZCBmcm9tIHBpcGVfdXBkYXRlX3N0YXJ0KCkNCj4gPiB3aGVyZSBpdCBpcw0KPiA+ICsgKiBu b3QgZXhwZWN0ZWQgdG8gcmFjZSB3aXRoIFBTUiBlbmFibGUgb3IgZGlzYWJsZS4NCj4gPiArICov DQo+ID4gK3ZvaWQgaW50ZWxfcHNyX3dhaXRfZm9yX2lkbGUoY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUNCj4gPiAqbmV3X2NydGNfc3RhdGUpDQo+ID4gK3sNCj4gDQo+IEl0IHdpbGwgd2Fp dCBmb3IgaWRsZSBpbiBldmVyeSBEUCBwb3J0IHRoYXQgc3VwcG9ydHMgUFNSLg0KPiANCkknbGwg YWRkIGNoZWNraW5nIGZvciBlbmNvZGVyIHdoaWNoIGlzIGNvbm5lY3RlZCB0byBjcnRjX3N0YXRl Lg0KPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUobmV3X2NydGNfc3RhdGUtDQo+ID4gPnVhcGkuY3J0Yy0+ZGV2KTsNCj4gPiArwqDC oMKgwqDCoMKgwqBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcjsNCj4gPiArwqDCoMKgwqDC oMKgwqB1MzIgcHNyX3N0YXR1czsNCj4gPiArDQo+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKCFuZXdf Y3J0Y19zdGF0ZS0+aGFzX3BzcikNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg cmV0dXJuOw0KPiA+ICsNCj4gPiArwqDCoMKgwqDCoMKgwqBmb3JfZWFjaF9pbnRlbF9kcCgmZGV2 X3ByaXYtPmRybSwgZW5jb2Rlcikgew0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0NCj4gPiBlbmNfdG9faW50ZWxfZHAoZW5jb2Rl cik7DQo+ID4gKw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoZW5jb2Rl ci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfRURQKQ0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29udGludWU7DQo+ID4gKw0KPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAvKiB3aGVuIHRoZSBQU1IxIGlzIGVuYWJsZWQgKi8NCj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGludGVsX2RwLT5wc3IuZW5hYmxlZCAm JiAhaW50ZWxfZHAtDQo+ID4gPnBzci5wc3IyX2VuYWJsZWQpIHsNCj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChwc3Jfd2FpdF9mb3JfaWRsZShp bnRlbF9kcCwNCj4gPiAmcHNyX3N0YXR1cykpDQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZHJtX2VycigmZGV2X3ByaXYt PmRybSwNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIlBTUiBpZGxlIHRpbWVkIG91dCAweCV4 LA0KPiA+IGF0b21pYyB1cGRhdGUgbWF5IGZhaWxcbiIsDQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHBzcl9zdGF0dXMpOw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9DQo+ ID4gK8KgwqDCoMKgwqDCoMKgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgYm9vbCBfX3Bz cl93YWl0X2Zvcl9pZGxlX2xvY2tlZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQ0KPiA+IMKg ew0KPiA+IMKgwqDCoMKgwqDCoMKgwqBpOTE1X3JlZ190IHJlZzsNCj4gPiDCoMKgwqDCoMKgwqDC oMKgdTMyIG1hc2s7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoGludCBlcnI7DQo+ID4gK8KgwqDCoMKg wqDCoMKgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRl bF9kcCk7DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAtwqDCoMKgwqDCoMKgwqBpZiAoIWRl dl9wcml2LT5wc3IuZW5hYmxlZCkNCj4gPiArwqDCoMKgwqDCoMKgwqBpZiAoIWludGVsX2RwLT5w c3IuZW5hYmxlZCkNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBm YWxzZTsNCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IC3CoMKgwqDCoMKgwqDCoGlmIChkZXZf cHJpdi0+cHNyLnBzcjJfZW5hYmxlZCkgew0KPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqByZWcgPSBFRFBfUFNSMl9TVEFUVVMoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKTsNCj4g PiArwqDCoMKgwqDCoMKgwqBpZiAoaW50ZWxfZHAtPnBzci5wc3IyX2VuYWJsZWQpIHsNCj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmVnID0gRURQX1BTUjJfU1RBVFVTKGludGVs X2RwLT5wc3IudHJhbnNjb2Rlcik7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBtYXNrID0gRURQX1BTUjJfU1RBVFVTX1NUQVRFX01BU0s7DQo+ID4gwqDCoMKgwqDCoMKgwqDC oH0gZWxzZSB7DQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJlZyA9IEVEUF9Q U1JfU1RBVFVTKGRldl9wcml2LT5wc3IudHJhbnNjb2Rlcik7DQo+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHJlZyA9IEVEUF9QU1JfU1RBVFVTKGludGVsX2RwLT5wc3IudHJhbnNj b2Rlcik7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtYXNrID0gRURQX1BT Ul9TVEFUVVNfU1RBVEVfTUFTSzsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgfQ0KPiA+IMKgDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gLcKgwqDCoMKgwqDCoMKgbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNy LmxvY2spOw0KPiA+ICvCoMKgwqDCoMKgwqDCoG11dGV4X3VubG9jaygmaW50ZWxfZHAtPnBzci5s b2NrKTsNCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IMKgwqDCoMKgwqDCoMKgwqBlcnIgPSBp bnRlbF9kZV93YWl0X2Zvcl9jbGVhcihkZXZfcHJpdiwgcmVnLCBtYXNrLCA1MCk7DQo+ID4gwqDC oMKgwqDCoMKgwqDCoGlmIChlcnIpDQo+ID4gQEAgLTE1MjcsOCArMTU1MCw4IEBAIHN0YXRpYyBi b29sIF9fcHNyX3dhaXRfZm9yX2lkbGVfbG9ja2VkKHN0cnVjdA0KPiA+IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCJUaW1lZCBvdXQgd2FpdGluZyBmb3IgUFNSIElkbGUgZm9yIHJlLQ0KPiA+IGVu YWJsZVxuIik7DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiDCoMKgwqDCoMKgwqDCoMKgLyog QWZ0ZXIgdGhlIHVubG9ja2VkIHdhaXQsIHZlcmlmeSB0aGF0IFBTUiBpcyBzdGlsbA0KPiA+IHdh bnRlZCEgKi8NCj4gPiAtwqDCoMKgwqDCoMKgwqBtdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxv Y2spOw0KPiA+IC3CoMKgwqDCoMKgwqDCoHJldHVybiBlcnIgPT0gMCAmJiBkZXZfcHJpdi0+cHNy LmVuYWJsZWQ7DQo+ID4gK8KgwqDCoMKgwqDCoMKgbXV0ZXhfbG9jaygmaW50ZWxfZHAtPnBzci5s b2NrKTsNCj4gPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gZXJyID09IDAgJiYgaW50ZWxfZHAtPnBz ci5lbmFibGVkOw0KPiA+IMKgfQ0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gwqBzdGF0aWMg aW50IGludGVsX3Bzcl9mYXN0c2V0X2ZvcmNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlDQo+ID4g KmRldl9wcml2KQ0KPiA+IEBAIC0xNTk0LDExICsxNjE3LDEyIEBAIHN0YXRpYyBpbnQgaW50ZWxf cHNyX2Zhc3RzZXRfZm9yY2Uoc3RydWN0DQo+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp DQo+ID4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBlcnI7DQo+ID4gwqB9DQo+ID4gwqANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiAtaW50IGludGVsX3Bzcl9kZWJ1Z19zZXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCB1NjQNCj4gPiB2YWwpDQo+ID4gK2ludCBpbnRlbF9wc3JfZGVidWdf c2V0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHU2NCB2YWwpDQo+ID4gwqB7DQo+ID4gwqDC oMKgwqDCoMKgwqDCoGNvbnN0IHUzMiBtb2RlID0gdmFsICYgSTkxNV9QU1JfREVCVUdfTU9ERV9N QVNLOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqB1MzIgb2xkX21vZGU7DQo+ID4gwqDCoMKgwqDCoMKg wqDCoGludCByZXQ7DQo+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7DQo+ID4gwqANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiDCoMKgwqDCoMKgwqDCoMKgaWYgKHZhbCAmIH4oSTkxNV9QU1JfREVCVUdfSVJRIHwgSTkx NV9QU1JfREVCVUdfTU9ERV9NQVNLKQ0KPiA+IHx8DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBtb2RlID4gSTkxNV9QU1JfREVCVUdfRk9SQ0VfUFNSMSkgew0KPiA+IEBAIC0xNjA2LDIxICsx NjMwLDIxIEBAIGludCBpbnRlbF9wc3JfZGVidWdfc2V0KHN0cnVjdA0KPiA+IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCB1NjQgdmFsKQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgcmV0dXJuIC1FSU5WQUw7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoH0NCj4gPiDCoA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IC3CoMKgwqDCoMKgwqDCoHJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0 aWJsZSgmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gPiArwqDCoMKgwqDCoMKgwqByZXQgPSBtdXRl eF9sb2NrX2ludGVycnVwdGlibGUoJmludGVsX2RwLT5wc3IubG9jayk7DQo+ID4gwqDCoMKgwqDC oMKgwqDCoGlmIChyZXQpDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1 cm4gcmV0Ow0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gLcKgwqDCoMKgwqDCoMKgb2xkX21v ZGUgPSBkZXZfcHJpdi0+cHNyLmRlYnVnICYgSTkxNV9QU1JfREVCVUdfTU9ERV9NQVNLOw0KPiA+ IC3CoMKgwqDCoMKgwqDCoGRldl9wcml2LT5wc3IuZGVidWcgPSB2YWw7DQo+ID4gK8KgwqDCoMKg wqDCoMKgb2xkX21vZGUgPSBpbnRlbF9kcC0+cHNyLmRlYnVnICYgSTkxNV9QU1JfREVCVUdfTU9E RV9NQVNLOw0KPiA+ICvCoMKgwqDCoMKgwqDCoGludGVsX2RwLT5wc3IuZGVidWcgPSB2YWw7DQo+ ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiDCoMKgwqDCoMKgwqDCoMKgLyoNCj4gPiDCoMKgwqDC oMKgwqDCoMKgICogRG8gaXQgcmlnaHQgYXdheSBpZiBpdCdzIGFscmVhZHkgZW5hYmxlZCwgb3Ro ZXJ3aXNlIGl0DQo+ID4gd2lsbCBiZSBkb25lDQo+ID4gwqDCoMKgwqDCoMKgwqDCoCAqIHdoZW4g ZW5hYmxpbmcgdGhlIHNvdXJjZS4NCj4gPiDCoMKgwqDCoMKgwqDCoMKgICovDQo+ID4gLcKgwqDC oMKgwqDCoMKgaWYgKGRldl9wcml2LT5wc3IuZW5hYmxlZCkNCj4gPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgcHNyX2lycV9jb250cm9sKGRldl9wcml2KTsNCj4gPiArwqDCoMKgwqDC oMKgwqBpZiAoaW50ZWxfZHAtPnBzci5lbmFibGVkKQ0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBwc3JfaXJxX2NvbnRyb2woaW50ZWxfZHApOw0KPiA+IMKgDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gLcKgwqDCoMKgwqDCoMKgbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2sp Ow0KPiA+ICvCoMKgwqDCoMKgwqDCoG11dGV4X3VubG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsN Cj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAob2xkX21vZGUg IT0gbW9kZSkNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldCA9IGludGVs X3Bzcl9mYXN0c2V0X2ZvcmNlKGRldl9wcml2KTsNCj4gPiBAQCAtMTYyOCwyOCArMTY1MiwyOCBA QCBpbnQgaW50ZWxfcHNyX2RlYnVnX3NldChzdHJ1Y3QNCj4gPiBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgdTY0IHZhbCkNCj4gPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsNCj4gPiDC oH0NCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IC1zdGF0aWMgdm9pZCBpbnRlbF9wc3JfaGFu ZGxlX2lycShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQ0KPiA+ICpkZXZfcHJpdikNCj4gPiArc3Rh dGljIHZvaWQgaW50ZWxfcHNyX2hhbmRsZV9pcnEoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkN Cj4gPiDCoHsNCj4gPiAtwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaTkxNV9wc3IgKnBzciA9ICZkZXZf cHJpdi0+cHNyOw0KPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBpbnRlbF9wc3IgKnBzciA9ICZp bnRlbF9kcC0+cHNyOw0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gLcKgwqDCoMKgwqDCoMKg aW50ZWxfcHNyX2Rpc2FibGVfbG9ja2VkKHBzci0+ZHApOw0KPiA+ICvCoMKgwqDCoMKgwqDCoGlu dGVsX3Bzcl9kaXNhYmxlX2xvY2tlZChpbnRlbF9kcCk7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoHBz ci0+c2lua19ub3RfcmVsaWFibGUgPSB0cnVlOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqAvKiBsZXQn cyBtYWtlIHN1cmUgdGhhdCBzaW5rIGlzIGF3YWtlbiAqLw0KPiA+IC3CoMKgwqDCoMKgwqDCoGRy bV9kcF9kcGNkX3dyaXRlYigmcHNyLT5kcC0+YXV4LCBEUF9TRVRfUE9XRVIsDQo+ID4gRFBfU0VU X1BPV0VSX0QwKTsNCj4gPiArwqDCoMKgwqDCoMKgwqBkcm1fZHBfZHBjZF93cml0ZWIoJmludGVs X2RwLT5hdXgsIERQX1NFVF9QT1dFUiwNCj4gPiBEUF9TRVRfUE9XRVJfRDApOw0KPiA+IMKgfQ0K PiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gwqBzdGF0aWMgdm9pZCBpbnRlbF9wc3Jfd29yayhz dHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQo+ID4gwqB7DQo+ID4gLcKgwqDCoMKgwqDCoMKgc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0NCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqZGV2X3ByaXYpLCBwc3Iud29y ayk7DQo+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9DQo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2Yo KmludGVsX2RwKSwgcHNyLndvcmspOw0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gLcKgwqDC oMKgwqDCoMKgbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gPiArwqDCoMKgwqDC oMKgwqBtdXRleF9sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOw0KPiA+IMKgDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gLcKgwqDCoMKgwqDCoMKgaWYgKCFkZXZfcHJpdi0+cHNyLmVuYWJsZWQpDQo+ID4g K8KgwqDCoMKgwqDCoMKgaWYgKCFpbnRlbF9kcC0+cHNyLmVuYWJsZWQpDQo+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIHVubG9jazsNCj4gPiDCoA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IC3CoMKgwqDCoMKgwqDCoGlmIChSRUFEX09OQ0UoZGV2X3ByaXYtPnBzci5pcnFfYXV4 X2Vycm9yKSkNCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW50ZWxfcHNyX2hh bmRsZV9pcnEoZGV2X3ByaXYpOw0KPiA+ICvCoMKgwqDCoMKgwqDCoGlmIChSRUFEX09OQ0UoaW50 ZWxfZHAtPnBzci5pcnFfYXV4X2Vycm9yKSkNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaW50ZWxfcHNyX2hhbmRsZV9pcnEoaW50ZWxfZHApOw0KPiA+IMKgDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gwqDCoMKgwqDCoMKgwqDCoC8qDQo+ID4gwqDCoMKgwqDCoMKgwqDCoCAqIFdlIGhh dmUgdG8gbWFrZSBzdXJlIFBTUiBpcyByZWFkeSBmb3IgcmUtZW5hYmxlDQo+ID4gQEAgLTE2NTcs NyArMTY4MSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Bzcl93b3JrKHN0cnVjdCB3b3JrX3N0cnVj dA0KPiA+ICp3b3JrKQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqAgKiBQU1IgbWlnaHQgdGFrZSBzb21l IHRpbWUgdG8gZ2V0IGZ1bGx5IGRpc2FibGVkDQo+ID4gwqDCoMKgwqDCoMKgwqDCoCAqIGFuZCBi ZSByZWFkeSBmb3IgcmUtZW5hYmxlLg0KPiA+IMKgwqDCoMKgwqDCoMKgwqAgKi8NCj4gPiAtwqDC oMKgwqDCoMKgwqBpZiAoIV9fcHNyX3dhaXRfZm9yX2lkbGVfbG9ja2VkKGRldl9wcml2KSkNCj4g PiArwqDCoMKgwqDCoMKgwqBpZiAoIV9fcHNyX3dhaXRfZm9yX2lkbGVfbG9ja2VkKGludGVsX2Rw KSkNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gdW5sb2NrOw0KPiA+ IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gwqDCoMKgwqDCoMKgwqDCoC8qDQo+ID4gQEAgLTE2NjUs MTIgKzE2ODksMTIgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX3dvcmsoc3RydWN0DQo+ID4gd29y a19zdHJ1Y3QgKndvcmspDQo+ID4gwqDCoMKgwqDCoMKgwqDCoCAqIHJlY2hlY2suIFNpbmNlIHBz cl9mbHVzaCBmaXJzdCBjbGVhcnMgdGhpcyBhbmQgdGhlbg0KPiA+IHJlc2NoZWR1bGVzIHdlDQo+ ID4gwqDCoMKgwqDCoMKgwqDCoCAqIHdvbid0IGV2ZXIgbWlzcyBhIGZsdXNoIHdoZW4gYmFpbGlu ZyBvdXQgaGVyZS4NCj4gPiDCoMKgwqDCoMKgwqDCoMKgICovDQo+ID4gLcKgwqDCoMKgwqDCoMKg aWYgKGRldl9wcml2LT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzIHx8IGRldl9wcml2LQ0KPiA+ ID5wc3IuYWN0aXZlKQ0KPiA+ICvCoMKgwqDCoMKgwqDCoGlmIChpbnRlbF9kcC0+cHNyLmJ1c3lf ZnJvbnRidWZmZXJfYml0cyB8fCBpbnRlbF9kcC0NCj4gPiA+cHNyLmFjdGl2ZSkNCj4gPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gdW5sb2NrOw0KPiA+IMKgDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gLcKgwqDCoMKgwqDCoMKgaW50ZWxfcHNyX2FjdGl2YXRlKGRldl9wcml2LT5w c3IuZHApOw0KPiA+ICvCoMKgwqDCoMKgwqDCoGludGVsX3Bzcl9hY3RpdmF0ZShpbnRlbF9kcCk7 DQo+ID4gwqB1bmxvY2s6DQo+ID4gLcKgwqDCoMKgwqDCoMKgbXV0ZXhfdW5sb2NrKCZkZXZfcHJp di0+cHNyLmxvY2spOw0KPiA+ICvCoMKgwqDCoMKgwqDCoG11dGV4X3VubG9jaygmaW50ZWxfZHAt PnBzci5sb2NrKTsNCj4gPiDCoH0NCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IMKgLyoqDQo+ ID4gQEAgLTE2ODksMjcgKzE3MTMsMzUgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX3dvcmsoc3Ry dWN0DQo+ID4gd29ya19zdHJ1Y3QgKndvcmspDQo+ID4gwqB2b2lkIGludGVsX3Bzcl9pbnZhbGlk YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwNCj4gPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBmcm9udGJ1ZmZl cl9iaXRzLCBlbnVtDQo+ID4gZmJfb3Bfb3JpZ2luIG9yaWdpbikNCj4gPiDCoHsNCj4gPiAtwqDC oMKgwqDCoMKgwqBpZiAoIUNBTl9QU1IoZGV2X3ByaXYpKQ0KPiA+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqByZXR1cm47DQo+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXI7DQo+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGludGVsX2RwICppbnRl bF9kcDsNCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IC3CoMKgwqDCoMKgwqDCoGlmIChvcmln aW4gPT0gT1JJR0lOX0ZMSVApDQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJl dHVybjsNCj4gPiArwqDCoMKgwqDCoMKgwqBmb3JfZWFjaF9pbnRlbF9kcCgmZGV2X3ByaXYtPmRy bSwgZW5jb2Rlcikgew0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gLcKgwqDCoMKgwqDCoMKg bXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gPiAtwqDCoMKgwqDCoMKgwqBpZiAo IWRldl9wcml2LT5wc3IuZW5hYmxlZCkgew0KPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBtdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7DQo+ID4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybjsNCj4gPiAtwqDCoMKgwqDCoMKgwqB9DQo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKGVu Y29kZXIpOw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoZW5jb2Rlci0+ dHlwZSAhPSBJTlRFTF9PVVRQVVRfRURQKQ0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgY29udGludWU7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGlmICghQ0FOX1BTUihpbnRlbF9kcCkpDQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb250aW51ZTsNCj4gPiDCoA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IC3CoMKgwqDCoMKgwqDCoGZyb250YnVmZmVyX2JpdHMgJj0gSU5URUxfRlJPTlRC VUZGRVJfQUxMX01BU0soZGV2X3ByaXYtDQo+ID4gPnBzci5waXBlKTsNCj4gPiAtwqDCoMKgwqDC oMKgwqBkZXZfcHJpdi0+cHNyLmJ1c3lfZnJvbnRidWZmZXJfYml0cyB8PSBmcm9udGJ1ZmZlcl9i aXRzOw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAob3JpZ2luID09IE9S SUdJTl9GTElQKQ0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgY29udGludWU7DQo+ID4gKw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBtdXRleF9sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBpZiAoIWludGVsX2RwLT5wc3IuZW5hYmxlZCkgew0KPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbXV0ZXhfdW5sb2NrKCZpbnRl bF9kcC0+cHNyLmxvY2spOw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgY29udGludWU7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oH0NCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IC3CoMKgwqDCoMKgwqDCoGlmIChmcm9udGJ1 ZmZlcl9iaXRzKQ0KPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpbnRlbF9wc3Jf ZXhpdChkZXZfcHJpdik7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZyb250 YnVmZmVyX2JpdHMgJj0NCj4gPiBJTlRFTF9GUk9OVEJVRkZFUl9BTExfTUFTSyhpbnRlbF9kcC0+ cHNyLnBpcGUpOw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpbnRlbF9kcC0+ cHNyLmJ1c3lfZnJvbnRidWZmZXJfYml0cyB8PQ0KPiA+IGZyb250YnVmZmVyX2JpdHM7DQo+ID4g wqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiAtwqDCoMKgwqDCoMKgwqBtdXRleF91bmxvY2soJmRldl9w cml2LT5wc3IubG9jayk7DQo+ID4gLX0NCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgaWYgKGZyb250YnVmZmVyX2JpdHMpDQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpbnRlbF9wc3JfZXhpdChpbnRlbF9kcCk7DQo+ID4gwqANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbXV0ZXhfdW5s b2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOw0KPiA+ICvCoMKgwqDCoMKgwqDCoH0NCj4gPiArfQ0K PiA+IMKgLyoNCj4gPiDCoMKgKiBXaGVuIHdlIHdpbGwgYmUgY29tcGxldGVseSByZWx5IG9uIFBT UjIgUy9XIHRyYWNraW5nIGluIGZ1dHVyZSwNCj4gPiDCoMKgKiBpbnRlbF9wc3JfZmx1c2goKSB3 aWxsIGludmFsaWRhdGUgYW5kIGZsdXNoIHRoZSBQU1IgZm9yDQo+ID4gT1JJR0lOX0ZMSVANCj4g PiBAQCAtMTcxNywxNSArMTc0OSwxNSBAQCB2b2lkIGludGVsX3Bzcl9pbnZhbGlkYXRlKHN0cnVj dA0KPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiA+IMKgwqAqIGFjY29yZGluZ2x5 IGluIGZ1dHVyZS4NCj4gPiDCoMKgKi8NCj4gPiDCoHN0YXRpYyB2b2lkDQo+ID4gLXRnbF9kYzNj b19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsDQo+ID4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGludCBmcm9udGJ1ZmZlcl9iaXRzLCBlbnVt IGZiX29wX29yaWdpbg0KPiA+IG9yaWdpbikNCj4gPiArdGdsX2RjM2NvX2ZsdXNoKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAsIHVuc2lnbmVkIGludA0KPiA+IGZyb250YnVmZmVyX2JpdHMsDQo+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVudW0gZmJfb3Bfb3JpZ2luIG9yaWdp bikNCj4gPiDCoHsNCj4gPiAtwqDCoMKgwqDCoMKgwqBtdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNy LmxvY2spOw0KPiA+ICvCoMKgwqDCoMKgwqDCoG11dGV4X2xvY2soJmludGVsX2RwLT5wc3IubG9j ayk7DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAtwqDCoMKgwqDCoMKgwqBpZiAoIWRldl9w cml2LT5wc3IuZGMzY29fZW5hYmxlZCkNCj4gPiArwqDCoMKgwqDCoMKgwqBpZiAoIWludGVsX2Rw LT5wc3IuZGMzY29fZW5hYmxlZCkNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGdvdG8gdW5sb2NrOw0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gLcKgwqDCoMKgwqDCoMKg aWYgKCFkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCB8fCAhZGV2X3ByaXYtPnBzci5hY3RpdmUp DQo+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKCFpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCB8fCAh aW50ZWxfZHAtPnBzci5hY3RpdmUpDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBnb3RvIHVubG9jazsNCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IMKgwqDCoMKgwqDCoMKg wqAvKg0KPiA+IEBAIC0xNzMzLDE1ICsxNzY1LDE1IEBAIHRnbF9kYzNjb19mbHVzaChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZQ0KPiA+ICpkZXZfcHJpdiwNCj4gPiDCoMKgwqDCoMKgwqDCoMKgICog d2hlbiBkZWxheWVkIHdvcmsgc2NoZWR1bGVzIHRoYXQgbWVhbnMgZGlzcGxheSBoYXMgYmVlbg0K PiA+IGlkbGUuDQo+ID4gwqDCoMKgwqDCoMKgwqDCoCAqLw0KPiA+IMKgwqDCoMKgwqDCoMKgwqBp ZiAoIShmcm9udGJ1ZmZlcl9iaXRzICYNCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqAgSU5URUxf RlJPTlRCVUZGRVJfQUxMX01BU0soZGV2X3ByaXYtPnBzci5waXBlKSkpDQo+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgIElOVEVMX0ZST05UQlVGRkVSX0FMTF9NQVNLKGludGVsX2RwLT5wc3IucGlw ZSkpKQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byB1bmxvY2s7DQo+ ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAtwqDCoMKgwqDCoMKgwqB0Z2xfcHNyMl9lbmFibGVf ZGMzY28oZGV2X3ByaXYpOw0KPiA+IC3CoMKgwqDCoMKgwqDCoG1vZF9kZWxheWVkX3dvcmsoc3lz dGVtX3dxLCAmZGV2X3ByaXYtPnBzci5kYzNjb193b3JrLA0KPiA+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRldl9wcml2LT5wc3IuZGMzY29fZXhpdF9k ZWxheSk7DQo+ID4gK8KgwqDCoMKgwqDCoMKgdGdsX3BzcjJfZW5hYmxlX2RjM2NvKGludGVsX2Rw KTsNCj4gPiArwqDCoMKgwqDCoMKgwqBtb2RfZGVsYXllZF93b3JrKHN5c3RlbV93cSwgJmludGVs X2RwLT5wc3IuZGMzY29fd29yaywNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBpbnRlbF9kcC0+cHNyLmRjM2NvX2V4aXRfZGVsYXkpOw0KPiA+IMKg DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gwqB1bmxvY2s6DQo+ID4gLcKgwqDCoMKgwqDCoMKgbXV0ZXhf dW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOw0KPiA+ICvCoMKgwqDCoMKgwqDCoG11dGV4X3Vu bG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsNCj4gPiDCoH0NCj4gPiDCoA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IMKgLyoqDQo+ID4gQEAgLTE3NjAsNDUgKzE3OTIsNTQgQEAgdGdsX2RjM2NvX2ZsdXNo KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlDQo+ID4gKmRldl9wcml2LA0KPiA+IMKgdm9pZCBpbnRl bF9wc3JfZmx1c2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgZnJvbnRidWZmZXJf Yml0cywgZW51bSBmYl9vcF9vcmlnaW4NCj4gPiBvcmlnaW4pDQo+IA0KPiANCj4gVGhpcyBhbmQg dGhlIGludmFsaWRhdGUgYXJlIG5vdCBwcm9wZXJseSBoYW5kbGluZyBtdWx0aXBsZSBQU1INCj4g cGFuZWxzLCB0aGlzIHdpbGwgY2F1c2UgYWxsIHBhbmVscyB0byBiZSBmbHVzaCBpbnZhbGlkYXRl ZCB3aGVuIGp1c3QNCj4gb25lIHNpbmdsZSBwYW5lbA0KPiBuZWVkIGl0Lg0KPiANCkkgdGhpbmsg dGhlIGZyb250YnVmZmVyX2JpdCBpcyB1c2VkIGZvciBzcGVjaWZ5aW5nIHdoaWNoIGZyYW1lYnVm ZmVyIC8NCnBpcGUgd2lpbCBiZSB1cGRhdGVkLiBJTUhPLCB0aGUgZnJvbnRidWZmZXJfYml0cyBt YWtlcyBwcmV2ZW50aW5nDQp1cGRhdGluZyBvZiB1bnJlbGF0ZWQgcHNyIHBhbm5lbHMuDQppZiBJ IGhhZCB3cm9uZyB1bmRlcnN0YW5kaW5nLCBjb3VsZCB5b3UgbGV0IG1lIGtub3cgZm9yIHRoZSBy aWdodCB3YXk/DQoNCm1hbnkgdGhhbmtzLA0KRy5HLg0KPiA+IMKgew0KPiA+IC3CoMKgwqDCoMKg wqDCoGlmICghQ0FOX1BTUihkZXZfcHJpdikpDQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHJldHVybjsNCj4gPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlcjsNCj4gPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwOw0K PiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gLcKgwqDCoMKgwqDCoMKgaWYgKG9yaWdpbiA9PSBP UklHSU5fRkxJUCkgew0KPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0Z2xfZGMz Y29fZmx1c2goZGV2X3ByaXYsIGZyb250YnVmZmVyX2JpdHMsDQo+ID4gb3JpZ2luKTsNCj4gPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuOw0KPiA+IC3CoMKgwqDCoMKgwqDC oH0NCj4gPiArwqDCoMKgwqDCoMKgwqBmb3JfZWFjaF9pbnRlbF9kcCgmZGV2X3ByaXYtPmRybSwg ZW5jb2Rlcikgew0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpbnRlbF9kcCA9 IGVuY190b19pbnRlbF9kcChlbmNvZGVyKTsNCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IC3C oMKgwqDCoMKgwqDCoG11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7DQo+ID4gLcKgwqDC oMKgwqDCoMKgaWYgKCFkZXZfcHJpdi0+cHNyLmVuYWJsZWQpIHsNCj4gPiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOw0KPiA+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm47DQo+ID4gLcKgwqDCoMKgwqDC oMKgfQ0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoZW5jb2Rlci0+dHlw ZSA9PSBJTlRFTF9PVVRQVVRfRURQICYmDQo+ID4gQ0FOX1BTUihpbnRlbF9kcCkpIHsNCj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChvcmlnaW4g PT0gT1JJR0lOX0ZMSVApIHsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0Z2xfZGMzY29fZmx1c2goaW50ZWxfZHAsDQo+ ID4gZnJvbnRidWZmZXJfYml0cywgb3JpZ2luKTsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb250aW51ZTsNCj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0NCj4gPiDCoA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IC3CoMKgwqDCoMKgwqDCoGZyb250YnVmZmVyX2JpdHMgJj0gSU5U RUxfRlJPTlRCVUZGRVJfQUxMX01BU0soZGV2X3ByaXYtDQo+ID4gPnBzci5waXBlKTsNCj4gPiAt wqDCoMKgwqDCoMKgwqBkZXZfcHJpdi0+cHNyLmJ1c3lfZnJvbnRidWZmZXJfYml0cyAmPSB+ZnJv bnRidWZmZXJfYml0czsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoG11dGV4X2xvY2soJmludGVsX2RwLT5wc3IubG9jayk7DQo+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoIWludGVsX2RwLT5wc3Iu ZW5hYmxlZCkgew0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoG11dGV4X3VubG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsN Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBjb250aW51ZTsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoH0NCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IC3CoMKgwqDCoMKg wqDCoC8qIEJ5IGRlZmluaXRpb24gZmx1c2ggPSBpbnZhbGlkYXRlICsgZmx1c2ggKi8NCj4gPiAt wqDCoMKgwqDCoMKgwqBpZiAoZnJvbnRidWZmZXJfYml0cykNCj4gPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgcHNyX2ZvcmNlX2h3X3RyYWNraW5nX2V4aXQoZGV2X3ByaXYpOw0KPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZnJvbnRidWZm ZXJfYml0cyAmPQ0KPiA+IElOVEVMX0ZST05UQlVGRkVSX0FMTF9NQVNLKGludGVsX2RwLT5wc3Iu cGlwZSk7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpbnRlbF9kcC0+cHNyLmJ1c3lfZnJvbnRidWZmZXJfYml0cyAmPQ0KPiA+IH5mcm9udGJ1ZmZl cl9iaXRzOw0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gLcKgwqDCoMKgwqDCoMKgaWYgKCFk ZXZfcHJpdi0+cHNyLmFjdGl2ZSAmJiAhZGV2X3ByaXYtDQo+ID4gPnBzci5idXN5X2Zyb250YnVm ZmVyX2JpdHMpDQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNjaGVkdWxlX3dv cmsoJmRldl9wcml2LT5wc3Iud29yayk7DQo+ID4gLcKgwqDCoMKgwqDCoMKgbXV0ZXhfdW5sb2Nr KCZkZXZfcHJpdi0+cHNyLmxvY2spOw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgLyogQnkgZGVmaW5pdGlvbiBmbHVzaCA9IGludmFsaWRhdGUgKyBm bHVzaA0KPiA+ICovDQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBpZiAoZnJvbnRidWZmZXJfYml0cykNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwc3JfZm9yY2VfaHdfdHJh Y2tpbmdfZXhpdChpbnRlbF9kcA0KPiA+ICk7DQo+ID4gKw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFpbnRlbF9kcC0+cHNyLmFjdGl2ZSAm JiAhaW50ZWxfZHAtDQo+ID4gPnBzci5idXN5X2Zyb250YnVmZmVyX2JpdHMpDQo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg c2NoZWR1bGVfd29yaygmaW50ZWxfZHAtPnBzci53b3JrKTsNCj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG11dGV4X3VubG9jaygmaW50ZWxfZHAtPnBz ci5sb2NrKTsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQ0KPiA+ICvCoMKg wqDCoMKgwqDCoH0NCj4gPiDCoH0NCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IMKgLyoqDQo+ ID4gwqDCoCogaW50ZWxfcHNyX2luaXQgLSBJbml0IGJhc2ljIFBTUiB3b3JrIGFuZCBtdXRleC4N Cj4gPiAtICogQGRldl9wcml2OiBpOTE1IGRldmljZSBwcml2YXRlDQo+ID4gKyAqIEBpbnRlbF9k cDogSW50ZWwgRFANCj4gPiDCoMKgKg0KPiA+IC0gKiBUaGlzIGZ1bmN0aW9uIGlzwqAgY2FsbGVk IG9ubHkgb25jZSBhdCBkcml2ZXIgbG9hZCB0byBpbml0aWFsaXplDQo+ID4gYmFzaWMNCj4gPiAt ICogUFNSIHN0dWZmLg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhZnRlciB0aGUg aW5pdGlhbGl6aW5nIGNvbm5lY3Rvci4NCj4gPiArICogKHRoZSBpbml0aWFsaXppbmcgb2YgY29u bmVjdG9yIHRyZWF0cyB0aGUgaGFuZGxpbmcgb2YgY29ubmVjdG9yDQo+ID4gY2FwYWJpbGl0aWVz KQ0KPiA+ICsgKiBBbmQgaXQgaW5pdGlhbGl6ZXMgYmFzaWMgUFNSIHN0dWZmIGZvciBlYWNoIERQ IEVuY29kZXIuDQo+ID4gwqDCoCovDQo+ID4gLXZvaWQgaW50ZWxfcHNyX2luaXQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQ0KPiA+ICt2b2lkIGludGVsX3Bzcl9pbml0KHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHApDQo+ID4gwqB7DQo+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7DQo+ID4g Kw0KPiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAoIUhBU19QU1IoZGV2X3ByaXYpKQ0KPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuOw0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gLcKgwqDCoMKgwqDCoMKgaWYgKCFkZXZfcHJpdi0+cHNyLnNpbmtfc3VwcG9ydCkNCj4g PiArwqDCoMKgwqDCoMKgwqBpZiAoIWludGVsX2RwLT5wc3Iuc2lua19zdXBwb3J0KQ0KPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuOw0KPiA+IMKgDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gwqDCoMKgwqDCoMKgwqDCoGlmIChJU19IQVNXRUxMKGRldl9wcml2KSkNCj4gPiBA QCAtMTgxNiwxNCArMTg1NywxNCBAQCB2b2lkIGludGVsX3Bzcl9pbml0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlDQo+ID4gKmRldl9wcml2KQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqAvKiBTZXQgbGlu a19zdGFuZGJ5IHggbGlua19vZmYgZGVmYXVsdHMgKi8NCj4gPiDCoMKgwqDCoMKgwqDCoMKgaWYg KElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpDQo+ID4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBIU1cgYW5kIEJEVyByZXF1aXJlIHdvcmth cm91bmRzIHRoYXQgd2UgZG9uJ3QNCj4gPiBpbXBsZW1lbnQuICovDQo+ID4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGRldl9wcml2LT5wc3IubGlua19zdGFuZGJ5ID0gZmFsc2U7DQo+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGludGVsX2RwLT5wc3IubGlua19zdGFu ZGJ5ID0gZmFsc2U7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoGVsc2UgaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPCAxMikNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIEZvciBu ZXcgcGxhdGZvcm1zIHVwIHRvIFRHTCBsZXQncyByZXNwZWN0IFZCVA0KPiA+IGJhY2sgYWdhaW4g Ki8NCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGV2X3ByaXYtPnBzci5saW5r X3N0YW5kYnkgPSBkZXZfcHJpdi0NCj4gPiA+dmJ0LnBzci5mdWxsX2xpbms7DQo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGludGVsX2RwLT5wc3IubGlua19zdGFuZGJ5ID0gZGV2 X3ByaXYtDQo+ID4gPnZidC5wc3IuZnVsbF9saW5rOw0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gLcKgwqDCoMKgwqDCoMKgSU5JVF9XT1JLKCZkZXZfcHJpdi0+cHNyLndvcmssIGludGVsX3Bz cl93b3JrKTsNCj4gPiAtwqDCoMKgwqDCoMKgwqBJTklUX0RFTEFZRURfV09SSygmZGV2X3ByaXYt PnBzci5kYzNjb193b3JrLA0KPiA+IHRnbF9kYzNjb19kaXNhYmxlX3dvcmspOw0KPiA+IC3CoMKg wqDCoMKgwqDCoG11dGV4X2luaXQoJmRldl9wcml2LT5wc3IubG9jayk7DQo+ID4gK8KgwqDCoMKg wqDCoMKgSU5JVF9XT1JLKCZpbnRlbF9kcC0+cHNyLndvcmssIGludGVsX3Bzcl93b3JrKTsNCj4g PiArwqDCoMKgwqDCoMKgwqBJTklUX0RFTEFZRURfV09SSygmaW50ZWxfZHAtPnBzci5kYzNjb193 b3JrLA0KPiA+IHRnbF9kYzNjb19kaXNhYmxlX3dvcmspOw0KPiA+ICvCoMKgwqDCoMKgwqDCoG11 dGV4X2luaXQoJmludGVsX2RwLT5wc3IubG9jayk7DQo+ID4gwqB9DQo+ID4gwqANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiDCoHN0YXRpYyBpbnQgcHNyX2dldF9zdGF0dXNfYW5kX2Vycm9yX3N0YXR1cyhz dHJ1Y3QgaW50ZWxfZHANCj4gPiAqaW50ZWxfZHAsDQo+ID4gQEAgLTE4NDksNyArMTg5MCw3IEBA IHN0YXRpYyB2b2lkIHBzcl9hbHBtX2NoZWNrKHN0cnVjdCBpbnRlbF9kcA0KPiA+ICppbnRlbF9k cCkNCj4gPiDCoHsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoHN0 cnVjdCBkcm1fZHBfYXV4ICphdXggPSAmaW50ZWxfZHAtPmF1eDsNCj4gPiAtwqDCoMKgwqDCoMKg wqBzdHJ1Y3QgaTkxNV9wc3IgKnBzciA9ICZkZXZfcHJpdi0+cHNyOw0KPiA+ICvCoMKgwqDCoMKg wqDCoHN0cnVjdCBpbnRlbF9wc3IgKnBzciA9ICZpbnRlbF9kcC0+cHNyOw0KPiA+IMKgwqDCoMKg wqDCoMKgwqB1OCB2YWw7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoGludCByOw0KPiA+IMKgDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gQEAgLTE4NzYsNyArMTkxNyw3IEBAIHN0YXRpYyB2b2lkIHBzcl9hbHBt X2NoZWNrKHN0cnVjdCBpbnRlbF9kcA0KPiA+ICppbnRlbF9kcCkNCj4gPiDCoHN0YXRpYyB2b2lk IHBzcl9jYXBhYmlsaXR5X2NoYW5nZWRfY2hlY2soc3RydWN0IGludGVsX2RwDQo+ID4gKmludGVs X2RwKQ0KPiA+IMKgew0KPiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsNCj4gPiAtwqDCoMKgwqDCoMKgwqBz dHJ1Y3QgaTkxNV9wc3IgKnBzciA9ICZkZXZfcHJpdi0+cHNyOw0KPiA+ICvCoMKgwqDCoMKgwqDC oHN0cnVjdCBpbnRlbF9wc3IgKnBzciA9ICZpbnRlbF9kcC0+cHNyOw0KPiA+IMKgwqDCoMKgwqDC oMKgwqB1OCB2YWw7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoGludCByOw0KPiA+IMKgDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gQEAgLTE5MDAsMTggKzE5NDEsMTggQEAgc3RhdGljIHZvaWQNCj4gPiBwc3Jf Y2FwYWJpbGl0eV9jaGFuZ2VkX2NoZWNrKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApDQo+ID4g wqB2b2lkIGludGVsX3Bzcl9zaG9ydF9wdWxzZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQ0K PiA+IMKgew0KPiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsNCj4gPiAtwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg aTkxNV9wc3IgKnBzciA9ICZkZXZfcHJpdi0+cHNyOw0KPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVj dCBpbnRlbF9wc3IgKnBzciA9ICZpbnRlbF9kcC0+cHNyOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqB1 OCBzdGF0dXMsIGVycm9yX3N0YXR1czsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgY29uc3QgdTggZXJy b3JzID0gRFBfUFNSX1JGQl9TVE9SQUdFX0VSUk9SIHwNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEUF9QU1JfVlNDX1NEUF9VTkNPUlJFQ1RB QkxFX0VSUk9SIHwNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBEUF9QU1JfTElOS19DUkNfRVJST1I7DQo+ID4gwqANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiAtwqDCoMKgwqDCoMKgwqBpZiAoIUNBTl9QU1IoZGV2X3ByaXYpIHx8ICFpbnRlbF9kcF9p c19lZHAoaW50ZWxfZHApKQ0KPiA+ICvCoMKgwqDCoMKgwqDCoGlmICghQ0FOX1BTUihpbnRlbF9k cCkgfHwgIWludGVsX2RwX2lzX2VkcChpbnRlbF9kcCkpDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqByZXR1cm47DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiDCoMKgwqDC oMKgwqDCoMKgbXV0ZXhfbG9jaygmcHNyLT5sb2NrKTsNCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IC3CoMKgwqDCoMKgwqDCoGlmICghcHNyLT5lbmFibGVkIHx8IHBzci0+ZHAgIT0gaW50ZWxf ZHApDQo+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKCFwc3ItPmVuYWJsZWQpDQo+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIGV4aXQ7DQo+ID4gwqANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiDCoMKgwqDCoMKgwqDCoMKgaWYgKHBzcl9nZXRfc3RhdHVzX2FuZF9lcnJvcl9zdGF0dXMo aW50ZWxfZHAsICZzdGF0dXMsDQo+ID4gJmVycm9yX3N0YXR1cykpIHsNCj4gPiBAQCAtMTk1NCwx NSArMTk5NSwxNCBAQCB2b2lkIGludGVsX3Bzcl9zaG9ydF9wdWxzZShzdHJ1Y3QgaW50ZWxfZHAN Cj4gPiAqaW50ZWxfZHApDQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiDCoGJvb2wgaW50ZWxf cHNyX2VuYWJsZWQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkNCj4gPiDCoHsNCj4gPiAtwqDC oMKgwqDCoMKgwqBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1 KGludGVsX2RwKTsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgYm9vbCByZXQ7DQo+ID4gwqANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiAtwqDCoMKgwqDCoMKgwqBpZiAoIUNBTl9QU1IoZGV2X3ByaXYpIHx8ICFp bnRlbF9kcF9pc19lZHAoaW50ZWxfZHApKQ0KPiA+ICvCoMKgwqDCoMKgwqDCoGlmICghQ0FOX1BT UihpbnRlbF9kcCkgfHwgIWludGVsX2RwX2lzX2VkcChpbnRlbF9kcCkpDQo+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZmFsc2U7DQo+ID4gwqANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiAtwqDCoMKgwqDCoMKgwqBtdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOw0K PiA+IC3CoMKgwqDCoMKgwqDCoHJldCA9IChkZXZfcHJpdi0+cHNyLmRwID09IGludGVsX2RwICYm IGRldl9wcml2LQ0KPiA+ID5wc3IuZW5hYmxlZCk7DQo+ID4gLcKgwqDCoMKgwqDCoMKgbXV0ZXhf dW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOw0KPiA+ICvCoMKgwqDCoMKgwqDCoG11dGV4X2xv Y2soJmludGVsX2RwLT5wc3IubG9jayk7DQo+ID4gK8KgwqDCoMKgwqDCoMKgcmV0ID0gaW50ZWxf ZHAtPnBzci5lbmFibGVkOw0KPiA+ICvCoMKgwqDCoMKgwqDCoG11dGV4X3VubG9jaygmaW50ZWxf ZHAtPnBzci5sb2NrKTsNCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IMKgwqDCoMKgwqDCoMKg wqByZXR1cm4gcmV0Ow0KPiA+IMKgfQ0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX3Bzci5oDQo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX3Bzci5oDQo+ID4gaW5kZXggMGE1MTc5NzhlOGFmLi4wM2ViMTk1NDdkMDkgMTAw NjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wc3IuaA0K PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmgNCj4gPiBA QCAtMTgsNyArMTgsNyBAQCBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlOw0KPiA+IMKgc3RydWN0 IGludGVsX3BsYW5lX3N0YXRlOw0KPiA+IMKgc3RydWN0IGludGVsX3BsYW5lOw0KPiA+IMKgDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gLSNkZWZpbmUgQ0FOX1BTUihkZXZfcHJpdikgKEhBU19QU1IoZGV2 X3ByaXYpICYmIGRldl9wcml2LQ0KPiA+ID5wc3Iuc2lua19zdXBwb3J0KQ0KPiA+ICsjZGVmaW5l IENBTl9QU1IoaW50ZWxfZHApIChIQVNfUFNSKGRwX3RvX2k5MTUoaW50ZWxfZHApKSAmJg0KPiA+ IGludGVsX2RwLT5wc3Iuc2lua19zdXBwb3J0KQ0KPiA+IMKgdm9pZCBpbnRlbF9wc3JfaW5pdF9k cGNkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOw0KPiA+IMKgdm9pZCBpbnRlbF9wc3JfZW5h YmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLA0KPiA+IEBAIC0yOCwyNCArMjgsMjQgQEAgdm9pZCBpbnRlbF9wc3JfZGlzYWJsZShz dHJ1Y3QgaW50ZWxfZHANCj4gPiAqaW50ZWxfZHAsDQo+ID4gwqB2b2lkIGludGVsX3Bzcl91cGRh dGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUsDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNv bnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlDQo+ID4gKmNvbm5fc3RhdGUpOw0KPiA+IC1p bnQgaW50ZWxfcHNyX2RlYnVnX3NldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs IHU2NA0KPiA+IHZhbHVlKTsNCj4gPiAraW50IGludGVsX3Bzcl9kZWJ1Z19zZXQoc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCwgdTY0IHZhbHVlKTsNCj4gPiDCoHZvaWQgaW50ZWxfcHNyX2ludmFs aWRhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiA+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGZyb250YnVm ZmVyX2JpdHMsDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZW51bSBmYl9vcF9vcmlnaW4gb3JpZ2luKTsNCj4gPiDCoHZvaWQgaW50ZWxfcHNy X2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwNCj4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGZyb250YnVmZmVyX2JpdHMs DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnVtIGZiX29w X29yaWdpbiBvcmlnaW4pOw0KPiA+IC12b2lkIGludGVsX3Bzcl9pbml0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdik7DQo+ID4gK3ZvaWQgaW50ZWxfcHNyX2luaXQoc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCk7DQo+ID4gwqB2b2lkIGludGVsX3Bzcl9jb21wdXRlX2NvbmZpZyhz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLA0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpOw0KPiA+IC12b2lkIGludGVsX3Bzcl9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMg0KPiA+IHBzcl9paXIpOw0KPiA+ICt2b2lkIGlu dGVsX3Bzcl9pcnFfaGFuZGxlcihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1MzINCj4gPiBw c3JfaWlyKTsNCj4gPiDCoHZvaWQgaW50ZWxfcHNyX3Nob3J0X3B1bHNlKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHApOw0KPiA+IC1pbnQgaW50ZWxfcHNyX3dhaXRfZm9yX2lkbGUoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUNCj4gPiAqbmV3X2NydGNfc3RhdGUsDQo+ID4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyICpvdXRfdmFs dWUpOw0KPiA+ICt2b2lkIGludGVsX3Bzcl93YWl0X2Zvcl9pZGxlKGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlDQo+ID4gKm5ld19jcnRjX3N0YXRlKTsNCj4gPiDCoGJvb2wgaW50ZWxfcHNy X2VuYWJsZWQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7DQo+ID4gwqBpbnQgaW50ZWxfcHNy Ml9zZWxfZmV0Y2hfdXBkYXRlKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLA0KPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yyk7DQo+ID4gLXZvaWQgaW50ZWxfcHNyMl9w cm9ncmFtX3RyYW5zX21hbl90cmtfY3RsKGNvbnN0IHN0cnVjdA0KPiA+IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUpOw0KPiA+ICt2b2lkIGludGVsX3BzcjJfcHJvZ3JhbV90cmFuc19tYW5f dHJrX2N0bChzdHJ1Y3QgaW50ZWxfZHANCj4gPiAqaW50ZWxfZHAsDQo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGNvbnN0IHN0cnVjdA0KPiA+IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUpOw0KPiA+IMKgdm9pZCBpbnRlbF9wc3IyX3Byb2dyYW1fcGxhbmVfc2VsX2ZldGNoKHN0cnVj dCBpbnRlbF9wbGFuZSAqcGxhbmUsDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb25zdCBz dHJ1Y3QNCj4gPiBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLA0KPiA+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgY29uc3Qgc3RydWN0DQo+ID4gaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0 YXRlLA0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X3Nwcml0ZS5jDQo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0 ZS5jDQo+ID4gaW5kZXggY2YzNTg5ZmQwZGRiLi41OWY0Yzc3NGY5OGUgMTAwNjQ0DQo+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYw0KPiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfc3ByaXRlLmMNCj4gPiBAQCAtODUs NyArODUsNiBAQCB2b2lkIGludGVsX3BpcGVfdXBkYXRlX3N0YXJ0KGNvbnN0IHN0cnVjdA0KPiA+ IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlKQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqBi b29sIG5lZWRfdmx2X2RzaV93YSA9IChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fA0KPiA+IElT X0NIRVJSWVZJRVcoZGV2X3ByaXYpKSAmJg0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaW50ZWxfY3J0Y19oYXNfdHlwZShuZXdfY3J0Y19zdGF0ZSwNCj4gPiBJTlRFTF9PVVRQ VVRfRFNJKTsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgREVGSU5FX1dBSVQod2FpdCk7DQo+ID4gLcKg wqDCoMKgwqDCoMKgdTMyIHBzcl9zdGF0dXM7DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiDC oMKgwqDCoMKgwqDCoMKgaWYgKG5ld19jcnRjX3N0YXRlLT51YXBpLmFzeW5jX2ZsaXApDQo+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm47DQo+ID4gQEAgLTExMCwxMCAr MTA5LDcgQEAgdm9pZCBpbnRlbF9waXBlX3VwZGF0ZV9zdGFydChjb25zdCBzdHJ1Y3QNCj4gPiBp bnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSkNCj4gPiDCoMKgwqDCoMKgwqDCoMKgICog VkJMIGludGVycnVwdHMgd2lsbCBzdGFydCB0aGUgUFNSIGV4aXQgYW5kIHByZXZlbnQgYSBQU1IN Cj4gPiDCoMKgwqDCoMKgwqDCoMKgICogcmUtZW50cnkgYXMgd2VsbC4NCj4gPiDCoMKgwqDCoMKg wqDCoMKgICovDQo+ID4gLcKgwqDCoMKgwqDCoMKgaWYgKGludGVsX3Bzcl93YWl0X2Zvcl9pZGxl KG5ld19jcnRjX3N0YXRlLCAmcHNyX3N0YXR1cykpDQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGRybV9lcnIoJmRldl9wcml2LT5kcm0sDQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAiUFNSIGlkbGUgdGltZWQgb3V0IDB4JXgsIGF0 b21pYyB1cGRhdGUgbWF5DQo+ID4gZmFpbFxuIiwNCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBzcl9zdGF0dXMpOw0KPiA+ICvCoMKgwqDCoMKgwqDC oGludGVsX3Bzcl93YWl0X2Zvcl9pZGxlKG5ld19jcnRjX3N0YXRlKTsNCj4gPiDCoA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IMKgwqDCoMKgwqDCoMKgwqBsb2NhbF9pcnFfZGlzYWJsZSgpOw0KPiA+IMKg DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgNCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgNCj4gPiBpbmRl eCA1ZTViY2VmMjBlMzMuLjIxMTU4MGVmMzAyNyAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaA0KPiA+IEBAIC00NzUsNDIgKzQ3NSw2IEBAIHN0cnVjdCBpOTE1X2RycnMgew0KPiA+ IMKgwqDCoMKgwqDCoMKgwqBlbnVtIGRycnNfc3VwcG9ydF90eXBlIHR5cGU7DQo+ID4gwqB9Ow0K PiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gLXN0cnVjdCBpOTE1X3BzciB7DQo+ID4gLcKgwqDC oMKgwqDCoMKgc3RydWN0IG11dGV4IGxvY2s7DQo+ID4gLQ0KPiA+IC0jZGVmaW5lIEk5MTVfUFNS X0RFQlVHX01PREVfTUFTS8KgwqDCoMKgwqDCoMKgMHgwZg0KPiA+IC0jZGVmaW5lIEk5MTVfUFNS X0RFQlVHX0RFRkFVTFTCoMKgwqDCoMKgwqDCoMKgwqAweDAwDQo+ID4gLSNkZWZpbmUgSTkxNV9Q U1JfREVCVUdfRElTQUJMRcKgwqDCoMKgwqDCoMKgwqDCoDB4MDENCj4gPiAtI2RlZmluZSBJOTE1 X1BTUl9ERUJVR19FTkFCTEXCoMKgwqDCoMKgwqDCoMKgwqDCoDB4MDINCj4gPiAtI2RlZmluZSBJ OTE1X1BTUl9ERUJVR19GT1JDRV9QU1IxwqDCoMKgwqDCoMKgMHgwMw0KPiA+IC0jZGVmaW5lIEk5 MTVfUFNSX0RFQlVHX0lSUcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHgxMA0KPiA+IC0NCj4g PiAtwqDCoMKgwqDCoMKgwqB1MzIgZGVidWc7DQo+ID4gLcKgwqDCoMKgwqDCoMKgYm9vbCBzaW5r X3N1cHBvcnQ7DQo+ID4gLcKgwqDCoMKgwqDCoMKgYm9vbCBlbmFibGVkOw0KPiA+IC3CoMKgwqDC oMKgwqDCoHN0cnVjdCBpbnRlbF9kcCAqZHA7DQo+ID4gLcKgwqDCoMKgwqDCoMKgZW51bSBwaXBl IHBpcGU7DQo+ID4gLcKgwqDCoMKgwqDCoMKgZW51bSB0cmFuc2NvZGVyIHRyYW5zY29kZXI7DQo+ ID4gLcKgwqDCoMKgwqDCoMKgYm9vbCBhY3RpdmU7DQo+ID4gLcKgwqDCoMKgwqDCoMKgc3RydWN0 IHdvcmtfc3RydWN0IHdvcms7DQo+ID4gLcKgwqDCoMKgwqDCoMKgdW5zaWduZWQgYnVzeV9mcm9u dGJ1ZmZlcl9iaXRzOw0KPiA+IC3CoMKgwqDCoMKgwqDCoGJvb2wgc2lua19wc3IyX3N1cHBvcnQ7 DQo+ID4gLcKgwqDCoMKgwqDCoMKgYm9vbCBsaW5rX3N0YW5kYnk7DQo+ID4gLcKgwqDCoMKgwqDC oMKgYm9vbCBjb2xvcmltZXRyeV9zdXBwb3J0Ow0KPiA+IC3CoMKgwqDCoMKgwqDCoGJvb2wgcHNy Ml9lbmFibGVkOw0KPiA+IC3CoMKgwqDCoMKgwqDCoGJvb2wgcHNyMl9zZWxfZmV0Y2hfZW5hYmxl ZDsNCj4gPiAtwqDCoMKgwqDCoMKgwqB1OCBzaW5rX3N5bmNfbGF0ZW5jeTsNCj4gPiAtwqDCoMKg wqDCoMKgwqBrdGltZV90IGxhc3RfZW50cnlfYXR0ZW1wdDsNCj4gPiAtwqDCoMKgwqDCoMKgwqBr dGltZV90IGxhc3RfZXhpdDsNCj4gPiAtwqDCoMKgwqDCoMKgwqBib29sIHNpbmtfbm90X3JlbGlh YmxlOw0KPiA+IC3CoMKgwqDCoMKgwqDCoGJvb2wgaXJxX2F1eF9lcnJvcjsNCj4gPiAtwqDCoMKg wqDCoMKgwqB1MTYgc3VfeF9ncmFudWxhcml0eTsNCj4gPiAtwqDCoMKgwqDCoMKgwqBib29sIGRj M2NvX2VuYWJsZWQ7DQo+ID4gLcKgwqDCoMKgwqDCoMKgdTMyIGRjM2NvX2V4aXRfZGVsYXk7DQo+ ID4gLcKgwqDCoMKgwqDCoMKgc3RydWN0IGRlbGF5ZWRfd29yayBkYzNjb193b3JrOw0KPiA+IC3C oMKgwqDCoMKgwqDCoHN0cnVjdCBkcm1fZHBfdnNjX3NkcCB2c2M7DQo+ID4gLX07DQo+ID4gLQ0K PiA+IMKgI2RlZmluZSBRVUlSS19MVkRTX1NTQ19ESVNBQkxFICgxPDwxKQ0KPiA+IMKgI2RlZmlu ZSBRVUlSS19JTlZFUlRfQlJJR0hUTkVTUyAoMTw8MikNCj4gPiDCoCNkZWZpbmUgUVVJUktfQkFD S0xJR0hUX1BSRVNFTlQgKDE8PDMpDQo+ID4gQEAgLTEwMzgsOCArMTAwMiw2IEBAIHN0cnVjdCBk cm1faTkxNV9wcml2YXRlIHsNCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IMKgwqDCoMKgwqDC oMKgwqBzdHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zIHBvd2VyX2RvbWFpbnM7DQo+ID4gwqANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiAtwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaTkxNV9wc3IgcHNyOw0KPiA+ IC0NCj4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGk5MTVfZ3B1X2Vycm9yIGdwdV9lcnJvcjsN Cj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqdmx2X3BjdHg7DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfaXJxLmMNCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMN Cj4gPiBpbmRleCBkZDE5NzEwNDBiYmMuLmEwMWZjYjA0NzRhNiAxMDA2NDQNCj4gPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9pcnEuYw0KPiA+IEBAIC0yMDY2LDEwICsyMDY2LDIyIEBAIHN0YXRpYyB2b2lk IGl2Yl9kaXNwbGF5X2lycV9oYW5kbGVyKHN0cnVjdA0KPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LA0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaXZiX2Vycl9pbnRf aGFuZGxlcihkZXZfcHJpdik7DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiDCoMKgwqDCoMKg wqDCoMKgaWYgKGRlX2lpciAmIERFX0VEUF9QU1JfSU5UX0hTVykgew0KPiA+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB1MzIgcHNyX2lpciA9IGludGVsX3VuY29yZV9yZWFkKCZkZXZf cHJpdi0+dW5jb3JlLA0KPiA+IEVEUF9QU1JfSUlSKTsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7DQo+ID4gwqANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW50ZWxfcHNyX2ly cV9oYW5kbGVyKGRldl9wcml2LCBwc3JfaWlyKTsNCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgaW50ZWxfdW5jb3JlX3dyaXRlKCZkZXZfcHJpdi0+dW5jb3JlLCBFRFBfUFNSX0lJ UiwNCj4gPiBwc3JfaWlyKTsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9y X2VhY2hfaW50ZWxfZHAoJmRldl9wcml2LT5kcm0sIGVuY29kZXIpIHsNCj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHAgPQ0KPiA+IGVuY190b19pbnRlbF9kcChlbmNvZGVyKTsNCj4gPiArDQo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoZW5jb2Rlci0+dHlw ZSA9PSBJTlRFTF9PVVRQVVRfRURQICYmDQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQ0FOX1BTUihpbnRlbF9kcCkpIHsNCj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB1MzIgcHNyX2lpciA9DQo+ID4gaW50ZWxfdW5jb3JlX3JlYWQoJmRldl9wcml2LT51bmNvcmUs DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoEVEUA0KPiA+IF9QU1JfSUlSKTsNCj4gPiArDQo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg aW50ZWxfcHNyX2lycV9oYW5kbGVyKGludGVsX2RwLA0KPiA+IHBzcl9paXIpOw0KPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGludGVsX3VuY29yZV93cml0ZSgmZGV2X3ByaXYtDQo+ID4gPnVuY29yZSwNCj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRURQX1BTUl9JSVIsDQo+ID4gcHNy X2lpcik7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB9DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oH0NCj4gPiDCoMKgwqDCoMKgwqDCoMKgfQ0KPiA+IMKgDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4g DQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gwqDC oMKgwqDCoMKgwqDCoGlmIChkZV9paXIgJiBERV9BVVhfQ0hBTk5FTF9BX0lWQikNCj4gPiBAQCAt MjI3OSwyMSArMjI5MSwzNCBAQCBnZW44X2RlX21pc2NfaXJxX2hhbmRsZXIoc3RydWN0DQo+ID4g ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBpaXIpDQo+ID4gwqDCoMKgwqDCoMKgwqDC oH0NCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAoaWlyICYg R0VOOF9ERV9FRFBfUFNSKSB7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgdTMyIHBzcl9paXI7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpOTE1X3JlZ190IGlpcl9yZWc7DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIpDQo+ ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpaXJfcmVn ID0gVFJBTlNfUFNSX0lJUihkZXZfcHJpdi0NCj4gPiA+cHNyLnRyYW5zY29kZXIpOw0KPiA+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlbHNlDQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpaXJfcmVnID0gRURQX1BTUl9JSVI7DQo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZvcl9lYWNoX2ludGVsX2RwKCZkZXZfcHJp di0+ZHJtLCBlbmNvZGVyKSB7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0NCj4gPiBlbmNfdG9faW50 ZWxfZHAoZW5jb2Rlcik7DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgcHNyX2lpciA9IGludGVsX3VuY29yZV9yZWFkKCZkZXZfcHJpdi0+ dW5jb3JlLA0KPiA+IGlpcl9yZWcpOw0KPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpbnRlbF91bmNvcmVfd3JpdGUoJmRldl9wcml2LT51bmNvcmUsIGlpcl9yZWcsDQo+ID4gcHNy X2lpcik7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMiAmJg0KPiA+IENBTl9QU1IoaW50ZWxfZHAp KSB7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgaWlyX3JlZyA9IFRSQU5TX1BTUl9JSVIoaW50ZWxfZHAtDQo+ID4gPnBz ci50cmFuc2NvZGVyKTsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoH0gZWxzZSBpZiAoZW5jb2Rlci0+dHlwZSA9PQ0KPiA+IElOVEVMX09VVFBVVF9F RFAgJiYNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIENBTl9QU1IoaW50ZWxfZHApKSB7DQo+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWly X3JlZyA9IEVEUF9QU1JfSUlSOw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgfSBlbHNlIHsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb250aW51ZTsNCj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0NCj4gPiArDQo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwc3JfaWlyID0gaW50 ZWxfdW5jb3JlX3JlYWQoJmRldl9wcml2LQ0KPiA+ID51bmNvcmUsIGlpcl9yZWcpOw0KPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW50ZWxfdW5jb3Jl X3dyaXRlKCZkZXZfcHJpdi0+dW5jb3JlLA0KPiA+IGlpcl9yZWcsIHBzcl9paXIpOw0KPiA+ICsN Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChw c3JfaWlyKQ0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGZvdW5kID0gdHJ1ZTsNCj4gPiDCoA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0KPiA+IA0K PiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAocHNyX2lpcikNCj4gPiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZvdW5kID0gdHJ1ZTsN Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGludGVs X3Bzcl9pcnFfaGFuZGxlcihpbnRlbF9kcCwgcHNyX2lpcik7DQo+ID4gwqANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW50ZWxfcHNyX2lycV9oYW5k bGVyKGRldl9wcml2LCBwc3JfaWlyKTsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoC8qIHByaW9yIEdFTjEyIG9ubHkgaGF2ZSBvbmUgRURQIFBTUiAq Lw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPCAxMikNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsNCj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqB9DQo+ID4gwqAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4gPiANCj4g PiANCj4gPiANCj4gPiANCj4gPiDCoMKgwqDCoMKgwqDCoMKgaWYgKCFmb3VuZCkNCj4gDQoNCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=