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 79C69C4332F for ; Tue, 20 Dec 2022 21:39:24 +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=U9MR/GhxDUJKvaDcDOW2FRxPZ75VuNKjzly8RUdFdw8=; b=W873QNhOHsZnxz cpsraeMi/U3zzr8K+pbZgRk4+DKd3hGtG+mIYpVPAXYFvCRMRK5erDTFEdm81DJM1ZWCX9A2VwH/p QU6zEs3Bbu/XgsTCpH4IDjaqucc4gcy63FX46/tXFTd//oohbkkEdMATO/ZkosekOwDkpDKnEsGpA SpOCy6oTSPAfKXW+DPzJBHLF67raBw9pbzI+PB6qRyduAGyzPErp+jN655ZHs+xqXcpk4Q9A9e7VJ LxvWkZDVETK6D3Jnhn7Ejtf+lyztylIcyFajm9DwqWz04v63F37F5WPcG7kHJjyN78dr4CRDPkzug p5a8i0Ua+jeSzNhY1pkw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1p7kJT-004TLJ-Tc; Tue, 20 Dec 2022 21:38:16 +0000 Received: from smtp-19.smtpout.orange.fr ([80.12.242.19] helo=smtp.smtpout.orange.fr) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1p7kJO-004T5C-C3 for linux-arm-kernel@lists.infradead.org; Tue, 20 Dec 2022 21:38:13 +0000 Received: from [192.168.1.18] ([86.243.100.34]) by smtp.orange.fr with ESMTPA id 7kJ6pP9chfxUs7kJ6pVCVC; Tue, 20 Dec 2022 22:37:58 +0100 X-ME-Helo: [192.168.1.18] X-ME-Auth: Y2hyaXN0b3BoZS5qYWlsbGV0QHdhbmFkb28uZnI= X-ME-Date: Tue, 20 Dec 2022 22:37:58 +0100 X-ME-IP: 86.243.100.34 Message-ID: Date: Tue, 20 Dec 2022 22:37:51 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Subject: Re: [PATCH v2] iommu: fix smmu initialization memory leak problem To: liulongfang , Robin Murphy , Will Deacon , iommu@lists.linux.dev Cc: "linux-arm-kernel@lists.infradead.org" References: <20221121030421.19295-1-liulongfang@huawei.com> <20221121180552.GB7645@willie-the-truck> <20221129152452.GB26561@willie-the-truck> <20221201133118.GA28489@willie-the-truck> <4fb97e88-92df-2738-a078-f8269aa76870@huawei.com> Content-Language: fr, en-US From: Marion & Christophe JAILLET In-Reply-To: <4fb97e88-92df-2738-a078-f8269aa76870@huawei.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221220_133810_579328_BAD85CEA X-CRM114-Status: GOOD ( 28.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 CkxlIDIwLzEyLzIwMjIgw6AgMDQ6MTcsIGxpdWxvbmdmYW5nIGEgw6ljcml0wqA6Cj4gT24gMjAy Mi8xMi8xIDIxOjMxLCBXaWxsIERlYWNvbiBXcm90ZToKPj4gT24gVGh1LCBEZWMgMDEsIDIwMjIg YXQgMDg6NDI6MDJQTSArMDgwMCwgbGl1bG9uZ2Zhbmcgd3JvdGU6Cj4+PiBPbiAyMDIyLzExLzI5 IDIzOjI0LCBXaWxsIERlYWNvbiB3cm90ZToKPj4+PiBPbiBUdWUsIE5vdiAyMiwgMjAyMiBhdCAw ODowMDozOVBNICswODAwLCBsaXVsb25nZmFuZyB3cm90ZToKPj4+Pj4gT24gMjAyMi8xMS8yMiAy OjA1LCBXaWxsIERlYWNvbiB3cm90ZToKPj4+Pj4+IE9uIE1vbiwgTm92IDIxLCAyMDIyIGF0IDEx OjA0OjIxQU0gKzA4MDAsIExvbmdmYW5nIExpdSB3cm90ZToKPj4+Pj4+PiBXaGVuIGlvbW11X2Rl dmljZV9yZWdpc3RlcigpIGluIGFybV9zbW11X2RldmljZV9wcm9iZSgpIGZhaWxzLAo+Pj4+Pj4+ IGluIGFkZGl0aW9uIHRvIHN5c2ZzIG5lZWRzIHRvIGJlIGRlbGV0ZWQsIGRldmljZSBzaG91bGQg YWxzbwo+Pj4+Pj4+IGJlIGRpc2FibGVkLCBhbmQgdGhlIG1lbW9yeSBvZiBpb3BmIG5lZWRzIHRv IGJlIHJlbGVhc2VkIHRvCj4+Pj4+Pj4gcHJldmVudCBtZW1vcnkgbGVhayBvZiBpb3BmLgo+Pj4+ Pj4+Cj4+Pj4+Pj4gQ2hhbmdlcyB2MSAtPiB2MjoKPj4+Pj4+PiAJLUltcHJvdmUgYXJtX3NtbXVf ZGV2aWNlX3Byb2JlKCkgYWJub3JtYWwgZXhpdCBmdW5jdGlvbi4KPj4+Pj4+Pgo+Pj4+Pj4+IFNp Z25lZC1vZmYtYnk6IExvbmdmYW5nIExpdSA8bGl1bG9uZ2ZhbmdAaHVhd2VpLmNvbT4KPj4+Pj4+ PiAtLS0KPj4+Pj4+PiAgIGRyaXZlcnMvaW9tbXUvYXJtL2FybS1zbW11LXYzL2FybS1zbW11LXYz LmMgfCAxNiArKysrKysrKysrKy0tLS0tCj4+Pj4+Pj4gICAxIGZpbGUgY2hhbmdlZCwgMTEgaW5z ZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKPj4+Pj4+Pgo+Pj4+Pj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2lvbW11L2FybS9hcm0tc21tdS12My9hcm0tc21tdS12My5jIGIvZHJpdmVycy9pb21t dS9hcm0vYXJtLXNtbXUtdjMvYXJtLXNtbXUtdjMuYwo+Pj4+Pj4+IGluZGV4IGFiMTYwMTk4ZWRk Ni4uYjg5MmY1MjMzZjg4IDEwMDY0NAo+Pj4+Pj4+IC0tLSBhL2RyaXZlcnMvaW9tbXUvYXJtL2Fy bS1zbW11LXYzL2FybS1zbW11LXYzLmMKPj4+Pj4+PiArKysgYi9kcml2ZXJzL2lvbW11L2FybS9h cm0tc21tdS12My9hcm0tc21tdS12My5jCj4+Pj4+Pj4gQEAgLTM4MTUsNyArMzgxNSw3IEBAIHN0 YXRpYyBpbnQgYXJtX3NtbXVfZGV2aWNlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXYpCj4+Pj4+Pj4gICAJLyogSW5pdGlhbGlzZSBpbi1tZW1vcnkgZGF0YSBzdHJ1Y3R1cmVzICov Cj4+Pj4+Pj4gICAJcmV0ID0gYXJtX3NtbXVfaW5pdF9zdHJ1Y3R1cmVzKHNtbXUpOwo+Pj4+Pj4+ ICAgCWlmIChyZXQpCj4+Pj4+Pj4gLQkJcmV0dXJuIHJldDsKPj4+Pj4+PiArCQlnb3RvIGVycl9p b3BmOwo+Pj4+Pj4+ICAgCj4+Pj4+Pj4gICAJLyogUmVjb3JkIG91ciBwcml2YXRlIGRldmljZSBz dHJ1Y3R1cmUgKi8KPj4+Pj4+PiAgIAlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBzbW11KTsK Pj4+Pj4+PiBAQCAtMzgyNiwyMiArMzgyNiwyOCBAQCBzdGF0aWMgaW50IGFybV9zbW11X2Rldmlj ZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+Pj4+Pj4+ICAgCS8qIFJlc2V0 IHRoZSBkZXZpY2UgKi8KPj4+Pj4+PiAgIAlyZXQgPSBhcm1fc21tdV9kZXZpY2VfcmVzZXQoc21t dSwgYnlwYXNzKTsKPj4+Pj4+PiAgIAlpZiAocmV0KQo+Pj4+Pj4+IC0JCXJldHVybiByZXQ7Cj4+ Pj4+Pj4gKwkJZ290byBlcnJfaW9wZjsKPj4+Pj4+PiAgIAo+Pj4+Pj4+ICAgCS8qIEFuZCB3ZSdy ZSB1cC4gR28gZ28gZ28hICovCj4+Pj4+Pj4gICAJcmV0ID0gaW9tbXVfZGV2aWNlX3N5c2ZzX2Fk ZCgmc21tdS0+aW9tbXUsIGRldiwgTlVMTCwKPj4+Pj4+PiAgIAkJCQkgICAgICJzbW11My4lcGEi LCAmaW9hZGRyKTsKPj4+Pj4+PiAgIAlpZiAocmV0KQo+Pj4+Pj4+IC0JCXJldHVybiByZXQ7Cj4+ Pj4+Pj4gKwkJZ290byBlcnJfcmVzZXQ7Cj4+Pj4+Pj4gICAKPj4+Pj4+PiAgIAlyZXQgPSBpb21t dV9kZXZpY2VfcmVnaXN0ZXIoJnNtbXUtPmlvbW11LCAmYXJtX3NtbXVfb3BzLCBkZXYpOwo+Pj4+ Pj4+ICAgCWlmIChyZXQpIHsKPj4+Pj4+PiAgIAkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gcmVn aXN0ZXIgaW9tbXVcbiIpOwo+Pj4+Pj4+IC0JCWlvbW11X2RldmljZV9zeXNmc19yZW1vdmUoJnNt bXUtPmlvbW11KTsKPj4+Pj4+PiAtCQlyZXR1cm4gcmV0Owo+Pj4+Pj4+ICsJCWdvdG8gZXJyX3N5 c2ZzX2FkZDsKPj4+Pj4+PiAgIAl9Cj4+Pj4+Pj4gICAKPj4+Pj4+PiAgIAlyZXR1cm4gMDsKPj4+ Pj4+PiArZXJyX3N5c2ZzX2FkZDoKPj4+Pj4+PiArCWlvbW11X2RldmljZV9zeXNmc19yZW1vdmUo JnNtbXUtPmlvbW11KTsKPj4+Pj4+PiArZXJyX3Jlc2V0Ogo+Pj4+Pj4+ICsJYXJtX3NtbXVfZGV2 aWNlX2Rpc2FibGUoc21tdSk7Cj4+Pj4+Pj4gK2Vycl9pb3BmOgo+Pj4+Pj4+ICsJaW9wZl9xdWV1 ZV9mcmVlKHNtbXUtPmV2dHEuaW9wZik7Cj4+Pj4+Pj4gKwlyZXR1cm4gcmV0Owo+Pj4+Pj4gSSBw cmV2aW91c2x5IHN1Z2dlc3RlZCB1c2luZyBkZXZyZXNfYWxsb2MoKSBmb3IgdGhpcyBpbnN0ZWFk LiBEaWQgdGhhdAo+Pj4+Pj4gbm90IHdvcms/Cj4+Pj4+Pgo+Pj4+PiBUaGlzIHBhdGNoIGlzIG9u bHkgZm9yIGZpeGluZyBpb3BmJ3MgbWVtb3J5IGxlYWsuCj4+Pj4+IFRoZSB1c2Ugb2YgZGV2cmVz X2FsbG9jKCkgaXMgYW4gb3B0aW1pemF0aW9uIHNvbHV0aW9uIGZvciBpb3BmIHF1ZXVlIG1hbmFn ZW1lbnQsCj4+Pj4+IHdoaWNoIGlzIGFub3RoZXIgc2V0IG9mIHBhdGNoIG1hdHRlcnMuCj4+Pj4g R3JlYXQsIEkgbG9vayBmb3J3YXJkIHRvIHRoYXQgc2V0IG9mIHBhdGNoZXMhCj4+Pj4KPj4+IFdp bGwgdGhpcyBwYXRjaCBiZSBtZXJnZWQgaW50byB0aGUgbmV4dCBicmFuY2g/Cj4+IEkgZG9uJ3Qg cGxhbiB0byBtZXJnZSB0aGlzIG9uZSwgbm8uIEknbGwgd2FpdCBmb3IgdGhlIG90aGVyIHBhdGNo ZXMgd2hpY2ggZG8KPj4gdGhpcyB1c2luZyBkZXZyZXNfYWxsb2MoKSBpbnN0ZWFkLgo+Pgo+PiBU aGFua3MsCj4+Cj4+IFdpbGwKPj4gLgo+Pgo+IEhpIENocmlzdG9waGU6Cj4gIltQQVRDSF0gaW9t bXUvYXJtLXNtbXUtdjM6IEZpeCBhbiBlcnJvciBoYW5kbGluZyBwYXRoIGluIGFybV9zbW11X2Rl dmljZV9wcm9iZSgpIgo+Cj4gdGhlIHBhdGNoIHlvdSBzZW50IGlzIHRoZSBzYW1lIGFzIG1pbmUu IFRoZSBtYWludGFpbmVyIGhvcGVzIHRvIG9wdGltaXplIHRoZSBxdWV1ZQo+IGFwcGxpY2F0aW9u IHBhcnQgb2YgaW9wZiB3aXRoIGRldnJlc19hbGxvYygpLgoKSGksCgptb3JlIG9yIGxlc3MuCgpZ b3UgYWxzbyBhZGRlZCBhIGFybV9zbW11X2RldmljZV9kaXNhYmxlKCkgY2FsbCBpbiB0aGUgZXJy b3IgaGFuZGxpbmcgcGF0aC4KTG9va3MgZ29vZCB0byBtZSwgYnV0IHNob3VsZCBiZSBjb25maXJt ZWQgYnkgcy5vIHdobyBrbm93cyB0aGUgaGFyZHdhcmUuCgpUaGF0IHNhaWQsIEkgdGhpbmsgdGhh dCB3aGF0IGhhcyBiZWVuIHN1Z2dlc3RlZCBieSBXaWxsIERlYWNvbiB3b3VsZCBiZSAKc29tZXRo aW5nIGxpa2U6CgoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvYXJtL2FybS1zbW11LXYzL2Fy bS1zbW11LXYzLmMgCmIvZHJpdmVycy9pb21tdS9hcm0vYXJtLXNtbXUtdjMvYXJtLXNtbXUtdjMu YwppbmRleCBhYjE2MDE5OGVkZDYuLjE5OTQ5OTBkZWNiOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9p b21tdS9hcm0vYXJtLXNtbXUtdjMvYXJtLXNtbXUtdjMuYworKysgYi9kcml2ZXJzL2lvbW11L2Fy bS9hcm0tc21tdS12My9hcm0tc21tdS12My5jCkBAIC0yOTMwLDYgKzI5MzAsMTEgQEAgc3RhdGlj IGludCBhcm1fc21tdV9jbWRxX2luaXQoc3RydWN0IAphcm1fc21tdV9kZXZpY2UgKnNtbXUpCiDC oMKgwqDCoCByZXR1cm4gMDsKIMKgfQoKK3N0YXRpYyB2b2lkIGFybV9zbW11X2ZyZWVfcXVldWVz KHZvaWQgKnB0cikKK3sKK8KgwqDCoCBpb3BmX3F1ZXVlX2ZyZWUocHRyKTsKK30KKwogwqBzdGF0 aWMgaW50IGFybV9zbW11X2luaXRfcXVldWVzKHN0cnVjdCBhcm1fc21tdV9kZXZpY2UgKnNtbXUp CiDCoHsKIMKgwqDCoMKgIGludCByZXQ7CkBAIC0yOTU3LDYgKzI5NjIsMTEgQEAgc3RhdGljIGlu dCBhcm1fc21tdV9pbml0X3F1ZXVlcyhzdHJ1Y3QgCmFybV9zbW11X2RldmljZSAqc21tdSkKIMKg wqDCoMKgIMKgwqDCoCBzbW11LT5ldnRxLmlvcGYgPSBpb3BmX3F1ZXVlX2FsbG9jKGRldl9uYW1l KHNtbXUtPmRldikpOwogwqDCoMKgwqAgwqDCoMKgIGlmICghc21tdS0+ZXZ0cS5pb3BmKQogwqDC oMKgwqAgwqDCoMKgIMKgwqDCoCByZXR1cm4gLUVOT01FTTsKKworwqDCoMKgIMKgwqDCoCByZXQg PSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoc21tdS0+ZGV2LCBhcm1fc21tdV9mcmVlX3F1ZXVl cywKK8KgwqDCoCDCoMKgwqAgwqDCoMKgIMKgwqDCoCDCoMKgwqAgwqDCoMKgwqDCoMKgIHNtbXUt PmV2dHEuaW9wZik7CivCoMKgwqAgwqDCoMKgIGlmIChyZXQpCivCoMKgwqAgwqDCoMKgIMKgwqDC oCByZXR1cm4gcmV0OwogwqDCoMKgwqAgfQoKIMKgwqDCoMKgIC8qIHByaXEgKi8KQEAgLTM4MzIs MTYgKzM4NDIsMjEgQEAgc3RhdGljIGludCBhcm1fc21tdV9kZXZpY2VfcHJvYmUoc3RydWN0IApw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiDCoMKgwqDCoCByZXQgPSBpb21tdV9kZXZpY2Vfc3lzZnNf YWRkKCZzbW11LT5pb21tdSwgZGV2LCBOVUxMLAogwqDCoMKgwqAgwqDCoMKgIMKgwqDCoCDCoMKg wqAgwqDCoMKgwqAgInNtbXUzLiVwYSIsICZpb2FkZHIpOwogwqDCoMKgwqAgaWYgKHJldCkKLcKg wqDCoCDCoMKgwqAgcmV0dXJuIHJldDsKK8KgwqDCoCDCoMKgwqAgZ290byBlcnJfcmVzZXQ7Cgog wqDCoMKgwqAgcmV0ID0gaW9tbXVfZGV2aWNlX3JlZ2lzdGVyKCZzbW11LT5pb21tdSwgJmFybV9z bW11X29wcywgZGV2KTsKIMKgwqDCoMKgIGlmIChyZXQpIHsKIMKgwqDCoMKgIMKgwqDCoCBkZXZf ZXJyKGRldiwgIkZhaWxlZCB0byByZWdpc3RlciBpb21tdVxuIik7Ci3CoMKgwqAgwqDCoMKgIGlv bW11X2RldmljZV9zeXNmc19yZW1vdmUoJnNtbXUtPmlvbW11KTsKLcKgwqDCoCDCoMKgwqAgcmV0 dXJuIHJldDsKK8KgwqDCoCDCoMKgwqAgZ290byBlcnJfc3lzZnNfYWRkOwogwqDCoMKgwqAgfQoK IMKgwqDCoMKgIHJldHVybiAwOworCitlcnJfc3lzZnNfYWRkOgorwqDCoMKgIGlvbW11X2Rldmlj ZV9zeXNmc19yZW1vdmUoJnNtbXUtPmlvbW11KTsKK2Vycl9yZXNldDoKK8KgwqDCoCBhcm1fc21t dV9kZXZpY2VfZGlzYWJsZShzbW11KTsKK8KgwqDCoCByZXR1cm4gcmV0OwogwqB9CgogwqBzdGF0 aWMgaW50IGFybV9zbW11X2RldmljZV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl dikKQEAgLTM4NTEsNyArMzg2Niw2IEBAIHN0YXRpYyBpbnQgYXJtX3NtbXVfZGV2aWNlX3JlbW92 ZShzdHJ1Y3QgCnBsYXRmb3JtX2RldmljZSAqcGRldikKIMKgwqDCoMKgIGlvbW11X2RldmljZV91 bnJlZ2lzdGVyKCZzbW11LT5pb21tdSk7CiDCoMKgwqDCoCBpb21tdV9kZXZpY2Vfc3lzZnNfcmVt b3ZlKCZzbW11LT5pb21tdSk7CiDCoMKgwqDCoCBhcm1fc21tdV9kZXZpY2VfZGlzYWJsZShzbW11 KTsKLcKgwqDCoCBpb3BmX3F1ZXVlX2ZyZWUoc21tdS0+ZXZ0cS5pb3BmKTsKCiDCoMKgwqDCoCBy ZXR1cm4gMDsKIMKgfQoKCkknbSBub3QgYSByZWFsbHkgYmlnIGZhbiBiZWNhdXNlIGl0IGFkZHMg dG9vIG11Y2ggY29kZSBmb3IgbWUuIEJ1dCBJJ20gCm5vdCBhIG1haW50YWluZXIsIHNvIGxldCB0 aGVtIGhhdmUgdGhlIGxhc3Qgd29yZCBvbiBpdC4KQXQgbGVhc3QsIHRoaXMgYXZvaWRzIGFuIG9k ZCBpb3BmX3F1ZXVlX2ZyZWUoKSBjYWxsIHRoYXQgY29tZXMgZnJvbSAKbm93aGVyZSB3aXRob3V0 IGxvb2tpbmcgZGVlcGVyIGluIHRoZSBjb2RlLgoKSXQgaGFzIGJlZW4gY29tcGlsZSB0ZXN0ZWQg b25seSBvbiBhcm02NC4KCj4gSSBob3BlIHlvdSBjYW4gbW9kaWZ5IGl0LCBhbmQgSSB3aWxsIHF1 aXQgdGhpcyByZXBhaXIgd29yay4KCklmIGl0IHBsZWFzZSB5b3UgYW5kIFdpbGwsIGZlZWwgZnJl ZSB0byBwcm9wb3NlIGl0IGFzIGEgdjMgb2YgeW91ciBwYXRjaC4KCkNKCgo+IFRoYW5rcywKPiBM b25nZmFuZy4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5m cmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xp bnV4LWFybS1rZXJuZWwK