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 A37B8C25B48 for ; Wed, 25 Oct 2023 02:43:43 +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-Type: Content-Transfer-Encoding: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=tDxBRsBFK8PM0bjeR+MHlc96EjyHEgnYVEbInDEzMkU=; b=dD1LEx6V3YXIW2 PQCgaEjGdVKqVpleGcKmn4knNiXaZJq1OqmlNzSOdcxveptiWJDeoQ/h3YsU0a6+JzR3ClRqpXit4 7nVG+HVbZtL+TMz41DSnhLJrJaZgOq3BCicWub61OJhUV/LW5VmTtEH426/vKCb6fVjGPO5yXD97I uOjTaD6N6T95n1GuI1fGqBi7vw3yApGmJIm2JcbMiMDH+VFnfvADgNaC2DcEm4aWuLqpWhg07Vkmu uUCt44WGsDLn29bH9860vblmJ4FU/iEWXztDfnWXIWt4atii9UrVTz39zLks/rxOJmxX6DWw3Sm4Z ghkW/M13GfhbG5IU3VhA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qvTrb-00BCgN-1I; Wed, 25 Oct 2023 02:43:19 +0000 Received: from out30-131.freemail.mail.aliyun.com ([115.124.30.131]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qvTrU-00BCfX-2C for linux-arm-kernel@lists.infradead.org; Wed, 25 Oct 2023 02:43:17 +0000 X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R721e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018045176;MF=baolin.wang@linux.alibaba.com;NM=1;PH=DS;RN=10;SR=0;TI=SMTPD_---0Vusq8o5_1698201785; Received: from 30.97.48.63(mailfrom:baolin.wang@linux.alibaba.com fp:SMTPD_---0Vusq8o5_1698201785) by smtp.aliyun-inc.com; Wed, 25 Oct 2023 10:43:06 +0800 Message-ID: Date: Wed, 25 Oct 2023 10:43:21 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Subject: Re: [PATCH] arm64: mm: drop tlb flush operation when clearing the access bit To: Alistair Popple , Barry Song <21cnbao@gmail.com> Cc: catalin.marinas@arm.com, will@kernel.org, akpm@linux-foundation.org, v-songbaohua@oppo.com, yuzhao@google.com, linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org References: <87y1frqz2u.fsf@nvdebian.thelocal> <87ttqfqw8f.fsf@nvdebian.thelocal> From: Baolin Wang In-Reply-To: <87ttqfqw8f.fsf@nvdebian.thelocal> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231024_194313_152832_3C5E70A3 X-CRM114-Status: GOOD ( 42.81 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org CgpPbiAxMC8yNS8yMDIzIDk6NTggQU0sIEFsaXN0YWlyIFBvcHBsZSB3cm90ZToKPiAKPiBCYXJy eSBTb25nIDwyMWNuYmFvQGdtYWlsLmNvbT4gd3JpdGVzOgo+IAo+PiBPbiBXZWQsIE9jdCAyNSwg MjAyMyBhdCA5OjE44oCvQU0gQWxpc3RhaXIgUG9wcGxlIDxhcG9wcGxlQG52aWRpYS5jb20+IHdy b3RlOgo+Pj4KPj4+Cj4+PiBCYXJyeSBTb25nIDwyMWNuYmFvQGdtYWlsLmNvbT4gd3JpdGVzOgo+ Pj4KPj4+PiBPbiBXZWQsIE9jdCAyNSwgMjAyMyBhdCA3OjE24oCvQU0gQmFycnkgU29uZyA8MjFj bmJhb0BnbWFpbC5jb20+IHdyb3RlOgo+Pj4+Pgo+Pj4+PiBPbiBUdWUsIE9jdCAyNCwgMjAyMyBh dCA4OjU34oCvUE0gQmFvbGluIFdhbmcKPj4+Pj4gPGJhb2xpbi53YW5nQGxpbnV4LmFsaWJhYmEu Y29tPiB3cm90ZToKPiAKPiBbLi4uXQo+IAo+Pj4+PiAoQSkuIENvbnN0YW50IGZsdXNoIGNvc3Qg dnMuIChCKS4gdmVyeSB2ZXJ5IG9jY2FzaW9uYWwgcmVjbGFpbWVkIGhvdAo+Pj4+PiBwYWdlLCAg QiBtaWdodAo+Pj4+PiBiZSBhIGNvcnJlY3QgY2hvaWNlLgo+Pj4+Cj4+Pj4gUGx1cywgSSBkb3Vi dCBCIGlzIHJlYWxseSBnb2luZyB0byBoYXBwZW4uIGFzIGFmdGVyIGEgcGFnZSBpcyBwcm9tb3Rl ZCB0bwo+Pj4+IHRoZSBoZWFkIG9mIGxydSBsaXN0IG9yIG5ldyBnZW5lcmF0aW9uLCBpdCBuZWVk cyBhIGxvbmcgdGltZSB0byBzbGlkZSBiYWNrCj4+Pj4gdG8gdGhlIGluYWN0aXZlIGxpc3QgdGFp bCBvciB0byB0aGUgY2FuZGlkYXRlIGdlbmVyYXRpb24gb2YgbWdscnUuIHRoZSB0aW1lCj4+Pj4g c2hvdWxkIGhhdmUgYmVlbiBsYXJnZSBlbm91Z2ggZm9yIHRsYiB0byBiZSBmbHVzaGVkLiBJZiB0 aGUgcGFnZSBpcyByZWFsbHkKPj4+PiBob3QsIHRoZSBoYXJkd2FyZSB3aWxsIGdldCBzZWNvbmQs IHRoaXJkLCBmb3VydGggZXRjIG9wcG9ydHVuaXR5IHRvIHNldCBhbgo+Pj4+IGFjY2VzcyBmbGFn IGluIHRoZSBsb25nIHRpbWUgaW4gd2hpY2ggdGhlIHBhZ2UgaXMgcmUtbW92ZWQgdG8gdGhlIHRh aWwKPj4+PiBhcyB0aGUgcGFnZSBjYW4gYmUgYWNjZXNzZWQgbXVsdGlwbGUgdGltZXMgaWYgaXQg aXMgcmVhbGx5IGhvdC4KPj4+Cj4+PiBUaGlzIG1pZ2h0IG5vdCBiZSB0cnVlIGlmIHlvdSBoYXZl IGV4dGVybmFsIGhhcmR3YXJlIHNoYXJpbmcgdGhlIHBhZ2UKPj4+IHRhYmxlcyB3aXRoIHNvZnR3 YXJlIHRocm91Z2ggZWl0aGVyIEhNTSBvciBoYXJkd2FyZSBzdXBwb3J0ZWQgQVRTCj4+PiB0aG91 Z2guCj4+Pgo+Pj4gSW4gdGhvc2UgY2FzZXMgSSB0aGluayBpdCdzIG11Y2ggbW9yZSBsaWtlbHkg aGFyZHdhcmUgY2FuIHN0aWxsIGJlCj4+PiBhY2Nlc3NpbmcgdGhlIHBhZ2UgZXZlbiBhZnRlciBh IGNvbnRleHQgc3dpdGNoIG9uIHRoZSBDUFUgc2F5LiBTbyB0aG9zZQo+Pj4gcGFnZXMgd2lsbCB0 ZW5kIHRvIGdldCByZWNsYWltZWQgZXZlbiB0aG91Z2ggaGFyZHdhcmUgaXMgc3RpbGwgYWN0aXZl bHkKPj4+IHVzaW5nIHRoZW0gd2hpY2ggd291bGQgYmUgcXVpdGUgZXhwZW5zaXZlIGFuZCBJIGd1 ZXNzIGNvdWxkIGxlYWQgdG8KPj4+IHRocmFzaGluZyBhcyBlYWNoIHBhZ2UgaXMgcmVjbGFpbWVk IGFuZCB0aGVuIGltbWVkaWF0ZWx5IGZhdWx0ZWQgYmFjawo+Pj4gaW4uCgpUaGF0J3MgcG9zc2li bGUsIGJ1dCB0aGUgY2hhbmNlIHNob3VsZCBiZSByZWxhdGl2ZWx5IGxvdy4gQXQgbGVhc3Qgb24g Cng4NiwgSSBoYXZlIG5vdCBoZWFyZCBvZiB0aGlzIGlzc3VlLgoKPj4gaSBhbSBub3QgcXVpdGUg c3VyZSBpIGdvdCB5b3VyIHBvaW50LiBoYXMgdGhlIGV4dGVybmFsIGhhcmR3YXJlIHNoYXJpbmcg Y3B1J3MKPj4gcGFnZXRhYmxlIHRoZSBhYmlsaXR5IHRvIHNldCBhY2Nlc3MgZmxhZyBpbiBwYWdl IHRhYmxlIGVudHJpZXMgYnkKPj4gaXRzZWxmPyBpZiB5ZXMsCj4+IEkgZG9uJ3Qgc2VlIGhvdyBv dXIgYXBwcm9hY2ggd2lsbCBodXJ0IGFzIGZvbGlvX3JlZmVyZW5jZWQgY2FuIG5vdGlmeSB0aGUK Pj4gaGFyZHdhcmUgZHJpdmVyIGFuZCB0aGUgZHJpdmVyIGNhbiBmbHVzaCBpdHMgb3duIHRsYi4g SWYgbm8sIGkgZG9uJ3Qgc2VlCj4+IGVpdGhlciBhcyB0aGUgZXh0ZXJuYWwgaGFyZHdhcmUgY2Fu J3Qgc2V0IGFjY2VzcyBmbGFncywgdGhhdCBtZWFucyB3ZQo+PiBoYXZlIGlnbm9yZWQgaXRzIHJl ZmVyZW5jZSBhbmQgb25seSBrbm93cyBjcHUncyBhY2Nlc3MgZXZlbiBpbiB0aGUgY3VycmVudAo+ PiBtYWlubGluZSBjb2RlLiBzbyB3ZSBhcmUgbm90IGdldHRpbmcgd29yc2UuCj4+Cj4+IHNvIHRo ZSBleHRlcm5hbCBoYXJkd2FyZSBjYW4gYWxzbyBzZWUgY3B1J3MgVExCPyBvciBjcHUncyB0bGIg Zmx1c2ggY2FuCj4+IGFsc28gYnJvYWRjYXN0IHRvIGV4dGVybmFsIGhhcmR3YXJlLCB0aGVuIGV4 dGVybmFsIGhhcmR3YXJlIHNlZXMgdGhlCj4+IGNsZWFyZWQgYWNjZXNzIGZsYWcsIHRodXMsIGl0 IGNhbiBzZXQgYWNjZXNzIGZsYWcgaW4gcGFnZSB0YWJsZSB3aGVuIHRoZQo+PiBoYXJkd2FyZSBh Y2Nlc3MgaXQ/ICBJZiB0aGlzIGlzIHRoZSBjYXNlLCBJIGZlZWwgd2hhdCB5b3Ugc2FpZCBpcyB0 cnVlLgo+IAo+IFBlcmhhcHMgaXQgd291bGQgaGVscCBpZiBJIGdhdmUgYSBjb25jcmV0ZSBleGFt cGxlLiBUYWtlIGZvciBleGFtcGxlIHRoZQo+IEFSTSBTTU1VLiBJdCBoYXMgaXQncyBvd24gVExC LiBJbnZhbGlkYXRpbmcgdGhpcyBUTEIgaXMgZG9uZSBpbiBvbmUgb2YKPiB0d28gd2F5cyBkZXBl bmRpbmcgb24gdGhlIHNwZWNpZmljIEhXIGltcGxlbWVudGF0aW9uLgo+IAo+IElmIGJyb2FkY2Fz dCBUTEIgbWFpbnRlbmFuY2UgKEJUTSkgaXMgc3VwcG9ydGVkIGl0IHdpbGwgc25vb3AgQ1BVIFRM Qgo+IGludmFsaWRhdGlvbnMuIElmIEJUTSBpcyBub3Qgc3VwcG9ydGVkIGl0IHJlbGllcyBvbiBT VyB0byBleHBsaWNpdGx5Cj4gZm9yd2FyZCBUTEIgaW52YWxpZGF0aW9ucyB2aWEgTU1VIG5vdGlm aWVycy4KCk9uIG91ciBBUk02NCBoYXJkd2FyZSwgd2UgcmVseSBvbiBCVE0gdG8gbWFpbnRhaW4g VExCIGNvaGVyZW5jeS4KCj4gTm93IGNvbnNpZGVyIHRoZSBjYXNlIHdoZXJlIHNvbWUgZXh0ZXJu YWwgZGV2aWNlIGlzIGFjY2Vzc2luZyBtYXBwaW5ncwo+IHZpYSB0aGUgU01NVS4gVGhlIGFjY2Vz cyBmbGFnIHdpbGwgYmUgY2FjaGVkIGluIHRoZSBTTU1VIFRMQi4gSWYgd2UKPiBjbGVhciB0aGUg YWNjZXNzIGZsYWcgd2l0aG91dCBhIFRMQiBpbnZhbGlkYXRlIHRoZSBhY2Nlc3MgZmxhZyBpbiB0 aGUKPiBDUFUgcGFnZSB0YWJsZSB3aWxsIG5vdCBnZXQgdXBkYXRlZCBiZWNhdXNlIGl0J3MgYWxy ZWFkeSBzZXQgaW4gdGhlIFNNTVUKPiBUTEIuCj4gCj4gQXMgYW4gYXNpZGUgYWNjZXNzIGZsYWcg dXBkYXRlcyBoYXBwZW4gaW4gb25lIG9mIHR3byB3YXlzLiBJZiB0aGUgU01NVQo+IEhXIHN1cHBv cnRzIGhhcmR3YXJlIHRyYW5zbGF0aW9uIHRhYmxlIHVwZGF0ZXMgKEhUVFUpIHRoZW4gaGFyZHdh cmUgd2lsbAo+IG1hbmFnZSB1cGRhdGluZyBhY2Nlc3MvZGlydHkgZmxhZ3MgYXMgcmVxdWlyZWQu IElmIHRoaXMgaXMgbm90IHN1cHBvcnRlZAo+IHRoZW4gU1cgaXMgcmVsaWVkIG9uIHRvIHVwZGF0 ZSB0aGVzZSBmbGFncyB3aGljaCBpbiBwcmFjdGljZSBtZWFucwo+IHRha2luZyBhIG1pbm9yIGZh dWx0LiBCdXQgSSBkb24ndCB0aGluayB0aGF0IGlzIHJlbGV2YW50IGhlcmUgLSBpbgo+IGVpdGhl ciBjYXNlIHdpdGhvdXQgYSBUTEIgaW52YWxpZGF0ZSBuZWl0aGVyIG9mIHRob3NlIHRoaW5ncyB3 aWxsCj4gaGFwcGVuLgo+IAo+IEkgc3VwcG9zZSBkcml2ZXJzIGNvdWxkIGltcGxlbWVudCB0aGUg Y2xlYXJfZmx1c2hfeW91bmcoKSBNTVUgbm90aWZpZXIKPiBjYWxsYmFjayAobm9uZSBkbyBhdCB0 aGUgbW9tZW50IEFGQUlDVCkgYnV0IHRoZW4gd29uJ3QgdGhhdCBqdXN0IGxlYWQgdG8KPiB0aGUg b3Bwb3NpdGUgcHJvYmxlbSAtIHRoYXQgZXZlcnkgcGFnZSBldmVyIHVzZWQgYnkgYW4gZXh0ZXJu YWwgZGV2aWNlCj4gcmVtYWlucyBhY3RpdmUgYW5kIHVuYXZhaWxhYmxlIGZvciByZWNsYWltIGJl Y2F1c2UgdGhlIGFjY2VzcyBmbGFnIG5ldmVyCj4gZ2V0cyBjbGVhcmVkPyBJIHN1cHBvc2UgdGhl eSBjb3VsZCBkbyB0aGUgZmx1c2ggdGhlbiB3aGljaCB3b3VsZCBlbnN1cmUKClllcywgSSB0aGlu ayBzbyB0b28uIFRoZSByZWFzb24gdGhlcmUgaXMgY3VycmVudGx5IG5vIHByb2JsZW0sIHBlcmhh cHMgSSAKdGhpbmssIHRoZXJlIGFyZSBubyBhY3R1YWwgdXNlIGNhc2VzIGF0IHRoZSBtb21lbnQ/ IEF0IGxlYXN0IG9uIG91ciAKQWxpYmFiYSdzIGZsZWV0LCBTTU1VIGFuZCBNTVUgZG8gbm90IHNo YXJlIHBhZ2UgdGFibGVzIG5vdy4KCj4gdGhlIHBhZ2UgaXMgbWFya2VkIGluYWN0aXZlIGlmIGl0 J3Mgbm90IHJlZmVyZW5jZWQgYmV0d2VlbiB0aGUgdHdvCj4gZm9saW9fcmVmZXJlbmNlZCBjYWxs cygpLgo+IAo+IEJ1dCB0aGF0IHJlcXVpcmVzIGNoYW5nZXMgdG8gdGhvc2UgZHJpdmVycy4gU01N VSBmcm9tIG1lbW9yeSBkb2Vzbid0Cj4gZXZlbiByZWdpc3RlciBmb3Igbm90aWZpZXJzIGlmIEJU TSBpcyBzdXBwb3J0ZWQuCj4gCj4gICAtIEFsaXN0YWlyCj4gCj4+Pgo+Pj4gT2YgY291cnNlIFRM QiBmbHVzaGVzIGFyZSBlcXVhbGx5IChwZXJoYXBzIGV2ZW4gbW9yZSkgZXhwZW5zaXZlIGZvciB0 aGlzCj4+PiBraW5kIG9mIGV4dGVybmFsIEhXIHNvIHJlZHVjaW5nIHRoZW0gd291bGQgc3RpbGwg YmUgYmVuZWZpY2lhbC4gSSB3b25kZXIKPj4+IGlmIHRoZXJlJ3Mgc29tZSB3YXkgdGhleSBjb3Vs ZCBiZSBkZWZlcnJlZCB1bnRpbCB0aGUgcGFnZSBpcyBtb3ZlZCB0bwo+Pj4gdGhlIGluYWN0aXZl IGxpc3Qgc2F5Pwo+Pj4KPj4+Pj4KPj4+Pj4+IFsxXSBodHRwczovL2xvcmUua2VybmVsLm9yZy9s a21sLzIwMjIwNjE3MDcwNTU1LjM0NDM2OC0xLTIxY25iYW9AZ21haWwuY29tLwo+Pj4+Pj4gU2ln bmVkLW9mZi1ieTogQmFvbGluIFdhbmcgPGJhb2xpbi53YW5nQGxpbnV4LmFsaWJhYmEuY29tPgo+ Pj4+Pj4gLS0tCj4+Pj4+PiAgIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oIHwgMzEg KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQo+Pj4+Pj4gICAxIGZpbGUgY2hhbmdlZCwg MTYgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCj4+Pj4+Pgo+Pj4+Pj4gZGlmZiAtLWdp dCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oIGIvYXJjaC9hcm02NC9pbmNsdWRl L2FzbS9wZ3RhYmxlLmgKPj4+Pj4+IGluZGV4IDBiZDE4ZGU5ZmQ5Ny4uMjk3OWQ3OTZiYTlkIDEw MDY0NAo+Pj4+Pj4gLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgKPj4+Pj4+ ICsrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oCj4+Pj4+PiBAQCAtOTA1LDIx ICs5MDUsMjIgQEAgc3RhdGljIGlubGluZSBpbnQgcHRlcF90ZXN0X2FuZF9jbGVhcl95b3VuZyhz dHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKPj4+Pj4+ICAgc3RhdGljIGlubGluZSBpbnQgcHRl cF9jbGVhcl9mbHVzaF95b3VuZyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKPj4+Pj4+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYWRk cmVzcywgcHRlX3QgKnB0ZXApCj4+Pj4+PiAgIHsKPj4+Pj4+IC0gICAgICAgaW50IHlvdW5nID0g cHRlcF90ZXN0X2FuZF9jbGVhcl95b3VuZyh2bWEsIGFkZHJlc3MsIHB0ZXApOwo+Pj4+Pj4gLQo+ Pj4+Pj4gLSAgICAgICBpZiAoeW91bmcpIHsKPj4+Pj4+IC0gICAgICAgICAgICAgICAvKgo+Pj4+ Pj4gLSAgICAgICAgICAgICAgICAqIFdlIGNhbiBlbGlkZSB0aGUgdHJhaWxpbmcgRFNCIGhlcmUg c2luY2UgdGhlIHdvcnN0IHRoYXQgY2FuCj4+Pj4+PiAtICAgICAgICAgICAgICAgICogaGFwcGVu IGlzIHRoYXQgYSBDUFUgY29udGludWVzIHRvIHVzZSB0aGUgeW91bmcgZW50cnkgaW4gaXRzCj4+ Pj4+PiAtICAgICAgICAgICAgICAgICogVExCIGFuZCB3ZSBtaXN0YWtlbmx5IHJlY2xhaW0gdGhl IGFzc29jaWF0ZWQgcGFnZS4gVGhlCj4+Pj4+PiAtICAgICAgICAgICAgICAgICogd2luZG93IGZv ciBzdWNoIGFuIGV2ZW50IGlzIGJvdW5kZWQgYnkgdGhlIG5leHQKPj4+Pj4+IC0gICAgICAgICAg ICAgICAgKiBjb250ZXh0LXN3aXRjaCwgd2hpY2ggcHJvdmlkZXMgYSBEU0IgdG8gY29tcGxldGUg dGhlIFRMQgo+Pj4+Pj4gLSAgICAgICAgICAgICAgICAqIGludmFsaWRhdGlvbi4KPj4+Pj4+IC0g ICAgICAgICAgICAgICAgKi8KPj4+Pj4+IC0gICAgICAgICAgICAgICBmbHVzaF90bGJfcGFnZV9u b3N5bmModm1hLCBhZGRyZXNzKTsKPj4+Pj4+IC0gICAgICAgfQo+Pj4+Pj4gLQo+Pj4+Pj4gLSAg ICAgICByZXR1cm4geW91bmc7Cj4+Pj4+PiArICAgICAgIC8qCj4+Pj4+PiArICAgICAgICAqIFRo aXMgY29tbWVudCBpcyBib3Jyb3dlZCBmcm9tIHg4NiwgYnV0IGFwcGxpZXMgZXF1YWxseSB0byBB Uk02NDoKPj4+Pj4+ICsgICAgICAgICoKPj4+Pj4+ICsgICAgICAgICogQ2xlYXJpbmcgdGhlIGFj Y2Vzc2VkIGJpdCB3aXRob3V0IGEgVExCIGZsdXNoIGRvZXNuJ3QgY2F1c2UKPj4+Pj4+ICsgICAg ICAgICogZGF0YSBjb3JydXB0aW9uLiBbIEl0IGNvdWxkIGNhdXNlIGluY29ycmVjdCBwYWdlIGFn aW5nIGFuZAo+Pj4+Pj4gKyAgICAgICAgKiB0aGUgKG1pc3Rha2VuKSByZWNsYWltIG9mIGhvdCBw YWdlcywgYnV0IHRoZSBjaGFuY2Ugb2YgdGhhdAo+Pj4+Pj4gKyAgICAgICAgKiBzaG91bGQgYmUg cmVsYXRpdmVseSBsb3cuIF0KPj4+Pj4+ICsgICAgICAgICoKPj4+Pj4+ICsgICAgICAgICogU28g YXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gZG9uJ3QgZmx1c2ggdGhlIFRMQiB3aGVuCj4+ Pj4+PiArICAgICAgICAqIGNsZWFyaW5nIHRoZSBhY2Nlc3NlZCBiaXQsIGl0IHdpbGwgZXZlbnR1 YWxseSBiZSBmbHVzaGVkIGJ5Cj4+Pj4+PiArICAgICAgICAqIGEgY29udGV4dCBzd2l0Y2ggb3Ig YSBWTSBvcGVyYXRpb24gYW55d2F5LiBbIEluIHRoZSByYXJlCj4+Pj4+PiArICAgICAgICAqIGV2 ZW50IG9mIGl0IG5vdCBnZXR0aW5nIGZsdXNoZWQgZm9yIGEgbG9uZyB0aW1lIHRoZSBkZWxheQo+ Pj4+Pj4gKyAgICAgICAgKiBzaG91bGRuJ3QgcmVhbGx5IG1hdHRlciBiZWNhdXNlIHRoZXJlJ3Mg bm8gcmVhbCBtZW1vcnkKPj4+Pj4+ICsgICAgICAgICogcHJlc3N1cmUgZm9yIHN3YXBvdXQgdG8g cmVhY3QgdG8uIF0KPj4+Pj4+ICsgICAgICAgICovCj4+Pj4+PiArICAgICAgIHJldHVybiBwdGVw X3Rlc3RfYW5kX2NsZWFyX3lvdW5nKHZtYSwgYWRkcmVzcywgcHRlcCk7Cj4+Pj4+PiAgIH0KPj4+ Pj4+Cj4+Pj4+PiAgICNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UKPj4+Pj4+IC0t Cj4+Pj4+PiAyLjM5LjMKPj4+Pj4+Cj4+Pj4+Cj4+Pj4+IFRoYW5rcwo+Pj4+PiBCYXJyeQo+Pj4K Pj4gVGhhbmtzCj4+IEJhcnJ5CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVs QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==