From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.7 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, URIBL_BLOCKED autolearn=unavailable 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 7D0BCC2BA2B for ; Fri, 10 Apr 2020 10:21:22 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 450B720787 for ; Fri, 10 Apr 2020 10:21:22 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="cfvWb8Ba" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 450B720787 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=collabora.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender:Content-Type: Content-Transfer-Encoding:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date:References:In-Reply-To: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=VzyJV5OcKKu7DElB8fZ7VgA6eR0ccX4spHdDwWY9p3s=; b=cfvWb8BasAYdUVfDG6Iiyn0Uy 8Ov+tA+fpEDxjLzXRpormjq6LAqZTh1UYmv9e1MZ66ty3xi84a4j1BiRHl8twjj9a00Un3hkAefq+ ZWCDwsX0cF20KBn76HX7aPtZmM2wavDLdbqIl9iziCiV3IR0MHFSn5+p19G4M0fu6T33bt9zxdJOJ /SFSD75LhOIBkZsaFv9l9zH8xDxycnGImXLrOYoDoKPVO6EgDrUpfSF9F5C9zeMkljnNFVJc1S8y9 1j26nKIqimbAixMoFs8VydaCBQed7cBlxhlZrdlveNSlg85Mz7+uTjU0KNNaaQksJfXfy9SgHEphH 7aaZ+uqXQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jMqmj-000558-BI; Fri, 10 Apr 2020 10:21:17 +0000 Received: from bhuna.collabora.co.uk ([2a00:1098:0:82:1000:25:2eeb:e3e3]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jMqme-00054R-3c; Fri, 10 Apr 2020 10:21:16 +0000 Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: aratiu) with ESMTPSA id 40CCF2A018D From: Adrian Ratiu To: Andrzej Hajda , linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org Subject: Re: [PATCH v5 2/5] drm: bridge: dw_mipi_dsi: abstract register access using reg_fields In-Reply-To: <37751774-ba48-39d0-3b1b-4ac5363420ae@samsung.com> References: <20200330113542.181752-1-adrian.ratiu@collabora.com> <20200330113542.181752-3-adrian.ratiu@collabora.com> <37751774-ba48-39d0-3b1b-4ac5363420ae@samsung.com> Date: Fri, 10 Apr 2020 13:22:13 +0300 Message-ID: <87lfn37i96.fsf@iwork.i-did-not-set--mail-host-address--so-tickle-me> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200410_032112_554365_2BC7F6C3 X-CRM114-Status: GOOD ( 10.48 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jernej Skrabec , Laurent Pinchart , Jonas Karlman , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, Boris Brezillon , linux-imx@nxp.com, kernel@collabora.com, linux-stm32@st-md-mailman.stormreply.com, Emil Velikov Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgQW5kcnplaiwKClRoYW5rIHlvdSBmb3IgdGhlIGZlZWRiYWNrLCBJIHJlYWxseSBhcHByZWNp YXRlIGl0LCByZXBsaWVzIGFyZSAKYmVsb3cuCiAKT24gTW9uLCAwNiBBcHIgMjAyMCwgQW5kcnpl aiBIYWpkYSA8YS5oYWpkYUBzYW1zdW5nLmNvbT4gd3JvdGU6Cj4gVyBkbml1IDMwLjAzLjIwMjAg b8KgMTM6MzUsIEFkcmlhbiBSYXRpdSBwaXN6ZTogCj4+IFJlZ2lzdGVyIGV4aXN0ZW5jZSwgYWRk cmVzcy9vZmZzZXRzLCBmaWVsZCBsYXlvdXRzLCByZXNlcnZlZCAKPj4gYml0cyBhbmQgc28gb24g ZGlmZmVyIGJldHdlZW4gTUlQSS1EU0kgdmVyc2lvbnMgYW5kIGJldHdlZW4gU29DIAo+PiB2ZW5k b3IgYm9hcmRzLiAgRGVzcGl0ZSB0aGVzZSBkaWZmZXJlbmNlcyB0aGUgaHcgSVAgYW5kIAo+PiBw cm90b2NvbHMgYXJlIG1vc3RseSB0aGUgc2FtZSBzbyB0aGUgZ2VuZXJpYyBicmlkZ2UgY2FuIGJl IG1hZGUgCj4+IHRvIGNvbXBlbnNhdGUgdGhlc2UgZGlmZmVyZW5jZXMuIAo+PiAKPj4gVGhlIGN1 cnJlbnQgUm9ja2NoaXAgYW5kIFNUTSBkcml2ZXJzIGhhcmRjb2RlZCBhIGxvdCBvZiB0aGVpciAK Pj4gY29tbW9uIGRlZmluaXRpb25zIGluIHRoZSBicmlkZ2UgY29kZSBiZWNhdXNlIHRoZXkncmUg YmFzZWQgb24gCj4+IERTSSB2MS4zMCBhbmQgMS4zMSB3aGljaCBhcmUgcmVsYXRpdmVseSBjbG9z ZSwgYnV0IGluIG9yZGVyIHRvIAo+PiBzdXBwb3J0IG9sZGVyL2Z1dHVyZSB2ZXJzaW9ucyB3aXRo IG1vcmUgZGl2ZXJnaW5nIGxheW91dHMgbGlrZSAKPj4gdGhlIHYxLjAxIHByZXNlbnQgb24gaW14 Niwgd2UgYWJzdHJhY3Qgc29tZSBvZiB0aGUgcmVnaXN0ZXIgCj4+IGFjY2Vzc2VzIHZpYSB0aGUg cmVnbWFwIGZpZWxkIEFQSXMuIAo+PiAKPj4gVGhlIGJyaWRnZSBkZXRlY3RzIHRoZSBEU0kgY29y ZSB2ZXJzaW9uIGFuZCBpbml0aWFsaXplcyB0aGUgCj4+IHJlcXVpcmVkIHJlZ21hcCByZWdpc3Rl ciBsYXlvdXQuIE90aGVyIERTSSB2ZXJzaW9ucyAvIHJlZ2lzdGVyIAo+PiBsYXlvdXRzIGNhbiBl YXNpbHkgYmUgYWRkZWQgaW4gdGhlIGZ1dHVyZSBieSBvbmx5IGNoYW5naW5nIHRoZSAKPj4gYnJp ZGdlIGNvZGUuIAo+PiAKPj4gVGhlIHBsYXRmb3JtIGRyaXZlcnMgZG9uJ3QgcmVxdWlyZSBhbnkg Y2hhbmdlcywgRFNJIHJlZ2lzdGVyIAo+PiBsYXlvdXQgdmVyc2lvbmluZyB3aWxsIGJlIGhhbmRs ZWQgdHJhbnNwYXJlbnRseSBieSB0aGUgYnJpZGdlLCAKPj4gYnV0IGlmIGluIHRoZSBmdXR1cmUg dGhlIHJlZ21hcCBvciBsYXlvdXRzIG5lZWRzIHRvIGJlIGV4cG9zZWQgCj4+IHRvIHRoZSBkcml2 cmVzLCBpdCBjb3VsZCBlYXNpbHkgYmUgZG9uZSB2aWEgcGxhdF9kYXRhIG9yIGEgbmV3IAo+PiBB UEkgaW4gZHdfbWlwaV9kc2kuaC4gCj4+IAo+PiBTdWdnZXN0ZWQtYnk6IEJvcmlzIEJyZXppbGxv biA8Ym9yaXMuYnJlemlsbG9uQGNvbGxhYm9yYS5jb20+IAo+PiBSZXZpZXdlZC1ieTogRW1pbCBW ZWxpa292IDxlbWlsLnZlbGlrb3ZAY29sbGFib3JhLmNvbT4gCj4+IFNpZ25lZC1vZmYtYnk6IEFk cmlhbiBSYXRpdSA8YWRyaWFuLnJhdGl1QGNvbGxhYm9yYS5jb20+IC0tLSAKPj4gQ2hhbmdlcyBz aW5jZSB2NDogCj4+ICAgIC0gTW92ZSByZWdtYXAgaW5mcmFzdHJ1Y3R1cmUgbG9naWMgdG8gYSBz ZXBhcmF0ZSBjb21taXQgCj4+ICAgIChFemVxdWllbCkgLSBDb25zb2xpZGF0ZSBmaWVsZCBpbmZy YXN0cnVjdHVyZSBpbiB0aGlzIGNvbW1pdCAKPj4gICAgKEV6ZXF1aWVsKSAtIE1vdmUgdGhlIGRz aSB2MS4wMSBsYXlvdXQgbG9naWMgdG8gYSBzZXBhcmF0ZSAKPj4gICAgY29tbWl0IChFemVxdWll bCkgCj4+IAo+PiBDaGFuZ2VzIHNpbmNlIHYyOiAKPj4gICAgLSBBZGRlZCBjb25zdCBkZWNsYXJh dGlvbnMgdG8gZHdfbWlwaV9kc2kgc3RydWN0cyAoRW1pbCkgLSAKPj4gICAgRml4ZWQgY29tbWl0 IHRhZ3MgKEVtaWwpIAo+PiAKPj4gQ2hhbmdlcyBzaW5jZSB2MTogCj4+ICAgIC0gTW92ZWQgcmVn aXN0ZXIgZGVmaW5pdGlvbnMgJiByZWdtYXAgaW5pdGlhbGl6YXRpb24gaW50byAKPj4gICAgYnJp ZGdlIG1vZHVsZS4gUGxhdGZvcm0gZHJpdmVycyBnZXQgdGhlIHJlZ21hcCB2aWEgcGxhdF9kYXRh IAo+PiAgICBhZnRlciBjYWxsaW5nIHRoZSBicmlkZ2UgcHJvYmUgKEVtaWwpLiAKPj4gLS0tIAo+ PiAgIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc3lub3BzeXMvZHctbWlwaS1kc2kuYyB8IDUxMCAK Pj4gICArKysrKysrKysrKystLS0tLS0gMSBmaWxlIGNoYW5nZWQsIDM1MiBpbnNlcnRpb25zKCsp LCAxNTggCj4+ICAgZGVsZXRpb25zKC0pIAo+PiAKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9icmlkZ2Uvc3lub3BzeXMvZHctbWlwaS1kc2kuYyAKPj4gYi9kcml2ZXJzL2dwdS9kcm0v YnJpZGdlL3N5bm9wc3lzL2R3LW1pcGktZHNpLmMgaW5kZXggCj4+IDZkOWUyZjIxYzljYy4uNWI3 OGZmOTI1YWYwIDEwMDY0NCAtLS0gCj4+IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zeW5vcHN5 cy9kdy1taXBpLWRzaS5jICsrKyAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9wc3lz L2R3LW1pcGktZHNpLmMgQEAgLTMxLDYgKzMxLDcgCj4+IEBAIAo+PiAgICNpbmNsdWRlIDxkcm0v ZHJtX3Byb2JlX2hlbHBlci5oPiAgI2RlZmluZSBIV1ZFUl8xMzEgCj4+ICAgMHgzMTMzMzEwMAkv KiBJUCB2ZXJzaW9uIDEuMzEgKi8gCj4+ICsjZGVmaW5lIEhXVkVSXzEzMAkJCTB4MzEzMzMwMDAJ LyogSVAgCj4+IHZlcnNpb24gMS4zMCAqLyAKPj4gICAgI2RlZmluZSBEU0lfVkVSU0lPTgkJCTB4 MDAgI2RlZmluZSAKPj4gICBWRVJTSU9OCQkJCUdFTk1BU0soMzEsIDgpIAo+PiBAQCAtNDcsNyAr NDgsNiBAQCAKPj4gICAjZGVmaW5lIERQSV9WQ0lEKHZjaWQpCQkJKCh2Y2lkKSAmIDB4MykgCj4+ ICAgI2RlZmluZSBEU0lfRFBJX0NPTE9SX0NPRElORwkJMHgxMCAKPj4gLSNkZWZpbmUgTE9PU0VM WTE4X0VOCQkJQklUKDgpIAo+PiAgICNkZWZpbmUgRFBJX0NPTE9SX0NPRElOR18xNkJJVF8xCTB4 MCAjZGVmaW5lIAo+PiAgIERQSV9DT0xPUl9DT0RJTkdfMTZCSVRfMgkweDEgI2RlZmluZSAKPj4g ICBEUElfQ09MT1JfQ09ESU5HXzE2QklUXzMJMHgyIAo+PiBAQCAtNTYsMTEgKzU2LDYgQEAgCj4+ ICAgI2RlZmluZSBEUElfQ09MT1JfQ09ESU5HXzI0QklUCQkweDUgICNkZWZpbmUgCj4+ICAgRFNJ X0RQSV9DRkdfUE9MCQkJMHgxNCAKPj4gLSNkZWZpbmUgQ09MT1JNX0FDVElWRV9MT1cJCUJJVCg0 KSAtI2RlZmluZSAKPj4gU0hVVERfQUNUSVZFX0xPVwkJQklUKDMpIC0jZGVmaW5lIEhTWU5DX0FD VElWRV9MT1cgCj4+IEJJVCgyKSAtI2RlZmluZSBWU1lOQ19BQ1RJVkVfTE9XCQlCSVQoMSkgLSNk ZWZpbmUgCj4+IERBVEFFTl9BQ1RJVkVfTE9XCQlCSVQoMCkgCj4+ICAgICNkZWZpbmUgRFNJX0RQ SV9MUF9DTURfVElNCQkweDE4ICNkZWZpbmUgCj4+ICAgT1VUVkFDVF9MUENNRF9USU1FKHApCQko KChwKSAmIDB4ZmYpIDw8IDE2KSAKPj4gQEAgLTgxLDI3ICs3NiwxOSBAQCAKPj4gICAjZGVmaW5l IERTSV9HRU5fVkNJRAkJCTB4MzAgICNkZWZpbmUgCj4+ICAgRFNJX01PREVfQ0ZHCQkJMHgzNCAK Pj4gLSNkZWZpbmUgRU5BQkxFX1ZJREVPX01PREUJCTAgLSNkZWZpbmUgRU5BQkxFX0NNRF9NT0RF IAo+PiBCSVQoMCkgCj4+ICAgICNkZWZpbmUgRFNJX1ZJRF9NT0RFX0NGRwkJMHgzOCAKPj4gLSNk ZWZpbmUgRU5BQkxFX0xPV19QT1dFUgkJKDB4M2YgPDwgOCkgLSNkZWZpbmUgCj4+IEVOQUJMRV9M T1dfUE9XRVJfTUFTSwkJKDB4M2YgPDwgOCkgKyNkZWZpbmUgCj4+IEVOQUJMRV9MT1dfUE9XRVIJ CTB4M2YgKyAKPj4gICAjZGVmaW5lIFZJRF9NT0RFX1RZUEVfTk9OX0JVUlNUX1NZTkNfUFVMU0VT CTB4MCAKPj4gICAjZGVmaW5lIFZJRF9NT0RFX1RZUEVfTk9OX0JVUlNUX1NZTkNfRVZFTlRTCTB4 MSAKPj4gICAjZGVmaW5lIFZJRF9NT0RFX1RZUEVfQlVSU1QJCQkweDIgCj4+IC0jZGVmaW5lIFZJ RF9NT0RFX1RZUEVfTUFTSwkJCTB4MyAtI2RlZmluZSAKPj4gVklEX01PREVfVlBHX0VOQUJMRQkJ QklUKDE2KSAtI2RlZmluZSAKPj4gVklEX01PREVfVlBHX0hPUklaT05UQUwJCUJJVCgyNCkgCj4+ ICAgICNkZWZpbmUgRFNJX1ZJRF9QS1RfU0laRQkJMHgzYyAKPj4gLSNkZWZpbmUgVklEX1BLVF9T SVpFKHApCQkJKChwKSAmIDB4M2ZmZikgCj4+ICAgICNkZWZpbmUgRFNJX1ZJRF9OVU1fQ0hVTktT CQkweDQwIAo+PiAtI2RlZmluZSBWSURfTlVNX0NIVU5LUyhjKQkJKChjKSAmIDB4MWZmZikgCj4+ ICAgICNkZWZpbmUgRFNJX1ZJRF9OVUxMX1NJWkUJCTB4NDQgCj4+IC0jZGVmaW5lIFZJRF9OVUxM X1NJWkUoYikJCSgoYikgJiAweDFmZmYpIAo+PiAgICAjZGVmaW5lIERTSV9WSURfSFNBX1RJTUUJ CTB4NDggI2RlZmluZSAKPj4gICBEU0lfVklEX0hCUF9USU1FCQkweDRjIAo+PiBAQCAtMTI1LDcg KzExMiw2IEBAIAo+PiAgICNkZWZpbmUgR0VOX1NXXzJQX1RYX0xQCQkJQklUKDEwKSAjZGVmaW5l IAo+PiAgIEdFTl9TV18xUF9UWF9MUAkJCUJJVCg5KSAjZGVmaW5lIAo+PiAgIEdFTl9TV18wUF9U WF9MUAkJCUJJVCg4KSAKPj4gLSNkZWZpbmUgQUNLX1JRU1RfRU4JCQlCSVQoMSkgCj4+ICAgI2Rl ZmluZSBURUFSX0ZYX0VOCQkJQklUKDApICAjZGVmaW5lIAo+PiAgIENNRF9NT0RFX0FMTF9MUAkJ CShNQVhfUkRfUEtUX1NJWkVfTFAgfCBcIAo+PiBAQCAtMTU0LDggKzE0MCw2IEBAIAo+PiAgICNk ZWZpbmUgR0VOX0NNRF9FTVBUWQkJCUJJVCgwKSAgI2RlZmluZSAKPj4gICBEU0lfVE9fQ05UX0NG RwkJCTB4NzggCj4+IC0jZGVmaW5lIEhTVFhfVE9fQ05UKHApCQkJKCgocCkgJiAweGZmZmYpIDw8 IAo+PiAxNikgLSNkZWZpbmUgTFBSWF9UT19DTlQocCkJCQkoKHApICYgMHhmZmZmKSAKPj4gICAg I2RlZmluZSBEU0lfSFNfUkRfVE9fQ05UCQkweDdjICNkZWZpbmUgCj4+ICAgRFNJX0xQX1JEX1RP X0NOVAkJMHg4MCAKPj4gQEAgLTE2NCw1MiArMTQ4LDE3IEBAIAo+PiAgICNkZWZpbmUgRFNJX0JU QV9UT19DTlQJCQkweDhjICAjZGVmaW5lIAo+PiAgIERTSV9MUENMS19DVFJMCQkJMHg5NCAKPj4g LSNkZWZpbmUgQVVUT19DTEtMQU5FX0NUUkwJCUJJVCgxKSAtI2RlZmluZSAKPj4gUEhZX1RYUkVR VUVTVENMS0hTCQlCSVQoMCkgLSAKPj4gICAjZGVmaW5lIERTSV9QSFlfVE1SX0xQQ0xLX0NGRwkJ MHg5OCAKPj4gLSNkZWZpbmUgUEhZX0NMS0hTMkxQX1RJTUUobGJjYykJCSgoKGxiY2MpICYgMHgz ZmYpIAo+PiA8PCAxNikgLSNkZWZpbmUgUEhZX0NMS0xQMkhTX1RJTUUobGJjYykJCSgobGJjYykg JiAKPj4gMHgzZmYpIC0gCj4+ICAgI2RlZmluZSBEU0lfUEhZX1RNUl9DRkcJCQkweDljIAo+PiAt I2RlZmluZSBQSFlfSFMyTFBfVElNRShsYmNjKQkJKCgobGJjYykgJiAweGZmKSAKPj4gPDwgMjQp IC0jZGVmaW5lIFBIWV9MUDJIU19USU1FKGxiY2MpCQkoKChsYmNjKSAmIDB4ZmYpIAo+PiA8PCAx NikgLSNkZWZpbmUgTUFYX1JEX1RJTUUobGJjYykJCSgobGJjYykgJiAweDdmZmYpIAo+PiAtI2Rl ZmluZSBQSFlfSFMyTFBfVElNRV9WMTMxKGxiY2MpCSgoKGxiY2MpICYgMHgzZmYpIDw8IDE2KSAK Pj4gLSNkZWZpbmUgUEhZX0xQMkhTX1RJTUVfVjEzMShsYmNjKQkoKGxiY2MpICYgMHgzZmYpIC0g Cj4+ICAgI2RlZmluZSBEU0lfUEhZX1JTVFoJCQkweGEwIAo+PiAtI2RlZmluZSBQSFlfRElTRk9S Q0VQTEwJCQkwIC0jZGVmaW5lIAo+PiBQSFlfRU5GT1JDRVBMTAkJCUJJVCgzKSAtI2RlZmluZSAK Pj4gUEhZX0RJU0FCTEVDTEsJCQkwIC0jZGVmaW5lIFBIWV9FTkFCTEVDTEsgCj4+IEJJVCgyKSAt I2RlZmluZSBQSFlfUlNUWgkJCTAgLSNkZWZpbmUgCj4+IFBIWV9VTlJTVFoJCQlCSVQoMSkgLSNk ZWZpbmUgUEhZX1NIVVRET1dOWiAKPj4gMCAtI2RlZmluZSBQSFlfVU5TSFVURE9XTloJCQlCSVQo MCkgLSAKPj4gICAjZGVmaW5lIERTSV9QSFlfSUZfQ0ZHCQkJMHhhNCAKPj4gLSNkZWZpbmUgUEhZ X1NUT1BfV0FJVF9USU1FKGN5Y2xlKQkoKChjeWNsZSkgJiAweGZmKSA8PCA4KSAKPj4gLSNkZWZp bmUgTl9MQU5FUyhuKQkJCSgoKG4pIC0gMSkgJiAweDMpIC0gCj4+IC0jZGVmaW5lIERTSV9QSFlf VUxQU19DVFJMCQkweGE4IC0jZGVmaW5lIAo+PiBEU0lfUEhZX1RYX1RSSUdHRVJTCQkweGFjIAo+ PiAgICAjZGVmaW5lIERTSV9QSFlfU1RBVFVTCQkJMHhiMCAjZGVmaW5lIAo+PiAgIFBIWV9TVE9Q X1NUQVRFX0NMS19MQU5FCQlCSVQoMikgI2RlZmluZSBQSFlfTE9DSyAKPj4gICBCSVQoMCkgICNk ZWZpbmUgRFNJX1BIWV9UU1RfQ1RSTDAJCTB4YjQgCj4+IC0jZGVmaW5lIFBIWV9URVNUQ0xLCQkJ QklUKDEpIC0jZGVmaW5lIAo+PiBQSFlfVU5URVNUQ0xLCQkJMCAtI2RlZmluZSBQSFlfVEVTVENM UiAKPj4gQklUKDApIC0jZGVmaW5lIFBIWV9VTlRFU1RDTFIJCQkwIC0gCj4+ICAgI2RlZmluZSBE U0lfUEhZX1RTVF9DVFJMMQkJMHhiOCAKPj4gLSNkZWZpbmUgUEhZX1RFU1RFTgkJCUJJVCgxNikg LSNkZWZpbmUgCj4+IFBIWV9VTlRFU1RFTgkJCTAgLSNkZWZpbmUgUEhZX1RFU1RET1VUKG4pIAo+ PiAoKChuKSAmIDB4ZmYpIDw8IDgpIC0jZGVmaW5lIFBIWV9URVNURElOKG4pIAo+PiAoKG4pICYg MHhmZikgCj4+ICAgICNkZWZpbmUgRFNJX0lOVF9TVDAJCQkweGJjICNkZWZpbmUgCj4+ICAgRFNJ X0lOVF9TVDEJCQkweGMwIAo+PiBAQCAtMjE3LDcgKzE2Niw2IEBAIAo+PiAgICNkZWZpbmUgRFNJ X0lOVF9NU0sxCQkJMHhjOCAgI2RlZmluZSAKPj4gICBEU0lfUEhZX1RNUl9SRF9DRkcJCTB4ZjQg Cj4+IC0jZGVmaW5lIE1BWF9SRF9USU1FX1YxMzEobGJjYykJCSgobGJjYykgJiAweDdmZmYpIAo+ PiAgICAjZGVmaW5lIFBIWV9TVEFUVVNfVElNRU9VVF9VUwkJMTAwMDAgI2RlZmluZSAKPj4gICBD TURfUEtUX1NUQVRVU19USU1FT1VUX1VTCTIwMDAwIAo+PiBAQCAtMjUwLDYgKzE5OCw1MyBAQCBz dHJ1Y3QgZHdfbWlwaV9kc2kgeyAKPj4gICAJc3RydWN0IGR3X21pcGlfZHNpICpzbGF2ZTsgLyog ZHVhbC1kc2kgc2xhdmUgcHRyICovICBjb25zdCAKPj4gICBzdHJ1Y3QgZHdfbWlwaV9kc2lfcGxh dF9kYXRhICpwbGF0X2RhdGE7IAo+PiArICsJc3RydWN0IHJlZ21hcF9maWVsZAkqZmllbGRfZHBp XzE4bG9vc2VseV9lbjsgKyAKPj4gc3RydWN0IHJlZ21hcF9maWVsZAkqZmllbGRfZHBpX2NvbG9y X2NvZGluZzsgKwlzdHJ1Y3QgCj4+IHJlZ21hcF9maWVsZAkqZmllbGRfZHBpX3ZpZDsgKwlzdHJ1 Y3QgcmVnbWFwX2ZpZWxkIAo+PiAqZmllbGRfZHBpX3ZzeW5jX2FjdGl2ZV9sb3c7ICsJc3RydWN0 IHJlZ21hcF9maWVsZCAKPj4gKmZpZWxkX2RwaV9oc3luY19hY3RpdmVfbG93OyArCXN0cnVjdCBy ZWdtYXBfZmllbGQgCj4+ICpmaWVsZF9jbWRfbW9kZV9hY2tfcnFzdF9lbjsgKwlzdHJ1Y3QgcmVn bWFwX2ZpZWxkIAo+PiAqZmllbGRfY21kX21vZGVfYWxsX2xwX2VuOyArCXN0cnVjdCByZWdtYXBf ZmllbGQgCj4+ICpmaWVsZF9jbWRfbW9kZV9lbjsgKwlzdHJ1Y3QgcmVnbWFwX2ZpZWxkIAo+PiAq ZmllbGRfY21kX3BrdF9zdGF0dXM7ICsJc3RydWN0IHJlZ21hcF9maWVsZCAKPj4gKmZpZWxkX3Zp ZF9tb2RlX2VuOyArCXN0cnVjdCByZWdtYXBfZmllbGQgCj4+ICpmaWVsZF92aWRfbW9kZV90eXBl OyArCXN0cnVjdCByZWdtYXBfZmllbGQgCj4+ICpmaWVsZF92aWRfbW9kZV9sb3dfcG93ZXI7ICsJ c3RydWN0IHJlZ21hcF9maWVsZCAKPj4gKmZpZWxkX3ZpZF9tb2RlX3ZwZ19lbjsgKwlzdHJ1Y3Qg cmVnbWFwX2ZpZWxkIAo+PiAqZmllbGRfdmlkX21vZGVfdnBnX2hvcml6OyArCXN0cnVjdCByZWdt YXBfZmllbGQgCj4+ICpmaWVsZF92aWRfcGt0X3NpemU7ICsJc3RydWN0IHJlZ21hcF9maWVsZCAK Pj4gKmZpZWxkX3ZpZF9oc2FfdGltZTsgKwlzdHJ1Y3QgcmVnbWFwX2ZpZWxkIAo+PiAqZmllbGRf dmlkX2hicF90aW1lOyArCXN0cnVjdCByZWdtYXBfZmllbGQgCj4+ICpmaWVsZF92aWRfaGxpbmVf dGltZTsgKwlzdHJ1Y3QgcmVnbWFwX2ZpZWxkIAo+PiAqZmllbGRfdmlkX3ZzYV90aW1lOyArCXN0 cnVjdCByZWdtYXBfZmllbGQgCj4+ICpmaWVsZF92aWRfdmJwX3RpbWU7ICsJc3RydWN0IHJlZ21h cF9maWVsZCAKPj4gKmZpZWxkX3ZpZF92ZnBfdGltZTsgKwlzdHJ1Y3QgcmVnbWFwX2ZpZWxkIAo+ PiAqZmllbGRfdmlkX3ZhY3RpdmVfdGltZTsgKwlzdHJ1Y3QgcmVnbWFwX2ZpZWxkIAo+PiAqZmll bGRfcGh5X3R4cmVxdWVzdGNsa2hzOyArCXN0cnVjdCByZWdtYXBfZmllbGQgCj4+ICpmaWVsZF9w aHlfYnRhX3RpbWU7ICsJc3RydWN0IHJlZ21hcF9maWVsZCAKPj4gKmZpZWxkX3BoeV9tYXhfcmRf dGltZTsgKwlzdHJ1Y3QgcmVnbWFwX2ZpZWxkIAo+PiAqZmllbGRfcGh5X2xwMmhzX3RpbWU7ICsJ c3RydWN0IHJlZ21hcF9maWVsZCAKPj4gKmZpZWxkX3BoeV9oczJscF90aW1lOyArCXN0cnVjdCBy ZWdtYXBfZmllbGQgCj4+ICpmaWVsZF9waHlfY2xrbHAyaHNfdGltZTsgKwlzdHJ1Y3QgcmVnbWFw X2ZpZWxkIAo+PiAqZmllbGRfcGh5X2Nsa2hzMmxwX3RpbWU7ICsJc3RydWN0IHJlZ21hcF9maWVs ZCAKPj4gKmZpZWxkX3BoeV90ZXN0Y2xyOyArCXN0cnVjdCByZWdtYXBfZmllbGQgCj4+ICpmaWVs ZF9waHlfdW5zaHV0ZG93bno7ICsJc3RydWN0IHJlZ21hcF9maWVsZCAKPj4gKmZpZWxkX3BoeV91 bnJzdHo7ICsJc3RydWN0IHJlZ21hcF9maWVsZCAKPj4gKmZpZWxkX3BoeV9lbmFibGVjbGs7ICsJ c3RydWN0IHJlZ21hcF9maWVsZCAKPj4gKmZpZWxkX3BoeV9mb3JjZXBsbDsgKwlzdHJ1Y3QgcmVn bWFwX2ZpZWxkIAo+PiAqZmllbGRfcGh5X25sYW5lczsgKwlzdHJ1Y3QgcmVnbWFwX2ZpZWxkIAo+ PiAqZmllbGRfcGh5X3N0b3Bfd2FpdF90aW1lOyArCXN0cnVjdCByZWdtYXBfZmllbGQgCj4+ICpm aWVsZF9waHlfc3RhdHVzOyArCXN0cnVjdCByZWdtYXBfZmllbGQJKmZpZWxkX3Bja2hkbF9jZmc7 IAo+PiArCXN0cnVjdCByZWdtYXBfZmllbGQJKmZpZWxkX2hzdHhfdGltZW91dF9jb3VudGVyOyAr IAo+PiBzdHJ1Y3QgcmVnbWFwX2ZpZWxkCSpmaWVsZF9scHJ4X3RpbWVvdXRfY291bnRlcjsgKwlz dHJ1Y3QgCj4+IHJlZ21hcF9maWVsZAkqZmllbGRfaW50X3N0YXQwOyArCXN0cnVjdCByZWdtYXBf ZmllbGQgCj4+ICpmaWVsZF9pbnRfc3RhdDE7ICsJc3RydWN0IHJlZ21hcF9maWVsZAkqZmllbGRf aW50X21hc2swOyAKPj4gKwlzdHJ1Y3QgcmVnbWFwX2ZpZWxkCSpmaWVsZF9pbnRfbWFzazE7ICsJ c3RydWN0IAo+PiByZWdtYXBfZmllbGQJKmZpZWxkX2dlbl9oZHI7ICsJc3RydWN0IHJlZ21hcF9m aWVsZCAKPj4gKmZpZWxkX2dlbl9wYXlsb2FkOyAKPj4gICB9OyAgc3RhdGljIGNvbnN0IHN0cnVj dCByZWdtYXBfY29uZmlnIGR3X21pcGlfZHNpX3JlZ21hcF9jZmcgCj4+ICAgPSB7IAo+PiBAQCAt MjU5LDYgKzI1NCwxMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfY29uZmlnIAo+PiBk d19taXBpX2RzaV9yZWdtYXBfY2ZnID0geyAKPj4gICAJLm5hbWUgPSAiZHctbWlwaS1kc2kiLCB9 OyAgCj4+ICtzdHJ1Y3QgZHdfbWlwaV9kc2lfdmFyaWFudCB7ICsJLyogUmVnbWFwIGZpZWxkIGNv bmZpZ3MgCj4+IGZvciBEU0kgYWRhcHRlciAqLyArCXN0cnVjdCByZWdfZmllbGQgCj4+IGNmZ19k cGlfMThsb29zZWx5X2VuOyArCXN0cnVjdCByZWdfZmllbGQgCj4+IGNmZ19kcGlfY29sb3JfY29k aW5nOyArCXN0cnVjdCByZWdfZmllbGQgCj4+IGNmZ19kcGlfdmlkOyArCXN0cnVjdCByZWdfZmll bGQgCj4+IGNmZ19kcGlfdnN5bmNfYWN0aXZlX2xvdzsgKwlzdHJ1Y3QgcmVnX2ZpZWxkIAo+PiBj ZmdfZHBpX2hzeW5jX2FjdGl2ZV9sb3c7ICsJc3RydWN0IHJlZ19maWVsZCAKPj4gY2ZnX2NtZF9t b2RlX2VuOyArCXN0cnVjdCByZWdfZmllbGQgCj4+IGNmZ19jbWRfbW9kZV9hY2tfcnFzdF9lbjsg KwlzdHJ1Y3QgcmVnX2ZpZWxkIAo+PiBjZmdfY21kX21vZGVfYWxsX2xwX2VuOyArCXN0cnVjdCBy ZWdfZmllbGQgCj4+IGNmZ19jbWRfcGt0X3N0YXR1czsgKwlzdHJ1Y3QgcmVnX2ZpZWxkIAo+PiBj ZmdfdmlkX21vZGVfZW47ICsJc3RydWN0IHJlZ19maWVsZAljZmdfdmlkX21vZGVfdHlwZTsgCj4+ ICsJc3RydWN0IHJlZ19maWVsZAljZmdfdmlkX21vZGVfbG93X3Bvd2VyOyArIAo+PiBzdHJ1Y3Qg cmVnX2ZpZWxkCWNmZ192aWRfbW9kZV92cGdfZW47ICsJc3RydWN0IHJlZ19maWVsZCAKPj4gY2Zn X3ZpZF9tb2RlX3ZwZ19ob3JpejsgKwlzdHJ1Y3QgcmVnX2ZpZWxkIAo+PiBjZmdfdmlkX3BrdF9z aXplOyArCXN0cnVjdCByZWdfZmllbGQJY2ZnX3ZpZF9oc2FfdGltZTsgCj4+ICsJc3RydWN0IHJl Z19maWVsZAljZmdfdmlkX2hicF90aW1lOyArCXN0cnVjdCAKPj4gcmVnX2ZpZWxkCWNmZ192aWRf aGxpbmVfdGltZTsgKwlzdHJ1Y3QgcmVnX2ZpZWxkIAo+PiBjZmdfdmlkX3ZzYV90aW1lOyArCXN0 cnVjdCByZWdfZmllbGQJY2ZnX3ZpZF92YnBfdGltZTsgCj4+ICsJc3RydWN0IHJlZ19maWVsZAlj ZmdfdmlkX3ZmcF90aW1lOyArCXN0cnVjdCAKPj4gcmVnX2ZpZWxkCWNmZ192aWRfdmFjdGl2ZV90 aW1lOyArCXN0cnVjdCByZWdfZmllbGQgCj4+IGNmZ19waHlfdHhyZXF1ZXN0Y2xraHM7ICsJc3Ry dWN0IHJlZ19maWVsZCAKPj4gY2ZnX3BoeV9idGFfdGltZTsgKwlzdHJ1Y3QgcmVnX2ZpZWxkIAo+ PiBjZmdfcGh5X21heF9yZF90aW1lOyArCXN0cnVjdCByZWdfZmllbGQgCj4+IGNmZ19waHlfbHAy aHNfdGltZTsgKwlzdHJ1Y3QgcmVnX2ZpZWxkIAo+PiBjZmdfcGh5X2hzMmxwX3RpbWU7ICsJc3Ry dWN0IHJlZ19maWVsZCAKPj4gY2ZnX3BoeV9tYXhfcmRfdGltZV92MTMxOyArCXN0cnVjdCByZWdf ZmllbGQgCj4+IGNmZ19waHlfbHAyaHNfdGltZV92MTMxOyArCXN0cnVjdCByZWdfZmllbGQgCj4+ IGNmZ19waHlfaHMybHBfdGltZV92MTMxOyArCXN0cnVjdCByZWdfZmllbGQgCj4+IGNmZ19waHlf Y2xrbHAyaHNfdGltZTsgKwlzdHJ1Y3QgcmVnX2ZpZWxkIAo+PiBjZmdfcGh5X2Nsa2hzMmxwX3Rp bWU7ICsJc3RydWN0IHJlZ19maWVsZCAKPj4gY2ZnX3BoeV90ZXN0Y2xyOyArCXN0cnVjdCByZWdf ZmllbGQgCj4+IGNmZ19waHlfdW5zaHV0ZG93bno7ICsJc3RydWN0IHJlZ19maWVsZCAKPj4gY2Zn X3BoeV91bnJzdHo7ICsJc3RydWN0IHJlZ19maWVsZAljZmdfcGh5X2VuYWJsZWNsazsgCj4+ICsJ c3RydWN0IHJlZ19maWVsZAljZmdfcGh5X2ZvcmNlcGxsOyArCXN0cnVjdCAKPj4gcmVnX2ZpZWxk CWNmZ19waHlfbmxhbmVzOyArCXN0cnVjdCByZWdfZmllbGQgCj4+IGNmZ19waHlfc3RvcF93YWl0 X3RpbWU7ICsJc3RydWN0IHJlZ19maWVsZCAKPj4gY2ZnX3BoeV9zdGF0dXM7ICsJc3RydWN0IHJl Z19maWVsZAljZmdfcGNraGRsX2NmZzsgKyAKPj4gc3RydWN0IHJlZ19maWVsZAljZmdfaHN0eF90 aW1lb3V0X2NvdW50ZXI7ICsJc3RydWN0IAo+PiByZWdfZmllbGQJY2ZnX2xwcnhfdGltZW91dF9j b3VudGVyOyArCXN0cnVjdCByZWdfZmllbGQgCj4+IGNmZ19pbnRfc3RhdDA7ICsJc3RydWN0IHJl Z19maWVsZAljZmdfaW50X3N0YXQxOyArIAo+PiBzdHJ1Y3QgcmVnX2ZpZWxkCWNmZ19pbnRfbWFz azA7ICsJc3RydWN0IHJlZ19maWVsZCAKPj4gY2ZnX2ludF9tYXNrMTsgKwlzdHJ1Y3QgcmVnX2Zp ZWxkCWNmZ19nZW5faGRyOyArIAo+PiBzdHJ1Y3QgcmVnX2ZpZWxkCWNmZ19nZW5fcGF5bG9hZDsg K307ICsgK3N0YXRpYyBjb25zdCAKPj4gc3RydWN0IGR3X21pcGlfZHNpX3ZhcmlhbnQgZHdfbWlw aV9kc2lfdjEzMF92MTMxX2xheW91dCA9IHsgKyAKPj4gLmNmZ19kcGlfY29sb3JfY29kaW5nID0g Cj4+IFJFR19GSUVMRChEU0lfRFBJX0NPTE9SX0NPRElORywgMCwgMyksICsgCj4+IC5jZmdfZHBp XzE4bG9vc2VseV9lbiA9IAo+PiBSRUdfRklFTEQoRFNJX0RQSV9DT0xPUl9DT0RJTkcsIDgsIDgp LCArCS5jZmdfZHBpX3ZpZCA9IAo+PiBSRUdfRklFTEQoRFNJX0RQSV9WQ0lELCAwLCAyKSwgKwku Y2ZnX2RwaV92c3luY19hY3RpdmVfbG93IAo+PiA9CVJFR19GSUVMRChEU0lfRFBJX0NGR19QT0ws IDEsIDEpLCArIAo+PiAuY2ZnX2RwaV9oc3luY19hY3RpdmVfbG93ID0JUkVHX0ZJRUxEKERTSV9E UElfQ0ZHX1BPTCwgMiwgMiksIAo+PiArCS5jZmdfY21kX21vZGVfYWNrX3Jxc3RfZW4gPSAKPj4g UkVHX0ZJRUxEKERTSV9DTURfTU9ERV9DRkcsIDEsIDEpLCArCS5jZmdfY21kX21vZGVfYWxsX2xw X2VuID0gCj4+IFJFR19GSUVMRChEU0lfQ01EX01PREVfQ0ZHLCA4LCAyNCksICsJLmNmZ19jbWRf bW9kZV9lbiA9IAo+PiBSRUdfRklFTEQoRFNJX01PREVfQ0ZHLCAwLCAzMSksICsJLmNmZ19jbWRf cGt0X3N0YXR1cyA9IAo+PiBSRUdfRklFTEQoRFNJX0NNRF9QS1RfU1RBVFVTLCAwLCAzMSksICsJ LmNmZ192aWRfbW9kZV9lbiA9IAo+PiBSRUdfRklFTEQoRFNJX01PREVfQ0ZHLCAwLCAzMSksICsJ LmNmZ192aWRfbW9kZV90eXBlID0gCj4+IFJFR19GSUVMRChEU0lfVklEX01PREVfQ0ZHLCAwLCAx KSwgKwkuY2ZnX3ZpZF9tb2RlX2xvd19wb3dlciA9IAo+PiBSRUdfRklFTEQoRFNJX1ZJRF9NT0RF X0NGRywgOCwgMTMpLCArIAo+PiAuY2ZnX3ZpZF9tb2RlX3ZwZ19lbiA9IAo+PiBSRUdfRklFTEQo RFNJX1ZJRF9NT0RFX0NGRywgMTYsIDE2KSwgKyAKPj4gLmNmZ192aWRfbW9kZV92cGdfaG9yaXog PQlSRUdfRklFTEQoRFNJX1ZJRF9NT0RFX0NGRywgMjQsIAo+PiAyNCksICsJLmNmZ192aWRfcGt0 X3NpemUgPSAKPj4gUkVHX0ZJRUxEKERTSV9WSURfUEtUX1NJWkUsIDAsIDEwKSwgKwkuY2ZnX3Zp ZF9oc2FfdGltZSAKPj4gPQkJUkVHX0ZJRUxEKERTSV9WSURfSFNBX1RJTUUsIDAsIDMxKSwgKyAK Pj4gLmNmZ192aWRfaGJwX3RpbWUgPQkJUkVHX0ZJRUxEKERTSV9WSURfSEJQX1RJTUUsIDAsIAo+ PiAzMSksICsJLmNmZ192aWRfaGxpbmVfdGltZSA9IAo+PiBSRUdfRklFTEQoRFNJX1ZJRF9ITElO RV9USU1FLCAwLCAzMSksICsJLmNmZ192aWRfdnNhX3RpbWUgCj4+ID0JCVJFR19GSUVMRChEU0lf VklEX1ZTQV9MSU5FUywgMCwgMzEpLCArIAo+PiAuY2ZnX3ZpZF92YnBfdGltZSA9CQlSRUdfRklF TEQoRFNJX1ZJRF9WQlBfTElORVMsIDAsIAo+PiAzMSksICsJLmNmZ192aWRfdmZwX3RpbWUgPSAK Pj4gUkVHX0ZJRUxEKERTSV9WSURfVkZQX0xJTkVTLCAwLCAzMSksICsgCj4+IC5jZmdfdmlkX3Zh Y3RpdmVfdGltZSA9IAo+PiBSRUdfRklFTEQoRFNJX1ZJRF9WQUNUSVZFX0xJTkVTLCAwLCAzMSks ICsgCj4+IC5jZmdfcGh5X3R4cmVxdWVzdGNsa2hzID0JUkVHX0ZJRUxEKERTSV9MUENMS19DVFJM LCAwLCAwKSwgKyAKPj4gLmNmZ19waHlfYnRhX3RpbWUgPQkJUkVHX0ZJRUxEKERTSV9CVEFfVE9f Q05ULCAwLCAzMSksIAo+PiArCS5jZmdfcGh5X21heF9yZF90aW1lID0JCVJFR19GSUVMRChEU0lf UEhZX1RNUl9DRkcsIAo+PiAwLCAxNSksICsJLmNmZ19waHlfbHAyaHNfdGltZSA9IAo+PiBSRUdf RklFTEQoRFNJX1BIWV9UTVJfQ0ZHLCAxNiwgMjMpLCArIAo+PiAuY2ZnX3BoeV9oczJscF90aW1l ID0JCVJFR19GSUVMRChEU0lfUEhZX1RNUl9DRkcsIAo+PiAyNCwgMzEpLCArCS5jZmdfcGh5X21h eF9yZF90aW1lX3YxMzEgPSAKPj4gUkVHX0ZJRUxEKERTSV9QSFlfVE1SX1JEX0NGRywgMCwgMTUp LCArIAo+PiAuY2ZnX3BoeV9scDJoc190aW1lX3YxMzEgPQlSRUdfRklFTEQoRFNJX1BIWV9UTVJf Q0ZHLCAwLCAxNSksIAo+PiArCS5jZmdfcGh5X2hzMmxwX3RpbWVfdjEzMSA9CVJFR19GSUVMRChE U0lfUEhZX1RNUl9DRkcsIAo+PiAxNiwgMzEpLCArCS5jZmdfcGh5X2Nsa2xwMmhzX3RpbWUgPSAK Pj4gUkVHX0ZJRUxEKERTSV9QSFlfVE1SX0xQQ0xLX0NGRywgMCwgMTUpLCArIAo+PiAuY2ZnX3Bo eV9jbGtoczJscF90aW1lID0JUkVHX0ZJRUxEKERTSV9QSFlfVE1SX0xQQ0xLX0NGRywgCj4+IDE2 LCAzMSksICsJLmNmZ19waHlfdGVzdGNsciA9IAo+PiBSRUdfRklFTEQoRFNJX1BIWV9UU1RfQ1RS TDAsIDAsIDApLCArIAo+PiAuY2ZnX3BoeV91bnNodXRkb3dueiA9CQlSRUdfRklFTEQoRFNJX1BI WV9SU1RaLCAwLCAKPj4gMCksICsJLmNmZ19waHlfdW5yc3R6ID0gCj4+IFJFR19GSUVMRChEU0lf UEhZX1JTVFosIDEsIDEpLCArCS5jZmdfcGh5X2VuYWJsZWNsayA9IAo+PiBSRUdfRklFTEQoRFNJ X1BIWV9SU1RaLCAyLCAyKSwgKwkuY2ZnX3BoeV9mb3JjZXBsbCA9IAo+PiBSRUdfRklFTEQoRFNJ X1BIWV9SU1RaLCAzLCAzKSwgKwkuY2ZnX3BoeV9ubGFuZXMgPSAKPj4gUkVHX0ZJRUxEKERTSV9Q SFlfSUZfQ0ZHLCAwLCAxKSwgKwkuY2ZnX3BoeV9zdG9wX3dhaXRfdGltZSA9IAo+PiBSRUdfRklF TEQoRFNJX1BIWV9JRl9DRkcsIDgsIDE1KSwgKwkuY2ZnX3BoeV9zdGF0dXMgPSAKPj4gUkVHX0ZJ RUxEKERTSV9QSFlfU1RBVFVTLCAwLCAwKSwgKwkuY2ZnX3Bja2hkbF9jZmcgPSAKPj4gUkVHX0ZJ RUxEKERTSV9QQ0tIRExfQ0ZHLCAwLCA0KSwgKwkuY2ZnX2hzdHhfdGltZW91dF9jb3VudGVyIAo+ PiA9CVJFR19GSUVMRChEU0lfVE9fQ05UX0NGRywgMTYsIDMxKSwgKyAKPj4gLmNmZ19scHJ4X3Rp bWVvdXRfY291bnRlciA9CVJFR19GSUVMRChEU0lfVE9fQ05UX0NGRywgMCwgMTUpLCAKPj4gKwku Y2ZnX2ludF9zdGF0MCA9CQlSRUdfRklFTEQoRFNJX0lOVF9TVDAsIDAsIAo+PiAzMSksICsJLmNm Z19pbnRfc3RhdDEgPSAKPj4gUkVHX0ZJRUxEKERTSV9JTlRfU1QxLCAwLCAzMSksICsJLmNmZ19p bnRfbWFzazAgPSAKPj4gUkVHX0ZJRUxEKERTSV9JTlRfTVNLMCwgMCwgMzEpLCArCS5jZmdfaW50 X21hc2sxID0gCj4+IFJFR19GSUVMRChEU0lfSU5UX01TSzEsIDAsIDMxKSwgKwkuY2ZnX2dlbl9o ZHIgPSAKPj4gUkVHX0ZJRUxEKERTSV9HRU5fSERSLCAwLCAzMSksICsJLmNmZ19nZW5fcGF5bG9h ZCA9IAo+PiBSRUdfRklFTEQoRFNJX0dFTl9QTERfREFUQSwgMCwgMzEpLCArfTsgKyAKPj4gICAv KiAKPj4gICAgKiBDaGVjayBpZiBlaXRoZXIgYSBsaW5rIHRvIGEgbWFzdGVyIG9yIHNsYXZlIGlz IHByZXNlbnQgKi8gCj4+IEBAIC0zNTksMTUgKzQ1OSwyMiBAQCBzdGF0aWMgdm9pZCBkd19taXBp X21lc3NhZ2VfY29uZmlnKHN0cnVjdCAKPj4gZHdfbWlwaV9kc2kgKmRzaSwgCj4+ICAgCQkJCSAg IGNvbnN0IHN0cnVjdCBtaXBpX2RzaV9tc2cgKm1zZykgCj4+ICAgeyBib29sIGxwbSA9IG1zZy0+ ZmxhZ3MgJiBNSVBJX0RTSV9NU0dfVVNFX0xQTTsgCj4+IC0JdTMyIHZhbCA9IDA7ICsJdTMyIGNt ZF9tb2RlX2xwID0gMDsgKyArCXN3aXRjaCAKPj4gKGRzaS0+aHdfdmVyc2lvbikgeyArCWNhc2Ug SFdWRVJfMTMwOiArCWNhc2UgCj4+IEhXVkVSXzEzMTogKwkJY21kX21vZGVfbHAgPSBDTURfTU9E RV9BTExfTFA7ICsgCj4+IGJyZWFrOyArCX0gCj4+ICAgIGlmIChtc2ctPmZsYWdzICYgTUlQSV9E U0lfTVNHX1JFUV9BQ0spIAo+PiAtCQl2YWwgfD0gQUNLX1JRU1RfRU47ICsgCj4+IHJlZ21hcF9m aWVsZF93cml0ZShkc2ktPmZpZWxkX2NtZF9tb2RlX2Fja19ycXN0X2VuLCAxKTsgKyAKPj4gICAJ aWYgKGxwbSkgCj4+IC0JCXZhbCB8PSBDTURfTU9ERV9BTExfTFA7ICsgCj4+IHJlZ21hcF9maWVs ZF93cml0ZShkc2ktPmZpZWxkX2NtZF9tb2RlX2FsbF9scF9lbiwgY21kX21vZGVfbHApOyAKPj4g ICAgCj4+IC0JcmVnbWFwX3dyaXRlKGRzaS0+cmVncywgRFNJX0xQQ0xLX0NUUkwsIGxwbSA/IDAg OiAKPj4gUEhZX1RYUkVRVUVTVENMS0hTKTsgLQlyZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCAKPj4g RFNJX0NNRF9NT0RFX0NGRywgdmFsKTsgKyAKPj4gcmVnbWFwX2ZpZWxkX3dyaXRlKGRzaS0+Zmll bGRfcGh5X3R4cmVxdWVzdGNsa2hzLCBscG0gPyAwIDogMSk7IAo+PiAgIH0gIHN0YXRpYyBpbnQg ZHdfbWlwaV9kc2lfZ2VuX3BrdF9oZHJfd3JpdGUoc3RydWN0IAo+PiAgIGR3X21pcGlfZHNpICpk c2ksIHUzMiBoZHJfdmFsKSAKPj4gQEAgLTM3NSwxOCArNDgyLDE4IEBAIHN0YXRpYyBpbnQgCj4+ IGR3X21pcGlfZHNpX2dlbl9wa3RfaGRyX3dyaXRlKHN0cnVjdCBkd19taXBpX2RzaSAqZHNpLCB1 MzIgCj4+IGhkcl92YWwpIAo+PiAgIAlpbnQgcmV0OyB1MzIgdmFsID0gMCwgbWFzazsgIAo+PiAt CXJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChkc2ktPnJlZ3MsIAo+PiBEU0lfQ01EX1BL VF9TVEFUVVMsIC0gCj4+IHZhbCwgISh2YWwgJiBHRU5fQ01EX0ZVTEwpLCAxMDAwLCAtIAo+PiBD TURfUEtUX1NUQVRVU19USU1FT1VUX1VTKTsgKwlyZXQgPSAKPj4gcmVnbWFwX2ZpZWxkX3JlYWRf cG9sbF90aW1lb3V0KGRzaS0+ZmllbGRfY21kX3BrdF9zdGF0dXMsICsgCj4+IHZhbCwgISh2YWwg JiBHRU5fQ01EX0ZVTEwpLCArIAo+PiAxMDAwLCBDTURfUEtUX1NUQVRVU19USU1FT1VUX1VTKTsg Cj4+ICAgCWlmIChyZXQpIHsgZGV2X2Vycihkc2ktPmRldiwgImZhaWxlZCB0byBnZXQgYXZhaWxh YmxlIAo+PiAgIGNvbW1hbmQgRklGT1xuIik7IHJldHVybiByZXQ7IH0gIAo+PiAtCXJlZ21hcF93 cml0ZShkc2ktPnJlZ3MsIERTSV9HRU5fSERSLCBoZHJfdmFsKTsgKyAKPj4gcmVnbWFwX2ZpZWxk X3dyaXRlKGRzaS0+ZmllbGRfZ2VuX2hkciwgaGRyX3ZhbCk7IAo+PiAgICBtYXNrID0gR0VOX0NN RF9FTVBUWSB8IEdFTl9QTERfV19FTVBUWTsgCj4+IC0JcmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90 aW1lb3V0KGRzaS0+cmVncywgCj4+IERTSV9DTURfUEtUX1NUQVRVUywgKwlyZXQgPSAKPj4gcmVn bWFwX2ZpZWxkX3JlYWRfcG9sbF90aW1lb3V0KGRzaS0+ZmllbGRfY21kX3BrdF9zdGF0dXMsIAo+ PiAgIAkJCQkgICAgICAgdmFsLCAodmFsICYgbWFzaykgPT0gbWFzaywgCj4+ICAgMTAwMCwgQ01E X1BLVF9TVEFUVVNfVElNRU9VVF9VUyk7IGlmIChyZXQpIHsgCj4+IEBAIC00MDksMjAgKzUxNiwy MiBAQCBzdGF0aWMgaW50IGR3X21pcGlfZHNpX3dyaXRlKHN0cnVjdCAKPj4gZHdfbWlwaV9kc2kg KmRzaSwgCj4+ICAgCQlpZiAobGVuIDwgcGxkX2RhdGFfYnl0ZXMpIHsgd29yZCA9IDA7IAo+PiAg IG1lbWNweSgmd29yZCwgdHhfYnVmLCBsZW4pOyAKPj4gLQkJCXJlZ21hcF93cml0ZShkc2ktPnJl Z3MsIERTSV9HRU5fUExEX0RBVEEsIAo+PiAtCQkJCSAgICAgbGUzMl90b19jcHUod29yZCkpOyAr IAo+PiByZWdtYXBfZmllbGRfd3JpdGUoZHNpLT5maWVsZF9nZW5fcGF5bG9hZCwgKyAKPj4gbGUz Ml90b19jcHUod29yZCkpOyAKPj4gICAJCQlsZW4gPSAwOyB9IGVsc2UgeyBtZW1jcHkoJndvcmQs IHR4X2J1ZiwgCj4+ICAgcGxkX2RhdGFfYnl0ZXMpOyAKPj4gLQkJCXJlZ21hcF93cml0ZShkc2kt PnJlZ3MsIERTSV9HRU5fUExEX0RBVEEsIAo+PiAtCQkJCSAgICAgbGUzMl90b19jcHUod29yZCkp OyArIAo+PiByZWdtYXBfZmllbGRfd3JpdGUoZHNpLT5maWVsZF9nZW5fcGF5bG9hZCwgKyAKPj4g bGUzMl90b19jcHUod29yZCkpOyAKPj4gICAJCQl0eF9idWYgKz0gcGxkX2RhdGFfYnl0ZXM7IGxl biAtPSAKPj4gICBwbGRfZGF0YV9ieXRlczsgfSAgCj4+IC0JCXJldCA9IHJlZ21hcF9yZWFkX3Bv bGxfdGltZW91dChkc2ktPnJlZ3MsIAo+PiBEU0lfQ01EX1BLVF9TVEFUVVMsIC0gCj4+IHZhbCwg ISh2YWwgJiBHRU5fUExEX1dfRlVMTCksIC0gCj4+IDEwMDAsIENNRF9QS1RfU1RBVFVTX1RJTUVP VVRfVVMpOyArCQlyZXQgPSAKPj4gcmVnbWFwX2ZpZWxkX3JlYWRfcG9sbF90aW1lb3V0KGRzaS0+ ZmllbGRfY21kX3BrdF9zdGF0dXMsICsgCj4+IHZhbCwgKwkJCQkJCSAgICAgISh2YWwgCj4+ICYg R0VOX1BMRF9XX0ZVTEwpLCArIAo+PiAxMDAwLCArIAo+PiBDTURfUEtUX1NUQVRVU19USU1FT1VU X1VTKTsgCj4+ICAgCQlpZiAocmV0KSB7IGRldl9lcnIoZHNpLT5kZXYsICJmYWlsZWQgdG8gZ2V0 IAo+PiAgIGF2YWlsYWJsZSB3cml0ZSBwYXlsb2FkIEZJRk9cbiIpOyAKPj4gQEAgLTQ0Myw5ICs1 NTIsOSBAQCBzdGF0aWMgaW50IGR3X21pcGlfZHNpX3JlYWQoc3RydWN0IAo+PiBkd19taXBpX2Rz aSAqZHNpLCAKPj4gICAJdTMyIHZhbCA9IDA7ICAvKiBXYWl0IGVuZCBvZiB0aGUgcmVhZCBvcGVy YXRpb24gKi8gCj4+IC0JcmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KGRzaS0+cmVncywg Cj4+IERTSV9DTURfUEtUX1NUQVRVUywgLSAKPj4gdmFsLCAhKHZhbCAmIEdFTl9SRF9DTURfQlVT WSksIC0gCj4+IDEwMDAsIENNRF9QS1RfU1RBVFVTX1RJTUVPVVRfVVMpOyArCXJldCA9IAo+PiBy ZWdtYXBfZmllbGRfcmVhZF9wb2xsX3RpbWVvdXQoZHNpLT5maWVsZF9jbWRfcGt0X3N0YXR1cywg KyAKPj4gdmFsLCAhKHZhbCAmIEdFTl9SRF9DTURfQlVTWSksICsgCj4+IDEwMDAsIENNRF9QS1Rf U1RBVFVTX1RJTUVPVVRfVVMpOyAKPj4gICAJaWYgKHJldCkgeyBkZXZfZXJyKGRzaS0+ZGV2LCAi VGltZW91dCBkdXJpbmcgcmVhZCAKPj4gICBvcGVyYXRpb25cbiIpOyByZXR1cm4gcmV0OyAKPj4g QEAgLTQ1MywxNSArNTYyLDE3IEBAIHN0YXRpYyBpbnQgZHdfbWlwaV9kc2lfcmVhZChzdHJ1Y3Qg Cj4+IGR3X21pcGlfZHNpICpkc2ksIAo+PiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpICs9IDQp IHsgLyogUmVhZCBmaWZvIG11c3Qgbm90IGJlIAo+PiAgIGVtcHR5IGJlZm9yZSBhbGwgYnl0ZXMg YXJlIHJlYWQgKi8gCj4+IC0JCXJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChkc2ktPnJl Z3MsIAo+PiBEU0lfQ01EX1BLVF9TVEFUVVMsIC0gCj4+IHZhbCwgISh2YWwgJiBHRU5fUExEX1Jf RU1QVFkpLCAtIAo+PiAxMDAwLCBDTURfUEtUX1NUQVRVU19USU1FT1VUX1VTKTsgKwkJcmV0ID0g Cj4+IHJlZ21hcF9maWVsZF9yZWFkX3BvbGxfdGltZW91dChkc2ktPmZpZWxkX2NtZF9wa3Rfc3Rh dHVzLCArIAo+PiB2YWwsICsJCQkJCQkgICAgICEodmFsIAo+PiAmIEdFTl9QTERfUl9FTVBUWSks ICsgCj4+IDEwMDAsICsgCj4+IENNRF9QS1RfU1RBVFVTX1RJTUVPVVRfVVMpOyAKPj4gICAJCWlm IChyZXQpIHsgZGV2X2Vycihkc2ktPmRldiwgIlJlYWQgcGF5bG9hZCBGSUZPIGlzIAo+PiAgIGVt cHR5XG4iKTsgcmV0dXJuIHJldDsgfSAgCj4+IC0JCXJlZ21hcF9yZWFkKGRzaS0+cmVncywgRFNJ X0dFTl9QTERfREFUQSwgJnZhbCk7ICsgCj4+IHJlZ21hcF9maWVsZF9yZWFkKGRzaS0+ZmllbGRf Z2VuX3BheWxvYWQsICZ2YWwpOyAKPj4gICAJCWZvciAoaiA9IDA7IGogPCA0ICYmIGogKyBpIDwg bGVuOyBqKyspIGJ1ZltpICsgal0gCj4+ICAgPSB2YWwgPj4gKDggKiBqKTsgfSAKPj4gQEAgLTUx NSwzMCArNjI2LDMwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWlwaV9kc2lfaG9zdF9vcHMgCj4+ IGR3X21pcGlfZHNpX2hvc3Rfb3BzID0geyAKPj4gICAgc3RhdGljIHZvaWQgZHdfbWlwaV9kc2lf dmlkZW9fbW9kZV9jb25maWcoc3RydWN0IGR3X21pcGlfZHNpIAo+PiAgICpkc2kpIHsgCj4+IC0J dTMyIHZhbDsgLSAKPj4gICAJLyogKiBUT0RPIGR3IGRydiBpbXByb3ZlbWVudHMgKiBlbmFibGlu ZyBsb3cgcG93ZXIgaXMgCj4+ICAgcGFuZWwtZGVwZW5kZW50LCB3ZSBzaG91bGQgdXNlIHRoZSAq IHBhbmVsIGNvbmZpZ3VyYXRpb24gCj4+ICAgaGVyZS4uLiAgKi8gCj4+IC0JdmFsID0gRU5BQkxF X0xPV19QT1dFUjsgKyAKPj4gcmVnbWFwX2ZpZWxkX3dyaXRlKGRzaS0+ZmllbGRfdmlkX21vZGVf bG93X3Bvd2VyLCAKPj4gRU5BQkxFX0xPV19QT1dFUik7IAo+PiAgICBpZiAoZHNpLT5tb2RlX2Zs YWdzICYgTUlQSV9EU0lfTU9ERV9WSURFT19CVVJTVCkgCj4+IC0JCXZhbCB8PSBWSURfTU9ERV9U WVBFX0JVUlNUOyArIAo+PiByZWdtYXBfZmllbGRfd3JpdGUoZHNpLT5maWVsZF92aWRfbW9kZV90 eXBlLCArIAo+PiBWSURfTU9ERV9UWVBFX0JVUlNUKTsgCj4+ICAgCWVsc2UgaWYgKGRzaS0+bW9k ZV9mbGFncyAmIE1JUElfRFNJX01PREVfVklERU9fU1lOQ19QVUxTRSkgCj4+IC0JCXZhbCB8PSBW SURfTU9ERV9UWVBFX05PTl9CVVJTVF9TWU5DX1BVTFNFUzsgKyAKPj4gcmVnbWFwX2ZpZWxkX3dy aXRlKGRzaS0+ZmllbGRfdmlkX21vZGVfdHlwZSwgKyAKPj4gVklEX01PREVfVFlQRV9OT05fQlVS U1RfU1lOQ19QVUxTRVMpOyAKPj4gICAJZWxzZSAKPj4gLQkJdmFsIHw9IFZJRF9NT0RFX1RZUEVf Tk9OX0JVUlNUX1NZTkNfRVZFTlRTOyArIAo+PiByZWdtYXBfZmllbGRfd3JpdGUoZHNpLT5maWVs ZF92aWRfbW9kZV90eXBlLCArIAo+PiBWSURfTU9ERV9UWVBFX05PTl9CVVJTVF9TWU5DX0VWRU5U Uyk7IAo+PiAgICAjaWZkZWYgQ09ORklHX0RFQlVHX0ZTIGlmIChkc2ktPnZwZykgeyAKPj4gLQkJ dmFsIHw9IFZJRF9NT0RFX1ZQR19FTkFCTEU7IC0JCXZhbCB8PSAKPj4gZHNpLT52cGdfaG9yaXpv bnRhbCA/IFZJRF9NT0RFX1ZQR19IT1JJWk9OVEFMIDogMDsgKyAKPj4gcmVnbWFwX2ZpZWxkX3dy aXRlKGRzaS0+cmVncywgZHNpLT5maWVsZF92aWRfbW9kZV92cGdfZW4sIDEpOyArIAo+PiByZWdt YXBfZmllbGRfd3JpdGUoZHNpLT5yZWdzLCBkc2ktPmZpZWxkX3ZpZF9tb2RlX3ZwZ19ob3Jpeiwg KyAKPj4gZHNpLT52cGdfaG9yaXpvbnRhbCA/IDEgOiAwKTsgCj4+ICAgCX0gI2VuZGlmIC8qIENP TkZJR19ERUJVR19GUyAqLyAKPj4gLSAtCXJlZ21hcF93cml0ZShkc2ktPnJlZ3MsIERTSV9WSURf TU9ERV9DRkcsIHZhbCk7IAo+PiAgIH0gIHN0YXRpYyB2b2lkIGR3X21pcGlfZHNpX3NldF9tb2Rl KHN0cnVjdCBkd19taXBpX2RzaSAqZHNpLCAKPj4gQEAgLTU0NywxMSArNjU4LDEzIEBAIHN0YXRp YyB2b2lkIGR3X21pcGlfZHNpX3NldF9tb2RlKHN0cnVjdCAKPj4gZHdfbWlwaV9kc2kgKmRzaSwg Cj4+ICAgCXJlZ21hcF93cml0ZShkc2ktPnJlZ3MsIERTSV9QV1JfVVAsIFJFU0VUKTsgIGlmIAo+ PiAgIChtb2RlX2ZsYWdzICYgTUlQSV9EU0lfTU9ERV9WSURFTykgeyAKPj4gLQkJcmVnbWFwX3dy aXRlKGRzaS0+cmVncywgRFNJX01PREVfQ0ZHLCAKPj4gRU5BQkxFX1ZJREVPX01PREUpOyArIAo+ PiByZWdtYXBfZmllbGRfd3JpdGUoZHNpLT5maWVsZF9jbWRfbW9kZV9lbiwgMCk7ICsgCj4+ICAg CQlkd19taXBpX2RzaV92aWRlb19tb2RlX2NvbmZpZyhkc2kpOyAKPj4gLQkJcmVnbWFwX3dyaXRl KGRzaS0+cmVncywgRFNJX0xQQ0xLX0NUUkwsIAo+PiBQSFlfVFhSRVFVRVNUQ0xLSFMpOyArICsg Cj4+IHJlZ21hcF9maWVsZF93cml0ZShkc2ktPmZpZWxkX3BoeV90eHJlcXVlc3RjbGtocywgMSk7 IAo+PiAgIAl9IGVsc2UgeyAKPj4gLQkJcmVnbWFwX3dyaXRlKGRzaS0+cmVncywgRFNJX01PREVf Q0ZHLCAKPj4gRU5BQkxFX0NNRF9NT0RFKTsgKyAKPj4gcmVnbWFwX2ZpZWxkX3dyaXRlKGRzaS0+ ZmllbGRfY21kX21vZGVfZW4sIDEpOyAKPj4gICAJfSAgcmVnbWFwX3dyaXRlKGRzaS0+cmVncywg RFNJX1BXUl9VUCwgUE9XRVJVUCk7IAo+PiBAQCAtNTYwLDcgKzY3Myw3IEBAIHN0YXRpYyB2b2lk IGR3X21pcGlfZHNpX3NldF9tb2RlKHN0cnVjdCAKPj4gZHdfbWlwaV9kc2kgKmRzaSwgCj4+ICAg c3RhdGljIHZvaWQgZHdfbWlwaV9kc2lfZGlzYWJsZShzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSkg eyAKPj4gICByZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lfUFdSX1VQLCBSRVNFVCk7IAo+PiAt CXJlZ21hcF93cml0ZShkc2ktPnJlZ3MsIERTSV9QSFlfUlNUWiwgUEhZX1JTVFopOyArIAo+PiBy ZWdtYXBfZmllbGRfd3JpdGUoZHNpLT5maWVsZF9waHlfdW5yc3R6LCAwKTsgCj4+ICAgfSAgc3Rh dGljIHZvaWQgZHdfbWlwaV9kc2lfaW5pdChzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSkgCj4+IEBA IC01ODksMTQgKzcwMiwxNSBAQCBzdGF0aWMgdm9pZCBkd19taXBpX2RzaV9pbml0KHN0cnVjdCAK Pj4gZHdfbWlwaV9kc2kgKmRzaSkgCj4+ICAgc3RhdGljIHZvaWQgZHdfbWlwaV9kc2lfZHBpX2Nv bmZpZyhzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSwgCj4+ICAgY29uc3Qgc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKm1vZGUpIHsgCj4+IC0JdTMyIHZhbCA9IDAsIGNvbG9yID0gMDsgKwl1MzIgY29s b3IgPSAwOyAKPj4gICAgc3dpdGNoIChkc2ktPmZvcm1hdCkgeyBjYXNlIE1JUElfRFNJX0ZNVF9S R0I4ODg6IGNvbG9yID0gCj4+ICAgRFBJX0NPTE9SX0NPRElOR18yNEJJVDsgYnJlYWs7IGNhc2Ug TUlQSV9EU0lfRk1UX1JHQjY2NjogCj4+IC0JCWNvbG9yID0gRFBJX0NPTE9SX0NPRElOR18xOEJJ VF8yIHwgTE9PU0VMWTE4X0VOOyArIAo+PiBjb2xvciA9IERQSV9DT0xPUl9DT0RJTkdfMThCSVRf MjsgKyAKPj4gcmVnbWFwX2ZpZWxkX3dyaXRlKGRzaS0+ZmllbGRfZHBpXzE4bG9vc2VseV9lbiwg MSk7IAo+PiAgIAkJYnJlYWs7IGNhc2UgTUlQSV9EU0lfRk1UX1JHQjY2Nl9QQUNLRUQ6IGNvbG9y ID0gCj4+ICAgRFBJX0NPTE9SX0NPRElOR18xOEJJVF8xOyAKPj4gQEAgLTYwNiwxNCArNzIwLDE1 IEBAIHN0YXRpYyB2b2lkIGR3X21pcGlfZHNpX2RwaV9jb25maWcoc3RydWN0IAo+PiBkd19taXBp X2RzaSAqZHNpLCAKPj4gICAJCWJyZWFrOyB9ICAKPj4gLQlpZiAobW9kZS0+ZmxhZ3MgJiBEUk1f TU9ERV9GTEFHX05WU1lOQykgLSAKPj4gdmFsIHw9IFZTWU5DX0FDVElWRV9MT1c7IC0JaWYgKG1v ZGUtPmZsYWdzICYgCj4+IERSTV9NT0RFX0ZMQUdfTkhTWU5DKSAtCQl2YWwgfD0gSFNZTkNfQUNU SVZFX0xPVzsgKyAKPj4gcmVnbWFwX2ZpZWxkX3dyaXRlKGRzaS0+ZmllbGRfZHBpX2NvbG9yX2Nv ZGluZywgY29sb3IpOyArICsJaWYgCj4+ICghKG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19O VlNZTkMpKSArIAo+PiByZWdtYXBfZmllbGRfd3JpdGUoZHNpLT5maWVsZF9kcGlfdnN5bmNfYWN0 aXZlX2xvdywgMSk7ICsJaWYgCj4+ICghKG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19OSFNZ TkMpKSArIAo+PiByZWdtYXBfZmllbGRfd3JpdGUoZHNpLT5maWVsZF9kcGlfaHN5bmNfYWN0aXZl X2xvdywgMSk7ICsgKyAKPj4gcmVnbWFwX2ZpZWxkX3dyaXRlKGRzaS0+ZmllbGRfZHBpX3ZpZCwg RFBJX1ZDSUQoZHNpLT5jaGFubmVsKSk7IAo+PiAgICAKPj4gLQlyZWdtYXBfd3JpdGUoZHNpLT5y ZWdzLCBEU0lfRFBJX1ZDSUQsIAo+PiBEUElfVkNJRChkc2ktPmNoYW5uZWwpKTsgLQlyZWdtYXBf d3JpdGUoZHNpLT5yZWdzLCAKPj4gRFNJX0RQSV9DT0xPUl9DT0RJTkcsIGNvbG9yKTsgLQlyZWdt YXBfd3JpdGUoZHNpLT5yZWdzLCAKPj4gRFNJX0RQSV9DRkdfUE9MLCB2YWwpOyAKPj4gICAJLyog KiBUT0RPIGR3IGRydiBpbXByb3ZlbWVudHMgKiBsYXJnZXN0IHBhY2tldCBzaXplcyAKPj4gICBk dXJpbmcgaGZwIG9yIGR1cmluZyB2c2EvdnBiL3ZmcCAKPj4gQEAgLTYyNiw3ICs3NDEsOCBAQCBz dGF0aWMgdm9pZCBkd19taXBpX2RzaV9kcGlfY29uZmlnKHN0cnVjdCAKPj4gZHdfbWlwaV9kc2kg KmRzaSwgCj4+ICAgIHN0YXRpYyB2b2lkIGR3X21pcGlfZHNpX3BhY2tldF9oYW5kbGVyX2NvbmZp ZyhzdHJ1Y3QgCj4+ICAgZHdfbWlwaV9kc2kgKmRzaSkgeyAKPj4gLQlyZWdtYXBfd3JpdGUoZHNp LT5yZWdzLCBEU0lfUENLSERMX0NGRywgQ1JDX1JYX0VOIHwgCj4+IEVDQ19SWF9FTiB8IEJUQV9F Tik7ICsgCj4+IHJlZ21hcF9maWVsZF93cml0ZShkc2ktPmZpZWxkX3Bja2hkbF9jZmcsICsgCj4+ IENSQ19SWF9FTiB8IEVDQ19SWF9FTiB8IEJUQV9FTik7IAo+PiAgIH0gIHN0YXRpYyB2b2lkIGR3 X21pcGlfZHNpX3ZpZGVvX3BhY2tldF9jb25maWcoc3RydWN0IAo+PiAgIGR3X21pcGlfZHNpICpk c2ksIAo+PiBAQCAtNjM5LDExICs3NTUsOSBAQCBzdGF0aWMgdm9pZCAKPj4gZHdfbWlwaV9kc2lf dmlkZW9fcGFja2V0X2NvbmZpZyhzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSwgCj4+ICAgCSAqIERT SV9WTlBDUi5OUFNJWkUuLi4gZXNwZWNpYWxseSBiZWNhdXNlIHRoaXMgZHJpdmVyIAo+PiAgIHN1 cHBvcnRzICogbm9uLWJ1cnN0IHZpZGVvIG1vZGVzLCBzZWUgCj4+ICAgZHdfbWlwaV9kc2lfdmlk ZW9fbW9kZV9jb25maWcoKS4uLiAgKi8gCj4+IC0gLQlyZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBE U0lfVklEX1BLVF9TSVpFLCAtIAo+PiBkd19taXBpX2lzX2R1YWxfbW9kZShkc2kpID8gIC0gCj4+ IFZJRF9QS1RfU0laRShtb2RlLT5oZGlzcGxheSAvIDIpIDogLSAKPj4gVklEX1BLVF9TSVpFKG1v ZGUtPmhkaXNwbGF5KSk7ICsgCj4+IHJlZ21hcF9maWVsZF93cml0ZShkc2ktPmZpZWxkX3ZpZF9w a3Rfc2l6ZSwgKyAKPj4gZHdfbWlwaV9pc19kdWFsX21vZGUoZHNpKSA/ICArIAo+PiBtb2RlLT5o ZGlzcGxheSAvIDIgOiBtb2RlLT5oZGlzcGxheSk7IAo+PiAgIH0gIHN0YXRpYyB2b2lkIGR3X21p cGlfZHNpX2NvbW1hbmRfbW9kZV9jb25maWcoc3RydWN0IAo+PiAgIGR3X21pcGlfZHNpICpkc2kp IAo+PiBAQCAtNjUzLDE1ICs3NjcsMTcgQEAgc3RhdGljIHZvaWQgCj4+IGR3X21pcGlfZHNpX2Nv bW1hbmRfbW9kZV9jb25maWcoc3RydWN0IGR3X21pcGlfZHNpICpkc2kpIAo+PiAgIAkgKiBjb21w dXRlIGhpZ2ggc3BlZWQgdHJhbnNtaXNzaW9uIGNvdW50ZXIgdGltZW91dCAKPj4gICBhY2NvcmRp bmcgKiB0byB0aGUgdGltZW91dCBjbG9jayBkaXZpc2lvbiAoVE9fQ0xLX0RJVklTSU9OKSAKPj4g ICBhbmQgYnl0ZSBsYW5lLi4uICAqLyAKPj4gLQlyZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lf VE9fQ05UX0NGRywgLSAKPj4gSFNUWF9UT19DTlQoMTAwMCkgfCBMUFJYX1RPX0NOVCgxMDAwKSk7 ICsgCj4+IHJlZ21hcF9maWVsZF93cml0ZShkc2ktPmZpZWxkX2hzdHhfdGltZW91dF9jb3VudGVy LCAxMDAwKTsgKyAKPj4gcmVnbWFwX2ZpZWxkX3dyaXRlKGRzaS0+ZmllbGRfbHByeF90aW1lb3V0 X2NvdW50ZXIsIDEwMDApOyArIAo+PiAgIAkvKiAqIFRPRE8gZHcgZHJ2IGltcHJvdmVtZW50cyAq IHRoZSBCdXMtVHVybi1Bcm91bmQgCj4+ICAgVGltZW91dCBDb3VudGVyIHNob3VsZCBiZSBjb21w dXRlZCAqIGFjY29yZGluZyB0byBieXRlIAo+PiAgIGxhbmUuLi4gICovIAo+PiAtCXJlZ21hcF93 cml0ZShkc2ktPnJlZ3MsIERTSV9CVEFfVE9fQ05ULCAweGQwMCk7IC0gCj4+IHJlZ21hcF93cml0 ZShkc2ktPnJlZ3MsIERTSV9NT0RFX0NGRywgRU5BQkxFX0NNRF9NT0RFKTsgKyAKPj4gcmVnbWFw X2ZpZWxkX3dyaXRlKGRzaS0+ZmllbGRfcGh5X2J0YV90aW1lLCAweGQwMCk7ICsgKyAKPj4gcmVn bWFwX2ZpZWxkX3dyaXRlKGRzaS0+ZmllbGRfY21kX21vZGVfZW4sIDEpOyAKPj4gICB9ICAvKiBH ZXQgbGFuZSBieXRlIGNsb2NrIGN5Y2xlcy4gKi8gCj4+IEBAIC02OTUsMTMgKzgxMSwxMyBAQCBz dGF0aWMgdm9pZCAKPj4gZHdfbWlwaV9kc2lfbGluZV90aW1lcl9jb25maWcoc3RydWN0IGR3X21p cGlfZHNpICpkc2ksIAo+PiAgIAkgKiBjb21wdXRhdGlvbnMgYmVsb3cgbWF5IGJlIGltcHJvdmVk Li4uICAqLyBsYmNjID0gCj4+ICAgZHdfbWlwaV9kc2lfZ2V0X2hjb21wb25lbnRfbGJjYyhkc2ks IG1vZGUsIGh0b3RhbCk7IAo+PiAtCXJlZ21hcF93cml0ZShkc2ktPnJlZ3MsIERTSV9WSURfSExJ TkVfVElNRSwgbGJjYyk7ICsgCj4+IHJlZ21hcF9maWVsZF93cml0ZShkc2ktPmZpZWxkX3ZpZF9o bGluZV90aW1lLCBsYmNjKTsgCj4+ICAgIGxiY2MgPSBkd19taXBpX2RzaV9nZXRfaGNvbXBvbmVu dF9sYmNjKGRzaSwgbW9kZSwgaHNhKTsgCj4+IC0JcmVnbWFwX3dyaXRlKGRzaS0+cmVncywgRFNJ X1ZJRF9IU0FfVElNRSwgbGJjYyk7ICsgCj4+IHJlZ21hcF9maWVsZF93cml0ZShkc2ktPmZpZWxk X3ZpZF9oc2FfdGltZSwgbGJjYyk7IAo+PiAgICBsYmNjID0gZHdfbWlwaV9kc2lfZ2V0X2hjb21w b25lbnRfbGJjYyhkc2ksIG1vZGUsIGhicCk7IAo+PiAtCXJlZ21hcF93cml0ZShkc2ktPnJlZ3Ms IERTSV9WSURfSEJQX1RJTUUsIGxiY2MpOyArIAo+PiByZWdtYXBfZmllbGRfd3JpdGUoZHNpLT5m aWVsZF92aWRfaGJwX3RpbWUsIGxiY2MpOyAKPj4gICB9ICBzdGF0aWMgdm9pZCBkd19taXBpX2Rz aV92ZXJ0aWNhbF90aW1pbmdfY29uZmlnKHN0cnVjdCAKPj4gICBkd19taXBpX2RzaSAqZHNpLCAK Pj4gQEAgLTcxNCwxNyArODMwLDE2IEBAIHN0YXRpYyB2b2lkIAo+PiBkd19taXBpX2RzaV92ZXJ0 aWNhbF90aW1pbmdfY29uZmlnKHN0cnVjdCBkd19taXBpX2RzaSAqZHNpLCAKPj4gICAJdmZwID0g bW9kZS0+dnN5bmNfc3RhcnQgLSBtb2RlLT52ZGlzcGxheTsgdmJwID0gCj4+ICAgbW9kZS0+dnRv dGFsIC0gbW9kZS0+dnN5bmNfZW5kOyAgCj4+IC0JcmVnbWFwX3dyaXRlKGRzaS0+cmVncywgRFNJ X1ZJRF9WQUNUSVZFX0xJTkVTLCB2YWN0aXZlKTsgLSAKPj4gcmVnbWFwX3dyaXRlKGRzaS0+cmVn cywgRFNJX1ZJRF9WU0FfTElORVMsIHZzYSk7IC0gCj4+IHJlZ21hcF93cml0ZShkc2ktPnJlZ3Ms IERTSV9WSURfVkZQX0xJTkVTLCB2ZnApOyAtIAo+PiByZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBE U0lfVklEX1ZCUF9MSU5FUywgdmJwKTsgKyAKPj4gcmVnbWFwX2ZpZWxkX3dyaXRlKGRzaS0+Zmll bGRfdmlkX3ZhY3RpdmVfdGltZSwgdmFjdGl2ZSk7ICsgCj4+IHJlZ21hcF9maWVsZF93cml0ZShk c2ktPmZpZWxkX3ZpZF92c2FfdGltZSwgdnNhKTsgKyAKPj4gcmVnbWFwX2ZpZWxkX3dyaXRlKGRz aS0+ZmllbGRfdmlkX3ZmcF90aW1lLCB2ZnApOyArIAo+PiByZWdtYXBfZmllbGRfd3JpdGUoZHNp LT5maWVsZF92aWRfdmJwX3RpbWUsIHZicCk7IAo+PiAgIH0gIHN0YXRpYyB2b2lkIGR3X21pcGlf ZHNpX2RwaHlfdGltaW5nX2NvbmZpZyhzdHJ1Y3QgCj4+ICAgZHdfbWlwaV9kc2kgKmRzaSkgeyBj b25zdCBzdHJ1Y3QgZHdfbWlwaV9kc2lfcGh5X29wcyAqcGh5X29wcyAKPj4gICA9IGRzaS0+cGxh dF9kYXRhLT5waHlfb3BzOyBzdHJ1Y3QgZHdfbWlwaV9kc2lfZHBoeV90aW1pbmcgCj4+ICAgdGlt aW5nOyAKPj4gLQl1MzIgaHdfdmVyc2lvbjsgCj4+ICAgCWludCByZXQ7ICByZXQgPSAKPj4gICBw aHlfb3BzLT5nZXRfdGltaW5nKGRzaS0+cGxhdF9kYXRhLT5wcml2X2RhdGEsIAo+PiBAQCAtNzM5 LDI2ICs4NTQsMTIgQEAgc3RhdGljIHZvaWQgCj4+IGR3X21pcGlfZHNpX2RwaHlfdGltaW5nX2Nv bmZpZyhzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSkgCj4+ICAgCSAqIG5vdGU6IERTSV9QSFlfVE1S X0NGRy5NQVhfUkRfVElNRSBzaG91bGQgYmUgaW4gbGluZSAKPj4gICB3aXRoICogRFNJX0NNRF9N T0RFX0NGRy5NQVhfUkRfUEtUX1NJWkVfTFAgKHNlZSAKPj4gICBDTURfTU9ERV9BTExfTFApICov IAo+PiArCXJlZ21hcF9maWVsZF93cml0ZShkc2ktPmZpZWxkX3BoeV9scDJoc190aW1lLCAKPj4g dGltaW5nLmRhdGFfbHAyaHMpOyArIAo+PiByZWdtYXBfZmllbGRfd3JpdGUoZHNpLT5maWVsZF9w aHlfaHMybHBfdGltZSwgCj4+IHRpbWluZy5kYXRhX2hzMmxwKTsgCj4+ICAgIAo+PiAtCXJlZ21h cF9yZWFkKGRzaS0+cmVncywgRFNJX1ZFUlNJT04sICZod192ZXJzaW9uKTsgLSAKPj4gaHdfdmVy c2lvbiAmPSBWRVJTSU9OOyAtIC0JaWYgKGh3X3ZlcnNpb24gPj0gSFdWRVJfMTMxKSB7IC0gCj4+ IHJlZ21hcF93cml0ZShkc2ktPnJlZ3MsIERTSV9QSFlfVE1SX0NGRywgLSAKPj4gUEhZX0hTMkxQ X1RJTUVfVjEzMSh0aW1pbmcuZGF0YV9oczJscCkgfCAtIAo+PiBQSFlfTFAySFNfVElNRV9WMTMx KHRpbWluZy5kYXRhX2xwMmhzKSk7IC0gCj4+IHJlZ21hcF93cml0ZShkc2ktPnJlZ3MsIERTSV9Q SFlfVE1SX1JEX0NGRywgLSAKPj4gTUFYX1JEX1RJTUVfVjEzMSgxMDAwMCkpOyAtCX0gZWxzZSB7 IC0gCj4+IHJlZ21hcF93cml0ZShkc2ktPnJlZ3MsIERTSV9QSFlfVE1SX0NGRywgLSAKPj4gUEhZ X0hTMkxQX1RJTUUodGltaW5nLmRhdGFfaHMybHApIHwgLSAKPj4gUEhZX0xQMkhTX1RJTUUodGlt aW5nLmRhdGFfbHAyaHMpIHwgLSAKPj4gTUFYX1JEX1RJTUUoMTAwMDApKTsgLQl9IC0gLQlyZWdt YXBfd3JpdGUoZHNpLT5yZWdzLCAKPj4gRFNJX1BIWV9UTVJfTFBDTEtfQ0ZHLCAtIAo+PiBQSFlf Q0xLSFMyTFBfVElNRSh0aW1pbmcuY2xrX2hzMmxwKSB8IC0gCj4+IFBIWV9DTEtMUDJIU19USU1F KHRpbWluZy5jbGtfbHAyaHMpKTsgKyAKPj4gcmVnbWFwX2ZpZWxkX3dyaXRlKGRzaS0+ZmllbGRf cGh5X21heF9yZF90aW1lLCAxMDAwMCk7ICsgCj4+IHJlZ21hcF9maWVsZF93cml0ZShkc2ktPmZp ZWxkX3BoeV9jbGtoczJscF90aW1lLCAKPj4gdGltaW5nLmNsa19oczJscCk7ICsgCj4+IHJlZ21h cF9maWVsZF93cml0ZShkc2ktPmZpZWxkX3BoeV9jbGtscDJoc190aW1lLCAKPj4gdGltaW5nLmNs a19scDJocyk7IAo+PiAgIH0gIHN0YXRpYyB2b2lkIGR3X21pcGlfZHNpX2RwaHlfaW50ZXJmYWNl X2NvbmZpZyhzdHJ1Y3QgCj4+ICAgZHdfbWlwaV9kc2kgKmRzaSkgCj4+IEBAIC03NjgsMTggKzg2 OSwyMiBAQCBzdGF0aWMgdm9pZCAKPj4gZHdfbWlwaV9kc2lfZHBoeV9pbnRlcmZhY2VfY29uZmln KHN0cnVjdCBkd19taXBpX2RzaSAqZHNpKSAKPj4gICAJICogc3RvcCB3YWl0IHRpbWUgc2hvdWxk IGJlIHRoZSBtYXhpbXVtIGJldHdlZW4gaG9zdCBkc2kgKiAKPj4gICBhbmQgcGFuZWwgc3RvcCB3 YWl0IHRpbWVzICovIAo+PiAtCXJlZ21hcF93cml0ZShkc2ktPnJlZ3MsIERTSV9QSFlfSUZfQ0ZH LCAtIAo+PiBQSFlfU1RPUF9XQUlUX1RJTUUoMHgyMCkgfCBOX0xBTkVTKGRzaS0+bGFuZXMpKTsg KyAKPj4gcmVnbWFwX2ZpZWxkX3dyaXRlKGRzaS0+ZmllbGRfcGh5X3N0b3Bfd2FpdF90aW1lLCAw eDIwKTsgKyAKPj4gcmVnbWFwX2ZpZWxkX3dyaXRlKGRzaS0+ZmllbGRfcGh5X25sYW5lcywgZHNp LT5sYW5lcyAtIDEpOyAKPj4gICB9ICBzdGF0aWMgdm9pZCBkd19taXBpX2RzaV9kcGh5X2luaXQo c3RydWN0IGR3X21pcGlfZHNpICpkc2kpIAo+PiAgIHsgLyogQ2xlYXIgUEhZIHN0YXRlICovIAo+ PiAtCXJlZ21hcF93cml0ZShkc2ktPnJlZ3MsIERTSV9QSFlfUlNUWiwgUEhZX0RJU0ZPUkNFUExM IHwgCj4+IFBIWV9ESVNBQkxFQ0xLIC0JCSAgICAgfCBQSFlfUlNUWiB8IFBIWV9TSFVURE9XTlop OyAKPj4gLQlyZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lfUEhZX1RTVF9DVFJMMCwgUEhZX1VO VEVTVENMUik7IAo+PiAtCXJlZ21hcF93cml0ZShkc2ktPnJlZ3MsIERTSV9QSFlfVFNUX0NUUkww LCBQSFlfVEVTVENMUik7IC0gCj4+IHJlZ21hcF93cml0ZShkc2ktPnJlZ3MsIERTSV9QSFlfVFNU X0NUUkwwLCBQSFlfVU5URVNUQ0xSKTsgKyAKPj4gcmVnbWFwX2ZpZWxkX3dyaXRlKGRzaS0+Zmll bGRfcGh5X2VuYWJsZWNsaywgMCk7ICsgCj4+IHJlZ21hcF9maWVsZF93cml0ZShkc2ktPmZpZWxk X3BoeV91bnJzdHosIDApOyArIAo+PiByZWdtYXBfZmllbGRfd3JpdGUoZHNpLT5maWVsZF9waHlf dW5zaHV0ZG93bnosIDApOyArICsgCj4+IHJlZ21hcF9maWVsZF93cml0ZShkc2ktPmZpZWxkX3Bo eV9mb3JjZXBsbCwgMCk7ICsgKyAKPj4gcmVnbWFwX2ZpZWxkX3dyaXRlKGRzaS0+ZmllbGRfcGh5 X3Rlc3RjbHIsIDApOyArIAo+PiByZWdtYXBfZmllbGRfd3JpdGUoZHNpLT5maWVsZF9waHlfdGVz dGNsciwgMSk7ICsgCj4+IHJlZ21hcF9maWVsZF93cml0ZShkc2ktPmZpZWxkX3BoeV90ZXN0Y2xy LCAwKTsgCj4+ICAgfSAgc3RhdGljIHZvaWQgZHdfbWlwaV9kc2lfZHBoeV9lbmFibGUoc3RydWN0 IGR3X21pcGlfZHNpIAo+PiAgICpkc2kpIAo+PiBAQCAtNzg3LDE4ICs4OTIsMjEgQEAgc3RhdGlj IHZvaWQgCj4+IGR3X21pcGlfZHNpX2RwaHlfZW5hYmxlKHN0cnVjdCBkd19taXBpX2RzaSAqZHNp KSAKPj4gICAJdTMyIHZhbCA9IDA7IGludCByZXQ7ICAKPj4gLQlyZWdtYXBfd3JpdGUoZHNpLT5y ZWdzLCBEU0lfUEhZX1JTVFosIFBIWV9FTkZPUkNFUExMIHwgCj4+IFBIWV9FTkFCTEVDTEsgfCAt CQkgICAgIFBIWV9VTlJTVFogfCAKPj4gUEhZX1VOU0hVVERPV05aKTsgKyAKPj4gcmVnbWFwX2Zp ZWxkX3dyaXRlKGRzaS0+ZmllbGRfcGh5X2VuYWJsZWNsaywgMSk7ICsgCj4+IHJlZ21hcF9maWVs ZF93cml0ZShkc2ktPmZpZWxkX3BoeV91bnJzdHosIDEpOyArIAo+PiByZWdtYXBfZmllbGRfd3Jp dGUoZHNpLT5maWVsZF9waHlfdW5zaHV0ZG93bnosIDEpOyArICsgCj4+IHJlZ21hcF9maWVsZF93 cml0ZShkc2ktPmZpZWxkX3BoeV9mb3JjZXBsbCwgMSk7IAo+PiAgICAKPj4gLQlyZXQgPSByZWdt YXBfcmVhZF9wb2xsX3RpbWVvdXQoZHNpLT5yZWdzLCBEU0lfUEhZX1NUQVRVUywgCj4+IC0JCQkJ ICAgICAgIHZhbCwgdmFsICYgUEhZX0xPQ0ssIC0gCj4+IDEwMDAsIFBIWV9TVEFUVVNfVElNRU9V VF9VUyk7ICsJcmV0ID0gCj4+IHJlZ21hcF9maWVsZF9yZWFkX3BvbGxfdGltZW91dChkc2ktPmZp ZWxkX3BoeV9zdGF0dXMsICsgCj4+IHZhbCwgdmFsICYgUEhZX0xPQ0ssICsgCj4+IDEwMDAsIFBI WV9TVEFUVVNfVElNRU9VVF9VUyk7IAo+PiAgIAlpZiAocmV0KSBEUk1fREVCVUdfRFJJVkVSKCJm YWlsZWQgdG8gd2FpdCBwaHkgbG9jayAKPj4gICBzdGF0ZVxuIik7ICAKPj4gLQlyZXQgPSByZWdt YXBfcmVhZF9wb2xsX3RpbWVvdXQoZHNpLT5yZWdzLCBEU0lfUEhZX1NUQVRVUywgCj4+IC0JCQkJ ICAgICAgIHZhbCwgdmFsICYgCj4+IFBIWV9TVE9QX1NUQVRFX0NMS19MQU5FLCAxMDAwLCAtIAo+ PiBQSFlfU1RBVFVTX1RJTUVPVVRfVVMpOyArCXJldCA9IAo+PiByZWdtYXBfZmllbGRfcmVhZF9w b2xsX3RpbWVvdXQoZHNpLT5maWVsZF9waHlfc3RhdHVzLCArIAo+PiB2YWwsIHZhbCAmIFBIWV9T VE9QX1NUQVRFX0NMS19MQU5FLCArIAo+PiAxMDAwLCBQSFlfU1RBVFVTX1RJTUVPVVRfVVMpOyAK Pj4gICAJaWYgKHJldCkgRFJNX0RFQlVHX0RSSVZFUigiZmFpbGVkIHRvIHdhaXQgcGh5IGNsayBs YW5lIAo+PiAgIHN0b3Agc3RhdGVcbiIpOyB9IAo+PiBAQCAtODA3LDEwICs5MTUsMTAgQEAgc3Rh dGljIHZvaWQgZHdfbWlwaV9kc2lfY2xlYXJfZXJyKHN0cnVjdCAKPj4gZHdfbWlwaV9kc2kgKmRz aSkgCj4+ICAgeyB1MzIgdmFsOyAgCj4+IC0JcmVnbWFwX3JlYWQoZHNpLT5yZWdzLCBEU0lfSU5U X1NUMCwgJnZhbCk7IC0gCj4+IHJlZ21hcF9yZWFkKGRzaS0+cmVncywgRFNJX0lOVF9TVDEsICZ2 YWwpOyAtIAo+PiByZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lfSU5UX01TSzAsIDApOyAtIAo+ PiByZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lfSU5UX01TSzEsIDApOyArIAo+PiByZWdtYXBf ZmllbGRfcmVhZChkc2ktPmZpZWxkX2ludF9zdGF0MCwgJnZhbCk7ICsgCj4+IHJlZ21hcF9maWVs ZF9yZWFkKGRzaS0+ZmllbGRfaW50X3N0YXQxLCAmdmFsKTsgKyAKPj4gcmVnbWFwX2ZpZWxkX3dy aXRlKGRzaS0+ZmllbGRfaW50X21hc2swLCAwKTsgKyAKPj4gcmVnbWFwX2ZpZWxkX3dyaXRlKGRz aS0+ZmllbGRfaW50X21hc2sxLCAwKTsgCj4+ICAgfSAgc3RhdGljIHZvaWQgZHdfbWlwaV9kc2lf YnJpZGdlX3Bvc3RfZGlzYWJsZShzdHJ1Y3QgCj4+ICAgZHJtX2JyaWRnZSAqYnJpZGdlKSAKPj4g QEAgLTEwMDUsNiArMTExMyw4NiBAQCBzdGF0aWMgdm9pZCAKPj4gZHdfbWlwaV9kc2lfZ2V0X2h3 X3ZlcnNpb24oc3RydWN0IGR3X21pcGlfZHNpICpkc2kpIAo+PiAgIAkJZGV2X2Vycihkc2ktPmRl diwgIkZhaWxlZCB0byByZWFkIERTSSBodyB2ZXJzaW9uIAo+PiAgIHJlZ2lzdGVyXG4iKTsgfSAg Cj4+ICsjZGVmaW5lIElOSVRfRklFTEQoZikgSU5JVF9GSUVMRF9DRkcoZmllbGRfIyNmLCBjZmdf IyNmKSAKPj4gKyNkZWZpbmUgSU5JVF9GSUVMRF9DRkcoZiwgY29uZikgCj4+IFwgKwlkbyB7IAo+ PiBcICsJCWRzaS0+ZiA9IGRldm1fcmVnbWFwX2ZpZWxkX2FsbG9jKGRzaS0+ZGV2LCAKPj4gZHNp LT5yZWdzLAlcICsgCj4+IHZhcmlhbnQtPmNvbmYpOwlcICsJCWlmIChJU19FUlIoZHNpLT5mKSkg Cj4+IFwgKwkJCWRldl93YXJuKGRzaS0+ZGV2LCAiSWdub3JpbmcgcmVnbWFwIGZpZWxkIAo+PiAi ICNmICJcbiIpOyBcICsJfSB3aGlsZSAoMCkgCj4gIAo+IEluIGtlcm5lbCB5b3UgY2FuIHVzZSBn Y2MgZXh0ZW5zaW9uICh7IC4uLiB9KSBpbnN0ZWFkICJkbyB7IAo+IC4uLiB9IHdoaWxlICAoMCki IFsxXS4gCj4gCj4gWzFdOiBodHRwczovL2djYy5nbnUub3JnL29ubGluZWRvY3MvZ2NjL1N0YXRl bWVudC1FeHBycy5odG1sIAoKVGhhbmtzLCB3aWxsIGRvIHRoaXMgaW4gdjYuCgo+ICAKPj4gKyAr c3RhdGljIGludCBkd19taXBpX2RzaV9yZWdtYXBfZmllbGRzX2luaXQoc3RydWN0IGR3X21pcGlf ZHNpIAo+PiAqZHNpKSAreyArCWNvbnN0IHN0cnVjdCBkd19taXBpX2RzaV92YXJpYW50ICp2YXJp YW50OyArICsgCj4+IHN3aXRjaCAoZHNpLT5od192ZXJzaW9uKSB7ICsJY2FzZSBIV1ZFUl8xMzA6 ICsJY2FzZSAKPj4gSFdWRVJfMTMxOiArCQl2YXJpYW50ID0gJmR3X21pcGlfZHNpX3YxMzBfdjEz MV9sYXlvdXQ7ICsgCj4+IGJyZWFrOyArCWRlZmF1bHQ6ICsJCURSTV9FUlJPUigiVW5yZWNvZ25p emVkIAo+PiBEU0kgaG9zdCBjb250cm9sbGVyIEhXIHJldmlzaW9uXG4iKTsgKwkJcmV0dXJuIAo+ PiAtRU5PREVWOyArCX0gKyArCUlOSVRfRklFTEQoZHBpXzE4bG9vc2VseV9lbik7ICsgCj4+IElO SVRfRklFTEQoZHBpX3ZpZCk7ICsJSU5JVF9GSUVMRChkcGlfY29sb3JfY29kaW5nKTsgKyAKPj4g SU5JVF9GSUVMRChkcGlfdnN5bmNfYWN0aXZlX2xvdyk7ICsgCj4+IElOSVRfRklFTEQoZHBpX2hz eW5jX2FjdGl2ZV9sb3cpOyArIAo+PiBJTklUX0ZJRUxEKGNtZF9tb2RlX2Fja19ycXN0X2VuKTsg KyAKPj4gSU5JVF9GSUVMRChjbWRfbW9kZV9hbGxfbHBfZW4pOyArCUlOSVRfRklFTEQoY21kX21v ZGVfZW4pOyArIAo+PiBJTklUX0ZJRUxEKGNtZF9wa3Rfc3RhdHVzKTsgKwlJTklUX0ZJRUxEKHZp ZF9tb2RlX2VuKTsgKyAKPj4gSU5JVF9GSUVMRCh2aWRfbW9kZV90eXBlKTsgKwlJTklUX0ZJRUxE KHZpZF9tb2RlX2xvd19wb3dlcik7ICsgCj4+IElOSVRfRklFTEQodmlkX3BrdF9zaXplKTsgKwlJ TklUX0ZJRUxEKHZpZF9oc2FfdGltZSk7ICsgCj4+IElOSVRfRklFTEQodmlkX2hicF90aW1lKTsg KwlJTklUX0ZJRUxEKHZpZF9obGluZV90aW1lKTsgKyAKPj4gSU5JVF9GSUVMRCh2aWRfdnNhX3Rp bWUpOyArCUlOSVRfRklFTEQodmlkX3ZicF90aW1lKTsgKyAKPj4gSU5JVF9GSUVMRCh2aWRfdmZw X3RpbWUpOyArCUlOSVRfRklFTEQodmlkX3ZhY3RpdmVfdGltZSk7ICsgCj4+IElOSVRfRklFTEQo cGh5X3R4cmVxdWVzdGNsa2hzKTsgKwlJTklUX0ZJRUxEKHBoeV90ZXN0Y2xyKTsgKyAKPj4gSU5J VF9GSUVMRChwaHlfdW5zaHV0ZG93bnopOyArCUlOSVRfRklFTEQocGh5X3VucnN0eik7ICsgCj4+ IElOSVRfRklFTEQocGh5X2VuYWJsZWNsayk7ICsJSU5JVF9GSUVMRChwaHlfbmxhbmVzKTsgKyAK Pj4gSU5JVF9GSUVMRChwaHlfc3RvcF93YWl0X3RpbWUpOyArCUlOSVRfRklFTEQocGh5X3N0YXR1 cyk7ICsgCj4+IElOSVRfRklFTEQocGNraGRsX2NmZyk7ICsJSU5JVF9GSUVMRChoc3R4X3RpbWVv dXRfY291bnRlcik7IAo+PiArCUlOSVRfRklFTEQobHByeF90aW1lb3V0X2NvdW50ZXIpOyArIAo+ PiBJTklUX0ZJRUxEKGludF9zdGF0MCk7ICsJSU5JVF9GSUVMRChpbnRfc3RhdDEpOyArIAo+PiBJ TklUX0ZJRUxEKGludF9tYXNrMCk7ICsJSU5JVF9GSUVMRChpbnRfbWFzazEpOyArIAo+PiBJTklU X0ZJRUxEKGdlbl9oZHIpOyArCUlOSVRfRklFTEQoZ2VuX3BheWxvYWQpOyArIAo+PiBJTklUX0ZJ RUxEKHBoeV9idGFfdGltZSk7ICsJSU5JVF9GSUVMRCh2aWRfbW9kZV92cGdfZW4pOyArIAo+PiBJ TklUX0ZJRUxEKHZpZF9tb2RlX3ZwZ19ob3Jpeik7ICsgCj4+IElOSVRfRklFTEQocGh5X2Nsa2xw MmhzX3RpbWUpOyArIAo+PiBJTklUX0ZJRUxEKHBoeV9jbGtoczJscF90aW1lKTsgKwlJTklUX0ZJ RUxEKHBoeV9mb3JjZXBsbCk7IAo+PiArICsJaWYgKGRzaS0+aHdfdmVyc2lvbiA9PSBIV1ZFUl8x MzEpIHsgKyAKPj4gSU5JVF9GSUVMRF9DRkcoZmllbGRfcGh5X21heF9yZF90aW1lLCAKPj4gY2Zn X3BoeV9tYXhfcmRfdGltZV92MTMxKTsgKyAKPj4gSU5JVF9GSUVMRF9DRkcoZmllbGRfcGh5X2xw MmhzX3RpbWUsIGNmZ19waHlfbHAyaHNfdGltZV92MTMxKTsgCj4+ICsJCUlOSVRfRklFTERfQ0ZH KGZpZWxkX3BoeV9oczJscF90aW1lLCAKPj4gY2ZnX3BoeV9oczJscF90aW1lX3YxMzEpOyArCX0g ZWxzZSB7ICsgCj4+IElOSVRfRklFTEQocGh5X21heF9yZF90aW1lKTsgKyAKPj4gSU5JVF9GSUVM RChwaHlfbHAyaHNfdGltZSk7ICsgCj4+IElOSVRfRklFTEQocGh5X2hzMmxwX3RpbWUpOyArCX0g Cj4gIAo+IEFuZCBoZXJlIHdlIGhhdmUgZGV2cmVzIHN0b3JtIC0gZm9yIGV2ZXJ5IGZpZWxkIHdl IGFsbG9jYXRlIAo+IG1lbW9yeSwgIGVucXVldWUgZGVhbGxvY2F0b3IsIGNvcHkgc3RhdGljIHZh bHVlcyB0byBkeW5hbWljIAo+IHN0cnVjdCBhbmQgbW9yZS4gCj4gCj4gSSBrbm93IHRoYXQgQ1BV IHBvd2VyIGFuZCBtZW1vcnkgYXJlIGNoZWFwLCBidXQgdGhpcyBodXJ0cyBteSAKPiBleWVzIDop CgpXZSBkbyB0aGlzIG9ubHkgb25jZSB3aGVuIGxvYWRpbmcgdGhlIGJyaWRnZSBhbmQgZmllbGRz IGFyZSBjaGVhcCAKc28gdGhpcyBpcyBub3QgYXMgYmlnIGEgZGlzYWR2YW50YWdlIGFzIHRoZSBv dGhlciBnb29kIHBvaW50IHlvdSAKcmFpc2VkIDopIAoKPiAKPiBPdGhlciB0aGluZyBpcyB0aGF0 IHRoaXMgY29tcGxpY2F0ZXMgdGhlIGRyaXZlciAtIGFkZGluZyBuZXcgCj4gZmllbGQgd2lsbCAg cmVxdWlyZSBjaGFuZ2VzIGF0IGxlYXN0IGluIDQgKD8pIHBsYWNlcywgd2l0aG91dCAKPiBjb3Vu dGluZyByZWFsIGZpZWxkIHVzYWdlLiAKPiAKPiBBbmQgaGVyZSBpcyB2ZXJ5IHNpbXBsZSBhbHRl cm5hdGl2ZSBob3cgZGlmZmVyZW50IGh3IHJlZ2lzdGVyIAo+IGxheW91dCBjYW4gIGJlIGNvZGVk IHdpdGhvdXQgbXVjaCBhZG86IFsxXVsyXS4gCj4gCj4gWzFdOiAKPiBodHRwczovL2dpdGh1Yi5j b20vdG9ydmFsZHMvbGludXgvYmxvYi9tYXN0ZXIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlu b3NfaGRtaS5jI0w1NSAKPiAKPiBbMl06IAo+IGh0dHBzOi8vZ2l0aHViLmNvbS90b3J2YWxkcy9s aW51eC9ibG9iL21hc3Rlci9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19oZG1pLmMjTDY2 NyAKPiAgCj4gVG8gYmUgY2xlYXIsIEkgYW0gbm90IHRvdGFsbHkgYWdhaW5zdCB0aGlzIGFwcHJv YWNoIC0gdGhlIHBhdGNoIAo+IHNlZW1zIHRvICBtZSBjb3JyZWN0LCBpdCBpcyBqdXN0ICdiYXJv cXVlJyA6KSBJZiB5b3UgY2FuIHNob3cgCj4gdGhhdCBhcHByb2FjaCBmcm9tICBbMV0gYW5kIFsy XSBpbiB0aGlzIGNhc2Ugd2lsbCBiZSBtb3JlIAo+IHByb2JsZW1hdGljIHdlIGNhbiBnbyB5b3Vy IHdheS4gCj4gCj4gQW55d2F5IG1vcmUgY29tbWVudHMgYXBwcmVjaWF0ZWQuIAoKSXQgaXMgdHJ1 ZSwgcmVnbWFwIGZpZWxkcyBhcmUgYSBiaXQgbW9yZSB2ZXJib3NlIHRoYW4ganVzdCBtYXBwaW5n IAplbnVtcywgaG93ZXZlciBwbGVhc2UgY29uc2lkZXIgdGhhdCB2ZXJib3NpdHkgaGFzIGl0cyBh ZHZhbnRhZ2VzIAplc3BlY2lhbGx5IHdoZW4gaXQgaGVscHMgYXZvaWQgY3J5cHRpYyBiaXQgbWFu aXB1bGF0aW9ucyBvbiAKY2hhbmdpbmcgcmVnaXN0ZXIgbGF5b3V0cy4KClRoaXMgaXMgbWFkZSBh cHBhcmVudCBpbiB2NiB3aGljaCBJIHdpbGwgcG9zdCBzb29uIHdoZXJlIEkgdG9vayAKc29tZSB0 aW1lIHRvIGdvIHRocm91Z2ggTlhQLCBTVE0gYW5kIFJvY2tjaGlwIGRvY3VtZW50YXRpb25zIGFu ZCAKZml4IGJhZCByZWFkL3dyaXRlcyBpbiByZXNlcnZlZCByZWdpc3RlciBzcGFjZXMuIFlvdSBj YW4gZ2V0IGEgCmdsaW1wc2Ugb2YgdGhhdCBjaGFuZ2UgaGVyZSBbMV0uCgpSZWdtYXAgZmllbGRz IG1ha2UgaXQgbXVjaCBlYXNpZXIgdG8gdGFrZSB0aGUgcmVmZXJlbmNlIG1hbnVhbHMgCmFuZCBj b21wYXJlIHRoZW0gdG8gd2hhdCBkcml2ZXJzIGRvIGJlY2F1c2UgZmllbGRzIGFyZSBleHBsaWNp dGVseSAKZGVmaW5lZCBhbmQgbW9yZSB2ZXJib3NlIGJ5IGRlc2lnbi4KCkFsc28gaXQncyBub3Qg bGlrZSB0aGUgdmVyYm9zaXR5IGlzIGluY3JlYXNlZCBieSBiaWcgYW1vdW50cywgYXQgClsyXSB5 b3UgY2FuIGZpbmQgYW5vdGhlciBjb21taXQgSSBtYWRlIGZvciB2NiB3aGljaCBkb2VzIGEgZmll bGQgCmNvbnZlcnNpb24uCgpUbyBjdXQgdGhlIHN0b3J5IHNob3J0LCBJIHRoaW5rIHRoZSB0cmFk ZS1vZmYgaXMgd29ydGggaXQuCgpJJ20gaG9sZGluZyBvZmYgb24gcG9zdGluZyB2NiBiZWNhdXNl IEkgZ290IHNvbWUgdGVzdGluZyBkb25lIG9uIApTVE0gc3RtMzJtcDEgYW5kIHN0bTMyZjcgd2hp Y2ggcmV2ZWFsZWQgYSBsb3ctcG93ZXItbWdtdCBidWcgd2hpY2ggCkknbSBub3Qgc3VyZSB5ZXQg aWYgaXMgcmVsYXRlZCB0byB0aGUgcGF0Y2ggc2VyaWVzIG9yIG5vdC4KClAuUy4gSWYgd2UgcmVh bGx5IGhhdmUgdG8gcmVzb3J0IHRvIG5hbWUtY2FsbGluZyB0aGVuIEknZCBjYWxsIAoiYmFyb3F1 ZSIgY29tcHV0aW5nIGNyeXB0aWMgYml0LW1hbmlwdWxhdGlvbnMgYW5kIG1hcHBpbmcgZW51bXMg YXMgCm9wcG9zZWQgdG8gdXNpbmcgYSBjbGVhcmVyIGFsYmVpdCBtb3JlIHZlcmJvc2UgcmVnbWFw IAppbmZyYXN0cnVjdHVyZS4gOikKClsxXSAKaHR0cHM6Ly9naXRsYWIuY29sbGFib3JhLmNvbS9h cmF0aXUvbGludXgtcHVibGljLy0vY29tbWl0L2YzNjc3NDM3MzExOGVmMGMxNzg1YWNiNTMzYzgy NGI4MzU1ZTFlNDMgCgpbMl0KaHR0cHM6Ly9naXRsYWIuY29sbGFib3JhLmNvbS9hcmF0aXUvbGlu dXgtcHVibGljLy0vY29tbWl0LzBmODAyNjQxMjgyMmIzYTE4NDI3MDJmMThlYjlmM2QwY2QxMTVm NjcKCj4KPgo+IFJlZ2FyZHMKPgo+IEFuZHJ6ZWoKPgo+Cj4+ICsKPj4gKwlyZXR1cm4gMDsKPj4g K30KPj4gKwo+PiAgIHN0YXRpYyBzdHJ1Y3QgZHdfbWlwaV9kc2kgKgo+PiAgIF9fZHdfbWlwaV9k c2lfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKPj4gICAJCSAgICBjb25zdCBz dHJ1Y3QgZHdfbWlwaV9kc2lfcGxhdF9kYXRhICpwbGF0X2RhdGEpCj4+IEBAIC0xMDgxLDYgKzEy NjksMTIgQEAgX19kd19taXBpX2RzaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 LAo+PiAgIAo+PiAgIAlkd19taXBpX2RzaV9nZXRfaHdfdmVyc2lvbihkc2kpOwo+PiAgIAo+PiAr CXJldCA9IGR3X21pcGlfZHNpX3JlZ21hcF9maWVsZHNfaW5pdChkc2kpOwo+PiArCWlmIChyZXQp IHsKPj4gKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gaW5pdCByZWdpc3RlciBsYXlvdXQgbWFw OiAlZFxuIiwgcmV0KTsKPj4gKwkJcmV0dXJuIEVSUl9QVFIocmV0KTsKPj4gKwl9Cj4+ICsKPj4g ICAJZHdfbWlwaV9kc2lfZGVidWdmc19pbml0KGRzaSk7Cj4+ICAgCXBtX3J1bnRpbWVfZW5hYmxl KGRldik7Cj4+ICAgCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3Rz LmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5m by9saW51eC1hcm0ta2VybmVsCg==