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 43800C77B7A for ; Tue, 6 Jun 2023 04:48:35 +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:In-Reply-To:From:References:CC:To: Subject:MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=SATHjHmTGPKcPH5m5+SUj8S8u1vjBqP0Ce0mFd/lQNk=; b=upccXQxUWm183X 9ZOssopykjrxXVmWuS80DCma/sS2Ls6Gx4Spx7X10bZJa0HRN4DtNXADpH8iqF6bBKttcePCfrtKL ubq4tEipazqCw7/5YD43Xv8Oqje2vnkjMkSmFOEFtt9a4kDxxfaiL3hxqPZ8qolRREvij7CILYdaP UZ/G1DjAzx/7RGY7ScnIq2qgXE5fNCrziehW+Bt2kpyceE6I7ojc84D+W4BvUZdf2hbfFGIdEdZG9 BTg64DPCcolK7dVP8Rkrw7ADhcyK8ykAwOdNBGKZWZRmBX8uhbibgfnhEyaW4YvGFKcOyQkk/iZoW MabRM+sUUYqAoqANQ3fw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1q6Oc2-000AWg-2w; Tue, 06 Jun 2023 04:48:06 +0000 Received: from mx.sberdevices.ru ([45.89.227.171]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1q6Obx-000AVJ-12; Tue, 06 Jun 2023 04:48:05 +0000 Received: from s-lin-edge02.sberdevices.ru (localhost [127.0.0.1]) by mx.sberdevices.ru (Postfix) with ESMTP id 70EBA5FD22; Tue, 6 Jun 2023 07:47:52 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sberdevices.ru; s=mail; t=1686026872; bh=7vurgv9tV3LwTZLFsf23OcE9xdXATd13WxKmp+3bwIQ=; h=Message-ID:Date:MIME-Version:Subject:To:From:Content-Type; b=fG3jaJCVbcfdtBy/b33OD5i2i31JftGMOC4N0EK3Whn54DBn6x67XmvCH+UnfsZtW ad1t9/iyDaEYl9OGUgo3mnvGFwBmlYoERz0Opvf+0zwyAJ3S82kIurb9/vjPW24SG3 e0NKq+5piXznJp16ARjmWBTo1IvQVOrORo4sF2Igg1DSgukb80i6IqDLmpn1KJAjGp tzE4EHHDl0YS/8nUYasrQd+NRFOjSaZx1GWKHVSH0XIfBEi1ttvzxuRDkuVCU3fURo MdcGgQK/reQ/cdH7h80YO2xDL3dUlOdPCjcXCmALvAud8dEpHfHSrLYS2oZPlS6DiS CVfwyrw8db7FQ== Received: from S-MS-EXCH01.sberdevices.ru (S-MS-EXCH01.sberdevices.ru [172.16.1.4]) by mx.sberdevices.ru (Postfix) with ESMTP; Tue, 6 Jun 2023 07:47:50 +0300 (MSK) Message-ID: <53f31185-70d9-7264-a99a-cf71f8fc52eb@sberdevices.ru> Date: Tue, 6 Jun 2023 07:42:58 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Subject: Re: [RFC PATCH v5 3/6] mtd: rawnand: meson: only expose unprotected user OOB bytes Content-Language: en-US To: Miquel Raynal CC: Liang Yang , Richard Weinberger , Vignesh Raghavendra , Neil Armstrong , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , , , , , , References: <20230601061850.3907800-1-AVKrasnov@sberdevices.ru> <20230601061850.3907800-4-AVKrasnov@sberdevices.ru> <20230601103111.6840acc0@xps-13> <8242530c-7b6b-29ce-581b-c5644a965b60@sberdevices.ru> <20230605114850.77cf9197@xps-13> From: Arseniy Krasnov In-Reply-To: <20230605114850.77cf9197@xps-13> X-Originating-IP: [172.16.1.6] X-ClientProxiedBy: S-MS-EXCH02.sberdevices.ru (172.16.1.5) To S-MS-EXCH01.sberdevices.ru (172.16.1.4) X-KSMG-Rule-ID: 4 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiPhishing: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 1.1.2.30, bases: 2023/06/06 01:08:00 #21440094 X-KSMG-AntiVirus-Status: Clean, skipped X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230605_214802_230241_BAA19C01 X-CRM114-Status: GOOD ( 52.95 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org CgpPbiAwNS4wNi4yMDIzIDEyOjQ4LCBNaXF1ZWwgUmF5bmFsIHdyb3RlOgo+IEhpIEFyc2VuaXks Cj4gCj4gYXZrcmFzbm92QHNiZXJkZXZpY2VzLnJ1IHdyb3RlIG9uIEZyaSwgMiBKdW4gMjAyMyAx MTo1Mzo0NyArMDMwMDoKPiAKPj4gSGVsbG8gTWlxdWVsLCB0aGFua3MgZm9yIHJldmlldyEKPj4K Pj4gT24gMDEuMDYuMjAyMyAxMTozMSwgTWlxdWVsIFJheW5hbCB3cm90ZToKPj4+IEhpIEFyc2Vu aXksCj4+Pgo+Pj4gQVZLcmFzbm92QHNiZXJkZXZpY2VzLnJ1IHdyb3RlIG9uIFRodSwgMSBKdW4g MjAyMyAwOToxODo0NiArMDMwMDoKPj4+ICAgCj4+Pj4gVGhpcyBtb3ZlcyBmcmVlIGJ5dGVzIG9m IE9PQiB0byBub24tcHJvdGVjdGVkIEVDQyBhcmVhLiBJdCBpcyBuZWVkZWQgdG8gIAo+Pj4KPj4+ IEFzIHdlIGRpc2N1c3NlZCwgSSBleHBlY3QgdGhpcyBjb21taXQgdG8ganVzdCBjaGFuZ2UgdGhl IE9PQiBsYXlvdXQgdG8KPj4+IGV4cG9zZSB1bnByb3RlY3RlZCBPT0IgYnl0ZXMgdG8gdGhlIHVz ZXIsIHRoYXQgaXMgdGhlIG9ubHkgY2hhbmdlIHRoaXMKPj4+IGNvbW1pdCBzaG91bGQgY2Fycnku IElmIHRoYXQgZG9lcyBub3Qgd29yaywgeW91IHNob3VsZCBhZGQgYQo+Pj4gcHJlcGFyYXRpb24g cGF0Y2guICAKPj4KPj4gT2ssIGJ1dCBJIHRob3VnaHQsIGlmIGkgY2hhbmdlIG9ubHkgT09CIGxh eW91dCwgZS5nLiB1cGRhdGUgJ2ZyZWUnIGNhbGxiYWNrIG9mCj4+IG10ZF9vb2JsYXlvdXRfb3Bz LCBJIGFsc28gbmVlZCB0byBpbXBsZW1lbnQgY29kZSB3aGljaCBwZXJmb3JtcyByZWFkL3dyaXRl Cj4+IGFjY29yZGluZyBuZXcgbGF5b3V0IChpdCBtdXN0IGJlIGRvbmUgaW4gYSBzaW5nbGUgcGF0 Y2gpPwo+IAo+IE5vLCB0aGlzIGlzIG9ydGhvZ29uYWwuCj4gCj4gVGhlIGRyaXZlciBtdXN0IHJl YWQgdGhlIHRoZSB3aG9sZSBPT0IgYXJlYSAoYW5kIHBlcmhhcHMgcmVvcmRlciB0aGUKPiBkYXRh KSwgYnV0IHlvdSBzaG91bGQgbm90IG1ha2UgYW55IGRlY2lzaW9uIHJlZ2FyZGluZyB3aGF0IGJ5 dGVzIHlvdQo+IHdhbnQgb3Igbm90IHdhbnQgdG8gZXhwb3NlLgo+IAo+IFRoZW4sIHRoZSB1c2Vy IChubyBtYXR0ZXIgd2hhdCAidXNlciIgaXMgaGVyZSkgd2lsbCBkZWNpZGUgaG93IHRvIGRlYWwK PiB3aXRoIHRoZSBkYXRhLgoKSGVsbG8gTWlxdWVsIQoKT2ssIHNvIGluIGNhc2Ugb2Y6CjEpIHJl YWQgSSBqdXN0IG5lZWQgdG8gcmVhZCBPT0IgZGF0YSB1c2luZyAnbmFuZF9jaGFuZ2VfcmVhZF9j b2x1bW5fb3AoKScgYW5kIHBsYWNlIGl0IHRvICdvb2JfYnVmJy4KMikgd3JpdGUgSSBuZWVkIHRv IHdyaXRlIE9PQiBkYXRhIHVzaW5nICduYW5kX2NoYW5nZV93cml0ZV9jb2x1bW5fb3AoKScgdG8g Y29udHJvbGxlciBpbnRlcm5hbCBSQU0gYW5kIHRoZW4gY2FsbCBQQUdFX1BST0cuCiAgIEV2ZW4g aW4gRUNDIG1vZGUsIGRhdGEgd2hpY2ggb2NjdXBpZXMgcGxhY2VzIG9mIEVDQyBjb2RlcyB3aWxs IGJlIHJlbW92ZWQgYnkgaHcgKCBhcyBZb3UgbWVudGlub2VkIGJlbG93KS4KClRoYXQncyBhbGw/ OikKCj4gCj4+IE1haW4gdGhpbmcgaXM6Cj4+Cj4+IEkgZ3Vlc3MgdGhhdCBnZW5lcmFsIGNvbmZ1 c2Ugd2l0aCB0aGlzIHBhdGNoIGlzIHRoYXQgWW91IGNvbnNpZGVyCj4+IHRoYXQgd2UgY2hhbmdl IG9ubHkgT09CIGxheW91dCBieSBtb3ZpbmcgdXNlciBieXRlcyBvdXQgb2YgRUNDIGFyZWEsIGJ1 dCBhdCB0aGUgc2FtZQo+PiB0aW1lIEkgYWxzbyBpbmNyZWFzZWQgc2l6ZSBvZiBPT0IgZnJvbSA0 IGJ5dGVzIChlLmcuIDIgeCAyIGJ5dGVzIGNsZWFuIG1hcmtlcnMpCj4+IHRvIDMyIGJ5dGVzIChl LmcuIHRhaWwgb2YgcGFnZSBhZnRlciBkYXRhIGFuZCBFQ0MgY29kZXMpLCBzbyBpZiB0aGlzCj4+ IGFzc3VtcHRpb24gaXMgY29ycmVjdCwgaW4gdGhlIG5leHQgdmVyc2lvbiBJIHdvbid0IGNoYW5n ZSBzaXplIG9mIHVzZXIgYXJlYSBpbgo+PiBPT0IsIHRodXMgdGhpcyBwYXRjaCB3aWxsIGJlIHJl ZHVjZWQgYXMgc29tZSBjb21tZW50cyBmcm9tIHRoaXMgcmV2aWV3Lgo+IAo+IEV4cG9zaW5nIG9u bHkgNCBieXRlcyB3YXMgYSBtaXN0YWtlIGluIHRoZSBmaXJzdCBwbGFjZSwgcGxlYXNlIGZpeCB0 aGlzCj4gaW4gYSBkZWRpY2F0ZWQgcGF0Y2guCgpTbyBjdXJyZW50IChub3QgbWVyZ2VkKSB2ZXJz aW9uIGV4cG9zZXMgYnl0ZXMgMCwxLDE2LDE3IG9mIE9PQiwgWW91IG1lYW4gdGhpcyBpcyB3cm9u Zz8KQ29ycmVjdCB3YXkgaXMgdG8gZXhwb3NlIDMyLDMzLDQ4LDQ5IChlLmcuIHNoaWZ0ZWQgYnkg MzIpPwoKVGhhbmtzLCBBcnNlbml5Cgo+IAo+Pj4+IG1ha2UgSkZGUzIgd29ya3MgY29ycmVjdGx5 IHdpdGggdGhpcyBOQU5EIGNvbnRyb2xsZXIuIFByb2JsZW0gZmlyZXMgd2hlbgo+Pj4+IEpGRlMy IGRyaXZlciB3cml0ZXMgY2xlYW5tYXJrZXIgdG8gc29tZSBwYWdlIGFuZCBsYXRlciBpdCB0cmll cyB0byB3cml0ZQo+Pj4+IHRvIHRoaXMgcGFnZSAtIHdyaXRlIHdpbGwgYmUgZG9uZSBzdWNjZXNz ZnVsbHksIGJ1dCBhZnRlciB0aGF0IHN1Y2ggcGFnZQo+Pj4+IGJlY29tZXMgdW5yZWFkYWJsZSBk dWUgdG8gaW52YWxpZCBFQ0MgY29kZXMuIFRoaXMgaGFwcGVucyBiZWNhdXNlIHNlY29uZAo+Pj4+ IHdyaXRlIG5lZWRzIHRvIHVwZGF0ZSBFQ0MgY29kZXMsIGJ1dCBpdCBpcyBpbXBvc3NpYmxlIHRv IGRvIGl0IGNvcnJlY3RseQo+Pj4+IHdpdGhvdXQgYmxvY2sgZXJhc2UuIFNvIGlkZWEgb2YgdGhp cyBwYXRjaCBpcyB0byB1c2UgdGhlIHVucHJvdGVjdGVkIE9PQgo+Pj4+IGFyZWEgdG8gc3RvcmUg dGhlIGNsZWFubWFya2Vycywgc28gdGhhdCB0aGV5IGNhbiBiZSB3cml0dGVuIGJ5IHRoZQo+Pj4+ IGZpbGVzeXN0ZW0gd2l0aG91dCBjYXJpbmcgbXVjaCBhYm91dCB0aGUgcGFnZSBiZWluZyBlbXB0 eSBvciBub3Q6IHRoZQo+Pj4+IEVDQyBjb2RlcyB3aWxsIG5vdCBiZSB3cml0dGVuIGFueXdheS4K Pj4+Pgo+Pj4+IEpGRlMyIGlzIG9ubHkgdXNlZnVsIG9uIHRpbnkgTkFORCBkZXZpY2VzLCB3aGVy ZSBVQkkgZG9lcyBub3QgZml0LCB3aGljaAo+Pj4+IGFyZSB1c3VhbGx5IHRydWUgU0xDIGZsYXNo ZXMsIHdpdGggdGhlIGNhcGFiaWxpdHkgb2Ygd3JpdGluZyBhIHBhZ2Ugd2l0aAo+Pj4+IGVtcHR5 ICgweEZGKSBkYXRhLCBhbmQgc3RpbGwgYmUgYWJsZSB0byB3cml0ZSBhY3R1YWwgZGF0YSB0byBp dCBsYXRlciBpbgo+Pj4+IGEgc2Vjb25kIHdyaXRlLgo+Pj4+Cj4+Pj4gU2lnbmVkLW9mZi1ieTog QXJzZW5peSBLcmFzbm92IDxBVktyYXNub3ZAc2JlcmRldmljZXMucnU+Cj4+Pj4gLS0tCj4+Pj4g IENoYW5nZWxvZyB2NC0+djU6Cj4+Pj4gICogRHJvcCBjb3NtZXRpYyBjaGFuZ2VzIGZyb20gdGhp cyBwYXRjaC4KPj4+PiAgKiBEbyBub3QgaWdub3JlIEVDQyBwcm90ZWN0ZWQgdXNlciBieXRlcyBw cm92aWRlZCBieSBody4gRXZlbiB0aGVzZQo+Pj4+ICAgIGJ5dGVzIGFyZSBvdXQgb2YgdXNlciBh cmVhIG9mIE9PQiwgaXRzIHZhbHVlcyBhcmUgc3RpbGwgcmVhZCBmcm9tCj4+Pj4gICAgdGhlIHBy b3ZpZGVkIE9PQiBidWZmZXIgYW5kIHdyaXR0ZW4gYnkgaGFyZHdhcmUuIFNhbWUgYmVoYXZpb3Vy IGlzCj4+Pj4gICAgcHJlc2VydmVkIGZvciByZWFkIGFjY2VzcyAtIHN1Y2ggYnl0ZXMgYXJlIHJl YWQgZnJvbSBETUEgYnVmZmVyIGFuZAo+Pj4+ICAgIHBsYWNlZCB0byBPT0IgYnVmZmVyLgo+Pj4+ ICAqIE9PQiByZWFkIGFuZCB3cml0ZSBiZWNvbWUgbW9yZSBsaWdodHdlaWdodCBiZWNhdXNlIEkg cmVtb3ZlZCBoZWF2eQo+Pj4+ICAgIFJFQUQwIGFuZCBQQUdFUFJPRyBjb21tYW5kIGZyb20gaXQg KGJvdGggY29tbWFuZHMgYXJlIHN0aWxsIHNlbnQKPj4+PiAgICB3aGVuIE9PQiBhY2Nlc3MgaXMg cGVyZm9ybWVkIHVzaW5nIE9PQiBjYWxsYmFja3MpLiBJbiBjYXNlIG9mIHBhZ2UKPj4+PiAgICBy ZWFkL3dyaXRlIE9PQiBkYXRhIGlzIGhhbmRsZWQgaW4gdGhlIGludGVybmFsIFNSQU0gb2YgdGhl IGNvbnRyb2xsZXIuCj4+Pj4gICogQ29tbWl0IG1lc3NhZ2UgdXBkYXRlZC4KPj4+PiAgKiBUZW1w b3JhcnkgYnVmZmVyIGZvciBPT0IgcmVhZC93cml0ZSBpcyByZW1vdmVkLiBTZWVtcyBldmVyeXRo aW5nCj4+Pj4gICAgd29ya3MgY29ycmVjdGx5IHdpdGhvdXQgaXQuCj4+Pj4KPj4+PiAgZHJpdmVy cy9tdGQvbmFuZC9yYXcvbWVzb25fbmFuZC5jIHwgMTM0ICsrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLQo+Pj4+ICAxIGZpbGUgY2hhbmdlZCwgMTE3IGluc2VydGlvbnMoKyksIDE3IGRlbGV0 aW9ucygtKQo+Pj4+Cj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvcmF3L21lc29u X25hbmQuYyBiL2RyaXZlcnMvbXRkL25hbmQvcmF3L21lc29uX25hbmQuYwo+Pj4+IGluZGV4IDgy YTYyOTAyNWFkYy4uZTQyYzI4YmUwMmYzIDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvbXRkL25h bmQvcmF3L21lc29uX25hbmQuYwo+Pj4+ICsrKyBiL2RyaXZlcnMvbXRkL25hbmQvcmF3L21lc29u X25hbmQuYwo+Pj4+IEBAIC0zNTgsOCArMzU4LDExIEBAIHN0YXRpYyB1OCAqbWVzb25fbmZjX2Rh dGFfcHRyKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsIGludCBpKQo+Pj4+ICBzdGF0aWMgdm9pZCBt ZXNvbl9uZmNfZ2V0X2RhdGFfb29iKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsCj4+Pj4gIAkJCQkg ICB1OCAqYnVmLCB1OCAqb29iYnVmKQo+Pj4+ICB7Cj4+Pj4gKwlzdHJ1Y3QgbWVzb25fbmZjX25h bmRfY2hpcCAqbWVzb25fY2hpcCA9IHRvX21lc29uX25hbmQobmFuZCk7Cj4+Pj4gKwlzdHJ1Y3Qg bXRkX2luZm8gKm10ZCA9IG5hbmRfdG9fbXRkKG5hbmQpOwo+Pj4+ICAJaW50IGksIG9vYl9sZW4g PSAwOwo+Pj4+ICAJdTggKmRzcmMsICpvc3JjOwo+Pj4+ICsJdTggKm9vYnRhaWw7Cj4+Pj4gIAo+ Pj4+ICAJb29iX2xlbiA9IG5hbmQtPmVjYy5ieXRlcyArIDI7Cj4+Pj4gIAlmb3IgKGkgPSAwOyBp IDwgbmFuZC0+ZWNjLnN0ZXBzOyBpKyspIHsKPj4+PiBAQCAtMzY4LDE3ICszNzEsMjcgQEAgc3Rh dGljIHZvaWQgbWVzb25fbmZjX2dldF9kYXRhX29vYihzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLAo+ Pj4+ICAJCQltZW1jcHkoYnVmLCBkc3JjLCBuYW5kLT5lY2Muc2l6ZSk7Cj4+Pj4gIAkJCWJ1ZiAr PSBuYW5kLT5lY2Muc2l6ZTsKPj4+PiAgCQl9Cj4+Pj4gKwo+Pj4+ICAJCW9zcmMgPSBtZXNvbl9u ZmNfb29iX3B0cihuYW5kLCBpKTsKPj4+PiAgCQltZW1jcHkob29iYnVmLCBvc3JjLCBvb2JfbGVu KTsKPj4+PiAgCQlvb2JidWYgKz0gb29iX2xlbjsKPj4+PiAgCX0KPj4+PiArCj4+Pj4gKwlvb2J0 YWlsID0gbWVzb25fY2hpcC0+ZGF0YV9idWYgKyBuYW5kLT5lY2Muc3RlcHMgKgo+Pj4+ICsJCSAg KG5hbmQtPmVjYy5zaXplICsgb29iX2xlbik7Cj4+Pj4gKwo+Pj4+ICsJLyogJ29vYmJ1ZicgcG9p bnRzIHRvIHRoZSBzdGFydCBvZiB1c2VyIGFyZWEuICovCj4+Pj4gKwltZW1jcHkob29iYnVmLCBv b2J0YWlsLCBtdGQtPm9vYnNpemUgLSBuYW5kLT5lY2Muc3RlcHMgKiBvb2JfbGVuKTsKPj4+PiAg fQo+Pj4+ICAKPj4+PiAgc3RhdGljIHZvaWQgbWVzb25fbmZjX3NldF9kYXRhX29vYihzdHJ1Y3Qg bmFuZF9jaGlwICpuYW5kLAo+Pj4+ICAJCQkJICAgY29uc3QgdTggKmJ1ZiwgdTggKm9vYmJ1ZikK Pj4+PiAgewo+Pj4+ICsJc3RydWN0IG1lc29uX25mY19uYW5kX2NoaXAgKm1lc29uX2NoaXAgPSB0 b19tZXNvbl9uYW5kKG5hbmQpOwo+Pj4+ICsJc3RydWN0IG10ZF9pbmZvICptdGQgPSBuYW5kX3Rv X210ZChuYW5kKTsKPj4+PiAgCWludCBpLCBvb2JfbGVuID0gMDsKPj4+PiAgCXU4ICpkc3JjLCAq b3NyYzsKPj4+PiArCXU4ICpvb2J0YWlsOwo+Pj4+ICAKPj4+PiAgCW9vYl9sZW4gPSBuYW5kLT5l Y2MuYnl0ZXMgKyAyOwo+Pj4+ICAJZm9yIChpID0gMDsgaSA8IG5hbmQtPmVjYy5zdGVwczsgaSsr KSB7Cj4+Pj4gQEAgLTM5MSw2ICs0MDQsMTIgQEAgc3RhdGljIHZvaWQgbWVzb25fbmZjX3NldF9k YXRhX29vYihzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLAo+Pj4+ICAJCW1lbWNweShvc3JjLCBvb2Ji dWYsIG9vYl9sZW4pOwo+Pj4+ICAJCW9vYmJ1ZiArPSBvb2JfbGVuOwo+Pj4+ICAJfQo+Pj4+ICsK Pj4+PiArCW9vYnRhaWwgPSBtZXNvbl9jaGlwLT5kYXRhX2J1ZiArIG5hbmQtPmVjYy5zdGVwcyAq Cj4+Pj4gKwkJICAobmFuZC0+ZWNjLnNpemUgKyBvb2JfbGVuKTsgIAo+Pj4KPj4+IFRoaXMgaXMg YWx3YXlzIHRhcmdldGluZyB0aGUgc2FtZSBhcmVhLCBzbyBpdCBsb29rcyBzdHJhbmdlIHRvIG1l Lgo+Pj4gICAKPj4+PiArCj4+Pj4gKwkvKiAnb29iYnVmJyBwb2ludHMgdG8gdGhlIHN0YXJ0IG9m IHVzZXIgYXJlYS4gKi8KPj4+PiArCW1lbWNweShvb2J0YWlsLCBvb2JidWYsIG10ZC0+b29ic2l6 ZSAtIG5hbmQtPmVjYy5zdGVwcyAqIG9vYl9sZW4pOyAgCj4+Pgo+Pj4gVEJIIEkgZG9uJ3QgZ2V0 IHdoYXQgeW91IGRvIGhlcmUuICAKPj4KPj4gVGhpcyBjb2RlIHdvcmtzIGluIHJhdyBtb2RlIGFu ZCBwbGFjZXMgT09CIGRhdGEgZnJvbSBwcm92aWRlZCBPT0IgYnVmZmVyIHRvIERNQSBidWZmZXIu Cj4+IFRoaXMgaXMgYmVjYXVzZSBudW1iZXIgb2YgdXNlciBieXRlcyBpcyBpbmNyZWFzZWQgaW4g dGhpcyBwYXRjaC4KPj4KPj4+ICAgCj4+Pj4gIH0KPj4+PiAgCj4+Pj4gIHN0YXRpYyBpbnQgbWVz b25fbmZjX3F1ZXVlX3JiKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsIGludCB0aW1lb3V0X21zKQo+ Pj4+IEBAIC00MzMsNyArNDUyLDcgQEAgc3RhdGljIHZvaWQgbWVzb25fbmZjX3NldF91c2VyX2J5 dGUoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwgdTggKm9vYl9idWYpCj4+Pj4gIAlfX2xlNjQgKmlu Zm87Cj4+Pj4gIAlpbnQgaSwgY291bnQ7Cj4+Pj4gIAo+Pj4+IC0JZm9yIChpID0gMCwgY291bnQg PSAwOyBpIDwgbmFuZC0+ZWNjLnN0ZXBzOyBpKyssIGNvdW50ICs9IDIpIHsKPj4+PiArCWZvciAo aSA9IDAsIGNvdW50ID0gMDsgaSA8IG5hbmQtPmVjYy5zdGVwczsgaSsrLCBjb3VudCArPSAobmFu ZC0+ZWNjLmJ5dGVzICsgMikpIHsKPj4+PiAgCQlpbmZvID0gJm1lc29uX2NoaXAtPmluZm9fYnVm W2ldOwo+Pj4+ICAJCSppbmZvIHw9IG9vYl9idWZbY291bnRdOwo+Pj4+ICAJCSppbmZvIHw9IG9v Yl9idWZbY291bnQgKyAxXSA8PCA4Owo+Pj4+IEBAIC00NDYsNyArNDY1LDcgQEAgc3RhdGljIHZv aWQgbWVzb25fbmZjX2dldF91c2VyX2J5dGUoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwgdTggKm9v Yl9idWYpCj4+Pj4gIAlfX2xlNjQgKmluZm87Cj4+Pj4gIAlpbnQgaSwgY291bnQ7Cj4+Pj4gIAo+ Pj4+IC0JZm9yIChpID0gMCwgY291bnQgPSAwOyBpIDwgbmFuZC0+ZWNjLnN0ZXBzOyBpKyssIGNv dW50ICs9IDIpIHsKPj4+PiArCWZvciAoaSA9IDAsIGNvdW50ID0gMDsgaSA8IG5hbmQtPmVjYy5z dGVwczsgaSsrLCBjb3VudCArPSAobmFuZC0+ZWNjLmJ5dGVzICsgMikpIHsKPj4+PiAgCQlpbmZv ID0gJm1lc29uX2NoaXAtPmluZm9fYnVmW2ldOwo+Pj4+ICAJCW9vYl9idWZbY291bnRdID0gKmlu Zm87Cj4+Pj4gIAkJb29iX2J1Zltjb3VudCArIDFdID0gKmluZm8gPj4gODsKPj4+PiBAQCAtNjM4 LDYgKzY1Nyw4NCBAQCBzdGF0aWMgaW50IG1lc29uX25mY19yd19jbWRfcHJlcGFyZV9hbmRfZXhl Y3V0ZShzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLAo+Pj4+ICAJcmV0dXJuIDA7Cj4+Pj4gIH0KPj4+ PiAgCj4+Pj4gK3N0YXRpYyB1MzIgbWVzb25fbmZjX29vYl9mcmVlX2J5dGVzKHN0cnVjdCBuYW5k X2NoaXAgKm5hbmQpCj4+Pj4gK3sKPj4+PiArCXN0cnVjdCBtdGRfaW5mbyAqbXRkID0gbmFuZF90 b19tdGQobmFuZCk7Cj4+Pj4gKwo+Pj4+ICsJcmV0dXJuIG10ZC0+b29ic2l6ZSAtIG5hbmQtPmVj Yy5zdGVwcyAqIChuYW5kLT5lY2MuYnl0ZXMgKyAyKTsgIAo+Pj4KPj4+IFRoaXMgbG9va3MgbGlr ZSBhIHN0YXRpYyB2YWx1ZSwganVzdCBzYXZlIGl0IHNvbWV3aGVyZSBpbnN0ZWFkIG9mCj4+PiBy ZWNvbXB1dGluZyBpdD8gIAo+Pgo+PiBBY2sKPj4KPj4+ICAgCj4+Pj4gK30KPj4+PiArCj4+Pj4g K3N0YXRpYyBpbnQgbWVzb25fbmZjX3dyaXRlX29vYihzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLCBp bnQgcGFnZSkKPj4+PiArewo+Pj4+ICsJc3RydWN0IG10ZF9pbmZvICptdGQgPSBuYW5kX3RvX210 ZChuYW5kKTsKPj4+PiArCXUzMiBwYWdlX3NpemUgPSBtdGQtPndyaXRlc2l6ZSArIG10ZC0+b29i c2l6ZTsKPj4+PiArCXUzMiBvb2JfYnl0ZXMgPSBtZXNvbl9uZmNfb29iX2ZyZWVfYnl0ZXMobmFu ZCk7Cj4+Pj4gKwl1OCAqb29iX2J1ZjsKPj4+PiArCWludCByZXQ7Cj4+Pj4gKwo+Pj4+ICsJaWYg KCFvb2JfYnl0ZXMpCj4+Pj4gKwkJcmV0dXJuIDA7ICAKPj4+Cj4+PiBDYW4gdGhpcyBoYXBwZW4/ ICAKPj4KPj4gQWNrLCBzZWVtcyBmb3JnZXQgdG8gcmVtb3ZlIGl0Cj4+Cj4+PiAgIAo+Pj4+ICsK Pj4+PiArCS8qIENhbGxlZCBhcyBPT0Igd3JpdGUgaGVscGVyLCB3aWxsIHNlbmQgTkFORF9DTURf UEFHRVBST0cuICovCj4+Pj4gKwlpZiAocGFnZSAhPSAtMSkgewo+Pj4+ICsJCXJldCA9IG5hbmRf cHJvZ19wYWdlX2JlZ2luX29wKG5hbmQsIHBhZ2UsIDAsIE5VTEwsIDApOwo+Pj4+ICsJCWlmIChy ZXQpCj4+Pj4gKwkJCXJldHVybiByZXQ7Cj4+Pj4gKwl9Cj4+Pj4gKwo+Pj4+ICsJb29iX2J1ZiA9 IG5hbmQtPm9vYl9wb2k7Cj4+Pj4gKwo+Pj4+ICsJcmV0ID0gbmFuZF9jaGFuZ2Vfd3JpdGVfY29s dW1uX29wKG5hbmQsIHBhZ2Vfc2l6ZSAtIG9vYl9ieXRlcywKPj4+PiArCQkJCQkgIG9vYl9idWYg KyAobXRkLT5vb2JzaXplIC0gb29iX2J5dGVzKSwKPj4+PiArCQkJCQkgIG9vYl9ieXRlcywgZmFs c2UpOwo+Pj4+ICsJaWYgKHJldCkKPj4+PiArCQlyZXR1cm4gcmV0Owo+Pj4+ICsKPj4+PiArCXJl dHVybiAocGFnZSAhPSAtMSkgPyBuYW5kX3Byb2dfcGFnZV9lbmRfb3AobmFuZCkgOiAwOwo+Pj4+ ICt9Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgaW50IG1lc29uX25mY19yZWFkX29vYihzdHJ1Y3QgbmFu ZF9jaGlwICpuYW5kLCBpbnQgcGFnZSkKPj4+PiArewo+Pj4+ICsJc3RydWN0IG10ZF9pbmZvICpt dGQgPSBuYW5kX3RvX210ZChuYW5kKTsKPj4+PiArCXU4ICpvb2JfYnVmID0gbmFuZC0+b29iX3Bv aTsKPj4+PiArCXUzMiBvb2JfYnl0ZXM7Cj4+Pj4gKwl1MzIgcGFnZV9zaXplOwo+Pj4+ICsJaW50 IHJldDsKPj4+PiArCWludCBpOwo+Pj4+ICsKPj4+PiArCS8qIENhbGxlZCBhcyBPT0IgcmVhZCBo ZWxwZXIsIHNlbmQgTkFORF9DTURfUkVBRDAuICovCj4+Pj4gKwlpZiAocGFnZSAhPSAtMSkgeyAg Cj4+Pgo+Pj4gSSBkb24ndCBsaWtlIHRoaXMgbG9naWMgd2l0aCB0aGUgIi0xIiwgaXQgcmVhbGx5 IGhpZGVzIHdoYXQgdGhlCj4+PiBjb250cm9sbGVyIG5lZWRzIHRvIGRvLCBpZiB5b3UgbmVlZCBh IGhlbHBlciB0byBzZW5kIGEgY29tbWFuZCwgdGhlbgo+Pj4gY3JlYXRlIHRoYXQgaGVscGVyIGFu ZCBnaXZlIGl0IGEgZGVjZW50IG5hbWUuICAKPj4KPj4gSSBzZWUsIHNvIEkgdGhpbmsgSSBuZWVk IHRvIGltcGxlbWVudCB0aGlzIGluIHRoZSBmb2xsb3dpbmcgd2F5Ogo+PiAxKSBGb3IgT09CIGNh bGxiYWNrIGl0IGFsd2F5cyBzZW5kcyBOQU5EX0NNRF9SRUFEMCAoZS5nLiB3aXRob3V0IGFueSAn aWYnKQo+PiAyKSBGb3IgcmVhZCBPT0Igd2l0aCBkYXRhIHBhZ2Ugd2UgZG9uJ3QgbmVlZCB0byBz ZW5kIE5BTkRfQ01EX1JFQUQwLiAoYWxzbyB3aXRob3V0IGFueSAnaWYnKQo+Pgo+Pj4gICAKPj4+ PiArCQlyZXQgPSBuYW5kX3JlYWRfcGFnZV9vcChuYW5kLCBwYWdlLCAwLCBOVUxMLCAwKTsKPj4+ PiArCQlpZiAocmV0KQo+Pj4+ICsJCQlyZXR1cm4gcmV0Owo+Pj4+ICsJfQo+Pj4+ICsKPj4+PiAr CS8qIFJlYWQgRUNDIGNvZGVzIGFuZCB1c2VyIGJ5dGVzLiAqLwo+Pj4+ICsJZm9yIChpID0gMDsg aSA8IG5hbmQtPmVjYy5zdGVwczsgaSsrKSB7Cj4+Pj4gKwkJdTMyIGVjY19vZmZzID0gbmFuZC0+ ZWNjLnNpemUgKiAoaSArIDEpICsKPj4+PiArCQkJICAgICAgIChuYW5kLT5lY2MuYnl0ZXMgKyAy KSAqIGk7Cj4+Pj4gKwo+Pj4+ICsJCXJldCA9IG5hbmRfY2hhbmdlX3JlYWRfY29sdW1uX29wKG5h bmQsIGVjY19vZmZzLAo+Pj4+ICsJCQkJCQkgb29iX2J1ZiArIGkgKiAobmFuZC0+ZWNjLmJ5dGVz ICsgMiksCj4+Pj4gKwkJCQkJCSAobmFuZC0+ZWNjLmJ5dGVzICsgMiksIGZhbHNlKTsKPj4+PiAr CQlpZiAocmV0KQo+Pj4+ICsJCQlyZXR1cm4gcmV0Owo+Pj4+ICsJfQo+Pj4+ICsKPj4+PiArCW9v Yl9ieXRlcyA9IG1lc29uX25mY19vb2JfZnJlZV9ieXRlcyhuYW5kKTsKPj4+PiArCj4+Pj4gKwlp ZiAoIW9vYl9ieXRlcykKPj4+PiArCQlyZXR1cm4gMDsKPj4+PiArCj4+Pj4gKwlwYWdlX3NpemUg PSBtdGQtPndyaXRlc2l6ZSArIG10ZC0+b29ic2l6ZTsKPj4+PiArCj4+Pj4gKwlyZXQgPSBuYW5k X2NoYW5nZV9yZWFkX2NvbHVtbl9vcChuYW5kLCBwYWdlX3NpemUgLSBvb2JfYnl0ZXMsCj4+Pj4g KwkJCQkJIG9vYl9idWYgKyAobXRkLT5vb2JzaXplIC0gb29iX2J5dGVzKSwKPj4+PiArCQkJCQkg b29iX2J5dGVzLCBmYWxzZSk7Cj4+Pj4gKwo+Pj4+ICsJcmV0dXJuIHJldDsKPj4+PiArfQo+Pj4+ ICsKPj4+PiAgc3RhdGljIGludCBtZXNvbl9uZmNfd3JpdGVfcGFnZV9zdWIoc3RydWN0IG5hbmRf Y2hpcCAqbmFuZCwKPj4+PiAgCQkJCSAgICBpbnQgcGFnZSwgaW50IHJhdykKPj4+PiAgewo+Pj4+ IEBAIC02NzQsNiArNzcxLDEyIEBAIHN0YXRpYyBpbnQgbWVzb25fbmZjX3dyaXRlX3BhZ2Vfc3Vi KHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsCj4+Pj4gIAkJCQkgICAgIE5GQ19DTURfU0NSQU1CTEVS X0RJU0FCTEUpOwo+Pj4+ICAJfQo+Pj4+ICAKPj4+PiArCWlmICghcmF3KSB7ICAKPj4+Cj4+PiBX aHkgdGhpcyBjaGVjaz8KPj4+Cj4+PiBZb3Ugc2hvdWxkIGluc3RlYWQgcHJvcGFnYXRlIHRoZSBv b2JfcmVxdWlyZWQgZmllbGQgYW5kIGNoZWNrIHRoYXQKPj4+IHZhbHVlIEkgYmVsaWV2ZS4gIAo+ Pgo+Pgo+PiBUaGlzIGNoZWNrIGlzIGZvciBFQ0MgbW9kZSwgYmVjYXVzZSBpbiB0aGlzIG1vZGUg d2Ugd3JpdGUgdXNlciBieXRlcyBvZiBPT0IuCj4+IEVDQyBieXRlcyBvZiBPT0IgYXJlIHdyaXR0 ZW4gYnkgaGFyZHdhcmUuCj4gCj4gSnVzdCBwcm92aWRlIHRoZSBidWZmZXIuIFRoZSBFQ0MgZW5n aW5lIHdpbGwgc21hc2ggZGF0YSBpZiB0aGVyZSB3YXMKPiBhbnkgdGhlcmUuIE90aGVyd2lzZSBp dCB3aWxsIGZpbGwgdGhlIGhvbGVzLiBJdCdzIGV4cGVjdGVkLiBEb24ndCB0cnkKPiB0byBiZSBz bWFydGVyIHRoYW4geW91IHNob3VsZCA6KQo+IAo+PiBJIHRoaW5rIEkgbWFkZSBhIG1pc3Rha2Us IGJlY2F1c2UKPj4gSSBuZWVkIG5ldyBjYWxsYmFjayB0byB3cml0ZSBPT0IgaW4gcmF3IG1vZGUg LSBpdCB3aWxsIHdyaXRlIGJvdGggRUNDIGFuZCB1c2VyCj4+IHBhcnRzLAo+IAo+IFRoZXJlIGlz IG5vIHN1Y2ggdGhpbmcgYXMgdXNlciBhbmQgRUNDIHBhcnQgYXQgdGhlIGRyaXZlciBsZXZlbC4g WW91Cj4gZ2V0IGEgYnVmZmVyLCB5b3UgbmVlZCB0byB3cml0ZSBpdCB0byB0aGUgZmxhc2guCj4g Cj4gVGhlIHVzZXIgZXhwZWN0czoKPiAKPiB8IGRhdGEgfCBPT0IgfAo+IAo+IFRoZSBjb250cm9s bGVyIGV4cGVjdHMgc29tZXRoaW5nIGxpa2U6Cj4gCj4gfCBkYXRhMSB8IE9PQjEgfCBkYXRhMiB8 IE9PQjIgfAo+IAo+IFNvIGp1c3QgcGVyZm9ybSB0aGUgcmVvcmRlcmluZyBiZXR3ZWVuIGRhdGEg YW5kIE9PQiBpbiB0aGUgRE1BIGJ1ZmZlciwKPiB0aGF0IGlzIF9hbGxfLgo+IAo+PiBpbiBjdXJy ZW50IHZlcnNpb24gSSB3cml0ZSBvbmx5IHVzZXIgcGFydCBpbiByYXcgbW9kZS4KPj4KPj4+ICAg Cj4+Pj4gKwkJcmV0ID0gbWVzb25fbmZjX3dyaXRlX29vYihuYW5kLCAtMSk7Cj4+Pj4gKwkJaWYg KHJldCkKPj4+PiArCQkJcmV0dXJuIHJldDsKPj4+PiArCX0KPj4+PiArCj4+Pj4gIAljbWQgPSBu ZmMtPnBhcmFtLmNoaXBfc2VsZWN0IHwgTkZDX0NNRF9DTEUgfCBOQU5EX0NNRF9QQUdFUFJPRzsK Pj4+PiAgCXdyaXRlbChjbWQsIG5mYy0+cmVnX2Jhc2UgKyBORkNfUkVHX0NNRCk7Cj4+Pj4gIAlt ZXNvbl9uZmNfcXVldWVfcmIobmFuZCwgUFNFQ19UT19NU0VDKHNkci0+dFBST0dfbWF4KSk7Cj4+ Pj4gQEAgLTgzNCwxNyArOTM3LDEwIEBAIHN0YXRpYyBpbnQgbWVzb25fbmZjX3JlYWRfcGFnZV9o d2VjYyhzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLCB1OCAqYnVmLAo+Pj4+ICAJCW1lbWNweShidWYs IG1lc29uX2NoaXAtPmRhdGFfYnVmLCBtdGQtPndyaXRlc2l6ZSk7Cj4+Pj4gIAl9Cj4+Pj4gIAo+ Pj4+IC0JcmV0dXJuIGJpdGZsaXBzOwo+Pj4+IC19Cj4+Pj4gLQo+Pj4+IC1zdGF0aWMgaW50IG1l c29uX25mY19yZWFkX29vYl9yYXcoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwgaW50IHBhZ2UpCj4+ Pj4gLXsKPj4+PiAtCXJldHVybiBtZXNvbl9uZmNfcmVhZF9wYWdlX3JhdyhuYW5kLCBOVUxMLCAx LCBwYWdlKTsKPj4+PiAtfQo+Pj4+ICsJaWYgKG9vYl9yZXF1aXJlZCAmJiByZXQpICAKPj4+Cj4+ PiBVbmNsZWFyIHdoeSB5b3UgY2hlY2sgcmV0IGhlcmU/Cj4gCj4gSW4gZ2VuZXJhbCwgaWYgKHJl dCkgbWVhbnMgdGhlcmUgaXMgYW4gZXJyb3IuCj4gCj4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nOgo+ IAo+IGlmIChyZXQpCj4gCWdvdG8gZXJyb3IgcGF0aDsKPiAKPiBkbyBzb21ldGhpbmcgZWxzZTsK PiAKPj4+ICAgCj4+Cj4+IElmIHJlYWQgd2FzIHN1Y2Nlc3NmdWwsIHdlIHJlYWQgT09CLiBJZiBu b3QgLSB0aGVyZSBpcyBubyBzZW5zZSBpbiBpdC4KPj4KPj4+PiArCQltZXNvbl9uZmNfcmVhZF9v b2IobmFuZCwgLTEpOwo+Pj4+ICAKPj4+PiAtc3RhdGljIGludCBtZXNvbl9uZmNfcmVhZF9vb2Io c3RydWN0IG5hbmRfY2hpcCAqbmFuZCwgaW50IHBhZ2UpCj4+Pj4gLXsKPj4+PiAtCXJldHVybiBt ZXNvbl9uZmNfcmVhZF9wYWdlX2h3ZWNjKG5hbmQsIE5VTEwsIDEsIHBhZ2UpOwo+Pj4+ICsJcmV0 dXJuIGJpdGZsaXBzOwo+Pj4+ICB9Cj4+Pj4gIAo+Pj4+ICBzdGF0aWMgYm9vbCBtZXNvbl9uZmNf aXNfYnVmZmVyX2RtYV9zYWZlKGNvbnN0IHZvaWQgKmJ1ZmZlcikKPj4+PiBAQCAtOTg3LDEyICsx MDgzLDE2IEBAIHN0YXRpYyBpbnQgbWVzb25fb29ibGF5b3V0X2ZyZWUoc3RydWN0IG10ZF9pbmZv ICptdGQsIGludCBzZWN0aW9uLAo+Pj4+ICAJCQkJc3RydWN0IG10ZF9vb2JfcmVnaW9uICpvb2Jy ZWdpb24pCj4+Pj4gIHsKPj4+PiAgCXN0cnVjdCBuYW5kX2NoaXAgKm5hbmQgPSBtdGRfdG9fbmFu ZChtdGQpOwo+Pj4+ICsJdTMyIG9vYl9ieXRlcyA9IG1lc29uX25mY19vb2JfZnJlZV9ieXRlcyhu YW5kKTsKPj4+PiAgCj4+Pj4gIAlpZiAoc2VjdGlvbiA+PSBuYW5kLT5lY2Muc3RlcHMpCj4+Pj4g IAkJcmV0dXJuIC1FUkFOR0U7Cj4+Pj4gIAo+Pj4+IC0Jb29icmVnaW9uLT5vZmZzZXQgPSBzZWN0 aW9uICogKDIgKyBuYW5kLT5lY2MuYnl0ZXMpOyAgCj4+Pgo+Pj4gVGhlIGZpcnN0IHR3byBieXRl cyBvZiBPT0IgYXJlIHJlc2VydmVkIGZvciB0aGUgYmFkIGJsb2NrIG1hcmtlcnMuIFRoaXMKPj4+ IGlzIG5vdCByZWxhdGVkIHRvIHlvdXIgY29udHJvbGxlci4gIAo+Pgo+PiBJIHRoaW5rIGZpcnN0 IHR3byBieXRlcyAoaW4gZmFjdCB0aGVyZSBhcmUgNCBieXRlcyBhdCBwb3NpdGlvbnMgMCwgMSwg MTYgYW5kIDE3KQo+PiBpcyBjb25zaWRlcmVkIGJ5IGhhcmR3YXJlIGFzIHVzZXIgYnl0ZXMgY292 ZXJlZCBieSBFQ0MuCj4gCj4gVGhlIHR3byBmaXJzdCBieXRlcyBzaG91bGQgbm90IGJlIGF2YWls YWJsZS4gVGhleSBhcmUgbm90ICJFQ0MiIGJ5dGVzLAo+IHRoZXkgYXJlIG5vdCAiZnJlZSIgYnl0 ZXMuIE5vbmUgb2YgdGhlc2UgdHdvIGNhbGxiYWNrcyBzaG91bGQgZ2l2ZQo+IGFjY2VzcyB0byB0 aGVzZSB0d28gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGJhZCBibG9jayBtYXJrZXJzLgo+IAo+IEp1c3Qg dG8gYmUgY2xlYXI6ICJFQ0MgYnl0ZXMiIGFzIGluICJtZXNvbl9vb2JsYXlvdXRfZWNjIiBkbyAq bm90KiBtZWFuCj4gInRoZXNlIGFyZSB0aGUgcHJvdGVjdGVkIGJ5dGVzIi4gVGhleSBtZWFuICJ0 aGVzZSBhcmUgdGhlIGJ5dGVzIGluIE9PQgo+IHRoZSBoYXJkd2FyZSBFQ0MgZW5naW5lIHdpbGwg dXNlIHRvIHBsYWNlIGl0cyBvd24gZGF0YSB0byBtYWtlIHRoZQo+IHJlY292ZXJ5IHByb2Nlc3Mg d29yayIuCj4gCj4gVGhhbmtzLAo+IE1pcXXDqGwKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFtbG9naWMgbWFpbGluZyBsaXN0CmxpbnV4LWFt bG9naWNAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWls bWFuL2xpc3RpbmZvL2xpbnV4LWFtbG9naWMK