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 01B1AC4167B for ; Tue, 28 Nov 2023 11:53:32 +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=ihhN5x9Hq+06XepgVXEv13QPbRzKahkC0YuIqAXQ45I=; b=upT7cxLyHWXtx5 K7iXFDSN/cOKOyA2Lq0dbpLyRJAko7rfF856h6d6ZTuYy5iR5lqTB+QKxPSfQldtRHz5kd+z8SmwU kgLpMzbQcucP2qVoZOHrv+M48l2n+vtQOz5USuz3RISg6QcCyQiMPeeht7VayacXxLQHlhnD1Yy2a 910nhu2MDns61Oz9glIrv1ZpJPLm5dibpDV1UGLxQDioLMEhD03vB4ggzFPrRxOapNy/FQCqwESBC AdcgzS+xhdeBILf7WTy8NyiOCoCihxS0Zf2ysWA4364jpSUm+p1aLlJ3u7wdKPBKLq4bcYBLHq6O9 aPiSdPUzCGVoDC9HvJfQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r7weF-005FSo-11; Tue, 28 Nov 2023 11:53:03 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r7weC-005FRy-0t for linux-arm-kernel@lists.infradead.org; Tue, 28 Nov 2023 11:53:02 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id D554BC15; Tue, 28 Nov 2023 03:53:44 -0800 (PST) Received: from [10.1.33.188] (XHFQ2J9959.cambridge.arm.com [10.1.33.188]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 45B893F73F; Tue, 28 Nov 2023 03:52:54 -0800 (PST) Message-ID: <1537e042-1e73-4920-a1db-1eb32d66e32d@arm.com> Date: Tue, 28 Nov 2023 11:52:53 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 00/14] Transparent Contiguous PTEs for User Mappings Content-Language: en-GB To: Barry Song <21cnbao@gmail.com> Cc: akpm@linux-foundation.org, andreyknvl@gmail.com, anshuman.khandual@arm.com, ardb@kernel.org, catalin.marinas@arm.com, david@redhat.com, dvyukov@google.com, glider@google.com, james.morse@arm.com, jhubbard@nvidia.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, mark.rutland@arm.com, maz@kernel.org, oliver.upton@linux.dev, ryabinin.a.a@gmail.com, suzuki.poulose@arm.com, vincenzo.frascino@arm.com, wangkefeng.wang@huawei.com, will@kernel.org, willy@infradead.org, yuzenghui@huawei.com, yuzhao@google.com, ziy@nvidia.com References: <20231115163018.1303287-1-ryan.roberts@arm.com> <20231127031813.5576-1-v-songbaohua@oppo.com> <234021ba-73c2-474a-82f9-91e1604d5bb5@arm.com> From: Ryan Roberts In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231128_035300_406024_269EA2B4 X-CRM114-Status: GOOD ( 30.91 ) 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMjcvMTEvMjAyMyAyMjo1MywgQmFycnkgU29uZyB3cm90ZToKPiBPbiBUdWUsIE5vdiAyOCwg MjAyMyBhdCAxMjoxMeKAr0FNIFJ5YW4gUm9iZXJ0cyA8cnlhbi5yb2JlcnRzQGFybS5jb20+IHdy b3RlOgo+Pgo+PiBPbiAyNy8xMS8yMDIzIDEwOjM1LCBCYXJyeSBTb25nIHdyb3RlOgo+Pj4gT24g TW9uLCBOb3YgMjcsIDIwMjMgYXQgMTA6MTXigK9QTSBSeWFuIFJvYmVydHMgPHJ5YW4ucm9iZXJ0 c0Bhcm0uY29tPiB3cm90ZToKPj4+Pgo+Pj4+IE9uIDI3LzExLzIwMjMgMDM6MTgsIEJhcnJ5IFNv bmcgd3JvdGU6Cj4+Pj4+PiBSeWFuIFJvYmVydHMgKDE0KToKPj4+Pj4+ICAgbW06IEJhdGNoLWNv cHkgUFRFIHJhbmdlcyBkdXJpbmcgZm9yaygpCj4+Pj4+PiAgIGFybTY0L21tOiBzZXRfcHRlKCk6 IE5ldyBsYXllciB0byBtYW5hZ2UgY29udGlnIGJpdAo+Pj4+Pj4gICBhcm02NC9tbTogc2V0X3B0 ZXMoKS9zZXRfcHRlX2F0KCk6IE5ldyBsYXllciB0byBtYW5hZ2UgY29udGlnIGJpdAo+Pj4+Pj4g ICBhcm02NC9tbTogcHRlX2NsZWFyKCk6IE5ldyBsYXllciB0byBtYW5hZ2UgY29udGlnIGJpdAo+ Pj4+Pj4gICBhcm02NC9tbTogcHRlcF9nZXRfYW5kX2NsZWFyKCk6IE5ldyBsYXllciB0byBtYW5h Z2UgY29udGlnIGJpdAo+Pj4+Pj4gICBhcm02NC9tbTogcHRlcF90ZXN0X2FuZF9jbGVhcl95b3Vu ZygpOiBOZXcgbGF5ZXIgdG8gbWFuYWdlIGNvbnRpZyBiaXQKPj4+Pj4+ICAgYXJtNjQvbW06IHB0 ZXBfY2xlYXJfZmx1c2hfeW91bmcoKTogTmV3IGxheWVyIHRvIG1hbmFnZSBjb250aWcgYml0Cj4+ Pj4+PiAgIGFybTY0L21tOiBwdGVwX3NldF93cnByb3RlY3QoKTogTmV3IGxheWVyIHRvIG1hbmFn ZSBjb250aWcgYml0Cj4+Pj4+PiAgIGFybTY0L21tOiBwdGVwX3NldF9hY2Nlc3NfZmxhZ3MoKTog TmV3IGxheWVyIHRvIG1hbmFnZSBjb250aWcgYml0Cj4+Pj4+PiAgIGFybTY0L21tOiBwdGVwX2dl dCgpOiBOZXcgbGF5ZXIgdG8gbWFuYWdlIGNvbnRpZyBiaXQKPj4+Pj4+ICAgYXJtNjQvbW06IFNw bGl0IF9fZmx1c2hfdGxiX3JhbmdlKCkgdG8gZWxpZGUgdHJhaWxpbmcgRFNCCj4+Pj4+PiAgIGFy bTY0L21tOiBXaXJlIHVwIFBURV9DT05UIGZvciB1c2VyIG1hcHBpbmdzCj4+Pj4+PiAgIGFybTY0 L21tOiBJbXBsZW1lbnQgcHRlcF9zZXRfd3Jwcm90ZWN0cygpIHRvIG9wdGltaXplIGZvcmsoKQo+ Pj4+Pj4gICBhcm02NC9tbTogQWRkIHB0ZXBfZ2V0X2FuZF9jbGVhcl9mdWxsKCkgdG8gb3B0aW1p emUgcHJvY2VzcyB0ZWFyZG93bgo+Pj4+Pgo+Pj4+PiBIaSBSeWFuLAo+Pj4+PiBOb3QgcXVpdGUg c3VyZSBpZiBJIG1pc3NlZCBzb21ldGhpbmcsIGFyZSB3ZSBzcGxpdHRpbmcvdW5mb2xkaW5nIENP TlRQVEVTCj4+Pj4+IGluIHRoZSBiZWxvdyBjYXNlcwo+Pj4+Cj4+Pj4gVGhlIGdlbmVyYWwgaWRl YSBpcyB0aGF0IHRoZSBjb3JlLW1tIHNldHMgdGhlIGluZGl2aWR1YWwgcHRlcyAob25lIGF0IGEg dGltZSBpZgo+Pj4+IGl0IGxpa2VzIHdpdGggc2V0X3B0ZV9hdCgpLCBvciBpbiBhIGJsb2NrIHdp dGggc2V0X3B0ZXMoKSksIG1vZGlmaWVzIGl0cwo+Pj4+IHBlcm1pc3Npb25zIChwdGVwX3NldF93 cnByb3RlY3QoKSwgcHRlcF9zZXRfYWNjZXNzX2ZsYWdzKCkpIGFuZCBjbGVhcnMgdGhlbQo+Pj4+ IChwdGVwX2NsZWFyKCksIGV0Yyk7IFRoaXMgaXMgZXhhY3RseSB0aGUgc2FtZSBpbnRlcmZhY2Ug YXMgcHJldmlvdXNseS4KPj4+Pgo+Pj4+IEJVVCwgdGhlIGFybTY0IGltcGxlbWVudGF0aW9uIG9m IHRob3NlIGludGVyZmFjZXMgd2lsbCBub3cgZGV0ZWN0IHdoZW4gYSBzZXQgb2YKPj4+PiBhZGph Y2VudCBQVEVzIChhIGNvbnRwdGUgYmxvY2sgLSBzbyAxNiBuYXR1cmFsbHkgYWxpZ25lZCBlbnRy aWVzIHdoZW4gdXNpbmcgNEsKPj4+PiBiYXNlIHBhZ2VzKSBhcmUgYWxsIGFwcHJvcHJpYXRlIGZv ciBoYXZpbmcgdGhlIENPTlRfUFRFIGJpdCBzZXQ7IGluIHRoaXMgY2FzZQo+Pj4+IHRoZSBibG9j ayBpcyAiZm9sZGVkIi4gQW5kIGl0IHdpbGwgZGV0ZWN0IHdoZW4gdGhlIGZpcnN0IFBURSBpbiB0 aGUgYmxvY2sKPj4+PiBjaGFuZ2VzIHN1Y2ggdGhhdCB0aGUgQ09OVF9QVEUgYml0IG11c3Qgbm93 IGJlIHVuc2V0ICgidW5mb2xkZWQiKS4gT25lIG9mIHRoZQo+Pj4+IHJlcXVpcmVtZW50cyBmb3Ig Zm9sZGluZyBhIGNvbnRwdGUgYmxvY2sgaXMgdGhhdCBhbGwgdGhlIHBhZ2VzIG11c3QgYmVsb25n IHRvCj4+Pj4gdGhlICpzYW1lKiBmb2xpbyAodGhhdCBtZWFucyBpdHMgc2FmZSB0byBvbmx5IHRy YWNrIGFjY2Vzcy9kaXJ0eSBmb3IgdGhlY29udHB0ZQo+Pj4+IGJsb2NrIGFzIGEgd2hvbGUgcmF0 aGVyIHRoYW4gZm9yIGVhY2ggaW5kaXZpZHVhbCBwdGUpLgo+Pj4+Cj4+Pj4gKHRoZXJlIGFyZSBh IGNvdXBsZSBvZiBvcHRpbWl6YXRpb25zIHRoYXQgbWFrZSB0aGUgcmVhbGl0eSBzbGlnaHRseSBt b3JlCj4+Pj4gY29tcGxpY2F0ZWQgdGhhbiB3aGF0IEkndmUganVzdCBleHBsYWluZWQsIGJ1dCB5 b3UgZ2V0IHRoZSBpZGVhKS4KPj4+Pgo+Pj4+IE9uIHRoYXQgYmFzaXMsIEkgYmVsaWV2ZSBhbGwg dGhlIHNwZWNpZmljIGNhc2VzIHlvdSBkZXNjcmliZSBiZWxvdyBhcmUgYWxsCj4+Pj4gY292ZXJl ZCBhbmQgc2FmZSAtIHBsZWFzZSBsZXQgbWUga25vdyBpZiB5b3UgdGhpbmsgdGhlcmUgaXMgYSBo b2xlIGhlcmUhCj4+Pj4KPj4+Pj4KPj4+Pj4gMS4gbWFkdmlzZShNQURWX0RPTlRORUVEKSBvbiBh IHBhcnQgb2YgYmFzZXBhZ2VzIG9uIGEgQ09OVFBURSBsYXJnZSBmb2xpbwo+Pj4+Cj4+Pj4gVGhl IHBhZ2Ugd2lsbCBmaXJzdCBiZSB1bm1hcHBlZCAoZS5nLiBwdGVwX2NsZWFyKCkgb3IgcHRlcF9n ZXRfYW5kX2NsZWFyKCksIG9yCj4+Pj4gd2hhdGV2ZXIpLiBUaGUgaW1wbGVtZW50YXRpb24gb2Yg dGhhdCB3aWxsIGNhdXNlIGFuIHVuZm9sZCBhbmQgdGhlIENPTlRfUFRFIGJpdAo+Pj4+IGlzIHJl bW92ZWQgZnJvbSB0aGUgd2hvbGUgY29udHB0ZSBibG9jay4gSWYgdGhlcmUgaXMgdGhlbiBhIHN1 YnNlcXVlbnQKPj4+PiBzZXRfcHRlX2F0KCkgdG8gc2V0IGEgc3dhcCBlbnRyeSwgdGhlIGltcGxl bWVudGF0aW9uIHdpbGwgc2VlIHRoYXQgaXRzIG5vdAo+Pj4+IGFwcHJvcHJpYXRlIHRvIHJlLWZv bGQsIHNvIHRoZSByYW5nZSB3aWxsIHJlbWFpbiB1bmZvbGRlZC4KPj4+Pgo+Pj4+Pgo+Pj4+PiAy LiB2bWEgc3BsaXQgaW4gYSBsYXJnZSBmb2xpbyBkdWUgdG8gdmFyaW91cyByZWFzb25zIHN1Y2gg YXMgbXByb3RlY3QsCj4+Pj4+IG11bm1hcCwgbWxvY2sgZXRjLgo+Pj4+Cj4+Pj4gSSdtIG5vdCBz dXJlIGlmIFBURXMgYXJlIGV4cGxpY2l0bHkgdW5tYXBwZWQvcmVtYXBwZWQgd2hlbiBzcGxpdHRp bmcgYSBWTUE/IEkKPj4+PiBzdXNwZWN0IG5vdCwgc28gaWYgdGhlIFZNQSBpcyBzcGxpdCBpbiB0 aGUgbWlkZGxlIG9mIGEgY3VycmVudGx5IGZvbGRlZCBjb250cHRlCj4+Pj4gYmxvY2ssIGl0IHdp bGwgcmVtYWluIGZvbGRlZC4gQnV0IHRoaXMgaXMgc2FmZSBhbmQgY29udGludWVzIHRvIHdvcmsg Y29ycmVjdGx5Lgo+Pj4+IFRoZSBWTUEgYXJyYW5nZW1lbnQgaXMgbm90IGltcG9ydGFudDsgaXQg aXMganVzdCBpbXBvcnRhbnQgdGhhdCBhIHNpbmdsZSBmb2xpbwo+Pj4+IGlzIG1hcHBlZCBjb250 aWd1b3VzbHkgYWNyb3NzIHRoZSB3aG9sZSBibG9jay4KPj4+Cj4+PiBJIGRvbid0IHRoaW5rIGl0 IGlzIHNhZmUgdG8ga2VlcCBDT05UUFRFIGZvbGRlZCBpbiBhIHNwbGl0X3ZtYSBjYXNlLiBhcwo+ Pj4gb3RoZXJ3aXNlLCBjb3B5X3B0ZXMgaW4geW91ciBvdGhlciBwYXRjaCBtaWdodCBvbmx5IGNv cHkgYSBwYXJ0Cj4+PiBvZiBDT05UUEVTLgo+Pj4gRm9yIGV4YW1wbGUsICBpZiBwYWdlMC1wYWdl NCBhbmQgcGFnZTUtcGFnZTE1IGFyZSBzcGxpdHRlZCBpbiBzcGxpdF92bWEsCj4+PiBpbiBmb3Jr LCB3aGlsZSBjb3B5aW5nIHB0ZSBmb3IgdGhlIGZpcnN0IFZNQSwgd2UgYXJlIGNvcHlpbmcgcGFn ZTAtcGFnZTQsCj4+PiB0aGlzIHdpbGwgaW1tZWRpYXRlbHkgY2F1c2UgaW5jb25zaXN0ZW50IENP TlRQVEUuIGFzIHdlIGhhdmUgdG8KPj4+IG1ha2Ugc3VyZSBhbGwgQ09OVFBURXMgYXJlIGF0b21p Y2FsbHkgbWFwcGVkIGluIGEgUFRMLgo+Pgo+PiBObyB0aGF0J3Mgbm90IGhvdyBpdCB3b3Jrcy4g VGhlIENPTlRfUFRFIGJpdCBpcyBub3QgYmxpbmRseSBjb3BpZWQgZnJvbSBwYXJlbnQKPj4gdG8g Y2hpbGQuIEl0IGlzIGV4cGxpY2l0bHkgbWFuYWdlZCBieSB0aGUgYXJjaCBjb2RlIGFuZCBzZXQg d2hlbiBhcHByb3ByaWF0ZS4gSW4KPj4gdGhlIGNhc2UgYWJvdmUsIHdlIHdpbGwgZW5kIHVwIGNh bGxpbmcgc2V0X3B0ZXMoKSBmb3IgcGFnZTAtcGFnZTQgaW4gdGhlIGNoaWxkLgo+PiBzZXRfcHRl cygpIHdpbGwgbm90aWNlIHRoYXQgdGhlcmUgYXJlIG9ubHkgNSBjb250aWd1b3VzIHBhZ2VzIHNv IGl0IHdpbGwgbWFwCj4+IHdpdGhvdXQgdGhlIENPTlRfUFRFIGJpdC4KPiAKPiBPay4gY29vbC4g YWx0ZXJuYXRpdmVseSwgaW4gdGhlIGNvZGUgSSBzaGFyZWQgdG8geW91LCB3ZSBhcmUgZG9pbmcg YW4gdW5mb2xkCj4gaW1tZWRpYXRlbHkgd2hlbiBzcGxpdF92bWEgaGFwcGVucyB3aXRoaW4gYSBs YXJnZSBhbm9uIGZvbGlvLCBzbyB3ZSBkaXNhbGxvdwo+IENPTlRQVEUgdG8gY3Jvc3MgdHdvIFZN QXMgdG8gYXZvaWQgYWxsIGtpbmRzIG9mIGNvbXBsZXhpdHkgYWZ0ZXJ3YXJkcy4KPiAKPiBodHRw czovL2dpdGh1Yi5jb20vT25lUGx1c09TUy9hbmRyb2lkX2tlcm5lbF9vbmVwbHVzX3NtODU1MC9i bG9iL29uZXBsdXMvc204NTUwX3VfMTQuMC4wX29uZXBsdXMxMS9tbS9odWdlX21lbW9yeS5jCj4g Cj4gI2lmZGVmIENPTkZJR19DT05UX1BURV9IVUdFUEFHRQo+IHZvaWQgdm1hX2FkanVzdF9jb250 X3B0ZV90cmFuc19odWdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAo+ICAgICB1bnNpZ25l ZCBsb25nIHN0YXJ0LAo+ICAgICB1bnNpZ25lZCBsb25nIGVuZCwKPiAgICAgbG9uZyBhZGp1c3Rf bmV4dCkKPiB7Cj4gICAgICAgICAgLyoKPiAgICAgICAgICAqIElmIHRoZSBuZXcgc3RhcnQgYWRk cmVzcyBpc24ndCBocGFnZSBhbGlnbmVkIGFuZCBpdCBjb3VsZAo+ICAgICAgICAgICogcHJldmlv dXNseSBjb250YWluIGFuIGh1Z2VwYWdlOiBjaGVjayBpZiB3ZSBuZWVkIHRvIHNwbGl0Cj4gICAg ICAgICAgKiBhbiBodWdlIHBtZC4KPiAgICAgICAgICAqLwo+ICAgICAgICAgIGlmIChzdGFydCAm IH5IUEFHRV9DT05UX1BURV9NQVNLICYmCj4gICAgICAgICAgICAgIChzdGFydCAmIEhQQUdFX0NP TlRfUFRFX01BU0spID49IHZtYS0+dm1fc3RhcnQgJiYKPiAgICAgICAgICAgICAgKHN0YXJ0ICYg SFBBR0VfQ09OVF9QVEVfTUFTSykgKyBIUEFHRV9DT05UX1BURV9TSVpFIDw9IHZtYS0+dm1fZW5k KQo+ICAgICAgICAgICAgICAgICAgIHNwbGl0X2h1Z2VfY29udF9wdGVfYWRkcmVzcyh2bWEsIHN0 YXJ0LCBmYWxzZSwgTlVMTCk7Cj4gCj4gICAgICAgICAgLi4uLgo+IH0KPiAjZW5kaWYKPiAKPiBJ biB5b3VyIGFwcHJvYWNoLCB5b3UgYXJlIHN0aWxsIGhvbGRpbmcgQ09OVFBURSBjcm9zc2luZyB0 d28gVk1Bcy4gYnV0IGl0IHNlZW1zCj4gb2suIEkgY2FuJ3QgaGF2ZSBhIGNhc2Ugd2hpY2ggbWln aHQgZmFpbCBpbiBteSBicmFpbiByaWdodCBub3cuIG9ubHkKClllcywgSSdtIGRlYWxpbmcgd2l0 aCB0aGUgQ09OVF9QVEUgYml0IGF0IHRoZSBwZ3RhYmxlIGxldmVsLCBub3QgYXQgdGhlIFZNQSBs ZXZlbC4KCgo+IHJ1bm5pbmcgdGhlIGNvZGUgb24KPiBhIGxhcmdlIGFtb3VudCBvZiByZWFsIGhh cmR3YXJlIHdpbGwgdGVsbCA6LSkKCkluZGVlZCAtIGlzIHRoaXMgc29tZXRoaW5nIHlvdSBtaWdo dCBiZSBhYmxlIHRvIGhlbHAgd2l0aD8gOikKCj4gCj4+Cj4+Pgo+Pj4+Cj4+Pj4+Cj4+Pj4+IDMu IHRyeV90b191bm1hcF9vbmUoKSB0byByZWNsYWltIGEgZm9saW8sIHB0ZXMgYXJlIHNjYW5uZWQg b25lIGJ5IG9uZQo+Pj4+PiByYXRoZXIgdGhhbiBiZWluZyBhcyBhIHdob2xlLgo+Pj4+Cj4+Pj4g WWVzLCBhcyBwZXIgMTsgdGhlIGFybTY0IGltcGxlbWVudGF0aW9uIHdpbGwgbm90aWNlIHdoZW4g dGhlIGZpcnN0IGVudHJ5IGlzCj4+Pj4gY2xlYXJlZCBhbmQgdW5mb2xkIHRoZSBjb250cHRlIGJs b2NrLgo+Pj4+Cj4+Pj4+Cj4+Pj4+IEluIGhhcmR3YXJlLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSBD T05UUFRFIGZvbGxvdyB0aGUgcnVsZSAtIGFsd2F5cyAxNgo+Pj4+PiBjb250aWd1b3VzIHBoeXNp Y2FsIGFkZHJlc3Mgd2l0aCBDT05UUFRFIHNldC4gaWYgb25lIG9mIHRoZW0gcnVuIGF3YXkKPj4+ Pj4gZnJvbSB0aGUgMTYgcHRlcyBncm91cCBhbmQgUFRFcyBiZWNvbWUgdW5jb25zaXN0ZW50LCBz b21lIHRlcnJpYmxlCj4+Pj4+IGVycm9ycy9mYXVsdHMgY2FuIGhhcHBlbiBpbiBIVy4gZm9yIGV4 YW1wbGUKPj4+Pgo+Pj4+IFllcywgdGhlIGltcGxlbWVudGF0aW9uIG9iZXlzIGFsbCB0aGVzZSBy dWxlczsgc2VlIGNvbnRwdGVfdHJ5X2ZvbGQoKSBhbmQKPj4+PiBjb250cHRlX3RyeV91bmZvbGQo KS4gdGhlIGZvbGQvdW5mb2xkIG9wZXJhdGlvbiBpcyBvbmx5IGRvbmUgd2hlbiBhbGwKPj4+PiBy ZXF1aXJlbWVudHMgYXJlIG1ldCwgYW5kIHdlIHBlcmZvcm0gaXQgaW4gYSBtYW5uZXIgdGhhdCBp cyBjb25mb3JtYW50IHRvIHRoZQo+Pj4+IGFyY2hpdGVjdHVyZSByZXF1aXJlbWVudHMgKHNlZSBj b250cHRlX2ZvbGQoKSAtIGJlaW5nIHJlbmFtZWQgdG8KPj4+PiBjb250cHRlX2NvbnZlcnQoKSBp biB0aGUgbmV4dCB2ZXJzaW9uKS4KPj4+Pgo+Pj4+IFRoYW5rcyBmb3IgdGhlIHJldmlldyEKPj4+ Pgo+Pj4+IFRoYW5rcywKPj4+PiBSeWFuCj4+Pj4KPj4+Pj4KPj4+Pj4gY2FzZTA6Cj4+Pj4+IGFk ZHIwIFBURSAtIGhhcyBubyBDT05UUEUKPj4+Pj4gYWRkcjArNGtiIFBURSAtIGhhcyBDT05UUFRF Cj4+Pj4+IC4uLi4KPj4+Pj4gYWRkcjArNjBrYiBQVEUgLSBoYXMgQ09OVFBURQo+Pj4+Pgo+Pj4+ PiBjYXNlIDE6Cj4+Pj4+IGFkZHIwIFBURSAtIGhhcyBubyBDT05UUEUKPj4+Pj4gYWRkcjArNGti IFBURSAtIGhhcyBDT05UUFRFCj4+Pj4+IC4uLi4KPj4+Pj4gYWRkcjArNjBrYiBQVEUgLSBoYXMg c3dhcAo+Pj4+Pgo+Pj4+PiBVbmNvbnNpc3RlbnQgMTYgUFRFcyB3aWxsIGxlYWQgdG8gY3Jhc2gg ZXZlbiBpbiB0aGUgZmlybXdhcmUgYmFzZWQgb24KPj4+Pj4gb3VyIG9ic2VydmF0aW9uLgo+Pj4+ Pgo+Pj4KPiAKPiBUaGFua3MKPiBCYXJyeQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFy bS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK