From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yu Zhang Subject: Re: [PATCH v5 4/4] x86/ioreq server: Reset outstanding p2m_ioreq_server entries when an ioreq server unmaps. Date: Tue, 30 Aug 2016 20:17:07 +0800 Message-ID: <57C57943.5030609@linux.intel.com> References: <1468314129-28465-1-git-send-email-yu.c.zhang@linux.intel.com> <1468314129-28465-5-git-send-email-yu.c.zhang@linux.intel.com> <66dee11c-242c-20ff-9581-f42402c31d8b@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <66dee11c-242c-20ff-9581-f42402c31d8b@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: George Dunlap , xen-devel@lists.xen.org Cc: Kevin Tian , Jan Beulich , George Dunlap , Andrew Cooper , Paul Durrant , zhiyuan.lv@intel.com, Jun Nakajima List-Id: xen-devel@lists.xenproject.org CgpPbiA4LzE2LzIwMTYgOTozNSBQTSwgR2VvcmdlIER1bmxhcCB3cm90ZToKPiBPbiAxMi8wNy8x NiAxMDowMiwgWXUgWmhhbmcgd3JvdGU6Cj4+IFRoaXMgcGF0Y2ggcmVzZXRzIHAybV9pb3JlcV9z ZXJ2ZXIgZW50cmllcyBiYWNrIHRvIHAybV9yYW1fcncsCj4+IGFmdGVyIGFuIGlvcmVxIHNlcnZl ciBoYXMgdW5tYXBwZWQuIFRoZSByZXN5bmMgaXMgZG9uZSBib3RoCj4+IGFzeW5jaHJvbm91c2x5 IHdpdGggdGhlIGN1cnJlbnQgcDJtX2NoYW5nZV9lbnRyeV90eXBlX2dsb2JhbCgpCj4+IGludGVy ZmFjZSwgYW5kIHN5bmNocm9ub3VzbHkgYnkgaXRlcmF0aW5nIHRoZSBwMm0gdGFibGUuIFRoZQo+ PiBzeW5jaHJvbm91cyByZXNldHRpbmcgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgbmVlZCB0byBn dWFyYW50ZWUKPj4gdGhlIHAybSB0YWJsZSBpcyBjbGVhbiBiZWZvcmUgYW5vdGhlciBpb3JlcSBz ZXJ2ZXIgaXMgbWFwcGVkLgo+PiBBbmQgc2luY2UgdGhlIHN3ZWVwaW5nIG9mIHAybSB0YWJsZSBj b3VsZCBiZSB0aW1lIGNvbnN1bWluZywKPj4gaXQgaXMgZG9uZSB3aXRoIGh5cGVyY2FsbCBjb250 aW51YXRpb24uIEFzeW5jaHJvbm91cyBhcHByb2FjaAo+PiBpcyBhbHNvIHRha2VuIHNvIHRoYXQg cDJtX2lvcmVxX3NlcnZlciBlbnRyaWVzIGNhbiBhbHNvIGJlIHJlc2V0Cj4+IHdoZW4gdGhlIEhW TSBpcyBzY2hlZHVsZWQgYmV0d2VlbiBoeXBlcmNhbGwgY29udGludWF0aW9ucy4KPj4KPj4gVGhp cyBwYXRjaCBhbHNvIGRpc2FsbG93cyBsaXZlIG1pZ3JhdGlvbiwgd2hlbiB0aGVyZSdzIHN0aWxs IGFueQo+PiBvdXRzdGFuZGluZyBwMm1faW9yZXFfc2VydmVyIGVudHJ5IGxlZnQuIFRoZSBjb3Jl IHJlYXNvbiBpcyBvdXIKPj4gY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBwMm1fY2hhbmdlX2Vu dHJ5X3R5cGVfZ2xvYmFsKCkgY2FuIG5vdAo+PiB0ZWxsIHRoZSBzdGF0ZSBvZiBwMm1faW9yZXFf c2VydmVyIGVudHJpZXMoY2FuIG5vdCBkZWNpZGUgaWYgYW4KPj4gZW50cnkgaXMgdG8gYmUgZW11 bGF0ZWQgb3IgdG8gYmUgcmVzeW5jZWQpLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBZdSBaaGFuZyA8 eXUuYy56aGFuZ0BsaW51eC5pbnRlbC5jb20+Cj4gVGhhbmtzIGZvciBkb2luZyB0aGlzIFl1IFpo YW5nISAgQSBjb3VwbGUgb2YgY29tbWVudHMuCgpUaGFua3MgYSBsb3QgZm9yIHlvdXIgYWR2aWNl LCBHZW9yZ2UuCkFuZCBzb3JyeSBmb3IgdGhlIGRlbGF5ZWQgcmVwbHkoaGFkIGJlZW4gaW4gYW5u dWFsIGxlYXZlIHByZXZpb3VzbHkpLgoKPj4gLS0tCj4+IENjOiBQYXVsIER1cnJhbnQgPHBhdWwu ZHVycmFudEBjaXRyaXguY29tPgo+PiBDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29t Pgo+PiBDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KPj4gQ2M6 IEdlb3JnZSBEdW5sYXAgPGdlb3JnZS5kdW5sYXBAZXUuY2l0cml4LmNvbT4KPj4gQ2M6IEp1biBO YWthamltYSA8anVuLm5ha2FqaW1hQGludGVsLmNvbT4KPj4gQ2M6IEtldmluIFRpYW4gPGtldmlu LnRpYW5AaW50ZWwuY29tPgo+PiAtLS0KPj4gICB4ZW4vYXJjaC94ODYvaHZtL2h2bS5jICAgIHwg NTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KPj4gICB4 ZW4vYXJjaC94ODYvbW0vaGFwL2hhcC5jIHwgIDkgKysrKysrKysKPj4gICB4ZW4vYXJjaC94ODYv bW0vcDJtLWVwdC5jIHwgIDYgKysrKystCj4+ICAgeGVuL2FyY2gveDg2L21tL3AybS1wdC5jICB8 IDEwICsrKysrKystLQo+PiAgIHhlbi9hcmNoL3g4Ni9tbS9wMm0uYyAgICAgfCAgMyArKysKPj4g ICB4ZW4vaW5jbHVkZS9hc20teDg2L3AybS5oIHwgIDUgKysrKy0KPj4gICA2IGZpbGVzIGNoYW5n ZWQsIDc4IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvaHZtL2h2bS5jIGIveGVuL2FyY2gveDg2L2h2bS9odm0uYwo+PiBpbmRleCA0 ZDk4Y2M2Li5lNTdjOGI5IDEwMDY0NAo+PiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCj4+ ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKPj4gQEAgLTU0ODUsNiArNTQ4NSw3IEBAIHN0 YXRpYyBpbnQgaHZtb3Bfc2V0X21lbV90eXBlKAo+PiAgICAgICB7Cj4+ICAgICAgICAgICB1bnNp Z25lZCBsb25nIHBmbiA9IGEuZmlyc3RfcGZuICsgc3RhcnRfaXRlcjsKPj4gICAgICAgICAgIHAy bV90eXBlX3QgdDsKPj4gKyAgICAgICAgc3RydWN0IHAybV9kb21haW4gKnAybSA9IHAybV9nZXRf aG9zdHAybShkKTsKPj4gICAKPj4gICAgICAgICAgIGdldF9nZm5fdW5zaGFyZShkLCBwZm4sICZ0 KTsKPj4gICAgICAgICAgIGlmICggcDJtX2lzX3BhZ2luZyh0KSApCj4+IEBAIC01NTEyLDYgKzU1 MTMsMTIgQEAgc3RhdGljIGludCBodm1vcF9zZXRfbWVtX3R5cGUoCj4+ICAgICAgICAgICBpZiAo IHJjICkKPj4gICAgICAgICAgICAgICBnb3RvIG91dDsKPj4gICAKPj4gKyAgICAgICAgaWYgKCB0 ID09IHAybV9yYW1fcncgJiYgbWVtdHlwZVthLmh2bW1lbV90eXBlXSA9PSBwMm1faW9yZXFfc2Vy dmVyICkKPj4gKyAgICAgICAgICAgIHAybS0+aW9yZXEuZW50cnlfY291bnQrKzsKPj4gKwo+PiAr ICAgICAgICBpZiAoIHQgPT0gcDJtX2lvcmVxX3NlcnZlciAmJiBtZW10eXBlW2EuaHZtbWVtX3R5 cGVdID09IHAybV9yYW1fcncgKQo+PiArICAgICAgICAgICAgcDJtLT5pb3JlcS5lbnRyeV9jb3Vu dC0tOwo+IENoYW5naW5nIHRoZXNlIGhlcmUgbWlnaHQgbWFrZSBzZW5zZSBpZiB0aGV5IHdlcmUg Km9ubHkqIGNoYW5nZWQgaW4gdGhlCj4gaHZtIGNvZGU7IGJ1dCBhcyB5b3UgYWxzbyBoYXZlIHRv IG1vZGlmeSB0aGlzIHZhbHVlIGluIHRoZSBwMm0gY29kZSAoaW4KPiByZXNvbHZlX21pc2NvbmZp ZyksIEkgdGhpbmsgaXQgbWFrZXMgc2Vuc2UgdG8gdHJ5IHRvIGRvIGFsbCB0aGUgY291bnRpbmcK PiBpbiB0aGUgcDJtIGNvZGUuICBUaGF0IHdvdWxkIHRha2UgY2FyZSBvZiBhbnkgbG9ja2luZyBp c3N1ZXMgYXMgd2VsbC4KPgo+IExvZ2ljYWxseSB0aGUgbW9zdCBzZW5zaWJsZSBwbGFjZSB0byBk byBpdCB3b3VsZCBiZQo+IGF0b21pY193cml0ZV9lcHRfZW50cnkoKTsgdGhhdCB3b3VsZCBtYWtl IGl0IGJhc2ljYWxseSBpbXBvc3NpYmxlIHRvCj4gbWlzcyBhIGNhc2Ugd2hlcmUgd2UgY2hhbmdl IHRvIG9mIGZyb20gcDJtX2lvcmVxX3NlcnZlci4KPgo+IE9uIHRoZSBvdGhlciBoYW5kLCBpdCB3 b3VsZCBtZWFuIGFkZGluZyBjb2RlIHRvIGEgY29yZSBwYXRoIGZvciBhbGwgcDJtCj4gdXBkYXRl cy4KCldlbGwsIHRoZSBhdG9taWNfd3JpdGVfZXB0X2VudHJ5KCkgaXMgYSByYXRoZXIgY29yZSBw YXRoLCBhbmQgaXMgb25seSAKZm9yIGVwdC4gQWx0aG91Z2ggcDJtX2lvcmVxX3NlcnZlciBpcwpu b3QgYWNjZXB0ZWQgaW4gc2hhZG93IHBhZ2UgdGFibGUgY29kZSwgSSdkIHN0aWxsIGxpa2UgdG8g c3VwcG9ydCBpdCBpbiAKQU1EIFNWTSAtIGFsc28gY29uc2lzdGVudCB3aXRoIHRoZQpwMm1fY2hh bmdlX2VudHJ5X3R5cGVfZ2xvYmFsKCkgZnVuY3Rpb25hbGl0eS4gOikKCkkgYW0gY29uc2lkZXJp bmcgcDJtX2NoYW5nZV90eXBlX29uZSgpLCB3aGljaCBoYXMgZ2ZuX2xvY2svdW5sb2NrKCkgCmlu c2lkZS4gQW5kIHNpbmNlIHByZXZpb3VzbHkgdGhlIHAybQp0eXBlIGNoYW5nZXMgdG8vZnJvbSBw Mm1faW9yZXFfc2VydmVyIGFyZSBvbmx5IHRyaWdnZXJlZCBieSBodm1vcCB3aGljaCAKbGVhZHMg dG8gcDJtX2NoYW5nZV90eXBlX29uZSgpLApJIGJlbGlldmUgY2FsY3VsYXRpbmcgdGhlIGVudHJ5 X2NvdW50IGhlcmUgd291bGQgbWFrZSBzZW5zZS4KCkJlc2lkZXMsIHRoZSByZXNvbHZlX21pc2Nv bmZpZygpL2RvX3JlY2FsYygpIHN0aWxsIG5lZWQgdG8gZGVjcmVhc2UgdGhlIAplbnRyeV9jb3Vu dCBmb3IgcDJtX2lvcmVxX3NlcnZlciwKYnV0IHNpbmNlIGJvdGggcm91dGluZXMgaGF2ZSBwMm0g bG9ja2VkIGJ5IHRoZWlyIGNhbGxlciwgc28gaXQncyBhbHNvIE9LLgoKT3RoZXIgcGxhY2VzIHRo YXQgcmVhZCBlbnRyeV9jb3VudCBjYW4gYmUgcHJvdGVjdGVkIGJ5IApyZWFkX2F0b21pYygmcDJt LT5pb3JlcS5lbnRyeV9jb3VudCkuCgpEbyB5b3UgdGhpbmsgdGhpcyBhY2NlcHRhYmxlPwoKPj4g Kwo+PiAgICAgICAgICAgLyogQ2hlY2sgZm9yIGNvbnRpbnVhdGlvbiBpZiBpdCdzIG5vdCB0aGUg bGFzdCBpbnRlcmF0aW9uICovCj4+ICAgICAgICAgICBpZiAoIGEubnIgPiArK3N0YXJ0X2l0ZXIg JiYgIShzdGFydF9pdGVyICYgSFZNT1Bfb3BfbWFzaykgJiYKPj4gICAgICAgICAgICAgICAgaHlw ZXJjYWxsX3ByZWVtcHRfY2hlY2soKSApCj4+IEBAIC01NTMwLDExICs1NTM3LDEzIEBAIHN0YXRp YyBpbnQgaHZtb3Bfc2V0X21lbV90eXBlKAo+PiAgIH0KPj4gICAKPj4gICBzdGF0aWMgaW50IGh2 bW9wX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIoCj4+IC0gICAgWEVOX0dVRVNUX0hBTkRM RV9QQVJBTSh4ZW5faHZtX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXJfdCkgdW9wKQo+PiAr ICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX2h2bV9tYXBfbWVtX3R5cGVfdG9faW9yZXFf c2VydmVyX3QpIHVvcCwKPj4gKyAgICB1bnNpZ25lZCBsb25nICppdGVyKQo+PiAgIHsKPj4gICAg ICAgeGVuX2h2bV9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyX3Qgb3A7Cj4+ICAgICAgIHN0 cnVjdCBkb21haW4gKmQ7Cj4+ICAgICAgIGludCByYzsKPj4gKyAgICB1bnNpZ25lZCBsb25nIGdm biA9ICppdGVyOwo+PiAgIAo+PiAgICAgICBpZiAoIGNvcHlfZnJvbV9ndWVzdCgmb3AsIHVvcCwg MSkgKQo+PiAgICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7Cj4+IEBAIC01NTU5LDcgKzU1NjgsNDIg QEAgc3RhdGljIGludCBodm1vcF9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyKAo+PiAgICAg ICBpZiAoIHJjICE9IDAgKQo+PiAgICAgICAgICAgZ290byBvdXQ7Cj4+ICAgCj4+IC0gICAgcmMg PSBodm1fbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlcihkLCBvcC5pZCwgb3AudHlwZSwgb3Au ZmxhZ3MpOwo+PiArICAgIGlmICggZ2ZuID09IDAgfHwgb3AuZmxhZ3MgIT0gMCApCj4+ICsgICAg ICAgIHJjID0gaHZtX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIoZCwgb3AuaWQsIG9wLnR5 cGUsIG9wLmZsYWdzKTsKPj4gKwo+PiArICAgIC8qCj4+ICsgICAgICogSXRlcmF0ZSBwMm0gdGFi bGUgd2hlbiBhbiBpb3JlcSBzZXJ2ZXIgdW5tYXBzIGZyb20gcDJtX2lvcmVxX3NlcnZlciwKPj4g KyAgICAgKiBhbmQgcmVzZXQgdGhlIHJlbWFpbmluZyBwMm1faW9yZXFfc2VydmVyIGVudHJpZXMg YmFjayB0byBwMm1fcmFtX3J3Lgo+PiArICAgICAqLwo+PiArICAgIGlmICggb3AuZmxhZ3MgPT0g MCAmJiByYyA9PSAwICkKPj4gKyAgICB7Cj4+ICsgICAgICAgIHN0cnVjdCBwMm1fZG9tYWluICpw Mm0gPSBwMm1fZ2V0X2hvc3RwMm0oZCk7Cj4+ICsKPj4gKyAgICAgICAgd2hpbGUgKCBnZm4gPD0g cDJtLT5tYXhfbWFwcGVkX3BmbiApCj4+ICsgICAgICAgIHsKPj4gKyAgICAgICAgICAgIHAybV90 eXBlX3QgdDsKPj4gKwo+PiArICAgICAgICAgICAgaWYgKCBwMm0tPmlvcmVxLmVudHJ5X2NvdW50 ID09IDAgKQo+PiArICAgICAgICAgICAgICAgIGJyZWFrOwo+IEFueSByZWFzb24gbm90IHRvIG1h a2UgdGhpcyBwYXJ0IG9mIHRoZSB3aGlsZSgpIGNvbmRpdGlvbj8KPgo+PiArCj4+ICsgICAgICAg ICAgICBnZXRfZ2ZuX3Vuc2hhcmUoZCwgZ2ZuLCAmdCk7Cj4gVGhpcyB3aWxsIGNvbXBsZXRlbHkg dW5zaGFyZSBhbGwgcGFnZXMgaW4gYSBkb21haW4gYmVsb3cgdGhlIGxhc3QKPiBkYW5nbGluZyBw Mm1faW9yZXFfc2VydmVyIHBhZ2UuICBJIGRvbid0IHRoaW5rIHVuc2hhcmluZyBpcyBuZWNlc3Nh cnkgYXQKPiBhbGw7IGlmIGl0J3Mgc2hhcmVkLCBpdCBjZXJ0YWlubHkgd29uJ3QgYmUgb2YgdHlw ZSBwMm1faW9yZXFfc2VydmVyLgo+Cj4gQWN0dWFsbHkgLS0gaXQgc2VlbXMgbGlrZSBlcHRfZ2V0 X2VudHJ5KCkgcmVhbGx5IHNob3VsZCBiZSBjYWxsaW5nCj4gcmVzb2x2ZV9taXNjb25maWcoKSwg dGhlIHNhbWUgd2F5IHRoYXQgZXB0X3NldF9lbnRyeSgpIGRvZXMuICBJbiB0aGF0Cj4gY2FzZSwg c2ltcGx5IGdvaW5nIHRocm91Z2ggYW5kIHJlYWRpbmcgYWxsIHRoZSBwMm0gZW50cmllcyB3b3Vs ZCBzdWZmaWNlCj4gdG8gZmluaXNoIG9mZiB0aGUgdHlwZSBjaGFuZ2UuCgpXZWxsLCBJIGhhdmUg ZG91YnRzIGFib3V0IHRoaXMgLSByZXNvbHZlX21pc2NvbmZpZygpIGlzIHN1cHBvc2VkIHRvIApj aGFuZ2UgcDJtIHRhYmxlLAphbmQgc2hvdWxkIHByb2JhYmx5IGJlIHByb3RlY3RlZCBieSBwMm0g bG9jay4gQnV0IGVwdF9nZXRfZW50cnkoKSBtYXkgYmUgCnRyaWdnZXJlZApieSBzb21lIHJvdXRp bmUgbGlrZSBnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKCkuCgpCZXNpZGVzLCBhbHRob3VnaCBjYWxs aW5nIHJlc29sdmVfbWlzY29uZmlnKCkgd2lsbCBzcGVlZCB1cCB0aGUgcDJtIHR5cGUgCnN3ZWVw aW5nLAppdCBhbHNvIGludHJvZHVjZXMgbW9yZSBjb3N0IGVhY2ggdGltZSB3ZSBwZWVrIHRoZSBw Mm0gdGFibGUuCgo+Cj4gQWx0aG91Z2ggcmVhbGx5LCBpdCBzZWVtcyBsaWtlIGhhdmluZyBhICJw Mm1fZmluaXNoX3R5cGVfY2hhbmdlKCkiCj4gZnVuY3Rpb24gd2hpY2ggbG9va2VkIGZvciBtaXNj b25maWd1cmVkIGVudHJpZXMgYW5kIHJlc2V0IHRoZW0gd291bGQgYmUKPiBhIHN0ZXAgY2xvc2Vy IHRvIHRoZSByaWdodCBkaXJlY3Rpb24sIGluIHRoYXQgaXQgY291bGQgYmUgcmUtdXNlZCBpbgo+ IG90aGVyIHNpdHVhdGlvbnMgd2hlcmUgdGhlIHR5cGUgY2hhbmdlIG1heSBub3QgaGF2ZSBmaW5p c2hlZC4KClRoYW5rcy4gVGhpcyBzb3VuZHMgYSBnb29kIGlkZWEuIEFuZCBJJ2QgbGlrZSB0byBk ZWZpbmUgdGhlIGludGVyZmFjZSBvZiAKdGhpcyByb3V0aW5lCmxpa2UgdGhpczoKICB2b2lkIHAy bV9maW5pc2hfdHlwZV9jaGFuZ2Uoc3RydWN0IGRvbWFpbiAqZCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgcDJtX3R5cGVfdCBvdCwgcDJtX3R5cGVfdCBudCkKU28gaXQg Y2FuIGJlIHRyaWdnZXJlZCBieSBodm1vcF9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyKCkg d2l0aCAKaHlwZXJjYWxsIGNvbnRpbnVhdGlvbgptZXRob2QuIERvIHlvdSB0aGluayB0aGlzIE9L PwoKSW4gZmFjdCwgSSBoYXZlIHdvcmtlZCBvdXQgYSBuZXcgdmVyc2lvbiBvZiB0aGlzIHBhdGNo IGFjY29yZGluZyB0byBteSAKdW5kZXJzdGFuZGluZywgYW5kIGlmIHlvdQpoYXZlIG5vIG1vcmUg ZGlzYWdyZWVtZW50IG9uIHRoZSBhYm92ZSBpc3N1ZXMsIEknbGwgc2VuZCBvdXQgdGhlIG5ldyAK cGF0Y2ggc29vbiBhZnRlciBzb21lIHRlc3QKaW4gWGVuR1QgZW52aXJvbm1lbnQuIDopCgpUaGFu a3MKWXUKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhl bi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0 cy54ZW4ub3JnL3hlbi1kZXZlbAo=