From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.3 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D3D61C433EF for ; Mon, 20 Sep 2021 08:44:30 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 9B5A860F12 for ; Mon, 20 Sep 2021 08:44:30 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 9B5A860F12 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id A6F506E436; Mon, 20 Sep 2021 08:44:29 +0000 (UTC) Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by gabe.freedesktop.org (Postfix) with ESMTPS id BADF76E436; Mon, 20 Sep 2021 08:44:28 +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-out2.suse.de (Postfix) with ESMTPS id 3EED020045; Mon, 20 Sep 2021 08:44:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1632127467; 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=DoOjQLJM00q0W9z+dvQvVLI59JPTsIjWRw1RgJNm2A0=; b=efMlT1DrGNpbmFs9p+P1YJ5ng4in9UN2/5BLD4/ByQjkUtPHED501H2oJRu8CtU7KQhzfp dqqGOlO+HsAEG/fUnZ+nIUXRKQYCF4Hb/db3jd8/cLuXgOxcA+blZkvsct770v8VRpi9k0 1KD4YmlfiaE35xwjfRbBVMAsX209K58= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1632127467; 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=DoOjQLJM00q0W9z+dvQvVLI59JPTsIjWRw1RgJNm2A0=; b=EFgllYF+K1UQBrB5lwC2V8dVZ2iO2N7MhBQTcQfCTuzKiJpB/EC4bjWe4kFqkXLJz/3sEE jw4GCGx8MOqmGWDg== 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 0E35B13A81; Mon, 20 Sep 2021 08:44:27 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id 6dh0AutJSGFIJgAAMHmgww (envelope-from ); Mon, 20 Sep 2021 08:44:27 +0000 Message-ID: <16aba5db-2664-35f9-26b9-96bf86261494@suse.de> Date: Mon, 20 Sep 2021 10:44:26 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.0.3 Subject: Re: [PATCH] drm/amdgpu: use generic fb helpers instead of setting up AMD own's. Content-Language: en-US From: Thomas Zimmermann To: Alex Deucher , Evan Quan Cc: amd-gfx list , "Deucher, Alexander" , =?UTF-8?Q?Christian_K=c3=b6nig?= , dri-devel References: <20210910032530.725067-1-evan.quan@amd.com> In-Reply-To: Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------jyhV3N0HCioT4Tx7FPjhNvHM" 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: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------jyhV3N0HCioT4Tx7FPjhNvHM Content-Type: multipart/mixed; boundary="------------fYek32D0FNmyjfQqaNnHZHei"; protected-headers="v1" From: Thomas Zimmermann To: Alex Deucher , Evan Quan Cc: amd-gfx list , "Deucher, Alexander" , =?UTF-8?Q?Christian_K=c3=b6nig?= , dri-devel Message-ID: <16aba5db-2664-35f9-26b9-96bf86261494@suse.de> Subject: Re: [PATCH] drm/amdgpu: use generic fb helpers instead of setting up AMD own's. References: <20210910032530.725067-1-evan.quan@amd.com> In-Reply-To: --------------fYek32D0FNmyjfQqaNnHZHei Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGkNCg0KQW0gMjAuMDkuMjEgdW0gMTA6NDEgc2NocmllYiBUaG9tYXMgWmltbWVybWFubjoN Cj4gKGNjJ2luZyBkcmktZGV2ZWwpDQo+IA0KPiBIaQ0KPiANCj4gQW0gMTMuMDkuMjEgdW0g MTY6MzYgc2NocmllYiBBbGV4IERldWNoZXI6DQo+PiBPbiBUaHUsIFNlcCA5LCAyMDIxIGF0 IDExOjI1IFBNIEV2YW4gUXVhbiA8ZXZhbi5xdWFuQGFtZC5jb20+IHdyb3RlOg0KPj4+DQo+ Pj4gV2l0aCB0aGUgc2hhZG93IGJ1ZmZlciBzdXBwb3J0IGZyb20gZ2VuZXJpYyBmcmFtZWJ1 ZmZlciBlbXVsYXRpb24sIGl0J3MNCj4+PiBwb3NzaWJsZSBub3cgdG8gaGF2ZSBydW5wbSBr aWNrZWQgd2hlbiBubyB1cGRhdGUgZm9yIGNvbnNvbGUuDQo+Pj4NCj4+PiBDaGFuZ2UtSWQ6 IEkyODU0NzJjOTEwMGVlNmY2NDlkM2YzZjM1NDhmNDAyYjljZDM0ZWFmDQo+Pj4gU2lnbmVk LW9mZi1ieTogRXZhbiBRdWFuIDxldmFuLnF1YW5AYW1kLmNvbT4NCj4+PiBBY2tlZC1ieTog Q2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPg0KPj4NCj4+IFJl dmlld2VkLWJ5OiBBbGV4IERldWNoZXIgPGFsZXhhbmRlci5kZXVjaGVyQGFtZC5jb20+DQo+ IA0KPiBUaGVyZSB3YXMgYSBsb25nIGRpc2N1c3Npb24gYWJvdXQgdGhpcyBjaGFuZ2Ugd2l0 aGluIHJhZGVvbiBhbmQgdGhlIA0KPiByZXN1bHQgd2FzIHRoYXQgaXQgY2Fubm90IGJlIGRv bmUuIFsxXSBJIGRvbid0IHJlbWVtYmVyIHRoZSBmdWxsIA0KPiBkZXRhaWxzLCBidXQgc2Vt YW50aWNzIG9mIHRoZSB2bWFwL3Z1bm1hcCBmb3IgZG1hLWJ1ZnMgd2VyZSBub3QgDQo+IGNv bXBhdGlibGUgSUlSQy4gQW5kIHRoZSByZXNvbHV0aW9uIHdhcyBhIHJlZGVzaWduIG9mIHRo ZSBBUEkuDQoNCkkgcG9zdGVkIGEgcGF0Y2hzZXQgd2l0aCBhIG5ldyBpbnRlcmZhY2UgYXQg WzFdLg0KDQpCZXN0IHJlZ2FyZHMNClRob21hcw0KDQpbMV0gDQpodHRwczovL2xvcmUua2Vy bmVsLm9yZy9kcmktZGV2ZWwvMjAyMDEyMDkxNDI1MjcuMjY0MTUtMS10emltbWVybWFubkBz dXNlLmRlLw0KDQo+IA0KPiBJZiB0aGF0IGhhcyBjaGFuZ2VkLCBJJ2QgYmUgaGFwcHkgdG8g c2VlIHRoaXMgcGF0Y2ggbWVyZ2VkLiBPdGhlcndpc2UsIA0KPiBpdCBzaG91bGQgYmV0dGVy IG5vdCBiZSB0YWtlbi4NCj4gDQo+IEJlc3QgcmVnYXJkcw0KPiBUaG9tYXMNCj4gDQo+IFsx XSBodHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvcGF0Y2gvNDAwMDU0Lz9zZXJp ZXM9ODM3NjUmcmV2PTENCj4gDQo+Pg0KPj4+IC0tIA0KPj4+IHYxLT52MjoNCj4+PiDCoMKg IC0gcmVuYW1lIGFtZGdwdV9hbGlnbl9waXRjaCBhcyBhbWRncHVfZ2VtX2FsaWduX3BpdGNo IHRvIGFsaWduIHdpdGgNCj4+PiDCoMKgwqDCoCBvdGhlciBBUElzIGZyb20gdGhlIHNhbWUg ZmlsZSAoQWxleCkNCj4+PiAtLS0NCj4+PiDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9NYWtlZmlsZcKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMiArLQ0KPj4+IMKgIGRyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuY8KgIHzCoCAxMiArLQ0KPj4+IMKg IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kaXNwbGF5LmMgfMKgIDExICst DQo+Pj4gwqAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jwqDCoMKg wqAgfMKgIDEzICsNCj4+PiDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf ZmIuY8KgwqDCoMKgwqAgfCAzODggLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4+PiDCoCBkcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmPCoMKgwqDCoCB8wqAgMzAgKy0N Cj4+PiDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW9kZS5owqDCoMKg IHzCoCAyMCAtDQo+Pj4gwqAgNyBmaWxlcyBjaGFuZ2VkLCA1MCBpbnNlcnRpb25zKCspLCA0 MjYgZGVsZXRpb25zKC0pDQo+Pj4gwqAgZGVsZXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9mYi5jDQo+Pj4NCj4+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUgDQo+Pj4gYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9NYWtlZmlsZQ0KPj4+IGluZGV4IDhkMDc0ODE4NGExNC4uNzNhMjE1 MWVlNDNmIDEwMDY0NA0KPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01h a2VmaWxlDQo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUN Cj4+PiBAQCAtNDUsNyArNDUsNyBAQCBhbWRncHUteSArPSBhbWRncHVfZGV2aWNlLm8gYW1k Z3B1X2ttcy5vIFwNCj4+PiDCoMKgwqDCoMKgwqDCoMKgIGFtZGdwdV9hdG9tYmlvcy5vIGF0 b21iaW9zX2NydGMubyBhbWRncHVfY29ubmVjdG9ycy5vIFwNCj4+PiDCoMKgwqDCoMKgwqDC oMKgIGF0b20ubyBhbWRncHVfZmVuY2UubyBhbWRncHVfdHRtLm8gYW1kZ3B1X29iamVjdC5v IA0KPj4+IGFtZGdwdV9nYXJ0Lm8gXA0KPj4+IMKgwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X2Vu Y29kZXJzLm8gYW1kZ3B1X2Rpc3BsYXkubyBhbWRncHVfaTJjLm8gXA0KPj4+IC3CoMKgwqDC oMKgwqAgYW1kZ3B1X2ZiLm8gYW1kZ3B1X2dlbS5vIGFtZGdwdV9yaW5nLm8gXA0KPj4+ICvC oMKgwqDCoMKgwqAgYW1kZ3B1X2dlbS5vIGFtZGdwdV9yaW5nLm8gXA0KPj4+IMKgwqDCoMKg wqDCoMKgwqAgYW1kZ3B1X2NzLm8gYW1kZ3B1X2Jpb3MubyBhbWRncHVfYmVuY2htYXJrLm8g YW1kZ3B1X3Rlc3QubyBcDQo+Pj4gwqDCoMKgwqDCoMKgwqDCoCBhdG9tYmlvc19kcC5vIGFt ZGdwdV9hZm10Lm8gYW1kZ3B1X3RyYWNlX3BvaW50cy5vIFwNCj4+PiDCoMKgwqDCoMKgwqDC oMKgIGF0b21iaW9zX2VuY29kZXJzLm8gYW1kZ3B1X3NhLm8gYXRvbWJpb3NfaTJjLm8gXA0K Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2 aWNlLmMgDQo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNl LmMNCj4+PiBpbmRleCA2ODJkNDU5ZTk5MmEuLmJjYzMwOGI3ZjgyNiAxMDA2NDQNCj4+PiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMNCj4+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMNCj4+PiBA QCAtMzY5NSw4ICszNjk1LDYgQEAgaW50IGFtZGdwdV9kZXZpY2VfaW5pdChzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwNCj4+PiDCoMKgwqDCoMKgwqDCoMKgIC8qIEdldCBhIGxvZzIg Zm9yIGVhc3kgZGl2aXNpb25zLiAqLw0KPj4+IMKgwqDCoMKgwqDCoMKgwqAgYWRldi0+bW1f c3RhdHMubG9nMl9tYXhfTUJwcyA9IGlsb2cyKG1heCgxdSwgbWF4X01CcHMpKTsNCj4+Pg0K Pj4+IC3CoMKgwqDCoMKgwqAgYW1kZ3B1X2ZiZGV2X2luaXQoYWRldik7DQo+Pj4gLQ0KPj4+ IMKgwqDCoMKgwqDCoMKgwqAgciA9IGFtZGdwdV9wbV9zeXNmc19pbml0KGFkZXYpOw0KPj4+ IMKgwqDCoMKgwqDCoMKgwqAgaWYgKHIpIHsNCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBhZGV2LT5wbV9zeXNmc19lbiA9IGZhbHNlOw0KPj4+IEBAIC0zODU0LDgg KzM4NTIsNiBAQCB2b2lkIGFtZGdwdV9kZXZpY2VfZmluaV9odyhzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSANCj4+PiAqYWRldikNCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBhbWRncHVfdWNvZGVfc3lzZnNfZmluaShhZGV2KTsNCj4+PiDCoMKgwqDCoMKgwqDCoMKg IHN5c2ZzX3JlbW92ZV9maWxlcygmYWRldi0+ZGV2LT5rb2JqLCBhbWRncHVfZGV2X2F0dHJp YnV0ZXMpOw0KPj4+DQo+Pj4gLcKgwqDCoMKgwqDCoCBhbWRncHVfZmJkZXZfZmluaShhZGV2 KTsNCj4+PiAtDQo+Pj4gwqDCoMKgwqDCoMKgwqDCoCBhbWRncHVfaXJxX2ZpbmlfaHcoYWRl dik7DQo+Pj4NCj4+PiDCoMKgwqDCoMKgwqDCoMKgIGFtZGdwdV9kZXZpY2VfaXBfZmluaV9l YXJseShhZGV2KTsNCj4+PiBAQCAtMzkzMSw3ICszOTI3LDcgQEAgaW50IGFtZGdwdV9kZXZp Y2Vfc3VzcGVuZChzdHJ1Y3QgZHJtX2RldmljZSANCj4+PiAqZGV2LCBib29sIGZiY29uKQ0K Pj4+IMKgwqDCoMKgwqDCoMKgwqAgZHJtX2ttc19oZWxwZXJfcG9sbF9kaXNhYmxlKGRldik7 DQo+Pj4NCj4+PiDCoMKgwqDCoMKgwqDCoMKgIGlmIChmYmNvbikNCj4+PiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBhbWRncHVfZmJkZXZfc2V0X3N1c3BlbmQoYWRldiwgMSk7 DQo+Pj4gKyAgICAgICAgICAgICAgIA0KPj4+IGRybV9mYl9oZWxwZXJfc2V0X3N1c3BlbmRf dW5sb2NrZWQoYWRldl90b19kcm0oYWRldiktPmZiX2hlbHBlciwgdHJ1ZSk7DQo+Pj4NCj4+ PiDCoMKgwqDCoMKgwqDCoMKgIGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmYWRldi0+ZGVs YXllZF9pbml0X3dvcmspOw0KPj4+DQo+Pj4gQEAgLTQwMDksNyArNDAwNSw3IEBAIGludCBh bWRncHVfZGV2aWNlX3Jlc3VtZShzdHJ1Y3QgZHJtX2RldmljZSANCj4+PiAqZGV2LCBib29s IGZiY29uKQ0KPj4+IMKgwqDCoMKgwqDCoMKgwqAgZmx1c2hfZGVsYXllZF93b3JrKCZhZGV2 LT5kZWxheWVkX2luaXRfd29yayk7DQo+Pj4NCj4+PiDCoMKgwqDCoMKgwqDCoMKgIGlmIChm YmNvbikNCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhbWRncHVfZmJkZXZf c2V0X3N1c3BlbmQoYWRldiwgMCk7DQo+Pj4gKyAgICAgICAgICAgICAgIA0KPj4+IGRybV9m Yl9oZWxwZXJfc2V0X3N1c3BlbmRfdW5sb2NrZWQoYWRldl90b19kcm0oYWRldiktPmZiX2hl bHBlciwgZmFsc2UpOw0KPj4+DQo+Pj4gwqDCoMKgwqDCoMKgwqDCoCBkcm1fa21zX2hlbHBl cl9wb2xsX2VuYWJsZShkZXYpOw0KPj4+DQo+Pj4gQEAgLTQ2MzgsNyArNDYzNCw3IEBAIGlu dCBhbWRncHVfZG9fYXNpY19yZXNldChzdHJ1Y3QgbGlzdF9oZWFkIA0KPj4+ICpkZXZpY2Vf bGlzdF9oYW5kbGUsDQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocikNCj4+PiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBnb3RvIG91dDsNCj4+Pg0KPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X2ZiZGV2 X3NldF9zdXNwZW5kKHRtcF9hZGV2LCAwKTsNCj4+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIA0KPj4+IGRybV9mYl9oZWxwZXJfc2V0X3N1c3BlbmRfdW5sb2NrZWQoYWRl dl90b19kcm0odG1wX2FkZXYpLT5mYl9oZWxwZXIsIA0KPj4+IGZhbHNlKTsNCj4+Pg0KPj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgLyoNCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBUaGUgR1BVIGVudGVycyBiYWQg c3RhdGUgb25jZSANCj4+PiBmYXVsdHkgcGFnZXMNCj4+PiBAQCAtNTAyNSw3ICs1MDIxLDcg QEAgaW50IGFtZGdwdV9kZXZpY2VfZ3B1X3JlY292ZXIoc3RydWN0IA0KPj4+IGFtZGdwdV9k ZXZpY2UgKmFkZXYsDQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAq Lw0KPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFtZGdwdV91bnJlZ2lz dGVyX2dwdV9pbnN0YW5jZSh0bXBfYWRldik7DQo+Pj4NCj4+PiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBhbWRncHVfZmJkZXZfc2V0X3N1c3BlbmQodG1wX2FkZXYsIDEpOw0K Pj4+ICsgICAgICAgICAgICAgICANCj4+PiBkcm1fZmJfaGVscGVyX3NldF9zdXNwZW5kX3Vu bG9ja2VkKGFkZXZfdG9fZHJtKGFkZXYpLT5mYl9oZWxwZXIsIHRydWUpOw0KPj4+DQo+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogZGlzYWJsZSByYXMgb24gQUxM IElQcyAqLw0KPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghbmVl ZF9lbWVyZ2VuY3lfcmVzdGFydCAmJg0KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfZGlzcGxheS5jIA0KPj4+IGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X2Rpc3BsYXkuYw0KPj4+IGluZGV4IDdhNzMxNjczMTkxMS4u NThiZmM3ZjAwZDc2IDEwMDY0NA0KPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9kaXNwbGF5LmMNCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfZGlzcGxheS5jDQo+Pj4gQEAgLTE1NzIsMTMgKzE1NzIsMTAgQEAgaW50 IGFtZGdwdV9kaXNwbGF5X3N1c3BlbmRfaGVscGVyKHN0cnVjdCANCj4+PiBhbWRncHVfZGV2 aWNlICphZGV2KQ0KPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBjb250aW51ZTsNCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB9DQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcm9iaiA9IGdl bV90b19hbWRncHVfYm8oZmItPm9ialswXSk7DQo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgLyogZG9uJ3QgdW5waW4ga2VybmVsIGZiIG9iamVjdHMgKi8NCj4+PiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIWFtZGdwdV9mYmRldl9yb2JqX2lzX2Zi KGFkZXYsIHJvYmopKSB7DQo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHIgPSBhbWRncHVfYm9fcmVzZXJ2ZShyb2JqLCB0cnVlKTsNCj4+PiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHIgPT0g MCkgew0KPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X2JvX3VucGluKHJvYmopOw0KPj4+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg YW1kZ3B1X2JvX3VucmVzZXJ2ZShyb2JqKTsNCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQ0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHIgPSBhbWRncHVfYm9fcmVzZXJ2ZShyb2JqLCB0cnVlKTsNCj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAociA9PSAwKSB7DQo+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFtZGdwdV9ib191bnBpbihyb2Jq KTsNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg YW1kZ3B1X2JvX3VucmVzZXJ2ZShyb2JqKTsNCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB9DQo+Pj4gwqDCoMKgwqDCoMKgwqDCoCB9DQo+Pj4gwqDCoMKgwqDCoMKg wqDCoCByZXR1cm4gMDsNCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X2Rydi5jIA0KPj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X2Rydi5jDQo+Pj4gaW5kZXggOTg3NDgyYzI2YjFhLi5kYjIxYWY1ZTg0ZWQgMTAw NjQ0DQo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5j DQo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jDQo+ Pj4gQEAgLTEzNDgsNiArMTM0OCwxOSBAQCBzdGF0aWMgaW50IGFtZGdwdV9wY2lfcHJvYmUo c3RydWN0IHBjaV9kZXYgKnBkZXYsDQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgZ290byBlcnJfcGNpOw0KPj4+IMKgwqDCoMKgwqDCoMKgwqAgfQ0KPj4+DQo+Pj4g K8KgwqDCoMKgwqDCoCAvKg0KPj4+ICvCoMKgwqDCoMKgwqDCoCAqIDEuIGRvbid0IGluaXQg ZmJkZXYgb24gaHcgd2l0aG91dCBEQ0UNCj4+PiArwqDCoMKgwqDCoMKgwqAgKiAyLiBkb24n dCBpbml0IGZiZGV2IGlmIHRoZXJlIGFyZSBubyBjb25uZWN0b3JzDQo+Pj4gK8KgwqDCoMKg wqDCoMKgICovDQo+Pj4gK8KgwqDCoMKgwqDCoCBpZiAoYWRldi0+bW9kZV9pbmZvLm1vZGVf Y29uZmlnX2luaXRpYWxpemVkICYmDQo+Pj4gKyAgICAgICAgICAgDQo+Pj4gIWxpc3RfZW1w dHkoJmFkZXZfdG9fZHJtKGFkZXYpLT5tb2RlX2NvbmZpZy5jb25uZWN0b3JfbGlzdCkpIHsN Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBzZWxlY3QgOCBicHAgY29u c29sZSBvbiBsb3cgdnJhbSBjYXJkcyAqLw0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGlmIChhZGV2LT5nbWMucmVhbF92cmFtX3NpemUgPD0gKDMyKjEwMjQqMTAyNCkp DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRy bV9mYmRldl9nZW5lcmljX3NldHVwKGFkZXZfdG9fZHJtKGFkZXYpLCA4KTsNCj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbHNlDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRybV9mYmRldl9nZW5lcmljX3NldHVwKGFk ZXZfdG9fZHJtKGFkZXYpLCAzMik7DQo+Pj4gK8KgwqDCoMKgwqDCoCB9DQo+Pj4gKw0KPj4+ IMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gYW1kZ3B1X2RlYnVnZnNfaW5pdChhZGV2KTsNCj4+ PiDCoMKgwqDCoMKgwqDCoMKgIGlmIChyZXQpDQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgRFJNX0VSUk9SKCJDcmVhdGluZyBkZWJ1Z2ZzIGZpbGVzIGZhaWxlZCAo JWQpLlxuIiwgDQo+Pj4gcmV0KTsNCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X2ZiLmMgDQo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfZmIuYw0KPj4+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0KPj4+IGlu ZGV4IGNkMGFjYmVhNzVkYS4uMDAwMDAwMDAwMDAwDQo+Pj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2ZiLmMNCj4+PiArKysgL2Rldi9udWxsDQo+Pj4gQEAg LTEsMzg4ICswLDAgQEANCj4+PiAtLyoNCj4+PiAtICogQ29weXJpZ2h0IMKpIDIwMDcgRGF2 aWQgQWlybGllDQo+Pj4gLSAqDQo+Pj4gLSAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50 ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIA0KPj4+IG9idGFpbmluZyBhDQo+ Pj4gLSAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0 aW9uIGZpbGVzICh0aGUgDQo+Pj4gIlNvZnR3YXJlIiksDQo+Pj4gLSAqIHRvIGRlYWwgaW4g dGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IA0K Pj4+IGxpbWl0YXRpb24NCj4+PiAtICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlm eSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIA0KPj4+IHN1YmxpY2Vuc2UsDQo+Pj4g LSAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQg cGVyc29ucyB0byB3aG9tIA0KPj4+IHRoZQ0KPj4+IC0gKiBTb2Z0d2FyZSBpcyBmdXJuaXNo ZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KPj4+ IC0gKg0KPj4+IC0gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt aXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIA0KPj4+IHRoZSBuZXh0DQo+Pj4gLSAqIHBhcmFn cmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCAN Cj4+PiBwb3J0aW9ucyBvZiB0aGUNCj4+PiAtICogU29mdHdhcmUuDQo+Pj4gLSAqDQo+Pj4g LSAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZ IE9GIEFOWSBLSU5ELCANCj4+PiBFWFBSRVNTIE9SDQo+Pj4gLSAqIElNUExJRUQsIElOQ0xV RElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgDQo+Pj4gTUVSQ0hB TlRBQklMSVRZLA0KPj4+IC0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB TkQgTk9OSU5GUklOR0VNRU5ULsKgIElOIE5PIA0KPj4+IEVWRU5UIFNIQUxMDQo+Pj4gLSAq IFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENM QUlNLCBEQU1BR0VTIA0KPj4+IE9SIE9USEVSDQo+Pj4gLSAqIExJQUJJTElUWSwgV0hFVEhF UiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCANCj4+PiBB UklTSU5HDQo+Pj4gLSAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhF IFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVINCj4+PiAtICogREVBTElOR1MgSU4gVEhF IFNPRlRXQVJFLg0KPj4+IC0gKg0KPj4+IC0gKiBBdXRob3JzOg0KPj4+IC0gKsKgwqDCoMKg IERhdmlkIEFpcmxpZQ0KPj4+IC0gKi8NCj4+PiAtDQo+Pj4gLSNpbmNsdWRlIDxsaW51eC9t b2R1bGUuaD4NCj4+PiAtI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4NCj4+PiAtI2lu Y2x1ZGUgPGxpbnV4L3NsYWIuaD4NCj4+PiAtI2luY2x1ZGUgPGxpbnV4L3ZnYV9zd2l0Y2hl cm9vLmg+DQo+Pj4gLQ0KPj4+IC0jaW5jbHVkZSA8ZHJtL2FtZGdwdV9kcm0uaD4NCj4+PiAt I2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPg0KPj4+IC0jaW5jbHVkZSA8ZHJtL2RybV9jcnRj X2hlbHBlci5oPg0KPj4+IC0jaW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4NCj4+PiAt I2luY2x1ZGUgPGRybS9kcm1fZm91cmNjLmg+DQo+Pj4gLQ0KPj4+IC0jaW5jbHVkZSAiYW1k Z3B1LmgiDQo+Pj4gLSNpbmNsdWRlICJjaWtkLmgiDQo+Pj4gLSNpbmNsdWRlICJhbWRncHVf Z2VtLmgiDQo+Pj4gLQ0KPj4+IC0jaW5jbHVkZSAiYW1kZ3B1X2Rpc3BsYXkuaCINCj4+PiAt DQo+Pj4gLS8qIG9iamVjdCBoaWVyYXJjaHkgLQ0KPj4+IC3CoMKgIHRoaXMgY29udGFpbnMg YSBoZWxwZXIgKyBhIGFtZGdwdSBmYg0KPj4+IC3CoMKgIHRoZSBoZWxwZXIgY29udGFpbnMg YSBwb2ludGVyIHRvIGFtZGdwdSBmcmFtZWJ1ZmZlciBiYXNlY2xhc3MuDQo+Pj4gLSovDQo+ Pj4gLQ0KPj4+IC1zdGF0aWMgaW50DQo+Pj4gLWFtZGdwdWZiX29wZW4oc3RydWN0IGZiX2lu Zm8gKmluZm8sIGludCB1c2VyKQ0KPj4+IC17DQo+Pj4gLcKgwqDCoMKgwqDCoCBzdHJ1Y3Qg ZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyID0gaW5mby0+cGFyOw0KPj4+IC3CoMKgwqDCoMKg wqAgaW50IHJldCA9IHBtX3J1bnRpbWVfZ2V0X3N5bmMoZmJfaGVscGVyLT5kZXYtPmRldik7 DQo+Pj4gLcKgwqDCoMKgwqDCoCBpZiAocmV0IDwgMCAmJiByZXQgIT0gLUVBQ0NFUykgew0K Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBtX3J1bnRpbWVfbWFya19sYXN0 X2J1c3koZmJfaGVscGVyLT5kZXYtPmRldik7DQo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcG1fcnVudGltZV9wdXRfYXV0b3N1c3BlbmQoZmJfaGVscGVyLT5kZXYtPmRl dik7DQo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsNCj4+ PiAtwqDCoMKgwqDCoMKgIH0NCj4+PiAtwqDCoMKgwqDCoMKgIHJldHVybiAwOw0KPj4+IC19 DQo+Pj4gLQ0KPj4+IC1zdGF0aWMgaW50DQo+Pj4gLWFtZGdwdWZiX3JlbGVhc2Uoc3RydWN0 IGZiX2luZm8gKmluZm8sIGludCB1c2VyKQ0KPj4+IC17DQo+Pj4gLcKgwqDCoMKgwqDCoCBz dHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyID0gaW5mby0+cGFyOw0KPj4+IC0NCj4+ PiAtwqDCoMKgwqDCoMKgIHBtX3J1bnRpbWVfbWFya19sYXN0X2J1c3koZmJfaGVscGVyLT5k ZXYtPmRldik7DQo+Pj4gLcKgwqDCoMKgwqDCoCBwbV9ydW50aW1lX3B1dF9hdXRvc3VzcGVu ZChmYl9oZWxwZXItPmRldi0+ZGV2KTsNCj4+PiAtwqDCoMKgwqDCoMKgIHJldHVybiAwOw0K Pj4+IC19DQo+Pj4gLQ0KPj4+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBhbWRncHVm Yl9vcHMgPSB7DQo+Pj4gLcKgwqDCoMKgwqDCoCAub3duZXIgPSBUSElTX01PRFVMRSwNCj4+ PiAtwqDCoMKgwqDCoMKgIERSTV9GQl9IRUxQRVJfREVGQVVMVF9PUFMsDQo+Pj4gLcKgwqDC oMKgwqDCoCAuZmJfb3BlbiA9IGFtZGdwdWZiX29wZW4sDQo+Pj4gLcKgwqDCoMKgwqDCoCAu ZmJfcmVsZWFzZSA9IGFtZGdwdWZiX3JlbGVhc2UsDQo+Pj4gLcKgwqDCoMKgwqDCoCAuZmJf ZmlsbHJlY3QgPSBkcm1fZmJfaGVscGVyX2NmYl9maWxscmVjdCwNCj4+PiAtwqDCoMKgwqDC oMKgIC5mYl9jb3B5YXJlYSA9IGRybV9mYl9oZWxwZXJfY2ZiX2NvcHlhcmVhLA0KPj4+IC3C oMKgwqDCoMKgwqAgLmZiX2ltYWdlYmxpdCA9IGRybV9mYl9oZWxwZXJfY2ZiX2ltYWdlYmxp dCwNCj4+PiAtfTsNCj4+PiAtDQo+Pj4gLQ0KPj4+IC1pbnQgYW1kZ3B1X2FsaWduX3BpdGNo KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBpbnQgd2lkdGgsIGludCANCj4+PiBjcHAs IGJvb2wgdGlsZWQpDQo+Pj4gLXsNCj4+PiAtwqDCoMKgwqDCoMKgIGludCBhbGlnbmVkID0g d2lkdGg7DQo+Pj4gLcKgwqDCoMKgwqDCoCBpbnQgcGl0Y2hfbWFzayA9IDA7DQo+Pj4gLQ0K Pj4+IC3CoMKgwqDCoMKgwqAgc3dpdGNoIChjcHApIHsNCj4+PiAtwqDCoMKgwqDCoMKgIGNh c2UgMToNCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwaXRjaF9tYXNrID0g MjU1Ow0KPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPj4+IC3C oMKgwqDCoMKgwqAgY2FzZSAyOg0KPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHBpdGNoX21hc2sgPSAxMjc7DQo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg YnJlYWs7DQo+Pj4gLcKgwqDCoMKgwqDCoCBjYXNlIDM6DQo+Pj4gLcKgwqDCoMKgwqDCoCBj YXNlIDQ6DQo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcGl0Y2hfbWFzayA9 IDYzOw0KPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPj4+IC3C oMKgwqDCoMKgwqAgfQ0KPj4+IC0NCj4+PiAtwqDCoMKgwqDCoMKgIGFsaWduZWQgKz0gcGl0 Y2hfbWFzazsNCj4+PiAtwqDCoMKgwqDCoMKgIGFsaWduZWQgJj0gfnBpdGNoX21hc2s7DQo+ Pj4gLcKgwqDCoMKgwqDCoCByZXR1cm4gYWxpZ25lZCAqIGNwcDsNCj4+PiAtfQ0KPj4+IC0N Cj4+PiAtc3RhdGljIHZvaWQgYW1kZ3B1ZmJfZGVzdHJveV9waW5uZWRfb2JqZWN0KHN0cnVj dCBkcm1fZ2VtX29iamVjdCAqZ29iaikNCj4+PiAtew0KPj4+IC3CoMKgwqDCoMKgwqAgc3Ry dWN0IGFtZGdwdV9ibyAqYWJvID0gZ2VtX3RvX2FtZGdwdV9ibyhnb2JqKTsNCj4+PiAtwqDC oMKgwqDCoMKgIGludCByZXQ7DQo+Pj4gLQ0KPj4+IC3CoMKgwqDCoMKgwqAgcmV0ID0gYW1k Z3B1X2JvX3Jlc2VydmUoYWJvLCB0cnVlKTsNCj4+PiAtwqDCoMKgwqDCoMKgIGlmIChsaWtl bHkocmV0ID09IDApKSB7DQo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYW1k Z3B1X2JvX2t1bm1hcChhYm8pOw0KPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGFtZGdwdV9ib191bnBpbihhYm8pOw0KPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGFtZGdwdV9ib191bnJlc2VydmUoYWJvKTsNCj4+PiAtwqDCoMKgwqDCoMKgIH0NCj4+ PiAtwqDCoMKgwqDCoMKgIGRybV9nZW1fb2JqZWN0X3B1dChnb2JqKTsNCj4+PiAtfQ0KPj4+ IC0NCj4+PiAtc3RhdGljIGludCBhbWRncHVmYl9jcmVhdGVfcGlubmVkX29iamVjdChzdHJ1 Y3QgYW1kZ3B1X2ZiZGV2ICpyZmJkZXYsDQo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiANCj4+PiAqbW9kZV9jbWQsDQo+Pj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKipnb2JqX3ApDQo+ Pj4gLXsNCj4+PiAtwqDCoMKgwqDCoMKgIGNvbnN0IHN0cnVjdCBkcm1fZm9ybWF0X2luZm8g KmluZm87DQo+Pj4gLcKgwqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9 IHJmYmRldi0+YWRldjsNCj4+PiAtwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fZ2VtX29iamVj dCAqZ29iaiA9IE5VTEw7DQo+Pj4gLcKgwqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2JvICph Ym8gPSBOVUxMOw0KPj4+IC3CoMKgwqDCoMKgwqAgYm9vbCBmYl90aWxlZCA9IGZhbHNlOyAv KiB1c2VmdWwgZm9yIHRlc3RpbmcgKi8NCj4+PiAtwqDCoMKgwqDCoMKgIHUzMiB0aWxpbmdf ZmxhZ3MgPSAwLCBkb21haW47DQo+Pj4gLcKgwqDCoMKgwqDCoCBpbnQgcmV0Ow0KPj4+IC3C oMKgwqDCoMKgwqAgaW50IGFsaWduZWRfc2l6ZSwgc2l6ZTsNCj4+PiAtwqDCoMKgwqDCoMKg IGludCBoZWlnaHQgPSBtb2RlX2NtZC0+aGVpZ2h0Ow0KPj4+IC3CoMKgwqDCoMKgwqAgdTMy IGNwcDsNCj4+PiAtwqDCoMKgwqDCoMKgIHU2NCBmbGFncyA9IEFNREdQVV9HRU1fQ1JFQVRF X0NQVV9BQ0NFU1NfUkVRVUlSRUQgfA0KPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFNREdQVV9HRU1fQ1JFQVRFX1ZS QU1fQ09OVElHVU9VU8KgwqDCoMKgIHwNCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBTURHUFVfR0VNX0NSRUFURV9W UkFNX0NMRUFSRUQ7DQo+Pj4gLQ0KPj4+IC3CoMKgwqDCoMKgwqAgaW5mbyA9IGRybV9nZXRf Zm9ybWF0X2luZm8oYWRldl90b19kcm0oYWRldiksIG1vZGVfY21kKTsNCj4+PiAtwqDCoMKg wqDCoMKgIGNwcCA9IGluZm8tPmNwcFswXTsNCj4+PiAtDQo+Pj4gLcKgwqDCoMKgwqDCoCAv KiBuZWVkIHRvIGFsaWduIHBpdGNoIHdpdGggY3J0YyBsaW1pdHMgKi8NCj4+PiAtwqDCoMKg wqDCoMKgIG1vZGVfY21kLT5waXRjaGVzWzBdID0gYW1kZ3B1X2FsaWduX3BpdGNoKGFkZXYs IA0KPj4+IG1vZGVfY21kLT53aWR0aCwgY3BwLA0KPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmJfdGlsZWQpOw0KPj4+IC3CoMKgwqDCoMKgwqAg ZG9tYWluID0gYW1kZ3B1X2Rpc3BsYXlfc3VwcG9ydGVkX2RvbWFpbnMoYWRldiwgZmxhZ3Mp Ow0KPj4+IC3CoMKgwqDCoMKgwqAgaGVpZ2h0ID0gQUxJR04obW9kZV9jbWQtPmhlaWdodCwg OCk7DQo+Pj4gLcKgwqDCoMKgwqDCoCBzaXplID0gbW9kZV9jbWQtPnBpdGNoZXNbMF0gKiBo ZWlnaHQ7DQo+Pj4gLcKgwqDCoMKgwqDCoCBhbGlnbmVkX3NpemUgPSBBTElHTihzaXplLCBQ QUdFX1NJWkUpOw0KPj4+IC3CoMKgwqDCoMKgwqAgcmV0ID0gYW1kZ3B1X2dlbV9vYmplY3Rf Y3JlYXRlKGFkZXYsIGFsaWduZWRfc2l6ZSwgMCwgZG9tYWluLCANCj4+PiBmbGFncywNCj4+ PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdHRtX2JvX3R5cGVfZGV2aWNlLCBOVUxMLCAmZ29i aik7DQo+Pj4gLcKgwqDCoMKgwqDCoCBpZiAocmV0KSB7DQo+Pj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcHJfZXJyKCJmYWlsZWQgdG8gYWxsb2NhdGUgZnJhbWVidWZmZXIg KCVkKVxuIiwgDQo+Pj4gYWxpZ25lZF9zaXplKTsNCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCByZXR1cm4gLUVOT01FTTsNCj4+PiAtwqDCoMKgwqDCoMKgIH0NCj4+PiAt wqDCoMKgwqDCoMKgIGFibyA9IGdlbV90b19hbWRncHVfYm8oZ29iaik7DQo+Pj4gLQ0KPj4+ IC3CoMKgwqDCoMKgwqAgaWYgKGZiX3RpbGVkKQ0KPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHRpbGluZ19mbGFncyA9IEFNREdQVV9USUxJTkdfU0VUKEFSUkFZX01PREUs IA0KPj4+IEdSUEhfQVJSQVlfMkRfVElMRURfVEhJTjEpOw0KPj4+IC0NCj4+PiAtwqDCoMKg wqDCoMKgIHJldCA9IGFtZGdwdV9ib19yZXNlcnZlKGFibywgZmFsc2UpOw0KPj4+IC3CoMKg wqDCoMKgwqAgaWYgKHVubGlrZWx5KHJldCAhPSAwKSkNCj4+PiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBnb3RvIG91dF91bnJlZjsNCj4+PiAtDQo+Pj4gLcKgwqDCoMKgwqDC oCBpZiAodGlsaW5nX2ZsYWdzKSB7DQo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcmV0ID0gYW1kZ3B1X2JvX3NldF90aWxpbmdfZmxhZ3MoYWJvLA0KPj4+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRpbGluZ19mbGFncyk7DQo+Pj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHJldCkNCj4+PiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGV2X2VycihhZGV2LT5kZXYs ICJGQiBmYWlsZWQgdG8gc2V0IHRpbGluZyANCj4+PiBmbGFnc1xuIik7DQo+Pj4gLcKgwqDC oMKgwqDCoCB9DQo+Pj4gLQ0KPj4+IC3CoMKgwqDCoMKgwqAgcmV0ID0gYW1kZ3B1X2JvX3Bp bihhYm8sIGRvbWFpbik7DQo+Pj4gLcKgwqDCoMKgwqDCoCBpZiAocmV0KSB7DQo+Pj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X2JvX3VucmVzZXJ2ZShhYm8pOw0K Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X3VucmVmOw0KPj4+ IC3CoMKgwqDCoMKgwqAgfQ0KPj4+IC0NCj4+PiAtwqDCoMKgwqDCoMKgIHJldCA9IGFtZGdw dV90dG1fYWxsb2NfZ2FydCgmYWJvLT50Ym8pOw0KPj4+IC3CoMKgwqDCoMKgwqAgaWYgKHJl dCkgew0KPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFtZGdwdV9ib191bnJl c2VydmUoYWJvKTsNCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXZfZXJy KGFkZXYtPmRldiwgIiVwIGJpbmQgZmFpbGVkXG4iLCBhYm8pOw0KPj4+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X3VucmVmOw0KPj4+IC3CoMKgwqDCoMKgwqAg fQ0KPj4+IC0NCj4+PiAtwqDCoMKgwqDCoMKgIHJldCA9IGFtZGdwdV9ib19rbWFwKGFibywg TlVMTCk7DQo+Pj4gLcKgwqDCoMKgwqDCoCBhbWRncHVfYm9fdW5yZXNlcnZlKGFibyk7DQo+ Pj4gLcKgwqDCoMKgwqDCoCBpZiAocmV0KSB7DQo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZ290byBvdXRfdW5yZWY7DQo+Pj4gLcKgwqDCoMKgwqDCoCB9DQo+Pj4gLQ0K Pj4+IC3CoMKgwqDCoMKgwqAgKmdvYmpfcCA9IGdvYmo7DQo+Pj4gLcKgwqDCoMKgwqDCoCBy ZXR1cm4gMDsNCj4+PiAtb3V0X3VucmVmOg0KPj4+IC3CoMKgwqDCoMKgwqAgYW1kZ3B1ZmJf ZGVzdHJveV9waW5uZWRfb2JqZWN0KGdvYmopOw0KPj4+IC3CoMKgwqDCoMKgwqAgKmdvYmpf cCA9IE5VTEw7DQo+Pj4gLcKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Ow0KPj4+IC19DQo+Pj4g LQ0KPj4+IC1zdGF0aWMgaW50IGFtZGdwdWZiX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZiX2hlbHBl ciAqaGVscGVyLA0KPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9zdXJmYWNlX3NpemUgKnNpemVz KQ0KPj4+IC17DQo+Pj4gLcKgwqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2ZiZGV2ICpyZmJk ZXYgPSAoc3RydWN0IGFtZGdwdV9mYmRldiAqKWhlbHBlcjsNCj4+PiAtwqDCoMKgwqDCoMKg IHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gcmZiZGV2LT5hZGV2Ow0KPj4+IC3CoMKg wqDCoMKgwqAgc3RydWN0IGZiX2luZm8gKmluZm87DQo+Pj4gLcKgwqDCoMKgwqDCoCBzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IE5VTEw7DQo+Pj4gLcKgwqDCoMKgwqDCoCBzdHJ1 Y3QgZHJtX21vZGVfZmJfY21kMiBtb2RlX2NtZDsNCj4+PiAtwqDCoMKgwqDCoMKgIHN0cnVj dCBkcm1fZ2VtX29iamVjdCAqZ29iaiA9IE5VTEw7DQo+Pj4gLcKgwqDCoMKgwqDCoCBzdHJ1 Y3QgYW1kZ3B1X2JvICphYm8gPSBOVUxMOw0KPj4+IC3CoMKgwqDCoMKgwqAgaW50IHJldDsN Cj4+PiAtDQo+Pj4gLcKgwqDCoMKgwqDCoCBtZW1zZXQoJm1vZGVfY21kLCAwLCBzaXplb2Yo bW9kZV9jbWQpKTsNCj4+PiAtwqDCoMKgwqDCoMKgIG1vZGVfY21kLndpZHRoID0gc2l6ZXMt PnN1cmZhY2Vfd2lkdGg7DQo+Pj4gLcKgwqDCoMKgwqDCoCBtb2RlX2NtZC5oZWlnaHQgPSBz aXplcy0+c3VyZmFjZV9oZWlnaHQ7DQo+Pj4gLQ0KPj4+IC3CoMKgwqDCoMKgwqAgaWYgKHNp emVzLT5zdXJmYWNlX2JwcCA9PSAyNCkNCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzaXplcy0+c3VyZmFjZV9icHAgPSAzMjsNCj4+PiAtDQo+Pj4gLcKgwqDCoMKgwqDC oCBtb2RlX2NtZC5waXhlbF9mb3JtYXQgPSANCj4+PiBkcm1fbW9kZV9sZWdhY3lfZmJfZm9y bWF0KHNpemVzLT5zdXJmYWNlX2JwcCwNCj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQo+Pj4gc2l6ZXMtPnN1cmZhY2Vf ZGVwdGgpOw0KPj4+IC0NCj4+PiAtwqDCoMKgwqDCoMKgIHJldCA9IGFtZGdwdWZiX2NyZWF0 ZV9waW5uZWRfb2JqZWN0KHJmYmRldiwgJm1vZGVfY21kLCAmZ29iaik7DQo+Pj4gLcKgwqDC oMKgwqDCoCBpZiAocmV0KSB7DQo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg RFJNX0VSUk9SKCJmYWlsZWQgdG8gY3JlYXRlIGZiY29uIG9iamVjdCAlZFxuIiwgcmV0KTsN Cj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Ow0KPj4+IC3C oMKgwqDCoMKgwqAgfQ0KPj4+IC0NCj4+PiAtwqDCoMKgwqDCoMKgIGFibyA9IGdlbV90b19h bWRncHVfYm8oZ29iaik7DQo+Pj4gLQ0KPj4+IC3CoMKgwqDCoMKgwqAgLyogb2theSB3ZSBo YXZlIGFuIG9iamVjdCBub3cgYWxsb2NhdGUgdGhlIGZyYW1lYnVmZmVyICovDQo+Pj4gLcKg wqDCoMKgwqDCoCBpbmZvID0gZHJtX2ZiX2hlbHBlcl9hbGxvY19mYmkoaGVscGVyKTsNCj4+ PiAtwqDCoMKgwqDCoMKgIGlmIChJU19FUlIoaW5mbykpIHsNCj4+PiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCByZXQgPSBQVFJfRVJSKGluZm8pOw0KPj4+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0Ow0KPj4+IC3CoMKgwqDCoMKgwqAgfQ0KPj4+ IC0NCj4+PiAtwqDCoMKgwqDCoMKgIHJldCA9IGFtZGdwdV9kaXNwbGF5X2dlbV9mYl9pbml0 KGFkZXZfdG9fZHJtKGFkZXYpLCANCj4+PiAmcmZiZGV2LT5yZmIsDQo+Pj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAmbW9kZV9jbWQsIGdvYmopOw0KPj4+IC3CoMKgwqDCoMKgwqAg aWYgKHJldCkgew0KPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERSTV9FUlJP UigiZmFpbGVkIHRvIGluaXRpYWxpemUgZnJhbWVidWZmZXIgJWRcbiIsIHJldCk7DQo+Pj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBvdXQ7DQo+Pj4gLcKgwqDCoMKg wqDCoCB9DQo+Pj4gLQ0KPj4+IC3CoMKgwqDCoMKgwqAgZmIgPSAmcmZiZGV2LT5yZmIuYmFz ZTsNCj4+PiAtDQo+Pj4gLcKgwqDCoMKgwqDCoCAvKiBzZXR1cCBoZWxwZXIgKi8NCj4+PiAt wqDCoMKgwqDCoMKgIHJmYmRldi0+aGVscGVyLmZiID0gZmI7DQo+Pj4gLQ0KPj4+IC3CoMKg wqDCoMKgwqAgaW5mby0+ZmJvcHMgPSAmYW1kZ3B1ZmJfb3BzOw0KPj4+IC0NCj4+PiAtwqDC oMKgwqDCoMKgIGluZm8tPmZpeC5zbWVtX3N0YXJ0ID0gYW1kZ3B1X2dtY192cmFtX2NwdV9w YShhZGV2LCBhYm8pOw0KPj4+IC3CoMKgwqDCoMKgwqAgaW5mby0+Zml4LnNtZW1fbGVuID0g YW1kZ3B1X2JvX3NpemUoYWJvKTsNCj4+PiAtwqDCoMKgwqDCoMKgIGluZm8tPnNjcmVlbl9i YXNlID0gYW1kZ3B1X2JvX2twdHIoYWJvKTsNCj4+PiAtwqDCoMKgwqDCoMKgIGluZm8tPnNj cmVlbl9zaXplID0gYW1kZ3B1X2JvX3NpemUoYWJvKTsNCj4+PiAtDQo+Pj4gLcKgwqDCoMKg wqDCoCBkcm1fZmJfaGVscGVyX2ZpbGxfaW5mbyhpbmZvLCAmcmZiZGV2LT5oZWxwZXIsIHNp emVzKTsNCj4+PiAtDQo+Pj4gLcKgwqDCoMKgwqDCoCAvKiBzZXR1cCBhcGVydHVyZSBiYXNl L3NpemUgZm9yIHZlc2FmYiB0YWtlb3ZlciAqLw0KPj4+IC3CoMKgwqDCoMKgwqAgaW5mby0+ YXBlcnR1cmVzLT5yYW5nZXNbMF0uYmFzZSA9IA0KPj4+IGFkZXZfdG9fZHJtKGFkZXYpLT5t b2RlX2NvbmZpZy5mYl9iYXNlOw0KPj4+IC3CoMKgwqDCoMKgwqAgaW5mby0+YXBlcnR1cmVz LT5yYW5nZXNbMF0uc2l6ZSA9IGFkZXYtPmdtYy5hcGVyX3NpemU7DQo+Pj4gLQ0KPj4+IC3C oMKgwqDCoMKgwqAgLyogVXNlIGRlZmF1bHQgc2NyYXRjaCBwaXhtYXAgKGluZm8tPnBpeG1h cC5mbGFncyA9IA0KPj4+IEZCX1BJWE1BUF9TWVNURU0pICovDQo+Pj4gLQ0KPj4+IC3CoMKg wqDCoMKgwqAgaWYgKGluZm8tPnNjcmVlbl9iYXNlID09IE5VTEwpIHsNCj4+PiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSAtRU5PU1BDOw0KPj4+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0Ow0KPj4+IC3CoMKgwqDCoMKgwqAgfQ0KPj4+ IC0NCj4+PiAtwqDCoMKgwqDCoMKgIERSTV9JTkZPKCJmYiBtYXBwYWJsZSBhdCAweCVsWFxu IizCoCBpbmZvLT5maXguc21lbV9zdGFydCk7DQo+Pj4gLcKgwqDCoMKgwqDCoCBEUk1fSU5G TygidnJhbSBhcHBlciBhdCAweCVsWFxuIizCoCAodW5zaWduZWQgDQo+Pj4gbG9uZylhZGV2 LT5nbWMuYXBlcl9iYXNlKTsNCj4+PiAtwqDCoMKgwqDCoMKgIERSTV9JTkZPKCJzaXplICVs dVxuIiwgKHVuc2lnbmVkIGxvbmcpYW1kZ3B1X2JvX3NpemUoYWJvKSk7DQo+Pj4gLcKgwqDC oMKgwqDCoCBEUk1fSU5GTygiZmIgZGVwdGggaXMgJWRcbiIsIGZiLT5mb3JtYXQtPmRlcHRo KTsNCj4+PiAtwqDCoMKgwqDCoMKgIERSTV9JTkZPKCLCoMKgIHBpdGNoIGlzICVkXG4iLCBm Yi0+cGl0Y2hlc1swXSk7DQo+Pj4gLQ0KPj4+IC3CoMKgwqDCoMKgwqAgdmdhX3N3aXRjaGVy b29fY2xpZW50X2ZiX3NldChhZGV2LT5wZGV2LCBpbmZvKTsNCj4+PiAtwqDCoMKgwqDCoMKg IHJldHVybiAwOw0KPj4+IC0NCj4+PiAtb3V0Og0KPj4+IC3CoMKgwqDCoMKgwqAgaWYgKGZi ICYmIHJldCkgew0KPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRybV9nZW1f b2JqZWN0X3B1dChnb2JqKTsNCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBk cm1fZnJhbWVidWZmZXJfdW5yZWdpc3Rlcl9wcml2YXRlKGZiKTsNCj4+PiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBkcm1fZnJhbWVidWZmZXJfY2xlYW51cChmYik7DQo+Pj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAga2ZyZWUoZmIpOw0KPj4+IC3CoMKgwqDC oMKgwqAgfQ0KPj4+IC3CoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsNCj4+PiAtfQ0KPj4+IC0N Cj4+PiAtc3RhdGljIGludCBhbWRncHVfZmJkZXZfZGVzdHJveShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCBzdHJ1Y3QgDQo+Pj4gYW1kZ3B1X2ZiZGV2ICpyZmJkZXYpDQo+Pj4gLXsNCj4+ PiAtwqDCoMKgwqDCoMKgIHN0cnVjdCBhbWRncHVfZnJhbWVidWZmZXIgKnJmYiA9ICZyZmJk ZXYtPnJmYjsNCj4+PiAtwqDCoMKgwqDCoMKgIGludCBpOw0KPj4+IC0NCj4+PiAtwqDCoMKg wqDCoMKgIGRybV9mYl9oZWxwZXJfdW5yZWdpc3Rlcl9mYmkoJnJmYmRldi0+aGVscGVyKTsN Cj4+PiAtDQo+Pj4gLcKgwqDCoMKgwqDCoCBpZiAocmZiLT5iYXNlLm9ialswXSkgew0KPj4+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZvciAoaSA9IDA7IGkgPCByZmItPmJh c2UuZm9ybWF0LT5udW1fcGxhbmVzOyBpKyspDQo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRybV9nZW1fb2JqZWN0X3B1dChyZmItPmJhc2Uu b2JqWzBdKTsNCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhbWRncHVmYl9k ZXN0cm95X3Bpbm5lZF9vYmplY3QocmZiLT5iYXNlLm9ialswXSk7DQo+Pj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcmZiLT5iYXNlLm9ialswXSA9IE5VTEw7DQo+Pj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHJtX2ZyYW1lYnVmZmVyX3VucmVnaXN0ZXJf cHJpdmF0ZSgmcmZiLT5iYXNlKTsNCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBkcm1fZnJhbWVidWZmZXJfY2xlYW51cCgmcmZiLT5iYXNlKTsNCj4+PiAtwqDCoMKgwqDC oMKgIH0NCj4+PiAtwqDCoMKgwqDCoMKgIGRybV9mYl9oZWxwZXJfZmluaSgmcmZiZGV2LT5o ZWxwZXIpOw0KPj4+IC0NCj4+PiAtwqDCoMKgwqDCoMKgIHJldHVybiAwOw0KPj4+IC19DQo+ Pj4gLQ0KPj4+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9mYl9oZWxwZXJfZnVuY3MgYW1k Z3B1X2ZiX2hlbHBlcl9mdW5jcyA9IHsNCj4+PiAtwqDCoMKgwqDCoMKgIC5mYl9wcm9iZSA9 IGFtZGdwdWZiX2NyZWF0ZSwNCj4+PiAtfTsNCj4+PiAtDQo+Pj4gLWludCBhbWRncHVfZmJk ZXZfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikNCj4+PiAtew0KPj4+IC3CoMKg wqDCoMKgwqAgc3RydWN0IGFtZGdwdV9mYmRldiAqcmZiZGV2Ow0KPj4+IC3CoMKgwqDCoMKg wqAgaW50IGJwcF9zZWwgPSAzMjsNCj4+PiAtwqDCoMKgwqDCoMKgIGludCByZXQ7DQo+Pj4g LQ0KPj4+IC3CoMKgwqDCoMKgwqAgLyogZG9uJ3QgaW5pdCBmYmRldiBvbiBodyB3aXRob3V0 IERDRSAqLw0KPj4+IC3CoMKgwqDCoMKgwqAgaWYgKCFhZGV2LT5tb2RlX2luZm8ubW9kZV9j b25maWdfaW5pdGlhbGl6ZWQpDQo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg cmV0dXJuIDA7DQo+Pj4gLQ0KPj4+IC3CoMKgwqDCoMKgwqAgLyogZG9uJ3QgaW5pdCBmYmRl diBpZiB0aGVyZSBhcmUgbm8gY29ubmVjdG9ycyAqLw0KPj4+IC3CoMKgwqDCoMKgwqAgaWYg KGxpc3RfZW1wdHkoJmFkZXZfdG9fZHJtKGFkZXYpLT5tb2RlX2NvbmZpZy5jb25uZWN0b3Jf bGlzdCkpDQo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIDA7DQo+ Pj4gLQ0KPj4+IC3CoMKgwqDCoMKgwqAgLyogc2VsZWN0IDggYnBwIGNvbnNvbGUgb24gbG93 IHZyYW0gY2FyZHMgKi8NCj4+PiAtwqDCoMKgwqDCoMKgIGlmIChhZGV2LT5nbWMucmVhbF92 cmFtX3NpemUgPD0gKDMyKjEwMjQqMTAyNCkpDQo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgYnBwX3NlbCA9IDg7DQo+Pj4gLQ0KPj4+IC3CoMKgwqDCoMKgwqAgcmZiZGV2 ID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGFtZGdwdV9mYmRldiksIEdGUF9LRVJORUwpOw0K Pj4+IC3CoMKgwqDCoMKgwqAgaWYgKCFyZmJkZXYpDQo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9NRU07DQo+Pj4gLQ0KPj4+IC3CoMKgwqDCoMKgwqAg cmZiZGV2LT5hZGV2ID0gYWRldjsNCj4+PiAtwqDCoMKgwqDCoMKgIGFkZXYtPm1vZGVfaW5m by5yZmJkZXYgPSByZmJkZXY7DQo+Pj4gLQ0KPj4+IC3CoMKgwqDCoMKgwqAgZHJtX2ZiX2hl bHBlcl9wcmVwYXJlKGFkZXZfdG9fZHJtKGFkZXYpLCAmcmZiZGV2LT5oZWxwZXIsDQo+Pj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICZhbWRncHVfZmJfaGVscGVyX2Z1bmNzKTsNCj4+PiAtDQo+Pj4gLcKgwqDCoMKgwqDC oCByZXQgPSBkcm1fZmJfaGVscGVyX2luaXQoYWRldl90b19kcm0oYWRldiksICZyZmJkZXYt PmhlbHBlcik7DQo+Pj4gLcKgwqDCoMKgwqDCoCBpZiAocmV0KSB7DQo+Pj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAga2ZyZWUocmZiZGV2KTsNCj4+PiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Ow0KPj4+IC3CoMKgwqDCoMKgwqAgfQ0KPj4+ IC0NCj4+PiAtwqDCoMKgwqDCoMKgIC8qIGRpc2FibGUgYWxsIHRoZSBwb3NzaWJsZSBvdXRw dXRzL2NydGNzIGJlZm9yZSBlbnRlcmluZyBLTVMgDQo+Pj4gbW9kZSAqLw0KPj4+IC3CoMKg wqDCoMKgwqAgaWYgKCFhbWRncHVfZGV2aWNlX2hhc19kY19zdXBwb3J0KGFkZXYpICYmIA0K Pj4+ICFhbWRncHVfdmlydHVhbF9kaXNwbGF5KQ0KPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGRybV9oZWxwZXJfZGlzYWJsZV91bnVzZWRfZnVuY3Rpb25zKGFkZXZfdG9f ZHJtKGFkZXYpKTsNCj4+PiAtDQo+Pj4gLcKgwqDCoMKgwqDCoCBkcm1fZmJfaGVscGVyX2lu aXRpYWxfY29uZmlnKCZyZmJkZXYtPmhlbHBlciwgYnBwX3NlbCk7DQo+Pj4gLcKgwqDCoMKg wqDCoCByZXR1cm4gMDsNCj4+PiAtfQ0KPj4+IC0NCj4+PiAtdm9pZCBhbWRncHVfZmJkZXZf ZmluaShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikNCj4+PiAtew0KPj4+IC3CoMKgwqDC oMKgwqAgaWYgKCFhZGV2LT5tb2RlX2luZm8ucmZiZGV2KQ0KPj4+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHJldHVybjsNCj4+PiAtDQo+Pj4gLcKgwqDCoMKgwqDCoCBhbWRn cHVfZmJkZXZfZGVzdHJveShhZGV2X3RvX2RybShhZGV2KSwgYWRldi0+bW9kZV9pbmZvLnJm YmRldik7DQo+Pj4gLcKgwqDCoMKgwqDCoCBrZnJlZShhZGV2LT5tb2RlX2luZm8ucmZiZGV2 KTsNCj4+PiAtwqDCoMKgwqDCoMKgIGFkZXYtPm1vZGVfaW5mby5yZmJkZXYgPSBOVUxMOw0K Pj4+IC19DQo+Pj4gLQ0KPj4+IC12b2lkIGFtZGdwdV9mYmRldl9zZXRfc3VzcGVuZChzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgaW50IHN0YXRlKQ0KPj4+IC17DQo+Pj4gLcKgwqDC oMKgwqDCoCBpZiAoYWRldi0+bW9kZV9pbmZvLnJmYmRldikNCj4+PiAtICAgICAgICAgICAg ICAgDQo+Pj4gZHJtX2ZiX2hlbHBlcl9zZXRfc3VzcGVuZF91bmxvY2tlZCgmYWRldi0+bW9k ZV9pbmZvLnJmYmRldi0+aGVscGVyLA0KPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBzdGF0ZSk7DQo+Pj4gLX0NCj4+PiAtDQo+Pj4gLWludCBh bWRncHVfZmJkZXZfdG90YWxfc2l6ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikNCj4+ PiAtew0KPj4+IC3CoMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9ibyAqcm9iajsNCj4+PiAt wqDCoMKgwqDCoMKgIGludCBzaXplID0gMDsNCj4+PiAtDQo+Pj4gLcKgwqDCoMKgwqDCoCBp ZiAoIWFkZXYtPm1vZGVfaW5mby5yZmJkZXYpDQo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcmV0dXJuIDA7DQo+Pj4gLQ0KPj4+IC3CoMKgwqDCoMKgwqAgcm9iaiA9IA0K Pj4+IGdlbV90b19hbWRncHVfYm8oYWRldi0+bW9kZV9pbmZvLnJmYmRldi0+cmZiLmJhc2Uu b2JqWzBdKTsNCj4+PiAtwqDCoMKgwqDCoMKgIHNpemUgKz0gYW1kZ3B1X2JvX3NpemUocm9i aik7DQo+Pj4gLcKgwqDCoMKgwqDCoCByZXR1cm4gc2l6ZTsNCj4+PiAtfQ0KPj4+IC0NCj4+ PiAtYm9vbCBhbWRncHVfZmJkZXZfcm9ial9pc19mYihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiwgc3RydWN0IA0KPj4+IGFtZGdwdV9ibyAqcm9iaikNCj4+PiAtew0KPj4+IC3CoMKg wqDCoMKgwqAgaWYgKCFhZGV2LT5tb2RlX2luZm8ucmZiZGV2KQ0KPj4+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBmYWxzZTsNCj4+PiAtwqDCoMKgwqDCoMKgIGlm IChyb2JqID09IA0KPj4+IGdlbV90b19hbWRncHVfYm8oYWRldi0+bW9kZV9pbmZvLnJmYmRl di0+cmZiLmJhc2Uub2JqWzBdKSkNCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCByZXR1cm4gdHJ1ZTsNCj4+PiAtwqDCoMKgwqDCoMKgIHJldHVybiBmYWxzZTsNCj4+PiAt fQ0KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf Z2VtLmMgDQo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMN Cj4+PiBpbmRleCA5ZTI1MjViOTZkMDQuLjM1NWRiODQzODUyMiAxMDA2NDQNCj4+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMNCj4+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMNCj4+PiBAQCAtODc2LDYg Kzg3NiwzMiBAQCBpbnQgYW1kZ3B1X2dlbV9vcF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCANCj4+PiB2b2lkICpkYXRhLA0KPj4+IMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHI7 DQo+Pj4gwqAgfQ0KPj4+DQo+Pj4gK3N0YXRpYyBpbnQgYW1kZ3B1X2dlbV9hbGlnbl9waXRj aChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgd2lk dGgsDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IGNwcCwNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBib29sIHRp bGVkKQ0KPj4+ICt7DQo+Pj4gK8KgwqDCoMKgwqDCoCBpbnQgYWxpZ25lZCA9IHdpZHRoOw0K Pj4+ICvCoMKgwqDCoMKgwqAgaW50IHBpdGNoX21hc2sgPSAwOw0KPj4+ICsNCj4+PiArwqDC oMKgwqDCoMKgIHN3aXRjaCAoY3BwKSB7DQo+Pj4gK8KgwqDCoMKgwqDCoCBjYXNlIDE6DQo+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcGl0Y2hfbWFzayA9IDI1NTsNCj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4+PiArwqDCoMKgwqDC oMKgIGNhc2UgMjoNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwaXRjaF9t YXNrID0gMTI3Ow0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0K Pj4+ICvCoMKgwqDCoMKgwqAgY2FzZSAzOg0KPj4+ICvCoMKgwqDCoMKgwqAgY2FzZSA0Og0K Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBpdGNoX21hc2sgPSA2MzsNCj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4+PiArwqDCoMKgwqDC oMKgIH0NCj4+PiArDQo+Pj4gK8KgwqDCoMKgwqDCoCBhbGlnbmVkICs9IHBpdGNoX21hc2s7 DQo+Pj4gK8KgwqDCoMKgwqDCoCBhbGlnbmVkICY9IH5waXRjaF9tYXNrOw0KPj4+ICvCoMKg wqDCoMKgwqAgcmV0dXJuIGFsaWduZWQgKiBjcHA7DQo+Pj4gK30NCj4+PiArDQo+Pj4gwqAg aW50IGFtZGdwdV9tb2RlX2R1bWJfY3JlYXRlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2 LA0KPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsDQo+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9t b2RlX2NyZWF0ZV9kdW1iICphcmdzKQ0KPj4+IEBAIC04OTYsOCArOTIyLDggQEAgaW50IGFt ZGdwdV9tb2RlX2R1bWJfY3JlYXRlKHN0cnVjdCBkcm1fZmlsZSANCj4+PiAqZmlsZV9wcml2 LA0KPj4+IMKgwqDCoMKgwqDCoMKgwqAgaWYgKGFkZXYtPm1tYW4uYnVmZmVyX2Z1bmNzX2Vu YWJsZWQpDQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmxhZ3MgfD0g QU1ER1BVX0dFTV9DUkVBVEVfVlJBTV9DTEVBUkVEOw0KPj4+DQo+Pj4gLcKgwqDCoMKgwqDC oCBhcmdzLT5waXRjaCA9IGFtZGdwdV9hbGlnbl9waXRjaChhZGV2LCBhcmdzLT53aWR0aCwN Cj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERJVl9ST1VORF9VUChhcmdzLT5icHAs IDgpLCAwKTsNCj4+PiArwqDCoMKgwqDCoMKgIGFyZ3MtPnBpdGNoID0gYW1kZ3B1X2dlbV9h bGlnbl9waXRjaChhZGV2LCBhcmdzLT53aWR0aCwNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgRElWX1JPVU5EX1VQKGFyZ3MtPmJwcCwgDQo+Pj4gOCksIDApOw0K Pj4+IMKgwqDCoMKgwqDCoMKgwqAgYXJncy0+c2l6ZSA9ICh1NjQpYXJncy0+cGl0Y2ggKiBh cmdzLT5oZWlnaHQ7DQo+Pj4gwqDCoMKgwqDCoMKgwqDCoCBhcmdzLT5zaXplID0gQUxJR04o YXJncy0+c2l6ZSwgUEFHRV9TSVpFKTsNCj4+PiDCoMKgwqDCoMKgwqDCoMKgIGRvbWFpbiA9 IGFtZGdwdV9ib19nZXRfcHJlZmVycmVkX2RvbWFpbihhZGV2LA0KPj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW9kZS5oIA0KPj4+IGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21vZGUuaA0KPj4+IGluZGV4IDg5ZmIz NzJlZDQ5Yy4uNjA0M2JmNmZkNDE0IDEwMDY0NA0KPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9tb2RlLmgNCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfbW9kZS5oDQo+Pj4gQEAgLTIzMiw4ICsyMzIsNiBAQCBzdHJ1 Y3QgYW1kZ3B1X2kyY19jaGFuIHsNCj4+PiDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBtdXRl eCBtdXRleDsNCj4+PiDCoCB9Ow0KPj4+DQo+Pj4gLXN0cnVjdCBhbWRncHVfZmJkZXY7DQo+ Pj4gLQ0KPj4+IMKgIHN0cnVjdCBhbWRncHVfYWZtdCB7DQo+Pj4gwqDCoMKgwqDCoMKgwqDC oCBib29sIGVuYWJsZWQ7DQo+Pj4gwqDCoMKgwqDCoMKgwqDCoCBpbnQgb2Zmc2V0Ow0KPj4+ IEBAIC0zMDksMTMgKzMwNyw2IEBAIHN0cnVjdCBhbWRncHVfZnJhbWVidWZmZXIgew0KPj4+ IMKgwqDCoMKgwqDCoMKgwqAgdWludDY0X3QgYWRkcmVzczsNCj4+PiDCoCB9Ow0KPj4+DQo+ Pj4gLXN0cnVjdCBhbWRncHVfZmJkZXYgew0KPj4+IC3CoMKgwqDCoMKgwqAgc3RydWN0IGRy bV9mYl9oZWxwZXIgaGVscGVyOw0KPj4+IC3CoMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9m cmFtZWJ1ZmZlciByZmI7DQo+Pj4gLcKgwqDCoMKgwqDCoCBzdHJ1Y3QgbGlzdF9oZWFkIGZi ZGV2X2xpc3Q7DQo+Pj4gLcKgwqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl djsNCj4+PiAtfTsNCj4+PiAtDQo+Pj4gwqAgc3RydWN0IGFtZGdwdV9tb2RlX2luZm8gew0K Pj4+IMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGF0b21fY29udGV4dCAqYXRvbV9jb250ZXh0 Ow0KPj4+IMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGNhcmRfaW5mbyAqYXRvbV9jYXJkX2lu Zm87DQo+Pj4gQEAgLTM0MSw4ICszMzIsNiBAQCBzdHJ1Y3QgYW1kZ3B1X21vZGVfaW5mbyB7 DQo+Pj4gwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZWRpZCAqYmlvc19oYXJkY29kZWRfZWRp ZDsNCj4+PiDCoMKgwqDCoMKgwqDCoMKgIGludCBiaW9zX2hhcmRjb2RlZF9lZGlkX3NpemU7 DQo+Pj4NCj4+PiAtwqDCoMKgwqDCoMKgIC8qIHBvaW50ZXIgdG8gZmJkZXYgaW5mbyBzdHJ1 Y3R1cmUgKi8NCj4+PiAtwqDCoMKgwqDCoMKgIHN0cnVjdCBhbWRncHVfZmJkZXYgKnJmYmRl djsNCj4+PiDCoMKgwqDCoMKgwqDCoMKgIC8qIGZpcm13YXJlIGZsYWdzICovDQo+Pj4gwqDC oMKgwqDCoMKgwqDCoCB1MzIgZmlybXdhcmVfZmxhZ3M7DQo+Pj4gwqDCoMKgwqDCoMKgwqDC oCAvKiBwb2ludGVyIHRvIGJhY2tsaWdodCBlbmNvZGVyICovDQo+Pj4gQEAgLTYzMSwxNSAr NjIwLDYgQEAgYm9vbCBhbWRncHVfY3J0Y19nZXRfc2Nhbm91dF9wb3NpdGlvbihzdHJ1Y3Qg DQo+Pj4gZHJtX2NydGMgKmNydGMsDQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCAqaHBvcywga3RpbWVfdCAqc3RpbWUsIGt0aW1l X3QgKmV0aW1lLA0KPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSk7DQo+Pj4N Cj4+PiAtLyogZmJkZXYgbGF5ZXIgKi8NCj4+PiAtaW50IGFtZGdwdV9mYmRldl9pbml0KHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsNCj4+PiAtdm9pZCBhbWRncHVfZmJkZXZfZmlu aShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7DQo+Pj4gLXZvaWQgYW1kZ3B1X2ZiZGV2 X3NldF9zdXNwZW5kKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBpbnQgc3RhdGUpOw0K Pj4+IC1pbnQgYW1kZ3B1X2ZiZGV2X3RvdGFsX3NpemUoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYpOw0KPj4+IC1ib29sIGFtZGdwdV9mYmRldl9yb2JqX2lzX2ZiKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgDQo+Pj4gYW1kZ3B1X2JvICpyb2JqKTsNCj4+PiAt DQo+Pj4gLWludCBhbWRncHVfYWxpZ25fcGl0Y2goc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsIGludCB3aWR0aCwgaW50IA0KPj4+IGJwcCwgYm9vbCB0aWxlZCk7DQo+Pj4gLQ0KPj4+ IMKgIC8qIGFtZGdwdV9kaXNwbGF5LmMgKi8NCj4+PiDCoCB2b2lkIGFtZGdwdV9kaXNwbGF5 X3ByaW50X2Rpc3BsYXlfc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldik7DQo+Pj4gwqAg aW50IGFtZGdwdV9kaXNwbGF5X21vZGVzZXRfY3JlYXRlX3Byb3BzKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2KTsNCj4+PiAtLSANCj4+PiAyLjI5LjANCj4+Pg0KPiANCg0KLS0gDQpU aG9tYXMgWmltbWVybWFubg0KR3JhcGhpY3MgRHJpdmVyIERldmVsb3Blcg0KU1VTRSBTb2Z0 d2FyZSBTb2x1dGlvbnMgR2VybWFueSBHbWJIDQpNYXhmZWxkc3RyLiA1LCA5MDQwOSBOw7xy bmJlcmcsIEdlcm1hbnkNCihIUkIgMzY4MDksIEFHIE7DvHJuYmVyZykNCkdlc2Now6RmdHNm w7xocmVyOiBGZWxpeCBJbWVuZMO2cmZmZXINCg== --------------fYek32D0FNmyjfQqaNnHZHei-- --------------jyhV3N0HCioT4Tx7FPjhNvHM 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+AFAmFISeoFAwAAAAAACgkQlh/E3EQov+CS BA/9GLUdiMf669WthhZ+3TbKLRyun8feJ2KNx//fD5k3i+ZmikLStltEHm2Q0n/WMS8ySEDL8VVN Gotv5OWfuAzSjo9tQlIJOV03KRcVWAvH8I3A763spuDUjaibebPQbxFYuXA2hwV9NCaXDYnyy+w6 WZKF49SEVTS1OyZBjsZtwtOgkHzuc9DVnMX8AIyXOy3nV1/S1yqfrnzveMgCZfPQGLUaA5PsqS3p dt8CvqHlhg9WsV+Zom+nnaSSy+poNXJ/mHmZN16PYWQosIEoLItDm53oA0j9jDg8FeqUktzhrQI6 rVbjgc9LL1vXVX00NRlBlrTtuFOyfOWU0k96zcppz/A812HQAyQEXBmK3qweeUqU8wDi9X0MyTKK v9DXUzzzSEmSoEUOSuMJNKHExnyyEqKny5iHxdtGGY5X8NDhZJv7tHtDQebg6EXr+17GtS6KBr+Z BADScutNLJaW3Rc0cEp/FAFA/GmviqdW7kTrDClG8CJJ/nBPRJKATNC5MNZ1Vq4fsb2yeQs79FPb fmgcZDG96IZaXGLdVdRRPoBG9MIRdtUT/i4Dnhq6val8CF3bLCztZycNWD7Fn/R4DP+zkETX0q00 qVnOEpFDiwlJIrjQ0Q77tOGRo+6RrihU4b42p8IGDJW+kEd7oMIUWDq1l9qmNll4nijcznVFh4SQ 2P8= =jUjv -----END PGP SIGNATURE----- --------------jyhV3N0HCioT4Tx7FPjhNvHM--