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=-11.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 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 8FC84C4727C for ; Tue, 22 Sep 2020 00:38:42 +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 31D8223A7A for ; Tue, 22 Sep 2020 00:38:42 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 31D8223A7A 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 0E4A46E09E; Tue, 22 Sep 2020 00:38:41 +0000 (UTC) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3D5CE6E09E for ; Tue, 22 Sep 2020 00:38:39 +0000 (UTC) IronPort-SDR: SbI7kD5ayzh+3ryYSH4SL7xxpMT2hgpQndNMJnw2CmbpKZd49xRx4koFeIU5Kj4rNjuJeC7z1j NJqFE2GNUY0w== X-IronPort-AV: E=McAfee;i="6000,8403,9751"; a="161426168" X-IronPort-AV: E=Sophos;i="5.77,288,1596524400"; d="scan'208";a="161426168" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Sep 2020 17:38:38 -0700 IronPort-SDR: YxkcyJRsikchkv9MsWsnW5WUp7rlMaoaixrX0ZkFCCOnRJ5Wxf3NKjYeiIhh22qi54fI6ZAEX9 x/D7BnpwJaDg== X-IronPort-AV: E=Sophos;i="5.77,288,1596524400"; d="scan'208";a="510946234" Received: from johnharr-mobl1.amr.corp.intel.com (HELO [10.212.118.250]) ([10.212.118.250]) by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Sep 2020 17:38:37 -0700 To: Daniele Ceraolo Spurio , Intel-GFX@Lists.FreeDesktop.Org References: <20200921175428.2914478-1-John.C.Harrison@Intel.com> <20200921175428.2914478-2-John.C.Harrison@Intel.com> <20c3b327-9737-c2f3-6596-5ea06c7f1548@intel.com> From: John Harrison Message-ID: Date: Mon, 21 Sep 2020 17:38:36 -0700 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 In-Reply-To: <20c3b327-9737-c2f3-6596-5ea06c7f1548@intel.com> Content-Language: en-GB Subject: Re: [Intel-gfx] [PATCH 1/4] drm/i915/guc: Update to use firmware v49.0.1 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: Oscar Mateo , Michal Winiarski , Michel Thierry Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gOS8yMS8yMDIwIDE3OjI0LCBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIHdyb3RlOgo+IE9uIDkv MjEvMjAyMCAxMDo1NCBBTSwgSm9obi5DLkhhcnJpc29uQEludGVsLmNvbSB3cm90ZToKPj4gRnJv bTogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVsLmNvbT4KPj4KPj4gVGhlIGxh dGVzdCBHdUMgZmlybXdhcmUgaW5jbHVkZXMgYSBudW1iZXIgb2YgaW50ZXJmYWNlIGNoYW5nZXMg dGhhdAo+PiByZXF1aXJlIGRyaXZlciB1cGRhdGVzIHRvIG1hdGNoLgo+Pgo+PiAqIFN0YXJ0aW5n IGZyb20gR2VuMTEsIHRoZSBJRCB0byBiZSBwcm92aWRlZCB0byBHdUMgbmVlZHMgdG8gY29udGFp bgo+PiDCoMKgIHRoZSBlbmdpbmUgY2xhc3MgaW4gYml0cyBbMC4uMl0gYW5kIHRoZSBpbnN0YW5j ZSBpbiBiaXRzIFszLi42XS4KPj4KPj4gwqDCoCBOT1RFOiB0aGlzIHBhdGNoIGJyZWFrcyBwb2lu dGVyIGRlcmVmZXJlbmNlcyBpbiBzb21lIGV4aXN0aW5nIEd1Qwo+PiDCoMKgIGZ1bmN0aW9ucyB0 aGF0IHVzZSB0aGUgZ3VjX2lkIHRvIGRlcmVmZXJlbmNlIGFycmF5cyBidXQgdGhlc2UgCj4+IGZ1 bmN0aW9ucwo+PiDCoMKgIGFyZSBub3QgdXNlZCBmb3Igbm93IGFzIHdlIGhhdmUgR3VDIHN1Ym1p c3Npb24gZGlzYWJsZWQgYW5kIHdlIHdpbGwKPj4gwqDCoCB1cGRhdGUgdGhlc2UgZnVuY3Rpb25z IGluIGZvbGxvdyB1cCBwYXRjaCB3aGljaCByZXF1aXJlcyBuZXcgSURzLgo+Pgo+PiAqIFRoZSBu ZXcgR3VDIHJlcXVpcmVzIHRoZSBhZGRpdGlvbmFsIGRhdGEgc3RydWN0dXJlIChBRFMpIGFuZCAK Pj4gYXNzb2NpYXRlZAo+PiDCoMKgICdwcml2YXRlX2RhdGEnIHBvaW50ZXIgdG8gYmUgc2V0dXAu IFRoaXMgaXMgYmFzaWNhbGx5IGEgc2NyYXRjaCBhcmVhCj4+IMKgwqAgb2YgbWVtb3J5IHRoYXQg dGhlIEd1QyBvd25zLiBUaGUgc2l6ZSBpcyByZWFkIGZyb20gdGhlIENTUyBoZWFkZXIuCj4+Cj4+ ICogVGhlcmUgaXMgbm93IGEgcGh5c2ljYWwgdG8gbG9naWNhbCBlbmdpbmUgbWFwcGluZyB0YWJs ZSBpbiB0aGUgQURTCj4+IMKgwqAgd2hpY2ggbmVlZHMgdG8gYmUgY29uZmlndXJlZCBpbiBvcmRl ciBmb3IgdGhlIGZpcm13YXJlIHRvIGxvYWQuIEZvcgo+PiDCoMKgIG5vdywgdGhlIHRhYmxlIGlz IGluaXRpYWxpc2VkIHdpdGggYSAxIHRvIDEgbWFwcGluZy4KPj4KPj4gKiBHVUNfQ1RMX0NUWElO Rk8gaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBpbml0aWFsaXphdGlvbiBwYXJhbXMuCj4+Cj4+ ICogcmVnX3N0YXRlX2J1ZmZlciBpcyBtYWludGFpbmVkIGludGVybmFsbHkgYnkgdGhlIEd1QyBh cyBwYXJ0IG9mCj4+IMKgwqAgdGhlIHByaXZhdGUgZGF0YS4KPj4KPj4gKiBUaGUgQURTIGxheW91 dCBoYXMgY2hhbmdlZCBzaWduaWZpY2FudGx5LiBUaGlzIHBhdGNoIHVwZGF0ZXMgdGhlCj4+IMKg wqAgc2hhcmVkIHN0cnVjdHVyZSBhbmQgYWxzbyBhZGRzIGJldHRlciBkb2N1bWVudGF0aW9uIG9m IHRoZSBsYXlvdXQuCj4+Cj4+ICogV2hpbGUgaTkxNSBkb2VzIG5vdCB1c2UgR3VDIGRvb3JiZWxs cywgdGhlIGZpcm13YXJlIG5vdyByZXF1aXJlcwo+PiDCoMKgIHRoYXQgc29tZSBpbml0aWFsaXNh dGlvbiBpcyBkb25lLgo+Pgo+PiAqIFRoZSBudW1iZXIgb2YgZW5naW5lIGNsYXNzZXMgYW5kIGlu c3RhbmNlcyBzdXBwb3J0ZWQgaW4gdGhlIEFEUyBoYXMKPj4gwqDCoCBiZWVuIGluY3JlYXNlZC4K Pj4KPj4gU2lnbmVkLW9mZi1ieTogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVs LmNvbT4KPj4gU2lnbmVkLW9mZi1ieTogTWF0dGhldyBCcm9zdCA8bWF0dGhldy5icm9zdEBpbnRl bC5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gPGRhbmllbGUu Y2VyYW9sb3NwdXJpb0BpbnRlbC5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IE9zY2FyIE1hdGVvIDxv c2Nhci5tYXRlb0BpbnRlbC5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IE1pY2hlbCBUaGllcnJ5IDxt aWNoZWwudGhpZXJyeUBpbnRlbC5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IFJvZHJpZ28gVml2aSA8 cm9kcmlnby52aXZpQGludGVsLmNvbT4KPj4gU2lnbmVkLW9mZi1ieTogTWljaGFsIFdhamRlY3pr byA8bWljaGFsLndhamRlY3prb0BpbnRlbC5jb20+Cj4+IENjOiBNaWNoYWwgV2luaWFyc2tpIDxt aWNoYWwud2luaWFyc2tpQGludGVsLmNvbT4KPj4gQ2M6IFRvbWFzeiBMaXMgPHRvbWFzei5saXNA aW50ZWwuY29tPgo+PiBDYzogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXgu aW50ZWwuY29tPgo+PiAtLS0KPj4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5n aW5lX2NzLmPCoMKgwqAgfMKgwqAgMyArLQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91 Yy9pbnRlbF9ndWMuY8KgwqDCoMKgwqDCoCB8wqAgMTggLS0tCj4+IMKgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L3VjL2ludGVsX2d1Y19hZHMuY8KgwqAgfCAxMzEgKysrKysrKysrKysrKysrLS0t LQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfZndpZi5owqAgfMKg IDgyICsrKysrKystLS0tLQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9n dWNfcmVnLmjCoMKgIHzCoMKgIDUgKwo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9p bnRlbF91Y19mdy5jwqDCoMKgwqAgfMKgIDI3ICsrLS0KPj4gwqAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvdWMvaW50ZWxfdWNfZncuaMKgwqDCoMKgIHzCoMKgIDIgKwo+PiDCoCBkcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Y19md19hYmkuaCB8wqDCoCA2ICstCj4+IMKgIDggZmls ZXMgY2hhbmdlZCwgMTgyIGluc2VydGlvbnMoKyksIDkyIGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMgCj4+IGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKPj4gaW5kZXggMTk4NTc3 MjE1MmJmLi4zZmI1MmZhYzBkNWQgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX2VuZ2luZV9jcy5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2VuZ2luZV9jcy5jCj4+IEBAIC0zMDUsOCArMzA1LDkgQEAgc3RhdGljIGludCBpbnRlbF9l bmdpbmVfc2V0dXAoc3RydWN0IGludGVsX2d0IAo+PiAqZ3QsIGVudW0gaW50ZWxfZW5naW5lX2lk IGlkKQo+PiDCoMKgwqDCoMKgIGVuZ2luZS0+aTkxNSA9IGk5MTU7Cj4+IMKgwqDCoMKgwqAgZW5n aW5lLT5ndCA9IGd0Owo+PiDCoMKgwqDCoMKgIGVuZ2luZS0+dW5jb3JlID0gZ3QtPnVuY29yZTsK Pj4gLcKgwqDCoCBlbmdpbmUtPmh3X2lkID0gZW5naW5lLT5ndWNfaWQgPSBpbmZvLT5od19pZDsK Pj4gwqDCoMKgwqDCoCBlbmdpbmUtPm1taW9fYmFzZSA9IF9fZW5naW5lX21taW9fYmFzZShpOTE1 LCBpbmZvLT5tbWlvX2Jhc2VzKTsKPj4gK8KgwqDCoCBlbmdpbmUtPmh3X2lkID0gaW5mby0+aHdf aWQ7Cj4+ICvCoMKgwqAgZW5naW5lLT5ndWNfaWQgPSBNQUtFX0dVQ19JRChpbmZvLT5jbGFzcywg aW5mby0+aW5zdGFuY2UpOwo+PiDCoCDCoMKgwqDCoMKgIGVuZ2luZS0+Y2xhc3MgPSBpbmZvLT5j bGFzczsKPj4gwqDCoMKgwqDCoCBlbmdpbmUtPmluc3RhbmNlID0gaW5mby0+aW5zdGFuY2U7Cj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuYyAKPj4g Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuYwo+PiBpbmRleCA5NDJjN2Mx ODdhZGIuLjY5MDlkYTFlMWE3MyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvdWMvaW50ZWxfZ3VjLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50 ZWxfZ3VjLmMKPj4gQEAgLTIxMywyMyArMjEzLDYgQEAgc3RhdGljIHUzMiBndWNfY3RsX2ZlYXR1 cmVfZmxhZ3Moc3RydWN0IAo+PiBpbnRlbF9ndWMgKmd1YykKPj4gwqDCoMKgwqDCoCByZXR1cm4g ZmxhZ3M7Cj4+IMKgIH0KPj4gwqAgLXN0YXRpYyB1MzIgZ3VjX2N0bF9jdHhpbmZvX2ZsYWdzKHN0 cnVjdCBpbnRlbF9ndWMgKmd1YykKPj4gLXsKPj4gLcKgwqDCoCB1MzIgZmxhZ3MgPSAwOwo+PiAt Cj4+IC3CoMKgwqAgaWYgKGludGVsX2d1Y19zdWJtaXNzaW9uX2lzX3VzZWQoZ3VjKSkgewo+PiAt wqDCoMKgwqDCoMKgwqAgdTMyIGN0eG51bSwgYmFzZTsKPj4gLQo+PiAtwqDCoMKgwqDCoMKgwqAg YmFzZSA9IGludGVsX2d1Y19nZ3R0X29mZnNldChndWMsIGd1Yy0+c3RhZ2VfZGVzY19wb29sKTsK Pj4gLcKgwqDCoMKgwqDCoMKgIGN0eG51bSA9IEdVQ19NQVhfU1RBR0VfREVTQ1JJUFRPUlMgLyAx NjsKPj4gLQo+PiAtwqDCoMKgwqDCoMKgwqAgYmFzZSA+Pj0gUEFHRV9TSElGVDsKPj4gLcKgwqDC oMKgwqDCoMKgIGZsYWdzIHw9IChiYXNlIDw8IEdVQ19DVExfQkFTRV9BRERSX1NISUZUKSB8Cj4+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChjdHhudW0gPDwgR1VDX0NUTF9DVFhOVU1fSU4xNl9T SElGVCk7Cj4+IC3CoMKgwqAgfQo+PiAtwqDCoMKgIHJldHVybiBmbGFnczsKPj4gLX0KPj4gLQo+ PiDCoCBzdGF0aWMgdTMyIGd1Y19jdGxfbG9nX3BhcmFtc19mbGFncyhzdHJ1Y3QgaW50ZWxfZ3Vj ICpndWMpCj4+IMKgIHsKPj4gwqDCoMKgwqDCoCB1MzIgb2Zmc2V0ID0gaW50ZWxfZ3VjX2dndHRf b2Zmc2V0KGd1YywgZ3VjLT5sb2cudm1hKSA+PiAKPj4gUEFHRV9TSElGVDsKPj4gQEAgLTI5MSw3 ICsyNzQsNiBAQCBzdGF0aWMgdm9pZCBndWNfaW5pdF9wYXJhbXMoc3RydWN0IGludGVsX2d1YyAq Z3VjKQo+PiDCoCDCoMKgwqDCoMKgIEJVSUxEX0JVR19PTihzaXplb2YoZ3VjLT5wYXJhbXMpICE9 IEdVQ19DVExfTUFYX0RXT1JEUyAqIAo+PiBzaXplb2YodTMyKSk7Cj4+IMKgIC3CoMKgwqAgcGFy YW1zW0dVQ19DVExfQ1RYSU5GT10gPSBndWNfY3RsX2N0eGluZm9fZmxhZ3MoZ3VjKTsKPj4gwqDC oMKgwqDCoCBwYXJhbXNbR1VDX0NUTF9MT0dfUEFSQU1TXSA9IGd1Y19jdGxfbG9nX3BhcmFtc19m bGFncyhndWMpOwo+PiDCoMKgwqDCoMKgIHBhcmFtc1tHVUNfQ1RMX0ZFQVRVUkVdID0gZ3VjX2N0 bF9mZWF0dXJlX2ZsYWdzKGd1Yyk7Cj4+IMKgwqDCoMKgwqAgcGFyYW1zW0dVQ19DVExfREVCVUdd ID0gZ3VjX2N0bF9kZWJ1Z19mbGFncyhndWMpOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Fkcy5jIAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3VjL2ludGVsX2d1Y19hZHMuYwo+PiBpbmRleCBkNDQwNjEwMzNmMjMuLjc5NTBkMjhiZWI4 YyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Fk cy5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19hZHMuYwo+ PiBAQCAtMTAsMTEgKzEwLDUyIEBACj4+IMKgIMKgIC8qCj4+IMKgwqAgKiBUaGUgQWRkaXRpb25h bCBEYXRhIFN0cnVjdCAoQURTKSBoYXMgcG9pbnRlcnMgZm9yIGRpZmZlcmVudCAKPj4gYnVmZmVy cyB1c2VkIGJ5Cj4+IC0gKiB0aGUgR3VDLiBPbmUgc2luZ2xlIGdlbSBvYmplY3QgY29udGFpbnMg dGhlIEFEUyBzdHJ1Y3QgaXRzZWxmIAo+PiAoZ3VjX2FkcyksIHRoZQo+PiAtICogc2NoZWR1bGlu ZyBwb2xpY2llcyAoZ3VjX3BvbGljaWVzKSwgYSBzdHJ1Y3R1cmUgZGVzY3JpYmluZyBhIAo+PiBj b2xsZWN0aW9uIG9mCj4+IC0gKiByZWdpc3RlciBzZXRzIChndWNfbW1pb19yZWdfc3RhdGUpIGFu ZCBzb21lIGV4dHJhIHBhZ2VzIGZvciB0aGUgCj4+IEd1QyB0byBzYXZlCj4+IC0gKiBpdHMgaW50 ZXJuYWwgc3RhdGUgZm9yIHNsZWVwLgo+PiArICogdGhlIEd1Qy4gT25lIHNpbmdsZSBnZW0gb2Jq ZWN0IGNvbnRhaW5zIHRoZSBBRFMgc3RydWN0IGl0c2VsZiAKPj4gKGd1Y19hZHMpIGFuZAo+PiAr ICogYWxsIHRoZSBleHRyYSBidWZmZXJzIGluZGlyZWN0bHkgbGlua2VkIHZpYSB0aGUgQURTIHN0 cnVjdCdzIAo+PiBlbnRyaWVzLgo+PiArICoKPj4gKyAqIExheW91dCBvZiB0aGUgQURTIGJsb2Ig YWxsb2NhdGVkIGZvciB0aGUgR3VDOgo+PiArICoKPj4gKyAqwqDCoMKgwqDCoCArLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyA8PT0gYmFzZQo+PiArICrCoMKgwqDCoMKg IHwgZ3VjX2Fkc8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB8Cj4+ICsgKsKgwqDCoMKgwqAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqwqDCoMKgwqDCoCB8IGd1Y19wb2xpY2llc8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4gKyAqwqDCoMKg wqDCoCArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICrCoMKg wqDCoMKgIHwgZ3VjX2d0X3N5c3RlbV9pbmZvwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgfAo+PiArICrCoMKgwqDCoMKgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rCj4+ICsgKsKgwqDCoMKgwqAgfCBndWNfY2xpZW50c19pbmZvwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4gKyAqwqDCoMKgwqDCoCArLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICrCoMKgwqDCoMKgIHwg Z3VjX2N0X3Bvb2xfZW50cnlbc2l6ZV3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4g KyAqwqDCoMKgwqDCoCArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+ PiArICrCoMKgwqDCoMKgIHwgcGFkZGluZ8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+ICsgKsKgwqDCoMKgwqAgKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgPD09IDRLIGFsaWduZWQKPj4gKyAqwqDC oMKgwqDCoCB8IHByaXZhdGUgZGF0YcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHwKPj4gKyAqwqDCoMKgwqDCoCArLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICrCoMKgwqDCoMKgIHwgcGFkZGluZ8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+ICsg KsKgwqDCoMKgwqAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgPD09 IDRLIGFsaWduZWQKPj4gwqDCoCAqLwo+PiArc3RydWN0IF9fZ3VjX2Fkc19ibG9iIHsKPj4gK8Kg wqDCoCBzdHJ1Y3QgZ3VjX2FkcyBhZHM7Cj4+ICvCoMKgwqAgc3RydWN0IGd1Y19wb2xpY2llcyBw b2xpY2llczsKPj4gK8KgwqDCoCBzdHJ1Y3QgZ3VjX2d0X3N5c3RlbV9pbmZvIHN5c3RlbV9pbmZv Owo+PiArwqDCoMKgIHN0cnVjdCBndWNfY2xpZW50c19pbmZvIGNsaWVudHNfaW5mbzsKPj4gK8Kg wqDCoCBzdHJ1Y3QgZ3VjX2N0X3Bvb2xfZW50cnkgY3RfcG9vbFtHVUNfQ1RfUE9PTF9TSVpFXTsK Pj4gK30gX19wYWNrZWQ7Cj4+ICsKPj4gK3N0YXRpYyB1MzIgZ3VjX2Fkc19wcml2YXRlX2RhdGFf c2l6ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4+ICt7Cj4+ICvCoMKgwqAgcmV0dXJuIFBBR0Vf QUxJR04oZ3VjLT5mdy5wcml2YXRlX2RhdGFfc2l6ZSk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB1 MzIgZ3VjX2Fkc19wcml2YXRlX2RhdGFfb2Zmc2V0KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPj4g K3sKPj4gK8KgwqDCoCByZXR1cm4gUEFHRV9BTElHTihzaXplb2Yoc3RydWN0IF9fZ3VjX2Fkc19i bG9iKSk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB1MzIgZ3VjX2Fkc19ibG9iX3NpemUoc3RydWN0 IGludGVsX2d1YyAqZ3VjKQo+PiArewo+PiArwqDCoMKgIHJldHVybiBndWNfYWRzX3ByaXZhdGVf ZGF0YV9vZmZzZXQoZ3VjKSArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBndWNfYWRzX3ByaXZh dGVfZGF0YV9zaXplKGd1Yyk7Cj4+ICt9Cj4+IMKgIMKgIHN0YXRpYyB2b2lkIGd1Y19wb2xpY3lf aW5pdChzdHJ1Y3QgZ3VjX3BvbGljeSAqcG9saWN5KQo+PiDCoCB7Cj4+IEBAIC00OCwyNiArODks MzcgQEAgc3RhdGljIHZvaWQgZ3VjX2N0X3Bvb2xfZW50cmllc19pbml0KHN0cnVjdCAKPj4gZ3Vj X2N0X3Bvb2xfZW50cnkgKnBvb2wsIHUzMiBudW0pCj4+IMKgwqDCoMKgwqAgbWVtc2V0KHBvb2ws IDAsIG51bSAqIHNpemVvZigqcG9vbCkpOwo+PiDCoCB9Cj4+IMKgICtzdGF0aWMgdm9pZCBndWNf bWFwcGluZ190YWJsZV9pbml0KHN0cnVjdCBpbnRlbF9ndCAqZ3QsCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGd1Y19ndF9zeXN0ZW1faW5mbyAqc3lzdGVt X2luZm8pCj4+ICt7Cj4+ICvCoMKgwqAgdW5zaWduZWQgaW50IGksIGo7Cj4+ICvCoMKgwqAgc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+PiArwqDCoMKgIGVudW0gaW50ZWxfZW5naW5l X2lkIGlkOwo+PiArCj4+ICvCoMKgwqAgLyogVGFibGUgbXVzdCBiZSBzZXQgdG8gaW52YWxpZCB2 YWx1ZXMgZm9yIGVudHJpZXMgbm90IHVzZWQgKi8KPj4gK8KgwqDCoCBmb3IgKGkgPSAwOyBpIDwg R1VDX01BWF9FTkdJTkVfQ0xBU1NFUzsgKytpKQo+PiArwqDCoMKgwqDCoMKgwqAgZm9yIChqID0g MDsgaiA8IEdVQ19NQVhfSU5TVEFOQ0VTX1BFUl9DTEFTUzsgKytqKQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBzeXN0ZW1faW5mby0+bWFwcGluZ190YWJsZVtpXVtqXSA9Cj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgR1VDX01BWF9JTlNUQU5DRVNfUEVSX0NMQVNTOwo+PiAr Cj4+ICvCoMKgwqAgZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZ3QsIGlkKSB7Cj4+ICvCoMKgwqDC oMKgwqDCoCB1OCBndWNfY2xhc3MgPSBlbmdpbmUtPmNsYXNzOwo+PiArCj4+ICsgc3lzdGVtX2lu Zm8tPm1hcHBpbmdfdGFibGVbZ3VjX2NsYXNzXVtlbmdpbmUtPmluc3RhbmNlXSA9Cj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGVuZ2luZS0+aW5zdGFuY2U7Cj4+ICvCoMKgwqAgfQo+PiArfQo+ PiArCj4+IMKgIC8qCj4+IMKgwqAgKiBUaGUgZmlyc3QgODAgZHdvcmRzIG9mIHRoZSByZWdpc3Rl ciBzdGF0ZSBjb250ZXh0LCBjb250YWluaW5nIHRoZQo+PiDCoMKgICogZXhlY2xpc3RzIGFuZCBw cGd0dCByZWdpc3RlcnMuCj4+IMKgwqAgKi8KPj4gwqAgI2RlZmluZSBMUl9IV19DT05URVhUX1NJ WkXCoMKgwqAgKDgwICogc2l6ZW9mKHUzMikpCj4+IMKgIC0vKiBUaGUgYWRzIG9iaiBpbmNsdWRl cyB0aGUgc3RydWN0IGl0c2VsZiBhbmQgYnVmZmVycyBwYXNzZWQgdG8gCj4+IEd1QyAqLwo+PiAt c3RydWN0IF9fZ3VjX2Fkc19ibG9iIHsKPj4gLcKgwqDCoCBzdHJ1Y3QgZ3VjX2FkcyBhZHM7Cj4+ IC3CoMKgwqAgc3RydWN0IGd1Y19wb2xpY2llcyBwb2xpY2llczsKPj4gLcKgwqDCoCBzdHJ1Y3Qg Z3VjX21taW9fcmVnX3N0YXRlIHJlZ19zdGF0ZTsKPj4gLcKgwqDCoCBzdHJ1Y3QgZ3VjX2d0X3N5 c3RlbV9pbmZvIHN5c3RlbV9pbmZvOwo+PiAtwqDCoMKgIHN0cnVjdCBndWNfY2xpZW50c19pbmZv IGNsaWVudHNfaW5mbzsKPj4gLcKgwqDCoCBzdHJ1Y3QgZ3VjX2N0X3Bvb2xfZW50cnkgY3RfcG9v bFtHVUNfQ1RfUE9PTF9TSVpFXTsKPj4gLcKgwqDCoCB1OCByZWdfc3RhdGVfYnVmZmVyW0dVQ19T M19TQVZFX1NQQUNFX1BBR0VTICogUEFHRV9TSVpFXTsKPj4gLX0gX19wYWNrZWQ7Cj4+IC0KPj4g wqAgc3RhdGljIHZvaWQgX19ndWNfYWRzX2luaXQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+PiDC oCB7Cj4+IMKgwqDCoMKgwqAgc3RydWN0IGludGVsX2d0ICpndCA9IGd1Y190b19ndChndWMpOwo+ PiArwqDCoMKgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZ3QtPmk5MTU7Cj4+IMKg wqDCoMKgwqAgc3RydWN0IF9fZ3VjX2Fkc19ibG9iICpibG9iID0gZ3VjLT5hZHNfYmxvYjsKPj4g wqDCoMKgwqDCoCBjb25zdCB1MzIgc2tpcHBlZF9zaXplID0gTFJDX1BQSFdTUF9TWiAqIFBBR0Vf U0laRSArIAo+PiBMUl9IV19DT05URVhUX1NJWkU7Cj4+IMKgwqDCoMKgwqAgdTMyIGJhc2U7Cj4+ IEBAIC05OSwxMyArMTUxLDI1IEBAIHN0YXRpYyB2b2lkIF9fZ3VjX2Fkc19pbml0KHN0cnVjdCBp bnRlbF9ndWMgKmd1YykKPj4gwqDCoMKgwqDCoCB9Cj4+IMKgIMKgwqDCoMKgwqAgLyogU3lzdGVt IGluZm8gKi8KPj4gLcKgwqDCoCBibG9iLT5zeXN0ZW1faW5mby5zbGljZV9lbmFibGVkID0gCj4+ IGh3ZWlnaHQ4KGd0LT5pbmZvLnNzZXUuc2xpY2VfbWFzayk7Cj4+IC3CoMKgwqAgYmxvYi0+c3lz dGVtX2luZm8ucmNzX2VuYWJsZWQgPSAxOwo+PiAtwqDCoMKgIGJsb2ItPnN5c3RlbV9pbmZvLmJj c19lbmFibGVkID0gMTsKPj4gK8KgwqDCoCBibG9iLT5zeXN0ZW1faW5mby5lbmdpbmVfZW5hYmxl ZF9tYXNrc1tSRU5ERVJfQ0xBU1NdID0gMTsKPj4gKyBibG9iLT5zeXN0ZW1faW5mby5lbmdpbmVf ZW5hYmxlZF9tYXNrc1tDT1BZX0VOR0lORV9DTEFTU10gPSAxOwo+PiArIGJsb2ItPnN5c3RlbV9p bmZvLmVuZ2luZV9lbmFibGVkX21hc2tzW1ZJREVPX0RFQ09ERV9DTEFTU10gPSAKPj4gVkRCT1hf TUFTSyhndCk7Cj4+ICsgYmxvYi0+c3lzdGVtX2luZm8uZW5naW5lX2VuYWJsZWRfbWFza3NbVklE RU9fRU5IQU5DRU1FTlRfQ0xBU1NdID0gCj4+IFZFQk9YX01BU0soZ3QpOwo+PiArCj4+ICsgCj4+ IGJsb2ItPnN5c3RlbV9pbmZvLmdlbmVyaWNfZ3Rfc3lzaW5mb1tHVUNfR0VORVJJQ19HVF9TWVNJ TkZPX1NMSUNFX0VOQUJMRURdIAo+PiA9Cj4+ICvCoMKgwqDCoMKgwqDCoCBod2VpZ2h0OChndC0+ aW5mby5zc2V1LnNsaWNlX21hc2spOwo+PiArIAo+PiBibG9iLT5zeXN0ZW1faW5mby5nZW5lcmlj X2d0X3N5c2luZm9bR1VDX0dFTkVSSUNfR1RfU1lTSU5GT19WREJPWF9TRkNfU1VQUE9SVF9NQVNL XSAKPj4gPQo+PiArwqDCoMKgwqDCoMKgwqAgZ3QtPmluZm8udmRib3hfc2ZjX2FjY2VzczsKPj4g Kwo+PiArwqDCoMKgIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gMTIgJiYgIUlTX0RHRlgoaTkxNSkp IHsKPj4gK8KgwqDCoMKgwqDCoMKgIHUzMiBkaXN0ZGJyZWcgPSBpbnRlbF91bmNvcmVfcmVhZChn dC0+dW5jb3JlLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgR0VOMTJfRElTVF9EQlNfUE9QVUxBVEVEKTsKPj4gKyAKPj4gYmxvYi0+c3lzdGVt X2luZm8uZ2VuZXJpY19ndF9zeXNpbmZvW0dVQ19HRU5FUklDX0dUX1NZU0lORk9fRE9PUkJFTExf Q09VTlRfUEVSX1NRSURJXSAKPj4gPQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoKGRpc3Rk YnJlZyA+PiBHRU4xMl9ET09SQkVMTFNfUEVSX1NRSURJX1NISUZUKSAmCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgR0VOMTJfRE9PUkJFTExTX1BFUl9TUUlESSkgKyAxOwo+PiArwqDCoMKg IH0KPj4gwqAgLcKgwqDCoCBibG9iLT5zeXN0ZW1faW5mby52ZGJveF9lbmFibGVfbWFzayA9IFZE Qk9YX01BU0soZ3QpOwo+PiAtwqDCoMKgIGJsb2ItPnN5c3RlbV9pbmZvLnZlYm94X2VuYWJsZV9t YXNrID0gVkVCT1hfTUFTSyhndCk7Cj4+IC3CoMKgwqAgYmxvYi0+c3lzdGVtX2luZm8udmRib3hf c2ZjX3N1cHBvcnRfbWFzayA9IAo+PiBndC0+aW5mby52ZGJveF9zZmNfYWNjZXNzOwo+PiArwqDC oMKgIGd1Y19tYXBwaW5nX3RhYmxlX2luaXQoZ3VjX3RvX2d0KGd1YyksICZibG9iLT5zeXN0ZW1f aW5mbyk7Cj4+IMKgIMKgwqDCoMKgwqAgYmFzZSA9IGludGVsX2d1Y19nZ3R0X29mZnNldChndWMs IGd1Yy0+YWRzX3ZtYSk7Cj4+IMKgIEBAIC0xMTgsMTEgKzE4MiwxMiBAQCBzdGF0aWMgdm9pZCBf X2d1Y19hZHNfaW5pdChzdHJ1Y3QgaW50ZWxfZ3VjIAo+PiAqZ3VjKQo+PiDCoCDCoMKgwqDCoMKg IC8qIEFEUyAqLwo+PiDCoMKgwqDCoMKgIGJsb2ItPmFkcy5zY2hlZHVsZXJfcG9saWNpZXMgPSBi YXNlICsgcHRyX29mZnNldChibG9iLCBwb2xpY2llcyk7Cj4+IC3CoMKgwqAgYmxvYi0+YWRzLnJl Z19zdGF0ZV9idWZmZXIgPSBiYXNlICsgcHRyX29mZnNldChibG9iLCAKPj4gcmVnX3N0YXRlX2J1 ZmZlcik7Cj4+IC3CoMKgwqAgYmxvYi0+YWRzLnJlZ19zdGF0ZV9hZGRyID0gYmFzZSArIHB0cl9v ZmZzZXQoYmxvYiwgcmVnX3N0YXRlKTsKPj4gwqDCoMKgwqDCoCBibG9iLT5hZHMuZ3Rfc3lzdGVt X2luZm8gPSBiYXNlICsgcHRyX29mZnNldChibG9iLCBzeXN0ZW1faW5mbyk7Cj4+IMKgwqDCoMKg wqAgYmxvYi0+YWRzLmNsaWVudHNfaW5mbyA9IGJhc2UgKyBwdHJfb2Zmc2V0KGJsb2IsIGNsaWVu dHNfaW5mbyk7Cj4+IMKgICvCoMKgwqAgLyogUHJpdmF0ZSBEYXRhICovCj4+ICvCoMKgwqAgYmxv Yi0+YWRzLnByaXZhdGVfZGF0YSA9IGJhc2UgKyBndWNfYWRzX3ByaXZhdGVfZGF0YV9vZmZzZXQo Z3VjKTsKPj4gKwo+PiDCoMKgwqDCoMKgIGk5MTVfZ2VtX29iamVjdF9mbHVzaF9tYXAoZ3VjLT5h ZHNfdm1hLT5vYmopOwo+PiDCoCB9Cj4+IMKgIEBAIC0xMzUsMTQgKzIwMCwxNSBAQCBzdGF0aWMg dm9pZCBfX2d1Y19hZHNfaW5pdChzdHJ1Y3QgaW50ZWxfZ3VjIAo+PiAqZ3VjKQo+PiDCoMKgICov Cj4+IMKgIGludCBpbnRlbF9ndWNfYWRzX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4+ IMKgIHsKPj4gLcKgwqDCoCBjb25zdCB1MzIgc2l6ZSA9IFBBR0VfQUxJR04oc2l6ZW9mKHN0cnVj dCBfX2d1Y19hZHNfYmxvYikpOwo+PiArwqDCoMKgIHUzMiBzaXplOwo+PiDCoMKgwqDCoMKgIGlu dCByZXQ7Cj4+IMKgIMKgwqDCoMKgwqAgR0VNX0JVR19PTihndWMtPmFkc192bWEpOwo+PiDCoCAr wqDCoMKgIHNpemUgPSBndWNfYWRzX2Jsb2Jfc2l6ZShndWMpOwo+PiArCj4+IMKgwqDCoMKgwqAg cmV0ID0gaW50ZWxfZ3VjX2FsbG9jYXRlX2FuZF9tYXBfdm1hKGd1Yywgc2l6ZSwgJmd1Yy0+YWRz X3ZtYSwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAodm9pZCAqKikmZ3VjLT5hZHNfYmxvYik7Cj4+IC0KPj4gwqDCoMKgwqDCoCBpZiAocmV0 KQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4gwqAgQEAgLTE1Niw2ICsyMjIs MTggQEAgdm9pZCBpbnRlbF9ndWNfYWRzX2Rlc3Ryb3koc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ PiDCoMKgwqDCoMKgIGk5MTVfdm1hX3VucGluX2FuZF9yZWxlYXNlKCZndWMtPmFkc192bWEsIEk5 MTVfVk1BX1JFTEVBU0VfTUFQKTsKPj4gwqAgfQo+PiDCoCArc3RhdGljIHZvaWQgZ3VjX2Fkc19w cml2YXRlX2RhdGFfcmVzZXQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+PiArewo+PiArwqDCoMKg IHUzMiBzaXplOwo+PiArCj4+ICvCoMKgwqAgc2l6ZSA9IGd1Y19hZHNfcHJpdmF0ZV9kYXRhX3Np emUoZ3VjKTsKPj4gK8KgwqDCoCBpZiAoIXNpemUpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm47 Cj4+ICsKPj4gK8KgwqDCoCBtZW1zZXQoKHZvaWQgKilndWMtPmFkc19ibG9iICsgZ3VjX2Fkc19w cml2YXRlX2RhdGFfb2Zmc2V0KGd1YyksIDAsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBzaXpl KTsKPj4gK30KPj4gKwo+PiDCoCAvKioKPj4gwqDCoCAqIGludGVsX2d1Y19hZHNfcmVzZXQoKSAt IHByZXBhcmVzIEd1QyBBZGRpdGlvbmFsIERhdGEgU3RydWN0IGZvciAKPj4gcmV1c2UKPj4gwqDC oCAqIEBndWM6IGludGVsX2d1YyBzdHJ1Y3QKPj4gQEAgLTE2OCw1ICsyNDYsOCBAQCB2b2lkIGlu dGVsX2d1Y19hZHNfcmVzZXQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+PiDCoCB7Cj4+IMKgwqDC oMKgwqAgaWYgKCFndWMtPmFkc192bWEpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm47Cj4+ ICsKPj4gwqDCoMKgwqDCoCBfX2d1Y19hZHNfaW5pdChndWMpOwo+PiArCj4+ICvCoMKgwqAgZ3Vj X2Fkc19wcml2YXRlX2RhdGFfcmVzZXQoZ3VjKTsKPj4gwqAgfQo+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Z3aWYuaCAKPj4gYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfZndpZi5oCj4+IGluZGV4IGE2YjczM2MxNDZjOS4u MzkxMDUzMTE4ODY5IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9p bnRlbF9ndWNfZndpZi5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVs X2d1Y19md2lmLmgKPj4gQEAgLTI2LDggKzI2LDggQEAKPj4gwqAgI2RlZmluZSBHVUNfVklERU9f RU5HSU5FMsKgwqDCoMKgwqDCoMKgIDQKPj4gwqAgI2RlZmluZSBHVUNfTUFYX0VOR0lORVNfTlVN wqDCoMKgwqDCoMKgwqAgKEdVQ19WSURFT19FTkdJTkUyICsgMSkKPj4gwqAgLSNkZWZpbmUgR1VD X01BWF9FTkdJTkVfQ0xBU1NFU8KgwqDCoMKgwqDCoMKgIDUKPj4gLSNkZWZpbmUgR1VDX01BWF9J TlNUQU5DRVNfUEVSX0NMQVNTwqDCoMKgIDE2Cj4+ICsjZGVmaW5lIEdVQ19NQVhfRU5HSU5FX0NM QVNTRVPCoMKgwqDCoMKgwqDCoCAxNgo+PiArI2RlZmluZSBHVUNfTUFYX0lOU1RBTkNFU19QRVJf Q0xBU1PCoMKgwqAgMzIKPj4gwqAgwqAgI2RlZmluZSBHVUNfRE9PUkJFTExfSU5WQUxJRMKgwqDC oMKgwqDCoMKgIDI1Ngo+PiDCoCBAQCAtNjIsMTIgKzYyLDcgQEAKPj4gwqAgI2RlZmluZSBHVUNf U1RBR0VfREVTQ19BVFRSX1BDSMKgwqDCoMKgwqDCoMKgIEJJVCg2KQo+PiDCoCAjZGVmaW5lIEdV Q19TVEFHRV9ERVNDX0FUVFJfVEVSTUlOQVRFRMKgwqDCoCBCSVQoNykKPj4gwqAgLS8qIE5ldyBH dUMgY29udHJvbCBkYXRhICovCj4+IC0jZGVmaW5lIEdVQ19DVExfQ1RYSU5GT8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgMAo+PiAtI2RlZmluZcKgwqAgR1VDX0NUTF9DVFhOVU1fSU4xNl9TSElGVMKg wqDCoCAwCj4+IC0jZGVmaW5lwqDCoCBHVUNfQ1RMX0JBU0VfQUREUl9TSElGVMKgwqDCoCAxMgo+ PiAtCj4+IC0jZGVmaW5lIEdVQ19DVExfTE9HX1BBUkFNU8KgwqDCoMKgwqDCoMKgIDEKPj4gKyNk ZWZpbmUgR1VDX0NUTF9MT0dfUEFSQU1TwqDCoMKgwqDCoMKgwqAgMAo+PiDCoCAjZGVmaW5lwqDC oCBHVUNfTE9HX1ZBTElEwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoMSA8PCAwKQo+PiDCoCAjZGVm aW5lwqDCoCBHVUNfTE9HX05PVElGWV9PTl9IQUxGX0ZVTEzCoMKgwqAgKDEgPDwgMSkKPj4gwqAg I2RlZmluZcKgwqAgR1VDX0xPR19BTExPQ19JTl9NRUdBQllURcKgwqDCoCAoMSA8PCAzKQo+PiBA QCAtNzksMTEgKzc0LDExIEBACj4+IMKgICNkZWZpbmXCoMKgIEdVQ19MT0dfSVNSX01BU0vCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICgweDcgPDwgR1VDX0xPR19JU1JfU0hJRlQpCj4+IMKgICNkZWZp bmXCoMKgIEdVQ19MT0dfQlVGX0FERFJfU0hJRlTCoMKgwqAgMTIKPj4gwqAgLSNkZWZpbmUgR1VD X0NUTF9XQcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMgo+PiAtI2RlZmluZSBHVUNfQ1RMX0ZFQVRV UkXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDMKPj4gKyNkZWZpbmUgR1VDX0NUTF9XQcKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgMQo+PiArI2RlZmluZSBHVUNfQ1RMX0ZFQVRVUkXCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIDIKPj4gwqAgI2RlZmluZcKgwqAgR1VDX0NUTF9ESVNBQkxFX1NDSEVEVUxFUsKg wqDCoCAoMSA8PCAxNCkKPj4gwqAgLSNkZWZpbmUgR1VDX0NUTF9ERUJVR8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgNAo+PiArI2RlZmluZSBHVUNfQ1RMX0RFQlVHwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAzCj4+IMKgICNkZWZpbmXCoMKgIEdVQ19MT0dfVkVSQk9TSVRZX1NISUZUwqDCoMKgIDAKPj4g wqAgI2RlZmluZcKgwqAgR1VDX0xPR19WRVJCT1NJVFlfTE9XwqDCoMKgwqDCoMKgwqAgKDAgPDwg R1VDX0xPR19WRVJCT1NJVFlfU0hJRlQpCj4+IMKgICNkZWZpbmXCoMKgIEdVQ19MT0dfVkVSQk9T SVRZX01FRMKgwqDCoMKgwqDCoMKgICgxIDw8IEdVQ19MT0dfVkVSQk9TSVRZX1NISUZUKQo+PiBA QCAtOTcsMTIgKzkyLDM3IEBACj4+IMKgICNkZWZpbmXCoMKgIEdVQ19MT0dfRElTQUJMRUTCoMKg wqDCoMKgwqDCoCAoMSA8PCA2KQo+PiDCoCAjZGVmaW5lwqDCoCBHVUNfUFJPRklMRV9FTkFCTEVE wqDCoMKgwqDCoMKgwqAgKDEgPDwgNykKPj4gwqAgLSNkZWZpbmUgR1VDX0NUTF9BRFPCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIDUKPj4gKyNkZWZpbmUgR1VDX0NUTF9BRFPCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIDQKPj4gwqAgI2RlZmluZcKgwqAgR1VDX0FEU19BRERSX1NISUZUwqDCoMKgwqDCoMKg wqAgMQo+PiDCoCAjZGVmaW5lwqDCoCBHVUNfQURTX0FERFJfTUFTS8KgwqDCoMKgwqDCoMKgICgw eEZGRkZGIDw8IEdVQ19BRFNfQUREUl9TSElGVCkKPj4gwqAgwqAgI2RlZmluZSBHVUNfQ1RMX01B WF9EV09SRFPCoMKgwqDCoMKgwqDCoCAoU09GVF9TQ1JBVENIX0NPVU5UIC0gMikgLyogCj4+IFsx Li4xNF0gKi8KPj4gwqAgKy8qIEdlbmVyaWMgR1QgU3lzSW5mbyBkYXRhIHR5cGVzICovCj4+ICsj ZGVmaW5lIEdVQ19HRU5FUklDX0dUX1NZU0lORk9fU0xJQ0VfRU5BQkxFRMKgwqDCoMKgwqDCoMKg IDAKPj4gKyNkZWZpbmUgR1VDX0dFTkVSSUNfR1RfU1lTSU5GT19WREJPWF9TRkNfU1VQUE9SVF9N QVNLwqDCoMKgIDEKPj4gKyNkZWZpbmUgR1VDX0dFTkVSSUNfR1RfU1lTSU5GT19ET09SQkVMTF9D T1VOVF9QRVJfU1FJREnCoMKgwqAgMgo+PiArI2RlZmluZSBHVUNfR0VORVJJQ19HVF9TWVNJTkZP X01BWMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMTYKPgo+IG5pdDogdGhlc2UgbmFtZXMgYXJlIGxv bmcuIE1heWJlIGRyb3AgdGhlICJHRU5FUklDIj8gaXQncyBub3QgbGlrZSAKPiB0aGVyZSBpcyBh IHNwZWNpYWxpemVkX2luZm8gYXJyYXkgOikKVGhlIG5hbWUgaXMgdG8gbWF0Y2ggdGhlIEd1QyBz cGVjLiBBbmQgdGhlIGdlbmVyaWMgcmVmZXJzIHRvIGl0IG5vdCAKYmVpbmcgZW5naW5lIHNwZWNp ZmljLiBBcyBpbiwgdGhlcmUgaXMgYW4gZW5naW5lIGNsYXNzIGFycmF5IGFuZCB0aGUgCmdlbmVy aWMgR1QgaW5mbyBhcnJheS4gU28gYWN0dWFsbHksIHllcyB0aGVyZSBpcyBhIHNwZWNpYWxpc2Vk IGluZm8gCmFycmF5IGFscmVhZHkuCgoKPgo+PiArCj4+ICsvKgo+PiArICogVGhlIGNsYXNzIGdv ZXMgaW4gYml0cyBbMC4uMl0gb2YgdGhlIEd1QyBJRCwgdGhlIGluc3RhbmNlIGluIGJpdHMgCj4+ IFszLi42XS4KPj4gKyAqIEJpdCA3IGNhbiBiZSB1c2VkIGZvciBvcGVyYXRpb25zIHRoYXQgYXBw bHkgdG8gYWxsIGVuZ2luZSAKPj4gY2xhc3NlcyZpbnN0YW5jZXMuCj4+ICsgKi8KPj4gKyNkZWZp bmUgR1VDX0VOR0lORV9DTEFTU19TSElGVMKgwqDCoMKgwqDCoMKgIDAKPj4gKyNkZWZpbmUgR1VD X0VOR0lORV9DTEFTU19NQVNLwqDCoMKgwqDCoMKgwqAgKDB4NyA8PCBHVUNfRU5HSU5FX0NMQVNT X1NISUZUKQo+PiArI2RlZmluZSBHVUNfRU5HSU5FX0lOU1RBTkNFX1NISUZUwqDCoMKgIDMKPj4g KyNkZWZpbmUgR1VDX0VOR0lORV9JTlNUQU5DRV9NQVNLwqDCoMKgICgweGYgPDwgR1VDX0VOR0lO RV9JTlNUQU5DRV9TSElGVCkKPj4gKyNkZWZpbmUgR1VDX0VOR0lORV9BTExfSU5TVEFOQ0VTwqDC oMKgIEJJVCg3KQo+PiArCj4+ICsjZGVmaW5lIE1BS0VfR1VDX0lEKGNsYXNzLCBpbnN0YW5jZSkg XAo+PiArwqDCoMKgICgoKGNsYXNzKSA8PCBHVUNfRU5HSU5FX0NMQVNTX1NISUZUKSB8IFwKPj4g K8KgwqDCoMKgICgoaW5zdGFuY2UpIDw8IEdVQ19FTkdJTkVfSU5TVEFOQ0VfU0hJRlQpKQo+PiAr Cj4+ICsjZGVmaW5lIEdVQ19JRF9UT19FTkdJTkVfQ0xBU1MoZ3VjX2lkKSBcCj4+ICvCoMKgwqAg KCgoZ3VjX2lkKSAmIEdVQ19FTkdJTkVfQ0xBU1NfTUFTSykgPj4gR1VDX0VOR0lORV9DTEFTU19T SElGVCkKPj4gKyNkZWZpbmUgR1VDX0lEX1RPX0VOR0lORV9JTlNUQU5DRShndWNfaWQpIFwKPj4g K8KgwqDCoCAoKChndWNfaWQpICYgR1VDX0VOR0lORV9JTlNUQU5DRV9NQVNLKSA+PiAKPj4gR1VD X0VOR0lORV9JTlNUQU5DRV9TSElGVCkKPj4gKwo+PiDCoCAvKiBXb3JrIGl0ZW0gZm9yIHN1Ym1p dHRpbmcgd29ya2xvYWRzIGludG8gd29yayBxdWV1ZSBvZiBHdUMuICovCj4+IMKgIHN0cnVjdCBn dWNfd3FfaXRlbSB7Cj4+IMKgwqDCoMKgwqAgdTMyIGhlYWRlcjsKPj4gQEAgLTMzOCw3ICszNTgs NiBAQCBzdHJ1Y3QgZ3VjX3BvbGljaWVzIHsKPj4gwqAgLyogR3VDIE1NSU8gcmVnIHN0YXRlIHN0 cnVjdCAqLwo+PiDCoCDCoCAtI2RlZmluZSBHVUNfUkVHU0VUX01BWF9SRUdJU1RFUlPCoMKgwqAg NjQKPj4gwqAgI2RlZmluZSBHVUNfUzNfU0FWRV9TUEFDRV9QQUdFU8KgwqDCoMKgwqDCoMKgIDEw Cj4KPiBUaGUgUzMgZGVmaW5lIGNhbiBhbHNvIGJlIHJlbW92ZWQKV2hhdCB3YXMgdGhhdD8gSXMg aXMgYWN0dWFsbHkgb2Jzb2xldGUgYW5kIHJlbW92ZWQgZnJvbSB0aGUgaW50ZXJmYWNlIG9yIApq dXN0IHNvbWV0aGluZyB0aGF0IHdlIGRvbid0IHVzZSB5ZXQ/IE5vdGUgdGhhdCB0aGUgbGluZSBh Ym92ZSB3YXMgCnJlbW92ZWQgc3BlY2lmaWNhbGx5IGJlY2F1c2UgdGhlIHJlZ3NldCBkZWZpbml0 aW9uIGhhcyBjaGFuZ2VkLCBpdCdzIG5vdCAKanVzdCBzb21lIHJhbmRvbSB0aWR5IHVwLgoKPgo+ PiDCoCDCoCBzdHJ1Y3QgZ3VjX21taW9fcmVnIHsKPj4gQEAgLTM0OCwyOCArMzY3LDI0IEBAIHN0 cnVjdCBndWNfbW1pb19yZWcgewo+PiDCoCAjZGVmaW5lIEdVQ19SRUdTRVRfTUFTS0VEwqDCoMKg wqDCoMKgwqAgKDEgPDwgMCkKPj4gwqAgfSBfX3BhY2tlZDsKPj4gwqAgLXN0cnVjdCBndWNfbW1p b19yZWdzZXQgewo+PiAtwqDCoMKgIHN0cnVjdCBndWNfbW1pb19yZWcgcmVnaXN0ZXJzW0dVQ19S RUdTRVRfTUFYX1JFR0lTVEVSU107Cj4+IC3CoMKgwqAgdTMyIHZhbHVlc192YWxpZDsKPj4gLcKg wqDCoCB1MzIgbnVtYmVyX29mX3JlZ2lzdGVyczsKPj4gLX0gX19wYWNrZWQ7Cj4+IC0KPj4gwqAg LyogR3VDIHJlZ2lzdGVyIHNldHMgKi8KPj4gLXN0cnVjdCBndWNfbW1pb19yZWdfc3RhdGUgewo+ PiAtwqDCoMKgIHN0cnVjdCBndWNfbW1pb19yZWdzZXQgCj4+IGVuZ2luZV9yZWdbR1VDX01BWF9F TkdJTkVfQ0xBU1NFU11bR1VDX01BWF9JTlNUQU5DRVNfUEVSX0NMQVNTXTsKPj4gLcKgwqDCoCB1 MzIgcmVzZXJ2ZWRbOThdOwo+PiArc3RydWN0IGd1Y19tbWlvX3JlZ19zZXQgewo+PiArwqDCoMKg IHUzMiBhZGRyZXNzOwo+PiArwqDCoMKgIHVuaW9uIHsKPj4gK8KgwqDCoMKgwqDCoMKgIHN0cnVj dCB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBjb3VudDoxNjsKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdTMyIHJlc2VydmVkMToxMjsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgdTMyIHJlc2VydmVkMjo0Owo+Cj4gSSBiZWxpZXZlIHdlIHVzdWFsbHkgdHJ5IHRvIGF2b2lk IGJpdGZpZWxkIGRlZmluaXRpb25zIGluIGludGVyZmFjZXMuIAo+IEluIHRoaXMgY2FzZSwgd291 bGRuJ3QgaXQgYmUgc2ltcGxlciB0byBqdXN0IGhhdmUgYSB1MTYgY291bnQgYW5kIGEgCj4gdTE2 IHJlc2VydmVkLCBlbnRpcmVseSBza2lwcGluZyB0aGUgdW5pb24gYW5kIHRoZSBpbm5lciBzdHJ1 Y3Q/IEkga25vdyAKPiBpdCB3b3VsZG4ndCBtYXRjaCB0aGUgR3VDIGZpbGUgMToxIGJ1dCBJTU8g aXQncyBhbiBhY2NlcHRhYmxlIAo+IGRpZmZlcmVuY2UgZ2l2ZW4gaXRzIHRyaXZpYWxpdHkuCj4K SSB0aG91Z2h0IG91ciBhaW0gd2FzIHRvIHRyeSB0byBzdGF5IGFzIGNsb3NlIHRvIHRoZSBHdUMg c3BlYyBhcyAKcG9zc2libGU/IFRoaXMgaXMgbm90IHRoZSBvbmx5IHVzZSBvZiBiaXRmaWVsZHMg aW4gdGhpcyBmaWxlIGluIG9yZGVyIHRvIAptYXRjaCB0aGUgc3BlYy4gVGhlIHVsdGltYXRlIGFp bSBpcyB0byBoYXZlIHRoaXMgZmlsZSBiZSBhdXRvZ2VuZXJhdGVkIApmcm9tIHRoZSBHdUMgQVBJ IHNwZWMuIEluIHRoYXQgY2FzZSwgaXQgd2lsbCBkZWZpbml0ZWx5IG1hdGNoIHdoYXRldmVyIApy ZXNlcnZlZCBkZWZpbml0aW9ucyBhcmUgdGhlcmUuCgpKb2huLgoKCj4gV2l0aCB0aGUgZGVmaW5l IHJlbW92ZWQgYW5kIHRoaXMgc3RydWN0IGNsZWFuZWQgdXA6Cj4KPiBSZXZpZXdlZC1ieTogRGFu aWVsZSBDZXJhb2xvIFNwdXJpbyA8ZGFuaWVsZS5jZXJhb2xvc3B1cmlvQGludGVsLmNvbT4KPgo+ IERhbmllbGUKPgo+PiArwqDCoMKgwqDCoMKgwqAgfTsKPj4gK8KgwqDCoMKgwqDCoMKgIHUzMiBj b3VudF91MzI7Cj4+ICvCoMKgwqAgfTsKPj4gwqAgfSBfX3BhY2tlZDsKPj4gwqAgwqAgLyogSFcg aW5mbyAqLwo+PiDCoCBzdHJ1Y3QgZ3VjX2d0X3N5c3RlbV9pbmZvIHsKPj4gLcKgwqDCoCB1MzIg c2xpY2VfZW5hYmxlZDsKPj4gLcKgwqDCoCB1MzIgcmNzX2VuYWJsZWQ7Cj4+IC3CoMKgwqAgdTMy IHJlc2VydmVkMDsKPj4gLcKgwqDCoCB1MzIgYmNzX2VuYWJsZWQ7Cj4+IC3CoMKgwqAgdTMyIHZk Ym94X2VuYWJsZV9tYXNrOwo+PiAtwqDCoMKgIHUzMiB2ZGJveF9zZmNfc3VwcG9ydF9tYXNrOwo+ PiAtwqDCoMKgIHUzMiB2ZWJveF9lbmFibGVfbWFzazsKPj4gLcKgwqDCoCB1MzIgcmVzZXJ2ZWRb OV07Cj4+ICvCoMKgwqAgdTggCj4+IG1hcHBpbmdfdGFibGVbR1VDX01BWF9FTkdJTkVfQ0xBU1NF U11bR1VDX01BWF9JTlNUQU5DRVNfUEVSX0NMQVNTXTsKPj4gK8KgwqDCoCB1MzIgZW5naW5lX2Vu YWJsZWRfbWFza3NbR1VDX01BWF9FTkdJTkVfQ0xBU1NFU107Cj4+ICvCoMKgwqAgdTMyIGdlbmVy aWNfZ3Rfc3lzaW5mb1tHVUNfR0VORVJJQ19HVF9TWVNJTkZPX01BWF07Cj4+IMKgIH0gX19wYWNr ZWQ7Cj4+IMKgIMKgIC8qIENsaWVudHMgaW5mbyAqLwo+PiBAQCAtMzkwLDE1ICs0MDUsMTYgQEAg c3RydWN0IGd1Y19jbGllbnRzX2luZm8gewo+PiDCoCDCoCAvKiBHdUMgQWRkaXRpb25hbCBEYXRh IFN0cnVjdCAqLwo+PiDCoCBzdHJ1Y3QgZ3VjX2FkcyB7Cj4+IC3CoMKgwqAgdTMyIHJlZ19zdGF0 ZV9hZGRyOwo+PiAtwqDCoMKgIHUzMiByZWdfc3RhdGVfYnVmZmVyOwo+PiArwqDCoMKgIHN0cnVj dCBndWNfbW1pb19yZWdfc2V0IAo+PiByZWdfc3RhdGVfbGlzdFtHVUNfTUFYX0VOR0lORV9DTEFT U0VTXVtHVUNfTUFYX0lOU1RBTkNFU19QRVJfQ0xBU1NdOwo+PiArwqDCoMKgIHUzMiByZXNlcnZl ZDA7Cj4+IMKgwqDCoMKgwqAgdTMyIHNjaGVkdWxlcl9wb2xpY2llczsKPj4gwqDCoMKgwqDCoCB1 MzIgZ3Rfc3lzdGVtX2luZm87Cj4+IMKgwqDCoMKgwqAgdTMyIGNsaWVudHNfaW5mbzsKPj4gwqDC oMKgwqDCoCB1MzIgY29udHJvbF9kYXRhOwo+PiDCoMKgwqDCoMKgIHUzMiBnb2xkZW5fY29udGV4 dF9scmNhW0dVQ19NQVhfRU5HSU5FX0NMQVNTRVNdOwo+PiDCoMKgwqDCoMKgIHUzMiBlbmdfc3Rh dGVfc2l6ZVtHVUNfTUFYX0VOR0lORV9DTEFTU0VTXTsKPj4gLcKgwqDCoCB1MzIgcmVzZXJ2ZWRb MTZdOwo+PiArwqDCoMKgIHUzMiBwcml2YXRlX2RhdGE7Cj4+ICvCoMKgwqAgdTMyIHJlc2VydmVk WzE1XTsKPj4gwqAgfSBfX3BhY2tlZDsKPj4gwqAgwqAgLyogR3VDIGxvZ2dpbmcgc3RydWN0dXJl cyAqLwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3Vj X3JlZy5oIAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19yZWcuaAo+ PiBpbmRleCAxOTQ5MzQ2ZTcxNGUuLmIzN2ZjMmZmYWVmMiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3JlZy5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19yZWcuaAo+PiBAQCAtMTE4LDYgKzExOCwxMSBAQCBz dHJ1Y3QgZ3VjX2Rvb3JiZWxsX2luZm8gewo+PiDCoCAjZGVmaW5lwqDCoCBHRU44X0RSQl9WQUxJ RMKgwqDCoMKgwqDCoMKgwqDCoCAoMTw8MCkKPj4gwqAgI2RlZmluZSBHRU44X0RSQlJFR1UoeCnC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9NTUlPKDB4MTAwMCArICh4KSAqIDggKyA0KQo+PiDCoCAr I2RlZmluZSBHRU4xMl9ESVNUX0RCU19QT1BVTEFURUTCoMKgwqDCoMKgwqDCoCBfTU1JTygweGQw OCkKPj4gKyNkZWZpbmXCoMKgIEdFTjEyX0RPT1JCRUxMU19QRVJfU1FJRElfU0hJRlTCoMKgwqAg MTYKPj4gKyNkZWZpbmXCoMKgIEdFTjEyX0RPT1JCRUxMU19QRVJfU1FJREnCoMKgwqDCoMKgwqDC oCAoMHhmZikKPj4gKyNkZWZpbmXCoMKgIEdFTjEyX1NRSURJU19ET09SQkVMTF9FWElTVMKgwqDC oMKgwqDCoMKgICgweGZmZmYpCj4+ICsKPj4gwqAgI2RlZmluZSBERV9HVUNSTVLCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIF9NTUlPKDB4NDQwNTQpCj4+IMKgIMKgICNkZWZpbmUgR1VDX0JDU19SQ1Nf SUVSwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBfTU1JTygweEM1NTApCj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Y19mdy5jIAo+PiBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjX2Z3LmMKPj4gaW5kZXggODBlOGI2YzNiYzhjLi5lZTRh YzM5MjIyNzcgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVs X3VjX2Z3LmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNfZncu Ywo+PiBAQCAtNDQsMjMgKzQ0LDE5IEBAIHZvaWQgaW50ZWxfdWNfZndfY2hhbmdlX3N0YXR1cyhz dHJ1Y3QgaW50ZWxfdWNfZncgCj4+ICp1Y19mdywKPj4gwqDCoCAqIExpc3Qgb2YgcmVxdWlyZWQg R3VDIGFuZCBIdUMgYmluYXJpZXMgcGVyLXBsYXRmb3JtLgo+PiDCoMKgICogTXVzdCBiZSBvcmRl cmVkIGJhc2VkIG9uIHBsYXRmb3JtICsgcmV2aWQsIGZyb20gbmV3ZXIgdG8gb2xkZXIuCj4+IMKg wqAgKgo+PiAtICogVEdMIDM1LjIgaXMgaW50ZXJmYWNlLWNvbXBhdGlibGUgd2l0aCAzMy4wIGZv ciBwcmV2aW91cyBHZW5zLiBUaGUgCj4+IGRlbHRhcwo+PiAtICogYmV0d2VlbiAzMy4wIGFuZCAz NS4yIGFyZSBvbmx5IHJlbGF0ZWQgdG8gbmV3IGFkZGl0aW9ucyB0byAKPj4gc3VwcG9ydCBuZXcg R2VuMTIKPj4gLSAqIGZlYXR1cmVzLgo+PiAtICoKPj4gwqDCoCAqIE5vdGUgdGhhdCBSS0wgdXNl cyB0aGUgc2FtZSBmaXJtd2FyZSBhcyBUR0wuCj4+IMKgwqAgKi8KPj4gwqAgI2RlZmluZSBJTlRF TF9VQ19GSVJNV0FSRV9ERUZTKGZ3X2RlZiwgZ3VjX2RlZiwgaHVjX2RlZikgXAo+PiAtwqDCoMKg IGZ3X2RlZihST0NLRVRMQUtFLMKgIDAsIGd1Y19kZWYodGdsLCAzNSwgMiwgMCksIGh1Y19kZWYo dGdsLMKgIDcsIAo+PiA1LCAwKSkgXAo+PiAtwqDCoMKgIGZ3X2RlZihUSUdFUkxBS0UswqDCoCAw LCBndWNfZGVmKHRnbCwgMzUsIDIsIDApLCBodWNfZGVmKHRnbCzCoCA3LCAKPj4gNSwgMCkpIFwK Pj4gLcKgwqDCoCBmd19kZWYoRUxLSEFSVExBS0UsIDAsIGd1Y19kZWYoZWhsLCAzMywgMCwgNCks IGh1Y19kZWYoZWhsLMKgIDksIAo+PiAwLCAwKSkgXAo+PiAtwqDCoMKgIGZ3X2RlZihJQ0VMQUtF LMKgwqDCoMKgIDAsIGd1Y19kZWYoaWNsLCAzMywgMCwgMCksIGh1Y19kZWYoaWNsLMKgIDksIAo+ PiAwLCAwKSkgXAo+PiAtwqDCoMKgIGZ3X2RlZihDT01FVExBS0UswqDCoCA1LCBndWNfZGVmKGNt bCwgMzMsIDAsIDApLCBodWNfZGVmKGNtbCzCoCA0LCAKPj4gMCwgMCkpIFwKPj4gLcKgwqDCoCBm d19kZWYoQ09GRkVFTEFLRSzCoCAwLCBndWNfZGVmKGtibCwgMzMsIDAsIDApLCBodWNfZGVmKGti bCzCoCA0LCAKPj4gMCwgMCkpIFwKPj4gLcKgwqDCoCBmd19kZWYoR0VNSU5JTEFLRSzCoCAwLCBn dWNfZGVmKGdsaywgMzMsIDAsIDApLCBodWNfZGVmKGdsayzCoCA0LCAKPj4gMCwgMCkpIFwKPj4g LcKgwqDCoCBmd19kZWYoS0FCWUxBS0UswqDCoMKgIDAsIGd1Y19kZWYoa2JsLCAzMywgMCwgMCks IGh1Y19kZWYoa2JsLMKgIDQsIAo+PiAwLCAwKSkgXAo+PiAtwqDCoMKgIGZ3X2RlZihCUk9YVE9O LMKgwqDCoMKgIDAsIGd1Y19kZWYoYnh0LCAzMywgMCwgMCksIGh1Y19kZWYoYnh0LMKgIDIsIAo+ PiAwLCAwKSkgXAo+PiAtwqDCoMKgIGZ3X2RlZihTS1lMQUtFLMKgwqDCoMKgIDAsIGd1Y19kZWYo c2tsLCAzMywgMCwgMCksIGh1Y19kZWYoc2tsLMKgIDIsIAo+PiAwLCAwKSkKPj4gK8KgwqDCoCBm d19kZWYoUk9DS0VUTEFLRSzCoCAwLCBndWNfZGVmKHRnbCwgNDksIDAsIDEpLCBodWNfZGVmKHRn bCzCoCA3LCAKPj4gNSwgMCkpIFwKPj4gK8KgwqDCoCBmd19kZWYoVElHRVJMQUtFLMKgwqAgMCwg Z3VjX2RlZih0Z2wsIDQ5LCAwLCAxKSwgaHVjX2RlZih0Z2wswqAgNywgCj4+IDUsIDApKSBcCj4+ ICvCoMKgwqAgZndfZGVmKEVMS0hBUlRMQUtFLCAwLCBndWNfZGVmKGVobCwgNDksIDAsIDEpLCBo dWNfZGVmKGVobCzCoCA5LCAKPj4gMCwgMCkpIFwKPj4gK8KgwqDCoCBmd19kZWYoSUNFTEFLRSzC oMKgwqDCoCAwLCBndWNfZGVmKGljbCwgNDksIDAsIDEpLCBodWNfZGVmKGljbCzCoCA5LCAKPj4g MCwgMCkpIFwKPj4gK8KgwqDCoCBmd19kZWYoQ09NRVRMQUtFLMKgwqAgNSwgZ3VjX2RlZihjbWws IDQ5LCAwLCAxKSwgaHVjX2RlZihjbWwswqAgNCwgCj4+IDAsIDApKSBcCj4+ICvCoMKgwqAgZndf ZGVmKENPRkZFRUxBS0UswqAgMCwgZ3VjX2RlZihrYmwsIDQ5LCAwLCAxKSwgaHVjX2RlZihrYmws wqAgNCwgCj4+IDAsIDApKSBcCj4+ICvCoMKgwqAgZndfZGVmKEdFTUlOSUxBS0UswqAgMCwgZ3Vj X2RlZihnbGssIDQ5LCAwLCAxKSwgaHVjX2RlZihnbGsswqAgNCwgCj4+IDAsIDApKSBcCj4+ICvC oMKgwqAgZndfZGVmKEtBQllMQUtFLMKgwqDCoCAwLCBndWNfZGVmKGtibCwgNDksIDAsIDEpLCBo dWNfZGVmKGtibCzCoCA0LCAKPj4gMCwgMCkpIFwKPj4gK8KgwqDCoCBmd19kZWYoQlJPWFRPTizC oMKgwqDCoCAwLCBndWNfZGVmKGJ4dCwgNDksIDAsIDEpLCBodWNfZGVmKGJ4dCzCoCAyLCAKPj4g MCwgMCkpIFwKPj4gK8KgwqDCoCBmd19kZWYoU0tZTEFLRSzCoMKgwqDCoCAwLCBndWNfZGVmKHNr bCwgNDksIDAsIDEpLCBodWNfZGVmKHNrbCzCoCAyLCAKPj4gMCwgMCkpCj4+IMKgIMKgICNkZWZp bmUgX19NQUtFX1VDX0ZXX1BBVEgocHJlZml4XywgbmFtZV8sIG1ham9yXywgbWlub3JfLCBwYXRj aF8pIFwKPj4gwqDCoMKgwqDCoCAiaTkxNS8iIFwKPj4gQEAgLTM3MSw2ICszNjcsOSBAQCBpbnQg aW50ZWxfdWNfZndfZmV0Y2goc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdykKPj4gwqDCoMKgwqDC oMKgwqDCoMKgIH0KPj4gwqDCoMKgwqDCoCB9Cj4+IMKgICvCoMKgwqAgaWYgKHVjX2Z3LT50eXBl ID09IElOVEVMX1VDX0ZXX1RZUEVfR1VDKQo+PiArwqDCoMKgwqDCoMKgwqAgdWNfZnctPnByaXZh dGVfZGF0YV9zaXplID0gY3NzLT5wcml2YXRlX2RhdGFfc2l6ZTsKPj4gKwo+PiDCoMKgwqDCoMKg IG9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc2htZW1fZnJvbV9kYXRhKGk5MTUsIGZ3LT5k YXRhLCAKPj4gZnctPnNpemUpOwo+PiDCoMKgwqDCoMKgIGlmIChJU19FUlIob2JqKSkgewo+PiDC oMKgwqDCoMKgwqDCoMKgwqAgZXJyID0gUFRSX0VSUihvYmopOwo+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNfZncuaCAKPj4gYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC91Yy9pbnRlbF91Y19mdy5oCj4+IGluZGV4IDIzZDNhNDIzYWMwZi4uOTliYjFm ZTFhZjY2IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91 Y19mdy5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjX2Z3LmgK Pj4gQEAgLTg4LDYgKzg4LDggQEAgc3RydWN0IGludGVsX3VjX2Z3IHsKPj4gwqAgwqDCoMKgwqDC oCB1MzIgcnNhX3NpemU7Cj4+IMKgwqDCoMKgwqAgdTMyIHVjb2RlX3NpemU7Cj4+ICsKPj4gK8Kg wqDCoCB1MzIgcHJpdmF0ZV9kYXRhX3NpemU7Cj4+IMKgIH07Cj4+IMKgIMKgICNpZmRlZiBDT05G SUdfRFJNX0k5MTVfREVCVUdfR1VDCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC91Yy9pbnRlbF91Y19md19hYmkuaCAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91 Yy9pbnRlbF91Y19md19hYmkuaAo+PiBpbmRleCAwMjkyMTRjZGVkZDUuLmU0MWZmYzdhN2ZiYyAx MDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNfZndfYWJp LmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNfZndfYWJpLmgK Pj4gQEAgLTY5LDcgKzY5LDExIEBAIHN0cnVjdCB1Y19jc3NfaGVhZGVyIHsKPj4gwqAgI2RlZmlu ZSBDU1NfU1dfVkVSU0lPTl9VQ19NQUpPUsKgwqDCoMKgwqDCoMKgICgweEZGIDw8IDE2KQo+PiDC oCAjZGVmaW5lIENTU19TV19WRVJTSU9OX1VDX01JTk9SwqDCoMKgwqDCoMKgwqAgKDB4RkYgPDwg OCkKPj4gwqAgI2RlZmluZSBDU1NfU1dfVkVSU0lPTl9VQ19QQVRDSMKgwqDCoMKgwqDCoMKgICgw eEZGIDw8IDApCj4+IC3CoMKgwqAgdTMyIHJlc2VydmVkWzE0XTsKPj4gK8KgwqDCoCB1MzIgcmVz ZXJ2ZWQwWzEzXTsKPj4gK8KgwqDCoCB1bmlvbiB7Cj4+ICvCoMKgwqDCoMKgwqDCoCB1MzIgcHJp dmF0ZV9kYXRhX3NpemU7IC8qIG9ubHkgYXBwbGllcyB0byBHdUMgKi8KPj4gK8KgwqDCoMKgwqDC oMKgIHUzMiByZXNlcnZlZDE7Cj4+ICvCoMKgwqAgfTsKPj4gwqDCoMKgwqDCoCB1MzIgaGVhZGVy X2luZm87Cj4+IMKgIH0gX19wYWNrZWQ7Cj4+IMKgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKHN0cnVj dCB1Y19jc3NfaGVhZGVyKSA9PSAxMjgpOwo+CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngK