From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 6/6] drm/i915: Expand subslice mask Date: Wed, 1 May 2019 19:29:18 +0100 Message-ID: References: <20190501153450.30494-1-stuart.summers@intel.com> <20190501153450.30494-7-stuart.summers@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 02AEF89218 for ; Wed, 1 May 2019 18:29:20 +0000 (UTC) In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Stuart Summers , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDAxLzA1LzIwMTkgMTk6MjIsIFR2cnRrbyBVcnN1bGluIHdyb3RlOgoKW3NuaXBdCgo+PiAr I2RlZmluZSBTU19TVFJfTUFYX1NJWkUgKEdFTl9NQVhfU1VCU0xJQ0VfU1RSSURFICogMikKPj4g Kwo+PiArc3RhdGljIHU4ICoKPj4gK3N1YnNsaWNlX3Blcl9zbGljZV9zdHIodTggKmJ1ZiwgY29u c3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUsIHU4IAo+PiBzbGljZSkKPj4gK3sKPj4gK8Kg wqDCoCBpbnQgaTsKPj4gK8KgwqDCoCB1OCBzc19vZmZzZXQgPSBzbGljZSAqIHNzZXUtPnNzX3N0 cmlkZTsKPj4gKwo+PiArwqDCoMKgIEdFTV9CVUdfT04oc2xpY2UgPj0gc3NldS0+bWF4X3NsaWNl cyk7Cj4+ICsKPj4gK8KgwqDCoCBtZW1zZXQoYnVmLCAwLCBTU19TVFJfTUFYX1NJWkUpOwo+IAo+ IEkgc3VnZ2VzdCBhIG1vcmUgaGFyZGVuZWQgYXBwcm9hY2ggb2YgY2FsbGVyIHBhc3NpbmcgaW4g dGhlIGJ1ZmZlciBzaXplLCAKPiBzaW5jZSBpdCBpcyB0aGVpciBidWZmZXIuCgpIYXZpbmcgc2Fp ZCB0aGlzLi4KCj4+ICsKPj4gK8KgwqDCoCAvKgo+PiArwqDCoMKgwqAgKiBQcmludCBzdWJzbGlj ZSBpbmZvcm1hdGlvbiBpbiByZXZlcnNlIG9yZGVyIHRvIG1hdGNoCj4+ICvCoMKgwqDCoCAqIHVz ZXJzcGFjZSBleHBlY3RhdGlvbnMuCj4+ICvCoMKgwqDCoCAqLwo+PiArwqDCoMKgIGZvciAoaSA9 IDA7IGkgPCBzc2V1LT5zc19zdHJpZGU7IGkrKykKPj4gK8KgwqDCoMKgwqDCoMKgIHNwcmludGYo JmJ1ZltpICogMl0sICIlMDJ4IiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3NldS0+c3Vi c2xpY2VfbWFza1tzc19vZmZzZXQgKyBzc2V1LT5zc19zdHJpZGUgLQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoaSArIDEpXSk7CgouLi5zcHJpbnRm IGFsc28gbmVlZHMgdG8gY2hlY2sgYWdhaW5zdCBvdmVyZmxvd2luZyB0aGUgYnVmZmVyLiAKKFJl bGF0aW9uc2hpcCBiZXR3ZWVuIGxvb3AgYm91bmRhcnkgKHNzX3N0cmlkZSkgYW5kIGJ1ZmZlciBz aXplIGlzIGEgYml0IApkZWNvdXBsZWQuKQoKQW5kIGJ1ZmZlciBzaG91bGQgcHJvYmFibHkgYmUg Y2hhciAqLgoKUmVnYXJkcywKClR2cnRrbwoKPj4gKwo+PiArwqDCoMKgIHJldHVybiBidWY7Cj4+ ICt9Cj4+ICsKPj4gwqAgc3RhdGljIHZvaWQgc3NldV9kdW1wKGNvbnN0IHN0cnVjdCBzc2V1X2Rl dl9pbmZvICpzc2V1LCBzdHJ1Y3QgCj4+IGRybV9wcmludGVyICpwKQo+PiDCoCB7Cj4+IMKgwqDC oMKgwqAgaW50IHM7Cj4+ICvCoMKgwqAgdTggYnVmW1NTX1NUUl9NQVhfU0laRV07Cj4+IMKgwqDC oMKgwqAgZHJtX3ByaW50ZihwLCAic2xpY2UgdG90YWw6ICV1LCBtYXNrPSUwNHhcbiIsCj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBod2VpZ2h0OChzc2V1LT5zbGljZV9tYXNrKSwgc3NldS0+ c2xpY2VfbWFzayk7Cj4+IMKgwqDCoMKgwqAgZHJtX3ByaW50ZihwLCAic3Vic2xpY2UgdG90YWw6 ICV1XG4iLCAKPj4gaW50ZWxfc3NldV9zdWJzbGljZV90b3RhbChzc2V1KSk7Cj4+IMKgwqDCoMKg wqAgZm9yIChzID0gMDsgcyA8IHNzZXUtPm1heF9zbGljZXM7IHMrKykgewo+PiAtwqDCoMKgwqDC oMKgwqAgZHJtX3ByaW50ZihwLCAic2xpY2UlZDogJXUgc3Vic2xpY2VzLCBtYXNrPSUwNHhcbiIs Cj4+ICvCoMKgwqDCoMKgwqDCoCBkcm1fcHJpbnRmKHAsICJzbGljZSVkOiAldSBzdWJzbGljZXMs IG1hc2s9JXNcbiIsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHMsIGludGVs X3NzZXVfc3Vic2xpY2VzX3Blcl9zbGljZShzc2V1LCBzKSwKPj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgc3NldS0+c3Vic2xpY2VfbWFza1tzXSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHN1YnNsaWNlX3Blcl9zbGljZV9zdHIoYnVmLCBzc2V1LCBzKSk7Cj4+IMKg wqDCoMKgwqAgfQo+PiDCoMKgwqDCoMKgIGRybV9wcmludGYocCwgIkVVIHRvdGFsOiAldVxuIiwg c3NldS0+ZXVfdG90YWwpOwo+PiDCoMKgwqDCoMKgIGRybV9wcmludGYocCwgIkVVIHBlciBzdWJz bGljZTogJXVcbiIsIHNzZXUtPmV1X3Blcl9zdWJzbGljZSk7Cj4+IEBAIC0xMTgsNiArMTQzLDcg QEAgdm9pZCBpbnRlbF9kZXZpY2VfaW5mb19kdW1wX3RvcG9sb2d5KGNvbnN0IHN0cnVjdCAKPj4g c3NldV9kZXZfaW5mbyAqc3NldSwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgc3RydWN0IGRybV9wcmludGVyICpwKQo+PiDCoCB7Cj4+IMKgwqDCoMKgwqAg aW50IHMsIHNzOwo+PiArwqDCoMKgIHU4IGJ1ZltTU19TVFJfTUFYX1NJWkVdOwo+PiDCoMKgwqDC oMKgIGlmIChzc2V1LT5tYXhfc2xpY2VzID09IDApIHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGRy bV9wcmludGYocCwgIlVuYXZhaWxhYmxlXG4iKTsKPj4gQEAgLTEyNSw5ICsxNTEsOSBAQCB2b2lk IGludGVsX2RldmljZV9pbmZvX2R1bXBfdG9wb2xvZ3koY29uc3Qgc3RydWN0IAo+PiBzc2V1X2Rl dl9pbmZvICpzc2V1LAo+PiDCoMKgwqDCoMKgIH0KPj4gwqDCoMKgwqDCoCBmb3IgKHMgPSAwOyBz IDwgc3NldS0+bWF4X3NsaWNlczsgcysrKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBkcm1fcHJpbnRm KHAsICJzbGljZSVkOiAldSBzdWJzbGljZShzKSAoMHglaGh4KTpcbiIsCj4+ICvCoMKgwqDCoMKg wqDCoCBkcm1fcHJpbnRmKHAsICJzbGljZSVkOiAldSBzdWJzbGljZShzKSAoMHglcyk6XG4iLAo+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzLCBpbnRlbF9zc2V1X3N1YnNsaWNl c19wZXJfc2xpY2Uoc3NldSwgcyksCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNz ZXUtPnN1YnNsaWNlX21hc2tbc10pOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBz dWJzbGljZV9wZXJfc2xpY2Vfc3RyKGJ1Ziwgc3NldSwgcykpOwo+PiDCoMKgwqDCoMKgwqDCoMKg wqAgZm9yIChzcyA9IDA7IHNzIDwgc3NldS0+bWF4X3N1YnNsaWNlczsgc3MrKykgewo+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MTYgZW5hYmxlZF9ldXMgPSBpbnRlbF9zc2V1X2dldF9l dXMoc3NldSwgcywgc3MpOwo+PiBAQCAtMTU2LDE1ICsxODIsMTAgQEAgc3RhdGljIHZvaWQgZ2Vu MTFfc3NldV9pbmZvX2luaXQoc3RydWN0IAo+PiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK Pj4gwqDCoMKgwqDCoCB1OCBldV9lbjsKPj4gwqDCoMKgwqDCoCBpbnQgczsKPj4gLcKgwqDCoCBp ZiAoSVNfRUxLSEFSVExBS0UoZGV2X3ByaXYpKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBzc2V1LT5t YXhfc2xpY2VzID0gMTsKPj4gLcKgwqDCoMKgwqDCoMKgIHNzZXUtPm1heF9zdWJzbGljZXMgPSA0 Owo+PiAtwqDCoMKgwqDCoMKgwqAgc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPSA4Owo+PiAt wqDCoMKgIH0gZWxzZSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBzc2V1LT5tYXhfc2xpY2VzID0gMTsK Pj4gLcKgwqDCoMKgwqDCoMKgIHNzZXUtPm1heF9zdWJzbGljZXMgPSA4Owo+PiAtwqDCoMKgwqDC oMKgwqAgc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPSA4Owo+PiAtwqDCoMKgIH0KPj4gK8Kg wqDCoCBpZiAoSVNfRUxLSEFSVExBS0UoZGV2X3ByaXYpKQo+PiArwqDCoMKgwqDCoMKgwqAgaW50 ZWxfc3NldV9zZXRfaW5mbyhzc2V1LCAxLCA0LCA4KTsKPj4gK8KgwqDCoCBlbHNlCj4+ICvCoMKg wqDCoMKgwqDCoCBpbnRlbF9zc2V1X3NldF9pbmZvKHNzZXUsIDEsIDgsIDgpOwo+PiDCoMKgwqDC oMKgIHNfZW4gPSBJOTE1X1JFQUQoR0VOMTFfR1RfU0xJQ0VfRU5BQkxFKSAmIEdFTjExX0dUX1Nf RU5BX01BU0s7Cj4+IMKgwqDCoMKgwqAgc3NfZW4gPSB+STkxNV9SRUFEKEdFTjExX0dUX1NVQlNM SUNFX0RJU0FCTEUpOwo+PiBAQCAtMTc3LDkgKzE5OCwxMSBAQCBzdGF0aWMgdm9pZCBnZW4xMV9z c2V1X2luZm9faW5pdChzdHJ1Y3QgCj4+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgc3M7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHNzZXUtPnNsaWNlX21hc2sgfD0gQklUKHMpOwo+PiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzc2V1LT5zdWJzbGljZV9tYXNrW3NdID0gKHNzX2VuID4+IHNzX2lkeCkgJiBzc19lbl9t YXNrOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzc2V1LT5zdWJzbGljZV9tYXNrW3MgKiBz c2V1LT5zc19zdHJpZGVdID0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoc3Nf ZW4gPj4gc3NfaWR4KSAmIHNzX2VuX21hc2s7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGZvciAoc3MgPSAwOyBzcyA8IHNzZXUtPm1heF9zdWJzbGljZXM7IHNzKyspIHsKPj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoc3NldS0+c3Vic2xpY2VfbWFza1tzXSAmIEJJ VChzcykpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHNzZXUtPnN1YnNs aWNlX21hc2tbcyAqIHNzZXUtPnNzX3N0cmlkZV0gJgo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgQklUKHNzKSkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGludGVsX3NzZXVfc2V0X2V1cyhzc2V1LCBzLCBzcywgZXVfZW4pOwo+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ IEBAIC0yMDEsMjMgKzIyNCwxMCBAQCBzdGF0aWMgdm9pZCBnZW4xMF9zc2V1X2luZm9faW5pdChz dHJ1Y3QgCj4+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiDCoMKgwqDCoMKgIGNvbnN0 IGludCBldV9tYXNrID0gMHhmZjsKPj4gwqDCoMKgwqDCoCB1MzIgc3Vic2xpY2VfbWFzaywgZXVf ZW47Cj4+ICvCoMKgwqAgaW50ZWxfc3NldV9zZXRfaW5mbyhzc2V1LCA2LCA0LCA4KTsKPj4gKwo+ PiDCoMKgwqDCoMKgIHNzZXUtPnNsaWNlX21hc2sgPSAoZnVzZTIgJiBHRU4xMF9GMl9TX0VOQV9N QVNLKSA+Pgo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdFTjEwX0YyX1Nf RU5BX1NISUZUOwo+PiAtwqDCoMKgIHNzZXUtPm1heF9zbGljZXMgPSA2Owo+PiAtwqDCoMKgIHNz ZXUtPm1heF9zdWJzbGljZXMgPSA0Owo+PiAtwqDCoMKgIHNzZXUtPm1heF9ldXNfcGVyX3N1YnNs aWNlID0gODsKPj4gLQo+PiAtwqDCoMKgIHN1YnNsaWNlX21hc2sgPSAoMSA8PCA0KSAtIDE7Cj4+ IC3CoMKgwqAgc3Vic2xpY2VfbWFzayAmPSB+KChmdXNlMiAmIEdFTjEwX0YyX1NTX0RJU19NQVNL KSA+Pgo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBHRU4xMF9GMl9TU19ESVNfU0hJ RlQpOwo+PiAtCj4+IC3CoMKgwqAgLyoKPj4gLcKgwqDCoMKgICogU2xpY2UwIGNhbiBoYXZlIHVw IHRvIDMgc3Vic2xpY2VzLCBidXQgdGhlcmUgYXJlIG9ubHkgMiBpbgo+PiAtwqDCoMKgwqAgKiBz bGljZTEvMi4KPj4gLcKgwqDCoMKgICovCj4+IC3CoMKgwqAgc3NldS0+c3Vic2xpY2VfbWFza1sw XSA9IHN1YnNsaWNlX21hc2s7Cj4+IC3CoMKgwqAgZm9yIChzID0gMTsgcyA8IHNzZXUtPm1heF9z bGljZXM7IHMrKykKPj4gLcKgwqDCoMKgwqDCoMKgIHNzZXUtPnN1YnNsaWNlX21hc2tbc10gPSBz dWJzbGljZV9tYXNrICYgMHgzOwo+PiDCoMKgwqDCoMKgIC8qIFNsaWNlMCAqLwo+PiDCoMKgwqDC oMKgIGV1X2VuID0gfkk5MTVfUkVBRChHRU44X0VVX0RJU0FCTEUwKTsKPj4gQEAgLTI0MiwxNCAr MjUyLDIyIEBAIHN0YXRpYyB2b2lkIGdlbjEwX3NzZXVfaW5mb19pbml0KHN0cnVjdCAKPj4gZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+IMKgwqDCoMKgwqAgZXVfZW4gPSB+STkxNV9SRUFE KEdFTjEwX0VVX0RJU0FCTEUzKTsKPj4gwqDCoMKgwqDCoCBpbnRlbF9zc2V1X3NldF9ldXMoc3Nl dSwgNSwgMSwgZXVfZW4gJiBldV9tYXNrKTsKPj4gLcKgwqDCoCAvKiBEbyBhIHNlY29uZCBwYXNz IHdoZXJlIHdlIG1hcmsgdGhlIHN1YnNsaWNlcyBkaXNhYmxlZCBpZiBhbGwgCj4+IHRoZWlyCj4+ IC3CoMKgwqDCoCAqIGV1cyBhcmUgb2ZmLgo+PiAtwqDCoMKgwqAgKi8KPj4gK8KgwqDCoCBzdWJz bGljZV9tYXNrID0gKDEgPDwgNCkgLSAxOwo+PiArwqDCoMKgIHN1YnNsaWNlX21hc2sgJj0gfigo ZnVzZTIgJiBHRU4xMF9GMl9TU19ESVNfTUFTSykgPj4KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgR0VOMTBfRjJfU1NfRElTX1NISUZUKTsKPj4gKwo+PiDCoMKgwqDCoMKgIGZvciAo cyA9IDA7IHMgPCBzc2V1LT5tYXhfc2xpY2VzOyBzKyspIHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKg IGZvciAoc3MgPSAwOyBzcyA8IHNzZXUtPm1heF9zdWJzbGljZXM7IHNzKyspIHsKPj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGludGVsX3NzZXVfZ2V0X2V1cyhzc2V1LCBzLCBzcykg PT0gMCkKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzc2V1LT5zdWJzbGljZV9t YXNrW3NdICY9IH5CSVQoc3MpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN1 YnNsaWNlX21hc2sgJj0gfkJJVChzcyk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICsKPj4g K8KgwqDCoMKgwqDCoMKgIC8qCj4+ICvCoMKgwqDCoMKgwqDCoMKgICogU2xpY2UwIGNhbiBoYXZl IHVwIHRvIDMgc3Vic2xpY2VzLCBidXQgdGhlcmUgYXJlIG9ubHkgMiBpbgo+PiArwqDCoMKgwqDC oMKgwqDCoCAqIHNsaWNlMS8yLgo+PiArwqDCoMKgwqDCoMKgwqDCoCAqLwo+PiArwqDCoMKgwqDC oMKgwqAgaW50ZWxfc3NldV9zZXRfc3Vic2xpY2VzKHNzZXUsIHMsIHMgPT0gMCA/IHN1YnNsaWNl X21hc2sgOgo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHN1YnNsaWNlX21hc2sgJiAweDMpOwo+PiDCoMKgwqDCoMKgIH0KPj4g wqDCoMKgwqDCoCBzc2V1LT5ldV90b3RhbCA9IGNvbXB1dGVfZXVfdG90YWwoc3NldSk7Cj4+IEBA IC0yNzUsMTMgKzI5MywxMiBAQCBzdGF0aWMgdm9pZCBjaGVycnl2aWV3X3NzZXVfaW5mb19pbml0 KHN0cnVjdCAKPj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+IMKgIHsKPj4gwqDCoMKg wqDCoCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSA9ICZSVU5USU1FX0lORk8oZGV2X3ByaXYp LT5zc2V1Owo+PiDCoMKgwqDCoMKgIHUzMiBmdXNlOwo+PiArwqDCoMKgIHU4IHN1YnNsaWNlX21h c2s7Cj4+IMKgwqDCoMKgwqAgZnVzZSA9IEk5MTVfUkVBRChDSFZfRlVTRV9HVCk7Cj4+IMKgwqDC oMKgwqAgc3NldS0+c2xpY2VfbWFzayA9IEJJVCgwKTsKPj4gLcKgwqDCoCBzc2V1LT5tYXhfc2xp Y2VzID0gMTsKPj4gLcKgwqDCoCBzc2V1LT5tYXhfc3Vic2xpY2VzID0gMjsKPj4gLcKgwqDCoCBz c2V1LT5tYXhfZXVzX3Blcl9zdWJzbGljZSA9IDg7Cj4+ICvCoMKgwqAgaW50ZWxfc3NldV9zZXRf aW5mbyhzc2V1LCAxLCAyLCA4KTsKPj4gwqDCoMKgwqDCoCBpZiAoIShmdXNlICYgQ0hWX0ZHVF9E SVNBQkxFX1NTMCkpIHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHU4IGRpc2FibGVkX21hc2sgPQo+ PiBAQCAtMjkwLDcgKzMwNyw3IEBAIHN0YXRpYyB2b2lkIGNoZXJyeXZpZXdfc3NldV9pbmZvX2lu aXQoc3RydWN0IAo+PiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgKCgoZnVzZSAmIENIVl9GR1RfRVVfRElTX1NTMF9SMV9NQVNLKSA+Pgo+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQ0hWX0ZHVF9FVV9ESVNfU1MwX1IxX1NI SUZUKSA8PCA0KTsKPj4gLcKgwqDCoMKgwqDCoMKgIHNzZXUtPnN1YnNsaWNlX21hc2tbMF0gfD0g QklUKDApOwo+PiArwqDCoMKgwqDCoMKgwqAgc3Vic2xpY2VfbWFzayB8PSBCSVQoMCk7Cj4+IMKg wqDCoMKgwqDCoMKgwqDCoCBpbnRlbF9zc2V1X3NldF9ldXMoc3NldSwgMCwgMCwgfmRpc2FibGVk X21hc2spOwo+PiDCoMKgwqDCoMKgIH0KPj4gQEAgLTMwMSwxMCArMzE4LDEyIEBAIHN0YXRpYyB2 b2lkIGNoZXJyeXZpZXdfc3NldV9pbmZvX2luaXQoc3RydWN0IAo+PiBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKCgoZnVzZSAmIENIVl9G R1RfRVVfRElTX1NTMV9SMV9NQVNLKSA+Pgo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgQ0hWX0ZHVF9FVV9ESVNfU1MxX1IxX1NISUZUKSA8PCA0KTsKPj4gLcKgwqDCoMKgwqDCoMKg IHNzZXUtPnN1YnNsaWNlX21hc2tbMF0gfD0gQklUKDEpOwo+PiArwqDCoMKgwqDCoMKgwqAgc3Vi c2xpY2VfbWFzayB8PSBCSVQoMSk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpbnRlbF9zc2V1X3Nl dF9ldXMoc3NldSwgMCwgMSwgfmRpc2FibGVkX21hc2spOwo+PiDCoMKgwqDCoMKgIH0KPj4gK8Kg wqDCoCBpbnRlbF9zc2V1X3NldF9zdWJzbGljZXMoc3NldSwgMCwgc3Vic2xpY2VfbWFzayk7Cj4+ ICsKPj4gwqDCoMKgwqDCoCBzc2V1LT5ldV90b3RhbCA9IGNvbXB1dGVfZXVfdG90YWwoc3NldSk7 Cj4+IMKgwqDCoMKgwqAgLyoKPj4gQEAgLTMxMiw3ICszMzEsOCBAQCBzdGF0aWMgdm9pZCBjaGVy cnl2aWV3X3NzZXVfaW5mb19pbml0KHN0cnVjdCAKPj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4+IMKgwqDCoMKgwqDCoCAqIGFjcm9zcyBzdWJzbGljZXMuCj4+IMKgwqDCoMKgwqAgKi8K Pj4gwqDCoMKgwqDCoCBzc2V1LT5ldV9wZXJfc3Vic2xpY2UgPSBpbnRlbF9zc2V1X3N1YnNsaWNl X3RvdGFsKHNzZXUpID8KPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzc2V1LT5l dV90b3RhbCAvIGludGVsX3NzZXVfc3Vic2xpY2VfdG90YWwoc3NldSkgOgo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNzZXUtPmV1X3RvdGFsIC8KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludGVsX3NzZXVfc3Vic2xpY2VfdG90YWwoc3NldSkg Ogo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDA7Cj4+IMKgwqDCoMKgwqAg LyoKPj4gwqDCoMKgwqDCoMKgICogQ0hWIHN1cHBvcnRzIHN1YnNsaWNlIHBvd2VyIGdhdGluZyBv biBkZXZpY2VzIHdpdGggbW9yZSB0aGFuCj4+IEBAIC0zMzYsOSArMzU2LDggQEAgc3RhdGljIHZv aWQgZ2VuOV9zc2V1X2luZm9faW5pdChzdHJ1Y3QgCj4+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+PiDCoMKgwqDCoMKgIHNzZXUtPnNsaWNlX21hc2sgPSAoZnVzZTIgJiBHRU44X0YyX1Nf RU5BX01BU0spID4+IAo+PiBHRU44X0YyX1NfRU5BX1NISUZUOwo+PiDCoMKgwqDCoMKgIC8qIEJY VCBoYXMgYSBzaW5nbGUgc2xpY2UgYW5kIGF0IG1vc3QgMyBzdWJzbGljZXMuICovCj4+IC3CoMKg wqAgc3NldS0+bWF4X3NsaWNlcyA9IElTX0dFTjlfTFAoZGV2X3ByaXYpID8gMSA6IDM7Cj4+IC3C oMKgwqAgc3NldS0+bWF4X3N1YnNsaWNlcyA9IElTX0dFTjlfTFAoZGV2X3ByaXYpID8gMyA6IDQ7 Cj4+IC3CoMKgwqAgc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPSA4Owo+PiArwqDCoMKgIGlu dGVsX3NzZXVfc2V0X2luZm8oc3NldSwgSVNfR0VOOV9MUChkZXZfcHJpdikgPyAxIDogMywKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBJU19HRU45X0xQKGRldl9wcml2KSA/IDMg OiA0LCA4KTsKPj4gwqDCoMKgwqDCoCAvKgo+PiDCoMKgwqDCoMKgwqAgKiBUaGUgc3Vic2xpY2Ug ZGlzYWJsZSBmaWVsZCBpcyBnbG9iYWwsIGkuZS4gaXQgYXBwbGllcwo+PiBAQCAtMzU3LDE0ICsz NzYsMTYgQEAgc3RhdGljIHZvaWQgZ2VuOV9zc2V1X2luZm9faW5pdChzdHJ1Y3QgCj4+IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBz a2lwIGRpc2FibGVkIHNsaWNlICovCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRp bnVlOwo+PiAtwqDCoMKgwqDCoMKgwqAgc3NldS0+c3Vic2xpY2VfbWFza1tzXSA9IHN1YnNsaWNl X21hc2s7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpbnRlbF9zc2V1X3NldF9zdWJzbGljZXMoc3NldSwg cywgc3Vic2xpY2VfbWFzayk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBldV9kaXNhYmxlID0gSTkx NV9SRUFEKEdFTjlfRVVfRElTQUJMRShzKSk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBmb3IgKHNz ID0gMDsgc3MgPCBzc2V1LT5tYXhfc3Vic2xpY2VzOyBzcysrKSB7Cj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGludCBldV9wZXJfc3M7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHU4IGV1X2Rpc2FibGVkX21hc2s7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHU4IHNzX2lk eCA9IHMgKiBzc2V1LT5zc19zdHJpZGUgKyBzcyAvIEJJVFNfUEVSX0JZVEU7Cj4+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGlmICghKHNzZXUtPnN1YnNsaWNlX21hc2tbc10gJiBCSVQoc3MpKSkK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCEoc3NldS0+c3Vic2xpY2VfbWFza1tzc19p ZHhdICYKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKHNzICUgQklU U19QRVJfQllURSkpKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIHNr aXAgZGlzYWJsZWQgc3Vic2xpY2UgKi8KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBjb250aW51ZTsKPj4gQEAgLTQzNyw5ICs0NTgsNyBAQCBzdGF0aWMgdm9pZCBicm9hZHdl bGxfc3NldV9pbmZvX2luaXQoc3RydWN0IAo+PiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK Pj4gwqDCoMKgwqDCoCBmdXNlMiA9IEk5MTVfUkVBRChHRU44X0ZVU0UyKTsKPj4gwqDCoMKgwqDC oCBzc2V1LT5zbGljZV9tYXNrID0gKGZ1c2UyICYgR0VOOF9GMl9TX0VOQV9NQVNLKSA+PiAKPj4g R0VOOF9GMl9TX0VOQV9TSElGVDsKPj4gLcKgwqDCoCBzc2V1LT5tYXhfc2xpY2VzID0gMzsKPj4g LcKgwqDCoCBzc2V1LT5tYXhfc3Vic2xpY2VzID0gMzsKPj4gLcKgwqDCoCBzc2V1LT5tYXhfZXVz X3Blcl9zdWJzbGljZSA9IDg7Cj4+ICvCoMKgwqAgaW50ZWxfc3NldV9zZXRfaW5mbyhzc2V1LCAz LCAzLCA4KTsKPj4gwqDCoMKgwqDCoCAvKgo+PiDCoMKgwqDCoMKgwqAgKiBUaGUgc3Vic2xpY2Ug ZGlzYWJsZSBmaWVsZCBpcyBnbG9iYWwsIGkuZS4gaXQgYXBwbGllcwo+PiBAQCAtNDY2LDE4ICs0 ODUsMjEgQEAgc3RhdGljIHZvaWQgYnJvYWR3ZWxsX3NzZXVfaW5mb19pbml0KHN0cnVjdCAKPj4g ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IC8qIHNraXAgZGlzYWJsZWQgc2xpY2UgKi8KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Y29udGludWU7Cj4+IC3CoMKgwqDCoMKgwqDCoCBzc2V1LT5zdWJzbGljZV9tYXNrW3NdID0gc3Vi c2xpY2VfbWFzazsKPj4gK8KgwqDCoMKgwqDCoMKgIGludGVsX3NzZXVfc2V0X3N1YnNsaWNlcyhz c2V1LCBzLCBzdWJzbGljZV9tYXNrKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGZvciAoc3MgPSAw OyBzcyA8IHNzZXUtPm1heF9zdWJzbGljZXM7IHNzKyspIHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgdTggZXVfZGlzYWJsZWRfbWFzazsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg dTggc3NfaWR4ID0gcyAqIHNzZXUtPnNzX3N0cmlkZSArIHNzIC8gQklUU19QRVJfQllURTsKPj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIG5fZGlzYWJsZWQ7Cj4+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGlmICghKHNzZXUtPnN1YnNsaWNlX21hc2tbc10gJiBCSVQoc3MpKSkKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCEoc3NldS0+c3Vic2xpY2VfbWFza1tzc19pZHhd ICYKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKHNzICUgQklUU19Q RVJfQllURSkpKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIHNraXAg ZGlzYWJsZWQgc3Vic2xpY2UgKi8KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBjb250aW51ZTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXVfZGlzYWJsZWRfbWFz ayA9Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXVfZGlzYWJsZVtzXSA+PiAo c3MgKiBzc2V1LT5tYXhfZXVzX3Blcl9zdWJzbGljZSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZXVfZGlzYWJsZVtzXSA+Pgo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgKHNzICogc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UpOwo+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnRlbF9zc2V1X3NldF9ldXMoc3NldSwgcywgc3MsIH5l dV9kaXNhYmxlZF9tYXNrKTsKPj4gQEAgLTUxNyw2ICs1MzksNyBAQCBzdGF0aWMgdm9pZCBoYXN3 ZWxsX3NzZXVfaW5mb19pbml0KHN0cnVjdCAKPj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4+IMKgwqDCoMKgwqAgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUgPSAmUlVOVElNRV9JTkZP KGRldl9wcml2KS0+c3NldTsKPj4gwqDCoMKgwqDCoCB1MzIgZnVzZTE7Cj4+IMKgwqDCoMKgwqAg aW50IHMsIHNzOwo+PiArwqDCoMKgIHUzMiBzdWJzbGljZV9tYXNrOwo+PiDCoMKgwqDCoMKgIC8q Cj4+IMKgwqDCoMKgwqDCoCAqIFRoZXJlIGlzbid0IGEgcmVnaXN0ZXIgdG8gdGVsbCB1cyBob3cg bWFueSBzbGljZXMvc3Vic2xpY2VzLiBXZQo+PiBAQCAtNTI4LDIyICs1NTEsMTggQEAgc3RhdGlj IHZvaWQgaGFzd2VsbF9zc2V1X2luZm9faW5pdChzdHJ1Y3QgCj4+IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLyogZmFsbCB0aHJvdWdoICovCj4+IMKg wqDCoMKgwqAgY2FzZSAxOgo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgc3NldS0+c2xpY2VfbWFzayA9 IEJJVCgwKTsKPj4gLcKgwqDCoMKgwqDCoMKgIHNzZXUtPnN1YnNsaWNlX21hc2tbMF0gPSBCSVQo MCk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBzdWJzbGljZV9tYXNrID0gQklUKDApOwo+PiDCoMKgwqDC oMKgwqDCoMKgwqAgYnJlYWs7Cj4+IMKgwqDCoMKgwqAgY2FzZSAyOgo+PiDCoMKgwqDCoMKgwqDC oMKgwqAgc3NldS0+c2xpY2VfbWFzayA9IEJJVCgwKTsKPj4gLcKgwqDCoMKgwqDCoMKgIHNzZXUt PnN1YnNsaWNlX21hc2tbMF0gPSBCSVQoMCkgfCBCSVQoMSk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBz dWJzbGljZV9tYXNrID0gQklUKDApIHwgQklUKDEpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgYnJl YWs7Cj4+IMKgwqDCoMKgwqAgY2FzZSAzOgo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgc3NldS0+c2xp Y2VfbWFzayA9IEJJVCgwKSB8IEJJVCgxKTsKPj4gLcKgwqDCoMKgwqDCoMKgIHNzZXUtPnN1YnNs aWNlX21hc2tbMF0gPSBCSVQoMCkgfCBCSVQoMSk7Cj4+IC3CoMKgwqDCoMKgwqDCoCBzc2V1LT5z dWJzbGljZV9tYXNrWzFdID0gQklUKDApIHwgQklUKDEpOwo+PiArwqDCoMKgwqDCoMKgwqAgc3Vi c2xpY2VfbWFzayA9IEJJVCgwKSB8IEJJVCgxKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFr Owo+PiDCoMKgwqDCoMKgIH0KPj4gLcKgwqDCoCBzc2V1LT5tYXhfc2xpY2VzID0gaHdlaWdodDgo c3NldS0+c2xpY2VfbWFzayk7Cj4+IC3CoMKgwqAgc3NldS0+bWF4X3N1YnNsaWNlcyA9IGh3ZWln aHQ4KHNzZXUtPnN1YnNsaWNlX21hc2tbMF0pOwo+PiAtCj4+IMKgwqDCoMKgwqAgZnVzZTEgPSBJ OTE1X1JFQUQoSFNXX1BBVlBfRlVTRTEpOwo+PiDCoMKgwqDCoMKgIHN3aXRjaCAoKGZ1c2UxICYg SFNXX0YxX0VVX0RJU19NQVNLKSA+PiBIU1dfRjFfRVVfRElTX1NISUZUKSB7Cj4+IMKgwqDCoMKg wqAgZGVmYXVsdDoKPj4gQEAgLTU2MCw5ICs1NzksMTQgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9z c2V1X2luZm9faW5pdChzdHJ1Y3QgCj4+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiDC oMKgwqDCoMKgwqDCoMKgwqAgc3NldS0+ZXVfcGVyX3N1YnNsaWNlID0gNjsKPj4gwqDCoMKgwqDC oMKgwqDCoMKgIGJyZWFrOwo+PiDCoMKgwqDCoMKgIH0KPj4gLcKgwqDCoCBzc2V1LT5tYXhfZXVz X3Blcl9zdWJzbGljZSA9IHNzZXUtPmV1X3Blcl9zdWJzbGljZTsKPj4gKwo+PiArwqDCoMKgIGlu dGVsX3NzZXVfc2V0X2luZm8oc3NldSwgaHdlaWdodDgoc3NldS0+c2xpY2VfbWFzayksCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaHdlaWdodDgoc3Vic2xpY2VfbWFzayksCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3NldS0+ZXVfcGVyX3N1YnNsaWNlKTsK Pj4gwqDCoMKgwqDCoCBmb3IgKHMgPSAwOyBzIDwgc3NldS0+bWF4X3NsaWNlczsgcysrKSB7Cj4+ ICvCoMKgwqDCoMKgwqDCoCBpbnRlbF9zc2V1X3NldF9zdWJzbGljZXMoc3NldSwgcywgc3Vic2xp Y2VfbWFzayk7Cj4+ICsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGZvciAoc3MgPSAwOyBzcyA8IHNz ZXUtPm1heF9zdWJzbGljZXM7IHNzKyspIHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg aW50ZWxfc3NldV9zZXRfZXVzKHNzZXUsIHMsIHNzLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKDFVTCA8PCBzc2V1LT5ldV9wZXJfc3Vic2xpY2Up IC0gMSk7Cj4+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==