From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from 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 smtp.lore.kernel.org (Postfix) with ESMTPS id C0188C54798 for ; Thu, 7 Mar 2024 17:19:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=MMkvCOz6GK3iLz+Vv/xZrG06U2OmFL/VJHX+DvXyfpw=; b=dOvCVQLUPA3tgH kNn98ZGZEbT5jR/rzIiT+3Y1f24cTPLBkr3/pFAfwVrV2eWP46P7O9Ew+oGXidAokGHQDEQgZ/LPT LALlf9G0iNYqmvYCNgGe12CUj7h5sXR4rvZVAmNNoaNH0enqkr9i3tHgid4xAc4DcFJ/ZjVGSA0Zg /O/QNuUgHtNUEIhtlXPLPfIRsF0xkB76i7nV3Q4qfvDo/+tUekOUejQI7yP5sJ/4Siq92wm5Sie3f E4QJqSaNXFitfqs0f5Un0G89jtGK5vj4pwyitk1XqdZLWJdVOUAgVhjZTWT1VyA7tzOKTn4Wt0heK km2t0SaJ7/TLryZvQV6A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1riHPG-00000005epH-0QIk; Thu, 07 Mar 2024 17:19:46 +0000 Received: from relay7-d.mail.gandi.net ([2001:4b98:dc4:8::227]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1riHPC-00000005eoa-0U7s for linux-mtd@lists.infradead.org; Thu, 07 Mar 2024 17:19:43 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id EF46120009; Thu, 7 Mar 2024 17:19:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1709831975; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=AsvVKkm2Eq4sRDhn6wHLtPPoTtBKjkIYcjnZcnmXCvA=; b=V+B/vQULtwzwIAJB97EDZWe0axXUQ0UUXt33krajqUQ61dmdA0J9cZ2N5rsmnddecE0/XU W+BHhFz7Cz6A6AlcNludhWK+0nDLms0G/PHTNIwWODqTcBFuYOysu2iX8tMeXgfxVBN2xD RrznmU/nqiJzHXkIti0Cq5nZU92grRupdftwPuvIwNrGx0xwA1wf8K01zzH/uUes8l0yle urURw8u8uhMwfopUpuu9+33hg5fwYNZO6kOseTI8vQquU2UYJRdm9a3m0stB2vRBHjIn9P 1VDDCSqTJHBeVXRvFoQ/vX2HvbxvEw+E70QSwSGgo1zUCMTfuXmZLHJlYpqLYw== Date: Thu, 7 Mar 2024 18:19:31 +0100 From: Miquel Raynal To: Alexander Dahl Cc: linux-mtd@lists.infradead.org, Richard Weinberger , Vignesh Raghavendra , linux-kernel@vger.kernel.org Subject: Re: mtd: nand: raw: Possible bug in nand_onfi_detect()? Message-ID: <20240307181931.440c9c3f@xps-13> In-Reply-To: <20240307-pantry-deceit-78ce20f47899@thorsis.com> References: <20240306-shaky-bunion-d28b65ea97d7@thorsis.com> <20240306164831.29eed907@xps-13> <20240307-pantry-deceit-78ce20f47899@thorsis.com> Organization: Bootlin X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-GND-Sasl: miquel.raynal@bootlin.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240307_091942_468184_21563D42 X-CRM114-Status: GOOD ( 56.61 ) X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org SGkgQWxleGFuZGVyLAoKYWRhQHRob3JzaXMuY29tIHdyb3RlIG9uIFRodSwgNyBNYXIgMjAyNCAx NzowMjoxNiArMDEwMDoKCj4gSGVsbG8gTWlxdWVsLAo+IAo+IHRoYW5rcyBmb3IgbG9va2luZyBp bnRvIHRoaXMsIHNlZSBteSByZW1hcmtzIGJlbG93Lgo+IAo+IEFtIFdlZCwgTWFyIDA2LCAyMDI0 IGF0IDA0OjQ4OjMxUE0gKzAxMDAgc2NocmllYiBNaXF1ZWwgUmF5bmFsOgo+ID4gSGkgQWxleGFu ZGVyLAo+ID4gCj4gPiBhZGFAdGhvcnNpcy5jb20gd3JvdGUgb24gV2VkLCA2IE1hciAyMDI0IDE1 OjM2OjA0ICswMTAwOgo+ID4gICAKPiA+ID4gSGVsbG8gZXZlcnlvbmUsCj4gPiA+IAo+ID4gPiBJ IHRoaW5rIEkgZm91bmQgYSBidWcgaW4gbmFuZF9vbmZpX2RldGVjdCgpIHdoaWNoIHdhcyBpbnRy b2R1Y2VkIHdpdGgKPiA+ID4gY29tbWl0IGMyNzg0MmU3ZTExZiAoIm10ZDogcmF3bmFuZDogb25m aTogQWRhcHQgdGhlIHBhcmFtZXRlciBwYWdlCj4gPiA+IHJlYWQgdG8gY29uc3RyYWludCBjb250 cm9sbGVycyIpIGJhY2sgaW4gMjAyMC4gIAo+ID4gCj4gPiBJbnRlcmVzdGluZy4gSSBkb24ndCB0 aGluayB0aGlzIHBhdGNoIGRpZCBicm9rZSBhbnl0aGluZywgYXMKPiA+IGNvbnN0cmFpbmVkIGNv bnRyb2xsZXJzIHdvdWxkIGp1c3Qgbm90IHN1cHBvcnQgdGhlIHJlYWRfZGF0YV9vcCgpIGNhbGwK PiA+IGFueXdheS4KPiA+IAo+ID4gVGhhdCBiZWluZyBzYWlkLCBJIGRvbid0IHNlZSB3aHkgdGhl IGF0bWVsIGNvbnRyb2xsZXIgd291bGQKPiA+IHJlZnVzZSB0aGlzIG9wZXJhdGlvbiwgYXMgaXQg aXMgc3VwcG9zZWQgdG8gc3VwcG9ydCBhbGwKPiA+IG9wZXJhdGlvbnMgd2l0aG91dCBsaW1pdGF0 aW9uLiBUaGlzIGlzIG9uZSBvZiB0aGUgdGhyZWUgaXNzdWVzCj4gPiB5b3UgaGF2ZSwgdGhhdCBw cm9iYWJseSBuZWVkcyBmaXhpbmcuICAKPiAKPiBJIGZvdW5kIGEgZmxhdyBpbiBteSBkZWJ1ZyBt ZXNzYWdlcyBoaWRpbmcgdGhlIHVuZGVybHlpbmcgaXNzdWUgZm9yCj4gdGhpcy4gIEknbSBhZnJh aWQgdGhpcyBpcyBhbm90aGVyIGJ1ZyBpbnRyb2R1Y2VkIGJ5IHlvdSB3aXRoIGNvbW1pdAo+IDlm ODIwZmMwNjUxYyAoIm10ZDogcmF3bmFuZDogQ2hlY2sgdGhlIGRhdGEgb25seSByZWFkIHBhdHRl cm4gb25seQo+IG9uY2UiKS4gIFNlZSB0aGlzIGxpbmUgaW4gcmF3bmFuZF9jaGVja19kYXRhX29u bHlfcmVhZF9zdXBwb3J0KCk6Cj4gCj4gICAgIGlmICghbmFuZF9yZWFkX2RhdGFfb3AoY2hpcCwg TlVMTCwgU1pfNTEyLCB0cnVlLCB0cnVlKSkKPiAKPiBUaGlzIGxlYWRzIHRvIG5hbmRfcmVhZF9k YXRhX29wKCkgcmV0dXJuaW5nIC1FSU5WQUwsIGJlY2F1c2UgaXQgY2hlY2tzCj4gaWYgaXRzIHNl Y29uZCBhcmd1bWVudCBpcyBub24tTlVMTC4KCkFoLCBmaW5hbGx5LiBZZXMsIHRoaXMgbWFrZXMg bW9yZSBzZW5zZS4gSSB3YXMgYWxyZWFkeSBub3RpZmllZCBpbgpwcml2YXRlIG9mIHNvbWV0aGlu ZyB0aGVyZSwgSSB0aGluayB0aGUgY29udHJpYnV0b3IgKEkgY2Fubm90IGZpbmQgdGhlCm9yaWdp bmFsIG1haWwpIHRvbGQgbWUgaGUgd291bGQgZ2V0IGJhY2sgb24gaXQgYW5kIGRpZCBub3QsIGJ1 dCBJIGFtCnVuYWJsZSB0byBmaW5kIHRoZSB0aHJlYWQgYWdhaW4gaW4gbXkgbWFpbGVyLiBBbnlo b3csIHRoaXMgaXMgcmluZ2luZyBhCmJlbGwsIGFuZCBJIGFtIHByZXR0eSBjb252aW5jZWQgYWJv dXQgdGhlIGJ1ZyByYWlzZWQgbm93LiBDYW4geW91CnBsZWFzZSBwcm9wb3NlIGEgZml4PwoKWW91 IGNhbiBwcm9wb3NlIHR3byBmaXhlcyBhY3R1YWxseSwgb25lIGZvciB0aGUgTlVMTCB2YWx1ZSBh bmQgYW5vdGhlcgpvbmUgZm9yIG10ZC0+d3JpdGVzaXplIGJlaW5nIHVuc2V0IGF0IHRoaXMgc3Rh Z2UuCgpJSVJDIHRoZSBvcmlnaW5hbCByZXBvcnRlciB0b2xkIG1lIGFib3V0IGJpdGZsaXBzIGlu IGhpcyBwYXJhbWV0ZXIgcGFnZQood2hpY2ggY2Fubm90IGJlIGdlbmVyYXRlZCBvbiBkZW1hbmQs IGFuZCB0aGlzIGlzIHJhdGhlciB1bmNvbW1vbikuCgo+IEkgZ3Vlc3Mgbm90IG9ubHkgdGhlIGF0 bWVsIG5hbmQgY29udHJvbGxlciBpcyBhZmZlY3RlZCBoZXJlLCBidXQgX2FsbF8KPiBuYW5kIGNv bnRyb2xsZXJzPyAgVGhlIGZsYWcgY2FuIG5ldmVyIGJlIHNldCwgYW5kIHNvIHVzZV9kYXRhaW4g aXMKPiBmYWxzZSBoZXJlPwo+IAo+ID4gPiBCYWNrZ3JvdW5kIG9uIGhvdyBJIGZvdW5kIHRoaXM6 IEknbSBjdXJyZW50bHkgc3RydWdnbGluZyBnZXR0aW5nIHJhdwo+ID4gPiBuYW5kIGZsYXNoIGFj Y2VzcyB0byBmbHkgd2l0aCBhbiBhdDkxIHNhbTl4NjAgU29DIGFuZCBhIFMzNE1MMDJHMQo+ID4g PiBTcGFuc2lvbiBTTEMgcmF3IE5BTkQgZmxhc2ggb24gYSBjdXN0b20gYm9hcmQuICBUaGUgc2V0 dXAgaXMKPiA+ID4gY29tcGFyYWJsZSB0byB0aGUgc2FtOXg2MCBjdXJpb3NpdHkgYm9hcmQgYW5k IGNhbiBiZSByZXByb2R1Y2VkIHdpdGgKPiA+ID4gdGhhdCBvbmUuCj4gPiA+IAo+ID4gPiBOQU5E IGZsYXNoIG9uIHNhbTl4NjAgY3VyaW9zaXR5IGJvYXJkIHdvcmtzIGZpbmUgd2l0aCB3aGF0IGlz IGluCj4gPiA+IG1haW5saW5lIExpbnV4IGtlcm5lbC4gIEhvd2V2ZXIgYWZ0ZXIgcmVtb3Zpbmcg dGhlIGxpbmUgJ3JiLWdwaW9zID0KPiA+ID4gPCZwaW9EIDUgR1BJT19BQ1RJVkVfSElHSD47JyBm cm9tIGF0OTEtc2FtOXg2MF9jdXJpb3NpdHkuZHRzIGFsbCBkYXRhCj4gPiA+IHJlYWQgZnJvbSB0 aGUgZmxhc2ggYXBwZWFycyB0byBiZSB6ZXJvcyBvbmx5LiAgKEkgZGlkIG5vdCBhZGQgdGhhdAo+ ID4gPiBsaW5lIHRvIHRoZSBkdHMgb2YgbXkgY3VzdG9tIGJvYXJkIGZpcnN0LCB0aGlzIGlzIGhv dyBJIHN0dW1ibGVkIG92ZXIKPiA+ID4gdGhpcy4pCj4gPiA+IAo+ID4gPiBJIGhhdmUgbm8gZXhw bGFuYXRpb24gZm9yIHRoYXQgYmVoYXZpb3VyLCBpdCBzaG91bGQgd29yayB3aXRob3V0IFIvQiMK PiA+ID4gYnkgcmVhZGluZyB0aGUgc3RhdHVzIHJlZ2lzdGVyLCBtYXliZSB3ZSBpbnZlc3RpZ2F0 ZSB0aGF0Cj4gPiA+IGluIGRlcHRoIGxhdGVyLiAgCj4gPiAKPiA+IEkgZG9uJ3Qgc2VlIHdoeSBh dCBhIGZpcnN0IGxvb2suIFRoZSBkZWZhdWx0IGlzICJubyBSQiIgaWYgbm8gcHJvcGVydHkKPiA+ IGlzIGdpdmVuIGluIHRoZSBEVCBzbyBpdCBzaG91bGQgd29yay4gIAo+IAo+IENvcnJlY3QsIG5h bmRfc29mdF93YWl0cmR5KCkgaXMgdXNlZCBpbiB0aGF0IGNhc2UuCj4gCj4gPiBUcmFjaW5nIHRo ZSB3YWl0IHJlYWR5IGZ1bmN0aW9uIGNhbGxzIG1pZ2h0IGhlbHAuICAKPiAKPiBEaWQgdGhhdCBh bHJlYWR5LiAgT24gZWFjaCBjYWxsIGhlcmUgdGhlIHN0YXR1cyByZWdpc3RlciByZWFkIGNvbnRh aW5zCj4gRTBoIGFuZCBuYW5kX3NvZnRfd2FpdHJkeSgpIHJldHVybnMgd2l0aG91dCBlcnJvciwg YmVjYXVzZSB0aGUKPiBOQU5EX1NUQVRVU19SRUFEWSBmbGFnIGlzIHNldC4gIEl0IGp1c3QgbG9v a3MgZmluZSwgYWx0aG91Z2ggaXQgaXMKPiBub3QgYWZ0ZXJ3YXJkcy4KClN0cmFuZ2UuIEp1c3Qg dG8gYmUgc3VyZSwgaG93IGFyZSB5b3UgdGVzdGluZz8gUGxlYXNlIG1ha2UgYSBzaW5nbGUKcGFn ZSByZWFkIChtaW5pbWFsIGxlbmd0aCB3aXRoIG10ZF9kZWJ1ZyBvciBhbnkgbGVuZ3RoIHdpdGgg bmFuZGR1bXApIHRvCmJlIHN1cmUgeW91J3JlIG5vdCBhZmZlY3RlZCBieSB0aGUgY29udGludW91 cyByZWFkcyBidWdzIChhbHNvIG1pbmUpLgoKPiA+ID4gIEhvd2V2ZXIgdGhvc2UgYWxsIHplcm9z IGRhdGEgcmVhZHMgaGFwcGVucyB3aGVuCj4gPiA+IHJlYWRpbmcgdGhlIE9ORkkgcGFyYW0gcGFn ZSBhcyB3ZWxsIGVzIGRhdGEgcmVhZCBmcm9tIE9PQi9zcGFyZSBhcmVhCj4gPiA+IGxhdGVyIGFu ZCBJIGJldCBpdCdzIHRoZSBzYW1lIHdpdGggdXN1YWwgZGF0YS4gIAo+ID4gCj4gPiBSZWFkaW5n IGRhdGEgd2l0aG91dCBvYnNlcnZpbmcgdFdCICsgdFIgbWF5IGxlYWQgdG8gdGhpcy4gIAo+IAo+ IEkgYWxyZWFkeSBzdXNwZWN0ZWQgc29tZSB0aW1pbmcgaXNzdWUuICBEZWVwZXIgaW52ZXN0aWdh dGlvbiB3aWxsIGhhdmUKPiB0byB3YWl0IHVudGlsIHdlIHNvbGRlcmVkIHNvbWUgd2lyZXMgdG8g dGhlIGNoaXAgYW5kIGNvbm5lY3QgYSBsb2dpYwo+IGFuYWx5emVyIGhvd2V2ZXIuICBBdCBsZWFz dCB0aGF0J3MgdGhlIHBsYW4sIGJ1dCB0aGlzIHdpbGwgaGF2ZSB0bwo+IHdhaXQgc29tZSBkYXlz IHVudGlsIGFmdGVyIEkgZmluaXNoZWQgc29tZSBvdGhlciB0YXNrcy4KClN1cmUuCgo+IAo+ID4g PiBUaGlzIHJlYWQgZXJyb3IgcmV2ZWFscyBhIGJ1ZyBpbiBuYW5kX29uZmlfZGV0ZWN0KCkuICBB ZnRlciBzZXR0aW5nCj4gPiA+IHVwIHNvbWUgdGhpbmdzIHRoZXJlJ3MgdGhpcyBmb3IgbG9vcDoK PiA+ID4gCj4gPiA+ICAgICBmb3IgKGkgPSAwOyBpIDwgT05GSV9QQVJBTV9QQUdFUzsgaSsrKSB7 Cj4gPiA+IAo+ID4gPiBGb3IgaSA9IDAgbmFuZF9yZWFkX3BhcmFtX3BhZ2Vfb3AoKSBpcyBjYWxs ZWQgYW5kIGluIG15IGNhc2UgYWxsIHplcm9zCj4gPiA+IGFyZSByZXR1cm5lZCBhbmQgdGh1cyB0 aGUgQ1JDIGNhbGN1bGF0ZWQgZG9lcyBub3QgbWF0Y2ggdGhlIGFsbCB6ZXJvcwo+ID4gPiBDUkMg cmVhZC4gIFNvIHRoZSB1c3VhbCBicmVhayBvbiBzdWNjZXNzZnVsIHJlYWRpbmcgdGhlIGZpcnN0 IHBhZ2UgaXMKPiA+ID4gc2tpcHBlZCBhbmQgZm9yIHJlYWRpbmcgdGhlIHNlY29uZCBwYWdlIG5h bmRfY2hhbmdlX3JlYWRfY29sdW1uX29wKCkKPiA+ID4gaXMgY2FsbGVkLiAgSSB0aGluayB0aGF0 IG9uZSBhbHdheXMgZmFpbHMgb24gdGhpcyBsaW5lOgo+ID4gPiAKPiA+ID4gICAgIGlmIChvZmZz ZXRfaW5fcGFnZSArIGxlbiA+IG10ZC0+d3JpdGVzaXplICsgbXRkLT5vb2JzaXplKSB7Cj4gPiA+ IAo+ID4gPiBUaG9zZSB2YXJpYWJsZXMgY29udGFpbiB0aGUgZm9sbG93aW5nIHZhbHVlczoKPiA+ ID4gCj4gPiA+ICAgICBvZmZzZXRfaW5fcGFnZTogMjU2Cj4gPiA+ICAgICBsZW46IDI1Ngo+ID4g PiAgICAgbXRkLT53cml0ZXNpemU6IDAKPiA+ID4gICAgIG10ZC0+b29ic2l6ZTogMCAgCj4gPiAK PiA+IEluZGVlZC4gV2UgcHJvYmFibHkgbmVlZCBzb21lIGtpbmQgb2YgZXh0cmEgY2hlY2sgdGhh dCBkb2VzIG5vdCBwZXJmb3JtCj4gPiB0aGUgaWYgY2xhdXNlIGFib3ZlIGlmICFtdGQtPndyaXRl c2l6ZS4KPiA+ICAgCj4gPiA+IFRoZSBjb25kaXRpb24gaXMgdHJ1ZSBhbmQgbmFuZF9jaGFuZ2Vf cmVhZF9jb2x1bW5fb3AoKSByZXR1cm5zIHdpdGgKPiA+ID4gLUVJTlZBTCwgYmVjYXVzZSBtdGQt PndyaXRlc2l6ZSBhbmQgbXRkLT5vb2JzaXplIGFyZSBub3Qgc2V0IHlldCBpbgo+ID4gPiB0aGF0 IGNvZGUgcGF0aC4gIFRob3NlIGFyZSBwcm9iYWJseSBpbml0aWFsaXplZCBsYXRlciwgbWF5YmUg d2l0aAo+ID4gPiBwYXJhbWV0ZXJzIHJlYWQgZnJvbSB0aGF0IE9ORkkgcGFyYW0gcGFnZT8KPiA+ ID4gCj4gPiA+IFJldHVybmluZyB3aXRoIGVycm9yIGZyb20gbmFuZF9jaGFuZ2VfcmVhZF9jb2x1 bW5fb3AoKSBsZWFkcyB0bwo+ID4gPiBqdW1waW5nIG91dCBvZiBuYW5kX29uZmlfZGV0ZWN0KCkg ZWFybHksIGFuZCBubyBPTkZJIHBhcmFtIHBhZ2UgaXMKPiA+ID4gZXZhbHVhdGVkIGF0IGFsbCwg YWx0aG91Z2ggdGhlIHNlY29uZCBvciB0aGlyZCBwYWdlIGNvdWxkIGJlIGludGFjdC4KPiA+ID4g Cj4gPiA+IEkgZ3Vlc3MgdGhpcyB3b3VsZCBhbHNvIGZhaWwgd2l0aCBhbnkgb3RoZXIgcmVhc29u IGZvciBub3QgbWF0Y2hpbmcKPiA+ID4gQ1JDcyBpbiB0aGUgZmlyc3QgcGFnZSwgYnV0IEkgaGF2 ZSBub3QgZmF1bHR5IE5BTkQgZmxhc2ggY2hpcCB0bwo+ID4gPiBjb25maXJtIHRoYXQuICAKPiA+ IAo+ID4gVGhhbmtzIGZvciB0aGUgd2hvbGUgcmVwb3J0LCBpdCBpcyBpbnRlcmVzdGluZyBhbmQg c2hvdWxkIGxlYWQgdG8gZml4ZXM6Cj4gPiAtIHdoeSBkb2VzIHRoZSBjb250cm9sbGVyIHJlZnVz ZXMgdGhlIGRhdGFpbiBvcD8gIAo+IAo+IFNlZSBhYm92ZS4KPiAKPiA+IC0gd2h5IG5hbmRfc29m dF93YWl0cmR5IGlzIG5vdCBlbm91Z2g/ICAKPiAKPiBJIGRvbid0IGtub3cuICBUaGF0J3Mgb25l IHJlYXNvbiBJIGFza2VkIGhlcmUuCj4gCj4gPiAtIGNoYW5naW5nIHRoZSBjb25kaXRpb24gaW4g bmFuZF9jaGFuZ2VfcmVhZF9jb2x1bW5fb3AoKQo+ID4gCj4gPiBDYW4geW91IHRha2UgY2FyZSBv ZiB0aGVzZT8gIAo+IAo+IFRoZSBsYXN0IG9uZSBwcm9iYWJseSBhZnRlciBpbiBkZXB0aCByZWFk aW5nIG9mIHRoZSBjb2RlIGFnYWluLCB1bnN1cmUKPiBmb3IgdGhlIG90aGVyIHR3by4KCkZpcnN0 IG9uZSBpcyAiZWFzeSIgbm93IEkgZ3Vlc3M/CgpGb3IgdGhlIG1pZGRsZSBvbmUgd2UgbmVlZCBt b3JlIGludmVzdGlnYXRpb24gb2YgY291cnNlLgoKVGhhbmtzIGZvciB0aGUgZGVidWdnaW5nIGFu ZCBzb3JyeSBmb3IgdGhlIHRyb3VibGVzLgoKTWlxdcOobAoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4IE1URCBkaXNjdXNzaW9uIG1h aWxpbmcgbGlzdApodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xp bnV4LW10ZC8K