From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dmitry Torokhov Subject: Re: [PATCH 2/2] xen/input: add multi-touch support Date: Thu, 20 Apr 2017 19:10:18 -0700 Message-ID: <20170421021018.GB23279__904.505424159829$1492740691$gmane$org@dtor-ws> References: <1492083484-31786-1-git-send-email-andr2000@gmail.com> <1492083484-31786-3-git-send-email-andr2000@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d1O1g-00076U-GT for xen-devel@lists.xenproject.org; Fri, 21 Apr 2017 02:10:24 +0000 Received: by mail-io0-f194.google.com with SMTP id h41so24021111ioi.1 for ; Thu, 20 Apr 2017 19:10:22 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1492083484-31786-3-git-send-email-andr2000@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Oleksandr Andrushchenko Cc: jgross@suse.com, Oleksandr Andrushchenko , vlad.babchuk@gmail.com, linux-kernel@vger.kernel.org, andrii.anisov@gmail.com, olekstysh@gmail.com, al1img@gmail.com, linux-input@vger.kernel.org, xen-devel@lists.xenproject.org, boris.ostrovsky@oracle.com, joculator@gmail.com List-Id: xen-devel@lists.xenproject.org SGkgT2xla3NhbmRyLAoKT24gVGh1LCBBcHIgMTMsIDIwMTcgYXQgMDI6Mzg6MDRQTSArMDMwMCwg T2xla3NhbmRyIEFuZHJ1c2hjaGVua28gd3JvdGU6Cj4gRnJvbTogT2xla3NhbmRyIEFuZHJ1c2hj aGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgo+IAo+IEV4dGVuZCB4ZW5f a2JkZnJvbnQgdG8gcHJvdmlkZSBtdWx0aS10b3VjaCBzdXBwb3J0Cj4gdG8gdW5wcml2aWxlZ2Vk IGRvbWFpbnMuCj4gCj4gU2lnbmVkLW9mZi1ieTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9s ZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgo+IC0tLQo+ICBkcml2ZXJzL2lucHV0L21p c2MveGVuLWtiZGZyb250LmMgfCAxNDIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0KPiAgMSBmaWxlIGNoYW5nZWQsIDE0MCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt KQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L21pc2MveGVuLWtiZGZyb250LmMgYi9k cml2ZXJzL2lucHV0L21pc2MveGVuLWtiZGZyb250LmMKPiBpbmRleCAwMWMyN2I0YzMyODguLmU1 ZDA2NGFhYTIzNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2lucHV0L21pc2MveGVuLWtiZGZyb250 LmMKPiArKysgYi9kcml2ZXJzL2lucHV0L21pc2MveGVuLWtiZGZyb250LmMKPiBAQCAtMTcsNiAr MTcsNyBAQAo+ICAjaW5jbHVkZSA8bGludXgvZXJybm8uaD4KPiAgI2luY2x1ZGUgPGxpbnV4L21v ZHVsZS5oPgo+ICAjaW5jbHVkZSA8bGludXgvaW5wdXQuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2lu cHV0L210Lmg+Cj4gICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4gIAo+ICAjaW5jbHVkZSA8YXNt L3hlbi9oeXBlcnZpc29yLmg+Cj4gQEAgLTM0LDExICszNSwxNCBAQAo+ICBzdHJ1Y3QgeGVua2Jk X2luZm8gewo+ICAJc3RydWN0IGlucHV0X2RldiAqa2JkOwo+ICAJc3RydWN0IGlucHV0X2RldiAq cHRyOwo+ICsJc3RydWN0IGlucHV0X2RldiAqbXRvdWNoOwo+ICAJc3RydWN0IHhlbmtiZF9wYWdl ICpwYWdlOwo+ICAJaW50IGdyZWY7Cj4gIAlpbnQgaXJxOwo+ICAJc3RydWN0IHhlbmJ1c19kZXZp Y2UgKnhiZGV2Owo+ICAJY2hhciBwaHlzWzMyXTsKPiArCS8qIGN1cnJlbnQgTVQgc2xvdC9jb250 YWN0IElEIHdlIGFyZSBpbmplY3RpbmcgZXZlbnRzIGluICovCj4gKwlpbnQgbXRvdWNoX2N1cl9j b250YWN0X2lkOwo+ICB9Owo+ICAKPiAgZW51bSB7IEtQQVJBTV9YLCBLUEFSQU1fWSwgS1BBUkFN X0NOVCB9Owo+IEBAIC00Nyw2ICs1MSwxMiBAQCBtb2R1bGVfcGFyYW1fYXJyYXkocHRyX3NpemUs IGludCwgTlVMTCwgMDQ0NCk7Cj4gIE1PRFVMRV9QQVJNX0RFU0MocHRyX3NpemUsCj4gIAkiUG9p bnRpbmcgZGV2aWNlIHdpZHRoLCBoZWlnaHQgaW4gcGl4ZWxzIChkZWZhdWx0IDgwMCw2MDApIik7 Cj4gIAo+ICtlbnVtIHsgS1BBUkFNX01UX1gsIEtQQVJBTV9NVF9ZLCBLUEFSQU1fTVRfQ05UIH07 Cj4gK3N0YXRpYyBpbnQgbXRvdWNoX3NpemVbS1BBUkFNX01UX0NOVF0gPSB7IFhFTkZCX1dJRFRI LCBYRU5GQl9IRUlHSFQgfTsKPiArbW9kdWxlX3BhcmFtX2FycmF5KG10b3VjaF9zaXplLCBpbnQs IE5VTEwsIDA0NDQpOwo+ICtNT0RVTEVfUEFSTV9ERVNDKHB0cl9zaXplLAo+ICsJIk11bHRpLXRv dWNoIGRldmljZSB3aWR0aCwgaGVpZ2h0IGluIHBpeGVscyAoZGVmYXVsdCA4MDAsNjAwKSIpOwo+ ICsKCldoeSBkbyB5b3UgbmVlZCBzZXBhcmF0ZSBtb2R1bGUgcGFyYW1ldGVycyBmb3IgbXVsdGkt dG91Y2ggZGV2aWNlPwoKPiAgc3RhdGljIGludCB4ZW5rYmRfcmVtb3ZlKHN0cnVjdCB4ZW5idXNf ZGV2aWNlICopOwo+ICBzdGF0aWMgaW50IHhlbmtiZF9jb25uZWN0X2JhY2tlbmQoc3RydWN0IHhl bmJ1c19kZXZpY2UgKiwgc3RydWN0IHhlbmtiZF9pbmZvICopOwo+ICBzdGF0aWMgdm9pZCB4ZW5r YmRfZGlzY29ubmVjdF9iYWNrZW5kKHN0cnVjdCB4ZW5rYmRfaW5mbyAqKTsKPiBAQCAtMTAwLDYg KzExMCw2MCBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgaW5wdXRfaGFuZGxlcihpbnQgcnEsIHZvaWQg KmRldl9pZCkKPiAgCQkJCWlucHV0X3JlcG9ydF9yZWwoZGV2LCBSRUxfV0hFRUwsCj4gIAkJCQkJ CSAtZXZlbnQtPnBvcy5yZWxfeik7Cj4gIAkJCWJyZWFrOwo+ICsJCWNhc2UgWEVOS0JEX1RZUEVf TVRPVUNIOgo+ICsJCQlkZXYgPSBpbmZvLT5tdG91Y2g7Cj4gKwkJCWlmICh1bmxpa2VseSghZGV2 KSkKPiArCQkJCWJyZWFrOwo+ICsJCQlpZiAodW5saWtlbHkoZXZlbnQtPm10b3VjaC5jb250YWN0 X2lkICE9Cj4gKwkJCQkJaW5mby0+bXRvdWNoX2N1cl9jb250YWN0X2lkKSkgewoKV2h5IGlzIHRo aXMgdW5saWtlbHk/IERvZXMgY29udGFjdCBJRCBjaGFuZ2VzIG9uY2UgaW4gMTAwMCBwYWNrZXRz IG9yCmV2ZW4gbGVzcz8KCj4gKwkJCQlpbmZvLT5tdG91Y2hfY3VyX2NvbnRhY3RfaWQgPQo+ICsJ CQkJCWV2ZW50LT5tdG91Y2guY29udGFjdF9pZDsKPiArCQkJCWlucHV0X210X3Nsb3QoZGV2LCBl dmVudC0+bXRvdWNoLmNvbnRhY3RfaWQpOwo+ICsJCQl9Cj4gKwkJCXN3aXRjaCAoZXZlbnQtPm10 b3VjaC5ldmVudF90eXBlKSB7Cj4gKwkJCWNhc2UgWEVOS0JEX01UX0VWX0RPV046Cj4gKwkJCQlp bnB1dF9tdF9yZXBvcnRfc2xvdF9zdGF0ZShkZXYsIE1UX1RPT0xfRklOR0VSLAo+ICsJCQkJCQkJ ICAgdHJ1ZSk7Cj4gKwkJCQlpbnB1dF9ldmVudChkZXYsIEVWX0FCUywgQUJTX01UX1BPU0lUSU9O X1gsCj4gKwkJCQkJICAgIGV2ZW50LT5tdG91Y2gudS5wb3MuYWJzX3gpOwo+ICsJCQkJaW5wdXRf ZXZlbnQoZGV2LCBFVl9BQlMsIEFCU19NVF9QT1NJVElPTl9ZLAo+ICsJCQkJCSAgICBldmVudC0+ bXRvdWNoLnUucG9zLmFic195KTsKPiArCQkJCWlucHV0X2V2ZW50KGRldiwgRVZfQUJTLCBBQlNf WCwKPiArCQkJCQkgICAgZXZlbnQtPm10b3VjaC51LnBvcy5hYnNfeCk7Cj4gKwkJCQlpbnB1dF9l dmVudChkZXYsIEVWX0FCUywgQUJTX1ksCj4gKwkJCQkJICAgIGV2ZW50LT5tdG91Y2gudS5wb3Mu YWJzX3kpOwo+ICsJCQkJYnJlYWs7Cj4gKwkJCWNhc2UgWEVOS0JEX01UX0VWX1VQOgo+ICsJCQkJ aW5wdXRfbXRfcmVwb3J0X3Nsb3Rfc3RhdGUoZGV2LCBNVF9UT09MX0ZJTkdFUiwKPiArCQkJCQkJ CSAgIGZhbHNlKTsKPiArCQkJCWJyZWFrOwo+ICsJCQljYXNlIFhFTktCRF9NVF9FVl9NT1RJT046 Cj4gKwkJCQlpbnB1dF9ldmVudChkZXYsIEVWX0FCUywgQUJTX01UX1BPU0lUSU9OX1gsCj4gKwkJ CQkJICAgIGV2ZW50LT5tdG91Y2gudS5wb3MuYWJzX3gpOwo+ICsJCQkJaW5wdXRfZXZlbnQoZGV2 LCBFVl9BQlMsIEFCU19NVF9QT1NJVElPTl9ZLAo+ICsJCQkJCSAgICBldmVudC0+bXRvdWNoLnUu cG9zLmFic195KTsKPiArCQkJCWlucHV0X2V2ZW50KGRldiwgRVZfQUJTLCBBQlNfWCwKPiArCQkJ CQkgICAgZXZlbnQtPm10b3VjaC51LnBvcy5hYnNfeCk7Cj4gKwkJCQlpbnB1dF9ldmVudChkZXYs IEVWX0FCUywgQUJTX1ksCj4gKwkJCQkJICAgIGV2ZW50LT5tdG91Y2gudS5wb3MuYWJzX3kpOwo+ ICsJCQkJYnJlYWs7Cj4gKwkJCWNhc2UgWEVOS0JEX01UX0VWX1NZTjoKPiArCQkJCWlucHV0X210 X3N5bmNfZnJhbWUoZGV2KTsKPiArCQkJCWJyZWFrOwo+ICsJCQljYXNlIFhFTktCRF9NVF9FVl9T SEFQRToKPiArCQkJCWlucHV0X2V2ZW50KGRldiwgRVZfQUJTLCBBQlNfTVRfVE9VQ0hfTUFKT1Is Cj4gKwkJCQkJICAgIGV2ZW50LT5tdG91Y2gudS5zaGFwZS5tYWpvcik7Cj4gKwkJCQlpbnB1dF9l dmVudChkZXYsIEVWX0FCUywgQUJTX01UX1RPVUNIX01JTk9SLAo+ICsJCQkJCSAgICBldmVudC0+ bXRvdWNoLnUuc2hhcGUubWlub3IpOwo+ICsJCQkJYnJlYWs7Cj4gKwkJCWNhc2UgWEVOS0JEX01U X0VWX09SSUVOVDoKPiArCQkJCWlucHV0X2V2ZW50KGRldiwgRVZfQUJTLCBBQlNfTVRfT1JJRU5U QVRJT04sCj4gKwkJCQkJICAgIGV2ZW50LT5tdG91Y2gudS5vcmllbnRhdGlvbik7Cj4gKwkJCQli cmVhazsKPiArCQkJfQo+ICsJCQkvKiBvbmx5IHJlcG9ydCBzeW4gd2hlbiByZXF1ZXN0ZWQgKi8K PiArCQkJaWYgKGV2ZW50LT5tdG91Y2guZXZlbnRfdHlwZSAhPSBYRU5LQkRfTVRfRVZfU1lOKQo+ ICsJCQkJZGV2ID0gTlVMTDsKPiAgCQl9Cj4gIAkJaWYgKGRldikKPiAgCQkJaW5wdXRfc3luYyhk ZXYpOwo+IEBAIC0xMTUsOSArMTc5LDkgQEAgc3RhdGljIGludCB4ZW5rYmRfcHJvYmUoc3RydWN0 IHhlbmJ1c19kZXZpY2UgKmRldiwKPiAgCQkJCSAgY29uc3Qgc3RydWN0IHhlbmJ1c19kZXZpY2Vf aWQgKmlkKQo+ICB7Cj4gIAlpbnQgcmV0LCBpOwo+IC0JdW5zaWduZWQgaW50IGFiczsKPiArCXVu c2lnbmVkIGludCBhYnMsIHRvdWNoOwo+ICAJc3RydWN0IHhlbmtiZF9pbmZvICppbmZvOwo+IC0J c3RydWN0IGlucHV0X2RldiAqa2JkLCAqcHRyOwo+ICsJc3RydWN0IGlucHV0X2RldiAqa2JkLCAq cHRyLCAqbXRvdWNoOwo+ICAKPiAgCWluZm8gPSBremFsbG9jKHNpemVvZigqaW5mbyksIEdGUF9L RVJORUwpOwo+ICAJaWYgKCFpbmZvKSB7Cj4gQEAgLTE1Miw2ICsyMTYsMTcgQEAgc3RhdGljIGlu dCB4ZW5rYmRfcHJvYmUoc3RydWN0IHhlbmJ1c19kZXZpY2UgKmRldiwKPiAgCQl9Cj4gIAl9Cj4g IAo+ICsJdG91Y2ggPSB4ZW5idXNfcmVhZF91bnNpZ25lZChkZXYtPm5vZGVuYW1lLAo+ICsJCQkJ ICAgICBYRU5LQkRfRklFTERfRkVBVF9NVE9VQ0gsIDApOwo+ICsJaWYgKHRvdWNoKSB7Cj4gKwkJ cmV0ID0geGVuYnVzX3dyaXRlKFhCVF9OSUwsIGRldi0+bm9kZW5hbWUsCj4gKwkJCQkgICBYRU5L QkRfRklFTERfUkVRX01UT1VDSCwgIjEiKTsKPiArCQlpZiAocmV0KSB7Cj4gKwkJCXByX3dhcm5p bmcoInhlbmtiZDogY2FuJ3QgcmVxdWVzdCBtdWx0aS10b3VjaCIpOwo+ICsJCQl0b3VjaCA9IDA7 Cj4gKwkJfQo+ICsJfQo+ICsKPiAgCS8qIGtleWJvYXJkICovCj4gIAlrYmQgPSBpbnB1dF9hbGxv Y2F0ZV9kZXZpY2UoKTsKPiAgCWlmICgha2JkKQo+IEBAIC0yMDgsNiArMjgzLDY3IEBAIHN0YXRp YyBpbnQgeGVua2JkX3Byb2JlKHN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYsCj4gIAl9Cj4gIAlp bmZvLT5wdHIgPSBwdHI7Cj4gIAo+ICsJLyogbXVsdGktdG91Y2ggZGV2aWNlICovCj4gKwlpZiAo dG91Y2gpIHsKPiArCQlpbnQgbnVtX2NvbnQsIHdpZHRoLCBoZWlnaHQ7Cj4gKwo+ICsJCW10b3Vj aCA9IGlucHV0X2FsbG9jYXRlX2RldmljZSgpOwo+ICsJCWlmICghbXRvdWNoKQo+ICsJCQlnb3Rv IGVycm9yX25vbWVtOwo+ICsKPiArCQludW1fY29udCA9IHhlbmJ1c19yZWFkX3Vuc2lnbmVkKGlu Zm8tPnhiZGV2LT5ub2RlbmFtZSwKPiArCQkJCQkJWEVOS0JEX0ZJRUxEX01UX05VTV9DT05UQUNU UywKPiArCQkJCQkJMSk7Cj4gKwkJd2lkdGggPSB4ZW5idXNfcmVhZF91bnNpZ25lZChpbmZvLT54 YmRldi0+bm9kZW5hbWUsCj4gKwkJCQkJICAgICBYRU5LQkRfRklFTERfTVRfV0lEVEgsCj4gKwkJ CQkJICAgICBYRU5GQl9XSURUSCk7Cj4gKwkJaGVpZ2h0ID0geGVuYnVzX3JlYWRfdW5zaWduZWQo aW5mby0+eGJkZXYtPm5vZGVuYW1lLAo+ICsJCQkJCSAgICAgIFhFTktCRF9GSUVMRF9NVF9IRUlH SFQsCj4gKwkJCQkJICAgICAgWEVORkJfSEVJR0hUKTsKCkN1cmlvdXMgd2h5IHlvdSBuZWVkIHNl cGFyYXRlIHBhcmFtZXRlcnMgaGVyZSB0b28uLi4KCj4gKwo+ICsJCW10b3VjaC0+bmFtZSA9ICJY ZW4gVmlydHVhbCBNdWx0aS10b3VjaCI7Cj4gKwkJbXRvdWNoLT5waHlzID0gaW5mby0+cGh5czsK PiArCQltdG91Y2gtPmlkLmJ1c3R5cGUgPSBCVVNfUENJOwo+ICsJCW10b3VjaC0+aWQudmVuZG9y ID0gMHg1ODUzOwo+ICsJCW10b3VjaC0+aWQucHJvZHVjdCA9IDB4ZmZmZDsKPiArCj4gKwkJX19z ZXRfYml0KEVWX0FCUywgbXRvdWNoLT5ldmJpdCk7Cj4gKwkJX19zZXRfYml0KEVWX0tFWSwgbXRv dWNoLT5ldmJpdCk7Cj4gKwkJX19zZXRfYml0KEJUTl9UT1VDSCwgbXRvdWNoLT5rZXliaXQpOwo+ ICsKPiArCQlpbnB1dF9zZXRfYWJzX3BhcmFtcyhtdG91Y2gsIEFCU19YLAo+ICsJCQkJICAgICAw LCB3aWR0aCwgMCwgMCk7Cj4gKwkJaW5wdXRfc2V0X2Fic19wYXJhbXMobXRvdWNoLCBBQlNfWSwK PiArCQkJCSAgICAgMCwgaGVpZ2h0LCAwLCAwKTsKPiArCQlpbnB1dF9zZXRfYWJzX3BhcmFtcyht dG91Y2gsIEFCU19QUkVTU1VSRSwKPiArCQkJCSAgICAgMCwgMjU1LCAwLCAwKTsKPiArCj4gKwkJ aW5wdXRfc2V0X2Fic19wYXJhbXMobXRvdWNoLCBBQlNfTVRfVE9VQ0hfTUFKT1IsCj4gKwkJCQkg ICAgIDAsIDI1NSwgMCwgMCk7Cj4gKwkJaW5wdXRfc2V0X2Fic19wYXJhbXMobXRvdWNoLCBBQlNf TVRfUE9TSVRJT05fWCwKPiArCQkJCSAgICAgMCwgd2lkdGgsIDAsIDApOwo+ICsJCWlucHV0X3Nl dF9hYnNfcGFyYW1zKG10b3VjaCwgQUJTX01UX1BPU0lUSU9OX1ksCj4gKwkJCQkgICAgIDAsIGhl aWdodCwgMCwgMCk7Cj4gKwkJaW5wdXRfc2V0X2Fic19wYXJhbXMobXRvdWNoLCBBQlNfTVRfUFJF U1NVUkUsCj4gKwkJCQkgICAgIDAsIDI1NSwgMCwgMCk7Cj4gKwo+ICsJCWlucHV0X210X2luaXRf c2xvdHMobXRvdWNoLCBudW1fY29udCwgMCk7Cj4gKwo+ICsJCW10b3VjaF9zaXplW0tQQVJBTV9N VF9YXSA9IHdpZHRoOwo+ICsJCW10b3VjaF9zaXplW0tQQVJBTV9NVF9ZXSA9IGhlaWdodDsKPiAr CQlpbmZvLT5tdG91Y2hfY3VyX2NvbnRhY3RfaWQgPSAtMTsKPiArCj4gKwkJcmV0ID0gaW5wdXRf cmVnaXN0ZXJfZGV2aWNlKG10b3VjaCk7Cj4gKwkJaWYgKHJldCkgewo+ICsJCQlpbnB1dF9mcmVl X2RldmljZShtdG91Y2gpOwo+ICsJCQl4ZW5idXNfZGV2X2ZhdGFsKGluZm8tPnhiZGV2LCByZXQs Cj4gKwkJCQkJICJpbnB1dF9yZWdpc3Rlcl9kZXZpY2UobXRvdWNoKSIpOwo+ICsJCQlnb3RvIGVy cm9yOwo+ICsJCX0KPiArCQlpbmZvLT5tdG91Y2hfY3VyX2NvbnRhY3RfaWQgPSAtMTsKPiArCQlp bmZvLT5tdG91Y2ggPSBtdG91Y2g7Cj4gKwl9Cj4gKwo+ICAJcmV0ID0geGVua2JkX2Nvbm5lY3Rf YmFja2VuZChkZXYsIGluZm8pOwo+ICAJaWYgKHJldCA8IDApCj4gIAkJZ290byBlcnJvcjsKPiBA QCAtMjQwLDYgKzM3Niw4IEBAIHN0YXRpYyBpbnQgeGVua2JkX3JlbW92ZShzdHJ1Y3QgeGVuYnVz X2RldmljZSAqZGV2KQo+ICAJCWlucHV0X3VucmVnaXN0ZXJfZGV2aWNlKGluZm8tPmtiZCk7Cj4g IAlpZiAoaW5mby0+cHRyKQo+ICAJCWlucHV0X3VucmVnaXN0ZXJfZGV2aWNlKGluZm8tPnB0cik7 Cj4gKwlpZiAoaW5mby0+bXRvdWNoKQo+ICsJCWlucHV0X3VucmVnaXN0ZXJfZGV2aWNlKGluZm8t Pm10b3VjaCk7Cj4gIAlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpaW5mby0+cGFnZSk7Cj4gIAlr ZnJlZShpbmZvKTsKPiAgCXJldHVybiAwOwo+IC0tIAo+IDIuNy40Cj4gCgpUaGFua3MuCgotLSAK RG1pdHJ5CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpY ZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlz dHMueGVuLm9yZy94ZW4tZGV2ZWwK