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 485D1C47DDF for ; Thu, 1 Feb 2024 12:16:20 +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:MIME-Version:References: 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=MY5MPHy1nII2MAuRrLoEADJkcEW+H7Y20eqUM1dcUfE=; b=kTXHlY2txY+l73 f2R4DxKBDaBIOYMxXiL5iXbtDZdxGclxzAHnH//vX333knmhBfsWcAwZ0l7aJvujIoBea296oVaIH 4+qO9SYXfP6iVUdE2o1lKrVRgZnM6myT2ADv5TSX/Z8R4BOokLiExTVFC29ZzyM7R/DLI3TyJJGTi yUyjYOHzfYvZH6H5HdiPqgxS7JSklOezA99NG7lJ/AbglAsdPNH+UoLNWfS4nPLAJEMJapXXvu0Ik qbbFUHTrrFDHhBxFpyfdHl0pU2Yd+9dV0tq9XsNUCx9mpDtaCA3ghGeACanzpumbJG3tIej4PlXR5 HDscOch/4WVvw3AmIIkw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rVVzD-00000007ijl-2y8T; Thu, 01 Feb 2024 12:16:07 +0000 Received: from mail-ed1-x52c.google.com ([2a00:1450:4864:20::52c]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rVVz7-00000007iiq-3enH for linux-arm-kernel@lists.infradead.org; Thu, 01 Feb 2024 12:16:06 +0000 Received: by mail-ed1-x52c.google.com with SMTP id 4fb4d7f45d1cf-55f85a2a43fso10209a12.1 for ; Thu, 01 Feb 2024 04:15:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1706789758; x=1707394558; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=cve+q1TZtCVqvyVnUQyH2Cq09HKM/U+2tnIu1KSKKcg=; b=LLtVvv3E8qsZKhLea/Y+qMi6LfsAo3zIBdeIYE4xxohz2YfBN9j+B8v8psqPR8huRk pZXx6A1QVYrGshr7ei00hAQteFtF68k7IcYAVtc1BTbPj8fuWvmWwxYdedRi0ji1Y48E gi5kzrzg4Jhx6ST5siRiRDDQsPOsXwrwNda3lm2LUjiBjl7kTPaEf5qPyPXedQric3vT V+fBEceHDSX+WLLkGE2nrgv5+8PwXN3DaZxjyawD0lF+xfoqtiISM52HBjCZPjrzxMuu G7FSaSpjZ49k6uFWCuVuinvrMMAKkdAgoyd0kIc+z1UGAxOqkbxh5Huu61qwZWLmB/i5 XPZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706789758; x=1707394558; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=cve+q1TZtCVqvyVnUQyH2Cq09HKM/U+2tnIu1KSKKcg=; b=deBU7+lKARm+p5E9GK1h7QP4xLyflpyEfXV6vzhRbaTQnqon12tnPQ2QKDaG3x9ePN N87vyG+NT2K8aAwiG1AmeTwN/4l1aJiMkHsIpRk5HEEdwdZ0WZASFrwxBJPCIFDVoTnT mI4S9tH/gEA5tG6sRYOkd0kOyrP0TOn56WqOIP04VM0j6RwnJMr8+o0fdwNNiMW7MY6J jvdL7jaQi3tjqefLiajRjavenPt64sF8JEGwGEyKdFNUSJ3584Kd1pfIbWsi6WXDVblA KMl2vWlx2utGhriF5/yWS/i49hWko9ehRTS9bjl7psFxLElR+GpcBO+ks+GxNyafGMoy 0dyg== X-Gm-Message-State: AOJu0YygUCW0PhAjLa/Ltu3PsAfsGF8oHI8AncRqE6px0pBUCtoHwigB RJ+hTh877807sg+WwaRADh5IC/rRD5ltKph4m0eknyMWgf1BXUSzwhL5cFLYoQ== X-Google-Smtp-Source: AGHT+IHy1BHTCsh/42eBIgRQC6BQGnV05xiXKU8/nomBidZfv5pBBsK0ygZYeANcbrgw5sK9uzanEg== X-Received: by 2002:a50:d54e:0:b0:55f:b5a3:e2b4 with SMTP id f14-20020a50d54e000000b0055fb5a3e2b4mr122757edj.7.1706789758212; Thu, 01 Feb 2024 04:15:58 -0800 (PST) X-Forwarded-Encrypted: i=0; AJvYcCWgcgdkyotuywgnji7Lsr9mrvbMtY2+6Pmuodeoib/LTzKufe2dpr7/6JVlZPI9S/1LXXZaPqQ8egGQBtwyrvrh9AdpIuW9LjrWJLgLXNLP6pOBgWjRYSKM/dzZ5KNzJG4V6/BltYOhve+IVvASamxZXLnkf01ojn+jqb/YHU/TAFMjCImrpqRe+cXrmIaSiEucMQVQ7sUTxdCbzev8oePxvX3LG8hYiQIgrgQNkfKbS8tHvkfDyX0jg0TPEffckSHbFGN9NauYv4OpOTdM+hkIWFU84CnGguuPopMs/V0jEW+uxMWy1tlJAkgJCoRo5pVl7+UEMtlZd0Sxp9uPPduiI0zyOJ49tXJxBuU/yX0t+bQ1+RHsi5Qg Received: from google.com (185.83.140.34.bc.googleusercontent.com. [34.140.83.185]) by smtp.gmail.com with ESMTPSA id t15-20020a05600c198f00b0040ee51f1025sm4283470wmq.43.2024.02.01.04.15.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 01 Feb 2024 04:15:57 -0800 (PST) Date: Thu, 1 Feb 2024 12:15:53 +0000 From: Mostafa Saleh To: Jason Gunthorpe Cc: iommu@lists.linux.dev, Joerg Roedel , linux-arm-kernel@lists.infradead.org, Robin Murphy , Will Deacon , Moritz Fischer , Moritz Fischer , Michael Shavit , Nicolin Chen , patches@lists.linux.dev, Shameer Kolothum Subject: Re: [PATCH v4 06/16] iommu/arm-smmu-v3: Hold arm_smmu_asid_lock during all of attach_dev Message-ID: References: <0-v4-c93b774edcc4+42d2b-smmuv3_newapi_p1_jgg@nvidia.com> <6-v4-c93b774edcc4+42d2b-smmuv3_newapi_p1_jgg@nvidia.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <6-v4-c93b774edcc4+42d2b-smmuv3_newapi_p1_jgg@nvidia.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240201_041601_958853_36D19B2E X-CRM114-Status: GOOD ( 39.14 ) 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 SGkgSmFzb24sCgpPbiBUaHUsIEphbiAyNSwgMjAyNCBhdCAwNzo1NzoxNlBNIC0wNDAwLCBKYXNv biBHdW50aG9ycGUgd3JvdGU6Cj4gVGhlIEJUTSBzdXBwb3J0IHdhbnRzIHRvIGJlIGFibGUgdG8g Y2hhbmdlIHRoZSBBU0lEIG9mIGFueSBzbW11X2RvbWFpbi4KPiBXaGVuIGl0IGdvZXMgdG8gZG8g dGhpcyBpdCBob2xkcyB0aGUgYXJtX3NtbXVfYXNpZF9sb2NrIGFuZCBpdGVyYXRlcyBvdmVyCj4g dGhlIHRhcmdldCBkb21haW4ncyBkZXZpY2VzIGxpc3QuCj4gCj4gRHVyaW5nIGF0dGFjaCBvZiBh IFMxIGRvbWFpbiB3ZSBtdXN0IGVuc3VyZSB0aGF0IHRoZSBkZXZpY2VzIGxpc3QgYW5kCj4gQ0Qg YXJlIGluIHN5bmMsIG90aGVyd2lzZSB3ZSBjb3VsZCBtaXNzIENEIHVwZGF0ZXMgb3IgYSBwYXJh bGxlbCBDRCB1cGRhdGUKPiBjb3VsZCBwdXNoIGFuIG91dCBvZiBkYXRlIENELgo+IAo+IFRoaXMg aXMgcHJldHR5IGNvbXBsaWNhdGVkLCBhbmQgYWxtb3N0IHdvcmtzIHRvZGF5IGJlY2F1c2UKPiBh cm1fc21tdV9kZXRhY2hfZGV2KCkgcmVtb3ZlcyB0aGUgbWFzdGVyIGZyb20gdGhlIGxpbmtlZCBs aXN0IGJlZm9yZQo+IHdvcmtpbmcgb24gdGhlIENEIGVudHJpZXMsIHByZXZlbnRpbmcgcGFyYWxs ZWwgdXBkYXRlIG9mIHRoZSBDRC4KPiAKPiBIb3dldmVyLCBpdCBkb2VzIGhhdmUgYW4gaXNzdWUg d2hlcmUgdGhlIENEIGNhbiByZW1haW4gcHJvZ3JhbWVkIHdoaWxlIHRoZQo+IGRvbWFpbiBhcHBl YXJzIHRvIGJlIHVuYXR0YWNoZWQuIGFybV9zbW11X3NoYXJlX2FzaWQoKSB3aWxsIHRoZW4gbm90 IGNsZWFyCj4gYW55IENEIGVudHJpZXNzIGFuZCBpbnN0YWxsIGl0cyBvd24gQ0QgZW50cnkgd2l0 aCB0aGUgc2FtZSBBU0lECj4gY29uY3VycmVudGx5LiBUaGlzIGNyZWF0ZXMgYSBzbWFsbCByYWNl IHdpbmRvdyB3aGVyZSB0aGUgSU9NTVUgY2FuIHNlZSB0d28KPiBBU0lEcyBwb2ludGluZyB0byBk aWZmZXJlbnQgdHJhbnNsYXRpb25zLgoKSSBkb27igJl0IHNlZSB0aGUgcmFjZSBjb25kaXRpb24u CgpUaGUgY3VycmVudCBmbG93IGlzIGFzIGZvbGxvd3MsCkZvciBTVkEsIGlmIHRoZSBhc2lkIHdh cyB1c2VkIGJ5IGRvbWFpbl94LCBpdCB3aWxsIGRvOgoKbG9jayhhcm1fc21tdV9hc2lkX2xvY2sp CkFsbG9jIG5ldyBhc2lkIGFuZCBzZXQgY2QtPmFzaWQuCmxvY2soZG9tYWluX3gtPmRldmljZXNf bG9jaykKV3JpdGUgbmV3IENEIHdpdGggdGhlIG5ldyBhc2lkCnVubG9jayhkb21haW5feC0+ZGV2 aWNlc19sb2NrKQp1bmxvY2soYXJtX3NtbXVfYXNpZF9sb2NrKQoKRm9yIGF0dGFjaF9kZXYgKGRv bWFpbl95KSwgaWYgdGhlIGRldmljZSB3YXMgYXR0YWNoZWQgdG8gZG9tYWluX3oKLy9EZXRhY2gg b2xkIGRvbWFpbgpsb2NrKGRvbWFpbl96LT5kZXZpY2VzX2xvY2spClJlbW92ZSBtYXN0ZXIgZnJv bSBvbGQgZG9tYWluCnVubG9jayhkb21haW5fei0+ZGV2aWNlc19sb2NrKQpDbGVhciBDRAovL0F0 dGFjaCBuZXcgZG9tYWluCmxvY2soYXJtX3NtbXVfYXNpZF9sb2NrKQpBbGxvY2F0ZSBBU0lECnVu bG9jayhhcm1fc21tdV9hc2lkX2xvY2spCgpsb2NrKGRvbWFpbl95LT5kZXZpY2VzX2xvY2spCklu c2VydCBuZXcgbWFzdGVyLgp1bmxvY2soZG9tYWluX3ktPmRldmljZXNfbG9jaykKCmxvY2soYXJt X3NtbXVfYXNpZF9sb2NrKQpXcml0ZSBDRAp1bmxvY2soYXJtX3NtbXVfYXNpZF9sb2NrKQoKCklu IGNhc2UKMSkgZG9tYWluX3ggPT0gZG9tYWluX3oob2xkIGRvbWFpbikKV3JpdGUgdG8gdGhlIENE IGlzIHByb3RlY3RlZCBieSBkb21haW5feC0+ZGV2aWNlc19sb2NrLCBzbyBlaXRoZXI6CiAgICBh KSBUaGUgZGV2aWNlIHdpbGwgYmUgcmVtb3ZlZCwgc28gU1ZBIGNvZGUgd2lsbCBub3QgdG91Y2gg aXQsIGFuZCB0aGUKICAgIGRldGFjaCB3aWxsIGNsZWFyIHRoZSBDRC4KICAgIGIpIFRoZSBkZXZp Y2UgQ0Qgd2lsbCBiZSB1cGRhdGVkIGZyb20gdGhlIFNWQSB3aXRoIHRoZSBuZXcgY29kZSwgYnV0 IHRoZW4KICAgIGl0IHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSBkb21haW4gYW5kIGNsZWFyZWQu CgpJIGRvbuKAmXQgc2VlIGFueSBjYXNlIHdoZXJlIHdlIGVuZCB3aXRoIGEgcHJvZ3JhbW1lZCBD RC4KCjIpIGRvbWFpbl94ID09IGRvbWFpbl95KG5ldyBkb21haW4pCgpTaW1pbGFybHkgdGhlIGRl dmljZSB3b3VsZCBlaXRoZXIgc2VlIHRoZSBuZXcgQ0QobmV3IGFzaWQpIG9yIHRoZSBvbGQgQ0QK dGhlbiB0aGUgbmV3IENELgoKQ2FuIHlvdSBwbGVhc2UgY2xhcmlmeSB0aGUgcmFjZSBjb25kaXRp b24/IGFzIGl0IHNlZW1zIEkgYW0gbWlzc2luZyBzb21ldGhpbmcuCgo+IFNvbHZlIHRoaXMgYnkg d3JhcHBpbmcgbW9zdCBvZiB0aGUgYXR0YWNoIGZsb3cgaW4gdGhlCj4gYXJtX3NtbXVfYXNpZF9s b2NrLiBUaGlzIGxvY2tzIG1vcmUgdGhhbiBzdHJpY3RseSBuZWVkZWQgdG8gcHJlcGFyZSBmb3IK PiB0aGUgbmV4dCBwYXRjaCB3aGljaCB3aWxsIHJlb3JnYW5pemUgdGhlIG9yZGVyIG9mIHRoZSBs aW5rZWQgbGlzdCwgU1RFIGFuZAo+IENEIGNoYW5nZXMuCj4gCj4gTW92ZSBhcm1fc21tdV9kZXRh Y2hfZGV2KCkgdGlsbCBhZnRlciB3ZSBoYXZlIGluaXRpYWxpemVkIHRoZSBkb21haW4gc28KPiB0 aGUgbG9jayBjYW4gYmUgaGVsZCBmb3IgbGVzcyB0aW1lLgo+IAo+IFJldmlld2VkLWJ5OiBNaWNo YWVsIFNoYXZpdCA8bXNoYXZpdEBnb29nbGUuY29tPgo+IFJldmlld2VkLWJ5OiBOaWNvbGluIENo ZW4gPG5pY29saW5jQG52aWRpYS5jb20+Cj4gVGVzdGVkLWJ5OiBTaGFtZWVyIEtvbG90aHVtIDxz aGFtZWVyYWxpLmtvbG90aHVtLnRob2RpQGh1YXdlaS5jb20+Cj4gVGVzdGVkLWJ5OiBOaWNvbGlu IENoZW4gPG5pY29saW5jQG52aWRpYS5jb20+Cj4gVGVzdGVkLWJ5OiBNb3JpdHogRmlzY2hlciA8 bW9yaXR6ZkBnb29nbGUuY29tPgo+IFNpZ25lZC1vZmYtYnk6IEphc29uIEd1bnRob3JwZSA8amdn QG52aWRpYS5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvaW9tbXUvYXJtL2FybS1zbW11LXYzL2FybS1z bW11LXYzLmMgfCAyMiArKysrKysrKysrKystLS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDEz IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv aW9tbXUvYXJtL2FybS1zbW11LXYzL2FybS1zbW11LXYzLmMgYi9kcml2ZXJzL2lvbW11L2FybS9h cm0tc21tdS12My9hcm0tc21tdS12My5jCj4gaW5kZXggOWE5NWQwZjE0OTQyMjMuLjUzOWVmMzgw ZjQ1N2ZhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvaW9tbXUvYXJtL2FybS1zbW11LXYzL2FybS1z bW11LXYzLmMKPiArKysgYi9kcml2ZXJzL2lvbW11L2FybS9hcm0tc21tdS12My9hcm0tc21tdS12 My5jCj4gQEAgLTI2MTIsOCArMjYxMiw2IEBAIHN0YXRpYyBpbnQgYXJtX3NtbXVfYXR0YWNoX2Rl dihzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4sIHN0cnVjdCBkZXZpY2UgKmRldikKPiAgCQly ZXR1cm4gLUVCVVNZOwo+ICAJfQo+ICAKPiAtCWFybV9zbW11X2RldGFjaF9kZXYobWFzdGVyKTsK PiAtCj4gIAltdXRleF9sb2NrKCZzbW11X2RvbWFpbi0+aW5pdF9tdXRleCk7Cj4gIAo+ICAJaWYg KCFzbW11X2RvbWFpbi0+c21tdSkgewo+IEBAIC0yNjI4LDYgKzI2MjYsMTYgQEAgc3RhdGljIGlu dCBhcm1fc21tdV9hdHRhY2hfZGV2KHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiwgc3RydWN0 IGRldmljZSAqZGV2KQo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiArCS8qCj4g KwkgKiBQcmV2ZW50IGFybV9zbW11X3NoYXJlX2FzaWQoKSBmcm9tIHRyeWluZyB0byBjaGFuZ2Ug dGhlIEFTSUQKPiArCSAqIG9mIGVpdGhlciB0aGUgb2xkIG9yIG5ldyBkb21haW4gd2hpbGUgd2Ug YXJlIHdvcmtpbmcgb24gaXQuCj4gKwkgKiBUaGlzIGFsbG93cyB0aGUgU1RFIGFuZCB0aGUgc21t dV9kb21haW4tPmRldmljZXMgbGlzdCB0bwo+ICsJICogYmUgaW5jb25zaXN0ZW50IGR1cmluZyB0 aGlzIHJvdXRpbmUuCj4gKwkgKi8KPiArCW11dGV4X2xvY2soJmFybV9zbW11X2FzaWRfbG9jayk7 Cj4gKwo+ICsJYXJtX3NtbXVfZGV0YWNoX2RldihtYXN0ZXIpOwo+ICsKPiAgCW1hc3Rlci0+ZG9t YWluID0gc21tdV9kb21haW47Cj4gIAo+ICAJLyoKPiBAQCAtMjY1MywxMyArMjY2MSw3IEBAIHN0 YXRpYyBpbnQgYXJtX3NtbXVfYXR0YWNoX2RldihzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4s IHN0cnVjdCBkZXZpY2UgKmRldikKPiAgCQkJfQo+ICAJCX0KPiAgCj4gLQkJLyoKPiAtCQkgKiBQ cmV2ZW50IFNWQSBmcm9tIGNvbmN1cnJlbnRseSBtb2RpZnlpbmcgdGhlIENEIG9yIHdyaXRpbmcg dG8KPiAtCQkgKiB0aGUgQ0QgZW50cnkKPiAtCQkgKi8KPiAtCQltdXRleF9sb2NrKCZhcm1fc21t dV9hc2lkX2xvY2spOwo+ICAJCXJldCA9IGFybV9zbW11X3dyaXRlX2N0eF9kZXNjKG1hc3Rlciwg SU9NTVVfTk9fUEFTSUQsICZzbW11X2RvbWFpbi0+Y2QpOwo+IC0JCW11dGV4X3VubG9jaygmYXJt X3NtbXVfYXNpZF9sb2NrKTsKPiAgCQlpZiAocmV0KSB7Cj4gIAkJCW1hc3Rlci0+ZG9tYWluID0g TlVMTDsKPiAgCQkJZ290byBvdXRfbGlzdF9kZWw7Cj4gQEAgLTI2NjksMTMgKzI2NzEsMTUgQEAg c3RhdGljIGludCBhcm1fc21tdV9hdHRhY2hfZGV2KHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFp biwgc3RydWN0IGRldmljZSAqZGV2KQo+ICAJYXJtX3NtbXVfaW5zdGFsbF9zdGVfZm9yX2Rldiht YXN0ZXIpOwo+ICAKPiAgCWFybV9zbW11X2VuYWJsZV9hdHMobWFzdGVyKTsKPiAtCXJldHVybiAw Owo+ICsJZ290byBvdXRfdW5sb2NrOwo+ICAKPiAgb3V0X2xpc3RfZGVsOgo+ICAJc3Bpbl9sb2Nr X2lycXNhdmUoJnNtbXVfZG9tYWluLT5kZXZpY2VzX2xvY2ssIGZsYWdzKTsKPiAgCWxpc3RfZGVs KCZtYXN0ZXItPmRvbWFpbl9oZWFkKTsKPiAgCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNtbXVf ZG9tYWluLT5kZXZpY2VzX2xvY2ssIGZsYWdzKTsKPiAgCj4gK291dF91bmxvY2s6Cj4gKwltdXRl eF91bmxvY2soJmFybV9zbW11X2FzaWRfbG9jayk7Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+ IC0tIAo+IDIuNDMuMAo+IAoKVGhhbmtzLApNb3N0YWZhCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdAps aW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVh ZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==