From mboxrd@z Thu Jan 1 00:00:00 1970 From: Leo Liu Subject: Re: [PATCH 2/2] drm/amdgpu: cleanup VCN IB generation Date: Fri, 9 Feb 2018 10:39:25 -0500 Message-ID: <4c0cd4e8-ffcf-7558-24a2-b4ea0eb4bdb0@amd.com> References: <20180207194822.7878-1-christian.koenig@amd.com> <20180207194822.7878-2-christian.koenig@amd.com> <680530de-0b4b-8c22-1210-2b2b4d70cbe1@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <680530de-0b4b-8c22-1210-2b2b4d70cbe1-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> Content-Language: en-GB 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: =?UTF-8?Q?Christian_K=c3=b6nig?= , amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org CgpPbiAwMi8wOS8yMDE4IDA3OjMyIEFNLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOgo+IExlbyBj b3VsZCB5b3UgZ2l2ZSB0aGlzIHBhdGNoIG9uIFJhdmVuIGEgdHJ5IGFuZCByZXZpZXcvYWNrIGl0 PwoKU3VyZS4KCkxlbwo+Cj4gSSd2ZSB0ZXN0ZWQgcGF0Y2ggIzEgb24gVmVnYTEwLCBidXQgSSBk b24ndCBoYXZlIGEgc3RhYmxlIFJhdmVuIHN5c3RlbSAKPiB0byB0ZXN0IHRoaXMgb25lLgo+Cj4g VGhhbmtzLAo+IENocmlzdGlhbi4KPgo+IEFtIDA3LjAyLjIwMTggdW0gMjA6NDggc2NocmllYiBD aHJpc3RpYW4gS8O2bmlnOgo+PiBTdGFydCB0byB1c2UgYW1kZ3B1X2JvX2NyZWF0ZV9yZXNlcnZl ZC4KPj4KPj4gU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5p Z0BhbWQuY29tPgo+PiAtLS0KPj4gwqAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X3Zjbi5jIHwgOTEgCj4+ICsrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+PiDCoCAx IGZpbGUgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgNzAgZGVsZXRpb25zKC0pCj4+Cj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmNuLmMgCj4+IGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Zjbi5jCj4+IGluZGV4IGU4NmQwYjJl OWI3YS4uOTdiZGRlOWE3MzllIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfdmNuLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X3Zjbi5jCj4+IEBAIC0yNzAsNDMgKzI3MCwyOCBAQCBpbnQgYW1kZ3B1X3Zjbl9kZWNfcmlu Z190ZXN0X3Jpbmcoc3RydWN0IAo+PiBhbWRncHVfcmluZyAqcmluZykKPj4gwqDCoMKgwqDCoCBy ZXR1cm4gcjsKPj4gwqAgfQo+PiDCoCAtc3RhdGljIGludCBhbWRncHVfdmNuX2RlY19zZW5kX21z ZyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIAo+PiBzdHJ1Y3QgYW1kZ3B1X2JvICpibywKPj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBib29sIGRpcmVjdCwgc3RydWN0 IGRtYV9mZW5jZSAqKmZlbmNlKQo+PiArc3RhdGljIGludCBhbWRncHVfdmNuX2RlY19zZW5kX21z ZyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9ibyAqYm8sIGJvb2wgZGlyZWN0LAo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSkK Pj4gwqAgewo+PiAtwqDCoMKgIHN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCBjdHggPSB7IHRydWUs IGZhbHNlIH07Cj4+IC3CoMKgwqAgc3RydWN0IHR0bV92YWxpZGF0ZV9idWZmZXIgdHY7Cj4+IC3C oMKgwqAgc3RydWN0IHd3X2FjcXVpcmVfY3R4IHRpY2tldDsKPj4gLcKgwqDCoCBzdHJ1Y3QgbGlz dF9oZWFkIGhlYWQ7Cj4+ICvCoMKgwqAgc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSByaW5n LT5hZGV2Owo+PiArwqDCoMKgIHN0cnVjdCBkbWFfZmVuY2UgKmYgPSBOVUxMOwo+PiDCoMKgwqDC oMKgIHN0cnVjdCBhbWRncHVfam9iICpqb2I7Cj4+IMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9p YiAqaWI7Cj4+IC3CoMKgwqAgc3RydWN0IGRtYV9mZW5jZSAqZiA9IE5VTEw7Cj4+IC3CoMKgwqAg c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSByaW5nLT5hZGV2Owo+PiDCoMKgwqDCoMKgIHVp bnQ2NF90IGFkZHI7Cj4+IMKgwqDCoMKgwqAgaW50IGksIHI7Cj4+IMKgIC3CoMKgwqAgbWVtc2V0 KCZ0diwgMCwgc2l6ZW9mKHR2KSk7Cj4+IC3CoMKgwqAgdHYuYm8gPSAmYm8tPnRibzsKPj4gLQo+ PiAtwqDCoMKgIElOSVRfTElTVF9IRUFEKCZoZWFkKTsKPj4gLcKgwqDCoCBsaXN0X2FkZCgmdHYu aGVhZCwgJmhlYWQpOwo+PiAtCj4+IC3CoMKgwqAgciA9IHR0bV9ldV9yZXNlcnZlX2J1ZmZlcnMo JnRpY2tldCwgJmhlYWQsIHRydWUsIE5VTEwpOwo+PiAtwqDCoMKgIGlmIChyKQo+PiAtwqDCoMKg wqDCoMKgwqAgcmV0dXJuIHI7Cj4+IC0KPj4gLcKgwqDCoCByID0gdHRtX2JvX3ZhbGlkYXRlKCZi by0+dGJvLCAmYm8tPnBsYWNlbWVudCwgJmN0eCk7Cj4+IC3CoMKgwqAgaWYgKHIpCj4+IC3CoMKg wqDCoMKgwqDCoCBnb3RvIGVycjsKPj4gLQo+PiDCoMKgwqDCoMKgIHIgPSBhbWRncHVfam9iX2Fs bG9jX3dpdGhfaWIoYWRldiwgNjQsICZqb2IpOwo+PiDCoMKgwqDCoMKgIGlmIChyKQo+PiDCoMKg wqDCoMKgwqDCoMKgwqAgZ290byBlcnI7Cj4+IMKgIMKgwqDCoMKgwqAgaWIgPSAmam9iLT5pYnNb MF07Cj4+IMKgwqDCoMKgwqAgYWRkciA9IGFtZGdwdV9ib19ncHVfb2Zmc2V0KGJvKTsKPj4gLcKg wqDCoCBpYi0+cHRyWzBdID0gUEFDS0VUMChTT0MxNV9SRUdfT0ZGU0VUKFVWRCwgMCwgCj4+IG1t VVZEX0dQQ09NX1ZDUFVfREFUQTApLCAwKTsKPj4gK8KgwqDCoCBpYi0+cHRyWzBdID0gUEFDS0VU MChTT0MxNV9SRUdfT0ZGU0VUKFVWRCwgMCwgCj4+IG1tVVZEX0dQQ09NX1ZDUFVfREFUQTApLAo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMCk7Cj4+IMKgwqDCoMKgwqAgaWIt PnB0clsxXSA9IGFkZHI7Cj4+IC3CoMKgwqAgaWItPnB0clsyXSA9IFBBQ0tFVDAoU09DMTVfUkVH X09GRlNFVChVVkQsIDAsIAo+PiBtbVVWRF9HUENPTV9WQ1BVX0RBVEExKSwgMCk7Cj4+ICvCoMKg wqAgaWItPnB0clsyXSA9IFBBQ0tFVDAoU09DMTVfUkVHX09GRlNFVChVVkQsIDAsIAo+PiBtbVVW RF9HUENPTV9WQ1BVX0RBVEExKSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IDApOwo+PiDCoMKgwqDCoMKgIGliLT5wdHJbM10gPSBhZGRyID4+IDMyOwo+PiDCoMKgwqDCoMKg IGliLT5wdHJbNF0gPSBQQUNLRVQwKFNPQzE1X1JFR19PRkZTRVQoVVZELCAwLCAKPj4gbW1VVkRf R1BDT01fVkNQVV9DTUQpLCAwKTsKPj4gwqDCoMKgwqDCoCBpYi0+cHRyWzVdID0gMDsKPj4gQEAg LTMzMCwxMSArMzE1LDEyIEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3Zjbl9kZWNfc2VuZF9tc2coc3Ry dWN0IAo+PiBhbWRncHVfcmluZyAqcmluZywgc3RydWN0IGFtZGdwdV9ibyAqYgo+PiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGVycl9mcmVlOwo+PiDCoMKgwqDCoMKgIH0KPj4gwqAg LcKgwqDCoCB0dG1fZXVfZmVuY2VfYnVmZmVyX29iamVjdHMoJnRpY2tldCwgJmhlYWQsIGYpOwo+ PiArwqDCoMKgIGFtZGdwdV9ib19mZW5jZShibywgZiwgZmFsc2UpOwo+PiArwqDCoMKgIGFtZGdw dV9ib191bnJlc2VydmUoYm8pOwo+PiArwqDCoMKgIGFtZGdwdV9ib191bnJlZigmYm8pOwo+PiDC oCDCoMKgwqDCoMKgIGlmIChmZW5jZSkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgICpmZW5jZSA9IGRt YV9mZW5jZV9nZXQoZik7Cj4+IC3CoMKgwqAgYW1kZ3B1X2JvX3VucmVmKCZibyk7Cj4+IMKgwqDC oMKgwqAgZG1hX2ZlbmNlX3B1dChmKTsKPj4gwqAgwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4gQEAg LTM0Myw3ICszMjksOCBAQCBzdGF0aWMgaW50IGFtZGdwdV92Y25fZGVjX3NlbmRfbXNnKHN0cnVj dCAKPj4gYW1kZ3B1X3JpbmcgKnJpbmcsIHN0cnVjdCBhbWRncHVfYm8gKmIKPj4gwqDCoMKgwqDC oCBhbWRncHVfam9iX2ZyZWUoam9iKTsKPj4gwqAgwqAgZXJyOgo+PiAtwqDCoMKgIHR0bV9ldV9i YWNrb2ZmX3Jlc2VydmF0aW9uKCZ0aWNrZXQsICZoZWFkKTsKPj4gK8KgwqDCoCBhbWRncHVfYm9f dW5yZXNlcnZlKGJvKTsKPj4gK8KgwqDCoCBhbWRncHVfYm9fdW5yZWYoJmJvKTsKPj4gwqDCoMKg wqDCoCByZXR1cm4gcjsKPj4gwqAgfQo+PiDCoCBAQCAtMzUxLDMxICszMzgsMTYgQEAgc3RhdGlj IGludCAKPj4gYW1kZ3B1X3Zjbl9kZWNfZ2V0X2NyZWF0ZV9tc2coc3RydWN0IGFtZGdwdV9yaW5n ICpyaW5nLCB1aW50MzJfdCBoYW5kCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSkKPj4gwqAgewo+PiDCoMKgwqDCoMKgIHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gcmluZy0+YWRldjsKPj4gLcKgwqDCoCBzdHJ1Y3Qg YW1kZ3B1X2JvICpibzsKPj4gK8KgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2JvICpibyA9IE5VTEw7Cj4+ IMKgwqDCoMKgwqAgdWludDMyX3QgKm1zZzsKPj4gwqDCoMKgwqDCoCBpbnQgciwgaTsKPj4gwqAg LcKgwqDCoCByID0gYW1kZ3B1X2JvX2NyZWF0ZShhZGV2LCAxMDI0LCBQQUdFX1NJWkUsIHRydWUs Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBTURHUFVfR0VNX0RPTUFJTl9W UkFNLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQU1ER1BVX0dFTV9DUkVB VEVfQ1BVX0FDQ0VTU19SRVFVSVJFRCB8Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBBTURHUFVfR0VNX0NSRUFURV9WUkFNX0NPTlRJR1VPVVMsCj4+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBOVUxMLCBOVUxMLCAmYm8pOwo+PiArwqDCoMKgIHIgPSBhbWRn cHVfYm9fY3JlYXRlX3Jlc2VydmVkKGFkZXYsIDEwMjQsIFBBR0VfU0laRSwKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBTURHUFVfR0VNX0RPTUFJTl9WUkFN LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZibywgTlVM TCwgKHZvaWQgKiopJm1zZyk7Cj4+IMKgwqDCoMKgwqAgaWYgKHIpCj4+IMKgwqDCoMKgwqDCoMKg wqDCoCByZXR1cm4gcjsKPj4gwqAgLcKgwqDCoCByID0gYW1kZ3B1X2JvX3Jlc2VydmUoYm8sIGZh bHNlKTsKPj4gLcKgwqDCoCBpZiAocikgewo+PiAtwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X2JvX3Vu cmVmKCZibyk7Cj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4gcjsKPj4gLcKgwqDCoCB9Cj4+IC0K Pj4gLcKgwqDCoCByID0gYW1kZ3B1X2JvX2ttYXAoYm8sICh2b2lkICoqKSZtc2cpOwo+PiAtwqDC oMKgIGlmIChyKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBhbWRncHVfYm9fdW5yZXNlcnZlKGJvKTsK Pj4gLcKgwqDCoMKgwqDCoMKgIGFtZGdwdV9ib191bnJlZigmYm8pOwo+PiAtwqDCoMKgwqDCoMKg wqAgcmV0dXJuIHI7Cj4+IC3CoMKgwqAgfQo+PiAtCj4+IMKgwqDCoMKgwqAgbXNnWzBdID0gY3B1 X3RvX2xlMzIoMHgwMDAwMDAyOCk7Cj4+IMKgwqDCoMKgwqAgbXNnWzFdID0gY3B1X3RvX2xlMzIo MHgwMDAwMDAzOCk7Cj4+IMKgwqDCoMKgwqAgbXNnWzJdID0gY3B1X3RvX2xlMzIoMHgwMDAwMDAw MSk7Cj4+IEBAIC0zOTMsOSArMzY1LDYgQEAgc3RhdGljIGludCBhbWRncHVfdmNuX2RlY19nZXRf Y3JlYXRlX21zZyhzdHJ1Y3QgCj4+IGFtZGdwdV9yaW5nICpyaW5nLCB1aW50MzJfdCBoYW5kCj4+ IMKgwqDCoMKgwqAgZm9yIChpID0gMTQ7IGkgPCAxMDI0OyArK2kpCj4+IMKgwqDCoMKgwqDCoMKg wqDCoCBtc2dbaV0gPSBjcHVfdG9fbGUzMigweDApOwo+PiDCoCAtwqDCoMKgIGFtZGdwdV9ib19r dW5tYXAoYm8pOwo+PiAtwqDCoMKgIGFtZGdwdV9ib191bnJlc2VydmUoYm8pOwo+PiAtCj4+IMKg wqDCoMKgwqAgcmV0dXJuIGFtZGdwdV92Y25fZGVjX3NlbmRfbXNnKHJpbmcsIGJvLCB0cnVlLCBm ZW5jZSk7Cj4+IMKgIH0KPj4gwqAgQEAgLTQwNywyNyArMzc2LDEyIEBAIHN0YXRpYyBpbnQgCj4+ IGFtZGdwdV92Y25fZGVjX2dldF9kZXN0cm95X21zZyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcs IHVpbnQzMl90IGhhbgo+PiDCoMKgwqDCoMKgIHVpbnQzMl90ICptc2c7Cj4+IMKgwqDCoMKgwqAg aW50IHIsIGk7Cj4+IMKgIC3CoMKgwqAgciA9IGFtZGdwdV9ib19jcmVhdGUoYWRldiwgMTAyNCwg UEFHRV9TSVpFLCB0cnVlLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQU1E R1BVX0dFTV9ET01BSU5fVlJBTSwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IEFNREdQVV9HRU1fQ1JFQVRFX0NQVV9BQ0NFU1NfUkVRVUlSRUQgfAo+PiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgQU1ER1BVX0dFTV9DUkVBVEVfVlJBTV9DT05USUdVT1VTLAo+ PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgTlVMTCwgTlVMTCwgJmJvKTsKPj4g K8KgwqDCoCByID0gYW1kZ3B1X2JvX2NyZWF0ZV9yZXNlcnZlZChhZGV2LCAxMDI0LCBQQUdFX1NJ WkUsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQU1ER1BV X0dFTV9ET01BSU5fVlJBTSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAmYm8sIE5VTEwsICh2b2lkICoqKSZtc2cpOwo+PiDCoMKgwqDCoMKgIGlmIChyKQo+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHI7Cj4+IMKgIC3CoMKgwqAgciA9IGFtZGdwdV9i b19yZXNlcnZlKGJvLCBmYWxzZSk7Cj4+IC3CoMKgwqAgaWYgKHIpIHsKPj4gLcKgwqDCoMKgwqDC oMKgIGFtZGdwdV9ib191bnJlZigmYm8pOwo+PiAtwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHI7Cj4+ IC3CoMKgwqAgfQo+PiAtCj4+IC3CoMKgwqAgciA9IGFtZGdwdV9ib19rbWFwKGJvLCAodm9pZCAq KikmbXNnKTsKPj4gLcKgwqDCoCBpZiAocikgewo+PiAtwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X2Jv X3VucmVzZXJ2ZShibyk7Cj4+IC3CoMKgwqDCoMKgwqDCoCBhbWRncHVfYm9fdW5yZWYoJmJvKTsK Pj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiByOwo+PiAtwqDCoMKgIH0KPj4gLQo+PiDCoMKgwqDC oMKgIG1zZ1swXSA9IGNwdV90b19sZTMyKDB4MDAwMDAwMjgpOwo+PiDCoMKgwqDCoMKgIG1zZ1sx XSA9IGNwdV90b19sZTMyKDB4MDAwMDAwMTgpOwo+PiDCoMKgwqDCoMKgIG1zZ1syXSA9IGNwdV90 b19sZTMyKDB4MDAwMDAwMDApOwo+PiBAQCAtNDM3LDkgKzM5MSw2IEBAIHN0YXRpYyBpbnQgYW1k Z3B1X3Zjbl9kZWNfZ2V0X2Rlc3Ryb3lfbXNnKHN0cnVjdCAKPj4gYW1kZ3B1X3JpbmcgKnJpbmcs IHVpbnQzMl90IGhhbgo+PiDCoMKgwqDCoMKgIGZvciAoaSA9IDY7IGkgPCAxMDI0OyArK2kpCj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCBtc2dbaV0gPSBjcHVfdG9fbGUzMigweDApOwo+PiDCoCAtwqDC oMKgIGFtZGdwdV9ib19rdW5tYXAoYm8pOwo+PiAtwqDCoMKgIGFtZGdwdV9ib191bnJlc2VydmUo Ym8pOwo+PiAtCj4+IMKgwqDCoMKgwqAgcmV0dXJuIGFtZGdwdV92Y25fZGVjX3NlbmRfbXNnKHJp bmcsIGJvLCBkaXJlY3QsIGZlbmNlKTsKPj4gwqAgfQo+Cj4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KPiBhbWQtZ2Z4IG1haWxpbmcgbGlzdAo+IGFtZC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2FtZC1nZngK