From mboxrd@z Thu Jan 1 00:00:00 1970 From: Arto Merilainen Subject: [PATCH 2/4] host1x: Pass register value in firewall Date: Thu, 21 May 2015 16:20:23 +0300 Message-ID: <1432214425-27137-3-git-send-email-amerilainen@nvidia.com> References: <1432214425-27137-1-git-send-email-amerilainen@nvidia.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from hqemgate15.nvidia.com (hqemgate15.nvidia.com [216.228.121.64]) by gabe.freedesktop.org (Postfix) with ESMTP id B3A5989F63 for ; Thu, 21 May 2015 06:22:04 -0700 (PDT) In-Reply-To: <1432214425-27137-1-git-send-email-amerilainen@nvidia.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: thierry.reding@gmail.com Cc: achew@nvidia.com, dnibade@nvidia.com, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, srasal@nvidia.com, linux-tegra@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org SW4gZ3IyZCBhbmQgZ3IzZCB1bml0cyB0aGUgcmVnaXN0ZXIgb2Zmc2V0IHdhcyBzdWZmaWNpZW50 IGZvciBkZXRlcm1pbmluZwppZiB0aGUgcmVnaXN0ZXIgaW4gaW50ZXJlc3QgaXMgdXNlZCBmb3Ig c3RvcmluZyBhIHJlZ2lzdGVyIHZhbHVlLgoKSG93ZXZlciwgaW4gVklDIHRoaXMgaXMgbm90IHRo ZSBjYXNlLiBUaGUgb3BlcmF0aW9ucyBhcmUgcGFzc2VkIHRocm91Z2gKdHdvIHJlZ2lzdGVycywg TUVUSE9EMCBhbmQgTUVUSE9EMS4gRGVwZW5kaW5nIG9uIGNvbnRlbnQgb2YgTUVUSE9EMCwKTUVU SE9EMSBjYW4gYmUgZWl0aGVyIGFkZHJlc3Mgb3IgZGF0YSBmaWVsZC4KClRoaXMgcGF0Y2ggdXBk YXRlcyB0aGUgZmlyZXdhbGwgaW50ZXJmYWNlIHRvIGRlbGl2ZXIgYWxzbyB0aGUgcmVnaXN0ZXIK dmFsdWUgdG8gYWxsb3cgYm9vay1rZWVwaW5nIGluc2lkZSB0aGUgZW5naW5lIGRyaXZlci4KClNp Z25lZC1vZmYtYnk6IEFydG8gTWVyaWxhaW5lbiA8YW1lcmlsYWluZW5AbnZpZGlhLmNvbT4KLS0t CiBkcml2ZXJzL2dwdS9kcm0vdGVncmEvZHJtLmggIHwgIDQgKystLQogZHJpdmVycy9ncHUvZHJt L3RlZ3JhL2dyMmQuYyB8ICA0ICsrLS0KIGRyaXZlcnMvZ3B1L2RybS90ZWdyYS9ncjNkLmMgfCAg NCArKy0tCiBkcml2ZXJzL2dwdS9ob3N0MXgvam9iLmMgICAgIHwgMzUgKysrKysrKysrKysrKysr KysrKysrKystLS0tLS0tLS0tLS0KIGluY2x1ZGUvbGludXgvaG9zdDF4LmggICAgICAgfCAgNCAr Ky0tCiA1IGZpbGVzIGNoYW5nZWQsIDMxIGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9kcm0uaCBiL2RyaXZlcnMvZ3B1L2Ry bS90ZWdyYS9kcm0uaAppbmRleCA2NTliMmZjYzk4NmQuLjBlNzc1NmU3MjBjNSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RybS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdy YS9kcm0uaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXZpb25p YyBEZXNpZ24gR21iSAotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTMgTlZJRElBIENPUlBPUkFU SU9OLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE1IE5W SURJQSBDT1JQT1JBVElPTi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKICAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgdmVyc2lvbiAyIGFzCkBAIC03MCw3ICs3MCw3IEBAIHN0cnVjdCB0ZWdyYV9kcm1fY2xpZW50 X29wcyB7CiAJaW50ICgqb3Blbl9jaGFubmVsKShzdHJ1Y3QgdGVncmFfZHJtX2NsaWVudCAqY2xp ZW50LAogCQkJICAgIHN0cnVjdCB0ZWdyYV9kcm1fY29udGV4dCAqY29udGV4dCk7CiAJdm9pZCAo KmNsb3NlX2NoYW5uZWwpKHN0cnVjdCB0ZWdyYV9kcm1fY29udGV4dCAqY29udGV4dCk7Ci0JaW50 ICgqaXNfYWRkcl9yZWcpKHN0cnVjdCBkZXZpY2UgKmRldiwgdTMyIGNsYXNzLCB1MzIgb2Zmc2V0 KTsKKwlpbnQgKCppc19hZGRyX3JlZykoc3RydWN0IGRldmljZSAqZGV2LCB1MzIgY2xhc3MsIHUz MiBvZmZzZXQsIHUzMiB2YWwpOwogCWludCAoKnN1Ym1pdCkoc3RydWN0IHRlZ3JhX2RybV9jb250 ZXh0ICpjb250ZXh0LAogCQkgICAgICBzdHJ1Y3QgZHJtX3RlZ3JhX3N1Ym1pdCAqYXJncywgc3Ry dWN0IGRybV9kZXZpY2UgKmRybSwKIAkJICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlKTsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9ncjJkLmMgYi9kcml2ZXJzL2dwdS9kcm0v dGVncmEvZ3IyZC5jCmluZGV4IDAyY2QzZTM3YTZlYy4uN2U0NDI0ZjE1Y2RmIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZ3IyZC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdy YS9ncjJkLmMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChjKSAyMDEyLTIwMTMs IE5WSURJQSBDb3Jwb3JhdGlvbi4KKyAqIENvcHlyaWdodCAoYykgMjAxMi0yMDE1LCBOVklESUEg Q29ycG9yYXRpb24uCiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCkBAIC04NCw3ICs4 NCw3IEBAIHN0YXRpYyB2b2lkIGdyMmRfY2xvc2VfY2hhbm5lbChzdHJ1Y3QgdGVncmFfZHJtX2Nv bnRleHQgKmNvbnRleHQpCiAJaG9zdDF4X2NoYW5uZWxfcHV0KGNvbnRleHQtPmNoYW5uZWwpOwog fQogCi1zdGF0aWMgaW50IGdyMmRfaXNfYWRkcl9yZWcoc3RydWN0IGRldmljZSAqZGV2LCB1MzIg Y2xhc3MsIHUzMiBvZmZzZXQpCitzdGF0aWMgaW50IGdyMmRfaXNfYWRkcl9yZWcoc3RydWN0IGRl dmljZSAqZGV2LCB1MzIgY2xhc3MsIHUzMiBvZmZzZXQsIHUzMiB2YWwpCiB7CiAJc3RydWN0IGdy MmQgKmdyMmQgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3RlZ3JhL2dyM2QuYyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9ncjNkLmMKaW5kZXgg MGIzZjJiOTc3YmEwLi45Y2VhZjM1YTg1NmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90 ZWdyYS9ncjNkLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2dyM2QuYwpAQCAtMSw2ICsx LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXZpb25pYyBEZXNpZ24gR21iSAotICog Q29weXJpZ2h0IChDKSAyMDEzIE5WSURJQSBDb3Jwb3JhdGlvbgorICogQ29weXJpZ2h0IChDKSAy MDEzLTIwMTUgTlZJRElBIENvcnBvcmF0aW9uCiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAqIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAy IGFzCkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyB2b2lkIGdyM2RfY2xvc2VfY2hhbm5lbChzdHJ1 Y3QgdGVncmFfZHJtX2NvbnRleHQgKmNvbnRleHQpCiAJaG9zdDF4X2NoYW5uZWxfcHV0KGNvbnRl eHQtPmNoYW5uZWwpOwogfQogCi1zdGF0aWMgaW50IGdyM2RfaXNfYWRkcl9yZWcoc3RydWN0IGRl dmljZSAqZGV2LCB1MzIgY2xhc3MsIHUzMiBvZmZzZXQpCitzdGF0aWMgaW50IGdyM2RfaXNfYWRk cl9yZWcoc3RydWN0IGRldmljZSAqZGV2LCB1MzIgY2xhc3MsIHUzMiBvZmZzZXQsIHUzMiB2YWwp CiB7CiAJc3RydWN0IGdyM2QgKmdyM2QgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKIApkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvaG9zdDF4L2pvYi5jIGIvZHJpdmVycy9ncHUvaG9zdDF4L2pvYi5j CmluZGV4IGI3MmFhOTE4ZmE2OS4uNzdkOTc3YmJmOTIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9ob3N0MXgvam9iLmMKKysrIGIvZHJpdmVycy9ncHUvaG9zdDF4L2pvYi5jCkBAIC0yOTUsOSAr Mjk1LDEwIEBAIHN0cnVjdCBob3N0MXhfZmlyZXdhbGwgewogCXUzMiBjb3VudDsKIH07CiAKLXN0 YXRpYyBpbnQgY2hlY2tfcmVnaXN0ZXIoc3RydWN0IGhvc3QxeF9maXJld2FsbCAqZncsIHVuc2ln bmVkIGxvbmcgb2Zmc2V0KQorc3RhdGljIGludCBjaGVja19yZWdpc3RlcihzdHJ1Y3QgaG9zdDF4 X2ZpcmV3YWxsICpmdywKKwkJCSAgdW5zaWduZWQgbG9uZyBvZmZzZXQsIHUzMiB2YWwpCiB7Ci0J aWYgKGZ3LT5qb2ItPmlzX2FkZHJfcmVnKGZ3LT5kZXYsIGZ3LT5jbGFzcywgb2Zmc2V0KSkgewor CWlmIChmdy0+am9iLT5pc19hZGRyX3JlZyhmdy0+ZGV2LCBmdy0+Y2xhc3MsIG9mZnNldCwgdmFs KSkgewogCQlpZiAoIWZ3LT5udW1fcmVsb2NzKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAKQEAgLTMx MSwxOCArMzEyLDIxIEBAIHN0YXRpYyBpbnQgY2hlY2tfcmVnaXN0ZXIoc3RydWN0IGhvc3QxeF9m aXJld2FsbCAqZncsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KQogCXJldHVybiAwOwogfQogCi1zdGF0 aWMgaW50IGNoZWNrX21hc2soc3RydWN0IGhvc3QxeF9maXJld2FsbCAqZncpCitzdGF0aWMgaW50 IGNoZWNrX21hc2soc3RydWN0IGhvc3QxeF9maXJld2FsbCAqZncsIHN0cnVjdCBob3N0MXhfam9i X2dhdGhlciAqZykKIHsKKwl1MzIgKmNtZGJ1Zl9iYXNlID0gKHUzMiAqKWZ3LT5qb2ItPmdhdGhl cl9jb3B5X21hcHBlZCArCisJCShnLT5vZmZzZXQgLyBzaXplb2YodTMyKSk7CiAJdTMyIG1hc2sg PSBmdy0+bWFzazsKIAl1MzIgcmVnID0gZnctPnJlZzsKIAlpbnQgcmV0OwogCiAJd2hpbGUgKG1h c2spIHsKKwkJdTMyIHZhbCA9IGNtZGJ1Zl9iYXNlW2Z3LT5vZmZzZXRdOwogCQlpZiAoZnctPndv cmRzID09IDApCiAJCQlyZXR1cm4gLUVJTlZBTDsKIAogCQlpZiAobWFzayAmIDEpIHsKLQkJCXJl dCA9IGNoZWNrX3JlZ2lzdGVyKGZ3LCByZWcpOworCQkJcmV0ID0gY2hlY2tfcmVnaXN0ZXIoZncs IHJlZywgdmFsKTsKIAkJCWlmIChyZXQgPCAwKQogCQkJCXJldHVybiByZXQ7CiAKQEAgLTMzNiwx NyArMzQwLDIwIEBAIHN0YXRpYyBpbnQgY2hlY2tfbWFzayhzdHJ1Y3QgaG9zdDF4X2ZpcmV3YWxs ICpmdykKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBjaGVja19pbmNyKHN0cnVjdCBob3N0 MXhfZmlyZXdhbGwgKmZ3KQorc3RhdGljIGludCBjaGVja19pbmNyKHN0cnVjdCBob3N0MXhfZmly ZXdhbGwgKmZ3LCBzdHJ1Y3QgaG9zdDF4X2pvYl9nYXRoZXIgKmcpCiB7CisJdTMyICpjbWRidWZf YmFzZSA9ICh1MzIgKilmdy0+am9iLT5nYXRoZXJfY29weV9tYXBwZWQgKworCQkoZy0+b2Zmc2V0 IC8gc2l6ZW9mKHUzMikpOwogCXUzMiBjb3VudCA9IGZ3LT5jb3VudDsKIAl1MzIgcmVnID0gZnct PnJlZzsKIAlpbnQgcmV0OwogCiAJd2hpbGUgKGNvdW50KSB7CisJCXUzMiB2YWwgPSBjbWRidWZf YmFzZVtmdy0+b2Zmc2V0XTsKIAkJaWYgKGZ3LT53b3JkcyA9PSAwKQogCQkJcmV0dXJuIC1FSU5W QUw7CiAKLQkJcmV0ID0gY2hlY2tfcmVnaXN0ZXIoZncsIHJlZyk7CisJCXJldCA9IGNoZWNrX3Jl Z2lzdGVyKGZ3LCByZWcsIHZhbCk7CiAJCWlmIChyZXQgPCAwKQogCQkJcmV0dXJuIHJldDsKIApA QCAtMzU5LDE2ICszNjYsMjAgQEAgc3RhdGljIGludCBjaGVja19pbmNyKHN0cnVjdCBob3N0MXhf ZmlyZXdhbGwgKmZ3KQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGNoZWNrX25vbmluY3Io c3RydWN0IGhvc3QxeF9maXJld2FsbCAqZncpCitzdGF0aWMgaW50IGNoZWNrX25vbmluY3Ioc3Ry dWN0IGhvc3QxeF9maXJld2FsbCAqZncsCisJCQkgc3RydWN0IGhvc3QxeF9qb2JfZ2F0aGVyICpn KQogeworCXUzMiAqY21kYnVmX2Jhc2UgPSAodTMyICopZnctPmpvYi0+Z2F0aGVyX2NvcHlfbWFw cGVkICsKKwkJKGctPm9mZnNldCAvIHNpemVvZih1MzIpKTsKIAl1MzIgY291bnQgPSBmdy0+Y291 bnQ7CiAJaW50IHJldDsKIAogCXdoaWxlIChjb3VudCkgeworCQl1MzIgdmFsID0gY21kYnVmX2Jh c2VbZnctPm9mZnNldF07CiAJCWlmIChmdy0+d29yZHMgPT0gMCkKIAkJCXJldHVybiAtRUlOVkFM OwogCi0JCXJldCA9IGNoZWNrX3JlZ2lzdGVyKGZ3LCBmdy0+cmVnKTsKKwkJcmV0ID0gY2hlY2tf cmVnaXN0ZXIoZncsIGZ3LT5yZWcsIHZhbCk7CiAJCWlmIChyZXQgPCAwKQogCQkJcmV0dXJuIHJl dDsKIApAQCAtNDA4LDE0ICs0MTksMTQgQEAgc3RhdGljIGludCB2YWxpZGF0ZShzdHJ1Y3QgaG9z dDF4X2ZpcmV3YWxsICpmdywgc3RydWN0IGhvc3QxeF9qb2JfZ2F0aGVyICpnKQogCQkJZnctPmNs YXNzID0gd29yZCA+PiA2ICYgMHgzZmY7CiAJCQlmdy0+bWFzayA9IHdvcmQgJiAweDNmOwogCQkJ ZnctPnJlZyA9IHdvcmQgPj4gMTYgJiAweGZmZjsKLQkJCWVyciA9IGNoZWNrX21hc2soZncpOwor CQkJZXJyID0gY2hlY2tfbWFzayhmdywgZyk7CiAJCQlpZiAoZXJyKQogCQkJCWdvdG8gb3V0Owog CQkJYnJlYWs7CiAJCWNhc2UgMToKIAkJCWZ3LT5yZWcgPSB3b3JkID4+IDE2ICYgMHhmZmY7CiAJ CQlmdy0+Y291bnQgPSB3b3JkICYgMHhmZmZmOwotCQkJZXJyID0gY2hlY2tfaW5jcihmdyk7CisJ CQllcnIgPSBjaGVja19pbmNyKGZ3LCBnKTsKIAkJCWlmIChlcnIpCiAJCQkJZ290byBvdXQ7CiAJ CQlicmVhazsKQEAgLTQyMyw3ICs0MzQsNyBAQCBzdGF0aWMgaW50IHZhbGlkYXRlKHN0cnVjdCBo b3N0MXhfZmlyZXdhbGwgKmZ3LCBzdHJ1Y3QgaG9zdDF4X2pvYl9nYXRoZXIgKmcpCiAJCWNhc2Ug MjoKIAkJCWZ3LT5yZWcgPSB3b3JkID4+IDE2ICYgMHhmZmY7CiAJCQlmdy0+Y291bnQgPSB3b3Jk ICYgMHhmZmZmOwotCQkJZXJyID0gY2hlY2tfbm9uaW5jcihmdyk7CisJCQllcnIgPSBjaGVja19u b25pbmNyKGZ3LCBnKTsKIAkJCWlmIChlcnIpCiAJCQkJZ290byBvdXQ7CiAJCQlicmVhazsKQEAg LTQzMSw3ICs0NDIsNyBAQCBzdGF0aWMgaW50IHZhbGlkYXRlKHN0cnVjdCBob3N0MXhfZmlyZXdh bGwgKmZ3LCBzdHJ1Y3QgaG9zdDF4X2pvYl9nYXRoZXIgKmcpCiAJCWNhc2UgMzoKIAkJCWZ3LT5t YXNrID0gd29yZCAmIDB4ZmZmZjsKIAkJCWZ3LT5yZWcgPSB3b3JkID4+IDE2ICYgMHhmZmY7Ci0J CQllcnIgPSBjaGVja19tYXNrKGZ3KTsKKwkJCWVyciA9IGNoZWNrX21hc2soZncsIGcpOwogCQkJ aWYgKGVycikKIAkJCQlnb3RvIG91dDsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9s aW51eC9ob3N0MXguaCBiL2luY2x1ZGUvbGludXgvaG9zdDF4LmgKaW5kZXggZDJiYTdkMzM0MDM5 Li5mYzg2Y2VkNzdlNzYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvaG9zdDF4LmgKKysrIGIv aW5jbHVkZS9saW51eC9ob3N0MXguaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg KGMpIDIwMDktMjAxMywgTlZJRElBIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor ICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTUsIE5WSURJQSBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0 cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICogaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTIyNSw3 ICsyMjUsNyBAQCBzdHJ1Y3QgaG9zdDF4X2pvYiB7CiAJdTggKmdhdGhlcl9jb3B5X21hcHBlZDsK IAogCS8qIENoZWNrIGlmIHJlZ2lzdGVyIGlzIG1hcmtlZCBhcyBhbiBhZGRyZXNzIHJlZyAqLwot CWludCAoKmlzX2FkZHJfcmVnKShzdHJ1Y3QgZGV2aWNlICpkZXYsIHUzMiByZWcsIHUzMiBjbGFz cyk7CisJaW50ICgqaXNfYWRkcl9yZWcpKHN0cnVjdCBkZXZpY2UgKmRldiwgdTMyIHJlZywgdTMy IGNsYXNzLCB1MzIgdmFsKTsKIAogCS8qIFJlcXVlc3QgYSBTRVRDTEFTUyB0byB0aGlzIGNsYXNz ICovCiAJdTMyIGNsYXNzOwotLSAKMS44LjEuNQoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWwK