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 9DB47C4338F for ; Tue, 10 Aug 2021 13:57:15 +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 63F7160295 for ; Tue, 10 Aug 2021 13:57:15 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 63F7160295 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 9433689FEC; Tue, 10 Aug 2021 13:57:14 +0000 (UTC) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 81FEA89FEC for ; Tue, 10 Aug 2021 13:57:13 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10070"; a="214634192" X-IronPort-AV: E=Sophos;i="5.84,310,1620716400"; d="scan'208";a="214634192" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Aug 2021 06:57:12 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.84,310,1620716400"; d="scan'208";a="439297664" Received: from fmsmsx606.amr.corp.intel.com ([10.18.126.86]) by orsmga002.jf.intel.com with ESMTP; 10 Aug 2021 06:57:12 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10; Tue, 10 Aug 2021 06:57:11 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10; Tue, 10 Aug 2021 06:57:11 -0700 Received: from fmsmsx610.amr.corp.intel.com ([10.18.126.90]) by fmsmsx610.amr.corp.intel.com ([10.18.126.90]) with mapi id 15.01.2242.010; Tue, 10 Aug 2021 06:57:11 -0700 From: "Vivi, Rodrigo" To: "Roper, Matthew D" , "jani.nikula@linux.intel.com" , "Souza, Jose" , "intel-gfx@lists.freedesktop.org" CC: "joonas.lahtinen@linux.intel.com" , "daniel.vetter@ffwll.ch" Thread-Topic: [Intel-gfx] [PATCH 7/7] drm/i915: Make workaround upper bounds exclusive Thread-Index: AQHXesqmnzo3WPXoWUmB+lhRX9K8xqtLC+cAgCJClwCAABB+gA== Date: Tue, 10 Aug 2021 13:57:11 +0000 Message-ID: References: <20210717051426.4120328-1-matthew.d.roper@intel.com> <20210717051426.4120328-8-matthew.d.roper@intel.com> <6a62ddcf2da96624ee2b7a475576d1d2c4e3b6f6.camel@intel.com> <87h7fxo3rz.fsf@intel.com> In-Reply-To: <87h7fxo3rz.fsf@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.40.3 (3.40.3-1.fc34) x-originating-ip: [10.1.200.100] Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH 7/7] drm/i915: Make workaround upper bounds exclusive 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: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gVHVlLCAyMDIxLTA4LTEwIGF0IDE1OjU4ICswMzAwLCBKYW5pIE5pa3VsYSB3cm90ZToKPiBP biBNb24sIDE5IEp1bCAyMDIxLCAiU291emEsIEpvc2UiIDxqb3NlLnNvdXphQGludGVsLmNvbT4g d3JvdGU6Cj4gPiBPbiBGcmksIDIwMjEtMDctMTYgYXQgMjI6MTQgLTA3MDAsIE1hdHQgUm9wZXIg d3JvdGU6Cj4gPiA+IFdvcmthcm91bmRzIGFyZSBkb2N1bWVudGVkIGluIHRoZSBic3BlYyB3aXRo IGFuIGV4Y2x1c2l2ZSB1cHBlcgo+ID4gPiBib3VuZAo+ID4gPiAoaS5lLiwgYSAiZml4ZWQiIHN0 ZXBwaW5nIHRoYXQgbm8gbG9uZ2VyIG5lZWRzIHRoZSB3b3JrYXJvdW5kKS7CoAo+ID4gPiBUaGlz Cj4gPiA+IG1ha2VzIG91ciBkcml2ZXIncyB1c2Ugb2YgYW4gaW5jbHVzaXZlIHVwcGVyIGJvdW5k IGZvciBzdGVwcGluZwo+ID4gPiByYW5nZXMKPiA+ID4gY29uZnVzaW5nOyB0aGUgZGlmZmVyaW5n IG5vdGF0aW9uIGJldHdlZW4gY29kZSBhbmQgYnNwZWMgbWFrZXMgaXQKPiA+ID4gdmVyeQo+ID4g PiBlYXN5IGZvciBtaXN0YWtlcyB0byBjcmVlcCBpbi4KPiA+ID4gCj4gPiA+IExldCdzIHN3aXRj aCB0aGUgdXBwZXIgYm91bmQgb2Ygb3VyIElTX3tHVCxESVNQfV9TVEVQIG1hY3JvcyBvdmVyCj4g PiA+IHRvIHVzZQo+ID4gPiBhbiBleGNsdXNpdmUgdXBwZXIgYm91bmQgbGlrZSB0aGUgYnNwZWMg ZG9lcy7CoCBUaGlzIGFsc28gaGFzIHRoZQo+ID4gPiBiZW5lZml0Cj4gPiA+IG9mIGhlbHBpbmcg bWFrZSBzdXJlIHdvcmthcm91bmRzIGFyZSBwcm9wZXJseSBoYW5kbGVkIGZvciBuZXcKPiA+ID4g bWlub3IKPiA+ID4gc3RlcHBpbmdzIHRoYXQgc2hvdyB1cCAoZS5nLiwgYW4gQTEgYmV0d2VlbiB0 aGUgQTAgYW5kIEIwIHdlCj4gPiA+IGFscmVhZHkKPiA+ID4ga25ldyBhYm91dCkgLS0tIGlmIHRo ZSBuZXcgaW50ZXJtZWRpYXRlIHN0ZXBwaW5nIHB1bGxzIGluCj4gPiA+IGhhcmR3YXJlIGZpeGVz Cj4gPiA+IGVhcmx5LCB0aGVyZSB3aWxsIGJlIGFuIHVwZGF0ZSB0byB0aGUgd29ya2Fyb3VuZCBk ZWZpbml0aW9uIHdoaWNoCj4gPiA+IGxldHMKPiA+ID4gdXMga25vdyB3ZSBuZWVkIHRvIGNoYW5n ZSBvdXIgY29kZS7CoCBJZiB0aGUgbmV3IHN0ZXBwaW5nIGRvZXMgbm90Cj4gPiA+IHB1bGwgYQo+ ID4gPiBoYXJkd2FyZSBmaXggZWFybGllciwgdGhlbiB0aGUgbmV3IHN0ZXBwaW5nIHdpbGwgYWxy ZWFkeSBiZQo+ID4gPiBjYXB0dXJlZAo+ID4gPiBwcm9wZXJseSBieSB0aGUgIltiZWdpbiwgZml4 KSIgcmFuZ2UgaW4gdGhlIGNvZGUuCj4gPiA+IAo+ID4gPiBXZSdsbCBwcm9iYWJseSBuZWVkIHRv IGJlIGV4dHJhIHZpZ2lsYW50IGluIGNvZGUgcmV2aWV3IG9mIG5ldwo+ID4gPiB3b3JrYXJvdW5k cyBmb3IgdGhlIG5lYXIgZnV0dXJlIHRvIG1ha2Ugc3VyZSBkZXZlbG9wZXJzIG5vdGljZQo+ID4g PiB0aGUgbmV3Cj4gPiA+IHNlbWFudGljcyBvZiB3b3JrYXJvdW5kIGJvdW5kcy7CoCBCdXQgd2Ug anVzdCBtaWdyYXRlZCBhIGJ1bmNoIG9mCj4gPiA+IG91cgo+ID4gPiBwbGF0Zm9ybXMgZnJvbSB0 aGUgSVNfUkVWSUQgYm91bmRzIG92ZXIgdG8gSVNfe0dULERJU1B9X1NURVAsIHNvCj4gPiA+IHBl b3BsZQo+ID4gPiBhcmUgYWxyZWFkeSBhZGp1c3RpbmcgdG8gdGhlIG5ldyBtYWNyb3MgYW5kIG5v dyBpcyBhIGdvb2QgdGltZSB0bwo+ID4gPiBtYWtlCj4gPiA+IHRoaXMgY2hhbmdlIHRvby4KPiA+ ID4gCj4gPiA+IFNpZ25lZC1vZmYtYnk6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRl bC5jb20+Cj4gCj4gSXQncyBiZWVuIG1lcmdlZCBhbHJlYWR5LCBidXQgSSB0aGluayB0aGlzIGlz IGEgZ29vZCBleGFtcGxlIG9mIGEKPiBwYXRjaAo+IHdoZXJlIHNpbXBsZSByZXZpZXcgaXMganVz dCBub3QgZW5vdWdoLiBOZWVkcyBtYWludGFpbmVycyBpbiBDYyBhbmQKPiBhY2tzCj4gb24gdG9w LgoKSSBhZ3JlZS4gQnV0IEkgbGlrZSB0aGUgYXBwcm9hY2ggb2YgZ2V0dGluZyB0aGlzIGFsaWdu ZWQgd2l0aCBhbGwgb3RoZXIKaW50ZXJuYWwgdG9vbHMgd2UgaGF2ZSB0byB0cmFjayB3L2EuCmxh dGUtYWNrZWQtYnkgbWUuLi4KCj4gCj4gQlIsCj4gSmFuaS4KPiAKPiAKPiA+ID4gLS0tCj4gPiA+ IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jZGNsay5jwqDCoMKgIHzCoCAy ICstCj4gPiA+IMKgLi4uL2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jwqDC oMKgIHzCoCA4ICsrKy0tLQo+ID4gPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfcHNyLmPCoMKgwqDCoMKgIHwgMTggKysrKysrLS0tLS0tCj4gPiA+IMKgLi4uL2RybS9pOTE1 L2Rpc3BsYXkvc2tsX3VuaXZlcnNhbF9wbGFuZS5jwqDCoMKgIHzCoCA4ICsrKy0tLQo+ID4gPiDC oGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjhfZW5naW5lX2NzLmPCoMKgwqDCoMKgIHzCoCAy ICstCj4gPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVnaW9uX2xtZW0uY8Kg wqAgfMKgIDIgKy0KPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF93b3JrYXJv dW5kcy5jwqDCoCB8IDI4ICsrKysrKysrKy0tLS0KPiA+ID4gLS0tLS0tCj4gPiA+IMKgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKg IDQgKy0tCj4gPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uY8Kg wqDCoMKgwqAgfMKgIDIgKy0KPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5j wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgOCArKystLS0KPiA+ID4gwqAxMCBmaWxl cyBjaGFuZ2VkLCA0MSBpbnNlcnRpb25zKCspLCA0MSBkZWxldGlvbnMoLSkKPiA+ID4gCj4gPiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NkY2xrLmMK PiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NkY2xrLmMKPiA+ID4g aW5kZXggNzEwNjdhNjIyNjRkLi45NDRmYjEzYjlkOTggMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY2RjbGsuYwo+ID4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NkY2xrLmMKPiA+ID4gQEAgLTI4NzksNyArMjg3 OSw3IEBAIHZvaWQgaW50ZWxfaW5pdF9jZGNsa19ob29rcyhzdHJ1Y3QKPiA+ID4gZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9jYWxjX2NkY2xrID0KPiA+ID4gYnh0X21vZGVzZXRf Y2FsY19jZGNsazsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZXZfcHJp di0+ZGlzcGxheS5jYWxjX3ZvbHRhZ2VfbGV2ZWwgPQo+ID4gPiB0Z2xfY2FsY192b2x0YWdlX2xl dmVsOwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIFdhXzIyMDExMzIw MzE2OmFkbC1wW2EwXSAqLwo+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYg KElTX0FETFBfRElTUExBWV9TVEVQKGRldl9wcml2LCBTVEVQX0EwLAo+ID4gPiBTVEVQX0EwKSkK PiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChJU19BRExQX0RJU1BMQVlf U1RFUChkZXZfcHJpdiwgU1RFUF9BMCwKPiA+ID4gU1RFUF9CMCkpCj4gPiA+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRldl9wcml2LT5jZGNsay50YWJs ZSA9Cj4gPiA+IGFkbHBfYV9zdGVwX2NkY2xrX3RhYmxlOwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGVsc2UKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZGV2X3ByaXYtPmNkY2xrLnRhYmxlID0gYWRscF9jZGNsa190YWJs ZTsKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf ZGlzcGxheV9wb3dlci5jCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9kaXNwbGF5X3Bvd2VyLmMKPiA+ID4gaW5kZXggZTNhYWY5Njc4YjA3Li5iZWMzODBlNThmNDAg MTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlz cGxheV9wb3dlci5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZGlzcGxheV9wb3dlci5jCj4gPiA+IEBAIC01Nzk5LDEwICs1Nzk5LDEwIEBAIHN0YXRpYyB2 b2lkIHRnbF9id19idWRkeV9pbml0KHN0cnVjdAo+ID4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoGludCBjb25maWcsIGk7Cj4gPiA+IMKgCj4gPiA+ IMKgwqDCoMKgwqDCoMKgwqBpZiAoSVNfQUxERVJMQUtFX1MoZGV2X3ByaXYpIHx8Cj4gPiA+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoCBJU19ERzFfRElTUExBWV9TVEVQKGRldl9wcml2LCBTVEVQX0Ew LCBTVEVQX0EwKSB8fAo+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqAgSVNfUktMX0RJU1BMQVlf U1RFUChkZXZfcHJpdiwgU1RFUF9BMCwgU1RFUF9BMCkgfHwKPiA+ID4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgIElTX1RHTF9ESVNQTEFZX1NURVAoZGV2X3ByaXYsIFNURVBfQTAsIFNURVBfQjApKQo+ ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogV2FfMTQwOTc2NzEwODp0Z2ws cmtsLGRnMSxhZGwtcyAqLwo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgSVNfREcxX0RJU1BM QVlfU1RFUChkZXZfcHJpdiwgU1RFUF9BMCwgU1RFUF9CMCkgfHwKPiA+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgIElTX1JLTF9ESVNQTEFZX1NURVAoZGV2X3ByaXYsIFNURVBfQTAsIFNURVBfQjAp IHx8Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBJU19UR0xfRElTUExBWV9TVEVQKGRldl9w cml2LCBTVEVQX0EwLCBTVEVQX0MwKSkKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoC8qIFdhXzE0MDk3NjcxMDg6dGdsLGRnMSxhZGwtcyAqLwo+ID4gPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHRhYmxlID0gd2FfMTQwOTc2NzEwOF9idWRkeV9wYWdlX21hc2tz Owo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgZWxzZQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHRhYmxlID0gdGdsX2J1ZGR5X3BhZ2VfbWFza3M7Cj4gPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bzci5jCj4gPiA+IGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wc3IuYwo+ID4gPiBpbmRleCAwYTNkNDJjOGQ0 N2QuLmYwMzgxZWRlZmRlZCAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9wc3IuYwo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX3Bzci5jCj4gPiA+IEBAIC01NDYsNyArNTQ2LDcgQEAgc3RhdGljIHZvaWQgaHN3 X2FjdGl2YXRlX3BzcjIoc3RydWN0IGludGVsX2RwCj4gPiA+ICppbnRlbF9kcCkKPiA+ID4gwqDC oMKgwqDCoMKgwqDCoHZhbCB8PSBpbnRlbF9wc3IyX2dldF90cF90aW1lKGludGVsX2RwKTsKPiA+ ID4gwqAKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoC8qIFdhXzIyMDEyMjc4Mjc1OmFkbC1wICovCj4g PiA+IC3CoMKgwqDCoMKgwqDCoGlmIChJU19BRExQX0RJU1BMQVlfU1RFUChkZXZfcHJpdiwgU1RF UF9BMCwgU1RFUF9EMSkpIHsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKElTX0FETFBfRElTUExB WV9TVEVQKGRldl9wcml2LCBTVEVQX0EwLCBTVEVQX0UwKSkgewo+ID4gPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHN0YXRpYyBjb25zdCB1OCBtYXBbXSA9IHsKPiA+ID4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMiwgLyogNSBsaW5lcyAq Lwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAx LCAvKiA2IGxpbmVzICovCj4gPiA+IEBAIC01OTMsNyArNTkzLDcgQEAgc3RhdGljIHZvaWQgaHN3 X2FjdGl2YXRlX3BzcjIoc3RydWN0IGludGVsX2RwCj4gPiA+ICppbnRlbF9kcCkKPiA+ID4gwqAK PiA+ID4gwqDCoMKgwqDCoMKgwqDCoGlmIChpbnRlbF9kcC0+cHNyLnBzcjJfc2VsX2ZldGNoX2Vu YWJsZWQpIHsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBXYV8xNDA4 MzMwODQ3ICovCj4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoSVNfVEdM X0RJU1BMQVlfU1RFUChkZXZfcHJpdiwgU1RFUF9BMCwKPiA+ID4gU1RFUF9BMCkpCj4gPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoSVNfVEdMX0RJU1BMQVlfU1RFUChkZXZf cHJpdiwgU1RFUF9BMCwKPiA+ID4gU1RFUF9CMCkpCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGludGVsX2RlX3JtdyhkZXZfcHJpdiwgQ0hJQ0tF Tl9QQVIxXzEsCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+ID4gPiBESVNfUkFNX0JZUEFTU19QU1Iy X01BTl9UUkFDSywKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gPiA+IERJU19SQU1fQllQQVNTX1BT UjJfTUFOX1RSQUNLKTsKPiA+ID4gQEAgLTczMyw3ICs3MzMsNyBAQCB0Z2xfZGMzY29fZXhpdGxp bmVfY29tcHV0ZV9jb25maWcoc3RydWN0Cj4gPiA+IGludGVsX2RwICppbnRlbF9kcCwKPiA+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm47Cj4gPiA+IMKgCj4gPiA+IMKg wqDCoMKgwqDCoMKgwqAvKiBXYV8xNjAxMTMwMzkxODphZGwtcCAqLwo+ID4gPiAtwqDCoMKgwqDC oMKgwqBpZiAoSVNfQURMUF9ESVNQTEFZX1NURVAoZGV2X3ByaXYsIFNURVBfQTAsIFNURVBfQTAp KQo+ID4gPiArwqDCoMKgwqDCoMKgwqBpZiAoSVNfQURMUF9ESVNQTEFZX1NURVAoZGV2X3ByaXYs IFNURVBfQTAsIFNURVBfQjApKQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHJldHVybjsKPiA+ID4gwqAKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoC8qCj4gPiA+IEBAIC03ODAs NyArNzgwLDcgQEAgc3RhdGljIGJvb2wKPiA+ID4gaW50ZWxfcHNyMl9zZWxfZmV0Y2hfY29uZmln X3ZhbGlkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqB9 Cj4gPiA+IMKgCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqAvKiBXYV8xNDAxMDI1NDE4NSBXYV8xNDAx MDEwMzc5MiAqLwo+ID4gPiAtwqDCoMKgwqDCoMKgwqBpZiAoSVNfVEdMX0RJU1BMQVlfU1RFUChk ZXZfcHJpdiwgU1RFUF9BMCwgU1RFUF9CMSkpIHsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKElT X1RHTF9ESVNQTEFZX1NURVAoZGV2X3ByaXYsIFNURVBfQTAsIFNURVBfQzApKSB7Cj4gPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0s Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAiUFNSMiBzZWwgZmV0Y2ggbm90IGVuYWJsZWQsIG1pc3NpbmcKPiA+ID4gdGhlIGltcGxl bWVudGF0aW9uIG9mIFdBc1xuIik7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgcmV0dXJuIGZhbHNlOwo+ID4gPiBAQCAtOTM5LDcgKzkzOSw3IEBAIHN0YXRpYyBib29sIGlu dGVsX3BzcjJfY29uZmlnX3ZhbGlkKHN0cnVjdAo+ID4gPiBpbnRlbF9kcCAqaW50ZWxfZHAsCj4g PiA+IMKgCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqAvKiBXYV8yMjA5MzEzODExICovCj4gPiA+IMKg wqDCoMKgwqDCoMKgwqBpZiAoIWNydGNfc3RhdGUtPmVuYWJsZV9wc3IyX3NlbF9mZXRjaCAmJgo+ ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqAgSVNfVEdMX0RJU1BMQVlfU1RFUChkZXZfcHJpdiwg U1RFUF9BMCwgU1RFUF9CMSkpIHsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIElTX1RHTF9E SVNQTEFZX1NURVAoZGV2X3ByaXYsIFNURVBfQTAsIFNURVBfQzApKSB7Cj4gPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sICJQU1Iy IEhXIHRyYWNraW5nIGlzCj4gPiA+IG5vdCBzdXBwb3J0ZWQgdGhpcyBEaXNwbGF5IHN0ZXBwaW5n XG4iKTsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZmFsc2U7 Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiA+IEBAIC05NjYsNyArOTY2LDcgQEAgc3RhdGlj IGJvb2wgaW50ZWxfcHNyMl9jb25maWdfdmFsaWQoc3RydWN0Cj4gPiA+IGludGVsX2RwICppbnRl bF9kcCwKPiA+ID4gwqAKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoC8qIFdhXzE2MDExMzAzOTE4OmFk bC1wICovCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAoY3J0Y19zdGF0ZS0+dnJyLmVuYWJsZSAm Jgo+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqAgSVNfQURMUF9ESVNQTEFZX1NURVAoZGV2X3By aXYsIFNURVBfQTAsIFNURVBfQTApKSB7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBJU19B RExQX0RJU1BMQVlfU1RFUChkZXZfcHJpdiwgU1RFUF9BMCwgU1RFUF9CMCkpIHsKPiA+ID4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwK PiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICJQU1IyIG5vdCBlbmFibGVkLCBub3QgY29tcGF0aWJsZQo+ID4gPiB3aXRoIEhXIHN0ZXBw aW5nICsgVlJSXG4iKTsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1 cm4gZmFsc2U7Cj4gPiA+IEBAIC0xMTYwLDcgKzExNjAsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9w c3JfZW5hYmxlX3NvdXJjZShzdHJ1Y3QKPiA+ID4gaW50ZWxfZHAgKmludGVsX2RwKQo+ID4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBJ R05PUkVfUFNSMl9IV19UUkFDS0lORyA6IDApOwo+ID4gPiDCoAo+ID4gPiDCoMKgwqDCoMKgwqDC oMKgLyogV2FfMTYwMTExNjgzNzM6YWRsLXAgKi8KPiA+ID4gLcKgwqDCoMKgwqDCoMKgaWYgKElT X0FETFBfRElTUExBWV9TVEVQKGRldl9wcml2LCBTVEVQX0EwLCBTVEVQX0EwKSAmJgo+ID4gPiAr wqDCoMKgwqDCoMKgwqBpZiAoSVNfQURMUF9ESVNQTEFZX1NURVAoZGV2X3ByaXYsIFNURVBfQTAs IFNURVBfQjApICYmCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50ZWxfZHAtPnBzci5w c3IyX2VuYWJsZWQpCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW50ZWxf ZGVfcm13KGRldl9wcml2LAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBUUkFOU19TRVRfQ09OVEVYVF9MQVRFTkNZKGludGVsX2Rw LQo+ID4gPiA+cHNyLnRyYW5zY29kZXIpLAo+ID4gPiBAQCAtMTM0MCwxMiArMTM0MCwxMiBAQCBz dGF0aWMgdm9pZAo+ID4gPiBpbnRlbF9wc3JfZGlzYWJsZV9sb2NrZWQoc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCkKPiA+ID4gwqAKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoC8qIFdhXzE0MDgzMzA4 NDcgKi8KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoGlmIChpbnRlbF9kcC0+cHNyLnBzcjJfc2VsX2Zl dGNoX2VuYWJsZWQgJiYKPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgIElTX1RHTF9ESVNQTEFZ X1NURVAoZGV2X3ByaXYsIFNURVBfQTAsIFNURVBfQTApKQo+ID4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqAgSVNfVEdMX0RJU1BMQVlfU1RFUChkZXZfcHJpdiwgU1RFUF9BMCwgU1RFUF9CMCkpCj4g PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW50ZWxfZGVfcm13KGRldl9wcml2 LCBDSElDS0VOX1BBUjFfMSwKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRElTX1JBTV9CWVBBU1NfUFNSMl9NQU5fVFJBQ0ssIDAp Owo+ID4gPiDCoAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgLyogV2FfMTYwMTExNjgzNzM6YWRsLXAg Ki8KPiA+ID4gLcKgwqDCoMKgwqDCoMKgaWYgKElTX0FETFBfRElTUExBWV9TVEVQKGRldl9wcml2 LCBTVEVQX0EwLCBTVEVQX0EwKSAmJgo+ID4gPiArwqDCoMKgwqDCoMKgwqBpZiAoSVNfQURMUF9E SVNQTEFZX1NURVAoZGV2X3ByaXYsIFNURVBfQTAsIFNURVBfQjApICYmCj4gPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgaW50ZWxfZHAtPnBzci5wc3IyX2VuYWJsZWQpCj4gPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW50ZWxfZGVfcm13KGRldl9wcml2LAo+ID4gPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBUUkFO U19TRVRfQ09OVEVYVF9MQVRFTkNZKGludGVsX2RwLQo+ID4gPiA+cHNyLnRyYW5zY29kZXIpLAo+ ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9za2xfdW5pdmVy c2FsX3BsYW5lLmMKPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L3NrbF91bml2 ZXJzYWxfcGxhbmUuYwo+ID4gPiBpbmRleCA2MjhiNjc4ZDlhNzEuLjNhZDA0YmYyYTBmZCAxMDA2 NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9za2xfdW5pdmVyc2Fs X3BsYW5lLmMKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9za2xfdW5p dmVyc2FsX3BsYW5lLmMKPiA+ID4gQEAgLTE5MTAsMTEgKzE5MTAsMTEgQEAgc3RhdGljIGJvb2wK PiA+ID4gZ2VuMTJfcGxhbmVfc3VwcG9ydHNfbWNfY2NzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiA+ID4gwqB7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqAvKiBXYV8xNDAxMDQ3 NzAwODp0Z2xbYTAuLmMwXSxya2xbYWxsXSxkZzFbYWxsXSAqLwo+ID4gPiDCoMKgwqDCoMKgwqDC oMKgaWYgKElTX0RHMShkZXZfcHJpdikgfHwgSVNfUk9DS0VUTEFLRShkZXZfcHJpdikgfHwKPiA+ ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgIElTX1RHTF9ESVNQTEFZX1NURVAoZGV2X3ByaXYsIFNU RVBfQTAsIFNURVBfQzApKQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgSVNfVEdMX0RJU1BM QVlfU1RFUChkZXZfcHJpdiwgU1RFUF9BMCwgU1RFUF9EMCkpCj4gPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGZhbHNlOwo+ID4gPiDCoAo+ID4gPiDCoMKgwqDCoMKg wqDCoMKgLyogV2FfMjIwMTExODYwNTcgKi8KPiA+ID4gLcKgwqDCoMKgwqDCoMKgaWYgKElTX0FE TFBfRElTUExBWV9TVEVQKGRldl9wcml2LCBTVEVQX0EwLCBTVEVQX0EwKSkKPiA+ID4gK8KgwqDC oMKgwqDCoMKgaWYgKElTX0FETFBfRElTUExBWV9TVEVQKGRldl9wcml2LCBTVEVQX0EwLCBTVEVQ X0IwKSkKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZmFsc2U7 Cj4gPiA+IMKgCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcGxhbmVfaWQgPCBQTEFORV9T UFJJVEU0Owo+ID4gPiBAQCAtMTkzOCw3ICsxOTM4LDcgQEAgc3RhdGljIGJvb2wKPiA+ID4gZ2Vu MTJfcGxhbmVfZm9ybWF0X21vZF9zdXBwb3J0ZWQoc3RydWN0IGRybV9wbGFuZSAqX3BsYW5lLAo+ ID4gPiDCoMKgwqDCoMKgwqDCoMKgY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9S Q19DQ1M6Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBjYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVE X0dFTjEyX1JDX0NDU19DQzoKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAv KiBXYV8yMjAxMTE4NjA1NyAqLwo+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg aWYgKElTX0FETFBfRElTUExBWV9TVEVQKGRldl9wcml2LCBTVEVQX0EwLAo+ID4gPiBTVEVQX0Ew KSkKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChJU19BRExQX0RJU1BM QVlfU1RFUChkZXZfcHJpdiwgU1RFUF9BMCwKPiA+ID4gU1RFUF9CMCkpCj4gPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBmYWxzZTsKPiA+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiA+ID4gwqDCoMKgwqDC oMKgwqDCoGRlZmF1bHQ6Cj4gPiA+IEBAIC0xOTk1LDcgKzE5OTUsNyBAQCBzdGF0aWMgY29uc3Qg dTY0Cj4gPiA+ICpnZW4xMl9nZXRfcGxhbmVfbW9kaWZpZXJzKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW51bSBw bGFuZV9pZAo+ID4gPiBwbGFuZV9pZCkKPiA+ID4gwqB7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqAv KiBXYV8yMjAxMTE4NjA1NyAqLwo+ID4gPiAtwqDCoMKgwqDCoMKgwqBpZiAoSVNfQURMUF9ESVNQ TEFZX1NURVAoZGV2X3ByaXYsIFNURVBfQTAsIFNURVBfQTApKQo+ID4gPiArwqDCoMKgwqDCoMKg wqBpZiAoSVNfQURMUF9ESVNQTEFZX1NURVAoZGV2X3ByaXYsIFNURVBfQTAsIFNURVBfQjApKQo+ ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBhZGxwX3N0ZXBfYV9w bGFuZV9mb3JtYXRfbW9kaWZpZXJzOwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgZWxzZSBpZiAoZ2Vu MTJfcGxhbmVfc3VwcG9ydHNfbWNfY2NzKGRldl9wcml2LCBwbGFuZV9pZCkpCj4gPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGdlbjEyX3BsYW5lX2Zvcm1hdF9tb2Rp ZmllcnNfbWNfY2NzOwo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv Z2VuOF9lbmdpbmVfY3MuYwo+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjhfZW5n aW5lX2NzLmMKPiA+ID4gaW5kZXggODdiMDY1NzJmZDJlLi5hNjlmNWM0MzhjNzIgMTAwNjQ0Cj4g PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjhfZW5naW5lX2NzLmMKPiA+ID4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZ2VuOF9lbmdpbmVfY3MuYwo+ID4gPiBAQCAt NDIsNyArNDIsNyBAQCBpbnQgZ2VuOF9lbWl0X2ZsdXNoX3JjcyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0 Cj4gPiA+ICpycSwgdTMyIG1vZGUpCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHZmX2ZsdXNoX3dhID0gdHJ1ZTsKPiA+ID4gwqAKPiA+ID4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBXYUZvckdBTUhhbmc6a2JsICovCj4gPiA+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoSVNfS0JMX0dUX1NURVAocnEtPmVu Z2luZS0+aTkxNSwgMCwgU1RFUF9CMCkpCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpZiAoSVNfS0JMX0dUX1NURVAocnEtPmVuZ2luZS0+aTkxNSwgMCwgU1RFUF9DMCkpCj4g PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRjX2Zs dXNoX3dhID0gdHJ1ZTsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoH0KPiA+ID4gwqAKPiA+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JlZ2lvbl9sbWVtLmMKPiA+ ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZWdpb25fbG1lbS5jCj4gPiA+IGlu ZGV4IDUwZDExYTg0ZTdhOS4uZTNhMmEyZmE1Zjk0IDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZWdpb25fbG1lbS5jCj4gPiA+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX3JlZ2lvbl9sbWVtLmMKPiA+ID4gQEAgLTE1Nyw3ICsxNTcs NyBAQCBpbnRlbF9ndF9zZXR1cF9mYWtlX2xtZW0oc3RydWN0IGludGVsX2d0ICpndCkKPiA+ID4g wqBzdGF0aWMgYm9vbCBnZXRfbGVnYWN5X2xvd21lbV9yZWdpb24oc3RydWN0IGludGVsX3VuY29y ZQo+ID4gPiAqdW5jb3JlLAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTY0ICpzdGFydCwgdTMyICpz aXplKQo+ID4gPiDCoHsKPiA+ID4gLcKgwqDCoMKgwqDCoMKgaWYgKCFJU19ERzFfR1RfU1RFUCh1 bmNvcmUtPmk5MTUsIFNURVBfQTAsIFNURVBfQjApKQo+ID4gPiArwqDCoMKgwqDCoMKgwqBpZiAo IUlTX0RHMV9HVF9TVEVQKHVuY29yZS0+aTkxNSwgU1RFUF9BMCwgU1RFUF9DMCkpCj4gPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGZhbHNlOwo+ID4gPiDCoAo+ID4g PiDCoMKgwqDCoMKgwqDCoMKgKnN0YXJ0ID0gMDsKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX3dvcmthcm91bmRzLmMKPiA+ID4gYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF93b3JrYXJvdW5kcy5jCj4gPiA+IGluZGV4IDY4NWM2MTE1ZDM4MC4u MjQ3ZjAzMzFlYmVlIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF93b3JrYXJvdW5kcy5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX3dvcmthcm91bmRzLmMKPiA+ID4gQEAgLTgzOCw3ICs4MzgsNyBAQCBza2xfZ3Rfd29ya2Fy b3VuZHNfaW5pdChzdHJ1Y3QKPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgc3RydWN0IGk5 MTVfd2FfbGlzdCAqd2FsKQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBHRU44X0VVX0dBVU5JVF9DTE9DS19HQVRFX0RJU0FCTEUpOwo+ID4gPiDCoAo+ID4gPiDC oMKgwqDCoMKgwqDCoMKgLyogV2FJblBsYWNlRGVjb21wcmVzc2lvbkhhbmc6c2tsICovCj4gPiA+ IC3CoMKgwqDCoMKgwqDCoGlmIChJU19TS0xfR1RfU1RFUChpOTE1LCBTVEVQX0EwLCBTVEVQX0gw IC0gMSkpCj4gPiA+ICvCoMKgwqDCoMKgwqDCoGlmIChJU19TS0xfR1RfU1RFUChpOTE1LCBTVEVQ X0EwLCBTVEVQX0gwKSkKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB3YV93 cml0ZV9vcih3YWwsCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBHRU45X0dBTVRfRUNPX1JFR19SV19JQSwKPiA+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdBTVRfRUNPX0VO QUJMRV9JTl9QTEFDRV9ERUNPTVBSRVNTKTsKPiA+ID4gQEAgLTg1MCw3ICs4NTAsNyBAQCBrYmxf Z3Rfd29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QKPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwg c3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsKQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgZ2VuOV9ndF93 b3JrYXJvdW5kc19pbml0KGk5MTUsIHdhbCk7Cj4gPiA+IMKgCj4gPiA+IMKgwqDCoMKgwqDCoMKg wqAvKiBXYURpc2FibGVEeW5hbWljQ3JlZGl0U2hhcmluZzprYmwgKi8KPiA+ID4gLcKgwqDCoMKg wqDCoMKgaWYgKElTX0tCTF9HVF9TVEVQKGk5MTUsIDAsIFNURVBfQjApKQo+ID4gPiArwqDCoMKg wqDCoMKgwqBpZiAoSVNfS0JMX0dUX1NURVAoaTkxNSwgMCwgU1RFUF9DMCkpCj4gPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgd2Ffd3JpdGVfb3Iod2FsLAo+ID4gPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgR0FNVF9DSEtO X0JJVF9SRUcsCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoAo+ID4gPiBHQU1UX0NIS05fRElTQUJMRV9EWU5BTUlDX0NSRURJVF9TSEFS SU5HKTsKPiA+ID4gQEAgLTk2MSw3ICs5NjEsNyBAQCBpY2xfZ3Rfd29ya2Fyb3VuZHNfaW5pdChz dHJ1Y3QKPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgc3RydWN0IGk5MTVfd2FfbGlzdCAq d2FsKQo+ID4gPiDCoAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgLyogV2FfMTYwNzA4NzA1NjppY2ws ZWhsLGpzbCAqLwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgaWYgKElTX0lDRUxBS0UoaTkxNSkgfHwK PiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgIElTX0pTTF9FSExfR1RfU1RFUChpOTE1LCBTVEVQ X0EwLCBTVEVQX0EwKSkKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIElTX0pTTF9FSExfR1Rf U1RFUChpOTE1LCBTVEVQX0EwLCBTVEVQX0IwKSkKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB3YV93cml0ZV9vcih3YWwsCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBTTElDRV9VTklUX0xFVkVMX0NMS0dBVEUs Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBMM19DTEtHQVRFX0RJUyB8Cj4gPiA+IEwzX0NSMlhfQ0xLR0FURV9ESVMpOwo+ID4gPiBA QCAtMTAxNSwxOSArMTAxNSwxOSBAQCB0Z2xfZ3Rfd29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QKPiA+ ID4gZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgc3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsKQo+ID4g PiDCoMKgwqDCoMKgwqDCoMKgZ2VuMTJfZ3Rfd29ya2Fyb3VuZHNfaW5pdChpOTE1LCB3YWwpOwo+ ID4gPiDCoAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgLyogV2FfMTQwOTQyMDYwNDp0Z2wgKi8KPiA+ ID4gLcKgwqDCoMKgwqDCoMKgaWYgKElTX1RHTF9VWV9HVF9TVEVQKGk5MTUsIFNURVBfQTAsIFNU RVBfQTApKQo+ID4gPiArwqDCoMKgwqDCoMKgwqBpZiAoSVNfVEdMX1VZX0dUX1NURVAoaTkxNSwg U1RFUF9BMCwgU1RFUF9CMCkpCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg d2Ffd3JpdGVfb3Iod2FsLAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgU1VCU0xJQ0VfVU5JVF9MRVZFTF9DTEtHQVRFMiwKPiA+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIENQ U1NVTklUX0NMS0dBVEVfRElTKTsKPiA+ID4gwqAKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoC8qIFdh XzE2MDcwODcwNTY6dGdsIGFsc28ga25vdyBhcyBCVUc6MTQwOTE4MDMzOCAqLwo+ID4gPiAtwqDC oMKgwqDCoMKgwqBpZiAoSVNfVEdMX1VZX0dUX1NURVAoaTkxNSwgU1RFUF9BMCwgU1RFUF9BMCkp Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoGlmIChJU19UR0xfVVlfR1RfU1RFUChpOTE1LCBTVEVQX0Ew LCBTVEVQX0IwKSkKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB3YV93cml0 ZV9vcih3YWwsCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBTTElDRV9VTklUX0xFVkVMX0NMS0dBVEUsCj4gPiA+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBMM19DTEtHQVRFX0RJ UyB8Cj4gPiA+IEwzX0NSMlhfQ0xLR0FURV9ESVMpOwo+ID4gPiDCoAo+ID4gPiDCoMKgwqDCoMKg wqDCoMKgLyogV2FfMTQwODYxNTA3Mjp0Z2xbYTBdICovCj4gPiA+IC3CoMKgwqDCoMKgwqDCoGlm IChJU19UR0xfVVlfR1RfU1RFUChpOTE1LCBTVEVQX0EwLCBTVEVQX0EwKSkKPiA+ID4gK8KgwqDC oMKgwqDCoMKgaWYgKElTX1RHTF9VWV9HVF9TVEVQKGk5MTUsIFNURVBfQTAsIFNURVBfQjApKQo+ ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHdhX3dyaXRlX29yKHdhbCwgVU5T TElDRV9VTklUX0xFVkVMX0NMS0dBVEUyLAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVlNVTklUX0NMS0dBVEVfRElTX1RHTCk7Cj4g PiA+IMKgfQo+ID4gPiBAQCAtMTAzOCw3ICsxMDM4LDcgQEAgZGcxX2d0X3dvcmthcm91bmRzX2lu aXQoc3RydWN0Cj4gPiA+IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHN0cnVjdCBpOTE1X3dhX2xp c3QgKndhbCkKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoGdlbjEyX2d0X3dvcmthcm91bmRzX2luaXQo aTkxNSwgd2FsKTsKPiA+ID4gwqAKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoC8qIFdhXzE2MDcwODcw NTY6ZGcxICovCj4gPiA+IC3CoMKgwqDCoMKgwqDCoGlmIChJU19ERzFfR1RfU1RFUChpOTE1LCBT VEVQX0EwLCBTVEVQX0EwKSkKPiA+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKElTX0RHMV9HVF9TVEVQ KGk5MTUsIFNURVBfQTAsIFNURVBfQjApKQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHdhX3dyaXRlX29yKHdhbCwKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFNMSUNFX1VOSVRfTEVWRUxfQ0xLR0FURSwKPiA+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IEwzX0NMS0dBVEVfRElTIHwKPiA+ID4gTDNfQ1IyWF9DTEtHQVRFX0RJUyk7Cj4gPiA+IEBAIC0x NDM2LDcgKzE0MzYsNyBAQCBzdGF0aWMgdm9pZCBkZzFfd2hpdGVsaXN0X2J1aWxkKHN0cnVjdAo+ ID4gPiBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHRnbF93 aGl0ZWxpc3RfYnVpbGQoZW5naW5lKTsKPiA+ID4gwqAKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoC8q IEdFTjpCVUc6MTQwOTI4MDQ0MTpkZzEgKi8KPiA+ID4gLcKgwqDCoMKgwqDCoMKgaWYgKElTX0RH MV9HVF9TVEVQKGVuZ2luZS0+aTkxNSwgU1RFUF9BMCwgU1RFUF9BMCkgJiYKPiA+ID4gK8KgwqDC oMKgwqDCoMKgaWYgKElTX0RHMV9HVF9TVEVQKGVuZ2luZS0+aTkxNSwgU1RFUF9BMCwgU1RFUF9C MCkgJiYKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoZW5naW5lLT5jbGFzcyA9PSBSRU5E RVJfQ0xBU1MgfHwKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVuZ2luZS0+Y2xhc3Mg PT0gQ09QWV9FTkdJTkVfQ0xBU1MpKQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHdoaXRlbGlzdF9yZWdfZXh0KHcsIFJJTkdfSUQoZW5naW5lLT5tbWlvX2Jhc2UpLAo+ID4g PiBAQCAtMTUwNCw4ICsxNTA0LDggQEAgcmNzX2VuZ2luZV93YV9pbml0KHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MKPiA+ID4gKmVuZ2luZSwgc3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsKQo+ID4gPiDC oHsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0g ZW5naW5lLT5pOTE1Owo+ID4gPiDCoAo+ID4gPiAtwqDCoMKgwqDCoMKgwqBpZiAoSVNfREcxX0dU X1NURVAoaTkxNSwgU1RFUF9BMCwgU1RFUF9BMCkgfHwKPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgIElTX1RHTF9VWV9HVF9TVEVQKGk5MTUsIFNURVBfQTAsIFNURVBfQTApKSB7Cj4gPiA+ICvC oMKgwqDCoMKgwqDCoGlmIChJU19ERzFfR1RfU1RFUChpOTE1LCBTVEVQX0EwLCBTVEVQX0IwKSB8 fAo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgSVNfVEdMX1VZX0dUX1NURVAoaTkxNSwgU1RF UF9BMCwgU1RFUF9CMCkpIHsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAv Kgo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIFdhXzE2MDcxMzgzMzY6 dGdsW2EwXSxkZzFbYTBdCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICog V2FfMTYwNzA2Mzk4ODp0Z2xbYTBdLGRnMVthMF0KPiA+ID4gQEAgLTE1MTUsNyArMTUxNSw3IEBA IHJjc19lbmdpbmVfd2FfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzCj4gPiA+ICplbmdpbmUs IHN0cnVjdCBpOTE1X3dhX2xpc3QgKndhbCkKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdFTjEyX0RJU0FCTEVfUE9TSF9CVVNZX0ZG X0RPUF9DRyk7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiA+IMKgCj4gPiA+IC3CoMKgwqDC oMKgwqDCoGlmIChJU19UR0xfVVlfR1RfU1RFUChpOTE1LCBTVEVQX0EwLCBTVEVQX0EwKSkgewo+ ID4gPiArwqDCoMKgwqDCoMKgwqBpZiAoSVNfVEdMX1VZX0dUX1NURVAoaTkxNSwgU1RFUF9BMCwg U1RFUF9CMCkpIHsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKgo+ID4g PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIFdhXzE2MDY2NzkxMDM6dGdsCj4g PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogKHNlZSBhbHNvIFdhXzE2MDY2 ODIxNjY6aWNsKQo+ID4gPiBAQCAtMTU1MCw3ICsxNTUwLDcgQEAgcmNzX2VuZ2luZV93YV9pbml0 KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MKPiA+ID4gKmVuZ2luZSwgc3RydWN0IGk5MTVfd2FfbGlz dCAqd2FsKQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gPiDCoAo+ID4gPiDCoMKgwqDCoMKg wqDCoMKgaWYgKElTX0FMREVSTEFLRV9QKGk5MTUpIHx8IElTX0FMREVSTEFLRV9TKGk5MTUpIHx8 Cj4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoCBJU19ERzFfR1RfU1RFUChpOTE1LCBTVEVQX0Ew LCBTVEVQX0EwKSB8fAo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgSVNfREcxX0dUX1NURVAo aTkxNSwgU1RFUF9BMCwgU1RFUF9CMCkgfHwKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBJ U19ST0NLRVRMQUtFKGk5MTUpIHx8IElTX1RJR0VSTEFLRShpOTE1KSkgewo+ID4gPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIFdhXzE0MDk4MDQ4MDg6dGdsLHJrbCxkZzFbYTBd LGFkbC1zLGFkbC1wICovCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgd2Ff bWFza2VkX2VuKHdhbCwgR0VON19ST1dfQ0hJQ0tFTjIsCj4gPiA+IEBAIC0xNTY0LDcgKzE1NjQs NyBAQCByY3NfZW5naW5lX3dhX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcwo+ID4gPiAqZW5n aW5lLCBzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwpCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqB9Cj4g PiA+IMKgCj4gPiA+IMKgCj4gPiA+IC3CoMKgwqDCoMKgwqDCoGlmIChJU19ERzFfR1RfU1RFUChp OTE1LCBTVEVQX0EwLCBTVEVQX0EwKSB8fAo+ID4gPiArwqDCoMKgwqDCoMKgwqBpZiAoSVNfREcx X0dUX1NURVAoaTkxNSwgU1RFUF9BMCwgU1RFUF9CMCkgfHwKPiA+ID4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBJU19ST0NLRVRMQUtFKGk5MTUpIHx8IElTX1RJR0VSTEFLRShpOTE1KSkgewo+ID4g PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qCj4gPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICogV2FfMTYwNzAzMDMxNzp0Z2wKPiA+ID4gQEAgLTE5MjUsNyAr MTkyNSw3IEBAIHhjc19lbmdpbmVfd2FfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzCj4gPiA+ ICplbmdpbmUsIHN0cnVjdCBpOTE1X3dhX2xpc3QgKndhbCkKPiA+ID4gwqDCoMKgwqDCoMKgwqDC oHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZW5naW5lLT5pOTE1Owo+ID4gPiDCoAo+ ID4gPiDCoMKgwqDCoMKgwqDCoMKgLyogV2FLQkxWRUNTU2VtYXBob3JlV2FpdFBvbGw6a2JsICov Cj4gPiA+IC3CoMKgwqDCoMKgwqDCoGlmIChJU19LQkxfR1RfU1RFUChpOTE1LCBTVEVQX0EwLCBT VEVQX0UwKSkgewo+ID4gPiArwqDCoMKgwqDCoMKgwqBpZiAoSVNfS0JMX0dUX1NURVAoaTkxNSwg U1RFUF9BMCwgU1RFUF9GMCkpIHsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB3YV93cml0ZSh3YWwsCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBSSU5HX1NFTUFfV0FJVF9QT0xMKGVuZ2luZS0+bW1pb19iYXNlKSwKPiA+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDEpOwo+ ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gPiBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+ID4gaW5kZXggZGE1ZjIzMGUyZDRi Li5iNDI0MDVhZmIyOGUgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4g PiBAQCAtMTMzMiwxMSArMTMzMiwxMSBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBkcm1faTkxNV9w cml2YXRlCj4gPiA+ICpwZGV2X3RvX2k5MTUoc3RydWN0IHBjaV9kZXYgKnBkZXYpCj4gPiA+IMKg Cj4gPiA+IMKgI2RlZmluZSBJU19ESVNQTEFZX1NURVAoX19pOTE1LCBzaW5jZSwgdW50aWwpIFwK PiA+ID4gwqDCoMKgwqDCoMKgwqDCoChkcm1fV0FSTl9PTigmKF9faTkxNSktPmRybSwgSU5URUxf RElTUExBWV9TVEVQKF9faTkxNSkKPiA+ID4gPT0gU1RFUF9OT05FKSwgXAo+ID4gPiAtwqDCoMKg wqDCoMKgwqAgSU5URUxfRElTUExBWV9TVEVQKF9faTkxNSkgPj0gKHNpbmNlKSAmJgo+ID4gPiBJ TlRFTF9ESVNQTEFZX1NURVAoX19pOTE1KSA8PSAodW50aWwpKQo+ID4gPiArwqDCoMKgwqDCoMKg wqAgSU5URUxfRElTUExBWV9TVEVQKF9faTkxNSkgPj0gKHNpbmNlKSAmJgo+ID4gPiBJTlRFTF9E SVNQTEFZX1NURVAoX19pOTE1KSA8ICh1bnRpbCkpCj4gPiA+IMKgCj4gPiA+IMKgI2RlZmluZSBJ U19HVF9TVEVQKF9faTkxNSwgc2luY2UsIHVudGlsKSBcCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqAo ZHJtX1dBUk5fT04oJihfX2k5MTUpLT5kcm0sIElOVEVMX0dUX1NURVAoX19pOTE1KSA9PQo+ID4g PiBTVEVQX05PTkUpLCBcCj4gPiA+IC3CoMKgwqDCoMKgwqDCoCBJTlRFTF9HVF9TVEVQKF9faTkx NSkgPj0gKHNpbmNlKSAmJgo+ID4gPiBJTlRFTF9HVF9TVEVQKF9faTkxNSkgPD0gKHVudGlsKSkK PiA+ID4gK8KgwqDCoMKgwqDCoMKgIElOVEVMX0dUX1NURVAoX19pOTE1KSA+PSAoc2luY2UpICYm Cj4gPiA+IElOVEVMX0dUX1NURVAoX19pOTE1KSA8ICh1bnRpbCkpCj4gPiAKPiA+IFdvdWxkIGJl IG5pY2UgdG8gaGF2ZSBzb21lIGNvbW1lbnQgYWJvdXQgYm91bmQgaW4gaGVyZS4KPiA+IAo+ID4g RGlkIG5vdCBtYW51YWxseSBjaGVja2VkIGVhY2ggd29ya2Fyb3VuZCBhZ2FpbnN0IGJzcGVjLCBv bmx5Cj4gPiBjaGVja2VkIHRoZSBvbGQgYW5kIG5ldyB1bnRpbCB2YWx1ZXMgYW5kIGl0IG1ha2Vz IHNlbnNlLgo+ID4gV2l0aCB0aGUgY29tbWVudCByZXF1ZXN0ZWQgYWJvdmU6Cj4gPiAKPiA+IFJl dmlld2VkLWJ5OiBKb3PDqSBSb2JlcnRvIGRlIFNvdXphIDxqb3NlLnNvdXphQGludGVsLmNvbT4K PiA+IAo+ID4gCj4gPiA+IMKgCj4gPiA+IMKgc3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25l ZCBpbnQKPiA+ID4gwqBfX3BsYXRmb3JtX21hc2tfaW5kZXgoY29uc3Qgc3RydWN0IGludGVsX3J1 bnRpbWVfaW5mbyAqaW5mbywKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RldmljZV9pbmZvLmMKPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k ZXZpY2VfaW5mby5jCj4gPiA+IGluZGV4IGRkNjNkZDJjNDVhZC4uNWM4M2IyZWM2OWRhIDEwMDY0 NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jCj4g PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmMKPiA+ID4g QEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lkIGludGVsX2RldmljZV9pbmZvX3J1bnRpbWVfaW5pdChz dHJ1Y3QKPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+IMKgwqDCoMKgwqDC oMKgwqBlbnVtIHBpcGUgcGlwZTsKPiA+ID4gwqAKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoC8qIFdh XzE0MDExNzY1MjQyOiBhZGwtcyBBMCxBMSAqLwo+ID4gPiAtwqDCoMKgwqDCoMKgwqBpZiAoSVNf QURMU19ESVNQTEFZX1NURVAoZGV2X3ByaXYsIFNURVBfQTAsIFNURVBfQTEpKQo+ID4gPiArwqDC oMKgwqDCoMKgwqBpZiAoSVNfQURMU19ESVNQTEFZX1NURVAoZGV2X3ByaXYsIFNURVBfQTAsIFNU RVBfQTIpKQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZvcl9lYWNoX3Bp cGUoZGV2X3ByaXYsIHBpcGUpCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHJ1bnRpbWUtPm51bV9zY2FsZXJzW3BpcGVdID0gMDsKPiA+ID4gwqDC oMKgwqDCoMKgwqDCoGVsc2UgaWYgKEdSQVBISUNTX1ZFUihkZXZfcHJpdikgPj0gMTApIHsKPiA+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiA+ID4gYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gPiA+IGluZGV4IDhhODRhYmZhYTRiMC4u NTk3MzgzNDMwY2E2IDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wbS5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiA+ID4g QEAgLTczNTksNyArNzM1OSw3IEBAIHN0YXRpYyB2b2lkCj4gPiA+IGdlbjEybHBfaW5pdF9jbG9j a19nYXRpbmcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoAo+ID4gPiBJTEtfRFBGQ19DSElDS0VOX0NPTVBfRFVNTVlfUElYRUwpOwo+ID4gPiDCoAo+ ID4gPiDCoMKgwqDCoMKgwqDCoMKgLyogV2FfMTQwOTgyNTM3Njp0Z2wgKHByZS1wcm9kKSovCj4g PiA+IC3CoMKgwqDCoMKgwqDCoGlmIChJU19UR0xfRElTUExBWV9TVEVQKGRldl9wcml2LCBTVEVQ X0EwLCBTVEVQX0IxKSkKPiA+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKElTX1RHTF9ESVNQTEFZX1NU RVAoZGV2X3ByaXYsIFNURVBfQTAsIFNURVBfQzApKQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGludGVsX3VuY29yZV93cml0ZSgmZGV2X3ByaXYtPnVuY29yZSwKPiA+ID4g R0VOOV9DTEtHQVRFX0RJU18zLCBpbnRlbF91bmNvcmVfcmVhZCgmZGV2X3ByaXYtPnVuY29yZSwK PiA+ID4gR0VOOV9DTEtHQVRFX0RJU18zKSB8Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVEdMX1ZSSF9HQVRJTkdfRElTKTsKPiA+ID4g wqAKPiA+ID4gQEAgLTczODIsNyArNzM4Miw3IEBAIHN0YXRpYyB2b2lkIGRnMV9pbml0X2Nsb2Nr X2dhdGluZyhzdHJ1Y3QKPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+IMKg wqDCoMKgwqDCoMKgwqBnZW4xMmxwX2luaXRfY2xvY2tfZ2F0aW5nKGRldl9wcml2KTsKPiA+ID4g wqAKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoC8qIFdhXzE0MDk4MzY2ODY6ZGcxW2EwXSAqLwo+ID4g PiAtwqDCoMKgwqDCoMKgwqBpZiAoSVNfREcxX0dUX1NURVAoZGV2X3ByaXYsIFNURVBfQTAsIFNU RVBfQTApKQo+ID4gPiArwqDCoMKgwqDCoMKgwqBpZiAoSVNfREcxX0dUX1NURVAoZGV2X3ByaXYs IFNURVBfQTAsIFNURVBfQjApKQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGludGVsX3VuY29yZV93cml0ZSgmZGV2X3ByaXYtPnVuY29yZSwKPiA+ID4gR0VOOV9DTEtHQVRF X0RJU18zLCBpbnRlbF91bmNvcmVfcmVhZCgmZGV2X3ByaXYtPnVuY29yZSwKPiA+ID4gR0VOOV9D TEtHQVRFX0RJU18zKSB8Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgRFBUX0dBVElOR19ESVMpOwo+ID4gPiDCoH0KPiA+ID4gQEAgLTc0 NjcsMTIgKzc0NjcsMTIgQEAgc3RhdGljIHZvaWQga2JsX2luaXRfY2xvY2tfZ2F0aW5nKHN0cnVj dAo+ID4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ID4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIEZCQ19MTENfRlVMTFlfT1BFTik7Cj4gPiA+IMKgCj4gPiA+ IMKgwqDCoMKgwqDCoMKgwqAvKiBXYURpc2FibGVTREVVbml0Q2xvY2tHYXRpbmc6a2JsICovCj4g PiA+IC3CoMKgwqDCoMKgwqDCoGlmIChJU19LQkxfR1RfU1RFUChkZXZfcHJpdiwgMCwgU1RFUF9C MCkpCj4gPiA+ICvCoMKgwqDCoMKgwqDCoGlmIChJU19LQkxfR1RfU1RFUChkZXZfcHJpdiwgMCwg U1RFUF9DMCkpCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW50ZWxfdW5j b3JlX3dyaXRlKCZkZXZfcHJpdi0+dW5jb3JlLAo+ID4gPiBHRU44X1VDR0NUTDYsIGludGVsX3Vu Y29yZV9yZWFkKCZkZXZfcHJpdi0+dW5jb3JlLCBHRU44X1VDR0NUTDYpCj4gPiA+IHwKPiA+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBHRU44 X1NERVVOSVRfQ0xPQ0tfR0FURV9ESVNBQkxFKTsKPiA+ID4gwqAKPiA+ID4gwqDCoMKgwqDCoMKg wqDCoC8qIFdhRGlzYWJsZUdhbUNsb2NrR2F0aW5nOmtibCAqLwo+ID4gPiAtwqDCoMKgwqDCoMKg wqBpZiAoSVNfS0JMX0dUX1NURVAoZGV2X3ByaXYsIDAsIFNURVBfQjApKQo+ID4gPiArwqDCoMKg wqDCoMKgwqBpZiAoSVNfS0JMX0dUX1NURVAoZGV2X3ByaXYsIDAsIFNURVBfQzApKQo+ID4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGludGVsX3VuY29yZV93cml0ZSgmZGV2X3By aXYtPnVuY29yZSwKPiA+ID4gR0VONl9VQ0dDVEwxLCBpbnRlbF91bmNvcmVfcmVhZCgmZGV2X3By aXYtPnVuY29yZSwgR0VONl9VQ0dDVEwxKQo+ID4gPiB8Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgR0VONl9HQU1VTklUX0NMT0NLX0dB VEVfRElTQUJMRSk7Cj4gPiA+IMKgCj4gPiAKPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCj4gPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gPiBJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo+IAoK