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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 4C598C43334 for ; Tue, 26 Jul 2022 13:35:21 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 5044190C5C; Tue, 26 Jul 2022 13:35:20 +0000 (UTC) Received: from smtp-out1.suse.de (smtp-out1.suse.de [IPv6:2001:67c:2178:6::1c]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8BB9211B2BB for ; Tue, 26 Jul 2022 07:19:22 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 19859371A6; Tue, 26 Jul 2022 07:19:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1658819961; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=fhUw7hIGHXVv4IQxB3ca6FtY8cnaSy9AH/oltm5n8u0=; b=KTNFUO+FjSmvsy1ho7Zwrn1Q2UOacLwQE0d3ToUrVNdWPCR5DxUL0McPVA6R1RTcry6YQT MfQPGnVt76/JL0wQ3PvkXNtAroUh/EXPkX6yt2SrF6dHmcrNCvCxIp0ZXdhqtj60XS4zys 7sDxUZh9i6mv/5kBQqZLEcQOGRhKoAE= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1658819961; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=fhUw7hIGHXVv4IQxB3ca6FtY8cnaSy9AH/oltm5n8u0=; b=ENru79yMug9g6DInLkmjxnoSJMXROCfGLuzu+dNlL9RtfiDZ6FMsSHDBtFAGHKJNgQ8FSM qotJ95S5ZgXsDcCg== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id B7D6613322; Tue, 26 Jul 2022 07:19:20 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id hSzjK3iV32L9ZQAAMHmgww (envelope-from ); Tue, 26 Jul 2022 07:19:20 +0000 Message-ID: <29497142-a9fd-beca-e94b-c34646d5008d@suse.de> Date: Tue, 26 Jul 2022 09:19:19 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: [PATCH v3 01/32] drm/via: Delete VIA DRM code Content-Language: en-US To: Kevin Brace , dri-devel@lists.freedesktop.org References: <20220725235127.20433-1-kevinbrace@gmx.com> <20220725235127.20433-2-kevinbrace@gmx.com> From: Thomas Zimmermann In-Reply-To: <20220725235127.20433-2-kevinbrace@gmx.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------z0jrIf9ZI2eBht8GF9Nu84oL" X-Mailman-Approved-At: Tue, 26 Jul 2022 13:35:02 +0000 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Brace Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------z0jrIf9ZI2eBht8GF9Nu84oL Content-Type: multipart/mixed; boundary="------------M5ed4EtDrwBvSRjraAbGbDX2"; protected-headers="v1" From: Thomas Zimmermann To: Kevin Brace , dri-devel@lists.freedesktop.org Cc: Kevin Brace Message-ID: <29497142-a9fd-beca-e94b-c34646d5008d@suse.de> Subject: Re: [PATCH v3 01/32] drm/via: Delete VIA DRM code References: <20220725235127.20433-1-kevinbrace@gmx.com> <20220725235127.20433-2-kevinbrace@gmx.com> In-Reply-To: <20220725235127.20433-2-kevinbrace@gmx.com> --------------M5ed4EtDrwBvSRjraAbGbDX2 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGkgS2V2aW4NCg0KQW0gMjYuMDcuMjIgdW0gMDE6NTAgc2NocmllYiBLZXZpbiBCcmFjZToN Cj4gRnJvbTogS2V2aW4gQnJhY2UgPGtldmluYnJhY2VAYnJhY2Vjb21wdXRlcmxhYi5jb20+ DQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBLZXZpbiBCcmFjZSA8a2V2aW5icmFjZUBicmFjZWNv bXB1dGVybGFiLmNvbT4NCj4gLS0tDQo+ICAgZHJpdmVycy9ncHUvZHJtL0tjb25maWcgICAg ICAgICAgICB8ICAgIDcgLQ0KPiAgIGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSAgICAgICAg ICAgfCAgICAxIC0NCj4gICBkcml2ZXJzL2dwdS9kcm0vdmlhL01ha2VmaWxlICAgICAgIHwg ICAgOCAtDQo+ICAgZHJpdmVycy9ncHUvZHJtL3ZpYS92aWFfM2RfcmVnLmggICB8IDE2NTAg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAgIGRyaXZlcnMvZ3B1L2RybS92aWEv dmlhX2RtYS5jICAgICAgfCAgNzQ0IC0tLS0tLS0tLS0tLS0NCj4gICBkcml2ZXJzL2dwdS9k cm0vdmlhL3ZpYV9kbWFibGl0LmMgIHwgIDgwNyAtLS0tLS0tLS0tLS0tLQ0KPiAgIGRyaXZl cnMvZ3B1L2RybS92aWEvdmlhX2RtYWJsaXQuaCAgfCAgMTQwIC0tLQ0KPiAgIGRyaXZlcnMv Z3B1L2RybS92aWEvdmlhX2Rydi5jICAgICAgfCAgMTI0IC0tLQ0KPiAgIGRyaXZlcnMvZ3B1 L2RybS92aWEvdmlhX2Rydi5oICAgICAgfCAgMjI5IC0tLS0NCj4gICBkcml2ZXJzL2dwdS9k cm0vdmlhL3ZpYV9pcnEuYyAgICAgIHwgIDM4OCAtLS0tLS0tDQo+ICAgZHJpdmVycy9ncHUv ZHJtL3ZpYS92aWFfbWFwLmMgICAgICB8ICAxMzIgLS0tDQo+ICAgZHJpdmVycy9ncHUvZHJt L3ZpYS92aWFfbW0uYyAgICAgICB8ICAyNDEgLS0tLQ0KPiAgIGRyaXZlcnMvZ3B1L2RybS92 aWEvdmlhX3ZlcmlmaWVyLmMgfCAxMTEwIC0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gICBkcml2 ZXJzL2dwdS9kcm0vdmlhL3ZpYV92ZXJpZmllci5oIHwgICA2MiAtLQ0KPiAgIGRyaXZlcnMv Z3B1L2RybS92aWEvdmlhX3ZpZGVvLmMgICAgfCAgIDk0IC0tDQo+ICAgMTUgZmlsZXMgY2hh bmdlZCwgNTczNyBkZWxldGlvbnMoLSkNCj4gICBkZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL3ZpYS9NYWtlZmlsZQ0KPiAgIGRlbGV0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vdmlhL3ZpYV8zZF9yZWcuaA0KPiAgIGRlbGV0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vdmlhL3ZpYV9kbWEuYw0KPiAgIGRlbGV0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vdmlhL3ZpYV9kbWFibGl0LmMNCj4gICBkZWxldGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9ncHUvZHJtL3ZpYS92aWFfZG1hYmxpdC5oDQo+ICAgZGVsZXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS92aWEvdmlhX2Rydi5jDQo+ICAgZGVsZXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS92aWEvdmlhX2Rydi5oDQo+ICAgZGVsZXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS92aWEvdmlhX2lycS5jDQo+ICAgZGVsZXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS92aWEvdmlhX21hcC5jDQo+ICAgZGVsZXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS92aWEvdmlhX21tLmMNCj4gICBkZWxldGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL3ZpYS92aWFfdmVyaWZpZXIuYw0KPiAgIGRlbGV0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vdmlhL3ZpYV92ZXJpZmllci5oDQo+ICAgZGVsZXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS92aWEvdmlhX3ZpZGVvLmMNCg0KU2FtIGhh cyBtZWFud2hpbGUgbWVyZ2VkIGFsbCBvbGQgc291cmNlIGZpbGVzIGludG8gYSBzaW5nbGUg ZmlsZSBuYW1lZCANCnZpYV9kcmkxLmMuICBZb3UgbmVlZCB0byByZWJhc2Ugb250byB0aGUg bGF0ZXN0IGRybS10aXAgZnJvbQ0KDQogICBodHRwczovL2NnaXQuZnJlZWRlc2t0b3Aub3Jn L2RybS9kcm0tdGlwLw0KDQpUaGUgaWRlYSBpcyB0byBoYXZlIGEgc2VwYXJhdGUgb3B0aW9u IGluIEtjb25maWcgdG8gYnVpbGQgdGhlIG9sZCBkcml2ZXIgDQppbnN0ZWFkIG9mIHRoZSBu ZXcgb25lLg0KDQpCZXN0IHJlZ2FyZHMNClRob21hcw0KDQo+IA0KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZw0KPiBp bmRleCBlODhjNDk3ZmEwMTAuLjMwZDViOTFiNzE3ZiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL0tjb25maWcNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcNCj4g QEAgLTQ2MCwxMyArNDYwLDYgQEAgY29uZmlnIERSTV9TSVMNCj4gICAJICBjaGlwc2V0LiBJ ZiBNIGlzIHNlbGVjdGVkIHRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2lzLiBBR1ANCj4g ICAJICBzdXBwb3J0IGlzIHJlcXVpcmVkIGZvciB0aGlzIGRyaXZlciB0byB3b3JrLg0KPiAN Cj4gLWNvbmZpZyBEUk1fVklBDQo+IC0JdHJpc3RhdGUgIlZpYSB1bmljaHJvbWUgdmlkZW8g Y2FyZHMiDQo+IC0JZGVwZW5kcyBvbiBEUk0gJiYgUENJDQo+IC0JaGVscA0KPiAtCSAgQ2hv b3NlIHRoaXMgb3B0aW9uIGlmIHlvdSBoYXZlIGEgVmlhIHVuaWNocm9tZSBvciBjb21wYXRp YmxlIHZpZGVvDQo+IC0JICBjaGlwc2V0LiBJZiBNIGlzIHNlbGVjdGVkIHRoZSBtb2R1bGUg d2lsbCBiZSBjYWxsZWQgdmlhLg0KPiAtDQo+ICAgY29uZmlnIERSTV9TQVZBR0UNCj4gICAJ dHJpc3RhdGUgIlNhdmFnZSB2aWRlbyBjYXJkcyINCj4gICAJZGVwZW5kcyBvbiBEUk0gJiYg UENJDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgYi9kcml2ZXJz L2dwdS9kcm0vTWFrZWZpbGUNCj4gaW5kZXggMTVmZTMxNjNmODIyLi5lNmQwZGFjYTliYzIg MTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQ0KPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vTWFrZWZpbGUNCj4gQEAgLTk3LDcgKzk3LDYgQEAgb2JqLSQoQ09ORklH X0RSTV9WQzQpICArPSB2YzQvDQo+ICAgb2JqLSQoQ09ORklHX0RSTV9TSVMpICAgKz0gc2lz Lw0KPiAgIG9iai0kKENPTkZJR19EUk1fU0FWQUdFKSs9IHNhdmFnZS8NCj4gICBvYmotJChD T05GSUdfRFJNX1ZNV0dGWCkrPSB2bXdnZngvDQo+IC1vYmotJChDT05GSUdfRFJNX1ZJQSkJ Kz12aWEvDQo+ICAgb2JqLSQoQ09ORklHX0RSTV9WR0VNKQkrPSB2Z2VtLw0KPiAgIG9iai0k KENPTkZJR19EUk1fVktNUykJKz0gdmttcy8NCj4gICBvYmotJChDT05GSUdfRFJNX05PVVZF QVUpICs9bm91dmVhdS8NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92aWEvTWFr ZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vdmlhL01ha2VmaWxlDQo+IGRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NA0KPiBpbmRleCA4NGRiNGVlZTc4MjguLjAwMDAwMDAwMDAwMA0KPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vdmlhL01ha2VmaWxlDQo+ICsrKyAvZGV2L251bGwNCj4gQEAg LTEsOCArMCwwIEBADQo+IC0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9u bHkNCj4gLSMNCj4gLSMgTWFrZWZpbGUgZm9yIHRoZSBkcm0gZGV2aWNlIGRyaXZlci4gIFRo aXMgZHJpdmVyIHByb3ZpZGVzIHN1cHBvcnQgZm9yIHRoZQ0KPiAtIyBEaXJlY3QgUmVuZGVy aW5nIEluZnJhc3RydWN0dXJlIChEUkkpIGluIFhGcmVlODYgNC4xLjAgYW5kIGhpZ2hlci4N Cj4gLQ0KPiAtdmlhLXkgICAgOj0gdmlhX2lycS5vIHZpYV9kcnYubyB2aWFfbWFwLm8gdmlh X21tLm8gdmlhX2RtYS5vIHZpYV92ZXJpZmllci5vIHZpYV92aWRlby5vIHZpYV9kbWFibGl0 Lm8NCj4gLQ0KPiAtb2JqLSQoQ09ORklHX0RSTV9WSUEpCSs9dmlhLm8NCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS92aWEvdmlhXzNkX3JlZy5oIGIvZHJpdmVycy9ncHUvZHJt L3ZpYS92aWFfM2RfcmVnLmgNCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4 IDQ2MjM3NWQ1NDNiOS4uMDAwMDAwMDAwMDAwDQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92 aWEvdmlhXzNkX3JlZy5oDQo+ICsrKyAvZGV2L251bGwNCj4gQEAgLTEsMTY1MCArMCwwIEBA DQo+IC0vKg0KPiAtICogQ29weXJpZ2h0IDE5OTgtMjAwMyBWSUEgVGVjaG5vbG9naWVzLCBJ bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQo+IC0gKiBDb3B5cmlnaHQgMjAwMS0yMDAzIFMz IEdyYXBoaWNzLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQo+IC0gKg0KPiAtICogUGVy bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJz b24gb2J0YWluaW5nIGENCj4gLSAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksDQo+IC0gKiB0byBk ZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0 aG91dCBsaW1pdGF0aW9uDQo+IC0gKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5 LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3ViIGxpY2Vuc2UsDQo+IC0gKiBhbmQv b3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMg dG8gd2hvbSB0aGUNCj4gLSAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3Vi amVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQo+IC0gKg0KPiAtICogVGhlIGFi b3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1 ZGluZyB0aGUNCj4gLSAqIG5leHQgcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBh bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zDQo+IC0gKiBvZiB0aGUgU29mdHdh cmUuDQo+IC0gKg0KPiAtICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJ VEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCj4gLSAqIElNUExJRUQs IElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hB TlRBQklMSVRZLA0KPiAtICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5E IE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMDQo+IC0gKiBWSUEsIFMzIEdS QVBISUNTLCBBTkQvT1IgSVRTIFNVUFBMSUVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwg REFNQUdFUyBPUg0KPiAtICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElP TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsDQo+IC0gKiBBUklTSU5HIEZST00s IE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0Ug T1IgT1RIRVINCj4gLSAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCj4gLSAqLw0KPiAt DQo+IC0jaWZuZGVmIFZJQV8zRF9SRUdfSA0KPiAtI2RlZmluZSBWSUFfM0RfUkVHX0gNCj4g LSNkZWZpbmUgSENfUkVHX0JBU0UgICAgICAgICAgICAgMHgwNDAwDQo+IC0NCj4gLSNkZWZp bmUgSENfUkVHX1RSQU5TX1NQQUNFICAgICAgMHgwMDQwDQo+IC0NCj4gLSNkZWZpbmUgSENf UGFyYU5fTUFTSyAgICAgICAgICAgMHhmZmZmZmZmZg0KPiAtI2RlZmluZSBIQ19QYXJhX01B U0sgICAgICAgICAgICAweDAwZmZmZmZmDQo+IC0jZGVmaW5lIEhDX1N1YkFfTUFTSyAgICAg ICAgICAgIDB4ZmYwMDAwMDANCj4gLSNkZWZpbmUgSENfU3ViQV9TSElGVCAgICAgICAgICAg MjQNCj4gLS8qIFRyYW5zbWlzc2lvbiBTZXR0aW5nDQo+IC0gKi8NCj4gLSNkZWZpbmUgSENf UkVHX1RSQU5TX1NFVCAgICAgICAgMHgwMDNjDQo+IC0jZGVmaW5lIEhDX1BhcmFTdWJUeXBl X01BU0sgICAgIDB4ZmYwMDAwMDANCj4gLSNkZWZpbmUgSENfUGFyYVR5cGVfTUFTSyAgICAg ICAgMHgwMGZmMDAwMA0KPiAtI2RlZmluZSBIQ19QYXJhT1NfTUFTSyAgICAgICAgICAweDAw MDBmZjAwDQo+IC0jZGVmaW5lIEhDX1BhcmFBZHJfTUFTSyAgICAgICAgIDB4MDAwMDAwZmYN Cj4gLSNkZWZpbmUgSENfUGFyYVN1YlR5cGVfU0hJRlQgICAgMjQNCj4gLSNkZWZpbmUgSENf UGFyYVR5cGVfU0hJRlQgICAgICAgMTYNCj4gLSNkZWZpbmUgSENfUGFyYU9TX1NISUZUICAg ICAgICAgOA0KPiAtI2RlZmluZSBIQ19QYXJhQWRyX1NISUZUICAgICAgICAwDQo+IC0NCj4g LSNkZWZpbmUgSENfUGFyYVR5cGVfQ21kVmRhdGEgICAgMHgwMDAwDQo+IC0jZGVmaW5lIEhD X1BhcmFUeXBlX05vdFRleCAgICAgIDB4MDAwMQ0KPiAtI2RlZmluZSBIQ19QYXJhVHlwZV9U ZXggICAgICAgICAweDAwMDINCj4gLSNkZWZpbmUgSENfUGFyYVR5cGVfUGFsZXR0ZSAgICAg MHgwMDAzDQo+IC0jZGVmaW5lIEhDX1BhcmFUeXBlX1ByZUNSICAgICAgIDB4MDAxMA0KPiAt I2RlZmluZSBIQ19QYXJhVHlwZV9BdXRvICAgICAgICAweDAwZmUNCj4gLQ0KPiAtLyogVHJh bnNtaXNzaW9uIFNwYWNlDQo+IC0gKi8NCj4gLSNkZWZpbmUgSENfUkVHX0hwYXJhMCAgICAg ICAgICAgMHgwMDQwDQo+IC0jZGVmaW5lIEhDX1JFR19IcGF0YUFGICAgICAgICAgIDB4MDJm Yw0KPiAtDQo+IC0vKiBSZWFkDQo+IC0gKi8NCj4gLSNkZWZpbmUgSENfUkVHX0hSRW5nU3Qg ICAgICAgICAgMHgwMDAwDQo+IC0jZGVmaW5lIEhDX1JFR19IUkZJRk9lbXB0eSAgICAgIDB4 MDAwNA0KPiAtI2RlZmluZSBIQ19SRUdfSFJGSUZPZnVsbCAgICAgICAweDAwMDgNCj4gLSNk ZWZpbmUgSENfUkVHX0hSRXJyICAgICAgICAgICAgMHgwMDBjDQo+IC0jZGVmaW5lIEhDX1JF R19GSUZPc3RhdHVzICAgICAgIDB4MDAxMA0KPiAtLyogSENfUkVHX0hSRW5nU3QgICAgICAg ICAgMHgwMDAwDQo+IC0gKi8NCj4gLSNkZWZpbmUgSENfSERBU1pDX01BU0sgICAgICAgICAg MHgwMDAxMDAwMA0KPiAtI2RlZmluZSBIQ19IU0dFTUlfTUFTSyAgICAgICAgICAweDAwMDBm MDAwDQo+IC0jZGVmaW5lIEhDX0hMR0VNSVN0X01BU0sgICAgICAgIDB4MDAwMDBmMDANCj4g LSNkZWZpbmUgSENfSENSU3RfTUFTSyAgICAgICAgICAgMHgwMDAwMDA4MA0KPiAtI2RlZmlu ZSBIQ19IU0UwU3RfTUFTSyAgICAgICAgICAweDAwMDAwMDQwDQo+IC0jZGVmaW5lIEhDX0hT RTFTdF9NQVNLICAgICAgICAgIDB4MDAwMDAwMjANCj4gLSNkZWZpbmUgSENfSFBFU3RfTUFT SyAgICAgICAgICAgMHgwMDAwMDAxMA0KPiAtI2RlZmluZSBIQ19IWEVTdF9NQVNLICAgICAg ICAgICAweDAwMDAwMDA4DQo+IC0jZGVmaW5lIEhDX0hCRVN0X01BU0sgICAgICAgICAgIDB4 MDAwMDAwMDQNCj4gLSNkZWZpbmUgSENfSEUyU3RfTUFTSyAgICAgICAgICAgMHgwMDAwMDAw Mg0KPiAtI2RlZmluZSBIQ19IRTNTdF9NQVNLICAgICAgICAgICAweDAwMDAwMDAxDQo+IC0v KiBIQ19SRUdfSFJGSUZPZW1wdHkgICAgICAweDAwMDQNCj4gLSAqLw0KPiAtI2RlZmluZSBI Q19IUlpEZW1wdHlfTUFTSyAgICAgICAweDAwMDAwMDEwDQo+IC0jZGVmaW5lIEhDX0hSVFhB ZW1wdHlfTUFTSyAgICAgIDB4MDAwMDAwMDgNCj4gLSNkZWZpbmUgSENfSFJUWERlbXB0eV9N QVNLICAgICAgMHgwMDAwMDAwNA0KPiAtI2RlZmluZSBIQ19IV1pEZW1wdHlfTUFTSyAgICAg ICAweDAwMDAwMDAyDQo+IC0jZGVmaW5lIEhDX0hXQ0RlbXB0eV9NQVNLICAgICAgIDB4MDAw MDAwMDENCj4gLS8qIEhDX1JFR19IUkZJRk9mdWxsICAgICAgIDB4MDAwOA0KPiAtICovDQo+ IC0jZGVmaW5lIEhDX0hSWkRmdWxsX01BU0sgICAgICAgIDB4MDAwMDAwMTANCj4gLSNkZWZp bmUgSENfSFJUWEFmdWxsX01BU0sgICAgICAgMHgwMDAwMDAwOA0KPiAtI2RlZmluZSBIQ19I UlRYRGZ1bGxfTUFTSyAgICAgICAweDAwMDAwMDA0DQo+IC0jZGVmaW5lIEhDX0hXWkRmdWxs X01BU0sgICAgICAgIDB4MDAwMDAwMDINCj4gLSNkZWZpbmUgSENfSFdDRGZ1bGxfTUFTSyAg ICAgICAgMHgwMDAwMDAwMQ0KPiAtLyogSENfUkVHX0hSRXJyICAgICAgICAgICAgMHgwMDBj DQo+IC0gKi8NCj4gLSNkZWZpbmUgSENfSEFHUENNRXJyX01BU0sgICAgICAgMHg4MDAwMDAw MA0KPiAtI2RlZmluZSBIQ19IQUdQQ01FcnJDX01BU0sgICAgICAweDcwMDAwMDAwDQo+IC0v KiBIQ19SRUdfRklGT3N0YXR1cyAgICAgICAweDAwMTANCj4gLSAqLw0KPiAtI2RlZmluZSBI Q19IUkZJRk9BVGFsbF9NQVNLICAgICAweDgwMDAwMDAwDQo+IC0jZGVmaW5lIEhDX0hSRklG T0FUYnVzeV9NQVNLICAgIDB4NDAwMDAwMDANCj4gLSNkZWZpbmUgSENfSFJBVEZHTURvX01B U0sgICAgICAgMHgwMDAwMDEwMA0KPiAtI2RlZmluZSBIQ19IUkFURkdNRGlfTUFTSyAgICAg ICAweDAwMDAwMDgwDQo+IC0jZGVmaW5lIEhDX0hSQVRGUlpEX01BU0sgICAgICAgIDB4MDAw MDAwNDANCj4gLSNkZWZpbmUgSENfSFJBVEZSVFhBX01BU0sgICAgICAgMHgwMDAwMDAyMA0K PiAtI2RlZmluZSBIQ19IUkFURlJUWERfTUFTSyAgICAgICAweDAwMDAwMDEwDQo+IC0jZGVm aW5lIEhDX0hSQVRGV1pEX01BU0sgICAgICAgIDB4MDAwMDAwMDgNCj4gLSNkZWZpbmUgSENf SFJBVEZXQ0RfTUFTSyAgICAgICAgMHgwMDAwMDAwNA0KPiAtI2RlZmluZSBIQ19IUkFUVFhU QUdfTUFTSyAgICAgICAweDAwMDAwMDAyDQo+IC0jZGVmaW5lIEhDX0hSQVRUWENIX01BU0sg ICAgICAgIDB4MDAwMDAwMDENCj4gLQ0KPiAtLyogQUdQIENvbW1hbmQgU2V0dGluZw0KPiAt ICovDQo+IC0jZGVmaW5lIEhDX1N1YkFfSEFHUEJzdEwgICAgICAgIDB4MDA2MA0KPiAtI2Rl ZmluZSBIQ19TdWJBX0hBR1BCZW5kTCAgICAgICAweDAwNjENCj4gLSNkZWZpbmUgSENfU3Vi QV9IQUdQQ01OVCAgICAgICAgMHgwMDYyDQo+IC0jZGVmaW5lIEhDX1N1YkFfSEFHUEJwTCAg ICAgICAgIDB4MDA2Mw0KPiAtI2RlZmluZSBIQ19TdWJBX0hBR1BCcEggICAgICAgICAweDAw NjQNCj4gLS8qIEhDX1N1YkFfSEFHUENNTlQgICAgICAgIDB4MDA2Mg0KPiAtICovDQo+IC0j ZGVmaW5lIEhDX0hBR1BDTU5UX01BU0sgICAgICAgIDB4MDA4MDAwMDANCj4gLSNkZWZpbmUg SENfSENtZEVyckNscl9NQVNLICAgICAgMHgwMDQwMDAwMA0KPiAtI2RlZmluZSBIQ19IQUdQ QmVuZEhfTUFTSyAgICAgICAweDAwMDBmZjAwDQo+IC0jZGVmaW5lIEhDX0hBR1BCc3RIX01B U0sgICAgICAgIDB4MDAwMDAwZmYNCj4gLSNkZWZpbmUgSENfSEFHUEJlbmRIX1NISUZUICAg ICAgOA0KPiAtI2RlZmluZSBIQ19IQUdQQnN0SF9TSElGVCAgICAgICAwDQo+IC0vKiBIQ19T dWJBX0hBR1BCcEwgICAgICAgICAweDAwNjMNCj4gLSAqLw0KPiAtI2RlZmluZSBIQ19IQUdQ QnBMX01BU0sgICAgICAgICAweDAwZmZmZmZjDQo+IC0jZGVmaW5lIEhDX0hBR1BCcElEX01B U0sgICAgICAgIDB4MDAwMDAwMDMNCj4gLSNkZWZpbmUgSENfSEFHUEJwSURfUEFVU0UgICAg ICAgMHgwMDAwMDAwMA0KPiAtI2RlZmluZSBIQ19IQUdQQnBJRF9KVU1QICAgICAgICAweDAw MDAwMDAxDQo+IC0jZGVmaW5lIEhDX0hBR1BCcElEX1NUT1AgICAgICAgIDB4MDAwMDAwMDIN Cj4gLS8qIEhDX1N1YkFfSEFHUEJwSCAgICAgICAgIDB4MDA2NA0KPiAtICovDQo+IC0jZGVm aW5lIEhDX0hBR1BCcEhfTUFTSyAgICAgICAgIDB4MDBmZmZmZmYNCj4gLQ0KPiAtLyogTWlz Y2VsbGFuZW91cyBTZXR0aW5ncw0KPiAtICovDQo+IC0jZGVmaW5lIEhDX1N1YkFfSENsaXBU QiAgICAgICAgIDB4MDA3MA0KPiAtI2RlZmluZSBIQ19TdWJBX0hDbGlwTFIgICAgICAgICAw eDAwNzENCj4gLSNkZWZpbmUgSENfU3ViQV9IRlBDbGlwVEwgICAgICAgMHgwMDcyDQo+IC0j ZGVmaW5lIEhDX1N1YkFfSEZQQ2xpcEJMICAgICAgIDB4MDA3Mw0KPiAtI2RlZmluZSBIQ19T dWJBX0hGUENsaXBMTCAgICAgICAweDAwNzQNCj4gLSNkZWZpbmUgSENfU3ViQV9IRlBDbGlw UkwgICAgICAgMHgwMDc1DQo+IC0jZGVmaW5lIEhDX1N1YkFfSEZQQ2xpcFRCSCAgICAgIDB4 MDA3Ng0KPiAtI2RlZmluZSBIQ19TdWJBX0hGUENsaXBMUkggICAgICAweDAwNzcNCj4gLSNk ZWZpbmUgSENfU3ViQV9ITFAgICAgICAgICAgICAgMHgwMDc4DQo+IC0jZGVmaW5lIEhDX1N1 YkFfSExQUkYgICAgICAgICAgIDB4MDA3OQ0KPiAtI2RlZmluZSBIQ19TdWJBX0hTb2xpZENM ICAgICAgICAweDAwN2ENCj4gLSNkZWZpbmUgSENfU3ViQV9IUGl4R0MgICAgICAgICAgMHgw MDdiDQo+IC0jZGVmaW5lIEhDX1N1YkFfSFNQWFlPUyAgICAgICAgIDB4MDA3Yw0KPiAtI2Rl ZmluZSBIQ19TdWJBX0hWZXJ0ZXhDTlQgICAgICAweDAwN2QNCj4gLQ0KPiAtI2RlZmluZSBI Q19IQ2xpcFRfTUFTSyAgICAgICAgICAweDAwZmZmMDAwDQo+IC0jZGVmaW5lIEhDX0hDbGlw VF9TSElGVCAgICAgICAgIDEyDQo+IC0jZGVmaW5lIEhDX0hDbGlwQl9NQVNLICAgICAgICAg IDB4MDAwMDBmZmYNCj4gLSNkZWZpbmUgSENfSENsaXBCX1NISUZUICAgICAgICAgMA0KPiAt I2RlZmluZSBIQ19IQ2xpcExfTUFTSyAgICAgICAgICAweDAwZmZmMDAwDQo+IC0jZGVmaW5l IEhDX0hDbGlwTF9TSElGVCAgICAgICAgIDEyDQo+IC0jZGVmaW5lIEhDX0hDbGlwUl9NQVNL ICAgICAgICAgIDB4MDAwMDBmZmYNCj4gLSNkZWZpbmUgSENfSENsaXBSX1NISUZUICAgICAg ICAgMA0KPiAtI2RlZmluZSBIQ19IRlBDbGlwQkhfTUFTSyAgICAgICAweDAwMDBmZjAwDQo+ IC0jZGVmaW5lIEhDX0hGUENsaXBCSF9TSElGVCAgICAgIDgNCj4gLSNkZWZpbmUgSENfSEZQ Q2xpcFRIX01BU0sgICAgICAgMHgwMDAwMDBmZg0KPiAtI2RlZmluZSBIQ19IRlBDbGlwVEhf U0hJRlQgICAgICAwDQo+IC0jZGVmaW5lIEhDX0hGUENsaXBSSF9NQVNLICAgICAgIDB4MDAw MGZmMDANCj4gLSNkZWZpbmUgSENfSEZQQ2xpcFJIX1NISUZUICAgICAgOA0KPiAtI2RlZmlu ZSBIQ19IRlBDbGlwTEhfTUFTSyAgICAgICAweDAwMDAwMGZmDQo+IC0jZGVmaW5lIEhDX0hG UENsaXBMSF9TSElGVCAgICAgIDANCj4gLSNkZWZpbmUgSENfSFNvbGlkQ0hfTUFTSyAgICAg ICAgMHgwMDAwMDBmZg0KPiAtI2RlZmluZSBIQ19IUGl4R0NfTUFTSyAgICAgICAgICAweDAw ODAwMDAwDQo+IC0jZGVmaW5lIEhDX0hTUFhPU19NQVNLICAgICAgICAgIDB4MDBmZmYwMDAN Cj4gLSNkZWZpbmUgSENfSFNQWE9TX1NISUZUICAgICAgICAgMTINCj4gLSNkZWZpbmUgSENf SFNQWU9TX01BU0sgICAgICAgICAgMHgwMDAwMGZmZg0KPiAtDQo+IC0vKiBDb21tYW5kDQo+ IC0gKiBDb21tYW5kIEENCj4gLSAqLw0KPiAtI2RlZmluZSBIQ19IQ21kSGVhZGVyX01BU0sg ICAgICAweGZlMDAwMDAwCS8qMHhmZmUwMDAwMCAqLw0KPiAtI2RlZmluZSBIQ19IRTNGaXJl X01BU0sgICAgICAgICAweDAwMTAwMDAwDQo+IC0jZGVmaW5lIEhDX0hQTVR5cGVfTUFTSyAg ICAgICAgIDB4MDAwZjAwMDANCj4gLSNkZWZpbmUgSENfSEVGbGFnX01BU0sgICAgICAgICAg MHgwMDAwZTAwMA0KPiAtI2RlZmluZSBIQ19IU2hhZGluZ19NQVNLICAgICAgICAweDAwMDAx YzAwDQo+IC0jZGVmaW5lIEhDX0hQTVZhbGlkTl9NQVNLICAgICAgIDB4MDAwMDAyMDANCj4g LSNkZWZpbmUgSENfSFBMRU5EX01BU0sgICAgICAgICAgMHgwMDAwMDEwMA0KPiAtI2RlZmlu ZSBIQ19IVkN5Y2xlX01BU0sgICAgICAgICAweDAwMDAwMGZmDQo+IC0jZGVmaW5lIEhDX0hW Q3ljbGVfU3R5bGVfTUFTSyAgIDB4MDAwMDAwYzANCj4gLSNkZWZpbmUgSENfSFZDeWNsZV9D aGdBX01BU0sgICAgMHgwMDAwMDAzMA0KPiAtI2RlZmluZSBIQ19IVkN5Y2xlX0NoZ0JfTUFT SyAgICAweDAwMDAwMDBjDQo+IC0jZGVmaW5lIEhDX0hWQ3ljbGVfQ2hnQ19NQVNLICAgIDB4 MDAwMDAwMDMNCj4gLSNkZWZpbmUgSENfSFBNVHlwZV9Qb2ludCAgICAgICAgMHgwMDAwMDAw MA0KPiAtI2RlZmluZSBIQ19IUE1UeXBlX0xpbmUgICAgICAgICAweDAwMDEwMDAwDQo+IC0j ZGVmaW5lIEhDX0hQTVR5cGVfVHJpICAgICAgICAgIDB4MDAwMjAwMDANCj4gLSNkZWZpbmUg SENfSFBNVHlwZV9UcmlXRiAgICAgICAgMHgwMDA0MDAwMA0KPiAtI2RlZmluZSBIQ19IRUZs YWdfTm9BQSAgICAgICAgICAweDAwMDAwMDAwDQo+IC0jZGVmaW5lIEhDX0hFRmxhZ19hYiAg ICAgICAgICAgIDB4MDAwMDgwMDANCj4gLSNkZWZpbmUgSENfSEVGbGFnX2JjICAgICAgICAg ICAgMHgwMDAwNDAwMA0KPiAtI2RlZmluZSBIQ19IRUZsYWdfY2EgICAgICAgICAgICAweDAw MDAyMDAwDQo+IC0jZGVmaW5lIEhDX0hTaGFkaW5nX1NvbGlkICAgICAgIDB4MDAwMDAwMDAN Cj4gLSNkZWZpbmUgSENfSFNoYWRpbmdfRmxhdEEgICAgICAgMHgwMDAwMDQwMA0KPiAtI2Rl ZmluZSBIQ19IU2hhZGluZ19GbGF0QiAgICAgICAweDAwMDAwODAwDQo+IC0jZGVmaW5lIEhD X0hTaGFkaW5nX0ZsYXRDICAgICAgIDB4MDAwMDBjMDANCj4gLSNkZWZpbmUgSENfSFNoYWRp bmdfR291cmF1ZCAgICAgMHgwMDAwMTAwMA0KPiAtI2RlZmluZSBIQ19IVkN5Y2xlX0Z1bGwg ICAgICAgICAweDAwMDAwMDAwDQo+IC0jZGVmaW5lIEhDX0hWQ3ljbGVfQUZQICAgICAgICAg IDB4MDAwMDAwNDANCj4gLSNkZWZpbmUgSENfSFZDeWNsZV9PbmUgICAgICAgICAgMHgwMDAw MDBjMA0KPiAtI2RlZmluZSBIQ19IVkN5Y2xlX05ld0EgICAgICAgICAweDAwMDAwMDAwDQo+ IC0jZGVmaW5lIEhDX0hWQ3ljbGVfQUEgICAgICAgICAgIDB4MDAwMDAwMTANCj4gLSNkZWZp bmUgSENfSFZDeWNsZV9BQiAgICAgICAgICAgMHgwMDAwMDAyMA0KPiAtI2RlZmluZSBIQ19I VkN5Y2xlX0FDICAgICAgICAgICAweDAwMDAwMDMwDQo+IC0jZGVmaW5lIEhDX0hWQ3ljbGVf TmV3QiAgICAgICAgIDB4MDAwMDAwMDANCj4gLSNkZWZpbmUgSENfSFZDeWNsZV9CQSAgICAg ICAgICAgMHgwMDAwMDAwNA0KPiAtI2RlZmluZSBIQ19IVkN5Y2xlX0JCICAgICAgICAgICAw eDAwMDAwMDA4DQo+IC0jZGVmaW5lIEhDX0hWQ3ljbGVfQkMgICAgICAgICAgIDB4MDAwMDAw MGMNCj4gLSNkZWZpbmUgSENfSFZDeWNsZV9OZXdDICAgICAgICAgMHgwMDAwMDAwMA0KPiAt I2RlZmluZSBIQ19IVkN5Y2xlX0NBICAgICAgICAgICAweDAwMDAwMDAxDQo+IC0jZGVmaW5l IEhDX0hWQ3ljbGVfQ0IgICAgICAgICAgIDB4MDAwMDAwMDINCj4gLSNkZWZpbmUgSENfSFZD eWNsZV9DQyAgICAgICAgICAgMHgwMDAwMDAwMw0KPiAtDQo+IC0vKiBDb21tYW5kIEINCj4g LSAqLw0KPiAtI2RlZmluZSBIQ19ITFByc3RfTUFTSyAgICAgICAgICAweDAwMDEwMDAwDQo+ IC0jZGVmaW5lIEhDX0hMTGFzdFBfTUFTSyAgICAgICAgIDB4MDAwMDgwMDANCj4gLSNkZWZp bmUgSENfSFZQTVNLX01BU0sgICAgICAgICAgMHgwMDAwN2Y4MA0KPiAtI2RlZmluZSBIQ19I QkZhY2VfTUFTSyAgICAgICAgICAweDAwMDAwMDQwDQo+IC0jZGVmaW5lIEhDX0gybmQxVlRf TUFTSyAgICAgICAgIDB4MDAwMDAwM2YNCj4gLSNkZWZpbmUgSENfSFZQTVNLX1ggICAgICAg ICAgICAgMHgwMDAwNDAwMA0KPiAtI2RlZmluZSBIQ19IVlBNU0tfWSAgICAgICAgICAgICAw eDAwMDAyMDAwDQo+IC0jZGVmaW5lIEhDX0hWUE1TS19aICAgICAgICAgICAgIDB4MDAwMDEw MDANCj4gLSNkZWZpbmUgSENfSFZQTVNLX1cgICAgICAgICAgICAgMHgwMDAwMDgwMA0KPiAt I2RlZmluZSBIQ19IVlBNU0tfQ2QgICAgICAgICAgICAweDAwMDAwNDAwDQo+IC0jZGVmaW5l IEhDX0hWUE1TS19DcyAgICAgICAgICAgIDB4MDAwMDAyMDANCj4gLSNkZWZpbmUgSENfSFZQ TVNLX1MgICAgICAgICAgICAgMHgwMDAwMDEwMA0KPiAtI2RlZmluZSBIQ19IVlBNU0tfVCAg ICAgICAgICAgICAweDAwMDAwMDgwDQo+IC0NCj4gLS8qIEVuYWJsZSBTZXR0aW5nDQo+IC0g Ki8NCj4gLSNkZWZpbmUgSENfU3ViQV9IRW5hYmxlICAgICAgICAgMHgwMDAwDQo+IC0jZGVm aW5lIEhDX0hlblRYRW52TWFwX01BU0sgICAgIDB4MDAyMDAwMDANCj4gLSNkZWZpbmUgSENf SGVuVmVydGV4Q05UX01BU0sgICAgMHgwMDEwMDAwMA0KPiAtI2RlZmluZSBIQ19IZW5DUFVE QVpfTUFTSyAgICAgICAweDAwMDgwMDAwDQo+IC0jZGVmaW5lIEhDX0hlbkRBU1pXQ19NQVNL ICAgICAgIDB4MDAwNDAwMDANCj4gLSNkZWZpbmUgSENfSGVuRkJDdWxsX01BU0sgICAgICAg MHgwMDAyMDAwMA0KPiAtI2RlZmluZSBIQ19IZW5DV19NQVNLICAgICAgICAgICAweDAwMDEw MDAwDQo+IC0jZGVmaW5lIEhDX0hlbkFBX01BU0sgICAgICAgICAgIDB4MDAwMDgwMDANCj4g LSNkZWZpbmUgSENfSGVuU1RfTUFTSyAgICAgICAgICAgMHgwMDAwNDAwMA0KPiAtI2RlZmlu ZSBIQ19IZW5aVF9NQVNLICAgICAgICAgICAweDAwMDAyMDAwDQo+IC0jZGVmaW5lIEhDX0hl blpXX01BU0sgICAgICAgICAgIDB4MDAwMDEwMDANCj4gLSNkZWZpbmUgSENfSGVuQVRfTUFT SyAgICAgICAgICAgMHgwMDAwMDgwMA0KPiAtI2RlZmluZSBIQ19IZW5BV19NQVNLICAgICAg ICAgICAweDAwMDAwNDAwDQo+IC0jZGVmaW5lIEhDX0hlblNQX01BU0sgICAgICAgICAgIDB4 MDAwMDAyMDANCj4gLSNkZWZpbmUgSENfSGVuTFBfTUFTSyAgICAgICAgICAgMHgwMDAwMDEw MA0KPiAtI2RlZmluZSBIQ19IZW5UWENIX01BU0sgICAgICAgICAweDAwMDAwMDgwDQo+IC0j ZGVmaW5lIEhDX0hlblRYTVBfTUFTSyAgICAgICAgIDB4MDAwMDAwNDANCj4gLSNkZWZpbmUg SENfSGVuVFhQUF9NQVNLICAgICAgICAgMHgwMDAwMDAyMA0KPiAtI2RlZmluZSBIQ19IZW5U WFRSX01BU0sgICAgICAgICAweDAwMDAwMDEwDQo+IC0jZGVmaW5lIEhDX0hlbkNTX01BU0sg ICAgICAgICAgIDB4MDAwMDAwMDgNCj4gLSNkZWZpbmUgSENfSGVuRk9HX01BU0sgICAgICAg ICAgMHgwMDAwMDAwNA0KPiAtI2RlZmluZSBIQ19IZW5BQkxfTUFTSyAgICAgICAgICAweDAw MDAwMDAyDQo+IC0jZGVmaW5lIEhDX0hlbkRUX01BU0sgICAgICAgICAgIDB4MDAwMDAwMDEN Cj4gLQ0KPiAtLyogWiBTZXR0aW5nDQo+IC0gKi8NCj4gLSNkZWZpbmUgSENfU3ViQV9IWldC QmFzTCAgICAgICAgMHgwMDEwDQo+IC0jZGVmaW5lIEhDX1N1YkFfSFpXQkJhc0ggICAgICAg IDB4MDAxMQ0KPiAtI2RlZmluZSBIQ19TdWJBX0haV0JUeXBlICAgICAgICAweDAwMTINCj4g LSNkZWZpbmUgSENfU3ViQV9IWkJpYXNMICAgICAgICAgMHgwMDEzDQo+IC0jZGVmaW5lIEhD X1N1YkFfSFpXQmVuZCAgICAgICAgIDB4MDAxNA0KPiAtI2RlZmluZSBIQ19TdWJBX0haV1RN RCAgICAgICAgICAweDAwMTUNCj4gLSNkZWZpbmUgSENfU3ViQV9IWldDREwgICAgICAgICAg MHgwMDE2DQo+IC0jZGVmaW5lIEhDX1N1YkFfSFpXQ1RBR251bSAgICAgIDB4MDAxNw0KPiAt I2RlZmluZSBIQ19TdWJBX0haQ1lOdW0gICAgICAgICAweDAwMTgNCj4gLSNkZWZpbmUgSENf U3ViQV9IWldDRmlyZSAgICAgICAgMHgwMDE5DQo+IC0vKiBIQ19TdWJBX0haV0JUeXBlDQo+ IC0gKi8NCj4gLSNkZWZpbmUgSENfSFpXQlR5cGVfTUFTSyAgICAgICAgMHgwMDgwMDAwMA0K PiAtI2RlZmluZSBIQ19IWkJpYXNlZFdCX01BU0sgICAgICAweDAwNDAwMDAwDQo+IC0jZGVm aW5lIEhDX0haT05FYXNGRl9NQVNLICAgICAgIDB4MDAyMDAwMDANCj4gLSNkZWZpbmUgSENf SFpPT05FYXNGRl9NQVNLICAgICAgMHgwMDEwMDAwMA0KPiAtI2RlZmluZSBIQ19IWldCRk1f TUFTSyAgICAgICAgICAweDAwMDMwMDAwDQo+IC0jZGVmaW5lIEhDX0haV0JMb2NfTUFTSyAg ICAgICAgIDB4MDAwMGMwMDANCj4gLSNkZWZpbmUgSENfSFpXQlBpdF9NQVNLICAgICAgICAg MHgwMDAwM2ZmZg0KPiAtI2RlZmluZSBIQ19IWldCRk1fMTYgICAgICAgICAgICAweDAwMDAw MDAwDQo+IC0jZGVmaW5lIEhDX0haV0JGTV8zMiAgICAgICAgICAgIDB4MDAwMjAwMDANCj4g LSNkZWZpbmUgSENfSFpXQkZNXzI0ICAgICAgICAgICAgMHgwMDAzMDAwMA0KPiAtI2RlZmlu ZSBIQ19IWldCTG9jX0xvY2FsICAgICAgICAweDAwMDAwMDAwDQo+IC0jZGVmaW5lIEhDX0ha V0JMb2NfU3lTICAgICAgICAgIDB4MDAwMDQwMDANCj4gLS8qIEhDX1N1YkFfSFpXQmVuZA0K PiAtICovDQo+IC0jZGVmaW5lIEhDX0haV0JlbmRfTUFTSyAgICAgICAgIDB4MDBmZmUwMDAN Cj4gLSNkZWZpbmUgSENfSFpCaWFzSF9NQVNLICAgICAgICAgMHgwMDAwMDBmZg0KPiAtI2Rl ZmluZSBIQ19IWldCZW5kX1NISUZUICAgICAgICAxMA0KPiAtLyogSENfU3ViQV9IWldUTUQN Cj4gLSAqLw0KPiAtI2RlZmluZSBIQ19IWldUTURfTUFTSyAgICAgICAgICAweDAwMDcwMDAw DQo+IC0jZGVmaW5lIEhDX0hFQkVCaWFzX01BU0sgICAgICAgIDB4MDAwMDdmMDANCj4gLSNk ZWZpbmUgSENfSFpORl9NQVNLICAgICAgICAgICAgMHgwMDAwMDBmZg0KPiAtI2RlZmluZSBI Q19IWldUTURfTmV2ZXJQYXNzICAgICAweDAwMDAwMDAwDQo+IC0jZGVmaW5lIEhDX0haV1RN RF9MVCAgICAgICAgICAgIDB4MDAwMTAwMDANCj4gLSNkZWZpbmUgSENfSFpXVE1EX0VRICAg ICAgICAgICAgMHgwMDAyMDAwMA0KPiAtI2RlZmluZSBIQ19IWldUTURfTEUgICAgICAgICAg ICAweDAwMDMwMDAwDQo+IC0jZGVmaW5lIEhDX0haV1RNRF9HVCAgICAgICAgICAgIDB4MDAw NDAwMDANCj4gLSNkZWZpbmUgSENfSFpXVE1EX05FICAgICAgICAgICAgMHgwMDA1MDAwMA0K PiAtI2RlZmluZSBIQ19IWldUTURfR0UgICAgICAgICAgICAweDAwMDYwMDAwDQo+IC0jZGVm aW5lIEhDX0haV1RNRF9BbGxQYXNzICAgICAgIDB4MDAwNzAwMDANCj4gLSNkZWZpbmUgSENf SEVCRUJpYXNfU0hJRlQgICAgICAgOA0KPiAtLyogSENfU3ViQV9IWldDREwgICAgICAgICAg MHgwMDE2DQo+IC0gKi8NCj4gLSNkZWZpbmUgSENfSFpXQ0RMX01BU0sgICAgICAgICAgMHgw MGZmZmZmZg0KPiAtLyogSENfU3ViQV9IWldDVEFHbnVtICAgICAgMHgwMDE3DQo+IC0gKi8N Cj4gLSNkZWZpbmUgSENfSFpXQ1RBR251bV9NQVNLICAgICAgMHgwMGZmMDAwMA0KPiAtI2Rl ZmluZSBIQ19IWldDVEFHbnVtX1NISUZUICAgICAxNg0KPiAtI2RlZmluZSBIQ19IWldDREhf TUFTSyAgICAgICAgICAweDAwMDAwMGZmDQo+IC0jZGVmaW5lIEhDX0haV0NESF9TSElGVCAg ICAgICAgIDANCj4gLS8qIEhDX1N1YkFfSFpDWU51bSAgICAgICAgIDB4MDAxOA0KPiAtICov DQo+IC0jZGVmaW5lIEhDX0haQ1lOdW1fTUFTSyAgICAgICAgIDB4MDAwMzAwMDANCj4gLSNk ZWZpbmUgSENfSFpDWU51bV9TSElGVCAgICAgICAgMTYNCj4gLSNkZWZpbmUgSENfSFpXQ1FX bnVtX01BU0sgICAgICAgMHgwMDAwM2ZmZg0KPiAtI2RlZmluZSBIQ19IWldDUVdudW1fU0hJ RlQgICAgICAwDQo+IC0vKiBIQ19TdWJBX0haV0NGaXJlICAgICAgICAweDAwMTkNCj4gLSAq Lw0KPiAtI2RlZmluZSBIQ19aV0NGaXJlX01BU0sgICAgICAgICAweDAwMDEwMDAwDQo+IC0j ZGVmaW5lIEhDX0haV0NRV251bUxhc3RfTUFTSyAgIDB4MDAwMDNmZmYNCj4gLSNkZWZpbmUg SENfSFpXQ1FXbnVtTGFzdF9TSElGVCAgMA0KPiAtDQo+IC0vKiBTdGVuY2lsIFNldHRpbmcN Cj4gLSAqLw0KPiAtI2RlZmluZSBIQ19TdWJBX0hTVFJFRiAgICAgICAgICAweDAwMjMNCj4g LSNkZWZpbmUgSENfU3ViQV9IU1RNRCAgICAgICAgICAgMHgwMDI0DQo+IC0vKiBIQ19TdWJB X0hTQkZNDQo+IC0gKi8NCj4gLSNkZWZpbmUgSENfSFNCRk1fTUFTSyAgICAgICAgICAgMHgw MDAzMDAwMA0KPiAtI2RlZmluZSBIQ19IU0JMb2NfTUFTSyAgICAgICAgICAweDAwMDBjMDAw DQo+IC0jZGVmaW5lIEhDX0hTQlBpdF9NQVNLICAgICAgICAgIDB4MDAwMDNmZmYNCj4gLS8q IEhDX1N1YkFfSFNUUkVGDQo+IC0gKi8NCj4gLSNkZWZpbmUgSENfSFNUUkVGX01BU0sgICAg ICAgICAgMHgwMGZmMDAwMA0KPiAtI2RlZmluZSBIQ19IU1RPUE1TS19NQVNLICAgICAgICAw eDAwMDBmZjAwDQo+IC0jZGVmaW5lIEhDX0hTVEJNU0tfTUFTSyAgICAgICAgIDB4MDAwMDAw ZmYNCj4gLSNkZWZpbmUgSENfSFNUUkVGX1NISUZUICAgICAgICAgMTYNCj4gLSNkZWZpbmUg SENfSFNUT1BNU0tfU0hJRlQgICAgICAgOA0KPiAtLyogSENfU3ViQV9IU1RNRA0KPiAtICov DQo+IC0jZGVmaW5lIEhDX0hTVE1EX01BU0sgICAgICAgICAgIDB4MDAwNzAwMDANCj4gLSNk ZWZpbmUgSENfSFNUT1BTRl9NQVNLICAgICAgICAgMHgwMDAwMDFjMA0KPiAtI2RlZmluZSBI Q19IU1RPUFNQWkZfTUFTSyAgICAgICAweDAwMDAwMDM4DQo+IC0jZGVmaW5lIEhDX0hTVE9Q U1BaUF9NQVNLICAgICAgIDB4MDAwMDAwMDcNCj4gLSNkZWZpbmUgSENfSFNUTURfTmV2ZXJQ YXNzICAgICAgMHgwMDAwMDAwMA0KPiAtI2RlZmluZSBIQ19IU1RNRF9MVCAgICAgICAgICAg ICAweDAwMDEwMDAwDQo+IC0jZGVmaW5lIEhDX0hTVE1EX0VRICAgICAgICAgICAgIDB4MDAw MjAwMDANCj4gLSNkZWZpbmUgSENfSFNUTURfTEUgICAgICAgICAgICAgMHgwMDAzMDAwMA0K PiAtI2RlZmluZSBIQ19IU1RNRF9HVCAgICAgICAgICAgICAweDAwMDQwMDAwDQo+IC0jZGVm aW5lIEhDX0hTVE1EX05FICAgICAgICAgICAgIDB4MDAwNTAwMDANCj4gLSNkZWZpbmUgSENf SFNUTURfR0UgICAgICAgICAgICAgMHgwMDA2MDAwMA0KPiAtI2RlZmluZSBIQ19IU1RNRF9B bGxQYXNzICAgICAgICAweDAwMDcwMDAwDQo+IC0jZGVmaW5lIEhDX0hTVE9QU0ZfS0VFUCAg ICAgICAgIDB4MDAwMDAwMDANCj4gLSNkZWZpbmUgSENfSFNUT1BTRl9aRVJPICAgICAgICAg MHgwMDAwMDA0MA0KPiAtI2RlZmluZSBIQ19IU1RPUFNGX1JFUExBQ0UgICAgICAweDAwMDAw MDgwDQo+IC0jZGVmaW5lIEhDX0hTVE9QU0ZfSU5DUlNBVCAgICAgIDB4MDAwMDAwYzANCj4g LSNkZWZpbmUgSENfSFNUT1BTRl9ERUNSU0FUICAgICAgMHgwMDAwMDEwMA0KPiAtI2RlZmlu ZSBIQ19IU1RPUFNGX0lOVkVSVCAgICAgICAweDAwMDAwMTQwDQo+IC0jZGVmaW5lIEhDX0hT VE9QU0ZfSU5DUiAgICAgICAgIDB4MDAwMDAxODANCj4gLSNkZWZpbmUgSENfSFNUT1BTRl9E RUNSICAgICAgICAgMHgwMDAwMDFjMA0KPiAtI2RlZmluZSBIQ19IU1RPUFNQWkZfS0VFUCAg ICAgICAweDAwMDAwMDAwDQo+IC0jZGVmaW5lIEhDX0hTVE9QU1BaRl9aRVJPICAgICAgIDB4 MDAwMDAwMDgNCj4gLSNkZWZpbmUgSENfSFNUT1BTUFpGX1JFUExBQ0UgICAgMHgwMDAwMDAx MA0KPiAtI2RlZmluZSBIQ19IU1RPUFNQWkZfSU5DUlNBVCAgICAweDAwMDAwMDE4DQo+IC0j ZGVmaW5lIEhDX0hTVE9QU1BaRl9ERUNSU0FUICAgIDB4MDAwMDAwMjANCj4gLSNkZWZpbmUg SENfSFNUT1BTUFpGX0lOVkVSVCAgICAgMHgwMDAwMDAyOA0KPiAtI2RlZmluZSBIQ19IU1RP UFNQWkZfSU5DUiAgICAgICAweDAwMDAwMDMwDQo+IC0jZGVmaW5lIEhDX0hTVE9QU1BaRl9E RUNSICAgICAgIDB4MDAwMDAwMzgNCj4gLSNkZWZpbmUgSENfSFNUT1BTUFpQX0tFRVAgICAg ICAgMHgwMDAwMDAwMA0KPiAtI2RlZmluZSBIQ19IU1RPUFNQWlBfWkVSTyAgICAgICAweDAw MDAwMDAxDQo+IC0jZGVmaW5lIEhDX0hTVE9QU1BaUF9SRVBMQUNFICAgIDB4MDAwMDAwMDIN Cj4gLSNkZWZpbmUgSENfSFNUT1BTUFpQX0lOQ1JTQVQgICAgMHgwMDAwMDAwMw0KPiAtI2Rl ZmluZSBIQ19IU1RPUFNQWlBfREVDUlNBVCAgICAweDAwMDAwMDA0DQo+IC0jZGVmaW5lIEhD X0hTVE9QU1BaUF9JTlZFUlQgICAgIDB4MDAwMDAwMDUNCj4gLSNkZWZpbmUgSENfSFNUT1BT UFpQX0lOQ1IgICAgICAgMHgwMDAwMDAwNg0KPiAtI2RlZmluZSBIQ19IU1RPUFNQWlBfREVD UiAgICAgICAweDAwMDAwMDA3DQo+IC0NCj4gLS8qIEFscGhhIFNldHRpbmcNCj4gLSAqLw0K PiAtI2RlZmluZSBIQ19TdWJBX0hBQkJhc0wgICAgICAgICAweDAwMzANCj4gLSNkZWZpbmUg SENfU3ViQV9IQUJCYXNIICAgICAgICAgMHgwMDMxDQo+IC0jZGVmaW5lIEhDX1N1YkFfSEFC Rk0gICAgICAgICAgIDB4MDAzMg0KPiAtI2RlZmluZSBIQ19TdWJBX0hBVE1EICAgICAgICAg ICAweDAwMzMNCj4gLSNkZWZpbmUgSENfU3ViQV9IQUJMQ3NhdCAgICAgICAgMHgwMDM0DQo+ IC0jZGVmaW5lIEhDX1N1YkFfSEFCTENvcCAgICAgICAgIDB4MDAzNQ0KPiAtI2RlZmluZSBI Q19TdWJBX0hBQkxBc2F0ICAgICAgICAweDAwMzYNCj4gLSNkZWZpbmUgSENfU3ViQV9IQUJM QW9wICAgICAgICAgMHgwMDM3DQo+IC0jZGVmaW5lIEhDX1N1YkFfSEFCTFJDYSAgICAgICAg IDB4MDAzOA0KPiAtI2RlZmluZSBIQ19TdWJBX0hBQkxSRkNhICAgICAgICAweDAwMzkNCj4g LSNkZWZpbmUgSENfU3ViQV9IQUJMUkNiaWFzICAgICAgMHgwMDNhDQo+IC0jZGVmaW5lIEhD X1N1YkFfSEFCTFJDYiAgICAgICAgIDB4MDAzYg0KPiAtI2RlZmluZSBIQ19TdWJBX0hBQkxS RkNiICAgICAgICAweDAwM2MNCj4gLSNkZWZpbmUgSENfU3ViQV9IQUJMUkFhICAgICAgICAg MHgwMDNkDQo+IC0jZGVmaW5lIEhDX1N1YkFfSEFCTFJBYiAgICAgICAgIDB4MDAzZQ0KPiAt LyogSENfU3ViQV9IQUJGTQ0KPiAtICovDQo+IC0jZGVmaW5lIEhDX0hBQkZNX01BU0sgICAg ICAgICAgIDB4MDAwMzAwMDANCj4gLSNkZWZpbmUgSENfSEFCTG9jX01BU0sgICAgICAgICAg MHgwMDAwYzAwMA0KPiAtI2RlZmluZSBIQ19IQUJQaXRfTUFTSyAgICAgICAgICAweDAwMDAw N2ZmDQo+IC0vKiBIQ19TdWJBX0hBVE1EDQo+IC0gKi8NCj4gLSNkZWZpbmUgSENfSEFUTURf TUFTSyAgICAgICAgICAgMHgwMDAwMDcwMA0KPiAtI2RlZmluZSBIQ19IQVRSRUZfTUFTSyAg ICAgICAgICAweDAwMDAwMGZmDQo+IC0jZGVmaW5lIEhDX0hBVE1EX05ldmVyUGFzcyAgICAg IDB4MDAwMDAwMDANCj4gLSNkZWZpbmUgSENfSEFUTURfTFQgICAgICAgICAgICAgMHgwMDAw MDEwMA0KPiAtI2RlZmluZSBIQ19IQVRNRF9FUSAgICAgICAgICAgICAweDAwMDAwMjAwDQo+ IC0jZGVmaW5lIEhDX0hBVE1EX0xFICAgICAgICAgICAgIDB4MDAwMDAzMDANCj4gLSNkZWZp bmUgSENfSEFUTURfR1QgICAgICAgICAgICAgMHgwMDAwMDQwMA0KPiAtI2RlZmluZSBIQ19I QVRNRF9ORSAgICAgICAgICAgICAweDAwMDAwNTAwDQo+IC0jZGVmaW5lIEhDX0hBVE1EX0dF ICAgICAgICAgICAgIDB4MDAwMDA2MDANCj4gLSNkZWZpbmUgSENfSEFUTURfQWxsUGFzcyAg ICAgICAgMHgwMDAwMDcwMA0KPiAtLyogSENfU3ViQV9IQUJMQ3NhdA0KPiAtICovDQo+IC0j ZGVmaW5lIEhDX0hBQkxDc2F0X01BU0sgICAgICAgIDB4MDAwMTAwMDANCj4gLSNkZWZpbmUg SENfSEFCTENhX01BU0sgICAgICAgICAgMHgwMDAwZmMwMA0KPiAtI2RlZmluZSBIQ19IQUJM Q2FfQ19NQVNLICAgICAgICAweDAwMDBjMDAwDQo+IC0jZGVmaW5lIEhDX0hBQkxDYV9PUENf TUFTSyAgICAgIDB4MDAwMDNjMDANCj4gLSNkZWZpbmUgSENfSEFCTEZDYV9NQVNLICAgICAg ICAgMHgwMDAwMDNmMA0KPiAtI2RlZmluZSBIQ19IQUJMRkNhX0NfTUFTSyAgICAgICAweDAw MDAwMzAwDQo+IC0jZGVmaW5lIEhDX0hBQkxGQ2FfT1BDX01BU0sgICAgIDB4MDAwMDAwZjAN Cj4gLSNkZWZpbmUgSENfSEFCTENiaWFzX01BU0sgICAgICAgMHgwMDAwMDAwZg0KPiAtI2Rl ZmluZSBIQ19IQUJMQ2JpYXNfQ19NQVNLICAgICAweDAwMDAwMDA4DQo+IC0jZGVmaW5lIEhD X0hBQkxDYmlhc19PUENfTUFTSyAgIDB4MDAwMDAwMDcNCj4gLS8qLS0gRGVmaW5lIHRoZSBp bnB1dCBjb2xvci4NCj4gLSAqLw0KPiAtI2RlZmluZSBIQ19YQ19Dc3JjICAgICAgICAgICAg ICAweDAwMDAwMDAwDQo+IC0jZGVmaW5lIEhDX1hDX0Nkc3QgICAgICAgICAgICAgIDB4MDAw MDAwMDENCj4gLSNkZWZpbmUgSENfWENfQXNyYyAgICAgICAgICAgICAgMHgwMDAwMDAwMg0K PiAtI2RlZmluZSBIQ19YQ19BZHN0ICAgICAgICAgICAgICAweDAwMDAwMDAzDQo+IC0jZGVm aW5lIEhDX1hDX0ZvZyAgICAgICAgICAgICAgIDB4MDAwMDAwMDQNCj4gLSNkZWZpbmUgSENf WENfSEFCTFJDICAgICAgICAgICAgMHgwMDAwMDAwNQ0KPiAtI2RlZmluZSBIQ19YQ19taW5T cmNEc3QgICAgICAgICAweDAwMDAwMDA2DQo+IC0jZGVmaW5lIEhDX1hDX21heFNyY0RzdCAg ICAgICAgIDB4MDAwMDAwMDcNCj4gLSNkZWZpbmUgSENfWENfbWltQXNyY0ludkFkc3QgICAg MHgwMDAwMDAwOA0KPiAtI2RlZmluZSBIQ19YQ19PUEMgICAgICAgICAgICAgICAweDAwMDAw MDAwDQo+IC0jZGVmaW5lIEhDX1hDX0ludk9QQyAgICAgICAgICAgIDB4MDAwMDAwMTANCj4g LSNkZWZpbmUgSENfWENfT1BDcDUgICAgICAgICAgICAgMHgwMDAwMDAyMA0KPiAtLyotLSBE ZWZpbmUgdGhlIGlucHV0IEFscGhhDQo+IC0gKi8NCj4gLSNkZWZpbmUgSENfWEFfT1BBICAg ICAgICAgICAgICAgMHgwMDAwMDAwMA0KPiAtI2RlZmluZSBIQ19YQV9JbnZPUEEgICAgICAg ICAgICAweDAwMDAwMDEwDQo+IC0jZGVmaW5lIEhDX1hBX09QQXA1ICAgICAgICAgICAgIDB4 MDAwMDAwMjANCj4gLSNkZWZpbmUgSENfWEFfMCAgICAgICAgICAgICAgICAgMHgwMDAwMDAw MA0KPiAtI2RlZmluZSBIQ19YQV9Bc3JjICAgICAgICAgICAgICAweDAwMDAwMDAxDQo+IC0j ZGVmaW5lIEhDX1hBX0Fkc3QgICAgICAgICAgICAgIDB4MDAwMDAwMDINCj4gLSNkZWZpbmUg SENfWEFfRm9nICAgICAgICAgICAgICAgMHgwMDAwMDAwMw0KPiAtI2RlZmluZSBIQ19YQV9t aW5Bc3JjRm9nICAgICAgICAweDAwMDAwMDA0DQo+IC0jZGVmaW5lIEhDX1hBX21pbkFzcmNB ZHN0ICAgICAgIDB4MDAwMDAwMDUNCj4gLSNkZWZpbmUgSENfWEFfbWF4QXNyY0ZvZyAgICAg ICAgMHgwMDAwMDAwNg0KPiAtI2RlZmluZSBIQ19YQV9tYXhBc3JjQWRzdCAgICAgICAweDAw MDAwMDA3DQo+IC0jZGVmaW5lIEhDX1hBX0hBQkxSQSAgICAgICAgICAgIDB4MDAwMDAwMDgN Cj4gLSNkZWZpbmUgSENfWEFfbWluQXNyY0ludkFkc3QgICAgMHgwMDAwMDAwOA0KPiAtI2Rl ZmluZSBIQ19YQV9IQUJMRlJBICAgICAgICAgICAweDAwMDAwMDA5DQo+IC0vKi0tDQo+IC0g Ki8NCj4gLSNkZWZpbmUgSENfSEFCTENhX09QQyAgICAgICAgICAgKEhDX1hDX09QQyA8PCAx MCkNCj4gLSNkZWZpbmUgSENfSEFCTENhX0ludk9QQyAgICAgICAgKEhDX1hDX0ludk9QQyA8 PCAxMCkNCj4gLSNkZWZpbmUgSENfSEFCTENhX09QQ3A1ICAgICAgICAgKEhDX1hDX09QQ3A1 IDw8IDEwKQ0KPiAtI2RlZmluZSBIQ19IQUJMQ2FfQ3NyYyAgICAgICAgICAoSENfWENfQ3Ny YyA8PCAxMCkNCj4gLSNkZWZpbmUgSENfSEFCTENhX0Nkc3QgICAgICAgICAgKEhDX1hDX0Nk c3QgPDwgMTApDQo+IC0jZGVmaW5lIEhDX0hBQkxDYV9Bc3JjICAgICAgICAgIChIQ19YQ19B c3JjIDw8IDEwKQ0KPiAtI2RlZmluZSBIQ19IQUJMQ2FfQWRzdCAgICAgICAgICAoSENfWENf QWRzdCA8PCAxMCkNCj4gLSNkZWZpbmUgSENfSEFCTENhX0ZvZyAgICAgICAgICAgKEhDX1hD X0ZvZyA8PCAxMCkNCj4gLSNkZWZpbmUgSENfSEFCTENhX0hBQkxSQ2EgICAgICAgKEhDX1hD X0hBQkxSQyA8PCAxMCkNCj4gLSNkZWZpbmUgSENfSEFCTENhX21pblNyY0RzdCAgICAgKEhD X1hDX21pblNyY0RzdCA8PCAxMCkNCj4gLSNkZWZpbmUgSENfSEFCTENhX21heFNyY0RzdCAg ICAgKEhDX1hDX21heFNyY0RzdCA8PCAxMCkNCj4gLSNkZWZpbmUgSENfSEFCTEZDYV9PUEMg ICAgICAgICAgICAgIChIQ19YQ19PUEMgPDwgNCkNCj4gLSNkZWZpbmUgSENfSEFCTEZDYV9J bnZPUEMgICAgICAgICAgIChIQ19YQ19JbnZPUEMgPDwgNCkNCj4gLSNkZWZpbmUgSENfSEFC TEZDYV9PUENwNSAgICAgICAgICAgIChIQ19YQ19PUENwNSA8PCA0KQ0KPiAtI2RlZmluZSBI Q19IQUJMRkNhX0NzcmMgICAgICAgICAgICAgKEhDX1hDX0NzcmMgPDwgNCkNCj4gLSNkZWZp bmUgSENfSEFCTEZDYV9DZHN0ICAgICAgICAgICAgIChIQ19YQ19DZHN0IDw8IDQpDQo+IC0j ZGVmaW5lIEhDX0hBQkxGQ2FfQXNyYyAgICAgICAgICAgICAoSENfWENfQXNyYyA8PCA0KQ0K PiAtI2RlZmluZSBIQ19IQUJMRkNhX0Fkc3QgICAgICAgICAgICAgKEhDX1hDX0Fkc3QgPDwg NCkNCj4gLSNkZWZpbmUgSENfSEFCTEZDYV9Gb2cgICAgICAgICAgICAgIChIQ19YQ19Gb2cg PDwgNCkNCj4gLSNkZWZpbmUgSENfSEFCTEZDYV9IQUJMUkNhICAgICAgICAgIChIQ19YQ19I QUJMUkMgPDwgNCkNCj4gLSNkZWZpbmUgSENfSEFCTEZDYV9taW5TcmNEc3QgICAgICAgIChI Q19YQ19taW5TcmNEc3QgPDwgNCkNCj4gLSNkZWZpbmUgSENfSEFCTEZDYV9tYXhTcmNEc3Qg ICAgICAgIChIQ19YQ19tYXhTcmNEc3QgPDwgNCkNCj4gLSNkZWZpbmUgSENfSEFCTEZDYV9t aW1Bc3JjSW52QWRzdCAgIChIQ19YQ19taW1Bc3JjSW52QWRzdCA8PCA0KQ0KPiAtI2RlZmlu ZSBIQ19IQUJMQ2JpYXNfSEFCTFJDYmlhcyAweDAwMDAwMDAwDQo+IC0jZGVmaW5lIEhDX0hB QkxDYmlhc19Bc3JjICAgICAgIDB4MDAwMDAwMDENCj4gLSNkZWZpbmUgSENfSEFCTENiaWFz X0Fkc3QgICAgICAgMHgwMDAwMDAwMg0KPiAtI2RlZmluZSBIQ19IQUJMQ2JpYXNfRm9nICAg ICAgICAweDAwMDAwMDAzDQo+IC0jZGVmaW5lIEhDX0hBQkxDYmlhc19DaW4gICAgICAgIDB4 MDAwMDAwMDQNCj4gLS8qIEhDX1N1YkFfSEFCTENvcCAgICAgICAgIDB4MDAzNQ0KPiAtICov DQo+IC0jZGVmaW5lIEhDX0hBQkxkb3RfTUFTSyAgICAgICAgIDB4MDAwMTAwMDANCj4gLSNk ZWZpbmUgSENfSEFCTENvcF9NQVNLICAgICAgICAgMHgwMDAwNDAwMA0KPiAtI2RlZmluZSBI Q19IQUJMQ2JfTUFTSyAgICAgICAgICAweDAwMDAzZjAwDQo+IC0jZGVmaW5lIEhDX0hBQkxD Yl9DX01BU0sgICAgICAgIDB4MDAwMDMwMDANCj4gLSNkZWZpbmUgSENfSEFCTENiX09QQ19N QVNLICAgICAgMHgwMDAwMGYwMA0KPiAtI2RlZmluZSBIQ19IQUJMRkNiX01BU0sgICAgICAg ICAweDAwMDAwMGZjDQo+IC0jZGVmaW5lIEhDX0hBQkxGQ2JfQ19NQVNLICAgICAgIDB4MDAw MDAwYzANCj4gLSNkZWZpbmUgSENfSEFCTEZDYl9PUENfTUFTSyAgICAgMHgwMDAwMDAzYw0K PiAtI2RlZmluZSBIQ19IQUJMQ3NoaWZ0X01BU0sgICAgICAweDAwMDAwMDAzDQo+IC0jZGVm aW5lIEhDX0hBQkxDYl9PUEMgICAgICAgICAgIChIQ19YQ19PUEMgPDwgOCkNCj4gLSNkZWZp bmUgSENfSEFCTENiX0ludk9QQyAgICAgICAgKEhDX1hDX0ludk9QQyA8PCA4KQ0KPiAtI2Rl ZmluZSBIQ19IQUJMQ2JfT1BDcDUgICAgICAgICAoSENfWENfT1BDcDUgPDwgOCkNCj4gLSNk ZWZpbmUgSENfSEFCTENiX0NzcmMgICAgICAgICAgKEhDX1hDX0NzcmMgPDwgOCkNCj4gLSNk ZWZpbmUgSENfSEFCTENiX0Nkc3QgICAgICAgICAgKEhDX1hDX0Nkc3QgPDwgOCkNCj4gLSNk ZWZpbmUgSENfSEFCTENiX0FzcmMgICAgICAgICAgKEhDX1hDX0FzcmMgPDwgOCkNCj4gLSNk ZWZpbmUgSENfSEFCTENiX0Fkc3QgICAgICAgICAgKEhDX1hDX0Fkc3QgPDwgOCkNCj4gLSNk ZWZpbmUgSENfSEFCTENiX0ZvZyAgICAgICAgICAgKEhDX1hDX0ZvZyA8PCA4KQ0KPiAtI2Rl ZmluZSBIQ19IQUJMQ2JfSEFCTFJDYSAgICAgICAoSENfWENfSEFCTFJDIDw8IDgpDQo+IC0j ZGVmaW5lIEhDX0hBQkxDYl9taW5TcmNEc3QgICAgIChIQ19YQ19taW5TcmNEc3QgPDwgOCkN Cj4gLSNkZWZpbmUgSENfSEFCTENiX21heFNyY0RzdCAgICAgKEhDX1hDX21heFNyY0RzdCA8 PCA4KQ0KPiAtI2RlZmluZSBIQ19IQUJMRkNiX09QQyAgICAgICAgICAgICAgKEhDX1hDX09Q QyA8PCAyKQ0KPiAtI2RlZmluZSBIQ19IQUJMRkNiX0ludk9QQyAgICAgICAgICAgKEhDX1hD X0ludk9QQyA8PCAyKQ0KPiAtI2RlZmluZSBIQ19IQUJMRkNiX09QQ3A1ICAgICAgICAgICAg KEhDX1hDX09QQ3A1IDw8IDIpDQo+IC0jZGVmaW5lIEhDX0hBQkxGQ2JfQ3NyYyAgICAgICAg ICAgICAoSENfWENfQ3NyYyA8PCAyKQ0KPiAtI2RlZmluZSBIQ19IQUJMRkNiX0Nkc3QgICAg ICAgICAgICAgKEhDX1hDX0Nkc3QgPDwgMikNCj4gLSNkZWZpbmUgSENfSEFCTEZDYl9Bc3Jj ICAgICAgICAgICAgIChIQ19YQ19Bc3JjIDw8IDIpDQo+IC0jZGVmaW5lIEhDX0hBQkxGQ2Jf QWRzdCAgICAgICAgICAgICAoSENfWENfQWRzdCA8PCAyKQ0KPiAtI2RlZmluZSBIQ19IQUJM RkNiX0ZvZyAgICAgICAgICAgICAgKEhDX1hDX0ZvZyA8PCAyKQ0KPiAtI2RlZmluZSBIQ19I QUJMRkNiX0hBQkxSQ2IgICAgICAgICAgKEhDX1hDX0hBQkxSQyA8PCAyKQ0KPiAtI2RlZmlu ZSBIQ19IQUJMRkNiX21pblNyY0RzdCAgICAgICAgKEhDX1hDX21pblNyY0RzdCA8PCAyKQ0K PiAtI2RlZmluZSBIQ19IQUJMRkNiX21heFNyY0RzdCAgICAgICAgKEhDX1hDX21heFNyY0Rz dCA8PCAyKQ0KPiAtI2RlZmluZSBIQ19IQUJMRkNiX21pbUFzcmNJbnZBZHN0ICAgKEhDX1hD X21pbUFzcmNJbnZBZHN0IDw8IDIpDQo+IC0vKiBIQ19TdWJBX0hBQkxBc2F0ICAgICAgICAw eDAwMzYNCj4gLSAqLw0KPiAtI2RlZmluZSBIQ19IQUJMQXNhdF9NQVNLICAgICAgICAweDAw MDEwMDAwDQo+IC0jZGVmaW5lIEhDX0hBQkxBYV9NQVNLICAgICAgICAgIDB4MDAwMGZjMDAN Cj4gLSNkZWZpbmUgSENfSEFCTEFhX0FfTUFTSyAgICAgICAgMHgwMDAwYzAwMA0KPiAtI2Rl ZmluZSBIQ19IQUJMQWFfT1BBX01BU0sgICAgICAweDAwMDAzYzAwDQo+IC0jZGVmaW5lIEhD X0hBQkxGQWFfTUFTSyAgICAgICAgIDB4MDAwMDAzZjANCj4gLSNkZWZpbmUgSENfSEFCTEZB YV9BX01BU0sgICAgICAgMHgwMDAwMDMwMA0KPiAtI2RlZmluZSBIQ19IQUJMRkFhX09QQV9N QVNLICAgICAweDAwMDAwMGYwDQo+IC0jZGVmaW5lIEhDX0hBQkxBYmlhc19NQVNLICAgICAg IDB4MDAwMDAwMGYNCj4gLSNkZWZpbmUgSENfSEFCTEFiaWFzX0FfTUFTSyAgICAgMHgwMDAw MDAwOA0KPiAtI2RlZmluZSBIQ19IQUJMQWJpYXNfT1BBX01BU0sgICAweDAwMDAwMDA3DQo+ IC0jZGVmaW5lIEhDX0hBQkxBYV9PUEEgICAgICAgICAgIChIQ19YQV9PUEEgPDwgMTApDQo+ IC0jZGVmaW5lIEhDX0hBQkxBYV9JbnZPUEEgICAgICAgIChIQ19YQV9JbnZPUEEgPDwgMTAp DQo+IC0jZGVmaW5lIEhDX0hBQkxBYV9PUEFwNSAgICAgICAgIChIQ19YQV9PUEFwNSA8PCAx MCkNCj4gLSNkZWZpbmUgSENfSEFCTEFhXzAgICAgICAgICAgICAgKEhDX1hBXzAgPDwgMTAp DQo+IC0jZGVmaW5lIEhDX0hBQkxBYV9Bc3JjICAgICAgICAgIChIQ19YQV9Bc3JjIDw8IDEw KQ0KPiAtI2RlZmluZSBIQ19IQUJMQWFfQWRzdCAgICAgICAgICAoSENfWEFfQWRzdCA8PCAx MCkNCj4gLSNkZWZpbmUgSENfSEFCTEFhX0ZvZyAgICAgICAgICAgKEhDX1hBX0ZvZyA8PCAx MCkNCj4gLSNkZWZpbmUgSENfSEFCTEFhX21pbkFzcmNGb2cgICAgKEhDX1hBX21pbkFzcmNG b2cgPDwgMTApDQo+IC0jZGVmaW5lIEhDX0hBQkxBYV9taW5Bc3JjQWRzdCAgIChIQ19YQV9t aW5Bc3JjQWRzdCA8PCAxMCkNCj4gLSNkZWZpbmUgSENfSEFCTEFhX21heEFzcmNGb2cgICAg KEhDX1hBX21heEFzcmNGb2cgPDwgMTApDQo+IC0jZGVmaW5lIEhDX0hBQkxBYV9tYXhBc3Jj QWRzdCAgIChIQ19YQV9tYXhBc3JjQWRzdCA8PCAxMCkNCj4gLSNkZWZpbmUgSENfSEFCTEFh X0hBQkxSQSAgICAgICAgKEhDX1hBX0hBQkxSQSA8PCAxMCkNCj4gLSNkZWZpbmUgSENfSEFC TEZBYV9PUEEgICAgICAgICAgKEhDX1hBX09QQSA8PCA0KQ0KPiAtI2RlZmluZSBIQ19IQUJM RkFhX0ludk9QQSAgICAgICAoSENfWEFfSW52T1BBIDw8IDQpDQo+IC0jZGVmaW5lIEhDX0hB QkxGQWFfT1BBcDUgICAgICAgIChIQ19YQV9PUEFwNSA8PCA0KQ0KPiAtI2RlZmluZSBIQ19I QUJMRkFhXzAgICAgICAgICAgICAoSENfWEFfMCA8PCA0KQ0KPiAtI2RlZmluZSBIQ19IQUJM RkFhX0FzcmMgICAgICAgICAoSENfWEFfQXNyYyA8PCA0KQ0KPiAtI2RlZmluZSBIQ19IQUJM RkFhX0Fkc3QgICAgICAgICAoSENfWEFfQWRzdCA8PCA0KQ0KPiAtI2RlZmluZSBIQ19IQUJM RkFhX0ZvZyAgICAgICAgICAoSENfWEFfRm9nIDw8IDQpDQo+IC0jZGVmaW5lIEhDX0hBQkxG QWFfbWluQXNyY0ZvZyAgIChIQ19YQV9taW5Bc3JjRm9nIDw8IDQpDQo+IC0jZGVmaW5lIEhD X0hBQkxGQWFfbWluQXNyY0Fkc3QgIChIQ19YQV9taW5Bc3JjQWRzdCA8PCA0KQ0KPiAtI2Rl ZmluZSBIQ19IQUJMRkFhX21heEFzcmNGb2cgICAoSENfWEFfbWF4QXNyY0ZvZyA8PCA0KQ0K PiAtI2RlZmluZSBIQ19IQUJMRkFhX21heEFzcmNBZHN0ICAoSENfWEFfbWF4QXNyY0Fkc3Qg PDwgNCkNCj4gLSNkZWZpbmUgSENfSEFCTEZBYV9taW5Bc3JjSW52QWRzdCAgIChIQ19YQV9t aW5Bc3JjSW52QWRzdCA8PCA0KQ0KPiAtI2RlZmluZSBIQ19IQUJMRkFhX0hBQkxGUkEgICAg ICAgICAgKEhDX1hBX0hBQkxGUkEgPDwgNCkNCj4gLSNkZWZpbmUgSENfSEFCTEFiaWFzX0hB QkxSQWJpYXMgMHgwMDAwMDAwMA0KPiAtI2RlZmluZSBIQ19IQUJMQWJpYXNfQXNyYyAgICAg ICAweDAwMDAwMDAxDQo+IC0jZGVmaW5lIEhDX0hBQkxBYmlhc19BZHN0ICAgICAgIDB4MDAw MDAwMDINCj4gLSNkZWZpbmUgSENfSEFCTEFiaWFzX0ZvZyAgICAgICAgMHgwMDAwMDAwMw0K PiAtI2RlZmluZSBIQ19IQUJMQWJpYXNfQWFhICAgICAgICAweDAwMDAwMDA0DQo+IC0vKiBI Q19TdWJBX0hBQkxBb3AgICAgICAgICAweDAwMzcNCj4gLSAqLw0KPiAtI2RlZmluZSBIQ19I QUJMQW9wX01BU0sgICAgICAgICAweDAwMDA0MDAwDQo+IC0jZGVmaW5lIEhDX0hBQkxBYl9N QVNLICAgICAgICAgIDB4MDAwMDNmMDANCj4gLSNkZWZpbmUgSENfSEFCTEFiX09QQV9NQVNL ICAgICAgMHgwMDAwMGYwMA0KPiAtI2RlZmluZSBIQ19IQUJMRkFiX01BU0sgICAgICAgICAw eDAwMDAwMGZjDQo+IC0jZGVmaW5lIEhDX0hBQkxGQWJfT1BBX01BU0sgICAgIDB4MDAwMDAw M2MNCj4gLSNkZWZpbmUgSENfSEFCTEFzaGlmdF9NQVNLICAgICAgMHgwMDAwMDAwMw0KPiAt I2RlZmluZSBIQ19IQUJMQWJfT1BBICAgICAgICAgICAoSENfWEFfT1BBIDw8IDgpDQo+IC0j ZGVmaW5lIEhDX0hBQkxBYl9JbnZPUEEgICAgICAgIChIQ19YQV9JbnZPUEEgPDwgOCkNCj4g LSNkZWZpbmUgSENfSEFCTEFiX09QQXA1ICAgICAgICAgKEhDX1hBX09QQXA1IDw8IDgpDQo+ IC0jZGVmaW5lIEhDX0hBQkxBYl8wICAgICAgICAgICAgIChIQ19YQV8wIDw8IDgpDQo+IC0j ZGVmaW5lIEhDX0hBQkxBYl9Bc3JjICAgICAgICAgIChIQ19YQV9Bc3JjIDw8IDgpDQo+IC0j ZGVmaW5lIEhDX0hBQkxBYl9BZHN0ICAgICAgICAgIChIQ19YQV9BZHN0IDw8IDgpDQo+IC0j ZGVmaW5lIEhDX0hBQkxBYl9Gb2cgICAgICAgICAgIChIQ19YQV9Gb2cgPDwgOCkNCj4gLSNk ZWZpbmUgSENfSEFCTEFiX21pbkFzcmNGb2cgICAgKEhDX1hBX21pbkFzcmNGb2cgPDwgOCkN Cj4gLSNkZWZpbmUgSENfSEFCTEFiX21pbkFzcmNBZHN0ICAgKEhDX1hBX21pbkFzcmNBZHN0 IDw8IDgpDQo+IC0jZGVmaW5lIEhDX0hBQkxBYl9tYXhBc3JjRm9nICAgIChIQ19YQV9tYXhB c3JjRm9nIDw8IDgpDQo+IC0jZGVmaW5lIEhDX0hBQkxBYl9tYXhBc3JjQWRzdCAgIChIQ19Y QV9tYXhBc3JjQWRzdCA8PCA4KQ0KPiAtI2RlZmluZSBIQ19IQUJMQWJfSEFCTFJBICAgICAg ICAoSENfWEFfSEFCTFJBIDw8IDgpDQo+IC0jZGVmaW5lIEhDX0hBQkxGQWJfT1BBICAgICAg ICAgIChIQ19YQV9PUEEgPDwgMikNCj4gLSNkZWZpbmUgSENfSEFCTEZBYl9JbnZPUEEgICAg ICAgKEhDX1hBX0ludk9QQSA8PCAyKQ0KPiAtI2RlZmluZSBIQ19IQUJMRkFiX09QQXA1ICAg ICAgICAoSENfWEFfT1BBcDUgPDwgMikNCj4gLSNkZWZpbmUgSENfSEFCTEZBYl8wICAgICAg ICAgICAgKEhDX1hBXzAgPDwgMikNCj4gLSNkZWZpbmUgSENfSEFCTEZBYl9Bc3JjICAgICAg ICAgKEhDX1hBX0FzcmMgPDwgMikNCj4gLSNkZWZpbmUgSENfSEFCTEZBYl9BZHN0ICAgICAg ICAgKEhDX1hBX0Fkc3QgPDwgMikNCj4gLSNkZWZpbmUgSENfSEFCTEZBYl9Gb2cgICAgICAg ICAgKEhDX1hBX0ZvZyA8PCAyKQ0KPiAtI2RlZmluZSBIQ19IQUJMRkFiX21pbkFzcmNGb2cg ICAoSENfWEFfbWluQXNyY0ZvZyA8PCAyKQ0KPiAtI2RlZmluZSBIQ19IQUJMRkFiX21pbkFz cmNBZHN0ICAoSENfWEFfbWluQXNyY0Fkc3QgPDwgMikNCj4gLSNkZWZpbmUgSENfSEFCTEZB Yl9tYXhBc3JjRm9nICAgKEhDX1hBX21heEFzcmNGb2cgPDwgMikNCj4gLSNkZWZpbmUgSENf SEFCTEZBYl9tYXhBc3JjQWRzdCAgKEhDX1hBX21heEFzcmNBZHN0IDw8IDIpDQo+IC0jZGVm aW5lIEhDX0hBQkxGQWJfbWluQXNyY0ludkFkc3QgICAoSENfWEFfbWluQXNyY0ludkFkc3Qg PDwgMikNCj4gLSNkZWZpbmUgSENfSEFCTEZBYl9IQUJMRlJBICAgICAgICAgIChIQ19YQV9I QUJMRlJBIDw8IDIpDQo+IC0vKiBIQ19TdWJBX0hBQkxSQWEgICAgICAgICAweDAwM2QNCj4g LSAqLw0KPiAtI2RlZmluZSBIQ19IQUJMUkFhX01BU0sgICAgICAgICAweDAwZmYwMDAwDQo+ IC0jZGVmaW5lIEhDX0hBQkxSRkFhX01BU0sgICAgICAgIDB4MDAwMGZmMDANCj4gLSNkZWZp bmUgSENfSEFCTFJBYmlhc19NQVNLICAgICAgMHgwMDAwMDBmZg0KPiAtI2RlZmluZSBIQ19I QUJMUkFhX1NISUZUICAgICAgICAxNg0KPiAtI2RlZmluZSBIQ19IQUJMUkZBYV9TSElGVCAg ICAgICA4DQo+IC0vKiBIQ19TdWJBX0hBQkxSQWIgICAgICAgICAweDAwM2UNCj4gLSAqLw0K PiAtI2RlZmluZSBIQ19IQUJMUkFiX01BU0sgICAgICAgICAweDAwMDBmZjAwDQo+IC0jZGVm aW5lIEhDX0hBQkxSRkFiX01BU0sgICAgICAgIDB4MDAwMDAwZmYNCj4gLSNkZWZpbmUgSENf SEFCTFJBYl9TSElGVCAgICAgICAgOA0KPiAtDQo+IC0vKiBEZXN0aW5hdGlvbiBTZXR0aW5n DQo+IC0gKi8NCj4gLSNkZWZpbmUgSENfU3ViQV9IREJCYXNMICAgICAgICAgMHgwMDQwDQo+ IC0jZGVmaW5lIEhDX1N1YkFfSERCQmFzSCAgICAgICAgIDB4MDA0MQ0KPiAtI2RlZmluZSBI Q19TdWJBX0hEQkZNICAgICAgICAgICAweDAwNDINCj4gLSNkZWZpbmUgSENfU3ViQV9IRkJC TVNLTCAgICAgICAgMHgwMDQzDQo+IC0jZGVmaW5lIEhDX1N1YkFfSFJPUCAgICAgICAgICAg IDB4MDA0NA0KPiAtLyogSENfU3ViQV9IREJGTSAgICAgICAgICAgMHgwMDQyDQo+IC0gKi8N Cj4gLSNkZWZpbmUgSENfSERCRk1fTUFTSyAgICAgICAgICAgMHgwMDFmMDAwMA0KPiAtI2Rl ZmluZSBIQ19IREJMb2NfTUFTSyAgICAgICAgICAweDAwMDBjMDAwDQo+IC0jZGVmaW5lIEhD X0hEQlBpdF9NQVNLICAgICAgICAgIDB4MDAwMDNmZmYNCj4gLSNkZWZpbmUgSENfSERCRk1f UkdCNTU1ICAgICAgICAgMHgwMDAwMDAwMA0KPiAtI2RlZmluZSBIQ19IREJGTV9SR0I1NjUg ICAgICAgICAweDAwMDEwMDAwDQo+IC0jZGVmaW5lIEhDX0hEQkZNX0FSR0I0NDQ0ICAgICAg IDB4MDAwMjAwMDANCj4gLSNkZWZpbmUgSENfSERCRk1fQVJHQjE1NTUgICAgICAgMHgwMDAz MDAwMA0KPiAtI2RlZmluZSBIQ19IREJGTV9CR1I1NTUgICAgICAgICAweDAwMDQwMDAwDQo+ IC0jZGVmaW5lIEhDX0hEQkZNX0JHUjU2NSAgICAgICAgIDB4MDAwNTAwMDANCj4gLSNkZWZp bmUgSENfSERCRk1fQUJHUjQ0NDQgICAgICAgMHgwMDA2MDAwMA0KPiAtI2RlZmluZSBIQ19I REJGTV9BQkdSMTU1NSAgICAgICAweDAwMDcwMDAwDQo+IC0jZGVmaW5lIEhDX0hEQkZNX0FS R0IwODg4ICAgICAgIDB4MDAwODAwMDANCj4gLSNkZWZpbmUgSENfSERCRk1fQVJHQjg4ODgg ICAgICAgMHgwMDA5MDAwMA0KPiAtI2RlZmluZSBIQ19IREJGTV9BQkdSMDg4OCAgICAgICAw eDAwMGEwMDAwDQo+IC0jZGVmaW5lIEhDX0hEQkZNX0FCR1I4ODg4ICAgICAgIDB4MDAwYjAw MDANCj4gLSNkZWZpbmUgSENfSERCTG9jX0xvY2FsICAgICAgICAgMHgwMDAwMDAwMA0KPiAt I2RlZmluZSBIQ19IREJMb2NfU3lzICAgICAgICAgICAweDAwMDA0MDAwDQo+IC0vKiBIQ19T dWJBX0hST1AgICAgICAgICAgICAweDAwNDQNCj4gLSAqLw0KPiAtI2RlZmluZSBIQ19IUk9Q X01BU0sgICAgICAgICAgICAweDAwMDAwZjAwDQo+IC0jZGVmaW5lIEhDX0hGQkJNU0tIX01B U0sgICAgICAgIDB4MDAwMDAwZmYNCj4gLSNkZWZpbmUgSENfSFJPUF9CTEFDSyAgICAgICAg ICAgMHgwMDAwMDAwMA0KPiAtI2RlZmluZSBIQ19IUk9QX0RQb24gICAgICAgICAgICAweDAw MDAwMTAwDQo+IC0jZGVmaW5lIEhDX0hST1BfRFBuYSAgICAgICAgICAgIDB4MDAwMDAyMDAN Cj4gLSNkZWZpbmUgSENfSFJPUF9QbiAgICAgICAgICAgICAgMHgwMDAwMDMwMA0KPiAtI2Rl ZmluZSBIQ19IUk9QX1BEbmEgICAgICAgICAgICAweDAwMDAwNDAwDQo+IC0jZGVmaW5lIEhD X0hST1BfRG4gICAgICAgICAgICAgIDB4MDAwMDA1MDANCj4gLSNkZWZpbmUgSENfSFJPUF9E UHggICAgICAgICAgICAgMHgwMDAwMDYwMA0KPiAtI2RlZmluZSBIQ19IUk9QX0RQYW4gICAg ICAgICAgICAweDAwMDAwNzAwDQo+IC0jZGVmaW5lIEhDX0hST1BfRFBhICAgICAgICAgICAg IDB4MDAwMDA4MDANCj4gLSNkZWZpbmUgSENfSFJPUF9EUHhuICAgICAgICAgICAgMHgwMDAw MDkwMA0KPiAtI2RlZmluZSBIQ19IUk9QX0QgICAgICAgICAgICAgICAweDAwMDAwYTAwDQo+ IC0jZGVmaW5lIEhDX0hST1BfRFBubyAgICAgICAgICAgIDB4MDAwMDBiMDANCj4gLSNkZWZp bmUgSENfSFJPUF9QICAgICAgICAgICAgICAgMHgwMDAwMGMwMA0KPiAtI2RlZmluZSBIQ19I Uk9QX1BEbm8gICAgICAgICAgICAweDAwMDAwZDAwDQo+IC0jZGVmaW5lIEhDX0hST1BfRFBv ICAgICAgICAgICAgIDB4MDAwMDBlMDANCj4gLSNkZWZpbmUgSENfSFJPUF9XSElURSAgICAg ICAgICAgMHgwMDAwMGYwMA0KPiAtDQo+IC0vKiBGb2cgU2V0dGluZw0KPiAtICovDQo+IC0j ZGVmaW5lIEhDX1N1YkFfSEZvZ0xGICAgICAgICAgIDB4MDA1MA0KPiAtI2RlZmluZSBIQ19T dWJBX0hGb2dDTCAgICAgICAgICAweDAwNTENCj4gLSNkZWZpbmUgSENfU3ViQV9IRm9nQ0gg ICAgICAgICAgMHgwMDUyDQo+IC0jZGVmaW5lIEhDX1N1YkFfSEZvZ1N0TCAgICAgICAgIDB4 MDA1Mw0KPiAtI2RlZmluZSBIQ19TdWJBX0hGb2dTdEggICAgICAgICAweDAwNTQNCj4gLSNk ZWZpbmUgSENfU3ViQV9IRm9nT09kTUYgICAgICAgMHgwMDU1DQo+IC0jZGVmaW5lIEhDX1N1 YkFfSEZvZ09PZEVGICAgICAgIDB4MDA1Ng0KPiAtI2RlZmluZSBIQ19TdWJBX0hGb2dFbmRM ICAgICAgICAweDAwNTcNCj4gLSNkZWZpbmUgSENfU3ViQV9IRm9nRGVuc3QgICAgICAgMHgw MDU4DQo+IC0vKiBIQ19TdWJBX0ZvZ0xGICAgICAgICAgICAweDAwNTANCj4gLSAqLw0KPiAt I2RlZmluZSBIQ19Gb2dMRl9NQVNLICAgICAgICAgICAweDAwMDAwMDEwDQo+IC0jZGVmaW5l IEhDX0ZvZ0VxX01BU0sgICAgICAgICAgIDB4MDAwMDAwMDgNCj4gLSNkZWZpbmUgSENfRm9n TURfTUFTSyAgICAgICAgICAgMHgwMDAwMDAwNw0KPiAtI2RlZmluZSBIQ19Gb2dNRF9Mb2Nh bEZvZyAgICAgICAgMHgwMDAwMDAwMA0KPiAtI2RlZmluZSBIQ19Gb2dNRF9MaW5lYXJGb2cg ICAgICAgMHgwMDAwMDAwMg0KPiAtI2RlZmluZSBIQ19Gb2dNRF9FeHBvbmVudGlhbEZvZyAg MHgwMDAwMDAwNA0KPiAtI2RlZmluZSBIQ19Gb2dNRF9FeHBvbmVudGlhbDJGb2cgMHgwMDAw MDAwNQ0KPiAtLyogI2RlZmluZSBIQ19Gb2dNRF9Gb2dUYWJsZSAgICAgICAweDAwMDAwMDAz ICovDQo+IC0NCj4gLS8qIEhDX1N1YkFfSEZvZ0RlbnN0ICAgICAgICAweDAwNTgNCj4gLSAq Lw0KPiAtI2RlZmluZSBIQ19Gb2dEZW5zdF9NQVNLICAgICAgICAweDAwMWZmZjAwDQo+IC0j ZGVmaW5lIEhDX0ZvZ0VuZExfTUFTSyAgICAgICAgIDB4MDAwMDAwZmYNCj4gLQ0KPiAtLyog VGV4dHVyZSBzdWJ0eXBlIGRlZmluaXRpb25zDQo+IC0gKi8NCj4gLSNkZWZpbmUgSENfU3Vi VHlwZV9UZXgwICAgICAgICAgMHgwMDAwMDAwMA0KPiAtI2RlZmluZSBIQ19TdWJUeXBlX1Rl eDEgICAgICAgICAweDAwMDAwMDAxDQo+IC0jZGVmaW5lIEhDX1N1YlR5cGVfVGV4R2VuZXJh bCAgIDB4MDAwMDAwZmUNCj4gLQ0KPiAtLyogQXR0cmlidXRlIG9mIHRleHR1cmUgbg0KPiAt ICovDQo+IC0jZGVmaW5lIEhDX1N1YkFfSFRYbkwwQmFzTCAgICAgIDB4MDAwMA0KPiAtI2Rl ZmluZSBIQ19TdWJBX0hUWG5MMUJhc0wgICAgICAweDAwMDENCj4gLSNkZWZpbmUgSENfU3Vi QV9IVFhuTDJCYXNMICAgICAgMHgwMDAyDQo+IC0jZGVmaW5lIEhDX1N1YkFfSFRYbkwzQmFz TCAgICAgIDB4MDAwMw0KPiAtI2RlZmluZSBIQ19TdWJBX0hUWG5MNEJhc0wgICAgICAweDAw MDQNCj4gLSNkZWZpbmUgSENfU3ViQV9IVFhuTDVCYXNMICAgICAgMHgwMDA1DQo+IC0jZGVm aW5lIEhDX1N1YkFfSFRYbkw2QmFzTCAgICAgIDB4MDAwNg0KPiAtI2RlZmluZSBIQ19TdWJB X0hUWG5MN0Jhc0wgICAgICAweDAwMDcNCj4gLSNkZWZpbmUgSENfU3ViQV9IVFhuTDhCYXNM ICAgICAgMHgwMDA4DQo+IC0jZGVmaW5lIEhDX1N1YkFfSFRYbkw5QmFzTCAgICAgIDB4MDAw OQ0KPiAtI2RlZmluZSBIQ19TdWJBX0hUWG5MYUJhc0wgICAgICAweDAwMGENCj4gLSNkZWZp bmUgSENfU3ViQV9IVFhuTGJCYXNMICAgICAgMHgwMDBiDQo+IC0jZGVmaW5lIEhDX1N1YkFf SFRYbkxjQmFzTCAgICAgIDB4MDAwYw0KPiAtI2RlZmluZSBIQ19TdWJBX0hUWG5MZEJhc0wg ICAgICAweDAwMGQNCj4gLSNkZWZpbmUgSENfU3ViQV9IVFhuTGVCYXNMICAgICAgMHgwMDBl DQo+IC0jZGVmaW5lIEhDX1N1YkFfSFRYbkxmQmFzTCAgICAgIDB4MDAwZg0KPiAtI2RlZmlu ZSBIQ19TdWJBX0hUWG5MMTBCYXNMICAgICAweDAwMTANCj4gLSNkZWZpbmUgSENfU3ViQV9I VFhuTDExQmFzTCAgICAgMHgwMDExDQo+IC0jZGVmaW5lIEhDX1N1YkFfSFRYbkwwMTJCYXNI ICAgIDB4MDAyMA0KPiAtI2RlZmluZSBIQ19TdWJBX0hUWG5MMzQ1QmFzSCAgICAweDAwMjEN Cj4gLSNkZWZpbmUgSENfU3ViQV9IVFhuTDY3OEJhc0ggICAgMHgwMDIyDQo+IC0jZGVmaW5l IEhDX1N1YkFfSFRYbkw5YWJCYXNIICAgIDB4MDAyMw0KPiAtI2RlZmluZSBIQ19TdWJBX0hU WG5MY2RlQmFzSCAgICAweDAwMjQNCj4gLSNkZWZpbmUgSENfU3ViQV9IVFhuTGYxMDExQmFz SCAgMHgwMDI1DQo+IC0jZGVmaW5lIEhDX1N1YkFfSFRYbkwwUGl0ICAgICAgIDB4MDAyYg0K PiAtI2RlZmluZSBIQ19TdWJBX0hUWG5MMVBpdCAgICAgICAweDAwMmMNCj4gLSNkZWZpbmUg SENfU3ViQV9IVFhuTDJQaXQgICAgICAgMHgwMDJkDQo+IC0jZGVmaW5lIEhDX1N1YkFfSFRY bkwzUGl0ICAgICAgIDB4MDAyZQ0KPiAtI2RlZmluZSBIQ19TdWJBX0hUWG5MNFBpdCAgICAg ICAweDAwMmYNCj4gLSNkZWZpbmUgSENfU3ViQV9IVFhuTDVQaXQgICAgICAgMHgwMDMwDQo+ IC0jZGVmaW5lIEhDX1N1YkFfSFRYbkw2UGl0ICAgICAgIDB4MDAzMQ0KPiAtI2RlZmluZSBI Q19TdWJBX0hUWG5MN1BpdCAgICAgICAweDAwMzINCj4gLSNkZWZpbmUgSENfU3ViQV9IVFhu TDhQaXQgICAgICAgMHgwMDMzDQo+IC0jZGVmaW5lIEhDX1N1YkFfSFRYbkw5UGl0ICAgICAg IDB4MDAzNA0KPiAtI2RlZmluZSBIQ19TdWJBX0hUWG5MYVBpdCAgICAgICAweDAwMzUNCj4g LSNkZWZpbmUgSENfU3ViQV9IVFhuTGJQaXQgICAgICAgMHgwMDM2DQo+IC0jZGVmaW5lIEhD X1N1YkFfSFRYbkxjUGl0ICAgICAgIDB4MDAzNw0KPiAtI2RlZmluZSBIQ19TdWJBX0hUWG5M ZFBpdCAgICAgICAweDAwMzgNCj4gLSNkZWZpbmUgSENfU3ViQV9IVFhuTGVQaXQgICAgICAg MHgwMDM5DQo+IC0jZGVmaW5lIEhDX1N1YkFfSFRYbkxmUGl0ICAgICAgIDB4MDAzYQ0KPiAt I2RlZmluZSBIQ19TdWJBX0hUWG5MMTBQaXQgICAgICAweDAwM2INCj4gLSNkZWZpbmUgSENf U3ViQV9IVFhuTDExUGl0ICAgICAgMHgwMDNjDQo+IC0jZGVmaW5lIEhDX1N1YkFfSFRYbkww XzVXRSAgICAgIDB4MDA0Yg0KPiAtI2RlZmluZSBIQ19TdWJBX0hUWG5MNl9iV0UgICAgICAw eDAwNGMNCj4gLSNkZWZpbmUgSENfU3ViQV9IVFhuTGNfMTFXRSAgICAgMHgwMDRkDQo+IC0j ZGVmaW5lIEhDX1N1YkFfSFRYbkwwXzVIRSAgICAgIDB4MDA1MQ0KPiAtI2RlZmluZSBIQ19T dWJBX0hUWG5MNl9iSEUgICAgICAweDAwNTINCj4gLSNkZWZpbmUgSENfU3ViQV9IVFhuTGNf MTFIRSAgICAgMHgwMDUzDQo+IC0jZGVmaW5lIEhDX1N1YkFfSFRYbkwwT1MgICAgICAgIDB4 MDA3Nw0KPiAtI2RlZmluZSBIQ19TdWJBX0hUWG5UQiAgICAgICAgICAweDAwNzgNCj4gLSNk ZWZpbmUgSENfU3ViQV9IVFhuTVBNRCAgICAgICAgMHgwMDc5DQo+IC0jZGVmaW5lIEhDX1N1 YkFfSFRYbkNMT0R1ICAgICAgIDB4MDA3YQ0KPiAtI2RlZmluZSBIQ19TdWJBX0hUWG5GTSAg ICAgICAgICAweDAwN2INCj4gLSNkZWZpbmUgSENfU3ViQV9IVFhuVFJDSCAgICAgICAgMHgw MDdjDQo+IC0jZGVmaW5lIEhDX1N1YkFfSFRYblRSQ0wgICAgICAgIDB4MDA3ZA0KPiAtI2Rl ZmluZSBIQ19TdWJBX0hUWG5UQkMgICAgICAgICAweDAwN2UNCj4gLSNkZWZpbmUgSENfU3Vi QV9IVFhuVFJBSCAgICAgICAgMHgwMDdmDQo+IC0jZGVmaW5lIEhDX1N1YkFfSFRYblRCTENz YXQgICAgIDB4MDA4MA0KPiAtI2RlZmluZSBIQ19TdWJBX0hUWG5UQkxDb3AgICAgICAweDAw ODENCj4gLSNkZWZpbmUgSENfU3ViQV9IVFhuVEJMTVBmb2cgICAgMHgwMDgyDQo+IC0jZGVm aW5lIEhDX1N1YkFfSFRYblRCTEFzYXQgICAgIDB4MDA4Mw0KPiAtI2RlZmluZSBIQ19TdWJB X0hUWG5UQkxSQ2EgICAgICAweDAwODUNCj4gLSNkZWZpbmUgSENfU3ViQV9IVFhuVEJMUkNi ICAgICAgMHgwMDg2DQo+IC0jZGVmaW5lIEhDX1N1YkFfSFRYblRCTFJDYyAgICAgIDB4MDA4 Nw0KPiAtI2RlZmluZSBIQ19TdWJBX0hUWG5UQkxSQ2JpYXMgICAweDAwODgNCj4gLSNkZWZp bmUgSENfU3ViQV9IVFhuVEJMUkFhICAgICAgMHgwMDg5DQo+IC0jZGVmaW5lIEhDX1N1YkFf SFRYblRCTFJGb2cgICAgIDB4MDA4YQ0KPiAtI2RlZmluZSBIQ19TdWJBX0hUWG5CdW1wTTAw ICAgICAweDAwOTANCj4gLSNkZWZpbmUgSENfU3ViQV9IVFhuQnVtcE0wMSAgICAgMHgwMDkx DQo+IC0jZGVmaW5lIEhDX1N1YkFfSFRYbkJ1bXBNMTAgICAgIDB4MDA5Mg0KPiAtI2RlZmlu ZSBIQ19TdWJBX0hUWG5CdW1wTTExICAgICAweDAwOTMNCj4gLSNkZWZpbmUgSENfU3ViQV9I VFhuTFNjYWxlICAgICAgMHgwMDk0DQo+IC0jZGVmaW5lIEhDX1N1YkFfSFRYU01EICAgICAg ICAgIDB4MDAwMA0KPiAtLyogSENfU3ViQV9IVFhuTDAxMkJhc0ggICAgMHgwMDIwDQo+IC0g Ki8NCj4gLSNkZWZpbmUgSENfSFRYbkwwQmFzSF9NQVNLICAgICAgMHgwMDAwMDBmZg0KPiAt I2RlZmluZSBIQ19IVFhuTDFCYXNIX01BU0sgICAgICAweDAwMDBmZjAwDQo+IC0jZGVmaW5l IEhDX0hUWG5MMkJhc0hfTUFTSyAgICAgIDB4MDBmZjAwMDANCj4gLSNkZWZpbmUgSENfSFRY bkwxQmFzSF9TSElGVCAgICAgOA0KPiAtI2RlZmluZSBIQ19IVFhuTDJCYXNIX1NISUZUICAg ICAxNg0KPiAtLyogSENfU3ViQV9IVFhuTDM0NUJhc0ggICAgMHgwMDIxDQo+IC0gKi8NCj4g LSNkZWZpbmUgSENfSFRYbkwzQmFzSF9NQVNLICAgICAgMHgwMDAwMDBmZg0KPiAtI2RlZmlu ZSBIQ19IVFhuTDRCYXNIX01BU0sgICAgICAweDAwMDBmZjAwDQo+IC0jZGVmaW5lIEhDX0hU WG5MNUJhc0hfTUFTSyAgICAgIDB4MDBmZjAwMDANCj4gLSNkZWZpbmUgSENfSFRYbkw0QmFz SF9TSElGVCAgICAgOA0KPiAtI2RlZmluZSBIQ19IVFhuTDVCYXNIX1NISUZUICAgICAxNg0K PiAtLyogSENfU3ViQV9IVFhuTDY3OEJhc0ggICAgMHgwMDIyDQo+IC0gKi8NCj4gLSNkZWZp bmUgSENfSFRYbkw2QmFzSF9NQVNLICAgICAgMHgwMDAwMDBmZg0KPiAtI2RlZmluZSBIQ19I VFhuTDdCYXNIX01BU0sgICAgICAweDAwMDBmZjAwDQo+IC0jZGVmaW5lIEhDX0hUWG5MOEJh c0hfTUFTSyAgICAgIDB4MDBmZjAwMDANCj4gLSNkZWZpbmUgSENfSFRYbkw3QmFzSF9TSElG VCAgICAgOA0KPiAtI2RlZmluZSBIQ19IVFhuTDhCYXNIX1NISUZUICAgICAxNg0KPiAtLyog SENfU3ViQV9IVFhuTDlhYkJhc0ggICAgMHgwMDIzDQo+IC0gKi8NCj4gLSNkZWZpbmUgSENf SFRYbkw5QmFzSF9NQVNLICAgICAgMHgwMDAwMDBmZg0KPiAtI2RlZmluZSBIQ19IVFhuTGFC YXNIX01BU0sgICAgICAweDAwMDBmZjAwDQo+IC0jZGVmaW5lIEhDX0hUWG5MYkJhc0hfTUFT SyAgICAgIDB4MDBmZjAwMDANCj4gLSNkZWZpbmUgSENfSFRYbkxhQmFzSF9TSElGVCAgICAg OA0KPiAtI2RlZmluZSBIQ19IVFhuTGJCYXNIX1NISUZUICAgICAxNg0KPiAtLyogSENfU3Vi QV9IVFhuTGNkZUJhc0ggICAgMHgwMDI0DQo+IC0gKi8NCj4gLSNkZWZpbmUgSENfSFRYbkxj QmFzSF9NQVNLICAgICAgMHgwMDAwMDBmZg0KPiAtI2RlZmluZSBIQ19IVFhuTGRCYXNIX01B U0sgICAgICAweDAwMDBmZjAwDQo+IC0jZGVmaW5lIEhDX0hUWG5MZUJhc0hfTUFTSyAgICAg IDB4MDBmZjAwMDANCj4gLSNkZWZpbmUgSENfSFRYbkxkQmFzSF9TSElGVCAgICAgOA0KPiAt I2RlZmluZSBIQ19IVFhuTGVCYXNIX1NISUZUICAgICAxNg0KPiAtLyogSENfU3ViQV9IVFhu TGNkZUJhc0ggICAgMHgwMDI1DQo+IC0gKi8NCj4gLSNkZWZpbmUgSENfSFRYbkxmQmFzSF9N QVNLICAgICAgMHgwMDAwMDBmZg0KPiAtI2RlZmluZSBIQ19IVFhuTDEwQmFzSF9NQVNLICAg ICAgMHgwMDAwZmYwMA0KPiAtI2RlZmluZSBIQ19IVFhuTDExQmFzSF9NQVNLICAgICAgMHgw MGZmMDAwMA0KPiAtI2RlZmluZSBIQ19IVFhuTDEwQmFzSF9TSElGVCAgICAgOA0KPiAtI2Rl ZmluZSBIQ19IVFhuTDExQmFzSF9TSElGVCAgICAgMTYNCj4gLS8qIEhDX1N1YkFfSFRYbkww UGl0ICAgICAgIDB4MDAyYg0KPiAtICovDQo+IC0jZGVmaW5lIEhDX0hUWG5MblBpdF9NQVNL ICAgICAgIDB4MDAwMDNmZmYNCj4gLSNkZWZpbmUgSENfSFRYbkVuUGl0X01BU0sgICAgICAg MHgwMDA4MDAwMA0KPiAtI2RlZmluZSBIQ19IVFhuTG5QaXRFX01BU0sgICAgICAweDAwZjAw MDAwDQo+IC0jZGVmaW5lIEhDX0hUWG5MblBpdEVfU0hJRlQgICAgIDIwDQo+IC0vKiBIQ19T dWJBX0hUWG5MMF81V0UgICAgICAweDAwNGINCj4gLSAqLw0KPiAtI2RlZmluZSBIQ19IVFhu TDBXRV9NQVNLICAgICAgICAweDAwMDAwMDBmDQo+IC0jZGVmaW5lIEhDX0hUWG5MMVdFX01B U0sgICAgICAgIDB4MDAwMDAwZjANCj4gLSNkZWZpbmUgSENfSFRYbkwyV0VfTUFTSyAgICAg ICAgMHgwMDAwMGYwMA0KPiAtI2RlZmluZSBIQ19IVFhuTDNXRV9NQVNLICAgICAgICAweDAw MDBmMDAwDQo+IC0jZGVmaW5lIEhDX0hUWG5MNFdFX01BU0sgICAgICAgIDB4MDAwZjAwMDAN Cj4gLSNkZWZpbmUgSENfSFRYbkw1V0VfTUFTSyAgICAgICAgMHgwMGYwMDAwMA0KPiAtI2Rl ZmluZSBIQ19IVFhuTDFXRV9TSElGVCAgICAgICA0DQo+IC0jZGVmaW5lIEhDX0hUWG5MMldF X1NISUZUICAgICAgIDgNCj4gLSNkZWZpbmUgSENfSFRYbkwzV0VfU0hJRlQgICAgICAgMTIN Cj4gLSNkZWZpbmUgSENfSFRYbkw0V0VfU0hJRlQgICAgICAgMTYNCj4gLSNkZWZpbmUgSENf SFRYbkw1V0VfU0hJRlQgICAgICAgMjANCj4gLS8qIEhDX1N1YkFfSFRYbkw2X2JXRSAgICAg IDB4MDA0Yw0KPiAtICovDQo+IC0jZGVmaW5lIEhDX0hUWG5MNldFX01BU0sgICAgICAgIDB4 MDAwMDAwMGYNCj4gLSNkZWZpbmUgSENfSFRYbkw3V0VfTUFTSyAgICAgICAgMHgwMDAwMDBm MA0KPiAtI2RlZmluZSBIQ19IVFhuTDhXRV9NQVNLICAgICAgICAweDAwMDAwZjAwDQo+IC0j ZGVmaW5lIEhDX0hUWG5MOVdFX01BU0sgICAgICAgIDB4MDAwMGYwMDANCj4gLSNkZWZpbmUg SENfSFRYbkxhV0VfTUFTSyAgICAgICAgMHgwMDBmMDAwMA0KPiAtI2RlZmluZSBIQ19IVFhu TGJXRV9NQVNLICAgICAgICAweDAwZjAwMDAwDQo+IC0jZGVmaW5lIEhDX0hUWG5MN1dFX1NI SUZUICAgICAgIDQNCj4gLSNkZWZpbmUgSENfSFRYbkw4V0VfU0hJRlQgICAgICAgOA0KPiAt I2RlZmluZSBIQ19IVFhuTDlXRV9TSElGVCAgICAgICAxMg0KPiAtI2RlZmluZSBIQ19IVFhu TGFXRV9TSElGVCAgICAgICAxNg0KPiAtI2RlZmluZSBIQ19IVFhuTGJXRV9TSElGVCAgICAg ICAyMA0KPiAtLyogSENfU3ViQV9IVFhuTGNfMTFXRSAgICAgIDB4MDA0ZA0KPiAtICovDQo+ IC0jZGVmaW5lIEhDX0hUWG5MY1dFX01BU0sgICAgICAgIDB4MDAwMDAwMGYNCj4gLSNkZWZp bmUgSENfSFRYbkxkV0VfTUFTSyAgICAgICAgMHgwMDAwMDBmMA0KPiAtI2RlZmluZSBIQ19I VFhuTGVXRV9NQVNLICAgICAgICAweDAwMDAwZjAwDQo+IC0jZGVmaW5lIEhDX0hUWG5MZldF X01BU0sgICAgICAgIDB4MDAwMGYwMDANCj4gLSNkZWZpbmUgSENfSFRYbkwxMFdFX01BU0sg ICAgICAgMHgwMDBmMDAwMA0KPiAtI2RlZmluZSBIQ19IVFhuTDExV0VfTUFTSyAgICAgICAw eDAwZjAwMDAwDQo+IC0jZGVmaW5lIEhDX0hUWG5MZFdFX1NISUZUICAgICAgIDQNCj4gLSNk ZWZpbmUgSENfSFRYbkxlV0VfU0hJRlQgICAgICAgOA0KPiAtI2RlZmluZSBIQ19IVFhuTGZX RV9TSElGVCAgICAgICAxMg0KPiAtI2RlZmluZSBIQ19IVFhuTDEwV0VfU0hJRlQgICAgICAx Ng0KPiAtI2RlZmluZSBIQ19IVFhuTDExV0VfU0hJRlQgICAgICAyMA0KPiAtLyogSENfU3Vi QV9IVFhuTDBfNUhFICAgICAgMHgwMDUxDQo+IC0gKi8NCj4gLSNkZWZpbmUgSENfSFRYbkww SEVfTUFTSyAgICAgICAgMHgwMDAwMDAwZg0KPiAtI2RlZmluZSBIQ19IVFhuTDFIRV9NQVNL ICAgICAgICAweDAwMDAwMGYwDQo+IC0jZGVmaW5lIEhDX0hUWG5MMkhFX01BU0sgICAgICAg IDB4MDAwMDBmMDANCj4gLSNkZWZpbmUgSENfSFRYbkwzSEVfTUFTSyAgICAgICAgMHgwMDAw ZjAwMA0KPiAtI2RlZmluZSBIQ19IVFhuTDRIRV9NQVNLICAgICAgICAweDAwMGYwMDAwDQo+ IC0jZGVmaW5lIEhDX0hUWG5MNUhFX01BU0sgICAgICAgIDB4MDBmMDAwMDANCj4gLSNkZWZp bmUgSENfSFRYbkwxSEVfU0hJRlQgICAgICAgNA0KPiAtI2RlZmluZSBIQ19IVFhuTDJIRV9T SElGVCAgICAgICA4DQo+IC0jZGVmaW5lIEhDX0hUWG5MM0hFX1NISUZUICAgICAgIDEyDQo+ IC0jZGVmaW5lIEhDX0hUWG5MNEhFX1NISUZUICAgICAgIDE2DQo+IC0jZGVmaW5lIEhDX0hU WG5MNUhFX1NISUZUICAgICAgIDIwDQo+IC0vKiBIQ19TdWJBX0hUWG5MNl9iSEUgICAgICAw eDAwNTINCj4gLSAqLw0KPiAtI2RlZmluZSBIQ19IVFhuTDZIRV9NQVNLICAgICAgICAweDAw MDAwMDBmDQo+IC0jZGVmaW5lIEhDX0hUWG5MN0hFX01BU0sgICAgICAgIDB4MDAwMDAwZjAN Cj4gLSNkZWZpbmUgSENfSFRYbkw4SEVfTUFTSyAgICAgICAgMHgwMDAwMGYwMA0KPiAtI2Rl ZmluZSBIQ19IVFhuTDlIRV9NQVNLICAgICAgICAweDAwMDBmMDAwDQo+IC0jZGVmaW5lIEhD X0hUWG5MYUhFX01BU0sgICAgICAgIDB4MDAwZjAwMDANCj4gLSNkZWZpbmUgSENfSFRYbkxi SEVfTUFTSyAgICAgICAgMHgwMGYwMDAwMA0KPiAtI2RlZmluZSBIQ19IVFhuTDdIRV9TSElG VCAgICAgICA0DQo+IC0jZGVmaW5lIEhDX0hUWG5MOEhFX1NISUZUICAgICAgIDgNCj4gLSNk ZWZpbmUgSENfSFRYbkw5SEVfU0hJRlQgICAgICAgMTINCj4gLSNkZWZpbmUgSENfSFRYbkxh SEVfU0hJRlQgICAgICAgMTYNCj4gLSNkZWZpbmUgSENfSFRYbkxiSEVfU0hJRlQgICAgICAg MjANCj4gLS8qIEhDX1N1YkFfSFRYbkxjXzExSEUgICAgICAweDAwNTMNCj4gLSAqLw0KPiAt I2RlZmluZSBIQ19IVFhuTGNIRV9NQVNLICAgICAgICAweDAwMDAwMDBmDQo+IC0jZGVmaW5l IEhDX0hUWG5MZEhFX01BU0sgICAgICAgIDB4MDAwMDAwZjANCj4gLSNkZWZpbmUgSENfSFRY bkxlSEVfTUFTSyAgICAgICAgMHgwMDAwMGYwMA0KPiAtI2RlZmluZSBIQ19IVFhuTGZIRV9N QVNLICAgICAgICAweDAwMDBmMDAwDQo+IC0jZGVmaW5lIEhDX0hUWG5MMTBIRV9NQVNLICAg ICAgIDB4MDAwZjAwMDANCj4gLSNkZWZpbmUgSENfSFRYbkwxMUhFX01BU0sgICAgICAgMHgw MGYwMDAwMA0KPiAtI2RlZmluZSBIQ19IVFhuTGRIRV9TSElGVCAgICAgICA0DQo+IC0jZGVm aW5lIEhDX0hUWG5MZUhFX1NISUZUICAgICAgIDgNCj4gLSNkZWZpbmUgSENfSFRYbkxmSEVf U0hJRlQgICAgICAgMTINCj4gLSNkZWZpbmUgSENfSFRYbkwxMEhFX1NISUZUICAgICAgMTYN Cj4gLSNkZWZpbmUgSENfSFRYbkwxMUhFX1NISUZUICAgICAgMjANCj4gLS8qIEhDX1N1YkFf SFRYbkwwT1MgICAgICAgIDB4MDA3Nw0KPiAtICovDQo+IC0jZGVmaW5lIEhDX0hUWG5MME9T X01BU0sgICAgICAgIDB4MDAzZmYwMDANCj4gLSNkZWZpbmUgSENfSFRYbkxWbWF4X01BU0sg ICAgICAgMHgwMDAwMGZjMA0KPiAtI2RlZmluZSBIQ19IVFhuTFZtaW5fTUFTSyAgICAgICAw eDAwMDAwMDNmDQo+IC0jZGVmaW5lIEhDX0hUWG5MME9TX1NISUZUICAgICAgIDEyDQo+IC0j ZGVmaW5lIEhDX0hUWG5MVm1heF9TSElGVCAgICAgIDYNCj4gLS8qIEhDX1N1YkFfSFRYblRC ICAgICAgICAgIDB4MDA3OA0KPiAtICovDQo+IC0jZGVmaW5lIEhDX0hUWG5UQl9NQVNLICAg ICAgICAgIDB4MDBmMDAwMDANCj4gLSNkZWZpbmUgSENfSFRYbkZMU2VfTUFTSyAgICAgICAg MHgwMDAwZTAwMA0KPiAtI2RlZmluZSBIQ19IVFhuRkxTc19NQVNLICAgICAgICAweDAwMDAx YzAwDQo+IC0jZGVmaW5lIEhDX0hUWG5GTFRlX01BU0sgICAgICAgIDB4MDAwMDAzODANCj4g LSNkZWZpbmUgSENfSFRYbkZMVHNfTUFTSyAgICAgICAgMHgwMDAwMDA3MA0KPiAtI2RlZmlu ZSBIQ19IVFhuRkxEc19NQVNLICAgICAgICAweDAwMDAwMDBmDQo+IC0jZGVmaW5lIEhDX0hU WG5UQl9Ob1RCICAgICAgICAgIDB4MDAwMDAwMDANCj4gLSNkZWZpbmUgSENfSFRYblRCX1RC Q19TICAgICAgICAgMHgwMDEwMDAwMA0KPiAtI2RlZmluZSBIQ19IVFhuVEJfVEJDX1QgICAg ICAgICAweDAwMjAwMDAwDQo+IC0jZGVmaW5lIEhDX0hUWG5UQl9UQl9TICAgICAgICAgIDB4 MDA0MDAwMDANCj4gLSNkZWZpbmUgSENfSFRYblRCX1RCX1QgICAgICAgICAgMHgwMDgwMDAw MA0KPiAtI2RlZmluZSBIQ19IVFhuRkxTZV9OZWFyZXN0ICAgICAweDAwMDAwMDAwDQo+IC0j ZGVmaW5lIEhDX0hUWG5GTFNlX0xpbmVhciAgICAgIDB4MDAwMDIwMDANCj4gLSNkZWZpbmUg SENfSFRYbkZMU2VfTm9uTGluZWFyICAgMHgwMDAwNDAwMA0KPiAtI2RlZmluZSBIQ19IVFhu RkxTZV9TaGFycCAgICAgICAweDAwMDA4MDAwDQo+IC0jZGVmaW5lIEhDX0hUWG5GTFNlX0Zs YXRfR2F1c3NpYW5fQ3ViaWMgMHgwMDAwYzAwMA0KPiAtI2RlZmluZSBIQ19IVFhuRkxTc19O ZWFyZXN0ICAgICAweDAwMDAwMDAwDQo+IC0jZGVmaW5lIEhDX0hUWG5GTFNzX0xpbmVhciAg ICAgIDB4MDAwMDA0MDANCj4gLSNkZWZpbmUgSENfSFRYbkZMU3NfTm9uTGluZWFyICAgMHgw MDAwMDgwMA0KPiAtI2RlZmluZSBIQ19IVFhuRkxTc19GbGF0X0dhdXNzaWFuX0N1YmljIDB4 MDAwMDE4MDANCj4gLSNkZWZpbmUgSENfSFRYbkZMVGVfTmVhcmVzdCAgICAgMHgwMDAwMDAw MA0KPiAtI2RlZmluZSBIQ19IVFhuRkxUZV9MaW5lYXIgICAgICAweDAwMDAwMDgwDQo+IC0j ZGVmaW5lIEhDX0hUWG5GTFRlX05vbkxpbmVhciAgIDB4MDAwMDAxMDANCj4gLSNkZWZpbmUg SENfSFRYbkZMVGVfU2hhcnAgICAgICAgMHgwMDAwMDE4MA0KPiAtI2RlZmluZSBIQ19IVFhu RkxUZV9GbGF0X0dhdXNzaWFuX0N1YmljIDB4MDAwMDAzMDANCj4gLSNkZWZpbmUgSENfSFRY bkZMVHNfTmVhcmVzdCAgICAgMHgwMDAwMDAwMA0KPiAtI2RlZmluZSBIQ19IVFhuRkxUc19M aW5lYXIgICAgICAweDAwMDAwMDEwDQo+IC0jZGVmaW5lIEhDX0hUWG5GTFRzX05vbkxpbmVh ciAgIDB4MDAwMDAwMjANCj4gLSNkZWZpbmUgSENfSFRYbkZMVHNfRmxhdF9HYXVzc2lhbl9D dWJpYyAweDAwMDAwMDYwDQo+IC0jZGVmaW5lIEhDX0hUWG5GTERzX1RleDAgICAgICAgIDB4 MDAwMDAwMDANCj4gLSNkZWZpbmUgSENfSFRYbkZMRHNfTmVhcmVzdCAgICAgMHgwMDAwMDAw MQ0KPiAtI2RlZmluZSBIQ19IVFhuRkxEc19MaW5lYXIgICAgICAweDAwMDAwMDAyDQo+IC0j ZGVmaW5lIEhDX0hUWG5GTERzX05vbkxpbmVhciAgIDB4MDAwMDAwMDMNCj4gLSNkZWZpbmUg SENfSFRYbkZMRHNfRGl0aGVyICAgICAgMHgwMDAwMDAwNA0KPiAtI2RlZmluZSBIQ19IVFhu RkxEc19Db25zdExPRCAgICAweDAwMDAwMDA1DQo+IC0jZGVmaW5lIEhDX0hUWG5GTERzX0Fu aSAgICAgICAgIDB4MDAwMDAwMDYNCj4gLSNkZWZpbmUgSENfSFRYbkZMRHNfQW5pRGl0aGVy ICAgMHgwMDAwMDAwNw0KPiAtLyogSENfU3ViQV9IVFhuTVBNRCAgICAgICAgMHgwMDc5DQo+ IC0gKi8NCj4gLSNkZWZpbmUgSENfSFRYbk1QTURfU01BU0sgICAgICAgMHgwMDA3MDAwMA0K PiAtI2RlZmluZSBIQ19IVFhuTVBNRF9UTUFTSyAgICAgICAweDAwMzgwMDAwDQo+IC0jZGVm aW5lIEhDX0hUWG5MT0REVGZfTUFTSyAgICAgIDB4MDAwMDAwMDcNCj4gLSNkZWZpbmUgSENf SFRYblhZMlNUX01BU0sgICAgICAgMHgwMDAwMDAwOA0KPiAtI2RlZmluZSBIQ19IVFhuTVBN RF9Uc2luZ2xlICAgICAweDAwMDAwMDAwDQo+IC0jZGVmaW5lIEhDX0hUWG5NUE1EX1RjbGFt cCAgICAgIDB4MDAwODAwMDANCj4gLSNkZWZpbmUgSENfSFRYbk1QTURfVHJlcGVhdCAgICAg MHgwMDEwMDAwMA0KPiAtI2RlZmluZSBIQ19IVFhuTVBNRF9UbWlycm9yICAgICAweDAwMTgw MDAwDQo+IC0jZGVmaW5lIEhDX0hUWG5NUE1EX1R3cmFwICAgICAgIDB4MDAyMDAwMDANCj4g LSNkZWZpbmUgSENfSFRYbk1QTURfU3NpbmdsZSAgICAgMHgwMDAwMDAwMA0KPiAtI2RlZmlu ZSBIQ19IVFhuTVBNRF9TY2xhbXAgICAgICAweDAwMDEwMDAwDQo+IC0jZGVmaW5lIEhDX0hU WG5NUE1EX1NyZXBlYXQgICAgIDB4MDAwMjAwMDANCj4gLSNkZWZpbmUgSENfSFRYbk1QTURf U21pcnJvciAgICAgMHgwMDAzMDAwMA0KPiAtI2RlZmluZSBIQ19IVFhuTVBNRF9Td3JhcCAg ICAgICAweDAwMDQwMDAwDQo+IC0vKiBIQ19TdWJBX0hUWG5DTE9EdSAgICAgICAweDAwN2EN Cj4gLSAqLw0KPiAtI2RlZmluZSBIQ19IVFhuQ0xPRHVfTUFTSyAgICAgICAweDAwMGZmYzAw DQo+IC0jZGVmaW5lIEhDX0hUWG5DTE9EZF9NQVNLICAgICAgIDB4MDAwMDAzZmYNCj4gLSNk ZWZpbmUgSENfSFRYbkNMT0R1X1NISUZUICAgICAgMTANCj4gLS8qIEhDX1N1YkFfSFRYbkZN ICAgICAgICAgIDB4MDA3Yg0KPiAtICovDQo+IC0jZGVmaW5lIEhDX0hUWG5GTV9NQVNLICAg ICAgICAgIDB4MDBmZjAwMDANCj4gLSNkZWZpbmUgSENfSFRYbkxvY19NQVNLICAgICAgICAg MHgwMDAwMDAwMw0KPiAtI2RlZmluZSBIQ19IVFhuRk1fSU5ERVggICAgICAgICAweDAwMDAw MDAwDQo+IC0jZGVmaW5lIEhDX0hUWG5GTV9JbnRlbnNpdHkgICAgIDB4MDAwODAwMDANCj4g LSNkZWZpbmUgSENfSFRYbkZNX0x1bSAgICAgICAgICAgMHgwMDEwMDAwMA0KPiAtI2RlZmlu ZSBIQ19IVFhuRk1fQWxwaGEgICAgICAgICAweDAwMTgwMDAwDQo+IC0jZGVmaW5lIEhDX0hU WG5GTV9EWCAgICAgICAgICAgIDB4MDAyODAwMDANCj4gLSNkZWZpbmUgSENfSFRYbkZNX0FS R0IxNiAgICAgICAgMHgwMDg4MDAwMA0KPiAtI2RlZmluZSBIQ19IVFhuRk1fQVJHQjMyICAg ICAgICAweDAwOTgwMDAwDQo+IC0jZGVmaW5lIEhDX0hUWG5GTV9BQkdSMTYgICAgICAgIDB4 MDBhODAwMDANCj4gLSNkZWZpbmUgSENfSFRYbkZNX0FCR1IzMiAgICAgICAgMHgwMGI4MDAw MA0KPiAtI2RlZmluZSBIQ19IVFhuRk1fUkdCQTE2ICAgICAgICAweDAwYzgwMDAwDQo+IC0j ZGVmaW5lIEhDX0hUWG5GTV9SR0JBMzIgICAgICAgIDB4MDBkODAwMDANCj4gLSNkZWZpbmUg SENfSFRYbkZNX0JHUkExNiAgICAgICAgMHgwMGU4MDAwMA0KPiAtI2RlZmluZSBIQ19IVFhu Rk1fQkdSQTMyICAgICAgICAweDAwZjgwMDAwDQo+IC0jZGVmaW5lIEhDX0hUWG5GTV9CVU1Q TUFQICAgICAgIDB4MDAzODAwMDANCj4gLSNkZWZpbmUgSENfSFRYbkZNX0luZGV4MSAgICAg ICAgKEhDX0hUWG5GTV9JTkRFWCAgICAgfCAweDAwMDAwMDAwKQ0KPiAtI2RlZmluZSBIQ19I VFhuRk1fSW5kZXgyICAgICAgICAoSENfSFRYbkZNX0lOREVYICAgICB8IDB4MDAwMTAwMDAp DQo+IC0jZGVmaW5lIEhDX0hUWG5GTV9JbmRleDQgICAgICAgIChIQ19IVFhuRk1fSU5ERVgg ICAgIHwgMHgwMDAyMDAwMCkNCj4gLSNkZWZpbmUgSENfSFRYbkZNX0luZGV4OCAgICAgICAg KEhDX0hUWG5GTV9JTkRFWCAgICAgfCAweDAwMDMwMDAwKQ0KPiAtI2RlZmluZSBIQ19IVFhu Rk1fVDEgICAgICAgICAgICAoSENfSFRYbkZNX0ludGVuc2l0eSB8IDB4MDAwMDAwMDApDQo+ IC0jZGVmaW5lIEhDX0hUWG5GTV9UMiAgICAgICAgICAgIChIQ19IVFhuRk1fSW50ZW5zaXR5 IHwgMHgwMDAxMDAwMCkNCj4gLSNkZWZpbmUgSENfSFRYbkZNX1Q0ICAgICAgICAgICAgKEhD X0hUWG5GTV9JbnRlbnNpdHkgfCAweDAwMDIwMDAwKQ0KPiAtI2RlZmluZSBIQ19IVFhuRk1f VDggICAgICAgICAgICAoSENfSFRYbkZNX0ludGVuc2l0eSB8IDB4MDAwMzAwMDApDQo+IC0j ZGVmaW5lIEhDX0hUWG5GTV9MMSAgICAgICAgICAgIChIQ19IVFhuRk1fTHVtICAgICAgIHwg MHgwMDAwMDAwMCkNCj4gLSNkZWZpbmUgSENfSFRYbkZNX0wyICAgICAgICAgICAgKEhDX0hU WG5GTV9MdW0gICAgICAgfCAweDAwMDEwMDAwKQ0KPiAtI2RlZmluZSBIQ19IVFhuRk1fTDQg ICAgICAgICAgICAoSENfSFRYbkZNX0x1bSAgICAgICB8IDB4MDAwMjAwMDApDQo+IC0jZGVm aW5lIEhDX0hUWG5GTV9MOCAgICAgICAgICAgIChIQ19IVFhuRk1fTHVtICAgICAgIHwgMHgw MDAzMDAwMCkNCj4gLSNkZWZpbmUgSENfSFRYbkZNX0FMNDQgICAgICAgICAgKEhDX0hUWG5G TV9MdW0gICAgICAgfCAweDAwMDQwMDAwKQ0KPiAtI2RlZmluZSBIQ19IVFhuRk1fQUw4OCAg ICAgICAgICAoSENfSFRYbkZNX0x1bSAgICAgICB8IDB4MDAwNTAwMDApDQo+IC0jZGVmaW5l IEhDX0hUWG5GTV9BMSAgICAgICAgICAgIChIQ19IVFhuRk1fQWxwaGEgICAgIHwgMHgwMDAw MDAwMCkNCj4gLSNkZWZpbmUgSENfSFRYbkZNX0EyICAgICAgICAgICAgKEhDX0hUWG5GTV9B bHBoYSAgICAgfCAweDAwMDEwMDAwKQ0KPiAtI2RlZmluZSBIQ19IVFhuRk1fQTQgICAgICAg ICAgICAoSENfSFRYbkZNX0FscGhhICAgICB8IDB4MDAwMjAwMDApDQo+IC0jZGVmaW5lIEhD X0hUWG5GTV9BOCAgICAgICAgICAgIChIQ19IVFhuRk1fQWxwaGEgICAgIHwgMHgwMDAzMDAw MCkNCj4gLSNkZWZpbmUgSENfSFRYbkZNX0RYMSAgICAgICAgICAgKEhDX0hUWG5GTV9EWCAg ICAgICAgfCAweDAwMDEwMDAwKQ0KPiAtI2RlZmluZSBIQ19IVFhuRk1fRFgyMyAgICAgICAg ICAoSENfSFRYbkZNX0RYICAgICAgICB8IDB4MDAwMjAwMDApDQo+IC0jZGVmaW5lIEhDX0hU WG5GTV9EWDQ1ICAgICAgICAgIChIQ19IVFhuRk1fRFggICAgICAgIHwgMHgwMDAzMDAwMCkN Cj4gLSNkZWZpbmUgSENfSFRYbkZNX1JHQjU1NSAgICAgICAgKEhDX0hUWG5GTV9BUkdCMTYg ICAgfCAweDAwMDAwMDAwKQ0KPiAtI2RlZmluZSBIQ19IVFhuRk1fUkdCNTY1ICAgICAgICAo SENfSFRYbkZNX0FSR0IxNiAgICB8IDB4MDAwMTAwMDApDQo+IC0jZGVmaW5lIEhDX0hUWG5G TV9BUkdCMTU1NSAgICAgIChIQ19IVFhuRk1fQVJHQjE2ICAgIHwgMHgwMDAyMDAwMCkNCj4g LSNkZWZpbmUgSENfSFRYbkZNX0FSR0I0NDQ0ICAgICAgKEhDX0hUWG5GTV9BUkdCMTYgICAg fCAweDAwMDMwMDAwKQ0KPiAtI2RlZmluZSBIQ19IVFhuRk1fQVJHQjA4ODggICAgICAoSENf SFRYbkZNX0FSR0IzMiAgICB8IDB4MDAwMDAwMDApDQo+IC0jZGVmaW5lIEhDX0hUWG5GTV9B UkdCODg4OCAgICAgIChIQ19IVFhuRk1fQVJHQjMyICAgIHwgMHgwMDAxMDAwMCkNCj4gLSNk ZWZpbmUgSENfSFRYbkZNX0JHUjU1NSAgICAgICAgKEhDX0hUWG5GTV9BQkdSMTYgICAgfCAw eDAwMDAwMDAwKQ0KPiAtI2RlZmluZSBIQ19IVFhuRk1fQkdSNTY1ICAgICAgICAoSENfSFRY bkZNX0FCR1IxNiAgICB8IDB4MDAwMTAwMDApDQo+IC0jZGVmaW5lIEhDX0hUWG5GTV9BQkdS MTU1NSAgICAgIChIQ19IVFhuRk1fQUJHUjE2ICAgIHwgMHgwMDAyMDAwMCkNCj4gLSNkZWZp bmUgSENfSFRYbkZNX0FCR1I0NDQ0ICAgICAgKEhDX0hUWG5GTV9BQkdSMTYgICAgfCAweDAw MDMwMDAwKQ0KPiAtI2RlZmluZSBIQ19IVFhuRk1fQUJHUjA4ODggICAgICAoSENfSFRYbkZN X0FCR1IzMiAgICB8IDB4MDAwMDAwMDApDQo+IC0jZGVmaW5lIEhDX0hUWG5GTV9BQkdSODg4 OCAgICAgIChIQ19IVFhuRk1fQUJHUjMyICAgIHwgMHgwMDAxMDAwMCkNCj4gLSNkZWZpbmUg SENfSFRYbkZNX1JHQkE1NTUwICAgICAgKEhDX0hUWG5GTV9SR0JBMTYgICAgfCAweDAwMDAw MDAwKQ0KPiAtI2RlZmluZSBIQ19IVFhuRk1fUkdCQTU1NTEgICAgICAoSENfSFRYbkZNX1JH QkExNiAgICB8IDB4MDAwMjAwMDApDQo+IC0jZGVmaW5lIEhDX0hUWG5GTV9SR0JBNDQ0NCAg ICAgIChIQ19IVFhuRk1fUkdCQTE2ICAgIHwgMHgwMDAzMDAwMCkNCj4gLSNkZWZpbmUgSENf SFRYbkZNX1JHQkE4ODgwICAgICAgKEhDX0hUWG5GTV9SR0JBMzIgICAgfCAweDAwMDAwMDAw KQ0KPiAtI2RlZmluZSBIQ19IVFhuRk1fUkdCQTg4ODggICAgICAoSENfSFRYbkZNX1JHQkEz MiAgICB8IDB4MDAwMTAwMDApDQo+IC0jZGVmaW5lIEhDX0hUWG5GTV9CR1JBNTU1MCAgICAg IChIQ19IVFhuRk1fQkdSQTE2ICAgIHwgMHgwMDAwMDAwMCkNCj4gLSNkZWZpbmUgSENfSFRY bkZNX0JHUkE1NTUxICAgICAgKEhDX0hUWG5GTV9CR1JBMTYgICAgfCAweDAwMDIwMDAwKQ0K PiAtI2RlZmluZSBIQ19IVFhuRk1fQkdSQTQ0NDQgICAgICAoSENfSFRYbkZNX0JHUkExNiAg ICB8IDB4MDAwMzAwMDApDQo+IC0jZGVmaW5lIEhDX0hUWG5GTV9CR1JBODg4MCAgICAgIChI Q19IVFhuRk1fQkdSQTMyICAgIHwgMHgwMDAwMDAwMCkNCj4gLSNkZWZpbmUgSENfSFRYbkZN X0JHUkE4ODg4ICAgICAgKEhDX0hUWG5GTV9CR1JBMzIgICAgfCAweDAwMDEwMDAwKQ0KPiAt I2RlZmluZSBIQ19IVFhuRk1fVlU4OCAgICAgICAgICAoSENfSFRYbkZNX0JVTVBNQVAgICB8 IDB4MDAwMDAwMDApDQo+IC0jZGVmaW5lIEhDX0hUWG5GTV9MVlU2NTUgICAgICAgIChIQ19I VFhuRk1fQlVNUE1BUCAgIHwgMHgwMDAxMDAwMCkNCj4gLSNkZWZpbmUgSENfSFRYbkZNX0xW VTg4OCAgICAgICAgKEhDX0hUWG5GTV9CVU1QTUFQICAgfCAweDAwMDIwMDAwKQ0KPiAtI2Rl ZmluZSBIQ19IVFhuTG9jX0xvY2FsICAgICAgICAweDAwMDAwMDAwDQo+IC0jZGVmaW5lIEhD X0hUWG5Mb2NfU3lzICAgICAgICAgIDB4MDAwMDAwMDINCj4gLSNkZWZpbmUgSENfSFRYbkxv Y19BR1AgICAgICAgICAgMHgwMDAwMDAwMw0KPiAtLyogSENfU3ViQV9IVFhuVFJBSCAgICAg ICAgMHgwMDdmDQo+IC0gKi8NCj4gLSNkZWZpbmUgSENfSFRYblRSQUhfTUFTSyAgICAgICAg MHgwMGZmMDAwMA0KPiAtI2RlZmluZSBIQ19IVFhuVFJBTF9NQVNLICAgICAgICAweDAwMDBm ZjAwDQo+IC0jZGVmaW5lIEhDX0hUWG5UQkFfTUFTSyAgICAgICAgIDB4MDAwMDAwZmYNCj4g LSNkZWZpbmUgSENfSFRYblRSQUhfU0hJRlQgICAgICAgMTYNCj4gLSNkZWZpbmUgSENfSFRY blRSQUxfU0hJRlQgICAgICAgOA0KPiAtLyogSENfU3ViQV9IVFhuVEJMQ3NhdCAgICAgMHgw MDgwDQo+IC0gKi0tIERlZmluZSB0aGUgaW5wdXQgdGV4dHVyZS4NCj4gLSAqLw0KPiAtI2Rl ZmluZSBIQ19YVENfVE9QQyAgICAgICAgICAgICAweDAwMDAwMDAwDQo+IC0jZGVmaW5lIEhD X1hUQ19JbnZUT1BDICAgICAgICAgIDB4MDAwMDAwMTANCj4gLSNkZWZpbmUgSENfWFRDX1RP UENwNSAgICAgICAgICAgMHgwMDAwMDAyMA0KPiAtI2RlZmluZSBIQ19YVENfQ2JpYXMgICAg ICAgICAgICAweDAwMDAwMDAwDQo+IC0jZGVmaW5lIEhDX1hUQ19JbnZDYmlhcyAgICAgICAg IDB4MDAwMDAwMTANCj4gLSNkZWZpbmUgSENfWFRDXzAgICAgICAgICAgICAgICAgMHgwMDAw MDAwMA0KPiAtI2RlZmluZSBIQ19YVENfRGlmICAgICAgICAgICAgICAweDAwMDAwMDAxDQo+ IC0jZGVmaW5lIEhDX1hUQ19TcGVjICAgICAgICAgICAgIDB4MDAwMDAwMDINCj4gLSNkZWZp bmUgSENfWFRDX1RleCAgICAgICAgICAgICAgMHgwMDAwMDAwMw0KPiAtI2RlZmluZSBIQ19Y VENfQ3VyICAgICAgICAgICAgICAweDAwMDAwMDA0DQo+IC0jZGVmaW5lIEhDX1hUQ19BZGlm ICAgICAgICAgICAgIDB4MDAwMDAwMDUNCj4gLSNkZWZpbmUgSENfWFRDX0ZvZyAgICAgICAg ICAgICAgMHgwMDAwMDAwNg0KPiAtI2RlZmluZSBIQ19YVENfQXRleCAgICAgICAgICAgICAw eDAwMDAwMDA3DQo+IC0jZGVmaW5lIEhDX1hUQ19BY3VyICAgICAgICAgICAgIDB4MDAwMDAw MDgNCj4gLSNkZWZpbmUgSENfWFRDX0hUWG5UQkxSQyAgICAgICAgMHgwMDAwMDAwOQ0KPiAt I2RlZmluZSBIQ19YVENfQ3RleG5leHQgICAgICAgICAweDAwMDAwMDBhDQo+IC0vKi0tDQo+ IC0gKi8NCj4gLSNkZWZpbmUgSENfSFRYblRCTENzYXRfTUFTSyAgICAgMHgwMDgwMDAwMA0K PiAtI2RlZmluZSBIQ19IVFhuVEJMQ2FfTUFTSyAgICAgICAweDAwMGZjMDAwDQo+IC0jZGVm aW5lIEhDX0hUWG5UQkxDYl9NQVNLICAgICAgIDB4MDAwMDFmODANCj4gLSNkZWZpbmUgSENf SFRYblRCTENjX01BU0sgICAgICAgMHgwMDAwMDAzZg0KPiAtI2RlZmluZSBIQ19IVFhuVEJM Q2FfVE9QQyAgICAgICAoSENfWFRDX1RPUEMgPDwgMTQpDQo+IC0jZGVmaW5lIEhDX0hUWG5U QkxDYV9JbnZUT1BDICAgIChIQ19YVENfSW52VE9QQyA8PCAxNCkNCj4gLSNkZWZpbmUgSENf SFRYblRCTENhX1RPUENwNSAgICAgKEhDX1hUQ19UT1BDcDUgPDwgMTQpDQo+IC0jZGVmaW5l IEhDX0hUWG5UQkxDYV8wICAgICAgICAgIChIQ19YVENfMCA8PCAxNCkNCj4gLSNkZWZpbmUg SENfSFRYblRCTENhX0RpZiAgICAgICAgKEhDX1hUQ19EaWYgPDwgMTQpDQo+IC0jZGVmaW5l IEhDX0hUWG5UQkxDYV9TcGVjICAgICAgIChIQ19YVENfU3BlYyA8PCAxNCkNCj4gLSNkZWZp bmUgSENfSFRYblRCTENhX1RleCAgICAgICAgKEhDX1hUQ19UZXggPDwgMTQpDQo+IC0jZGVm aW5lIEhDX0hUWG5UQkxDYV9DdXIgICAgICAgIChIQ19YVENfQ3VyIDw8IDE0KQ0KPiAtI2Rl ZmluZSBIQ19IVFhuVEJMQ2FfQWRpZiAgICAgICAoSENfWFRDX0FkaWYgPDwgMTQpDQo+IC0j ZGVmaW5lIEhDX0hUWG5UQkxDYV9Gb2cgICAgICAgIChIQ19YVENfRm9nIDw8IDE0KQ0KPiAt I2RlZmluZSBIQ19IVFhuVEJMQ2FfQXRleCAgICAgICAoSENfWFRDX0F0ZXggPDwgMTQpDQo+ IC0jZGVmaW5lIEhDX0hUWG5UQkxDYV9BY3VyICAgICAgIChIQ19YVENfQWN1ciA8PCAxNCkN Cj4gLSNkZWZpbmUgSENfSFRYblRCTENhX0hUWG5UQkxSQyAgKEhDX1hUQ19IVFhuVEJMUkMg PDwgMTQpDQo+IC0jZGVmaW5lIEhDX0hUWG5UQkxDYV9DdGV4bmV4dCAgIChIQ19YVENfQ3Rl eG5leHQgPDwgMTQpDQo+IC0jZGVmaW5lIEhDX0hUWG5UQkxDYl9UT1BDICAgICAgIChIQ19Y VENfVE9QQyA8PCA3KQ0KPiAtI2RlZmluZSBIQ19IVFhuVEJMQ2JfSW52VE9QQyAgICAoSENf WFRDX0ludlRPUEMgPDwgNykNCj4gLSNkZWZpbmUgSENfSFRYblRCTENiX1RPUENwNSAgICAg KEhDX1hUQ19UT1BDcDUgPDwgNykNCj4gLSNkZWZpbmUgSENfSFRYblRCTENiXzAgICAgICAg ICAgKEhDX1hUQ18wIDw8IDcpDQo+IC0jZGVmaW5lIEhDX0hUWG5UQkxDYl9EaWYgICAgICAg IChIQ19YVENfRGlmIDw8IDcpDQo+IC0jZGVmaW5lIEhDX0hUWG5UQkxDYl9TcGVjICAgICAg IChIQ19YVENfU3BlYyA8PCA3KQ0KPiAtI2RlZmluZSBIQ19IVFhuVEJMQ2JfVGV4ICAgICAg ICAoSENfWFRDX1RleCA8PCA3KQ0KPiAtI2RlZmluZSBIQ19IVFhuVEJMQ2JfQ3VyICAgICAg ICAoSENfWFRDX0N1ciA8PCA3KQ0KPiAtI2RlZmluZSBIQ19IVFhuVEJMQ2JfQWRpZiAgICAg ICAoSENfWFRDX0FkaWYgPDwgNykNCj4gLSNkZWZpbmUgSENfSFRYblRCTENiX0ZvZyAgICAg ICAgKEhDX1hUQ19Gb2cgPDwgNykNCj4gLSNkZWZpbmUgSENfSFRYblRCTENiX0F0ZXggICAg ICAgKEhDX1hUQ19BdGV4IDw8IDcpDQo+IC0jZGVmaW5lIEhDX0hUWG5UQkxDYl9BY3VyICAg ICAgIChIQ19YVENfQWN1ciA8PCA3KQ0KPiAtI2RlZmluZSBIQ19IVFhuVEJMQ2JfSFRYblRC TFJDICAoSENfWFRDX0hUWG5UQkxSQyA8PCA3KQ0KPiAtI2RlZmluZSBIQ19IVFhuVEJMQ2Jf Q3RleG5leHQgICAoSENfWFRDX0N0ZXhuZXh0IDw8IDcpDQo+IC0jZGVmaW5lIEhDX0hUWG5U QkxDY19UT1BDICAgICAgIChIQ19YVENfVE9QQyA8PCAwKQ0KPiAtI2RlZmluZSBIQ19IVFhu VEJMQ2NfSW52VE9QQyAgICAoSENfWFRDX0ludlRPUEMgPDwgMCkNCj4gLSNkZWZpbmUgSENf SFRYblRCTENjX1RPUENwNSAgICAgKEhDX1hUQ19UT1BDcDUgPDwgMCkNCj4gLSNkZWZpbmUg SENfSFRYblRCTENjXzAgICAgICAgICAgKEhDX1hUQ18wIDw8IDApDQo+IC0jZGVmaW5lIEhD X0hUWG5UQkxDY19EaWYgICAgICAgIChIQ19YVENfRGlmIDw8IDApDQo+IC0jZGVmaW5lIEhD X0hUWG5UQkxDY19TcGVjICAgICAgIChIQ19YVENfU3BlYyA8PCAwKQ0KPiAtI2RlZmluZSBI Q19IVFhuVEJMQ2NfVGV4ICAgICAgICAoSENfWFRDX1RleCA8PCAwKQ0KPiAtI2RlZmluZSBI Q19IVFhuVEJMQ2NfQ3VyICAgICAgICAoSENfWFRDX0N1ciA8PCAwKQ0KPiAtI2RlZmluZSBI Q19IVFhuVEJMQ2NfQWRpZiAgICAgICAoSENfWFRDX0FkaWYgPDwgMCkNCj4gLSNkZWZpbmUg SENfSFRYblRCTENjX0ZvZyAgICAgICAgKEhDX1hUQ19Gb2cgPDwgMCkNCj4gLSNkZWZpbmUg SENfSFRYblRCTENjX0F0ZXggICAgICAgKEhDX1hUQ19BdGV4IDw8IDApDQo+IC0jZGVmaW5l IEhDX0hUWG5UQkxDY19BY3VyICAgICAgIChIQ19YVENfQWN1ciA8PCAwKQ0KPiAtI2RlZmlu ZSBIQ19IVFhuVEJMQ2NfSFRYblRCTFJDICAoSENfWFRDX0hUWG5UQkxSQyA8PCAwKQ0KPiAt I2RlZmluZSBIQ19IVFhuVEJMQ2NfQ3RleG5leHQgICAoSENfWFRDX0N0ZXhuZXh0IDw8IDAp DQo+IC0vKiBIQ19TdWJBX0hUWG5UQkxDb3AgICAgICAweDAwODENCj4gLSAqLw0KPiAtI2Rl ZmluZSBIQ19IVFhuVEJMZG90X01BU0sgICAgICAweDAwYzAwMDAwDQo+IC0jZGVmaW5lIEhD X0hUWG5UQkxDb3BfTUFTSyAgICAgIDB4MDAzODAwMDANCj4gLSNkZWZpbmUgSENfSFRYblRC TENiaWFzX01BU0sgICAgMHgwMDA3YzAwMA0KPiAtI2RlZmluZSBIQ19IVFhuVEJMQ3NoaWZ0 X01BU0sgICAweDAwMDAxODAwDQo+IC0jZGVmaW5lIEhDX0hUWG5UQkxBb3BfTUFTSyAgICAg IDB4MDAwMDAzODANCj4gLSNkZWZpbmUgSENfSFRYblRCTEFiaWFzX01BU0sgICAgMHgwMDAw MDA3OA0KPiAtI2RlZmluZSBIQ19IVFhuVEJMQXNoaWZ0X01BU0sgICAweDAwMDAwMDAzDQo+ IC0jZGVmaW5lIEhDX0hUWG5UQkxDb3BfQWRkICAgICAgIDB4MDAwMDAwMDANCj4gLSNkZWZp bmUgSENfSFRYblRCTENvcF9TdWIgICAgICAgMHgwMDA4MDAwMA0KPiAtI2RlZmluZSBIQ19I VFhuVEJMQ29wX01pbiAgICAgICAweDAwMTAwMDAwDQo+IC0jZGVmaW5lIEhDX0hUWG5UQkxD b3BfTWF4ICAgICAgIDB4MDAxODAwMDANCj4gLSNkZWZpbmUgSENfSFRYblRCTENvcF9NYXNr ICAgICAgMHgwMDIwMDAwMA0KPiAtI2RlZmluZSBIQ19IVFhuVEJMQ2JpYXNfQ2JpYXMgICAg ICAgICAgIChIQ19YVENfQ2JpYXMgPDwgMTQpDQo+IC0jZGVmaW5lIEhDX0hUWG5UQkxDYmlh c19JbnZDYmlhcyAgICAgICAgKEhDX1hUQ19JbnZDYmlhcyA8PCAxNCkNCj4gLSNkZWZpbmUg SENfSFRYblRCTENiaWFzXzAgICAgICAgICAgICAgICAoSENfWFRDXzAgPDwgMTQpDQo+IC0j ZGVmaW5lIEhDX0hUWG5UQkxDYmlhc19EaWYgICAgICAgICAgICAgKEhDX1hUQ19EaWYgPDwg MTQpDQo+IC0jZGVmaW5lIEhDX0hUWG5UQkxDYmlhc19TcGVjICAgICAgICAgICAgKEhDX1hU Q19TcGVjIDw8IDE0KQ0KPiAtI2RlZmluZSBIQ19IVFhuVEJMQ2JpYXNfVGV4ICAgICAgICAg ICAgIChIQ19YVENfVGV4IDw8IDE0KQ0KPiAtI2RlZmluZSBIQ19IVFhuVEJMQ2JpYXNfQ3Vy ICAgICAgICAgICAgIChIQ19YVENfQ3VyIDw8IDE0KQ0KPiAtI2RlZmluZSBIQ19IVFhuVEJM Q2JpYXNfQWRpZiAgICAgICAgICAgIChIQ19YVENfQWRpZiA8PCAxNCkNCj4gLSNkZWZpbmUg SENfSFRYblRCTENiaWFzX0ZvZyAgICAgICAgICAgICAoSENfWFRDX0ZvZyA8PCAxNCkNCj4g LSNkZWZpbmUgSENfSFRYblRCTENiaWFzX0F0ZXggICAgICAgICAgICAoSENfWFRDX0F0ZXgg PDwgMTQpDQo+IC0jZGVmaW5lIEhDX0hUWG5UQkxDYmlhc19BY3VyICAgICAgICAgICAgKEhD X1hUQ19BY3VyIDw8IDE0KQ0KPiAtI2RlZmluZSBIQ19IVFhuVEJMQ2JpYXNfSFRYblRCTFJD ICAgICAgIChIQ19YVENfSFRYblRCTFJDIDw8IDE0KQ0KPiAtI2RlZmluZSBIQ19IVFhuVEJM Q3NoaWZ0XzEgICAgICAweDAwMDAwMDAwDQo+IC0jZGVmaW5lIEhDX0hUWG5UQkxDc2hpZnRf MiAgICAgIDB4MDAwMDA4MDANCj4gLSNkZWZpbmUgSENfSFRYblRCTENzaGlmdF9ObyAgICAg MHgwMDAwMTAwMA0KPiAtI2RlZmluZSBIQ19IVFhuVEJMQ3NoaWZ0X0RvdFAgICAweDAwMDAx ODAwDQo+IC0vKj0qIEpvaG4gU2hlbmcgWzIwMDMuNy4xOF0gdGV4dHVyZSBjb21iaW5lICo9 Ki8NCj4gLSNkZWZpbmUgSENfSFRYblRCTERPVDMgICAweDAwMDgwMDAwDQo+IC0jZGVmaW5l IEhDX0hUWG5UQkxET1Q0ICAgMHgwMDBDMDAwMA0KPiAtDQo+IC0jZGVmaW5lIEhDX0hUWG5U QkxBb3BfQWRkICAgICAgIDB4MDAwMDAwMDANCj4gLSNkZWZpbmUgSENfSFRYblRCTEFvcF9T dWIgICAgICAgMHgwMDAwMDA4MA0KPiAtI2RlZmluZSBIQ19IVFhuVEJMQW9wX01pbiAgICAg ICAweDAwMDAwMTAwDQo+IC0jZGVmaW5lIEhDX0hUWG5UQkxBb3BfTWF4ICAgICAgIDB4MDAw MDAxODANCj4gLSNkZWZpbmUgSENfSFRYblRCTEFvcF9NYXNrICAgICAgMHgwMDAwMDIwMA0K PiAtI2RlZmluZSBIQ19IVFhuVEJMQWJpYXNfSW52ICAgICAgICAgICAgIDB4MDAwMDAwNDAN Cj4gLSNkZWZpbmUgSENfSFRYblRCTEFiaWFzX0FkaWYgICAgICAgICAgICAweDAwMDAwMDAw DQo+IC0jZGVmaW5lIEhDX0hUWG5UQkxBYmlhc19Gb2cgICAgICAgICAgICAgMHgwMDAwMDAw OA0KPiAtI2RlZmluZSBIQ19IVFhuVEJMQWJpYXNfQWN1ciAgICAgICAgICAgIDB4MDAwMDAw MTANCj4gLSNkZWZpbmUgSENfSFRYblRCTEFiaWFzX0hUWG5UQkxSQWJpYXMgICAweDAwMDAw MDE4DQo+IC0jZGVmaW5lIEhDX0hUWG5UQkxBYmlhc19BdGV4ICAgICAgICAgICAgMHgwMDAw MDAyMA0KPiAtI2RlZmluZSBIQ19IVFhuVEJMQXNoaWZ0XzEgICAgICAweDAwMDAwMDAwDQo+ IC0jZGVmaW5lIEhDX0hUWG5UQkxBc2hpZnRfMiAgICAgIDB4MDAwMDAwMDENCj4gLSNkZWZp bmUgSENfSFRYblRCTEFzaGlmdF9ObyAgICAgMHgwMDAwMDAwMg0KPiAtLyogI2RlZmluZSBI Q19IVFhuVEJMQXNoaWZ0X0RvdFAgICAweDAwMDAwMDAzICovDQo+IC0vKiBIQ19TdWJBX0hU WG5UQkxNUEZvZyAgICAweDAwODINCj4gLSAqLw0KPiAtI2RlZmluZSBIQ19IVFhuVEJMTVBm b2dfTUFTSyAgICAweDAwZTAwMDAwDQo+IC0jZGVmaW5lIEhDX0hUWG5UQkxNUGZvZ18wICAg ICAgIDB4MDAwMDAwMDANCj4gLSNkZWZpbmUgSENfSFRYblRCTE1QZm9nX0FkaWYgICAgMHgw MDIwMDAwMA0KPiAtI2RlZmluZSBIQ19IVFhuVEJMTVBmb2dfRm9nICAgICAweDAwNDAwMDAw DQo+IC0jZGVmaW5lIEhDX0hUWG5UQkxNUGZvZ19BdGV4ICAgIDB4MDA2MDAwMDANCj4gLSNk ZWZpbmUgSENfSFRYblRCTE1QZm9nX0FjdXIgICAgMHgwMDgwMDAwMA0KPiAtI2RlZmluZSBI Q19IVFhuVEJMTVBmb2dfR0hUWG5UQkxSRm9nICAgIDB4MDBhMDAwMDANCj4gLS8qIEhDX1N1 YkFfSFRYblRCTEFzYXQgICAgIDB4MDA4Mw0KPiAtICotLSBEZWZpbmUgdGhlIHRleHR1cmUg YWxwaGEgaW5wdXQuDQo+IC0gKi8NCj4gLSNkZWZpbmUgSENfWFRBX1RPUEEgICAgICAgICAg ICAgMHgwMDAwMDAwMA0KPiAtI2RlZmluZSBIQ19YVEFfSW52VE9QQSAgICAgICAgICAweDAw MDAwMDA4DQo+IC0jZGVmaW5lIEhDX1hUQV9UT1BBcDUgICAgICAgICAgIDB4MDAwMDAwMTAN Cj4gLSNkZWZpbmUgSENfWFRBX0FkaWYgICAgICAgICAgICAgMHgwMDAwMDAwMA0KPiAtI2Rl ZmluZSBIQ19YVEFfRm9nICAgICAgICAgICAgICAweDAwMDAwMDAxDQo+IC0jZGVmaW5lIEhD X1hUQV9BY3VyICAgICAgICAgICAgIDB4MDAwMDAwMDINCj4gLSNkZWZpbmUgSENfWFRBX0hU WG5UQkxSQSAgICAgICAgMHgwMDAwMDAwMw0KPiAtI2RlZmluZSBIQ19YVEFfQXRleCAgICAg ICAgICAgICAweDAwMDAwMDA0DQo+IC0jZGVmaW5lIEhDX1hUQV9BdGV4bmV4dCAgICAgICAg IDB4MDAwMDAwMDUNCj4gLS8qLS0NCj4gLSAqLw0KPiAtI2RlZmluZSBIQ19IVFhuVEJMQXNh dF9NQVNLICAgICAweDAwODAwMDAwDQo+IC0jZGVmaW5lIEhDX0hUWG5UQkxBTUJfTUFTSyAg ICAgIDB4MDA3MDAwMDANCj4gLSNkZWZpbmUgSENfSFRYblRCTEFhX01BU0sgICAgICAgMHgw MDA3YzAwMA0KPiAtI2RlZmluZSBIQ19IVFhuVEJMQWJfTUFTSyAgICAgICAweDAwMDAwZjgw DQo+IC0jZGVmaW5lIEhDX0hUWG5UQkxBY19NQVNLICAgICAgIDB4MDAwMDAwMWYNCj4gLSNk ZWZpbmUgSENfSFRYblRCTEFNQl9TSElGVCAgICAgMjANCj4gLSNkZWZpbmUgSENfSFRYblRC TEFhX1RPUEEgICAgICAgKEhDX1hUQV9UT1BBIDw8IDE0KQ0KPiAtI2RlZmluZSBIQ19IVFhu VEJMQWFfSW52VE9QQSAgICAoSENfWFRBX0ludlRPUEEgPDwgMTQpDQo+IC0jZGVmaW5lIEhD X0hUWG5UQkxBYV9UT1BBcDUgICAgIChIQ19YVEFfVE9QQXA1IDw8IDE0KQ0KPiAtI2RlZmlu ZSBIQ19IVFhuVEJMQWFfQWRpZiAgICAgICAoSENfWFRBX0FkaWYgPDwgMTQpDQo+IC0jZGVm aW5lIEhDX0hUWG5UQkxBYV9Gb2cgICAgICAgIChIQ19YVEFfRm9nIDw8IDE0KQ0KPiAtI2Rl ZmluZSBIQ19IVFhuVEJMQWFfQWN1ciAgICAgICAoSENfWFRBX0FjdXIgPDwgMTQpDQo+IC0j ZGVmaW5lIEhDX0hUWG5UQkxBYV9IVFhuVEJMUkEgIChIQ19YVEFfSFRYblRCTFJBIDw8IDE0 KQ0KPiAtI2RlZmluZSBIQ19IVFhuVEJMQWFfQXRleCAgICAgICAoSENfWFRBX0F0ZXggPDwg MTQpDQo+IC0jZGVmaW5lIEhDX0hUWG5UQkxBYV9BdGV4bmV4dCAgIChIQ19YVEFfQXRleG5l eHQgPDwgMTQpDQo+IC0jZGVmaW5lIEhDX0hUWG5UQkxBYl9UT1BBICAgICAgIChIQ19YVEFf VE9QQSA8PCA3KQ0KPiAtI2RlZmluZSBIQ19IVFhuVEJMQWJfSW52VE9QQSAgICAoSENfWFRB X0ludlRPUEEgPDwgNykNCj4gLSNkZWZpbmUgSENfSFRYblRCTEFiX1RPUEFwNSAgICAgKEhD X1hUQV9UT1BBcDUgPDwgNykNCj4gLSNkZWZpbmUgSENfSFRYblRCTEFiX0FkaWYgICAgICAg KEhDX1hUQV9BZGlmIDw8IDcpDQo+IC0jZGVmaW5lIEhDX0hUWG5UQkxBYl9Gb2cgICAgICAg IChIQ19YVEFfRm9nIDw8IDcpDQo+IC0jZGVmaW5lIEhDX0hUWG5UQkxBYl9BY3VyICAgICAg IChIQ19YVEFfQWN1ciA8PCA3KQ0KPiAtI2RlZmluZSBIQ19IVFhuVEJMQWJfSFRYblRCTFJB ICAoSENfWFRBX0hUWG5UQkxSQSA8PCA3KQ0KPiAtI2RlZmluZSBIQ19IVFhuVEJMQWJfQXRl eCAgICAgICAoSENfWFRBX0F0ZXggPDwgNykNCj4gLSNkZWZpbmUgSENfSFRYblRCTEFiX0F0 ZXhuZXh0ICAgKEhDX1hUQV9BdGV4bmV4dCA8PCA3KQ0KPiAtI2RlZmluZSBIQ19IVFhuVEJM QWNfVE9QQSAgICAgICAoSENfWFRBX1RPUEEgPDwgMCkNCj4gLSNkZWZpbmUgSENfSFRYblRC TEFjX0ludlRPUEEgICAgKEhDX1hUQV9JbnZUT1BBIDw8IDApDQo+IC0jZGVmaW5lIEhDX0hU WG5UQkxBY19UT1BBcDUgICAgIChIQ19YVEFfVE9QQXA1IDw8IDApDQo+IC0jZGVmaW5lIEhD X0hUWG5UQkxBY19BZGlmICAgICAgIChIQ19YVEFfQWRpZiA8PCAwKQ0KPiAtI2RlZmluZSBI Q19IVFhuVEJMQWNfRm9nICAgICAgICAoSENfWFRBX0ZvZyA8PCAwKQ0KPiAtI2RlZmluZSBI Q19IVFhuVEJMQWNfQWN1ciAgICAgICAoSENfWFRBX0FjdXIgPDwgMCkNCj4gLSNkZWZpbmUg SENfSFRYblRCTEFjX0hUWG5UQkxSQSAgKEhDX1hUQV9IVFhuVEJMUkEgPDwgMCkNCj4gLSNk ZWZpbmUgSENfSFRYblRCTEFjX0F0ZXggICAgICAgKEhDX1hUQV9BdGV4IDw8IDApDQo+IC0j ZGVmaW5lIEhDX0hUWG5UQkxBY19BdGV4bmV4dCAgIChIQ19YVEFfQXRleG5leHQgPDwgMCkN Cj4gLS8qIEhDX1N1YkFfSFRYblRCTFJBYSAgICAgIDB4MDA4OQ0KPiAtICovDQo+IC0jZGVm aW5lIEhDX0hUWG5UQkxSQWFfTUFTSyAgICAgIDB4MDBmZjAwMDANCj4gLSNkZWZpbmUgSENf SFRYblRCTFJBYl9NQVNLICAgICAgMHgwMDAwZmYwMA0KPiAtI2RlZmluZSBIQ19IVFhuVEJM UkFjX01BU0sgICAgICAweDAwMDAwMGZmDQo+IC0jZGVmaW5lIEhDX0hUWG5UQkxSQWFfU0hJ RlQgICAgIDE2DQo+IC0jZGVmaW5lIEhDX0hUWG5UQkxSQWJfU0hJRlQgICAgIDgNCj4gLSNk ZWZpbmUgSENfSFRYblRCTFJBY19TSElGVCAgICAgMA0KPiAtLyogSENfU3ViQV9IVFhuVEJM UkZvZyAgICAgMHgwMDhhDQo+IC0gKi8NCj4gLSNkZWZpbmUgSENfSFRYblRCTFJGb2dfTUFT SyAgICAgMHgwMDAwZmYwMA0KPiAtI2RlZmluZSBIQ19IVFhuVEJMUkFiaWFzX01BU0sgICAw eDAwMDAwMGZmDQo+IC0jZGVmaW5lIEhDX0hUWG5UQkxSRm9nX1NISUZUICAgIDgNCj4gLSNk ZWZpbmUgSENfSFRYblRCTFJBYmlhc19TSElGVCAgMA0KPiAtLyogSENfU3ViQV9IVFhuTFNj YWxlICAgICAgMHgwMDk0DQo+IC0gKi8NCj4gLSNkZWZpbmUgSENfSFRYbkxTY2FsZV9NQVNL ICAgICAgMHgwMDA3ZmMwMA0KPiAtI2RlZmluZSBIQ19IVFhuTE9mZl9NQVNLICAgICAgICAw eDAwMDAwMWZmDQo+IC0jZGVmaW5lIEhDX0hUWG5MU2NhbGVfU0hJRlQgICAgIDEwDQo+IC0v KiBIQ19TdWJBX0hUWFNNRCAgICAgICAgICAweDAwMDANCj4gLSAqLw0KPiAtI2RlZmluZSBI Q19IVFhTTURfTUFTSyAgICAgICAgICAweDAwMDAwMDgwDQo+IC0jZGVmaW5lIEhDX0hUWFRN RF9NQVNLICAgICAgICAgIDB4MDAwMDAwNDANCj4gLSNkZWZpbmUgSENfSFRYTnVtX01BU0sg ICAgICAgICAgMHgwMDAwMDAzOA0KPiAtI2RlZmluZSBIQ19IVFhUUk1EX01BU0sgICAgICAg ICAweDAwMDAwMDA2DQo+IC0jZGVmaW5lIEhDX0hUWENIQ0xSX01BU0sgICAgICAgIDB4MDAw MDAwMDENCj4gLSNkZWZpbmUgSENfSFRYTnVtX1NISUZUICAgICAgICAgMw0KPiAtDQo+IC0v KiBUZXh0dXJlIFBhbGV0dGUgbg0KPiAtICovDQo+IC0jZGVmaW5lIEhDX1N1YlR5cGVfVGV4 UGFsZXR0ZTAgIDB4MDAwMDAwMDANCj4gLSNkZWZpbmUgSENfU3ViVHlwZV9UZXhQYWxldHRl MSAgMHgwMDAwMDAwMQ0KPiAtI2RlZmluZSBIQ19TdWJUeXBlX0ZvZ1RhYmxlICAgICAweDAw MDAwMDEwDQo+IC0jZGVmaW5lIEhDX1N1YlR5cGVfU3RpcHBsZSAgICAgIDB4MDAwMDAwMTQN Cj4gLS8qIEhDX1N1YkFfVGV4UGFsZXR0ZTAgICAgIDB4MDAwMA0KPiAtICovDQo+IC0jZGVm aW5lIEhDX0hUUG5BX01BU0sgICAgICAgICAgIDB4ZmYwMDAwMDANCj4gLSNkZWZpbmUgSENf SFRQblJfTUFTSyAgICAgICAgICAgMHgwMGZmMDAwMA0KPiAtI2RlZmluZSBIQ19IVFBuR19N QVNLICAgICAgICAgICAweDAwMDBmZjAwDQo+IC0jZGVmaW5lIEhDX0hUUG5CX01BU0sgICAg ICAgICAgIDB4MDAwMDAwZmYNCj4gLS8qIEhDX1N1YkFfRm9nVGFibGUgICAgICAgIDB4MDAx MA0KPiAtICovDQo+IC0jZGVmaW5lIEhDX0hGUG4zX01BU0sgICAgICAgICAgIDB4ZmYwMDAw MDANCj4gLSNkZWZpbmUgSENfSEZQbjJfTUFTSyAgICAgICAgICAgMHgwMGZmMDAwMA0KPiAt I2RlZmluZSBIQ19IRlBuMV9NQVNLICAgICAgICAgICAweDAwMDBmZjAwDQo+IC0jZGVmaW5l IEhDX0hGUG5fTUFTSyAgICAgICAgICAgIDB4MDAwMDAwZmYNCj4gLSNkZWZpbmUgSENfSEZQ bjNfU0hJRlQgICAgICAgICAgMjQNCj4gLSNkZWZpbmUgSENfSEZQbjJfU0hJRlQgICAgICAg ICAgMTYNCj4gLSNkZWZpbmUgSENfSEZQbjFfU0hJRlQgICAgICAgICAgOA0KPiAtDQo+IC0v KiBBdXRvIFRlc3RpbmcgJiBTZWN1cml0eQ0KPiAtICovDQo+IC0jZGVmaW5lIEhDX1N1YkFf SGVuRklGT0FUICAgICAgIDB4MDAwMA0KPiAtI2RlZmluZSBIQ19TdWJBX0hGQkRyYXdGaXJz dCAgICAweDAwMDQNCj4gLSNkZWZpbmUgSENfU3ViQV9IRkJCYXNMICAgICAgICAgMHgwMDA1 DQo+IC0jZGVmaW5lIEhDX1N1YkFfSEZCRHN0ICAgICAgICAgIDB4MDAwNg0KPiAtLyogSENf U3ViQV9IZW5GSUZPQVQgICAgICAgMHgwMDAwDQo+IC0gKi8NCj4gLSNkZWZpbmUgSENfSGVu RklGT0FUX01BU0sgICAgICAgMHgwMDAwMDAyMA0KPiAtI2RlZmluZSBIQ19IZW5HRU1JTG9j a19NQVNLICAgICAweDAwMDAwMDEwDQo+IC0jZGVmaW5lIEhDX0hlbkZCQVN3YXBfTUFTSyAg ICAgIDB4MDAwMDAwMDgNCj4gLSNkZWZpbmUgSENfSGVuT1RfTUFTSyAgICAgICAgICAgMHgw MDAwMDAwNA0KPiAtI2RlZmluZSBIQ19IZW5DTURRX01BU0sgICAgICAgICAweDAwMDAwMDAy DQo+IC0jZGVmaW5lIEhDX0hlblRYQ1RTVV9NQVNLICAgICAgIDB4MDAwMDAwMDENCj4gLS8q IEhDX1N1YkFfSEZCRHJhd0ZpcnN0ICAgIDB4MDAwNA0KPiAtICovDQo+IC0jZGVmaW5lIEhD X0hGQkRyYXdGaXJzdF9NQVNLICAgIDB4MDAwMDA4MDANCj4gLSNkZWZpbmUgSENfSEZCUXVl dWVfTUFTSyAgICAgICAgMHgwMDAwMDQwMA0KPiAtI2RlZmluZSBIQ19IRkJMb2NrX01BU0sg ICAgICAgICAweDAwMDAwMjAwDQo+IC0jZGVmaW5lIEhDX0hFT0ZfTUFTSyAgICAgICAgICAg IDB4MDAwMDAxMDANCj4gLSNkZWZpbmUgSENfSEZCQmFzSF9NQVNLICAgICAgICAgMHgwMDAw MDBmZg0KPiAtDQo+IC0vKiBHRU1JIFNldHRpbmcNCj4gLSAqLw0KPiAtI2RlZmluZSBIQ19T dWJBX0hUQXJiUkNNICAgICAgICAweDAwMDgNCj4gLSNkZWZpbmUgSENfU3ViQV9IVEFyYlJa ICAgICAgICAgMHgwMDBhDQo+IC0jZGVmaW5lIEhDX1N1YkFfSFRBcmJXWiAgICAgICAgIDB4 MDAwYg0KPiAtI2RlZmluZSBIQ19TdWJBX0hUQXJiUlRYICAgICAgICAweDAwMGMNCj4gLSNk ZWZpbmUgSENfU3ViQV9IVEFyYlJDVyAgICAgICAgMHgwMDBkDQo+IC0jZGVmaW5lIEhDX1N1 YkFfSFRBcmJFMiAgICAgICAgIDB4MDAwZQ0KPiAtI2RlZmluZSBIQ19TdWJBX0hBcmJSUUNN ICAgICAgICAweDAwMTANCj4gLSNkZWZpbmUgSENfU3ViQV9IQXJiV1FDTSAgICAgICAgMHgw MDExDQo+IC0jZGVmaW5lIEhDX1N1YkFfSEdFTUlUb3V0ICAgICAgIDB4MDAyMA0KPiAtI2Rl ZmluZSBIQ19TdWJBX0hGdGhSVFhEICAgICAgICAweDAwNDANCj4gLSNkZWZpbmUgSENfU3Vi QV9IRnRoUlRYQSAgICAgICAgMHgwMDQ0DQo+IC0jZGVmaW5lIEhDX1N1YkFfSENNRFFzdEwg ICAgICAgIDB4MDA1MA0KPiAtI2RlZmluZSBIQ19TdWJBX0hDTURRZW5kTCAgICAgICAweDAw NTENCj4gLSNkZWZpbmUgSENfU3ViQV9IQ01EUUxlbiAgICAgICAgMHgwMDUyDQo+IC0vKiBI Q19TdWJBX0hUQXJiUkNNICAgICAgICAweDAwMDgNCj4gLSAqLw0KPiAtI2RlZmluZSBIQ19I VEFyYlJDTV9NQVNLICAgICAgICAweDAwMDBmZmZmDQo+IC0vKiBIQ19TdWJBX0hUQXJiUlog ICAgICAgICAweDAwMGENCj4gLSAqLw0KPiAtI2RlZmluZSBIQ19IVEFyYlJaX01BU0sgICAg ICAgICAweDAwMDBmZmZmDQo+IC0vKiBIQ19TdWJBX0hUQXJiV1ogICAgICAgICAweDAwMGIN Cj4gLSAqLw0KPiAtI2RlZmluZSBIQ19IVEFyYldaX01BU0sgICAgICAgICAweDAwMDBmZmZm DQo+IC0vKiBIQ19TdWJBX0hUQXJiUlRYICAgICAgICAweDAwMGMNCj4gLSAqLw0KPiAtI2Rl ZmluZSBIQ19IVEFyYlJUWF9NQVNLICAgICAgICAweDAwMDBmZmZmDQo+IC0vKiBIQ19TdWJB X0hUQXJiUkNXICAgICAgICAweDAwMGQNCj4gLSAqLw0KPiAtI2RlZmluZSBIQ19IVEFyYlJD V19NQVNLICAgICAgICAweDAwMDBmZmZmDQo+IC0vKiBIQ19TdWJBX0hUQXJiRTIgICAgICAg ICAweDAwMGUNCj4gLSAqLw0KPiAtI2RlZmluZSBIQ19IVEFyYkUyX01BU0sgICAgICAgICAw eDAwMDBmZmZmDQo+IC0vKiBIQ19TdWJBX0hBcmJSUUNNICAgICAgICAweDAwMTANCj4gLSAq Lw0KPiAtI2RlZmluZSBIQ19IVEFyYlJRQ01fTUFTSyAgICAgICAweDAwMDBmZmZmDQo+IC0v KiBIQ19TdWJBX0hBcmJXUUNNICAgICAgICAweDAwMTENCj4gLSAqLw0KPiAtI2RlZmluZSBI Q19IQXJiV1FDTV9NQVNLICAgICAgICAweDAwMDBmZmZmDQo+IC0vKiBIQ19TdWJBX0hHRU1J VG91dCAgICAgICAweDAwMjANCj4gLSAqLw0KPiAtI2RlZmluZSBIQ19IR0VNSVRvdXRfTUFT SyAgICAgICAweDAwMGYwMDAwDQo+IC0jZGVmaW5lIEhDX0hOUEFyYlpDX01BU0sgICAgICAg IDB4MDAwMGZmZmYNCj4gLSNkZWZpbmUgSENfSEdFTUlUb3V0X1NISUZUICAgICAgMTYNCj4g LS8qIEhDX1N1YkFfSEZ0aFJUWEQgICAgICAgIDB4MDA0MA0KPiAtICovDQo+IC0jZGVmaW5l IEhDX0hGdGhSVFhEX01BU0sgICAgICAgIDB4MDBmZjAwMDANCj4gLSNkZWZpbmUgSENfSEZ0 aFJaRF9NQVNLICAgICAgICAgMHgwMDAwZmYwMA0KPiAtI2RlZmluZSBIQ19IRnRoV1pEX01B U0sgICAgICAgICAweDAwMDAwMGZmDQo+IC0jZGVmaW5lIEhDX0hGdGhSVFhEX1NISUZUICAg ICAgIDE2DQo+IC0jZGVmaW5lIEhDX0hGdGhSWkRfU0hJRlQgICAgICAgIDgNCj4gLS8qIEhD X1N1YkFfSEZ0aFJUWEEgICAgICAgIDB4MDA0NA0KPiAtICovDQo+IC0jZGVmaW5lIEhDX0hG dGhSVFhBX01BU0sgICAgICAgIDB4MDAwMDAwZmYNCj4gLQ0KPiAtLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKg0KPiAtKiogRGVmaW5lIHRoZSBIYWxjeW9uIEludGVybmFsIHJlZ2lzdGVy IGFjY2VzcyBjb25zdGFudHMuIEZvciBzaW11bGF0b3Igb25seS4NCj4gLSoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8NCj4gLSNkZWZpbmUgSENfU0lNQV9IQUdQQnN0TCAgICAgICAgMHgw MDAwDQo+IC0jZGVmaW5lIEhDX1NJTUFfSEFHUEJlbmRMICAgICAgIDB4MDAwMQ0KPiAtI2Rl ZmluZSBIQ19TSU1BX0hBR1BDTU5UICAgICAgICAweDAwMDINCj4gLSNkZWZpbmUgSENfU0lN QV9IQUdQQnBMICAgICAgICAgMHgwMDAzDQo+IC0jZGVmaW5lIEhDX1NJTUFfSEFHUEJwSCAg ICAgICAgIDB4MDAwNA0KPiAtI2RlZmluZSBIQ19TSU1BX0hDbGlwVEIgICAgICAgICAweDAw MDUNCj4gLSNkZWZpbmUgSENfU0lNQV9IQ2xpcExSICAgICAgICAgMHgwMDA2DQo+IC0jZGVm aW5lIEhDX1NJTUFfSEZQQ2xpcFRMICAgICAgIDB4MDAwNw0KPiAtI2RlZmluZSBIQ19TSU1B X0hGUENsaXBCTCAgICAgICAweDAwMDgNCj4gLSNkZWZpbmUgSENfU0lNQV9IRlBDbGlwTEwg ICAgICAgMHgwMDA5DQo+IC0jZGVmaW5lIEhDX1NJTUFfSEZQQ2xpcFJMICAgICAgIDB4MDAw YQ0KPiAtI2RlZmluZSBIQ19TSU1BX0hGUENsaXBUQkggICAgICAweDAwMGINCj4gLSNkZWZp bmUgSENfU0lNQV9IRlBDbGlwTFJIICAgICAgMHgwMDBjDQo+IC0jZGVmaW5lIEhDX1NJTUFf SExQICAgICAgICAgICAgIDB4MDAwZA0KPiAtI2RlZmluZSBIQ19TSU1BX0hMUFJGICAgICAg ICAgICAweDAwMGUNCj4gLSNkZWZpbmUgSENfU0lNQV9IU29saWRDTCAgICAgICAgMHgwMDBm DQo+IC0jZGVmaW5lIEhDX1NJTUFfSFBpeEdDICAgICAgICAgIDB4MDAxMA0KPiAtI2RlZmlu ZSBIQ19TSU1BX0hTUFhZT1MgICAgICAgICAweDAwMTENCj4gLSNkZWZpbmUgSENfU0lNQV9I Q21kQSAgICAgICAgICAgMHgwMDEyDQo+IC0jZGVmaW5lIEhDX1NJTUFfSENtZEIgICAgICAg ICAgIDB4MDAxMw0KPiAtI2RlZmluZSBIQ19TSU1BX0hFbmFibGUgICAgICAgICAweDAwMTQN Cj4gLSNkZWZpbmUgSENfU0lNQV9IWldCQmFzTCAgICAgICAgMHgwMDE1DQo+IC0jZGVmaW5l IEhDX1NJTUFfSFpXQkJhc0ggICAgICAgIDB4MDAxNg0KPiAtI2RlZmluZSBIQ19TSU1BX0ha V0JUeXBlICAgICAgICAweDAwMTcNCj4gLSNkZWZpbmUgSENfU0lNQV9IWkJpYXNMICAgICAg ICAgMHgwMDE4DQo+IC0jZGVmaW5lIEhDX1NJTUFfSFpXQmVuZCAgICAgICAgIDB4MDAxOQ0K PiAtI2RlZmluZSBIQ19TSU1BX0haV1RNRCAgICAgICAgICAweDAwMWENCj4gLSNkZWZpbmUg SENfU0lNQV9IWldDREwgICAgICAgICAgMHgwMDFiDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFpX Q1RBR251bSAgICAgIDB4MDAxYw0KPiAtI2RlZmluZSBIQ19TSU1BX0haQ1lOdW0gICAgICAg ICAweDAwMWQNCj4gLSNkZWZpbmUgSENfU0lNQV9IWldDRmlyZSAgICAgICAgMHgwMDFlDQo+ IC0vKiAjZGVmaW5lIEhDX1NJTUFfSFNCQmFzTCAgICAgICAgIDB4MDAxZCAqLw0KPiAtLyog I2RlZmluZSBIQ19TSU1BX0hTQkJhc0ggICAgICAgICAweDAwMWUgKi8NCj4gLS8qICNkZWZp bmUgSENfU0lNQV9IU0JGTSAgICAgICAgICAgMHgwMDFmICovDQo+IC0jZGVmaW5lIEhDX1NJ TUFfSFNUUkVGICAgICAgICAgIDB4MDAyMA0KPiAtI2RlZmluZSBIQ19TSU1BX0hTVE1EICAg ICAgICAgICAweDAwMjENCj4gLSNkZWZpbmUgSENfU0lNQV9IQUJCYXNMICAgICAgICAgMHgw MDIyDQo+IC0jZGVmaW5lIEhDX1NJTUFfSEFCQmFzSCAgICAgICAgIDB4MDAyMw0KPiAtI2Rl ZmluZSBIQ19TSU1BX0hBQkZNICAgICAgICAgICAweDAwMjQNCj4gLSNkZWZpbmUgSENfU0lN QV9IQVRNRCAgICAgICAgICAgMHgwMDI1DQo+IC0jZGVmaW5lIEhDX1NJTUFfSEFCTENzYXQg ICAgICAgIDB4MDAyNg0KPiAtI2RlZmluZSBIQ19TSU1BX0hBQkxDb3AgICAgICAgICAweDAw MjcNCj4gLSNkZWZpbmUgSENfU0lNQV9IQUJMQXNhdCAgICAgICAgMHgwMDI4DQo+IC0jZGVm aW5lIEhDX1NJTUFfSEFCTEFvcCAgICAgICAgIDB4MDAyOQ0KPiAtI2RlZmluZSBIQ19TSU1B X0hBQkxSQ2EgICAgICAgICAweDAwMmENCj4gLSNkZWZpbmUgSENfU0lNQV9IQUJMUkZDYSAg ICAgICAgMHgwMDJiDQo+IC0jZGVmaW5lIEhDX1NJTUFfSEFCTFJDYmlhcyAgICAgIDB4MDAy Yw0KPiAtI2RlZmluZSBIQ19TSU1BX0hBQkxSQ2IgICAgICAgICAweDAwMmQNCj4gLSNkZWZp bmUgSENfU0lNQV9IQUJMUkZDYiAgICAgICAgMHgwMDJlDQo+IC0jZGVmaW5lIEhDX1NJTUFf SEFCTFJBYSAgICAgICAgIDB4MDAyZg0KPiAtI2RlZmluZSBIQ19TSU1BX0hBQkxSQWIgICAg ICAgICAweDAwMzANCj4gLSNkZWZpbmUgSENfU0lNQV9IREJCYXNMICAgICAgICAgMHgwMDMx DQo+IC0jZGVmaW5lIEhDX1NJTUFfSERCQmFzSCAgICAgICAgIDB4MDAzMg0KPiAtI2RlZmlu ZSBIQ19TSU1BX0hEQkZNICAgICAgICAgICAweDAwMzMNCj4gLSNkZWZpbmUgSENfU0lNQV9I RkJCTVNLTCAgICAgICAgMHgwMDM0DQo+IC0jZGVmaW5lIEhDX1NJTUFfSFJPUCAgICAgICAg ICAgIDB4MDAzNQ0KPiAtI2RlZmluZSBIQ19TSU1BX0hGb2dMRiAgICAgICAgICAweDAwMzYN Cj4gLSNkZWZpbmUgSENfU0lNQV9IRm9nQ0wgICAgICAgICAgMHgwMDM3DQo+IC0jZGVmaW5l IEhDX1NJTUFfSEZvZ0NIICAgICAgICAgIDB4MDAzOA0KPiAtI2RlZmluZSBIQ19TSU1BX0hG b2dTdEwgICAgICAgICAweDAwMzkNCj4gLSNkZWZpbmUgSENfU0lNQV9IRm9nU3RIICAgICAg ICAgMHgwMDNhDQo+IC0jZGVmaW5lIEhDX1NJTUFfSEZvZ09PZE1GICAgICAgIDB4MDAzYg0K PiAtI2RlZmluZSBIQ19TSU1BX0hGb2dPT2RFRiAgICAgICAweDAwM2MNCj4gLSNkZWZpbmUg SENfU0lNQV9IRm9nRW5kTCAgICAgICAgMHgwMDNkDQo+IC0jZGVmaW5lIEhDX1NJTUFfSEZv Z0RlbnN0ICAgICAgIDB4MDAzZQ0KPiAtLyotLS0tIHN0YXJ0IG9mIHRleHR1cmUgMCBzZXR0 aW5nIC0tLS0NCj4gLSAqLw0KPiAtI2RlZmluZSBIQ19TSU1BX0hUWDBMMEJhc0wgICAgICAw eDAwNDANCj4gLSNkZWZpbmUgSENfU0lNQV9IVFgwTDFCYXNMICAgICAgMHgwMDQxDQo+IC0j ZGVmaW5lIEhDX1NJTUFfSFRYMEwyQmFzTCAgICAgIDB4MDA0Mg0KPiAtI2RlZmluZSBIQ19T SU1BX0hUWDBMM0Jhc0wgICAgICAweDAwNDMNCj4gLSNkZWZpbmUgSENfU0lNQV9IVFgwTDRC YXNMICAgICAgMHgwMDQ0DQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMEw1QmFzTCAgICAgIDB4 MDA0NQ0KPiAtI2RlZmluZSBIQ19TSU1BX0hUWDBMNkJhc0wgICAgICAweDAwNDYNCj4gLSNk ZWZpbmUgSENfU0lNQV9IVFgwTDdCYXNMICAgICAgMHgwMDQ3DQo+IC0jZGVmaW5lIEhDX1NJ TUFfSFRYMEw4QmFzTCAgICAgIDB4MDA0OA0KPiAtI2RlZmluZSBIQ19TSU1BX0hUWDBMOUJh c0wgICAgICAweDAwNDkNCj4gLSNkZWZpbmUgSENfU0lNQV9IVFgwTGFCYXNMICAgICAgMHgw MDRhDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMExiQmFzTCAgICAgIDB4MDA0Yg0KPiAtI2Rl ZmluZSBIQ19TSU1BX0hUWDBMY0Jhc0wgICAgICAweDAwNGMNCj4gLSNkZWZpbmUgSENfU0lN QV9IVFgwTGRCYXNMICAgICAgMHgwMDRkDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMExlQmFz TCAgICAgIDB4MDA0ZQ0KPiAtI2RlZmluZSBIQ19TSU1BX0hUWDBMZkJhc0wgICAgICAweDAw NGYNCj4gLSNkZWZpbmUgSENfU0lNQV9IVFgwTDEwQmFzTCAgICAgMHgwMDUwDQo+IC0jZGVm aW5lIEhDX1NJTUFfSFRYMEwxMUJhc0wgICAgIDB4MDA1MQ0KPiAtI2RlZmluZSBIQ19TSU1B X0hUWDBMMDEyQmFzSCAgICAweDAwNTINCj4gLSNkZWZpbmUgSENfU0lNQV9IVFgwTDM0NUJh c0ggICAgMHgwMDUzDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMEw2NzhCYXNIICAgIDB4MDA1 NA0KPiAtI2RlZmluZSBIQ19TSU1BX0hUWDBMOWFiQmFzSCAgICAweDAwNTUNCj4gLSNkZWZp bmUgSENfU0lNQV9IVFgwTGNkZUJhc0ggICAgMHgwMDU2DQo+IC0jZGVmaW5lIEhDX1NJTUFf SFRYMExmMTAxMUJhc0ggIDB4MDA1Nw0KPiAtI2RlZmluZSBIQ19TSU1BX0hUWDBMMFBpdCAg ICAgICAweDAwNTgNCj4gLSNkZWZpbmUgSENfU0lNQV9IVFgwTDFQaXQgICAgICAgMHgwMDU5 DQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMEwyUGl0ICAgICAgIDB4MDA1YQ0KPiAtI2RlZmlu ZSBIQ19TSU1BX0hUWDBMM1BpdCAgICAgICAweDAwNWINCj4gLSNkZWZpbmUgSENfU0lNQV9I VFgwTDRQaXQgICAgICAgMHgwMDVjDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMEw1UGl0ICAg ICAgIDB4MDA1ZA0KPiAtI2RlZmluZSBIQ19TSU1BX0hUWDBMNlBpdCAgICAgICAweDAwNWUN Cj4gLSNkZWZpbmUgSENfU0lNQV9IVFgwTDdQaXQgICAgICAgMHgwMDVmDQo+IC0jZGVmaW5l IEhDX1NJTUFfSFRYMEw4UGl0ICAgICAgIDB4MDA2MA0KPiAtI2RlZmluZSBIQ19TSU1BX0hU WDBMOVBpdCAgICAgICAweDAwNjENCj4gLSNkZWZpbmUgSENfU0lNQV9IVFgwTGFQaXQgICAg ICAgMHgwMDYyDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMExiUGl0ICAgICAgIDB4MDA2Mw0K PiAtI2RlZmluZSBIQ19TSU1BX0hUWDBMY1BpdCAgICAgICAweDAwNjQNCj4gLSNkZWZpbmUg SENfU0lNQV9IVFgwTGRQaXQgICAgICAgMHgwMDY1DQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRY MExlUGl0ICAgICAgIDB4MDA2Ng0KPiAtI2RlZmluZSBIQ19TSU1BX0hUWDBMZlBpdCAgICAg ICAweDAwNjcNCj4gLSNkZWZpbmUgSENfU0lNQV9IVFgwTDEwUGl0ICAgICAgMHgwMDY4DQo+ IC0jZGVmaW5lIEhDX1NJTUFfSFRYMEwxMVBpdCAgICAgIDB4MDA2OQ0KPiAtI2RlZmluZSBI Q19TSU1BX0hUWDBMMF81V0UgICAgICAweDAwNmENCj4gLSNkZWZpbmUgSENfU0lNQV9IVFgw TDZfYldFICAgICAgMHgwMDZiDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMExjXzExV0UgICAg IDB4MDA2Yw0KPiAtI2RlZmluZSBIQ19TSU1BX0hUWDBMMF81SEUgICAgICAweDAwNmQNCj4g LSNkZWZpbmUgSENfU0lNQV9IVFgwTDZfYkhFICAgICAgMHgwMDZlDQo+IC0jZGVmaW5lIEhD X1NJTUFfSFRYMExjXzExSEUgICAgIDB4MDA2Zg0KPiAtI2RlZmluZSBIQ19TSU1BX0hUWDBM ME9TICAgICAgICAweDAwNzANCj4gLSNkZWZpbmUgSENfU0lNQV9IVFgwVEIgICAgICAgICAg MHgwMDcxDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYME1QTUQgICAgICAgIDB4MDA3Mg0KPiAt I2RlZmluZSBIQ19TSU1BX0hUWDBDTE9EdSAgICAgICAweDAwNzMNCj4gLSNkZWZpbmUgSENf U0lNQV9IVFgwRk0gICAgICAgICAgMHgwMDc0DQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMFRS Q0ggICAgICAgIDB4MDA3NQ0KPiAtI2RlZmluZSBIQ19TSU1BX0hUWDBUUkNMICAgICAgICAw eDAwNzYNCj4gLSNkZWZpbmUgSENfU0lNQV9IVFgwVEJDICAgICAgICAgMHgwMDc3DQo+IC0j ZGVmaW5lIEhDX1NJTUFfSFRYMFRSQUggICAgICAgIDB4MDA3OA0KPiAtI2RlZmluZSBIQ19T SU1BX0hUWDBUQkxDc2F0ICAgICAweDAwNzkNCj4gLSNkZWZpbmUgSENfU0lNQV9IVFgwVEJM Q29wICAgICAgMHgwMDdhDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMFRCTE1QZm9nICAgIDB4 MDA3Yg0KPiAtI2RlZmluZSBIQ19TSU1BX0hUWDBUQkxBc2F0ICAgICAweDAwN2MNCj4gLSNk ZWZpbmUgSENfU0lNQV9IVFgwVEJMUkNhICAgICAgMHgwMDdkDQo+IC0jZGVmaW5lIEhDX1NJ TUFfSFRYMFRCTFJDYiAgICAgIDB4MDA3ZQ0KPiAtI2RlZmluZSBIQ19TSU1BX0hUWDBUQkxS Q2MgICAgICAweDAwN2YNCj4gLSNkZWZpbmUgSENfU0lNQV9IVFgwVEJMUkNiaWFzICAgMHgw MDgwDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMFRCTFJBYSAgICAgIDB4MDA4MQ0KPiAtI2Rl ZmluZSBIQ19TSU1BX0hUWDBUQkxSRm9nICAgICAweDAwODINCj4gLSNkZWZpbmUgSENfU0lN QV9IVFgwQnVtcE0wMCAgICAgMHgwMDgzDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMEJ1bXBN MDEgICAgIDB4MDA4NA0KPiAtI2RlZmluZSBIQ19TSU1BX0hUWDBCdW1wTTEwICAgICAweDAw ODUNCj4gLSNkZWZpbmUgSENfU0lNQV9IVFgwQnVtcE0xMSAgICAgMHgwMDg2DQo+IC0jZGVm aW5lIEhDX1NJTUFfSFRYMExTY2FsZSAgICAgIDB4MDA4Nw0KPiAtLyotLS0tIGVuZCBvZiB0 ZXh0dXJlIDAgc2V0dGluZyAtLS0tICAgICAgMHgwMDhmDQo+IC0gKi8NCj4gLSNkZWZpbmUg SENfU0lNQV9UWDBUWDFfT0ZGICAgICAgMHgwMDUwDQo+IC0vKi0tLS0gc3RhcnQgb2YgdGV4 dHVyZSAxIHNldHRpbmcgLS0tLQ0KPiAtICovDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMUww QmFzTCAgICAgIChIQ19TSU1BX0hUWDBMMEJhc0wgKyBIQ19TSU1BX1RYMFRYMV9PRkYpDQo+ IC0jZGVmaW5lIEhDX1NJTUFfSFRYMUwxQmFzTCAgICAgIChIQ19TSU1BX0hUWDBMMUJhc0wg KyBIQ19TSU1BX1RYMFRYMV9PRkYpDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMUwyQmFzTCAg ICAgIChIQ19TSU1BX0hUWDBMMkJhc0wgKyBIQ19TSU1BX1RYMFRYMV9PRkYpDQo+IC0jZGVm aW5lIEhDX1NJTUFfSFRYMUwzQmFzTCAgICAgIChIQ19TSU1BX0hUWDBMM0Jhc0wgKyBIQ19T SU1BX1RYMFRYMV9PRkYpDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMUw0QmFzTCAgICAgIChI Q19TSU1BX0hUWDBMNEJhc0wgKyBIQ19TSU1BX1RYMFRYMV9PRkYpDQo+IC0jZGVmaW5lIEhD X1NJTUFfSFRYMUw1QmFzTCAgICAgIChIQ19TSU1BX0hUWDBMNUJhc0wgKyBIQ19TSU1BX1RY MFRYMV9PRkYpDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMUw2QmFzTCAgICAgIChIQ19TSU1B X0hUWDBMNkJhc0wgKyBIQ19TSU1BX1RYMFRYMV9PRkYpDQo+IC0jZGVmaW5lIEhDX1NJTUFf SFRYMUw3QmFzTCAgICAgIChIQ19TSU1BX0hUWDBMN0Jhc0wgKyBIQ19TSU1BX1RYMFRYMV9P RkYpDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMUw4QmFzTCAgICAgIChIQ19TSU1BX0hUWDBM OEJhc0wgKyBIQ19TSU1BX1RYMFRYMV9PRkYpDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMUw5 QmFzTCAgICAgIChIQ19TSU1BX0hUWDBMOUJhc0wgKyBIQ19TSU1BX1RYMFRYMV9PRkYpDQo+ IC0jZGVmaW5lIEhDX1NJTUFfSFRYMUxhQmFzTCAgICAgIChIQ19TSU1BX0hUWDBMYUJhc0wg KyBIQ19TSU1BX1RYMFRYMV9PRkYpDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMUxiQmFzTCAg ICAgIChIQ19TSU1BX0hUWDBMYkJhc0wgKyBIQ19TSU1BX1RYMFRYMV9PRkYpDQo+IC0jZGVm aW5lIEhDX1NJTUFfSFRYMUxjQmFzTCAgICAgIChIQ19TSU1BX0hUWDBMY0Jhc0wgKyBIQ19T SU1BX1RYMFRYMV9PRkYpDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMUxkQmFzTCAgICAgIChI Q19TSU1BX0hUWDBMZEJhc0wgKyBIQ19TSU1BX1RYMFRYMV9PRkYpDQo+IC0jZGVmaW5lIEhD X1NJTUFfSFRYMUxlQmFzTCAgICAgIChIQ19TSU1BX0hUWDBMZUJhc0wgKyBIQ19TSU1BX1RY MFRYMV9PRkYpDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMUxmQmFzTCAgICAgIChIQ19TSU1B X0hUWDBMZkJhc0wgKyBIQ19TSU1BX1RYMFRYMV9PRkYpDQo+IC0jZGVmaW5lIEhDX1NJTUFf SFRYMUwxMEJhc0wgICAgIChIQ19TSU1BX0hUWDBMMTBCYXNMICsgSENfU0lNQV9UWDBUWDFf T0ZGKQ0KPiAtI2RlZmluZSBIQ19TSU1BX0hUWDFMMTFCYXNMICAgICAoSENfU0lNQV9IVFgw TDExQmFzTCArIEhDX1NJTUFfVFgwVFgxX09GRikNCj4gLSNkZWZpbmUgSENfU0lNQV9IVFgx TDAxMkJhc0ggICAgKEhDX1NJTUFfSFRYMEwwMTJCYXNIICsgSENfU0lNQV9UWDBUWDFfT0ZG KQ0KPiAtI2RlZmluZSBIQ19TSU1BX0hUWDFMMzQ1QmFzSCAgICAoSENfU0lNQV9IVFgwTDM0 NUJhc0ggKyBIQ19TSU1BX1RYMFRYMV9PRkYpDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMUw2 NzhCYXNIICAgIChIQ19TSU1BX0hUWDBMNjc4QmFzSCArIEhDX1NJTUFfVFgwVFgxX09GRikN Cj4gLSNkZWZpbmUgSENfU0lNQV9IVFgxTDlhYkJhc0ggICAgKEhDX1NJTUFfSFRYMEw5YWJC YXNIICsgSENfU0lNQV9UWDBUWDFfT0ZGKQ0KPiAtI2RlZmluZSBIQ19TSU1BX0hUWDFMY2Rl QmFzSCAgICAoSENfU0lNQV9IVFgwTGNkZUJhc0ggKyBIQ19TSU1BX1RYMFRYMV9PRkYpDQo+ IC0jZGVmaW5lIEhDX1NJTUFfSFRYMUxmMTAxMUJhc0ggIChIQ19TSU1BX0hUWDBMZjEwMTFC YXNIICsgSENfU0lNQV9UWDBUWDFfT0ZGKQ0KPiAtI2RlZmluZSBIQ19TSU1BX0hUWDFMMFBp dCAgICAgICAoSENfU0lNQV9IVFgwTDBQaXQgKyBIQ19TSU1BX1RYMFRYMV9PRkYpDQo+IC0j ZGVmaW5lIEhDX1NJTUFfSFRYMUwxUGl0ICAgICAgIChIQ19TSU1BX0hUWDBMMVBpdCArIEhD X1NJTUFfVFgwVFgxX09GRikNCj4gLSNkZWZpbmUgSENfU0lNQV9IVFgxTDJQaXQgICAgICAg KEhDX1NJTUFfSFRYMEwyUGl0ICsgSENfU0lNQV9UWDBUWDFfT0ZGKQ0KPiAtI2RlZmluZSBI Q19TSU1BX0hUWDFMM1BpdCAgICAgICAoSENfU0lNQV9IVFgwTDNQaXQgKyBIQ19TSU1BX1RY MFRYMV9PRkYpDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMUw0UGl0ICAgICAgIChIQ19TSU1B X0hUWDBMNFBpdCArIEhDX1NJTUFfVFgwVFgxX09GRikNCj4gLSNkZWZpbmUgSENfU0lNQV9I VFgxTDVQaXQgICAgICAgKEhDX1NJTUFfSFRYMEw1UGl0ICsgSENfU0lNQV9UWDBUWDFfT0ZG KQ0KPiAtI2RlZmluZSBIQ19TSU1BX0hUWDFMNlBpdCAgICAgICAoSENfU0lNQV9IVFgwTDZQ aXQgKyBIQ19TSU1BX1RYMFRYMV9PRkYpDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMUw3UGl0 ICAgICAgIChIQ19TSU1BX0hUWDBMN1BpdCArIEhDX1NJTUFfVFgwVFgxX09GRikNCj4gLSNk ZWZpbmUgSENfU0lNQV9IVFgxTDhQaXQgICAgICAgKEhDX1NJTUFfSFRYMEw4UGl0ICsgSENf U0lNQV9UWDBUWDFfT0ZGKQ0KPiAtI2RlZmluZSBIQ19TSU1BX0hUWDFMOVBpdCAgICAgICAo SENfU0lNQV9IVFgwTDlQaXQgKyBIQ19TSU1BX1RYMFRYMV9PRkYpDQo+IC0jZGVmaW5lIEhD X1NJTUFfSFRYMUxhUGl0ICAgICAgIChIQ19TSU1BX0hUWDBMYVBpdCArIEhDX1NJTUFfVFgw VFgxX09GRikNCj4gLSNkZWZpbmUgSENfU0lNQV9IVFgxTGJQaXQgICAgICAgKEhDX1NJTUFf SFRYMExiUGl0ICsgSENfU0lNQV9UWDBUWDFfT0ZGKQ0KPiAtI2RlZmluZSBIQ19TSU1BX0hU WDFMY1BpdCAgICAgICAoSENfU0lNQV9IVFgwTGNQaXQgKyBIQ19TSU1BX1RYMFRYMV9PRkYp DQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMUxkUGl0ICAgICAgIChIQ19TSU1BX0hUWDBMZFBp dCArIEhDX1NJTUFfVFgwVFgxX09GRikNCj4gLSNkZWZpbmUgSENfU0lNQV9IVFgxTGVQaXQg ICAgICAgKEhDX1NJTUFfSFRYMExlUGl0ICsgSENfU0lNQV9UWDBUWDFfT0ZGKQ0KPiAtI2Rl ZmluZSBIQ19TSU1BX0hUWDFMZlBpdCAgICAgICAoSENfU0lNQV9IVFgwTGZQaXQgKyBIQ19T SU1BX1RYMFRYMV9PRkYpDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMUwxMFBpdCAgICAgIChI Q19TSU1BX0hUWDBMMTBQaXQgKyBIQ19TSU1BX1RYMFRYMV9PRkYpDQo+IC0jZGVmaW5lIEhD X1NJTUFfSFRYMUwxMVBpdCAgICAgIChIQ19TSU1BX0hUWDBMMTFQaXQgKyBIQ19TSU1BX1RY MFRYMV9PRkYpDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMUwwXzVXRSAgICAgIChIQ19TSU1B X0hUWDBMMF81V0UgKyBIQ19TSU1BX1RYMFRYMV9PRkYpDQo+IC0jZGVmaW5lIEhDX1NJTUFf SFRYMUw2X2JXRSAgICAgIChIQ19TSU1BX0hUWDBMNl9iV0UgKyBIQ19TSU1BX1RYMFRYMV9P RkYpDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMUxjXzExV0UgICAgIChIQ19TSU1BX0hUWDBM Y18xMVdFICsgSENfU0lNQV9UWDBUWDFfT0ZGKQ0KPiAtI2RlZmluZSBIQ19TSU1BX0hUWDFM MF81SEUgICAgICAoSENfU0lNQV9IVFgwTDBfNUhFICsgSENfU0lNQV9UWDBUWDFfT0ZGKQ0K PiAtI2RlZmluZSBIQ19TSU1BX0hUWDFMNl9iSEUgICAgICAoSENfU0lNQV9IVFgwTDZfYkhF ICsgSENfU0lNQV9UWDBUWDFfT0ZGKQ0KPiAtI2RlZmluZSBIQ19TSU1BX0hUWDFMY18xMUhF ICAgICAgKEhDX1NJTUFfSFRYMExjXzExSEUgKyBIQ19TSU1BX1RYMFRYMV9PRkYpDQo+IC0j ZGVmaW5lIEhDX1NJTUFfSFRYMUwwT1MgICAgICAgIChIQ19TSU1BX0hUWDBMME9TICsgSENf U0lNQV9UWDBUWDFfT0ZGKQ0KPiAtI2RlZmluZSBIQ19TSU1BX0hUWDFUQiAgICAgICAgICAo SENfU0lNQV9IVFgwVEIgKyBIQ19TSU1BX1RYMFRYMV9PRkYpDQo+IC0jZGVmaW5lIEhDX1NJ TUFfSFRYMU1QTUQgICAgICAgIChIQ19TSU1BX0hUWDBNUE1EICsgSENfU0lNQV9UWDBUWDFf T0ZGKQ0KPiAtI2RlZmluZSBIQ19TSU1BX0hUWDFDTE9EdSAgICAgICAoSENfU0lNQV9IVFgw Q0xPRHUgKyBIQ19TSU1BX1RYMFRYMV9PRkYpDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMUZN ICAgICAgICAgIChIQ19TSU1BX0hUWDBGTSArIEhDX1NJTUFfVFgwVFgxX09GRikNCj4gLSNk ZWZpbmUgSENfU0lNQV9IVFgxVFJDSCAgICAgICAgKEhDX1NJTUFfSFRYMFRSQ0ggKyBIQ19T SU1BX1RYMFRYMV9PRkYpDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMVRSQ0wgICAgICAgIChI Q19TSU1BX0hUWDBUUkNMICsgSENfU0lNQV9UWDBUWDFfT0ZGKQ0KPiAtI2RlZmluZSBIQ19T SU1BX0hUWDFUQkMgICAgICAgICAoSENfU0lNQV9IVFgwVEJDICsgSENfU0lNQV9UWDBUWDFf T0ZGKQ0KPiAtI2RlZmluZSBIQ19TSU1BX0hUWDFUUkFIICAgICAgICAoSENfU0lNQV9IVFgw VFJBSCArIEhDX1NJTUFfVFgwVFgxX09GRikNCj4gLSNkZWZpbmUgSENfU0lNQV9IVFgxTFRD ICAgICAgICAgKEhDX1NJTUFfSFRYMExUQyArIEhDX1NJTUFfVFgwVFgxX09GRikNCj4gLSNk ZWZpbmUgSENfU0lNQV9IVFgxTFRBICAgICAgICAgKEhDX1NJTUFfSFRYMExUQSArIEhDX1NJ TUFfVFgwVFgxX09GRikNCj4gLSNkZWZpbmUgSENfU0lNQV9IVFgxVEJMQ3NhdCAgICAgKEhD X1NJTUFfSFRYMFRCTENzYXQgKyBIQ19TSU1BX1RYMFRYMV9PRkYpDQo+IC0jZGVmaW5lIEhD X1NJTUFfSFRYMVRCTENvcCAgICAgIChIQ19TSU1BX0hUWDBUQkxDb3AgKyBIQ19TSU1BX1RY MFRYMV9PRkYpDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMVRCTE1QZm9nICAgIChIQ19TSU1B X0hUWDBUQkxNUGZvZyArIEhDX1NJTUFfVFgwVFgxX09GRikNCj4gLSNkZWZpbmUgSENfU0lN QV9IVFgxVEJMQXNhdCAgICAgKEhDX1NJTUFfSFRYMFRCTEFzYXQgKyBIQ19TSU1BX1RYMFRY MV9PRkYpDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMVRCTFJDYSAgICAgIChIQ19TSU1BX0hU WDBUQkxSQ2EgKyBIQ19TSU1BX1RYMFRYMV9PRkYpDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRY MVRCTFJDYiAgICAgIChIQ19TSU1BX0hUWDBUQkxSQ2IgKyBIQ19TSU1BX1RYMFRYMV9PRkYp DQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMVRCTFJDYyAgICAgIChIQ19TSU1BX0hUWDBUQkxS Q2MgKyBIQ19TSU1BX1RYMFRYMV9PRkYpDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMVRCTFJD YmlhcyAgIChIQ19TSU1BX0hUWDBUQkxSQ2JpYXMgKyBIQ19TSU1BX1RYMFRYMV9PRkYpDQo+ IC0jZGVmaW5lIEhDX1NJTUFfSFRYMVRCTFJBYSAgICAgIChIQ19TSU1BX0hUWDBUQkxSQWEg KyBIQ19TSU1BX1RYMFRYMV9PRkYpDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRYMVRCTFJGb2cg ICAgIChIQ19TSU1BX0hUWDBUQkxSRm9nICsgSENfU0lNQV9UWDBUWDFfT0ZGKQ0KPiAtI2Rl ZmluZSBIQ19TSU1BX0hUWDFCdW1wTTAwICAgICAoSENfU0lNQV9IVFgwQnVtcE0wMCArIEhD X1NJTUFfVFgwVFgxX09GRikNCj4gLSNkZWZpbmUgSENfU0lNQV9IVFgxQnVtcE0wMSAgICAg KEhDX1NJTUFfSFRYMEJ1bXBNMDEgKyBIQ19TSU1BX1RYMFRYMV9PRkYpDQo+IC0jZGVmaW5l IEhDX1NJTUFfSFRYMUJ1bXBNMTAgICAgIChIQ19TSU1BX0hUWDBCdW1wTTEwICsgSENfU0lN QV9UWDBUWDFfT0ZGKQ0KPiAtI2RlZmluZSBIQ19TSU1BX0hUWDFCdW1wTTExICAgICAoSENf U0lNQV9IVFgwQnVtcE0xMSArIEhDX1NJTUFfVFgwVFgxX09GRikNCj4gLSNkZWZpbmUgSENf U0lNQV9IVFgxTFNjYWxlICAgICAgKEhDX1NJTUFfSFRYMExTY2FsZSArIEhDX1NJTUFfVFgw VFgxX09GRikNCj4gLS8qLS0tLSBlbmQgb2YgdGV4dHVyZSAxIHNldHRpbmcgLS0tLSAweGFm DQo+IC0gKi8NCj4gLSNkZWZpbmUgSENfU0lNQV9IVFhTTUQgICAgICAgICAgMHgwMGIwDQo+ IC0jZGVmaW5lIEhDX1NJTUFfSGVuRklGT0FUICAgICAgIDB4MDBiMQ0KPiAtI2RlZmluZSBI Q19TSU1BX0hGQkRyYXdGaXJzdCAgICAweDAwYjINCj4gLSNkZWZpbmUgSENfU0lNQV9IRkJC YXNMICAgICAgICAgMHgwMGIzDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRBcmJSQ00gICAgICAg IDB4MDBiNA0KPiAtI2RlZmluZSBIQ19TSU1BX0hUQXJiUlogICAgICAgICAweDAwYjUNCj4g LSNkZWZpbmUgSENfU0lNQV9IVEFyYldaICAgICAgICAgMHgwMGI2DQo+IC0jZGVmaW5lIEhD X1NJTUFfSFRBcmJSVFggICAgICAgIDB4MDBiNw0KPiAtI2RlZmluZSBIQ19TSU1BX0hUQXJi UkNXICAgICAgICAweDAwYjgNCj4gLSNkZWZpbmUgSENfU0lNQV9IVEFyYkUyICAgICAgICAg MHgwMGI5DQo+IC0jZGVmaW5lIEhDX1NJTUFfSEdFTUlUb3V0ICAgICAgIDB4MDBiYQ0KPiAt I2RlZmluZSBIQ19TSU1BX0hGdGhSVFhEICAgICAgICAweDAwYmINCj4gLSNkZWZpbmUgSENf U0lNQV9IRnRoUlRYQSAgICAgICAgMHgwMGJjDQo+IC0vKiBEZWZpbmUgdGhlIHRleHR1cmUg cGFsZXR0ZSAwDQo+IC0gKi8NCj4gLSNkZWZpbmUgSENfU0lNQV9IVFAwICAgICAgICAgICAg MHgwMTAwDQo+IC0jZGVmaW5lIEhDX1NJTUFfSFRQMSAgICAgICAgICAgIDB4MDIwMA0KPiAt I2RlZmluZSBIQ19TSU1BX0ZPR1RBQkxFICAgICAgICAweDAzMDANCj4gLSNkZWZpbmUgSENf U0lNQV9TVElQUExFICAgICAgICAgMHgwNDAwDQo+IC0jZGVmaW5lIEhDX1NJTUFfSEUzRmly ZSAgICAgICAgIDB4MDQ0MA0KPiAtI2RlZmluZSBIQ19TSU1BX1RSQU5TX1NFVCAgICAgICAw eDA0NDENCj4gLSNkZWZpbmUgSENfU0lNQV9IUkVuZ1N0ICAgICAgICAgMHgwNDQyDQo+IC0j ZGVmaW5lIEhDX1NJTUFfSFJGSUZPZW1wdHkgICAgIDB4MDQ0Mw0KPiAtI2RlZmluZSBIQ19T SU1BX0hSRklGT2Z1bGwgICAgICAweDA0NDQNCj4gLSNkZWZpbmUgSENfU0lNQV9IUkVyciAg ICAgICAgICAgMHgwNDQ1DQo+IC0jZGVmaW5lIEhDX1NJTUFfRklGT3N0YXR1cyAgICAgIDB4 MDQ0Ng0KPiAtDQo+IC0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQo+IC0qKiBEZWZpbmUg dGhlIEFHUCBjb21tYW5kIGhlYWRlci4NCj4gLSoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8N Cj4gLSNkZWZpbmUgSENfQUNNRF9NQVNLICAgICAgICAgICAgMHhmZTAwMDAwMA0KPiAtI2Rl ZmluZSBIQ19BQ01EX1NVQl9NQVNLICAgICAgICAweDBjMDAwMDAwDQo+IC0jZGVmaW5lIEhD X0FDTURfSENtZEEgICAgICAgICAgIDB4ZWUwMDAwMDANCj4gLSNkZWZpbmUgSENfQUNNRF9I Q21kQiAgICAgICAgICAgMHhlYzAwMDAwMA0KPiAtI2RlZmluZSBIQ19BQ01EX0hDbWRDICAg ICAgICAgICAweGVhMDAwMDAwDQo+IC0jZGVmaW5lIEhDX0FDTURfSDEgICAgICAgICAgICAg IDB4ZjAwMDAwMDANCj4gLSNkZWZpbmUgSENfQUNNRF9IMiAgICAgICAgICAgICAgMHhmMjAw MDAwMA0KPiAtI2RlZmluZSBIQ19BQ01EX0gzICAgICAgICAgICAgICAweGY0MDAwMDAwDQo+ IC0jZGVmaW5lIEhDX0FDTURfSDQgICAgICAgICAgICAgIDB4ZjYwMDAwMDANCj4gLQ0KPiAt I2RlZmluZSBIQ19BQ01EX0gxSU9fTUFTSyAgICAgICAweDAwMDAwMWZmDQo+IC0jZGVmaW5l IEhDX0FDTURfSDJJTzFfTUFTSyAgICAgIDB4MDAxZmYwMDANCj4gLSNkZWZpbmUgSENfQUNN RF9IMklPMl9NQVNLICAgICAgMHgwMDAwMDFmZg0KPiAtI2RlZmluZSBIQ19BQ01EX0gySU8x X1NISUZUICAgICAxMg0KPiAtI2RlZmluZSBIQ19BQ01EX0gySU8yX1NISUZUICAgICAwDQo+ IC0jZGVmaW5lIEhDX0FDTURfSDNJT19NQVNLICAgICAgIDB4MDAwMDAxZmYNCj4gLSNkZWZp bmUgSENfQUNNRF9IM0NPVU5UX01BU0sgICAgMHgwMWZmZjAwMA0KPiAtI2RlZmluZSBIQ19B Q01EX0gzQ09VTlRfU0hJRlQgICAxMg0KPiAtI2RlZmluZSBIQ19BQ01EX0g0SURfTUFTSyAg ICAgICAweDAwMDAwMWZmDQo+IC0jZGVmaW5lIEhDX0FDTURfSDRDT1VOVF9NQVNLICAgIDB4 MDFmZmZlMDANCj4gLSNkZWZpbmUgSENfQUNNRF9INENPVU5UX1NISUZUICAgOQ0KPiAtDQo+ IC0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCj4gLSoqIERlZmluZSBIZWFkZXINCj4g LSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KPiAtI2RlZmluZSBIQ19IRUFERVIyCQkw eEYyMTBGMTEwDQo+IC0NCj4gLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KPiAtKiog RGVmaW5lIER1bW15IFZhbHVlDQo+IC0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCj4g LSNkZWZpbmUgSENfRFVNTVkJCTB4Q0NDQ0NDQ0MNCj4gLS8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKg0KPiAtKiogRGVmaW5lIGZvciBETUEgdXNlDQo+IC0qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8NCj4gLSNkZWZpbmUgSEFMQ1lPTl9IRUFERVIyICAgICAwWEYyMTBGMTEw DQo+IC0jZGVmaW5lIEhBTENZT05fRklSRUNNRCAgICAgMFhFRTEwMDAwMA0KPiAtI2RlZmlu ZSBIQUxDWU9OX0ZJUkVNQVNLICAgIDBYRkZGMDAwMDANCj4gLSNkZWZpbmUgSEFMQ1lPTl9D TURCICAgICAgICAwWEVDMDAwMDAwDQo+IC0jZGVmaW5lIEhBTENZT05fQ01EQk1BU0sgICAg MFhGRkZFMDAwMA0KPiAtI2RlZmluZSBIQUxDWU9OX1NVQl9BRERSMCAgIDBYMDAwMDAwMDAN Cj4gLSNkZWZpbmUgSEFMQ1lPTl9IRUFERVIxTUFTSyAwWEZGRkZGQzAwDQo+IC0jZGVmaW5l IEhBTENZT05fSEVBREVSMSAgICAgMFhGMDAwMDAwMA0KPiAtI2RlZmluZSBIQ19TdWJBX0hB R1BCc3RMICAgICAgICAweDAwNjANCj4gLSNkZWZpbmUgSENfU3ViQV9IQUdQQmVuZEwgICAg ICAgMHgwMDYxDQo+IC0jZGVmaW5lIEhDX1N1YkFfSEFHUENNTlQgICAgICAgIDB4MDA2Mg0K PiAtI2RlZmluZSBIQ19TdWJBX0hBR1BCcEwgICAgICAgICAweDAwNjMNCj4gLSNkZWZpbmUg SENfU3ViQV9IQUdQQnBIICAgICAgICAgMHgwMDY0DQo+IC0jZGVmaW5lIEhDX0hBR1BDTU5U X01BU0sgICAgICAgIDB4MDA4MDAwMDANCj4gLSNkZWZpbmUgSENfSENtZEVyckNscl9NQVNL ICAgICAgMHgwMDQwMDAwMA0KPiAtI2RlZmluZSBIQ19IQUdQQmVuZEhfTUFTSyAgICAgICAw eDAwMDBmZjAwDQo+IC0jZGVmaW5lIEhDX0hBR1BCc3RIX01BU0sgICAgICAgIDB4MDAwMDAw ZmYNCj4gLSNkZWZpbmUgSENfSEFHUEJlbmRIX1NISUZUICAgICAgOA0KPiAtI2RlZmluZSBI Q19IQUdQQnN0SF9TSElGVCAgICAgICAwDQo+IC0jZGVmaW5lIEhDX0hBR1BCcExfTUFTSyAg ICAgICAgIDB4MDBmZmZmZmMNCj4gLSNkZWZpbmUgSENfSEFHUEJwSURfTUFTSyAgICAgICAg MHgwMDAwMDAwMw0KPiAtI2RlZmluZSBIQ19IQUdQQnBJRF9QQVVTRSAgICAgICAweDAwMDAw MDAwDQo+IC0jZGVmaW5lIEhDX0hBR1BCcElEX0pVTVAgICAgICAgIDB4MDAwMDAwMDENCj4g LSNkZWZpbmUgSENfSEFHUEJwSURfU1RPUCAgICAgICAgMHgwMDAwMDAwMg0KPiAtI2RlZmlu ZSBIQ19IQUdQQnBIX01BU0sgICAgICAgICAweDAwZmZmZmZmDQo+IC0NCj4gLSNkZWZpbmUg VklBX1ZJREVPX0hFQURFUjUgICAgICAgMHhGRTA0MDAwMA0KPiAtI2RlZmluZSBWSUFfVklE RU9fSEVBREVSNiAgICAgICAweEZFMDUwMDAwDQo+IC0jZGVmaW5lIFZJQV9WSURFT19IRUFE RVI3ICAgICAgIDB4RkUwNjAwMDANCj4gLSNkZWZpbmUgVklBX1ZJREVPTUFTSyAgICAgICAg ICAgMHhGRkZGMDAwMA0KPiAtI2VuZGlmDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vdmlhL3ZpYV9kbWEuYyBiL2RyaXZlcnMvZ3B1L2RybS92aWEvdmlhX2RtYS5jDQo+IGRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAxNzdiMDQ5OWFiZjEuLjAwMDAwMDAw MDAwMA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmlhL3ZpYV9kbWEuYw0KPiArKysgL2Rl di9udWxsDQo+IEBAIC0xLDc0NCArMCwwIEBADQo+IC0vKiB2aWFfZG1hLmMgLS0gRE1BIHN1 cHBvcnQgZm9yIHRoZSBWSUEgVW5pY2hyb21lL1Bybw0KPiAtICoNCj4gLSAqIENvcHlyaWdo dCAyMDAzIFR1bmdzdGVuIEdyYXBoaWNzLCBJbmMuLCBDZWRhciBQYXJrLCBUZXhhcy4NCj4g LSAqIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQo+IC0gKg0KPiAtICogQ29weXJpZ2h0IDIwMDQg RGlnZW8sIEluYy4sIFBhbG8gQWx0bywgQ0EsIFUuUy5BLg0KPiAtICogQWxsIFJpZ2h0cyBS ZXNlcnZlZC4NCj4gLSAqDQo+IC0gKiBDb3B5cmlnaHQgMjAwNCBUaGUgVW5pY2hyb21lIHBy b2plY3QuDQo+IC0gKiBBbGwgUmlnaHRzIFJlc2VydmVkLg0KPiAtICoNCj4gLSAqIFBlcm1p c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29u IG9idGFpbmluZyBhDQo+IC0gKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0 ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLA0KPiAtICogdG8gZGVh bCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhv dXQgbGltaXRhdGlvbg0KPiAtICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwg bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YiBsaWNlbnNlLA0KPiAtICogYW5kL29y IHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRv IHdob20gdGhlDQo+IC0gKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1Ympl Y3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KPiAtICoNCj4gLSAqIFRoZSBhYm92 ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRp bmcgdGhlDQo+IC0gKiBuZXh0IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxs IGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucw0KPiAtICogb2YgdGhlIFNvZnR3YXJl Lg0KPiAtICoNCj4gLSAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQo+IC0gKiBJTVBMSUVELCBJ TkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5U QUJJTElUWSwNCj4gLSAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBO T04tSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTA0KPiAtICogVEhFIENPUFlSSUdI VCBIT0xERVJTLCBBVVRIT1JTIEFORC9PUiBJVFMgU1VQUExJRVJTIEJFIExJQUJMRSBGT1Ig QU5ZIENMQUlNLA0KPiAtICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIg SU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SDQo+IC0gKiBPVEhFUldJU0UsIEFS SVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUg T1IgVEhFDQo+IC0gKiBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0K PiAtICoNCj4gLSAqIEF1dGhvcnM6DQo+IC0gKiAgICBUdW5nc3RlbiBHcmFwaGljcywNCj4g LSAqICAgIEVyZGkgQ2hlbiwNCj4gLSAqICAgIFRob21hcyBIZWxsc3Ryb20uDQo+IC0gKi8N Cj4gLQ0KPiAtI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+DQo+IC0jaW5jbHVkZSA8bGludXgv dWFjY2Vzcy5oPg0KPiAtDQo+IC0jaW5jbHVkZSA8ZHJtL2RybS5oPg0KPiAtI2luY2x1ZGUg PGRybS9kcm1fZGV2aWNlLmg+DQo+IC0jaW5jbHVkZSA8ZHJtL2RybV9maWxlLmg+DQo+IC0j aW5jbHVkZSA8ZHJtL3ZpYV9kcm0uaD4NCj4gLQ0KPiAtI2luY2x1ZGUgInZpYV9kcnYuaCIN Cj4gLSNpbmNsdWRlICJ2aWFfM2RfcmVnLmgiDQo+IC0NCj4gLSNkZWZpbmUgQ01EQlVGX0FM SUdOTUVOVF9TSVpFICAgKDB4MTAwKQ0KPiAtI2RlZmluZSBDTURCVUZfQUxJR05NRU5UX01B U0sgICAoMHgwZmYpDQo+IC0NCj4gLS8qIGRlZmluZXMgZm9yIFZJQSAzRCByZWdpc3RlcnMg Ki8NCj4gLSNkZWZpbmUgVklBX1JFR19TVEFUVVMgICAgICAgICAgMHg0MDANCj4gLSNkZWZp bmUgVklBX1JFR19UUkFOU0VUICAgICAgICAgMHg0M0MNCj4gLSNkZWZpbmUgVklBX1JFR19U UkFOU1BBQ0UgICAgICAgMHg0NDANCj4gLQ0KPiAtLyogVklBX1JFR19TVEFUVVMoMHg0MDAp OiBFbmdpbmUgU3RhdHVzICovDQo+IC0jZGVmaW5lIFZJQV9DTURfUkdUUl9CVVNZICAgICAg IDB4MDAwMDAwODAJLyogQ29tbWFuZCBSZWd1bGF0b3IgaXMgYnVzeSAqLw0KPiAtI2RlZmlu ZSBWSUFfMkRfRU5HX0JVU1kgICAgICAgICAweDAwMDAwMDAxCS8qIDJEIEVuZ2luZSBpcyBi dXN5ICovDQo+IC0jZGVmaW5lIFZJQV8zRF9FTkdfQlVTWSAgICAgICAgIDB4MDAwMDAwMDIJ LyogM0QgRW5naW5lIGlzIGJ1c3kgKi8NCj4gLSNkZWZpbmUgVklBX1ZSX1FVRVVFX0JVU1kg ICAgICAgMHgwMDAyMDAwMAkvKiBWaXJ0dWFsIFF1ZXVlIGlzIGJ1c3kgKi8NCj4gLQ0KPiAt I2RlZmluZSBTZXRSZWcyREFHUChuUmVnLCBuRGF0YSkgewkJCQlcDQo+IC0JKigodWludDMy X3QgKikodmIpKSA9ICgoblJlZykgPj4gMikgfCBIQUxDWU9OX0hFQURFUjE7CVwNCj4gLQkq KCh1aW50MzJfdCAqKSh2YikgKyAxKSA9IChuRGF0YSk7CQkJXA0KPiAtCXZiID0gKCh1aW50 MzJfdCAqKXZiKSArIDI7CQkJCVwNCj4gLQlkZXZfcHJpdi0+ZG1hX2xvdyArPSA4OwkJCQkJ XA0KPiAtfQ0KPiAtDQo+IC0jZGVmaW5lIHZpYV9mbHVzaF93cml0ZV9jb21iaW5lKCkgbWIo KQ0KPiAtDQo+IC0jZGVmaW5lIFZJQV9PVVRfUklOR19RVyh3MSwgdzIpCWRvIHsJCVwNCj4g LQkqdmIrKyA9ICh3MSk7CQkJCVwNCj4gLQkqdmIrKyA9ICh3Mik7CQkJCVwNCj4gLQlkZXZf cHJpdi0+ZG1hX2xvdyArPSA4OwkJCVwNCj4gLX0gd2hpbGUgKDApDQo+IC0NCj4gLXN0YXRp YyB2b2lkIHZpYV9jbWRidWZfc3RhcnQoZHJtX3ZpYV9wcml2YXRlX3QgKmRldl9wcml2KTsN Cj4gLXN0YXRpYyB2b2lkIHZpYV9jbWRidWZfcGF1c2UoZHJtX3ZpYV9wcml2YXRlX3QgKmRl dl9wcml2KTsNCj4gLXN0YXRpYyB2b2lkIHZpYV9jbWRidWZfcmVzZXQoZHJtX3ZpYV9wcml2 YXRlX3QgKmRldl9wcml2KTsNCj4gLXN0YXRpYyB2b2lkIHZpYV9jbWRidWZfcmV3aW5kKGRy bV92aWFfcHJpdmF0ZV90ICpkZXZfcHJpdik7DQo+IC1zdGF0aWMgaW50IHZpYV93YWl0X2lk bGUoZHJtX3ZpYV9wcml2YXRlX3QgKmRldl9wcml2KTsNCj4gLXN0YXRpYyB2b2lkIHZpYV9w YWRfY2FjaGUoZHJtX3ZpYV9wcml2YXRlX3QgKmRldl9wcml2LCBpbnQgcXdvcmRzKTsNCj4g LQ0KPiAtLyoNCj4gLSAqIEZyZWUgc3BhY2UgaW4gY29tbWFuZCBidWZmZXIuDQo+IC0gKi8N Cj4gLQ0KPiAtc3RhdGljIHVpbnQzMl90IHZpYV9jbWRidWZfc3BhY2UoZHJtX3ZpYV9wcml2 YXRlX3QgKmRldl9wcml2KQ0KPiAtew0KPiAtCXVpbnQzMl90IGFncF9iYXNlID0gZGV2X3By aXYtPmRtYV9vZmZzZXQgKyAodWludDMyX3QpIGRldl9wcml2LT5hZ3BBZGRyOw0KPiAtCXVp bnQzMl90IGh3X2FkZHIgPSAqKGRldl9wcml2LT5od19hZGRyX3B0cikgLSBhZ3BfYmFzZTsN Cj4gLQ0KPiAtCXJldHVybiAoKGh3X2FkZHIgPD0gZGV2X3ByaXYtPmRtYV9sb3cpID8NCj4g LQkJKGRldl9wcml2LT5kbWFfaGlnaCArIGh3X2FkZHIgLSBkZXZfcHJpdi0+ZG1hX2xvdykg Og0KPiAtCQkoaHdfYWRkciAtIGRldl9wcml2LT5kbWFfbG93KSk7DQo+IC19DQo+IC0NCj4g LS8qDQo+IC0gKiBIb3cgbXVjaCBkb2VzIHRoZSBjb21tYW5kIHJlZ3VsYXRvciBsYWcgYmVo aW5kPw0KPiAtICovDQo+IC0NCj4gLXN0YXRpYyB1aW50MzJfdCB2aWFfY21kYnVmX2xhZyhk cm1fdmlhX3ByaXZhdGVfdCAqZGV2X3ByaXYpDQo+IC17DQo+IC0JdWludDMyX3QgYWdwX2Jh c2UgPSBkZXZfcHJpdi0+ZG1hX29mZnNldCArICh1aW50MzJfdCkgZGV2X3ByaXYtPmFncEFk ZHI7DQo+IC0JdWludDMyX3QgaHdfYWRkciA9ICooZGV2X3ByaXYtPmh3X2FkZHJfcHRyKSAt IGFncF9iYXNlOw0KPiAtDQo+IC0JcmV0dXJuICgoaHdfYWRkciA8PSBkZXZfcHJpdi0+ZG1h X2xvdykgPw0KPiAtCQkoZGV2X3ByaXYtPmRtYV9sb3cgLSBod19hZGRyKSA6DQo+IC0JCShk ZXZfcHJpdi0+ZG1hX3dyYXAgKyBkZXZfcHJpdi0+ZG1hX2xvdyAtIGh3X2FkZHIpKTsNCj4g LX0NCj4gLQ0KPiAtLyoNCj4gLSAqIENoZWNrIHRoYXQgdGhlIGdpdmVuIHNpemUgZml0cyBp biB0aGUgYnVmZmVyLCBvdGhlcndpc2Ugd2FpdC4NCj4gLSAqLw0KPiAtDQo+IC1zdGF0aWMg aW5saW5lIGludA0KPiAtdmlhX2NtZGJ1Zl93YWl0KGRybV92aWFfcHJpdmF0ZV90ICpkZXZf cHJpdiwgdW5zaWduZWQgaW50IHNpemUpDQo+IC17DQo+IC0JdWludDMyX3QgYWdwX2Jhc2Ug PSBkZXZfcHJpdi0+ZG1hX29mZnNldCArICh1aW50MzJfdCkgZGV2X3ByaXYtPmFncEFkZHI7 DQo+IC0JdWludDMyX3QgY3VyX2FkZHIsIGh3X2FkZHIsIG5leHRfYWRkcjsNCj4gLQl2b2xh dGlsZSB1aW50MzJfdCAqaHdfYWRkcl9wdHI7DQo+IC0JdWludDMyX3QgY291bnQ7DQo+IC0J aHdfYWRkcl9wdHIgPSBkZXZfcHJpdi0+aHdfYWRkcl9wdHI7DQo+IC0JY3VyX2FkZHIgPSBk ZXZfcHJpdi0+ZG1hX2xvdzsNCj4gLQluZXh0X2FkZHIgPSBjdXJfYWRkciArIHNpemUgKyA1 MTIgKiAxMDI0Ow0KPiAtCWNvdW50ID0gMTAwMDAwMDsNCj4gLQlkbyB7DQo+IC0JCWh3X2Fk ZHIgPSAqaHdfYWRkcl9wdHIgLSBhZ3BfYmFzZTsNCj4gLQkJaWYgKGNvdW50LS0gPT0gMCkg ew0KPiAtCQkJRFJNX0VSUk9SDQo+IC0JCQkgICAgKCJ2aWFfY21kYnVmX3dhaXQgdGltZWQg b3V0IGh3ICV4IGN1cl9hZGRyICV4IG5leHRfYWRkciAleFxuIiwNCj4gLQkJCSAgICAgaHdf YWRkciwgY3VyX2FkZHIsIG5leHRfYWRkcik7DQo+IC0JCQlyZXR1cm4gLTE7DQo+IC0JCX0N Cj4gLQkJaWYgICgoY3VyX2FkZHIgPCBod19hZGRyKSAmJiAobmV4dF9hZGRyID49IGh3X2Fk ZHIpKQ0KPiAtCQkJbXNsZWVwKDEpOw0KPiAtCX0gd2hpbGUgKChjdXJfYWRkciA8IGh3X2Fk ZHIpICYmIChuZXh0X2FkZHIgPj0gaHdfYWRkcikpOw0KPiAtCXJldHVybiAwOw0KPiAtfQ0K PiAtDQo+IC0vKg0KPiAtICogQ2hlY2tzIHdoZXRoZXIgYnVmZmVyIGhlYWQgaGFzIHJlYWNo IHRoZSBlbmQuIFJld2luZCB0aGUgcmluZyBidWZmZXINCj4gLSAqIHdoZW4gbmVjZXNzYXJ5 Lg0KPiAtICoNCj4gLSAqIFJldHVybnMgdmlydHVhbCBwb2ludGVyIHRvIHJpbmcgYnVmZmVy Lg0KPiAtICovDQo+IC0NCj4gLXN0YXRpYyBpbmxpbmUgdWludDMyX3QgKnZpYV9jaGVja19k bWEoZHJtX3ZpYV9wcml2YXRlX3QgKiBkZXZfcHJpdiwNCj4gLQkJCQkgICAgICB1bnNpZ25l ZCBpbnQgc2l6ZSkNCj4gLXsNCj4gLQlpZiAoKGRldl9wcml2LT5kbWFfbG93ICsgc2l6ZSAr IDQgKiBDTURCVUZfQUxJR05NRU5UX1NJWkUpID4NCj4gLQkgICAgZGV2X3ByaXYtPmRtYV9o aWdoKSB7DQo+IC0JCXZpYV9jbWRidWZfcmV3aW5kKGRldl9wcml2KTsNCj4gLQl9DQo+IC0J aWYgKHZpYV9jbWRidWZfd2FpdChkZXZfcHJpdiwgc2l6ZSkgIT0gMCkNCj4gLQkJcmV0dXJu IE5VTEw7DQo+IC0NCj4gLQlyZXR1cm4gKHVpbnQzMl90ICopIChkZXZfcHJpdi0+ZG1hX3B0 ciArIGRldl9wcml2LT5kbWFfbG93KTsNCj4gLX0NCj4gLQ0KPiAtaW50IHZpYV9kbWFfY2xl YW51cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQ0KPiAtew0KPiAtCWlmIChkZXYtPmRldl9w cml2YXRlKSB7DQo+IC0JCWRybV92aWFfcHJpdmF0ZV90ICpkZXZfcHJpdiA9DQo+IC0JCSAg ICAoZHJtX3ZpYV9wcml2YXRlX3QgKikgZGV2LT5kZXZfcHJpdmF0ZTsNCj4gLQ0KPiAtCQlp ZiAoZGV2X3ByaXYtPnJpbmcudmlydHVhbF9zdGFydCkgew0KPiAtCQkJdmlhX2NtZGJ1Zl9y ZXNldChkZXZfcHJpdik7DQo+IC0NCj4gLQkJCWRybV9sZWdhY3lfaW9yZW1hcGZyZWUoJmRl dl9wcml2LT5yaW5nLm1hcCwgZGV2KTsNCj4gLQkJCWRldl9wcml2LT5yaW5nLnZpcnR1YWxf c3RhcnQgPSBOVUxMOw0KPiAtCQl9DQo+IC0NCj4gLQl9DQo+IC0NCj4gLQlyZXR1cm4gMDsN Cj4gLX0NCj4gLQ0KPiAtc3RhdGljIGludCB2aWFfaW5pdGlhbGl6ZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LA0KPiAtCQkJICBkcm1fdmlhX3ByaXZhdGVfdCAqZGV2X3ByaXYsDQo+IC0J CQkgIGRybV92aWFfZG1hX2luaXRfdCAqaW5pdCkNCj4gLXsNCj4gLQlpZiAoIWRldl9wcml2 IHx8ICFkZXZfcHJpdi0+bW1pbykgew0KPiAtCQlEUk1fRVJST1IoInZpYV9kbWFfaW5pdCBj YWxsZWQgYmVmb3JlIHZpYV9tYXBfaW5pdFxuIik7DQo+IC0JCXJldHVybiAtRUZBVUxUOw0K PiAtCX0NCj4gLQ0KPiAtCWlmIChkZXZfcHJpdi0+cmluZy52aXJ0dWFsX3N0YXJ0ICE9IE5V TEwpIHsNCj4gLQkJRFJNX0VSUk9SKCJjYWxsZWQgYWdhaW4gd2l0aG91dCBjYWxsaW5nIGNs ZWFudXBcbiIpOw0KPiAtCQlyZXR1cm4gLUVGQVVMVDsNCj4gLQl9DQo+IC0NCj4gLQlpZiAo IWRldi0+YWdwIHx8ICFkZXYtPmFncC0+YmFzZSkgew0KPiAtCQlEUk1fRVJST1IoImNhbGxl ZCB3aXRoIG5vIGFncCBtZW1vcnkgYXZhaWxhYmxlXG4iKTsNCj4gLQkJcmV0dXJuIC1FRkFV TFQ7DQo+IC0JfQ0KPiAtDQo+IC0JaWYgKGRldl9wcml2LT5jaGlwc2V0ID09IFZJQV9EWDlf MCkgew0KPiAtCQlEUk1fRVJST1IoIkFHUCBETUEgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlz IGNoaXBcbiIpOw0KPiAtCQlyZXR1cm4gLUVJTlZBTDsNCj4gLQl9DQo+IC0NCj4gLQlkZXZf cHJpdi0+cmluZy5tYXAub2Zmc2V0ID0gZGV2LT5hZ3AtPmJhc2UgKyBpbml0LT5vZmZzZXQ7 DQo+IC0JZGV2X3ByaXYtPnJpbmcubWFwLnNpemUgPSBpbml0LT5zaXplOw0KPiAtCWRldl9w cml2LT5yaW5nLm1hcC50eXBlID0gMDsNCj4gLQlkZXZfcHJpdi0+cmluZy5tYXAuZmxhZ3Mg PSAwOw0KPiAtCWRldl9wcml2LT5yaW5nLm1hcC5tdHJyID0gMDsNCj4gLQ0KPiAtCWRybV9s ZWdhY3lfaW9yZW1hcCgmZGV2X3ByaXYtPnJpbmcubWFwLCBkZXYpOw0KPiAtDQo+IC0JaWYg KGRldl9wcml2LT5yaW5nLm1hcC5oYW5kbGUgPT0gTlVMTCkgew0KPiAtCQl2aWFfZG1hX2Ns ZWFudXAoZGV2KTsNCj4gLQkJRFJNX0VSUk9SKCJjYW4gbm90IGlvcmVtYXAgdmlydHVhbCBh ZGRyZXNzIGZvciINCj4gLQkJCSAgIiByaW5nIGJ1ZmZlclxuIik7DQo+IC0JCXJldHVybiAt RU5PTUVNOw0KPiAtCX0NCj4gLQ0KPiAtCWRldl9wcml2LT5yaW5nLnZpcnR1YWxfc3RhcnQg PSBkZXZfcHJpdi0+cmluZy5tYXAuaGFuZGxlOw0KPiAtDQo+IC0JZGV2X3ByaXYtPmRtYV9w dHIgPSBkZXZfcHJpdi0+cmluZy52aXJ0dWFsX3N0YXJ0Ow0KPiAtCWRldl9wcml2LT5kbWFf bG93ID0gMDsNCj4gLQlkZXZfcHJpdi0+ZG1hX2hpZ2ggPSBpbml0LT5zaXplOw0KPiAtCWRl dl9wcml2LT5kbWFfd3JhcCA9IGluaXQtPnNpemU7DQo+IC0JZGV2X3ByaXYtPmRtYV9vZmZz ZXQgPSBpbml0LT5vZmZzZXQ7DQo+IC0JZGV2X3ByaXYtPmxhc3RfcGF1c2VfcHRyID0gTlVM TDsNCj4gLQlkZXZfcHJpdi0+aHdfYWRkcl9wdHIgPQ0KPiAtCQkodm9sYXRpbGUgdWludDMy X3QgKikoKGNoYXIgKilkZXZfcHJpdi0+bW1pby0+aGFuZGxlICsNCj4gLQkJaW5pdC0+cmVn X3BhdXNlX2FkZHIpOw0KPiAtDQo+IC0JdmlhX2NtZGJ1Zl9zdGFydChkZXZfcHJpdik7DQo+ IC0NCj4gLQlyZXR1cm4gMDsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIGludCB2aWFfZG1hX2lu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxl ICpmaWxlX3ByaXYpDQo+IC17DQo+IC0JZHJtX3ZpYV9wcml2YXRlX3QgKmRldl9wcml2ID0g KGRybV92aWFfcHJpdmF0ZV90ICopIGRldi0+ZGV2X3ByaXZhdGU7DQo+IC0JZHJtX3ZpYV9k bWFfaW5pdF90ICppbml0ID0gZGF0YTsNCj4gLQlpbnQgcmV0Y29kZSA9IDA7DQo+IC0NCj4g LQlzd2l0Y2ggKGluaXQtPmZ1bmMpIHsNCj4gLQljYXNlIFZJQV9JTklUX0RNQToNCj4gLQkJ aWYgKCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKQ0KPiAtCQkJcmV0Y29kZSA9IC1FUEVSTTsN Cj4gLQkJZWxzZQ0KPiAtCQkJcmV0Y29kZSA9IHZpYV9pbml0aWFsaXplKGRldiwgZGV2X3By aXYsIGluaXQpOw0KPiAtCQlicmVhazsNCj4gLQljYXNlIFZJQV9DTEVBTlVQX0RNQToNCj4g LQkJaWYgKCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKQ0KPiAtCQkJcmV0Y29kZSA9IC1FUEVS TTsNCj4gLQkJZWxzZQ0KPiAtCQkJcmV0Y29kZSA9IHZpYV9kbWFfY2xlYW51cChkZXYpOw0K PiAtCQlicmVhazsNCj4gLQljYXNlIFZJQV9ETUFfSU5JVElBTElaRUQ6DQo+IC0JCXJldGNv ZGUgPSAoZGV2X3ByaXYtPnJpbmcudmlydHVhbF9zdGFydCAhPSBOVUxMKSA/DQo+IC0JCQkw IDogLUVGQVVMVDsNCj4gLQkJYnJlYWs7DQo+IC0JZGVmYXVsdDoNCj4gLQkJcmV0Y29kZSA9 IC1FSU5WQUw7DQo+IC0JCWJyZWFrOw0KPiAtCX0NCj4gLQ0KPiAtCXJldHVybiByZXRjb2Rl Ow0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMgaW50IHZpYV9kaXNwYXRjaF9jbWRidWZmZXIoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgZHJtX3ZpYV9jbWRidWZmZXJfdCAqY21kKQ0KPiAtew0K PiAtCWRybV92aWFfcHJpdmF0ZV90ICpkZXZfcHJpdjsNCj4gLQl1aW50MzJfdCAqdmI7DQo+ IC0JaW50IHJldDsNCj4gLQ0KPiAtCWRldl9wcml2ID0gKGRybV92aWFfcHJpdmF0ZV90ICop IGRldi0+ZGV2X3ByaXZhdGU7DQo+IC0NCj4gLQlpZiAoZGV2X3ByaXYtPnJpbmcudmlydHVh bF9zdGFydCA9PSBOVUxMKSB7DQo+IC0JCURSTV9FUlJPUigiY2FsbGVkIHdpdGhvdXQgaW5p dGlhbGl6aW5nIEFHUCByaW5nIGJ1ZmZlci5cbiIpOw0KPiAtCQlyZXR1cm4gLUVGQVVMVDsN Cj4gLQl9DQo+IC0NCj4gLQlpZiAoY21kLT5zaXplID4gVklBX1BDSV9CVUZfU0laRSkNCj4g LQkJcmV0dXJuIC1FTk9NRU07DQo+IC0NCj4gLQlpZiAoY29weV9mcm9tX3VzZXIoZGV2X3By aXYtPnBjaV9idWYsIGNtZC0+YnVmLCBjbWQtPnNpemUpKQ0KPiAtCQlyZXR1cm4gLUVGQVVM VDsNCj4gLQ0KPiAtCS8qDQo+IC0JICogUnVubmluZyB0aGlzIGZ1bmN0aW9uIG9uIEFHUCBt ZW1vcnkgaXMgZGVhZCBzbG93LiBUaGVyZWZvcmUNCj4gLQkgKiB3ZSBydW4gaXQgb24gYSB0 ZW1wb3JhcnkgY2FjaGVhYmxlIHN5c3RlbSBtZW1vcnkgYnVmZmVyIGFuZA0KPiAtCSAqIGNv cHkgaXQgdG8gQUdQIG1lbW9yeSB3aGVuIHJlYWR5Lg0KPiAtCSAqLw0KPiAtDQo+IC0JaWYg KChyZXQgPQ0KPiAtCSAgICAgdmlhX3ZlcmlmeV9jb21tYW5kX3N0cmVhbSgodWludDMyX3Qg KikgZGV2X3ByaXYtPnBjaV9idWYsDQo+IC0JCQkJICAgICAgIGNtZC0+c2l6ZSwgZGV2LCAx KSkpIHsNCj4gLQkJcmV0dXJuIHJldDsNCj4gLQl9DQo+IC0NCj4gLQl2YiA9IHZpYV9jaGVj a19kbWEoZGV2X3ByaXYsIChjbWQtPnNpemUgPCAweDEwMCkgPyAweDEwMiA6IGNtZC0+c2l6 ZSk7DQo+IC0JaWYgKHZiID09IE5VTEwpDQo+IC0JCXJldHVybiAtRUFHQUlOOw0KPiAtDQo+ IC0JbWVtY3B5KHZiLCBkZXZfcHJpdi0+cGNpX2J1ZiwgY21kLT5zaXplKTsNCj4gLQ0KPiAt CWRldl9wcml2LT5kbWFfbG93ICs9IGNtZC0+c2l6ZTsNCj4gLQ0KPiAtCS8qDQo+IC0JICog U21hbGwgc3VibWlzc2lvbnMgc29tZWhvdyBzdGFsbHMgdGhlIENQVS4gKEFHUCBjYWNoZSBl ZmZlY3RzPykNCj4gLQkgKiBwYWQgdG8gZ3JlYXRlciBzaXplLg0KPiAtCSAqLw0KPiAtDQo+ IC0JaWYgKGNtZC0+c2l6ZSA8IDB4MTAwKQ0KPiAtCQl2aWFfcGFkX2NhY2hlKGRldl9wcml2 LCAoMHgxMDAgLSBjbWQtPnNpemUpID4+IDMpOw0KPiAtCXZpYV9jbWRidWZfcGF1c2UoZGV2 X3ByaXYpOw0KPiAtDQo+IC0JcmV0dXJuIDA7DQo+IC19DQo+IC0NCj4gLWludCB2aWFfZHJp dmVyX2RtYV9xdWllc2NlbnQoc3RydWN0IGRybV9kZXZpY2UgKmRldikNCj4gLXsNCj4gLQlk cm1fdmlhX3ByaXZhdGVfdCAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOw0KPiAtDQo+ IC0JaWYgKCF2aWFfd2FpdF9pZGxlKGRldl9wcml2KSkNCj4gLQkJcmV0dXJuIC1FQlVTWTsN Cj4gLQlyZXR1cm4gMDsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIGludCB2aWFfZmx1c2hfaW9j dGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxl ICpmaWxlX3ByaXYpDQo+IC17DQo+IC0NCj4gLQlMT0NLX1RFU1RfV0lUSF9SRVRVUk4oZGV2 LCBmaWxlX3ByaXYpOw0KPiAtDQo+IC0JcmV0dXJuIHZpYV9kcml2ZXJfZG1hX3F1aWVzY2Vu dChkZXYpOw0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMgaW50IHZpYV9jbWRidWZmZXIoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxlX3By aXYpDQo+IC17DQo+IC0JZHJtX3ZpYV9jbWRidWZmZXJfdCAqY21kYnVmID0gZGF0YTsNCj4g LQlpbnQgcmV0Ow0KPiAtDQo+IC0JTE9DS19URVNUX1dJVEhfUkVUVVJOKGRldiwgZmlsZV9w cml2KTsNCj4gLQ0KPiAtCURSTV9ERUJVRygiYnVmICVwIHNpemUgJWx1XG4iLCBjbWRidWYt PmJ1ZiwgY21kYnVmLT5zaXplKTsNCj4gLQ0KPiAtCXJldCA9IHZpYV9kaXNwYXRjaF9jbWRi dWZmZXIoZGV2LCBjbWRidWYpOw0KPiAtCXJldHVybiByZXQ7DQo+IC19DQo+IC0NCj4gLXN0 YXRpYyBpbnQgdmlhX2Rpc3BhdGNoX3BjaV9jbWRidWZmZXIoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwNCj4gLQkJCQkgICAgICBkcm1fdmlhX2NtZGJ1ZmZlcl90ICpjbWQpDQo+IC17DQo+ IC0JZHJtX3ZpYV9wcml2YXRlX3QgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsNCj4g LQlpbnQgcmV0Ow0KPiAtDQo+IC0JaWYgKGNtZC0+c2l6ZSA+IFZJQV9QQ0lfQlVGX1NJWkUp DQo+IC0JCXJldHVybiAtRU5PTUVNOw0KPiAtCWlmIChjb3B5X2Zyb21fdXNlcihkZXZfcHJp di0+cGNpX2J1ZiwgY21kLT5idWYsIGNtZC0+c2l6ZSkpDQo+IC0JCXJldHVybiAtRUZBVUxU Ow0KPiAtDQo+IC0JaWYgKChyZXQgPQ0KPiAtCSAgICAgdmlhX3ZlcmlmeV9jb21tYW5kX3N0 cmVhbSgodWludDMyX3QgKikgZGV2X3ByaXYtPnBjaV9idWYsDQo+IC0JCQkJICAgICAgIGNt ZC0+c2l6ZSwgZGV2LCAwKSkpIHsNCj4gLQkJcmV0dXJuIHJldDsNCj4gLQl9DQo+IC0NCj4g LQlyZXQgPQ0KPiAtCSAgICB2aWFfcGFyc2VfY29tbWFuZF9zdHJlYW0oZGV2LCAoY29uc3Qg dWludDMyX3QgKilkZXZfcHJpdi0+cGNpX2J1ZiwNCj4gLQkJCQkgICAgIGNtZC0+c2l6ZSk7 DQo+IC0JcmV0dXJuIHJldDsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIGludCB2aWFfcGNpX2Nt ZGJ1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGVfcHJpdikNCj4gLXsNCj4gLQlkcm1fdmlhX2NtZGJ1ZmZlcl90ICpjbWRi dWYgPSBkYXRhOw0KPiAtCWludCByZXQ7DQo+IC0NCj4gLQlMT0NLX1RFU1RfV0lUSF9SRVRV Uk4oZGV2LCBmaWxlX3ByaXYpOw0KPiAtDQo+IC0JRFJNX0RFQlVHKCJidWYgJXAgc2l6ZSAl bHVcbiIsIGNtZGJ1Zi0+YnVmLCBjbWRidWYtPnNpemUpOw0KPiAtDQo+IC0JcmV0ID0gdmlh X2Rpc3BhdGNoX3BjaV9jbWRidWZmZXIoZGV2LCBjbWRidWYpOw0KPiAtCXJldHVybiByZXQ7 DQo+IC19DQo+IC0NCj4gLXN0YXRpYyBpbmxpbmUgdWludDMyX3QgKnZpYV9hbGlnbl9idWZm ZXIoZHJtX3ZpYV9wcml2YXRlX3QgKmRldl9wcml2LA0KPiAtCQkJCQkgdWludDMyX3QgKiB2 YiwgaW50IHF3X2NvdW50KQ0KPiAtew0KPiAtCWZvciAoOyBxd19jb3VudCA+IDA7IC0tcXdf Y291bnQpDQo+IC0JCVZJQV9PVVRfUklOR19RVyhIQ19EVU1NWSwgSENfRFVNTVkpOw0KPiAt CXJldHVybiB2YjsNCj4gLX0NCj4gLQ0KPiAtLyoNCj4gLSAqIFRoaXMgZnVuY3Rpb24gaXMg dXNlZCBpbnRlcm5hbGx5IGJ5IHJpbmcgYnVmZmVyIG1hbmFnZW1lbnQgY29kZS4NCj4gLSAq DQo+IC0gKiBSZXR1cm5zIHZpcnR1YWwgcG9pbnRlciB0byByaW5nIGJ1ZmZlci4NCj4gLSAq Lw0KPiAtc3RhdGljIGlubGluZSB1aW50MzJfdCAqdmlhX2dldF9kbWEoZHJtX3ZpYV9wcml2 YXRlX3QgKmRldl9wcml2KQ0KPiAtew0KPiAtCXJldHVybiAodWludDMyX3QgKikgKGRldl9w cml2LT5kbWFfcHRyICsgZGV2X3ByaXYtPmRtYV9sb3cpOw0KPiAtfQ0KPiAtDQo+IC0vKg0K PiAtICogSG9va3MgYSBzZWdtZW50IG9mIGRhdGEgaW50byB0aGUgdGFpbCBvZiB0aGUgcmlu Zy1idWZmZXIgYnkNCj4gLSAqIG1vZGlmeWluZyB0aGUgcGF1c2UgYWRkcmVzcyBzdG9yZWQg aW4gdGhlIGJ1ZmZlciBpdHNlbGYuIElmDQo+IC0gKiB0aGUgcmVndWxhdG9yIGhhcyBhbHJl YWR5IHBhdXNlZCwgcmVzdGFydCBpdC4NCj4gLSAqLw0KPiAtc3RhdGljIGludCB2aWFfaG9v a19zZWdtZW50KGRybV92aWFfcHJpdmF0ZV90ICpkZXZfcHJpdiwNCj4gLQkJCSAgICB1aW50 MzJfdCBwYXVzZV9hZGRyX2hpLCB1aW50MzJfdCBwYXVzZV9hZGRyX2xvLA0KPiAtCQkJICAg IGludCBub19wY2lfZmlyZSkNCj4gLXsNCj4gLQlpbnQgcGF1c2VkLCBjb3VudDsNCj4gLQl2 b2xhdGlsZSB1aW50MzJfdCAqcGF1c2VkX2F0ID0gZGV2X3ByaXYtPmxhc3RfcGF1c2VfcHRy Ow0KPiAtCXVpbnQzMl90IHJlYWRlciwgcHRyOw0KPiAtCXVpbnQzMl90IGRpZmY7DQo+IC0N Cj4gLQlwYXVzZWQgPSAwOw0KPiAtCXZpYV9mbHVzaF93cml0ZV9jb21iaW5lKCk7DQo+IC0J KHZvaWQpICoodm9sYXRpbGUgdWludDMyX3QgKikodmlhX2dldF9kbWEoZGV2X3ByaXYpIC0g MSk7DQo+IC0NCj4gLQkqcGF1c2VkX2F0ID0gcGF1c2VfYWRkcl9sbzsNCj4gLQl2aWFfZmx1 c2hfd3JpdGVfY29tYmluZSgpOw0KPiAtCSh2b2lkKSAqcGF1c2VkX2F0Ow0KPiAtDQo+IC0J cmVhZGVyID0gKihkZXZfcHJpdi0+aHdfYWRkcl9wdHIpOw0KPiAtCXB0ciA9ICgodm9sYXRp bGUgY2hhciAqKXBhdXNlZF9hdCAtIGRldl9wcml2LT5kbWFfcHRyKSArDQo+IC0JCWRldl9w cml2LT5kbWFfb2Zmc2V0ICsgKHVpbnQzMl90KSBkZXZfcHJpdi0+YWdwQWRkciArIDQ7DQo+ IC0NCj4gLQlkZXZfcHJpdi0+bGFzdF9wYXVzZV9wdHIgPSB2aWFfZ2V0X2RtYShkZXZfcHJp dikgLSAxOw0KPiAtDQo+IC0JLyoNCj4gLQkgKiBJZiB0aGVyZSBpcyBhIHBvc3NpYmlsaXR5 IHRoYXQgdGhlIGNvbW1hbmQgcmVhZGVyIHdpbGwNCj4gLQkgKiBtaXNzIHRoZSBuZXcgcGF1 c2UgYWRkcmVzcyBhbmQgcGF1c2Ugb24gdGhlIG9sZCBvbmUsDQo+IC0JICogSW4gdGhhdCBj YXNlIHdlIG5lZWQgdG8gcHJvZ3JhbSB0aGUgbmV3IHN0YXJ0IGFkZHJlc3MNCj4gLQkgKiB1 c2luZyBQQ0kuDQo+IC0JICovDQo+IC0NCj4gLQlkaWZmID0gKHVpbnQzMl90KSAocHRyIC0g cmVhZGVyKSAtIGRldl9wcml2LT5kbWFfZGlmZjsNCj4gLQljb3VudCA9IDEwMDAwMDAwOw0K PiAtCXdoaWxlIChkaWZmID09IDAgJiYgY291bnQtLSkgew0KPiAtCQlwYXVzZWQgPSAodmlh X3JlYWQoZGV2X3ByaXYsIDB4NDFjKSAmIDB4ODAwMDAwMDApOw0KPiAtCQlpZiAocGF1c2Vk KQ0KPiAtCQkJYnJlYWs7DQo+IC0JCXJlYWRlciA9ICooZGV2X3ByaXYtPmh3X2FkZHJfcHRy KTsNCj4gLQkJZGlmZiA9ICh1aW50MzJfdCkgKHB0ciAtIHJlYWRlcikgLSBkZXZfcHJpdi0+ ZG1hX2RpZmY7DQo+IC0JfQ0KPiAtDQo+IC0JcGF1c2VkID0gdmlhX3JlYWQoZGV2X3ByaXYs IDB4NDFjKSAmIDB4ODAwMDAwMDA7DQo+IC0NCj4gLQlpZiAocGF1c2VkICYmICFub19wY2lf ZmlyZSkgew0KPiAtCQlyZWFkZXIgPSAqKGRldl9wcml2LT5od19hZGRyX3B0cik7DQo+IC0J CWRpZmYgPSAodWludDMyX3QpIChwdHIgLSByZWFkZXIpIC0gZGV2X3ByaXYtPmRtYV9kaWZm Ow0KPiAtCQlkaWZmICY9IChkZXZfcHJpdi0+ZG1hX2hpZ2ggLSAxKTsNCj4gLQkJaWYgKGRp ZmYgIT0gMCAmJiBkaWZmIDwgKGRldl9wcml2LT5kbWFfaGlnaCA+PiAxKSkgew0KPiAtCQkJ RFJNX0VSUk9SKCJQYXVzZWQgYXQgaW5jb3JyZWN0IGFkZHJlc3MuICINCj4gLQkJCQkgICIw eCUwOHgsIDB4JTA4eCAweCUwOHhcbiIsDQo+IC0JCQkJICBwdHIsIHJlYWRlciwgZGV2X3By aXYtPmRtYV9kaWZmKTsNCj4gLQkJfSBlbHNlIGlmIChkaWZmID09IDApIHsNCj4gLQkJCS8q DQo+IC0JCQkgKiBUaGVyZSBpcyBhIGNvbmNlcm4gdGhhdCB0aGVzZSB3cml0ZXMgbWF5IHN0 YWxsIHRoZSBQQ0kgYnVzDQo+IC0JCQkgKiBpZiB0aGUgR1BVIGlzIG5vdCBpZGxlLiBIb3dl dmVyLCBpZGxpbmcgdGhlIEdQVSBmaXJzdA0KPiAtCQkJICogZG9lc24ndCBtYWtlIGEgZGlm ZmVyZW5jZS4NCj4gLQkJCSAqLw0KPiAtDQo+IC0JCQl2aWFfd3JpdGUoZGV2X3ByaXYsIFZJ QV9SRUdfVFJBTlNFVCwgKEhDX1BhcmFUeXBlX1ByZUNSIDw8IDE2KSk7DQo+IC0JCQl2aWFf d3JpdGUoZGV2X3ByaXYsIFZJQV9SRUdfVFJBTlNQQUNFLCBwYXVzZV9hZGRyX2hpKTsNCj4g LQkJCXZpYV93cml0ZShkZXZfcHJpdiwgVklBX1JFR19UUkFOU1BBQ0UsIHBhdXNlX2FkZHJf bG8pOw0KPiAtCQkJdmlhX3JlYWQoZGV2X3ByaXYsIFZJQV9SRUdfVFJBTlNQQUNFKTsNCj4g LQkJfQ0KPiAtCX0NCj4gLQlyZXR1cm4gcGF1c2VkOw0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMg aW50IHZpYV93YWl0X2lkbGUoZHJtX3ZpYV9wcml2YXRlX3QgKmRldl9wcml2KQ0KPiAtew0K PiAtCWludCBjb3VudCA9IDEwMDAwMDAwOw0KPiAtDQo+IC0Jd2hpbGUgKCEodmlhX3JlYWQo ZGV2X3ByaXYsIFZJQV9SRUdfU1RBVFVTKSAmIFZJQV9WUl9RVUVVRV9CVVNZKSAmJiAtLWNv dW50KQ0KPiAtCQk7DQo+IC0NCj4gLQl3aGlsZSAoY291bnQgJiYgKHZpYV9yZWFkKGRldl9w cml2LCBWSUFfUkVHX1NUQVRVUykgJg0KPiAtCQkJICAgKFZJQV9DTURfUkdUUl9CVVNZIHwg VklBXzJEX0VOR19CVVNZIHwNCj4gLQkJCSAgICBWSUFfM0RfRU5HX0JVU1kpKSkNCj4gLQkJ LS1jb3VudDsNCj4gLQlyZXR1cm4gY291bnQ7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyB1aW50 MzJfdCAqdmlhX2FsaWduX2NtZChkcm1fdmlhX3ByaXZhdGVfdCAqZGV2X3ByaXYsIHVpbnQz Ml90IGNtZF90eXBlLA0KPiAtCQkJICAgICAgIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90ICpj bWRfYWRkcl9oaSwNCj4gLQkJCSAgICAgICB1aW50MzJfdCAqY21kX2FkZHJfbG8sIGludCBz a2lwX3dhaXQpDQo+IC17DQo+IC0JdWludDMyX3QgYWdwX2Jhc2U7DQo+IC0JdWludDMyX3Qg Y21kX2FkZHIsIGFkZHJfbG8sIGFkZHJfaGk7DQo+IC0JdWludDMyX3QgKnZiOw0KPiAtCXVp bnQzMl90IHF3X3BhZF9jb3VudDsNCj4gLQ0KPiAtCWlmICghc2tpcF93YWl0KQ0KPiAtCQl2 aWFfY21kYnVmX3dhaXQoZGV2X3ByaXYsIDIgKiBDTURCVUZfQUxJR05NRU5UX1NJWkUpOw0K PiAtDQo+IC0JdmIgPSB2aWFfZ2V0X2RtYShkZXZfcHJpdik7DQo+IC0JVklBX09VVF9SSU5H X1FXKEhDX0hFQURFUjIgfCAoKFZJQV9SRUdfVFJBTlNFVCA+PiAyKSA8PCAxMikgfA0KPiAt CQkJKFZJQV9SRUdfVFJBTlNQQUNFID4+IDIpLCBIQ19QYXJhVHlwZV9QcmVDUiA8PCAxNik7 DQo+IC0JYWdwX2Jhc2UgPSBkZXZfcHJpdi0+ZG1hX29mZnNldCArICh1aW50MzJfdCkgZGV2 X3ByaXYtPmFncEFkZHI7DQo+IC0JcXdfcGFkX2NvdW50ID0gKENNREJVRl9BTElHTk1FTlRf U0laRSA+PiAzKSAtDQo+IC0JICAgICgoZGV2X3ByaXYtPmRtYV9sb3cgJiBDTURCVUZfQUxJ R05NRU5UX01BU0spID4+IDMpOw0KPiAtDQo+IC0JY21kX2FkZHIgPSAoYWRkcikgPyBhZGRy IDoNCj4gLQkgICAgYWdwX2Jhc2UgKyBkZXZfcHJpdi0+ZG1hX2xvdyAtIDggKyAocXdfcGFk X2NvdW50IDw8IDMpOw0KPiAtCWFkZHJfbG8gPSAoKEhDX1N1YkFfSEFHUEJwTCA8PCAyNCkg fCAoY21kX3R5cGUgJiBIQ19IQUdQQnBJRF9NQVNLKSB8DQo+IC0JCSAgIChjbWRfYWRkciAm IEhDX0hBR1BCcExfTUFTSykpOw0KPiAtCWFkZHJfaGkgPSAoKEhDX1N1YkFfSEFHUEJwSCA8 PCAyNCkgfCAoY21kX2FkZHIgPj4gMjQpKTsNCj4gLQ0KPiAtCXZiID0gdmlhX2FsaWduX2J1 ZmZlcihkZXZfcHJpdiwgdmIsIHF3X3BhZF9jb3VudCAtIDEpOw0KPiAtCVZJQV9PVVRfUklO R19RVygqY21kX2FkZHJfaGkgPSBhZGRyX2hpLCAqY21kX2FkZHJfbG8gPSBhZGRyX2xvKTsN Cj4gLQlyZXR1cm4gdmI7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyB2b2lkIHZpYV9jbWRidWZf c3RhcnQoZHJtX3ZpYV9wcml2YXRlX3QgKmRldl9wcml2KQ0KPiAtew0KPiAtCXVpbnQzMl90 IHBhdXNlX2FkZHJfbG8sIHBhdXNlX2FkZHJfaGk7DQo+IC0JdWludDMyX3Qgc3RhcnRfYWRk ciwgc3RhcnRfYWRkcl9sbzsNCj4gLQl1aW50MzJfdCBlbmRfYWRkciwgZW5kX2FkZHJfbG87 DQo+IC0JdWludDMyX3QgY29tbWFuZDsNCj4gLQl1aW50MzJfdCBhZ3BfYmFzZTsNCj4gLQl1 aW50MzJfdCBwdHI7DQo+IC0JdWludDMyX3QgcmVhZGVyOw0KPiAtCWludCBjb3VudDsNCj4g LQ0KPiAtCWRldl9wcml2LT5kbWFfbG93ID0gMDsNCj4gLQ0KPiAtCWFncF9iYXNlID0gZGV2 X3ByaXYtPmRtYV9vZmZzZXQgKyAodWludDMyX3QpIGRldl9wcml2LT5hZ3BBZGRyOw0KPiAt CXN0YXJ0X2FkZHIgPSBhZ3BfYmFzZTsNCj4gLQllbmRfYWRkciA9IGFncF9iYXNlICsgZGV2 X3ByaXYtPmRtYV9oaWdoOw0KPiAtDQo+IC0Jc3RhcnRfYWRkcl9sbyA9ICgoSENfU3ViQV9I QUdQQnN0TCA8PCAyNCkgfCAoc3RhcnRfYWRkciAmIDB4RkZGRkZGKSk7DQo+IC0JZW5kX2Fk ZHJfbG8gPSAoKEhDX1N1YkFfSEFHUEJlbmRMIDw8IDI0KSB8IChlbmRfYWRkciAmIDB4RkZG RkZGKSk7DQo+IC0JY29tbWFuZCA9ICgoSENfU3ViQV9IQUdQQ01OVCA8PCAyNCkgfCAoc3Rh cnRfYWRkciA+PiAyNCkgfA0KPiAtCQkgICAoKGVuZF9hZGRyICYgMHhmZjAwMDAwMCkgPj4g MTYpKTsNCj4gLQ0KPiAtCWRldl9wcml2LT5sYXN0X3BhdXNlX3B0ciA9DQo+IC0JICAgIHZp YV9hbGlnbl9jbWQoZGV2X3ByaXYsIEhDX0hBR1BCcElEX1BBVVNFLCAwLA0KPiAtCQkJICAm cGF1c2VfYWRkcl9oaSwgJnBhdXNlX2FkZHJfbG8sIDEpIC0gMTsNCj4gLQ0KPiAtCXZpYV9m bHVzaF93cml0ZV9jb21iaW5lKCk7DQo+IC0JKHZvaWQpICoodm9sYXRpbGUgdWludDMyX3Qg KilkZXZfcHJpdi0+bGFzdF9wYXVzZV9wdHI7DQo+IC0NCj4gLQl2aWFfd3JpdGUoZGV2X3By aXYsIFZJQV9SRUdfVFJBTlNFVCwgKEhDX1BhcmFUeXBlX1ByZUNSIDw8IDE2KSk7DQo+IC0J dmlhX3dyaXRlKGRldl9wcml2LCBWSUFfUkVHX1RSQU5TUEFDRSwgY29tbWFuZCk7DQo+IC0J dmlhX3dyaXRlKGRldl9wcml2LCBWSUFfUkVHX1RSQU5TUEFDRSwgc3RhcnRfYWRkcl9sbyk7 DQo+IC0JdmlhX3dyaXRlKGRldl9wcml2LCBWSUFfUkVHX1RSQU5TUEFDRSwgZW5kX2FkZHJf bG8pOw0KPiAtDQo+IC0JdmlhX3dyaXRlKGRldl9wcml2LCBWSUFfUkVHX1RSQU5TUEFDRSwg cGF1c2VfYWRkcl9oaSk7DQo+IC0JdmlhX3dyaXRlKGRldl9wcml2LCBWSUFfUkVHX1RSQU5T UEFDRSwgcGF1c2VfYWRkcl9sbyk7DQo+IC0Jd21iKCk7DQo+IC0JdmlhX3dyaXRlKGRldl9w cml2LCBWSUFfUkVHX1RSQU5TUEFDRSwgY29tbWFuZCB8IEhDX0hBR1BDTU5UX01BU0spOw0K PiAtCXZpYV9yZWFkKGRldl9wcml2LCBWSUFfUkVHX1RSQU5TUEFDRSk7DQo+IC0NCj4gLQlk ZXZfcHJpdi0+ZG1hX2RpZmYgPSAwOw0KPiAtDQo+IC0JY291bnQgPSAxMDAwMDAwMDsNCj4g LQl3aGlsZSAoISh2aWFfcmVhZChkZXZfcHJpdiwgMHg0MWMpICYgMHg4MDAwMDAwMCkgJiYg Y291bnQtLSk7DQo+IC0NCj4gLQlyZWFkZXIgPSAqKGRldl9wcml2LT5od19hZGRyX3B0cik7 DQo+IC0JcHRyID0gKCh2b2xhdGlsZSBjaGFyICopZGV2X3ByaXYtPmxhc3RfcGF1c2VfcHRy IC0gZGV2X3ByaXYtPmRtYV9wdHIpICsNCj4gLQkgICAgZGV2X3ByaXYtPmRtYV9vZmZzZXQg KyAodWludDMyX3QpIGRldl9wcml2LT5hZ3BBZGRyICsgNDsNCj4gLQ0KPiAtCS8qDQo+IC0J ICogVGhpcyBpcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHdoZXJlIHdlIHRlbGwgdGhlDQo+ IC0JICogY29tbWFuZCByZWFkZXIgdG8gcGF1c2UgYW5kIHdoZXJlIGl0IGFjdHVhbGx5IHBh dXNlcy4NCj4gLQkgKiBUaGlzIGRpZmZlcnMgYmV0d2VlbiBodyBpbXBsZW1lbnRhdGlvbiBz byB3ZSBuZWVkIHRvDQo+IC0JICogZGV0ZWN0IGl0Lg0KPiAtCSAqLw0KPiAtDQo+IC0JZGV2 X3ByaXYtPmRtYV9kaWZmID0gcHRyIC0gcmVhZGVyOw0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMg dm9pZCB2aWFfcGFkX2NhY2hlKGRybV92aWFfcHJpdmF0ZV90ICpkZXZfcHJpdiwgaW50IHF3 b3JkcykNCj4gLXsNCj4gLQl1aW50MzJfdCAqdmI7DQo+IC0NCj4gLQl2aWFfY21kYnVmX3dh aXQoZGV2X3ByaXYsIHF3b3JkcyArIDIpOw0KPiAtCXZiID0gdmlhX2dldF9kbWEoZGV2X3By aXYpOw0KPiAtCVZJQV9PVVRfUklOR19RVyhIQ19IRUFERVIyLCBIQ19QYXJhVHlwZV9Ob3RU ZXggPDwgMTYpOw0KPiAtCXZpYV9hbGlnbl9idWZmZXIoZGV2X3ByaXYsIHZiLCBxd29yZHMp Ow0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMgaW5saW5lIHZvaWQgdmlhX2R1bW15X2JpdGJsdChk cm1fdmlhX3ByaXZhdGVfdCAqZGV2X3ByaXYpDQo+IC17DQo+IC0JdWludDMyX3QgKnZiID0g dmlhX2dldF9kbWEoZGV2X3ByaXYpOw0KPiAtCVNldFJlZzJEQUdQKDB4MEMsICgwIHwgKDAg PDwgMTYpKSk7DQo+IC0JU2V0UmVnMkRBR1AoMHgxMCwgMCB8ICgwIDw8IDE2KSk7DQo+IC0J U2V0UmVnMkRBR1AoMHgwLCAweDEgfCAweDIwMDAgfCAweEFBMDAwMDAwKTsNCj4gLX0NCj4g LQ0KPiAtc3RhdGljIHZvaWQgdmlhX2NtZGJ1Zl9qdW1wKGRybV92aWFfcHJpdmF0ZV90ICpk ZXZfcHJpdikNCj4gLXsNCj4gLQl1aW50MzJfdCBwYXVzZV9hZGRyX2xvLCBwYXVzZV9hZGRy X2hpOw0KPiAtCXVpbnQzMl90IGp1bXBfYWRkcl9sbywganVtcF9hZGRyX2hpOw0KPiAtCXZv bGF0aWxlIHVpbnQzMl90ICpsYXN0X3BhdXNlX3B0cjsNCj4gLQl1aW50MzJfdCBkbWFfbG93 X3NhdmUxLCBkbWFfbG93X3NhdmUyOw0KPiAtDQo+IC0JdmlhX2FsaWduX2NtZChkZXZfcHJp diwgSENfSEFHUEJwSURfSlVNUCwgMCwgJmp1bXBfYWRkcl9oaSwNCj4gLQkJICAgICAgJmp1 bXBfYWRkcl9sbywgMCk7DQo+IC0NCj4gLQlkZXZfcHJpdi0+ZG1hX3dyYXAgPSBkZXZfcHJp di0+ZG1hX2xvdzsNCj4gLQ0KPiAtCS8qDQo+IC0JICogV3JhcCBjb21tYW5kIGJ1ZmZlciB0 byB0aGUgYmVnaW5uaW5nLg0KPiAtCSAqLw0KPiAtDQo+IC0JZGV2X3ByaXYtPmRtYV9sb3cg PSAwOw0KPiAtCWlmICh2aWFfY21kYnVmX3dhaXQoZGV2X3ByaXYsIENNREJVRl9BTElHTk1F TlRfU0laRSkgIT0gMCkNCj4gLQkJRFJNX0VSUk9SKCJ2aWFfY21kYnVmX2p1bXAgZmFpbGVk XG4iKTsNCj4gLQ0KPiAtCXZpYV9kdW1teV9iaXRibHQoZGV2X3ByaXYpOw0KPiAtCXZpYV9k dW1teV9iaXRibHQoZGV2X3ByaXYpOw0KPiAtDQo+IC0JbGFzdF9wYXVzZV9wdHIgPQ0KPiAt CSAgICB2aWFfYWxpZ25fY21kKGRldl9wcml2LCBIQ19IQUdQQnBJRF9QQVVTRSwgMCwgJnBh dXNlX2FkZHJfaGksDQo+IC0JCQkgICZwYXVzZV9hZGRyX2xvLCAwKSAtIDE7DQo+IC0Jdmlh X2FsaWduX2NtZChkZXZfcHJpdiwgSENfSEFHUEJwSURfUEFVU0UsIDAsICZwYXVzZV9hZGRy X2hpLA0KPiAtCQkgICAgICAmcGF1c2VfYWRkcl9sbywgMCk7DQo+IC0NCj4gLQkqbGFzdF9w YXVzZV9wdHIgPSBwYXVzZV9hZGRyX2xvOw0KPiAtCWRtYV9sb3dfc2F2ZTEgPSBkZXZfcHJp di0+ZG1hX2xvdzsNCj4gLQ0KPiAtCS8qDQo+IC0JICogTm93LCBzZXQgYSB0cmFwIHRoYXQg d2lsbCBwYXVzZSB0aGUgcmVndWxhdG9yIGlmIGl0IHRyaWVzIHRvIHJlcnVuIHRoZSBvbGQN Cj4gLQkgKiBjb21tYW5kIGJ1ZmZlci4gKFdoaWNoIG1heSBoYXBwZW4gaWYgdmlhX2hvb2tf c2VnbWVudCBkZXRlY3MgYSBjb21tYW5kIHJlZ3VsYXRvciBwYXVzZQ0KPiAtCSAqIGFuZCBy ZWlzc3VlcyB0aGUganVtcCBjb21tYW5kIG92ZXIgUENJLCB3aGlsZSB0aGUgcmVndWxhdG9y IGhhcyBhbHJlYWR5IHRha2VuIHRoZSBqdW1wDQo+IC0JICogYW5kIGFjdHVhbGx5IHBhdXNl ZCBhdCB0aGUgY3VycmVudCBidWZmZXIgZW5kKS4NCj4gLQkgKiBUaGVyZSBhcHBlYXJzIHRv IGJlIG5vIG90aGVyIHdheSB0byBkZXRlY3QgdGhpcyBjb25kaXRpb24sIHNpbmNlIHRoZSBo d19hZGRyX3BvaW50ZXINCj4gLQkgKiBkb2VzIG5vdCBzZWVtIHRvIGdldCB1cGRhdGVkIGlt bWVkaWF0ZWx5IHdoZW4gYSBqdW1wIG9jY3Vycy4NCj4gLQkgKi8NCj4gLQ0KPiAtCWxhc3Rf cGF1c2VfcHRyID0NCj4gLQkJdmlhX2FsaWduX2NtZChkZXZfcHJpdiwgSENfSEFHUEJwSURf UEFVU0UsIDAsICZwYXVzZV9hZGRyX2hpLA0KPiAtCQkJICAgICAgJnBhdXNlX2FkZHJfbG8s IDApIC0gMTsNCj4gLQl2aWFfYWxpZ25fY21kKGRldl9wcml2LCBIQ19IQUdQQnBJRF9QQVVT RSwgMCwgJnBhdXNlX2FkZHJfaGksDQo+IC0JCSAgICAgICZwYXVzZV9hZGRyX2xvLCAwKTsN Cj4gLQkqbGFzdF9wYXVzZV9wdHIgPSBwYXVzZV9hZGRyX2xvOw0KPiAtDQo+IC0JZG1hX2xv d19zYXZlMiA9IGRldl9wcml2LT5kbWFfbG93Ow0KPiAtCWRldl9wcml2LT5kbWFfbG93ID0g ZG1hX2xvd19zYXZlMTsNCj4gLQl2aWFfaG9va19zZWdtZW50KGRldl9wcml2LCBqdW1wX2Fk ZHJfaGksIGp1bXBfYWRkcl9sbywgMCk7DQo+IC0JZGV2X3ByaXYtPmRtYV9sb3cgPSBkbWFf bG93X3NhdmUyOw0KPiAtCXZpYV9ob29rX3NlZ21lbnQoZGV2X3ByaXYsIHBhdXNlX2FkZHJf aGksIHBhdXNlX2FkZHJfbG8sIDApOw0KPiAtfQ0KPiAtDQo+IC0NCj4gLXN0YXRpYyB2b2lk IHZpYV9jbWRidWZfcmV3aW5kKGRybV92aWFfcHJpdmF0ZV90ICpkZXZfcHJpdikNCj4gLXsN Cj4gLQl2aWFfY21kYnVmX2p1bXAoZGV2X3ByaXYpOw0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMg dm9pZCB2aWFfY21kYnVmX2ZsdXNoKGRybV92aWFfcHJpdmF0ZV90ICpkZXZfcHJpdiwgdWlu dDMyX3QgY21kX3R5cGUpDQo+IC17DQo+IC0JdWludDMyX3QgcGF1c2VfYWRkcl9sbywgcGF1 c2VfYWRkcl9oaTsNCj4gLQ0KPiAtCXZpYV9hbGlnbl9jbWQoZGV2X3ByaXYsIGNtZF90eXBl LCAwLCAmcGF1c2VfYWRkcl9oaSwgJnBhdXNlX2FkZHJfbG8sIDApOw0KPiAtCXZpYV9ob29r X3NlZ21lbnQoZGV2X3ByaXYsIHBhdXNlX2FkZHJfaGksIHBhdXNlX2FkZHJfbG8sIDApOw0K PiAtfQ0KPiAtDQo+IC1zdGF0aWMgdm9pZCB2aWFfY21kYnVmX3BhdXNlKGRybV92aWFfcHJp dmF0ZV90ICpkZXZfcHJpdikNCj4gLXsNCj4gLQl2aWFfY21kYnVmX2ZsdXNoKGRldl9wcml2 LCBIQ19IQUdQQnBJRF9QQVVTRSk7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyB2b2lkIHZpYV9j bWRidWZfcmVzZXQoZHJtX3ZpYV9wcml2YXRlX3QgKmRldl9wcml2KQ0KPiAtew0KPiAtCXZp YV9jbWRidWZfZmx1c2goZGV2X3ByaXYsIEhDX0hBR1BCcElEX1NUT1ApOw0KPiAtCXZpYV93 YWl0X2lkbGUoZGV2X3ByaXYpOw0KPiAtfQ0KPiAtDQo+IC0vKg0KPiAtICogVXNlciBpbnRl cmZhY2UgdG8gdGhlIHNwYWNlIGFuZCBsYWcgZnVuY3Rpb25zLg0KPiAtICovDQo+IC0NCj4g LXN0YXRpYyBpbnQgdmlhX2NtZGJ1Zl9zaXplKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZv aWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQ0KPiAtew0KPiAtCWRybV92 aWFfY21kYnVmX3NpemVfdCAqZF9zaXogPSBkYXRhOw0KPiAtCWludCByZXQgPSAwOw0KPiAt CXVpbnQzMl90IHRtcF9zaXplLCBjb3VudDsNCj4gLQlkcm1fdmlhX3ByaXZhdGVfdCAqZGV2 X3ByaXY7DQo+IC0NCj4gLQlEUk1fREVCVUcoIlxuIik7DQo+IC0JTE9DS19URVNUX1dJVEhf UkVUVVJOKGRldiwgZmlsZV9wcml2KTsNCj4gLQ0KPiAtCWRldl9wcml2ID0gKGRybV92aWFf cHJpdmF0ZV90ICopIGRldi0+ZGV2X3ByaXZhdGU7DQo+IC0NCj4gLQlpZiAoZGV2X3ByaXYt PnJpbmcudmlydHVhbF9zdGFydCA9PSBOVUxMKSB7DQo+IC0JCURSTV9FUlJPUigiY2FsbGVk IHdpdGhvdXQgaW5pdGlhbGl6aW5nIEFHUCByaW5nIGJ1ZmZlci5cbiIpOw0KPiAtCQlyZXR1 cm4gLUVGQVVMVDsNCj4gLQl9DQo+IC0NCj4gLQljb3VudCA9IDEwMDAwMDA7DQo+IC0JdG1w X3NpemUgPSBkX3Npei0+c2l6ZTsNCj4gLQlzd2l0Y2ggKGRfc2l6LT5mdW5jKSB7DQo+IC0J Y2FzZSBWSUFfQ01EQlVGX1NQQUNFOg0KPiAtCQl3aGlsZSAoKCh0bXBfc2l6ZSA9IHZpYV9j bWRidWZfc3BhY2UoZGV2X3ByaXYpKSA8IGRfc2l6LT5zaXplKQ0KPiAtCQkgICAgICAgJiYg LS1jb3VudCkgew0KPiAtCQkJaWYgKCFkX3Npei0+d2FpdCkNCj4gLQkJCQlicmVhazsNCj4g LQkJfQ0KPiAtCQlpZiAoIWNvdW50KSB7DQo+IC0JCQlEUk1fRVJST1IoIlZJQV9DTURCVUZf U1BBQ0UgdGltZWQgb3V0LlxuIik7DQo+IC0JCQlyZXQgPSAtRUFHQUlOOw0KPiAtCQl9DQo+ IC0JCWJyZWFrOw0KPiAtCWNhc2UgVklBX0NNREJVRl9MQUc6DQo+IC0JCXdoaWxlICgoKHRt cF9zaXplID0gdmlhX2NtZGJ1Zl9sYWcoZGV2X3ByaXYpKSA+IGRfc2l6LT5zaXplKQ0KPiAt CQkgICAgICAgJiYgLS1jb3VudCkgew0KPiAtCQkJaWYgKCFkX3Npei0+d2FpdCkNCj4gLQkJ CQlicmVhazsNCj4gLQkJfQ0KPiAtCQlpZiAoIWNvdW50KSB7DQo+IC0JCQlEUk1fRVJST1Io IlZJQV9DTURCVUZfTEFHIHRpbWVkIG91dC5cbiIpOw0KPiAtCQkJcmV0ID0gLUVBR0FJTjsN Cj4gLQkJfQ0KPiAtCQlicmVhazsNCj4gLQlkZWZhdWx0Og0KPiAtCQlyZXQgPSAtRUZBVUxU Ow0KPiAtCX0NCj4gLQlkX3Npei0+c2l6ZSA9IHRtcF9zaXplOw0KPiAtDQo+IC0JcmV0dXJu IHJldDsNCj4gLX0NCj4gLQ0KPiAtY29uc3Qgc3RydWN0IGRybV9pb2N0bF9kZXNjIHZpYV9p b2N0bHNbXSA9IHsNCj4gLQlEUk1fSU9DVExfREVGX0RSVihWSUFfQUxMT0NNRU0sIHZpYV9t ZW1fYWxsb2MsIERSTV9BVVRIKSwNCj4gLQlEUk1fSU9DVExfREVGX0RSVihWSUFfRlJFRU1F TSwgdmlhX21lbV9mcmVlLCBEUk1fQVVUSCksDQo+IC0JRFJNX0lPQ1RMX0RFRl9EUlYoVklB X0FHUF9JTklULCB2aWFfYWdwX2luaXQsIERSTV9BVVRIfERSTV9NQVNURVIpLA0KPiAtCURS TV9JT0NUTF9ERUZfRFJWKFZJQV9GQl9JTklULCB2aWFfZmJfaW5pdCwgRFJNX0FVVEh8RFJN X01BU1RFUiksDQo+IC0JRFJNX0lPQ1RMX0RFRl9EUlYoVklBX01BUF9JTklULCB2aWFfbWFw X2luaXQsIERSTV9BVVRIfERSTV9NQVNURVIpLA0KPiAtCURSTV9JT0NUTF9ERUZfRFJWKFZJ QV9ERUNfRlVURVgsIHZpYV9kZWNvZGVyX2Z1dGV4LCBEUk1fQVVUSCksDQo+IC0JRFJNX0lP Q1RMX0RFRl9EUlYoVklBX0RNQV9JTklULCB2aWFfZG1hX2luaXQsIERSTV9BVVRIKSwNCj4g LQlEUk1fSU9DVExfREVGX0RSVihWSUFfQ01EQlVGRkVSLCB2aWFfY21kYnVmZmVyLCBEUk1f QVVUSCksDQo+IC0JRFJNX0lPQ1RMX0RFRl9EUlYoVklBX0ZMVVNILCB2aWFfZmx1c2hfaW9j dGwsIERSTV9BVVRIKSwNCj4gLQlEUk1fSU9DVExfREVGX0RSVihWSUFfUENJQ01ELCB2aWFf cGNpX2NtZGJ1ZmZlciwgRFJNX0FVVEgpLA0KPiAtCURSTV9JT0NUTF9ERUZfRFJWKFZJQV9D TURCVUZfU0laRSwgdmlhX2NtZGJ1Zl9zaXplLCBEUk1fQVVUSCksDQo+IC0JRFJNX0lPQ1RM X0RFRl9EUlYoVklBX1dBSVRfSVJRLCB2aWFfd2FpdF9pcnEsIERSTV9BVVRIKSwNCj4gLQlE Uk1fSU9DVExfREVGX0RSVihWSUFfRE1BX0JMSVQsIHZpYV9kbWFfYmxpdCwgRFJNX0FVVEgp LA0KPiAtCURSTV9JT0NUTF9ERUZfRFJWKFZJQV9CTElUX1NZTkMsIHZpYV9kbWFfYmxpdF9z eW5jLCBEUk1fQVVUSCkNCj4gLX07DQo+IC0NCj4gLWludCB2aWFfbWF4X2lvY3RsID0gQVJS QVlfU0laRSh2aWFfaW9jdGxzKTsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92 aWEvdmlhX2RtYWJsaXQuYyBiL2RyaXZlcnMvZ3B1L2RybS92aWEvdmlhX2RtYWJsaXQuYw0K PiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggZTAxNmE0ZDYyMDkwLi4wMDAw MDAwMDAwMDANCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZpYS92aWFfZG1hYmxpdC5jDQo+ ICsrKyAvZGV2L251bGwNCj4gQEAgLTEsODA3ICswLDAgQEANCj4gLS8qIHZpYV9kbWFibGl0 LmMgLS0gUENJIERNQSBCaXRCbHQgc3VwcG9ydCBmb3IgdGhlIFZJQSBVbmljaHJvbWUvUHJv DQo+IC0gKg0KPiAtICogQ29weXJpZ2h0IChDKSAyMDA1IFRob21hcyBIZWxsc3Ryb20sIEFs bCBSaWdodHMgUmVzZXJ2ZWQuDQo+IC0gKg0KPiAtICogUGVybWlzc2lvbiBpcyBoZXJlYnkg Z3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGENCj4g LSAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksDQo+IC0gKiB0byBkZWFsIGluIHRoZSBTb2Z0d2Fy ZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uDQo+ IC0gKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwg ZGlzdHJpYnV0ZSwgc3ViIGxpY2Vuc2UsDQo+IC0gKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2Yg dGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUNCj4gLSAq IFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnM6DQo+IC0gKg0KPiAtICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUNCj4gLSAqIG5l eHQgcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0 YW50aWFsIHBvcnRpb25zDQo+IC0gKiBvZiB0aGUgU29mdHdhcmUuDQo+IC0gKg0KPiAtICog VEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg QU5ZIEtJTkQsIEVYUFJFU1MgT1INCj4gLSAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLA0KPiAtICog RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQu IElOIE5PIEVWRU5UIFNIQUxMDQo+IC0gKiBUSEUgQ09QWVJJR0hUIEhPTERFUlMsIEFVVEhP UlMgQU5EL09SIElUUyBTVVBQTElFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sDQo+IC0g KiBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg Q09OVFJBQ1QsIFRPUlQgT1INCj4gLSAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQg T0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUNCj4gLSAqIFVT RSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQo+IC0gKg0KPiAtICogQXV0 aG9yczoNCj4gLSAqICAgIFRob21hcyBIZWxsc3Ryb20uDQo+IC0gKiAgICBQYXJ0aWFsbHkg YmFzZWQgb24gY29kZSBvYnRhaW5lZCBmcm9tIERpZ2VvIEluYy4NCj4gLSAqLw0KPiAtDQo+ IC0NCj4gLS8qDQo+IC0gKiBVbm1hcHMgdGhlIERNQSBtYXBwaW5ncy4NCj4gLSAqIEZJWE1F OiBJcyB0aGlzIGEgTm9PcCBvbiB4ODY/IEFsc28NCj4gLSAqIEZJWE1FOiBXaGF0IGhhcHBl bnMgaWYgdGhpcyBvbmUgaXMgY2FsbGVkIGFuZCBhIHBlbmRpbmcgYmxpdCBoYXMgcHJldmlv dXNseSBkb25lDQo+IC0gKiB0aGUgc2FtZSBETUEgbWFwcGluZ3M/DQo+IC0gKi8NCj4gLQ0K PiAtI2luY2x1ZGUgPGxpbnV4L3BhZ2VtYXAuaD4NCj4gLSNpbmNsdWRlIDxsaW51eC9wY2ku aD4NCj4gLSNpbmNsdWRlIDxsaW51eC9zbGFiLmg+DQo+IC0jaW5jbHVkZSA8bGludXgvdm1h bGxvYy5oPg0KPiAtDQo+IC0jaW5jbHVkZSA8ZHJtL2RybV9kZXZpY2UuaD4NCj4gLSNpbmNs dWRlIDxkcm0vdmlhX2RybS5oPg0KPiAtDQo+IC0jaW5jbHVkZSAidmlhX2RtYWJsaXQuaCIN Cj4gLSNpbmNsdWRlICJ2aWFfZHJ2LmgiDQo+IC0NCj4gLSNkZWZpbmUgVklBX1BHRE4oeCkJ ICAgICAoKCh1bnNpZ25lZCBsb25nKSh4KSkgJiBQQUdFX01BU0spDQo+IC0jZGVmaW5lIFZJ QV9QR09GRih4KQkgICAgKCgodW5zaWduZWQgbG9uZykoeCkpICYgflBBR0VfTUFTSykNCj4g LSNkZWZpbmUgVklBX1BGTih4KQkgICAgICAoKHVuc2lnbmVkIGxvbmcpKHgpID4+IFBBR0Vf U0hJRlQpDQo+IC0NCj4gLXR5cGVkZWYgc3RydWN0IF9kcm1fdmlhX2Rlc2NyaXB0b3Igew0K PiAtCXVpbnQzMl90IG1lbV9hZGRyOw0KPiAtCXVpbnQzMl90IGRldl9hZGRyOw0KPiAtCXVp bnQzMl90IHNpemU7DQo+IC0JdWludDMyX3QgbmV4dDsNCj4gLX0gZHJtX3ZpYV9kZXNjcmlw dG9yX3Q7DQo+IC0NCj4gLQ0KPiAtLyoNCj4gLSAqIFVubWFwIGEgRE1BIG1hcHBpbmcuDQo+ IC0gKi8NCj4gLQ0KPiAtDQo+IC0NCj4gLXN0YXRpYyB2b2lkDQo+IC12aWFfdW5tYXBfYmxp dF9mcm9tX2RldmljZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgZHJtX3ZpYV9zZ19pbmZvX3Qg KnZzZykNCj4gLXsNCj4gLQlpbnQgbnVtX2Rlc2MgPSB2c2ctPm51bV9kZXNjOw0KPiAtCXVu c2lnbmVkIGN1cl9kZXNjcmlwdG9yX3BhZ2UgPSBudW1fZGVzYyAvIHZzZy0+ZGVzY3JpcHRv cnNfcGVyX3BhZ2U7DQo+IC0JdW5zaWduZWQgZGVzY3JpcHRvcl90aGlzX3BhZ2UgPSBudW1f ZGVzYyAlIHZzZy0+ZGVzY3JpcHRvcnNfcGVyX3BhZ2U7DQo+IC0JZHJtX3ZpYV9kZXNjcmlw dG9yX3QgKmRlc2NfcHRyID0gdnNnLT5kZXNjX3BhZ2VzW2N1cl9kZXNjcmlwdG9yX3BhZ2Vd ICsNCj4gLQkJZGVzY3JpcHRvcl90aGlzX3BhZ2U7DQo+IC0JZG1hX2FkZHJfdCBuZXh0ID0g dnNnLT5jaGFpbl9zdGFydDsNCj4gLQ0KPiAtCXdoaWxlIChudW1fZGVzYy0tKSB7DQo+IC0J CWlmIChkZXNjcmlwdG9yX3RoaXNfcGFnZS0tID09IDApIHsNCj4gLQkJCWN1cl9kZXNjcmlw dG9yX3BhZ2UtLTsNCj4gLQkJCWRlc2NyaXB0b3JfdGhpc19wYWdlID0gdnNnLT5kZXNjcmlw dG9yc19wZXJfcGFnZSAtIDE7DQo+IC0JCQlkZXNjX3B0ciA9IHZzZy0+ZGVzY19wYWdlc1tj dXJfZGVzY3JpcHRvcl9wYWdlXSArDQo+IC0JCQkJZGVzY3JpcHRvcl90aGlzX3BhZ2U7DQo+ IC0JCX0NCj4gLQkJZG1hX3VubWFwX3NpbmdsZSgmcGRldi0+ZGV2LCBuZXh0LCBzaXplb2Yo KmRlc2NfcHRyKSwgRE1BX1RPX0RFVklDRSk7DQo+IC0JCWRtYV91bm1hcF9wYWdlKCZwZGV2 LT5kZXYsIGRlc2NfcHRyLT5tZW1fYWRkciwgZGVzY19wdHItPnNpemUsIHZzZy0+ZGlyZWN0 aW9uKTsNCj4gLQkJbmV4dCA9IChkbWFfYWRkcl90KSBkZXNjX3B0ci0+bmV4dDsNCj4gLQkJ ZGVzY19wdHItLTsNCj4gLQl9DQo+IC19DQo+IC0NCj4gLS8qDQo+IC0gKiBJZiBtb2RlID0g MCwgY291bnQgaG93IG1hbnkgZGVzY3JpcHRvcnMgYXJlIG5lZWRlZC4NCj4gLSAqIElmIG1v ZGUgPSAxLCBNYXAgdGhlIERNQSBwYWdlcyBmb3IgdGhlIGRldmljZSwgcHV0IHRvZ2V0aGVy IGFuZCBtYXAgYWxzbyB0aGUgZGVzY3JpcHRvcnMuDQo+IC0gKiBEZXNjcmlwdG9ycyBhcmUg cnVuIGluIHJldmVyc2Ugb3JkZXIgYnkgdGhlIGhhcmR3YXJlIGJlY2F1c2Ugd2UgYXJlIG5v dCBhbGxvd2VkIHRvIHVwZGF0ZSB0aGUNCj4gLSAqICduZXh0JyBmaWVsZCB3aXRob3V0IHN5 bmNpbmcgY2FsbHMgd2hlbiB0aGUgZGVzY3JpcHRvciBpcyBhbHJlYWR5IG1hcHBlZC4NCj4g LSAqLw0KPiAtDQo+IC1zdGF0aWMgdm9pZA0KPiAtdmlhX21hcF9ibGl0X2Zvcl9kZXZpY2Uo c3RydWN0IHBjaV9kZXYgKnBkZXYsDQo+IC0JCSAgIGNvbnN0IGRybV92aWFfZG1hYmxpdF90 ICp4ZmVyLA0KPiAtCQkgICBkcm1fdmlhX3NnX2luZm9fdCAqdnNnLA0KPiAtCQkgICBpbnQg bW9kZSkNCj4gLXsNCj4gLQl1bnNpZ25lZCBjdXJfZGVzY3JpcHRvcl9wYWdlID0gMDsNCj4g LQl1bnNpZ25lZCBudW1fZGVzY3JpcHRvcnNfdGhpc19wYWdlID0gMDsNCj4gLQl1bnNpZ25l ZCBjaGFyICptZW1fYWRkciA9IHhmZXItPm1lbV9hZGRyOw0KPiAtCXVuc2lnbmVkIGNoYXIg KmN1cl9tZW07DQo+IC0JdW5zaWduZWQgY2hhciAqZmlyc3RfYWRkciA9ICh1bnNpZ25lZCBj aGFyICopVklBX1BHRE4obWVtX2FkZHIpOw0KPiAtCXVpbnQzMl90IGZiX2FkZHIgPSB4ZmVy LT5mYl9hZGRyOw0KPiAtCXVpbnQzMl90IGN1cl9mYjsNCj4gLQl1bnNpZ25lZCBsb25nIGxp bmVfbGVuOw0KPiAtCXVuc2lnbmVkIHJlbWFpbmluZ19sZW47DQo+IC0JaW50IG51bV9kZXNj ID0gMDsNCj4gLQlpbnQgY3VyX2xpbmU7DQo+IC0JZG1hX2FkZHJfdCBuZXh0ID0gMCB8IFZJ QV9ETUFfRFBSX0VDOw0KPiAtCWRybV92aWFfZGVzY3JpcHRvcl90ICpkZXNjX3B0ciA9IE5V TEw7DQo+IC0NCj4gLQlpZiAobW9kZSA9PSAxKQ0KPiAtCQlkZXNjX3B0ciA9IHZzZy0+ZGVz Y19wYWdlc1tjdXJfZGVzY3JpcHRvcl9wYWdlXTsNCj4gLQ0KPiAtCWZvciAoY3VyX2xpbmUg PSAwOyBjdXJfbGluZSA8IHhmZXItPm51bV9saW5lczsgKytjdXJfbGluZSkgew0KPiAtDQo+ IC0JCWxpbmVfbGVuID0geGZlci0+bGluZV9sZW5ndGg7DQo+IC0JCWN1cl9mYiA9IGZiX2Fk ZHI7DQo+IC0JCWN1cl9tZW0gPSBtZW1fYWRkcjsNCj4gLQ0KPiAtCQl3aGlsZSAobGluZV9s ZW4gPiAwKSB7DQo+IC0NCj4gLQkJCXJlbWFpbmluZ19sZW4gPSBtaW4oUEFHRV9TSVpFLVZJ QV9QR09GRihjdXJfbWVtKSwgbGluZV9sZW4pOw0KPiAtCQkJbGluZV9sZW4gLT0gcmVtYWlu aW5nX2xlbjsNCj4gLQ0KPiAtCQkJaWYgKG1vZGUgPT0gMSkgew0KPiAtCQkJCWRlc2NfcHRy LT5tZW1fYWRkciA9DQo+IC0JCQkJCWRtYV9tYXBfcGFnZSgmcGRldi0+ZGV2LA0KPiAtCQkJ CQkJICAgICB2c2ctPnBhZ2VzW1ZJQV9QRk4oY3VyX21lbSkgLQ0KPiAtCQkJCQkJCQlWSUFf UEZOKGZpcnN0X2FkZHIpXSwNCj4gLQkJCQkJCSAgICAgVklBX1BHT0ZGKGN1cl9tZW0pLCBy ZW1haW5pbmdfbGVuLA0KPiAtCQkJCQkJICAgICB2c2ctPmRpcmVjdGlvbik7DQo+IC0JCQkJ ZGVzY19wdHItPmRldl9hZGRyID0gY3VyX2ZiOw0KPiAtDQo+IC0JCQkJZGVzY19wdHItPnNp emUgPSByZW1haW5pbmdfbGVuOw0KPiAtCQkJCWRlc2NfcHRyLT5uZXh0ID0gKHVpbnQzMl90 KSBuZXh0Ow0KPiAtCQkJCW5leHQgPSBkbWFfbWFwX3NpbmdsZSgmcGRldi0+ZGV2LCBkZXNj X3B0ciwgc2l6ZW9mKCpkZXNjX3B0ciksDQo+IC0JCQkJCQkgICAgICBETUFfVE9fREVWSUNF KTsNCj4gLQkJCQlkZXNjX3B0cisrOw0KPiAtCQkJCWlmICgrK251bV9kZXNjcmlwdG9yc190 aGlzX3BhZ2UgPj0gdnNnLT5kZXNjcmlwdG9yc19wZXJfcGFnZSkgew0KPiAtCQkJCQludW1f ZGVzY3JpcHRvcnNfdGhpc19wYWdlID0gMDsNCj4gLQkJCQkJZGVzY19wdHIgPSB2c2ctPmRl c2NfcGFnZXNbKytjdXJfZGVzY3JpcHRvcl9wYWdlXTsNCj4gLQkJCQl9DQo+IC0JCQl9DQo+ IC0NCj4gLQkJCW51bV9kZXNjKys7DQo+IC0JCQljdXJfbWVtICs9IHJlbWFpbmluZ19sZW47 DQo+IC0JCQljdXJfZmIgKz0gcmVtYWluaW5nX2xlbjsNCj4gLQkJfQ0KPiAtDQo+IC0JCW1l bV9hZGRyICs9IHhmZXItPm1lbV9zdHJpZGU7DQo+IC0JCWZiX2FkZHIgKz0geGZlci0+ZmJf c3RyaWRlOw0KPiAtCX0NCj4gLQ0KPiAtCWlmIChtb2RlID09IDEpIHsNCj4gLQkJdnNnLT5j aGFpbl9zdGFydCA9IG5leHQ7DQo+IC0JCXZzZy0+c3RhdGUgPSBkcl92aWFfZGV2aWNlX21h cHBlZDsNCj4gLQl9DQo+IC0JdnNnLT5udW1fZGVzYyA9IG51bV9kZXNjOw0KPiAtfQ0KPiAt DQo+IC0vKg0KPiAtICogRnVuY3Rpb24gdGhhdCBmcmVlcyB1cCBhbGwgcmVzb3VyY2VzIGZv ciBhIGJsaXQuIEl0IGlzIHVzYWJsZSBldmVuIGlmIHRoZQ0KPiAtICogYmxpdCBpbmZvIGhh cyBvbmx5IGJlZW4gcGFydGlhbGx5IGJ1aWx0IGFzIGxvbmcgYXMgdGhlIHN0YXR1cyBlbnVt IGlzIGNvbnNpc3RlbnQNCj4gLSAqIHdpdGggdGhlIGFjdHVhbCBzdGF0dXMgb2YgdGhlIHVz ZWQgcmVzb3VyY2VzLg0KPiAtICovDQo+IC0NCj4gLQ0KPiAtc3RhdGljIHZvaWQNCj4gLXZp YV9mcmVlX3NnX2luZm8oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGRybV92aWFfc2dfaW5mb190 ICp2c2cpDQo+IC17DQo+IC0JaW50IGk7DQo+IC0NCj4gLQlzd2l0Y2ggKHZzZy0+c3RhdGUp IHsNCj4gLQljYXNlIGRyX3ZpYV9kZXZpY2VfbWFwcGVkOg0KPiAtCQl2aWFfdW5tYXBfYmxp dF9mcm9tX2RldmljZShwZGV2LCB2c2cpOw0KPiAtCQlmYWxsdGhyb3VnaDsNCj4gLQljYXNl IGRyX3ZpYV9kZXNjX3BhZ2VzX2FsbG9jOg0KPiAtCQlmb3IgKGkgPSAwOyBpIDwgdnNnLT5u dW1fZGVzY19wYWdlczsgKytpKSB7DQo+IC0JCQlpZiAodnNnLT5kZXNjX3BhZ2VzW2ldICE9 IE5VTEwpDQo+IC0JCQkJZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKXZzZy0+ZGVzY19wYWdl c1tpXSk7DQo+IC0JCX0NCj4gLQkJa2ZyZWUodnNnLT5kZXNjX3BhZ2VzKTsNCj4gLQkJZmFs bHRocm91Z2g7DQo+IC0JY2FzZSBkcl92aWFfcGFnZXNfbG9ja2VkOg0KPiAtCQl1bnBpbl91 c2VyX3BhZ2VzX2RpcnR5X2xvY2sodnNnLT5wYWdlcywgdnNnLT5udW1fcGFnZXMsDQo+IC0J CQkJCSAgICh2c2ctPmRpcmVjdGlvbiA9PSBETUFfRlJPTV9ERVZJQ0UpKTsNCj4gLQkJZmFs bHRocm91Z2g7DQo+IC0JY2FzZSBkcl92aWFfcGFnZXNfYWxsb2M6DQo+IC0JCXZmcmVlKHZz Zy0+cGFnZXMpOw0KPiAtCQlmYWxsdGhyb3VnaDsNCj4gLQlkZWZhdWx0Og0KPiAtCQl2c2ct PnN0YXRlID0gZHJfdmlhX3NnX2luaXQ7DQo+IC0JfQ0KPiAtCXZmcmVlKHZzZy0+Ym91bmNl X2J1ZmZlcik7DQo+IC0JdnNnLT5ib3VuY2VfYnVmZmVyID0gTlVMTDsNCj4gLQl2c2ctPmZy ZWVfb25fc2VxdWVuY2UgPSAwOw0KPiAtfQ0KPiAtDQo+IC0vKg0KPiAtICogRmlyZSBhIGJs aXQgZW5naW5lLg0KPiAtICovDQo+IC0NCj4gLXN0YXRpYyB2b2lkDQo+IC12aWFfZmlyZV9k bWFibGl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGRybV92aWFfc2dfaW5mb190ICp2c2cs IGludCBlbmdpbmUpDQo+IC17DQo+IC0JZHJtX3ZpYV9wcml2YXRlX3QgKmRldl9wcml2ID0g KGRybV92aWFfcHJpdmF0ZV90ICopZGV2LT5kZXZfcHJpdmF0ZTsNCj4gLQ0KPiAtCXZpYV93 cml0ZShkZXZfcHJpdiwgVklBX1BDSV9ETUFfTUFSMCArIGVuZ2luZSoweDEwLCAwKTsNCj4g LQl2aWFfd3JpdGUoZGV2X3ByaXYsIFZJQV9QQ0lfRE1BX0RBUjAgKyBlbmdpbmUqMHgxMCwg MCk7DQo+IC0JdmlhX3dyaXRlKGRldl9wcml2LCBWSUFfUENJX0RNQV9DU1IwICsgZW5naW5l KjB4MDQsIFZJQV9ETUFfQ1NSX0REIHwgVklBX0RNQV9DU1JfVEQgfA0KPiAtCQkgIFZJQV9E TUFfQ1NSX0RFKTsNCj4gLQl2aWFfd3JpdGUoZGV2X3ByaXYsIFZJQV9QQ0lfRE1BX01SMCAg KyBlbmdpbmUqMHgwNCwgVklBX0RNQV9NUl9DTSB8IFZJQV9ETUFfTVJfVERJRSk7DQo+IC0J dmlhX3dyaXRlKGRldl9wcml2LCBWSUFfUENJX0RNQV9CQ1IwICsgZW5naW5lKjB4MTAsIDAp Ow0KPiAtCXZpYV93cml0ZShkZXZfcHJpdiwgVklBX1BDSV9ETUFfRFBSMCArIGVuZ2luZSow eDEwLCB2c2ctPmNoYWluX3N0YXJ0KTsNCj4gLQl3bWIoKTsNCj4gLQl2aWFfd3JpdGUoZGV2 X3ByaXYsIFZJQV9QQ0lfRE1BX0NTUjAgKyBlbmdpbmUqMHgwNCwgVklBX0RNQV9DU1JfREUg fCBWSUFfRE1BX0NTUl9UUyk7DQo+IC0JdmlhX3JlYWQoZGV2X3ByaXYsIFZJQV9QQ0lfRE1B X0NTUjAgKyBlbmdpbmUqMHgwNCk7DQo+IC19DQo+IC0NCj4gLS8qDQo+IC0gKiBPYnRhaW4g YSBwYWdlIHBvaW50ZXIgYXJyYXkgYW5kIGxvY2sgYWxsIHBhZ2VzIGludG8gc3lzdGVtIG1l bW9yeS4gQSBzZWdtZW50YXRpb24gdmlvbGF0aW9uIHdpbGwNCj4gLSAqIG9jY3VyIGhlcmUg aWYgdGhlIGNhbGxpbmcgdXNlciBkb2VzIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgc3VibWl0 dGVkIGFkZHJlc3MuDQo+IC0gKi8NCj4gLQ0KPiAtc3RhdGljIGludA0KPiAtdmlhX2xvY2tf YWxsX2RtYV9wYWdlcyhkcm1fdmlhX3NnX2luZm9fdCAqdnNnLCAgZHJtX3ZpYV9kbWFibGl0 X3QgKnhmZXIpDQo+IC17DQo+IC0JaW50IHJldDsNCj4gLQl1bnNpZ25lZCBsb25nIGZpcnN0 X3BmbiA9IFZJQV9QRk4oeGZlci0+bWVtX2FkZHIpOw0KPiAtCXZzZy0+bnVtX3BhZ2VzID0g VklBX1BGTih4ZmVyLT5tZW1fYWRkciArICh4ZmVyLT5udW1fbGluZXMgKiB4ZmVyLT5tZW1f c3RyaWRlIC0gMSkpIC0NCj4gLQkJZmlyc3RfcGZuICsgMTsNCj4gLQ0KPiAtCXZzZy0+cGFn ZXMgPSB2emFsbG9jKGFycmF5X3NpemUoc2l6ZW9mKHN0cnVjdCBwYWdlICopLCB2c2ctPm51 bV9wYWdlcykpOw0KPiAtCWlmIChOVUxMID09IHZzZy0+cGFnZXMpDQo+IC0JCXJldHVybiAt RU5PTUVNOw0KPiAtCXJldCA9IHBpbl91c2VyX3BhZ2VzX2Zhc3QoKHVuc2lnbmVkIGxvbmcp eGZlci0+bWVtX2FkZHIsDQo+IC0JCQl2c2ctPm51bV9wYWdlcywNCj4gLQkJCXZzZy0+ZGly ZWN0aW9uID09IERNQV9GUk9NX0RFVklDRSA/IEZPTExfV1JJVEUgOiAwLA0KPiAtCQkJdnNn LT5wYWdlcyk7DQo+IC0JaWYgKHJldCAhPSB2c2ctPm51bV9wYWdlcykgew0KPiAtCQlpZiAo cmV0IDwgMCkNCj4gLQkJCXJldHVybiByZXQ7DQo+IC0JCXZzZy0+c3RhdGUgPSBkcl92aWFf cGFnZXNfbG9ja2VkOw0KPiAtCQlyZXR1cm4gLUVJTlZBTDsNCj4gLQl9DQo+IC0JdnNnLT5z dGF0ZSA9IGRyX3ZpYV9wYWdlc19sb2NrZWQ7DQo+IC0JRFJNX0RFQlVHKCJETUEgcGFnZXMg bG9ja2VkXG4iKTsNCj4gLQlyZXR1cm4gMDsNCj4gLX0NCj4gLQ0KPiAtLyoNCj4gLSAqIEFs bG9jYXRlIERNQSBjYXBhYmxlIG1lbW9yeSBmb3IgdGhlIGJsaXQgZGVzY3JpcHRvciBjaGFp biwgYW5kIGFuIGFycmF5IHRoYXQga2VlcHMgdHJhY2sgb2YgdGhlDQo+IC0gKiBwYWdlcyB3 ZSBhbGxvY2F0ZS4gV2UgZG9uJ3Qgd2FudCB0byB1c2Uga21hbGxvYyBmb3IgdGhlIGRlc2Ny aXB0b3IgY2hhaW4gYmVjYXVzZSBpdCBtYXkgYmUNCj4gLSAqIHF1aXRlIGxhcmdlIGZvciBz b21lIGJsaXRzLCBhbmQgcGFnZXMgZG9uJ3QgbmVlZCB0byBiZSBjb250aWd1b3VzLg0KPiAt ICovDQo+IC0NCj4gLXN0YXRpYyBpbnQNCj4gLXZpYV9hbGxvY19kZXNjX3BhZ2VzKGRybV92 aWFfc2dfaW5mb190ICp2c2cpDQo+IC17DQo+IC0JaW50IGk7DQo+IC0NCj4gLQl2c2ctPmRl c2NyaXB0b3JzX3Blcl9wYWdlID0gUEFHRV9TSVpFIC8gc2l6ZW9mKGRybV92aWFfZGVzY3Jp cHRvcl90KTsNCj4gLQl2c2ctPm51bV9kZXNjX3BhZ2VzID0gKHZzZy0+bnVtX2Rlc2MgKyB2 c2ctPmRlc2NyaXB0b3JzX3Blcl9wYWdlIC0gMSkgLw0KPiAtCQl2c2ctPmRlc2NyaXB0b3Jz X3Blcl9wYWdlOw0KPiAtDQo+IC0JaWYgKE5VTEwgPT0gICh2c2ctPmRlc2NfcGFnZXMgPSBr Y2FsbG9jKHZzZy0+bnVtX2Rlc2NfcGFnZXMsIHNpemVvZih2b2lkICopLCBHRlBfS0VSTkVM KSkpDQo+IC0JCXJldHVybiAtRU5PTUVNOw0KPiAtDQo+IC0JdnNnLT5zdGF0ZSA9IGRyX3Zp YV9kZXNjX3BhZ2VzX2FsbG9jOw0KPiAtCWZvciAoaSA9IDA7IGkgPCB2c2ctPm51bV9kZXNj X3BhZ2VzOyArK2kpIHsNCj4gLQkJaWYgKE5VTEwgPT0gKHZzZy0+ZGVzY19wYWdlc1tpXSA9 DQo+IC0JCQkgICAgIChkcm1fdmlhX2Rlc2NyaXB0b3JfdCAqKSBfX2dldF9mcmVlX3BhZ2Uo R0ZQX0tFUk5FTCkpKQ0KPiAtCQkJcmV0dXJuIC1FTk9NRU07DQo+IC0JfQ0KPiAtCURSTV9E RUJVRygiQWxsb2NhdGVkICVkIHBhZ2VzIGZvciAlZCBkZXNjcmlwdG9ycy5cbiIsIHZzZy0+ bnVtX2Rlc2NfcGFnZXMsDQo+IC0JCSAgdnNnLT5udW1fZGVzYyk7DQo+IC0JcmV0dXJuIDA7 DQo+IC19DQo+IC0NCj4gLXN0YXRpYyB2b2lkDQo+IC12aWFfYWJvcnRfZG1hYmxpdChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgZW5naW5lKQ0KPiAtew0KPiAtCWRybV92aWFfcHJp dmF0ZV90ICpkZXZfcHJpdiA9IChkcm1fdmlhX3ByaXZhdGVfdCAqKWRldi0+ZGV2X3ByaXZh dGU7DQo+IC0NCj4gLQl2aWFfd3JpdGUoZGV2X3ByaXYsIFZJQV9QQ0lfRE1BX0NTUjAgKyBl bmdpbmUqMHgwNCwgVklBX0RNQV9DU1JfVEEpOw0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMgdm9p ZA0KPiAtdmlhX2RtYWJsaXRfZW5naW5lX29mZihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBp bnQgZW5naW5lKQ0KPiAtew0KPiAtCWRybV92aWFfcHJpdmF0ZV90ICpkZXZfcHJpdiA9IChk cm1fdmlhX3ByaXZhdGVfdCAqKWRldi0+ZGV2X3ByaXZhdGU7DQo+IC0NCj4gLQl2aWFfd3Jp dGUoZGV2X3ByaXYsIFZJQV9QQ0lfRE1BX0NTUjAgKyBlbmdpbmUqMHgwNCwgVklBX0RNQV9D U1JfVEQgfCBWSUFfRE1BX0NTUl9ERCk7DQo+IC19DQo+IC0NCj4gLQ0KPiAtDQo+IC0vKg0K PiAtICogVGhlIGRtYWJsaXQgcGFydCBvZiB0aGUgSVJRIGhhbmRsZXIuIFRyeWluZyB0byBk byBvbmx5IHJlYXNvbmFibHkgZmFzdCB0aGluZ3MgaGVyZS4NCj4gLSAqIFRoZSByZXN0LCBs aWtlIHVubWFwcGluZyBhbmQgZnJlZWluZyBtZW1vcnkgZm9yIGRvbmUgYmxpdHMgaXMgZG9u ZSBpbiBhIHNlcGFyYXRlIHdvcmtxdWV1ZQ0KPiAtICogdGFzay4gQmFzaWNhbGx5IHRoZSB0 YXNrIG9mIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBpcyB0byBzdWJtaXQgYSBuZXcgYmxpdCB0 byB0aGUgZW5naW5lLCB3aGlsZQ0KPiAtICogdGhlIHdvcmtxdWV1ZSB0YXNrIHRha2VzIGNh cmUgb2YgcHJvY2Vzc2luZyBhc3NvY2lhdGVkIHdpdGggdGhlIG9sZCBibGl0Lg0KPiAtICov DQo+IC0NCj4gLXZvaWQNCj4gLXZpYV9kbWFibGl0X2hhbmRsZXIoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgaW50IGVuZ2luZSwgaW50IGZyb21faXJxKQ0KPiAtew0KPiAtCWRybV92aWFf cHJpdmF0ZV90ICpkZXZfcHJpdiA9IChkcm1fdmlhX3ByaXZhdGVfdCAqKWRldi0+ZGV2X3By aXZhdGU7DQo+IC0JZHJtX3ZpYV9ibGl0cV90ICpibGl0cSA9IGRldl9wcml2LT5ibGl0X3F1 ZXVlcyArIGVuZ2luZTsNCj4gLQlpbnQgY3VyOw0KPiAtCWludCBkb25lX3RyYW5zZmVyOw0K PiAtCXVuc2lnbmVkIGxvbmcgaXJxc2F2ZSA9IDA7DQo+IC0JdWludDMyX3Qgc3RhdHVzID0g MDsNCj4gLQ0KPiAtCURSTV9ERUJVRygiRE1BIGJsaXQgaGFuZGxlciBjYWxsZWQuIGVuZ2lu ZSA9ICVkLCBmcm9tX2lycSA9ICVkLCBibGl0cSA9IDB4JWx4XG4iLA0KPiAtCQkgIGVuZ2lu ZSwgZnJvbV9pcnEsICh1bnNpZ25lZCBsb25nKSBibGl0cSk7DQo+IC0NCj4gLQlpZiAoZnJv bV9pcnEpDQo+IC0JCXNwaW5fbG9jaygmYmxpdHEtPmJsaXRfbG9jayk7DQo+IC0JZWxzZQ0K PiAtCQlzcGluX2xvY2tfaXJxc2F2ZSgmYmxpdHEtPmJsaXRfbG9jaywgaXJxc2F2ZSk7DQo+ IC0NCj4gLQlkb25lX3RyYW5zZmVyID0gYmxpdHEtPmlzX2FjdGl2ZSAmJg0KPiAtCSAgKChz dGF0dXMgPSB2aWFfcmVhZChkZXZfcHJpdiwgVklBX1BDSV9ETUFfQ1NSMCArIGVuZ2luZSow eDA0KSkgJiBWSUFfRE1BX0NTUl9URCk7DQo+IC0JZG9uZV90cmFuc2ZlciA9IGRvbmVfdHJh bnNmZXIgfHwgKGJsaXRxLT5hYm9ydGluZyAmJiAhKHN0YXR1cyAmIFZJQV9ETUFfQ1NSX0RF KSk7DQo+IC0NCj4gLQljdXIgPSBibGl0cS0+Y3VyOw0KPiAtCWlmIChkb25lX3RyYW5zZmVy KSB7DQo+IC0NCj4gLQkJYmxpdHEtPmJsaXRzW2N1cl0tPmFib3J0ZWQgPSBibGl0cS0+YWJv cnRpbmc7DQo+IC0JCWJsaXRxLT5kb25lX2JsaXRfaGFuZGxlKys7DQo+IC0JCXdha2VfdXAo YmxpdHEtPmJsaXRfcXVldWUgKyBjdXIpOw0KPiAtDQo+IC0JCWN1cisrOw0KPiAtCQlpZiAo Y3VyID49IFZJQV9OVU1fQkxJVF9TTE9UUykNCj4gLQkJCWN1ciA9IDA7DQo+IC0JCWJsaXRx LT5jdXIgPSBjdXI7DQo+IC0NCj4gLQkJLyoNCj4gLQkJICogQ2xlYXIgdHJhbnNmZXIgZG9u ZSBmbGFnLg0KPiAtCQkgKi8NCj4gLQ0KPiAtCQl2aWFfd3JpdGUoZGV2X3ByaXYsIFZJQV9Q Q0lfRE1BX0NTUjAgKyBlbmdpbmUqMHgwNCwgIFZJQV9ETUFfQ1NSX1REKTsNCj4gLQ0KPiAt CQlibGl0cS0+aXNfYWN0aXZlID0gMDsNCj4gLQkJYmxpdHEtPmFib3J0aW5nID0gMDsNCj4g LQkJc2NoZWR1bGVfd29yaygmYmxpdHEtPndxKTsNCj4gLQ0KPiAtCX0gZWxzZSBpZiAoYmxp dHEtPmlzX2FjdGl2ZSAmJiB0aW1lX2FmdGVyX2VxKGppZmZpZXMsIGJsaXRxLT5lbmQpKSB7 DQo+IC0NCj4gLQkJLyoNCj4gLQkJICogQWJvcnQgdHJhbnNmZXIgYWZ0ZXIgb25lIHNlY29u ZC4NCj4gLQkJICovDQo+IC0NCj4gLQkJdmlhX2Fib3J0X2RtYWJsaXQoZGV2LCBlbmdpbmUp Ow0KPiAtCQlibGl0cS0+YWJvcnRpbmcgPSAxOw0KPiAtCQlibGl0cS0+ZW5kID0gamlmZmll cyArIEhaOw0KPiAtCX0NCj4gLQ0KPiAtCWlmICghYmxpdHEtPmlzX2FjdGl2ZSkgew0KPiAt CQlpZiAoYmxpdHEtPm51bV9vdXRzdGFuZGluZykgew0KPiAtCQkJdmlhX2ZpcmVfZG1hYmxp dChkZXYsIGJsaXRxLT5ibGl0c1tjdXJdLCBlbmdpbmUpOw0KPiAtCQkJYmxpdHEtPmlzX2Fj dGl2ZSA9IDE7DQo+IC0JCQlibGl0cS0+Y3VyID0gY3VyOw0KPiAtCQkJYmxpdHEtPm51bV9v dXRzdGFuZGluZy0tOw0KPiAtCQkJYmxpdHEtPmVuZCA9IGppZmZpZXMgKyBIWjsNCj4gLQkJ CWlmICghdGltZXJfcGVuZGluZygmYmxpdHEtPnBvbGxfdGltZXIpKQ0KPiAtCQkJCW1vZF90 aW1lcigmYmxpdHEtPnBvbGxfdGltZXIsIGppZmZpZXMgKyAxKTsNCj4gLQkJfSBlbHNlIHsN Cj4gLQkJCWlmICh0aW1lcl9wZW5kaW5nKCZibGl0cS0+cG9sbF90aW1lcikpDQo+IC0JCQkJ ZGVsX3RpbWVyKCZibGl0cS0+cG9sbF90aW1lcik7DQo+IC0JCQl2aWFfZG1hYmxpdF9lbmdp bmVfb2ZmKGRldiwgZW5naW5lKTsNCj4gLQkJfQ0KPiAtCX0NCj4gLQ0KPiAtCWlmIChmcm9t X2lycSkNCj4gLQkJc3Bpbl91bmxvY2soJmJsaXRxLT5ibGl0X2xvY2spOw0KPiAtCWVsc2UN Cj4gLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYmxpdHEtPmJsaXRfbG9jaywgaXJxc2F2 ZSk7DQo+IC19DQo+IC0NCj4gLQ0KPiAtDQo+IC0vKg0KPiAtICogQ2hlY2sgd2hldGhlciB0 aGlzIGJsaXQgaXMgc3RpbGwgYWN0aXZlLCBwZXJmb3JtaW5nIG5lY2Vzc2FyeSBsb2NraW5n Lg0KPiAtICovDQo+IC0NCj4gLXN0YXRpYyBpbnQNCj4gLXZpYV9kbWFibGl0X2FjdGl2ZShk cm1fdmlhX2JsaXRxX3QgKmJsaXRxLCBpbnQgZW5naW5lLCB1aW50MzJfdCBoYW5kbGUsIHdh aXRfcXVldWVfaGVhZF90ICoqcXVldWUpDQo+IC17DQo+IC0JdW5zaWduZWQgbG9uZyBpcnFz YXZlOw0KPiAtCXVpbnQzMl90IHNsb3Q7DQo+IC0JaW50IGFjdGl2ZTsNCj4gLQ0KPiAtCXNw aW5fbG9ja19pcnFzYXZlKCZibGl0cS0+YmxpdF9sb2NrLCBpcnFzYXZlKTsNCj4gLQ0KPiAt CS8qDQo+IC0JICogQWxsb3cgZm9yIGhhbmRsZSB3cmFwYXJvdW5kcy4NCj4gLQkgKi8NCj4g LQ0KPiAtCWFjdGl2ZSA9ICgoYmxpdHEtPmRvbmVfYmxpdF9oYW5kbGUgLSBoYW5kbGUpID4g KDEgPDwgMjMpKSAmJg0KPiAtCQkoKGJsaXRxLT5jdXJfYmxpdF9oYW5kbGUgLSBoYW5kbGUp IDw9ICgxIDw8IDIzKSk7DQo+IC0NCj4gLQlpZiAocXVldWUgJiYgYWN0aXZlKSB7DQo+IC0J CXNsb3QgPSBoYW5kbGUgLSBibGl0cS0+ZG9uZV9ibGl0X2hhbmRsZSArIGJsaXRxLT5jdXIg LSAxOw0KPiAtCQlpZiAoc2xvdCA+PSBWSUFfTlVNX0JMSVRfU0xPVFMpDQo+IC0JCQlzbG90 IC09IFZJQV9OVU1fQkxJVF9TTE9UUzsNCj4gLQkJKnF1ZXVlID0gYmxpdHEtPmJsaXRfcXVl dWUgKyBzbG90Ow0KPiAtCX0NCj4gLQ0KPiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmJs aXRxLT5ibGl0X2xvY2ssIGlycXNhdmUpOw0KPiAtDQo+IC0JcmV0dXJuIGFjdGl2ZTsNCj4g LX0NCj4gLQ0KPiAtLyoNCj4gLSAqIFN5bmMuIFdhaXQgZm9yIGF0IGxlYXN0IHRocmVlIHNl Y29uZHMgZm9yIHRoZSBibGl0IHRvIGJlIHBlcmZvcm1lZC4NCj4gLSAqLw0KPiAtDQo+IC1z dGF0aWMgaW50DQo+IC12aWFfZG1hYmxpdF9zeW5jKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHVpbnQzMl90IGhhbmRsZSwgaW50IGVuZ2luZSkNCj4gLXsNCj4gLQ0KPiAtCWRybV92aWFf cHJpdmF0ZV90ICpkZXZfcHJpdiA9IChkcm1fdmlhX3ByaXZhdGVfdCAqKWRldi0+ZGV2X3By aXZhdGU7DQo+IC0JZHJtX3ZpYV9ibGl0cV90ICpibGl0cSA9IGRldl9wcml2LT5ibGl0X3F1 ZXVlcyArIGVuZ2luZTsNCj4gLQl3YWl0X3F1ZXVlX2hlYWRfdCAqcXVldWU7DQo+IC0JaW50 IHJldCA9IDA7DQo+IC0NCj4gLQlpZiAodmlhX2RtYWJsaXRfYWN0aXZlKGJsaXRxLCBlbmdp bmUsIGhhbmRsZSwgJnF1ZXVlKSkgew0KPiAtCQlWSUFfV0FJVF9PTihyZXQsICpxdWV1ZSwg MyAqIEhaLA0KPiAtCQkJICAgICF2aWFfZG1hYmxpdF9hY3RpdmUoYmxpdHEsIGVuZ2luZSwg aGFuZGxlLCBOVUxMKSk7DQo+IC0JfQ0KPiAtCURSTV9ERUJVRygiRE1BIGJsaXQgc3luYyBo YW5kbGUgMHgleCBlbmdpbmUgJWQgcmV0dXJuZWQgJWRcbiIsDQo+IC0JCSAgaGFuZGxlLCBl bmdpbmUsIHJldCk7DQo+IC0NCj4gLQlyZXR1cm4gcmV0Ow0KPiAtfQ0KPiAtDQo+IC0NCj4g LS8qDQo+IC0gKiBBIHRpbWVyIHRoYXQgcmVndWxhcmx5IHBvbGxzIHRoZSBibGl0IGVuZ2lu ZSBpbiBjYXNlcyB3aGVyZSB3ZSBkb24ndCBoYXZlIGludGVycnVwdHM6DQo+IC0gKiBhKSBC cm9rZW4gaGFyZHdhcmUgKHR5cGljYWxseSB0aG9zZSB0aGF0IGRvbid0IGhhdmUgYW55IHZp ZGVvIGNhcHR1cmUgZmFjaWxpdHkpLg0KPiAtICogYikgQmxpdCBhYm9ydC4gVGhlIGhhcmR3 YXJlIGRvZXNuJ3Qgc2VuZCBhbiBpbnRlcnJ1cHQgd2hlbiBhIGJsaXQgaXMgYWJvcnRlZC4N Cj4gLSAqIFRoZSB0aW1lciBhbmQgaGFyZHdhcmUgSVJRJ3MgY2FuIGFuZCBkbyB3b3JrIGlu IHBhcmFsbGVsLiBJZiB0aGUgaGFyZHdhcmUgaGFzDQo+IC0gKiBpcnFzLCBpdCB3aWxsIHNo b3J0ZW4gdGhlIGxhdGVuY3kgc29tZXdoYXQuDQo+IC0gKi8NCj4gLQ0KPiAtDQo+IC0NCj4g LXN0YXRpYyB2b2lkDQo+IC12aWFfZG1hYmxpdF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAq dCkNCj4gLXsNCj4gLQlkcm1fdmlhX2JsaXRxX3QgKmJsaXRxID0gZnJvbV90aW1lcihibGl0 cSwgdCwgcG9sbF90aW1lcik7DQo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGJsaXRx LT5kZXY7DQo+IC0JaW50IGVuZ2luZSA9IChpbnQpDQo+IC0JCShibGl0cSAtICgoZHJtX3Zp YV9wcml2YXRlX3QgKilkZXYtPmRldl9wcml2YXRlKS0+YmxpdF9xdWV1ZXMpOw0KPiAtDQo+ IC0JRFJNX0RFQlVHKCJQb2xsaW5nIHRpbWVyIGNhbGxlZCBmb3IgZW5naW5lICVkLCBqaWZm aWVzICVsdVxuIiwgZW5naW5lLA0KPiAtCQkgICh1bnNpZ25lZCBsb25nKSBqaWZmaWVzKTsN Cj4gLQ0KPiAtCXZpYV9kbWFibGl0X2hhbmRsZXIoZGV2LCBlbmdpbmUsIDApOw0KPiAtDQo+ IC0JaWYgKCF0aW1lcl9wZW5kaW5nKCZibGl0cS0+cG9sbF90aW1lcikpIHsNCj4gLQkJbW9k X3RpbWVyKCZibGl0cS0+cG9sbF90aW1lciwgamlmZmllcyArIDEpOw0KPiAtDQo+IC0JICAg ICAgIC8qDQo+IC0JCSogUmVydW4gaGFuZGxlciB0byBkZWxldGUgdGltZXIgaWYgZW5naW5l cyBhcmUgb2ZmLCBhbmQNCj4gLQkJKiB0byBzaG9ydGVuIGFib3J0IGxhdGVuY3kuIFRoaXMg aXMgYSBsaXR0bGUgbmFzdHkuDQo+IC0JCSovDQo+IC0NCj4gLQkgICAgICAgdmlhX2RtYWJs aXRfaGFuZGxlcihkZXYsIGVuZ2luZSwgMCk7DQo+IC0NCj4gLQl9DQo+IC19DQo+IC0NCj4g LQ0KPiAtDQo+IC0NCj4gLS8qDQo+IC0gKiBXb3JrcXVldWUgdGFzayB0aGF0IGZyZWVzIGRh dGEgYW5kIG1hcHBpbmdzIGFzc29jaWF0ZWQgd2l0aCBhIGJsaXQuDQo+IC0gKiBBbHNvIHdh a2VzIHVwIHdhaXRpbmcgcHJvY2Vzc2VzLiBFYWNoIG9mIHRoZXNlIHRhc2tzIGhhbmRsZXMg b25lDQo+IC0gKiBibGl0IGVuZ2luZSBvbmx5IGFuZCBtYXkgbm90IGJlIGNhbGxlZCBvbiBl YWNoIGludGVycnVwdC4NCj4gLSAqLw0KPiAtDQo+IC0NCj4gLXN0YXRpYyB2b2lkDQo+IC12 aWFfZG1hYmxpdF93b3JrcXVldWUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQ0KPiAtew0K PiAtCWRybV92aWFfYmxpdHFfdCAqYmxpdHEgPSBjb250YWluZXJfb2Yod29yaywgZHJtX3Zp YV9ibGl0cV90LCB3cSk7DQo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGJsaXRxLT5k ZXY7DQo+IC0Jc3RydWN0IHBjaV9kZXYgKnBkZXYgPSB0b19wY2lfZGV2KGRldi0+ZGV2KTsN Cj4gLQl1bnNpZ25lZCBsb25nIGlycXNhdmU7DQo+IC0JZHJtX3ZpYV9zZ19pbmZvX3QgKmN1 cl9zZzsNCj4gLQlpbnQgY3VyX3JlbGVhc2VkOw0KPiAtDQo+IC0NCj4gLQlEUk1fREVCVUco IldvcmtxdWV1ZSB0YXNrIGNhbGxlZCBmb3IgYmxpdCBlbmdpbmUgJWxkXG4iLCAodW5zaWdu ZWQgbG9uZykNCj4gLQkJICAoYmxpdHEgLSAoKGRybV92aWFfcHJpdmF0ZV90ICopZGV2LT5k ZXZfcHJpdmF0ZSktPmJsaXRfcXVldWVzKSk7DQo+IC0NCj4gLQlzcGluX2xvY2tfaXJxc2F2 ZSgmYmxpdHEtPmJsaXRfbG9jaywgaXJxc2F2ZSk7DQo+IC0NCj4gLQl3aGlsZSAoYmxpdHEt PnNlcnZpY2VkICE9IGJsaXRxLT5jdXIpIHsNCj4gLQ0KPiAtCQljdXJfcmVsZWFzZWQgPSBi bGl0cS0+c2VydmljZWQrKzsNCj4gLQ0KPiAtCQlEUk1fREVCVUcoIlJlbGVhc2luZyBibGl0 IHNsb3QgJWRcbiIsIGN1cl9yZWxlYXNlZCk7DQo+IC0NCj4gLQkJaWYgKGJsaXRxLT5zZXJ2 aWNlZCA+PSBWSUFfTlVNX0JMSVRfU0xPVFMpDQo+IC0JCQlibGl0cS0+c2VydmljZWQgPSAw Ow0KPiAtDQo+IC0JCWN1cl9zZyA9IGJsaXRxLT5ibGl0c1tjdXJfcmVsZWFzZWRdOw0KPiAt CQlibGl0cS0+bnVtX2ZyZWUrKzsNCj4gLQ0KPiAtCQlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZibGl0cS0+YmxpdF9sb2NrLCBpcnFzYXZlKTsNCj4gLQ0KPiAtCQl3YWtlX3VwKCZibGl0 cS0+YnVzeV9xdWV1ZSk7DQo+IC0NCj4gLQkJdmlhX2ZyZWVfc2dfaW5mbyhwZGV2LCBjdXJf c2cpOw0KPiAtCQlrZnJlZShjdXJfc2cpOw0KPiAtDQo+IC0JCXNwaW5fbG9ja19pcnFzYXZl KCZibGl0cS0+YmxpdF9sb2NrLCBpcnFzYXZlKTsNCj4gLQl9DQo+IC0NCj4gLQlzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZibGl0cS0+YmxpdF9sb2NrLCBpcnFzYXZlKTsNCj4gLX0NCj4g LQ0KPiAtDQo+IC0vKg0KPiAtICogSW5pdCBhbGwgYmxpdCBlbmdpbmVzLiBDdXJyZW50bHkg d2UgdXNlIHR3bywgYnV0IHNvbWUgaGFyZHdhcmUgaGF2ZSA0Lg0KPiAtICovDQo+IC0NCj4g LQ0KPiAtdm9pZA0KPiAtdmlhX2luaXRfZG1hYmxpdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQ0KPiAtew0KPiAtCWludCBpLCBqOw0KPiAtCWRybV92aWFfcHJpdmF0ZV90ICpkZXZfcHJp diA9IChkcm1fdmlhX3ByaXZhdGVfdCAqKWRldi0+ZGV2X3ByaXZhdGU7DQo+IC0Jc3RydWN0 IHBjaV9kZXYgKnBkZXYgPSB0b19wY2lfZGV2KGRldi0+ZGV2KTsNCj4gLQlkcm1fdmlhX2Js aXRxX3QgKmJsaXRxOw0KPiAtDQo+IC0JcGNpX3NldF9tYXN0ZXIocGRldik7DQo+IC0NCj4g LQlmb3IgKGkgPSAwOyBpIDwgVklBX05VTV9CTElUX0VOR0lORVM7ICsraSkgew0KPiAtCQli bGl0cSA9IGRldl9wcml2LT5ibGl0X3F1ZXVlcyArIGk7DQo+IC0JCWJsaXRxLT5kZXYgPSBk ZXY7DQo+IC0JCWJsaXRxLT5jdXJfYmxpdF9oYW5kbGUgPSAwOw0KPiAtCQlibGl0cS0+ZG9u ZV9ibGl0X2hhbmRsZSA9IDA7DQo+IC0JCWJsaXRxLT5oZWFkID0gMDsNCj4gLQkJYmxpdHEt PmN1ciA9IDA7DQo+IC0JCWJsaXRxLT5zZXJ2aWNlZCA9IDA7DQo+IC0JCWJsaXRxLT5udW1f ZnJlZSA9IFZJQV9OVU1fQkxJVF9TTE9UUyAtIDE7DQo+IC0JCWJsaXRxLT5udW1fb3V0c3Rh bmRpbmcgPSAwOw0KPiAtCQlibGl0cS0+aXNfYWN0aXZlID0gMDsNCj4gLQkJYmxpdHEtPmFi b3J0aW5nID0gMDsNCj4gLQkJc3Bpbl9sb2NrX2luaXQoJmJsaXRxLT5ibGl0X2xvY2spOw0K PiAtCQlmb3IgKGogPSAwOyBqIDwgVklBX05VTV9CTElUX1NMT1RTOyArK2opDQo+IC0JCQlp bml0X3dhaXRxdWV1ZV9oZWFkKGJsaXRxLT5ibGl0X3F1ZXVlICsgaik7DQo+IC0JCWluaXRf d2FpdHF1ZXVlX2hlYWQoJmJsaXRxLT5idXN5X3F1ZXVlKTsNCj4gLQkJSU5JVF9XT1JLKCZi bGl0cS0+d3EsIHZpYV9kbWFibGl0X3dvcmtxdWV1ZSk7DQo+IC0JCXRpbWVyX3NldHVwKCZi bGl0cS0+cG9sbF90aW1lciwgdmlhX2RtYWJsaXRfdGltZXIsIDApOw0KPiAtCX0NCj4gLX0N Cj4gLQ0KPiAtLyoNCj4gLSAqIEJ1aWxkIGFsbCBpbmZvIGFuZCBkbyBhbGwgbWFwcGluZ3Mg cmVxdWlyZWQgZm9yIGEgYmxpdC4NCj4gLSAqLw0KPiAtDQo+IC0NCj4gLXN0YXRpYyBpbnQN Cj4gLXZpYV9idWlsZF9zZ19pbmZvKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGRybV92aWFf c2dfaW5mb190ICp2c2csIGRybV92aWFfZG1hYmxpdF90ICp4ZmVyKQ0KPiAtew0KPiAtCXN0 cnVjdCBwY2lfZGV2ICpwZGV2ID0gdG9fcGNpX2RldihkZXYtPmRldik7DQo+IC0JaW50IGRy YXcgPSB4ZmVyLT50b19mYjsNCj4gLQlpbnQgcmV0ID0gMDsNCj4gLQ0KPiAtCXZzZy0+ZGly ZWN0aW9uID0gKGRyYXcpID8gRE1BX1RPX0RFVklDRSA6IERNQV9GUk9NX0RFVklDRTsNCj4g LQl2c2ctPmJvdW5jZV9idWZmZXIgPSBOVUxMOw0KPiAtDQo+IC0JdnNnLT5zdGF0ZSA9IGRy X3ZpYV9zZ19pbml0Ow0KPiAtDQo+IC0JaWYgKHhmZXItPm51bV9saW5lcyA8PSAwIHx8IHhm ZXItPmxpbmVfbGVuZ3RoIDw9IDApIHsNCj4gLQkJRFJNX0VSUk9SKCJaZXJvIHNpemUgYml0 Ymx0LlxuIik7DQo+IC0JCXJldHVybiAtRUlOVkFMOw0KPiAtCX0NCj4gLQ0KPiAtCS8qDQo+ IC0JICogQmVsb3cgY2hlY2sgaXMgYSBkcml2ZXIgbGltaXRhdGlvbiwgbm90IGEgaGFyZHdh cmUgb25lLiBXZQ0KPiAtCSAqIGRvbid0IHdhbnQgdG8gbG9jayB1bnVzZWQgcGFnZXMsIGFu ZCBkb24ndCB3YW50IHRvIGluY29wb3JhdGUgdGhlDQo+IC0JICogZXh0cmEgbG9naWMgb2Yg YXZvaWRpbmcgdGhlbS4gTWFrZSBzdXJlIHRoZXJlIGFyZSBuby4NCj4gLQkgKiAoTm90IGEg YmlnIGxpbWl0YXRpb24gYW55d2F5LikNCj4gLQkgKi8NCj4gLQ0KPiAtCWlmICgoeGZlci0+ bWVtX3N0cmlkZSAtIHhmZXItPmxpbmVfbGVuZ3RoKSA+IDIqUEFHRV9TSVpFKSB7DQo+IC0J CURSTV9FUlJPUigiVG9vIGxhcmdlIHN5c3RlbSBtZW1vcnkgc3RyaWRlLiBTdHJpZGU6ICVk LCAiDQo+IC0JCQkgICJMZW5ndGg6ICVkXG4iLCB4ZmVyLT5tZW1fc3RyaWRlLCB4ZmVyLT5s aW5lX2xlbmd0aCk7DQo+IC0JCXJldHVybiAtRUlOVkFMOw0KPiAtCX0NCj4gLQ0KPiAtCWlm ICgoeGZlci0+bWVtX3N0cmlkZSA9PSB4ZmVyLT5saW5lX2xlbmd0aCkgJiYNCj4gLQkgICAo eGZlci0+ZmJfc3RyaWRlID09IHhmZXItPmxpbmVfbGVuZ3RoKSkgew0KPiAtCQl4ZmVyLT5t ZW1fc3RyaWRlICo9IHhmZXItPm51bV9saW5lczsNCj4gLQkJeGZlci0+bGluZV9sZW5ndGgg PSB4ZmVyLT5tZW1fc3RyaWRlOw0KPiAtCQl4ZmVyLT5mYl9zdHJpZGUgPSB4ZmVyLT5tZW1f c3RyaWRlOw0KPiAtCQl4ZmVyLT5udW1fbGluZXMgPSAxOw0KPiAtCX0NCj4gLQ0KPiAtCS8q DQo+IC0JICogRG9uJ3QgbG9jayBhbiBhcmJpdHJhcnkgbGFyZ2UgbnVtYmVyIG9mIHBhZ2Vz LCBzaW5jZSB0aGF0IGNhdXNlcyBhDQo+IC0JICogRE9TIHNlY3VyaXR5IGhvbGUuDQo+IC0J ICovDQo+IC0NCj4gLQlpZiAoeGZlci0+bnVtX2xpbmVzID4gMjA0OCB8fCAoeGZlci0+bnVt X2xpbmVzKnhmZXItPm1lbV9zdHJpZGUgPiAoMjA0OCoyMDQ4KjQpKSkgew0KPiAtCQlEUk1f RVJST1IoIlRvbyBsYXJnZSBQQ0kgRE1BIGJpdGJsdC5cbiIpOw0KPiAtCQlyZXR1cm4gLUVJ TlZBTDsNCj4gLQl9DQo+IC0NCj4gLQkvKg0KPiAtCSAqIHdlIGFsbG93IGEgbmVnYXRpdmUg ZmIgc3RyaWRlIHRvIGFsbG93IGZsaXBwaW5nIG9mIGltYWdlcyBpbg0KPiAtCSAqIHRyYW5z ZmVyLg0KPiAtCSAqLw0KPiAtDQo+IC0JaWYgKHhmZXItPm1lbV9zdHJpZGUgPCB4ZmVyLT5s aW5lX2xlbmd0aCB8fA0KPiAtCQlhYnMoeGZlci0+ZmJfc3RyaWRlKSA8IHhmZXItPmxpbmVf bGVuZ3RoKSB7DQo+IC0JCURSTV9FUlJPUigiSW52YWxpZCBmcmFtZS1idWZmZXIgLyBtZW1v cnkgc3RyaWRlLlxuIik7DQo+IC0JCXJldHVybiAtRUlOVkFMOw0KPiAtCX0NCj4gLQ0KPiAt CS8qDQo+IC0JICogQSBoYXJkd2FyZSBidWcgc2VlbXMgdG8gYmUgd29ya2VkIGFyb3VuZCBp ZiBzeXN0ZW0gbWVtb3J5IGFkZHJlc3NlcyBzdGFydCBvbg0KPiAtCSAqIDE2IGJ5dGUgYm91 bmRhcmllcy4gVGhpcyBzZWVtcyBhIGJpdCByZXN0cmljdGl2ZSBob3dldmVyLiBWSUEgaXMg Y29udGFjdGVkDQo+IC0JICogYWJvdXQgdGhpcy4gTWVhbndoaWxlLCBpbXBvc2UgdGhlIGZv bGxvd2luZyByZXN0cmljdGlvbnM6DQo+IC0JICovDQo+IC0NCj4gLSNpZmRlZiBWSUFfQlVH RlJFRQ0KPiAtCWlmICgoKCh1bnNpZ25lZCBsb25nKXhmZXItPm1lbV9hZGRyICYgMykgIT0g KCh1bnNpZ25lZCBsb25nKXhmZXItPmZiX2FkZHIgJiAzKSkgfHwNCj4gLQkgICAgKCh4ZmVy LT5udW1fbGluZXMgPiAxKSAmJiAoKHhmZXItPm1lbV9zdHJpZGUgJiAzKSAhPSAoeGZlci0+ ZmJfc3RyaWRlICYgMykpKSkgew0KPiAtCQlEUk1fRVJST1IoIkludmFsaWQgRFJNIGJpdGJs dCBhbGlnbm1lbnQuXG4iKTsNCj4gLQkJcmV0dXJuIC1FSU5WQUw7DQo+IC0JfQ0KPiAtI2Vs c2UNCj4gLQlpZiAoKCgodW5zaWduZWQgbG9uZyl4ZmVyLT5tZW1fYWRkciAmIDE1KSB8fA0K PiAtCSAgICAgICgodW5zaWduZWQgbG9uZyl4ZmVyLT5mYl9hZGRyICYgMykpIHx8DQo+IC0J ICAgKCh4ZmVyLT5udW1fbGluZXMgPiAxKSAmJg0KPiAtCSAgICgoeGZlci0+bWVtX3N0cmlk ZSAmIDE1KSB8fCAoeGZlci0+ZmJfc3RyaWRlICYgMykpKSkgew0KPiAtCQlEUk1fRVJST1Io IkludmFsaWQgRFJNIGJpdGJsdCBhbGlnbm1lbnQuXG4iKTsNCj4gLQkJcmV0dXJuIC1FSU5W QUw7DQo+IC0JfQ0KPiAtI2VuZGlmDQo+IC0NCj4gLQlpZiAoMCAhPSAocmV0ID0gdmlhX2xv Y2tfYWxsX2RtYV9wYWdlcyh2c2csIHhmZXIpKSkgew0KPiAtCQlEUk1fRVJST1IoIkNvdWxk IG5vdCBsb2NrIERNQSBwYWdlcy5cbiIpOw0KPiAtCQl2aWFfZnJlZV9zZ19pbmZvKHBkZXYs IHZzZyk7DQo+IC0JCXJldHVybiByZXQ7DQo+IC0JfQ0KPiAtDQo+IC0JdmlhX21hcF9ibGl0 X2Zvcl9kZXZpY2UocGRldiwgeGZlciwgdnNnLCAwKTsNCj4gLQlpZiAoMCAhPSAocmV0ID0g dmlhX2FsbG9jX2Rlc2NfcGFnZXModnNnKSkpIHsNCj4gLQkJRFJNX0VSUk9SKCJDb3VsZCBu b3QgYWxsb2NhdGUgRE1BIGRlc2NyaXB0b3IgcGFnZXMuXG4iKTsNCj4gLQkJdmlhX2ZyZWVf c2dfaW5mbyhwZGV2LCB2c2cpOw0KPiAtCQlyZXR1cm4gcmV0Ow0KPiAtCX0NCj4gLQl2aWFf bWFwX2JsaXRfZm9yX2RldmljZShwZGV2LCB4ZmVyLCB2c2csIDEpOw0KPiAtDQo+IC0JcmV0 dXJuIDA7DQo+IC19DQo+IC0NCj4gLQ0KPiAtLyoNCj4gLSAqIFJlc2VydmUgb25lIGZyZWUg c2xvdCBpbiB0aGUgYmxpdCBxdWV1ZS4gV2lsbCB3YWl0IGZvciBvbmUgc2Vjb25kIGZvciBv bmUNCj4gLSAqIHRvIGJlY29tZSBhdmFpbGFibGUuIE90aGVyd2lzZSAtRUJVU1kgaXMgcmV0 dXJuZWQuDQo+IC0gKi8NCj4gLQ0KPiAtc3RhdGljIGludA0KPiAtdmlhX2RtYWJsaXRfZ3Jh Yl9zbG90KGRybV92aWFfYmxpdHFfdCAqYmxpdHEsIGludCBlbmdpbmUpDQo+IC17DQo+IC0J aW50IHJldCA9IDA7DQo+IC0JdW5zaWduZWQgbG9uZyBpcnFzYXZlOw0KPiAtDQo+IC0JRFJN X0RFQlVHKCJOdW0gZnJlZSBpcyAlZFxuIiwgYmxpdHEtPm51bV9mcmVlKTsNCj4gLQlzcGlu X2xvY2tfaXJxc2F2ZSgmYmxpdHEtPmJsaXRfbG9jaywgaXJxc2F2ZSk7DQo+IC0Jd2hpbGUg KGJsaXRxLT5udW1fZnJlZSA9PSAwKSB7DQo+IC0JCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JmJsaXRxLT5ibGl0X2xvY2ssIGlycXNhdmUpOw0KPiAtDQo+IC0JCVZJQV9XQUlUX09OKHJl dCwgYmxpdHEtPmJ1c3lfcXVldWUsIEhaLCBibGl0cS0+bnVtX2ZyZWUgPiAwKTsNCj4gLQkJ aWYgKHJldCkNCj4gLQkJCXJldHVybiAoLUVJTlRSID09IHJldCkgPyAtRUFHQUlOIDogcmV0 Ow0KPiAtDQo+IC0JCXNwaW5fbG9ja19pcnFzYXZlKCZibGl0cS0+YmxpdF9sb2NrLCBpcnFz YXZlKTsNCj4gLQl9DQo+IC0NCj4gLQlibGl0cS0+bnVtX2ZyZWUtLTsNCj4gLQlzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZibGl0cS0+YmxpdF9sb2NrLCBpcnFzYXZlKTsNCj4gLQ0KPiAt CXJldHVybiAwOw0KPiAtfQ0KPiAtDQo+IC0vKg0KPiAtICogSGFuZCBiYWNrIGEgZnJlZSBz bG90IGlmIHdlIGNoYW5nZWQgb3VyIG1pbmQuDQo+IC0gKi8NCj4gLQ0KPiAtc3RhdGljIHZv aWQNCj4gLXZpYV9kbWFibGl0X3JlbGVhc2Vfc2xvdChkcm1fdmlhX2JsaXRxX3QgKmJsaXRx KQ0KPiAtew0KPiAtCXVuc2lnbmVkIGxvbmcgaXJxc2F2ZTsNCj4gLQ0KPiAtCXNwaW5fbG9j a19pcnFzYXZlKCZibGl0cS0+YmxpdF9sb2NrLCBpcnFzYXZlKTsNCj4gLQlibGl0cS0+bnVt X2ZyZWUrKzsNCj4gLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZibGl0cS0+YmxpdF9sb2Nr LCBpcnFzYXZlKTsNCj4gLQl3YWtlX3VwKCZibGl0cS0+YnVzeV9xdWV1ZSk7DQo+IC19DQo+ IC0NCj4gLS8qDQo+IC0gKiBHcmFiIGEgZnJlZSBzbG90LiBCdWlsZCBibGl0IGluZm8gYW5k IHF1ZXVlIGEgYmxpdC4NCj4gLSAqLw0KPiAtDQo+IC0NCj4gLXN0YXRpYyBpbnQNCj4gLXZp YV9kbWFibGl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGRybV92aWFfZG1hYmxpdF90ICp4 ZmVyKQ0KPiAtew0KPiAtCWRybV92aWFfcHJpdmF0ZV90ICpkZXZfcHJpdiA9IChkcm1fdmlh X3ByaXZhdGVfdCAqKWRldi0+ZGV2X3ByaXZhdGU7DQo+IC0JZHJtX3ZpYV9zZ19pbmZvX3Qg KnZzZzsNCj4gLQlkcm1fdmlhX2JsaXRxX3QgKmJsaXRxOw0KPiAtCWludCByZXQ7DQo+IC0J aW50IGVuZ2luZTsNCj4gLQl1bnNpZ25lZCBsb25nIGlycXNhdmU7DQo+IC0NCj4gLQlpZiAo ZGV2X3ByaXYgPT0gTlVMTCkgew0KPiAtCQlEUk1fRVJST1IoIkNhbGxlZCB3aXRob3V0IGlu aXRpYWxpemF0aW9uLlxuIik7DQo+IC0JCXJldHVybiAtRUlOVkFMOw0KPiAtCX0NCj4gLQ0K PiAtCWVuZ2luZSA9ICh4ZmVyLT50b19mYikgPyAwIDogMTsNCj4gLQlibGl0cSA9IGRldl9w cml2LT5ibGl0X3F1ZXVlcyArIGVuZ2luZTsNCj4gLQlpZiAoMCAhPSAocmV0ID0gdmlhX2Rt YWJsaXRfZ3JhYl9zbG90KGJsaXRxLCBlbmdpbmUpKSkNCj4gLQkJcmV0dXJuIHJldDsNCj4g LQlpZiAoTlVMTCA9PSAodnNnID0ga21hbGxvYyhzaXplb2YoKnZzZyksIEdGUF9LRVJORUwp KSkgew0KPiAtCQl2aWFfZG1hYmxpdF9yZWxlYXNlX3Nsb3QoYmxpdHEpOw0KPiAtCQlyZXR1 cm4gLUVOT01FTTsNCj4gLQl9DQo+IC0JaWYgKDAgIT0gKHJldCA9IHZpYV9idWlsZF9zZ19p bmZvKGRldiwgdnNnLCB4ZmVyKSkpIHsNCj4gLQkJdmlhX2RtYWJsaXRfcmVsZWFzZV9zbG90 KGJsaXRxKTsNCj4gLQkJa2ZyZWUodnNnKTsNCj4gLQkJcmV0dXJuIHJldDsNCj4gLQl9DQo+ IC0Jc3Bpbl9sb2NrX2lycXNhdmUoJmJsaXRxLT5ibGl0X2xvY2ssIGlycXNhdmUpOw0KPiAt DQo+IC0JYmxpdHEtPmJsaXRzW2JsaXRxLT5oZWFkKytdID0gdnNnOw0KPiAtCWlmIChibGl0 cS0+aGVhZCA+PSBWSUFfTlVNX0JMSVRfU0xPVFMpDQo+IC0JCWJsaXRxLT5oZWFkID0gMDsN Cj4gLQlibGl0cS0+bnVtX291dHN0YW5kaW5nKys7DQo+IC0JeGZlci0+c3luYy5zeW5jX2hh bmRsZSA9ICsrYmxpdHEtPmN1cl9ibGl0X2hhbmRsZTsNCj4gLQ0KPiAtCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmJsaXRxLT5ibGl0X2xvY2ssIGlycXNhdmUpOw0KPiAtCXhmZXItPnN5 bmMuZW5naW5lID0gZW5naW5lOw0KPiAtDQo+IC0JdmlhX2RtYWJsaXRfaGFuZGxlcihkZXYs IGVuZ2luZSwgMCk7DQo+IC0NCj4gLQlyZXR1cm4gMDsNCj4gLX0NCj4gLQ0KPiAtLyoNCj4g LSAqIFN5bmMgb24gYSBwcmV2aW91c2x5IHN1Ym1pdHRlZCBibGl0LiBOb3RlIHRoYXQgdGhl IFggc2VydmVyIHVzZSBzaWduYWxzIGV4dGVuc2l2ZWx5LCBhbmQNCj4gLSAqIHRoYXQgdGhl cmUgaXMgYSB2ZXJ5IGJpZyBwcm9iYWJpbGl0eSB0aGF0IHRoaXMgSU9DVEwgd2lsbCBiZSBp bnRlcnJ1cHRlZCBieSBhIHNpZ25hbC4gSW4gdGhhdA0KPiAtICogY2FzZSBpdCByZXR1cm5z IHdpdGggLUVBR0FJTiBmb3IgdGhlIHNpZ25hbCB0byBiZSBkZWxpdmVyZWQuDQo+IC0gKiBU aGUgY2FsbGVyIHNob3VsZCB0aGVuIHJlaXNzdWUgdGhlIElPQ1RMLiBUaGlzIGlzIHNpbWls YXIgdG8gd2hhdCBpcyBiZWluZyBkb25lIGZvciBkcm1HZXRMb2NrKCkuDQo+IC0gKi8NCj4g LQ0KPiAtaW50DQo+IC12aWFfZG1hX2JsaXRfc3luYyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikNCj4gLXsNCj4gLQlk cm1fdmlhX2JsaXRzeW5jX3QgKnN5bmMgPSBkYXRhOw0KPiAtCWludCBlcnI7DQo+IC0NCj4g LQlpZiAoc3luYy0+ZW5naW5lID49IFZJQV9OVU1fQkxJVF9FTkdJTkVTKQ0KPiAtCQlyZXR1 cm4gLUVJTlZBTDsNCj4gLQ0KPiAtCWVyciA9IHZpYV9kbWFibGl0X3N5bmMoZGV2LCBzeW5j LT5zeW5jX2hhbmRsZSwgc3luYy0+ZW5naW5lKTsNCj4gLQ0KPiAtCWlmICgtRUlOVFIgPT0g ZXJyKQ0KPiAtCQllcnIgPSAtRUFHQUlOOw0KPiAtDQo+IC0JcmV0dXJuIGVycjsNCj4gLX0N Cj4gLQ0KPiAtDQo+IC0vKg0KPiAtICogUXVldWUgYSBibGl0IGFuZCBoYW5kIGJhY2sgYSBo YW5kbGUgdG8gYmUgdXNlZCBmb3Igc3luYy4gVGhpcyBJT0NUTCBtYXkgYmUgaW50ZXJydXB0 ZWQgYnkgYSBzaWduYWwNCj4gLSAqIHdoaWxlIHdhaXRpbmcgZm9yIGEgZnJlZSBzbG90IGlu IHRoZSBibGl0IHF1ZXVlLiBJbiB0aGF0IGNhc2UgaXQgcmV0dXJucyB3aXRoIC1FQUdBSU4g YW5kIHNob3VsZA0KPiAtICogYmUgcmVpc3N1ZWQuIFNlZSB0aGUgYWJvdmUgSU9DVEwgY29k ZS4NCj4gLSAqLw0KPiAtDQo+IC1pbnQNCj4gLXZpYV9kbWFfYmxpdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikNCj4g LXsNCj4gLQlkcm1fdmlhX2RtYWJsaXRfdCAqeGZlciA9IGRhdGE7DQo+IC0JaW50IGVycjsN Cj4gLQ0KPiAtCWVyciA9IHZpYV9kbWFibGl0KGRldiwgeGZlcik7DQo+IC0NCj4gLQlyZXR1 cm4gZXJyOw0KPiAtfQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZpYS92aWFf ZG1hYmxpdC5oIGIvZHJpdmVycy9ncHUvZHJtL3ZpYS92aWFfZG1hYmxpdC5oDQo+IGRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCA5YjY2MmEzMjdjZWYuLjAwMDAwMDAwMDAw MA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmlhL3ZpYV9kbWFibGl0LmgNCj4gKysrIC9k ZXYvbnVsbA0KPiBAQCAtMSwxNDAgKzAsMCBAQA0KPiAtLyogdmlhX2RtYWJsaXQuaCAtLSBQ Q0kgRE1BIEJpdEJsdCBzdXBwb3J0IGZvciB0aGUgVklBIFVuaWNocm9tZS9Qcm8NCj4gLSAq DQo+IC0gKiBDb3B5cmlnaHQgMjAwNSBUaG9tYXMgSGVsbHN0cm9tLg0KPiAtICogQWxsIFJp Z2h0cyBSZXNlcnZlZC4NCj4gLSAqDQo+IC0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQ0KPiAtICog Y29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmls ZXMgKHRoZSAiU29mdHdhcmUiKSwNCj4gLSAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdp dGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24NCj4gLSAq IHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0 cmlidXRlLCBzdWIgbGljZW5zZSwNCj4gLSAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUg U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQ0KPiAtICogU29m dHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9uczoNCj4gLSAqDQo+IC0gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBh bmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZQ0KPiAtICogbmV4dCBw YXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp YWwgcG9ydGlvbnMNCj4gLSAqIG9mIHRoZSBTb2Z0d2FyZS4NCj4gLSAqDQo+IC0gKiBUSEUg U09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg S0lORCwgRVhQUkVTUyBPUg0KPiAtICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksDQo+IC0gKiBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4g Tk8gRVZFTlQgU0hBTEwNCj4gLSAqIFRIRSBDT1BZUklHSFQgSE9MREVSUywgQVVUSE9SUyBB TkQvT1IgSVRTIFNVUFBMSUVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwNCj4gLSAqIERB TUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05U UkFDVCwgVE9SVCBPUg0KPiAtICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBP UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRQ0KPiAtICogVVNFIE9S IE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCj4gLSAqDQo+IC0gKiBBdXRob3Jz Og0KPiAtICogICAgVGhvbWFzIEhlbGxzdHJvbS4NCj4gLSAqICAgIFJlZ2lzdGVyIGluZm8g ZnJvbSBEaWdlbyBJbmMuDQo+IC0gKi8NCj4gLQ0KPiAtI2lmbmRlZiBfVklBX0RNQUJMSVRf SA0KPiAtI2RlZmluZSBfVklBX0RNQUJMSVRfSA0KPiAtDQo+IC0jaW5jbHVkZSA8bGludXgv ZG1hLW1hcHBpbmcuaD4NCj4gLQ0KPiAtI2RlZmluZSBWSUFfTlVNX0JMSVRfRU5HSU5FUyAy DQo+IC0jZGVmaW5lIFZJQV9OVU1fQkxJVF9TTE9UUyA4DQo+IC0NCj4gLXN0cnVjdCBfZHJt X3ZpYV9kZXNjcmlwdG9yOw0KPiAtDQo+IC10eXBlZGVmIHN0cnVjdCBfZHJtX3ZpYV9zZ19p bmZvIHsNCj4gLQlzdHJ1Y3QgcGFnZSAqKnBhZ2VzOw0KPiAtCXVuc2lnbmVkIGxvbmcgbnVt X3BhZ2VzOw0KPiAtCXN0cnVjdCBfZHJtX3ZpYV9kZXNjcmlwdG9yICoqZGVzY19wYWdlczsN Cj4gLQlpbnQgbnVtX2Rlc2NfcGFnZXM7DQo+IC0JaW50IG51bV9kZXNjOw0KPiAtCWVudW0g ZG1hX2RhdGFfZGlyZWN0aW9uIGRpcmVjdGlvbjsNCj4gLQl1bnNpZ25lZCBjaGFyICpib3Vu Y2VfYnVmZmVyOw0KPiAtCWRtYV9hZGRyX3QgY2hhaW5fc3RhcnQ7DQo+IC0JdWludDMyX3Qg ZnJlZV9vbl9zZXF1ZW5jZTsNCj4gLQl1bnNpZ25lZCBpbnQgZGVzY3JpcHRvcnNfcGVyX3Bh Z2U7DQo+IC0JaW50IGFib3J0ZWQ7DQo+IC0JZW51bSB7DQo+IC0JCWRyX3ZpYV9kZXZpY2Vf bWFwcGVkLA0KPiAtCQlkcl92aWFfZGVzY19wYWdlc19hbGxvYywNCj4gLQkJZHJfdmlhX3Bh Z2VzX2xvY2tlZCwNCj4gLQkJZHJfdmlhX3BhZ2VzX2FsbG9jLA0KPiAtCQlkcl92aWFfc2df aW5pdA0KPiAtCX0gc3RhdGU7DQo+IC19IGRybV92aWFfc2dfaW5mb190Ow0KPiAtDQo+IC10 eXBlZGVmIHN0cnVjdCBfZHJtX3ZpYV9ibGl0cSB7DQo+IC0Jc3RydWN0IGRybV9kZXZpY2Ug KmRldjsNCj4gLQl1aW50MzJfdCBjdXJfYmxpdF9oYW5kbGU7DQo+IC0JdWludDMyX3QgZG9u ZV9ibGl0X2hhbmRsZTsNCj4gLQl1bnNpZ25lZCBzZXJ2aWNlZDsNCj4gLQl1bnNpZ25lZCBo ZWFkOw0KPiAtCXVuc2lnbmVkIGN1cjsNCj4gLQl1bnNpZ25lZCBudW1fZnJlZTsNCj4gLQl1 bnNpZ25lZCBudW1fb3V0c3RhbmRpbmc7DQo+IC0JdW5zaWduZWQgbG9uZyBlbmQ7DQo+IC0J aW50IGFib3J0aW5nOw0KPiAtCWludCBpc19hY3RpdmU7DQo+IC0JZHJtX3ZpYV9zZ19pbmZv X3QgKmJsaXRzW1ZJQV9OVU1fQkxJVF9TTE9UU107DQo+IC0Jc3BpbmxvY2tfdCBibGl0X2xv Y2s7DQo+IC0Jd2FpdF9xdWV1ZV9oZWFkX3QgYmxpdF9xdWV1ZVtWSUFfTlVNX0JMSVRfU0xP VFNdOw0KPiAtCXdhaXRfcXVldWVfaGVhZF90IGJ1c3lfcXVldWU7DQo+IC0Jc3RydWN0IHdv cmtfc3RydWN0IHdxOw0KPiAtCXN0cnVjdCB0aW1lcl9saXN0IHBvbGxfdGltZXI7DQo+IC19 IGRybV92aWFfYmxpdHFfdDsNCj4gLQ0KPiAtDQo+IC0vKg0KPiAtICogIFBDSSBETUEgUmVn aXN0ZXJzDQo+IC0gKiAgQ2hhbm5lbHMgMiAmIDMgZG9uJ3Qgc2VlbSB0byBiZSBpbXBsZW1l bnRlZCBpbiBoYXJkd2FyZS4NCj4gLSAqLw0KPiAtDQo+IC0jZGVmaW5lIFZJQV9QQ0lfRE1B X01BUjAgICAgICAgICAgICAweEU0MCAgIC8qIE1lbW9yeSBBZGRyZXNzIFJlZ2lzdGVyIG9m IENoYW5uZWwgMCAqLw0KPiAtI2RlZmluZSBWSUFfUENJX0RNQV9EQVIwICAgICAgICAgICAg MHhFNDQgICAvKiBEZXZpY2UgQWRkcmVzcyBSZWdpc3RlciBvZiBDaGFubmVsIDAgKi8NCj4g LSNkZWZpbmUgVklBX1BDSV9ETUFfQkNSMCAgICAgICAgICAgIDB4RTQ4ICAgLyogQnl0ZSBD b3VudCBSZWdpc3RlciBvZiBDaGFubmVsIDAgKi8NCj4gLSNkZWZpbmUgVklBX1BDSV9ETUFf RFBSMCAgICAgICAgICAgIDB4RTRDICAgLyogRGVzY3JpcHRvciBQb2ludGVyIFJlZ2lzdGVy IG9mIENoYW5uZWwgMCAqLw0KPiAtDQo+IC0jZGVmaW5lIFZJQV9QQ0lfRE1BX01BUjEgICAg ICAgICAgICAweEU1MCAgIC8qIE1lbW9yeSBBZGRyZXNzIFJlZ2lzdGVyIG9mIENoYW5uZWwg MSAqLw0KPiAtI2RlZmluZSBWSUFfUENJX0RNQV9EQVIxICAgICAgICAgICAgMHhFNTQgICAv KiBEZXZpY2UgQWRkcmVzcyBSZWdpc3RlciBvZiBDaGFubmVsIDEgKi8NCj4gLSNkZWZpbmUg VklBX1BDSV9ETUFfQkNSMSAgICAgICAgICAgIDB4RTU4ICAgLyogQnl0ZSBDb3VudCBSZWdp c3RlciBvZiBDaGFubmVsIDEgKi8NCj4gLSNkZWZpbmUgVklBX1BDSV9ETUFfRFBSMSAgICAg ICAgICAgIDB4RTVDICAgLyogRGVzY3JpcHRvciBQb2ludGVyIFJlZ2lzdGVyIG9mIENoYW5u ZWwgMSAqLw0KPiAtDQo+IC0jZGVmaW5lIFZJQV9QQ0lfRE1BX01BUjIgICAgICAgICAgICAw eEU2MCAgIC8qIE1lbW9yeSBBZGRyZXNzIFJlZ2lzdGVyIG9mIENoYW5uZWwgMiAqLw0KPiAt I2RlZmluZSBWSUFfUENJX0RNQV9EQVIyICAgICAgICAgICAgMHhFNjQgICAvKiBEZXZpY2Ug QWRkcmVzcyBSZWdpc3RlciBvZiBDaGFubmVsIDIgKi8NCj4gLSNkZWZpbmUgVklBX1BDSV9E TUFfQkNSMiAgICAgICAgICAgIDB4RTY4ICAgLyogQnl0ZSBDb3VudCBSZWdpc3RlciBvZiBD aGFubmVsIDIgKi8NCj4gLSNkZWZpbmUgVklBX1BDSV9ETUFfRFBSMiAgICAgICAgICAgIDB4 RTZDICAgLyogRGVzY3JpcHRvciBQb2ludGVyIFJlZ2lzdGVyIG9mIENoYW5uZWwgMiAqLw0K PiAtDQo+IC0jZGVmaW5lIFZJQV9QQ0lfRE1BX01BUjMgICAgICAgICAgICAweEU3MCAgIC8q IE1lbW9yeSBBZGRyZXNzIFJlZ2lzdGVyIG9mIENoYW5uZWwgMyAqLw0KPiAtI2RlZmluZSBW SUFfUENJX0RNQV9EQVIzICAgICAgICAgICAgMHhFNzQgICAvKiBEZXZpY2UgQWRkcmVzcyBS ZWdpc3RlciBvZiBDaGFubmVsIDMgKi8NCj4gLSNkZWZpbmUgVklBX1BDSV9ETUFfQkNSMyAg ICAgICAgICAgIDB4RTc4ICAgLyogQnl0ZSBDb3VudCBSZWdpc3RlciBvZiBDaGFubmVsIDMg Ki8NCj4gLSNkZWZpbmUgVklBX1BDSV9ETUFfRFBSMyAgICAgICAgICAgIDB4RTdDICAgLyog RGVzY3JpcHRvciBQb2ludGVyIFJlZ2lzdGVyIG9mIENoYW5uZWwgMyAqLw0KPiAtDQo+IC0j ZGVmaW5lIFZJQV9QQ0lfRE1BX01SMCAgICAgICAgICAgICAweEU4MCAgIC8qIE1vZGUgUmVn aXN0ZXIgb2YgQ2hhbm5lbCAwICovDQo+IC0jZGVmaW5lIFZJQV9QQ0lfRE1BX01SMSAgICAg ICAgICAgICAweEU4NCAgIC8qIE1vZGUgUmVnaXN0ZXIgb2YgQ2hhbm5lbCAxICovDQo+IC0j ZGVmaW5lIFZJQV9QQ0lfRE1BX01SMiAgICAgICAgICAgICAweEU4OCAgIC8qIE1vZGUgUmVn aXN0ZXIgb2YgQ2hhbm5lbCAyICovDQo+IC0jZGVmaW5lIFZJQV9QQ0lfRE1BX01SMyAgICAg ICAgICAgICAweEU4QyAgIC8qIE1vZGUgUmVnaXN0ZXIgb2YgQ2hhbm5lbCAzICovDQo+IC0N Cj4gLSNkZWZpbmUgVklBX1BDSV9ETUFfQ1NSMCAgICAgICAgICAgIDB4RTkwICAgLyogQ29t bWFuZC9TdGF0dXMgUmVnaXN0ZXIgb2YgQ2hhbm5lbCAwICovDQo+IC0jZGVmaW5lIFZJQV9Q Q0lfRE1BX0NTUjEgICAgICAgICAgICAweEU5NCAgIC8qIENvbW1hbmQvU3RhdHVzIFJlZ2lz dGVyIG9mIENoYW5uZWwgMSAqLw0KPiAtI2RlZmluZSBWSUFfUENJX0RNQV9DU1IyICAgICAg ICAgICAgMHhFOTggICAvKiBDb21tYW5kL1N0YXR1cyBSZWdpc3RlciBvZiBDaGFubmVsIDIg Ki8NCj4gLSNkZWZpbmUgVklBX1BDSV9ETUFfQ1NSMyAgICAgICAgICAgIDB4RTlDICAgLyog Q29tbWFuZC9TdGF0dXMgUmVnaXN0ZXIgb2YgQ2hhbm5lbCAzICovDQo+IC0NCj4gLSNkZWZp bmUgVklBX1BDSV9ETUFfUFRSICAgICAgICAgICAgIDB4RUEwICAgLyogUHJpb3JpdHkgVHlw ZSBSZWdpc3RlciAqLw0KPiAtDQo+IC0vKiBEZWZpbmUgZm9yIERNQSBlbmdpbmUgKi8NCj4g LS8qIERQUiAqLw0KPiAtI2RlZmluZSBWSUFfRE1BX0RQUl9FQwkJKDE8PDEpCS8qIGVuZCBv ZiBjaGFpbiAqLw0KPiAtI2RlZmluZSBWSUFfRE1BX0RQUl9ERElFCSgxPDwyKQkvKiBkZXNj cmlwdG9yIGRvbmUgaW50ZXJydXB0IGVuYWJsZSAqLw0KPiAtI2RlZmluZSBWSUFfRE1BX0RQ Ul9EVAkJKDE8PDMpCS8qIGRpcmVjdGlvbiBvZiB0cmFuc2ZlciAoUk8pICovDQo+IC0NCj4g LS8qIE1SICovDQo+IC0jZGVmaW5lIFZJQV9ETUFfTVJfQ00JCSgxPDwwKQkvKiBjaGFpbmlu ZyBtb2RlICovDQo+IC0jZGVmaW5lIFZJQV9ETUFfTVJfVERJRQkJKDE8PDEpCS8qIHRyYW5z ZmVyIGRvbmUgaW50ZXJydXB0IGVuYWJsZSAqLw0KPiAtI2RlZmluZSBWSUFfRE1BX01SX0hF TkRNQUNNRAkJKDE8PDcpIC8qID8gKi8NCj4gLQ0KPiAtLyogQ1NSICovDQo+IC0jZGVmaW5l IFZJQV9ETUFfQ1NSX0RFCQkoMTw8MCkJLyogRE1BIGVuYWJsZSAqLw0KPiAtI2RlZmluZSBW SUFfRE1BX0NTUl9UUwkJKDE8PDEpCS8qIHRyYW5zZmVyIHN0YXJ0ICovDQo+IC0jZGVmaW5l IFZJQV9ETUFfQ1NSX1RBCQkoMTw8MikJLyogdHJhbnNmZXIgYWJvcnQgKi8NCj4gLSNkZWZp bmUgVklBX0RNQV9DU1JfVEQJCSgxPDwzKQkvKiB0cmFuc2ZlciBkb25lICovDQo+IC0jZGVm aW5lIFZJQV9ETUFfQ1NSX0RECQkoMTw8NCkJLyogZGVzY3JpcHRvciBkb25lICovDQo+IC0j ZGVmaW5lIFZJQV9ETUFfRFBSX0VDICAgICAgICAgICgxPDwxKSAgLyogZW5kIG9mIGNoYWlu ICovDQo+IC0NCj4gLQ0KPiAtDQo+IC0jZW5kaWYNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS92aWEvdmlhX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL3ZpYS92aWFfZHJ2LmMN Cj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDVkYTM4MDgyODIxZi4uMDAw MDAwMDAwMDAwDQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92aWEvdmlhX2Rydi5jDQo+ICsr KyAvZGV2L251bGwNCj4gQEAgLTEsMTI0ICswLDAgQEANCj4gLS8qDQo+IC0gKiBDb3B5cmln aHQgMTk5OC0yMDAzIFZJQSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl ZC4NCj4gLSAqIENvcHlyaWdodCAyMDAxLTIwMDMgUzMgR3JhcGhpY3MsIEluYy4gQWxsIFJp Z2h0cyBSZXNlcnZlZC4NCj4gLSAqDQo+IC0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQ0KPiAtICog Y29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmls ZXMgKHRoZSAiU29mdHdhcmUiKSwNCj4gLSAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdp dGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24NCj4gLSAq IHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0 cmlidXRlLCBzdWIgbGljZW5zZSwNCj4gLSAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUg U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQ0KPiAtICogU29m dHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9uczoNCj4gLSAqDQo+IC0gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBh bmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZQ0KPiAtICogbmV4dCBw YXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp YWwgcG9ydGlvbnMNCj4gLSAqIG9mIHRoZSBTb2Z0d2FyZS4NCj4gLSAqDQo+IC0gKiBUSEUg U09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg S0lORCwgRVhQUkVTUyBPUg0KPiAtICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksDQo+IC0gKiBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4g Tk8gRVZFTlQgU0hBTEwNCj4gLSAqIFZJQSwgUzMgR1JBUEhJQ1MsIEFORC9PUiBJVFMgU1VQ UExJRVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SDQo+IC0gKiBPVEhF UiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9S IE9USEVSV0lTRSwNCj4gLSAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJ T04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUg0KPiAtICogREVBTElO R1MgSU4gVEhFIFNPRlRXQVJFLg0KPiAtICovDQo+IC0NCj4gLSNpbmNsdWRlIDxsaW51eC9t b2R1bGUuaD4NCj4gLSNpbmNsdWRlIDxsaW51eC9wY2kuaD4NCj4gLQ0KPiAtI2luY2x1ZGUg PGRybS9kcm1fZHJ2Lmg+DQo+IC0jaW5jbHVkZSA8ZHJtL2RybV9maWxlLmg+DQo+IC0jaW5j bHVkZSA8ZHJtL2RybV9wY2lpZHMuaD4NCj4gLSNpbmNsdWRlIDxkcm0vdmlhX2RybS5oPg0K PiAtDQo+IC0jaW5jbHVkZSAidmlhX2Rydi5oIg0KPiAtDQo+IC0NCj4gLXN0YXRpYyBpbnQg dmlhX2RyaXZlcl9vcGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fZmls ZSAqZmlsZSkNCj4gLXsNCj4gLQlzdHJ1Y3QgdmlhX2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2 Ow0KPiAtDQo+IC0JRFJNX0RFQlVHX0RSSVZFUigiXG4iKTsNCj4gLQlmaWxlX3ByaXYgPSBr bWFsbG9jKHNpemVvZigqZmlsZV9wcml2KSwgR0ZQX0tFUk5FTCk7DQo+IC0JaWYgKCFmaWxl X3ByaXYpDQo+IC0JCXJldHVybiAtRU5PTUVNOw0KPiAtDQo+IC0JZmlsZS0+ZHJpdmVyX3By aXYgPSBmaWxlX3ByaXY7DQo+IC0NCj4gLQlJTklUX0xJU1RfSEVBRCgmZmlsZV9wcml2LT5v YmpfbGlzdCk7DQo+IC0NCj4gLQlyZXR1cm4gMDsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIHZv aWQgdmlhX2RyaXZlcl9wb3N0Y2xvc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0 IGRybV9maWxlICpmaWxlKQ0KPiAtew0KPiAtCXN0cnVjdCB2aWFfZmlsZV9wcml2YXRlICpm aWxlX3ByaXYgPSBmaWxlLT5kcml2ZXJfcHJpdjsNCj4gLQ0KPiAtCWtmcmVlKGZpbGVfcHJp dik7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyBzdHJ1Y3QgcGNpX2RldmljZV9pZCBwY2lpZGxp c3RbXSA9IHsNCj4gLQl2aWFkcnZfUENJX0lEUw0KPiAtfTsNCj4gLQ0KPiAtc3RhdGljIGNv bnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgdmlhX2RyaXZlcl9mb3BzID0gew0KPiAtCS5v d25lciA9IFRISVNfTU9EVUxFLA0KPiAtCS5vcGVuID0gZHJtX29wZW4sDQo+IC0JLnJlbGVh c2UgPSBkcm1fcmVsZWFzZSwNCj4gLQkudW5sb2NrZWRfaW9jdGwgPSBkcm1faW9jdGwsDQo+ IC0JLm1tYXAgPSBkcm1fbGVnYWN5X21tYXAsDQo+IC0JLnBvbGwgPSBkcm1fcG9sbCwNCj4g LQkuY29tcGF0X2lvY3RsID0gZHJtX2NvbXBhdF9pb2N0bCwNCj4gLQkubGxzZWVrID0gbm9v cF9sbHNlZWssDQo+IC19Ow0KPiAtDQo+IC1zdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgZHJp dmVyID0gew0KPiAtCS5kcml2ZXJfZmVhdHVyZXMgPQ0KPiAtCSAgICBEUklWRVJfVVNFX0FH UCB8IERSSVZFUl9IQVZFX0lSUSB8IERSSVZFUl9MRUdBQ1ksDQo+IC0JLmxvYWQgPSB2aWFf ZHJpdmVyX2xvYWQsDQo+IC0JLnVubG9hZCA9IHZpYV9kcml2ZXJfdW5sb2FkLA0KPiAtCS5v cGVuID0gdmlhX2RyaXZlcl9vcGVuLA0KPiAtCS5wcmVjbG9zZSA9IHZpYV9yZWNsYWltX2J1 ZmZlcnNfbG9ja2VkLA0KPiAtCS5wb3N0Y2xvc2UgPSB2aWFfZHJpdmVyX3Bvc3RjbG9zZSwN Cj4gLQkuY29udGV4dF9kdG9yID0gdmlhX2ZpbmFsX2NvbnRleHQsDQo+IC0JLmdldF92Ymxh bmtfY291bnRlciA9IHZpYV9nZXRfdmJsYW5rX2NvdW50ZXIsDQo+IC0JLmVuYWJsZV92Ymxh bmsgPSB2aWFfZW5hYmxlX3ZibGFuaywNCj4gLQkuZGlzYWJsZV92YmxhbmsgPSB2aWFfZGlz YWJsZV92YmxhbmssDQo+IC0JLmlycV9wcmVpbnN0YWxsID0gdmlhX2RyaXZlcl9pcnFfcHJl aW5zdGFsbCwNCj4gLQkuaXJxX3Bvc3RpbnN0YWxsID0gdmlhX2RyaXZlcl9pcnFfcG9zdGlu c3RhbGwsDQo+IC0JLmlycV91bmluc3RhbGwgPSB2aWFfZHJpdmVyX2lycV91bmluc3RhbGws DQo+IC0JLmlycV9oYW5kbGVyID0gdmlhX2RyaXZlcl9pcnFfaGFuZGxlciwNCj4gLQkuZG1h X3F1aWVzY2VudCA9IHZpYV9kcml2ZXJfZG1hX3F1aWVzY2VudCwNCj4gLQkubGFzdGNsb3Nl ID0gdmlhX2xhc3RjbG9zZSwNCj4gLQkuaW9jdGxzID0gdmlhX2lvY3RscywNCj4gLQkuZm9w cyA9ICZ2aWFfZHJpdmVyX2ZvcHMsDQo+IC0JLm5hbWUgPSBEUklWRVJfTkFNRSwNCj4gLQku ZGVzYyA9IERSSVZFUl9ERVNDLA0KPiAtCS5kYXRlID0gRFJJVkVSX0RBVEUsDQo+IC0JLm1h am9yID0gRFJJVkVSX01BSk9SLA0KPiAtCS5taW5vciA9IERSSVZFUl9NSU5PUiwNCj4gLQku cGF0Y2hsZXZlbCA9IERSSVZFUl9QQVRDSExFVkVMLA0KPiAtfTsNCj4gLQ0KPiAtc3RhdGlj IHN0cnVjdCBwY2lfZHJpdmVyIHZpYV9wY2lfZHJpdmVyID0gew0KPiAtCS5uYW1lID0gRFJJ VkVSX05BTUUsDQo+IC0JLmlkX3RhYmxlID0gcGNpaWRsaXN0LA0KPiAtfTsNCj4gLQ0KPiAt c3RhdGljIGludCBfX2luaXQgdmlhX2luaXQodm9pZCkNCj4gLXsNCj4gLQlkcml2ZXIubnVt X2lvY3RscyA9IHZpYV9tYXhfaW9jdGw7DQo+IC0JdmlhX2luaXRfY29tbWFuZF92ZXJpZmll cigpOw0KPiAtCXJldHVybiBkcm1fbGVnYWN5X3BjaV9pbml0KCZkcml2ZXIsICZ2aWFfcGNp X2RyaXZlcik7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyB2b2lkIF9fZXhpdCB2aWFfZXhpdCh2 b2lkKQ0KPiAtew0KPiAtCWRybV9sZWdhY3lfcGNpX2V4aXQoJmRyaXZlciwgJnZpYV9wY2lf ZHJpdmVyKTsNCj4gLX0NCj4gLQ0KPiAtbW9kdWxlX2luaXQodmlhX2luaXQpOw0KPiAtbW9k dWxlX2V4aXQodmlhX2V4aXQpOw0KPiAtDQo+IC1NT0RVTEVfQVVUSE9SKERSSVZFUl9BVVRI T1IpOw0KPiAtTU9EVUxFX0RFU0NSSVBUSU9OKERSSVZFUl9ERVNDKTsNCj4gLU1PRFVMRV9M SUNFTlNFKCJHUEwgYW5kIGFkZGl0aW9uYWwgcmlnaHRzIik7DQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vdmlhL3ZpYV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS92aWEvdmlh X2Rydi5oDQo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCBkNWFkMWIwNWJm NzcuLjAwMDAwMDAwMDAwMA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmlhL3ZpYV9kcnYu aA0KPiArKysgL2Rldi9udWxsDQo+IEBAIC0xLDIyOSArMCwwIEBADQo+IC0vKg0KPiAtICog Q29weXJpZ2h0IDE5OTgtMjAwMyBWSUEgVGVjaG5vbG9naWVzLCBJbmMuIEFsbCBSaWdodHMg UmVzZXJ2ZWQuDQo+IC0gKiBDb3B5cmlnaHQgMjAwMS0yMDAzIFMzIEdyYXBoaWNzLCBJbmMu IEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQo+IC0gKg0KPiAtICogUGVybWlzc2lvbiBpcyBoZXJl YnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEN Cj4gLSAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0 aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksDQo+IC0gKiB0byBkZWFsIGluIHRoZSBTb2Z0 d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9u DQo+IC0gKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlz aCwgZGlzdHJpYnV0ZSwgc3ViIGxpY2Vuc2UsDQo+IC0gKiBhbmQvb3Igc2VsbCBjb3BpZXMg b2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUNCj4g LSAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9s bG93aW5nIGNvbmRpdGlvbnM6DQo+IC0gKg0KPiAtICogVGhlIGFib3ZlIGNvcHlyaWdodCBu b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUNCj4gLSAq IG5leHQgcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1 YnN0YW50aWFsIHBvcnRpb25zDQo+IC0gKiBvZiB0aGUgU29mdHdhcmUuDQo+IC0gKg0KPiAt ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkg T0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCj4gLSAqIElNUExJRUQsIElOQ0xVRElORyBCVVQg Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLA0KPiAt ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1F TlQuIElOIE5PIEVWRU5UIFNIQUxMDQo+IC0gKiBWSUEsIFMzIEdSQVBISUNTLCBBTkQvT1Ig SVRTIFNVUFBMSUVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUg0KPiAt ICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwg VE9SVCBPUiBPVEhFUldJU0UsDQo+IC0gKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBD T05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVINCj4gLSAq IERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCj4gLSAqLw0KPiAtI2lmbmRlZiBfVklBX0RS Vl9IXw0KPiAtI2RlZmluZSBfVklBX0RSVl9IXw0KPiAtDQo+IC0jaW5jbHVkZSA8bGludXgv aXJxcmV0dXJuLmg+DQo+IC0jaW5jbHVkZSA8bGludXgvamlmZmllcy5oPg0KPiAtI2luY2x1 ZGUgPGxpbnV4L3NjaGVkLmg+DQo+IC0jaW5jbHVkZSA8bGludXgvc2NoZWQvc2lnbmFsLmg+ DQo+IC0jaW5jbHVkZSA8bGludXgvd2FpdC5oPg0KPiAtDQo+IC0jaW5jbHVkZSA8ZHJtL2Ry bV9pb2N0bC5oPg0KPiAtI2luY2x1ZGUgPGRybS9kcm1fbGVnYWN5Lmg+DQo+IC0jaW5jbHVk ZSA8ZHJtL2RybV9tbS5oPg0KPiAtI2luY2x1ZGUgPGRybS92aWFfZHJtLmg+DQo+IC0NCj4g LSNkZWZpbmUgRFJJVkVSX0FVVEhPUgkiVmFyaW91cyINCj4gLQ0KPiAtI2RlZmluZSBEUklW RVJfTkFNRQkJInZpYSINCj4gLSNkZWZpbmUgRFJJVkVSX0RFU0MJCSJWSUEgVW5pY2hyb21l IC8gUHJvIg0KPiAtI2RlZmluZSBEUklWRVJfREFURQkJIjIwMDcwMjAyIg0KPiAtDQo+IC0j ZGVmaW5lIERSSVZFUl9NQUpPUgkJMg0KPiAtI2RlZmluZSBEUklWRVJfTUlOT1IJCTExDQo+ IC0jZGVmaW5lIERSSVZFUl9QQVRDSExFVkVMCTENCj4gLQ0KPiAtI2luY2x1ZGUgInZpYV92 ZXJpZmllci5oIg0KPiAtDQo+IC0jaW5jbHVkZSAidmlhX2RtYWJsaXQuaCINCj4gLQ0KPiAt I2RlZmluZSBWSUFfUENJX0JVRl9TSVpFIDYwMDAwDQo+IC0jZGVmaW5lIFZJQV9GSVJFX0JV Rl9TSVpFICAxMDI0DQo+IC0jZGVmaW5lIFZJQV9OVU1fSVJRUyA0DQo+IC0NCj4gLXR5cGVk ZWYgc3RydWN0IGRybV92aWFfcmluZ19idWZmZXIgew0KPiAtCWRybV9sb2NhbF9tYXBfdCBt YXA7DQo+IC0JY2hhciAqdmlydHVhbF9zdGFydDsNCj4gLX0gZHJtX3ZpYV9yaW5nX2J1ZmZl cl90Ow0KPiAtDQo+IC10eXBlZGVmIHVpbnQzMl90IG1hc2thcnJheV90WzVdOw0KPiAtDQo+ IC10eXBlZGVmIHN0cnVjdCBkcm1fdmlhX2lycSB7DQo+IC0JYXRvbWljX3QgaXJxX3JlY2Vp dmVkOw0KPiAtCXVpbnQzMl90IHBlbmRpbmdfbWFzazsNCj4gLQl1aW50MzJfdCBlbmFibGVf bWFzazsNCj4gLQl3YWl0X3F1ZXVlX2hlYWRfdCBpcnFfcXVldWU7DQo+IC19IGRybV92aWFf aXJxX3Q7DQo+IC0NCj4gLXR5cGVkZWYgc3RydWN0IGRybV92aWFfcHJpdmF0ZSB7DQo+IC0J ZHJtX3ZpYV9zYXJlYV90ICpzYXJlYV9wcml2Ow0KPiAtCWRybV9sb2NhbF9tYXBfdCAqc2Fy ZWE7DQo+IC0JZHJtX2xvY2FsX21hcF90ICpmYjsNCj4gLQlkcm1fbG9jYWxfbWFwX3QgKm1t aW87DQo+IC0JdW5zaWduZWQgbG9uZyBhZ3BBZGRyOw0KPiAtCXdhaXRfcXVldWVfaGVhZF90 IGRlY29kZXJfcXVldWVbVklBX05SX1hWTUNfTE9DS1NdOw0KPiAtCWNoYXIgKmRtYV9wdHI7 DQo+IC0JdW5zaWduZWQgaW50IGRtYV9sb3c7DQo+IC0JdW5zaWduZWQgaW50IGRtYV9oaWdo Ow0KPiAtCXVuc2lnbmVkIGludCBkbWFfb2Zmc2V0Ow0KPiAtCXVpbnQzMl90IGRtYV93cmFw Ow0KPiAtCXZvbGF0aWxlIHVpbnQzMl90ICpsYXN0X3BhdXNlX3B0cjsNCj4gLQl2b2xhdGls ZSB1aW50MzJfdCAqaHdfYWRkcl9wdHI7DQo+IC0JZHJtX3ZpYV9yaW5nX2J1ZmZlcl90IHJp bmc7DQo+IC0Ja3RpbWVfdCBsYXN0X3ZibGFuazsNCj4gLQlpbnQgbGFzdF92YmxhbmtfdmFs aWQ7DQo+IC0Ja3RpbWVfdCBuc2VjX3Blcl92Ymxhbms7DQo+IC0JYXRvbWljX3QgdmJsX3Jl Y2VpdmVkOw0KPiAtCWRybV92aWFfc3RhdGVfdCBoY19zdGF0ZTsNCj4gLQljaGFyIHBjaV9i dWZbVklBX1BDSV9CVUZfU0laRV07DQo+IC0JY29uc3QgdWludDMyX3QgKmZpcmVfb2Zmc2V0 c1tWSUFfRklSRV9CVUZfU0laRV07DQo+IC0JdWludDMyX3QgbnVtX2ZpcmVfb2Zmc2V0czsN Cj4gLQlpbnQgY2hpcHNldDsNCj4gLQlkcm1fdmlhX2lycV90IHZpYV9pcnFzW1ZJQV9OVU1f SVJRU107DQo+IC0JdW5zaWduZWQgbnVtX2lycXM7DQo+IC0JbWFza2FycmF5X3QgKmlycV9t YXNrczsNCj4gLQl1aW50MzJfdCBpcnFfZW5hYmxlX21hc2s7DQo+IC0JdWludDMyX3QgaXJx X3BlbmRpbmdfbWFzazsNCj4gLQlpbnQgKmlycV9tYXA7DQo+IC0JdW5zaWduZWQgaW50IGlk bGVfZmF1bHQ7DQo+IC0JaW50IHZyYW1faW5pdGlhbGl6ZWQ7DQo+IC0Jc3RydWN0IGRybV9t bSB2cmFtX21tOw0KPiAtCWludCBhZ3BfaW5pdGlhbGl6ZWQ7DQo+IC0Jc3RydWN0IGRybV9t bSBhZ3BfbW07DQo+IC0JLyoqIE1hcHBpbmcgb2YgdXNlcnNwYWNlIGtleXMgdG8gbW0gb2Jq ZWN0cyAqLw0KPiAtCXN0cnVjdCBpZHIgb2JqZWN0X2lkcjsNCj4gLQl1bnNpZ25lZCBsb25n IHZyYW1fb2Zmc2V0Ow0KPiAtCXVuc2lnbmVkIGxvbmcgYWdwX29mZnNldDsNCj4gLQlkcm1f dmlhX2JsaXRxX3QgYmxpdF9xdWV1ZXNbVklBX05VTV9CTElUX0VOR0lORVNdOw0KPiAtCXVp bnQzMl90IGRtYV9kaWZmOw0KPiAtfSBkcm1fdmlhX3ByaXZhdGVfdDsNCj4gLQ0KPiAtc3Ry dWN0IHZpYV9maWxlX3ByaXZhdGUgew0KPiAtCXN0cnVjdCBsaXN0X2hlYWQgb2JqX2xpc3Q7 DQo+IC19Ow0KPiAtDQo+IC1lbnVtIHZpYV9mYW1pbHkgew0KPiAtICBWSUFfT1RIRVIgPSAw LCAgICAgLyogQmFzZWxpbmUgKi8NCj4gLSAgVklBX1BST19HUk9VUF9BLCAgIC8qIEFub3Ro ZXIgdmlkZW8gZW5naW5lIGFuZCBETUEgY29tbWFuZHMgKi8NCj4gLSAgVklBX0RYOV8wICAg ICAgICAgIC8qIFNhbWUgdmlkZW8gYXMgcHJvX2dyb3VwX2EsIGJ1dCAzRCBpcyB1bnN1cHBv cnRlZCAqLw0KPiAtfTsNCj4gLQ0KPiAtLyogVklBIE1NSU8gcmVnaXN0ZXIgYWNjZXNzICov DQo+IC1zdGF0aWMgaW5saW5lIHUzMiB2aWFfcmVhZChzdHJ1Y3QgZHJtX3ZpYV9wcml2YXRl ICpkZXZfcHJpdiwgdTMyIHJlZykNCj4gLXsNCj4gLQlyZXR1cm4gcmVhZGwoKHZvaWQgX19p b21lbSAqKShkZXZfcHJpdi0+bW1pby0+aGFuZGxlICsgcmVnKSk7DQo+IC19DQo+IC0NCj4g LXN0YXRpYyBpbmxpbmUgdm9pZCB2aWFfd3JpdGUoc3RydWN0IGRybV92aWFfcHJpdmF0ZSAq ZGV2X3ByaXYsIHUzMiByZWcsDQo+IC0JCQkgICAgIHUzMiB2YWwpDQo+IC17DQo+IC0Jd3Jp dGVsKHZhbCwgKHZvaWQgX19pb21lbSAqKShkZXZfcHJpdi0+bW1pby0+aGFuZGxlICsgcmVn KSk7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyBpbmxpbmUgdm9pZCB2aWFfd3JpdGU4KHN0cnVj dCBkcm1fdmlhX3ByaXZhdGUgKmRldl9wcml2LCB1MzIgcmVnLA0KPiAtCQkJICAgICAgdTMy IHZhbCkNCj4gLXsNCj4gLQl3cml0ZWIodmFsLCAodm9pZCBfX2lvbWVtICopKGRldl9wcml2 LT5tbWlvLT5oYW5kbGUgKyByZWcpKTsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIGlubGluZSB2 b2lkIHZpYV93cml0ZThfbWFzayhzdHJ1Y3QgZHJtX3ZpYV9wcml2YXRlICpkZXZfcHJpdiwN Cj4gLQkJCQkgICB1MzIgcmVnLCB1MzIgbWFzaywgdTMyIHZhbCkNCj4gLXsNCj4gLQl1MzIg dG1wOw0KPiAtDQo+IC0JdG1wID0gcmVhZGIoKHZvaWQgX19pb21lbSAqKShkZXZfcHJpdi0+ bW1pby0+aGFuZGxlICsgcmVnKSk7DQo+IC0JdG1wID0gKHRtcCAmIH5tYXNrKSB8ICh2YWwg JiBtYXNrKTsNCj4gLQl3cml0ZWIodG1wLCAodm9pZCBfX2lvbWVtICopKGRldl9wcml2LT5t bWlvLT5oYW5kbGUgKyByZWcpKTsNCj4gLX0NCj4gLQ0KPiAtLyoNCj4gLSAqIFBvbGwgaW4g YSBsb29wIHdhaXRpbmcgZm9yICdjb250aWRpdGlvbicgdG8gYmUgdHJ1ZS4NCj4gLSAqIE5v dGU6IEEgZGlyZWN0IHJlcGxhY2VtZW50IHdpdGggd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxl X3RpbWVvdXQoKQ0KPiAtICogICAgICAgd2lsbCBub3Qgd29yayB1bmxlc3MgZHJpdmVyIGlz IHVwZGF0ZWQgdG8gZW1pdCB3YWtlX3VwKCkNCj4gLSAqICAgICAgIGluIHJlbGV2YW50IHBs YWNlcyB0aGF0IGNhbiBpbXBhY3QgdGhlICdjb25kaXRpb24nDQo+IC0gKg0KPiAtICogUmV0 dXJuczoNCj4gLSAqICAgcmV0IGtlZXBzIGN1cnJlbnQgdmFsdWUgaWYgJ2NvbmRpdGlvbicg YmVjb21lcyB0cnVlDQo+IC0gKiAgIHJldCA9IC1CVVNZIGlmIHRpbWVvdXQgaGFwcGVucw0K PiAtICogICByZXQgPSAtRUlOVFIgaWYgYSBzaWduYWwgaW50ZXJydXB0ZWQgdGhlIHdhaXRp bmcgcGVyaW9kDQo+IC0gKi8NCj4gLSNkZWZpbmUgVklBX1dBSVRfT04oIHJldCwgcXVldWUs IHRpbWVvdXQsIGNvbmRpdGlvbiApCQlcDQo+IC1kbyB7CQkJCQkJCQlcDQo+IC0JREVDTEFS RV9XQUlUUVVFVUUoZW50cnksIGN1cnJlbnQpOwkJCVwNCj4gLQl1bnNpZ25lZCBsb25nIGVu ZCA9IGppZmZpZXMgKyAodGltZW91dCk7CQlcDQo+IC0JYWRkX3dhaXRfcXVldWUoJihxdWV1 ZSksICZlbnRyeSk7CQkJXA0KPiAtCQkJCQkJCQlcDQo+IC0JZm9yICg7OykgewkJCQkJCVwN Cj4gLQkJX19zZXRfY3VycmVudF9zdGF0ZShUQVNLX0lOVEVSUlVQVElCTEUpOwlcDQo+IC0J CWlmIChjb25kaXRpb24pCQkJCQlcDQo+IC0JCQlicmVhazsJCQkJCVwNCj4gLQkJaWYgKHRp bWVfYWZ0ZXJfZXEoamlmZmllcywgZW5kKSkgewkJXA0KPiAtCQkJcmV0ID0gLUVCVVNZOwkJ CQlcDQo+IC0JCQlicmVhazsJCQkJCVwNCj4gLQkJfQkJCQkJCVwNCj4gLQkJc2NoZWR1bGVf dGltZW91dCgoSFovMTAwID4gMSkgPyBIWi8xMDAgOiAxKTsJXA0KPiAtCQlpZiAoc2lnbmFs X3BlbmRpbmcoY3VycmVudCkpIHsJCQlcDQo+IC0JCQlyZXQgPSAtRUlOVFI7CQkJCVwNCj4g LQkJCWJyZWFrOwkJCQkJXA0KPiAtCQl9CQkJCQkJXA0KPiAtCX0JCQkJCQkJXA0KPiAtCV9f c2V0X2N1cnJlbnRfc3RhdGUoVEFTS19SVU5OSU5HKTsJCQlcDQo+IC0JcmVtb3ZlX3dhaXRf cXVldWUoJihxdWV1ZSksICZlbnRyeSk7CQkJXA0KPiAtfSB3aGlsZSAoMCkNCj4gLQ0KPiAt ZXh0ZXJuIGNvbnN0IHN0cnVjdCBkcm1faW9jdGxfZGVzYyB2aWFfaW9jdGxzW107DQo+IC1l eHRlcm4gaW50IHZpYV9tYXhfaW9jdGw7DQo+IC0NCj4gLWV4dGVybiBpbnQgdmlhX2ZiX2lu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxl ICpmaWxlX3ByaXYpOw0KPiAtZXh0ZXJuIGludCB2aWFfbWVtX2FsbG9jKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsN Cj4gLWV4dGVybiBpbnQgdmlhX21lbV9mcmVlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZv aWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsNCj4gLWV4dGVybiBpbnQg dmlhX2FncF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVj dCBkcm1fZmlsZSAqZmlsZV9wcml2KTsNCj4gLWV4dGVybiBpbnQgdmlhX21hcF9pbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmls ZV9wcml2KTsNCj4gLWV4dGVybiBpbnQgdmlhX2RlY29kZXJfZnV0ZXgoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOw0K PiAtZXh0ZXJuIGludCB2aWFfd2FpdF9pcnEoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9p ZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOw0KPiAtZXh0ZXJuIGludCB2 aWFfZG1hX2JsaXRfc3luYyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLCBz dHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7DQo+IC1leHRlcm4gaW50IHZpYV9kbWFfYmxp dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUg KmZpbGVfcHJpdik7DQo+IC0NCj4gLWV4dGVybiBpbnQgdmlhX2RyaXZlcl9sb2FkKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgY2hpcHNldCk7DQo+IC1leHRlcm4g dm9pZCB2aWFfZHJpdmVyX3VubG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsNCj4gLQ0K PiAtZXh0ZXJuIGludCB2aWFfaW5pdF9jb250ZXh0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IGludCBjb250ZXh0KTsNCj4gLWV4dGVybiBpbnQgdmlhX2ZpbmFsX2NvbnRleHQoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgaW50IGNvbnRleHQpOw0KPiAtDQo+IC1leHRlcm4gaW50IHZp YV9kb19jbGVhbnVwX21hcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsNCj4gLWV4dGVybiB1 MzIgdmlhX2dldF92YmxhbmtfY291bnRlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNp Z25lZCBpbnQgcGlwZSk7DQo+IC1leHRlcm4gaW50IHZpYV9lbmFibGVfdmJsYW5rKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTsNCj4gLWV4dGVybiB2b2lk IHZpYV9kaXNhYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBp bnQgcGlwZSk7DQo+IC0NCj4gLWV4dGVybiBpcnFyZXR1cm5fdCB2aWFfZHJpdmVyX2lycV9o YW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZyk7DQo+IC1leHRlcm4gdm9pZCB2aWFfZHJpdmVy X2lycV9wcmVpbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOw0KPiAtZXh0ZXJuIGlu dCB2aWFfZHJpdmVyX2lycV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsN Cj4gLWV4dGVybiB2b2lkIHZpYV9kcml2ZXJfaXJxX3VuaW5zdGFsbChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KTsNCj4gLQ0KPiAtZXh0ZXJuIGludCB2aWFfZG1hX2NsZWFudXAoc3RydWN0 IGRybV9kZXZpY2UgKmRldik7DQo+IC1leHRlcm4gdm9pZCB2aWFfaW5pdF9jb21tYW5kX3Zl cmlmaWVyKHZvaWQpOw0KPiAtZXh0ZXJuIGludCB2aWFfZHJpdmVyX2RtYV9xdWllc2NlbnQo c3RydWN0IGRybV9kZXZpY2UgKmRldik7DQo+IC1leHRlcm4gdm9pZCB2aWFfaW5pdF9mdXRl eChkcm1fdmlhX3ByaXZhdGVfdCAqZGV2X3ByaXYpOw0KPiAtZXh0ZXJuIHZvaWQgdmlhX2Ns ZWFudXBfZnV0ZXgoZHJtX3ZpYV9wcml2YXRlX3QgKmRldl9wcml2KTsNCj4gLWV4dGVybiB2 b2lkIHZpYV9yZWxlYXNlX2Z1dGV4KGRybV92aWFfcHJpdmF0ZV90ICpkZXZfcHJpdiwgaW50 IGNvbnRleHQpOw0KPiAtDQo+IC1leHRlcm4gdm9pZCB2aWFfcmVjbGFpbV9idWZmZXJzX2xv Y2tlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LA0KPiAtCQkJCSAgICAgICBzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGVfcHJpdik7DQo+IC1leHRlcm4gdm9pZCB2aWFfbGFzdGNsb3NlKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpOw0KPiAtDQo+IC1leHRlcm4gdm9pZCB2aWFfZG1hYmxpdF9o YW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBlbmdpbmUsIGludCBmcm9tX2ly cSk7DQo+IC1leHRlcm4gdm9pZCB2aWFfaW5pdF9kbWFibGl0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpOw0KPiAtDQo+IC0jZW5kaWYNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS92aWEvdmlhX2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL3ZpYS92aWFfaXJxLmMNCj4gZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IGZhZWFlNWQ4ODFmYi4uMDAwMDAwMDAw MDAwDQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92aWEvdmlhX2lycS5jDQo+ICsrKyAvZGV2 L251bGwNCj4gQEAgLTEsMzg4ICswLDAgQEANCj4gLS8qIHZpYV9pcnEuYw0KPiAtICoNCj4g LSAqIENvcHlyaWdodCAyMDA0IEJFQU0gTHRkLg0KPiAtICogQ29weXJpZ2h0IDIwMDIgVHVu Z3N0ZW4gR3JhcGhpY3MsIEluYy4NCj4gLSAqIENvcHlyaWdodCAyMDA1IFRob21hcyBIZWxs c3Ryb20uDQo+IC0gKiBBbGwgUmlnaHRzIFJlc2VydmVkLg0KPiAtICoNCj4gLSAqIFBlcm1p c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29u IG9idGFpbmluZyBhDQo+IC0gKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0 ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLA0KPiAtICogdG8gZGVh bCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhv dXQgbGltaXRhdGlvbg0KPiAtICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwg bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsDQo+IC0gKiBhbmQvb3Ig c2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8g d2hvbSB0aGUNCj4gLSAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj dCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQo+IC0gKg0KPiAtICogVGhlIGFib3Zl IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGlu ZyB0aGUgbmV4dA0KPiAtICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwg Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQ0KPiAtICogU29mdHdhcmUu DQo+IC0gKg0KPiAtICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCj4gLSAqIElNUExJRUQsIElO Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB QklMSVRZLA0KPiAtICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5P TklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMDQo+IC0gKiBCRUFNIExURCwgVFVO R1NURU4gR1JBUEhJQ1MgIEFORC9PUiBJVFMgU1VQUExJRVJTIEJFIExJQUJMRSBGT1IgQU5Z IENMQUlNLA0KPiAtICogREFNQUdFUyBPUg0KPiAtICogT1RIRVIgTElBQklMSVRZLCBXSEVU SEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsDQo+IC0g KiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVINCj4gLSAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FS RS4NCj4gLSAqDQo+IC0gKiBBdXRob3JzOg0KPiAtICogICAgVGVycnkgQmFybmFieSA8dGVy cnkxQGJlYW0ubHRkLnVrPg0KPiAtICogICAgS2VpdGggV2hpdHdlbGwgPGtlaXRoQHR1bmdz dGVuZ3JhcGhpY3MuY29tPg0KPiAtICogICAgVGhvbWFzIEhlbGxzdHJvbSA8dW5pY2hyb21l QHNoaXBtYWlsLm9yZz4NCj4gLSAqDQo+IC0gKiBUaGlzIGNvZGUgcHJvdmlkZXMgc3RhbmRh cmQgRFJNIGFjY2VzcyB0byB0aGUgVmlhIFVuaWNocm9tZSAvIFBybyBWZXJ0aWNhbCBibGFu aw0KPiAtICogaW50ZXJydXB0LCBhcyB3ZWxsIGFzIGFuIGluZnJhc3RydWN0dXJlIHRvIGhh bmRsZSBvdGhlciBpbnRlcnJ1cHRzIG9mIHRoZSBjaGlwLg0KPiAtICogVGhlIHJlZnJlc2gg cmF0ZSBpcyBhbHNvIGNhbGN1bGF0ZWQgZm9yIHZpZGVvIHBsYXliYWNrIHN5bmMgcHVycG9z ZXMuDQo+IC0gKi8NCj4gLQ0KPiAtI2luY2x1ZGUgPGRybS9kcm1fZGV2aWNlLmg+DQo+IC0j aW5jbHVkZSA8ZHJtL2RybV92YmxhbmsuaD4NCj4gLSNpbmNsdWRlIDxkcm0vdmlhX2RybS5o Pg0KPiAtDQo+IC0jaW5jbHVkZSAidmlhX2Rydi5oIg0KPiAtDQo+IC0jZGVmaW5lIFZJQV9S RUdfSU5URVJSVVBUICAgICAgIDB4MjAwDQo+IC0NCj4gLS8qIFZJQV9SRUdfSU5URVJSVVBU ICovDQo+IC0jZGVmaW5lIFZJQV9JUlFfR0xPQkFMCSAgKDEgPDwgMzEpDQo+IC0jZGVmaW5l IFZJQV9JUlFfVkJMQU5LX0VOQUJMRSAgICgxIDw8IDE5KQ0KPiAtI2RlZmluZSBWSUFfSVJR X1ZCTEFOS19QRU5ESU5HICAoMSA8PCAzKQ0KPiAtI2RlZmluZSBWSUFfSVJRX0hRVjBfRU5B QkxFICAgICAoMSA8PCAxMSkNCj4gLSNkZWZpbmUgVklBX0lSUV9IUVYxX0VOQUJMRSAgICAg KDEgPDwgMjUpDQo+IC0jZGVmaW5lIFZJQV9JUlFfSFFWMF9QRU5ESU5HICAgICgxIDw8IDkp DQo+IC0jZGVmaW5lIFZJQV9JUlFfSFFWMV9QRU5ESU5HICAgICgxIDw8IDEwKQ0KPiAtI2Rl ZmluZSBWSUFfSVJRX0RNQTBfRERfRU5BQkxFICAoMSA8PCAyMCkNCj4gLSNkZWZpbmUgVklB X0lSUV9ETUEwX1REX0VOQUJMRSAgKDEgPDwgMjEpDQo+IC0jZGVmaW5lIFZJQV9JUlFfRE1B MV9ERF9FTkFCTEUgICgxIDw8IDIyKQ0KPiAtI2RlZmluZSBWSUFfSVJRX0RNQTFfVERfRU5B QkxFICAoMSA8PCAyMykNCj4gLSNkZWZpbmUgVklBX0lSUV9ETUEwX0REX1BFTkRJTkcgKDEg PDwgNCkNCj4gLSNkZWZpbmUgVklBX0lSUV9ETUEwX1REX1BFTkRJTkcgKDEgPDwgNSkNCj4g LSNkZWZpbmUgVklBX0lSUV9ETUExX0REX1BFTkRJTkcgKDEgPDwgNikNCj4gLSNkZWZpbmUg VklBX0lSUV9ETUExX1REX1BFTkRJTkcgKDEgPDwgNykNCj4gLQ0KPiAtDQo+IC0vKg0KPiAt ICogRGV2aWNlLXNwZWNpZmljIElSUXMgZ28gaGVyZS4gVGhpcyB0eXBlIG1pZ2h0IG5lZWQg dG8gYmUgZXh0ZW5kZWQgd2l0aA0KPiAtICogdGhlIHJlZ2lzdGVyIGlmIHRoZXJlIGFyZSBt dWx0aXBsZSBJUlEgY29udHJvbCByZWdpc3RlcnMuDQo+IC0gKiBDdXJyZW50bHkgd2UgYWN0 aXZhdGUgdGhlIEhRViBpbnRlcnJ1cHRzIG9mICBVbmljaHJvbWUgUHJvIGdyb3VwIEEuDQo+ IC0gKi8NCj4gLQ0KPiAtc3RhdGljIG1hc2thcnJheV90IHZpYV9wcm9fZ3JvdXBfYV9pcnFz W10gPSB7DQo+IC0Je1ZJQV9JUlFfSFFWMF9FTkFCTEUsIFZJQV9JUlFfSFFWMF9QRU5ESU5H LCAweDAwMDAwM0QwLCAweDAwMDA4MDEwLA0KPiAtCSAweDAwMDAwMDAwIH0sDQo+IC0Je1ZJ QV9JUlFfSFFWMV9FTkFCTEUsIFZJQV9JUlFfSFFWMV9QRU5ESU5HLCAweDAwMDAxM0QwLCAw eDAwMDA4MDEwLA0KPiAtCSAweDAwMDAwMDAwIH0sDQo+IC0Je1ZJQV9JUlFfRE1BMF9URF9F TkFCTEUsIFZJQV9JUlFfRE1BMF9URF9QRU5ESU5HLCBWSUFfUENJX0RNQV9DU1IwLA0KPiAt CSBWSUFfRE1BX0NTUl9UQSB8IFZJQV9ETUFfQ1NSX1RELCAweDAwMDAwMDA4fSwNCj4gLQl7 VklBX0lSUV9ETUExX1REX0VOQUJMRSwgVklBX0lSUV9ETUExX1REX1BFTkRJTkcsIFZJQV9Q Q0lfRE1BX0NTUjEsDQo+IC0JIFZJQV9ETUFfQ1NSX1RBIHwgVklBX0RNQV9DU1JfVEQsIDB4 MDAwMDAwMDh9LA0KPiAtfTsNCj4gLXN0YXRpYyBpbnQgdmlhX251bV9wcm9fZ3JvdXBfYSA9 IEFSUkFZX1NJWkUodmlhX3Byb19ncm91cF9hX2lycXMpOw0KPiAtc3RhdGljIGludCB2aWFf aXJxbWFwX3Byb19ncm91cF9hW10gPSB7MCwgMSwgLTEsIDIsIC0xLCAzfTsNCj4gLQ0KPiAt c3RhdGljIG1hc2thcnJheV90IHZpYV91bmljaHJvbWVfaXJxc1tdID0gew0KPiAtCXtWSUFf SVJRX0RNQTBfVERfRU5BQkxFLCBWSUFfSVJRX0RNQTBfVERfUEVORElORywgVklBX1BDSV9E TUFfQ1NSMCwNCj4gLQkgVklBX0RNQV9DU1JfVEEgfCBWSUFfRE1BX0NTUl9URCwgMHgwMDAw MDAwOH0sDQo+IC0Je1ZJQV9JUlFfRE1BMV9URF9FTkFCTEUsIFZJQV9JUlFfRE1BMV9URF9Q RU5ESU5HLCBWSUFfUENJX0RNQV9DU1IxLA0KPiAtCSBWSUFfRE1BX0NTUl9UQSB8IFZJQV9E TUFfQ1NSX1RELCAweDAwMDAwMDA4fQ0KPiAtfTsNCj4gLXN0YXRpYyBpbnQgdmlhX251bV91 bmljaHJvbWUgPSBBUlJBWV9TSVpFKHZpYV91bmljaHJvbWVfaXJxcyk7DQo+IC1zdGF0aWMg aW50IHZpYV9pcnFtYXBfdW5pY2hyb21lW10gPSB7LTEsIC0xLCAtMSwgMCwgLTEsIDF9Ow0K PiAtDQo+IC0NCj4gLXUzMiB2aWFfZ2V0X3ZibGFua19jb3VudGVyKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKQ0KPiAtew0KPiAtCWRybV92aWFfcHJpdmF0 ZV90ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7DQo+IC0NCj4gLQlpZiAocGlwZSAh PSAwKQ0KPiAtCQlyZXR1cm4gMDsNCj4gLQ0KPiAtCXJldHVybiBhdG9taWNfcmVhZCgmZGV2 X3ByaXYtPnZibF9yZWNlaXZlZCk7DQo+IC19DQo+IC0NCj4gLWlycXJldHVybl90IHZpYV9k cml2ZXJfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQ0KPiAtew0KPiAtCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSAoc3RydWN0IGRybV9kZXZpY2UgKikgYXJnOw0KPiAtCWRy bV92aWFfcHJpdmF0ZV90ICpkZXZfcHJpdiA9IChkcm1fdmlhX3ByaXZhdGVfdCAqKSBkZXYt PmRldl9wcml2YXRlOw0KPiAtCXUzMiBzdGF0dXM7DQo+IC0JaW50IGhhbmRsZWQgPSAwOw0K PiAtCWt0aW1lX3QgY3VyX3ZibGFuazsNCj4gLQlkcm1fdmlhX2lycV90ICpjdXJfaXJxID0g ZGV2X3ByaXYtPnZpYV9pcnFzOw0KPiAtCWludCBpOw0KPiAtDQo+IC0Jc3RhdHVzID0gdmlh X3JlYWQoZGV2X3ByaXYsIFZJQV9SRUdfSU5URVJSVVBUKTsNCj4gLQlpZiAoc3RhdHVzICYg VklBX0lSUV9WQkxBTktfUEVORElORykgew0KPiAtCQlhdG9taWNfaW5jKCZkZXZfcHJpdi0+ dmJsX3JlY2VpdmVkKTsNCj4gLQkJaWYgKCEoYXRvbWljX3JlYWQoJmRldl9wcml2LT52Ymxf cmVjZWl2ZWQpICYgMHgwRikpIHsNCj4gLQkJCWN1cl92YmxhbmsgPSBrdGltZV9nZXQoKTsN Cj4gLQkJCWlmIChkZXZfcHJpdi0+bGFzdF92YmxhbmtfdmFsaWQpIHsNCj4gLQkJCQlkZXZf cHJpdi0+bnNlY19wZXJfdmJsYW5rID0NCj4gLQkJCQkJa3RpbWVfc3ViKGN1cl92Ymxhbmss DQo+IC0JCQkJCQlkZXZfcHJpdi0+bGFzdF92YmxhbmspID4+IDQ7DQo+IC0JCQl9DQo+IC0J CQlkZXZfcHJpdi0+bGFzdF92YmxhbmsgPSBjdXJfdmJsYW5rOw0KPiAtCQkJZGV2X3ByaXYt Pmxhc3RfdmJsYW5rX3ZhbGlkID0gMTsNCj4gLQkJfQ0KPiAtCQlpZiAoIShhdG9taWNfcmVh ZCgmZGV2X3ByaXYtPnZibF9yZWNlaXZlZCkgJiAweEZGKSkgew0KPiAtCQkJRFJNX0RFQlVH KCJuc2VjIHBlciB2YmxhbmsgaXM6ICVsbHVcbiIsDQo+IC0JCQkJICBrdGltZV90b19ucyhk ZXZfcHJpdi0+bnNlY19wZXJfdmJsYW5rKSk7DQo+IC0JCX0NCj4gLQkJZHJtX2hhbmRsZV92 YmxhbmsoZGV2LCAwKTsNCj4gLQkJaGFuZGxlZCA9IDE7DQo+IC0JfQ0KPiAtDQo+IC0JZm9y IChpID0gMDsgaSA8IGRldl9wcml2LT5udW1faXJxczsgKytpKSB7DQo+IC0JCWlmIChzdGF0 dXMgJiBjdXJfaXJxLT5wZW5kaW5nX21hc2spIHsNCj4gLQkJCWF0b21pY19pbmMoJmN1cl9p cnEtPmlycV9yZWNlaXZlZCk7DQo+IC0JCQl3YWtlX3VwKCZjdXJfaXJxLT5pcnFfcXVldWUp Ow0KPiAtCQkJaGFuZGxlZCA9IDE7DQo+IC0JCQlpZiAoZGV2X3ByaXYtPmlycV9tYXBbZHJt X3ZpYV9pcnFfZG1hMF90ZF0gPT0gaSkNCj4gLQkJCQl2aWFfZG1hYmxpdF9oYW5kbGVyKGRl diwgMCwgMSk7DQo+IC0JCQllbHNlIGlmIChkZXZfcHJpdi0+aXJxX21hcFtkcm1fdmlhX2ly cV9kbWExX3RkXSA9PSBpKQ0KPiAtCQkJCXZpYV9kbWFibGl0X2hhbmRsZXIoZGV2LCAxLCAx KTsNCj4gLQkJfQ0KPiAtCQljdXJfaXJxKys7DQo+IC0JfQ0KPiAtDQo+IC0JLyogQWNrbm93 bGVkZ2UgaW50ZXJydXB0cyAqLw0KPiAtCXZpYV93cml0ZShkZXZfcHJpdiwgVklBX1JFR19J TlRFUlJVUFQsIHN0YXR1cyk7DQo+IC0NCj4gLQ0KPiAtCWlmIChoYW5kbGVkKQ0KPiAtCQly ZXR1cm4gSVJRX0hBTkRMRUQ7DQo+IC0JZWxzZQ0KPiAtCQlyZXR1cm4gSVJRX05PTkU7DQo+ IC19DQo+IC0NCj4gLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgdmlhZHJ2X2Fja25vd2xlZGdl X2lycXMoZHJtX3ZpYV9wcml2YXRlX3QgKmRldl9wcml2KQ0KPiAtew0KPiAtCXUzMiBzdGF0 dXM7DQo+IC0NCj4gLQlpZiAoZGV2X3ByaXYpIHsNCj4gLQkJLyogQWNrbm93bGVkZ2UgaW50 ZXJydXB0cyAqLw0KPiAtCQlzdGF0dXMgPSB2aWFfcmVhZChkZXZfcHJpdiwgVklBX1JFR19J TlRFUlJVUFQpOw0KPiAtCQl2aWFfd3JpdGUoZGV2X3ByaXYsIFZJQV9SRUdfSU5URVJSVVBU LCBzdGF0dXMgfA0KPiAtCQkJICBkZXZfcHJpdi0+aXJxX3BlbmRpbmdfbWFzayk7DQo+IC0J fQ0KPiAtfQ0KPiAtDQo+IC1pbnQgdmlhX2VuYWJsZV92Ymxhbmsoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpDQo+IC17DQo+IC0JZHJtX3ZpYV9wcml2YXRl X3QgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsNCj4gLQl1MzIgc3RhdHVzOw0KPiAt DQo+IC0JaWYgKHBpcGUgIT0gMCkgew0KPiAtCQlEUk1fRVJST1IoIiVzOiAgYmFkIGNydGMg JXVcbiIsIF9fZnVuY19fLCBwaXBlKTsNCj4gLQkJcmV0dXJuIC1FSU5WQUw7DQo+IC0JfQ0K PiAtDQo+IC0Jc3RhdHVzID0gdmlhX3JlYWQoZGV2X3ByaXYsIFZJQV9SRUdfSU5URVJSVVBU KTsNCj4gLQl2aWFfd3JpdGUoZGV2X3ByaXYsIFZJQV9SRUdfSU5URVJSVVBULCBzdGF0dXMg fCBWSUFfSVJRX1ZCTEFOS19FTkFCTEUpOw0KPiAtDQo+IC0JdmlhX3dyaXRlOChkZXZfcHJp diwgMHg4M2Q0LCAweDExKTsNCj4gLQl2aWFfd3JpdGU4X21hc2soZGV2X3ByaXYsIDB4ODNk NSwgMHgzMCwgMHgzMCk7DQo+IC0NCj4gLQlyZXR1cm4gMDsNCj4gLX0NCj4gLQ0KPiAtdm9p ZCB2aWFfZGlzYWJsZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQg aW50IHBpcGUpDQo+IC17DQo+IC0JZHJtX3ZpYV9wcml2YXRlX3QgKmRldl9wcml2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsNCj4gLQl1MzIgc3RhdHVzOw0KPiAtDQo+IC0Jc3RhdHVzID0gdmlh X3JlYWQoZGV2X3ByaXYsIFZJQV9SRUdfSU5URVJSVVBUKTsNCj4gLQl2aWFfd3JpdGUoZGV2 X3ByaXYsIFZJQV9SRUdfSU5URVJSVVBULCBzdGF0dXMgJiB+VklBX0lSUV9WQkxBTktfRU5B QkxFKTsNCj4gLQ0KPiAtCXZpYV93cml0ZTgoZGV2X3ByaXYsIDB4ODNkNCwgMHgxMSk7DQo+ IC0JdmlhX3dyaXRlOF9tYXNrKGRldl9wcml2LCAweDgzZDUsIDB4MzAsIDApOw0KPiAtDQo+ IC0JaWYgKHBpcGUgIT0gMCkNCj4gLQkJRFJNX0VSUk9SKCIlczogIGJhZCBjcnRjICV1XG4i LCBfX2Z1bmNfXywgcGlwZSk7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyBpbnQNCj4gLXZpYV9k cml2ZXJfaXJxX3dhaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IGly cSwgaW50IGZvcmNlX3NlcXVlbmNlLA0KPiAtCQkgICAgdW5zaWduZWQgaW50ICpzZXF1ZW5j ZSkNCj4gLXsNCj4gLQlkcm1fdmlhX3ByaXZhdGVfdCAqZGV2X3ByaXYgPSAoZHJtX3ZpYV9w cml2YXRlX3QgKikgZGV2LT5kZXZfcHJpdmF0ZTsNCj4gLQl1bnNpZ25lZCBpbnQgY3VyX2ly cV9zZXF1ZW5jZTsNCj4gLQlkcm1fdmlhX2lycV90ICpjdXJfaXJxOw0KPiAtCWludCByZXQg PSAwOw0KPiAtCW1hc2thcnJheV90ICptYXNrczsNCj4gLQlpbnQgcmVhbF9pcnE7DQo+IC0N Cj4gLQlEUk1fREVCVUcoIlxuIik7DQo+IC0NCj4gLQlpZiAoIWRldl9wcml2KSB7DQo+IC0J CURSTV9FUlJPUigiY2FsbGVkIHdpdGggbm8gaW5pdGlhbGl6YXRpb25cbiIpOw0KPiAtCQly ZXR1cm4gLUVJTlZBTDsNCj4gLQl9DQo+IC0NCj4gLQlpZiAoaXJxID49IGRybV92aWFfaXJx X251bSkgew0KPiAtCQlEUk1fRVJST1IoIlRyeWluZyB0byB3YWl0IG9uIHVua25vd24gaXJx ICVkXG4iLCBpcnEpOw0KPiAtCQlyZXR1cm4gLUVJTlZBTDsNCj4gLQl9DQo+IC0NCj4gLQly ZWFsX2lycSA9IGRldl9wcml2LT5pcnFfbWFwW2lycV07DQo+IC0NCj4gLQlpZiAocmVhbF9p cnEgPCAwKSB7DQo+IC0JCURSTV9FUlJPUigiVmlkZW8gSVJRICVkIG5vdCBhdmFpbGFibGUg b24gdGhpcyBoYXJkd2FyZS5cbiIsDQo+IC0JCQkgIGlycSk7DQo+IC0JCXJldHVybiAtRUlO VkFMOw0KPiAtCX0NCj4gLQ0KPiAtCW1hc2tzID0gZGV2X3ByaXYtPmlycV9tYXNrczsNCj4g LQljdXJfaXJxID0gZGV2X3ByaXYtPnZpYV9pcnFzICsgcmVhbF9pcnE7DQo+IC0NCj4gLQlp ZiAobWFza3NbcmVhbF9pcnFdWzJdICYmICFmb3JjZV9zZXF1ZW5jZSkgew0KPiAtCQlWSUFf V0FJVF9PTihyZXQsIGN1cl9pcnEtPmlycV9xdWV1ZSwgMyAqIEhaLA0KPiAtCQkJICAgICgo dmlhX3JlYWQoZGV2X3ByaXYsIG1hc2tzW2lycV1bMl0pICYgbWFza3NbaXJxXVszXSkgPT0N Cj4gLQkJCSAgICAgbWFza3NbaXJxXVs0XSkpOw0KPiAtCQljdXJfaXJxX3NlcXVlbmNlID0g YXRvbWljX3JlYWQoJmN1cl9pcnEtPmlycV9yZWNlaXZlZCk7DQo+IC0JfSBlbHNlIHsNCj4g LQkJVklBX1dBSVRfT04ocmV0LCBjdXJfaXJxLT5pcnFfcXVldWUsIDMgKiBIWiwNCj4gLQkJ CSAgICAoKChjdXJfaXJxX3NlcXVlbmNlID0NCj4gLQkJCSAgICAgICBhdG9taWNfcmVhZCgm Y3VyX2lycS0+aXJxX3JlY2VpdmVkKSkgLQ0KPiAtCQkJICAgICAgKnNlcXVlbmNlKSA8PSAo MSA8PCAyMykpKTsNCj4gLQl9DQo+IC0JKnNlcXVlbmNlID0gY3VyX2lycV9zZXF1ZW5jZTsN Cj4gLQlyZXR1cm4gcmV0Ow0KPiAtfQ0KPiAtDQo+IC0NCj4gLS8qDQo+IC0gKiBkcm1fZG1h LmggaG9va3MNCj4gLSAqLw0KPiAtDQo+IC12b2lkIHZpYV9kcml2ZXJfaXJxX3ByZWluc3Rh bGwoc3RydWN0IGRybV9kZXZpY2UgKmRldikNCj4gLXsNCj4gLQlkcm1fdmlhX3ByaXZhdGVf dCAqZGV2X3ByaXYgPSAoZHJtX3ZpYV9wcml2YXRlX3QgKikgZGV2LT5kZXZfcHJpdmF0ZTsN Cj4gLQl1MzIgc3RhdHVzOw0KPiAtCWRybV92aWFfaXJxX3QgKmN1cl9pcnE7DQo+IC0JaW50 IGk7DQo+IC0NCj4gLQlEUk1fREVCVUcoImRldl9wcml2OiAlcFxuIiwgZGV2X3ByaXYpOw0K PiAtCWlmIChkZXZfcHJpdikgew0KPiAtCQljdXJfaXJxID0gZGV2X3ByaXYtPnZpYV9pcnFz Ow0KPiAtDQo+IC0JCWRldl9wcml2LT5pcnFfZW5hYmxlX21hc2sgPSBWSUFfSVJRX1ZCTEFO S19FTkFCTEU7DQo+IC0JCWRldl9wcml2LT5pcnFfcGVuZGluZ19tYXNrID0gVklBX0lSUV9W QkxBTktfUEVORElORzsNCj4gLQ0KPiAtCQlpZiAoZGV2X3ByaXYtPmNoaXBzZXQgPT0gVklB X1BST19HUk9VUF9BIHx8DQo+IC0JCSAgICBkZXZfcHJpdi0+Y2hpcHNldCA9PSBWSUFfRFg5 XzApIHsNCj4gLQkJCWRldl9wcml2LT5pcnFfbWFza3MgPSB2aWFfcHJvX2dyb3VwX2FfaXJx czsNCj4gLQkJCWRldl9wcml2LT5udW1faXJxcyA9IHZpYV9udW1fcHJvX2dyb3VwX2E7DQo+ IC0JCQlkZXZfcHJpdi0+aXJxX21hcCA9IHZpYV9pcnFtYXBfcHJvX2dyb3VwX2E7DQo+IC0J CX0gZWxzZSB7DQo+IC0JCQlkZXZfcHJpdi0+aXJxX21hc2tzID0gdmlhX3VuaWNocm9tZV9p cnFzOw0KPiAtCQkJZGV2X3ByaXYtPm51bV9pcnFzID0gdmlhX251bV91bmljaHJvbWU7DQo+ IC0JCQlkZXZfcHJpdi0+aXJxX21hcCA9IHZpYV9pcnFtYXBfdW5pY2hyb21lOw0KPiAtCQl9 DQo+IC0NCj4gLQkJZm9yIChpID0gMDsgaSA8IGRldl9wcml2LT5udW1faXJxczsgKytpKSB7 DQo+IC0JCQlhdG9taWNfc2V0KCZjdXJfaXJxLT5pcnFfcmVjZWl2ZWQsIDApOw0KPiAtCQkJ Y3VyX2lycS0+ZW5hYmxlX21hc2sgPSBkZXZfcHJpdi0+aXJxX21hc2tzW2ldWzBdOw0KPiAt CQkJY3VyX2lycS0+cGVuZGluZ19tYXNrID0gZGV2X3ByaXYtPmlycV9tYXNrc1tpXVsxXTsN Cj4gLQkJCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmN1cl9pcnEtPmlycV9xdWV1ZSk7DQo+IC0J CQlkZXZfcHJpdi0+aXJxX2VuYWJsZV9tYXNrIHw9IGN1cl9pcnEtPmVuYWJsZV9tYXNrOw0K PiAtCQkJZGV2X3ByaXYtPmlycV9wZW5kaW5nX21hc2sgfD0gY3VyX2lycS0+cGVuZGluZ19t YXNrOw0KPiAtCQkJY3VyX2lycSsrOw0KPiAtDQo+IC0JCQlEUk1fREVCVUcoIkluaXRpYWxp emluZyBJUlEgJWRcbiIsIGkpOw0KPiAtCQl9DQo+IC0NCj4gLQkJZGV2X3ByaXYtPmxhc3Rf dmJsYW5rX3ZhbGlkID0gMDsNCj4gLQ0KPiAtCQkvKiBDbGVhciBWU3luYyBpbnRlcnJ1cHQg cmVncyAqLw0KPiAtCQlzdGF0dXMgPSB2aWFfcmVhZChkZXZfcHJpdiwgVklBX1JFR19JTlRF UlJVUFQpOw0KPiAtCQl2aWFfd3JpdGUoZGV2X3ByaXYsIFZJQV9SRUdfSU5URVJSVVBULCBz dGF0dXMgJg0KPiAtCQkJICB+KGRldl9wcml2LT5pcnFfZW5hYmxlX21hc2spKTsNCj4gLQ0K PiAtCQkvKiBDbGVhciBiaXRzIGlmIHRoZXkncmUgYWxyZWFkeSBoaWdoICovDQo+IC0JCXZp YWRydl9hY2tub3dsZWRnZV9pcnFzKGRldl9wcml2KTsNCj4gLQl9DQo+IC19DQo+IC0NCj4g LWludCB2aWFfZHJpdmVyX2lycV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQ0KPiAtew0KPiAtCWRybV92aWFfcHJpdmF0ZV90ICpkZXZfcHJpdiA9IChkcm1fdmlhX3By aXZhdGVfdCAqKSBkZXYtPmRldl9wcml2YXRlOw0KPiAtCXUzMiBzdGF0dXM7DQo+IC0NCj4g LQlEUk1fREVCVUcoImZ1bjogJXNcbiIsIF9fZnVuY19fKTsNCj4gLQlpZiAoIWRldl9wcml2 KQ0KPiAtCQlyZXR1cm4gLUVJTlZBTDsNCj4gLQ0KPiAtCXN0YXR1cyA9IHZpYV9yZWFkKGRl dl9wcml2LCBWSUFfUkVHX0lOVEVSUlVQVCk7DQo+IC0JdmlhX3dyaXRlKGRldl9wcml2LCBW SUFfUkVHX0lOVEVSUlVQVCwgc3RhdHVzIHwgVklBX0lSUV9HTE9CQUwNCj4gLQkJICB8IGRl dl9wcml2LT5pcnFfZW5hYmxlX21hc2spOw0KPiAtDQo+IC0JLyogU29tZSBtYWdpYywgb2gg Zm9yIHNvbWUgZGF0YSBzaGVldHMgISAqLw0KPiAtCXZpYV93cml0ZTgoZGV2X3ByaXYsIDB4 ODNkNCwgMHgxMSk7DQo+IC0JdmlhX3dyaXRlOF9tYXNrKGRldl9wcml2LCAweDgzZDUsIDB4 MzAsIDB4MzApOw0KPiAtDQo+IC0JcmV0dXJuIDA7DQo+IC19DQo+IC0NCj4gLXZvaWQgdmlh X2RyaXZlcl9pcnFfdW5pbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpDQo+IC17DQo+ IC0JZHJtX3ZpYV9wcml2YXRlX3QgKmRldl9wcml2ID0gKGRybV92aWFfcHJpdmF0ZV90ICop IGRldi0+ZGV2X3ByaXZhdGU7DQo+IC0JdTMyIHN0YXR1czsNCj4gLQ0KPiAtCURSTV9ERUJV RygiXG4iKTsNCj4gLQlpZiAoZGV2X3ByaXYpIHsNCj4gLQ0KPiAtCQkvKiBTb21lIG1vcmUg bWFnaWMsIG9oIGZvciBzb21lIGRhdGEgc2hlZXRzICEgKi8NCj4gLQ0KPiAtCQl2aWFfd3Jp dGU4KGRldl9wcml2LCAweDgzZDQsIDB4MTEpOw0KPiAtCQl2aWFfd3JpdGU4X21hc2soZGV2 X3ByaXYsIDB4ODNkNSwgMHgzMCwgMCk7DQo+IC0NCj4gLQkJc3RhdHVzID0gdmlhX3JlYWQo ZGV2X3ByaXYsIFZJQV9SRUdfSU5URVJSVVBUKTsNCj4gLQkJdmlhX3dyaXRlKGRldl9wcml2 LCBWSUFfUkVHX0lOVEVSUlVQVCwgc3RhdHVzICYNCj4gLQkJCSAgfihWSUFfSVJRX1ZCTEFO S19FTkFCTEUgfCBkZXZfcHJpdi0+aXJxX2VuYWJsZV9tYXNrKSk7DQo+IC0JfQ0KPiAtfQ0K PiAtDQo+IC1pbnQgdmlhX3dhaXRfaXJxKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQ0KPiAtew0KPiAtCWRybV92aWFf aXJxd2FpdF90ICppcnF3YWl0ID0gZGF0YTsNCj4gLQlzdHJ1Y3QgdGltZXNwZWM2NCBub3c7 DQo+IC0JaW50IHJldCA9IDA7DQo+IC0JZHJtX3ZpYV9wcml2YXRlX3QgKmRldl9wcml2ID0g KGRybV92aWFfcHJpdmF0ZV90ICopIGRldi0+ZGV2X3ByaXZhdGU7DQo+IC0JZHJtX3ZpYV9p cnFfdCAqY3VyX2lycSA9IGRldl9wcml2LT52aWFfaXJxczsNCj4gLQlpbnQgZm9yY2Vfc2Vx dWVuY2U7DQo+IC0NCj4gLQlpZiAoaXJxd2FpdC0+cmVxdWVzdC5pcnEgPj0gZGV2X3ByaXYt Pm51bV9pcnFzKSB7DQo+IC0JCURSTV9FUlJPUigiVHJ5aW5nIHRvIHdhaXQgb24gdW5rbm93 biBpcnEgJWRcbiIsDQo+IC0JCQkgIGlycXdhaXQtPnJlcXVlc3QuaXJxKTsNCj4gLQkJcmV0 dXJuIC1FSU5WQUw7DQo+IC0JfQ0KPiAtDQo+IC0JY3VyX2lycSArPSBpcnF3YWl0LT5yZXF1 ZXN0LmlycTsNCj4gLQ0KPiAtCXN3aXRjaCAoaXJxd2FpdC0+cmVxdWVzdC50eXBlICYgflZJ QV9JUlFfRkxBR1NfTUFTSykgew0KPiAtCWNhc2UgVklBX0lSUV9SRUxBVElWRToNCj4gLQkJ aXJxd2FpdC0+cmVxdWVzdC5zZXF1ZW5jZSArPQ0KPiAtCQkJYXRvbWljX3JlYWQoJmN1cl9p cnEtPmlycV9yZWNlaXZlZCk7DQo+IC0JCWlycXdhaXQtPnJlcXVlc3QudHlwZSAmPSB+X0RS TV9WQkxBTktfUkVMQVRJVkU7DQo+IC0JCWJyZWFrOw0KPiAtCWNhc2UgVklBX0lSUV9BQlNP TFVURToNCj4gLQkJYnJlYWs7DQo+IC0JZGVmYXVsdDoNCj4gLQkJcmV0dXJuIC1FSU5WQUw7 DQo+IC0JfQ0KPiAtDQo+IC0JaWYgKGlycXdhaXQtPnJlcXVlc3QudHlwZSAmIFZJQV9JUlFf U0lHTkFMKSB7DQo+IC0JCURSTV9FUlJPUigiU2lnbmFscyBvbiBWaWEgSVJRcyBub3QgaW1w bGVtZW50ZWQgeWV0LlxuIik7DQo+IC0JCXJldHVybiAtRUlOVkFMOw0KPiAtCX0NCj4gLQ0K PiAtCWZvcmNlX3NlcXVlbmNlID0gKGlycXdhaXQtPnJlcXVlc3QudHlwZSAmIFZJQV9JUlFf Rk9SQ0VfU0VRVUVOQ0UpOw0KPiAtDQo+IC0JcmV0ID0gdmlhX2RyaXZlcl9pcnFfd2FpdChk ZXYsIGlycXdhaXQtPnJlcXVlc3QuaXJxLCBmb3JjZV9zZXF1ZW5jZSwNCj4gLQkJCQkgICZp cnF3YWl0LT5yZXF1ZXN0LnNlcXVlbmNlKTsNCj4gLQlrdGltZV9nZXRfdHM2NCgmbm93KTsN Cj4gLQlpcnF3YWl0LT5yZXBseS50dmFsX3NlYyA9IG5vdy50dl9zZWM7DQo+IC0JaXJxd2Fp dC0+cmVwbHkudHZhbF91c2VjID0gbm93LnR2X25zZWMgLyBOU0VDX1BFUl9VU0VDOw0KPiAt DQo+IC0JcmV0dXJuIHJldDsNCj4gLX0NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS92aWEvdmlhX21hcC5jIGIvZHJpdmVycy9ncHUvZHJtL3ZpYS92aWFfbWFwLmMNCj4gZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IGE5ZjZiMGMxMTk2Ni4uMDAwMDAwMDAw MDAwDQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92aWEvdmlhX21hcC5jDQo+ICsrKyAvZGV2 L251bGwNCj4gQEAgLTEsMTMyICswLDAgQEANCj4gLS8qDQo+IC0gKiBDb3B5cmlnaHQgMTk5 OC0yMDAzIFZJQSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCj4g LSAqIENvcHlyaWdodCAyMDAxLTIwMDMgUzMgR3JhcGhpY3MsIEluYy4gQWxsIFJpZ2h0cyBS ZXNlcnZlZC4NCj4gLSAqDQo+IC0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQ0KPiAtICogY29weSBv ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRo ZSAiU29mdHdhcmUiKSwNCj4gLSAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQg cmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24NCj4gLSAqIHRoZSBy aWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl LCBzdWIgbGljZW5zZSwNCj4gLSAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdh cmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQ0KPiAtICogU29mdHdhcmUg aXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9uczoNCj4gLSAqDQo+IC0gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhp cyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZQ0KPiAtICogbmV4dCBwYXJhZ3Jh cGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9y dGlvbnMNCj4gLSAqIG9mIHRoZSBTb2Z0d2FyZS4NCj4gLSAqDQo+IC0gKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwg RVhQUkVTUyBPUg0KPiAtICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBU TyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksDQo+IC0gKiBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZF TlQgU0hBTEwNCj4gLSAqIFZJQSwgUzMgR1JBUEhJQ1MsIEFORC9PUiBJVFMgU1VQUExJRVJT IEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SDQo+IC0gKiBPVEhFUiBMSUFC SUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVS V0lTRSwNCj4gLSAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lU SCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUg0KPiAtICogREVBTElOR1MgSU4g VEhFIFNPRlRXQVJFLg0KPiAtICovDQo+IC0NCj4gLSNpbmNsdWRlIDxsaW51eC9wY2kuaD4N Cj4gLQ0KPiAtI2luY2x1ZGUgPGRybS9kcm1fZGV2aWNlLmg+DQo+IC0jaW5jbHVkZSA8ZHJt L2RybV92YmxhbmsuaD4NCj4gLSNpbmNsdWRlIDxkcm0vdmlhX2RybS5oPg0KPiAtDQo+IC0j aW5jbHVkZSAidmlhX2Rydi5oIg0KPiAtDQo+IC1zdGF0aWMgaW50IHZpYV9kb19pbml0X21h cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBkcm1fdmlhX2luaXRfdCAqaW5pdCkNCj4gLXsN Cj4gLQlkcm1fdmlhX3ByaXZhdGVfdCAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOw0K PiAtDQo+IC0JRFJNX0RFQlVHKCJcbiIpOw0KPiAtDQo+IC0JZGV2X3ByaXYtPnNhcmVhID0g ZHJtX2xlZ2FjeV9nZXRzYXJlYShkZXYpOw0KPiAtCWlmICghZGV2X3ByaXYtPnNhcmVhKSB7 DQo+IC0JCURSTV9FUlJPUigiY291bGQgbm90IGZpbmQgc2FyZWEhXG4iKTsNCj4gLQkJZGV2 LT5kZXZfcHJpdmF0ZSA9ICh2b2lkICopZGV2X3ByaXY7DQo+IC0JCXZpYV9kb19jbGVhbnVw X21hcChkZXYpOw0KPiAtCQlyZXR1cm4gLUVJTlZBTDsNCj4gLQl9DQo+IC0NCj4gLQlkZXZf cHJpdi0+ZmIgPSBkcm1fbGVnYWN5X2ZpbmRtYXAoZGV2LCBpbml0LT5mYl9vZmZzZXQpOw0K PiAtCWlmICghZGV2X3ByaXYtPmZiKSB7DQo+IC0JCURSTV9FUlJPUigiY291bGQgbm90IGZp bmQgZnJhbWVidWZmZXIhXG4iKTsNCj4gLQkJZGV2LT5kZXZfcHJpdmF0ZSA9ICh2b2lkICop ZGV2X3ByaXY7DQo+IC0JCXZpYV9kb19jbGVhbnVwX21hcChkZXYpOw0KPiAtCQlyZXR1cm4g LUVJTlZBTDsNCj4gLQl9DQo+IC0JZGV2X3ByaXYtPm1taW8gPSBkcm1fbGVnYWN5X2ZpbmRt YXAoZGV2LCBpbml0LT5tbWlvX29mZnNldCk7DQo+IC0JaWYgKCFkZXZfcHJpdi0+bW1pbykg ew0KPiAtCQlEUk1fRVJST1IoImNvdWxkIG5vdCBmaW5kIG1taW8gcmVnaW9uIVxuIik7DQo+ IC0JCWRldi0+ZGV2X3ByaXZhdGUgPSAodm9pZCAqKWRldl9wcml2Ow0KPiAtCQl2aWFfZG9f Y2xlYW51cF9tYXAoZGV2KTsNCj4gLQkJcmV0dXJuIC1FSU5WQUw7DQo+IC0JfQ0KPiAtDQo+ IC0JZGV2X3ByaXYtPnNhcmVhX3ByaXYgPQ0KPiAtCSAgICAoZHJtX3ZpYV9zYXJlYV90ICop ICgodTggKikgZGV2X3ByaXYtPnNhcmVhLT5oYW5kbGUgKw0KPiAtCQkJCSBpbml0LT5zYXJl YV9wcml2X29mZnNldCk7DQo+IC0NCj4gLQlkZXZfcHJpdi0+YWdwQWRkciA9IGluaXQtPmFn cEFkZHI7DQo+IC0NCj4gLQl2aWFfaW5pdF9mdXRleChkZXZfcHJpdik7DQo+IC0NCj4gLQl2 aWFfaW5pdF9kbWFibGl0KGRldik7DQo+IC0NCj4gLQlkZXYtPmRldl9wcml2YXRlID0gKHZv aWQgKilkZXZfcHJpdjsNCj4gLQlyZXR1cm4gMDsNCj4gLX0NCj4gLQ0KPiAtaW50IHZpYV9k b19jbGVhbnVwX21hcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQ0KPiAtew0KPiAtCXZpYV9k bWFfY2xlYW51cChkZXYpOw0KPiAtDQo+IC0JcmV0dXJuIDA7DQo+IC19DQo+IC0NCj4gLWlu dCB2aWFfbWFwX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3Ry dWN0IGRybV9maWxlICpmaWxlX3ByaXYpDQo+IC17DQo+IC0JZHJtX3ZpYV9pbml0X3QgKmlu aXQgPSBkYXRhOw0KPiAtDQo+IC0JRFJNX0RFQlVHKCJcbiIpOw0KPiAtDQo+IC0Jc3dpdGNo IChpbml0LT5mdW5jKSB7DQo+IC0JY2FzZSBWSUFfSU5JVF9NQVA6DQo+IC0JCXJldHVybiB2 aWFfZG9faW5pdF9tYXAoZGV2LCBpbml0KTsNCj4gLQljYXNlIFZJQV9DTEVBTlVQX01BUDoN Cj4gLQkJcmV0dXJuIHZpYV9kb19jbGVhbnVwX21hcChkZXYpOw0KPiAtCX0NCj4gLQ0KPiAt CXJldHVybiAtRUlOVkFMOw0KPiAtfQ0KPiAtDQo+IC1pbnQgdmlhX2RyaXZlcl9sb2FkKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgY2hpcHNldCkNCj4gLXsNCj4g LQlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHRvX3BjaV9kZXYoZGV2LT5kZXYpOw0KPiAtCWRy bV92aWFfcHJpdmF0ZV90ICpkZXZfcHJpdjsNCj4gLQlpbnQgcmV0ID0gMDsNCj4gLQ0KPiAt CWRldl9wcml2ID0ga3phbGxvYyhzaXplb2YoZHJtX3ZpYV9wcml2YXRlX3QpLCBHRlBfS0VS TkVMKTsNCj4gLQlpZiAoZGV2X3ByaXYgPT0gTlVMTCkNCj4gLQkJcmV0dXJuIC1FTk9NRU07 DQo+IC0NCj4gLQlpZHJfaW5pdCgmZGV2X3ByaXYtPm9iamVjdF9pZHIpOw0KPiAtCWRldi0+ ZGV2X3ByaXZhdGUgPSAodm9pZCAqKWRldl9wcml2Ow0KPiAtDQo+IC0JZGV2X3ByaXYtPmNo aXBzZXQgPSBjaGlwc2V0Ow0KPiAtDQo+IC0JcGNpX3NldF9tYXN0ZXIocGRldik7DQo+IC0N Cj4gLQlyZXQgPSBkcm1fdmJsYW5rX2luaXQoZGV2LCAxKTsNCj4gLQlpZiAocmV0KSB7DQo+ IC0JCWtmcmVlKGRldl9wcml2KTsNCj4gLQkJcmV0dXJuIHJldDsNCj4gLQl9DQo+IC0NCj4g LQlyZXR1cm4gMDsNCj4gLX0NCj4gLQ0KPiAtdm9pZCB2aWFfZHJpdmVyX3VubG9hZChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQ0KPiAtew0KPiAtCWRybV92aWFfcHJpdmF0ZV90ICpkZXZf cHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7DQo+IC0NCj4gLQlpZHJfZGVzdHJveSgmZGV2X3By aXYtPm9iamVjdF9pZHIpOw0KPiAtDQo+IC0Ja2ZyZWUoZGV2X3ByaXYpOw0KPiAtfQ0KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZpYS92aWFfbW0uYyBiL2RyaXZlcnMvZ3B1 L2RybS92aWEvdmlhX21tLmMNCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4 IGM5YWZhMWE1MWYyMy4uMDAwMDAwMDAwMDAwDQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92 aWEvdmlhX21tLmMNCj4gKysrIC9kZXYvbnVsbA0KPiBAQCAtMSwyNDEgKzAsMCBAQA0KPiAt LyoNCj4gLSAqIENvcHlyaWdodCAyMDA2IFR1bmdzdGVuIEdyYXBoaWNzIEluYy4sIEJpc21h cmNrLCBORC4sIFVTQS4NCj4gLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+IC0gKg0KPiAt ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu eSBwZXJzb24gb2J0YWluaW5nIGENCj4gLSAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQg YXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksDQo+IC0g KiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp bmcgd2l0aG91dCBsaW1pdGF0aW9uDQo+IC0gKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwg bW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3ViIGxpY2Vuc2UsDQo+IC0g KiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBl cnNvbnMgdG8gd2hvbSB0aGUNCj4gLSAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBz bywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQo+IC0gKg0KPiAtICog VGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ug KGluY2x1ZGluZyB0aGUNCj4gLSAqIG5leHQgcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRl ZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zDQo+IC0gKiBvZiB0aGUg U29mdHdhcmUuDQo+IC0gKg0KPiAtICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ UyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCj4gLSAqIElN UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Yg TUVSQ0hBTlRBQklMSVRZLA0KPiAtICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMDQo+IC0gKiBUSEUg QVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBBTkQvT1IgVEhFSVIgU1VQUExJRVJTIEJF IExJQUJMRSBGT1IgQU5ZIENMQUlNLA0KPiAtICogREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJ VFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lT RSwNCj4gLSAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBU SEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUg0KPiAtICogREVBTElOR1MgSU4gVEhF IFNPRlRXQVJFLg0KPiAtICovDQo+IC0vKg0KPiAtICogQXV0aG9yczogVGhvbWFzIEhlbGxz dHLDtm0gPHRob21hcy1hdC10dW5nc3RlbmdyYXBoaWNzLWRvdC1jb20+DQo+IC0gKi8NCj4g LQ0KPiAtI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4NCj4gLQ0KPiAtI2luY2x1ZGUgPGRybS9k cm1fZGV2aWNlLmg+DQo+IC0jaW5jbHVkZSA8ZHJtL2RybV9maWxlLmg+DQo+IC0jaW5jbHVk ZSA8ZHJtL3ZpYV9kcm0uaD4NCj4gLQ0KPiAtI2luY2x1ZGUgInZpYV9kcnYuaCINCj4gLQ0K PiAtI2RlZmluZSBWSUFfTU1fQUxJR05fU0hJRlQgNA0KPiAtI2RlZmluZSBWSUFfTU1fQUxJ R05fTUFTSyAoKDEgPDwgVklBX01NX0FMSUdOX1NISUZUKSAtIDEpDQo+IC0NCj4gLXN0cnVj dCB2aWFfbWVtYmxvY2sgew0KPiAtCXN0cnVjdCBkcm1fbW1fbm9kZSBtbV9ub2RlOw0KPiAt CXN0cnVjdCBsaXN0X2hlYWQgb3duZXJfbGlzdDsNCj4gLX07DQo+IC0NCj4gLWludCB2aWFf YWdwX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRy bV9maWxlICpmaWxlX3ByaXYpDQo+IC17DQo+IC0JZHJtX3ZpYV9hZ3BfdCAqYWdwID0gZGF0 YTsNCj4gLQlkcm1fdmlhX3ByaXZhdGVfdCAqZGV2X3ByaXYgPSAoZHJtX3ZpYV9wcml2YXRl X3QgKikgZGV2LT5kZXZfcHJpdmF0ZTsNCj4gLQ0KPiAtCW11dGV4X2xvY2soJmRldi0+c3Ry dWN0X211dGV4KTsNCj4gLQlkcm1fbW1faW5pdCgmZGV2X3ByaXYtPmFncF9tbSwgMCwgYWdw LT5zaXplID4+IFZJQV9NTV9BTElHTl9TSElGVCk7DQo+IC0NCj4gLQlkZXZfcHJpdi0+YWdw X2luaXRpYWxpemVkID0gMTsNCj4gLQlkZXZfcHJpdi0+YWdwX29mZnNldCA9IGFncC0+b2Zm c2V0Ow0KPiAtCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOw0KPiAtDQo+IC0J RFJNX0RFQlVHKCJvZmZzZXQgPSAldSwgc2l6ZSA9ICV1XG4iLCBhZ3AtPm9mZnNldCwgYWdw LT5zaXplKTsNCj4gLQlyZXR1cm4gMDsNCj4gLX0NCj4gLQ0KPiAtaW50IHZpYV9mYl9pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAq ZmlsZV9wcml2KQ0KPiAtew0KPiAtCWRybV92aWFfZmJfdCAqZmIgPSBkYXRhOw0KPiAtCWRy bV92aWFfcHJpdmF0ZV90ICpkZXZfcHJpdiA9IChkcm1fdmlhX3ByaXZhdGVfdCAqKSBkZXYt PmRldl9wcml2YXRlOw0KPiAtDQo+IC0JbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgp Ow0KPiAtCWRybV9tbV9pbml0KCZkZXZfcHJpdi0+dnJhbV9tbSwgMCwgZmItPnNpemUgPj4g VklBX01NX0FMSUdOX1NISUZUKTsNCj4gLQ0KPiAtCWRldl9wcml2LT52cmFtX2luaXRpYWxp emVkID0gMTsNCj4gLQlkZXZfcHJpdi0+dnJhbV9vZmZzZXQgPSBmYi0+b2Zmc2V0Ow0KPiAt DQo+IC0JbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7DQo+IC0JRFJNX0RFQlVH KCJvZmZzZXQgPSAldSwgc2l6ZSA9ICV1XG4iLCBmYi0+b2Zmc2V0LCBmYi0+c2l6ZSk7DQo+ IC0NCj4gLQlyZXR1cm4gMDsNCj4gLQ0KPiAtfQ0KPiAtDQo+IC1pbnQgdmlhX2ZpbmFsX2Nv bnRleHQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNvbnRleHQpDQo+IC17DQo+IC0J ZHJtX3ZpYV9wcml2YXRlX3QgKmRldl9wcml2ID0gKGRybV92aWFfcHJpdmF0ZV90ICopIGRl di0+ZGV2X3ByaXZhdGU7DQo+IC0NCj4gLQl2aWFfcmVsZWFzZV9mdXRleChkZXZfcHJpdiwg Y29udGV4dCk7DQo+IC0NCj4gLQkvKiBMaW51eCBzcGVjaWZpYyB1bnRpbCBjb250ZXh0IHRy YWNraW5nIGNvZGUgZ2V0cyBwb3J0ZWQgdG8gQlNEICovDQo+IC0JLyogTGFzdCBjb250ZXh0 LCBwZXJmb3JtIGNsZWFudXAgKi8NCj4gLQlpZiAobGlzdF9pc19zaW5ndWxhcigmZGV2LT5j dHhsaXN0KSkgew0KPiAtCQlEUk1fREVCVUcoIkxhc3QgQ29udGV4dFxuIik7DQo+IC0JCWRy bV9sZWdhY3lfaXJxX3VuaW5zdGFsbChkZXYpOw0KPiAtCQl2aWFfY2xlYW51cF9mdXRleChk ZXZfcHJpdik7DQo+IC0JCXZpYV9kb19jbGVhbnVwX21hcChkZXYpOw0KPiAtCX0NCj4gLQly ZXR1cm4gMTsNCj4gLX0NCj4gLQ0KPiAtdm9pZCB2aWFfbGFzdGNsb3NlKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpDQo+IC17DQo+IC0JZHJtX3ZpYV9wcml2YXRlX3QgKmRldl9wcml2ID0g KGRybV92aWFfcHJpdmF0ZV90ICopIGRldi0+ZGV2X3ByaXZhdGU7DQo+IC0NCj4gLQlpZiAo IWRldl9wcml2KQ0KPiAtCQlyZXR1cm47DQo+IC0NCj4gLQltdXRleF9sb2NrKCZkZXYtPnN0 cnVjdF9tdXRleCk7DQo+IC0JaWYgKGRldl9wcml2LT52cmFtX2luaXRpYWxpemVkKSB7DQo+ IC0JCWRybV9tbV90YWtlZG93bigmZGV2X3ByaXYtPnZyYW1fbW0pOw0KPiAtCQlkZXZfcHJp di0+dnJhbV9pbml0aWFsaXplZCA9IDA7DQo+IC0JfQ0KPiAtCWlmIChkZXZfcHJpdi0+YWdw X2luaXRpYWxpemVkKSB7DQo+IC0JCWRybV9tbV90YWtlZG93bigmZGV2X3ByaXYtPmFncF9t bSk7DQo+IC0JCWRldl9wcml2LT5hZ3BfaW5pdGlhbGl6ZWQgPSAwOw0KPiAtCX0NCj4gLQlt dXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsNCj4gLX0NCj4gLQ0KPiAtaW50IHZp YV9tZW1fYWxsb2Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwNCj4gLQkJ ICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpDQo+IC17DQo+IC0JZHJtX3ZpYV9tZW1fdCAqbWVt ID0gZGF0YTsNCj4gLQlpbnQgcmV0dmFsID0gMCwgdXNlcl9rZXk7DQo+IC0Jc3RydWN0IHZp YV9tZW1ibG9jayAqaXRlbTsNCj4gLQlkcm1fdmlhX3ByaXZhdGVfdCAqZGV2X3ByaXYgPSAo ZHJtX3ZpYV9wcml2YXRlX3QgKikgZGV2LT5kZXZfcHJpdmF0ZTsNCj4gLQlzdHJ1Y3Qgdmlh X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2ID0gZmlsZS0+ZHJpdmVyX3ByaXY7DQo+IC0JdW5z aWduZWQgbG9uZyB0bXBTaXplOw0KPiAtDQo+IC0JaWYgKG1lbS0+dHlwZSA+IFZJQV9NRU1f QUdQKSB7DQo+IC0JCURSTV9FUlJPUigiVW5rbm93biBtZW1vcnkgdHlwZSBhbGxvY2F0aW9u XG4iKTsNCj4gLQkJcmV0dXJuIC1FSU5WQUw7DQo+IC0JfQ0KPiAtCW11dGV4X2xvY2soJmRl di0+c3RydWN0X211dGV4KTsNCj4gLQlpZiAoMCA9PSAoKG1lbS0+dHlwZSA9PSBWSUFfTUVN X1ZJREVPKSA/IGRldl9wcml2LT52cmFtX2luaXRpYWxpemVkIDoNCj4gLQkJICAgICAgZGV2 X3ByaXYtPmFncF9pbml0aWFsaXplZCkpIHsNCj4gLQkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0 cnVjdF9tdXRleCk7DQo+IC0JCURSTV9FUlJPUg0KPiAtCQkgICAgKCJBdHRlbXB0IHRvIGFs bG9jYXRlIGZyb20gdW5pbml0aWFsaXplZCBtZW1vcnkgbWFuYWdlci5cbiIpOw0KPiAtCQly ZXR1cm4gLUVJTlZBTDsNCj4gLQl9DQo+IC0NCj4gLQlpdGVtID0ga3phbGxvYyhzaXplb2Yo Kml0ZW0pLCBHRlBfS0VSTkVMKTsNCj4gLQlpZiAoIWl0ZW0pIHsNCj4gLQkJcmV0dmFsID0g LUVOT01FTTsNCj4gLQkJZ290byBmYWlsX2FsbG9jOw0KPiAtCX0NCj4gLQ0KPiAtCXRtcFNp emUgPSAobWVtLT5zaXplICsgVklBX01NX0FMSUdOX01BU0spID4+IFZJQV9NTV9BTElHTl9T SElGVDsNCj4gLQlpZiAobWVtLT50eXBlID09IFZJQV9NRU1fQUdQKQ0KPiAtCQlyZXR2YWwg PSBkcm1fbW1faW5zZXJ0X25vZGUoJmRldl9wcml2LT5hZ3BfbW0sDQo+IC0JCQkJCSAgICAm aXRlbS0+bW1fbm9kZSwNCj4gLQkJCQkJICAgIHRtcFNpemUpOw0KPiAtCWVsc2UNCj4gLQkJ cmV0dmFsID0gZHJtX21tX2luc2VydF9ub2RlKCZkZXZfcHJpdi0+dnJhbV9tbSwNCj4gLQkJ CQkJICAgICZpdGVtLT5tbV9ub2RlLA0KPiAtCQkJCQkgICAgdG1wU2l6ZSk7DQo+IC0JaWYg KHJldHZhbCkNCj4gLQkJZ290byBmYWlsX2FsbG9jOw0KPiAtDQo+IC0JcmV0dmFsID0gaWRy X2FsbG9jKCZkZXZfcHJpdi0+b2JqZWN0X2lkciwgaXRlbSwgMSwgMCwgR0ZQX0tFUk5FTCk7 DQo+IC0JaWYgKHJldHZhbCA8IDApDQo+IC0JCWdvdG8gZmFpbF9pZHI7DQo+IC0JdXNlcl9r ZXkgPSByZXR2YWw7DQo+IC0NCj4gLQlsaXN0X2FkZCgmaXRlbS0+b3duZXJfbGlzdCwgJmZp bGVfcHJpdi0+b2JqX2xpc3QpOw0KPiAtCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0 ZXgpOw0KPiAtDQo+IC0JbWVtLT5vZmZzZXQgPSAoKG1lbS0+dHlwZSA9PSBWSUFfTUVNX1ZJ REVPKSA/DQo+IC0JCSAgICAgIGRldl9wcml2LT52cmFtX29mZnNldCA6IGRldl9wcml2LT5h Z3Bfb2Zmc2V0KSArDQo+IC0JICAgICgoaXRlbS0+bW1fbm9kZS5zdGFydCkgPDwgVklBX01N X0FMSUdOX1NISUZUKTsNCj4gLQltZW0tPmluZGV4ID0gdXNlcl9rZXk7DQo+IC0NCj4gLQly ZXR1cm4gMDsNCj4gLQ0KPiAtZmFpbF9pZHI6DQo+IC0JZHJtX21tX3JlbW92ZV9ub2RlKCZp dGVtLT5tbV9ub2RlKTsNCj4gLWZhaWxfYWxsb2M6DQo+IC0Ja2ZyZWUoaXRlbSk7DQo+IC0J bXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7DQo+IC0NCj4gLQltZW0tPm9mZnNl dCA9IDA7DQo+IC0JbWVtLT5zaXplID0gMDsNCj4gLQltZW0tPmluZGV4ID0gMDsNCj4gLQlE Uk1fREVCVUcoIlZpZGVvIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZFxuIik7DQo+IC0NCj4g LQlyZXR1cm4gcmV0dmFsOw0KPiAtfQ0KPiAtDQo+IC1pbnQgdmlhX21lbV9mcmVlKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9w cml2KQ0KPiAtew0KPiAtCWRybV92aWFfcHJpdmF0ZV90ICpkZXZfcHJpdiA9IGRldi0+ZGV2 X3ByaXZhdGU7DQo+IC0JZHJtX3ZpYV9tZW1fdCAqbWVtID0gZGF0YTsNCj4gLQlzdHJ1Y3Qg dmlhX21lbWJsb2NrICpvYmo7DQo+IC0NCj4gLQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9t dXRleCk7DQo+IC0Jb2JqID0gaWRyX2ZpbmQoJmRldl9wcml2LT5vYmplY3RfaWRyLCBtZW0t PmluZGV4KTsNCj4gLQlpZiAob2JqID09IE5VTEwpIHsNCj4gLQkJbXV0ZXhfdW5sb2NrKCZk ZXYtPnN0cnVjdF9tdXRleCk7DQo+IC0JCXJldHVybiAtRUlOVkFMOw0KPiAtCX0NCj4gLQ0K PiAtCWlkcl9yZW1vdmUoJmRldl9wcml2LT5vYmplY3RfaWRyLCBtZW0tPmluZGV4KTsNCj4g LQlsaXN0X2RlbCgmb2JqLT5vd25lcl9saXN0KTsNCj4gLQlkcm1fbW1fcmVtb3ZlX25vZGUo Jm9iai0+bW1fbm9kZSk7DQo+IC0Ja2ZyZWUob2JqKTsNCj4gLQltdXRleF91bmxvY2soJmRl di0+c3RydWN0X211dGV4KTsNCj4gLQ0KPiAtCURSTV9ERUJVRygiZnJlZSA9IDB4JWx4XG4i LCBtZW0tPmluZGV4KTsNCj4gLQ0KPiAtCXJldHVybiAwOw0KPiAtfQ0KPiAtDQo+IC0NCj4g LXZvaWQgdmlhX3JlY2xhaW1fYnVmZmVyc19sb2NrZWQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwNCj4gLQkJCQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpDQo+IC17DQo+IC0Jc3RydWN0IHZp YV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdiA9IGZpbGUtPmRyaXZlcl9wcml2Ow0KPiAtCXN0 cnVjdCB2aWFfbWVtYmxvY2sgKmVudHJ5LCAqbmV4dDsNCj4gLQ0KPiAtCWlmICghKGRldi0+ bWFzdGVyICYmIGZpbGUtPm1hc3Rlci0+bG9jay5od19sb2NrKSkNCj4gLQkJcmV0dXJuOw0K PiAtDQo+IC0JZHJtX2xlZ2FjeV9pZGxlbG9ja190YWtlKCZmaWxlLT5tYXN0ZXItPmxvY2sp Ow0KPiAtDQo+IC0JbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOw0KPiAtCWlmIChs aXN0X2VtcHR5KCZmaWxlX3ByaXYtPm9ial9saXN0KSkgew0KPiAtCQltdXRleF91bmxvY2so JmRldi0+c3RydWN0X211dGV4KTsNCj4gLQkJZHJtX2xlZ2FjeV9pZGxlbG9ja19yZWxlYXNl KCZmaWxlLT5tYXN0ZXItPmxvY2spOw0KPiAtDQo+IC0JCXJldHVybjsNCj4gLQl9DQo+IC0N Cj4gLQl2aWFfZHJpdmVyX2RtYV9xdWllc2NlbnQoZGV2KTsNCj4gLQ0KPiAtCWxpc3RfZm9y X2VhY2hfZW50cnlfc2FmZShlbnRyeSwgbmV4dCwgJmZpbGVfcHJpdi0+b2JqX2xpc3QsDQo+ IC0JCQkJIG93bmVyX2xpc3QpIHsNCj4gLQkJbGlzdF9kZWwoJmVudHJ5LT5vd25lcl9saXN0 KTsNCj4gLQkJZHJtX21tX3JlbW92ZV9ub2RlKCZlbnRyeS0+bW1fbm9kZSk7DQo+IC0JCWtm cmVlKGVudHJ5KTsNCj4gLQl9DQo+IC0JbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRl eCk7DQo+IC0NCj4gLQlkcm1fbGVnYWN5X2lkbGVsb2NrX3JlbGVhc2UoJmZpbGUtPm1hc3Rl ci0+bG9jayk7DQo+IC0NCj4gLQlyZXR1cm47DQo+IC19DQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vdmlhL3ZpYV92ZXJpZmllci5jIGIvZHJpdmVycy9ncHUvZHJtL3ZpYS92 aWFfdmVyaWZpZXIuYw0KPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggM2Q2 ZTNhNzBmMzE4Li4wMDAwMDAwMDAwMDANCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZpYS92 aWFfdmVyaWZpZXIuYw0KPiArKysgL2Rldi9udWxsDQo+IEBAIC0xLDExMTAgKzAsMCBAQA0K PiAtLyoNCj4gLSAqIENvcHlyaWdodCAyMDA0IFRoZSBVbmljaHJvbWUgUHJvamVjdC4gQWxs IFJpZ2h0cyBSZXNlcnZlZC4NCj4gLSAqIENvcHlyaWdodCAyMDA1IFRob21hcyBIZWxsc3Ry b20uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQo+IC0gKg0KPiAtICogUGVybWlzc2lvbiBpcyBo ZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n IGENCj4gLSAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVu dGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksDQo+IC0gKiB0byBkZWFsIGluIHRoZSBT b2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0 aW9uDQo+IC0gKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVi bGlzaCwgZGlzdHJpYnV0ZSwgc3ViIGxpY2Vuc2UsDQo+IC0gKiBhbmQvb3Igc2VsbCBjb3Bp ZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUN Cj4gLSAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUg Zm9sbG93aW5nIGNvbmRpdGlvbnM6DQo+IC0gKg0KPiAtICogVGhlIGFib3ZlIGNvcHlyaWdo dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUNCj4g LSAqIG5leHQgcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9y IHN1YnN0YW50aWFsIHBvcnRpb25zDQo+IC0gKiBvZiB0aGUgU29mdHdhcmUuDQo+IC0gKg0K PiAtICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFO VFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCj4gLSAqIElNUExJRUQsIElOQ0xVRElORyBC VVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLA0K PiAtICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5H RU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMDQo+IC0gKiBUSEUgQVVUSE9SKFMpLCBBTkQvT1Ig VEhFIENPUFlSSUdIVCBIT0xERVIoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFH RVMgT1INCj4gLSAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLA0KPiAtICogQVJJU0lORyBGUk9NLCBPVVQg T0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9U SEVSDQo+IC0gKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQo+IC0gKg0KPiAtICogQXV0 aG9yOiBUaG9tYXMgSGVsbHN0cm9tIDIwMDQsIDIwMDUuDQo+IC0gKiBUaGlzIGNvZGUgd2Fz IHdyaXR0ZW4gdXNpbmcgZG9jcyBvYnRhaW5lZCB1bmRlciBOREEgZnJvbSBWSUEgSW5jLg0K PiAtICoNCj4gLSAqIERvbid0IHJ1biB0aGlzIGNvZGUgZGlyZWN0bHkgb24gYW4gQUdQIGJ1 ZmZlci4gRHVlIHRvIGNhY2hlIHByb2JsZW1zIGl0IHdpbGwNCj4gLSAqIGJlIHZlcnkgc2xv dy4NCj4gLSAqLw0KPiAtDQo+IC0jaW5jbHVkZSA8ZHJtL2RybV9kZXZpY2UuaD4NCj4gLSNp bmNsdWRlIDxkcm0vZHJtX2xlZ2FjeS5oPg0KPiAtI2luY2x1ZGUgPGRybS92aWFfZHJtLmg+ DQo+IC0NCj4gLSNpbmNsdWRlICJ2aWFfM2RfcmVnLmgiDQo+IC0jaW5jbHVkZSAidmlhX2Ry di5oIg0KPiAtI2luY2x1ZGUgInZpYV92ZXJpZmllci5oIg0KPiAtDQo+IC10eXBlZGVmIGVu dW0gew0KPiAtCXN0YXRlX2NvbW1hbmQsDQo+IC0Jc3RhdGVfaGVhZGVyMiwNCj4gLQlzdGF0 ZV9oZWFkZXIxLA0KPiAtCXN0YXRlX3ZoZWFkZXI1LA0KPiAtCXN0YXRlX3ZoZWFkZXI2LA0K PiAtCXN0YXRlX2Vycm9yDQo+IC19IHZlcmlmaWVyX3N0YXRlX3Q7DQo+IC0NCj4gLXR5cGVk ZWYgZW51bSB7DQo+IC0Jbm9fY2hlY2sgPSAwLA0KPiAtCWNoZWNrX2Zvcl9oZWFkZXIyLA0K PiAtCWNoZWNrX2Zvcl9oZWFkZXIxLA0KPiAtCWNoZWNrX2Zvcl9oZWFkZXIyX2VyciwNCj4g LQljaGVja19mb3JfaGVhZGVyMV9lcnIsDQo+IC0JY2hlY2tfZm9yX2ZpcmUsDQo+IC0JY2hl Y2tfel9idWZmZXJfYWRkcjAsDQo+IC0JY2hlY2tfel9idWZmZXJfYWRkcjEsDQo+IC0JY2hl Y2tfel9idWZmZXJfYWRkcl9tb2RlLA0KPiAtCWNoZWNrX2Rlc3RpbmF0aW9uX2FkZHIwLA0K PiAtCWNoZWNrX2Rlc3RpbmF0aW9uX2FkZHIxLA0KPiAtCWNoZWNrX2Rlc3RpbmF0aW9uX2Fk ZHJfbW9kZSwNCj4gLQljaGVja19mb3JfZHVtbXksDQo+IC0JY2hlY2tfZm9yX2RkLA0KPiAt CWNoZWNrX3RleHR1cmVfYWRkcjAsDQo+IC0JY2hlY2tfdGV4dHVyZV9hZGRyMSwNCj4gLQlj aGVja190ZXh0dXJlX2FkZHIyLA0KPiAtCWNoZWNrX3RleHR1cmVfYWRkcjMsDQo+IC0JY2hl Y2tfdGV4dHVyZV9hZGRyNCwNCj4gLQljaGVja190ZXh0dXJlX2FkZHI1LA0KPiAtCWNoZWNr X3RleHR1cmVfYWRkcjYsDQo+IC0JY2hlY2tfdGV4dHVyZV9hZGRyNywNCj4gLQljaGVja190 ZXh0dXJlX2FkZHI4LA0KPiAtCWNoZWNrX3RleHR1cmVfYWRkcl9tb2RlLA0KPiAtCWNoZWNr X2Zvcl92ZXJ0ZXhfY291bnQsDQo+IC0JY2hlY2tfbnVtYmVyX3RleHVuaXRzLA0KPiAtCWZv cmJpZGRlbl9jb21tYW5kDQo+IC19IGhhemFyZF90Ow0KPiAtDQo+IC0vKg0KPiAtICogQXNz b2NpYXRlcyBlYWNoIGhhemFyZCBhYm92ZSB3aXRoIGEgcG9zc2libGUgbXVsdGktY29tbWFu ZA0KPiAtICogc2VxdWVuY2UuIEZvciBleGFtcGxlIGFuIGFkZHJlc3MgdGhhdCBpcyBzcGxp dCBvdmVyIG11bHRpcGxlDQo+IC0gKiBjb21tYW5kcyBhbmQgdGhhdCBuZWVkcyB0byBiZSBj aGVja2VkIGF0IHRoZSBmaXJzdCBjb21tYW5kDQo+IC0gKiB0aGF0IGRvZXMgbm90IGluY2x1 ZGUgYW55IHBhcnQgb2YgdGhlIGFkZHJlc3MuDQo+IC0gKi8NCj4gLQ0KPiAtc3RhdGljIGRy bV92aWFfc2VxdWVuY2VfdCBzZXFzW10gPSB7DQo+IC0Jbm9fc2VxdWVuY2UsDQo+IC0Jbm9f c2VxdWVuY2UsDQo+IC0Jbm9fc2VxdWVuY2UsDQo+IC0Jbm9fc2VxdWVuY2UsDQo+IC0Jbm9f c2VxdWVuY2UsDQo+IC0Jbm9fc2VxdWVuY2UsDQo+IC0Jel9hZGRyZXNzLA0KPiAtCXpfYWRk cmVzcywNCj4gLQl6X2FkZHJlc3MsDQo+IC0JZGVzdF9hZGRyZXNzLA0KPiAtCWRlc3RfYWRk cmVzcywNCj4gLQlkZXN0X2FkZHJlc3MsDQo+IC0Jbm9fc2VxdWVuY2UsDQo+IC0Jbm9fc2Vx dWVuY2UsDQo+IC0JdGV4X2FkZHJlc3MsDQo+IC0JdGV4X2FkZHJlc3MsDQo+IC0JdGV4X2Fk ZHJlc3MsDQo+IC0JdGV4X2FkZHJlc3MsDQo+IC0JdGV4X2FkZHJlc3MsDQo+IC0JdGV4X2Fk ZHJlc3MsDQo+IC0JdGV4X2FkZHJlc3MsDQo+IC0JdGV4X2FkZHJlc3MsDQo+IC0JdGV4X2Fk ZHJlc3MsDQo+IC0JdGV4X2FkZHJlc3MsDQo+IC0Jbm9fc2VxdWVuY2UNCj4gLX07DQo+IC0N Cj4gLXR5cGVkZWYgc3RydWN0IHsNCj4gLQl1bnNpZ25lZCBpbnQgY29kZTsNCj4gLQloYXph cmRfdCBoejsNCj4gLX0gaHpfaW5pdF90Ow0KPiAtDQo+IC1zdGF0aWMgaHpfaW5pdF90IGlu aXRfdGFibGUxW10gPSB7DQo+IC0JezB4ZjIsIGNoZWNrX2Zvcl9oZWFkZXIyX2Vycn0sDQo+ IC0JezB4ZjAsIGNoZWNrX2Zvcl9oZWFkZXIxX2Vycn0sDQo+IC0JezB4ZWUsIGNoZWNrX2Zv cl9maXJlfSwNCj4gLQl7MHhjYywgY2hlY2tfZm9yX2R1bW15fSwNCj4gLQl7MHhkZCwgY2hl Y2tfZm9yX2RkfSwNCj4gLQl7MHgwMCwgbm9fY2hlY2t9LA0KPiAtCXsweDEwLCBjaGVja196 X2J1ZmZlcl9hZGRyMH0sDQo+IC0JezB4MTEsIGNoZWNrX3pfYnVmZmVyX2FkZHIxfSwNCj4g LQl7MHgxMiwgY2hlY2tfel9idWZmZXJfYWRkcl9tb2RlfSwNCj4gLQl7MHgxMywgbm9fY2hl Y2t9LA0KPiAtCXsweDE0LCBub19jaGVja30sDQo+IC0JezB4MTUsIG5vX2NoZWNrfSwNCj4g LQl7MHgyMywgbm9fY2hlY2t9LA0KPiAtCXsweDI0LCBub19jaGVja30sDQo+IC0JezB4MzMs IG5vX2NoZWNrfSwNCj4gLQl7MHgzNCwgbm9fY2hlY2t9LA0KPiAtCXsweDM1LCBub19jaGVj a30sDQo+IC0JezB4MzYsIG5vX2NoZWNrfSwNCj4gLQl7MHgzNywgbm9fY2hlY2t9LA0KPiAt CXsweDM4LCBub19jaGVja30sDQo+IC0JezB4MzksIG5vX2NoZWNrfSwNCj4gLQl7MHgzQSwg bm9fY2hlY2t9LA0KPiAtCXsweDNCLCBub19jaGVja30sDQo+IC0JezB4M0MsIG5vX2NoZWNr fSwNCj4gLQl7MHgzRCwgbm9fY2hlY2t9LA0KPiAtCXsweDNFLCBub19jaGVja30sDQo+IC0J ezB4NDAsIGNoZWNrX2Rlc3RpbmF0aW9uX2FkZHIwfSwNCj4gLQl7MHg0MSwgY2hlY2tfZGVz dGluYXRpb25fYWRkcjF9LA0KPiAtCXsweDQyLCBjaGVja19kZXN0aW5hdGlvbl9hZGRyX21v ZGV9LA0KPiAtCXsweDQzLCBub19jaGVja30sDQo+IC0JezB4NDQsIG5vX2NoZWNrfSwNCj4g LQl7MHg1MCwgbm9fY2hlY2t9LA0KPiAtCXsweDUxLCBub19jaGVja30sDQo+IC0JezB4NTIs IG5vX2NoZWNrfSwNCj4gLQl7MHg1Mywgbm9fY2hlY2t9LA0KPiAtCXsweDU0LCBub19jaGVj a30sDQo+IC0JezB4NTUsIG5vX2NoZWNrfSwNCj4gLQl7MHg1Niwgbm9fY2hlY2t9LA0KPiAt CXsweDU3LCBub19jaGVja30sDQo+IC0JezB4NTgsIG5vX2NoZWNrfSwNCj4gLQl7MHg3MCwg bm9fY2hlY2t9LA0KPiAtCXsweDcxLCBub19jaGVja30sDQo+IC0JezB4NzgsIG5vX2NoZWNr fSwNCj4gLQl7MHg3OSwgbm9fY2hlY2t9LA0KPiAtCXsweDdBLCBub19jaGVja30sDQo+IC0J ezB4N0IsIG5vX2NoZWNrfSwNCj4gLQl7MHg3Qywgbm9fY2hlY2t9LA0KPiAtCXsweDdELCBj aGVja19mb3JfdmVydGV4X2NvdW50fQ0KPiAtfTsNCj4gLQ0KPiAtc3RhdGljIGh6X2luaXRf dCBpbml0X3RhYmxlMltdID0gew0KPiAtCXsweGYyLCBjaGVja19mb3JfaGVhZGVyMl9lcnJ9 LA0KPiAtCXsweGYwLCBjaGVja19mb3JfaGVhZGVyMV9lcnJ9LA0KPiAtCXsweGVlLCBjaGVj a19mb3JfZmlyZX0sDQo+IC0JezB4Y2MsIGNoZWNrX2Zvcl9kdW1teX0sDQo+IC0JezB4MDAs IGNoZWNrX3RleHR1cmVfYWRkcjB9LA0KPiAtCXsweDAxLCBjaGVja190ZXh0dXJlX2FkZHIw fSwNCj4gLQl7MHgwMiwgY2hlY2tfdGV4dHVyZV9hZGRyMH0sDQo+IC0JezB4MDMsIGNoZWNr X3RleHR1cmVfYWRkcjB9LA0KPiAtCXsweDA0LCBjaGVja190ZXh0dXJlX2FkZHIwfSwNCj4g LQl7MHgwNSwgY2hlY2tfdGV4dHVyZV9hZGRyMH0sDQo+IC0JezB4MDYsIGNoZWNrX3RleHR1 cmVfYWRkcjB9LA0KPiAtCXsweDA3LCBjaGVja190ZXh0dXJlX2FkZHIwfSwNCj4gLQl7MHgw OCwgY2hlY2tfdGV4dHVyZV9hZGRyMH0sDQo+IC0JezB4MDksIGNoZWNrX3RleHR1cmVfYWRk cjB9LA0KPiAtCXsweDIwLCBjaGVja190ZXh0dXJlX2FkZHIxfSwNCj4gLQl7MHgyMSwgY2hl Y2tfdGV4dHVyZV9hZGRyMX0sDQo+IC0JezB4MjIsIGNoZWNrX3RleHR1cmVfYWRkcjF9LA0K PiAtCXsweDIzLCBjaGVja190ZXh0dXJlX2FkZHI0fSwNCj4gLQl7MHgyQiwgY2hlY2tfdGV4 dHVyZV9hZGRyM30sDQo+IC0JezB4MkMsIGNoZWNrX3RleHR1cmVfYWRkcjN9LA0KPiAtCXsw eDJELCBjaGVja190ZXh0dXJlX2FkZHIzfSwNCj4gLQl7MHgyRSwgY2hlY2tfdGV4dHVyZV9h ZGRyM30sDQo+IC0JezB4MkYsIGNoZWNrX3RleHR1cmVfYWRkcjN9LA0KPiAtCXsweDMwLCBj aGVja190ZXh0dXJlX2FkZHIzfSwNCj4gLQl7MHgzMSwgY2hlY2tfdGV4dHVyZV9hZGRyM30s DQo+IC0JezB4MzIsIGNoZWNrX3RleHR1cmVfYWRkcjN9LA0KPiAtCXsweDMzLCBjaGVja190 ZXh0dXJlX2FkZHIzfSwNCj4gLQl7MHgzNCwgY2hlY2tfdGV4dHVyZV9hZGRyM30sDQo+IC0J ezB4NEIsIGNoZWNrX3RleHR1cmVfYWRkcjV9LA0KPiAtCXsweDRDLCBjaGVja190ZXh0dXJl X2FkZHI2fSwNCj4gLQl7MHg1MSwgY2hlY2tfdGV4dHVyZV9hZGRyN30sDQo+IC0JezB4NTIs IGNoZWNrX3RleHR1cmVfYWRkcjh9LA0KPiAtCXsweDc3LCBjaGVja190ZXh0dXJlX2FkZHIy fSwNCj4gLQl7MHg3OCwgbm9fY2hlY2t9LA0KPiAtCXsweDc5LCBub19jaGVja30sDQo+IC0J ezB4N0EsIG5vX2NoZWNrfSwNCj4gLQl7MHg3QiwgY2hlY2tfdGV4dHVyZV9hZGRyX21vZGV9 LA0KPiAtCXsweDdDLCBub19jaGVja30sDQo+IC0JezB4N0QsIG5vX2NoZWNrfSwNCj4gLQl7 MHg3RSwgbm9fY2hlY2t9LA0KPiAtCXsweDdGLCBub19jaGVja30sDQo+IC0JezB4ODAsIG5v X2NoZWNrfSwNCj4gLQl7MHg4MSwgbm9fY2hlY2t9LA0KPiAtCXsweDgyLCBub19jaGVja30s DQo+IC0JezB4ODMsIG5vX2NoZWNrfSwNCj4gLQl7MHg4NSwgbm9fY2hlY2t9LA0KPiAtCXsw eDg2LCBub19jaGVja30sDQo+IC0JezB4ODcsIG5vX2NoZWNrfSwNCj4gLQl7MHg4OCwgbm9f Y2hlY2t9LA0KPiAtCXsweDg5LCBub19jaGVja30sDQo+IC0JezB4OEEsIG5vX2NoZWNrfSwN Cj4gLQl7MHg5MCwgbm9fY2hlY2t9LA0KPiAtCXsweDkxLCBub19jaGVja30sDQo+IC0JezB4 OTIsIG5vX2NoZWNrfSwNCj4gLQl7MHg5Mywgbm9fY2hlY2t9DQo+IC19Ow0KPiAtDQo+IC1z dGF0aWMgaHpfaW5pdF90IGluaXRfdGFibGUzW10gPSB7DQo+IC0JezB4ZjIsIGNoZWNrX2Zv cl9oZWFkZXIyX2Vycn0sDQo+IC0JezB4ZjAsIGNoZWNrX2Zvcl9oZWFkZXIxX2Vycn0sDQo+ IC0JezB4Y2MsIGNoZWNrX2Zvcl9kdW1teX0sDQo+IC0JezB4MDAsIGNoZWNrX251bWJlcl90 ZXh1bml0c30NCj4gLX07DQo+IC0NCj4gLXN0YXRpYyBoYXphcmRfdCB0YWJsZTFbMjU2XTsN Cj4gLXN0YXRpYyBoYXphcmRfdCB0YWJsZTJbMjU2XTsNCj4gLXN0YXRpYyBoYXphcmRfdCB0 YWJsZTNbMjU2XTsNCj4gLQ0KPiAtc3RhdGljIF9faW5saW5lX18gaW50DQo+IC1lYXRfd29y ZHMoY29uc3QgdWludDMyX3QgKipidWYsIGNvbnN0IHVpbnQzMl90ICpidWZfZW5kLCB1bnNp Z25lZCBudW1fd29yZHMpDQo+IC17DQo+IC0JaWYgKChidWZfZW5kIC0gKmJ1ZikgPj0gbnVt X3dvcmRzKSB7DQo+IC0JCSpidWYgKz0gbnVtX3dvcmRzOw0KPiAtCQlyZXR1cm4gMDsNCj4g LQl9DQo+IC0JRFJNX0VSUk9SKCJJbGxlZ2FsIHRlcm1pbmF0aW9uIG9mIERNQSBjb21tYW5k IGJ1ZmZlclxuIik7DQo+IC0JcmV0dXJuIDE7DQo+IC19DQo+IC0NCj4gLS8qDQo+IC0gKiBQ YXJ0aWFsbHkgc3RvbGVuIGZyb20gZHJtX21lbW9yeS5oDQo+IC0gKi8NCj4gLQ0KPiAtc3Rh dGljIF9faW5saW5lX18gZHJtX2xvY2FsX21hcF90ICp2aWFfZHJtX2xvb2t1cF9hZ3BfbWFw KGRybV92aWFfc3RhdGVfdCAqc2VxLA0KPiAtCQkJCQkJICAgIHVuc2lnbmVkIGxvbmcgb2Zm c2V0LA0KPiAtCQkJCQkJICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSwNCj4gLQkJCQkJCSAgICBz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQ0KPiAtew0KPiAtCXN0cnVjdCBkcm1fbWFwX2xpc3Qg KnJfbGlzdDsNCj4gLQlkcm1fbG9jYWxfbWFwX3QgKm1hcCA9IHNlcS0+bWFwX2NhY2hlOw0K PiAtDQo+IC0JaWYgKG1hcCAmJiBtYXAtPm9mZnNldCA8PSBvZmZzZXQNCj4gLQkgICAgJiYg KG9mZnNldCArIHNpemUpIDw9IChtYXAtPm9mZnNldCArIG1hcC0+c2l6ZSkpIHsNCj4gLQkJ cmV0dXJuIG1hcDsNCj4gLQl9DQo+IC0NCj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJfbGlz dCwgJmRldi0+bWFwbGlzdCwgaGVhZCkgew0KPiAtCQltYXAgPSByX2xpc3QtPm1hcDsNCj4g LQkJaWYgKCFtYXApDQo+IC0JCQljb250aW51ZTsNCj4gLQkJaWYgKG1hcC0+b2Zmc2V0IDw9 IG9mZnNldA0KPiAtCQkgICAgJiYgKG9mZnNldCArIHNpemUpIDw9IChtYXAtPm9mZnNldCAr IG1hcC0+c2l6ZSkNCj4gLQkJICAgICYmICEobWFwLT5mbGFncyAmIF9EUk1fUkVTVFJJQ1RF RCkNCj4gLQkJICAgICYmIChtYXAtPnR5cGUgPT0gX0RSTV9BR1ApKSB7DQo+IC0JCQlzZXEt Pm1hcF9jYWNoZSA9IG1hcDsNCj4gLQkJCXJldHVybiBtYXA7DQo+IC0JCX0NCj4gLQl9DQo+ IC0JcmV0dXJuIE5VTEw7DQo+IC19DQo+IC0NCj4gLS8qDQo+IC0gKiBSZXF1aXJlIHRoYXQg YWxsIEFHUCB0ZXh0dXJlIGxldmVscyByZXNpZGUgaW4gdGhlIHNhbWUgQUdQIG1hcCB3aGlj aCBzaG91bGQNCj4gLSAqIGJlIG1hcHBhYmxlIGJ5IHRoZSBjbGllbnQuIFRoaXMgaXMgbm90 IGEgYmlnIHJlc3RyaWN0aW9uLg0KPiAtICogRklYTUU6IFRvIGFjdHVhbGx5IGVuZm9yY2Ug dGhpcyBzZWN1cml0eSBwb2xpY3kgc3RyaWN0bHksIGRybV9ybW1hcA0KPiAtICogd291bGQg aGF2ZSB0byB3YWl0IGZvciBkbWEgcXVpZXNjZW50IGJlZm9yZSByZW1vdmluZyBhbiBBR1Ag bWFwLg0KPiAtICogVGhlIHZpYV9kcm1fbG9va3VwX2FncF9tYXAgY2FsbCBpbiByZWFsaXR5 IHNlZW1zIHRvIHRha2UNCj4gLSAqIHZlcnkgbGl0dGxlIENQVSB0aW1lLg0KPiAtICovDQo+ IC0NCj4gLXN0YXRpYyBfX2lubGluZV9fIGludCBmaW5pc2hfY3VycmVudF9zZXF1ZW5jZShk cm1fdmlhX3N0YXRlX3QgKiBjdXJfc2VxKQ0KPiAtew0KPiAtCXN3aXRjaCAoY3VyX3NlcS0+ dW5maW5pc2hlZCkgew0KPiAtCWNhc2Ugel9hZGRyZXNzOg0KPiAtCQlEUk1fREVCVUcoIlog QnVmZmVyIHN0YXJ0IGFkZHJlc3MgaXMgMHgleFxuIiwgY3VyX3NlcS0+el9hZGRyKTsNCj4g LQkJYnJlYWs7DQo+IC0JY2FzZSBkZXN0X2FkZHJlc3M6DQo+IC0JCURSTV9ERUJVRygiRGVz dGluYXRpb24gc3RhcnQgYWRkcmVzcyBpcyAweCV4XG4iLA0KPiAtCQkJICBjdXJfc2VxLT5k X2FkZHIpOw0KPiAtCQlicmVhazsNCj4gLQljYXNlIHRleF9hZGRyZXNzOg0KPiAtCQlpZiAo Y3VyX3NlcS0+YWdwX3RleHR1cmUpIHsNCj4gLQkJCXVuc2lnbmVkIHN0YXJ0ID0NCj4gLQkJ CSAgICBjdXJfc2VxLT50ZXhfbGV2ZWxfbG9bY3VyX3NlcS0+dGV4dHVyZV07DQo+IC0JCQl1 bnNpZ25lZCBlbmQgPSBjdXJfc2VxLT50ZXhfbGV2ZWxfaGlbY3VyX3NlcS0+dGV4dHVyZV07 DQo+IC0JCQl1bnNpZ25lZCBsb25nIGxvID0gfjAsIGhpID0gMCwgdG1wOw0KPiAtCQkJdWlu dDMyX3QgKmFkZHIsICpwaXRjaCwgKmhlaWdodCwgdGV4Ow0KPiAtCQkJdW5zaWduZWQgaTsN Cj4gLQkJCWludCBucG90Ow0KPiAtDQo+IC0JCQlpZiAoZW5kID4gOSkNCj4gLQkJCQllbmQg PSA5Ow0KPiAtCQkJaWYgKHN0YXJ0ID4gOSkNCj4gLQkJCQlzdGFydCA9IDk7DQo+IC0NCj4g LQkJCWFkZHIgPQ0KPiAtCQkJICAgICYoY3VyX3NlcS0+dF9hZGRyW3RleCA9IGN1cl9zZXEt PnRleHR1cmVdW3N0YXJ0XSk7DQo+IC0JCQlwaXRjaCA9ICYoY3VyX3NlcS0+cGl0Y2hbdGV4 XVtzdGFydF0pOw0KPiAtCQkJaGVpZ2h0ID0gJihjdXJfc2VxLT5oZWlnaHRbdGV4XVtzdGFy dF0pOw0KPiAtCQkJbnBvdCA9IGN1cl9zZXEtPnRleF9ucG90W3RleF07DQo+IC0JCQlmb3Ig KGkgPSBzdGFydDsgaSA8PSBlbmQ7ICsraSkgew0KPiAtCQkJCXRtcCA9ICphZGRyKys7DQo+ IC0JCQkJaWYgKHRtcCA8IGxvKQ0KPiAtCQkJCQlsbyA9IHRtcDsNCj4gLQkJCQlpZiAoaSA9 PSAwICYmIG5wb3QpDQo+IC0JCQkJCXRtcCArPSAoKmhlaWdodCsrICogKnBpdGNoKyspOw0K PiAtCQkJCWVsc2UNCj4gLQkJCQkJdG1wICs9ICgqaGVpZ2h0KysgPDwgKnBpdGNoKyspOw0K PiAtCQkJCWlmICh0bXAgPiBoaSkNCj4gLQkJCQkJaGkgPSB0bXA7DQo+IC0JCQl9DQo+IC0N Cj4gLQkJCWlmICghdmlhX2RybV9sb29rdXBfYWdwX21hcA0KPiAtCQkJICAgIChjdXJfc2Vx LCBsbywgaGkgLSBsbywgY3VyX3NlcS0+ZGV2KSkgew0KPiAtCQkJCURSTV9FUlJPUg0KPiAt CQkJCSAgICAoIkFHUCB0ZXh0dXJlIGlzIG5vdCBpbiBhbGxvd2VkIG1hcFxuIik7DQo+IC0J CQkJcmV0dXJuIDI7DQo+IC0JCQl9DQo+IC0JCX0NCj4gLQkJYnJlYWs7DQo+IC0JZGVmYXVs dDoNCj4gLQkJYnJlYWs7DQo+IC0JfQ0KPiAtCWN1cl9zZXEtPnVuZmluaXNoZWQgPSBub19z ZXF1ZW5jZTsNCj4gLQlyZXR1cm4gMDsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIF9faW5saW5l X18gaW50DQo+IC1pbnZlc3RpZ2F0ZV9oYXphcmQodWludDMyX3QgY21kLCBoYXphcmRfdCBo eiwgZHJtX3ZpYV9zdGF0ZV90ICpjdXJfc2VxKQ0KPiAtew0KPiAtCXJlZ2lzdGVyIHVpbnQz Ml90IHRtcCwgKnRtcF9hZGRyOw0KPiAtDQo+IC0JaWYgKGN1cl9zZXEtPnVuZmluaXNoZWQg JiYgKGN1cl9zZXEtPnVuZmluaXNoZWQgIT0gc2Vxc1toel0pKSB7DQo+IC0JCWludCByZXQ7 DQo+IC0JCWlmICgocmV0ID0gZmluaXNoX2N1cnJlbnRfc2VxdWVuY2UoY3VyX3NlcSkpKQ0K PiAtCQkJcmV0dXJuIHJldDsNCj4gLQl9DQo+IC0NCj4gLQlzd2l0Y2ggKGh6KSB7DQo+IC0J Y2FzZSBjaGVja19mb3JfaGVhZGVyMjoNCj4gLQkJaWYgKGNtZCA9PSBIQUxDWU9OX0hFQURF UjIpDQo+IC0JCQlyZXR1cm4gMTsNCj4gLQkJcmV0dXJuIDA7DQo+IC0JY2FzZSBjaGVja19m b3JfaGVhZGVyMToNCj4gLQkJaWYgKChjbWQgJiBIQUxDWU9OX0hFQURFUjFNQVNLKSA9PSBI QUxDWU9OX0hFQURFUjEpDQo+IC0JCQlyZXR1cm4gMTsNCj4gLQkJcmV0dXJuIDA7DQo+IC0J Y2FzZSBjaGVja19mb3JfaGVhZGVyMl9lcnI6DQo+IC0JCWlmIChjbWQgPT0gSEFMQ1lPTl9I RUFERVIyKQ0KPiAtCQkJcmV0dXJuIDE7DQo+IC0JCURSTV9FUlJPUigiSWxsZWdhbCBETUEg SEFMQ1lPTl9IRUFERVIyIGNvbW1hbmRcbiIpOw0KPiAtCQlicmVhazsNCj4gLQljYXNlIGNo ZWNrX2Zvcl9oZWFkZXIxX2VycjoNCj4gLQkJaWYgKChjbWQgJiBIQUxDWU9OX0hFQURFUjFN QVNLKSA9PSBIQUxDWU9OX0hFQURFUjEpDQo+IC0JCQlyZXR1cm4gMTsNCj4gLQkJRFJNX0VS Uk9SKCJJbGxlZ2FsIERNQSBIQUxDWU9OX0hFQURFUjEgY29tbWFuZFxuIik7DQo+IC0JCWJy ZWFrOw0KPiAtCWNhc2UgY2hlY2tfZm9yX2ZpcmU6DQo+IC0JCWlmICgoY21kICYgSEFMQ1lP Tl9GSVJFTUFTSykgPT0gSEFMQ1lPTl9GSVJFQ01EKQ0KPiAtCQkJcmV0dXJuIDE7DQo+IC0J CURSTV9FUlJPUigiSWxsZWdhbCBETUEgSEFMQ1lPTl9GSVJFQ01EIGNvbW1hbmRcbiIpOw0K PiAtCQlicmVhazsNCj4gLQljYXNlIGNoZWNrX2Zvcl9kdW1teToNCj4gLQkJaWYgKEhDX0RV TU1ZID09IGNtZCkNCj4gLQkJCXJldHVybiAwOw0KPiAtCQlEUk1fRVJST1IoIklsbGVnYWwg RE1BIEhDX0RVTU1ZIGNvbW1hbmRcbiIpOw0KPiAtCQlicmVhazsNCj4gLQljYXNlIGNoZWNr X2Zvcl9kZDoNCj4gLQkJaWYgKDB4ZGRkZGRkZGQgPT0gY21kKQ0KPiAtCQkJcmV0dXJuIDA7 DQo+IC0JCURSTV9FUlJPUigiSWxsZWdhbCBETUEgMHhkZGRkZGRkZCBjb21tYW5kXG4iKTsN Cj4gLQkJYnJlYWs7DQo+IC0JY2FzZSBjaGVja196X2J1ZmZlcl9hZGRyMDoNCj4gLQkJY3Vy X3NlcS0+dW5maW5pc2hlZCA9IHpfYWRkcmVzczsNCj4gLQkJY3VyX3NlcS0+el9hZGRyID0g KGN1cl9zZXEtPnpfYWRkciAmIDB4RkYwMDAwMDApIHwNCj4gLQkJICAgIChjbWQgJiAweDAw RkZGRkZGKTsNCj4gLQkJcmV0dXJuIDA7DQo+IC0JY2FzZSBjaGVja196X2J1ZmZlcl9hZGRy MToNCj4gLQkJY3VyX3NlcS0+dW5maW5pc2hlZCA9IHpfYWRkcmVzczsNCj4gLQkJY3VyX3Nl cS0+el9hZGRyID0gKGN1cl9zZXEtPnpfYWRkciAmIDB4MDBGRkZGRkYpIHwNCj4gLQkJICAg ICgoY21kICYgMHhGRikgPDwgMjQpOw0KPiAtCQlyZXR1cm4gMDsNCj4gLQljYXNlIGNoZWNr X3pfYnVmZmVyX2FkZHJfbW9kZToNCj4gLQkJY3VyX3NlcS0+dW5maW5pc2hlZCA9IHpfYWRk cmVzczsNCj4gLQkJaWYgKChjbWQgJiAweDAwMDBDMDAwKSA9PSAwKQ0KPiAtCQkJcmV0dXJu IDA7DQo+IC0JCURSTV9FUlJPUigiQXR0ZW1wdCB0byBwbGFjZSBaIGJ1ZmZlciBpbiBzeXN0 ZW0gbWVtb3J5XG4iKTsNCj4gLQkJcmV0dXJuIDI7DQo+IC0JY2FzZSBjaGVja19kZXN0aW5h dGlvbl9hZGRyMDoNCj4gLQkJY3VyX3NlcS0+dW5maW5pc2hlZCA9IGRlc3RfYWRkcmVzczsN Cj4gLQkJY3VyX3NlcS0+ZF9hZGRyID0gKGN1cl9zZXEtPmRfYWRkciAmIDB4RkYwMDAwMDAp IHwNCj4gLQkJICAgIChjbWQgJiAweDAwRkZGRkZGKTsNCj4gLQkJcmV0dXJuIDA7DQo+IC0J Y2FzZSBjaGVja19kZXN0aW5hdGlvbl9hZGRyMToNCj4gLQkJY3VyX3NlcS0+dW5maW5pc2hl ZCA9IGRlc3RfYWRkcmVzczsNCj4gLQkJY3VyX3NlcS0+ZF9hZGRyID0gKGN1cl9zZXEtPmRf YWRkciAmIDB4MDBGRkZGRkYpIHwNCj4gLQkJICAgICgoY21kICYgMHhGRikgPDwgMjQpOw0K PiAtCQlyZXR1cm4gMDsNCj4gLQljYXNlIGNoZWNrX2Rlc3RpbmF0aW9uX2FkZHJfbW9kZToN Cj4gLQkJY3VyX3NlcS0+dW5maW5pc2hlZCA9IGRlc3RfYWRkcmVzczsNCj4gLQkJaWYgKChj bWQgJiAweDAwMDBDMDAwKSA9PSAwKQ0KPiAtCQkJcmV0dXJuIDA7DQo+IC0JCURSTV9FUlJP Ug0KPiAtCQkgICAgKCJBdHRlbXB0IHRvIHBsYWNlIDNEIGRyYXdpbmcgYnVmZmVyIGluIHN5 c3RlbSBtZW1vcnlcbiIpOw0KPiAtCQlyZXR1cm4gMjsNCj4gLQljYXNlIGNoZWNrX3RleHR1 cmVfYWRkcjA6DQo+IC0JCWN1cl9zZXEtPnVuZmluaXNoZWQgPSB0ZXhfYWRkcmVzczsNCj4g LQkJdG1wID0gKGNtZCA+PiAyNCk7DQo+IC0JCXRtcF9hZGRyID0gJmN1cl9zZXEtPnRfYWRk cltjdXJfc2VxLT50ZXh0dXJlXVt0bXBdOw0KPiAtCQkqdG1wX2FkZHIgPSAoKnRtcF9hZGRy ICYgMHhGRjAwMDAwMCkgfCAoY21kICYgMHgwMEZGRkZGRik7DQo+IC0JCXJldHVybiAwOw0K PiAtCWNhc2UgY2hlY2tfdGV4dHVyZV9hZGRyMToNCj4gLQkJY3VyX3NlcS0+dW5maW5pc2hl ZCA9IHRleF9hZGRyZXNzOw0KPiAtCQl0bXAgPSAoKGNtZCA+PiAyNCkgLSAweDIwKTsNCj4g LQkJdG1wICs9IHRtcCA8PCAxOw0KPiAtCQl0bXBfYWRkciA9ICZjdXJfc2VxLT50X2FkZHJb Y3VyX3NlcS0+dGV4dHVyZV1bdG1wXTsNCj4gLQkJKnRtcF9hZGRyID0gKCp0bXBfYWRkciAm IDB4MDBGRkZGRkYpIHwgKChjbWQgJiAweEZGKSA8PCAyNCk7DQo+IC0JCXRtcF9hZGRyKys7 DQo+IC0JCSp0bXBfYWRkciA9ICgqdG1wX2FkZHIgJiAweDAwRkZGRkZGKSB8ICgoY21kICYg MHhGRjAwKSA8PCAxNik7DQo+IC0JCXRtcF9hZGRyKys7DQo+IC0JCSp0bXBfYWRkciA9ICgq dG1wX2FkZHIgJiAweDAwRkZGRkZGKSB8ICgoY21kICYgMHhGRjAwMDApIDw8IDgpOw0KPiAt CQlyZXR1cm4gMDsNCj4gLQljYXNlIGNoZWNrX3RleHR1cmVfYWRkcjI6DQo+IC0JCWN1cl9z ZXEtPnVuZmluaXNoZWQgPSB0ZXhfYWRkcmVzczsNCj4gLQkJY3VyX3NlcS0+dGV4X2xldmVs X2xvW3RtcCA9IGN1cl9zZXEtPnRleHR1cmVdID0gY21kICYgMHgzRjsNCj4gLQkJY3VyX3Nl cS0+dGV4X2xldmVsX2hpW3RtcF0gPSAoY21kICYgMHhGQzApID4+IDY7DQo+IC0JCXJldHVy biAwOw0KPiAtCWNhc2UgY2hlY2tfdGV4dHVyZV9hZGRyMzoNCj4gLQkJY3VyX3NlcS0+dW5m aW5pc2hlZCA9IHRleF9hZGRyZXNzOw0KPiAtCQl0bXAgPSAoKGNtZCA+PiAyNCkgLSBIQ19T dWJBX0hUWG5MMFBpdCk7DQo+IC0JCWlmICh0bXAgPT0gMCAmJg0KPiAtCQkgICAgKGNtZCAm IEhDX0hUWG5FblBpdF9NQVNLKSkgew0KPiAtCQkJY3VyX3NlcS0+cGl0Y2hbY3VyX3NlcS0+ dGV4dHVyZV1bdG1wXSA9DQo+IC0JCQkJKGNtZCAmIEhDX0hUWG5MblBpdF9NQVNLKTsNCj4g LQkJCWN1cl9zZXEtPnRleF9ucG90W2N1cl9zZXEtPnRleHR1cmVdID0gMTsNCj4gLQkJfSBl bHNlIHsNCj4gLQkJCWN1cl9zZXEtPnBpdGNoW2N1cl9zZXEtPnRleHR1cmVdW3RtcF0gPQ0K PiAtCQkJCShjbWQgJiBIQ19IVFhuTG5QaXRFX01BU0spID4+IEhDX0hUWG5MblBpdEVfU0hJ RlQ7DQo+IC0JCQljdXJfc2VxLT50ZXhfbnBvdFtjdXJfc2VxLT50ZXh0dXJlXSA9IDA7DQo+ IC0JCQlpZiAoY21kICYgMHgwMDBGRkZGRikgew0KPiAtCQkJCURSTV9FUlJPUg0KPiAtCQkJ CQkoIlVuaW1wbGVtZW50ZWQgdGV4dHVyZSBsZXZlbCAwIHBpdGNoIG1vZGUuXG4iKTsNCj4g LQkJCQlyZXR1cm4gMjsNCj4gLQkJCX0NCj4gLQkJfQ0KPiAtCQlyZXR1cm4gMDsNCj4gLQlj YXNlIGNoZWNrX3RleHR1cmVfYWRkcjQ6DQo+IC0JCWN1cl9zZXEtPnVuZmluaXNoZWQgPSB0 ZXhfYWRkcmVzczsNCj4gLQkJdG1wX2FkZHIgPSAmY3VyX3NlcS0+dF9hZGRyW2N1cl9zZXEt PnRleHR1cmVdWzldOw0KPiAtCQkqdG1wX2FkZHIgPSAoKnRtcF9hZGRyICYgMHgwMEZGRkZG RikgfCAoKGNtZCAmIDB4RkYpIDw8IDI0KTsNCj4gLQkJcmV0dXJuIDA7DQo+IC0JY2FzZSBj aGVja190ZXh0dXJlX2FkZHI1Og0KPiAtCWNhc2UgY2hlY2tfdGV4dHVyZV9hZGRyNjoNCj4g LQkJY3VyX3NlcS0+dW5maW5pc2hlZCA9IHRleF9hZGRyZXNzOw0KPiAtCQkvKg0KPiAtCQkg KiBUZXh0dXJlIHdpZHRoLiBXZSBkb24ndCBjYXJlIHNpbmNlIHdlIGhhdmUgdGhlIHBpdGNo Lg0KPiAtCQkgKi8NCj4gLQkJcmV0dXJuIDA7DQo+IC0JY2FzZSBjaGVja190ZXh0dXJlX2Fk ZHI3Og0KPiAtCQljdXJfc2VxLT51bmZpbmlzaGVkID0gdGV4X2FkZHJlc3M7DQo+IC0JCXRt cF9hZGRyID0gJihjdXJfc2VxLT5oZWlnaHRbY3VyX3NlcS0+dGV4dHVyZV1bMF0pOw0KPiAt CQl0bXBfYWRkcls1XSA9IDEgPDwgKChjbWQgJiAweDAwRjAwMDAwKSA+PiAyMCk7DQo+IC0J CXRtcF9hZGRyWzRdID0gMSA8PCAoKGNtZCAmIDB4MDAwRjAwMDApID4+IDE2KTsNCj4gLQkJ dG1wX2FkZHJbM10gPSAxIDw8ICgoY21kICYgMHgwMDAwRjAwMCkgPj4gMTIpOw0KPiAtCQl0 bXBfYWRkclsyXSA9IDEgPDwgKChjbWQgJiAweDAwMDAwRjAwKSA+PiA4KTsNCj4gLQkJdG1w X2FkZHJbMV0gPSAxIDw8ICgoY21kICYgMHgwMDAwMDBGMCkgPj4gNCk7DQo+IC0JCXRtcF9h ZGRyWzBdID0gMSA8PCAoY21kICYgMHgwMDAwMDAwRik7DQo+IC0JCXJldHVybiAwOw0KPiAt CWNhc2UgY2hlY2tfdGV4dHVyZV9hZGRyODoNCj4gLQkJY3VyX3NlcS0+dW5maW5pc2hlZCA9 IHRleF9hZGRyZXNzOw0KPiAtCQl0bXBfYWRkciA9ICYoY3VyX3NlcS0+aGVpZ2h0W2N1cl9z ZXEtPnRleHR1cmVdWzBdKTsNCj4gLQkJdG1wX2FkZHJbOV0gPSAxIDw8ICgoY21kICYgMHgw MDAwRjAwMCkgPj4gMTIpOw0KPiAtCQl0bXBfYWRkcls4XSA9IDEgPDwgKChjbWQgJiAweDAw MDAwRjAwKSA+PiA4KTsNCj4gLQkJdG1wX2FkZHJbN10gPSAxIDw8ICgoY21kICYgMHgwMDAw MDBGMCkgPj4gNCk7DQo+IC0JCXRtcF9hZGRyWzZdID0gMSA8PCAoY21kICYgMHgwMDAwMDAw Rik7DQo+IC0JCXJldHVybiAwOw0KPiAtCWNhc2UgY2hlY2tfdGV4dHVyZV9hZGRyX21vZGU6 DQo+IC0JCWN1cl9zZXEtPnVuZmluaXNoZWQgPSB0ZXhfYWRkcmVzczsNCj4gLQkJaWYgKDIg PT0gKHRtcCA9IGNtZCAmIDB4MDAwMDAwMDMpKSB7DQo+IC0JCQlEUk1fRVJST1INCj4gLQkJ CSAgICAoIkF0dGVtcHQgdG8gZmV0Y2ggdGV4dHVyZSBmcm9tIHN5c3RlbSBtZW1vcnkuXG4i KTsNCj4gLQkJCXJldHVybiAyOw0KPiAtCQl9DQo+IC0JCWN1cl9zZXEtPmFncF90ZXh0dXJl ID0gKHRtcCA9PSAzKTsNCj4gLQkJY3VyX3NlcS0+dGV4X3BhbGV0dGVfc2l6ZVtjdXJfc2Vx LT50ZXh0dXJlXSA9DQo+IC0JCSAgICAoY21kID4+IDE2KSAmIDB4MDAwMDAwMDA3Ow0KPiAt CQlyZXR1cm4gMDsNCj4gLQljYXNlIGNoZWNrX2Zvcl92ZXJ0ZXhfY291bnQ6DQo+IC0JCWN1 cl9zZXEtPnZlcnRleF9jb3VudCA9IGNtZCAmIDB4MDAwMEZGRkY7DQo+IC0JCXJldHVybiAw Ow0KPiAtCWNhc2UgY2hlY2tfbnVtYmVyX3RleHVuaXRzOg0KPiAtCQljdXJfc2VxLT5tdWx0 aXRleCA9IChjbWQgPj4gMykgJiAxOw0KPiAtCQlyZXR1cm4gMDsNCj4gLQlkZWZhdWx0Og0K PiAtCQlEUk1fRVJST1IoIklsbGVnYWwgRE1BIGRhdGE6IDB4JXhcbiIsIGNtZCk7DQo+IC0J CXJldHVybiAyOw0KPiAtCX0NCj4gLQlyZXR1cm4gMjsNCj4gLX0NCj4gLQ0KPiAtc3RhdGlj IF9faW5saW5lX18gaW50DQo+IC12aWFfY2hlY2tfcHJpbV9saXN0KHVpbnQzMl90IGNvbnN0 ICoqYnVmZmVyLCBjb25zdCB1aW50MzJfdCAqIGJ1Zl9lbmQsDQo+IC0JCSAgICBkcm1fdmlh X3N0YXRlX3QgKmN1cl9zZXEpDQo+IC17DQo+IC0JZHJtX3ZpYV9wcml2YXRlX3QgKmRldl9w cml2ID0NCj4gLQkgICAgKGRybV92aWFfcHJpdmF0ZV90ICopIGN1cl9zZXEtPmRldi0+ZGV2 X3ByaXZhdGU7DQo+IC0JdWludDMyX3QgYV9maXJlLCBiY21kLCBkd19jb3VudDsNCj4gLQlp bnQgcmV0ID0gMDsNCj4gLQlpbnQgaGF2ZV9maXJlOw0KPiAtCWNvbnN0IHVpbnQzMl90ICpi dWYgPSAqYnVmZmVyOw0KPiAtDQo+IC0Jd2hpbGUgKGJ1ZiA8IGJ1Zl9lbmQpIHsNCj4gLQkJ aGF2ZV9maXJlID0gMDsNCj4gLQkJaWYgKChidWZfZW5kIC0gYnVmKSA8IDIpIHsNCj4gLQkJ CURSTV9FUlJPUg0KPiAtCQkJICAgICgiVW5leHBlY3RlZCB0ZXJtaW5hdGlvbiBvZiBwcmlt aXRpdmUgbGlzdC5cbiIpOw0KPiAtCQkJcmV0ID0gMTsNCj4gLQkJCWJyZWFrOw0KPiAtCQl9 DQo+IC0JCWlmICgoKmJ1ZiAmIEhDX0FDTURfTUFTSykgIT0gSENfQUNNRF9IQ21kQikNCj4g LQkJCWJyZWFrOw0KPiAtCQliY21kID0gKmJ1ZisrOw0KPiAtCQlpZiAoKCpidWYgJiBIQ19B Q01EX01BU0spICE9IEhDX0FDTURfSENtZEEpIHsNCj4gLQkJCURSTV9FUlJPUigiRXhwZWN0 ZWQgVmVydGV4IExpc3QgQSBjb21tYW5kLCBnb3QgMHgleFxuIiwNCj4gLQkJCQkgICpidWYp Ow0KPiAtCQkJcmV0ID0gMTsNCj4gLQkJCWJyZWFrOw0KPiAtCQl9DQo+IC0JCWFfZmlyZSA9 DQo+IC0JCSAgICAqYnVmKysgfCBIQ19IUExFTkRfTUFTSyB8IEhDX0hQTVZhbGlkTl9NQVNL IHwNCj4gLQkJICAgIEhDX0hFM0ZpcmVfTUFTSzsNCj4gLQ0KPiAtCQkvKg0KPiAtCQkgKiBI b3cgbWFueSBkd29yZHMgcGVyIHZlcnRleCA/DQo+IC0JCSAqLw0KPiAtDQo+IC0JCWlmIChj dXJfc2VxLT5hZ3AgJiYgKChiY21kICYgKDB4RiA8PCAxMSkpID09IDApKSB7DQo+IC0JCQlE Uk1fRVJST1IoIklsbGVnYWwgQiBjb21tYW5kIHZlcnRleCBkYXRhIGZvciBBR1AuXG4iKTsN Cj4gLQkJCXJldCA9IDE7DQo+IC0JCQlicmVhazsNCj4gLQkJfQ0KPiAtDQo+IC0JCWR3X2Nv dW50ID0gMDsNCj4gLQkJaWYgKGJjbWQgJiAoMSA8PCA3KSkNCj4gLQkJCWR3X2NvdW50ICs9 IChjdXJfc2VxLT5tdWx0aXRleCkgPyAyIDogMTsNCj4gLQkJaWYgKGJjbWQgJiAoMSA8PCA4 KSkNCj4gLQkJCWR3X2NvdW50ICs9IChjdXJfc2VxLT5tdWx0aXRleCkgPyAyIDogMTsNCj4g LQkJaWYgKGJjbWQgJiAoMSA8PCA5KSkNCj4gLQkJCWR3X2NvdW50Kys7DQo+IC0JCWlmIChi Y21kICYgKDEgPDwgMTApKQ0KPiAtCQkJZHdfY291bnQrKzsNCj4gLQkJaWYgKGJjbWQgJiAo MSA8PCAxMSkpDQo+IC0JCQlkd19jb3VudCsrOw0KPiAtCQlpZiAoYmNtZCAmICgxIDw8IDEy KSkNCj4gLQkJCWR3X2NvdW50Kys7DQo+IC0JCWlmIChiY21kICYgKDEgPDwgMTMpKQ0KPiAt CQkJZHdfY291bnQrKzsNCj4gLQkJaWYgKGJjbWQgJiAoMSA8PCAxNCkpDQo+IC0JCQlkd19j b3VudCsrOw0KPiAtDQo+IC0JCXdoaWxlIChidWYgPCBidWZfZW5kKSB7DQo+IC0JCQlpZiAo KmJ1ZiA9PSBhX2ZpcmUpIHsNCj4gLQkJCQlpZiAoZGV2X3ByaXYtPm51bV9maXJlX29mZnNl dHMgPj0NCj4gLQkJCQkgICAgVklBX0ZJUkVfQlVGX1NJWkUpIHsNCj4gLQkJCQkJRFJNX0VS Uk9SKCJGaXJlIG9mZnNldCBidWZmZXIgZnVsbC5cbiIpOw0KPiAtCQkJCQlyZXQgPSAxOw0K PiAtCQkJCQlicmVhazsNCj4gLQkJCQl9DQo+IC0JCQkJZGV2X3ByaXYtPmZpcmVfb2Zmc2V0 c1tkZXZfcHJpdi0+DQo+IC0JCQkJCQkgICAgICAgbnVtX2ZpcmVfb2Zmc2V0cysrXSA9DQo+ IC0JCQkJICAgIGJ1ZjsNCj4gLQkJCQloYXZlX2ZpcmUgPSAxOw0KPiAtCQkJCWJ1ZisrOw0K PiAtCQkJCWlmIChidWYgPCBidWZfZW5kICYmICpidWYgPT0gYV9maXJlKQ0KPiAtCQkJCQli dWYrKzsNCj4gLQkJCQlicmVhazsNCj4gLQkJCX0NCj4gLQkJCWlmICgoKmJ1ZiA9PSBIQUxD WU9OX0hFQURFUjIpIHx8DQo+IC0JCQkgICAgKCgqYnVmICYgSEFMQ1lPTl9GSVJFTUFTSykg PT0gSEFMQ1lPTl9GSVJFQ01EKSkgew0KPiAtCQkJCURSTV9FUlJPUigiTWlzc2luZyBWZXJ0 ZXggRmlyZSBjb21tYW5kLCAiDQo+IC0JCQkJCSAgIlN0cmF5IFZlcnRleCBGaXJlIGNvbW1h bmQgIG9yIHZlcmlmaWVyICINCj4gLQkJCQkJICAibG9zdCBzeW5jLlxuIik7DQo+IC0JCQkJ cmV0ID0gMTsNCj4gLQkJCQlicmVhazsNCj4gLQkJCX0NCj4gLQkJCWlmICgocmV0ID0gZWF0 X3dvcmRzKCZidWYsIGJ1Zl9lbmQsIGR3X2NvdW50KSkpDQo+IC0JCQkJYnJlYWs7DQo+IC0J CX0NCj4gLQkJaWYgKGJ1ZiA+PSBidWZfZW5kICYmICFoYXZlX2ZpcmUpIHsNCj4gLQkJCURS TV9FUlJPUigiTWlzc2luZyBWZXJ0ZXggRmlyZSBjb21tYW5kIG9yIHZlcmlmaWVyICINCj4g LQkJCQkgICJsb3N0IHN5bmMuXG4iKTsNCj4gLQkJCXJldCA9IDE7DQo+IC0JCQlicmVhazsN Cj4gLQkJfQ0KPiAtCQlpZiAoY3VyX3NlcS0+YWdwICYmICgoYnVmIC0gY3VyX3NlcS0+YnVm X3N0YXJ0KSAmIDB4MDEpKSB7DQo+IC0JCQlEUk1fRVJST1IoIkFHUCBQcmltaXRpdmUgbGlz dCBlbmQgbWlzYWxpZ25lZC5cbiIpOw0KPiAtCQkJcmV0ID0gMTsNCj4gLQkJCWJyZWFrOw0K PiAtCQl9DQo+IC0JfQ0KPiAtCSpidWZmZXIgPSBidWY7DQo+IC0JcmV0dXJuIHJldDsNCj4g LX0NCj4gLQ0KPiAtc3RhdGljIF9faW5saW5lX18gdmVyaWZpZXJfc3RhdGVfdA0KPiAtdmlh X2NoZWNrX2hlYWRlcjIodWludDMyX3QgY29uc3QgKipidWZmZXIsIGNvbnN0IHVpbnQzMl90 ICpidWZfZW5kLA0KPiAtCQkgIGRybV92aWFfc3RhdGVfdCAqaGNfc3RhdGUpDQo+IC17DQo+ IC0JdWludDMyX3QgY21kOw0KPiAtCWludCBoel9tb2RlOw0KPiAtCWhhemFyZF90IGh6Ow0K PiAtCWNvbnN0IHVpbnQzMl90ICpidWYgPSAqYnVmZmVyOw0KPiAtCWNvbnN0IGhhemFyZF90 ICpoel90YWJsZTsNCj4gLQ0KPiAtCWlmICgoYnVmX2VuZCAtIGJ1ZikgPCAyKSB7DQo+IC0J CURSTV9FUlJPUg0KPiAtCQkgICAgKCJJbGxlZ2FsIHRlcm1pbmF0aW9uIG9mIERNQSBIQUxD WU9OX0hFQURFUjIgc2VxdWVuY2UuXG4iKTsNCj4gLQkJcmV0dXJuIHN0YXRlX2Vycm9yOw0K PiAtCX0NCj4gLQlidWYrKzsNCj4gLQljbWQgPSAoKmJ1ZisrICYgMHhGRkZGMDAwMCkgPj4g MTY7DQo+IC0NCj4gLQlzd2l0Y2ggKGNtZCkgew0KPiAtCWNhc2UgSENfUGFyYVR5cGVfQ21k VmRhdGE6DQo+IC0JCWlmICh2aWFfY2hlY2tfcHJpbV9saXN0KCZidWYsIGJ1Zl9lbmQsIGhj X3N0YXRlKSkNCj4gLQkJCXJldHVybiBzdGF0ZV9lcnJvcjsNCj4gLQkJKmJ1ZmZlciA9IGJ1 ZjsNCj4gLQkJcmV0dXJuIHN0YXRlX2NvbW1hbmQ7DQo+IC0JY2FzZSBIQ19QYXJhVHlwZV9O b3RUZXg6DQo+IC0JCWh6X3RhYmxlID0gdGFibGUxOw0KPiAtCQlicmVhazsNCj4gLQljYXNl IEhDX1BhcmFUeXBlX1RleDoNCj4gLQkJaGNfc3RhdGUtPnRleHR1cmUgPSAwOw0KPiAtCQlo el90YWJsZSA9IHRhYmxlMjsNCj4gLQkJYnJlYWs7DQo+IC0JY2FzZSAoSENfUGFyYVR5cGVf VGV4IHwgKEhDX1N1YlR5cGVfVGV4MSA8PCA4KSk6DQo+IC0JCWhjX3N0YXRlLT50ZXh0dXJl ID0gMTsNCj4gLQkJaHpfdGFibGUgPSB0YWJsZTI7DQo+IC0JCWJyZWFrOw0KPiAtCWNhc2Ug KEhDX1BhcmFUeXBlX1RleCB8IChIQ19TdWJUeXBlX1RleEdlbmVyYWwgPDwgOCkpOg0KPiAt CQloel90YWJsZSA9IHRhYmxlMzsNCj4gLQkJYnJlYWs7DQo+IC0JY2FzZSBIQ19QYXJhVHlw ZV9BdXRvOg0KPiAtCQlpZiAoZWF0X3dvcmRzKCZidWYsIGJ1Zl9lbmQsIDIpKQ0KPiAtCQkJ cmV0dXJuIHN0YXRlX2Vycm9yOw0KPiAtCQkqYnVmZmVyID0gYnVmOw0KPiAtCQlyZXR1cm4g c3RhdGVfY29tbWFuZDsNCj4gLQljYXNlIChIQ19QYXJhVHlwZV9QYWxldHRlIHwgKEhDX1N1 YlR5cGVfU3RpcHBsZSA8PCA4KSk6DQo+IC0JCWlmIChlYXRfd29yZHMoJmJ1ZiwgYnVmX2Vu ZCwgMzIpKQ0KPiAtCQkJcmV0dXJuIHN0YXRlX2Vycm9yOw0KPiAtCQkqYnVmZmVyID0gYnVm Ow0KPiAtCQlyZXR1cm4gc3RhdGVfY29tbWFuZDsNCj4gLQljYXNlIChIQ19QYXJhVHlwZV9Q YWxldHRlIHwgKEhDX1N1YlR5cGVfVGV4UGFsZXR0ZTAgPDwgOCkpOg0KPiAtCWNhc2UgKEhD X1BhcmFUeXBlX1BhbGV0dGUgfCAoSENfU3ViVHlwZV9UZXhQYWxldHRlMSA8PCA4KSk6DQo+ IC0JCURSTV9FUlJPUigiVGV4dHVyZSBwYWxldHRlcyBhcmUgcmVqZWN0ZWQgYmVjYXVzZSBv ZiAiDQo+IC0JCQkgICJsYWNrIG9mIGluZm8gaG93IHRvIGRldGVybWluZSB0aGVpciBzaXpl LlxuIik7DQo+IC0JCXJldHVybiBzdGF0ZV9lcnJvcjsNCj4gLQljYXNlIChIQ19QYXJhVHlw ZV9QYWxldHRlIHwgKEhDX1N1YlR5cGVfRm9nVGFibGUgPDwgOCkpOg0KPiAtCQlEUk1fRVJS T1IoIkZvZyBmYWN0b3IgcGFsZXR0ZXMgYXJlIHJlamVjdGVkIGJlY2F1c2Ugb2YgIg0KPiAt CQkJICAibGFjayBvZiBpbmZvIGhvdyB0byBkZXRlcm1pbmUgdGhlaXIgc2l6ZS5cbiIpOw0K PiAtCQlyZXR1cm4gc3RhdGVfZXJyb3I7DQo+IC0JZGVmYXVsdDoNCj4gLQ0KPiAtCQkvKg0K PiAtCQkgKiBUaGVyZSBhcmUgc29tZSB1bmltcGxlbWVudGVkIEhDX1BhcmFUeXBlcyBoZXJl LCB0aGF0DQo+IC0JCSAqIG5lZWQgdG8gYmUgaW1wbGVtZW50ZWQgaWYgdGhlIE1lc2EgZHJp dmVyIGlzIGV4dGVuZGVkLg0KPiAtCQkgKi8NCj4gLQ0KPiAtCQlEUk1fRVJST1IoIkludmFs aWQgb3IgdW5pbXBsZW1lbnRlZCBIQUxDWU9OX0hFQURFUjIgIg0KPiAtCQkJICAiRE1BIHN1 YmNvbW1hbmQ6IDB4JXguIFByZXZpb3VzIGR3b3JkOiAweCV4XG4iLA0KPiAtCQkJICBjbWQs ICooYnVmIC0gMikpOw0KPiAtCQkqYnVmZmVyID0gYnVmOw0KPiAtCQlyZXR1cm4gc3RhdGVf ZXJyb3I7DQo+IC0JfQ0KPiAtDQo+IC0Jd2hpbGUgKGJ1ZiA8IGJ1Zl9lbmQpIHsNCj4gLQkJ Y21kID0gKmJ1ZisrOw0KPiAtCQlpZiAoKGh6ID0gaHpfdGFibGVbY21kID4+IDI0XSkpIHsN Cj4gLQkJCWlmICgoaHpfbW9kZSA9IGludmVzdGlnYXRlX2hhemFyZChjbWQsIGh6LCBoY19z dGF0ZSkpKSB7DQo+IC0JCQkJaWYgKGh6X21vZGUgPT0gMSkgew0KPiAtCQkJCQlidWYtLTsN Cj4gLQkJCQkJYnJlYWs7DQo+IC0JCQkJfQ0KPiAtCQkJCXJldHVybiBzdGF0ZV9lcnJvcjsN Cj4gLQkJCX0NCj4gLQkJfSBlbHNlIGlmIChoY19zdGF0ZS0+dW5maW5pc2hlZCAmJg0KPiAt CQkJICAgZmluaXNoX2N1cnJlbnRfc2VxdWVuY2UoaGNfc3RhdGUpKSB7DQo+IC0JCQlyZXR1 cm4gc3RhdGVfZXJyb3I7DQo+IC0JCX0NCj4gLQl9DQo+IC0JaWYgKGhjX3N0YXRlLT51bmZp bmlzaGVkICYmIGZpbmlzaF9jdXJyZW50X3NlcXVlbmNlKGhjX3N0YXRlKSkNCj4gLQkJcmV0 dXJuIHN0YXRlX2Vycm9yOw0KPiAtCSpidWZmZXIgPSBidWY7DQo+IC0JcmV0dXJuIHN0YXRl X2NvbW1hbmQ7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyBfX2lubGluZV9fIHZlcmlmaWVyX3N0 YXRlX3QNCj4gLXZpYV9wYXJzZV9oZWFkZXIyKGRybV92aWFfcHJpdmF0ZV90ICpkZXZfcHJp diwgdWludDMyX3QgY29uc3QgKipidWZmZXIsDQo+IC0JCSAgY29uc3QgdWludDMyX3QgKmJ1 Zl9lbmQsIGludCAqZmlyZV9jb3VudCkNCj4gLXsNCj4gLQl1aW50MzJfdCBjbWQ7DQo+IC0J Y29uc3QgdWludDMyX3QgKmJ1ZiA9ICpidWZmZXI7DQo+IC0JY29uc3QgdWludDMyX3QgKm5l eHRfZmlyZTsNCj4gLQlpbnQgYnVyc3QgPSAwOw0KPiAtDQo+IC0JbmV4dF9maXJlID0gZGV2 X3ByaXYtPmZpcmVfb2Zmc2V0c1sqZmlyZV9jb3VudF07DQo+IC0JYnVmKys7DQo+IC0JY21k ID0gKCpidWYgJiAweEZGRkYwMDAwKSA+PiAxNjsNCj4gLQl2aWFfd3JpdGUoZGV2X3ByaXYs IEhDX1JFR19UUkFOU19TRVQgKyBIQ19SRUdfQkFTRSwgKmJ1ZisrKTsNCj4gLQlzd2l0Y2gg KGNtZCkgew0KPiAtCWNhc2UgSENfUGFyYVR5cGVfQ21kVmRhdGE6DQo+IC0JCXdoaWxlICgo YnVmIDwgYnVmX2VuZCkgJiYNCj4gLQkJICAgICAgICgqZmlyZV9jb3VudCA8IGRldl9wcml2 LT5udW1fZmlyZV9vZmZzZXRzKSAmJg0KPiAtCQkgICAgICAgKCpidWYgJiBIQ19BQ01EX01B U0spID09IEhDX0FDTURfSENtZEIpIHsNCj4gLQkJCXdoaWxlIChidWYgPD0gbmV4dF9maXJl KSB7DQo+IC0JCQkJdmlhX3dyaXRlKGRldl9wcml2LCBIQ19SRUdfVFJBTlNfU1BBQ0UgKyBI Q19SRUdfQkFTRSArDQo+IC0JCQkJCSAgKGJ1cnN0ICYgNjMpLCAqYnVmKyspOw0KPiAtCQkJ CWJ1cnN0ICs9IDQ7DQo+IC0JCQl9DQo+IC0JCQlpZiAoKGJ1ZiA8IGJ1Zl9lbmQpDQo+IC0J CQkgICAgJiYgKCgqYnVmICYgSEFMQ1lPTl9GSVJFTUFTSykgPT0gSEFMQ1lPTl9GSVJFQ01E KSkNCj4gLQkJCQlidWYrKzsNCj4gLQ0KPiAtCQkJaWYgKCsrKCpmaXJlX2NvdW50KSA8IGRl dl9wcml2LT5udW1fZmlyZV9vZmZzZXRzKQ0KPiAtCQkJCW5leHRfZmlyZSA9IGRldl9wcml2 LT5maXJlX29mZnNldHNbKmZpcmVfY291bnRdOw0KPiAtCQl9DQo+IC0JCWJyZWFrOw0KPiAt CWRlZmF1bHQ6DQo+IC0JCXdoaWxlIChidWYgPCBidWZfZW5kKSB7DQo+IC0NCj4gLQkJCWlm ICgqYnVmID09IEhDX0hFQURFUjIgfHwNCj4gLQkJCSAgICAoKmJ1ZiAmIEhBTENZT05fSEVB REVSMU1BU0spID09IEhBTENZT05fSEVBREVSMSB8fA0KPiAtCQkJICAgICgqYnVmICYgVklB X1ZJREVPTUFTSykgPT0gVklBX1ZJREVPX0hFQURFUjUgfHwNCj4gLQkJCSAgICAoKmJ1ZiAm IFZJQV9WSURFT01BU0spID09IFZJQV9WSURFT19IRUFERVI2KQ0KPiAtCQkJCWJyZWFrOw0K PiAtDQo+IC0JCQl2aWFfd3JpdGUoZGV2X3ByaXYsIEhDX1JFR19UUkFOU19TUEFDRSArIEhD X1JFR19CQVNFICsNCj4gLQkJCQkgIChidXJzdCAmIDYzKSwgKmJ1ZisrKTsNCj4gLQkJCWJ1 cnN0ICs9IDQ7DQo+IC0JCX0NCj4gLQl9DQo+IC0JKmJ1ZmZlciA9IGJ1ZjsNCj4gLQlyZXR1 cm4gc3RhdGVfY29tbWFuZDsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIF9faW5saW5lX18gaW50 IHZlcmlmeV9tbWlvX2FkZHJlc3ModWludDMyX3QgYWRkcmVzcykNCj4gLXsNCj4gLQlpZiAo KGFkZHJlc3MgPiAweDNGRikgJiYgKGFkZHJlc3MgPCAweEMwMCkpIHsNCj4gLQkJRFJNX0VS Uk9SKCJJbnZhbGlkIFZJREVPIERNQSBjb21tYW5kLiAiDQo+IC0JCQkgICJBdHRlbXB0IHRv IGFjY2VzcyAzRC0gb3IgY29tbWFuZCBidXJzdCBhcmVhLlxuIik7DQo+IC0JCXJldHVybiAx Ow0KPiAtCX0gZWxzZSBpZiAoKGFkZHJlc3MgPiAweENGRikgJiYgKGFkZHJlc3MgPCAweDEz MDApKSB7DQo+IC0JCURSTV9FUlJPUigiSW52YWxpZCBWSURFTyBETUEgY29tbWFuZC4gIg0K PiAtCQkJICAiQXR0ZW1wdCB0byBhY2Nlc3MgUENJIERNQSBhcmVhLlxuIik7DQo+IC0JCXJl dHVybiAxOw0KPiAtCX0gZWxzZSBpZiAoYWRkcmVzcyA+IDB4MTNGRikgew0KPiAtCQlEUk1f RVJST1IoIkludmFsaWQgVklERU8gRE1BIGNvbW1hbmQuICINCj4gLQkJCSAgIkF0dGVtcHQg dG8gYWNjZXNzIFZHQSByZWdpc3RlcnMuXG4iKTsNCj4gLQkJcmV0dXJuIDE7DQo+IC0JfQ0K PiAtCXJldHVybiAwOw0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMgX19pbmxpbmVfXyBpbnQNCj4g LXZlcmlmeV92aWRlb190YWlsKHVpbnQzMl90IGNvbnN0ICoqYnVmZmVyLCBjb25zdCB1aW50 MzJfdCAqIGJ1Zl9lbmQsDQo+IC0JCSAgdWludDMyX3QgZHdvcmRzKQ0KPiAtew0KPiAtCWNv bnN0IHVpbnQzMl90ICpidWYgPSAqYnVmZmVyOw0KPiAtDQo+IC0JaWYgKGJ1Zl9lbmQgLSBi dWYgPCBkd29yZHMpIHsNCj4gLQkJRFJNX0VSUk9SKCJJbGxlZ2FsIHRlcm1pbmF0aW9uIG9m IHZpZGVvIGNvbW1hbmQuXG4iKTsNCj4gLQkJcmV0dXJuIDE7DQo+IC0JfQ0KPiAtCXdoaWxl IChkd29yZHMtLSkgew0KPiAtCQlpZiAoKmJ1ZisrKSB7DQo+IC0JCQlEUk1fRVJST1IoIkls bGVnYWwgdmlkZW8gY29tbWFuZCB0YWlsLlxuIik7DQo+IC0JCQlyZXR1cm4gMTsNCj4gLQkJ fQ0KPiAtCX0NCj4gLQkqYnVmZmVyID0gYnVmOw0KPiAtCXJldHVybiAwOw0KPiAtfQ0KPiAt DQo+IC1zdGF0aWMgX19pbmxpbmVfXyB2ZXJpZmllcl9zdGF0ZV90DQo+IC12aWFfY2hlY2tf aGVhZGVyMSh1aW50MzJfdCBjb25zdCAqKmJ1ZmZlciwgY29uc3QgdWludDMyX3QgKiBidWZf ZW5kKQ0KPiAtew0KPiAtCXVpbnQzMl90IGNtZDsNCj4gLQljb25zdCB1aW50MzJfdCAqYnVm ID0gKmJ1ZmZlcjsNCj4gLQl2ZXJpZmllcl9zdGF0ZV90IHJldCA9IHN0YXRlX2NvbW1hbmQ7 DQo+IC0NCj4gLQl3aGlsZSAoYnVmIDwgYnVmX2VuZCkgew0KPiAtCQljbWQgPSAqYnVmOw0K PiAtCQlpZiAoKGNtZCA+ICgoMHgzRkYgPj4gMikgfCBIQUxDWU9OX0hFQURFUjEpKSAmJg0K PiAtCQkgICAgKGNtZCA8ICgoMHhDMDAgPj4gMikgfCBIQUxDWU9OX0hFQURFUjEpKSkgew0K PiAtCQkJaWYgKChjbWQgJiBIQUxDWU9OX0hFQURFUjFNQVNLKSAhPSBIQUxDWU9OX0hFQURF UjEpDQo+IC0JCQkJYnJlYWs7DQo+IC0JCQlEUk1fRVJST1IoIkludmFsaWQgSEFMQ1lPTl9I RUFERVIxIGNvbW1hbmQuICINCj4gLQkJCQkgICJBdHRlbXB0IHRvIGFjY2VzcyAzRC0gb3Ig Y29tbWFuZCBidXJzdCBhcmVhLlxuIik7DQo+IC0JCQlyZXQgPSBzdGF0ZV9lcnJvcjsNCj4g LQkJCWJyZWFrOw0KPiAtCQl9IGVsc2UgaWYgKGNtZCA+ICgoMHhDRkYgPj4gMikgfCBIQUxD WU9OX0hFQURFUjEpKSB7DQo+IC0JCQlpZiAoKGNtZCAmIEhBTENZT05fSEVBREVSMU1BU0sp ICE9IEhBTENZT05fSEVBREVSMSkNCj4gLQkJCQlicmVhazsNCj4gLQkJCURSTV9FUlJPUigi SW52YWxpZCBIQUxDWU9OX0hFQURFUjEgY29tbWFuZC4gIg0KPiAtCQkJCSAgIkF0dGVtcHQg dG8gYWNjZXNzIFZHQSByZWdpc3RlcnMuXG4iKTsNCj4gLQkJCXJldCA9IHN0YXRlX2Vycm9y Ow0KPiAtCQkJYnJlYWs7DQo+IC0JCX0gZWxzZSB7DQo+IC0JCQlidWYgKz0gMjsNCj4gLQkJ fQ0KPiAtCX0NCj4gLQkqYnVmZmVyID0gYnVmOw0KPiAtCXJldHVybiByZXQ7DQo+IC19DQo+ IC0NCj4gLXN0YXRpYyBfX2lubGluZV9fIHZlcmlmaWVyX3N0YXRlX3QNCj4gLXZpYV9wYXJz ZV9oZWFkZXIxKGRybV92aWFfcHJpdmF0ZV90ICpkZXZfcHJpdiwgdWludDMyX3QgY29uc3Qg KipidWZmZXIsDQo+IC0JCSAgY29uc3QgdWludDMyX3QgKmJ1Zl9lbmQpDQo+IC17DQo+IC0J cmVnaXN0ZXIgdWludDMyX3QgY21kOw0KPiAtCWNvbnN0IHVpbnQzMl90ICpidWYgPSAqYnVm ZmVyOw0KPiAtDQo+IC0Jd2hpbGUgKGJ1ZiA8IGJ1Zl9lbmQpIHsNCj4gLQkJY21kID0gKmJ1 ZjsNCj4gLQkJaWYgKChjbWQgJiBIQUxDWU9OX0hFQURFUjFNQVNLKSAhPSBIQUxDWU9OX0hF QURFUjEpDQo+IC0JCQlicmVhazsNCj4gLQkJdmlhX3dyaXRlKGRldl9wcml2LCAoY21kICYg fkhBTENZT05fSEVBREVSMU1BU0spIDw8IDIsICorK2J1Zik7DQo+IC0JCWJ1ZisrOw0KPiAt CX0NCj4gLQkqYnVmZmVyID0gYnVmOw0KPiAtCXJldHVybiBzdGF0ZV9jb21tYW5kOw0KPiAt fQ0KPiAtDQo+IC1zdGF0aWMgX19pbmxpbmVfXyB2ZXJpZmllcl9zdGF0ZV90DQo+IC12aWFf Y2hlY2tfdmhlYWRlcjUodWludDMyX3QgY29uc3QgKipidWZmZXIsIGNvbnN0IHVpbnQzMl90 ICpidWZfZW5kKQ0KPiAtew0KPiAtCXVpbnQzMl90IGRhdGE7DQo+IC0JY29uc3QgdWludDMy X3QgKmJ1ZiA9ICpidWZmZXI7DQo+IC0NCj4gLQlpZiAoYnVmX2VuZCAtIGJ1ZiA8IDQpIHsN Cj4gLQkJRFJNX0VSUk9SKCJJbGxlZ2FsIHRlcm1pbmF0aW9uIG9mIHZpZGVvIGhlYWRlcjUg Y29tbWFuZFxuIik7DQo+IC0JCXJldHVybiBzdGF0ZV9lcnJvcjsNCj4gLQl9DQo+IC0NCj4g LQlkYXRhID0gKmJ1ZisrICYgflZJQV9WSURFT01BU0s7DQo+IC0JaWYgKHZlcmlmeV9tbWlv X2FkZHJlc3MoZGF0YSkpDQo+IC0JCXJldHVybiBzdGF0ZV9lcnJvcjsNCj4gLQ0KPiAtCWRh dGEgPSAqYnVmKys7DQo+IC0JaWYgKCpidWYrKyAhPSAweDAwRjUwMDAwKSB7DQo+IC0JCURS TV9FUlJPUigiSWxsZWdhbCBoZWFkZXI1IGhlYWRlciBkYXRhXG4iKTsNCj4gLQkJcmV0dXJu IHN0YXRlX2Vycm9yOw0KPiAtCX0NCj4gLQlpZiAoKmJ1ZisrICE9IDB4MDAwMDAwMDApIHsN Cj4gLQkJRFJNX0VSUk9SKCJJbGxlZ2FsIGhlYWRlcjUgaGVhZGVyIGRhdGFcbiIpOw0KPiAt CQlyZXR1cm4gc3RhdGVfZXJyb3I7DQo+IC0JfQ0KPiAtCWlmIChlYXRfd29yZHMoJmJ1Ziwg YnVmX2VuZCwgZGF0YSkpDQo+IC0JCXJldHVybiBzdGF0ZV9lcnJvcjsNCj4gLQlpZiAoKGRh dGEgJiAzKSAmJiB2ZXJpZnlfdmlkZW9fdGFpbCgmYnVmLCBidWZfZW5kLCA0IC0gKGRhdGEg JiAzKSkpDQo+IC0JCXJldHVybiBzdGF0ZV9lcnJvcjsNCj4gLQkqYnVmZmVyID0gYnVmOw0K PiAtCXJldHVybiBzdGF0ZV9jb21tYW5kOw0KPiAtDQo+IC19DQo+IC0NCj4gLXN0YXRpYyBf X2lubGluZV9fIHZlcmlmaWVyX3N0YXRlX3QNCj4gLXZpYV9wYXJzZV92aGVhZGVyNShkcm1f dmlhX3ByaXZhdGVfdCAqZGV2X3ByaXYsIHVpbnQzMl90IGNvbnN0ICoqYnVmZmVyLA0KPiAt CQkgICBjb25zdCB1aW50MzJfdCAqYnVmX2VuZCkNCj4gLXsNCj4gLQl1aW50MzJfdCBhZGRy LCBjb3VudCwgaTsNCj4gLQljb25zdCB1aW50MzJfdCAqYnVmID0gKmJ1ZmZlcjsNCj4gLQ0K PiAtCWFkZHIgPSAqYnVmKysgJiB+VklBX1ZJREVPTUFTSzsNCj4gLQlpID0gY291bnQgPSAq YnVmOw0KPiAtCWJ1ZiArPSAzOw0KPiAtCXdoaWxlIChpLS0pDQo+IC0JCXZpYV93cml0ZShk ZXZfcHJpdiwgYWRkciwgKmJ1ZisrKTsNCj4gLQlpZiAoY291bnQgJiAzKQ0KPiAtCQlidWYg Kz0gNCAtIChjb3VudCAmIDMpOw0KPiAtCSpidWZmZXIgPSBidWY7DQo+IC0JcmV0dXJuIHN0 YXRlX2NvbW1hbmQ7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyBfX2lubGluZV9fIHZlcmlmaWVy X3N0YXRlX3QNCj4gLXZpYV9jaGVja192aGVhZGVyNih1aW50MzJfdCBjb25zdCAqKmJ1ZmZl ciwgY29uc3QgdWludDMyX3QgKiBidWZfZW5kKQ0KPiAtew0KPiAtCXVpbnQzMl90IGRhdGE7 DQo+IC0JY29uc3QgdWludDMyX3QgKmJ1ZiA9ICpidWZmZXI7DQo+IC0JdWludDMyX3QgaTsN Cj4gLQ0KPiAtCWlmIChidWZfZW5kIC0gYnVmIDwgNCkgew0KPiAtCQlEUk1fRVJST1IoIkls bGVnYWwgdGVybWluYXRpb24gb2YgdmlkZW8gaGVhZGVyNiBjb21tYW5kXG4iKTsNCj4gLQkJ cmV0dXJuIHN0YXRlX2Vycm9yOw0KPiAtCX0NCj4gLQlidWYrKzsNCj4gLQlkYXRhID0gKmJ1 ZisrOw0KPiAtCWlmICgqYnVmKysgIT0gMHgwMEY2MDAwMCkgew0KPiAtCQlEUk1fRVJST1Io IklsbGVnYWwgaGVhZGVyNiBoZWFkZXIgZGF0YVxuIik7DQo+IC0JCXJldHVybiBzdGF0ZV9l cnJvcjsNCj4gLQl9DQo+IC0JaWYgKCpidWYrKyAhPSAweDAwMDAwMDAwKSB7DQo+IC0JCURS TV9FUlJPUigiSWxsZWdhbCBoZWFkZXI2IGhlYWRlciBkYXRhXG4iKTsNCj4gLQkJcmV0dXJu IHN0YXRlX2Vycm9yOw0KPiAtCX0NCj4gLQlpZiAoKGJ1Zl9lbmQgLSBidWYpIDwgKGRhdGEg PDwgMSkpIHsNCj4gLQkJRFJNX0VSUk9SKCJJbGxlZ2FsIHRlcm1pbmF0aW9uIG9mIHZpZGVv IGhlYWRlcjYgY29tbWFuZFxuIik7DQo+IC0JCXJldHVybiBzdGF0ZV9lcnJvcjsNCj4gLQl9 DQo+IC0JZm9yIChpID0gMDsgaSA8IGRhdGE7ICsraSkgew0KPiAtCQlpZiAodmVyaWZ5X21t aW9fYWRkcmVzcygqYnVmKyspKQ0KPiAtCQkJcmV0dXJuIHN0YXRlX2Vycm9yOw0KPiAtCQli dWYrKzsNCj4gLQl9DQo+IC0JZGF0YSA8PD0gMTsNCj4gLQlpZiAoKGRhdGEgJiAzKSAmJiB2 ZXJpZnlfdmlkZW9fdGFpbCgmYnVmLCBidWZfZW5kLCA0IC0gKGRhdGEgJiAzKSkpDQo+IC0J CXJldHVybiBzdGF0ZV9lcnJvcjsNCj4gLQkqYnVmZmVyID0gYnVmOw0KPiAtCXJldHVybiBz dGF0ZV9jb21tYW5kOw0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMgX19pbmxpbmVfXyB2ZXJpZmll cl9zdGF0ZV90DQo+IC12aWFfcGFyc2VfdmhlYWRlcjYoZHJtX3ZpYV9wcml2YXRlX3QgKmRl dl9wcml2LCB1aW50MzJfdCBjb25zdCAqKmJ1ZmZlciwNCj4gLQkJICAgY29uc3QgdWludDMy X3QgKmJ1Zl9lbmQpDQo+IC17DQo+IC0NCj4gLQl1aW50MzJfdCBhZGRyLCBjb3VudCwgaTsN Cj4gLQljb25zdCB1aW50MzJfdCAqYnVmID0gKmJ1ZmZlcjsNCj4gLQ0KPiAtCWkgPSBjb3Vu dCA9ICorK2J1ZjsNCj4gLQlidWYgKz0gMzsNCj4gLQl3aGlsZSAoaS0tKSB7DQo+IC0JCWFk ZHIgPSAqYnVmKys7DQo+IC0JCXZpYV93cml0ZShkZXZfcHJpdiwgYWRkciwgKmJ1ZisrKTsN Cj4gLQl9DQo+IC0JY291bnQgPDw9IDE7DQo+IC0JaWYgKGNvdW50ICYgMykNCj4gLQkJYnVm ICs9IDQgLSAoY291bnQgJiAzKTsNCj4gLQkqYnVmZmVyID0gYnVmOw0KPiAtCXJldHVybiBz dGF0ZV9jb21tYW5kOw0KPiAtfQ0KPiAtDQo+IC1pbnQNCj4gLXZpYV92ZXJpZnlfY29tbWFu ZF9zdHJlYW0oY29uc3QgdWludDMyX3QgKiBidWYsIHVuc2lnbmVkIGludCBzaXplLA0KPiAt CQkJICBzdHJ1Y3QgZHJtX2RldmljZSAqIGRldiwgaW50IGFncCkNCj4gLXsNCj4gLQ0KPiAt CWRybV92aWFfcHJpdmF0ZV90ICpkZXZfcHJpdiA9IChkcm1fdmlhX3ByaXZhdGVfdCAqKSBk ZXYtPmRldl9wcml2YXRlOw0KPiAtCWRybV92aWFfc3RhdGVfdCAqaGNfc3RhdGUgPSAmZGV2 X3ByaXYtPmhjX3N0YXRlOw0KPiAtCWRybV92aWFfc3RhdGVfdCBzYXZlZF9zdGF0ZSA9ICpo Y19zdGF0ZTsNCj4gLQl1aW50MzJfdCBjbWQ7DQo+IC0JY29uc3QgdWludDMyX3QgKmJ1Zl9l bmQgPSBidWYgKyAoc2l6ZSA+PiAyKTsNCj4gLQl2ZXJpZmllcl9zdGF0ZV90IHN0YXRlID0g c3RhdGVfY29tbWFuZDsNCj4gLQlpbnQgY21lX3ZpZGVvOw0KPiAtCWludCBzdXBwb3J0ZWRf M2Q7DQo+IC0NCj4gLQljbWVfdmlkZW8gPSAoZGV2X3ByaXYtPmNoaXBzZXQgPT0gVklBX1BS T19HUk9VUF9BIHx8DQo+IC0JCSAgICAgZGV2X3ByaXYtPmNoaXBzZXQgPT0gVklBX0RYOV8w KTsNCj4gLQ0KPiAtCXN1cHBvcnRlZF8zZCA9IGRldl9wcml2LT5jaGlwc2V0ICE9IFZJQV9E WDlfMDsNCj4gLQ0KPiAtCWhjX3N0YXRlLT5kZXYgPSBkZXY7DQo+IC0JaGNfc3RhdGUtPnVu ZmluaXNoZWQgPSBub19zZXF1ZW5jZTsNCj4gLQloY19zdGF0ZS0+bWFwX2NhY2hlID0gTlVM TDsNCj4gLQloY19zdGF0ZS0+YWdwID0gYWdwOw0KPiAtCWhjX3N0YXRlLT5idWZfc3RhcnQg PSBidWY7DQo+IC0JZGV2X3ByaXYtPm51bV9maXJlX29mZnNldHMgPSAwOw0KPiAtDQo+IC0J d2hpbGUgKGJ1ZiA8IGJ1Zl9lbmQpIHsNCj4gLQ0KPiAtCQlzd2l0Y2ggKHN0YXRlKSB7DQo+ IC0JCWNhc2Ugc3RhdGVfaGVhZGVyMjoNCj4gLQkJCXN0YXRlID0gdmlhX2NoZWNrX2hlYWRl cjIoJmJ1ZiwgYnVmX2VuZCwgaGNfc3RhdGUpOw0KPiAtCQkJYnJlYWs7DQo+IC0JCWNhc2Ug c3RhdGVfaGVhZGVyMToNCj4gLQkJCXN0YXRlID0gdmlhX2NoZWNrX2hlYWRlcjEoJmJ1Ziwg YnVmX2VuZCk7DQo+IC0JCQlicmVhazsNCj4gLQkJY2FzZSBzdGF0ZV92aGVhZGVyNToNCj4g LQkJCXN0YXRlID0gdmlhX2NoZWNrX3ZoZWFkZXI1KCZidWYsIGJ1Zl9lbmQpOw0KPiAtCQkJ YnJlYWs7DQo+IC0JCWNhc2Ugc3RhdGVfdmhlYWRlcjY6DQo+IC0JCQlzdGF0ZSA9IHZpYV9j aGVja192aGVhZGVyNigmYnVmLCBidWZfZW5kKTsNCj4gLQkJCWJyZWFrOw0KPiAtCQljYXNl IHN0YXRlX2NvbW1hbmQ6DQo+IC0JCQljbWQgPSAqYnVmOw0KPiAtCQkJaWYgKChjbWQgPT0g SEFMQ1lPTl9IRUFERVIyKSAmJiBzdXBwb3J0ZWRfM2QpDQo+IC0JCQkJc3RhdGUgPSBzdGF0 ZV9oZWFkZXIyOw0KPiAtCQkJZWxzZSBpZiAoKGNtZCAmIEhBTENZT05fSEVBREVSMU1BU0sp ID09IEhBTENZT05fSEVBREVSMSkNCj4gLQkJCQlzdGF0ZSA9IHN0YXRlX2hlYWRlcjE7DQo+ IC0JCQllbHNlIGlmIChjbWVfdmlkZW8NCj4gLQkJCQkgJiYgKGNtZCAmIFZJQV9WSURFT01B U0spID09IFZJQV9WSURFT19IRUFERVI1KQ0KPiAtCQkJCXN0YXRlID0gc3RhdGVfdmhlYWRl cjU7DQo+IC0JCQllbHNlIGlmIChjbWVfdmlkZW8NCj4gLQkJCQkgJiYgKGNtZCAmIFZJQV9W SURFT01BU0spID09IFZJQV9WSURFT19IRUFERVI2KQ0KPiAtCQkJCXN0YXRlID0gc3RhdGVf dmhlYWRlcjY7DQo+IC0JCQllbHNlIGlmICgoY21kID09IEhBTENZT05fSEVBREVSMikgJiYg IXN1cHBvcnRlZF8zZCkgew0KPiAtCQkJCURSTV9FUlJPUigiQWNjZWxlcmF0ZWQgM0QgaXMg bm90IHN1cHBvcnRlZCBvbiB0aGlzIGNoaXBzZXQgeWV0LlxuIik7DQo+IC0JCQkJc3RhdGUg PSBzdGF0ZV9lcnJvcjsNCj4gLQkJCX0gZWxzZSB7DQo+IC0JCQkJRFJNX0VSUk9SDQo+IC0J CQkJICAgICgiSW52YWxpZCAvIFVuaW1wbGVtZW50ZWQgRE1BIEhFQURFUiBjb21tYW5kLiAw eCV4XG4iLA0KPiAtCQkJCSAgICAgY21kKTsNCj4gLQkJCQlzdGF0ZSA9IHN0YXRlX2Vycm9y Ow0KPiAtCQkJfQ0KPiAtCQkJYnJlYWs7DQo+IC0JCWNhc2Ugc3RhdGVfZXJyb3I6DQo+IC0J CWRlZmF1bHQ6DQo+IC0JCQkqaGNfc3RhdGUgPSBzYXZlZF9zdGF0ZTsNCj4gLQkJCXJldHVy biAtRUlOVkFMOw0KPiAtCQl9DQo+IC0JfQ0KPiAtCWlmIChzdGF0ZSA9PSBzdGF0ZV9lcnJv cikgew0KPiAtCQkqaGNfc3RhdGUgPSBzYXZlZF9zdGF0ZTsNCj4gLQkJcmV0dXJuIC1FSU5W QUw7DQo+IC0JfQ0KPiAtCXJldHVybiAwOw0KPiAtfQ0KPiAtDQo+IC1pbnQNCj4gLXZpYV9w YXJzZV9jb21tYW5kX3N0cmVhbShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBjb25zdCB1aW50 MzJfdCAqYnVmLA0KPiAtCQkJIHVuc2lnbmVkIGludCBzaXplKQ0KPiAtew0KPiAtDQo+IC0J ZHJtX3ZpYV9wcml2YXRlX3QgKmRldl9wcml2ID0gKGRybV92aWFfcHJpdmF0ZV90ICopIGRl di0+ZGV2X3ByaXZhdGU7DQo+IC0JdWludDMyX3QgY21kOw0KPiAtCWNvbnN0IHVpbnQzMl90 ICpidWZfZW5kID0gYnVmICsgKHNpemUgPj4gMik7DQo+IC0JdmVyaWZpZXJfc3RhdGVfdCBz dGF0ZSA9IHN0YXRlX2NvbW1hbmQ7DQo+IC0JaW50IGZpcmVfY291bnQgPSAwOw0KPiAtDQo+ IC0Jd2hpbGUgKGJ1ZiA8IGJ1Zl9lbmQpIHsNCj4gLQ0KPiAtCQlzd2l0Y2ggKHN0YXRlKSB7 DQo+IC0JCWNhc2Ugc3RhdGVfaGVhZGVyMjoNCj4gLQkJCXN0YXRlID0NCj4gLQkJCSAgICB2 aWFfcGFyc2VfaGVhZGVyMihkZXZfcHJpdiwgJmJ1ZiwgYnVmX2VuZCwNCj4gLQkJCQkJICAg ICAgJmZpcmVfY291bnQpOw0KPiAtCQkJYnJlYWs7DQo+IC0JCWNhc2Ugc3RhdGVfaGVhZGVy MToNCj4gLQkJCXN0YXRlID0gdmlhX3BhcnNlX2hlYWRlcjEoZGV2X3ByaXYsICZidWYsIGJ1 Zl9lbmQpOw0KPiAtCQkJYnJlYWs7DQo+IC0JCWNhc2Ugc3RhdGVfdmhlYWRlcjU6DQo+IC0J CQlzdGF0ZSA9IHZpYV9wYXJzZV92aGVhZGVyNShkZXZfcHJpdiwgJmJ1ZiwgYnVmX2VuZCk7 DQo+IC0JCQlicmVhazsNCj4gLQkJY2FzZSBzdGF0ZV92aGVhZGVyNjoNCj4gLQkJCXN0YXRl ID0gdmlhX3BhcnNlX3ZoZWFkZXI2KGRldl9wcml2LCAmYnVmLCBidWZfZW5kKTsNCj4gLQkJ CWJyZWFrOw0KPiAtCQljYXNlIHN0YXRlX2NvbW1hbmQ6DQo+IC0JCQljbWQgPSAqYnVmOw0K PiAtCQkJaWYgKGNtZCA9PSBIQUxDWU9OX0hFQURFUjIpDQo+IC0JCQkJc3RhdGUgPSBzdGF0 ZV9oZWFkZXIyOw0KPiAtCQkJZWxzZSBpZiAoKGNtZCAmIEhBTENZT05fSEVBREVSMU1BU0sp ID09IEhBTENZT05fSEVBREVSMSkNCj4gLQkJCQlzdGF0ZSA9IHN0YXRlX2hlYWRlcjE7DQo+ IC0JCQllbHNlIGlmICgoY21kICYgVklBX1ZJREVPTUFTSykgPT0gVklBX1ZJREVPX0hFQURF UjUpDQo+IC0JCQkJc3RhdGUgPSBzdGF0ZV92aGVhZGVyNTsNCj4gLQkJCWVsc2UgaWYgKChj bWQgJiBWSUFfVklERU9NQVNLKSA9PSBWSUFfVklERU9fSEVBREVSNikNCj4gLQkJCQlzdGF0 ZSA9IHN0YXRlX3ZoZWFkZXI2Ow0KPiAtCQkJZWxzZSB7DQo+IC0JCQkJRFJNX0VSUk9SDQo+ IC0JCQkJICAgICgiSW52YWxpZCAvIFVuaW1wbGVtZW50ZWQgRE1BIEhFQURFUiBjb21tYW5k LiAweCV4XG4iLA0KPiAtCQkJCSAgICAgY21kKTsNCj4gLQkJCQlzdGF0ZSA9IHN0YXRlX2Vy cm9yOw0KPiAtCQkJfQ0KPiAtCQkJYnJlYWs7DQo+IC0JCWNhc2Ugc3RhdGVfZXJyb3I6DQo+ IC0JCWRlZmF1bHQ6DQo+IC0JCQlyZXR1cm4gLUVJTlZBTDsNCj4gLQkJfQ0KPiAtCX0NCj4g LQlpZiAoc3RhdGUgPT0gc3RhdGVfZXJyb3IpDQo+IC0JCXJldHVybiAtRUlOVkFMOw0KPiAt CXJldHVybiAwOw0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMgdm9pZA0KPiAtc2V0dXBfaGF6YXJk X3RhYmxlKGh6X2luaXRfdCBpbml0X3RhYmxlW10sIGhhemFyZF90IHRhYmxlW10sIGludCBz aXplKQ0KPiAtew0KPiAtCWludCBpOw0KPiAtDQo+IC0JZm9yIChpID0gMDsgaSA8IDI1Njsg KytpKQ0KPiAtCQl0YWJsZVtpXSA9IGZvcmJpZGRlbl9jb21tYW5kOw0KPiAtDQo+IC0JZm9y IChpID0gMDsgaSA8IHNpemU7ICsraSkNCj4gLQkJdGFibGVbaW5pdF90YWJsZVtpXS5jb2Rl XSA9IGluaXRfdGFibGVbaV0uaHo7DQo+IC19DQo+IC0NCj4gLXZvaWQgdmlhX2luaXRfY29t bWFuZF92ZXJpZmllcih2b2lkKQ0KPiAtew0KPiAtCXNldHVwX2hhemFyZF90YWJsZShpbml0 X3RhYmxlMSwgdGFibGUxLCBBUlJBWV9TSVpFKGluaXRfdGFibGUxKSk7DQo+IC0Jc2V0dXBf aGF6YXJkX3RhYmxlKGluaXRfdGFibGUyLCB0YWJsZTIsIEFSUkFZX1NJWkUoaW5pdF90YWJs ZTIpKTsNCj4gLQlzZXR1cF9oYXphcmRfdGFibGUoaW5pdF90YWJsZTMsIHRhYmxlMywgQVJS QVlfU0laRShpbml0X3RhYmxlMykpOw0KPiAtfQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3ZpYS92aWFfdmVyaWZpZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS92aWEvdmlhX3Zl cmlmaWVyLmgNCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDI2YjZkMzYx YWI5NS4uMDAwMDAwMDAwMDAwDQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92aWEvdmlhX3Zl cmlmaWVyLmgNCj4gKysrIC9kZXYvbnVsbA0KPiBAQCAtMSw2MiArMCwwIEBADQo+IC0vKg0K PiAtICogQ29weXJpZ2h0IDIwMDQgVGhlIFVuaWNocm9tZSBQcm9qZWN0LiBBbGwgUmlnaHRz IFJlc2VydmVkLg0KPiAtICoNCj4gLSAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhDQo+IC0gKiBjb3B5 IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAo dGhlICJTb2Z0d2FyZSIpLA0KPiAtICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91 dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbg0KPiAtICogdGhl IHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1 dGUsIHN1YiBsaWNlbnNlLA0KPiAtICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0 d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlDQo+IC0gKiBTb2Z0d2Fy ZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k aXRpb25zOg0KPiAtICoNCj4gLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0 aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlDQo+IC0gKiBuZXh0IHBhcmFn cmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw b3J0aW9ucw0KPiAtICogb2YgdGhlIFNvZnR3YXJlLg0KPiAtICoNCj4gLSAqIFRIRSBTT0ZU V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E LCBFWFBSRVNTIE9SDQo+IC0gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE IFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwNCj4gLSAqIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04tSU5GUklOR0VNRU5ULiBJTiBOTyBF VkVOVCBTSEFMTA0KPiAtICogVEhFIFVOSUNIUk9NRSBQUk9KRUNULCBBTkQvT1IgSVRTIFNV UFBMSUVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUg0KPiAtICogT1RI RVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP UiBPVEhFUldJU0UsDQo+IC0gKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNU SU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVINCj4gLSAqIERFQUxJ TkdTIElOIFRIRSBTT0ZUV0FSRS4NCj4gLSAqDQo+IC0gKiBBdXRob3I6IFRob21hcyBIZWxs c3Ryw7ZtIDIwMDQuDQo+IC0gKi8NCj4gLQ0KPiAtI2lmbmRlZiBfVklBX1ZFUklGSUVSX0hf DQo+IC0jZGVmaW5lIF9WSUFfVkVSSUZJRVJfSF8NCj4gLQ0KPiAtdHlwZWRlZiBlbnVtIHsN Cj4gLQlub19zZXF1ZW5jZSA9IDAsDQo+IC0Jel9hZGRyZXNzLA0KPiAtCWRlc3RfYWRkcmVz cywNCj4gLQl0ZXhfYWRkcmVzcw0KPiAtfSBkcm1fdmlhX3NlcXVlbmNlX3Q7DQo+IC0NCj4g LXR5cGVkZWYgc3RydWN0IHsNCj4gLQl1bnNpZ25lZCB0ZXh0dXJlOw0KPiAtCXVpbnQzMl90 IHpfYWRkcjsNCj4gLQl1aW50MzJfdCBkX2FkZHI7DQo+IC0JdWludDMyX3QgdF9hZGRyWzJd WzEwXTsNCj4gLQl1aW50MzJfdCBwaXRjaFsyXVsxMF07DQo+IC0JdWludDMyX3QgaGVpZ2h0 WzJdWzEwXTsNCj4gLQl1aW50MzJfdCB0ZXhfbGV2ZWxfbG9bMl07DQo+IC0JdWludDMyX3Qg dGV4X2xldmVsX2hpWzJdOw0KPiAtCXVpbnQzMl90IHRleF9wYWxldHRlX3NpemVbMl07DQo+ IC0JdWludDMyX3QgdGV4X25wb3RbMl07DQo+IC0JZHJtX3ZpYV9zZXF1ZW5jZV90IHVuZmlu aXNoZWQ7DQo+IC0JaW50IGFncF90ZXh0dXJlOw0KPiAtCWludCBtdWx0aXRleDsNCj4gLQlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2Ow0KPiAtCWRybV9sb2NhbF9tYXBfdCAqbWFwX2NhY2hl Ow0KPiAtCXVpbnQzMl90IHZlcnRleF9jb3VudDsNCj4gLQlpbnQgYWdwOw0KPiAtCWNvbnN0 IHVpbnQzMl90ICpidWZfc3RhcnQ7DQo+IC19IGRybV92aWFfc3RhdGVfdDsNCj4gLQ0KPiAt ZXh0ZXJuIGludCB2aWFfdmVyaWZ5X2NvbW1hbmRfc3RyZWFtKGNvbnN0IHVpbnQzMl90ICpi dWYsIHVuc2lnbmVkIGludCBzaXplLA0KPiAtCQkJCSAgICAgc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgaW50IGFncCk7DQo+IC1leHRlcm4gaW50IHZpYV9wYXJzZV9jb21tYW5kX3N0cmVh bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBjb25zdCB1aW50MzJfdCAqYnVmLA0KPiAtCQkJ CSAgICB1bnNpZ25lZCBpbnQgc2l6ZSk7DQo+IC0NCj4gLSNlbmRpZg0KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL3ZpYS92aWFfdmlkZW8uYyBiL2RyaXZlcnMvZ3B1L2RybS92 aWEvdmlhX3ZpZGVvLmMNCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDUz YjFmNThmOTliNC4uMDAwMDAwMDAwMDAwDQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92aWEv dmlhX3ZpZGVvLmMNCj4gKysrIC9kZXYvbnVsbA0KPiBAQCAtMSw5NCArMCwwIEBADQo+IC0v Kg0KPiAtICogQ29weXJpZ2h0IDIwMDUgVGhvbWFzIEhlbGxzdHJvbS4gQWxsIFJpZ2h0cyBS ZXNlcnZlZC4NCj4gLSAqDQo+IC0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQ0KPiAtICogY29weSBv ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRo ZSAiU29mdHdhcmUiKSwNCj4gLSAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQg cmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24NCj4gLSAqIHRoZSBy aWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl LCBzdWIgbGljZW5zZSwNCj4gLSAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdh cmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQ0KPiAtICogU29mdHdhcmUg aXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9uczoNCj4gLSAqDQo+IC0gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhp cyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZQ0KPiAtICogbmV4dCBwYXJhZ3Jh cGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9y dGlvbnMNCj4gLSAqIG9mIHRoZSBTb2Z0d2FyZS4NCj4gLSAqDQo+IC0gKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwg RVhQUkVTUyBPUg0KPiAtICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBU TyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksDQo+IC0gKiBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZF TlQgU0hBTEwNCj4gLSAqIFRIRSBBVVRIT1IoUyksIEFORC9PUiBUSEUgQ09QWVJJR0hUIEhP TERFUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUg0KPiAtICogT1RI RVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP UiBPVEhFUldJU0UsDQo+IC0gKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNU SU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVINCj4gLSAqIERFQUxJ TkdTIElOIFRIRSBTT0ZUV0FSRS4NCj4gLSAqDQo+IC0gKiBBdXRob3I6IFRob21hcyBIZWxs c3Ryb20gMjAwNS4NCj4gLSAqDQo+IC0gKiBWaWRlbyBhbmQgWHZNQyByZWxhdGVkIGZ1bmN0 aW9ucy4NCj4gLSAqLw0KPiAtDQo+IC0jaW5jbHVkZSA8ZHJtL2RybV9kZXZpY2UuaD4NCj4g LSNpbmNsdWRlIDxkcm0vdmlhX2RybS5oPg0KPiAtDQo+IC0jaW5jbHVkZSAidmlhX2Rydi5o Ig0KPiAtDQo+IC12b2lkIHZpYV9pbml0X2Z1dGV4KGRybV92aWFfcHJpdmF0ZV90ICpkZXZf cHJpdikNCj4gLXsNCj4gLQl1bnNpZ25lZCBpbnQgaTsNCj4gLQ0KPiAtCURSTV9ERUJVRygi XG4iKTsNCj4gLQ0KPiAtCWZvciAoaSA9IDA7IGkgPCBWSUFfTlJfWFZNQ19MT0NLUzsgKytp KSB7DQo+IC0JCWluaXRfd2FpdHF1ZXVlX2hlYWQoJihkZXZfcHJpdi0+ZGVjb2Rlcl9xdWV1 ZVtpXSkpOw0KPiAtCQlYVk1DTE9DS1BUUihkZXZfcHJpdi0+c2FyZWFfcHJpdiwgaSktPmxv Y2sgPSAwOw0KPiAtCX0NCj4gLX0NCj4gLQ0KPiAtdm9pZCB2aWFfY2xlYW51cF9mdXRleChk cm1fdmlhX3ByaXZhdGVfdCAqZGV2X3ByaXYpDQo+IC17DQo+IC19DQo+IC0NCj4gLXZvaWQg dmlhX3JlbGVhc2VfZnV0ZXgoZHJtX3ZpYV9wcml2YXRlX3QgKmRldl9wcml2LCBpbnQgY29u dGV4dCkNCj4gLXsNCj4gLQl1bnNpZ25lZCBpbnQgaTsNCj4gLQl2b2xhdGlsZSBpbnQgKmxv Y2s7DQo+IC0NCj4gLQlpZiAoIWRldl9wcml2LT5zYXJlYV9wcml2KQ0KPiAtCQlyZXR1cm47 DQo+IC0NCj4gLQlmb3IgKGkgPSAwOyBpIDwgVklBX05SX1hWTUNfTE9DS1M7ICsraSkgew0K PiAtCQlsb2NrID0gKHZvbGF0aWxlIGludCAqKVhWTUNMT0NLUFRSKGRldl9wcml2LT5zYXJl YV9wcml2LCBpKTsNCj4gLQkJaWYgKChfRFJNX0xPQ0tJTkdfQ09OVEVYVCgqbG9jaykgPT0g Y29udGV4dCkpIHsNCj4gLQkJCWlmIChfRFJNX0xPQ0tfSVNfSEVMRCgqbG9jaykNCj4gLQkJ CSAgICAmJiAoKmxvY2sgJiBfRFJNX0xPQ0tfQ09OVCkpIHsNCj4gLQkJCQl3YWtlX3VwKCYo ZGV2X3ByaXYtPmRlY29kZXJfcXVldWVbaV0pKTsNCj4gLQkJCX0NCj4gLQkJCSpsb2NrID0g MDsNCj4gLQkJfQ0KPiAtCX0NCj4gLX0NCj4gLQ0KPiAtaW50IHZpYV9kZWNvZGVyX2Z1dGV4 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAq ZmlsZV9wcml2KQ0KPiAtew0KPiAtCWRybV92aWFfZnV0ZXhfdCAqZnggPSBkYXRhOw0KPiAt CXZvbGF0aWxlIGludCAqbG9jazsNCj4gLQlkcm1fdmlhX3ByaXZhdGVfdCAqZGV2X3ByaXYg PSAoZHJtX3ZpYV9wcml2YXRlX3QgKikgZGV2LT5kZXZfcHJpdmF0ZTsNCj4gLQlkcm1fdmlh X3NhcmVhX3QgKnNBUHJpdiA9IGRldl9wcml2LT5zYXJlYV9wcml2Ow0KPiAtCWludCByZXQg PSAwOw0KPiAtDQo+IC0JRFJNX0RFQlVHKCJcbiIpOw0KPiAtDQo+IC0JaWYgKGZ4LT5sb2Nr ID49IFZJQV9OUl9YVk1DX0xPQ0tTKQ0KPiAtCQlyZXR1cm4gLUVGQVVMVDsNCj4gLQ0KPiAt CWxvY2sgPSAodm9sYXRpbGUgaW50ICopWFZNQ0xPQ0tQVFIoc0FQcml2LCBmeC0+bG9jayk7 DQo+IC0NCj4gLQlzd2l0Y2ggKGZ4LT5mdW5jKSB7DQo+IC0JY2FzZSBWSUFfRlVURVhfV0FJ VDoNCj4gLQkJVklBX1dBSVRfT04ocmV0LCBkZXZfcHJpdi0+ZGVjb2Rlcl9xdWV1ZVtmeC0+ bG9ja10sDQo+IC0JCQkgICAgKGZ4LT5tcyAvIDEwKSAqIChIWiAvIDEwMCksICpsb2NrICE9 IGZ4LT52YWwpOw0KPiAtCQlyZXR1cm4gcmV0Ow0KPiAtCWNhc2UgVklBX0ZVVEVYX1dBS0U6 DQo+IC0JCXdha2VfdXAoJihkZXZfcHJpdi0+ZGVjb2Rlcl9xdWV1ZVtmeC0+bG9ja10pKTsN Cj4gLQkJcmV0dXJuIDA7DQo+IC0JfQ0KPiAtCXJldHVybiAwOw0KPiAtfQ0KPiAtLQ0KPiAy LjM1LjENCj4gDQoNCi0tIA0KVGhvbWFzIFppbW1lcm1hbm4NCkdyYXBoaWNzIERyaXZlciBE ZXZlbG9wZXINClNVU0UgU29mdHdhcmUgU29sdXRpb25zIEdlcm1hbnkgR21iSA0KTWF4ZmVs ZHN0ci4gNSwgOTA0MDkgTsO8cm5iZXJnLCBHZXJtYW55DQooSFJCIDM2ODA5LCBBRyBOw7xy bmJlcmcpDQpHZXNjaMOkZnRzZsO8aHJlcjogSXZvIFRvdGV2DQo= --------------M5ed4EtDrwBvSRjraAbGbDX2-- --------------z0jrIf9ZI2eBht8GF9Nu84oL Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- wsF5BAABCAAjFiEExndm/fpuMUdwYFFolh/E3EQov+AFAmLflXcFAwAAAAAACgkQlh/E3EQov+C+ sQ//X1nq91t5j7bH7YW/f3kfJHJVRBfiOdUUPr/pRRw1i0PYtNiG2aRdve3XKKo6yyHtmyG+bOUc q6lWOU6zch19dWVTqumQ31inzbE0R5NNemMaHQr/guvSBpQ85iLBe/Hs76R60DpovuykOjkLDR5d rdXjI1p7k29cPT8GTInwiFezweOXPyL9jofwgJ9YnLmaSjFbfi0j9GKpuhEWaKR728O3yhq8XCLB vFvFEiRiTWLQFXim/JOvcLGETo70WxuQwycWKay9yNZOQHuU2nqivygsBxNRi9CUp2/jmRRdsAKW KspZMhT/6MHhHq21mf7toT8Si2gy3y6KvxDk1wl53OTWnXCumCnYIMFnlP78flvylEdPBj4s4A0v pZowqTB/wZfSBzYVg1hnGuDYTd38QhDDHIAtuS1OjI7i2G6kQREa3lnqMbIfaDb66tV7JzEsjh0e R++ioQjCN6caEQz9C5GH2Xp0e25MGehWaOObuZCwnvBN3n3rydTlYH3kstvLaQ5OnLG6t4GZzxWK hwxkrzwkQwTAodxZrnw0CbCQW6qf1ycF9l6BsMRNSCkLvALTQia3ZiIGe7Vd2xxPGJxyGraBg86W D1jQqnCmfqwNFXxymQJwKyN7GLJ2EpahYJQGri3zzlaZv4TwuFvbO2ehLY+MIUK0qk/cUSX0sYxM zRc= =2xop -----END PGP SIGNATURE----- --------------z0jrIf9ZI2eBht8GF9Nu84oL--