From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [PATCH v4 07/39] arm/p2m: Move hostp2m init/teardown to individual functions Date: Mon, 9 Oct 2017 18:15:52 +0100 Message-ID: <53e1b7e6-f0a0-9d5c-8f83-9a44fb0c1360@linaro.org> References: <20170830183258.14612-1-proskurin@sec.in.tum.de> <20170830183258.14612-8-proskurin@sec.in.tum.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e1beq-0000Yv-Kk for xen-devel@lists.xenproject.org; Mon, 09 Oct 2017 17:16:00 +0000 Received: by mail-qt0-f179.google.com with SMTP id z50so39424822qtj.4 for ; Mon, 09 Oct 2017 10:15:58 -0700 (PDT) In-Reply-To: <20170830183258.14612-8-proskurin@sec.in.tum.de> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Sergej Proskurin , xen-devel@lists.xenproject.org Cc: Julien Grall , Stefano Stabellini List-Id: xen-devel@lists.xenproject.org SGkgU2VyZ2VqLAoKT24gMzAvMDgvMTcgMTk6MzIsIFNlcmdlaiBQcm9za3VyaW4gd3JvdGU6Cj4g VGhpcyBjb21taXQgcHVsbHMgb3V0IGdlbmVyaWMgaW5pdC90ZWFyZG93biBmdW5jdGlvbmFsaXR5 IG91dCBvZgo+ICJwMm1faW5pdCIgYW5kICJwMm1fdGVhcmRvd24iIGludG8gInAybV9pbml0X29u ZSIsICJwMm1fdGVhcmRvd25fb25lIiwKPiBhbmQgInAybV9mbHVzaF90YWJsZSIgZnVuY3Rpb25z LiAgVGhpcyBhbGxvd3Mgb3VyIGZ1dHVyZSBpbXBsZW1lbnRhdGlvbgo+IHRvIHJldXNlIGV4aXN0 aW5nIGNvZGUgZm9yIHRoZSBpbml0aWFsaXphdGlvbi90ZWFyZG93biBvZiBhbHRwMm0gdmlld3Mu CgpZb3UgbGlrZWx5IHdhbnQgdG8gZXhwYW5kIHRoZSBjb21taXQgbWVzc2FnZSBoZXJlIHRvIGV4 cGxhaW46CgkxKSBXaHkgeW91IGV4cG9ydCB0aGUgZnVuY3Rpb25zCgkyKSBIb3cgY29tZSB5b3Ug c3BsaXQgcDJtX3RlYXJkb3duIGlzIG5vdyBhbHNvIGZsdXNoaW5nIHRoZSB0YWJsZXMuLi4KClZl cnkgbGlrZWx5IDIpIHNob3VsZCBiZSBhIHNlcGFyYXRlIHBhdGNoIGFzIGl0IGlzIGFuIGFkZGl0 aW9uIG9mIHRoZSAKY29kZSBhbmQgbm90IGEgc3BsaXQuCgo+IAo+IFNpZ25lZC1vZmYtYnk6IFNl cmdlaiBQcm9za3VyaW4gPHByb3NrdXJpbkBzZWMuaW4udHVtLmRlPgo+IC0tLQo+IENjOiBTdGVm YW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+Cj4gQ2M6IEp1bGllbiBHcmFs bCA8anVsaWVuLmdyYWxsQGFybS5jb20+Cj4gLS0tCj4gdjI6IEFkZGVkIHRoZSBmdW5jdGlvbiBw Mm1fZmx1c2hfdGFibGUgdG8gdGhlIHByZXZpb3VzIHZlcnNpb24uCj4gCj4gdjM6IFJlbW92ZWQg c3RydWN0IHZ0dGJyLgo+IAo+ICAgICAgTW92ZWQgZGVmaW5lIElOVkFMSURfVlRUQlIgdG8gcDJt LmguCj4gCj4gICAgICBFeHBvcnRlZCBmdW5jdGlvbiBwcm90b3R5cGVzIG9mICJwMm1fZmx1c2hf dGFibGUiLCAicDJtX2luaXRfb25lIiwKPiAgICAgIGFuZCAicDJtX3RlYXJkb3duX29uZSIgaW4g cDJtLmguCj4gCj4gICAgICBFeHRlbmRlZCB0aGUgZnVuY3Rpb24gInAybV9mbHVzaF90YWJsZSIg YnkgYWRkaXRpb25hbGx5IHJlc2V0dGluZwo+ICAgICAgdGhlIGZpZWxkcyBsb3dlc3RfbWFwcGVk X2dmbiBhbmQgbWF4X21hcHBlZF9nZm4uCj4gCj4gICAgICBBZGRlZCBhICJwMm1fZmx1c2hfdGxi IiBjYWxsIGluICJwMm1fZmx1c2hfdGFibGUiLiBPbiBhbHRwMm0gcmVzZXQKPiAgICAgIGluIGZ1 bmN0aW9uICJhbHRwMm1fcmVzZXQiLCBpdCBpcyBpbXBvcnRhbnQgdG8gZmx1c2ggdGhlIFRMQnMg YWZ0ZXIKPiAgICAgIGNsZWFyaW5nIHRoZSByb290IHRhYmxlIHBhZ2VzIGFuZCBiZWZvcmUgY2xl YXJpbmcgdGhlIGludGVybWVkaWF0ZQo+ICAgICAgYWx0cDJtIHBhZ2UgdGFibGVzIHRvIHByZXZl bnQgaWxsZWdhbCBhY2Nlc3MgdG8gc3RhbGxlZCBUTEIgZW50cmllcwo+ICAgICAgb24gY3VycmVu dGx5IGFjdGl2ZSBWQ1BVcy4KPiAKPiAgICAgIEFkZGVkIGEgY2hlY2sgY2hlY2tpbmcgd2hldGhl ciBwMm0tPnJvb3QgaXMgTlVMTCBpbiBwMm1fZmx1c2hfdGFibGUuCj4gCj4gICAgICBSZW5hbWVk IHRoZSBmdW5jdGlvbiAicDJtX2ZyZWVfb25lIiB0byAicDJtX3RlYXJkb3duX29uZSIuCj4gCj4g ICAgICBSZW1vdmVkIHJlc2V0dGluZyBwMm0tPnZ0dGJyIGluICJwMm1fdGVhcmRvd25fb25lIiwg YXMgaXQgdGhlIHAybQo+ICAgICAgd2lsbCBiZSBkZXN0cm95ZWQgYWZ0ZXJ3YXJkcy4KPiAKPiAg ICAgIE1vdmVkIGNhbGwgdG8gInAybV9hbGxvY190YWJsZSIgYmFjayB0byAicDJtX2luaXRfb25l Ii4KPiAKPiAgICAgIE1vdmVkIHRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhlIHR5cGUgcDJtX2NsYXNz X3Qgb3V0IG9mIHRoaXMgcGF0Y2guCj4gCj4gICAgICBNb3ZlZCB0aGUgYmFja3BvaW50ZXIgdG8g dGhlIHN0cnVjdCBkb21haW4gb3V0IG9mIHRoZSBzdHJ1Y3QKPiAgICAgIHAybV9kb21haW4uCj4g Cj4gdjQ6IFJlcGxhY2VkIHRoZSBmb3JtZXIgdXNlIG9mIGNsZWFyX2FuZF9jbGVhbl9wYWdlIGlu IHAybV9mbHVzaF90YWJsZQo+ICAgICAgYnkgYSByb3V0aW5lIHRoYXQgaW52YWxpZGF0ZXMgZXZl cnkgcDJtIGVudHJ5IGF0b21pY2FsbHkuIFRoaXMKPiAgICAgIGF2b2lkcyBpbmNvbnNpc3RlbmNp ZXMgb24gQ1BVcyB0aGF0IGNvbnRpbnVlIHRvIHVzZSB0aGUgdmlld3MgdGhhdAo+ICAgICAgYXJl IHRvIGJlIGZsdXNoZWQgKGUuZy4sIHNlZSBhbHRwMm1fcmVzZXQpLgo+IAo+ICAgICAgUmVtb3Zl ZCB1bm5lY2Vzc2FyeSBpbml0aWFsaXphdGlvbnMgaW4gdGhlIGZ1bmN0aW9ucyAicDJtX2luaXRf b25lIgo+ICAgICAgYW5kICJwMm1fdGVhcmRvd25fb25lIi4KPiAKPiAgICAgIFJlbW92ZWQgdGhl IGRlZmluZSBJTlZBTElEX1ZUVEJSIGFzIGl0IGlzIG5vdCB1c2VkIGFueSBtb3JlLgo+IAo+ICAg ICAgQ29zbWV0aWMgZml4ZXMuCj4gLS0tCj4gICB4ZW4vYXJjaC9hcm0vcDJtLmMgICAgICAgIHwg NzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KPiAgIHhl bi9pbmNsdWRlL2FzbS1hcm0vcDJtLmggfCAgOSArKysrKysKPiAgIDIgZmlsZXMgY2hhbmdlZCwg NzggaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gvYXJtL3AybS5jIGIveGVuL2FyY2gvYXJtL3AybS5jCj4gaW5kZXggNWU4NjM2ODAxMC4uM2Ex YTM4ZTdhZiAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC9hcm0vcDJtLmMKPiArKysgYi94ZW4vYXJj aC9hcm0vcDJtLmMKPiBAQCAtMTIwMywyNyArMTIwMyw2NSBAQCBzdGF0aWMgdm9pZCBwMm1fZnJl ZV92bWlkKHN0cnVjdCBkb21haW4gKmQpCj4gICAgICAgc3Bpbl91bmxvY2soJnZtaWRfYWxsb2Nf bG9jayk7Cj4gICB9Cj4gICAKPiAtdm9pZCBwMm1fdGVhcmRvd24oc3RydWN0IGRvbWFpbiAqZCkK PiArLyogUmVzZXQgdGhpcyBwMm0gdGFibGUgdG8gYmUgZW1wdHkuICovCj4gK3ZvaWQgcDJtX2Zs dXNoX3RhYmxlKHN0cnVjdCBwMm1fZG9tYWluICpwMm0pCj4gICB7Cj4gLSAgICBzdHJ1Y3QgcDJt X2RvbWFpbiAqcDJtID0gcDJtX2dldF9ob3N0cDJtKGQpOwo+ICAgICAgIHN0cnVjdCBwYWdlX2lu Zm8gKnBnOwo+ICsgICAgdW5zaWduZWQgaW50IGksIGo7Cj4gKyAgICBscGFlX3QgKnRhYmxlOwo+ ICsKPiArICAgIGlmICggcDJtLT5yb290ICkKPiArICAgIHsKPiArICAgICAgICAvKiBDbGVhciBh bGwgY29uY2F0ZW5hdGVkIHJvb3QgbGV2ZWwgcGFnZXMuICovCj4gKyAgICAgICAgZm9yICggaSA9 IDA7IGkgPCBQMk1fUk9PVF9QQUdFUzsgaSsrICkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAg IHRhYmxlID0gX19tYXBfZG9tYWluX3BhZ2UocDJtLT5yb290ICsgaSk7Cj4gKwo+ICsgICAgICAg ICAgICBmb3IgKCBqID0gMDsgaiA8IExQQUVfRU5UUklFUzsgaisrICkKPiArICAgICAgICAgICAg ewo+ICsgICAgICAgICAgICAgICAgbHBhZV90ICplbnRyeSA9IHRhYmxlICsgajsKPiArCj4gKyAg ICAgICAgICAgICAgICAvKgo+ICsgICAgICAgICAgICAgICAgICogSW5kaXZpZHVhbCBhbHRwMm0g dmlld3MgY2FuIGJlIGZsdXNoZWQsIHdoaWxzdCBhbHRwMm0gaXMKPiArICAgICAgICAgICAgICAg ICAqIGFjdGl2ZS4gVG8gYXZvaWQgaW5jb25zaXN0ZW5jaWVzIG9uIENQVXMgdGhhdCBjb250aW51 ZSB0bwo+ICsgICAgICAgICAgICAgICAgICogdXNlIHRoZSB2aWV3cyB0byBiZSBmbHVzaGVkIChl LmcuLCBzZWUgYWx0cDJtX3Jlc2V0KSwgd2UKPiArICAgICAgICAgICAgICAgICAqIG11c3QgcmVt b3ZlIGV2ZXJ5IHAybSBlbnRyeSBhdG9taWNhbGx5LgoKV2hlbiBJIHJlYWQgdGhpcyBjb21tZW50 LCBJIHdvbmRlciBob3cgdGhpcyBpcyBzYWZlIHRvIGNsZWFyIHdpdGhvdXQgYW55IApsb2NraW5n PyBBdCBsZWFzdCB0byBwcmV2ZW50IG11bHRpcGxlIGluc3RhbmNlIHRvIG1vZGlmeSB0aGUgUDJN IGF0IHRoZSAKc2FtZSB0aW1lLiBJZiB5b3UgZXhwZWN0IHRoZSBjYWxsZXIgdG8gZG8gaXQgZm9y IHlvdSwgdGhlbiBhbiAKQVNTRVJUKC4uLikgaXMgbmVjZXNzYXJ5IGF0IHRoZSBiZWdpbm5pbmcg b2YgdGhlIGZ1bmN0aW9uLgoKTGlrZWx5IHlvdSB3YW50IHRoaXMgZnVuY3Rpb24gZG8gdGhlIGxv Y2tpbmcuCgpBbHNvIHRoYXQgY29tbWVudCBpcyBtb3JlIHN1aXRhYmxlIG9uIHRvcCBvZiB0aGUg Zm9yIGxvb3AgcmF0aGVyIHRoYW4gaGVyZS4KCj4gKyAgICAgICAgICAgICAgICAgKi8KPiArICAg ICAgICAgICAgICAgIHAybV9yZW1vdmVfcHRlKGVudHJ5LCBwMm0tPmNsZWFuX3B0ZSk7Cj4gKyAg ICAgICAgICAgIH0KPiArICAgICAgICB9CgpZb3Ugc3RpbGwgaGF2ZW4ndCBhZGRyZXNzIG15IGNv bW1lbnQgcmVnYXJkaW5nIHRoZSBvdmVyaGVhZCB5b3UgCmludHJvZHVjZSB3aGlsc3QgdGVhcmlu ZyBkb3duIGEgUDJNIChlLmcgd2hlbiB0aGUgZG9tYWluIGlzIGRlc3Ryb3llZCkuCgo+ICsgICAg fQo+ICsKPiArICAgIC8qCj4gKyAgICAgKiBGbHVzaCBUTEJzIGJlZm9yZSByZWxlYXNpbmcgcmVt YWluaW5nIGludGVybWVkaWF0ZSBwMm0gcGFnZSB0YWJsZXMgdG8KPiArICAgICAqIHByZXZlbnQg aWxsZWdhbCBhY2Nlc3MgdG8gc3RhbGxlZCBUTEIgZW50cmllcy4KPiArICAgICAqLwo+ICsgICAg cDJtX2ZsdXNoX3RsYihwMm0pOwoKQWdhaW4sIHRoaXMgaXMgY2FsbGVkIGJ5IHAybV9mbHVzaF90 YWJsZSB3aGVyZSB0aGUgUDJNIG1heSBub3QgaGF2ZSBiZWVuIAphbGxvY2F0ZWQgYmVjYXVzZSB0 aGUgaW5pdGlhbGl6YXRpb24gZmFpbGVkLiBTbyB0cnlpbmcgdG8gZmx1c2ggVExCIG1heSAKbGVh ZCB0byBhIHBhbmljIGluIFhlbiAodGhlIHZ0dGJyIGlzIGludmFsaWQpLgoKRnVydGhlcm1vcmUg d2UgYWxyZWFkeSBmbHVzaCB0aGUgVExCcyB3aGVuIGNyZWF0aW5nIHRoZSBkb21haW4gKHNlZSAK cDJtX2FsbG9jX3RhYmxlKS4gU28geW91IGFkZCB5ZXQgYW5vdGhlciBvdmVyaGVhZC4KCj4gICAK PiArICAgIC8qIEZyZWUgdGhlIHJlc3Qgb2YgdGhlIHRyaWUgcGFnZXMgYmFjayB0byB0aGUgcGFn aW5nIHBvb2wuICovCj4gICAgICAgd2hpbGUgKCAocGcgPSBwYWdlX2xpc3RfcmVtb3ZlX2hlYWQo JnAybS0+cGFnZXMpKSApCj4gICAgICAgICAgIGZyZWVfZG9taGVhcF9wYWdlKHBnKTsKPiAgIAo+ ICsgICAgcDJtLT5sb3dlc3RfbWFwcGVkX2dmbiA9IElOVkFMSURfR0ZOOwo+ICsgICAgcDJtLT5t YXhfbWFwcGVkX2dmbiA9IF9nZm4oMCk7Cj4gK30KPiArCj4gK3ZvaWQgcDJtX3RlYXJkb3duX29u ZShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtKQo+ICt7Cj4gKyAgICBwMm1fZmx1c2hfdGFibGUocDJt KTsKPiArCj4gICAgICAgaWYgKCBwMm0tPnJvb3QgKQo+ICAgICAgICAgICBmcmVlX2RvbWhlYXBf cGFnZXMocDJtLT5yb290LCBQMk1fUk9PVF9PUkRFUik7Cj4gICAKPiAgICAgICBwMm0tPnJvb3Qg PSBOVUxMOwo+ICAgCj4gLSAgICBwMm1fZnJlZV92bWlkKGQpOwo+ICsgICAgcDJtX2ZyZWVfdm1p ZChwMm0tPmRvbWFpbik7CgpUaGlzIGlzIGEgYml0IG9kZCB0byByZWFkIGdpdmVuIHRoZSBWTUlE IGlzIHBlciBQMk0uIExpa2VseSB5b3Ugd2FudCAKeW91ciBwYXRjaGVzICM5IGFuZCAjMTAgYmVm b3JlIHRoaXMgcGF0Y2guCgo+ICAgCj4gICAgICAgcmFkaXhfdHJlZV9kZXN0cm95KCZwMm0tPm1l bV9hY2Nlc3Nfc2V0dGluZ3MsIE5VTEwpOwo+ICAgfQo+ICAgCj4gLWludCBwMm1faW5pdChzdHJ1 Y3QgZG9tYWluICpkKQo+ICtpbnQgcDJtX2luaXRfb25lKHN0cnVjdCBkb21haW4gKmQsIHN0cnVj dCBwMm1fZG9tYWluICpwMm0pCj4gICB7Cj4gLSAgICBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtID0g cDJtX2dldF9ob3N0cDJtKGQpOwo+ICAgICAgIGludCByYyA9IDA7Cj4gICAgICAgdW5zaWduZWQg aW50IGNwdTsKPiAgIAo+IEBAIC0xMjY4LDYgKzEzMDYsMzIgQEAgaW50IHAybV9pbml0KHN0cnVj dCBkb21haW4gKmQpCj4gICAgICAgcmV0dXJuIHJjOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyB2b2lk IHAybV90ZWFyZG93bl9ob3N0cDJtKHN0cnVjdCBkb21haW4gKmQpCj4gK3sKPiArICAgIHN0cnVj dCBwMm1fZG9tYWluICpwMm0gPSBwMm1fZ2V0X2hvc3RwMm0oZCk7Cj4gKwo+ICsgICAgcDJtX3Rl YXJkb3duX29uZShwMm0pOwo+ICt9Cj4gKwo+ICt2b2lkIHAybV90ZWFyZG93bihzdHJ1Y3QgZG9t YWluICpkKQo+ICt7Cj4gKyAgICBwMm1fdGVhcmRvd25faG9zdHAybShkKTsKPiArfQo+ICsKPiAr c3RhdGljIGludCBwMm1faW5pdF9ob3N0cDJtKHN0cnVjdCBkb21haW4gKmQpCj4gK3sKPiArICAg IHN0cnVjdCBwMm1fZG9tYWluICpwMm0gPSBwMm1fZ2V0X2hvc3RwMm0oZCk7Cj4gKwo+ICsgICAg cDJtLT5wMm1fY2xhc3MgPSBwMm1faG9zdDsKPiArCj4gKyAgICByZXR1cm4gcDJtX2luaXRfb25l KGQsIHAybSk7Cj4gK30KPiArCj4gK2ludCBwMm1faW5pdChzdHJ1Y3QgZG9tYWluICpkKQo+ICt7 Cj4gKyAgICByZXR1cm4gcDJtX2luaXRfaG9zdHAybShkKTsKPiArfQoKUGxlYXNlIGV4cGxhaW4g aW4gdGhlIGNvbW1pdCBtZXNzYWdlIHdoeSB5b3UgbmVlZCB0byBpbnRyb2R1Y2UgCnAybV9pbml0 L3AybV90ZWFyZG93biB0aGF0IGp1c3QgY2FsbCBwMm1faW5pdF9vbmUvcDJtX3RlYXJkb3duX2hv c3RwMm0uCgo+ICsKPiAgIC8qCj4gICAgKiBUaGUgZnVuY3Rpb24gd2lsbCBnbyB0aHJvdWdoIHRo ZSBwMm0gYW5kIHJlbW92ZSBwYWdlIHJlZmVyZW5jZSB3aGVuIGl0Cj4gICAgKiBpcyByZXF1aXJl ZC4gVGhlIG1hcHBpbmcgd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIHAybS4KPiBkaWZmIC0tZ2l0 IGEveGVuL2luY2x1ZGUvYXNtLWFybS9wMm0uaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vcDJtLmgK PiBpbmRleCAzMzJkNzRmMTFjLi45YmIzOGU2ODlhIDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRl L2FzbS1hcm0vcDJtLmgKPiArKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL3AybS5oCj4gQEAgLTI5 NSw2ICsyOTUsMTUgQEAgc3RhdGljIGlubGluZSBpbnQgZ3Vlc3RfcGh5c21hcF9hZGRfcGFnZShz dHJ1Y3QgZG9tYWluICpkLAo+ICAgCj4gICBtZm5fdCBnZm5fdG9fbWZuKHN0cnVjdCBkb21haW4g KmQsIGdmbl90IGdmbik7Cj4gICAKPiArLyogRmx1c2hlcyB0aGUgcGFnZSB0YWJsZSBoZWxkIGJ5 IHRoZSBwMm0uICovCj4gK3ZvaWQgcDJtX2ZsdXNoX3RhYmxlKHN0cnVjdCBwMm1fZG9tYWluICpw Mm0pOwo+ICsKPiArLyogSW5pdGlhbGl6ZSB0aGUgcDJtIHN0cnVjdHVyZS4gKi8KPiAraW50IHAy bV9pbml0X29uZShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtKTsKPiAr Cj4gKy8qIFJlbGVhc2UgcmVzb3VyY2VzIGhlbGQgYnkgdGhlIHAybSBzdHJ1Y3R1cmUuICovCj4g K3ZvaWQgcDJtX3RlYXJkb3duX29uZShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtKTsKPiArCj4gICAv Kgo+ICAgICogUG9wdWxhdGUtb24tZGVtYW5kCj4gICAgKi8KPiAKCkNoZWVycywKCi0tIApKdWxp ZW4gR3JhbGwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Clhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9s aXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=