From mboxrd@z Thu Jan 1 00:00:00 1970 From: Corneliu ZUZU Subject: Re: [PATCH 7/7] vm-event/arm: implement support for control-register write vm-events Date: Fri, 17 Jun 2016 13:36:03 +0300 Message-ID: <196523e7-285c-51a3-c48a-eff45d40a342@bitdefender.com> References: <1466085888-7428-1-git-send-email-czuzu@bitdefender.com> <1466086403-7749-1-git-send-email-czuzu@bitdefender.com> <5762D8AD.7070208@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <5762D8AD.7070208@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Julien Grall , xen-devel@lists.xen.org Cc: Stefano Stabellini , Tamas K Lengyel , Razvan Cojocaru List-Id: xen-devel@lists.xenproject.org T24gNi8xNi8yMDE2IDc6NDkgUE0sIEp1bGllbiBHcmFsbCB3cm90ZToKPiBIZWxsbyBDb3JuZWxp dSwKPgo+IE9uIDE2LzA2LzE2IDE1OjEzLCBDb3JuZWxpdSBaVVpVIHdyb3RlOgo+PiBkaWZmIC0t Z2l0IGEveGVuL2FyY2gvYXJtL3RyYXBzLmMgYi94ZW4vYXJjaC9hcm0vdHJhcHMuYwo+PiBpbmRl eCA4YzUwNjg1Li5hZjYxYWMzIDEwMDY0NAo+PiAtLS0gYS94ZW4vYXJjaC9hcm0vdHJhcHMuYwo+ PiArKysgYi94ZW4vYXJjaC9hcm0vdHJhcHMuYwo+PiBAQCAtNDMsNiArNDMsNyBAQAo+PiAgICNp bmNsdWRlIDxhc20vbW1pby5oPgo+PiAgICNpbmNsdWRlIDxhc20vY3B1ZmVhdHVyZS5oPgo+PiAg ICNpbmNsdWRlIDxhc20vZmx1c2h0bGIuaD4KPj4gKyNpbmNsdWRlIDxhc20vdHJhcHMuaD4KPj4K Pj4gICAjaW5jbHVkZSAiZGVjb2RlLmgiCj4+ICAgI2luY2x1ZGUgInZ0aW1lci5oIgo+PiBAQCAt MTI0LDcgKzEyNSwxMiBAQCB2b2lkIGluaXRfdHJhcHModm9pZCkKPj4gICAgICAgV1JJVEVfU1lT UkVHKChIQ1BUUl9DUF9NQVNLICYgfihIQ1BUUl9DUCgxMCkgfCBIQ1BUUl9DUCgxMSkpKSB8IAo+ PiBIQ1BUUl9UVEEsCj4+ICAgICAgICAgICAgICAgICAgICBDUFRSX0VMMik7Cj4+Cj4+IC0gICAg LyogU2V0dXAgaHlwZXJ2aXNvciB0cmFwcyAqLwo+PiArICAgIC8qIFNldHVwIGh5cGVydmlzb3Ig dHJhcHMKPj4gKyAgICAgKgo+PiArICAgICAqIE5vdGU6IEhDUl9UVk0gYml0IGlzIGFsc28gc2V0 IGZvciBzeXN0ZW0tcmVnaXN0ZXIgd3JpdGUgCj4+IG1vbml0b3JpbmcKPj4gKyAgICAgKiBwdXJw b3NlcyAoc2VlIHZtX2V2ZW50X21vbml0b3JfY3IpLCBidXQgKGZvciBwZXJmb3JtYW5jZSAKPj4g cmVhc29ucykgdGhhdCdzCj4+ICsgICAgICogZG9uZSBzZWxlY3RpdmVseSAoc2VlIHZjcHVfZW50 ZXJfYWRqdXN0X3RyYXBzKS4KPj4gKyAgICAgKi8KPj4gV1JJVEVfU1lTUkVHKEhDUl9QVFd8SENS X0JTVV9JTk5FUnxIQ1JfQU1PfEhDUl9JTU98SENSX0ZNT3xIQ1JfVk18Cj4+IEhDUl9UV0V8SENS X1RXSXxIQ1JfVFNDfEhDUl9UQUN8SENSX1NXSU98SENSX1RJRENQfEhDUl9GQiwKPj4gICAgICAg ICAgICAgICAgICAgIEhDUl9FTDIpOwo+PiBAQCAtMTcyMCw2ICsxNzI2LDcgQEAgc3RhdGljIHZv aWQgZG9fY3AxNV8zMihzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncywKPj4gICAgICAgY29uc3Qg c3RydWN0IGhzcl9jcDMyIGNwMzIgPSBoc3IuY3AzMjsKPj4gICAgICAgaW50IHJlZ2lkeCA9IGNw MzIucmVnOwo+PiAgICAgICBzdHJ1Y3QgdmNwdSAqdiA9IGN1cnJlbnQ7Cj4+ICsgICAgcmVnaXN0 ZXJfdCByID0gZ2V0X3VzZXJfcmVnKHJlZ3MsIHJlZ2lkeCk7Cj4+Cj4+ICAgICAgIGlmICggIWNo ZWNrX2NvbmRpdGlvbmFsX2luc3RyKHJlZ3MsIGhzcikgKQo+PiAgICAgICB7Cj4+IEBAIC0xNzMw LDYgKzE3MzcsNjEgQEAgc3RhdGljIHZvaWQgZG9fY3AxNV8zMihzdHJ1Y3QgY3B1X3VzZXJfcmVn cyAKPj4gKnJlZ3MsCj4+ICAgICAgIHN3aXRjaCAoIGhzci5iaXRzICYgSFNSX0NQMzJfUkVHU19N QVNLICkKPj4gICAgICAgewo+PiAgICAgICAvKgo+PiArICAgICAqIEhDUl9FTDIuVFZNIC8gSENS LlRWTQo+PiArICAgICAqCj4+ICsgICAgICogQVJNdjcgKERESSAwNDA2Qy5iKTogQjEuMTQuMTMK Pgo+IFBsZWFzZSB0cnkgdG8gbWVudGlvbiB0aGUgbW9zdCByZWNlbnQgc3BlYy4gVGhpcyB3YXMg cHVibGlzaGVkIGluIAo+IDIwMTIsIHRoZSBsYXRlc3QgcmVsZWFzZSAoQy5jKSB3YXMgcHVibGlz aGVkIGluIDIwMTQuCgpBY2suCgo+Cj4+ICsgICAgICogQVJNdjggKERESSAwNDg3QS5lKTogRDEt MTU2OSBUYWJsZSBEMS0zNAo+Cj4gRGl0dG8uIFRoaXMgd2FzIHB1Ymxpc2hlZCBpbiAyMDE0LCB3 aGlsc3QgdGhlIG1vc3QgcmVjZW50IHdhcyAKPiBwdWJsaXNoZWQgaW4gMjAxNi4KPgo+PiArICAg ICAqLwo+PiArICAgIGNhc2UgSFNSX0NQUkVHMzIoU0NUTFIpOgo+PiArICAgICAgICBUVk1fRU1V TF9WTUVWVCh2LCByZWdzLCBoc3IsIHIsIFNDVExSKTsKPj4gKyAgICAgICAgYnJlYWs7Cj4+ICsg ICAgY2FzZSBIU1JfQ1BSRUczMihUVEJSMF8zMik6Cj4+ICsgICAgICAgIFRWTV9FTVVMX1ZNRVZU KHYsIHJlZ3MsIGhzciwgciwgVFRCUjBfMzIpOwo+PiArICAgICAgICBicmVhazsKPj4gKyAgICBj YXNlIEhTUl9DUFJFRzMyKFRUQlIxXzMyKToKPj4gKyAgICAgICAgVFZNX0VNVUxfVk1FVlQodiwg cmVncywgaHNyLCByLCBUVEJSMV8zMik7Cj4+ICsgICAgICAgIGJyZWFrOwo+PiArICAgIGNhc2Ug SFNSX0NQUkVHMzIoVFRCQ1IpOgo+PiArICAgICAgICBUVk1fRU1VTF9WTUVWVCh2LCByZWdzLCBo c3IsIHIsIFRUQkNSKTsKPj4gKyAgICAgICAgYnJlYWs7Cj4+ICsgICAgY2FzZSBIU1JfQ1BSRUcz MihEQUNSKToKPj4gKyAgICAgICAgVFZNX0VNVUwocmVncywgaHNyLCByLCBEQUNSKTsKPj4gKyAg ICAgICAgYnJlYWs7Cj4+ICsgICAgY2FzZSBIU1JfQ1BSRUczMihERlNSKToKPj4gKyAgICAgICAg VFZNX0VNVUwocmVncywgaHNyLCByLCBERlNSKTsKPj4gKyAgICAgICAgYnJlYWs7Cj4+ICsgICAg Y2FzZSBIU1JfQ1BSRUczMihJRlNSKToKPj4gKyAgICAgICAgVFZNX0VNVUwocmVncywgaHNyLCBy LCBJRlNSKTsKPj4gKyAgICAgICAgYnJlYWs7Cj4+ICsgICAgY2FzZSBIU1JfQ1BSRUczMihERkFS KToKPj4gKyAgICAgICAgVFZNX0VNVUwocmVncywgaHNyLCByLCBERkFSKTsKPj4gKyAgICAgICAg YnJlYWs7Cj4+ICsgICAgY2FzZSBIU1JfQ1BSRUczMihJRkFSKToKPj4gKyAgICAgICAgVFZNX0VN VUwocmVncywgaHNyLCByLCBJRkFSKTsKPj4gKyAgICAgICAgYnJlYWs7Cj4gWy4uLl0KPj4gKyAg ICBjYXNlIEhTUl9DUFJFRzMyKEFERlNSKToKPj4gKyAgICAgICAgVFZNX0VNVUwocmVncywgaHNy LCByLCBBREZTUik7Cj4+ICsgICAgICAgIGJyZWFrOwo+PiArICAgIGNhc2UgSFNSX0NQUkVHMzIo QUlGU1IpOgo+PiArICAgICAgICBUVk1fRU1VTChyZWdzLCBoc3IsIHIsIEFJRlNSKTsKPj4gKyAg ICAgICAgYnJlYWs7Cj4+ICsgICAgY2FzZSBIU1JfQ1BSRUczMihNQUlSMCk6Cj4+ICsgICAgICAg IFRWTV9FTVVMKHJlZ3MsIGhzciwgciwgTUFJUjApOwo+PiArICAgICAgICBicmVhazsKPj4gKyAg ICBjYXNlIEhTUl9DUFJFRzMyKE1BSVIxKToKPj4gKyAgICAgICAgVFZNX0VNVUwocmVncywgaHNy LCByLCBNQUlSMSk7Cj4+ICsgICAgICAgIGJyZWFrOwo+Cj4gUGxlYXNlIG1lbnRpb24gdGhhdCBQ UlJSIGFuZCBOTVJSIGFyZSBhbGlhc2VkIHRvIHJlc3BlY3RpdmVseSBNQUlSMCAKPiBhbmQgTUFJ UjEuIFRoaXMgd2lsbCBhdm9pZCB0byBzcGVuZCB0aW1lIHRyeWluZyB0byB1bmRlcnN0YW5kaW5n IHdoeSAKPiB0aGUgc3BlYyBzYXlzIHRoZXkgYXJlIHRyYXBwZWQgYnV0IHlvdSBkb24ndCAiaGFu ZGxlIiB0aGVtLgoKSSBtZW50aW9uZWQgdGhhdCBpbiB0cmFwcy5oIChzZWUgIkFLQSIgY29tbWVu dHMpLiBXaWxsIHB1dCB0aGUgc2FtZSAKY29tbWVudCBoZXJlIHRoZW4uCgo+Cj4+ICsgICAgY2Fz ZSBIU1JfQ1BSRUczMihBTUFJUjApOgo+PiArICAgICAgICBUVk1fRU1VTChyZWdzLCBoc3IsIHIs IEFNQUlSMCk7Cj4+ICsgICAgICAgIGJyZWFrOwo+PiArICAgIGNhc2UgSFNSX0NQUkVHMzIoQU1B SVIxKToKPj4gKyAgICAgICAgVFZNX0VNVUwocmVncywgaHNyLCByLCBBTUFJUjEpOwo+PiArICAg ICAgICBicmVhazsKPj4gKyAgICBjYXNlIEhTUl9DUFJFRzMyKENPTlRFWFRJRFIpOgo+PiArICAg ICAgICBUVk1fRU1VTChyZWdzLCBoc3IsIHIsIENPTlRFWFRJRFIpOwo+PiArICAgICAgICBicmVh azsKPj4gKwo+PiArICAgIC8qCj4+ICAgICAgICAqICFDTlRIQ1RMX0VMMi5FTDFQQ0VOIC8gIUNO VEhDVEwuUEwxUENFTgo+PiAgICAgICAgKgo+PiAgICAgICAgKiBBUk12NyAoRERJIDA0MDZDLmIp OiBCNC4xLjIyCj4+IEBAIC0xODUzLDYgKzE5MTUsMTMgQEAgc3RhdGljIHZvaWQgZG9fY3AxNV8z MihzdHJ1Y3QgY3B1X3VzZXJfcmVncyAKPj4gKnJlZ3MsCj4+ICAgc3RhdGljIHZvaWQgZG9fY3Ax NV82NChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncywKPj4gICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHVuaW9uIGhzciBoc3IpCj4+ICAgewo+PiArICAgIHN0cnVjdCB2Y3B1ICp2ID0g Y3VycmVudDsKPj4gKyAgICBjb25zdCBzdHJ1Y3QgaHNyX2NwNjQgY3A2NCA9IGhzci5jcDY0Owo+ PiArICAgIHN5c3JlZzY0X3QgciA9IHsKPj4gKyAgICAgICAgLmxvdzMyID0gKHVpbnQzMl90KSBn ZXRfdXNlcl9yZWcocmVncywgY3A2NC5yZWcxKSwKPgo+IFRoZSBjYXN0IGlzIG5vdCBuZWNlc3Nh cnkuCgpBY2suCgo+Cj4+ICsgICAgICAgIC5oaWdoMzIgPSAodWludDMyX3QpIGdldF91c2VyX3Jl ZyhyZWdzLCBjcDY0LnJlZzIpCj4KPiBEaXR0by4KPgo+PiArICAgIH07Cj4+ICsKPj4gICAgICAg aWYgKCAhY2hlY2tfY29uZGl0aW9uYWxfaW5zdHIocmVncywgaHNyKSApCj4+ICAgICAgIHsKPj4g ICAgICAgICAgIGFkdmFuY2VfcGMocmVncywgaHNyKTsKPj4gQEAgLTE4NjIsNiArMTkzMSwxOSBA QCBzdGF0aWMgdm9pZCBkb19jcDE1XzY0KHN0cnVjdCBjcHVfdXNlcl9yZWdzIAo+PiAqcmVncywK Pj4gICAgICAgc3dpdGNoICggaHNyLmJpdHMgJiBIU1JfQ1A2NF9SRUdTX01BU0sgKQo+PiAgICAg ICB7Cj4+ICAgICAgIC8qCj4+ICsgICAgICogSENSX0VMMi5UVk0gLyBIQ1IuVFZNCj4+ICsgICAg ICoKPj4gKyAgICAgKiBBUk12NyAoRERJIDA0MDZDLmIpOiBCMS4xNC4xMwo+PiArICAgICAqIEFS TXY4IChEREkgMDQ4N0EuZSk6IEQxLTE1NjkgVGFibGUgRDEtMzQKPgo+IFNhbWUgcmVtYXJrcyBh cyBhYm92ZSBmb3IgdGhlIHNwZWMgdmVyc2lvbi4KPgo+PiArICAgICAqLwo+PiArICAgIGNhc2Ug SFNSX0NQUkVHNjQoVFRCUjApOgo+PiArICAgICAgICBUVk1fRU1VTF9WTUVWVCh2LCByZWdzLCBo c3IsIHIudmFsNjQsIFRUQlIwXzY0KTsKPj4gKyAgICAgICAgYnJlYWs7Cj4+ICsgICAgY2FzZSBI U1JfQ1BSRUc2NChUVEJSMSk6Cj4+ICsgICAgICAgIFRWTV9FTVVMX1ZNRVZUKHYsIHJlZ3MsIGhz ciwgci52YWw2NCwgVFRCUjFfNjQpOwo+PiArICAgICAgICBicmVhazsKPj4gKwo+PiArICAgIC8q Cj4+ICAgICAgICAqICFDTlRIQ1RMX0VMMi5FTDFQQ0VOIC8gIUNOVEhDVEwuUEwxUENFTgo+PiAg ICAgICAgKgo+PiAgICAgICAgKiBBUk12NyAoRERJIDA0MDZDLmIpOiBCNC4xLjIyCj4+IEBAIC0x ODkxLDggKzE5NzMsNiBAQCBzdGF0aWMgdm9pZCBkb19jcDE1XzY0KHN0cnVjdCBjcHVfdXNlcl9y ZWdzICpyZWdzLAo+PiAgICAgICAgKi8KPj4gICAgICAgZGVmYXVsdDoKPj4gICAgICAgICAgIHsK Pj4gLSAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBoc3JfY3A2NCBjcDY0ID0gaHNyLmNwNjQ7Cj4+ IC0KPj4gICAgICAgICAgICAgICBnZHByaW50ayhYRU5MT0dfRVJSLAo+PiAgICAgICAgICAgICAg ICAgICAgICAgICIlcyBwMTUsICVkLCByJWQsIHIlZCwgY3IlZCBAIAo+PiAweCUiUFJJcmVnaXN0 ZXIiXG4iLAo+PiAgICAgICAgICAgICAgICAgICAgICAgIGNwNjQucmVhZCA/ICJtcnJjIiA6ICJt Y3JyIiwKPj4gQEAgLTIxMjgsMTAgKzIyMDgsNTAgQEAgc3RhdGljIHZvaWQgZG9fc3lzcmVnKHN0 cnVjdCBjcHVfdXNlcl9yZWdzIAo+PiAqcmVncywKPj4gICB7Cj4+ICAgICAgIGludCByZWdpZHgg PSBoc3Iuc3lzcmVnLnJlZzsKPj4gICAgICAgc3RydWN0IHZjcHUgKnYgPSBjdXJyZW50Owo+PiAr ICAgIHJlZ2lzdGVyX3QgciA9IGdldF91c2VyX3JlZyhyZWdzLCByZWdpZHgpOwo+Pgo+PiAgICAg ICBzd2l0Y2ggKCBoc3IuYml0cyAmIEhTUl9TWVNSRUdfUkVHU19NQVNLICkKPj4gICAgICAgewo+ PiAgICAgICAvKgo+PiArICAgICAqIEhDUl9FTDIuVFZNCj4+ICsgICAgICoKPj4gKyAgICAgKiBB Uk12OCAoRERJIDA0ODdBLmUpOiBEMS0xNTY5IFRhYmxlIEQxLTM0Cj4KPiBEaXR0byBmb3IgdGhl IHNwZWMgdmVyc2lvbi4KPgo+IFsuLi5dCj4KPj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS92 bV9ldmVudC5jIGIveGVuL2FyY2gvYXJtL3ZtX2V2ZW50LmMKPj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQKPj4gaW5kZXggMDAwMDAwMC4uM2YyM2ZlYwo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL3hl bi9hcmNoL2FybS92bV9ldmVudC5jCj4+IEBAIC0wLDAgKzEsMTEyIEBACj4KPiBbLi4uXQo+Cj4+ ICsjaW5jbHVkZSA8eGVuL3ZtX2V2ZW50Lmg+Cj4+ICsjaW5jbHVkZSA8YXNtL3RyYXBzLmg+Cj4+ ICsKPj4gKyNpZiBDT05GSUdfQVJNXzY0Cj4+ICsKPj4gKyNkZWZpbmUgTVdTSU5GX1NDVExSICAg IDMyLFNDVExSX0VMMQo+PiArI2RlZmluZSBNV1NJTkZfVFRCUjAgICAgNjQsVFRCUjBfRUwxCj4+ ICsjZGVmaW5lIE1XU0lORl9UVEJSMSAgICA2NCxUVEJSMV9FTDEKPj4gKyNkZWZpbmUgTVdTSU5G X1RUQkNSICAgIDY0LFRDUl9FTDEKPj4gKwo+PiArI2VsaWYgQ09ORklHX0FSTV8zMgo+PiArCj4+ ICsjZGVmaW5lIE1XU0lORl9TQ1RMUiAgICAzMixTQ1RMUgo+PiArI2RlZmluZSBNV1NJTkZfVFRC UjAgICAgNjQsVFRCUjAKPj4gKyNkZWZpbmUgTVdTSU5GX1RUQlIxICAgIDY0LFRUQlIxCj4KPiBU aGUgdmFsdWVzIGFyZSB0aGUgc2FtZSBhcyBmb3IgYXJtNjQgKCpfRUwxIGlzIGFsaWFzZWQgdG8g KiBmb3IgCj4gYXJtMzIpLiBQbGVhc2UgYXZvaWQgZHVwbGljYXRpb24uCgooc2VlIGNvbW1lbnQg YmVsb3cgYWJvdXQgbGF0ZXIgcmVwbHkpCgo+Cj4+ICsjZGVmaW5lIE1XU0lORl9UVEJSMF8zMiAz MixUVEJSMF8zMgo+PiArI2RlZmluZSBNV1NJTkZfVFRCUjFfMzIgMzIsVFRCUjFfMzIKPj4gKyNk ZWZpbmUgTVdTSU5GX1RUQkNSICAgIDMyLFRUQkNSCj4+ICsKPj4gKyNlbmRpZgo+PiArCj4+ICsj ZGVmaW5lIE1XU19FTVVMXyh2YWwsIHN6LCByLi4uKSBXUklURV9TWVNSRUcjI3N6KCh1aW50IyNz eiMjX3QpIAo+PiAodmFsKSwgcikKPgo+IFRoZSBjYXN0IGlzIG5vdCBuZWNlc3NhcnkuCj4KPj4g KyNkZWZpbmUgTVdTX0VNVUwocikgQ0FMTF9NQUNSTyhNV1NfRU1VTF8sIHctPnZhbHVlLCBNV1NJ TkZfIyNyKQo+PiArCj4+ICtzdGF0aWMgaW5saW5lIHZvaWQgdmNwdV9lbnRlcl93cml0ZV9kYXRh KHN0cnVjdCB2Y3B1ICp2KQo+PiArewo+PiArICAgIHN0cnVjdCBtb25pdG9yX3dyaXRlX2RhdGEg KncgPSAmdi0+YXJjaC52bV9ldmVudC53cml0ZV9kYXRhOwo+PiArCj4+ICsgICAgaWYgKCBsaWtl bHkoTVdTX05PV1JJVEUgPT0gdy0+c3RhdHVzKSApCj4+ICsgICAgICAgIHJldHVybjsKPj4gKwo+ PiArICAgIHN3aXRjaCAoIHctPnN0YXR1cyApCj4+ICsgICAgewo+PiArICAgIGNhc2UgTVdTX1ND VExSOgo+PiArICAgICAgICBNV1NfRU1VTChTQ1RMUik7Cj4+ICsgICAgICAgIGJyZWFrOwo+PiAr ICAgIGNhc2UgTVdTX1RUQlIwOgo+PiArICAgICAgICBNV1NfRU1VTChUVEJSMCk7Cj4+ICsgICAg ICAgIGJyZWFrOwo+PiArICAgIGNhc2UgTVdTX1RUQlIxOgo+PiArICAgICAgICBNV1NfRU1VTChU VEJSMSk7Cj4+ICsgICAgICAgIGJyZWFrOwo+PiArI2lmIENPTkZJR19BUk1fMzIKPj4gKyAgICBj YXNlIE1XU19UVEJSMF8zMjoKPj4gKyAgICAgICAgTVdTX0VNVUwoVFRCUjBfMzIpOwo+PiArICAg ICAgICBicmVhazsKPj4gKyAgICBjYXNlIE1XU19UVEJSMV8zMjoKPj4gKyAgICAgICAgTVdTX0VN VUwoVFRCUjFfMzIpOwo+PiArICAgICAgICBicmVhazsKPj4gKyNlbmRpZgo+Cj4gQWFyY2gzMiBr ZXJuZWwgY2FuIHJldHVybiBvbiBhbiBBQXJjaDY0IFhlbi4gVGhpcyBtZWFucyB0aGF0IAo+IFRU QlJ7MCwxfV8zMiBjb3VsZCBiZSB0cmFwcGVkIGFuZCB0aGUgd3JpdGUgdGhlcmVmb3JlIGJlIHBy b3Blcmx5IAo+IGVtdWxhdGVkLgoKTUNSIFRUQlJ4IHdyaXRlcyBmcm9tIEFBcmNoMzIgZ3Vlc3Rz IGFwcGVhciBhcyB3cml0ZXMgb2YgdGhlIGxvdyAzMi1iaXRzIApvZiBBQXJjaDY0IFRUQlJ4X0VM MSAoYXJjaGl0ZWN0dXJhbGx5IG1hcHBlZCkuCk1DUlIgVFRCUnggd3JpdGVzIGZyb20gQUFyY2gz MiBndWVzdHMgYXBwZWFyIGFzIHdyaXRlcyB0byBBQXJjaDY0IFRUQlJ4X0VMMS4KVGhlcmVmb3Jl LCBpbiB0aGUgZW5kIHRoZSByZWdpc3RlciB3ZSBuZWVkIHRvIHdyaXRlIGlzIHN0aWxsIFRUQlJ4 X0VMMS4KCj4KPj4gKyAgICBjYXNlIE1XU19UVEJDUjoKPj4gKyAgICAgICAgTVdTX0VNVUwoVFRC Q1IpOwo+PiArICAgICAgICBicmVhazsKPj4gKyAgICBkZWZhdWx0Ogo+PiArICAgICAgICBicmVh azsKPj4gKyAgICB9Cj4+ICsKPj4gKyAgICB3LT5zdGF0dXMgPSBNV1NfTk9XUklURTsKPj4gK30K Pj4gKwo+PiArc3RhdGljIGlubGluZSB2b2lkIHZjcHVfZW50ZXJfYWRqdXN0X3RyYXBzKHN0cnVj dCB2Y3B1ICp2KQo+PiArewo+PiArICAgIHJlZ2lzdGVyX3Qgb2xkX2hjciwgaGNyOwo+PiArCj4+ ICsgICAgaGNyID0gKG9sZF9oY3IgPSBSRUFEX1NZU1JFRyhIQ1JfRUwyKSk7Cj4+ICsKPj4gKyAg ICBpZiAoIHVubGlrZWx5KDAgIT0gdi0+ZG9tYWluLT5hcmNoLm1vbml0b3Iud3JpdGVfY3RybHJl Z19lbmFibGVkKSApCj4+ICsgICAgICAgIGhjciB8PSBIQ1JfVFZNOwo+PiArICAgIGVsc2UKPj4g KyAgICAgICAgaGNyICY9IH5IQ1JfVFZNOwo+PiArCj4+ICsgICAgaWYgKCB1bmxpa2VseShoY3Ig IT0gb2xkX2hjcikgKQo+PiArICAgIHsKPj4gKyAgICAgICAgV1JJVEVfU1lTUkVHKGhjciwgSENS X0VMMik7Cj4+ICsgICAgICAgIGlzYigpOwo+PiArICAgIH0KPgo+IFRoZSBIQ1IgcmVnaXN0ZXIg aXMgYWxzbyB1cGRhdGVkIGluIHAybV9yZXN0b3JlX3N0YXRlIHRvIHNldCAKPiBIQ1JfRUwyLlJX LiBJIHdvdWxkIHByZWZlciB0byBoYXZlIGEgc2luZ2xlIHBsYWNlIHdoZXJlIEhDUiBpcyB1cGRh dGVkLgo+Cj4gTWF5YmUgd2Ugc2hvdWxkIHN0b3JlIHRoZSBIQ1IgdmFsdWUgcGVyLWRvbWFpbj8K ClllcywgdGhhdCB3b3VsZCBiZSBuaWNlLiBXaWxsIGxvb2sgaW50byB0aGF0IGZvciB2Mi4KCj4K Pj4gK30KPj4gKwo+PiArdm9pZCBhcmNoX3ZtX2V2ZW50X3ZjcHVfZW50ZXIoc3RydWN0IHZjcHUg KnYpCj4+ICt7Cj4+ICsgICAgdmNwdV9lbnRlcl93cml0ZV9kYXRhKHYpOwo+PiArICAgIHZjcHVf ZW50ZXJfYWRqdXN0X3RyYXBzKHYpOwo+PiArfQo+PiArCj4+ICsvKgo+PiArICogTG9jYWwgdmFy aWFibGVzOgo+PiArICogbW9kZTogQwo+PiArICogYy1maWxlLXN0eWxlOiAiQlNEIgo+PiArICog Yy1iYXNpYy1vZmZzZXQ6IDQKPj4gKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAo+PiArICogRW5k Ogo+PiArICovCj4+IGRpZmYgLS1naXQgYS94ZW4vY29tbW9uL21vbml0b3IuYyBiL3hlbi9jb21t b24vbW9uaXRvci5jCj4+IGluZGV4IDIzNjZiYWUuLmMzNWE3MTcgMTAwNjQ0Cj4+IC0tLSBhL3hl bi9jb21tb24vbW9uaXRvci5jCj4+ICsrKyBiL3hlbi9jb21tb24vbW9uaXRvci5jCj4+IEBAIC02 Miw3ICs2Miw2IEBAIGludCBtb25pdG9yX2RvbWN0bChzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3Qg Cj4+IHhlbl9kb21jdGxfbW9uaXRvcl9vcCAqbW9wKQo+Pgo+PiAgICAgICBzd2l0Y2ggKCBtb3At PmV2ZW50ICkKPj4gICAgICAgewo+PiAtI2lmIENPTkZJR19YODYKPj4gICAgICAgY2FzZSBYRU5f RE9NQ1RMX01PTklUT1JfRVZFTlRfV1JJVEVfQ1RSTFJFRzoKPj4gICAgICAgewo+PiAgICAgICAg ICAgc3RydWN0IGFyY2hfZG9tYWluICphZCA9ICZkLT5hcmNoOwo+PiBAQCAtMTAwLDcgKzk5LDYg QEAgaW50IG1vbml0b3JfZG9tY3RsKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCAKPj4geGVuX2Rv bWN0bF9tb25pdG9yX29wICptb3ApCj4+Cj4+ICAgICAgICAgICBicmVhazsKPj4gICAgICAgfQo+ PiAtI2VuZGlmCj4+Cj4+ICAgICAgIGNhc2UgWEVOX0RPTUNUTF9NT05JVE9SX0VWRU5UX0dVRVNU X1JFUVVFU1Q6Cj4+ICAgICAgIHsKPj4gZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vdm1fZXZlbnQu YyBiL3hlbi9jb21tb24vdm1fZXZlbnQuYwo+PiBpbmRleCA1M2RjMDQ4Li5lMGY5OTllIDEwMDY0 NAo+PiAtLS0gYS94ZW4vY29tbW9uL3ZtX2V2ZW50LmMKPj4gKysrIGIveGVuL2NvbW1vbi92bV9l dmVudC5jCj4+IEBAIC04MjQsNyArODI0LDYgQEAgaW50IHZtX2V2ZW50X21vbml0b3JfdHJhcHMo c3RydWN0IHZjcHUgKnYsIAo+PiB1aW50OF90IHN5bmMsCj4+ICAgICAgIHJldHVybiAxOwo+PiAg IH0KPj4KPj4gLSNpZiBDT05GSUdfWDg2Cj4+ICAgYm9vbF90IHZtX2V2ZW50X21vbml0b3JfY3Io dW5zaWduZWQgaW50IGluZGV4LCB1bnNpZ25lZCBsb25nIHZhbHVlLAo+PiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgb2xkKQo+PiAgIHsKPj4gQEAgLTg1Miw3ICs4 NTEsNiBAQCBib29sX3Qgdm1fZXZlbnRfbW9uaXRvcl9jcih1bnNpZ25lZCBpbnQgaW5kZXgsIAo+ PiB1bnNpZ25lZCBsb25nIHZhbHVlLAo+Pgo+PiAgICAgICByZXR1cm4gMDsKPj4gICB9Cj4+IC0j ZW5kaWYKPj4KPj4gICB2b2lkIHZtX2V2ZW50X21vbml0b3JfZ3Vlc3RfcmVxdWVzdCh2b2lkKQo+ PiAgIHsKPgo+IFsuLi5dCj4KPj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vdHJh cHMuaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vdHJhcHMuaAo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+PiBpbmRleCAwMDAwMDAwLi45ZTI0NmE3Cj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIveGVu L2luY2x1ZGUvYXNtLWFybS90cmFwcy5oCj4KPiBUaGlzIGZpbGUgaXMgdmVyeSBkaWZmaWN1bHQg dG8gcmV2aWV3LiBDYW4geW91IGV4cGxhaW4gd2h5IHlvdSBuZWVkIHRvIAo+IGR1cGxpY2F0ZSBt b3N0IG9mIHRoZSB0aGluZ3MgYmV0d2VlbiB0aGUgQUFyY2g2NCBhbmQgQUFyY2gzMiBwb3J0Pwo+ Cj4gV2hpbHN0IEkgdW5kZXJzdGFuZCB0aGF0IHNvbWUgcmVnaXN0ZXJzIGFyZSBhY2Nlc3NpYmxl IGluIGEgZGlmZmVyZW50IAo+IHdheSBiZXR3ZWVuIEFBcmNoNjQgYW5kIEFhcmNoMzIsIHdlIHdl cmUgYWJsZSB0byBnZXQgcmlkIG9mIG1vc3Qgb2YgCj4gdGhlbSBpbiB0aGUgWGVuIHBvcnQgYnkg YWxpYXNpbmcgcmVnaXN0ZXJzIChzZWUgYXNtLWFybS9jcHJlZ3MuaCkuCj4KPiBGcm9tIGEgcXVp Y2sgbG9vaywgSSBiZWxpZXZlIHRoaXMgaXMgcG9zc2libGUgdG8gZG8gYW5kIHdvdWxkIHJlZHVj ZSBhIAo+IGxvdCB0aGUgc2l6ZS9jb21wbGV4aXR5IG9mIHRoaXMgZmlsZS4KCkkgcmVhbGl6ZSBh bGwgdGhpcyBsb29rcyBjb21wbGV4LCBoZWNrIEkndmUgc3BlbnQgYWJvdXQgMy00IHdvcmtpbmcg ZGF5cyAKdHJ5aW5nIHRvIGZpbmQgYW4gYWNjZXB0YWJsZSBtYWNyb3MgY29tYmluYXRpb24gdGhh dCBsb29rcyByZWFkYWJsZSwgCnVzZWZ1bCAoc2hvcnRlbnMgY29kZSkgYW5kIGFsc28gd29ya3Mu ClNpbmNlIHRoZSBjb3ZlciBsZXR0ZXIgaXNuJ3QgdGhlIHJpZ2h0IHBsYWNlIHRvIGluY2x1ZGUg c3VjaCBkZXRhaWxlZCAKZXhwbGFuYXRpb25zLCBJIHdpbGwgY29tZSBiYWNrIHdpdGggYSByZXBs eSBkZXRhaWxpbmcgdGhpcyBwYXRjaCBhbG9uZSwgCkkganVzdCBuZWVkIHNvbWUgdGltZSB0byBy ZWluc3BlY3QgaXQgc2luY2UgSSd2ZSBkb25lIHRoaXMgd29yayBhIGZldyAKbW9udGhzIGFnbyAo d2VudCBpbiBzaWNrIGxlYXZlKS4KCj4KPj4gQEAgLTAsMCArMSwyNTMgQEAKPgo+IFsuLi5dCj4K Pj4gKy8qCj4+ICsgKiBFbXVsYXRpb24gb2Ygc3lzdGVtLXJlZ2lzdGVyIHRyYXBwZWQgd3JpdGVz IHRoYXQgZG8gbm90IGNhdXNlCj4+ICsgKiBWTV9FVkVOVF9SRUFTT05fV1JJVEVfQ1RSTFJFRyBt b25pdG9yIHZtLWV2ZW50cy4KPj4gKyAqIFN1Y2ggd3JpdGVzIGFyZSBjb2xsYXRlcmFsbHkgdHJh cHBlZCBkdWUgdG8gc2V0dGluZyB0aGUgCj4+IEhDUl9FTDIuVFZNIGJpdC4KPj4gKyAqCj4+ICsg KiBSZWdhcmRpbmcgYWFyY2gzMiBkb21haW5zLCBub3RlIHRoYXQgZnJvbSBYZW4ncyBwZXJzcGVj dGl2ZSAKPj4gc3lzdGVtLXJlZ2lzdGVycwo+PiArICogb2Ygc3VjaCBkb21haW5zIGFyZSBhcmNo aXRlY3R1cmFsbHktbWFwcGVkIHRvIGFhcmNoNjQgcmVnaXN0ZXJzIAo+PiBpbiBvbmUgb2YKPj4g KyAqIHRocmVlIHdheXM6Cj4+ICsgKiAgLSBsb3cgMzItYml0cyBtYXBwaW5nICAgKGUuZy4gYWFy Y2gzMiBERkFSIC0+IGFhcmNoNjQgCj4+IEZBUl9FTDFbMzE6MF0pCj4+ICsgKiAgLSBoaWdoIDMy LWJpdHMgbWFwcGluZyAgKGUuZy4gYWFyY2gzMiBJRkFSIC0+IGFhcmNoNjQgCj4+IEZBUl9FTDFb NjM6MzJdKQo+PiArICogIC0gZnVsbCBtYXBwaW5nICAgICAgICAgIChlLmcuIGFhcmNoMzIgU0NU TFIgLT4gYWFyY2g2NCBTQ1RMUl9FTDEpCj4+ICsgKgo+PiArICogSGVuY2Ugd2UgZGVmaW5lIDIg bWFjcm8gdmFyaWFudHM6Cj4+ICsgKiAgLSBUVk1fRU1VTF9TWiB2YXJpYW50LCBmb3IgZnVsbCBt YXBwaW5ncwo+PiArICogIC0gVFZNX0VNVUxfTEggdmFyaWFudCwgZm9yIGxvdy9oaWdoIDMyLWJp dHMgbWFwcGluZ3MKPj4gKyAqLwo+PiArI2RlZmluZSBUVk1fRU1VTF9TWihyZWdzLCBoc3IsIHZh bCwgc3osIAo+PiByLi4uKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPj4gK3sgXAo+PiAr ICAgIGlmICggcHNyX21vZGVfaXNfdXNlcihyZWdzKSAKPj4gKSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKPgo+IFRob3NlIHJlZ2lzdGVycyBhcmUgbm90IGFjY2Vzc2li bGUgYXQgRUwwLgoKSG1tLCBJIGhhdmUgdGhpcyBxdWVzdGlvbiBub3RlZC4KSSByZW1lbWJlciBm aW5kaW5nIGZyb20gdGhlIG1hbnVhbHMgdGhhdCBhIHdyaXRlIGZyb20gdXNlci1tb2RlIG9mIHRo b3NlIApyZWdzIHdvdWxkIHN0aWxsIHRyYXAgdG8gRUwyLCBidXQgSSBkaWRuJ3QgdGVzdCB0aGF0 IHlldC4KV2lsbCBwdXQgdGhhdCB0byB0ZXN0IGFuZCBjb21lIGJhY2sgd2l0aCByZXN1bHRzIGZv ciB2Mi4KCj4KPj4gKyAgICAgICAgcmV0dXJuIGluamVjdF91bmRlZl9leGNlcHRpb24ocmVncywg Cj4+IGhzcik7ICAgICAgICAgICAgICAgICAgICAgICBcCj4+ICsgICAgV1JJVEVfU1lTUkVHIyNz eigodWludCMjc3ojI190KSAodmFsKSwgcik7Cj4KPiBbLi4uXQo+Cj4+IGRpZmYgLS1naXQgYS94 ZW4vaW5jbHVkZS9hc20tYXJtL3ZtX2V2ZW50LmggCj4+IGIveGVuL2luY2x1ZGUvYXNtLWFybS92 bV9ldmVudC5oCj4+IGluZGV4IDRlNWEyNzIuLmVkZjk2NTQgMTAwNjQ0Cj4+IC0tLSBhL3hlbi9p bmNsdWRlL2FzbS1hcm0vdm1fZXZlbnQuaAo+PiArKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL3Zt X2V2ZW50LmgKPj4gQEAgLTMwLDYgKzMwLDEyIEBAIHN0YXRpYyBpbmxpbmUgaW50IHZtX2V2ZW50 X2luaXRfZG9tYWluKHN0cnVjdCAKPj4gZG9tYWluICpkKQo+Pgo+PiAgIHN0YXRpYyBpbmxpbmUg dm9pZCB2bV9ldmVudF9jbGVhbnVwX2RvbWFpbihzdHJ1Y3QgZG9tYWluICpkKQo+PiAgIHsKPj4g KyAgICBzdHJ1Y3QgdmNwdSAqdjsKPj4gKwo+PiArICAgIGZvcl9lYWNoX3ZjcHUgKCBkLCB2ICkK Pj4gKyAgICAgICAgbWVtc2V0KCZ2LT5hcmNoLnZtX2V2ZW50LCAwLCBzaXplb2Yodi0+YXJjaC52 bV9ldmVudCkpOwo+PiArCj4+ICsgICAgbWVtc2V0KCZkLT5hcmNoLm1vbml0b3IsIDAsIHNpemVv ZihkLT5hcmNoLm1vbml0b3IpKTsKPj4gICAgICAgbWVtc2V0KCZkLT5tb25pdG9yLCAwLCBzaXpl b2YoZC0+bW9uaXRvcikpOwo+PiAgIH0KPj4KPj4gQEAgLTQxLDcgKzQ3LDEzIEBAIHN0YXRpYyBp bmxpbmUgdm9pZCAKPj4gdm1fZXZlbnRfdG9nZ2xlX3NpbmdsZXN0ZXAoc3RydWN0IGRvbWFpbiAq ZCwgc3RydWN0IHZjcHUgKnYpCj4+ICAgc3RhdGljIGlubGluZQo+PiAgIHZvaWQgdm1fZXZlbnRf cmVnaXN0ZXJfd3JpdGVfcmVzdW1lKHN0cnVjdCB2Y3B1ICp2LCAKPj4gdm1fZXZlbnRfcmVzcG9u c2VfdCAqcnNwKQo+PiAgIHsKPj4gLSAgICAvKiBOb3Qgc3VwcG9ydGVkIG9uIEFSTS4gKi8KPj4g KyAgICAvKiBYODYgVk1fRVZFTlRfUkVBU09OX01PVl9UT19NU1IgY291bGQgKGJ1dCBzaG91bGRu J3QpIGVuZC11cCAKPj4gaGVyZSB0b28uICovCj4KPiBUaGlzIHNob3VsZCBiZSBhbiBBU1NFUlQv QlVHX09OIHRoZW4uCgpXZSBjYW4ndCBBU1NFUlQvQlVHX09OIGhlcmUgYmVjYXVzZSByc3AtPnJl YXNvbiBpcyBjb250cm9sbGVkIGJ5IHRoZSAKdG9vbHN0YWNrIHVzZXIuClRoaXMgaGFzIHRvIGRv IHdpdGggdGhlIGltcGxlbWVudGF0aW9uIG9mIHZtX2V2ZW50X3Jlc3VtZS4KV2hhdCBJIHRoaW5r IHdlIHNob3VsZCBkbyBpbnN0ZWFkIGlzIHRvIHN1cnJvdW5kICJjYXNlIApWTV9FVkVOVF9SRUFT T05fTU9WX1RPX01TUiIgdGhlcmUgd2l0aCAjaWZkZWYgQ09ORklHX1g4Ni4KV291bGQgdGhhdCBi ZSBzdWl0YWJsZT8KCj4KPj4gKyAgICBpZiAoIHVubGlrZWx5KFZNX0VWRU5UX1JFQVNPTl9XUklU RV9DVFJMUkVHICE9IHJzcC0+cmVhc29uKSApCj4+ICsgICAgICAgIHJldHVybjsKPj4gKwo+PiAr ICAgIGlmICggKHJzcC0+ZmxhZ3MgJiBWTV9FVkVOVF9GTEFHX0RFTlkpICYmCj4+ICsgICAgICAg ICAocnNwLT5mbGFncyAmIFZNX0VWRU5UX0ZMQUdfVkNQVV9QQVVTRUQpICkKPj4gKyAgICAgICAg di0+YXJjaC52bV9ldmVudC53cml0ZV9kYXRhLnN0YXR1cyA9IE1XU19OT1dSSVRFOwo+PiAgIH0K Pj4KPj4gICBzdGF0aWMgaW5saW5lCj4+IEBAIC01NSwxMCArNjcsNyBAQCBzdGF0aWMgaW5saW5l IHZvaWQgCj4+IHZtX2V2ZW50X2ZpbGxfcmVncyh2bV9ldmVudF9yZXF1ZXN0X3QgKnJlcSkKPj4g ICAgICAgLyogTm90IHN1cHBvcnRlZCBvbiBBUk0uICovCj4+ICAgfQo+Pgo+PiAtc3RhdGljIGlu bGluZSB2b2lkIGFyY2hfdm1fZXZlbnRfdmNwdV9lbnRlcihzdHJ1Y3QgdmNwdSAqdikKPj4gLXsK Pj4gLSAgICAvKiBOb3RoaW5nIHRvIGRvLiAqLwo+PiAtfQo+PiArdm9pZCBhcmNoX3ZtX2V2ZW50 X3ZjcHVfZW50ZXIoc3RydWN0IHZjcHUgKnYpOwo+Pgo+PiAgIC8qCj4+ICAgICogTW9uaXRvciB2 bS1ldmVudHMuCj4+IEBAIC02Nyw3ICs3Niw4IEBAIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgCj4+ IHZtX2V2ZW50X21vbml0b3JfZ2V0X2NhcGFiaWxpdGllcyhzdHJ1Y3QgZG9tYWluICpkKQo+PiAg IHsKPj4gICAgICAgdWludDMyX3QgY2FwYWJpbGl0aWVzID0gMDsKPj4KPj4gLSAgICBjYXBhYmls aXRpZXMgPSAoMVUgPDwgWEVOX0RPTUNUTF9NT05JVE9SX0VWRU5UX0dVRVNUX1JFUVVFU1QpOwo+ PiArICAgIGNhcGFiaWxpdGllcyA9ICgxVSA8PCBYRU5fRE9NQ1RMX01PTklUT1JfRVZFTlRfV1JJ VEVfQ1RSTFJFRykgfAo+PiArICAgICAgICAgICAgICAgICAgICgxVSA8PCBYRU5fRE9NQ1RMX01P TklUT1JfRVZFTlRfR1VFU1RfUkVRVUVTVCk7Cj4+Cj4+ICAgICAgIHJldHVybiBjYXBhYmlsaXRp ZXM7Cj4+ICAgfQo+PiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL3ZtX2V2ZW50Lmgg Cj4+IGIveGVuL2luY2x1ZGUvcHVibGljL3ZtX2V2ZW50LmgKPj4gaW5kZXggOGY5NGUyMC4uZWMz ZWFjYSAxMDA2NDQKPj4gLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL3ZtX2V2ZW50LmgKPj4gKysr IGIveGVuL2luY2x1ZGUvcHVibGljL3ZtX2V2ZW50LmgKPgo+IFsuLi5dCj4KClJlZ2FyZHMsCkNv cm5lbGl1LgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K WGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlz dHMueGVuLm9yZy94ZW4tZGV2ZWwK