From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from out30-132.freemail.mail.aliyun.com ([115.124.30.132]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nSEAT-00Bu5y-L0 for linux-um@lists.infradead.org; Thu, 10 Mar 2022 08:29:07 +0000 Message-ID: <1646900411.6481435-2-xuanzhuo@linux.alibaba.com> Subject: Re: [PATCH v7 17/26] virtio_pci: queue_reset: support VIRTIO_F_RING_RESET Date: Thu, 10 Mar 2022 16:20:11 +0800 From: Xuan Zhuo References: <20220308123518.33800-1-xuanzhuo@linux.alibaba.com> <20220308123518.33800-18-xuanzhuo@linux.alibaba.com> <8b9d337d-71c2-07b4-8e65-6f83cf09bf7a@redhat.com> In-Reply-To: <8b9d337d-71c2-07b4-8e65-6f83cf09bf7a@redhat.com> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-um" Errors-To: linux-um-bounces+geert=linux-m68k.org@lists.infradead.org To: Jason Wang Cc: Jeff Dike , Richard Weinberger , Anton Ivanov , "Michael S. Tsirkin" , "David S. Miller" , Jakub Kicinski , Hans de Goede , Mark Gross , Vadim Pasternak , Bjorn Andersson , Mathieu Poirier , Cornelia Huck , Halil Pasic , Heiko Carstens , Vasily Gorbik , Christian Borntraeger , Alexander Gordeev , Sven Schnelle , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , Johannes Berg , Vincent Whitchurch , linux-um@lists.infradead.org, platform-driver-x86@vger.kernel.org, linux-remoteproc@vger.kernel.org, linux-s390@vger.kernel.org, kvm@vger.kernel.org, bpf@vger.kernel.org, virtualization@lists.linux-foundation.org, netdev@vger.kernel.org T24gV2VkLCA5IE1hciAyMDIyIDE2OjU0OjEwICswODAwLCBKYXNvbiBXYW5nIDxqYXNvd2FuZ0By ZWRoYXQuY29tPiB3cm90ZToKPgo+IOWcqCAyMDIyLzMvOCDkuIvljYg4OjM1LCBYdWFuIFpodW8g 5YaZ6YGTOgo+ID4gVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHZpcnRpbyBwY2kgc3VwcG9ydCBmb3Ig UVVFVUUgUkVTRVQuCj4gPgo+ID4gUGVyZm9ybWluZyByZXNldCBvbiBhIHF1ZXVlIGlzIGRpdmlk ZWQgaW50byB0aGVzZSBzdGVwczoKPiA+Cj4gPiAgIDEuIHZpcnRpb19yZXNldF92cSgpICAgICAg ICAgICAgICAtIG5vdGlmeSB0aGUgZGV2aWNlIHRvIHJlc2V0IHRoZSBxdWV1ZQo+ID4gICAyLiB2 aXJ0cXVldWVfZGV0YWNoX3VudXNlZF9idWYoKSAgLSByZWN5Y2xlIHRoZSBidWZmZXIgc3VibWl0 dGVkCj4gPiAgIDMuIHZpcnRxdWV1ZV9yZXNldF92cmluZygpICAgICAgICAtIHJlc2V0IHRoZSB2 cmluZyAobWF5IHJlLWFsbG9jKQo+ID4gICA0LiB2aXJ0aW9fZW5hYmxlX3Jlc2V0cSgpICAgICAg ICAgLSBtbWFwIHZyaW5nIHRvIGRldmljZSwgYW5kIGVuYWJsZSB0aGUgcXVldWUKPiA+Cj4gPiBU aGlzIHBhdGNoIGltcGxlbWVudHMgdmlydGlvX3Jlc2V0X3ZxKCksIHZpcnRpb19lbmFibGVfcmVz ZXRxKCkgaW4gdGhlCj4gPiBwY2kgc2NlbmFyaW8uCj4gPgo+ID4gU2lnbmVkLW9mZi1ieTogWHVh biBaaHVvIDx4dWFuemh1b0BsaW51eC5hbGliYWJhLmNvbT4KPiA+IC0tLQo+ID4gICBkcml2ZXJz L3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jIHwgIDggKy0tCj4gPiAgIGRyaXZlcnMvdmlydGlv L3ZpcnRpb19wY2lfbW9kZXJuLmMgfCA4MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK PiA+ICAgMiBmaWxlcyBjaGFuZ2VkLCA4OCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQo+ ID4KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jIGIv ZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYwo+ID4gaW5kZXggZmRiZGUxZGI1ZWM1 Li44NjNkM2E4YTA5NTYgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNp X2NvbW1vbi5jCj4gPiArKysgYi9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jCj4g PiBAQCAtMjQ4LDkgKzI0OCwxMSBAQCBzdGF0aWMgdm9pZCB2cF9kZWxfdnEoc3RydWN0IHZpcnRx dWV1ZSAqdnEpCj4gPiAgIAlzdHJ1Y3QgdmlydGlvX3BjaV92cV9pbmZvICppbmZvID0gdnBfZGV2 LT52cXNbdnEtPmluZGV4XTsKPiA+ICAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gPgo+ID4gLQlz cGluX2xvY2tfaXJxc2F2ZSgmdnBfZGV2LT5sb2NrLCBmbGFncyk7Cj4gPiAtCWxpc3RfZGVsKCZp bmZvLT5ub2RlKTsKPiA+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdnBfZGV2LT5sb2NrLCBm bGFncyk7Cj4gPiArCWlmICghdnEtPnJlc2V0KSB7Cj4gPiArCQlzcGluX2xvY2tfaXJxc2F2ZSgm dnBfZGV2LT5sb2NrLCBmbGFncyk7Cj4gPiArCQlsaXN0X2RlbCgmaW5mby0+bm9kZSk7Cj4gPiAr CQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ2cF9kZXYtPmxvY2ssIGZsYWdzKTsKPiA+ICsJfQo+ ID4KPiA+ICAgCXZwX2Rldi0+ZGVsX3ZxKGluZm8pOwo+ID4gICAJa2ZyZWUoaW5mbyk7Cj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYyBiL2RyaXZlcnMv dmlydGlvL3ZpcnRpb19wY2lfbW9kZXJuLmMKPiA+IGluZGV4IDQ5YTQ0OTM3MzJjZi4uM2M2N2Qz NjA3ODAyIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4u Ywo+ID4gKysrIGIvZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYwo+ID4gQEAgLTM0 LDYgKzM0LDkgQEAgc3RhdGljIHZvaWQgdnBfdHJhbnNwb3J0X2ZlYXR1cmVzKHN0cnVjdCB2aXJ0 aW9fZGV2aWNlICp2ZGV2LCB1NjQgZmVhdHVyZXMpCj4gPiAgIAlpZiAoKGZlYXR1cmVzICYgQklU X1VMTChWSVJUSU9fRl9TUl9JT1YpKSAmJgo+ID4gICAJCQlwY2lfZmluZF9leHRfY2FwYWJpbGl0 eShwY2lfZGV2LCBQQ0lfRVhUX0NBUF9JRF9TUklPVikpCj4gPiAgIAkJX192aXJ0aW9fc2V0X2Jp dCh2ZGV2LCBWSVJUSU9fRl9TUl9JT1YpOwo+ID4gKwo+ID4gKwlpZiAoZmVhdHVyZXMgJiBCSVRf VUxMKFZJUlRJT19GX1JJTkdfUkVTRVQpKQo+ID4gKwkJX192aXJ0aW9fc2V0X2JpdCh2ZGV2LCBW SVJUSU9fRl9SSU5HX1JFU0VUKTsKPiA+ICAgfQo+ID4KPiA+ICAgLyogdmlydGlvIGNvbmZpZy0+ ZmluYWxpemVfZmVhdHVyZXMoKSBpbXBsZW1lbnRhdGlvbiAqLwo+ID4gQEAgLTE5OSw2ICsyMDIs ODIgQEAgc3RhdGljIGludCB2cF9hY3RpdmVfdnEoc3RydWN0IHZpcnRxdWV1ZSAqdnEsIHUxNiBt c2l4X3ZlYykKPiA+ICAgCXJldHVybiAwOwo+ID4gICB9Cj4gPgo+ID4gK3N0YXRpYyBpbnQgdnBf bW9kZXJuX3Jlc2V0X3ZxKHN0cnVjdCB2aXJ0cXVldWUgKnZxKQo+ID4gK3sKPiA+ICsJc3RydWN0 IHZpcnRpb19wY2lfZGV2aWNlICp2cF9kZXYgPSB0b192cF9kZXZpY2UodnEtPnZkZXYpOwo+ID4g KwlzdHJ1Y3QgdmlydGlvX3BjaV9tb2Rlcm5fZGV2aWNlICptZGV2ID0gJnZwX2Rldi0+bWRldjsK PiA+ICsJc3RydWN0IHZpcnRpb19wY2lfdnFfaW5mbyAqaW5mbzsKPiA+ICsJdW5zaWduZWQgbG9u ZyBmbGFnczsKPiA+ICsJdW5zaWduZWQgaW50IGlycTsKPiA+ICsKPiA+ICsJaWYgKCF2aXJ0aW9f aGFzX2ZlYXR1cmUodnEtPnZkZXYsIFZJUlRJT19GX1JJTkdfUkVTRVQpKQo+ID4gKwkJcmV0dXJu IC1FTk9FTlQ7Cj4gPiArCj4gPiArCXZwX21vZGVybl9zZXRfcXVldWVfcmVzZXQobWRldiwgdnEt PmluZGV4KTsKPiA+ICsKPiA+ICsJaW5mbyA9IHZwX2Rldi0+dnFzW3ZxLT5pbmRleF07Cj4gPiAr Cj4gPiArCS8qIGRlbGV0ZSB2cSBmcm9tIGlycSBoYW5kbGVyICovCj4gPiArCXNwaW5fbG9ja19p cnFzYXZlKCZ2cF9kZXYtPmxvY2ssIGZsYWdzKTsKPiA+ICsJbGlzdF9kZWwoJmluZm8tPm5vZGUp Owo+ID4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ2cF9kZXYtPmxvY2ssIGZsYWdzKTsKPiA+ ICsKPiA+ICsJSU5JVF9MSVNUX0hFQUQoJmluZm8tPm5vZGUpOwo+ID4gKwo+ID4gKwl2cS0+cmVz ZXQgPSBWSVJUSU9fVlFfUkVTRVRfU1RFUF9ERVZJQ0U7Cj4gPiArCj4gPiArCS8qIHN5bmMgaXJx IGNhbGxiYWNrLiAqLwo+ID4gKwlpZiAodnBfZGV2LT5pbnR4X2VuYWJsZWQpIHsKPiA+ICsJCWly cSA9IHZwX2Rldi0+cGNpX2Rldi0+aXJxOwo+ID4gKwo+ID4gKwl9IGVsc2Ugewo+ID4gKwkJaWYg KGluZm8tPm1zaXhfdmVjdG9yID09IFZJUlRJT19NU0lfTk9fVkVDVE9SKQo+ID4gKwkJCXJldHVy biAwOwo+ID4gKwo+ID4gKwkJaXJxID0gcGNpX2lycV92ZWN0b3IodnBfZGV2LT5wY2lfZGV2LCBp bmZvLT5tc2l4X3ZlY3Rvcik7Cj4gPiArCX0KPiA+ICsKPiA+ICsJc3luY2hyb25pemVfaXJxKGly cSk7Cj4KPgo+IFN5bmNocm9uaXplX2lycSgpIGlzIG5vdCBzdWZmaWNpZW50IGhlcmUgc2luY2Ug aXQgYnJlYWtzIHRoZSBlZmZvcnQgb2YKPiB0aGUgaW50ZXJydXB0IGhhcmRlbmluZyB3aGljaCBp cyBkb25lIGJ5IGNvbW1pdHM6Cj4KPiAwODBjZDdjM2FjODcgdmlydGlvLXBjaTogaGFyZGVuIElO VFggaW50ZXJydXB0cwo+IDllMzUyNzZhNTM0NCB2aXJ0aW9fcGNpOiBoYXJkZW4gTVNJLVggaW50 ZXJydXB0cwo+Cj4gVW5mb3J0dW5hdGVsecKgIDA4MGNkN2MzYWM4NyBpbnRyb2R1Y2VzIGFuIGlz c3VlIHRoYXQgZGlzYWJsZV9pcnEoKSB3ZXJlCj4gdXNlZCBmb3IgdGhlIGFmZmluaXR5IG1hbmFn ZWQgaXJxIGJ1dCB3ZSdyZSBkaXNjdXNzaW5nIGEgZml4Lgo+CgoKb2ssIEkgdGhpbmsgZGlzYWJs ZV9pcnEoKSBpcyBzdGlsbCB1c2VkIGhlcmUuCgpJIHdhbnQgdG8gZGV0ZXJtaW5lIHRoZSBzb2x1 dGlvbiBmb3IgdGhpcyBkZXRhaWwgZmlyc3QuIFNvIEkgcG9zdGVkIHRoZSBjb2RlLCBJCmhvcGUg SmFzb24gY2FuIGhlbHAgY29uZmlybSB0aGlzIHBvaW50IGZpcnN0LgoKVGhlcmUgYXJlIHRocmVl IHNpdHVhdGlvbnMgaW4gd2hpY2ggdnEgY29ycmVzcG9uZHMgdG8gYW4gaW50ZXJydXB0CgoxLiBp bnR4CjIuIG1zaXg6IHBlciB2cSB2ZWN0b3JzCjIuIG1zaXg6IHNoYXJlIGlycQoKRXNzZW50aWFs bHkgY2FuIGJlIGRpdmlkZWQgaW50byB0d28gY2F0ZWdvcmllczogcGVyIHZxIHZlY3RvcnMgYW5k IHNoYXJlIGlycS4KCkZvciBzaGFyZSBpcnEgaXMgYmFzZWQgb24gdmlydHF1ZXVlcyB0byBmaW5k IHZxLCBzbyBJIHRoaW5rIGl0IGlzIHNhZmUgYXMgbG9uZwphcyBsaXN0X2RlbCgpIGlzIGV4ZWN1 dGVkIHVuZGVyIHRoZSBwcm90ZWN0aW9uIG9mIHRoZSBsb2NrLgoKSW4gdGhlIGNhc2Ugb2YgcGVy IHZxIHZlY3RvcnMsIGRpc2FibGVfaXJxKCkgaXMgdXNlZC4KClRoYW5rcy4KCitzdGF0aWMgaW50 IHZwX21vZGVybl9yZXNldF92cShzdHJ1Y3QgdmlydHF1ZXVlICp2cSkKK3sKKyAgICAgICBzdHJ1 Y3QgdmlydGlvX3BjaV9kZXZpY2UgKnZwX2RldiA9IHRvX3ZwX2RldmljZSh2cS0+dmRldik7Cisg ICAgICAgc3RydWN0IHZpcnRpb19wY2lfbW9kZXJuX2RldmljZSAqbWRldiA9ICZ2cF9kZXYtPm1k ZXY7CisgICAgICAgc3RydWN0IHZpcnRpb19wY2lfdnFfaW5mbyAqaW5mbzsKKyAgICAgICB1bnNp Z25lZCBsb25nIGZsYWdzOworICAgICAgIHVuc2lnbmVkIGludCBpcnE7CisKKyAgICAgICBpZiAo IXZpcnRpb19oYXNfZmVhdHVyZSh2cS0+dmRldiwgVklSVElPX0ZfUklOR19SRVNFVCkpCisgICAg ICAgICAgICAgICByZXR1cm4gLUVOT0VOVDsKKworICAgICAgIHZwX21vZGVybl9zZXRfcXVldWVf cmVzZXQobWRldiwgdnEtPmluZGV4KTsKKworICAgICAgIGluZm8gPSB2cF9kZXYtPnZxc1t2cS0+ aW5kZXhdOworCisgICAgICAgLyogZGVsZXRlIHZxIGZyb20gaXJxIGhhbmRsZXIgKi8KKyAgICAg ICBzcGluX2xvY2tfaXJxc2F2ZSgmdnBfZGV2LT5sb2NrLCBmbGFncyk7CisgICAgICAgbGlzdF9k ZWwoJmluZm8tPm5vZGUpOworICAgICAgIHZwX21vZGVybl9zZXRfcXVldWVfcmVzZXQobWRldiwg dnEtPmluZGV4KTsKKworICAgICAgIGluZm8gPSB2cF9kZXYtPnZxc1t2cS0+aW5kZXhdOworCisg ICAgICAgLyogZGVsZXRlIHZxIGZyb20gaXJxIGhhbmRsZXIgKi8KKyAgICAgICBzcGluX2xvY2tf aXJxc2F2ZSgmdnBfZGV2LT5sb2NrLCBmbGFncyk7CisgICAgICAgbGlzdF9kZWwoJmluZm8tPm5v ZGUpOworICAgICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnZwX2Rldi0+bG9jaywgZmxhZ3Mp OworCisgICAgICAgSU5JVF9MSVNUX0hFQUQoJmluZm8tPm5vZGUpOworCisgICAgICAgLyogRm9y IHRoZSBjYXNlIHdoZXJlIHZxIGhhcyBhbiBleGNsdXNpdmUgaXJxLCB0byBwcmV2ZW50IHRoZSBp cnEgZnJvbQorICAgICAgICAqIGJlaW5nIHJlY2VpdmVkIGFnYWluIGFuZCB0aGUgcGVuZGluZyBp cnEsIGNhbGwgZGlzYWJsZV9pcnEoKS4KKyAgICAgICAgKgorICAgICAgICAqIEluIHRoZSBzY2Vu YXJpbyBiYXNlZCBvbiBzaGFyZWQgaW50ZXJydXB0cywgdnEgd2lsbCBiZSBzZWFyY2hlZCBmcm9t CisgICAgICAgICogdGhlIHF1ZXVlIHZpcnRxdWV1ZXMuIFNpbmNlIHRoZSBwcmV2aW91cyBsaXN0 X2RlbCgpIGhhcyBiZWVuIGRlbGV0ZWQKKyAgICAgICAgKiBmcm9tIHRoZSBxdWV1ZSwgaXQgaXMg aW1wb3NzaWJsZSBmb3IgdnEgdG8gYmUgY2FsbGVkIGluIHRoaXMgY2FzZS4KKyAgICAgICAgKiBU aGVyZSBpcyBubyBuZWVkIHRvIGNsb3NlIHRoZSBjb3JyZXNwb25kaW5nIGludGVycnVwdC4KKyAg ICAgICAgKi8KKyAgICAgICBpZiAodnBfZGV2LT5wZXJfdnFfdmVjdG9ycyAmJiBtc2l4X3ZlYyAh PSBWSVJUSU9fTVNJX05PX1ZFQ1RPUikKKyAgICAgICAgICAgICAgIGRpc2FibGVfaXJxKHBjaV9p cnFfdmVjdG9yKHZwX2Rldi0+cGNpX2RldiwgaW5mby0+bXNpeF92ZWN0b3IpKTsKKworICAgICAg IHZxLT5yZXNldCA9IHRydWU7CisKKyAgICAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCB2 cF9tb2Rlcm5fZW5hYmxlX3Jlc2V0X3ZxKHN0cnVjdCB2aXJ0cXVldWUgKnZxKQoreworICAgICAg IHN0cnVjdCB2aXJ0aW9fcGNpX2RldmljZSAqdnBfZGV2ID0gdG9fdnBfZGV2aWNlKHZxLT52ZGV2 KTsKKyAgICAgICBzdHJ1Y3QgdmlydGlvX3BjaV9tb2Rlcm5fZGV2aWNlICptZGV2ID0gJnZwX2Rl di0+bWRldjsKKyAgICAgICBzdHJ1Y3QgdmlydGlvX3BjaV92cV9pbmZvICppbmZvOworICAgICAg IHVuc2lnbmVkIGxvbmcgZmxhZ3MsIGluZGV4OworICAgICAgIGludCBlcnI7CisKKyAgICAgICBp ZiAoIXZxLT5yZXNldCkKKyAgICAgICAgICAgICAgIHJldHVybiAtRUJVU1k7CisKKyAgICAgICBp bmRleCA9IHZxLT5pbmRleDsKKyAgICAgICBpbmZvID0gdnBfZGV2LT52cXNbaW5kZXhdOworCisg ICAgICAgLyogY2hlY2sgcXVldWUgcmVzZXQgc3RhdHVzICovCisgICAgICAgaWYgKHZwX21vZGVy bl9nZXRfcXVldWVfcmVzZXQobWRldiwgaW5kZXgpICE9IDEpCisgICAgICAgICAgICAgICByZXR1 cm4gLUVCVVNZOworCisgICAgICAgZXJyID0gdnBfYWN0aXZlX3ZxKHZxLCBpbmZvLT5tc2l4X3Zl Y3Rvcik7CisgICAgICAgaWYgKGVycikKKyAgICAgICAgICAgICAgIHJldHVybiBlcnI7CisKKyAg ICAgICBpZiAodnEtPmNhbGxiYWNrKSB7CisgICAgICAgICAgICAgICBzcGluX2xvY2tfaXJxc2F2 ZSgmdnBfZGV2LT5sb2NrLCBmbGFncyk7CisgICAgICAgICAgICAgICBsaXN0X2FkZCgmaW5mby0+ bm9kZSwgJnZwX2Rldi0+dmlydHF1ZXVlcyk7CisgICAgICAgICAgICAgICBzcGluX3VubG9ja19p cnFyZXN0b3JlKCZ2cF9kZXYtPmxvY2ssIGZsYWdzKTsKKyAgICAgICB9IGVsc2UgeworICAgICAg ICAgICAgICAgSU5JVF9MSVNUX0hFQUQoJmluZm8tPm5vZGUpOworICAgICAgIH0KKworICAgICAg IHZwX21vZGVybl9zZXRfcXVldWVfZW5hYmxlKCZ2cF9kZXYtPm1kZXYsIGluZGV4LCB0cnVlKTsK KyAgICAgICB2cS0+cmVzZXQgPSBmYWxzZTsKKworICAgICAgIGlmICh2cF9kZXYtPnBlcl92cV92 ZWN0b3JzICYmIG1zaXhfdmVjICE9IFZJUlRJT19NU0lfTk9fVkVDVE9SKQorICAgICAgICAgICAg ICAgZW5hYmxlX2lycShwY2lfaXJxX3ZlY3Rvcih2cF9kZXYtPnBjaV9kZXYsIGluZm8tPm1zaXhf dmVjdG9yKSk7CisKKyAgICAgICByZXR1cm4gMDsKK30KCgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtdW0gbWFpbGluZyBsaXN0CmxpbnV4LXVt QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC11bQo=