From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH v3 9/9] drm/i915: Address broxton phy registers based on phy and channel number Date: Mon, 10 Oct 2016 14:53:41 +0300 Message-ID: <1476100421.10695.5.camel@intel.com> References: <1475825283-8876-1-git-send-email-ander.conselvan.de.oliveira@intel.com> Reply-To: imre.deak@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 00E806E4EB for ; Mon, 10 Oct 2016 11:53:44 +0000 (UTC) In-Reply-To: <1475825283-8876-1-git-send-email-ander.conselvan.de.oliveira@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ander Conselvan de Oliveira , intel-gfx@lists.freedesktop.org Cc: m.deepak@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gcGUsIDIwMTYtMTAtMDcgYXQgMTA6MjggKzAzMDAsIEFuZGVyIENvbnNlbHZhbiBkZSBPbGl2 ZWlyYSB3cm90ZToKPiBUaGUgcG9ydCByZWdpc3RlcnMgcmVsYXRlZCB0byB0aGUgcGh5cyBpbiBi cm94dG9uIG1hcCB0byBkaWZmZXJlbnQKPiBjaGFubmVscyBhbmQgc3BlY2lmaWMgcGh5cy4gTWFr ZSB0aGF0IG1hcHBpbmcgZXhwbGljaXQuCj4gCj4gdjI6IFBhc3MgZW51bSBkcGlvX3BoeSB0byBt YWNyb3MgaW5zdGVhZCBvZiBtbWlvIGJhc2UuIChJbXJlKQo+IAo+IHYzOiBGaXggdHlwbyBpbiBt YWNyb3MuIChJbXJlKQo+IAo+IFNpZ25lZC1vZmYtYnk6IEFuZGVyIENvbnNlbHZhbiBkZSBPbGl2 ZWlyYSAKPiAtLS0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmjCoMKgwqDCoMKg wqDCoHzCoMKgwqAyICsKPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmjCoMKgwqDC oMKgwqDCoHwgMTQxICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KPiDCoGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwaW9fcGh5LmMgfMKgwqA4MCArKysrKysrKysrKysrKyst LS0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5jIHzCoMKgODQgKysr KysrKysrKystLS0tLS0tLS0KPiDCoDQgZmlsZXMgY2hhbmdlZCwgMTg1IGluc2VydGlvbnMoKyks IDEyMiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCA3N2Yx Mzc0Li5jM2ZhMjlhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTM3MzUsNiAr MzczNSw4IEBAIHUzMiB2bHZfZmxpc2RzaV9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgdTMyIHJlZyk7Cj4gwqB2b2lkIHZsdl9mbGlzZHNpX3dyaXRlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIHJlZywgdTMyIHZhbCk7Cj4gwqAKPiDCoC8qIGlu dGVsX2RwaW9fcGh5LmMgKi8KPiArdm9pZCBieHRfcG9ydF90b19waHlfY2hhbm5lbChlbnVtIHBv cnQgcG9ydCwKPiArCQkJwqDCoMKgwqDCoHUzMiAqcGh5LCBlbnVtIGRwaW9fY2hhbm5lbCAqY2gp OwoKVHlwZSBvZiBwaHkgZG9lc24ndCBtYXRjaCB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiwgc2hv dWxkIGJlIGVudW0KZHBpb19waHkuCgo+IMKgdm9pZCBieHRfZGRpX3BoeV9zZXRfc2lnbmFsX2xl dmVsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiDCoAkJCQnCoMKgZW51bSBw b3J0IHBvcnQsIHUzMiBtYXJnaW4sIHUzMiBzY2FsZSwKPiDCoAkJCQnCoMKgdTMyIGVuYWJsZSwg dTMyIGRlZW1waGFzaXMpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IGluZGV4IGQzODAyYzYu LjhmNDYxMmMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBAQCAtMTE4Nyw3ICsxMTg3 LDE5IEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMgewo+IMKgI2RlZmluZcKgwqDCoERQSU9f VVBBUl9TSElGVAkJMzAKPiDCoAo+IMKgLyogQlhUIFBIWSByZWdpc3RlcnMgKi8KPiAtI2RlZmlu ZSBfQlhUX1BIWShwaHksIGEsIGIpCQlfTU1JT19QSVBFKChwaHkpLCAoYSksIChiKSkKPiArI2Rl ZmluZSBfQlhUX1BIWTBfQkFTRQkJCTB4NkMwMDAKPiArI2RlZmluZSBfQlhUX1BIWTFfQkFTRQkJ CTB4MTYyMDAwCj4gKyNkZWZpbmUgQlhUX1BIWV9CQVNFKHBoeSkJCV9QSVBFKChwaHkpLCBfQlhU X1BIWTBfQkFTRSwgXAo+ICsJCQkJCQnCoMKgwqDCoMKgX0JYVF9QSFkxX0JBU0UpCj4gKwo+ICsj ZGVmaW5lIF9CWFRfUEhZKHBoeSwgcmVnKQkJCQkJCVwKPiArCV9NTUlPKEJYVF9QSFlfQkFTRShw aHkpIC0gX0JYVF9QSFkwX0JBU0UgKyAocmVnKSkKPiArCj4gKyNkZWZpbmUgX0JYVF9QSFlfQ0go cGh5LCBjaCwgcmVnX2NoMCwgcmVnX2NoMSkJCVwKPiArCShCWFRfUEhZX0JBU0UocGh5KSArIF9Q SVBFKChjaCksIChyZWdfY2gwKSAtIF9CWFRfUEhZMF9CQVNFLAlcCj4gKwkJCQkJwqAocmVnX2No MSkgLSBfQlhUX1BIWTBfQkFTRSkpCj4gKyNkZWZpbmUgX01NSU9fQlhUX1BIWV9DSChwaHksIGNo LCByZWdfY2gwLCByZWdfY2gxKQkJXAo+ICsJX01NSU8oX0JYVF9QSFlfQ0gocGh5LCBjaCwgcmVn X2NoMCwgcmVnX2NoMSkpCj4gwqAKPiDCoCNkZWZpbmUgQlhUX1BfQ1JfR1RfRElTUF9QV1JPTgkJ X01NSU8oMHgxMzgwOTApCj4gwqAjZGVmaW5lwqDCoMKgR1RfRElTUExBWV9QT1dFUl9PTihwaHkp CSgxIDw8IChwaHkpKQo+IEBAIC0xMjA0LDggKzEyMTYsOCBAQCBlbnVtIHNrbF9kaXNwX3Bvd2Vy X3dlbGxzIHsKPiDCoCNkZWZpbmUgX1BIWV9DVExfRkFNSUxZX0VEUAkJMHg2NEM4MAo+IMKgI2Rl ZmluZSBfUEhZX0NUTF9GQU1JTFlfRERJCQkweDY0QzkwCj4gwqAjZGVmaW5lwqDCoMKgQ09NTU9O X1JFU0VUX0RJUwkJKDEgPDwgMzEpCj4gLSNkZWZpbmUgQlhUX1BIWV9DVExfRkFNSUxZKHBoeSkJ CV9CWFRfUEhZKChwaHkpLCBfUEhZX0NUTF9GQU1JTFlfRERJLCBcCj4gLQkJCQkJCQlfUEhZX0NU TF9GQU1JTFlfRURQKQo+ICsjZGVmaW5lIEJYVF9QSFlfQ1RMX0ZBTUlMWShwaHkpCQlfTU1JT19Q SVBFKChwaHkpLCBfUEhZX0NUTF9GQU1JTFlfRERJLCBcCj4gKwkJCQkJCQnCoMKgX1BIWV9DVExf RkFNSUxZX0VEUCkKPiDCoAo+IMKgLyogQlhUIFBIWSBQTEwgcmVnaXN0ZXJzICovCj4gwqAjZGVm aW5lIF9QT1JUX1BMTF9BCQkJMHg0NjA3NAo+IEBAIC0xMjI1LDE4ICsxMjM3LDE4IEBAIGVudW0g c2tsX2Rpc3BfcG93ZXJfd2VsbHMgewo+IMKgI2RlZmluZcKgwqDCoFBPUlRfUExMX1AyX1NISUZU CQk4Cj4gwqAjZGVmaW5lwqDCoMKgUE9SVF9QTExfUDJfTUFTSwkJKDB4MWYgPDwgUE9SVF9QTExf UDJfU0hJRlQpCj4gwqAjZGVmaW5lwqDCoMKgUE9SVF9QTExfUDIoeCkJCSgoeCnCoMKgPDwgUE9S VF9QTExfUDJfU0hJRlQpCj4gLSNkZWZpbmUgQlhUX1BPUlRfUExMX0VCQl8wKHBvcnQpCV9NTUlP X1BPUlQzKHBvcnQsIF9QT1JUX1BMTF9FQkJfMF9BLCBcCj4gLQkJCQkJCV9QT1JUX1BMTF9FQkJf MF9CLAlcCj4gLQkJCQkJCV9QT1JUX1BMTF9FQkJfMF9DKQo+ICsjZGVmaW5lIEJYVF9QT1JUX1BM TF9FQkJfMChwaHksIGNoKQlfTU1JT19CWFRfUEhZX0NIKHBoeSwgY2gsIFwKPiArCQkJCQkJCcKg X1BPUlRfUExMX0VCQl8wX0IsIFwKPiArCQkJCQkJCcKgX1BPUlRfUExMX0VCQl8wX0MpCj4gwqAK PiDCoCNkZWZpbmUgX1BPUlRfUExMX0VCQl80X0EJCTB4MTYyMDM4Cj4gwqAjZGVmaW5lIF9QT1JU X1BMTF9FQkJfNF9CCQkweDZDMDM4Cj4gwqAjZGVmaW5lIF9QT1JUX1BMTF9FQkJfNF9DCQkweDZD MzQ0Cj4gwqAjZGVmaW5lwqDCoMKgUE9SVF9QTExfMTBCSVRfQ0xLX0VOQUJMRQkoMSA8PCAxMykK PiDCoCNkZWZpbmXCoMKgwqBQT1JUX1BMTF9SRUNBTElCUkFURQkJKDEgPDwgMTQpCj4gLSNkZWZp bmUgQlhUX1BPUlRfUExMX0VCQl80KHBvcnQpCV9NTUlPX1BPUlQzKHBvcnQsIF9QT1JUX1BMTF9F QkJfNF9BLCBcCj4gLQkJCQkJCV9QT1JUX1BMTF9FQkJfNF9CLAlcCj4gLQkJCQkJCV9QT1JUX1BM TF9FQkJfNF9DKQo+ICsjZGVmaW5lIEJYVF9QT1JUX1BMTF9FQkJfNChwaHksIGNoKQlfTU1JT19C WFRfUEhZX0NIKHBoeSwgY2gsIFwKPiArCQkJCQkJCcKgX1BPUlRfUExMX0VCQl80X0IsIFwKPiAr CQkJCQkJCcKgX1BPUlRfUExMX0VCQl80X0MpCj4gwqAKPiDCoCNkZWZpbmUgX1BPUlRfUExMXzBf QQkJCTB4MTYyMTAwCj4gwqAjZGVmaW5lIF9QT1JUX1BMTF8wX0IJCQkweDZDMTAwCj4gQEAgLTEy NjcsNjIgKzEyNzksNTYgQEAgZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7Cj4gwqAjZGVmaW5l wqDCoFBPUlRfUExMX0RDT19BTVBfREVGQVVMVAkxNQo+IMKgI2RlZmluZcKgwqBQT1JUX1BMTF9E Q09fQU1QX01BU0sJCTB4M2MwMAo+IMKgI2RlZmluZcKgwqBQT1JUX1BMTF9EQ09fQU1QKHgpCQko KHgpPDwxMCkKPiAtI2RlZmluZSBfUE9SVF9QTExfQkFTRShwb3J0KQkJX1BPUlQzKHBvcnQsIF9Q T1JUX1BMTF8wX0EsCVwKPiAtCQkJCQkJX1BPUlRfUExMXzBfQiwJCVwKPiAtCQkJCQkJX1BPUlRf UExMXzBfQykKPiAtI2RlZmluZSBCWFRfUE9SVF9QTEwocG9ydCwgaWR4KQkJX01NSU8oX1BPUlRf UExMX0JBU0UocG9ydCkgKyAoaWR4KSAqIDQpCj4gKyNkZWZpbmUgX1BPUlRfUExMX0JBU0UocGh5 LCBjaCkJCV9CWFRfUEhZX0NIKHBoeSwgY2gsIFwKPiArCQkJCQkJwqDCoMKgwqBfUE9SVF9QTExf MF9CLCBcCj4gKwkJCQkJCcKgwqDCoMKgX1BPUlRfUExMXzBfQykKPiArI2RlZmluZSBCWFRfUE9S VF9QTEwocGh5LCBjaCwgaWR4KQlfTU1JTyhfUE9SVF9QTExfQkFTRShwaHksIGNoKSArIFwKPiAr CQkJCQnCoMKgwqDCoMKgwqAoaWR4KSAqIDQpCj4gwqAKPiDCoC8qIEJYVCBQSFkgY29tbW9uIGxh bmUgcmVnaXN0ZXJzICovCj4gwqAjZGVmaW5lIF9QT1JUX0NMMUNNX0RXMF9BCQkweDE2MjAwMAo+ IMKgI2RlZmluZSBfUE9SVF9DTDFDTV9EVzBfQkMJCTB4NkMwMDAKPiDCoCNkZWZpbmXCoMKgwqBQ SFlfUE9XRVJfR09PRAkJKDEgPDwgMTYpCj4gwqAjZGVmaW5lwqDCoMKgUEhZX1JFU0VSVkVECQkJ KDEgPDwgNykKPiAtI2RlZmluZSBCWFRfUE9SVF9DTDFDTV9EVzAocGh5KQkJX0JYVF9QSFkoKHBo eSksIF9QT1JUX0NMMUNNX0RXMF9CQywgXAo+IC0JCQkJCQkJX1BPUlRfQ0wxQ01fRFcwX0EpCj4g KyNkZWZpbmUgQlhUX1BPUlRfQ0wxQ01fRFcwKHBoeSkJCV9CWFRfUEhZKChwaHkpLCBfUE9SVF9D TDFDTV9EVzBfQkMpCj4gwqAKPiDCoCNkZWZpbmUgX1BPUlRfQ0wxQ01fRFc5X0EJCTB4MTYyMDI0 Cj4gwqAjZGVmaW5lIF9QT1JUX0NMMUNNX0RXOV9CQwkJMHg2QzAyNAo+IMKgI2RlZmluZcKgwqDC oElSRUYwUkNfT0ZGU0VUX1NISUZUCQk4Cj4gwqAjZGVmaW5lwqDCoMKgSVJFRjBSQ19PRkZTRVRf TUFTSwkJKDB4RkYgPDwgSVJFRjBSQ19PRkZTRVRfU0hJRlQpCj4gLSNkZWZpbmUgQlhUX1BPUlRf Q0wxQ01fRFc5KHBoeSkJCV9CWFRfUEhZKChwaHkpLCBfUE9SVF9DTDFDTV9EVzlfQkMsIFwKPiAt CQkJCQkJCV9QT1JUX0NMMUNNX0RXOV9BKQo+ICsjZGVmaW5lIEJYVF9QT1JUX0NMMUNNX0RXOShw aHkpCQlfQlhUX1BIWSgocGh5KSwgX1BPUlRfQ0wxQ01fRFc5X0JDKQo+IMKgCj4gwqAjZGVmaW5l IF9QT1JUX0NMMUNNX0RXMTBfQQkJMHgxNjIwMjgKPiDCoCNkZWZpbmUgX1BPUlRfQ0wxQ01fRFcx MF9CQwkJMHg2QzAyOAo+IMKgI2RlZmluZcKgwqDCoElSRUYxUkNfT0ZGU0VUX1NISUZUCQk4Cj4g wqAjZGVmaW5lwqDCoMKgSVJFRjFSQ19PRkZTRVRfTUFTSwkJKDB4RkYgPDwgSVJFRjFSQ19PRkZT RVRfU0hJRlQpCj4gLSNkZWZpbmUgQlhUX1BPUlRfQ0wxQ01fRFcxMChwaHkpCV9CWFRfUEhZKChw aHkpLCBfUE9SVF9DTDFDTV9EVzEwX0JDLCBcCj4gLQkJCQkJCQlfUE9SVF9DTDFDTV9EVzEwX0Ep Cj4gKyNkZWZpbmUgQlhUX1BPUlRfQ0wxQ01fRFcxMChwaHkpCV9CWFRfUEhZKChwaHkpLCBfUE9S VF9DTDFDTV9EVzEwX0JDKQo+IMKgCj4gwqAjZGVmaW5lIF9QT1JUX0NMMUNNX0RXMjhfQQkJMHgx NjIwNzAKPiDCoCNkZWZpbmUgX1BPUlRfQ0wxQ01fRFcyOF9CQwkJMHg2QzA3MAo+IMKgI2RlZmlu ZcKgwqDCoE9DTDFfUE9XRVJfRE9XTl9FTgkJKDEgPDwgMjMpCj4gwqAjZGVmaW5lwqDCoMKgRFcy OF9PTERPX0RZTl9QV1JfRE9XTl9FTgkoMSA8PCAyMikKPiDCoCNkZWZpbmXCoMKgwqBTVVNfQ0xL X0NPTkZJRwkJMHgzCj4gLSNkZWZpbmUgQlhUX1BPUlRfQ0wxQ01fRFcyOChwaHkpCV9CWFRfUEhZ KChwaHkpLCBfUE9SVF9DTDFDTV9EVzI4X0JDLCBcCj4gLQkJCQkJCQlfUE9SVF9DTDFDTV9EVzI4 X0EpCj4gKyNkZWZpbmUgQlhUX1BPUlRfQ0wxQ01fRFcyOChwaHkpCV9CWFRfUEhZKChwaHkpLCBf UE9SVF9DTDFDTV9EVzI4X0JDKQo+IMKgCj4gwqAjZGVmaW5lIF9QT1JUX0NMMUNNX0RXMzBfQQkJ MHgxNjIwNzgKPiDCoCNkZWZpbmUgX1BPUlRfQ0wxQ01fRFczMF9CQwkJMHg2QzA3OAo+IMKgI2Rl ZmluZcKgwqDCoE9DTDJfTERPRlVTRV9QV1JfRElTCQkoMSA8PCA2KQo+IC0jZGVmaW5lIEJYVF9Q T1JUX0NMMUNNX0RXMzAocGh5KQlfQlhUX1BIWSgocGh5KSwgX1BPUlRfQ0wxQ01fRFczMF9CQywg XAo+IC0JCQkJCQkJX1BPUlRfQ0wxQ01fRFczMF9BKQo+ICsjZGVmaW5lIEJYVF9QT1JUX0NMMUNN X0RXMzAocGh5KQlfQlhUX1BIWSgocGh5KSwgX1BPUlRfQ0wxQ01fRFczMF9CQykKPiDCoAo+IMKg LyogVGhlIHNwZWMgZGVmaW5lcyB0aGlzIG9ubHkgZm9yIEJYVCBQSFkwLCBidXQgbGV0cyBhc3N1 bWUgdGhhdCB0aGlzCj4gwqAgKiB3b3VsZCBleGlzdCBmb3IgUEhZMSB0b28gaWYgaXQgaGFkIGEg c2Vjb25kIGNoYW5uZWwuCj4gwqAgKi8KPiDCoCNkZWZpbmUgX1BPUlRfQ0wyQ01fRFc2X0EJCTB4 MTYyMzU4Cj4gwqAjZGVmaW5lIF9QT1JUX0NMMkNNX0RXNl9CQwkJMHg2QzM1OAo+IC0jZGVmaW5l IEJYVF9QT1JUX0NMMkNNX0RXNihwaHkpCQlfQlhUX1BIWSgocGh5KSwgX1BPUlRfQ0wyQ01fRFc2 X0JDLCBcCj4gLQkJCQkJCQlfUE9SVF9DTDJDTV9EVzZfQSkKPiArI2RlZmluZSBCWFRfUE9SVF9D TDJDTV9EVzYocGh5KQkJX0JYVF9QSFkoKHBoeSksIF9QT1JUX0NMMkNNX0RXNl9CQykKPiDCoCNk ZWZpbmXCoMKgwqBEVzZfT0xET19EWU5fUFdSX0RPV05fRU4JKDEgPDwgMjgpCj4gwqAKPiDCoC8q IEJYVCBQSFkgUmVmIHJlZ2lzdGVycyAqLwo+IMKgI2RlZmluZSBfUE9SVF9SRUZfRFczX0EJCQkw eDE2MjE4Qwo+IMKgI2RlZmluZSBfUE9SVF9SRUZfRFczX0JDCQkweDZDMThDCj4gwqAjZGVmaW5l wqDCoMKgR1JDX0RPTkUJCQkoMSA8PCAyMikKPiAtI2RlZmluZSBCWFRfUE9SVF9SRUZfRFczKHBo eSkJCV9CWFRfUEhZKChwaHkpLCBfUE9SVF9SRUZfRFczX0JDLCBcCj4gLQkJCQkJCQlfUE9SVF9S RUZfRFczX0EpCj4gKyNkZWZpbmUgQlhUX1BPUlRfUkVGX0RXMyhwaHkpCQlfQlhUX1BIWSgocGh5 KSwgX1BPUlRfUkVGX0RXM19CQykKPiDCoAo+IMKgI2RlZmluZSBfUE9SVF9SRUZfRFc2X0EJCQkw eDE2MjE5OAo+IMKgI2RlZmluZSBfUE9SVF9SRUZfRFc2X0JDCQkweDZDMTk4Cj4gQEAgLTEzMzMs MTUgKzEzMzksMTMgQEAgZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7Cj4gwqAjZGVmaW5lwqDC oMKgR1JDX0NPREVfU0xPV19TSElGVAkJOAo+IMKgI2RlZmluZcKgwqDCoEdSQ19DT0RFX1NMT1df TUFTSwkJKDB4RkYgPDwgR1JDX0NPREVfU0xPV19TSElGVCkKPiDCoCNkZWZpbmXCoMKgwqBHUkNf Q09ERV9OT01fTUFTSwkJMHhGRgo+IC0jZGVmaW5lIEJYVF9QT1JUX1JFRl9EVzYocGh5KQkJX0JY VF9QSFkoKHBoeSksIF9QT1JUX1JFRl9EVzZfQkMsCVwKPiAtCQkJCQkJwqDCoMKgwqDCoMKgX1BP UlRfUkVGX0RXNl9BKQo+ICsjZGVmaW5lIEJYVF9QT1JUX1JFRl9EVzYocGh5KQkJX0JYVF9QSFko KHBoeSksIF9QT1JUX1JFRl9EVzZfQkMpCj4gwqAKPiDCoCNkZWZpbmUgX1BPUlRfUkVGX0RXOF9B CQkJMHgxNjIxQTAKPiDCoCNkZWZpbmUgX1BPUlRfUkVGX0RXOF9CQwkJMHg2QzFBMAo+IMKgI2Rl ZmluZcKgwqDCoEdSQ19ESVMJCQkoMSA8PCAxNSkKPiDCoCNkZWZpbmXCoMKgwqBHUkNfUkRZX09W UkQJCQkoMSA8PCAxKQo+IC0jZGVmaW5lIEJYVF9QT1JUX1JFRl9EVzgocGh5KQkJX0JYVF9QSFko KHBoeSksIF9QT1JUX1JFRl9EVzhfQkMsCVwKPiAtCQkJCQkJwqDCoMKgwqDCoMKgX1BPUlRfUkVG X0RXOF9BKQo+ICsjZGVmaW5lIEJYVF9QT1JUX1JFRl9EVzgocGh5KQkJX0JYVF9QSFkoKHBoeSks IF9QT1JUX1JFRl9EVzhfQkMpCj4gwqAKPiDCoC8qIEJYVCBQSFkgUENTIHJlZ2lzdGVycyAqLwo+ IMKgI2RlZmluZSBfUE9SVF9QQ1NfRFcxMF9MTjAxX0EJCTB4MTYyNDI4Cj4gQEAgLTEzNTAsMTIg KzEzNTQsMTMgQEAgZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7Cj4gwqAjZGVmaW5lIF9QT1JU X1BDU19EVzEwX0dSUF9BCQkweDE2MkMyOAo+IMKgI2RlZmluZSBfUE9SVF9QQ1NfRFcxMF9HUlBf QgkJMHg2Q0MyOAo+IMKgI2RlZmluZSBfUE9SVF9QQ1NfRFcxMF9HUlBfQwkJMHg2Q0UyOAo+IC0j ZGVmaW5lIEJYVF9QT1JUX1BDU19EVzEwX0xOMDEocG9ydCkJX01NSU9fUE9SVDMocG9ydCwgX1BP UlRfUENTX0RXMTBfTE4wMV9BLCBcCj4gLQkJCQkJCcKgwqDCoMKgwqBfUE9SVF9QQ1NfRFcxMF9M TjAxX0IsIFwKPiAtCQkJCQkJwqDCoMKgwqDCoF9QT1JUX1BDU19EVzEwX0xOMDFfQykKPiAtI2Rl ZmluZSBCWFRfUE9SVF9QQ1NfRFcxMF9HUlAocG9ydCkJX01NSU9fUE9SVDMocG9ydCwgX1BPUlRf UENTX0RXMTBfR1JQX0EswqDCoFwKPiAtCQkJCQkJwqDCoMKgwqDCoF9QT1JUX1BDU19EVzEwX0dS UF9CLMKgwqBcCj4gLQkJCQkJCcKgwqDCoMKgwqBfUE9SVF9QQ1NfRFcxMF9HUlBfQykKPiArI2Rl ZmluZSBCWFRfUE9SVF9QQ1NfRFcxMF9MTjAxKHBoeSwgY2gpCV9NTUlPX0JYVF9QSFlfQ0gocGh5 LCBjaCwgXAo+ICsJCQkJCQkJwqBfUE9SVF9QQ1NfRFcxMF9MTjAxX0IsIFwKPiArCQkJCQkJCcKg X1BPUlRfUENTX0RXMTBfTE4wMV9DKQo+ICsjZGVmaW5lIEJYVF9QT1JUX1BDU19EVzEwX0dSUChw aHksIGNoKQlfTU1JT19CWFRfUEhZX0NIKHBoeSwgY2gsIFwKPiArCQkJCQkJCcKgX1BPUlRfUENT X0RXMTBfR1JQX0IsIFwKPiArCQkJCQkJCcKgX1BPUlRfUENTX0RXMTBfR1JQX0MpCj4gKwo+IMKg I2RlZmluZcKgwqDCoFRYMl9TV0lOR19DQUxDX0lOSVQJCSgxIDw8IDMxKQo+IMKgI2RlZmluZcKg wqDCoFRYMV9TV0lOR19DQUxDX0lOSVQJCSgxIDw8IDMwKQo+IMKgCj4gQEAgLTEzNzAsMTUgKzEz NzUsMTUgQEAgZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7Cj4gwqAjZGVmaW5lIF9QT1JUX1BD U19EVzEyX0dSUF9DCQkweDZDRTMwCj4gwqAjZGVmaW5lwqDCoMKgTEFORVNUQUdHRVJfU1RSQVBf T1ZSRAkoMSA8PCA2KQo+IMKgI2RlZmluZcKgwqDCoExBTkVfU1RBR0dFUl9NQVNLCQkweDFGCj4g LSNkZWZpbmUgQlhUX1BPUlRfUENTX0RXMTJfTE4wMShwb3J0KQlfTU1JT19QT1JUMyhwb3J0LCBf UE9SVF9QQ1NfRFcxMl9MTjAxX0EsIFwKPiAtCQkJCQkJwqDCoMKgwqDCoF9QT1JUX1BDU19EVzEy X0xOMDFfQiwgXAo+IC0JCQkJCQnCoMKgwqDCoMKgX1BPUlRfUENTX0RXMTJfTE4wMV9DKQo+IC0j ZGVmaW5lIEJYVF9QT1JUX1BDU19EVzEyX0xOMjMocG9ydCkJX01NSU9fUE9SVDMocG9ydCwgX1BP UlRfUENTX0RXMTJfTE4yM19BLCBcCj4gLQkJCQkJCcKgwqDCoMKgwqBfUE9SVF9QQ1NfRFcxMl9M TjIzX0IsIFwKPiAtCQkJCQkJwqDCoMKgwqDCoF9QT1JUX1BDU19EVzEyX0xOMjNfQykKPiAtI2Rl ZmluZSBCWFRfUE9SVF9QQ1NfRFcxMl9HUlAocG9ydCkJX01NSU9fUE9SVDMocG9ydCwgX1BPUlRf UENTX0RXMTJfR1JQX0EsIFwKPiAtCQkJCQkJwqDCoMKgwqDCoF9QT1JUX1BDU19EVzEyX0dSUF9C LCBcCj4gLQkJCQkJCcKgwqDCoMKgwqBfUE9SVF9QQ1NfRFcxMl9HUlBfQykKPiArI2RlZmluZSBC WFRfUE9SVF9QQ1NfRFcxMl9MTjAxKHBoeSwgY2gpCV9NTUlPX0JYVF9QSFlfQ0gocGh5LCBjaCwg XAo+ICsJCQkJCQkJwqBfUE9SVF9QQ1NfRFcxMl9MTjAxX0IsIFwKPiArCQkJCQkJCcKgX1BPUlRf UENTX0RXMTJfTE4wMV9DKQo+ICsjZGVmaW5lIEJYVF9QT1JUX1BDU19EVzEyX0xOMjMocGh5LCBj aCkJX01NSU9fQlhUX1BIWV9DSChwaHksIGNoLCBcCj4gKwkJCQkJCQnCoF9QT1JUX1BDU19EVzEy X0xOMjNfQiwgXAo+ICsJCQkJCQkJwqBfUE9SVF9QQ1NfRFcxMl9MTjIzX0MpCj4gKyNkZWZpbmUg QlhUX1BPUlRfUENTX0RXMTJfR1JQKHBoeSwgY2gpCV9NTUlPX0JYVF9QSFlfQ0gocGh5LCBjaCwg XAo+ICsJCQkJCQkJwqBfUE9SVF9QQ1NfRFcxMl9HUlBfQiwgXAo+ICsJCQkJCQkJwqBfUE9SVF9Q Q1NfRFcxMl9HUlBfQykKPiDCoAo+IMKgLyogQlhUIFBIWSBUWCByZWdpc3RlcnMgKi8KPiDCoCNk ZWZpbmUgX0JYVF9MQU5FX09GRlNFVChsYW5lKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAoKChsYW5l KSA+PiAxKSAqIDB4MjAwICsJXAo+IEBAIC0xMzkwLDEyICsxMzk1LDEyIEBAIGVudW0gc2tsX2Rp c3BfcG93ZXJfd2VsbHMgewo+IMKgI2RlZmluZSBfUE9SVF9UWF9EVzJfR1JQX0EJCTB4MTYyRDA4 Cj4gwqAjZGVmaW5lIF9QT1JUX1RYX0RXMl9HUlBfQgkJMHg2Q0QwOAo+IMKgI2RlZmluZSBfUE9S VF9UWF9EVzJfR1JQX0MJCTB4NkNGMDgKPiAtI2RlZmluZSBCWFRfUE9SVF9UWF9EVzJfR1JQKHBv cnQpCV9NTUlPX1BPUlQzKHBvcnQsIF9QT1JUX1RYX0RXMl9HUlBfQSzCoMKgXAo+IC0JCQkJCQnC oMKgwqDCoMKgX1BPUlRfVFhfRFcyX0dSUF9CLMKgwqBcCj4gLQkJCQkJCcKgwqDCoMKgwqBfUE9S VF9UWF9EVzJfR1JQX0MpCj4gLSNkZWZpbmUgQlhUX1BPUlRfVFhfRFcyX0xOMChwb3J0KQlfTU1J T19QT1JUMyhwb3J0LCBfUE9SVF9UWF9EVzJfTE4wX0EswqDCoFwKPiAtCQkJCQkJwqDCoMKgwqDC oF9QT1JUX1RYX0RXMl9MTjBfQizCoMKgXAo+IC0JCQkJCQnCoMKgwqDCoMKgX1BPUlRfVFhfRFcy X0xOMF9DKQo+ICsjZGVmaW5lIEJYVF9QT1JUX1RYX0RXMl9MTjAocGh5LCBjaCkJX01NSU9fQlhU X1BIWV9DSChwaHksIGNoLCBcCj4gKwkJCQkJCQnCoF9QT1JUX1RYX0RXMl9MTjBfQiwgXAo+ICsJ CQkJCQkJwqBfUE9SVF9UWF9EVzJfTE4wX0MpCj4gKyNkZWZpbmUgQlhUX1BPUlRfVFhfRFcyX0dS UChwaHksIGNoKQlfTU1JT19CWFRfUEhZX0NIKHBoeSwgY2gsIFwKPiArCQkJCQkJCcKgX1BPUlRf VFhfRFcyX0dSUF9CLCBcCj4gKwkJCQkJCQnCoF9QT1JUX1RYX0RXMl9HUlBfQykKPiDCoCNkZWZp bmXCoMKgwqBNQVJHSU5fMDAwX1NISUZUCQkxNgo+IMKgI2RlZmluZcKgwqDCoE1BUkdJTl8wMDAJ CQkoMHhGRiA8PCBNQVJHSU5fMDAwX1NISUZUKQo+IMKgI2RlZmluZcKgwqDCoFVOSVFfVFJBTlNf U0NBTEVfU0hJRlQJOAo+IEBAIC0xNDA3LDEyICsxNDEyLDEyIEBAIGVudW0gc2tsX2Rpc3BfcG93 ZXJfd2VsbHMgewo+IMKgI2RlZmluZSBfUE9SVF9UWF9EVzNfR1JQX0EJCTB4MTYyRDBDCj4gwqAj ZGVmaW5lIF9QT1JUX1RYX0RXM19HUlBfQgkJMHg2Q0QwQwo+IMKgI2RlZmluZSBfUE9SVF9UWF9E VzNfR1JQX0MJCTB4NkNGMEMKPiAtI2RlZmluZSBCWFRfUE9SVF9UWF9EVzNfR1JQKHBvcnQpCV9N TUlPX1BPUlQzKHBvcnQsIF9QT1JUX1RYX0RXM19HUlBfQSzCoMKgXAo+IC0JCQkJCQnCoMKgwqDC oMKgX1BPUlRfVFhfRFczX0dSUF9CLMKgwqBcCj4gLQkJCQkJCcKgwqDCoMKgwqBfUE9SVF9UWF9E VzNfR1JQX0MpCj4gLSNkZWZpbmUgQlhUX1BPUlRfVFhfRFczX0xOMChwb3J0KQlfTU1JT19QT1JU Myhwb3J0LCBfUE9SVF9UWF9EVzNfTE4wX0EswqDCoFwKPiAtCQkJCQkJwqDCoMKgwqDCoF9QT1JU X1RYX0RXM19MTjBfQizCoMKgXAo+IC0JCQkJCQnCoMKgwqDCoMKgX1BPUlRfVFhfRFczX0xOMF9D KQo+ICsjZGVmaW5lIEJYVF9QT1JUX1RYX0RXM19MTjAocGh5LCBjaCkJX01NSU9fQlhUX1BIWV9D SChwaHksIGNoLCBcCj4gKwkJCQkJCQnCoF9QT1JUX1RYX0RXM19MTjBfQiwgXAo+ICsJCQkJCQkJ wqBfUE9SVF9UWF9EVzNfTE4wX0MpCj4gKyNkZWZpbmUgQlhUX1BPUlRfVFhfRFczX0dSUChwaHks IGNoKQlfTU1JT19CWFRfUEhZX0NIKHBoeSwgY2gsIFwKPiArCQkJCQkJCcKgX1BPUlRfVFhfRFcz X0dSUF9CLCBcCj4gKwkJCQkJCQnCoF9QT1JUX1RYX0RXM19HUlBfQykKPiDCoCNkZWZpbmXCoMKg wqBTQ0FMRV9EQ09NUF9NRVRIT0QJCSgxIDw8IDI2KQo+IMKgI2RlZmluZcKgwqDCoFVOSVFVRV9U UkFOR0VfRU5fTUVUSE9ECSgxIDw8IDI3KQo+IMKgCj4gQEAgLTE0MjIsMTIgKzE0MjcsMTIgQEAg ZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7Cj4gwqAjZGVmaW5lIF9QT1JUX1RYX0RXNF9HUlBf QQkJMHgxNjJEMTAKPiDCoCNkZWZpbmUgX1BPUlRfVFhfRFc0X0dSUF9CCQkweDZDRDEwCj4gwqAj ZGVmaW5lIF9QT1JUX1RYX0RXNF9HUlBfQwkJMHg2Q0YxMAo+IC0jZGVmaW5lIEJYVF9QT1JUX1RY X0RXNF9MTjAocG9ydCkJX01NSU9fUE9SVDMocG9ydCwgX1BPUlRfVFhfRFc0X0xOMF9BLMKgwqBc Cj4gLQkJCQkJCcKgwqDCoMKgwqBfUE9SVF9UWF9EVzRfTE4wX0IswqDCoFwKPiAtCQkJCQkJwqDC oMKgwqDCoF9QT1JUX1RYX0RXNF9MTjBfQykKPiAtI2RlZmluZSBCWFRfUE9SVF9UWF9EVzRfR1JQ KHBvcnQpCV9NTUlPX1BPUlQzKHBvcnQsIF9QT1JUX1RYX0RXNF9HUlBfQSzCoMKgXAo+IC0JCQkJ CQnCoMKgwqDCoMKgX1BPUlRfVFhfRFc0X0dSUF9CLMKgwqBcCj4gLQkJCQkJCcKgwqDCoMKgwqBf UE9SVF9UWF9EVzRfR1JQX0MpCj4gKyNkZWZpbmUgQlhUX1BPUlRfVFhfRFc0X0xOMChwaHksIGNo KQlfTU1JT19CWFRfUEhZX0NIKHBoeSwgY2gsIFwKPiArCQkJCQkJCcKgX1BPUlRfVFhfRFc0X0xO MF9CLCBcCj4gKwkJCQkJCQnCoF9QT1JUX1RYX0RXNF9MTjBfQykKPiArI2RlZmluZSBCWFRfUE9S VF9UWF9EVzRfR1JQKHBoeSwgY2gpCV9NTUlPX0JYVF9QSFlfQ0gocGh5LCBjaCwgXAo+ICsJCQkJ CQkJwqBfUE9SVF9UWF9EVzRfR1JQX0IsIFwKPiArCQkJCQkJCcKgX1BPUlRfVFhfRFc0X0dSUF9D KQo+IMKgI2RlZmluZcKgwqDCoERFRU1QSF9TSElGVAkJCTI0Cj4gwqAjZGVmaW5lwqDCoMKgREVf RU1QSEFTSVMJCQkoMHhGRiA8PCBERUVNUEhfU0hJRlQpCj4gwqAKPiBAQCAtMTQzNiwxMCArMTQ0 MSwxMCBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsKPiDCoCNkZWZpbmUgX1BPUlRfVFhf RFcxNF9MTjBfQwkJMHg2QzkzOAo+IMKgI2RlZmluZcKgwqDCoExBVEVOQ1lfT1BUSU1fU0hJRlQJ CTMwCj4gwqAjZGVmaW5lwqDCoMKgTEFURU5DWV9PUFRJTQkJCSgxIDw8IExBVEVOQ1lfT1BUSU1f U0hJRlQpCj4gLSNkZWZpbmUgQlhUX1BPUlRfVFhfRFcxNF9MTihwb3J0LCBsYW5lKQlfTU1JTyhf UE9SVDMoKHBvcnQpLCBfUE9SVF9UWF9EVzE0X0xOMF9BLMKgwqDCoFwKPiAtCQkJCQkJCV9QT1JU X1RYX0RXMTRfTE4wX0IswqDCoMKgXAo+IC0JCQkJCQkJX1BPUlRfVFhfRFcxNF9MTjBfQykgKyBc Cj4gLQkJCQkJwqBfQlhUX0xBTkVfT0ZGU0VUKGxhbmUpKQo+ICsjZGVmaW5lIEJYVF9QT1JUX1RY X0RXMTRfTE4ocGh5LCBjaCwgbGFuZSkJCQkJXAo+ICsJX01NSU8oX0JYVF9QSFlfQ0gocGh5LCBj aCwgX1BPUlRfVFhfRFcxNF9MTjBfQiwJCQlcCj4gKwkJCQnCoMKgwqBfUE9SVF9UWF9EVzE0X0xO MF9DKSArCQlcCj4gKwnCoMKgwqDCoMKgwqBfQlhUX0xBTkVfT0ZGU0VUKGxhbmUpKQo+IMKgCj4g wqAvKiBVQUlNSSBzY3JhdGNoIHBhZCByZWdpc3RlciAxICovCj4gwqAjZGVmaW5lIFVBSU1JX1NQ UjEJCQlfTU1JTygweDRGMDc0KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcGlvX3BoeS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBpb19waHkuYwo+ IGluZGV4IDY3MTFlM2EuLjBkMmNiNmIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHBpb19waHkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw aW9fcGh5LmMKPiBAQCAtMTY3LDI2ICsxNjcsNTggQEAgc3RhdGljIHUzMiBieHRfcGh5X3BvcnRf bWFzayhjb25zdCBzdHJ1Y3QgYnh0X2RkaV9waHlfaW5mbyAqcGh5X2luZm8pCj4gwqAJCUJJVChw aHlfaW5mby0+Y2hhbm5lbFtEUElPX0NIMF0ucG9ydCk7Cj4gwqB9Cj4gwqAKPiArdm9pZCBieHRf cG9ydF90b19waHlfY2hhbm5lbChlbnVtIHBvcnQgcG9ydCwKPiArCQkJwqDCoMKgwqDCoGVudW0g ZHBpb19waHkgKnBoeSwgZW51bSBkcGlvX2NoYW5uZWwgKmNoKQo+ICt7Cj4gKwljb25zdCBzdHJ1 Y3QgYnh0X2RkaV9waHlfaW5mbyAqcGh5X2luZm87Cj4gKwlpbnQgaTsKPiArCj4gKwlmb3IgKGkg PSAwOyBpIDwgQVJSQVlfU0laRShieHRfZGRpX3BoeV9pbmZvKTsgaSsrKSB7Cj4gKwkJcGh5X2lu Zm8gPSAmYnh0X2RkaV9waHlfaW5mb1tpXTsKPiArCj4gKwkJaWYgKHBvcnQgPT0gcGh5X2luZm8t PmNoYW5uZWxbRFBJT19DSDBdLnBvcnQpIHsKPiArCQkJKnBoeSA9IGk7Cj4gKwkJCSpjaCA9IERQ SU9fQ0gwOwo+ICsJCQlyZXR1cm47Cj4gKwkJfQo+ICsKPiArCQlpZiAocGh5X2luZm8tPmR1YWxf Y2hhbm5lbCAmJgo+ICsJCcKgwqDCoMKgcG9ydCA9PSBwaHlfaW5mby0+Y2hhbm5lbFtEUElPX0NI MV0ucG9ydCkgewo+ICsJCQkqcGh5ID0gaTsKPiArCQkJKmNoID0gRFBJT19DSDE7Cj4gKwkJCXJl dHVybjsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJV0FSTigxLCAiUEhZIG5vdCBmb3VuZCBmb3IgUE9S VCAlYyIsIHBvcnRfbmFtZShwb3J0KSk7Cj4gKwkqcGh5ID0gRFBJT19QSFkwOwo+ICsJKmNoID0g RFBJT19DSDA7Cj4gK30KPiArCj4gwqB2b2lkIGJ4dF9kZGlfcGh5X3NldF9zaWduYWxfbGV2ZWwo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IMKgCQkJCcKgwqBlbnVtIHBvcnQg cG9ydCwgdTMyIG1hcmdpbiwgdTMyIHNjYWxlLAo+IMKgCQkJCcKgwqB1MzIgZW5hYmxlLCB1MzIg ZGVlbXBoYXNpcykKPiDCoHsKPiDCoAl1MzIgdmFsOwo+ICsJdTMyIHBoeTsKClRoaXMgYW5kIHNp bWlsYXIgcGxhY2VzIHNob3VsZCBiZSBlbnVtIGRwaW9fcGh5IGFjY29yZGluZyB0byB0aGUgYWJv dmUKY2hhbmdlLgoKPiArCWVudW0gZHBpb19jaGFubmVsIGNoOwo+ICsKPiArCWJ4dF9wb3J0X3Rv X3BoeV9jaGFubmVsKHBvcnQsICZwaHksICZjaCk7Cj4gwqAKPiDCoAkvKgo+IMKgCcKgKiBXaGls ZSB3ZSB3cml0ZSB0byB0aGUgZ3JvdXAgcmVnaXN0ZXIgdG8gcHJvZ3JhbSBhbGwgbGFuZXMgYXQg b25jZSB3ZQo+IMKgCcKgKiBjYW4gcmVhZCBvbmx5IGxhbmUgcmVnaXN0ZXJzIGFuZCB3ZSBwaWNr IGxhbmVzIDAvMSBmb3IgdGhhdC4KPiDCoAnCoCovCj4gLQl2YWwgPSBJOTE1X1JFQUQoQlhUX1BP UlRfUENTX0RXMTBfTE4wMShwb3J0KSk7Cj4gKwl2YWwgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUENT X0RXMTBfTE4wMShwaHksIGNoKSk7Cj4gwqAJdmFsICY9IH4oVFgyX1NXSU5HX0NBTENfSU5JVCB8 IFRYMV9TV0lOR19DQUxDX0lOSVQpOwo+IC0JSTkxNV9XUklURShCWFRfUE9SVF9QQ1NfRFcxMF9H UlAocG9ydCksIHZhbCk7Cj4gKwlJOTE1X1dSSVRFKEJYVF9QT1JUX1BDU19EVzEwX0dSUChwaHks IGNoKSwgdmFsKTsKPiDCoAo+IC0JdmFsID0gSTkxNV9SRUFEKEJYVF9QT1JUX1RYX0RXMl9MTjAo cG9ydCkpOwo+ICsJdmFsID0gSTkxNV9SRUFEKEJYVF9QT1JUX1RYX0RXMl9MTjAocGh5LCBjaCkp Owo+IMKgCXZhbCAmPSB+KE1BUkdJTl8wMDAgfCBVTklRX1RSQU5TX1NDQUxFKTsKPiDCoAl2YWwg fD0gbWFyZ2luIDw8IE1BUkdJTl8wMDBfU0hJRlQgfCBzY2FsZSA8PCBVTklRX1RSQU5TX1NDQUxF X1NISUZUOwo+IC0JSTkxNV9XUklURShCWFRfUE9SVF9UWF9EVzJfR1JQKHBvcnQpLCB2YWwpOwo+ ICsJSTkxNV9XUklURShCWFRfUE9SVF9UWF9EVzJfR1JQKHBoeSwgY2gpLCB2YWwpOwo+IMKgCj4g LQl2YWwgPSBJOTE1X1JFQUQoQlhUX1BPUlRfVFhfRFczX0xOMChwb3J0KSk7Cj4gKwl2YWwgPSBJ OTE1X1JFQUQoQlhUX1BPUlRfVFhfRFczX0xOMChwaHksIGNoKSk7Cj4gwqAJdmFsICY9IH5TQ0FM RV9EQ09NUF9NRVRIT0Q7Cj4gwqAJaWYgKGVuYWJsZSkKPiDCoAkJdmFsIHw9IFNDQUxFX0RDT01Q X01FVEhPRDsKPiBAQCAtMTk0LDE2ICsyMjYsMTYgQEAgdm9pZCBieHRfZGRpX3BoeV9zZXRfc2ln bmFsX2xldmVsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiDCoAlpZiAoKHZh bCAmIFVOSVFVRV9UUkFOR0VfRU5fTUVUSE9EKSAmJiAhKHZhbCAmIFNDQUxFX0RDT01QX01FVEhP RCkpCj4gwqAJCURSTV9FUlJPUigiRGlzYWJsZWQgc2NhbGluZyB3aGlsZSBvdW5pcWV0cmFuZ2Vu bWV0aG9kIHdhcyBzZXQiKTsKPiDCoAo+IC0JSTkxNV9XUklURShCWFRfUE9SVF9UWF9EVzNfR1JQ KHBvcnQpLCB2YWwpOwo+ICsJSTkxNV9XUklURShCWFRfUE9SVF9UWF9EVzNfR1JQKHBoeSwgY2gp LCB2YWwpOwo+IMKgCj4gLQl2YWwgPSBJOTE1X1JFQUQoQlhUX1BPUlRfVFhfRFc0X0xOMChwb3J0 KSk7Cj4gKwl2YWwgPSBJOTE1X1JFQUQoQlhUX1BPUlRfVFhfRFc0X0xOMChwaHksIGNoKSk7Cj4g wqAJdmFsICY9IH5ERV9FTVBIQVNJUzsKPiDCoAl2YWwgfD0gZGVlbXBoYXNpcyA8PCBERUVNUEhf U0hJRlQ7Cj4gLQlJOTE1X1dSSVRFKEJYVF9QT1JUX1RYX0RXNF9HUlAocG9ydCksIHZhbCk7Cj4g KwlJOTE1X1dSSVRFKEJYVF9QT1JUX1RYX0RXNF9HUlAocGh5LCBjaCksIHZhbCk7Cj4gwqAKPiAt CXZhbCA9IEk5MTVfUkVBRChCWFRfUE9SVF9QQ1NfRFcxMF9MTjAxKHBvcnQpKTsKPiArCXZhbCA9 IEk5MTVfUkVBRChCWFRfUE9SVF9QQ1NfRFcxMF9MTjAxKHBoeSwgY2gpKTsKPiDCoAl2YWwgfD0g VFgyX1NXSU5HX0NBTENfSU5JVCB8IFRYMV9TV0lOR19DQUxDX0lOSVQ7Cj4gLQlJOTE1X1dSSVRF KEJYVF9QT1JUX1BDU19EVzEwX0dSUChwb3J0KSwgdmFsKTsKPiArCUk5MTVfV1JJVEUoQlhUX1BP UlRfUENTX0RXMTBfR1JQKHBoeSwgY2gpLCB2YWwpOwo+IMKgfQo+IMKgCj4gwqBib29sIGJ4dF9k ZGlfcGh5X2lzX2VuYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IEBA IC0yNTYsNyArMjg4LDExIEBAIGJvb2wgYnh0X2RkaV9waHlfaXNfZW5hYmxlZChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gwqAKPiDCoHN0YXRpYyB1MzIgYnh0X2dldF9ncmMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIGRwaW9fcGh5IHBoeSkKPiDC oHsKPiAtCXUzMiB2YWwgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUkVGX0RXNihwaHkpKTsKPiArCWNv bnN0IHN0cnVjdCBieHRfZGRpX3BoeV9pbmZvICpwaHlfaW5mbzsKPiArCXUzMiB2YWw7Cj4gKwo+ ICsJcGh5X2luZm8gPSAmYnh0X2RkaV9waHlfaW5mb1twaHldOwo+ICsJdmFsID0gSTkxNV9SRUFE KEJYVF9QT1JUX1JFRl9EVzYocGh5KSk7Cj4gwqAKPiDCoAlyZXR1cm4gKHZhbCAmIEdSQ19DT0RF X01BU0spID4+IEdSQ19DT0RFX1NISUZUOwo+IMKgfQo+IEBAIC0yNjQsNiArMzAwLDEwIEBAIHN0 YXRpYyB1MzIgYnh0X2dldF9ncmMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBl bnVtIGRwaW9fcGh5IHBoeSkKPiDCoHN0YXRpYyB2b2lkIGJ4dF9waHlfd2FpdF9ncmNfZG9uZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gwqAJCQkJwqDCoGVudW0gZHBpb19w aHkgcGh5KQo+IMKgewo+ICsJY29uc3Qgc3RydWN0IGJ4dF9kZGlfcGh5X2luZm8gKnBoeV9pbmZv Owo+ICsKPiArCXBoeV9pbmZvID0gJmJ4dF9kZGlfcGh5X2luZm9bcGh5XTsKPiArCgpUaGlzIGlz bid0IHVzZWQuCgo+IMKgCWlmIChpbnRlbF93YWl0X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwKPiDC oAkJCQnCoMKgwqDCoEJYVF9QT1JUX1JFRl9EVzMocGh5KSwKPiDCoAkJCQnCoMKgwqDCoEdSQ19E T05FLCBHUkNfRE9ORSwKPiBAQCAtNDg5LDggKzUyOSw4IEBAIGJvb2wgYnh0X2RkaV9waHlfdmVy aWZ5X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiDCoAkJCcKgwqDC oGdyY19jb2RlOwo+IMKgCQltYXNrID0gR1JDX0NPREVfRkFTVF9NQVNLIHwgR1JDX0NPREVfU0xP V19NQVNLIHwKPiDCoAkJwqDCoMKgwqDCoMKgwqBHUkNfQ09ERV9OT01fTUFTSzsKPiAtCQlvayAm PSBfQ0hLKEJYVF9QT1JUX1JFRl9EVzYocGh5KSwgbWFzaywgZ3JjX2NvZGUsCj4gLQkJCcKgwqDC oMKgIkJYVF9QT1JUX1JFRl9EVzYoJWQpIiwgcGh5KTsKPiArCQlvayAmPSBfQ0hLKEJYVF9QT1JU X1JFRl9EVzYocGh5KSwgbWFzaywKPiArCQkJwqDCoMKgZ3JjX2NvZGUsICJCWFRfUE9SVF9SRUZf RFc2KCVkKSIsIHBoeSk7CgpSZWR1bmRhbnQgdy9zIGNoYW5nZS4KCldpdGggdGhlIGFib3ZlIGZp eGVkIHRoaXMgaXM6ClJldmlld2VkLWJ5OiBJbXJlIERlYWsgPGltcmUuZGVha0BpbnRlbC5jb20+ Cgo+IMKgCj4gwqAJCW1hc2sgPSBHUkNfRElTIHwgR1JDX1JEWV9PVlJEOwo+IMKgCQlvayAmPSBf Q0hLKEJYVF9QT1JUX1JFRl9EVzgocGh5KSwgbWFzaywgbWFzaywKPiBAQCAtNTI1LDEwICs1NjUs MTQgQEAgdm9pZCBieHRfZGRpX3BoeV9zZXRfbGFuZV9vcHRpbV9tYXNrKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyLAo+IMKgCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRwb3J0ID0g ZW5jX3RvX2RpZ19wb3J0KCZlbmNvZGVyLT5iYXNlKTsKPiDCoAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRwb3J0LT5iYXNlLmJhc2UuZGV2KTsKPiDCoAllbnVt IHBvcnQgcG9ydCA9IGRwb3J0LT5wb3J0Owo+ICsJdTMyIHBoeTsKPiArCWVudW0gZHBpb19jaGFu bmVsIGNoOwo+IMKgCWludCBsYW5lOwo+IMKgCj4gKwlieHRfcG9ydF90b19waHlfY2hhbm5lbChw b3J0LCAmcGh5LCAmY2gpOwo+ICsKPiDCoAlmb3IgKGxhbmUgPSAwOyBsYW5lIDwgNDsgbGFuZSsr KSB7Cj4gLQkJdTMyIHZhbCA9IEk5MTVfUkVBRChCWFRfUE9SVF9UWF9EVzE0X0xOKHBvcnQsIGxh bmUpKTsKPiArCQl1MzIgdmFsID0gSTkxNV9SRUFEKEJYVF9QT1JUX1RYX0RXMTRfTE4ocGh5LCBj aCwgbGFuZSkpOwo+IMKgCj4gwqAJCS8qCj4gwqAJCcKgKiBOb3RlIHRoYXQgb24gQ0hWIHRoaXMg ZmxhZyBpcyBjYWxsZWQgVVBBUiwgYnV0IGhhcwo+IEBAIC01MzgsNyArNTgyLDcgQEAgdm9pZCBi eHRfZGRpX3BoeV9zZXRfbGFuZV9vcHRpbV9tYXNrKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyLAo+IMKgCQlpZiAobGFuZV9sYXRfb3B0aW1fbWFzayAmIEJJVChsYW5lKSkKPiDCoAkJCXZh bCB8PSBMQVRFTkNZX09QVElNOwo+IMKgCj4gLQkJSTkxNV9XUklURShCWFRfUE9SVF9UWF9EVzE0 X0xOKHBvcnQsIGxhbmUpLCB2YWwpOwo+ICsJCUk5MTVfV1JJVEUoQlhUX1BPUlRfVFhfRFcxNF9M TihwaHksIGNoLCBsYW5lKSwgdmFsKTsKPiDCoAl9Cj4gwqB9Cj4gwqAKPiBAQCAtNTQ4LDEyICs1 OTIsMTYgQEAgYnh0X2RkaV9waHlfZ2V0X2xhbmVfbGF0X29wdGltX21hc2soc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIpCj4gwqAJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZHBvcnQg PSBlbmNfdG9fZGlnX3BvcnQoJmVuY29kZXItPmJhc2UpOwo+IMKgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZHBvcnQtPmJhc2UuYmFzZS5kZXYpOwo+IMKgCWVu dW0gcG9ydCBwb3J0ID0gZHBvcnQtPnBvcnQ7Cj4gKwl1MzIgcGh5Owo+ICsJZW51bSBkcGlvX2No YW5uZWwgY2g7Cj4gwqAJaW50IGxhbmU7Cj4gwqAJdWludDhfdCBtYXNrOwo+IMKgCj4gKwlieHRf cG9ydF90b19waHlfY2hhbm5lbChwb3J0LCAmcGh5LCAmY2gpOwo+ICsKPiDCoAltYXNrID0gMDsK PiDCoAlmb3IgKGxhbmUgPSAwOyBsYW5lIDwgNDsgbGFuZSsrKSB7Cj4gLQkJdTMyIHZhbCA9IEk5 MTVfUkVBRChCWFRfUE9SVF9UWF9EVzE0X0xOKHBvcnQsIGxhbmUpKTsKPiArCQl1MzIgdmFsID0g STkxNV9SRUFEKEJYVF9QT1JUX1RYX0RXMTRfTE4ocGh5LCBjaCwgbGFuZSkpOwo+IMKgCj4gwqAJ CWlmICh2YWwgJiBMQVRFTkNZX09QVElNKQo+IMKgCQkJbWFzayB8PSBCSVQobGFuZSk7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5jCj4gaW5kZXggMWM1OWNhNS4uYTRhOWYwNSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYwo+IEBAIC0xMzcxLDYgKzEz NzEsMTAgQEAgc3RhdGljIHZvaWQgYnh0X2RkaV9wbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiDCoHsKPiDCoAl1aW50MzJfdCB0ZW1wOwo+IMKgCWVudW0gcG9y dCBwb3J0ID0gKGVudW0gcG9ydClwbGwtPmlkOwkvKiAxOjEgcG9ydC0+UExMIG1hcHBpbmcgKi8K PiArCXUzMiBwaHk7Cj4gKwllbnVtIGRwaW9fY2hhbm5lbCBjaDsKPiArCj4gKwlieHRfcG9ydF90 b19waHlfY2hhbm5lbChwb3J0LCAmcGh5LCAmY2gpOwo+IMKgCj4gwqAJLyogTm9uLVNTQyByZWZl cmVuY2UgKi8KPiDCoAl0ZW1wID0gSTkxNV9SRUFEKEJYVF9QT1JUX1BMTF9FTkFCTEUocG9ydCkp Owo+IEBAIC0xMzc4LDcyICsxMzgyLDcyIEBAIHN0YXRpYyB2b2lkIGJ4dF9kZGlfcGxsX2VuYWJs ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gwqAJSTkxNV9XUklURShCWFRf UE9SVF9QTExfRU5BQkxFKHBvcnQpLCB0ZW1wKTsKPiDCoAo+IMKgCS8qIERpc2FibGUgMTAgYml0 IGNsb2NrICovCj4gLQl0ZW1wID0gSTkxNV9SRUFEKEJYVF9QT1JUX1BMTF9FQkJfNChwb3J0KSk7 Cj4gKwl0ZW1wID0gSTkxNV9SRUFEKEJYVF9QT1JUX1BMTF9FQkJfNChwaHksIGNoKSk7Cj4gwqAJ dGVtcCAmPSB+UE9SVF9QTExfMTBCSVRfQ0xLX0VOQUJMRTsKPiAtCUk5MTVfV1JJVEUoQlhUX1BP UlRfUExMX0VCQl80KHBvcnQpLCB0ZW1wKTsKPiArCUk5MTVfV1JJVEUoQlhUX1BPUlRfUExMX0VC Ql80KHBoeSwgY2gpLCB0ZW1wKTsKPiDCoAo+IMKgCS8qIFdyaXRlIFAxICYgUDIgKi8KPiAtCXRl bXAgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMX0VCQl8wKHBvcnQpKTsKPiArCXRlbXAgPSBJOTE1 X1JFQUQoQlhUX1BPUlRfUExMX0VCQl8wKHBoeSwgY2gpKTsKPiDCoAl0ZW1wICY9IH4oUE9SVF9Q TExfUDFfTUFTSyB8IFBPUlRfUExMX1AyX01BU0spOwo+IMKgCXRlbXAgfD0gcGxsLT5jb25maWcu aHdfc3RhdGUuZWJiMDsKPiAtCUk5MTVfV1JJVEUoQlhUX1BPUlRfUExMX0VCQl8wKHBvcnQpLCB0 ZW1wKTsKPiArCUk5MTVfV1JJVEUoQlhUX1BPUlRfUExMX0VCQl8wKHBoeSwgY2gpLCB0ZW1wKTsK PiDCoAo+IMKgCS8qIFdyaXRlIE0yIGludGVnZXIgKi8KPiAtCXRlbXAgPSBJOTE1X1JFQUQoQlhU X1BPUlRfUExMKHBvcnQsIDApKTsKPiArCXRlbXAgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMKHBo eSwgY2gsIDApKTsKPiDCoAl0ZW1wICY9IH5QT1JUX1BMTF9NMl9NQVNLOwo+IMKgCXRlbXAgfD0g cGxsLT5jb25maWcuaHdfc3RhdGUucGxsMDsKPiAtCUk5MTVfV1JJVEUoQlhUX1BPUlRfUExMKHBv cnQsIDApLCB0ZW1wKTsKPiArCUk5MTVfV1JJVEUoQlhUX1BPUlRfUExMKHBoeSwgY2gsIDApLCB0 ZW1wKTsKPiDCoAo+IMKgCS8qIFdyaXRlIE4gKi8KPiAtCXRlbXAgPSBJOTE1X1JFQUQoQlhUX1BP UlRfUExMKHBvcnQsIDEpKTsKPiArCXRlbXAgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMKHBoeSwg Y2gsIDEpKTsKPiDCoAl0ZW1wICY9IH5QT1JUX1BMTF9OX01BU0s7Cj4gwqAJdGVtcCB8PSBwbGwt PmNvbmZpZy5od19zdGF0ZS5wbGwxOwo+IC0JSTkxNV9XUklURShCWFRfUE9SVF9QTEwocG9ydCwg MSksIHRlbXApOwo+ICsJSTkxNV9XUklURShCWFRfUE9SVF9QTEwocGh5LCBjaCwgMSksIHRlbXAp Owo+IMKgCj4gwqAJLyogV3JpdGUgTTIgZnJhY3Rpb24gKi8KPiAtCXRlbXAgPSBJOTE1X1JFQUQo QlhUX1BPUlRfUExMKHBvcnQsIDIpKTsKPiArCXRlbXAgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExM KHBoeSwgY2gsIDIpKTsKPiDCoAl0ZW1wICY9IH5QT1JUX1BMTF9NMl9GUkFDX01BU0s7Cj4gwqAJ dGVtcCB8PSBwbGwtPmNvbmZpZy5od19zdGF0ZS5wbGwyOwo+IC0JSTkxNV9XUklURShCWFRfUE9S VF9QTEwocG9ydCwgMiksIHRlbXApOwo+ICsJSTkxNV9XUklURShCWFRfUE9SVF9QTEwocGh5LCBj aCwgMiksIHRlbXApOwo+IMKgCj4gwqAJLyogV3JpdGUgTTIgZnJhY3Rpb24gZW5hYmxlICovCj4g LQl0ZW1wID0gSTkxNV9SRUFEKEJYVF9QT1JUX1BMTChwb3J0LCAzKSk7Cj4gKwl0ZW1wID0gSTkx NV9SRUFEKEJYVF9QT1JUX1BMTChwaHksIGNoLCAzKSk7Cj4gwqAJdGVtcCAmPSB+UE9SVF9QTExf TTJfRlJBQ19FTkFCTEU7Cj4gwqAJdGVtcCB8PSBwbGwtPmNvbmZpZy5od19zdGF0ZS5wbGwzOwo+ IC0JSTkxNV9XUklURShCWFRfUE9SVF9QTEwocG9ydCwgMyksIHRlbXApOwo+ICsJSTkxNV9XUklU RShCWFRfUE9SVF9QTEwocGh5LCBjaCwgMyksIHRlbXApOwo+IMKgCj4gwqAJLyogV3JpdGUgY29l ZmYgKi8KPiAtCXRlbXAgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMKHBvcnQsIDYpKTsKPiArCXRl bXAgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMKHBoeSwgY2gsIDYpKTsKPiDCoAl0ZW1wICY9IH5Q T1JUX1BMTF9QUk9QX0NPRUZGX01BU0s7Cj4gwqAJdGVtcCAmPSB+UE9SVF9QTExfSU5UX0NPRUZG X01BU0s7Cj4gwqAJdGVtcCAmPSB+UE9SVF9QTExfR0FJTl9DVExfTUFTSzsKPiDCoAl0ZW1wIHw9 IHBsbC0+Y29uZmlnLmh3X3N0YXRlLnBsbDY7Cj4gLQlJOTE1X1dSSVRFKEJYVF9QT1JUX1BMTChw b3J0LCA2KSwgdGVtcCk7Cj4gKwlJOTE1X1dSSVRFKEJYVF9QT1JUX1BMTChwaHksIGNoLCA2KSwg dGVtcCk7Cj4gwqAKPiDCoAkvKiBXcml0ZSBjYWxpYnJhdGlvbiB2YWwgKi8KPiAtCXRlbXAgPSBJ OTE1X1JFQUQoQlhUX1BPUlRfUExMKHBvcnQsIDgpKTsKPiArCXRlbXAgPSBJOTE1X1JFQUQoQlhU X1BPUlRfUExMKHBoeSwgY2gsIDgpKTsKPiDCoAl0ZW1wICY9IH5QT1JUX1BMTF9UQVJHRVRfQ05U X01BU0s7Cj4gwqAJdGVtcCB8PSBwbGwtPmNvbmZpZy5od19zdGF0ZS5wbGw4Owo+IC0JSTkxNV9X UklURShCWFRfUE9SVF9QTEwocG9ydCwgOCksIHRlbXApOwo+ICsJSTkxNV9XUklURShCWFRfUE9S VF9QTEwocGh5LCBjaCwgOCksIHRlbXApOwo+IMKgCj4gLQl0ZW1wID0gSTkxNV9SRUFEKEJYVF9Q T1JUX1BMTChwb3J0LCA5KSk7Cj4gKwl0ZW1wID0gSTkxNV9SRUFEKEJYVF9QT1JUX1BMTChwaHks IGNoLCA5KSk7Cj4gwqAJdGVtcCAmPSB+UE9SVF9QTExfTE9DS19USFJFU0hPTERfTUFTSzsKPiDC oAl0ZW1wIHw9IHBsbC0+Y29uZmlnLmh3X3N0YXRlLnBsbDk7Cj4gLQlJOTE1X1dSSVRFKEJYVF9Q T1JUX1BMTChwb3J0LCA5KSwgdGVtcCk7Cj4gKwlJOTE1X1dSSVRFKEJYVF9QT1JUX1BMTChwaHks IGNoLCA5KSwgdGVtcCk7Cj4gwqAKPiAtCXRlbXAgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMKHBv cnQsIDEwKSk7Cj4gKwl0ZW1wID0gSTkxNV9SRUFEKEJYVF9QT1JUX1BMTChwaHksIGNoLCAxMCkp Owo+IMKgCXRlbXAgJj0gflBPUlRfUExMX0RDT19BTVBfT1ZSX0VOX0g7Cj4gwqAJdGVtcCAmPSB+ UE9SVF9QTExfRENPX0FNUF9NQVNLOwo+IMKgCXRlbXAgfD0gcGxsLT5jb25maWcuaHdfc3RhdGUu cGxsMTA7Cj4gLQlJOTE1X1dSSVRFKEJYVF9QT1JUX1BMTChwb3J0LCAxMCksIHRlbXApOwo+ICsJ STkxNV9XUklURShCWFRfUE9SVF9QTEwocGh5LCBjaCwgMTApLCB0ZW1wKTsKPiDCoAo+IMKgCS8q IFJlY2FsaWJyYXRlIHdpdGggbmV3IHNldHRpbmdzICovCj4gLQl0ZW1wID0gSTkxNV9SRUFEKEJY VF9QT1JUX1BMTF9FQkJfNChwb3J0KSk7Cj4gKwl0ZW1wID0gSTkxNV9SRUFEKEJYVF9QT1JUX1BM TF9FQkJfNChwaHksIGNoKSk7Cj4gwqAJdGVtcCB8PSBQT1JUX1BMTF9SRUNBTElCUkFURTsKPiAt CUk5MTVfV1JJVEUoQlhUX1BPUlRfUExMX0VCQl80KHBvcnQpLCB0ZW1wKTsKPiArCUk5MTVfV1JJ VEUoQlhUX1BPUlRfUExMX0VCQl80KHBoeSwgY2gpLCB0ZW1wKTsKPiDCoAl0ZW1wICY9IH5QT1JU X1BMTF8xMEJJVF9DTEtfRU5BQkxFOwo+IMKgCXRlbXAgfD0gcGxsLT5jb25maWcuaHdfc3RhdGUu ZWJiNDsKPiAtCUk5MTVfV1JJVEUoQlhUX1BPUlRfUExMX0VCQl80KHBvcnQpLCB0ZW1wKTsKPiAr CUk5MTVfV1JJVEUoQlhUX1BPUlRfUExMX0VCQl80KHBoeSwgY2gpLCB0ZW1wKTsKPiDCoAo+IMKg CS8qIEVuYWJsZSBQTEwgKi8KPiDCoAl0ZW1wID0gSTkxNV9SRUFEKEJYVF9QT1JUX1BMTF9FTkFC TEUocG9ydCkpOwo+IEBAIC0xNDU5LDExICsxNDYzLDExIEBAIHN0YXRpYyB2b2lkIGJ4dF9kZGlf cGxsX2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gwqAJwqAqIFdo aWxlIHdlIHdyaXRlIHRvIHRoZSBncm91cCByZWdpc3RlciB0byBwcm9ncmFtIGFsbCBsYW5lcyBh dCBvbmNlIHdlCj4gwqAJwqAqIGNhbiByZWFkIG9ubHkgbGFuZSByZWdpc3RlcnMgYW5kIHdlIHBp Y2sgbGFuZXMgMC8xIGZvciB0aGF0Lgo+IMKgCcKgKi8KPiAtCXRlbXAgPSBJOTE1X1JFQUQoQlhU X1BPUlRfUENTX0RXMTJfTE4wMShwb3J0KSk7Cj4gKwl0ZW1wID0gSTkxNV9SRUFEKEJYVF9QT1JU X1BDU19EVzEyX0xOMDEocGh5LCBjaCkpOwo+IMKgCXRlbXAgJj0gfkxBTkVfU1RBR0dFUl9NQVNL Owo+IMKgCXRlbXAgJj0gfkxBTkVTVEFHR0VSX1NUUkFQX09WUkQ7Cj4gwqAJdGVtcCB8PSBwbGwt PmNvbmZpZy5od19zdGF0ZS5wY3NkdzEyOwo+IC0JSTkxNV9XUklURShCWFRfUE9SVF9QQ1NfRFcx Ml9HUlAocG9ydCksIHRlbXApOwo+ICsJSTkxNV9XUklURShCWFRfUE9SVF9QQ1NfRFcxMl9HUlAo cGh5LCBjaCksIHRlbXApOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgdm9pZCBieHRfZGRpX3BsbF9k aXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiBAQCAtMTQ4NSw2ICsx NDg5LDEwIEBAIHN0YXRpYyBib29sIGJ4dF9kZGlfcGxsX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gwqAJZW51bSBwb3J0IHBvcnQgPSAoZW51bSBwb3J0 KXBsbC0+aWQ7CS8qIDE6MSBwb3J0LT5QTEwgbWFwcGluZyAqLwo+IMKgCXVpbnQzMl90IHZhbDsK PiDCoAlib29sIHJldDsKPiArCXUzMiBwaHk7Cj4gKwllbnVtIGRwaW9fY2hhbm5lbCBjaDsKPiAr Cj4gKwlieHRfcG9ydF90b19waHlfY2hhbm5lbChwb3J0LCAmcGh5LCAmY2gpOwo+IMKgCj4gwqAJ aWYgKCFpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldF9pZl9lbmFibGVkKGRldl9wcml2LCBQT1dFUl9E T01BSU5fUExMUykpCj4gwqAJCXJldHVybiBmYWxzZTsKPiBAQCAtMTQ5NSwzNiArMTUwMywzNiBA QCBzdGF0aWMgYm9vbCBieHRfZGRpX3BsbF9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+IMKgCWlmICghKHZhbCAmIFBPUlRfUExMX0VOQUJMRSkpCj4gwqAJ CWdvdG8gb3V0Owo+IMKgCj4gLQlod19zdGF0ZS0+ZWJiMCA9IEk5MTVfUkVBRChCWFRfUE9SVF9Q TExfRUJCXzAocG9ydCkpOwo+ICsJaHdfc3RhdGUtPmViYjAgPSBJOTE1X1JFQUQoQlhUX1BPUlRf UExMX0VCQl8wKHBoeSwgY2gpKTsKPiDCoAlod19zdGF0ZS0+ZWJiMCAmPSBQT1JUX1BMTF9QMV9N QVNLIHwgUE9SVF9QTExfUDJfTUFTSzsKPiDCoAo+IC0JaHdfc3RhdGUtPmViYjQgPSBJOTE1X1JF QUQoQlhUX1BPUlRfUExMX0VCQl80KHBvcnQpKTsKPiArCWh3X3N0YXRlLT5lYmI0ID0gSTkxNV9S RUFEKEJYVF9QT1JUX1BMTF9FQkJfNChwaHksIGNoKSk7Cj4gwqAJaHdfc3RhdGUtPmViYjQgJj0g UE9SVF9QTExfMTBCSVRfQ0xLX0VOQUJMRTsKPiDCoAo+IC0JaHdfc3RhdGUtPnBsbDAgPSBJOTE1 X1JFQUQoQlhUX1BPUlRfUExMKHBvcnQsIDApKTsKPiArCWh3X3N0YXRlLT5wbGwwID0gSTkxNV9S RUFEKEJYVF9QT1JUX1BMTChwaHksIGNoLCAwKSk7Cj4gwqAJaHdfc3RhdGUtPnBsbDAgJj0gUE9S VF9QTExfTTJfTUFTSzsKPiDCoAo+IC0JaHdfc3RhdGUtPnBsbDEgPSBJOTE1X1JFQUQoQlhUX1BP UlRfUExMKHBvcnQsIDEpKTsKPiArCWh3X3N0YXRlLT5wbGwxID0gSTkxNV9SRUFEKEJYVF9QT1JU X1BMTChwaHksIGNoLCAxKSk7Cj4gwqAJaHdfc3RhdGUtPnBsbDEgJj0gUE9SVF9QTExfTl9NQVNL Owo+IMKgCj4gLQlod19zdGF0ZS0+cGxsMiA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTEwocG9ydCwg MikpOwo+ICsJaHdfc3RhdGUtPnBsbDIgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMKHBoeSwgY2gs IDIpKTsKPiDCoAlod19zdGF0ZS0+cGxsMiAmPSBQT1JUX1BMTF9NMl9GUkFDX01BU0s7Cj4gwqAK PiAtCWh3X3N0YXRlLT5wbGwzID0gSTkxNV9SRUFEKEJYVF9QT1JUX1BMTChwb3J0LCAzKSk7Cj4g Kwlod19zdGF0ZS0+cGxsMyA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTEwocGh5LCBjaCwgMykpOwo+ IMKgCWh3X3N0YXRlLT5wbGwzICY9IFBPUlRfUExMX00yX0ZSQUNfRU5BQkxFOwo+IMKgCj4gLQlo d19zdGF0ZS0+cGxsNiA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTEwocG9ydCwgNikpOwo+ICsJaHdf c3RhdGUtPnBsbDYgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMKHBoeSwgY2gsIDYpKTsKPiDCoAlo d19zdGF0ZS0+cGxsNiAmPSBQT1JUX1BMTF9QUk9QX0NPRUZGX01BU0sgfAo+IMKgCQkJwqDCoFBP UlRfUExMX0lOVF9DT0VGRl9NQVNLIHwKPiDCoAkJCcKgwqBQT1JUX1BMTF9HQUlOX0NUTF9NQVNL Owo+IMKgCj4gLQlod19zdGF0ZS0+cGxsOCA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTEwocG9ydCwg OCkpOwo+ICsJaHdfc3RhdGUtPnBsbDggPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMKHBoeSwgY2gs IDgpKTsKPiDCoAlod19zdGF0ZS0+cGxsOCAmPSBQT1JUX1BMTF9UQVJHRVRfQ05UX01BU0s7Cj4g wqAKPiAtCWh3X3N0YXRlLT5wbGw5ID0gSTkxNV9SRUFEKEJYVF9QT1JUX1BMTChwb3J0LCA5KSk7 Cj4gKwlod19zdGF0ZS0+cGxsOSA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTEwocGh5LCBjaCwgOSkp Owo+IMKgCWh3X3N0YXRlLT5wbGw5ICY9IFBPUlRfUExMX0xPQ0tfVEhSRVNIT0xEX01BU0s7Cj4g wqAKPiAtCWh3X3N0YXRlLT5wbGwxMCA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTEwocG9ydCwgMTAp KTsKPiArCWh3X3N0YXRlLT5wbGwxMCA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTEwocGh5LCBjaCwg MTApKTsKPiDCoAlod19zdGF0ZS0+cGxsMTAgJj0gUE9SVF9QTExfRENPX0FNUF9PVlJfRU5fSCB8 Cj4gwqAJCQnCoMKgwqBQT1JUX1BMTF9EQ09fQU1QX01BU0s7Cj4gwqAKPiBAQCAtMTUzMywxMSAr MTU0MSwxMSBAQCBzdGF0aWMgYm9vbCBieHRfZGRpX3BsbF9nZXRfaHdfc3RhdGUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IMKgCcKgKiBjYW4gcmVhZCBvbmx5IGxhbmUgcmVn aXN0ZXJzLiBXZSBjb25maWd1cmUgYWxsIGxhbmVzIHRoZSBzYW1lIHdheSwgc28KPiDCoAnCoCog aGVyZSBqdXN0IHJlYWQgb3V0IGxhbmVzIDAvMSBhbmQgb3V0cHV0IGEgbm90ZSBpZiBsYW5lcyAy LzMgZGlmZmVyLgo+IMKgCcKgKi8KPiAtCWh3X3N0YXRlLT5wY3NkdzEyID0gSTkxNV9SRUFEKEJY VF9QT1JUX1BDU19EVzEyX0xOMDEocG9ydCkpOwo+IC0JaWYgKEk5MTVfUkVBRChCWFRfUE9SVF9Q Q1NfRFcxMl9MTjIzKHBvcnQpKSAhPSBod19zdGF0ZS0+cGNzZHcxMikKPiArCWh3X3N0YXRlLT5w Y3NkdzEyID0gSTkxNV9SRUFEKEJYVF9QT1JUX1BDU19EVzEyX0xOMDEocGh5LCBjaCkpOwo+ICsJ aWYgKEk5MTVfUkVBRChCWFRfUE9SVF9QQ1NfRFcxMl9MTjIzKHBoeSwgY2gpKSAhPSBod19zdGF0 ZS0+cGNzZHcxMikKPiDCoAkJRFJNX0RFQlVHX0RSSVZFUigibGFuZSBzdGFnZ2VyIGNvbmZpZyBk aWZmZXJlbnQgZm9yIGxhbmUgMDEgKCUwOHgpIGFuZCAyMyAoJTA4eClcbiIsCj4gwqAJCQkJwqBo d19zdGF0ZS0+cGNzZHcxMiwKPiAtCQkJCcKgSTkxNV9SRUFEKEJYVF9QT1JUX1BDU19EVzEyX0xO MjMocG9ydCkpKTsKPiArCQkJCcKgSTkxNV9SRUFEKEJYVF9QT1JUX1BDU19EVzEyX0xOMjMocGh5 LCBjaCkpKTsKPiDCoAlod19zdGF0ZS0+cGNzZHcxMiAmPSBMQU5FX1NUQUdHRVJfTUFTSyB8IExB TkVTVEFHR0VSX1NUUkFQX09WUkQ7Cj4gwqAKPiDCoAlyZXQgPSB0cnVlOwpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK