From mboxrd@z Thu Jan 1 00:00:00 1970 From: Norbert Manthey Subject: Re: [PATCH SpectreV1+L1TF v6 8/9] common/grant_table: block speculative out-of-bound accesses Date: Tue, 19 Feb 2019 22:47:13 +0100 Message-ID: <1414ce6e-1eb0-395f-847c-fbba3b332d22@amazon.de> References: <1c2b8322-1b66-ccc6-9ba9-e86eafb0227a@amazon.de> <1549633489-12724-1-git-send-email-nmanthey@amazon.de> <1549633489-12724-9-git-send-email-nmanthey@amazon.de> <5C4ED1D402000078002119E6@prv1-mh.provo.novell.com> <9C03B9BA0200004637554D14@prv1-mh.provo.novell.com> <00FAA7AF020000F8B1E090C7@prv1-mh.provo.novell.com> <0101E7AF020000F8B1E090C7@prv1-mh.provo.novell.com> <5C532AC00200007800212EA2@prv1-mh.provo.novell.com> <01CCAAAF02000039B1E090C7@prv1-mh.provo.novell.com> <01CEAAAF02000039B1E090C7@prv1-mh.provo.novell.com> <5C64048B0200007800216478@prv1-mh.provo.novell.com> <5C66959C0200007800216F11@prv1-mh.provo.novell.com> <5C6AD8610200007800217BD4@prv1-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gwDEj-0000YY-6y for xen-devel@lists.xenproject.org; Tue, 19 Feb 2019 21:47:33 +0000 In-Reply-To: <5C6AD8610200007800217BD4@prv1-mh.provo.novell.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Jan Beulich Cc: Juergen Gross , Tim Deegan , Stefano Stabellini , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Dario Faggioli , Martin Pohlack , wipawel@amazon.de, Julien Grall , David Woodhouse , "Martin Mazein(amazein)" , xen-devel , Julian Stecklina , Bjoern Doebel List-Id: xen-devel@lists.xenproject.org T24gMi8xOC8xOSAxNzowOCwgSmFuIEJldWxpY2ggd3JvdGU6Cj4+Pj4gT24gMTguMDIuMTkgYXQg MTQ6NDksIDxubWFudGhleUBhbWF6b24uZGU+IHdyb3RlOgo+PiBPbiAyLzE1LzE5IDExOjM0LCBK YW4gQmV1bGljaCB3cm90ZToKPj4+Pj4+IE9uIDE1LjAyLjE5IGF0IDEwOjU1LCA8bm1hbnRoZXlA YW1hem9uLmRlPiB3cm90ZToKPj4+PiBPbiAyLzEzLzE5IDEyOjUwLCBKYW4gQmV1bGljaCB3cm90 ZToKPj4+Pj4+Pj4gT24gMDguMDIuMTkgYXQgMTQ6NDQsIDxubWFudGhleUBhbWF6b24uZGU+IHdy b3RlOgo+Pj4+Pj4gR3Vlc3RzIGNhbiBpc3N1ZSBncmFudCB0YWJsZSBvcGVyYXRpb25zIGFuZCBw cm92aWRlIGd1ZXN0IGNvbnRyb2xsZWQKPj4+Pj4+IGRhdGEgdG8gdGhlbS4gVGhpcyBkYXRhIGlz IGFsc28gdXNlZCBmb3IgbWVtb3J5IGxvYWRzLiBUbyBhdm9pZAo+Pj4+Pj4gc3BlY3VsYXRpdmUg b3V0LW9mLWJvdW5kIGFjY2Vzc2VzLCB3ZSB1c2UgdGhlIGFycmF5X2luZGV4X25vc3BlYyBtYWNy bwo+Pj4+Pj4gd2hlcmUgYXBwbGljYWJsZS4gSG93ZXZlciwgdGhlcmUgYXJlIGFsc28gbWVtb3J5 IGFjY2Vzc2VzIHRoYXQgY2Fubm90Cj4+Pj4+PiBiZSBwcm90ZWN0ZWQgYnkgYSBzaW5nbGUgYXJy YXkgcHJvdGVjdGlvbiwgb3IgbXVsdGlwbGUgYWNjZXNzZXMgaW4gYQo+Pj4+Pj4gcm93LiBUbyBw cm90ZWN0IHRoZXNlLCBhIG5vc3BlYyBiYXJyaWVyIGlzIHBsYWNlZCBiZXR3ZWVuIHRoZSBhY3R1 YWwKPj4+Pj4+IHJhbmdlIGNoZWNrIGFuZCB0aGUgYWNjZXNzIHZpYSB0aGUgYmxvY2tfc3BlY3Vs YXRpb24gbWFjcm8uCj4+Pj4+Pgo+Pj4+Pj4gQXMgZGlmZmVyZW50IHZlcnNpb25zIG9mIGdyYW50 IHRhYmxlcyB1c2Ugc3RydWN0dXJlcyBvZiBkaWZmZXJlbnQgc2l6ZSwKPj4+Pj4+IGFuZCB0aGUg c3RhdHVzIGlzIGVuY29kZWQgaW4gYW4gYXJyYXkgZm9yIHZlcnNpb24gMiwgc3BlY3VsYXRpdmUK Pj4+Pj4+IGV4ZWN1dGlvbiBtaWdodCB0b3VjaCB6ZXJvLWluaXRpYWxpemVkIHN0cnVjdHVyZXMg b2YgdmVyc2lvbiAyIHdoaWxlCj4+Pj4+PiB0aGUgdGFibGUgaXMgYWN0dWFsbHkgdXNpbmcgdmVy c2lvbiAxLgo+Pj4+PiBXaHkgemVyby1pbml0aWFsaXplZD8gRGlkIEkgc3RpbGwgbm90IHN1Y2Nl ZWQgZGVtb25zdHJhdGluZyB0byB5b3UKPj4+Pj4gdGhhdCBzcGVjdWxhdGlvbiBhbG9uZyBhIHYy IHBhdGggY2FuIGFjdHVhbGx5IG92ZXJydW4gdjEgYXJyYXlzLAo+Pj4+PiBub3QganVzdCBhY2Nl c3MgcGFydHMgd2l0aCBtYXkgc3RpbGwgYmUgemVyby1pbml0aWFsaXplZD8KPj4+PiBJIGJlbGll dmUgYSBzcGVjdWxhdGl2ZSB2MiBhY2Nlc3MgY2FuIHRvdWNoIGRhdGEgdGhhdCBoYXMgYmVlbiB3 cml0dGVuCj4+Pj4gYnkgdmFsaWQgdjEgYWNjZXNzZXMgYmVmb3JlLCB6ZXJvIGluaXRpYWxpemVk IGRhdGEsIG9yIHRvdWNoIHRoZSBOVUxMCj4+Pj4gcGFnZS4gR2l2ZW4gdGhlIG1hY3JvcyBmb3Ig dGhlIGFjY2VzcyBJIGRvIG5vdCBiZWxpZXZlIHRoYXQgYSB2MiBhY2Nlc3MKPj4+PiBjYW4gdG91 Y2ggYSBwYWdlIHRoYXQgaXMgbG9jYXRlZCBiZWhpbmQgYSBwYWdlIGhvbGRpbmcgdmFsaWQgdjEg ZGF0YS4KPj4+IEkndmUgZ2l2ZW4gZXhhbXBsZXMgYmVmb3JlIG9mIGhvdyBJIHNlZSB0aGlzIHRv IGJlIHBvc3NpYmxlLiBXb3VsZAo+Pj4geW91IG1pbmQgZ29pbmcgYmFjayB0byBvbmUgb2YgdGhl IGluc3RhbmNlcywgYW5kIGV4cGxhaW5pbmcgdG8gbWUKPj4+IGhvdyB5b3UgZG8gX25vdF8gc2Vl IGFueSByb29tIGZvciBhbiBvdmVycnVuIHRoZXJlPyBIYXZpbmcKPj4+IGdpdmVuIGV4YW1wbGVz LCBJIHNpbXBseSBkb24ndCBrbm93IGhvdyBlbHNlIEkgY2FuIGV4cGxhaW4gdGhpcyB0bwo+Pj4g eW91IHdpdGhvdXQga25vd2luZyBhdCB3aGF0IHNwZWNpZmljIHBhcnQgb2YgdGhlIGV4cGxhbmF0 aW9uIHdlCj4+PiBkaXZlcmdlLiAoQW5kIG5vLCBJJ20gbm90IGV4Y2x1ZGluZyB0aGF0IEknbSBt YWtpbmcgdXAgYW4gaXNzdWUKPj4+IHdoZXJlIHRoZXJlIGlzIG5vbmUuKQo+PiBXaGF0IHdlIHdh bnQgdG8gcmVhbCBvdXQgaXMgdGhhdCB0aGUgYWN0dWFsbHkgdXNlIHZlcnNpb24xLCB3aGlsZQo+ PiBzcGVjdWxhdGlvbiBtaWdodCB1c2UgdmVyc2lvbjIsIHJpZ2h0PyBJIGhvcGUgeW91IHJlZmVy IHRvIHRoaXMgZXhhbXBsZQo+PiBvZiB5b3VyIGVhcmxpZXIgZW1haWwuCj4+Cj4+IE9uIDEvMjkv MTkgMTY6MTEsIEphbiBCZXVsaWNoIHdyb3RlOgo+Pj4gTGV0J3MgbG9vayBhdCBhbiBleGFtcGxl OiBncmVmIDI1NiBwb2ludHMgaW50byB0aGUgbWlkZGxlIG9mCj4+PiB0aGUgZmlyc3QgcGFnZSB3 aGVuIHVzaW5nIHYxIGNhbGN1bGF0aW9ucywgYnV0IGF0IHRoZSBzdGFydAo+Pj4gb2YgdGhlIHNl Y29uZCBwYWdlIHdoZW4gdXNpbmcgdjIgY2FsY3VsYXRpb25zLiBIZW5jZSwgaWYgdGhlCj4+PiBt YXhpbXVtIG51bWJlciBvZiBncmFudCBmcmFtZXMgd2FzIDEsIHdlJ2Qgb3ZlcnJ1biB0aGUKPj4+ IGFycmF5LCBjb25zaXN0aW5nIG9mIGp1c3QgYSBzaW5nbGUgZWxlbWVudCAoMjU2IGlzIHZhbGlk IGFzIGEKPj4+IHYxIGdyZWYgaW4gdGhhdCBjYXNlLCBidXQganVzdCBvdXQgb2YgYm91bmRzIGFz IGEgdjIgb25lKS4KPj4gRnJvbSBob3cgSSByZWFkIHlvdXIgZXhhbXBsZSBhbmQgbXkgZXhwbGFu YXRpb24sIHRoZSBrZXkgZGlmZmVyZW5jZSBpcwo+PiBpbiB0aGUgc2l6ZSBvZiB0aGUgc2hhcmVk X3JhdyBhcnJheS4gSW4gY2FzZSBncmVmIDI1NiBpcyBhIHZhbGlkIHYxCj4+IGhhbmRsZSwgdGhl biB0aGUgc2hhcmVkX3JhdyBhcnJheSBoYXMgc3BhY2UgZm9yIGF0IGxlYXN0IDI1NiBlbnRyaWVz LCBhcwo+PiBzaGFyZWRfcmF3IHdhcyBhbGxvY2F0ZWQgZm9yIHRoZSBudW1iZXIgb2YgcmVxdWVz dGVkIGVudHJpZXMuIFRoZSBhY2Nlc3MKPj4gdG8gc2hhcmVkX3JhdyBpcyBjb250cm9sbGVkIHdp dGggdGhlIG1hY3JvIHNoYXJlZF9lbnRyeV92MjoKPj4gIDIyMiAjZGVmaW5lIFNIR05UX1BFUl9Q QUdFX1YyIChQQUdFX1NJWkUgLyBzaXplb2YoZ3JhbnRfZW50cnlfdjJfdCkpCj4+ICAyMjMgI2Rl ZmluZSBzaGFyZWRfZW50cnlfdjIodCwgZSkgXAo+PiAgMjI0ICAgICAoKHQpLT5zaGFyZWRfdjJb KGUpL1NIR05UX1BFUl9QQUdFX1YyXVsoZSklU0hHTlRfUEVSX1BBR0VfVjJdKQo+PiBTaW5jZSB0 aGUgZGlyZWN0IGFjY2VzcyB0byB0aGUgc2hhcmVkX3YyIGFycmF5IGRlcGVuZHMgb24gdGhlCj4+ IFNIR05UX1BFUl9QQUdFX1YyIHZhbHVlLCB0aGlzIGhhcyB0byBiZSBsZXNzIHRoYW4gdGhlIHNp emUgb2YgdGhhdAo+PiBhcnJheS4gSGVuY2UsIHNoYXJlZF9yYXcgd2lsbCBub3QgYmUgb3ZlcnJ1 biAobmVpdGhlciBmb3IgdmVyc2lvbiAxIG5vcgo+PiB2ZXJzaW9uIDIpLiBIb3dldmVyLCB0aGlz IGRpdmlzaW9uIG1pZ2h0IHJlc3VsdCBpbiBhY2Nlc3NpbmcgYW4gZWxlbWVudAo+PiBvZiBzaGFy ZWRfcmF3IHRoYXQgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIGJ5IHZlcnNpb24xIGJlZm9yZS4g SG93ZXZlciwKPj4gcmlnaHQgYWZ0ZXIgYWxsb2NhdGlvbiwgc2hhcmVkX3JhdyBpcyB6ZXJvIGlu aXRpYWxpemVkLiBIZW5jZSwgdGhpcwo+PiBtaWdodCByZXN1bHQgaW4gYW4gYWNjZXNzIG9mIHRo ZSBOVUxMIHBhZ2UuCj4gVGhlIHF1ZXN0aW9uIGlzOiBIb3cgbXVjaCBvZiBzaGFyZWRfcmF3W10g d2lsbCBiZSB6ZXJvLWluaXRpYWxpemVkPwo+IFRoZSBleGFtcGxlIEkndmUgZ2l2ZW4gdXNlcyBy ZWxhdGl2ZWx5IHNtYWxsIGdyYW50IHJlZmVyZW5jZSB2YWx1ZXMsCj4gc28gZm9yIHRoZSBwdXJw b3NlIGhlcmUgbGV0J3MgYXNzdW1lIGd0LT5tYXhfZ3JhbnRfZnJhbWVzIGlzIDEuCj4gSW4gdGhp cyBjYXNlIHNoYXJlZF9yYXdbXSBpcyBleGFjdGx5IG9uZSBlbnRyeSBpbiBzaXplLiBIZW5jZSB0 aGUKPiBzcGVjdWxhdGl2ZSBhY2Nlc3MgeW91IGRlc2NyaWJlIHdpbGwgbm90IG5lY2Vzc2FyaWx5 IGFjY2VzcyB0aGUgTlVMTAo+IHBhZ2UuCj4KPiBPYnZpb3VzbHkgdGhlIHNhbWUgaXNzdWUgZXhp c3RzIHdpdGggaGlnaGVyIGxpbWl0cyBhbmQgaGlnaGVyIGdyYW50Cj4gcmVmZXJlbmNlIG51bWJl cnMuClRoZSBzb2x1dGlvbiB0byB0aGlzIHByb2JsZW0gaXMgcmVhbGx5IHNpbXBsZSwgSSBtaXhl ZCB1cCBncmFudCBmcmFtZXMKYW5kIGdyYW50IGVudHJpZXMuIEkgYWdyZWUgdGhhdCBzaGFyZWRf cmF3IGNhbiBiZSBhY2Nlc3NlZCBvdXQtb2YtYm91bmRzCmFuZCBzaG91bGQgYmUgcHJvdGVjdGVk LiBJIHdpbGwgYWRhcHQgdGhlIGNvbW1pdCBtZXNzYWdlIGFjY29yZGluZ2x5LAphbmQgcmV2aXNl IHRoZSBtb2RpZmljYXRpb25zIEkgYWRkZWQgdG8gdGhlIGNvZGUgYmFzZS4KPgo+Pj4+Pj4gQEAg LTEzMjEsNyArMTMyNyw4IEBAIHVubWFwX2NvbW1vbigKPj4+Pj4+ICAgICAgICAgIGdvdG8gdW5s b2NrX291dDsKPj4+Pj4+ICAgICAgfQo+Pj4+Pj4gIAo+Pj4+Pj4gLSAgICBhY3QgPSBhY3RpdmVf ZW50cnlfYWNxdWlyZShyZ3QsIG9wLT5yZWYpOwo+Pj4+Pj4gKyAgICBhY3QgPSBhY3RpdmVfZW50 cnlfYWNxdWlyZShyZ3QsIGFycmF5X2luZGV4X25vc3BlYyhvcC0+cmVmLAo+Pj4+Pj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPj4+PiBu cl9ncmFudF9lbnRyaWVzKHJndCkpKTsKPj4+Pj4gLi4uIHlvdSBhZGQgYSB1c2UgZS5nLiBoZXJl IHRvIF9ndWFyZF8gYWdhaW5zdCBzcGVjdWxhdGlvbi4KPj4+PiBUaGUgYWRqdXN0bWVudCB5b3Ug cHJvcG9zZSBpcyB0byBleGNoYW5nZSB0aGUgc3dpdGNoIHN0YXRlbWVudCBpbgo+Pj4+IG5yX2dy YW50X2VudHJpZXMgd2l0aCBhIGlmKCBldmFsdWF0ZV9ub3NwZWMoIGd0LT5ndF92ZXJzaW9uID09 IDEgKSwgc28KPj4+PiB0aGF0IHRoZSByZXR1cm5lZCB2YWx1ZXMgYXJlIG5vdCBzcGVjdWxhdGVk Pwo+Pj4gQXQgdGhpcyBwb2ludCBJJ20gbm90IHByb3Bvc2luZyBhIHBhcnRpY3VsYXIgc29sdXRp b24uIEknbSBqdXN0Cj4+PiBwdXR0aW5nIG9uIHRoZSB0YWJsZSBhbiBpc3N1ZSBsZWZ0IHVuLWFk ZHJlc3NlZC4gSSBjZXJ0YWlubHkKPj4+IHdvdWxkbid0IHdlbGNvbWUgY29udmVydGluZyB0aGUg c3dpdGNoKCkgdG8gYW4gaWYoKSwgZXZlbiBpZgo+Pj4gcmlnaHQgbm93IHRoZXJlJ3Mgbm8gdjMg b24gdGhlIGhvcml6b24uIChJdCdzIGFjdHVhbGx5IHF1aXRlCj4+PiB0aGUgaW52ZXJzZTogSWYg c29tZW9uZSBjYW1lIGFuZCBzdWJtaXR0ZWQgYSBwYXRjaCB0byBjaGFuZ2UKPj4+IHRoZSB2YXJp b3VzIGlmKCktcyBvbiBndF92ZXJzaW9uIHRvIHN3aXRjaCgpLWVzLCBJJ2Qgd2VsY29tZSB0aGlz LikKPj4gSSBhbSBoYXBweSB0byBhZGQgYmxvY2tfc3BlY3VsYXRpb24oKSBtYWNyb3MgaW50byBl YWNoIGNhc2Ugb2YgdGhlCj4+IHN3aXRjaCBzdGF0ZW1lbnQuCj4gVWdseSwgYnV0IHBlcmhhcHMg dGhlIG9ubHkgcG9zc2libGUgc29sdXRpb24gYXQgdGhpcyBwb2ludC4KPgo+Pj4+IERvIHlvdSB3 YW50IG1lIHRvCj4+Pj4gY2FjaGUgdGhlIHZhbHVlIGluIGZ1bmN0aW9ucyB0aGF0IGNhbGwgdGhp cyBtZXRob2QgcmVndWxhcmx5IHRvIGF2b2lkCj4+Pj4gdGhlIHBlbmFsdHkgb2YgdGhlIGludHJv ZHVjZWQgbGZlbmNlIGZvciBlYWNoIGNhbGw/Cj4+PiBUaGF0IHdvdWxkIGdvIGJhY2sgdG8gdGhl IHF1ZXN0aW9uIG9mIHdoYXQgZ29vZCBpdCBkb2VzIHRvCj4+PiBsYXRjaCB2YWx1ZSBpbnRvIGEg bG9jYWwgdmFyaWFibGUgd2hlbiB5b3UgZG9uJ3Qga25vdyB3aGV0aGVyCj4+PiB0aGUgY29tcGls ZXIgd2lsbCBwdXQgdGhhdCB2YXJpYWJsZSBpbiBhIHJlZ2lzdGVyIG9yIGluIG1lbW9yeS4KPj4+ IElPVyBJJ20gYWZyYWlkIHRoYXQgdG8gYmUgb24gdGhlIHNhZmUgc2lkZSB0aGVyZSdzIG5vIHdh eQo+Pj4gYXJvdW5kIHRoZSByZXBlYXRlZCBMRkVOQ0VzLgo+PiBUaGUgZGlmZmVyZW5jZSBoZXJl IHdvdWxkIGJlIHRoYXQgaW4gY2FzZSB0aGUgdmFsdWUgaXMgc3RvcmVkIGludG8gYQo+PiBsb2Nh bCB2YXJpYWJsZSAoaW5kZXBlbmRlbnRseSBvZiBtZW1vcnkgb3IgcmVnaXN0ZXIpIGFuZCBhbiBs ZmVuY2Ugd2FzCj4+IGV4ZWN1dGVkLCB0aGlzIHZhbHVlIGNhbiBiZSB0cnVzdGVkIGFuZCBkb2Vz IG5vdCBoYXZlIHRvIGJlIGNoZWNrZWQKPj4gYWdhaW4sIGFzIGl0J3Mgbm8gbG9uZ2VyIGd1ZXN0 IGNvbnRyb2xsZWQuCj4gQWgsIHllcywgeW91J3JlIHJpZ2h0IChpdCBqdXN0IHdhc24ndCBjbGVh ciB0byBtZSB0aGF0IHlvdSBpbXBsaWVkCj4gYWRkaW5nIGEgZmVuY2UgdG9nZXRoZXIgd2l0aCB0 aGUgY2FjaGluZyBvZiB0aGUgdmFsdWUpLiBTbyBwZXJoYXBzCj4gdGhhdCdzIHRoZW4gYWxzbyB0 aGUgd2F5IHRvIGdvIGZvciB0aGUgaHVua3MgdW5kZXIgZGlzY3Vzc2lvbiBpbgo+IHBhdGNoIDM/ CgpXZWxsLCB5ZXMuIFRoYXQgc2hvdWxkIGVmZmVjdGl2ZWx5IGJvdW5kIHRoZSBhLmluZGV4IHZh bHVlcyBpbiB0aGUgb3RoZXIKaHVua3MgaW4gcGF0Y2ggMyBhcyB3ZWxsLiBJIHdpbGwgYWRhcHQg dGhhdCBwYXRjaCBhY2NvcmRpbmdseS4gVW50aWwKbm93LCBJIHN0ZXBwZWQgYmFjayBmcm9tIHRo aXMgc29sdXRpb24sIGFzIEkgd2FudCB0byBhdm9pZCB1c2luZyB0aGUKbGZlbmNlIGluc3RydWN0 aW9uIGFzIG11Y2ggYXMgcG9zc2libGUuCgpCZXN0LApOb3JiZXJ0CgoKCgoKQW1hem9uIERldmVs b3BtZW50IENlbnRlciBHZXJtYW55IEdtYkgKS3JhdXNlbnN0ci4gMzgKMTAxMTcgQmVybGluCkdl c2NoYWVmdHNmdWVocmVyOiBDaHJpc3RpYW4gU2NobGFlZ2VyLCBSYWxmIEhlcmJyaWNoClVzdC1J RDogREUgMjg5IDIzNyA4NzkKRWluZ2V0cmFnZW4gYW0gQW10c2dlcmljaHQgQ2hhcmxvdHRlbmJ1 cmcgSFJCIDE0OTE3MyBCCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0 Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRl dmVs