From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH 4/8] drm/amdgpu: remove last_entry_used from the VM code Date: Tue, 12 Dec 2017 10:23:37 +0100 Message-ID: References: <20171208164107.1567-1-christian.koenig@amd.com> <20171208164107.1567-4-christian.koenig@amd.com> <8d22ff81-e27f-abe5-c3f3-3fbdf80334be@gmail.com> Reply-To: christian.koenig-5C7GfCeVMHo@public.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <8d22ff81-e27f-abe5-c3f3-3fbdf80334be-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> Content-Language: en-US List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Chunming Zhou , amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org QW0gMTEuMTIuMjAxNyB1bSAxMzowOCBzY2hyaWViIENocmlzdGlhbiBLw7ZuaWc6Cj4gQW0gMTEu MTIuMjAxNyB1bSAwNjo1MiBzY2hyaWViIENodW5taW5nIFpob3U6Cj4+Cj4+Cj4+IE9uIDIwMTfl ubQxMuaciDA55pelIDAwOjQxLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOgo+Pj4gTm90IG5lZWRl ZCBhbnkgbW9yZS4KPj4+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJp c3RpYW4ua29lbmlnQGFtZC5jb20+Cj4+PiAtLS0KPj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV92bS5jIHwgNTIgCj4+PiArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0tLS0tCj4+PiDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uaCB8wqAg MSAtCj4+PiDCoCAyIGZpbGVzIGNoYW5nZWQsIDI5IGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9u cygtKQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfdm0uYyAKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPj4+ IGluZGV4IDQwMGEwMGZhYmFiZC4uYWU1NDUxYmY1ODczIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jCj4+PiBAQCAtMzI5LDkgKzMyOSw2IEBAIHN0YXRpYyBp bnQgYW1kZ3B1X3ZtX2FsbG9jX2xldmVscyhzdHJ1Y3QgCj4+PiBhbWRncHVfZGV2aWNlICphZGV2 LAo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHRvID49IGFtZGdwdV92bV9udW1fZW50cmllcyhhZGV2 LCBsZXZlbCkpCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+PiDCoCAt wqDCoMKgIGlmICh0byA+IHBhcmVudC0+bGFzdF9lbnRyeV91c2VkKQo+Pj4gLcKgwqDCoMKgwqDC oMKgIHBhcmVudC0+bGFzdF9lbnRyeV91c2VkID0gdG87Cj4+PiAtCj4+PiDCoMKgwqDCoMKgICsr bGV2ZWw7Cj4+PiDCoMKgwqDCoMKgIHNhZGRyID0gc2FkZHIgJiAoKDEgPDwgc2hpZnQpIC0gMSk7 Cj4+PiDCoMKgwqDCoMKgIGVhZGRyID0gZWFkZHIgJiAoKDEgPDwgc2hpZnQpIC0gMSk7Cj4+PiBA QCAtMTE4NywxNiArMTE4NCwxOSBAQCBzdGF0aWMgaW50IGFtZGdwdV92bV91cGRhdGVfcGRlKHN0 cnVjdCAKPj4+IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4+PiDCoMKgICoKPj4+IMKgwqAgKiBNYXJr IGFsbCBQRCBsZXZlbCBhcyBpbnZhbGlkIGFmdGVyIGFuIGVycm9yLgo+Pj4gwqDCoCAqLwo+Pj4g LXN0YXRpYyB2b2lkIGFtZGdwdV92bV9pbnZhbGlkYXRlX2xldmVsKHN0cnVjdCBhbWRncHVfdm0g KnZtLAo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0 cnVjdCBhbWRncHVfdm1fcHQgKnBhcmVudCkKPj4+ICtzdGF0aWMgdm9pZCBhbWRncHVfdm1faW52 YWxpZGF0ZV9sZXZlbChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwK Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qg YW1kZ3B1X3ZtX3B0ICpwYXJlbnQsCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgbGV2ZWwpCj4+IGNhbiB3ZSBtb3ZlIGxldmVsIHRvIHN0 cnVjdCBhbWRncHVfdm1fcHQ/Cj4KPiBJIGNvbnNpZGVyZWQgdGhpcyBhcyB3ZWxsLCBidXQgdGhl biBhYmFuZG9uZWQgdGhlIGFwcHJvYWNoIGFuZCBtb3ZlZCAKPiB0byB1c2luZyBpdCBhcyBwYXJh bWV0ZXIgYWdhaW4uCj4KPiBUaGUgZ2VuZXJhbCBwcm9ibGVtIGlzIHRoYXQgYW1kZ3B1X3ZtX3B0 IGlzIGFscmVhZHkgKldBWSogdG8gYmlnLCB3ZSAKPiB1c2UgNjAgYnl0ZXMgdG8gbWFuYWdlIDRL IGluIHRoZSB3b3JzdCBjYXNlLgo+Cj4gV29ya2luZyBvbiBnZXR0aW5nIHRoaXMgZG93biB0byBz b21ldGhpbmcgc2FuZSBhZ2FpbiwgYnV0IGFkZGluZyB0aGUgCj4gbGV2ZWwgaGVyZSBqdXN0IHRv IHNhdmUgcGFzc2luZyBpdCBhcyBwYXJhbWV0ZXIgZHVyaW5nIHRoZSBkZXN0cnVjdGlvbiAKPiB3 b3VsZCBtYWtlIGl0IHdvcnNlLgoKUGluZz8gQW55IG1vcmUgb2JqZWN0aW9ucyB0byB0aGlzIHBh dGNoIG9yIGNhbiBJIGNvbW1pdCBpdD8KCldhbnRlZCB0byBjb21taXQgdGhvc2UgdXAgdGlsbCBw YXRjaCAjNywgdGhlbiBhZGQgeW91ciB3b3JrIHRvIHJldmVyc2UgCnRoZSBsZXZlbCBhbmQgdGhl biBwdXQgcGF0Y2ggIzggb24gdG9wLgoKQ2hyaXN0aWFuLgoKPgo+IENocmlzdGlhbi4KPgo+PiBv dGhlcndpc2UsIGl0IGxvb2tzIG9rIHRvIG1lLgo+Pgo+PiBSZWdhcmRzLAo+PiBEYXZpZCBaaG91 Cj4+PiDCoCB7Cj4+PiAtwqDCoMKgIHVuc2lnbmVkIHB0X2lkeDsKPj4+ICvCoMKgwqAgdW5zaWdu ZWQgcHRfaWR4LCBudW1fZW50cmllczsKPj4+IMKgIMKgwqDCoMKgwqAgLyoKPj4+IMKgwqDCoMKg wqDCoCAqIFJlY3Vyc2UgaW50byB0aGUgc3ViZGlyZWN0b3JpZXMuIFRoaXMgcmVjdXJzaW9uIGlz IGhhcm1sZXNzIAo+Pj4gYmVjYXVzZQo+Pj4gwqDCoMKgwqDCoMKgICogd2Ugb25seSBoYXZlIGEg bWF4aW11bSBvZiA1IGxheWVycy4KPj4+IMKgwqDCoMKgwqDCoCAqLwo+Pj4gLcKgwqDCoCBmb3Ig KHB0X2lkeCA9IDA7IHB0X2lkeCA8PSBwYXJlbnQtPmxhc3RfZW50cnlfdXNlZDsgKytwdF9pZHgp IHsKPj4+ICvCoMKgwqAgbnVtX2VudHJpZXMgPSBhbWRncHVfdm1fbnVtX2VudHJpZXMoYWRldiwg bGV2ZWwpOwo+Pj4gK8KgwqDCoCBmb3IgKHB0X2lkeCA9IDA7IHB0X2lkeCA8IG51bV9lbnRyaWVz OyArK3B0X2lkeCkgewo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBhbWRncHVfdm1fcHQg KmVudHJ5ID0gJnBhcmVudC0+ZW50cmllc1twdF9pZHhdOwo+Pj4gwqAgwqDCoMKgwqDCoMKgwqDC oMKgIGlmICghZW50cnktPmJhc2UuYm8pCj4+PiBAQCAtMTIwNyw3ICsxMjA3LDcgQEAgc3RhdGlj IHZvaWQgYW1kZ3B1X3ZtX2ludmFsaWRhdGVfbGV2ZWwoc3RydWN0IAo+Pj4gYW1kZ3B1X3ZtICp2 bSwKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAobGlzdF9lbXB0eSgmZW50cnktPmJhc2Uudm1f c3RhdHVzKSkKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxpc3RfYWRkKCZlbnRyeS0+ YmFzZS52bV9zdGF0dXMsICZ2bS0+cmVsb2NhdGVkKTsKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBz cGluX3VubG9jaygmdm0tPnN0YXR1c19sb2NrKTsKPj4+IC3CoMKgwqDCoMKgwqDCoCBhbWRncHVf dm1faW52YWxpZGF0ZV9sZXZlbCh2bSwgZW50cnkpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIGFtZGdw dV92bV9pbnZhbGlkYXRlX2xldmVsKGFkZXYsIHZtLCBlbnRyeSwgbGV2ZWwgKyAxKTsKPj4+IMKg wqDCoMKgwqAgfQo+Pj4gwqAgfQo+Pj4gwqAgQEAgLTEyNDksNyArMTI0OSw4IEBAIGludCBhbWRn cHVfdm1fdXBkYXRlX2RpcmVjdG9yaWVzKHN0cnVjdCAKPj4+IGFtZGdwdV9kZXZpY2UgKmFkZXYs Cj4+PiDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByID0gYW1kZ3B1X3ZtX3VwZGF0ZV9w ZGUoYWRldiwgdm0sIHB0LCBlbnRyeSk7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBp ZiAocikgewo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhbWRncHVfdm1faW52 YWxpZGF0ZV9sZXZlbCh2bSwgJnZtLT5yb290KTsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgYW1kZ3B1X3ZtX2ludmFsaWRhdGVfbGV2ZWwoYWRldiwgdm0sCj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZ2 bS0+cm9vdCwgMCk7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVy biByOwo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgc3Bpbl9sb2NrKCZ2bS0+c3RhdHVzX2xvY2spOwo+Pj4gQEAgLTE2NTIsNyAr MTY1Myw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3ZtX2JvX3VwZGF0ZV9tYXBwaW5nKHN0cnVjdCAK Pj4+IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4+PiDCoCDCoCBlcnJvcl9mcmVlOgo+Pj4gwqDCoMKg wqDCoCBhbWRncHVfam9iX2ZyZWUoam9iKTsKPj4+IC3CoMKgwqAgYW1kZ3B1X3ZtX2ludmFsaWRh dGVfbGV2ZWwodm0sICZ2bS0+cm9vdCk7Cj4+PiArwqDCoMKgIGFtZGdwdV92bV9pbnZhbGlkYXRl X2xldmVsKGFkZXYsIHZtLCAmdm0tPnJvb3QsIDApOwo+Pj4gwqDCoMKgwqDCoCByZXR1cm4gcjsK Pj4+IMKgIH0KPj4+IMKgIEBAIC0yNzE2LDI2ICsyNzE3LDMxIEBAIGludCBhbWRncHVfdm1faW5p dChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAKPj4+ICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwK Pj4+IMKgIC8qKgo+Pj4gwqDCoCAqIGFtZGdwdV92bV9mcmVlX2xldmVscyAtIGZyZWUgUEQvUFQg bGV2ZWxzCj4+PiDCoMKgICoKPj4+IC0gKiBAbGV2ZWw6IFBEL1BUIHN0YXJ0aW5nIGxldmVsIHRv IGZyZWUKPj4+ICsgKiBAYWRldjogYW1kZ3B1IGRldmljZSBzdHJ1Y3R1cmUKPj4+ICsgKiBAcGFy ZW50OiBQRC9QVCBzdGFydGluZyBsZXZlbCB0byBmcmVlCj4+PiArICogQGxldmVsOiBsZXZlbCBv ZiBwYXJlbnQgc3RydWN0dXJlCj4+PiDCoMKgICoKPj4+IMKgwqAgKiBGcmVlIHRoZSBwYWdlIGRp cmVjdG9yeSBvciBwYWdlIHRhYmxlIGxldmVsIGFuZCBhbGwgc3ViIGxldmVscy4KPj4+IMKgwqAg Ki8KPj4+IC1zdGF0aWMgdm9pZCBhbWRncHVfdm1fZnJlZV9sZXZlbHMoc3RydWN0IGFtZGdwdV92 bV9wdCAqbGV2ZWwpCj4+PiArc3RhdGljIHZvaWQgYW1kZ3B1X3ZtX2ZyZWVfbGV2ZWxzKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgc3RydWN0IGFtZGdwdV92bV9wdCAqcGFyZW50LAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgbGV2ZWwpCj4+PiDCoCB7Cj4+PiAtwqDCoMKgIHVu c2lnbmVkIGk7Cj4+PiArwqDCoMKgIHVuc2lnbmVkIGksIG51bV9lbnRyaWVzID0gYW1kZ3B1X3Zt X251bV9lbnRyaWVzKGFkZXYsIGxldmVsKTsKPj4+IMKgIC3CoMKgwqAgaWYgKGxldmVsLT5iYXNl LmJvKSB7Cj4+PiAtwqDCoMKgwqDCoMKgwqAgbGlzdF9kZWwoJmxldmVsLT5iYXNlLmJvX2xpc3Qp Owo+Pj4gLcKgwqDCoMKgwqDCoMKgIGxpc3RfZGVsKCZsZXZlbC0+YmFzZS52bV9zdGF0dXMpOwo+ Pj4gLcKgwqDCoMKgwqDCoMKgIGFtZGdwdV9ib191bnJlZigmbGV2ZWwtPmJhc2UuYm8tPnNoYWRv dyk7Cj4+PiAtwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X2JvX3VucmVmKCZsZXZlbC0+YmFzZS5ibyk7 Cj4+PiArwqDCoMKgIGlmIChwYXJlbnQtPmJhc2UuYm8pIHsKPj4+ICvCoMKgwqDCoMKgwqDCoCBs aXN0X2RlbCgmcGFyZW50LT5iYXNlLmJvX2xpc3QpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIGxpc3Rf ZGVsKCZwYXJlbnQtPmJhc2Uudm1fc3RhdHVzKTsKPj4+ICvCoMKgwqDCoMKgwqDCoCBhbWRncHVf Ym9fdW5yZWYoJnBhcmVudC0+YmFzZS5iby0+c2hhZG93KTsKPj4+ICvCoMKgwqDCoMKgwqDCoCBh bWRncHVfYm9fdW5yZWYoJnBhcmVudC0+YmFzZS5ibyk7Cj4+PiDCoMKgwqDCoMKgIH0KPj4+IMKg IC3CoMKgwqAgaWYgKGxldmVsLT5lbnRyaWVzKQo+Pj4gLcKgwqDCoMKgwqDCoMKgIGZvciAoaSA9 IDA7IGkgPD0gbGV2ZWwtPmxhc3RfZW50cnlfdXNlZDsgaSsrKQo+Pj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgYW1kZ3B1X3ZtX2ZyZWVfbGV2ZWxzKCZsZXZlbC0+ZW50cmllc1tpXSk7Cj4+PiAr wqDCoMKgIGlmIChwYXJlbnQtPmVudHJpZXMpCj4+PiArwqDCoMKgwqDCoMKgwqAgZm9yIChpID0g MDsgaSA8IG51bV9lbnRyaWVzOyBpKyspCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhbWRn cHVfdm1fZnJlZV9sZXZlbHMoYWRldiwgJnBhcmVudC0+ZW50cmllc1tpXSwKPj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsZXZlbCArIDEpOwo+ Pj4gwqAgLcKgwqDCoCBrdmZyZWUobGV2ZWwtPmVudHJpZXMpOwo+Pj4gK8KgwqDCoCBrdmZyZWUo cGFyZW50LT5lbnRyaWVzKTsKPj4+IMKgIH0KPj4+IMKgIMKgIC8qKgo+Pj4gQEAgLTI3OTMsNyAr Mjc5OSw3IEBAIHZvaWQgYW1kZ3B1X3ZtX2Zpbmkoc3RydWN0IGFtZGdwdV9kZXZpY2UgCj4+PiAq YWRldiwgc3RydWN0IGFtZGdwdV92bSAqdm0pCj4+PiDCoMKgwqDCoMKgIGlmIChyKSB7Cj4+PiDC oMKgwqDCoMKgwqDCoMKgwqAgZGV2X2VycihhZGV2LT5kZXYsICJMZWFraW5nIHBhZ2UgdGFibGVz IGJlY2F1c2UgQk8gCj4+PiByZXNlcnZhdGlvbiBmYWlsZWRcbiIpOwo+Pj4gwqDCoMKgwqDCoCB9 IGVsc2Ugewo+Pj4gLcKgwqDCoMKgwqDCoMKgIGFtZGdwdV92bV9mcmVlX2xldmVscygmdm0tPnJv b3QpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIGFtZGdwdV92bV9mcmVlX2xldmVscyhhZGV2LCAmdm0t PnJvb3QsIDApOwo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGFtZGdwdV9ib191bnJlc2VydmUocm9v dCk7Cj4+PiDCoMKgwqDCoMKgIH0KPj4+IMKgwqDCoMKgwqAgYW1kZ3B1X2JvX3VucmVmKCZyb290 KTsKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0u aCAKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmgKPj4+IGluZGV4 IDQzZWExMzFkZDQxMS4uN2EzMDhhMWVhMDQ4IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmgKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV92bS5oCj4+PiBAQCAtMTQxLDcgKzE0MSw2IEBAIHN0cnVjdCBhbWRncHVf dm1fcHQgewo+Pj4gwqAgwqDCoMKgwqDCoCAvKiBhcnJheSBvZiBwYWdlIHRhYmxlcywgb25lIGZv ciBlYWNoIGRpcmVjdG9yeSBlbnRyeSAqLwo+Pj4gwqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X3Zt X3B0wqDCoMKgwqDCoMKgwqAgKmVudHJpZXM7Cj4+PiAtwqDCoMKgIHVuc2lnbmVkwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBsYXN0X2VudHJ5X3VzZWQ7Cj4+PiDCoCB9Owo+Pj4gwqAgwqAgI2RlZmlu ZSBBTURHUFVfVk1fRkFVTFQocGFzaWQsIGFkZHIpICgoKHU2NCkocGFzaWQpIDw8IDQ4KSB8IAo+ Pj4gKGFkZHIpKQo+Pgo+CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK