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=-16.1 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham 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 7A59FC433E0 for ; Fri, 5 Feb 2021 14:58:45 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id A42826509A for ; Fri, 5 Feb 2021 14:58:44 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A42826509A Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=amazon.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id A8CF96B0006; Fri, 5 Feb 2021 09:58:43 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id A3D256B0070; Fri, 5 Feb 2021 09:58:43 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 92CB66B0071; Fri, 5 Feb 2021 09:58:43 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0180.hostedemail.com [216.40.44.180]) by kanga.kvack.org (Postfix) with ESMTP id 722C36B0006 for ; Fri, 5 Feb 2021 09:58:43 -0500 (EST) Received: from smtpin10.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 262A7180AD822 for ; Fri, 5 Feb 2021 14:58:43 +0000 (UTC) X-FDA: 77784520926.10.pets26_060b987275e5 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin10.hostedemail.com (Postfix) with ESMTP id EF24316A4A1 for ; Fri, 5 Feb 2021 14:58:42 +0000 (UTC) X-HE-Tag: pets26_060b987275e5 X-Filterd-Recvd-Size: 11574 Received: from smtp-fw-4101.amazon.com (smtp-fw-4101.amazon.com [72.21.198.25]) by imf03.hostedemail.com (Postfix) with ESMTP for ; Fri, 5 Feb 2021 14:58:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1612537123; x=1644073123; h=from:to:cc:date:message-id:references:in-reply-to: content-id:content-transfer-encoding:mime-version:subject; bh=7hPFL71C9izwmi2f5qDpMYuPWmWuenSsme0JXv9mX2M=; b=H5jaLSYbqalSfLnT7rUn5WRwzsYOHr3MfJZVQcoGEfTCSdvaCFbBasV/ et9nskOINyWGpzJ8ZjxX66Z0hiMZjEKib4cwwJ6bBdFM8XUYzfxzq7jXN ONl/TLG8zPyoDTqSbn+08WWCer6EGxeqqLmjJS2SuvG0H2eakcaxb2RFc o=; X-IronPort-AV: E=Sophos;i="5.81,155,1610409600"; d="scan'208";a="80199888" Subject: Re: [PATCH v2 4/4] hugetlb: Do early cow when page pinned on src mm Thread-Topic: [PATCH v2 4/4] hugetlb: Do early cow when page pinned on src mm Received: from iad12-co-svc-p1-lb1-vlan2.amazon.com (HELO email-inbound-relay-1a-67b371d8.us-east-1.amazon.com) ([10.43.8.2]) by smtp-border-fw-out-4101.iad4.amazon.com with ESMTP; 05 Feb 2021 14:58:41 +0000 Received: from EX13D19EUA004.ant.amazon.com (iad12-ws-svc-p26-lb9-vlan3.iad.amazon.com [10.40.163.38]) by email-inbound-relay-1a-67b371d8.us-east-1.amazon.com (Postfix) with ESMTPS id 90920A1E87; Fri, 5 Feb 2021 14:58:36 +0000 (UTC) Received: from EX13D07UWB002.ant.amazon.com (10.43.161.131) by EX13D19EUA004.ant.amazon.com (10.43.165.28) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 5 Feb 2021 14:58:34 +0000 Received: from EX13D07UWB002.ant.amazon.com ([10.43.161.131]) by EX13D07UWB002.ant.amazon.com ([10.43.161.131]) with mapi id 15.00.1497.010; Fri, 5 Feb 2021 14:58:33 +0000 From: "Zhang, Wei" To: Peter Xu , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" CC: Kirill Shutemov , Mike Rapoport , Matthew Wilcox , Miaohe Lin , Andrea Arcangeli , "Pressman, Gal" , Jan Kara , Jann Horn , Andrew Morton , Kirill Tkhai , Linus Torvalds , "Mike Kravetz" , Jason Gunthorpe , "David Gibson" , Christoph Hellwig Thread-Index: AQHW+wVBEyVUxHY7J0G45RvhReYdgKpJIpeA Date: Fri, 5 Feb 2021 14:58:33 +0000 Message-ID: <329ADC08-552E-423B-9230-99643B81C14A@amazon.com> References: <20210204145033.136755-1-peterx@redhat.com> <20210204145033.136755-5-peterx@redhat.com> In-Reply-To: <20210204145033.136755-5-peterx@redhat.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.43.160.244] Content-Type: text/plain; charset="utf-8" Content-ID: <06E42D069D9A214C9A55FD41FCB559B3@amazon.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: SGkgUGV0ZXIsDQoNCkdhbCBhbmQgSSB3b3JrZWQgdG9nZXRoZXIuIFdlIHRlc3RlZCB0aGUgcGF0 Y2ggdjIgYW5kIGNhbiBjb25maXJtIGl0IGlzIHdvcmtpbmcgYXMgaW50ZW5kZWQuDQoNClRoYW5r IHlvdSB2ZXJ5IG11Y2ggZm9yIHlvdXIgcXVpY2sgcmVzcG9uc2UhDQoNClNpbmNlcmVseSwNCg0K V2VpIFpoYW5nDQoNCg0K77u/T24gMi80LzIxLCA2OjUxIEFNLCAiUGV0ZXIgWHUiIDxwZXRlcnhA cmVkaGF0LmNvbT4gd3JvdGU6DQoNCiAgICBDQVVUSU9OOiBUaGlzIGVtYWlsIG9yaWdpbmF0ZWQg ZnJvbSBvdXRzaWRlIG9mIHRoZSBvcmdhbml6YXRpb24uIERvIG5vdCBjbGljayBsaW5rcyBvciBv cGVuIGF0dGFjaG1lbnRzIHVubGVzcyB5b3UgY2FuIGNvbmZpcm0gdGhlIHNlbmRlciBhbmQga25v dyB0aGUgY29udGVudCBpcyBzYWZlLg0KDQoNCg0KICAgIFRoaXMgaXMgdGhlIGxhc3QgbWlzc2lu ZyBwaWVjZSBvZiB0aGUgQ09XLWR1cmluZy1mb3JrIGVmZm9ydCB3aGVuIHRoZXJlJ3JlDQogICAg cGlubmVkIHBhZ2VzIGZvdW5kLiAgT25lIGNhbiByZWZlcmVuY2UgNzBlODA2ZTRlNjQ1ICgibW06 IERvIGVhcmx5IGNvdyBmb3INCiAgICBwaW5uZWQgcGFnZXMgZHVyaW5nIGZvcmsoKSBmb3IgcHRl cyIsIDIwMjAtMDktMjcpIGZvciBtb3JlIGluZm9ybWF0aW9uLCBzaW5jZQ0KICAgIHdlIGRvIHNp bWlsYXIgdGhpbmdzIGhlcmUgcmF0aGVyIHRoYW4gcHRlIHRoaXMgdGltZSwgYnV0IGp1c3QgZm9y IGh1Z2V0bGIuDQoNCiAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBYdSA8cGV0ZXJ4QHJlZGhhdC5j b20+DQogICAgLS0tDQogICAgIG1tL2h1Z2V0bGIuYyB8IDYxICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0NCiAgICAgMSBmaWxlIGNoYW5nZWQsIDU2 IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pDQoNCiAgICBkaWZmIC0tZ2l0IGEvbW0vaHVn ZXRsYi5jIGIvbW0vaHVnZXRsYi5jDQogICAgaW5kZXggOWU2ZWE5NmJmMzNiLi41NzkzOTM2ZTAw ZWYgMTAwNjQ0DQogICAgLS0tIGEvbW0vaHVnZXRsYi5jDQogICAgKysrIGIvbW0vaHVnZXRsYi5j DQogICAgQEAgLTM3MzQsMTEgKzM3MzQsMjcgQEAgc3RhdGljIGJvb2wgaXNfaHVnZXRsYl9lbnRy eV9od3BvaXNvbmVkKHB0ZV90IHB0ZSkNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl Ow0KICAgICB9DQoNCiAgICArc3RhdGljIHZvaWQNCiAgICAraHVnZXRsYl9jb3B5X3BhZ2Uoc3Ry dWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHB0ZV90ICpwdGVwLCB1bnNpZ25lZCBsb25nIGFkZHIs DQogICAgKyAgICAgICAgICAgICAgICAgc3RydWN0IHBhZ2UgKm9sZF9wYWdlLCBzdHJ1Y3QgcGFn ZSAqbmV3X3BhZ2UpDQogICAgK3sNCiAgICArICAgICAgIHN0cnVjdCBoc3RhdGUgKmggPSBoc3Rh dGVfdm1hKHZtYSk7DQogICAgKyAgICAgICB1bnNpZ25lZCBpbnQgcHNpemUgPSBwYWdlc19wZXJf aHVnZV9wYWdlKGgpOw0KICAgICsNCiAgICArICAgICAgIGNvcHlfdXNlcl9odWdlX3BhZ2UobmV3 X3BhZ2UsIG9sZF9wYWdlLCBhZGRyLCB2bWEsIHBzaXplKTsNCiAgICArICAgICAgIF9fU2V0UGFn ZVVwdG9kYXRlKG5ld19wYWdlKTsNCiAgICArICAgICAgIENsZWFyUGFnZVByaXZhdGUobmV3X3Bh Z2UpOw0KICAgICsgICAgICAgc2V0X3BhZ2VfaHVnZV9hY3RpdmUobmV3X3BhZ2UpOw0KICAgICsg ICAgICAgc2V0X2h1Z2VfcHRlX2F0KHZtYS0+dm1fbW0sIGFkZHIsIHB0ZXAsIG1ha2VfaHVnZV9w dGUodm1hLCBuZXdfcGFnZSwgMSkpOw0KICAgICsgICAgICAgaHVnZXBhZ2VfYWRkX25ld19hbm9u X3JtYXAobmV3X3BhZ2UsIHZtYSwgYWRkcik7DQogICAgKyAgICAgICBodWdldGxiX2NvdW50X2Fk ZChwc2l6ZSwgdm1hLT52bV9tbSk7DQogICAgK30NCiAgICArDQogICAgIGludCBjb3B5X2h1Z2V0 bGJfcGFnZV9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICpkc3QsIHN0cnVjdCBtbV9zdHJ1Y3QgKnNy YywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0 ICp2bWEpDQogICAgIHsNCiAgICAgICAgICAgIHB0ZV90ICpzcmNfcHRlLCAqZHN0X3B0ZSwgZW50 cnksIGRzdF9lbnRyeTsNCiAgICAtICAgICAgIHN0cnVjdCBwYWdlICpwdGVwYWdlOw0KICAgICsg ICAgICAgc3RydWN0IHBhZ2UgKnB0ZXBhZ2UsICpwcmVhbGxvYyA9IE5VTEw7DQogICAgICAgICAg ICB1bnNpZ25lZCBsb25nIGFkZHI7DQogICAgICAgICAgICBpbnQgY293Ow0KICAgICAgICAgICAg c3RydWN0IGhzdGF0ZSAqaCA9IGhzdGF0ZV92bWEodm1hKTsNCiAgICBAQCAtMzc4Nyw3ICszODAz LDcgQEAgaW50IGNvcHlfaHVnZXRsYl9wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKmRzdCwg c3RydWN0IG1tX3N0cnVjdCAqc3JjLA0KICAgICAgICAgICAgICAgICAgICBkc3RfZW50cnkgPSBo dWdlX3B0ZXBfZ2V0KGRzdF9wdGUpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoKGRzdF9wdGUg PT0gc3JjX3B0ZSkgfHwgIWh1Z2VfcHRlX25vbmUoZHN0X2VudHJ5KSkNCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb250aW51ZTsNCiAgICAtDQogICAgK2FnYWluOg0KICAgICAgICAgICAg ICAgICAgICBkc3RfcHRsID0gaHVnZV9wdGVfbG9jayhoLCBkc3QsIGRzdF9wdGUpOw0KICAgICAg ICAgICAgICAgICAgICBzcmNfcHRsID0gaHVnZV9wdGVfbG9ja3B0cihoLCBzcmMsIHNyY19wdGUp Ow0KICAgICAgICAgICAgICAgICAgICBzcGluX2xvY2tfbmVzdGVkKHNyY19wdGwsIFNJTkdMRV9E RVBUSF9ORVNUSU5HKTsNCiAgICBAQCAtMzgxNiw2ICszODMyLDM5IEBAIGludCBjb3B5X2h1Z2V0 bGJfcGFnZV9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICpkc3QsIHN0cnVjdCBtbV9zdHJ1Y3QgKnNy YywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2V0X2h1Z2Vfc3dhcF9wdGVfYXQoZHN0LCBhZGRyLCBkc3RfcHRlLCBlbnRyeSwgc3op Ow0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICsgICAgICAgICAgICAgICAgICAg ICAgIGVudHJ5ID0gaHVnZV9wdGVwX2dldChzcmNfcHRlKTsNCiAgICArICAgICAgICAgICAgICAg ICAgICAgICBwdGVwYWdlID0gcHRlX3BhZ2UoZW50cnkpOw0KICAgICsgICAgICAgICAgICAgICAg ICAgICAgIGdldF9wYWdlKHB0ZXBhZ2UpOw0KICAgICsNCiAgICArICAgICAgICAgICAgICAgICAg ICAgICAvKg0KICAgICsgICAgICAgICAgICAgICAgICAgICAgICAqIFRoaXMgaXMgYSByYXJlIGNh c2Ugd2hlcmUgd2Ugc2VlIHBpbm5lZCBodWdldGxiDQogICAgKyAgICAgICAgICAgICAgICAgICAg ICAgICogcGFnZXMgd2hpbGUgdGhleSdyZSBwcm9uZSB0byBDT1cuICBXZSBuZWVkIHRvIGRvIHRo ZQ0KICAgICsgICAgICAgICAgICAgICAgICAgICAgICAqIENPVyBlYXJsaWVyIGR1cmluZyBmb3Jr Lg0KICAgICsgICAgICAgICAgICAgICAgICAgICAgICAqDQogICAgKyAgICAgICAgICAgICAgICAg ICAgICAgICogV2hlbiBwcmUtYWxsb2NhdGluZyB0aGUgcGFnZSB3ZSBuZWVkIHRvIGJlIHdpdGhv dXQNCiAgICArICAgICAgICAgICAgICAgICAgICAgICAgKiBhbGwgdGhlIGxvY2tzIHNpbmNlIHdl IGNvdWxkIHNsZWVwIHdoZW4gYWxsb2NhdGUuDQogICAgKyAgICAgICAgICAgICAgICAgICAgICAg ICovDQogICAgKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVubGlrZWx5KHBhZ2VfbmVlZHNf Y293X2Zvcl9kbWEodm1hLCBwdGVwYWdlKSkpIHsNCiAgICArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlmICghcHJlYWxsb2MpIHsNCiAgICArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcHV0X3BhZ2UocHRlcGFnZSk7DQogICAgKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNwaW5fdW5sb2NrKHNyY19wdGwpOw0KICAgICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGluX3VubG9jayhkc3RfcHRsKTsNCiAg ICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlYWxsb2MgPSBhbGxv Y19odWdlX3BhZ2Uodm1hLCBhZGRyLCAxKTsNCiAgICArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaWYgKCFwcmVhbGxvYykgew0KICAgICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IC1FTk9NRU07DQogICAgKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ290byBhZ2FpbjsNCiAgICArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIH0NCiAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh1 Z2V0bGJfY29weV9wYWdlKHZtYSwgZHN0X3B0ZSwgYWRkciwgcHRlcGFnZSwNCiAgICArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWFsbG9jKTsNCiAg ICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dF9wYWdlKHB0ZXBhZ2UpOw0KICAg ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Bpbl91bmxvY2soc3JjX3B0bCk7DQog ICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGluX3VubG9jayhkc3RfcHRsKTsN CiAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWFsbG9jID0gTlVMTDsNCiAg ICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICsgICAgICAg ICAgICAgICAgICAgICAgIH0NCiAgICArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg KGNvdykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoNCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIE5vIG5lZWQgdG8gbm90aWZ5IGFzIHdlIGFy ZSBkb3duZ3JhZGluZyBwYWdlDQogICAgQEAgLTM4MjYsOSArMzg3NSw3IEBAIGludCBjb3B5X2h1 Z2V0bGJfcGFnZV9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICpkc3QsIHN0cnVjdCBtbV9zdHJ1Y3Qg KnNyYywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaHVnZV9wdGVwX3NldF93cnByb3RlY3Qoc3JjLCBh ZGRyLCBzcmNfcHRlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgLSAgICAg ICAgICAgICAgICAgICAgICAgZW50cnkgPSBodWdlX3B0ZXBfZ2V0KHNyY19wdGUpOw0KICAgIC0g ICAgICAgICAgICAgICAgICAgICAgIHB0ZXBhZ2UgPSBwdGVfcGFnZShlbnRyeSk7DQogICAgLSAg ICAgICAgICAgICAgICAgICAgICAgZ2V0X3BhZ2UocHRlcGFnZSk7DQogICAgKw0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBhZ2VfZHVwX3JtYXAocHRlcGFnZSwgdHJ1ZSk7DQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2V0X2h1Z2VfcHRlX2F0KGRzdCwgYWRkciwgZHN0X3B0ZSwg ZW50cnkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh1Z2V0bGJfY291bnRfYWRkKHBh Z2VzX3Blcl9odWdlX3BhZ2UoaCksIGRzdCk7DQogICAgQEAgLTM4NDIsNiArMzg4OSwxMCBAQCBp bnQgY29weV9odWdldGxiX3BhZ2VfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqZHN0LCBzdHJ1Y3Qg bW1fc3RydWN0ICpzcmMsDQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgIGlf bW1hcF91bmxvY2tfcmVhZChtYXBwaW5nKTsNCg0KICAgICsgICAgICAgLyogRnJlZSB0aGUgcHJl YWxsb2NhdGVkIHBhZ2UgaWYgbm90IHVzZWQgYXQgbGFzdCAqLw0KICAgICsgICAgICAgaWYgKHBy ZWFsbG9jKQ0KICAgICsgICAgICAgICAgICAgICBwdXRfcGFnZShwcmVhbGxvYyk7DQogICAgKw0K ICAgICAgICAgICAgcmV0dXJuIHJldDsNCiAgICAgfQ0KDQogICAgLS0NCiAgICAyLjI2LjINCg0K DQo=