From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: Re: [v2 2/3] x86: add support for L2 CAT in hypervisor. Date: Sun, 9 Oct 2016 14:59:02 +0800 Message-ID: <20161009065902.GA30513@yi.y.sun> References: <1474510544-29571-1-git-send-email-yi.y.sun@linux.intel.com> <20160930212343.GD5382@char.us.oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bt8AO-0004N5-Ou for xen-devel@lists.xenproject.org; Sun, 09 Oct 2016 07:05:00 +0000 Content-Disposition: inline In-Reply-To: <20160930212343.GD5382@char.us.oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Konrad Rzeszutek Wilk Cc: wei.liu2@citrix.com, he.chen@linux.intel.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, jbeulich@suse.com, chao.p.peng@linux.intel.com, xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org T24gMTYtMDktMzAgMTc6MjM6NDMsIEtvbnJhZCBSemVzenV0ZWsgV2lsayB3cm90ZToKPiBPbiBU aHUsIFNlcCAyMiwgMjAxNiBhdCAxMDoxNTo0NEFNICswODAwLCBZaSBTdW4gd3JvdGU6Cj4gPiBB ZGQgTDIgQ0FUIChDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xvZ3kpIGZlYXR1cmUgc3VwcG9ydCBp bgo+ID4gaHlwZXJ2aXNvcjoKPiA+IC0gSW1wbGVtZW50ICdzdHJ1Y3QgZmVhdF9vcHMnIGNhbGxi YWNrIGZ1bmN0aW9ucyBmb3IgTDIgQ0FUCj4gPiAgIGFuZCBpbml0aWFsaXplIEwyIENBVCBmZWF0 dXJlIGFuZCBhZGQgaXQgaW50byBmZWF0dXJlIGxpc3QuCj4gPiAtIEFkZCBuZXcgc3lzY3RsIHRv IGdldCBMMiBDQVQgaW5mb3JtYXRpb24uCj4gPiAtIEFkZCBuZXcgZG9tY3RsIHRvIHNldC9nZXQg TDIgQ0FUIENCTS4KPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogSGUgQ2hlbiA8aGUuY2hlbkBsaW51 eC5pbnRlbC5jb20+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBZaSBTdW4gPHlpLnkuc3VuQGxpbnV4Lmlu dGVsLmNvbT4KPiA+IAo+ID4gLS0tCj4gPiBDaGFuZ2VkIHNpbmNlIHYxOgo+ID4gICogcHNyLmMK PiA+ICAgICAtIEZ1bmN0aW9uIGFuZCB2YXJpYWJsZXMgbmFtZXMgYXJlIGNoYW5nZWQgdG8gZXhw cmVzcyBhY2N1cmF0ZWx5Lgo+ID4gICAgIC0gRml4IGNvZGUgc3R5bGUgaXNzdWVzLgo+ID4gICAg IC0gRml4IGltcHJlY2lzZSBjb21tZW50cy4KPiA+ICAgICAtIEFkZCBvbmUgY2FsbGJhY2sgZnVu Y3Rpb24sIGdldF9jb3NfbnVtKCksIHRvIGZ1bGZpbGwgdGhlCj4gPiAgICAgICBhYnN0cmFjdGlv biByZXF1aXJlbWVudC4KPiA+ICAgICAtIFJlcGxhY2UgY3VzdG9tIGxpc3QgbWFuYWdlbWVudCB0 byBzeXN0ZW0uCj4gPiAgICAgLSBVc2UgJ2NvbnN0JyB0byBtYWtlIGNvZGVzIG1vcmUgc2FmZS4K PiA+IC0tLQo+ID4gIHhlbi9hcmNoL3g4Ni9kb21jdGwuYyAgICAgICAgICAgfCAgMTMgKysrCj4g PiAgeGVuL2FyY2gveDg2L3Bzci5jICAgICAgICAgICAgICB8IDIxNiArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCj4gPiAgeGVuL2FyY2gveDg2L3N5c2N0bC5jICAgICAg ICAgICB8ICAxMyArKysKPiA+ICB4ZW4vaW5jbHVkZS9hc20teDg2L21zci1pbmRleC5oIHwgICAx ICsKPiA+ICB4ZW4vaW5jbHVkZS9hc20teDg2L3Bzci5oICAgICAgIHwgICAyICsKPiA+ICB4ZW4v aW5jbHVkZS9wdWJsaWMvZG9tY3RsLmggICAgIHwgICAyICsKPiA+ICB4ZW4vaW5jbHVkZS9wdWJs aWMvc3lzY3RsLmggICAgIHwgICA2ICsrCj4gPiAgNyBmaWxlcyBjaGFuZ2VkLCAyNTMgaW5zZXJ0 aW9ucygrKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2RvbWN0bC5jIGIveGVu L2FyY2gveDg2L2RvbWN0bC5jCj4gPiBpbmRleCBjNTNkODE5Li4yNGY4NWM3IDEwMDY0NAo+ID4g LS0tIGEveGVuL2FyY2gveDg2L2RvbWN0bC5jCj4gPiArKysgYi94ZW4vYXJjaC94ODYvZG9tY3Rs LmMKPiA+IEBAIC0xNDI0LDYgKzE0MjQsMTkgQEAgbG9uZyBhcmNoX2RvX2RvbWN0bCgKPiA+ICAg ICAgICAgICAgICBjb3B5YmFjayA9IDE7Cj4gPiAgICAgICAgICAgICAgYnJlYWs7Cj4gPiAgCj4g PiArICAgICAgICBjYXNlIFhFTl9ET01DVExfUFNSX0NBVF9PUF9TRVRfTDJfQ0JNOgo+ID4gKyAg ICAgICAgICAgIHJldCA9IHBzcl9zZXRfdmFsKGQsIGRvbWN0bC0+dS5wc3JfY2F0X29wLnRhcmdl dCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21jdGwtPnUucHNyX2NhdF9v cC5kYXRhLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTUl9NQVNLX1RZUEVf TDJfQ0JNKTsKPiA+ICsgICAgICAgICAgICBicmVhazsKPiA+ICsKPiA+ICsgICAgICAgIGNhc2Ug WEVOX0RPTUNUTF9QU1JfQ0FUX09QX0dFVF9MMl9DQk06Cj4gPiArICAgICAgICAgICAgcmV0ID0g cHNyX2dldF92YWwoZCwgZG9tY3RsLT51LnBzcl9jYXRfb3AudGFyZ2V0LAo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICZkb21jdGwtPnUucHNyX2NhdF9vcC5kYXRhLAo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTUl9NQVNLX1RZUEVfTDJfQ0JNKTsKPiA+ICsg ICAgICAgICAgICBjb3B5YmFjayA9IDE7Cj4gPiArICAgICAgICAgICAgYnJlYWs7Cj4gPiArCj4g PiAgICAgICAgICBkZWZhdWx0Ogo+ID4gICAgICAgICAgICAgIHJldCA9IC1FT1BOT1RTVVBQOwo+ ID4gICAgICAgICAgICAgIGJyZWFrOwo+ID4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9wc3Iu YyBiL3hlbi9hcmNoL3g4Ni9wc3IuYwo+ID4gaW5kZXggOTllNGM3OC4uNTAwMGEzYyAxMDA2NDQK PiA+IC0tLSBhL3hlbi9hcmNoL3g4Ni9wc3IuYwo+ID4gKysrIGIveGVuL2FyY2gveDg2L3Bzci5j Cj4gPiBAQCAtMTM3LDYgKzEzNyw3IEBAIHN0cnVjdCBwc3JfY2F0X2x2bF9pbmZvIHsKPiA+ICBz dHJ1Y3QgZmVhdF9pbmZvIHsKPiA+ICAgICAgdW5pb24gewo+ID4gICAgICAgICAgc3RydWN0IHBz cl9jYXRfbHZsX2luZm8gbDNfaW5mbzsKPiA+ICsgICAgICAgIHN0cnVjdCBwc3JfY2F0X2x2bF9p bmZvIGwyX2luZm87Cj4gPiAgICAgIH07Cj4gPiAgfTsKPiA+ICAKPiA+IEBAIC0xNTgsMTIgKzE1 OSwxNSBAQCBzdHJ1Y3QgcHNyX3JlZiB7Cj4gPiAgICAgIHVuc2lnbmVkIGludCByZWY7Cj4gPiAg fTsKPiA+ICAKPiA+ICsKPiA+ICAjZGVmaW5lIFBTUl9TT0NLRVRfTDNfQ0FUIDAKPiA+ICAjZGVm aW5lIFBTUl9TT0NLRVRfTDNfQ0RQIDEKPiA+ICsjZGVmaW5lIFBTUl9TT0NLRVRfTDJfQ0FUIDIK PiA+ICAKPiA+ICBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvIHsKPiA+ICAgICAgLyoKPiA+ICAgICAg ICogYml0IDF+MDogWzAxXS0+TDMgQ0FULW9ubHksIFsxMF0tPkwzIENEUAo+ID4gKyAgICAgKiBi aXQgMjogICBMMiBDQVQKPiA+ICAgICAgICovCj4gPiAgICAgIHVuc2lnbmVkIGludCBmZWF0dXJl czsKPiA+ICAgICAgdW5zaWduZWQgaW50IG5yX2ZlYXQ7Cj4gPiBAQCAtMTkwLDYgKzE5NCw3IEBA IHN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgcHNyX2Fzc29jLCBwc3JfYXNzb2MpOwo+ID4g IHN0YXRpYyBzdHJ1Y3QgcHNyX3JlZiAqdGVtcF9jb3NfcmVmOwo+ID4gIC8qIEV2ZXJ5IGZlYXR1 cmUgaGFzIGl0cyBvd24gb2JqZWN0LiAqLwo+ID4gIHN0YXRpYyBzdHJ1Y3QgZmVhdF9saXN0ICpm ZWF0X2wzOwo+ID4gK3N0YXRpYyBzdHJ1Y3QgZmVhdF9saXN0ICpmZWF0X2wyOwo+ID4gIAo+ID4g IC8qIENvbW1vbiBmdW5jdGlvbnMgZm9yIHN1cHBvcnRpbmcgZmVhdHVyZSBjYWxsYmFjayBmdW5j dGlvbnMuICovCj4gPiAgc3RhdGljIHZvaWQgZnJlZV9mZWF0dXJlKHN0cnVjdCBwc3Jfc29ja2V0 X2luZm8gKmluZm8pCj4gPiBAQCAtMjEyLDYgKzIxNywxMiBAQCBzdGF0aWMgdm9pZCBmcmVlX2Zl YXR1cmUoc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbykKPiA+ICAgICAgICAgIHhmcmVlKGZl YXRfbDMpOwo+ID4gICAgICAgICAgZmVhdF9sMyA9IE5VTEw7Cj4gPiAgICAgIH0KPiA+ICsKPiA+ ICsgICAgaWYgKCBmZWF0X2wyICkKPiA+ICsgICAgewo+ID4gKyAgICAgICAgeGZyZWUoZmVhdF9s Mik7Cj4gPiArICAgICAgICBmZWF0X2wyID0gTlVMTDsKPiA+ICsgICAgfQo+ID4gIH0KPiA+ICAK PiA+ICBzdGF0aWMgYm9vbCBwc3JfY2hlY2tfY2JtKHVuc2lnbmVkIGludCBjYm1fbGVuLCB1aW50 NjRfdCBjYm0pCj4gPiBAQCAtMjQxLDYgKzI1MiwxOTUgQEAgc3RhdGljIGJvb2wgcHNyX2NoZWNr X2NibSh1bnNpZ25lZCBpbnQgY2JtX2xlbiwgdWludDY0X3QgY2JtKQo+ID4gICAqIEZlYXR1cmVz IHNwZWNpZmljIGltcGxlbWVudGF0aW9ucy4KPiA+ICAgKi8KPiA+ICAKPiA+ICsvKiBMMiBDQVQg Y2FsbGJhY2sgZnVuY3Rpb25zIGltcGxlbWVudGF0aW9uLiAqLwo+ID4gK3N0YXRpYyB2b2lkIGwy X2NhdF9pbml0X2ZlYXR1cmUodW5zaWduZWQgaW50IGVheCwgdW5zaWduZWQgaW50IGVieCwKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBlY3gsIHVuc2ln bmVkIGludCBlZHgsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg ZmVhdF9saXN0ICpmZWF0LAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbykKPiA+ICt7Cj4gPiArICAgIHN0cnVjdCBwc3JfY2F0 X2x2bF9pbmZvIGwyX2NhdDsKPiA+ICsgICAgdW5zaWduZWQgaW50IHNvY2tldDsKPiA+ICsKPiA+ ICsgICAgLyogTm8gdmFsaWQgdmFsdWUgc28gZG8gbm90IGVuYWJsZSBmZWF0dXJlLiAqLwo+IAo+ IHMvdmFsdWUvdmFsdWVzLwo+IHMvZmVhdHVyZS90aGUgZmVhdHVyZS8KClRoYW5rcyEKCj4gPiAr ICAgIGlmICggMCA9PSBlYXggfHwgMCA9PSBlZHggKQo+ID4gKyAgICAgICAgcmV0dXJuOwo+ID4g Kwo+ID4gKyAgICBsMl9jYXQuY2JtX2xlbiA9IChlYXggJiAweDFmKSArIDE7Cj4gPiArICAgIGwy X2NhdC5jb3NfbWF4ID0gbWluKG9wdF9jb3NfbWF4LCBlZHggJiAweGZmZmYpOwo+IAo+IEhtLCB0 aGVzZSAweDFmIGFuZCAweGZmZmYgbG9vayBzYW1lIGFzIEwzLiBQZXJoYXBzIG1ha2UgdGhpcyBh ICNkZWZpbmUuCj4gCk9rLCB0aGFua3MhCgo+ID4gKwo+ID4gKyAgICAvKiBjb3M9MCBpcyByZXNl cnZlZCBhcyBkZWZhdWx0IGNibShhbGwgb25lcykuICovCj4gPiArICAgIGZlYXQtPmNvc19yZWdf dmFsWzBdID0gKDF1bGwgPDwgbDJfY2F0LmNibV9sZW4pIC0gMTsKPiA+ICsKPiA+ICsgICAgZmVh dC0+ZmVhdHVyZSA9IFBTUl9TT0NLRVRfTDJfQ0FUOwo+ID4gKyAgICBfX3NldF9iaXQoUFNSX1NP Q0tFVF9MMl9DQVQsICZpbmZvLT5mZWF0dXJlcyk7Cj4gPiArCj4gPiArICAgIGZlYXQtPmluZm8u bDJfaW5mbyA9IGwyX2NhdDsKPiA+ICsKPiA+ICsgICAgaW5mby0+bnJfZmVhdCsrOwo+ID4gKwo+ ID4gKyAgICAvKiBBZGQgdGhpcyBmZWF0dXJlIGludG8gbGlzdC4gKi8KPiA+ICsgICAgbGlzdF9h ZGRfdGFpbCgmZmVhdC0+bGlzdCwgJmluZm8tPmZlYXRfbGlzdCk7Cj4gPiArCj4gPiArICAgIHNv Y2tldCA9IGNwdV90b19zb2NrZXQoc21wX3Byb2Nlc3Nvcl9pZCgpKTsKPiA+ICsgICAgcHJpbnRr KFhFTkxPR19JTkZPICJMMiBDQVQ6IGVuYWJsZWQgb24gc29ja2V0ICV1LCBjb3NfbWF4OiV1LCBj Ym1fbGVuOiV1LlxuIiwKPiA+ICsgICAgICAgICAgIHNvY2tldCwgZmVhdC0+aW5mby5sMl9pbmZv LmNvc19tYXgsIGZlYXQtPmluZm8ubDJfaW5mby5jYm1fbGVuKTsKPiA+ICt9Cj4gPiArCj4gPiAr c3RhdGljIGludCBsMl9jYXRfY29tcGFyZV92YWwoY29uc3QgdWludDY0X3QgdmFsW10sCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGZlYXRfbGlzdCAqZmVh dCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY29zLCBi b29sICpmb3VuZCkKPiA+ICt7Cj4gPiArICAgIHVpbnQ2NF90IGwyX2RlZl9jYm07Cj4gPiArCj4g PiArICAgIGwyX2RlZl9jYm0gPSAoMXVsbCA8PCBmZWF0LT5pbmZvLmwyX2luZm8uY2JtX2xlbikg LSAxOwo+ID4gKwo+ID4gKyAgICAvKiBMMiBDQVQgKi8KPiA+ICsgICAgaWYgKCBjb3MgPiBmZWF0 LT5pbmZvLmwyX2luZm8uY29zX21heCApCj4gPiArICAgIHsKPiA+ICsgICAgICAgIGlmICggdmFs WzBdICE9IGwyX2RlZl9jYm0gKQo+ID4gKyAgICAgICAgewo+ID4gKyAgICAgICAgICAgICpmb3Vu ZCA9IGZhbHNlOwo+ID4gKyAgICAgICAgICAgIHJldHVybiAtRU5PRU5UOwo+ID4gKyAgICAgICAg fQo+ID4gKyAgICAgICAgKmZvdW5kID0gdHJ1ZTsKPiA+ICsgICAgfQo+ID4gKyAgICBlbHNlCj4g PiArICAgICAgICAqZm91bmQgPSAodmFsWzBdID09IGZlYXQtPmNvc19yZWdfdmFsW2Nvc10pOwo+ ID4gKwo+ID4gKyAgICAvKiBMMiBDQVQgb2NjdXBpZXMgb25lIENPUy4gKi8KPiA+ICsgICAgcmV0 dXJuIDE7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgbDJfY2F0X2dldF9j b3NfbWF4X2Zyb21fdHlwZShjb25zdCBzdHJ1Y3QgZmVhdF9saXN0ICpmZWF0LAo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHBzcl92YWxf dHlwZSB0eXBlKQo+ID4gK3sKPiA+ICsgICAgaWYgKCB0eXBlICE9IFBTUl9NQVNLX1RZUEVfTDJf Q0JNICkKPiA+ICsgICAgICAgIHJldHVybiAwOwo+ID4gKwo+ID4gKyAgICByZXR1cm4gZmVhdC0+ aW5mby5sMl9pbmZvLmNvc19tYXg7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB1bnNpZ25lZCBp bnQgbDJfY2F0X2V4Y2VlZHNfY29zX21heChjb25zdCB1aW50NjRfdCB2YWxbXSwKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGZlYXRf bGlzdCAqZmVhdCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgaW50IGNvcykKPiA+ICt7Cj4gPiArICAgIHVpbnQ2NF90IGwyX2RlZl9jYm07 Cj4gPiArCj4gPiArICAgIGwyX2RlZl9jYm0gPSAoMXVsbCA8PCBmZWF0LT5pbmZvLmwyX2luZm8u Y2JtX2xlbikgLSAxOwo+ID4gKwo+ID4gKyAgICAvKiBMMiBDQVQgKi8KPiA+ICsgICAgaWYgKCBj b3MgPiBmZWF0LT5pbmZvLmwzX2luZm8uY29zX21heCAmJgo+ID4gKyAgICAgICAgIHZhbFswXSAh PSBsMl9kZWZfY2JtICkKPiA+ICsgICAgICAgICAgICAvKgo+ID4gKyAgICAgICAgICAgICAqIEV4 Y2VlZCBjb3NfbWF4IGFuZCB2YWx1ZSB0byBzZXQgaXMgbm90IGRlZmF1bHQsCj4gPiArICAgICAg ICAgICAgICogcmV0dXJuIGVycm9yLgo+ID4gKyAgICAgICAgICAgICAqLwo+ID4gKyAgICAgICAg ICAgIHJldHVybiAwOwo+ID4gKwo+ID4gKyAgICAvKiBMMiBDQVQgb2NjdXBpZXMgb25lIENPUy4g Ki8KPiA+ICsgICAgcmV0dXJuIDE7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgbDJfY2F0 X3dyaXRlX21zcih1bnNpZ25lZCBpbnQgY29zLCBjb25zdCB1aW50NjRfdCB2YWxbXSwKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGZlYXRfbGlzdCAqZmVhdCkKPiA+ICt7 Cj4gPiArICAgIC8qIEwyIENBVCAqLwo+ID4gKyAgICBpZiAoIGNvcyA+IGZlYXQtPmluZm8ubDJf aW5mby5jb3NfbWF4ICkKPiA+ICsgICAgICAgIHJldHVybiAxOwo+ID4gKwo+ID4gKyAgICBmZWF0 LT5jb3NfcmVnX3ZhbFtjb3NdID0gdmFsWzBdOwo+ID4gKyAgICB3cm1zcmwoTVNSX0lBMzJfUFNS X0wyX01BU0soY29zKSwgdmFsWzBdKTsKPiA+ICsKPiA+ICsgICAgLyogTDIgQ0FUIG9jY3VwaWVz IG9uZSBDT1MuICovCj4gPiArICAgIHJldHVybiAxOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMg dW5zaWduZWQgaW50IGwyX2NhdF9nZXRfY29zX251bShjb25zdCBzdHJ1Y3QgZmVhdF9saXN0ICpm ZWF0KQo+ID4gK3sKPiA+ICsgICAgLyogTDIgQ0FUIG9jY3VwaWVzIG9uZSBDT1MuICovCj4gPiAr ICAgIHJldHVybiAxOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50IGwyX2NhdF9nZXRfb2xk X3ZhbCh1aW50NjRfdCB2YWxbXSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBzdHJ1Y3QgZmVhdF9saXN0ICpmZWF0LAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGludCBvbGRfY29zLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGVudW0gcHNyX3ZhbF90eXBlIHR5cGUpCj4gPiArewo+ID4gKyAgICBpZiAoIG9sZF9j b3MgPiBmZWF0LT5pbmZvLmwyX2luZm8uY29zX21heCApCj4gPiArICAgICAgICAvKiBVc2UgZGVm YXVsdCB2YWx1ZS4gKi8KPiA+ICsgICAgICAgIG9sZF9jb3MgPSAwOwo+ID4gKwo+ID4gKyAgICB2 YWxbMF0gPSAgZmVhdC0+Y29zX3JlZ192YWxbb2xkX2Nvc107Cj4gCj4gRXh0cmEgc3BhY2UuCj4g Ck9oLCBzb3JyeS4gVGhhbmtzIQoKPiA+ICsKPiA+ICsgICAgLyogTDIgQ0FUIG9jY3VwaWVzIG9u ZSBDT1MuICovCj4gPiArICAgIHJldHVybiAxOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50 IGwyX2NhdF9zZXRfbmV3X3ZhbCh1aW50NjRfdCB2YWxbXSwKPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZmVhdF9saXN0ICpmZWF0LAo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBvbGRfY29zLAo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGVudW0gcHNyX3ZhbF90eXBlIHR5cGUsCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgbSkKPiA+ICt7Cj4gPiArICAgIGlmICgg dHlwZSA9PSBQU1JfTUFTS19UWVBFX0wyX0NCTSApCj4gPiArICAgIHsKPiA+ICsgICAgICAgIGlm ICggIXBzcl9jaGVja19jYm0oZmVhdC0+aW5mby5sMl9pbmZvLmNibV9sZW4sIG0pICkKPiA+ICsg ICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+ICsKPiA+ICsgICAgICAgIHZhbFswXSA9IG07 Cj4gPiArICAgIH0KPiA+ICsKPiA+ICsgICAgLyogTDIgQ0FUIG9jY3VwaWVzIG9uZSBDT1MuICov Cj4gPiArICAgIHJldHVybiAxOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50IGwyX2NhdF9n ZXRfdmFsKGNvbnN0IHN0cnVjdCBmZWF0X2xpc3QgKmZlYXQsIHVuc2lnbmVkIGludCBjb3MsCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHBzcl92YWxfdHlwZSB0eXBlLCB1aW50 NjRfdCAqdmFsKQo+ID4gK3sKPiA+ICsgICAgaWYgKCB0eXBlICE9IFBTUl9NQVNLX1RZUEVfTDJf Q0JNICkKPiA+ICsgICAgICAgICByZXR1cm4gMDsKPiA+ICsKPiA+ICsgICAgaWYgKCBjb3MgPiBm ZWF0LT5pbmZvLmwzX2luZm8uY29zX21heCApCj4gPiArICAgICAgICBjb3MgPSAwOwo+ID4gKwo+ ID4gKyAgICAvKiBMMiBDQVQgKi8KPiA+ICsgICAgKnZhbCA9ICBmZWF0LT5jb3NfcmVnX3ZhbFtj b3NdOwo+ID4gKwo+ID4gKyAgICByZXR1cm4gMTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGlu dCBsMl9jYXRfZ2V0X2ZlYXRfaW5mbyhjb25zdCBzdHJ1Y3QgZmVhdF9saXN0ICpmZWF0LAo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBwc3JfdmFsX3R5cGUgdHlwZSwK PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGRhdFtdLCB1aW50 MzJfdCBhcnJheV9sZW4pCj4gPiArewo+ID4gKyAgICBpZiAoIHR5cGUgIT0gUFNSX01BU0tfVFlQ RV9MMl9DQk0gfHwgIWRhdCB8fCAyID4gYXJyYXlfbGVuKQo+ID4gKyAgICAgICAgcmV0dXJuIDA7 Cj4gPiArCj4gPiArICAgIGRhdFswXSA9IGZlYXQtPmluZm8ubDJfaW5mby5jYm1fbGVuOwo+ID4g KyAgICBkYXRbMV0gPSBmZWF0LT5pbmZvLmwyX2luZm8uY29zX21heDsKPiA+ICsKPiA+ICsgICAg cmV0dXJuIDE7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgbDJfY2F0X2dl dF9tYXhfY29zX21heChjb25zdCBzdHJ1Y3QgZmVhdF9saXN0ICpmZWF0KQo+ID4gK3sKPiA+ICsg ICAgcmV0dXJuIGZlYXQtPmluZm8ubDJfaW5mby5jb3NfbWF4Owo+ID4gK30KPiA+ICsKPiA+ICtz dHJ1Y3QgZmVhdF9vcHMgbDJfY2F0X29wcyA9IHsKPiA+ICsgICAgLmluaXRfZmVhdHVyZSA9IGwy X2NhdF9pbml0X2ZlYXR1cmUsCj4gPiArICAgIC5nZXRfY29zX251bSA9IGwyX2NhdF9nZXRfY29z X251bSwKPiA+ICsgICAgLmdldF9vbGRfdmFsID0gbDJfY2F0X2dldF9vbGRfdmFsLAo+ID4gKyAg ICAuc2V0X25ld192YWwgPSBsMl9jYXRfc2V0X25ld192YWwsCj4gPiArICAgIC5jb21wYXJlX3Zh bCA9IGwyX2NhdF9jb21wYXJlX3ZhbCwKPiA+ICsgICAgLmdldF9jb3NfbWF4X2Zyb21fdHlwZSA9 IGwyX2NhdF9nZXRfY29zX21heF9mcm9tX3R5cGUsCj4gPiArICAgIC5leGNlZWRzX2Nvc19tYXgg PSBsMl9jYXRfZXhjZWVkc19jb3NfbWF4LAo+ID4gKyAgICAud3JpdGVfbXNyID0gbDJfY2F0X3dy aXRlX21zciwKPiA+ICsgICAgLmdldF92YWwgPSBsMl9jYXRfZ2V0X3ZhbCwKPiA+ICsgICAgLmdl dF9mZWF0X2luZm8gPSBsMl9jYXRfZ2V0X2ZlYXRfaW5mbywKPiA+ICsgICAgLmdldF9tYXhfY29z X21heCA9IGwyX2NhdF9nZXRfbWF4X2Nvc19tYXgsCj4gPiArfTsKPiA+ICsKPiA+ICAvKiBMMyBD QVQvQ0RQIGNhbGxiYWNrIGZ1bmN0aW9ucyBpbXBsZW1lbnRhdGlvbi4gKi8KPiA+ICBzdGF0aWMg dm9pZCBsM19jYXRfaW5pdF9mZWF0dXJlKHVuc2lnbmVkIGludCBlYXgsIHVuc2lnbmVkIGludCBl YngsCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZWN4 LCB1bnNpZ25lZCBpbnQgZWR4LAo+ID4gQEAgLTEyMjAsNiArMTQyMCwxMCBAQCBzdGF0aWMgaW50 IGNwdV9wcmVwYXJlX3dvcmsodW5zaWduZWQgaW50IGNwdSkKPiA+ICAgICAgICAgICAoZmVhdF9s MyA9IHh6YWxsb2Moc3RydWN0IGZlYXRfbGlzdCkpID09IE5VTEwgKQo+ID4gICAgICAgICAgcmV0 dXJuIC1FTk9NRU07Cj4gPiAgCj4gPiArICAgIGlmICggZmVhdF9sMiA9PSBOVUxMICYmCj4gPiAr ICAgICAgICAgKGZlYXRfbDIgPSB4emFsbG9jKHN0cnVjdCBmZWF0X2xpc3QpKSA9PSBOVUxMICkK PiAKPiBIbW0sIGFuZCBsZWFrIGZlYXRfbDMgYW5kIHRoZSBvdGhlciBvbmU/Cj4gClNvcnJ5LCB3 aWxsIGZyZWUgdGhlbS4gVGhhbmtzIQoKPiA+ICsgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ID4g Kwo+ID4gICAgICByZXR1cm4gMDsKPiA+ICB9Cj4gPiAgCj4gPiBAQCAtMTI1NSw2ICsxNDU5LDE4 IEBAIHN0YXRpYyB2b2lkIGNwdV9pbml0X3dvcmsodm9pZCkKPiA+ICAgICAgICAgIGZlYXRfdG1w LT5vcHMgPSBsM19jYXRfb3BzOwo+ID4gICAgICAgICAgZmVhdF90bXAtPm9wcy5pbml0X2ZlYXR1 cmUoZWF4LCBlYngsIGVjeCwgZWR4LCBmZWF0X3RtcCwgaW5mbyk7Cj4gPiAgICAgIH0KPiA+ICsK PiA+ICsgICAgY3B1aWRfY291bnQoUFNSX0NQVUlEX0xFVkVMX0NBVCwgMCwgJmVheCwgJmVieCwg JmVjeCwgJmVkeCk7Cj4gPiArICAgIGlmICggZWJ4ICYgUFNSX1JFU09VUkNFX1RZUEVfTDIgKQo+ ID4gKyAgICB7Cj4gPiArICAgICAgICBmZWF0X3RtcCA9IGZlYXRfbDI7Cj4gPiArICAgICAgICBm ZWF0X2wyID0gTlVMTDsKPiA+ICsKPiA+ICsgICAgICAgIC8qIEluaXRpYWxpemUgTDIgQ0FUIGFj Y29yZGluZyB0byBDUFVJRC4gKi8KPiA+ICsgICAgICAgIGNwdWlkX2NvdW50KFBTUl9DUFVJRF9M RVZFTF9DQVQsIDIsICZlYXgsICZlYngsICZlY3gsICZlZHgpOwo+ID4gKyAgICAgICAgZmVhdF90 bXAtPm9wcyA9IGwyX2NhdF9vcHM7Cj4gPiArICAgICAgICBmZWF0X3RtcC0+b3BzLmluaXRfZmVh dHVyZShlYXgsIGVieCwgZWN4LCBlZHgsIGZlYXRfdG1wLCBpbmZvKTsKPiA+ICsgICAgfQo+ID4g IH0KPiA+ICAKPiA+ICBzdGF0aWMgdm9pZCBjcHVfZmluaV93b3JrKHVuc2lnbmVkIGludCBjcHUp Cj4gPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3N5c2N0bC5jIGIveGVuL2FyY2gveDg2L3N5 c2N0bC5jCj4gPiBpbmRleCA4ZTE3YTlhLi42YmJlOTk0IDEwMDY0NAo+ID4gLS0tIGEveGVuL2Fy Y2gveDg2L3N5c2N0bC5jCj4gPiArKysgYi94ZW4vYXJjaC94ODYvc3lzY3RsLmMKPiA+IEBAIC0x ODksNiArMTg5LDE5IEBAIGxvbmcgYXJjaF9kb19zeXNjdGwoCj4gPiAgICAgICAgICAgICAgICAg IHJldCA9IC1FRkFVTFQ7Cj4gPiAgICAgICAgICAgICAgYnJlYWs7Cj4gPiAgICAgICAgICB9Cj4g PiArICAgICAgICBjYXNlIFhFTl9TWVNDVExfUFNSX0NBVF9nZXRfbDJfaW5mbzoKPiA+ICsgICAg ICAgIHsKPiA+ICsgICAgICAgICAgICB1aW50MzJfdCBkYXRbMl07Cj4gPiArICAgICAgICAgICAg cmV0ID0gcHNyX2dldF9pbmZvKHN5c2N0bC0+dS5wc3JfY2F0X29wLnRhcmdldCwKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUFNSX01BU0tfVFlQRV9MMl9DQk0sCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdCwgMik7Cj4gPiArICAgICAgICAgICAgc3lz Y3RsLT51LnBzcl9jYXRfb3AudS5sMl9pbmZvLmNibV9sZW4gPSBkYXRbMF07Cj4gCj4gV291bGQg aXQgbWFrZSBzZW5zZSB0byBoYXZlIDAgYW5kIDEgYmUgYW4gI2RlZmluZT8KPiAKPiBUaGF0IHdh eSBoZXJlIGFuZCBpbiBsMl9jYXRfZ2V0X2ZlYXRfaW5mbyB5b3UgY2FuIGp1c3QKPiByZWZlcmVu Y2UgYnk6Cj4gCj4gZGF0W0NPU19NQVhdID0gLi4KPiAKPiBBbmQgdGhlbiBkb24ndCBoYXZlIHRv IHdvcnJ5IG9mIGFjY2lkZW50bHkgc3dhcHBpbmcgdGhlIHZhbHVlcy4KPiAKR29vZCBzdWdnZXN0 aW9uLiBUaGFuayB5b3UhCgo+ID4gKyAgICAgICAgICAgIHN5c2N0bC0+dS5wc3JfY2F0X29wLnUu bDJfaW5mby5jb3NfbWF4ID0gZGF0WzFdOwo+ID4gKwo+ID4gKyAgICAgICAgICAgIGlmICggIXJl dCAmJiBfX2NvcHlfZmllbGRfdG9fZ3Vlc3QodV9zeXNjdGwsIHN5c2N0bCwgdS5wc3JfY2F0X29w KSApCj4gPiArICAgICAgICAgICAgICAgIHJldCA9IC1FRkFVTFQ7Cj4gPiArICAgICAgICAgICAg YnJlYWs7Cj4gPiArICAgICAgICB9Cj4gPiAgICAgICAgICBkZWZhdWx0Ogo+ID4gICAgICAgICAg ICAgIHJldCA9IC1FT1BOT1RTVVBQOwo+ID4gICAgICAgICAgICAgIGJyZWFrOwo+ID4gZGlmZiAt LWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbXNyLWluZGV4LmggYi94ZW4vaW5jbHVkZS9hc20t eDg2L21zci1pbmRleC5oCj4gPiBpbmRleCBkZWI4MmE3Li45OTIwMmYzIDEwMDY0NAo+ID4gLS0t IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9tc3ItaW5kZXguaAo+ID4gKysrIGIveGVuL2luY2x1ZGUv YXNtLXg4Ni9tc3ItaW5kZXguaAo+ID4gQEAgLTM0Miw2ICszNDIsNyBAQAo+ID4gICNkZWZpbmUg TVNSX0lBMzJfUFNSX0wzX01BU0sobikJKDB4MDAwMDBjOTAgKyAobikpCj4gPiAgI2RlZmluZSBN U1JfSUEzMl9QU1JfTDNfTUFTS19DT0RFKG4pCSgweDAwMDAwYzkwICsgKG4pICogMiArIDEpCj4g PiAgI2RlZmluZSBNU1JfSUEzMl9QU1JfTDNfTUFTS19EQVRBKG4pCSgweDAwMDAwYzkwICsgKG4p ICogMikKPiA+ICsjZGVmaW5lIE1TUl9JQTMyX1BTUl9MMl9NQVNLKG4pCQkoMHgwMDAwMGQxMCAr IChuKSkKPiAKPiBTb21ldGhpbmcgaXMgb2ZmIGhlcmU/IFRhYnM/CgpUaGUgb2xkIGNvZGVzIHVz ZXMgdGFicyBzbyBJIGZvbGxvdyB0aGlzIHN0eWxlLgoKPiA+ICAKPiA+ICAvKiBJbnRlbCBNb2Rl bCA2ICovCj4gPiAgI2RlZmluZSBNU1JfUDZfUEVSRkNUUihuKQkJKDB4MDAwMDAwYzEgKyAobikp Cj4gPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wc3IuaCBiL3hlbi9pbmNsdWRl L2FzbS14ODYvcHNyLmgKPiA+IGluZGV4IGVmNDZkMTIuLjEwMWE3NmEgMTAwNjQ0Cj4gPiAtLS0g YS94ZW4vaW5jbHVkZS9hc20teDg2L3Bzci5oCj4gPiArKysgYi94ZW4vaW5jbHVkZS9hc20teDg2 L3Bzci5oCj4gPiBAQCAtMjMsNiArMjMsNyBAQAo+ID4gIAo+ID4gIC8qIFJlc291cmNlIFR5cGUg RW51bWVyYXRpb24gKi8KPiA+ICAjZGVmaW5lIFBTUl9SRVNPVVJDRV9UWVBFX0wzICAgICAgICAg ICAgMHgyCj4gPiArI2RlZmluZSBQU1JfUkVTT1VSQ0VfVFlQRV9MMiAgICAgICAgICAgIDB4NAo+ ID4gIAo+ID4gIC8qIEwzIE1vbml0b3JpbmcgRmVhdHVyZXMgKi8KPiA+ICAjZGVmaW5lIFBTUl9D TVRfTDNfT0NDVVBBTkNZICAgICAgICAgICAweDEKPiA+IEBAIC01MCw2ICs1MSw3IEBAIGVudW0g cHNyX3ZhbF90eXBlIHsKPiA+ICAgICAgUFNSX01BU0tfVFlQRV9MM19DQk0sCj4gPiAgICAgIFBT Ul9NQVNLX1RZUEVfTDNfQ09ERSwKPiA+ICAgICAgUFNSX01BU0tfVFlQRV9MM19EQVRBLAo+ID4g KyAgICBQU1JfTUFTS19UWVBFX0wyX0NCTSwKPiA+ICB9Owo+ID4gIAo+ID4gIGV4dGVybiBzdHJ1 Y3QgcHNyX2NtdCAqcHNyX2NtdDsKPiA+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMv ZG9tY3RsLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvZG9tY3RsLmgKPiA+IGluZGV4IGRkZDNkZTQu LjhhMzAyOTkgMTAwNjQ0Cj4gPiAtLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvZG9tY3RsLmgKPiA+ ICsrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9kb21jdGwuaAo+ID4gQEAgLTExMzYsNiArMTEzNiw4 IEBAIHN0cnVjdCB4ZW5fZG9tY3RsX3Bzcl9jYXRfb3Agewo+ID4gICNkZWZpbmUgWEVOX0RPTUNU TF9QU1JfQ0FUX09QX1NFVF9MM19EQVRBICAgIDMKPiA+ICAjZGVmaW5lIFhFTl9ET01DVExfUFNS X0NBVF9PUF9HRVRfTDNfQ09ERSAgICA0Cj4gPiAgI2RlZmluZSBYRU5fRE9NQ1RMX1BTUl9DQVRf T1BfR0VUX0wzX0RBVEEgICAgNQo+ID4gKyNkZWZpbmUgWEVOX0RPTUNUTF9QU1JfQ0FUX09QX1NF VF9MMl9DQk0gICAgIDYKPiA+ICsjZGVmaW5lIFhFTl9ET01DVExfUFNSX0NBVF9PUF9HRVRfTDJf Q0JNICAgICA3Cj4gPiAgICAgIHVpbnQzMl90IGNtZDsgICAgICAgLyogSU46IFhFTl9ET01DVExf UFNSX0NBVF9PUF8qICovCj4gPiAgICAgIHVpbnQzMl90IHRhcmdldDsgICAgLyogSU4gKi8KPiA+ ICAgICAgdWludDY0X3QgZGF0YTsgICAgICAvKiBJTi9PVVQgKi8KPiA+IGRpZmYgLS1naXQgYS94 ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmgK PiA+IGluZGV4IDgxOTdjMTQuLjUwZmY2MWMgMTAwNjQ0Cj4gPiAtLS0gYS94ZW4vaW5jbHVkZS9w dWJsaWMvc3lzY3RsLmgKPiA+ICsrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaAo+ID4g QEAgLTczNCw2ICs3MzQsNyBAQCB0eXBlZGVmIHN0cnVjdCB4ZW5fc3lzY3RsX3BjaXRvcG9pbmZv IHhlbl9zeXNjdGxfcGNpdG9wb2luZm9fdDsKPiA+ICBERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4 ZW5fc3lzY3RsX3BjaXRvcG9pbmZvX3QpOwo+ID4gIAo+ID4gICNkZWZpbmUgWEVOX1NZU0NUTF9Q U1JfQ0FUX2dldF9sM19pbmZvICAgICAgICAgICAgICAgMAo+ID4gKyNkZWZpbmUgWEVOX1NZU0NU TF9QU1JfQ0FUX2dldF9sMl9pbmZvICAgICAgICAgICAgICAgMQo+ID4gIHN0cnVjdCB4ZW5fc3lz Y3RsX3Bzcl9jYXRfb3Agewo+ID4gICAgICB1aW50MzJfdCBjbWQ7ICAgICAgIC8qIElOOiBYRU5f U1lTQ1RMX1BTUl9DQVRfKiAqLwo+ID4gICAgICB1aW50MzJfdCB0YXJnZXQ7ICAgIC8qIElOICov Cj4gPiBAQCAtNzQ0LDYgKzc0NSwxMSBAQCBzdHJ1Y3QgeGVuX3N5c2N0bF9wc3JfY2F0X29wIHsK PiA+ICAjZGVmaW5lIFhFTl9TWVNDVExfUFNSX0NBVF9MM19DRFAgICAgICAgKDF1IDw8IDApCj4g PiAgICAgICAgICAgICAgdWludDMyX3QgZmxhZ3M7ICAgICAvKiBPVVQ6IENBVCBmbGFncyAqLwo+ ID4gICAgICAgICAgfSBsM19pbmZvOwo+ID4gKwo+IAo+IEV4dHJhIHNwYWNlPwo+IApUaGlzIGlz IGFuIGV4dHJhIGxpbmUgdG8gc2VwYXJhdGUgbDNfaW5mbyBhbmQgbDJfaW5mby4KCj4gPiArICAg ICAgICBzdHJ1Y3Qgewo+ID4gKyAgICAgICAgICAgIHVpbnQzMl90IGNibV9sZW47ICAgLyogT1VU OiBDQk0gbGVuZ3RoICovCj4gPiArICAgICAgICAgICAgdWludDMyX3QgY29zX21heDsgICAvKiBP VVQ6IE1heGltdW0gQ09TICovCj4gPiArICAgICAgICB9IGwyX2luZm87Cj4gPiAgICAgIH0gdTsK PiA+ICB9Owo+ID4gIHR5cGVkZWYgc3RydWN0IHhlbl9zeXNjdGxfcHNyX2NhdF9vcCB4ZW5fc3lz Y3RsX3Bzcl9jYXRfb3BfdDsKPiA+IC0tIAo+ID4gMi43LjQKPiA+IAo+ID4gCj4gPiBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4gWGVuLWRldmVsIG1h aWxpbmcgbGlzdAo+ID4gWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKPiA+IGh0dHBzOi8vbGlzdHMu eGVuLm9yZy94ZW4tZGV2ZWwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcK aHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=