From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Kurtz Subject: Re: [PATCH v13 06/14] drm/mediatek: Add HDMI support Date: Wed, 9 Mar 2016 21:52:24 +0800 Message-ID: References: <1457443649-12133-1-git-send-email-p.zabel@pengutronix.de> <1457443649-12133-7-git-send-email-p.zabel@pengutronix.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1457443649-12133-7-git-send-email-p.zabel@pengutronix.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Philipp Zabel Cc: Mark Rutland , Stephen Boyd , Michael Turquette , dri-devel , Jie Qiu , Cawa Cheng , YT Shen , Yingjoe Chen , "open list:OPEN FIRMWARE AND..." , Jitao Shi , Sasha Hauer , Pawel Moll , Ian Campbell , Rob Herring , "moderated list:ARM/Mediatek SoC support" , Matthias Brugger , Paul Bolle , Emil Velikov , Tomasz Figa , Kumar Gala List-Id: devicetree@vger.kernel.org SGkgUGhpbGlwcCAmIEppZSwKClNvcnJ5IEkgb25seSBub3cgaGFkIGEgY2hhbmNlIHRvIGRpZyBk ZWVwZXIgYW5kIHJldmlldyB0aGUgSERNSSBkcml2ZXIuCgpMb3RzIG9mIGNvbW1lbnRzIGlubGlu ZSBiZWxvdy4uLgoKT24gVHVlLCBNYXIgOCwgMjAxNiBhdCA5OjI3IFBNLCBQaGlsaXBwIFphYmVs IDxwLnphYmVsQHBlbmd1dHJvbml4LmRlPiB3cm90ZToKPiBGcm9tOiBKaWUgUWl1IDxqaWUucWl1 QG1lZGlhdGVrLmNvbT4KPgo+IFRoaXMgcGF0Y2ggYWRkcyBkcml2ZXJzIGZvciB0aGUgSERNSSBi cmlkZ2UgY29ubmVjdGVkIHRvIHRoZSBEUEkwCj4gZGlzcGxheSBzdWJzeXN0ZW0gZnVuY3Rpb24g YmxvY2ssIGZvciB0aGUgSERNSSBEREMgYmxvY2ssIGFuZCBmb3IKPiB0aGUgSERNSSBQSFkgdG8g c3VwcG9ydCBIRE1JIG91dHB1dC4KPgo+IFNpZ25lZC1vZmYtYnk6IEppZSBRaXUgPGppZS5xaXVA bWVkaWF0ZWsuY29tPgo+IFNpZ25lZC1vZmYtYnk6IFBoaWxpcHAgWmFiZWwgPHAuemFiZWxAcGVu Z3V0cm9uaXguZGU+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9LY29uZmlnICAg ICAgICAgICAgICAgfCAgIDcgKwo+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFrZWZpbGUg ICAgICAgICAgICAgIHwgICA5ICsKPiAgZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19jZWMu YyAgICAgICAgICAgICB8IDI0NSArKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRl ay9tdGtfY2VjLmggICAgICAgICAgICAgfCAgMjUgKwo+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0 ZWsvbXRrX2RybV9kcnYuYyAgICAgICAgIHwgICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL21lZGlh dGVrL210a19kcm1faGRtaV9kcnYuYyAgICB8IDU3OSArKysrKysrKysrKysrKysrKysrKysrCj4g IGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfaGRtaS5jICAgICAgICAgICAgfCA0NzkgKysr KysrKysrKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfaGRtaS5oICAg ICAgICAgICAgfCAyMjEgKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtf aGRtaV9kZGNfZHJ2LmMgICAgfCAzNjIgKysrKysrKysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJt L21lZGlhdGVrL210a19oZG1pX2h3LmMgICAgICAgICB8IDY1MiArKysrKysrKysrKysrKysrKysr KysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfaGRtaV9ody5oICAgICAgICAg fCAgNzMgKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfaGRtaV9yZWdzLmggICAg ICAgfCAyMjEgKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfbXQ4MTcz X2hkbWlfcGh5LmMgfCA1MDUgKysrKysrKysrKysrKysrKysrKwo+ICAxMyBmaWxlcyBjaGFuZ2Vk LCAzMzc5IGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2Ry bS9tZWRpYXRlay9tdGtfY2VjLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2Ry bS9tZWRpYXRlay9tdGtfY2VjLmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2Ry bS9tZWRpYXRlay9tdGtfZHJtX2hkbWlfZHJ2LmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfaGRtaS5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWkuaAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1pX2RkY19kcnYuYwo+ICBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1pX2h3LmMKPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfaGRtaV9ody5oCj4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWlfcmVncy5oCj4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX210ODE3M19o ZG1pX3BoeS5jCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL0tjb25m aWcgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvS2NvbmZpZwo+IGluZGV4IDBjNDlhOTQuLmUy ZmYxNTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL0tjb25maWcKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvS2NvbmZpZwo+IEBAIC0xMiwzICsxMiwxMCBA QCBjb25maWcgRFJNX01FRElBVEVLCj4gICAgICAgICAgIFRoZSBtb2R1bGUgd2lsbCBiZSBjYWxs ZWQgbWVkaWF0ZWstZHJtCj4gICAgICAgICAgIFRoaXMgZHJpdmVyIHByb3ZpZGVzIGtlcm5lbCBt b2RlIHNldHRpbmcgYW5kCj4gICAgICAgICAgIGJ1ZmZlciBtYW5hZ2VtZW50IHRvIHVzZXJzcGFj ZS4KPiArCj4gK2NvbmZpZyBEUk1fTUVESUFURUtfSERNSQo+ICsgICAgICAgdHJpc3RhdGUgIkRS TSBIRE1JIFN1cHBvcnQgZm9yIE1lZGlhdGVrIFNvQ3MiCj4gKyAgICAgICBkZXBlbmRzIG9uIERS TV9NRURJQVRFSwo+ICsgICAgICAgc2VsZWN0IEdFTkVSSUNfUEhZCj4gKyAgICAgICBoZWxwCj4g KyAgICAgICAgIERSTS9LTVMgSERNSSBkcml2ZXIgZm9yIE1lZGlhdGVrIFNvQ3MKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJt L21lZGlhdGVrL01ha2VmaWxlCj4gaW5kZXggNWZjZjU4ZS4uNmQ1M2JlZSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vbWVkaWF0ZWsvTWFrZWZpbGUKPiBAQCAtMTIsMyArMTIsMTIgQEAgbWVkaWF0ZWstZHJtLXkg Oj0gbXRrX2Rpc3Bfb3ZsLm8gXAo+ICAgICAgICAgICAgICAgICAgIG10a19kcGkubwo+Cj4gIG9i ai0kKENPTkZJR19EUk1fTUVESUFURUspICs9IG1lZGlhdGVrLWRybS5vCj4gKwo+ICttZWRpYXRl ay1kcm0taGRtaS1vYmpzIDo9IG10a19jZWMubyBcCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICBtdGtfZHJtX2hkbWlfZHJ2Lm8gXAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgbXRrX2hk bWkubyBcCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBtdGtfaGRtaV9kZGNfZHJ2Lm8gXAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgbXRrX2hkbWlfaHcubyBcCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICBtdGtfbXQ4MTczX2hkbWlfcGh5Lm8KPiArCj4gK29iai0kKENPTkZJR19E Uk1fTUVESUFURUtfSERNSSkgKz0gbWVkaWF0ZWstZHJtLWhkbWkubwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2NlYy5jIGIvZHJpdmVycy9ncHUvZHJtL21lZGlh dGVrL210a19jZWMuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uY2Jh MzY0Nwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRr X2NlYy5jCj4gQEAgLTAsMCArMSwyNDUgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IChjKSAyMDE0 IE1lZGlhVGVrIEluYy4KPiArICogQXV0aG9yOiBKaWUgUWl1IDxqaWUucWl1QG1lZGlhdGVrLmNv bT4KPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPiArICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKPiArICogcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsg KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgo+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCj4gKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCj4gKyAqLwo+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+Cj4gKyNpbmNsdWRl IDxsaW51eC9kZWxheS5oPgo+ICsjaW5jbHVkZSA8bGludXgvaW8uaD4KPiArI2luY2x1ZGUgPGxp bnV4L2ludGVycnVwdC5oPgo+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4g Kwo+ICsjaW5jbHVkZSAibXRrX2NlYy5oIgo+ICsKPiArI2RlZmluZSBUUl9DT05GSUcgICAgICAg ICAgICAgIDB4MDAKPiArI2RlZmluZSBDTEVBUl9DRUNfSVJRICAgICAgICAgICAgICAgICAgQklU KDE1KQo+ICsKPiArI2RlZmluZSBDRUNfQ0tHRU4gICAgICAgICAgICAgIDB4MDQKPiArI2RlZmlu ZSBDRUNfMzJLX1BETiAgICAgICAgICAgICAgICAgICAgQklUKDE5KQo+ICsjZGVmaW5lIFBETiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBCSVQoMTYpCj4gKwo+ICsjZGVmaW5lIFJYX0VWRU5U ICAgICAgICAgICAgICAgMHg1NAo+ICsjZGVmaW5lIEhETUlfUE9SRCAgICAgICAgICAgICAgICAg ICAgICBCSVQoMjUpCj4gKyNkZWZpbmUgSERNSV9IVFBMRyAgICAgICAgICAgICAgICAgICAgIEJJ VCgyNCkKPiArI2RlZmluZSBIRE1JX1BPUkRfSU5UX0VOICAgICAgICAgICAgICAgQklUKDkpCj4g KyNkZWZpbmUgSERNSV9IVFBMR19JTlRfRU4gICAgICAgICAgICAgIEJJVCg4KQo+ICsKPiArI2Rl ZmluZSBSWF9HRU5fV0QgICAgICAgICAgICAgIDB4NTgKPiArI2RlZmluZSBIRE1JX1BPUkRfSU5U XzMyS19TVEFUVVMgICAgICAgQklUKDI2KQo+ICsjZGVmaW5lIFJYX1JJU0NfSU5UXzMyS19TVEFU VVMgICAgICAgICBCSVQoMjUpCj4gKyNkZWZpbmUgSERNSV9IVFBMR19JTlRfMzJLX1NUQVRVUyAg ICAgIEJJVCgyNCkKPiArI2RlZmluZSBIRE1JX1BPUkRfSU5UXzMyS19DTFIgICAgICAgICAgQklU KDE4KQo+ICsjZGVmaW5lIFJYX0lOVF8zMktfQ0xSICAgICAgICAgICAgICAgICBCSVQoMTcpCj4g KyNkZWZpbmUgSERNSV9IVFBMR19JTlRfMzJLX0NMUiAgICAgICAgIEJJVCgxNikKPiArI2RlZmlu ZSBIRE1JX1BPUkRfSU5UXzMyS19TVEFfTUFTSyAgICAgQklUKDEwKQo+ICsjZGVmaW5lIFJYX1JJ U0NfSU5UXzMyS19TVEFfTUFTSyAgICAgICBCSVQoOSkKPiArI2RlZmluZSBIRE1JX0hUUExHX0lO VF8zMktfU1RBX01BU0sgICAgQklUKDgpCj4gKyNkZWZpbmUgSERNSV9QT1JEX0lOVF8zMktfRU4g ICAgICAgICAgIEJJVCgyKQo+ICsjZGVmaW5lIFJYX0lOVF8zMktfRU4gICAgICAgICAgICAgICAg ICBCSVQoMSkKPiArI2RlZmluZSBIRE1JX0hUUExHX0lOVF8zMktfRU4gICAgICAgICAgQklUKDAp Cj4gKwo+ICsjZGVmaW5lIE5PUk1BTF9JTlRfQ1RSTCAgICAgICAgICAgICAgICAweDVDCj4gKyNk ZWZpbmUgSERNSV9IVFBMR19JTlRfU1RBICAgICAgICAgICAgIEJJVCgwKQo+ICsjZGVmaW5lIEhE TUlfUE9SRF9JTlRfU1RBICAgICAgICAgICAgICBCSVQoMSkKPiArI2RlZmluZSBIRE1JX0hUUExH X0lOVF9DTFIgICAgICAgICAgICAgQklUKDE2KQo+ICsjZGVmaW5lIEhETUlfUE9SRF9JTlRfQ0xS ICAgICAgICAgICAgICBCSVQoMTcpCj4gKyNkZWZpbmUgSERNSV9GVUxMX0lOVF9DTFIgICAgICAg ICAgICAgIEJJVCgyMCkKPiArCj4gK3N0cnVjdCBtdGtfY2VjIHsKPiArICAgICAgIHZvaWQgX19p b21lbSAqcmVnczsKPiArICAgICAgIHN0cnVjdCBjbGsgKmNsazsKPiArICAgICAgIGludCBpcnE7 Cj4gKyAgICAgICBib29sIGhwZDsKPiArICAgICAgIHZvaWQgKCpocGRfZXZlbnQpKGJvb2wgaHBk LCBzdHJ1Y3QgZGV2aWNlICpkZXYpOwo+ICsgICAgICAgc3RydWN0IGRldmljZSAqaGRtaV9kZXY7 Cj4gK307Cj4gKwo+ICtzdGF0aWMgdm9pZCBtdGtfY2VjX21hc2soc3RydWN0IG10a19jZWMgKmNl YywgdW5zaWduZWQgaW50IG9mZnNldCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50IHZhbCwgdW5zaWduZWQgaW50IG1hc2spCj4gK3sKPiArICAgICAgIHUzMiB0bXAgPSBy ZWFkbChjZWMtPnJlZ3MgKyBvZmZzZXQpICYgfm1hc2s7Cj4gKwo+ICsgICAgICAgdG1wIHw9IHZh bCAmIG1hc2s7Cj4gKyAgICAgICB3cml0ZWwodmFsLCBjZWMtPnJlZ3MgKyBvZmZzZXQpOwo+ICt9 Cj4gKwo+ICt2b2lkIG10a19jZWNfc2V0X2hwZF9ldmVudChzdHJ1Y3QgZGV2aWNlICpkZXYsCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKmhwZF9ldmVudCkoYm9vbCBocGQsIHN0 cnVjdCBkZXZpY2UgKmRldiksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRl dmljZSAqaGRtaV9kZXYpCj4gK3sKPiArICAgICAgIHN0cnVjdCBtdGtfY2VjICpjZWMgPSBkZXZf Z2V0X2RydmRhdGEoZGV2KTsKPiArCj4gKyAgICAgICBjZWMtPmhkbWlfZGV2ID0gaGRtaV9kZXY7 Cj4gKyAgICAgICBjZWMtPmhwZF9ldmVudCA9IGhwZF9ldmVudDsKCkxvY2sgdGhpcyBzbyB0byBw cmV2ZW50IHJhY2Ugd2l0aCB0aGUgaXJxPwoKPiArfQo+ICsKPiArYm9vbCBtdGtfY2VjX2hwZF9o aWdoKHN0cnVjdCBkZXZpY2UgKmRldikKPiArewo+ICsgICAgICAgc3RydWN0IG10a19jZWMgKmNl YyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICsgICAgICAgdW5zaWduZWQgaW50IHN0YXR1czsK PiArCj4gKyAgICAgICBzdGF0dXMgPSByZWFkbChjZWMtPnJlZ3MgKyBSWF9FVkVOVCk7Cj4gKwo+ ICsgICAgICAgcmV0dXJuIChzdGF0dXMgJiAoSERNSV9QT1JEIHwgSERNSV9IVFBMRykpID09IChI RE1JX1BPUkQgfCBIRE1JX0hUUExHKTsKPiArfQo+ICsKPiAraW50IG10a19jZWNfaXJxKHN0cnVj dCBkZXZpY2UgKmRldikKCkFGQUlDVCwgdGhpcyBmdW5jdGlvbiBpcyBuZXZlciB1c2VkLgoKPiAr ewo+ICsgICAgICAgc3RydWN0IG10a19jZWMgKmNlYyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ ICsKPiArICAgICAgIHJldHVybiBjZWMtPmlycTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbXRr X2NlY19odHBsZ19pcnFfZW5hYmxlKHN0cnVjdCBtdGtfY2VjICpjZWMpCj4gK3sKPiArICAgICAg IG10a19jZWNfbWFzayhjZWMsIENFQ19DS0dFTiwgMCwgUEROKTsKPiArICAgICAgIG10a19jZWNf bWFzayhjZWMsIENFQ19DS0dFTiwgQ0VDXzMyS19QRE4sIENFQ18zMktfUEROKTsKPiArICAgICAg IG10a19jZWNfbWFzayhjZWMsIFJYX0dFTl9XRCwgSERNSV9QT1JEX0lOVF8zMktfQ0xSLAo+ICsg ICAgICAgICAgICAgICAgICAgIEhETUlfUE9SRF9JTlRfMzJLX0NMUik7Cj4gKyAgICAgICBtdGtf Y2VjX21hc2soY2VjLCBSWF9HRU5fV0QsIFJYX0lOVF8zMktfQ0xSLCBSWF9JTlRfMzJLX0NMUik7 Cj4gKyAgICAgICBtdGtfY2VjX21hc2soY2VjLCBSWF9HRU5fV0QsIEhETUlfSFRQTEdfSU5UXzMy S19DTFIsCj4gKyAgICAgICAgICAgICAgICAgICAgSERNSV9IVFBMR19JTlRfMzJLX0NMUik7Cj4g KyAgICAgICBtdGtfY2VjX21hc2soY2VjLCBSWF9HRU5fV0QsIDAsIEhETUlfUE9SRF9JTlRfMzJL X0NMUik7Cj4gKyAgICAgICBtdGtfY2VjX21hc2soY2VjLCBSWF9HRU5fV0QsIDAsIFJYX0lOVF8z MktfQ0xSKTsKPiArICAgICAgIG10a19jZWNfbWFzayhjZWMsIFJYX0dFTl9XRCwgMCwgSERNSV9I VFBMR19JTlRfMzJLX0NMUik7Cj4gKyAgICAgICBtdGtfY2VjX21hc2soY2VjLCBSWF9HRU5fV0Qs IDAsIEhETUlfUE9SRF9JTlRfMzJLX0VOKTsKPiArICAgICAgIG10a19jZWNfbWFzayhjZWMsIFJY X0dFTl9XRCwgMCwgUlhfSU5UXzMyS19FTik7Cj4gKyAgICAgICBtdGtfY2VjX21hc2soY2VjLCBS WF9HRU5fV0QsIDAsIEhETUlfSFRQTEdfSU5UXzMyS19FTik7CgpUaGlzIGlzIGEgYml0IHdhc3Rl ZnVsLiAgQ2FuIHlvdSBqdXN0IGNsZWFyIGFsbCBvZiB0aGVzZSBiaXRzIGluIGEgc2luZ2xlIHdy aXRlPwoodGhpcyBhcHBsaWVzIHRvIHRoaXMgZW50aXJlIGZpbGUpLgoKPiArCj4gKyAgICAgICBt dGtfY2VjX21hc2soY2VjLCBSWF9FVkVOVCwgSERNSV9QT1JEX0lOVF9FTiwgSERNSV9QT1JEX0lO VF9FTik7Cj4gKyAgICAgICBtdGtfY2VjX21hc2soY2VjLCBSWF9FVkVOVCwgSERNSV9IVFBMR19J TlRfRU4sIEhETUlfSFRQTEdfSU5UX0VOKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbXRrX2Nl Y19odHBsZ19pcnFfZGlzYWJsZShzdHJ1Y3QgbXRrX2NlYyAqY2VjKQo+ICt7CgpXaHkgZG9lcyBp cnFfZW5hYmxlIGRvIHNvIG11Y2ggbW9yZSB3b3JrIHRoYW4gaXJxX2Rpc2FibGU/Cgo+ICsgICAg ICAgbXRrX2NlY19tYXNrKGNlYywgUlhfRVZFTlQsIDAsIEhETUlfUE9SRF9JTlRfRU4pOwo+ICsg ICAgICAgbXRrX2NlY19tYXNrKGNlYywgUlhfRVZFTlQsIDAsIEhETUlfSFRQTEdfSU5UX0VOKTsK PiArfQo+ICsKPiArc3RhdGljIHZvaWQgbXRrX2NlY19jbGVhcl9odHBsZ19pcnEoc3RydWN0IG10 a19jZWMgKmNlYykKPiArewo+ICsgICAgICAgbXRrX2NlY19tYXNrKGNlYywgVFJfQ09ORklHLCBD TEVBUl9DRUNfSVJRLCBDTEVBUl9DRUNfSVJRKTsKPiArICAgICAgIG10a19jZWNfbWFzayhjZWMs IE5PUk1BTF9JTlRfQ1RSTCwgSERNSV9IVFBMR19JTlRfQ0xSLAo+ICsgICAgICAgICAgICAgICAg ICAgIEhETUlfSFRQTEdfSU5UX0NMUik7Cj4gKyAgICAgICBtdGtfY2VjX21hc2soY2VjLCBOT1JN QUxfSU5UX0NUUkwsIEhETUlfUE9SRF9JTlRfQ0xSLAo+ICsgICAgICAgICAgICAgICAgICAgIEhE TUlfUE9SRF9JTlRfQ0xSKTsKPiArICAgICAgIG10a19jZWNfbWFzayhjZWMsIE5PUk1BTF9JTlRf Q1RSTCwgSERNSV9GVUxMX0lOVF9DTFIsCj4gKyAgICAgICAgICAgICAgICAgICAgSERNSV9GVUxM X0lOVF9DTFIpOwo+ICsgICAgICAgbXRrX2NlY19tYXNrKGNlYywgUlhfR0VOX1dELCBIRE1JX1BP UkRfSU5UXzMyS19DTFIsCj4gKyAgICAgICAgICAgICAgICAgICAgSERNSV9QT1JEX0lOVF8zMktf Q0xSKTsKPiArICAgICAgIG10a19jZWNfbWFzayhjZWMsIFJYX0dFTl9XRCwgUlhfSU5UXzMyS19D TFIsIFJYX0lOVF8zMktfQ0xSKTsKPiArICAgICAgIG10a19jZWNfbWFzayhjZWMsIFJYX0dFTl9X RCwgSERNSV9IVFBMR19JTlRfMzJLX0NMUiwKPiArICAgICAgICAgICAgICAgICAgICBIRE1JX0hU UExHX0lOVF8zMktfQ0xSKTsKPiArICAgICAgIHVkZWxheSg1KTsKCkRvIHlvdSByZWFsbHkgbmVl ZCB0aGlzIGRlbGF5IGluIHRoZSBtaWRkbGUgb2YgdGhlIGlzciBoYW5kbGVyPwoKPiArICAgICAg IG10a19jZWNfbWFzayhjZWMsIE5PUk1BTF9JTlRfQ1RSTCwgMCwgSERNSV9IVFBMR19JTlRfQ0xS KTsKPiArICAgICAgIG10a19jZWNfbWFzayhjZWMsIE5PUk1BTF9JTlRfQ1RSTCwgMCwgSERNSV9Q T1JEX0lOVF9DTFIpOwo+ICsgICAgICAgbXRrX2NlY19tYXNrKGNlYywgVFJfQ09ORklHLCAwLCBD TEVBUl9DRUNfSVJRKTsKPiArICAgICAgIG10a19jZWNfbWFzayhjZWMsIE5PUk1BTF9JTlRfQ1RS TCwgMCwgSERNSV9GVUxMX0lOVF9DTFIpOwo+ICsgICAgICAgbXRrX2NlY19tYXNrKGNlYywgUlhf R0VOX1dELCAwLCBIRE1JX1BPUkRfSU5UXzMyS19DTFIpOwo+ICsgICAgICAgbXRrX2NlY19tYXNr KGNlYywgUlhfR0VOX1dELCAwLCBSWF9JTlRfMzJLX0NMUik7Cj4gKyAgICAgICBtdGtfY2VjX21h c2soY2VjLCBSWF9HRU5fV0QsIDAsIEhETUlfSFRQTEdfSU5UXzMyS19DTFIpOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgaXJxcmV0dXJuX3QgbXRrX2NlY19odHBsZ19pc3JfdGhyZWFkKGludCBpcnEsIHZv aWQgKmFyZykKPiArewo+ICsgICAgICAgc3RydWN0IGRldmljZSAqZGV2ID0gYXJnOwo+ICsgICAg ICAgc3RydWN0IG10a19jZWMgKmNlYyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICsgICAgICAg Ym9vbCBocGQ7Cj4gKwo+ICsgICAgICAgbXRrX2NlY19jbGVhcl9odHBsZ19pcnEoY2VjKTsKPiAr ICAgICAgIGhwZCA9IG10a19jZWNfaHBkX2hpZ2goZGV2KTsKPiArCj4gKyAgICAgICBpZiAoY2Vj LT5ocGQgIT0gaHBkKSB7Cj4gKyAgICAgICAgICAgICAgIGRldl9pbmZvKGRldiwgImhvdHBsdWcg ZXZlbnQhLGN1ciBocGQgPSAlZCwgaHBkID0gJWRcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgIGNlYy0+aHBkLCBocGQpOwoKZGV2X2RiZyBpZiBhbnl0aGluZwoKPiArICAgICAgICAgICAg ICAgY2VjLT5ocGQgPSBocGQ7Cj4gKyAgICAgICAgICAgICAgIGlmIChjZWMtPmhwZF9ldmVudCkK PiArICAgICAgICAgICAgICAgICAgICAgICBjZWMtPmhwZF9ldmVudChocGQsIGNlYy0+aGRtaV9k ZXYpOwo+ICsgICAgICAgfQo+ICsgICAgICAgcmV0dXJuIElSUV9IQU5ETEVEOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgaW50IG10a19jZWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikK PiArewo+ICsgICAgICAgc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKPiArICAgICAg IHN0cnVjdCBtdGtfY2VjICpjZWM7Cj4gKyAgICAgICBzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKPiAr ICAgICAgIGludCByZXQ7Cj4gKwo+ICsgICAgICAgY2VjID0gZGV2bV9remFsbG9jKGRldiwgc2l6 ZW9mKCpjZWMpLCBHRlBfS0VSTkVMKTsKPiArICAgICAgIGlmICghY2VjKQo+ICsgICAgICAgICAg ICAgICByZXR1cm4gLUVOT01FTTsKPiArCj4gKyAgICAgICBwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShw ZGV2LCBjZWMpOwo+ICsKPiArICAgICAgIHJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2 LCBJT1JFU09VUkNFX01FTSwgMCk7Cj4gKyAgICAgICBjZWMtPnJlZ3MgPSBkZXZtX2lvcmVtYXBf cmVzb3VyY2UoZGV2LCByZXMpOwo+ICsgICAgICAgaWYgKElTX0VSUihjZWMtPnJlZ3MpKSB7Cj4g KyAgICAgICAgICAgICAgIHJldCA9IFBUUl9FUlIoY2VjLT5yZWdzKTsKPiArICAgICAgICAgICAg ICAgZGV2X2VycihkZXYsICJGYWlsZWQgdG8gaW9yZW1hcCBjZWM6ICVkXG4iLCByZXQpOwo+ICsg ICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGNlYy0+ Y2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgTlVMTCk7Cj4gKyAgICAgICBpZiAoSVNfRVJSKGNlYy0+ Y2xrKSkgewo+ICsgICAgICAgICAgICAgICByZXQgPSBQVFJfRVJSKGNlYy0+Y2xrKTsKPiArICAg ICAgICAgICAgICAgZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZ2V0IGNlYyBjbG9jazogJWRcbiIs IHJldCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICAgICB9Cj4gKwo+ICsg ICAgICAgY2VjLT5pcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDApOwo+ICsgICAgICAgaWYg KGNlYy0+aXJxIDwgMCkgewo+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgIkZhaWxlZCB0 byBnZXQgY2VjIGlycTogJWRcbiIsIGNlYy0+aXJxKTsKPiArICAgICAgICAgICAgICAgcmV0dXJu IGNlYy0+aXJxOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHJldCA9IGRldm1fcmVxdWVzdF90 aHJlYWRlZF9pcnEoZGV2LCBjZWMtPmlycSwgTlVMTCwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbXRrX2NlY19odHBsZ19pc3JfdGhyZWFkLAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUlFGX1NIQVJFRCB8IElSUUZfVFJJR0dFUl9M T1cgfAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUlFGX09ORVNI T1QsICJoZG1pIGhwZCIsIGRldik7Cj4gKyAgICAgICBpZiAocmV0KSB7Cj4gKyAgICAgICAgICAg ICAgIGRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIHJlZ2lzdGVyIGNlYyBpcnE6ICVkXG4iLCByZXQp Owo+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgICAgfQo+ICsKPiArICAgICAg IHJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShjZWMtPmNsayk7Cj4gKyAgICAgICBpZiAocmV0KSB7 Cj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGVuYWJsZSBjZWMgY2xv Y2s6ICVkXG4iLCByZXQpOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgICAg fQo+ICsKPiArICAgICAgIG10a19jZWNfaHRwbGdfaXJxX2VuYWJsZShjZWMpOwo+ICsKPiArICAg ICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG10a19jZWNfcmVtb3ZlKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gK3sKPiArICAgICAgIHN0cnVjdCBtdGtfY2VjICpj ZWMgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKPiArCj4gKyAgICAgICBtdGtfY2VjX2h0 cGxnX2lycV9kaXNhYmxlKGNlYyk7Cj4gKyAgICAgICBjbGtfZGlzYWJsZV91bnByZXBhcmUoY2Vj LT5jbGspOwo+ICsgICAgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3Qgb2ZfZGV2aWNlX2lkIG10a19jZWNfb2ZfaWRzW10gPSB7Cj4gKyAgICAgICB7IC5jb21wYXRp YmxlID0gIm1lZGlhdGVrLG10ODE3My1jZWMiLCB9LAo+ICsgICAgICAge30KPiArfTsKPiArCj4g K3N0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2NlY19kcml2ZXIgPSB7Cj4gKyAgICAgICAucHJv YmUgPSBtdGtfY2VjX3Byb2JlLAo+ICsgICAgICAgLnJlbW92ZSA9IG10a19jZWNfcmVtb3ZlLAo+ ICsgICAgICAgLmRyaXZlciA9IHsKPiArICAgICAgICAgICAgICAgLm5hbWUgPSAibWVkaWF0ZWst Y2VjIiwKPiArICAgICAgICAgICAgICAgLm9mX21hdGNoX3RhYmxlID0gbXRrX2NlY19vZl9pZHMs Cj4gKyAgICAgICB9LAo+ICt9Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0 ZWsvbXRrX2NlYy5oIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19jZWMuaAo+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uZmU2ZThmZAo+IC0tLSAvZGV2L251bGwK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2NlYy5oCj4gQEAgLTAsMCArMSwy NSBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTQgTWVkaWFUZWsgSW5jLgo+ICsgKiBB dXRob3I6IEppZSBRaXUgPGppZS5xaXVAbWVkaWF0ZWsuY29tPgo+ICsgKgo+ICsgKiBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIHZlcnNpb24gMiBhcwo+ICsgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbi4KPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKPiAr ICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiArICovCj4g KyNpZm5kZWYgX01US19DRUNfSAo+ICsjZGVmaW5lIF9NVEtfQ0VDX0gKPiArCj4gK3N0cnVjdCBk ZXZpY2U7Cj4gKwo+ICt2b2lkIG10a19jZWNfc2V0X2hwZF9ldmVudChzdHJ1Y3QgZGV2aWNlICpk ZXYsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKmhvdHBsdWdfZXZlbnQpKGJv b2wgaHBkLCBzdHJ1Y3QgZGV2aWNlICpkZXYpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBkZXZpY2UgKmhkbWlfZGV2KTsKPiArYm9vbCBtdGtfY2VjX2hwZF9oaWdoKHN0cnVj dCBkZXZpY2UgKmRldik7Cj4gK2ludCBtdGtfY2VjX2lycShzdHJ1Y3QgZGV2aWNlICpkZXYpOwo+ ICsKPiArI2VuZGlmIC8qIF9NVEtfQ0VDX0ggKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRr X2RybV9kcnYuYwo+IGluZGV4IGE2OTk1OGMuLjgwMDU2ZDEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v bWVkaWF0ZWsvbXRrX2RybV9kcnYuYwo+IEBAIC0yMyw2ICsyMyw3IEBACj4gICNpbmNsdWRlIDxs aW51eC9vZl9wbGF0Zm9ybS5oPgo+ICAjaW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5oPgo+Cj4g KyNpbmNsdWRlICJtdGtfY2VjLmgiCj4gICNpbmNsdWRlICJtdGtfZHJtX2NydGMuaCIKPiAgI2lu Y2x1ZGUgIm10a19kcm1fZGRwLmgiCj4gICNpbmNsdWRlICJtdGtfZHJtX2RkcF9jb21wLmgiCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2hkbWlfZHJ2LmMg Yi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9oZG1pX2Rydi5jCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5mZjY2MWUwCj4gLS0tIC9kZXYvbnVsbAo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2hkbWlfZHJ2LmMKPiBAQCAtMCww ICsxLDU3OSBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTQgTWVkaWFUZWsgSW5jLgo+ ICsgKiBBdXRob3I6IEppZSBRaXUgPGppZS5xaXVAbWVkaWF0ZWsuY29tPgo+ICsgKgo+ICsgKiBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwo+ICsgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbi4KPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gKyAqIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gKyAqIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKPiArICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiAr ICovCj4gKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNf aGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KPiArI2luY2x1ZGUgPGRybS9k cm1fY3J0Y19oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fZWRpZC5oPgo+ICsjaW5jbHVk ZSA8bGludXgvY2xrLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4KPiArI2luY2x1ZGUgPGxp bnV4L2tlcm5lbC5oPgo+ICsjaW5jbHVkZSA8bGludXgvbWZkL3N5c2Nvbi5oPgo+ICsjaW5jbHVk ZSA8bGludXgvb2ZfcGxhdGZvcm0uaD4KPiArI2luY2x1ZGUgPGxpbnV4L29mLmg+Cj4gKyNpbmNs dWRlIDxsaW51eC9vZl9ncGlvLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9vZl9ncmFwaC5oPgo+ICsj aW5jbHVkZSA8bGludXgvcGh5L3BoeS5oPgo+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2 aWNlLmg+Cj4gKyNpbmNsdWRlICJtdGtfY2VjLmgiCj4gKyNpbmNsdWRlICJtdGtfaGRtaS5oIgo+ ICsjaW5jbHVkZSAibXRrX2hkbWlfaHcuaCIKPiArCj4gK3N0YXRpYyBjb25zdCBjaGFyICogY29u c3QgbXRrX2hkbWlfY2xrX25hbWVzW01US19IRE1JX0NMS19DT1VOVF0gPSB7Cj4gKyAgICAgICBb TVRLX0hETUlfQ0xLX0hETUlfUElYRUxdID0gInBpeGVsIiwKPiArICAgICAgIFtNVEtfSERNSV9D TEtfSERNSV9QTExdID0gInBsbCIsCj4gKyAgICAgICBbTVRLX0hETUlfQ0xLX0FVRF9CQ0xLXSA9 ICJiY2xrIiwKPiArICAgICAgIFtNVEtfSERNSV9DTEtfQVVEX1NQRElGXSA9ICJzcGRpZiIsCj4g K307Cj4gKwo+ICtzdGF0aWMgY29uc3QgZW51bSBtdGtfaGRtaV9jbGtfaWQgbXRrX2hkbWlfZW5h YmxlX2Nsb2Nrc1tdID0gewo+ICsgICAgICAgTVRLX0hETUlfQ0xLX0FVRF9CQ0xLLAo+ICsgICAg ICAgTVRLX0hETUlfQ0xLX0FVRF9TUERJRiwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgbXRrX2hk bWlfZ2V0X2FsbF9jbGsoc3RydWN0IG10a19oZG1pICpoZG1pLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IGRldmljZV9ub2RlICpucCkKPiArewo+ICsgICAgICAgaW50 IGk7Cj4gKwo+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUobXRrX2hkbWlfY2xr X25hbWVzKTsgaSsrKSB7Cj4gKyAgICAgICAgICAgICAgIGhkbWktPmNsa1tpXSA9IG9mX2Nsa19n ZXRfYnlfbmFtZShucCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG10a19oZG1pX2Nsa19uYW1lc1tpXSk7Cj4gKyAgICAgICAgICAgICAgIGlmIChJ U19FUlIoaGRtaS0+Y2xrW2ldKSkKPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUFRS X0VSUihoZG1pLT5jbGtbaV0pOwo+ICsgICAgICAgfQo+ICsgICAgICAgcmV0dXJuIDA7Cj4gK30K PiArCj4gK3N0YXRpYyBpbnQgbXRrX2hkbWlfY2xrX2VuYWJsZV9hdWRpbyhzdHJ1Y3QgbXRrX2hk bWkgKmhkbWkpCj4gK3sKPiArICAgICAgIGludCByZXQ7Cj4gKwo+ICsgICAgICAgcmV0ID0gY2xr X3ByZXBhcmVfZW5hYmxlKGhkbWktPmNsa1tNVEtfSERNSV9DTEtfQVVEX0JDTEtdKTsKPiArICAg ICAgIGlmIChyZXQpCj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKwo+ICsgICAgICAg cmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGhkbWktPmNsa1tNVEtfSERNSV9DTEtfQVVEX1NQRElG XSk7Cj4gKyAgICAgICBpZiAocmV0KQo+ICsgICAgICAgICAgICAgICBnb3RvIGVycjsKPiArCj4g KyAgICAgICByZXR1cm4gMDsKPiArZXJyOgo+ICsgICAgICAgY2xrX2Rpc2FibGVfdW5wcmVwYXJl KGhkbWktPmNsa1tNVEtfSERNSV9DTEtfQVVEX0JDTEtdKTsKPiArICAgICAgIHJldHVybiByZXQ7 Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIG10a19oZG1pX2Nsa19kaXNhYmxlX2F1ZGlvKHN0cnVj dCBtdGtfaGRtaSAqaGRtaSkKPiArewo+ICsgICAgICAgY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGhk bWktPmNsa1tNVEtfSERNSV9DTEtfQVVEX0JDTEtdKTsKPiArICAgICAgIGNsa19kaXNhYmxlX3Vu cHJlcGFyZShoZG1pLT5jbGtbTVRLX0hETUlfQ0xLX0FVRF9TUERJRl0pOwo+ICt9Cj4gKwo+ICtz dGF0aWMgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBoZG1pX2Nvbm5fZGV0ZWN0KHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYm9vbCBmb3JjZSkKPiArewo+ICsgICAgICAgc3RydWN0IG10a19oZG1p ICpoZG1pID0gaGRtaV9jdHhfZnJvbV9jb25uKGNvbm4pOwo+ICsKPiArICAgICAgIHJldHVybiBt dGtfaGRtaV9ocGRfaGlnaChoZG1pKSA/Cj4gKyAgICAgICAgICAgICAgY29ubmVjdG9yX3N0YXR1 c19jb25uZWN0ZWQgOiBjb25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsKPiArfQo+ICsKPiAr c3RhdGljIHZvaWQgaGRtaV9jb25uX2Rlc3Ryb3koc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm4p Cj4gK3sKPiArICAgICAgIHN0cnVjdCBtdGtfaGRtaSAqaGRtaSA9IGhkbWlfY3R4X2Zyb21fY29u bihjb25uKTsKPiArCj4gKyAgICAgICBtdGtfY2VjX3NldF9ocGRfZXZlbnQoaGRtaS0+Y2VjX2Rl diwgTlVMTCwgTlVMTCk7Cj4gKwo+ICsgICAgICAgZHJtX2Nvbm5lY3Rvcl91bnJlZ2lzdGVyKGNv bm4pOwo+ICsgICAgICAgZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwKGNvbm4pOwo+ICt9Cj4gKwo+ICtz dGF0aWMgaW50IGhkbWlfY29ubl9zZXRfcHJvcGVydHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm4sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fcHJvcGVy dHkgKnByb3BlcnR5LCB1aW50NjRfdCB2YWwpCj4gK3sKPiArICAgICAgIHJldHVybiAwOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgaW50IG10a19oZG1pX2Nvbm5fZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbXRrX2hkbWkgKmhkbWkgPSBoZG1p X2N0eF9mcm9tX2Nvbm4oY29ubik7Cj4gKyAgICAgICBzdHJ1Y3QgZWRpZCAqZWRpZDsKPiArICAg ICAgIGludCByZXQ7Cj4gKwo+ICsgICAgICAgaWYgKCFoZG1pLT5kZGNfYWRwdCkKPiArICAgICAg ICAgICAgICAgcmV0dXJuIC1FTk9ERVY7Cj4gKwo+ICsgICAgICAgZWRpZCA9IGRybV9nZXRfZWRp ZChjb25uLCBoZG1pLT5kZGNfYWRwdCk7Cj4gKyAgICAgICBpZiAoIWVkaWQpCj4gKyAgICAgICAg ICAgICAgIHJldHVybiAtRU5PREVWOwo+ICsKPiArICAgICAgIGhkbWktPmR2aV9tb2RlID0gIWRy bV9kZXRlY3RfbW9uaXRvcl9hdWRpbyhlZGlkKTsKPiArCj4gKyAgICAgICBkcm1fbW9kZV9jb25u ZWN0b3JfdXBkYXRlX2VkaWRfcHJvcGVydHkoY29ubiwgZWRpZCk7Cj4gKwo+ICsgICAgICAgcmV0 ID0gZHJtX2FkZF9lZGlkX21vZGVzKGNvbm4sIGVkaWQpOwo+ICsgICAgICAgZHJtX2VkaWRfdG9f ZWxkKGNvbm4sIGVkaWQpOwo+ICsgICAgICAga2ZyZWUoZWRpZCk7Cj4gKyAgICAgICByZXR1cm4g cmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG10a19oZG1pX2Nvbm5fbW9kZV92YWxpZChzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKPiArewo+ICsgICAgICAgc3RydWN0 IG10a19oZG1pICpoZG1pID0gaGRtaV9jdHhfZnJvbV9jb25uKGNvbm4pOwo+ICsKPiArICAgICAg IGRldl9kYmcoaGRtaS0+ZGV2LCAieHJlcz0lZCwgeXJlcz0lZCwgcmVmcmVzaD0lZCwgaW50bD0l ZCBjbG9jaz0lZFxuIiwKPiArICAgICAgICAgICAgICAgbW9kZS0+aGRpc3BsYXksIG1vZGUtPnZk aXNwbGF5LCBtb2RlLT52cmVmcmVzaCwKPiArICAgICAgICAgICAgICAgISEobW9kZS0+ZmxhZ3Mg JiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSksIG1vZGUtPmNsb2NrICogMTAwMCk7Cj4gKwo+ICsg ICAgICAgaWYgKGhkbWktPmJyaWRnZS5uZXh0KSB7Cj4gKyAgICAgICAgICAgICAgIHN0cnVjdCBk cm1fZGlzcGxheV9tb2RlIGFkanVzdGVkX21vZGU7Cj4gKwo+ICsgICAgICAgICAgICAgICBkcm1f bW9kZV9jb3B5KCZhZGp1c3RlZF9tb2RlLCBtb2RlKTsKPiArICAgICAgICAgICAgICAgaWYgKCFk cm1fYnJpZGdlX21vZGVfZml4dXAoaGRtaS0+YnJpZGdlLm5leHQsIG1vZGUsCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhZGp1c3RlZF9tb2RlKSkKPiArICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gTU9ERV9CQUQ7Cj4gKyAgICAgICB9Cj4gKwo+ICsg ICAgICAgaWYgKG1vZGUtPmNsb2NrIDwgMjcwMDApCj4gKyAgICAgICAgICAgICAgIHJldHVybiBN T0RFX0NMT0NLX0xPVzsKPiArICAgICAgIGlmIChtb2RlLT5jbG9jayA+IDI5NzAwMCkKPiArICAg ICAgICAgICAgICAgcmV0dXJuIE1PREVfQ0xPQ0tfSElHSDsKPiArCj4gKyAgICAgICByZXR1cm4g ZHJtX21vZGVfdmFsaWRhdGVfc2l6ZShtb2RlLCAweDFmZmYsIDB4MWZmZik7Cj4gK30KPiArCj4g K3N0YXRpYyBzdHJ1Y3QgZHJtX2VuY29kZXIgKm10a19oZG1pX2Nvbm5fYmVzdF9lbmMoc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm4pCj4gK3sKPiArICAgICAgIHN0cnVjdCBtdGtfaGRtaSAqaGRt aSA9IGhkbWlfY3R4X2Zyb21fY29ubihjb25uKTsKPiArCj4gKyAgICAgICByZXR1cm4gaGRtaS0+ YnJpZGdlLmVuY29kZXI7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5l Y3Rvcl9mdW5jcyBtdGtfaGRtaV9jb25uZWN0b3JfZnVuY3MgPSB7Cj4gKyAgICAgICAuZHBtcyA9 IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kcG1zLAo+ICsgICAgICAgLmRldGVjdCA9IGhk bWlfY29ubl9kZXRlY3QsCj4gKyAgICAgICAuZmlsbF9tb2RlcyA9IGRybV9oZWxwZXJfcHJvYmVf c2luZ2xlX2Nvbm5lY3Rvcl9tb2RlcywKPiArICAgICAgIC5kZXN0cm95ID0gaGRtaV9jb25uX2Rl c3Ryb3ksCj4gKyAgICAgICAuc2V0X3Byb3BlcnR5ID0gaGRtaV9jb25uX3NldF9wcm9wZXJ0eSwK PiArICAgICAgIC5yZXNldCA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9yZXNldCwKPiAr ICAgICAgIC5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVj dG9yX2R1cGxpY2F0ZV9zdGF0ZSwKPiArICAgICAgIC5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGRy bV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kZXN0cm95X3N0YXRlLAo+ICt9Owo+ICsKPiArc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcwo+ICsgICAgICAgICAg ICAgICBtdGtfaGRtaV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzID0gewo+ICsgICAgICAgLmdldF9t b2RlcyA9IG10a19oZG1pX2Nvbm5fZ2V0X21vZGVzLAo+ICsgICAgICAgLm1vZGVfdmFsaWQgPSBt dGtfaGRtaV9jb25uX21vZGVfdmFsaWQsCj4gKyAgICAgICAuYmVzdF9lbmNvZGVyID0gbXRrX2hk bWlfY29ubl9iZXN0X2VuYywKPiArfTsKPiArCj4gK3N0YXRpYyB2b2lkIG10a19oZG1pX2hwZF9l dmVudChib29sIGhwZCwgc3RydWN0IGRldmljZSAqZGV2KQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3Qg bXRrX2hkbWkgKmhkbWkgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiArCj4gKyAgICAgICBpZiAo aGRtaSAmJiBoZG1pLT5icmlkZ2UuZW5jb2RlciAmJiBoZG1pLT5icmlkZ2UuZW5jb2Rlci0+ZGV2 KQo+ICsgICAgICAgICAgICAgICBkcm1faGVscGVyX2hwZF9pcnFfZXZlbnQoaGRtaS0+YnJpZGdl LmVuY29kZXItPmRldik7Cj4gK30KPiArCj4gKy8qCj4gKyAqIEJyaWRnZSBjYWxsYmFja3MKPiAr ICovCj4gKwo+ICtzdGF0aWMgaW50IG10a19oZG1pX2JyaWRnZV9hdHRhY2goc3RydWN0IGRybV9i cmlkZ2UgKmJyaWRnZSkKPiArewo+ICsgICAgICAgc3RydWN0IG10a19oZG1pICpoZG1pID0gaGRt aV9jdHhfZnJvbV9icmlkZ2UoYnJpZGdlKTsKPiArICAgICAgIGludCByZXQ7Cj4gKwo+ICsgICAg ICAgcmV0ID0gZHJtX2Nvbm5lY3Rvcl9pbml0KGJyaWRnZS0+ZW5jb2Rlci0+ZGV2LCAmaGRtaS0+ Y29ubiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbXRrX2hkbWlfY29ubmVj dG9yX2Z1bmNzLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERSTV9NT0RFX0NP Tk5FQ1RPUl9IRE1JQSk7Cj4gKyAgICAgICBpZiAocmV0KSB7Cj4gKyAgICAgICAgICAgICAgIGRl dl9lcnIoaGRtaS0+ZGV2LCAiRmFpbGVkIHRvIGluaXRpYWxpemUgY29ubmVjdG9yOiAlZFxuIiwg cmV0KTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiArICAgICAgIH0KPiArICAgICAg IGRybV9jb25uZWN0b3JfaGVscGVyX2FkZCgmaGRtaS0+Y29ubiwgJm10a19oZG1pX2Nvbm5lY3Rv cl9oZWxwZXJfZnVuY3MpOwo+ICsKPiArICAgICAgIGhkbWktPmNvbm4ucG9sbGVkID0gRFJNX0NP Tk5FQ1RPUl9QT0xMX0hQRDsKPiArICAgICAgIGhkbWktPmNvbm4uaW50ZXJsYWNlX2FsbG93ZWQg PSB0cnVlOwo+ICsgICAgICAgaGRtaS0+Y29ubi5kb3VibGVzY2FuX2FsbG93ZWQgPSBmYWxzZTsK PiArCj4gKyAgICAgICByZXQgPSBkcm1fY29ubmVjdG9yX3JlZ2lzdGVyKCZoZG1pLT5jb25uKTsK PiArICAgICAgIGlmIChyZXQpIHsKPiArICAgICAgICAgICAgICAgZGV2X2VycihoZG1pLT5kZXYs ICJGYWlsZWQgdG8gcmVnaXN0ZXIgY29ubmVjdG9yOiAlZFxuIiwgcmV0KTsKPiArICAgICAgICAg ICAgICAgcmV0dXJuIHJldDsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICByZXQgPSBkcm1fbW9k ZV9jb25uZWN0b3JfYXR0YWNoX2VuY29kZXIoJmhkbWktPmNvbm4sCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJpZGdlLT5lbmNvZGVyKTsKPiArICAg ICAgIGlmIChyZXQpIHsKPiArICAgICAgICAgICAgICAgZGV2X2VycihoZG1pLT5kZXYsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBhdHRhY2ggY29ubmVjdG9yIHRvIGVuY29k ZXI6ICVkXG4iLCByZXQpOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgICAg fQo+ICsKPiArICAgICAgIGlmIChicmlkZ2UtPm5leHQpIHsKPiArICAgICAgICAgICAgICAgYnJp ZGdlLT5uZXh0LT5lbmNvZGVyID0gYnJpZGdlLT5lbmNvZGVyOwo+ICsgICAgICAgICAgICAgICBy ZXQgPSBkcm1fYnJpZGdlX2F0dGFjaChicmlkZ2UtPmVuY29kZXItPmRldiwgYnJpZGdlLT5uZXh0 KTsKPiArICAgICAgICAgICAgICAgaWYgKHJldCkgewo+ICsgICAgICAgICAgICAgICAgICAgICAg IGRldl9lcnIoaGRtaS0+ZGV2LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZh aWxlZCB0byBhdHRhY2ggZXh0ZXJuYWwgYnJpZGdlOiAlZFxuIiwgcmV0KTsKPiArICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgICAgICAgICAgICB9Cj4gKyAgICAgICB9 Cj4gKwo+ICsgICAgICAgbXRrX2NlY19zZXRfaHBkX2V2ZW50KGhkbWktPmNlY19kZXYsIG10a19o ZG1pX2hwZF9ldmVudCwgaGRtaS0+ZGV2KTsKPiArCj4gKyAgICAgICByZXR1cm4gMDsKPiArfQo+ ICsKPiArc3RhdGljIGJvb2wgbXRrX2hkbWlfYnJpZGdlX21vZGVfZml4dXAoc3RydWN0IGRybV9i cmlkZ2UgKmJyaWRnZSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9k ZSkKPiArewo+ICsgICAgICAgcmV0dXJuIHRydWU7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIG10 a19oZG1pX2JyaWRnZV9kaXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gK3sKPiAr ICAgICAgIHN0cnVjdCBtdGtfaGRtaSAqaGRtaSA9IGhkbWlfY3R4X2Zyb21fYnJpZGdlKGJyaWRn ZSk7Cj4gKwo+ICsgICAgICAgcGh5X3Bvd2VyX29mZihoZG1pLT5waHkpOwo+ICsgICAgICAgY2xr X2Rpc2FibGVfdW5wcmVwYXJlKGhkbWktPmNsa1tNVEtfSERNSV9DTEtfSERNSV9QSVhFTF0pOwo+ ICsgICAgICAgY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGhkbWktPmNsa1tNVEtfSERNSV9DTEtfSERN SV9QTExdKTsKCkFzIGZhciBhcyBJIGNhbiB0ZWxsLCBfX2RybV9oZWxwZXJfZGlzYWJsZV91bnVz ZWRfZnVuY3Rpb25zKCkgZG9lc24ndApjaGVjayBpZiBjcnRjL2VuY29kZXIvYnJpZGdlIGFyZSBk aXNhYmxlZCBiZWZvcmUgY2FsbGluZyB0aGUKLT4qZW4vZGlzYWJsZSooKSBjYWxsYmFja3MuCgpT bywgdGhlc2UgY2xrX2Rpc2FibGVfdW5wcmVwYXJlKCkgbWF5IGJlIGNhbGxlZCB3aXRoIHRoZSBI RE1JIGFscmVhZHkgZGlzYWJsZWQsCnRyaWdlcnJpbmcgdGhlaXIgV0FSTl9PTigpLgoKU28sIHBl cmhhcHMgd2UgYWxzbyBuZWVkIHRvIHRyYWNrIGVuYWJsZWQvZGlzYWJsZWQgc3RhdGUgc2VwYXJh dGVseSBoZXJlIGluCnRoZSBkcml2ZXIuCgo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBtdGtfaGRt aV9icmlkZ2VfcG9zdF9kaXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gK3sKPiAr ICAgICAgIHN0cnVjdCBtdGtfaGRtaSAqaGRtaSA9IGhkbWlfY3R4X2Zyb21fYnJpZGdlKGJyaWRn ZSk7Cj4gKwo+ICsgICAgICAgbXRrX2hkbWlfcG93ZXJfb2ZmKGhkbWkpOwo+ICt9Cj4gKwo+ICtz dGF0aWMgdm9pZCBtdGtfaGRtaV9icmlkZ2VfbW9kZV9zZXQoc3RydWN0IGRybV9icmlkZ2UgKmJy aWRnZSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9k aXNwbGF5X21vZGUgKm1vZGUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlKQo+ICt7Cj4gKyAgICAgICBz dHJ1Y3QgbXRrX2hkbWkgKmhkbWkgPSBoZG1pX2N0eF9mcm9tX2JyaWRnZShicmlkZ2UpOwo+ICsK PiArICAgICAgIGRldl9kYmcoaGRtaS0+ZGV2LCAiY3VyIGluZm86IG5hbWU6JXMsIGhkaXNwbGF5 OiVkXG4iLAo+ICsgICAgICAgICAgICAgICBhZGp1c3RlZF9tb2RlLT5uYW1lLCBhZGp1c3RlZF9t b2RlLT5oZGlzcGxheSk7Cj4gKyAgICAgICBkZXZfZGJnKGhkbWktPmRldiwgImhzeW5jX3N0YXJ0 OiVkLGhzeW5jX2VuZDolZCwgaHRvdGFsOiVkIiwKPiArICAgICAgICAgICAgICAgYWRqdXN0ZWRf bW9kZS0+aHN5bmNfc3RhcnQsIGFkanVzdGVkX21vZGUtPmhzeW5jX2VuZCwKPiArICAgICAgICAg ICAgICAgYWRqdXN0ZWRfbW9kZS0+aHRvdGFsKTsKPiArICAgICAgIGRldl9kYmcoaGRtaS0+ZGV2 LCAiaHNrZXc6JWQsIHZkaXNwbGF5OiVkXG4iLAo+ICsgICAgICAgICAgICAgICBhZGp1c3RlZF9t b2RlLT5oc2tldywgYWRqdXN0ZWRfbW9kZS0+dmRpc3BsYXkpOwo+ICsgICAgICAgZGV2X2RiZyho ZG1pLT5kZXYsICJ2c3luY19zdGFydDolZCwgdnN5bmNfZW5kOiVkLCB2dG90YWw6JWQiLAo+ICsg ICAgICAgICAgICAgICBhZGp1c3RlZF9tb2RlLT52c3luY19zdGFydCwgYWRqdXN0ZWRfbW9kZS0+ dnN5bmNfZW5kLAo+ICsgICAgICAgICAgICAgICBhZGp1c3RlZF9tb2RlLT52dG90YWwpOwo+ICsg ICAgICAgZGV2X2RiZyhoZG1pLT5kZXYsICJ2c2NhbjolZCwgZmxhZzolZFxuIiwKPiArICAgICAg ICAgICAgICAgYWRqdXN0ZWRfbW9kZS0+dnNjYW4sIGFkanVzdGVkX21vZGUtPmZsYWdzKTsKPiAr Cj4gKyAgICAgICBkcm1fbW9kZV9jb3B5KCZoZG1pLT5tb2RlLCBhZGp1c3RlZF9tb2RlKTsKPiAr fQo+ICsKPiArc3RhdGljIHZvaWQgbXRrX2hkbWlfYnJpZGdlX3ByZV9lbmFibGUoc3RydWN0IGRy bV9icmlkZ2UgKmJyaWRnZSkKPiArewo+ICsgICAgICAgc3RydWN0IG10a19oZG1pICpoZG1pID0g aGRtaV9jdHhfZnJvbV9icmlkZ2UoYnJpZGdlKTsKPiArCj4gKyAgICAgICBtdGtfaGRtaV9wb3dl cl9vbihoZG1pKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbXRrX2hkbWlfYnJpZGdlX2VuYWJs ZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbXRrX2hk bWkgKmhkbWkgPSBoZG1pX2N0eF9mcm9tX2JyaWRnZShicmlkZ2UpOwo+ICsKPiArICAgICAgIG10 a19oZG1pX291dHB1dF9zZXRfZGlzcGxheV9tb2RlKGhkbWksICZoZG1pLT5tb2RlKTsKPiArICAg ICAgIGNsa19wcmVwYXJlX2VuYWJsZShoZG1pLT5jbGtbTVRLX0hETUlfQ0xLX0hETUlfUExMXSk7 Cj4gKyAgICAgICBjbGtfcHJlcGFyZV9lbmFibGUoaGRtaS0+Y2xrW01US19IRE1JX0NMS19IRE1J X1BJWEVMXSk7Cj4gKyAgICAgICBwaHlfcG93ZXJfb24oaGRtaS0+cGh5KTsKPiArfQo+ICsKPiAr c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fYnJpZGdlX2Z1bmNzIG10a19oZG1pX2JyaWRnZV9mdW5j cyA9IHsKPiArICAgICAgIC5hdHRhY2ggPSBtdGtfaGRtaV9icmlkZ2VfYXR0YWNoLAo+ICsgICAg ICAgLm1vZGVfZml4dXAgPSBtdGtfaGRtaV9icmlkZ2VfbW9kZV9maXh1cCwKPiArICAgICAgIC5k aXNhYmxlID0gbXRrX2hkbWlfYnJpZGdlX2Rpc2FibGUsCj4gKyAgICAgICAucG9zdF9kaXNhYmxl ID0gbXRrX2hkbWlfYnJpZGdlX3Bvc3RfZGlzYWJsZSwKPiArICAgICAgIC5tb2RlX3NldCA9IG10 a19oZG1pX2JyaWRnZV9tb2RlX3NldCwKPiArICAgICAgIC5wcmVfZW5hYmxlID0gbXRrX2hkbWlf YnJpZGdlX3ByZV9lbmFibGUsCj4gKyAgICAgICAuZW5hYmxlID0gbXRrX2hkbWlfYnJpZGdlX2Vu YWJsZSwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgbXRrX2hkbWlfZHRfcGFyc2VfcGRhdGEoc3Ry dWN0IG10a19oZG1pICpoZG1pLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiArewo+ICsgICAgICAgc3RydWN0IGRldmlj ZSAqZGV2ID0gJnBkZXYtPmRldjsKPiArICAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBk ZXYtPm9mX25vZGU7Cj4gKyAgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKmNlY19ucCwgKnBvcnQs ICplcCwgKnJlbW90ZSwgKmkyY19ucDsKPiArICAgICAgIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KmNlY19wZGV2Owo+ICsgICAgICAgc3RydWN0IHJlZ21hcCAqcmVnbWFwOwo+ICsgICAgICAgc3Ry dWN0IHJlc291cmNlICptZW07Cj4gKyAgICAgICBpbnQgcmV0Owo+ICsKPiArICAgICAgIHJldCA9 IG10a19oZG1pX2dldF9hbGxfY2xrKGhkbWksIG5wKTsKPiArICAgICAgIGlmIChyZXQpIHsKPiAr ICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZ2V0IGNsb2NrczogJWRcbiIs IHJldCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICAgICB9Cj4gKwo+ICsg ICAgICAgLyogVGhlIENFQyBtb2R1bGUgaGFuZGxlcyBIRE1JIGhvdHBsdWcgZGV0ZWN0aW9uICov Cj4gKyAgICAgICBjZWNfbnAgPSBvZl9maW5kX2NvbXBhdGlibGVfbm9kZShucC0+cGFyZW50LCBO VUxMLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lZGlhdGVr LG10ODE3My1jZWMiKTsKPiArICAgICAgIGlmICghY2VjX25wKSB7Cj4gKyAgICAgICAgICAgICAg IGRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGZpbmQgQ0VDIG5vZGVcbiIpOwo+ICsgICAgICAgICAg ICAgICByZXR1cm4gLUVJTlZBTDsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBjZWNfcGRldiA9 IG9mX2ZpbmRfZGV2aWNlX2J5X25vZGUoY2VjX25wKTsKPiArICAgICAgIGlmICghY2VjX3BkZXYp IHsKPiArICAgICAgICAgICAgICAgZGV2X2VycihoZG1pLT5kZXYsICJXYWl0aW5nIGZvciBDRUMg ZGV2aWNlICVzXG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICAgIGNlY19ucC0+ZnVsbF9uYW1l KTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FUFJPQkVfREVGRVI7Cj4gKyAgICAgICB9Cj4g KyAgICAgICBoZG1pLT5jZWNfZGV2ID0gJmNlY19wZGV2LT5kZXY7Cj4gKwo+ICsgICAgICAgLyoK PiArICAgICAgICAqIFRoZSBtZWRpYXRlayxzeXNjb24taGRtaSBwcm9wZXJ0eSBjb250YWlucyBh IHBoYW5kbGUgbGluayB0byB0aGUKPiArICAgICAgICAqIE1NU1lTX0NPTkZJRyBkZXZpY2UgYW5k IHRoZSByZWdpc3RlciBvZmZzZXQgb2YgdGhlIEhETUlfU1lTX0NGRwo+ICsgICAgICAgICogcmVn aXN0ZXJzIGl0IGNvbnRhaW5zLgo+ICsgICAgICAgICovCj4gKyAgICAgICByZWdtYXAgPSBzeXNj b25fcmVnbWFwX2xvb2t1cF9ieV9waGFuZGxlKG5wLCAibWVkaWF0ZWssc3lzY29uLWhkbWkiKTsK PiArICAgICAgIHJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyX2luZGV4KG5wLCAibWVkaWF0ZWss c3lzY29uLWhkbWkiLCAxLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJmhkbWktPnN5c19vZmZzZXQpOwo+ICsgICAgICAgaWYgKElTX0VSUihyZWdtYXApKQo+ICsg ICAgICAgICAgICAgICByZXQgPSBQVFJfRVJSKHJlZ21hcCk7Cj4gKyAgICAgICBpZiAocmV0KSB7 Cj4gKyAgICAgICAgICAgICAgIHJldCA9IFBUUl9FUlIocmVnbWFwKTsKPiArICAgICAgICAgICAg ICAgZGV2X2VycihkZXYsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBnZXQg c3lzdGVtIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzOiAlZFxuIiwKPiArICAgICAgICAgICAgICAg ICAgICAgICByZXQpOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgICAgfQo+ ICsgICAgICAgaGRtaS0+c3lzX3JlZ21hcCA9IHJlZ21hcDsKPiArCj4gKyAgICAgICBtZW0gPSBw bGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOwo+ICsgICAgICAg aGRtaS0+cmVncyA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIG1lbSk7Cj4gKyAgICAgICBp ZiAoSVNfRVJSKGhkbWktPnJlZ3MpKSB7Cj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAi RmFpbGVkIHRvIGlvcmVtYXAgaGRtaV9zaGVsbDogJWxkXG4iLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgIFBUUl9FUlIoaGRtaS0+cmVncykpOwoKV2hhdCBpcyBoZG1pX3NoZWxsPwpJbiBhbnkg Y2FzZSwgSSBkb24ndCB0aGluayB5b3UgbmVlZCB0byBwcmludCBhbnl0aGluZyBoZXJlLgoKPiAr ICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoaGRtaS0+cmVncyk7Cj4gKyAgICAgICB9Cj4g Kwo+ICsgICAgICAgcG9ydCA9IG9mX2dyYXBoX2dldF9wb3J0X2J5X2lkKG5wLCAxKTsKPiArICAg ICAgIGlmICghcG9ydCkgewo+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgIk1pc3Npbmcg b3V0cHV0IHBvcnQgbm9kZVxuIik7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ ICsgICAgICAgfQo+ICsKPiArICAgICAgIGVwID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUocG9ydCwg ImVuZHBvaW50Iik7Cj4gKyAgICAgICBpZiAoIWVwKSB7Cj4gKyAgICAgICAgICAgICAgIGRldl9l cnIoZGV2LCAiTWlzc2luZyBlbmRwb2ludCBub2RlIGluIHBvcnQgJXNcbiIsCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgcG9ydC0+ZnVsbF9uYW1lKTsKPiArICAgICAgICAgICAgICAgb2Zfbm9k ZV9wdXQocG9ydCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICsgICAgICAg fQo+ICsgICAgICAgb2Zfbm9kZV9wdXQocG9ydCk7Cj4gKwo+ICsgICAgICAgcmVtb3RlID0gb2Zf Z3JhcGhfZ2V0X3JlbW90ZV9wb3J0X3BhcmVudChlcCk7Cj4gKyAgICAgICBpZiAoIXJlbW90ZSkg ewo+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgIk1pc3NpbmcgY29ubmVjdG9yL2JyaWRn ZSBub2RlIGZvciBlbmRwb2ludCAlc1xuIiwKPiArICAgICAgICAgICAgICAgICAgICAgICBlcC0+ ZnVsbF9uYW1lKTsKPiArICAgICAgICAgICAgICAgb2Zfbm9kZV9wdXQoZXApOwo+ICsgICAgICAg ICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiArICAgICAgIH0KPiArICAgICAgIG9mX25vZGVfcHV0 KGVwKTsKPiArCj4gKyAgICAgICBpZiAoIW9mX2RldmljZV9pc19jb21wYXRpYmxlKHJlbW90ZSwg ImhkbWktY29ubmVjdG9yIikpIHsKPiArICAgICAgICAgICAgICAgaGRtaS0+YnJpZGdlLm5leHQg PSBvZl9kcm1fZmluZF9icmlkZ2UocmVtb3RlKTsKPiArICAgICAgICAgICAgICAgaWYgKCFoZG1p LT5icmlkZ2UubmV4dCkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAi V2FpdGluZyBmb3IgZXh0ZXJuYWwgYnJpZGdlXG4iKTsKPiArICAgICAgICAgICAgICAgICAgICAg ICBvZl9ub2RlX3B1dChyZW1vdGUpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAt RVBST0JFX0RFRkVSOwo+ICsgICAgICAgICAgICAgICB9Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAg ICAgaTJjX25wID0gb2ZfcGFyc2VfcGhhbmRsZShyZW1vdGUsICJkZGMtaTJjLWJ1cyIsIDApOwo+ ICsgICAgICAgaWYgKCFpMmNfbnApIHsKPiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJG YWlsZWQgdG8gZmluZCBkZGMtaTJjLWJ1cyBub2RlIGluICVzXG4iLAo+ICsgICAgICAgICAgICAg ICAgICAgICAgIHJlbW90ZS0+ZnVsbF9uYW1lKTsKPiArICAgICAgICAgICAgICAgb2Zfbm9kZV9w dXQocmVtb3RlKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gKyAgICAgICB9 Cj4gKyAgICAgICBvZl9ub2RlX3B1dChyZW1vdGUpOwo+ICsKPiArICAgICAgIGhkbWktPmRkY19h ZHB0ID0gb2ZfZmluZF9pMmNfYWRhcHRlcl9ieV9ub2RlKGkyY19ucCk7Cj4gKyAgICAgICBpZiAo IWhkbWktPmRkY19hZHB0KSB7Cj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiRmFpbGVk IHRvIGdldCBkZGMgaTJjIGFkYXB0ZXIgYnkgbm9kZVxuIik7Cj4gKyAgICAgICAgICAgICAgIHJl dHVybiAtRUlOVkFMOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHJldHVybiAwOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgaW50IG10a19kcm1faGRtaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwZGV2KQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbXRrX2hkbWkgKmhkbWk7Cj4gKyAgICAgICBz dHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Owo+ICsgICAgICAgaW50IHJldDsKPiArCj4g KyAgICAgICBoZG1pID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpoZG1pKSwgR0ZQX0tFUk5F TCk7Cj4gKyAgICAgICBpZiAoIWhkbWkpCj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVN Owo+ICsKPiArICAgICAgIGhkbWktPmRldiA9IGRldjsKPiArCj4gKyAgICAgICByZXQgPSBtdGtf aGRtaV9kdF9wYXJzZV9wZGF0YShoZG1pLCBwZGV2KTsKPiArICAgICAgIGlmIChyZXQpCj4gKyAg ICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKwo+ICsgICAgICAgaGRtaS0+cGh5ID0gZGV2bV9w aHlfZ2V0KGRldiwgImhkbWkiKTsKPiArICAgICAgIGlmIChJU19FUlIoaGRtaS0+cGh5KSkgewo+ ICsgICAgICAgICAgICAgICByZXQgPSBQVFJfRVJSKGhkbWktPnBoeSk7Cj4gKyAgICAgICAgICAg ICAgIGRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGdldCBIRE1JIFBIWTogJWRcbiIsIHJldCk7Cj4g KyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcGxh dGZvcm1fc2V0X2RydmRhdGEocGRldiwgaGRtaSk7Cj4gKwo+ICsgICAgICAgcmV0ID0gbXRrX2hk bWlfb3V0cHV0X2luaXQoaGRtaSk7Cj4gKyAgICAgICBpZiAocmV0KSB7Cj4gKyAgICAgICAgICAg ICAgIGRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGluaXRpYWxpemUgaGRtaSBvdXRwdXRcbiIpOwo+ ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGhk bWktPmJyaWRnZS5mdW5jcyA9ICZtdGtfaGRtaV9icmlkZ2VfZnVuY3M7Cj4gKyAgICAgICBoZG1p LT5icmlkZ2Uub2Zfbm9kZSA9IHBkZXYtPmRldi5vZl9ub2RlOwo+ICsgICAgICAgcmV0ID0gZHJt X2JyaWRnZV9hZGQoJmhkbWktPmJyaWRnZSk7Cj4gKyAgICAgICBpZiAocmV0KSB7Cj4gKyAgICAg ICAgICAgICAgIGRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGFkZCBicmlkZ2UsIHJldCA9ICVkXG4i LCByZXQpOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgICAgfQo+ICsKPiAr ICAgICAgIHJldCA9IG10a19oZG1pX2Nsa19lbmFibGVfYXVkaW8oaGRtaSk7Cj4gKyAgICAgICBp ZiAocmV0KSB7Cj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGVuYWJs ZSBhdWRpbyBjbG9ja3M6ICVkXG4iLCByZXQpOwo+ICsgICAgICAgICAgICAgICBnb3RvIGVycl9i cmlkZ2VfcmVtb3ZlOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGRldl9kYmcoZGV2LCAibWVk aWF0ZWsgaGRtaSBwcm9iZSBzdWNjZXNzXG4iKTsKPiArICAgICAgIHJldHVybiAwOwo+ICsKPiAr ZXJyX2JyaWRnZV9yZW1vdmU6Cj4gKyAgICAgICBkcm1fYnJpZGdlX3JlbW92ZSgmaGRtaS0+YnJp ZGdlKTsKPiArICAgICAgIHJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbXRrX2Ry bV9oZG1pX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICt7Cj4gKyAgICAg ICBzdHJ1Y3QgbXRrX2hkbWkgKmhkbWkgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKPiAr Cj4gKyAgICAgICBkcm1fYnJpZGdlX3JlbW92ZSgmaGRtaS0+YnJpZGdlKTsKPiArICAgICAgIHBs YXRmb3JtX2RldmljZV91bnJlZ2lzdGVyKGhkbWktPmF1ZGlvX3BkZXYpOwoKYXVkaW9fcGRldiBp cyBub3Qgc2V0IGluIHRoaXMgcGF0Y2guCklzIHRoZXJlIG1vcmUgYXVkaW8gc3R1ZmYgdGhhdCBz aG91bGQgYmUgcmVtb3ZlZCBmcm9tIHRoaXMgcGF0Y2g/Cgo+ICsgICAgICAgcGxhdGZvcm1fc2V0 X2RydmRhdGEocGRldiwgTlVMTCk7CgpJIGRvbid0IHRoaW5rIHRoaXMgaXMgbmVjZXNzYXJ5LgoK PiArICAgICAgIG10a19oZG1pX2Nsa19kaXNhYmxlX2F1ZGlvKGhkbWkpOwo+ICsgICAgICAgcmV0 dXJuIDA7Cj4gK30KPiArCj4gKyNpZmRlZiBDT05GSUdfUE1fU0xFRVAKPiArc3RhdGljIGludCBt dGtfaGRtaV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKPiArewo+ICsgICAgICAgc3RydWN0 IG10a19oZG1pICpoZG1pID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwo+ICsgICAgICAgbXRr X2hkbWlfcG93ZXJfb2ZmKGhkbWkpOwo+ICsgICAgICAgbXRrX2hkbWlfY2xrX2Rpc2FibGVfYXVk aW8oaGRtaSk7Cj4gKyAgICAgICBwaHlfcG93ZXJfb2ZmKGhkbWktPnBoeSk7Cj4gKyAgICAgICBk ZXZfZGJnKGRldiwgImhkbWkgc3VzcGVuZCBzdWNjZXNzIVxuIik7Cj4gKyAgICAgICByZXR1cm4g MDsKPiArfQo+ICsKPiArc3RhdGljIGludCBtdGtfaGRtaV9yZXN1bWUoc3RydWN0IGRldmljZSAq ZGV2KQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbXRrX2hkbWkgKmhkbWkgPSBkZXZfZ2V0X2RydmRh dGEoZGV2KTsKPiArICAgICAgIGludCByZXQgPSAwOwo+ICsKPiArICAgICAgIHJldCA9IG10a19o ZG1pX2Nsa19lbmFibGVfYXVkaW8oaGRtaSk7Cj4gKyAgICAgICBpZiAocmV0KSB7Cj4gKyAgICAg ICAgICAgICAgIGRldl9lcnIoZGV2LCAiaGRtaSByZXN1bWUgZmFpbGVkIVxuIik7Cj4gKyAgICAg ICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgbXRrX2hkbWlf cG93ZXJfb24oaGRtaSk7Cj4gKyAgICAgICBtdGtfaGRtaV9vdXRwdXRfc2V0X2Rpc3BsYXlfbW9k ZShoZG1pLCAmaGRtaS0+bW9kZSk7Cj4gKyAgICAgICBwaHlfcG93ZXJfb24oaGRtaS0+cGh5KTsK PiArICAgICAgIGRldl9kYmcoZGV2LCAiaGRtaSByZXN1bWUgc3VjY2VzcyFcbiIpOwo+ICsgICAg ICAgcmV0dXJuIDA7Cj4gK30KPiArI2VuZGlmCj4gK3N0YXRpYyBTSU1QTEVfREVWX1BNX09QUyht dGtfaGRtaV9wbV9vcHMsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIG10a19oZG1pX3N1c3Bl bmQsIG10a19oZG1pX3Jlc3VtZSk7CgpJIGRvIG5vdCB0aGluayB0aGVzZSBzdXNwZW5kL3Jlc3Vt ZSBvcHMgYXJlIG5lZWRlZC4KVGhlIE1USyBEUk0gZHJpdmVyIHR1cm4gb2ZmIGNvbm5lY3RvcnMg YXQgc3VzcGVuZCwgYW5kIHJlLWVuYWJsZXMgdGhlbQphdCByZXN1bWUuCgo+ICsKPiArc3RhdGlj IGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbXRrX2RybV9oZG1pX29mX2lkc1tdID0gewo+ICsg ICAgICAgeyAuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxNzMtaGRtaSIsIH0sCj4gKyAgICAg ICB7fQo+ICt9Owo+ICsKPiArc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2hkbWlf ZHJpdmVyID0gewo+ICsgICAgICAgLnByb2JlID0gbXRrX2RybV9oZG1pX3Byb2JlLAo+ICsgICAg ICAgLnJlbW92ZSA9IG10a19kcm1faGRtaV9yZW1vdmUsCj4gKyAgICAgICAuZHJpdmVyID0gewo+ ICsgICAgICAgICAgICAgICAubmFtZSA9ICJtZWRpYXRlay1kcm0taGRtaSIsCj4gKyAgICAgICAg ICAgICAgIC5vZl9tYXRjaF90YWJsZSA9IG10a19kcm1faGRtaV9vZl9pZHMsCj4gKyAgICAgICAg ICAgICAgIC5wbSA9ICZtdGtfaGRtaV9wbV9vcHMsCj4gKyAgICAgICB9LAo+ICt9Owo+ICsKPiAr c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgKiBjb25zdCBtdGtfaGRtaV9kcml2ZXJzW10g PSB7Cj4gKyAgICAgICAmbXRrX2hkbWlfcGh5X2RyaXZlciwKPiArICAgICAgICZtdGtfaGRtaV9k ZGNfZHJpdmVyLAo+ICsgICAgICAgJm10a19jZWNfZHJpdmVyLAo+ICsgICAgICAgJm10a19oZG1p X2RyaXZlciwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgX19pbml0IG10a19oZG1pdHhfaW5pdCh2 b2lkKQo+ICt7Cj4gKyAgICAgICBpbnQgcmV0Owo+ICsgICAgICAgaW50IGk7Cj4gKwo+ICsgICAg ICAgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUobXRrX2hkbWlfZHJpdmVycyk7IGkrKykgewo+ ICsgICAgICAgICAgICAgICByZXQgPSBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIobXRrX2hkbWlf ZHJpdmVyc1tpXSk7Cj4gKyAgICAgICAgICAgICAgIGlmIChyZXQgPCAwKSB7Cj4gKyAgICAgICAg ICAgICAgICAgICAgICAgcHJfZXJyKCJGYWlsZWQgdG8gcmVnaXN0ZXIgJXMgZHJpdmVyOiAlZFxu IiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRrX2hkbWlfZHJpdmVyc1tpXS0+ ZHJpdmVyLm5hbWUsIHJldCk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnI7Cj4g KyAgICAgICAgICAgICAgIH0KPiArICAgICAgIH0KPiArCj4gKyAgICAgICByZXR1cm4gMDsKPiAr Cj4gK2VycjoKPiArICAgICAgIHdoaWxlICgtLWkgPj0gMCkKPiArICAgICAgICAgICAgICAgcGxh dGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIobXRrX2hkbWlfZHJpdmVyc1tpXSk7Cj4gKwo+ICsgICAg ICAgcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgX19leGl0IG10a19oZG1pdHhf ZXhpdCh2b2lkKQo+ICt7Cj4gKyAgICAgICBpbnQgaTsKPiArCj4gKyAgICAgICBmb3IgKGkgPSBB UlJBWV9TSVpFKG10a19oZG1pX2RyaXZlcnMpIC0gMTsgaSA+PSAwOyBpLS0pCj4gKyAgICAgICAg ICAgICAgIHBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKG10a19oZG1pX2RyaXZlcnNbaV0pOwo+ ICt9Cj4gKwo+ICttb2R1bGVfaW5pdChtdGtfaGRtaXR4X2luaXQpOwo+ICttb2R1bGVfZXhpdCht dGtfaGRtaXR4X2V4aXQpOwo+ICsKPiArTU9EVUxFX0FVVEhPUigiSmllIFFpdSA8amllLnFpdUBt ZWRpYXRlay5jb20+Iik7Cj4gK01PRFVMRV9ERVNDUklQVElPTigiTWVkaWFUZWsgSERNSSBEcml2 ZXIiKTsKPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWkuYyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9t dGtfaGRtaS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi4zMGVjN2I1 Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfaGRt aS5jCgpIbW0uLi4gd2hhdCBpcyB0aGUgdmFsdWUgaW4gc3BsaXR0aW5nIHRoaXMgb3V0IGludG8g aXRzIG93biBzZXBhcmF0ZSBtdGtfaGRtaS5jPwoKPiBAQCAtMCwwICsxLDQ3OSBAQAo+ICsvKgo+ ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTQgTWVkaWFUZWsgSW5jLgo+ICsgKiBBdXRob3I6IEppZSBR aXUgPGppZS5xaXVAbWVkaWF0ZWsuY29tPgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ICsgKiBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNp b24gMiBhcwo+ICsgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4K PiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKPiArICogR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiArICovCj4gKyNpbmNsdWRlIDxk cm0vZHJtX2VkaWQuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+ICsjaW5jbHVkZSA8bGlu dXgvZGVsYXkuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3BoeS9waHkuaD4KPiArI2luY2x1ZGUgIm10 a19jZWMuaCIKPiArI2luY2x1ZGUgIm10a19oZG1pLmgiCj4gKyNpbmNsdWRlICJtdGtfaGRtaV9o dy5oIgo+ICsKPiArc3RhdGljIHU4IG10a19oZG1pX2F1ZF9nZXRfY2hubF9jb3VudChlbnVtIGhk bWlfYXVkX2NoYW5uZWxfdHlwZSBjaGFubmVsX3R5cGUpCj4gK3sKPiArICAgICAgIHN3aXRjaCAo Y2hhbm5lbF90eXBlKSB7Cj4gKyAgICAgICBjYXNlIEhETUlfQVVEX0NIQU5fVFlQRV8xXzA6Cj4g KyAgICAgICBjYXNlIEhETUlfQVVEX0NIQU5fVFlQRV8xXzE6Cj4gKyAgICAgICBjYXNlIEhETUlf QVVEX0NIQU5fVFlQRV8yXzA6Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAyOwo+ICsgICAgICAg Y2FzZSBIRE1JX0FVRF9DSEFOX1RZUEVfMl8xOgo+ICsgICAgICAgY2FzZSBIRE1JX0FVRF9DSEFO X1RZUEVfM18wOgo+ICsgICAgICAgICAgICAgICByZXR1cm4gMzsKPiArICAgICAgIGNhc2UgSERN SV9BVURfQ0hBTl9UWVBFXzNfMToKPiArICAgICAgIGNhc2UgSERNSV9BVURfQ0hBTl9UWVBFXzRf MDoKPiArICAgICAgIGNhc2UgSERNSV9BVURfQ0hBTl9UWVBFXzNfMF9MUlM6Cj4gKyAgICAgICAg ICAgICAgIHJldHVybiA0Owo+ICsgICAgICAgY2FzZSBIRE1JX0FVRF9DSEFOX1RZUEVfNF8xOgo+ ICsgICAgICAgY2FzZSBIRE1JX0FVRF9DSEFOX1RZUEVfNV8wOgo+ICsgICAgICAgY2FzZSBIRE1J X0FVRF9DSEFOX1RZUEVfM18xX0xSUzoKPiArICAgICAgIGNhc2UgSERNSV9BVURfQ0hBTl9UWVBF XzRfMF9DTFJTOgo+ICsgICAgICAgICAgICAgICByZXR1cm4gNTsKPiArICAgICAgIGNhc2UgSERN SV9BVURfQ0hBTl9UWVBFXzVfMToKPiArICAgICAgIGNhc2UgSERNSV9BVURfQ0hBTl9UWVBFXzZf MDoKPiArICAgICAgIGNhc2UgSERNSV9BVURfQ0hBTl9UWVBFXzRfMV9DTFJTOgo+ICsgICAgICAg Y2FzZSBIRE1JX0FVRF9DSEFOX1RZUEVfNl8wX0NTOgo+ICsgICAgICAgY2FzZSBIRE1JX0FVRF9D SEFOX1RZUEVfNl8wX0NIOgo+ICsgICAgICAgY2FzZSBIRE1JX0FVRF9DSEFOX1RZUEVfNl8wX09I Ogo+ICsgICAgICAgY2FzZSBIRE1JX0FVRF9DSEFOX1RZUEVfNl8wX0NIUjoKPiArICAgICAgICAg ICAgICAgcmV0dXJuIDY7Cj4gKyAgICAgICBjYXNlIEhETUlfQVVEX0NIQU5fVFlQRV82XzE6Cj4g KyAgICAgICBjYXNlIEhETUlfQVVEX0NIQU5fVFlQRV82XzFfQ1M6Cj4gKyAgICAgICBjYXNlIEhE TUlfQVVEX0NIQU5fVFlQRV82XzFfQ0g6Cj4gKyAgICAgICBjYXNlIEhETUlfQVVEX0NIQU5fVFlQ RV82XzFfT0g6Cj4gKyAgICAgICBjYXNlIEhETUlfQVVEX0NIQU5fVFlQRV82XzFfQ0hSOgo+ICsg ICAgICAgY2FzZSBIRE1JX0FVRF9DSEFOX1RZUEVfN18wOgo+ICsgICAgICAgY2FzZSBIRE1JX0FV RF9DSEFOX1RZUEVfN18wX0xIX1JIOgo+ICsgICAgICAgY2FzZSBIRE1JX0FVRF9DSEFOX1RZUEVf N18wX0xTUl9SU1I6Cj4gKyAgICAgICBjYXNlIEhETUlfQVVEX0NIQU5fVFlQRV83XzBfTENfUkM6 Cj4gKyAgICAgICBjYXNlIEhETUlfQVVEX0NIQU5fVFlQRV83XzBfTFdfUlc6Cj4gKyAgICAgICBj YXNlIEhETUlfQVVEX0NIQU5fVFlQRV83XzBfTFNEX1JTRDoKPiArICAgICAgIGNhc2UgSERNSV9B VURfQ0hBTl9UWVBFXzdfMF9MU1NfUlNTOgo+ICsgICAgICAgY2FzZSBIRE1JX0FVRF9DSEFOX1RZ UEVfN18wX0xIU19SSFM6Cj4gKyAgICAgICBjYXNlIEhETUlfQVVEX0NIQU5fVFlQRV83XzBfQ1Nf Q0g6Cj4gKyAgICAgICBjYXNlIEhETUlfQVVEX0NIQU5fVFlQRV83XzBfQ1NfT0g6Cj4gKyAgICAg ICBjYXNlIEhETUlfQVVEX0NIQU5fVFlQRV83XzBfQ1NfQ0hSOgo+ICsgICAgICAgY2FzZSBIRE1J X0FVRF9DSEFOX1RZUEVfN18wX0NIX09IOgo+ICsgICAgICAgY2FzZSBIRE1JX0FVRF9DSEFOX1RZ UEVfN18wX0NIX0NIUjoKPiArICAgICAgIGNhc2UgSERNSV9BVURfQ0hBTl9UWVBFXzdfMF9PSF9D SFI6Cj4gKyAgICAgICBjYXNlIEhETUlfQVVEX0NIQU5fVFlQRV83XzBfTFNTX1JTU19MU1JfUlNS Ogo+ICsgICAgICAgY2FzZSBIRE1JX0FVRF9DSEFOX1RZUEVfOF8wX0xIX1JIX0NTOgo+ICsgICAg ICAgICAgICAgICByZXR1cm4gNzsKPiArICAgICAgIGNhc2UgSERNSV9BVURfQ0hBTl9UWVBFXzdf MToKPiArICAgICAgIGNhc2UgSERNSV9BVURfQ0hBTl9UWVBFXzdfMV9MSF9SSDoKPiArICAgICAg IGNhc2UgSERNSV9BVURfQ0hBTl9UWVBFXzdfMV9MU1JfUlNSOgo+ICsgICAgICAgY2FzZSBIRE1J X0FVRF9DSEFOX1RZUEVfN18xX0xDX1JDOgo+ICsgICAgICAgY2FzZSBIRE1JX0FVRF9DSEFOX1RZ UEVfN18xX0xXX1JXOgo+ICsgICAgICAgY2FzZSBIRE1JX0FVRF9DSEFOX1RZUEVfN18xX0xTRF9S U0Q6Cj4gKyAgICAgICBjYXNlIEhETUlfQVVEX0NIQU5fVFlQRV83XzFfTFNTX1JTUzoKPiArICAg ICAgIGNhc2UgSERNSV9BVURfQ0hBTl9UWVBFXzdfMV9MSFNfUkhTOgo+ICsgICAgICAgY2FzZSBI RE1JX0FVRF9DSEFOX1RZUEVfN18xX0NTX0NIOgo+ICsgICAgICAgY2FzZSBIRE1JX0FVRF9DSEFO X1RZUEVfN18xX0NTX09IOgo+ICsgICAgICAgY2FzZSBIRE1JX0FVRF9DSEFOX1RZUEVfN18xX0NT X0NIUjoKPiArICAgICAgIGNhc2UgSERNSV9BVURfQ0hBTl9UWVBFXzdfMV9DSF9PSDoKPiArICAg ICAgIGNhc2UgSERNSV9BVURfQ0hBTl9UWVBFXzdfMV9DSF9DSFI6Cj4gKyAgICAgICBjYXNlIEhE TUlfQVVEX0NIQU5fVFlQRV83XzFfT0hfQ0hSOgo+ICsgICAgICAgY2FzZSBIRE1JX0FVRF9DSEFO X1RZUEVfN18xX0xTU19SU1NfTFNSX1JTUjoKPiArICAgICAgICAgICAgICAgcmV0dXJuIDg7Cj4g KyAgICAgICBkZWZhdWx0Ogo+ICsgICAgICAgICAgICAgICByZXR1cm4gMjsKPiArICAgICAgIH0K PiArfQo+ICsKPiArc3RhdGljIGludCBtdGtfaGRtaV92aWRlb19jaGFuZ2VfdnBsbChzdHJ1Y3Qg bXRrX2hkbWkgKmhkbWksIHUzMiBjbG9jaykKPiArewo+ICsgICAgICAgdW5zaWduZWQgbG9uZyBy YXRlOwo+ICsgICAgICAgaW50IHJldDsKPiArCj4gKyAgICAgICAvKiBUaGUgRFBJIGRyaXZlciBh bHJlYWR5IHNob3VsZCBoYXZlIHNldCBUVkRQTEwgdG8gdGhlIGNvcnJlY3QgcmF0ZSAqLwo+ICsg ICAgICAgcmV0ID0gY2xrX3NldF9yYXRlKGhkbWktPmNsa1tNVEtfSERNSV9DTEtfSERNSV9QTExd LCBjbG9jayk7Cj4gKyAgICAgICBpZiAocmV0KSB7Cj4gKyAgICAgICAgICAgICAgIGRldl9lcnIo aGRtaS0+ZGV2LCAiRmFpbGVkIHRvIHNldCBQTEwgdG8gJXUgSHo6ICVkXG4iLCBjbG9jaywKPiAr ICAgICAgICAgICAgICAgICAgICAgICByZXQpOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0 Owo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHJhdGUgPSBjbGtfZ2V0X3JhdGUoaGRtaS0+Y2xr W01US19IRE1JX0NMS19IRE1JX1BMTF0pOwo+ICsKPiArICAgICAgIGlmIChESVZfUk9VTkRfQ0xP U0VTVChyYXRlLCAxMDAwKSAhPSBESVZfUk9VTkRfQ0xPU0VTVChjbG9jaywgMTAwMCkpCj4gKyAg ICAgICAgICAgICAgIGRldl93YXJuKGhkbWktPmRldiwgIldhbnQgUExMICV1IEh6LCBnb3QgJWx1 IEh6XG4iLCBjbG9jaywKPiArICAgICAgICAgICAgICAgICAgICAgICAgcmF0ZSk7Cj4gKyAgICAg ICBlbHNlCj4gKyAgICAgICAgICAgICAgIGRldl9kYmcoaGRtaS0+ZGV2LCAiV2FudCBQTEwgJXUg SHosIGdvdCAlbHUgSHpcbiIsIGNsb2NrLCByYXRlKTsKPiArCj4gKyAgICAgICBtdGtfaGRtaV9o d19jb25maWdfc3lzKGhkbWkpOwo+ICsgICAgICAgbXRrX2hkbWlfaHdfc2V0X2RlZXBfY29sb3Jf bW9kZShoZG1pKTsKPiArICAgICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBt dGtfaGRtaV92aWRlb19zZXRfZGlzcGxheV9tb2RlKHN0cnVjdCBtdGtfaGRtaSAqaGRtaSwKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICptb2RlKQo+ICt7Cj4gKyAgICAgICBtdGtfaGRtaV9od19yZXNldChoZG1pKTsK PiArICAgICAgIG10a19oZG1pX2h3X2VuYWJsZV9ub3RpY2UoaGRtaSwgdHJ1ZSk7Cj4gKyAgICAg ICBtdGtfaGRtaV9od193cml0ZV9pbnRfbWFzayhoZG1pLCAweGZmKTsKPiArICAgICAgIG10a19o ZG1pX2h3X2VuYWJsZV9kdmlfbW9kZShoZG1pLCBoZG1pLT5kdmlfbW9kZSk7Cj4gKyAgICAgICBt dGtfaGRtaV9od19uY3RzX2F1dG9fd3JpdGVfZW5hYmxlKGhkbWksIHRydWUpOwo+ICsKPiArICAg ICAgIG10a19oZG1pX2h3X21zaWNfc2V0dGluZyhoZG1pLCBtb2RlKTsKPiArfQo+ICsKPiArc3Rh dGljIGludCBtdGtfaGRtaV9hdWRfZW5hYmxlX3BhY2tldChzdHJ1Y3QgbXRrX2hkbWkgKmhkbWks IGJvb2wgZW5hYmxlKQo+ICt7Cj4gKyAgICAgICBtdGtfaGRtaV9od19zZW5kX2F1ZF9wYWNrZXQo aGRtaSwgZW5hYmxlKTsKPiArICAgICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50 IG10a19oZG1pX2F1ZF9vbl9vZmZfaHdfbmN0cyhzdHJ1Y3QgbXRrX2hkbWkgKmhkbWksIGJvb2wg b24pCj4gK3sKPiArICAgICAgIG10a19oZG1pX2h3X25jdHNfZW5hYmxlKGhkbWksIG9uKTsKPiAr ICAgICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG10a19oZG1pX2F1ZF9zZXRf aW5wdXQoc3RydWN0IG10a19oZG1pICpoZG1pKQo+ICt7Cj4gKyAgICAgICB1OCBjaGFuX2NvdW50 Owo+ICsKPiArICAgICAgIG10a19oZG1pX2h3X2F1ZF9zZXRfY2hhbm5lbF9zd2FwKGhkbWksIEhE TUlfQVVEX1NXQVBfTEZFX0NDKTsKPiArICAgICAgIG10a19oZG1pX2h3X2F1ZF9yYXdfZGF0YV9l bmFibGUoaGRtaSwgdHJ1ZSk7Cj4gKwo+ICsgICAgICAgaWYgKGhkbWktPmF1ZF9wYXJhbS5hdWRf aW5wdXRfdHlwZSA9PSBIRE1JX0FVRF9JTlBVVF9TUERJRiAmJgo+ICsgICAgICAgICAgIGhkbWkt PmF1ZF9wYXJhbS5hdWRfY29kZWMgPT0gSERNSV9BVURJT19DT0RJTkdfVFlQRV9EU1QpIHsKPiAr ICAgICAgICAgICAgICAgbXRrX2hkbWlfaHdfYXVkX3NldF9iaXRfbnVtKGhkbWksCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIRE1JX0FVRElPX1NBTVBMRV9T SVpFXzI0KTsKPiArICAgICAgIH0gZWxzZSBpZiAoaGRtaS0+YXVkX3BhcmFtLmF1ZF9pMnNfZm10 ID09Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgSERNSV9JMlNfTU9ERV9MSlRfMjRCSVQpIHsK PiArICAgICAgICAgICAgICAgaGRtaS0+YXVkX3BhcmFtLmF1ZF9pMnNfZm10ID0gSERNSV9JMlNf TU9ERV9MSlRfMTZCSVQ7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgbXRrX2hkbWlfaHdfYXVk X3NldF9pMnNfZm10KGhkbWksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aGRtaS0+YXVkX3BhcmFtLmF1ZF9pMnNfZm10KTsKPiArICAgICAgIG10a19oZG1pX2h3X2F1ZF9z ZXRfYml0X251bShoZG1pLCBIRE1JX0FVRElPX1NBTVBMRV9TSVpFXzI0KTsKPiArCj4gKyAgICAg ICBtdGtfaGRtaV9od19hdWRfc2V0X2hpZ2hfYml0cmF0ZShoZG1pLCBmYWxzZSk7Cj4gKyAgICAg ICBtdGtfaGRtaV9waHlfYXVkX2RzdF9ub3JtYWxfZG91YmxlX2VuYWJsZShoZG1pLCBmYWxzZSk7 Cj4gKyAgICAgICBtdGtfaGRtaV9od19hdWRfZHN0X2VuYWJsZShoZG1pLCBmYWxzZSk7CgpUaGVz ZSB0aHJlZSBhbGwgY2hhbmdlIHRoZSBzYW1lIHJlZ2lzdGVyLiAgQ29tYmluZSB0aGVtIGludG8g YSBzaW5nbGUgaGVscGVyCmZ1bmN0aW9uIHRoYXQganVzdCB3cml0ZXMgR1JMX0FVRElPX0NGRyBv bmNlLgoKPiArCj4gKyAgICAgICBpZiAoaGRtaS0+YXVkX3BhcmFtLmF1ZF9pbnB1dF90eXBlID09 IEhETUlfQVVEX0lOUFVUX1NQRElGKSB7Cj4gKyAgICAgICAgICAgICAgIG10a19oZG1pX2h3X2F1 ZF9kc2RfZW5hYmxlKGhkbWksIGZhbHNlKTsKPiArICAgICAgICAgICAgICAgaWYgKGhkbWktPmF1 ZF9wYXJhbS5hdWRfY29kZWMgPT0KPiArICAgICAgICAgICAgICAgICAgICAgICBIRE1JX0FVRElP X0NPRElOR19UWVBFX0RTVCkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgIG10a19oZG1pX3Bo eV9hdWRfZHN0X25vcm1hbF9kb3VibGVfZW5hYmxlKGhkbWksCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSk7Cj4g KyAgICAgICAgICAgICAgICAgICAgICAgbXRrX2hkbWlfaHdfYXVkX2RzdF9lbmFibGUoaGRtaSwg dHJ1ZSk7Cj4gKyAgICAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgICAgIGNoYW5fY291 bnQgPSBtdGtfaGRtaV9hdWRfZ2V0X2NobmxfY291bnQKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKEhETUlfQVVEX0NIQU5fVFlQRV8yXzApOwo+ICsg ICAgICAgICAgICAgICBtdGtfaGRtaV9od19hdWRfc2V0X2kyc19jaGFuX251bShoZG1pLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIRE1JX0FVRF9D SEFOX1RZUEVfMl8wLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjaGFuX2NvdW50KTsKPiArICAgICAgICAgICAgICAgbXRrX2hkbWlfaHdfYXVkX3Nl dF9pbnB1dF90eXBlKGhkbWksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBIRE1JX0FVRF9JTlBVVF9TUERJRik7Cj4gKyAgICAgICB9IGVsc2Ugewo+ICsg ICAgICAgICAgICAgICBtdGtfaGRtaV9od19hdWRfZHNkX2VuYWJsZShoZG1pLCBmYWxzZSk7Cj4g KyAgICAgICAgICAgICAgIGNoYW5fY291bnQgPQo+ICsgICAgICAgICAgICAgICAgICAgICAgIG10 a19oZG1pX2F1ZF9nZXRfY2hubF9jb3VudCgKPiArICAgICAgICAgICAgICAgICAgICAgICBoZG1p LT5hdWRfcGFyYW0uYXVkX2lucHV0X2NoYW5fdHlwZSk7Cj4gKyAgICAgICAgICAgICAgIG10a19o ZG1pX2h3X2F1ZF9zZXRfaTJzX2NoYW5fbnVtKAo+ICsgICAgICAgICAgICAgICAgICAgICAgIGhk bWksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgaGRtaS0+YXVkX3BhcmFtLmF1ZF9pbnB1dF9j aGFuX3R5cGUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgY2hhbl9jb3VudCk7Cj4gKyAgICAg ICAgICAgICAgIG10a19oZG1pX2h3X2F1ZF9zZXRfaW5wdXRfdHlwZShoZG1pLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSERNSV9BVURfSU5QVVRfSTJT KTsKPiArICAgICAgIH0KPiArICAgICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50 IG10a19oZG1pX2F1ZF9zZXRfc3JjKHN0cnVjdCBtdGtfaGRtaSAqaGRtaSwKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpkaXNwbGF5X21v ZGUpCj4gK3sKPiArICAgICAgIG10a19oZG1pX2F1ZF9vbl9vZmZfaHdfbmN0cyhoZG1pLCBmYWxz ZSk7Cj4gKwo+ICsgICAgICAgaWYgKGhkbWktPmF1ZF9wYXJhbS5hdWRfaW5wdXRfdHlwZSA9PSBI RE1JX0FVRF9JTlBVVF9JMlMpIHsKPiArICAgICAgICAgICAgICAgc3dpdGNoIChoZG1pLT5hdWRf cGFyYW0uYXVkX2hkbWlfZnMpIHsKPiArICAgICAgICAgICAgICAgY2FzZSBIRE1JX0FVRElPX1NB TVBMRV9GUkVRVUVOQ1lfMzIwMDA6Cj4gKyAgICAgICAgICAgICAgIGNhc2UgSERNSV9BVURJT19T QU1QTEVfRlJFUVVFTkNZXzQ0MTAwOgo+ICsgICAgICAgICAgICAgICBjYXNlIEhETUlfQVVESU9f U0FNUExFX0ZSRVFVRU5DWV80ODAwMDoKPiArICAgICAgICAgICAgICAgY2FzZSBIRE1JX0FVRElP X1NBTVBMRV9GUkVRVUVOQ1lfODgyMDA6Cj4gKyAgICAgICAgICAgICAgIGNhc2UgSERNSV9BVURJ T19TQU1QTEVfRlJFUVVFTkNZXzk2MDAwOgo+ICsgICAgICAgICAgICAgICAgICAgICAgIG10a19o ZG1pX2h3X2F1ZF9zcmNfb2ZmKGhkbWkpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIC8qIG10 a19oZG1pX2h3X2F1ZF9zcmNfZW5hYmxlKGhkbWksIGZhbHNlKTsgKi8KCndoeSBpcyB0aGlzIGNv bW1lbnRlZCBvdXQ/Cgo+ICsgICAgICAgICAgICAgICAgICAgICAgIG10a19oZG1pX2h3X2F1ZF9z ZXRfbWNsaygKPiArICAgICAgICAgICAgICAgICAgICAgICBoZG1pLAo+ICsgICAgICAgICAgICAg ICAgICAgICAgIGhkbWktPmF1ZF9wYXJhbS5hdWRfbWNsayk7CgppbmRlbnRhdGlvbiBpcyBmdW5u eSBoZXJlCgo+ICsgICAgICAgICAgICAgICAgICAgICAgIG10a19oZG1pX2h3X2F1ZF9hY2xrX2lu dl9lbmFibGUoaGRtaSwgZmFsc2UpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ ICsgICAgICAgICAgICAgICBkZWZhdWx0Ogo+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr Owo+ICsgICAgICAgICAgICAgICB9Cj4gKyAgICAgICB9IGVsc2Ugewo+ICsgICAgICAgICAgICAg ICBzd2l0Y2ggKGhkbWktPmF1ZF9wYXJhbS5pZWNfZnJhbWVfZnMpIHsKPiArICAgICAgICAgICAg ICAgY2FzZSBIRE1JX0lFQ18zMks6Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgaGRtaS0+YXVk X3BhcmFtLmF1ZF9oZG1pX2ZzID0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgSERNSV9B VURJT19TQU1QTEVfRlJFUVVFTkNZXzMyMDAwOwoKaW5kZW50YXRpb24gaXMgZnVubnkgaGVyZQoK PiArICAgICAgICAgICAgICAgICAgICAgICBtdGtfaGRtaV9od19hdWRfc3JjX29mZihoZG1pKTsK PiArICAgICAgICAgICAgICAgICAgICAgICBtdGtfaGRtaV9od19hdWRfc2V0X21jbGsoaGRtaSwK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSERNSV9B VURfTUNMS18xMjhGUyk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgbXRrX2hkbWlfaHdfYXVk X2FjbGtfaW52X2VuYWJsZShoZG1pLCBmYWxzZSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAg YnJlYWs7Cj4gKyAgICAgICAgICAgICAgIGNhc2UgSERNSV9JRUNfNDhLOgo+ICsgICAgICAgICAg ICAgICAgICAgICAgIGhkbWktPmF1ZF9wYXJhbS5hdWRfaGRtaV9mcyA9Cj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIEhETUlfQVVESU9fU0FNUExFX0ZSRVFVRU5DWV80ODAwMDsKCmluZGVu dGF0aW9uIGlzIGZ1bm55IGhlcmUKCj4gKyAgICAgICAgICAgICAgICAgICAgICAgbXRrX2hkbWlf aHdfYXVkX3NyY19vZmYoaGRtaSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgbXRrX2hkbWlf aHdfYXVkX3NldF9tY2xrKGhkbWksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEhETUlfQVVEX01DTEtfMTI4RlMpOwo+ICsgICAgICAgICAgICAgICAg ICAgICAgIG10a19oZG1pX2h3X2F1ZF9hY2xrX2ludl9lbmFibGUoaGRtaSwgZmFsc2UpOwo+ICsg ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAgICAgICBjYXNlIEhETUlf SUVDXzQ0SzoKPiArICAgICAgICAgICAgICAgICAgICAgICBoZG1pLT5hdWRfcGFyYW0uYXVkX2hk bWlfZnMgPQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBIRE1JX0FVRElPX1NBTVBMRV9G UkVRVUVOQ1lfNDQxMDA7CgppbmRlbnRhdGlvbiBpcyBmdW5ueSBoZXJlCgo+ICsgICAgICAgICAg ICAgICAgICAgICAgIG10a19oZG1pX2h3X2F1ZF9zcmNfb2ZmKGhkbWkpOwo+ICsgICAgICAgICAg ICAgICAgICAgICAgIG10a19oZG1pX2h3X2F1ZF9zZXRfbWNsayhoZG1pLAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIRE1JX0FVRF9NQ0xLXzEyOEZT KTsKPiArICAgICAgICAgICAgICAgICAgICAgICBtdGtfaGRtaV9od19hdWRfYWNsa19pbnZfZW5h YmxlKGhkbWksIGZhbHNlKTsKClRoZXNlIGNsYXVzZXMgYWxsIHNlZW0gdG8gZG8gdGhlIHNhbWUg dGhpbmc7IG9ubHkgdGhlIG1jbGsgcGFyYW1ldGVyIGlzCmRpZmZlcmVudC4gIENhbiB5b3UgcmVm YWN0b3IgdGhlbSBpbnRvIGEgaGVscGVyIGZ1bmN0aW9uPwoKPiArICAgICAgICAgICAgICAgICAg ICAgICBicmVhazsKPiArICAgICAgICAgICAgICAgZGVmYXVsdDoKPiArICAgICAgICAgICAgICAg ICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgICAgfQo+ICsgICAgICAgfQo+ICsgICAgICAg bXRrX2hkbWlfaHdfYXVkX3NldF9uY3RzKGhkbWksIGhkbWktPmF1ZF9wYXJhbS5hdWRfaGRtaV9m cywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5X21vZGUtPmNsb2Nr KTsKPiArCj4gKyAgICAgICBtdGtfaGRtaV9od19hdWRfc3JjX3JlZW5hYmxlKGhkbWkpOwo+ICsg ICAgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbXRrX2hkbWlfYXVkX3NldF9j aG5sX3N0YXR1cyhzdHJ1Y3QgbXRrX2hkbWkgKmhkbWkpCj4gK3sKPiArICAgICAgIG10a19oZG1p X2h3X2F1ZF9zZXRfY2hhbm5lbF9zdGF0dXMoCj4gKyAgICAgICAgICAgICAgIGhkbWksCj4gKyAg ICAgICAgICBoZG1pLT5hdWRfcGFyYW0uaGRtaV9sX2NoYW5uZWxfc3RhdGUsCj4gKyAgICAgICAg ICBoZG1pLT5hdWRfcGFyYW0uaGRtaV9yX2NoYW5uZWxfc3RhdGUsCj4gKyAgICAgICAgICBoZG1p LT5hdWRfcGFyYW0uYXVkX2hkbWlfZnMpOwoKaW5kZW50YXRpb24gaXMgZnVubnkgaGVyZQoKPiAr ICAgICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG10a19oZG1pX2F1ZF9vdXRw dXRfY29uZmlnKHN0cnVjdCBtdGtfaGRtaSAqaGRtaSwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpkaXNwbGF5X21vZGUpCj4g K3sKPiArICAgICAgIG10a19oZG1pX2h3X2F1ZF9tdXRlKGhkbWksIHRydWUpOwo+ICsgICAgICAg bXRrX2hkbWlfYXVkX2VuYWJsZV9wYWNrZXQoaGRtaSwgZmFsc2UpOwo+ICsKPiArICAgICAgIG10 a19oZG1pX2F1ZF9zZXRfaW5wdXQoaGRtaSk7Cj4gKyAgICAgICBtdGtfaGRtaV9hdWRfc2V0X3Ny YyhoZG1pLCBkaXNwbGF5X21vZGUpOwo+ICsgICAgICAgbXRrX2hkbWlfYXVkX3NldF9jaG5sX3N0 YXR1cyhoZG1pKTsKPiArCj4gKyAgICAgICB1c2xlZXBfcmFuZ2UoNTAsIDEwMCk7Cj4gKwo+ICsg ICAgICAgbXRrX2hkbWlfYXVkX29uX29mZl9od19uY3RzKGhkbWksIHRydWUpOwo+ICsgICAgICAg bXRrX2hkbWlfYXVkX2VuYWJsZV9wYWNrZXQoaGRtaSwgdHJ1ZSk7Cj4gKyAgICAgICBtdGtfaGRt aV9od19hdWRfbXV0ZShoZG1pLCBmYWxzZSk7Cj4gKyAgICAgICByZXR1cm4gMDsKPiArfQo+ICsK PiArc3RhdGljIGludCBtdGtfaGRtaV9zZXR1cF9hdl9tdXRlX3BhY2tldChzdHJ1Y3QgbXRrX2hk bWkgKmhkbWkpCj4gK3sKPiArICAgICAgIG10a19oZG1pX2h3X3NlbmRfYXZfbXV0ZShoZG1pKTsK PiArICAgICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG10a19oZG1pX3NldHVw X2F2X3VubXV0ZV9wYWNrZXQoc3RydWN0IG10a19oZG1pICpoZG1pKQo+ICt7Cj4gKyAgICAgICBt dGtfaGRtaV9od19zZW5kX2F2X3VubXV0ZShoZG1pKTsKPiArICAgICAgIHJldHVybiAwOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgaW50IG10a19oZG1pX3NldHVwX2F2aV9pbmZvZnJhbWUoc3RydWN0IG10 a19oZG1pICpoZG1pLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKPiArewo+ICsgICAgICAgc3RydWN0IGhkbWlf YXZpX2luZm9mcmFtZSBmcmFtZTsKPiArICAgICAgIHU4IGJ1ZmZlclsxN107Cj4gKyAgICAgICBz c2l6ZV90IGVycjsKPiArCj4gKyAgICAgICBlcnIgPSBkcm1faGRtaV9hdmlfaW5mb2ZyYW1lX2Zy b21fZGlzcGxheV9tb2RlKCZmcmFtZSwgbW9kZSk7Cj4gKyAgICAgICBpZiAoZXJyIDwgMCkgewo+ ICsgICAgICAgICAgICAgICBkZXZfZXJyKGhkbWktPmRldiwKPiArICAgICAgICAgICAgICAgICAg ICAgICAiRmFpbGVkIHRvIGdldCBBVkkgaW5mb2ZyYW1lIGZyb20gbW9kZTogJXpkXG4iLCBlcnIp Owo+ICsgICAgICAgICAgICAgICByZXR1cm4gZXJyOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAg IGVyciA9IGhkbWlfYXZpX2luZm9mcmFtZV9wYWNrKCZmcmFtZSwgYnVmZmVyLCBzaXplb2YoYnVm ZmVyKSk7Cj4gKyAgICAgICBpZiAoZXJyIDwgMCkgewo+ICsgICAgICAgICAgICAgICBkZXZfZXJy KGhkbWktPmRldiwgIkZhaWxlZCB0byBwYWNrIEFWSSBpbmZvZnJhbWU6ICV6ZFxuIiwgZXJyKTsK PiArICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBt dGtfaGRtaV9od19zZW5kX2luZm9fZnJhbWUoaGRtaSwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSk7 Cj4gKyAgICAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBtdGtfaGRtaV9zZXR1 cF9zcGRfaW5mb2ZyYW1lKHN0cnVjdCBtdGtfaGRtaSAqaGRtaSwKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdmVuZG9yLAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwcm9kdWN0KQo+ICt7Cj4g KyAgICAgICBzdHJ1Y3QgaGRtaV9zcGRfaW5mb2ZyYW1lIGZyYW1lOwo+ICsgICAgICAgdTggYnVm ZmVyWzI5XTsKPiArICAgICAgIHNzaXplX3QgZXJyOwo+ICsKPiArICAgICAgIGVyciA9IGhkbWlf c3BkX2luZm9mcmFtZV9pbml0KCZmcmFtZSwgdmVuZG9yLCBwcm9kdWN0KTsKPiArICAgICAgIGlm IChlcnIgPCAwKSB7Cj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoaGRtaS0+ZGV2LCAiRmFpbGVk IHRvIGluaXRpYWxpemUgU1BEIGluZm9mcmFtZTogJXpkXG4iLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgIGVycik7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiBlcnI7Cj4gKyAgICAgICB9Cj4g Kwo+ICsgICAgICAgZXJyID0gaGRtaV9zcGRfaW5mb2ZyYW1lX3BhY2soJmZyYW1lLCBidWZmZXIs IHNpemVvZihidWZmZXIpKTsKPiArICAgICAgIGlmIChlcnIgPCAwKSB7Cj4gKyAgICAgICAgICAg ICAgIGRldl9lcnIoaGRtaS0+ZGV2LCAiRmFpbGVkIHRvIHBhY2sgU0RQIGluZm9mcmFtZTogJXpk XG4iLCBlcnIpOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gZXJyOwo+ICsgICAgICAgfQo+ICsK PiArICAgICAgIG10a19oZG1pX2h3X3NlbmRfaW5mb19mcmFtZShoZG1pLCBidWZmZXIsIHNpemVv ZihidWZmZXIpKTsKPiArICAgICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG10 a19oZG1pX3NldHVwX2F1ZGlvX2luZm9mcmFtZShzdHJ1Y3QgbXRrX2hkbWkgKmhkbWkpCj4gK3sK PiArICAgICAgIHN0cnVjdCBoZG1pX2F1ZGlvX2luZm9mcmFtZSBmcmFtZTsKPiArICAgICAgIHU4 IGJ1ZmZlclsxNF07Cj4gKyAgICAgICBzc2l6ZV90IGVycjsKPiArCj4gKyAgICAgICBlcnIgPSBo ZG1pX2F1ZGlvX2luZm9mcmFtZV9pbml0KCZmcmFtZSk7Cj4gKyAgICAgICBpZiAoZXJyIDwgMCkg ewo+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGhkbWktPmRldiwgIkZhaWxlZCB0byBzZXR1cCBh dWRpbyBpbmZvZnJhbWU6ICV6ZFxuIiwKPiArICAgICAgICAgICAgICAgICAgICAgICBlcnIpOwo+ ICsgICAgICAgICAgICAgICByZXR1cm4gZXJyOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGZy YW1lLmNvZGluZ190eXBlID0gSERNSV9BVURJT19DT0RJTkdfVFlQRV9TVFJFQU07Cj4gKyAgICAg ICBmcmFtZS5zYW1wbGVfZnJlcXVlbmN5ID0gSERNSV9BVURJT19TQU1QTEVfRlJFUVVFTkNZX1NU UkVBTTsKPiArICAgICAgIGZyYW1lLnNhbXBsZV9zaXplID0gSERNSV9BVURJT19TQU1QTEVfU0la RV9TVFJFQU07Cj4gKyAgICAgICBmcmFtZS5jaGFubmVscyA9Cj4gKyAgICAgICAgICAgbXRrX2hk bWlfYXVkX2dldF9jaG5sX2NvdW50KAo+ICsgICAgICAgICAgIGhkbWktPmF1ZF9wYXJhbS5hdWRf aW5wdXRfY2hhbl90eXBlKTsKCmluZGVudGF0aW9uIGlzIGZ1bm55Cgo+ICsKPiArICAgICAgIGVy ciA9IGhkbWlfYXVkaW9faW5mb2ZyYW1lX3BhY2soJmZyYW1lLCBidWZmZXIsIHNpemVvZihidWZm ZXIpKTsKPiArICAgICAgIGlmIChlcnIgPCAwKSB7Cj4gKyAgICAgICAgICAgICAgIGRldl9lcnIo aGRtaS0+ZGV2LCAiRmFpbGVkIHRvIHBhY2sgYXVkaW8gaW5mb2ZyYW1lOiAlemRcbiIsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgZXJyKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIGVycjsK PiArICAgICAgIH0KPiArCj4gKyAgICAgICBtdGtfaGRtaV9od19zZW5kX2luZm9fZnJhbWUoaGRt aSwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSk7Cj4gKyAgICAgICByZXR1cm4gMDsKPiArfQo+ICsK PiArc3RhdGljIGludCBtdGtfaGRtaV9zZXR1cF92ZW5kb3Jfc3BlY2lmaWNfaW5mb2ZyYW1lKHN0 cnVjdCBtdGtfaGRtaSAqaGRtaSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKPiArewo+ICsgICAg ICAgc3RydWN0IGhkbWlfdmVuZG9yX2luZm9mcmFtZSBmcmFtZTsKPiArICAgICAgIHU4IGJ1ZmZl clsxMF07Cj4gKyAgICAgICBzc2l6ZV90IGVycjsKPiArCj4gKyAgICAgICBlcnIgPSBkcm1faGRt aV92ZW5kb3JfaW5mb2ZyYW1lX2Zyb21fZGlzcGxheV9tb2RlKCZmcmFtZSwgbW9kZSk7Cj4gKyAg ICAgICBpZiAoZXJyKSB7Cj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoaGRtaS0+ZGV2LAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gZ2V0IHZlbmRvciBpbmZvZnJhbWUgZnJv bSBtb2RlOiAlemRcbiIsIGVycik7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiBlcnI7Cj4gKyAg ICAgICB9Cj4gKwo+ICsgICAgICAgZXJyID0gaGRtaV92ZW5kb3JfaW5mb2ZyYW1lX3BhY2soJmZy YW1lLCBidWZmZXIsIHNpemVvZihidWZmZXIpKTsKPiArICAgICAgIGlmIChlcnIpIHsKPiArICAg ICAgICAgICAgICAgZGV2X2VycihoZG1pLT5kZXYsICJGYWlsZWQgdG8gcGFjayB2ZW5kb3IgaW5m b2ZyYW1lOiAlemRcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZXJyKTsKPiArICAgICAg ICAgICAgICAgcmV0dXJuIGVycjsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBtdGtfaGRtaV9o d19zZW5kX2luZm9fZnJhbWUoaGRtaSwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSk7Cj4gKyAgICAg ICByZXR1cm4gMDsKPiArfQo+ICsKPiAraW50IG10a19oZG1pX2hwZF9oaWdoKHN0cnVjdCBtdGtf aGRtaSAqaGRtaSkKPiArewo+ICsgICAgICAgcmV0dXJuIGhkbWktPmNlY19kZXYgPyBtdGtfY2Vj X2hwZF9oaWdoKGhkbWktPmNlY19kZXYpIDogZmFsc2U7CgpJIGRvbid0IHRoaW5rIHdlIHdvdWxk IGdldCB0aGlzIGZhciBpZiBjZWNfZGV2IHdhcyBOVUxMLgoKPiArfQo+ICsKPiAraW50IG10a19o ZG1pX291dHB1dF9pbml0KHN0cnVjdCBtdGtfaGRtaSAqaGRtaSkKPiArewo+ICsgICAgICAgc3Ry dWN0IGhkbWlfYXVkaW9fcGFyYW0gKmF1ZF9wYXJhbSA9ICZoZG1pLT5hdWRfcGFyYW07Cj4gKwo+ ICsgICAgICAgaWYgKGhkbWktPmluaXQpCj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFM OwoKVGhpcyBjaGVjayBpcyBub3QgbmVlZGVkOyB0aGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVk IG9uY2UsIGR1cmluZyBwcm9iZS4KSW4gZmFjdCwgSSBkb24ndCB0aGluayB0aGUgIi0+aW5pdCIg ZmllbGQgaXMgbmVlZGVkIGF0IGFsbC4KCj4gKwo+ICsgICAgICAgaGRtaS0+Y3NwID0gSERNSV9D T0xPUlNQQUNFX1JHQjsKPiArICAgICAgIGhkbWktPm91dHB1dCA9IHRydWU7Cj4gKyAgICAgICBh dWRfcGFyYW0tPmF1ZF9jb2RlYyA9IEhETUlfQVVESU9fQ09ESU5HX1RZUEVfUENNOwo+ICsgICAg ICAgYXVkX3BhcmFtLT5hdWRfaGRtaV9mcyA9IEhETUlfQVVESU9fU0FNUExFX0ZSRVFVRU5DWV80 ODAwMDsKPiArICAgICAgIGF1ZF9wYXJhbS0+YXVkX3NhbXBlX3NpemUgPSBIRE1JX0FVRElPX1NB TVBMRV9TSVpFXzE2Owo+ICsgICAgICAgYXVkX3BhcmFtLT5hdWRfaW5wdXRfdHlwZSA9IEhETUlf QVVEX0lOUFVUX0kyUzsKPiArICAgICAgIGF1ZF9wYXJhbS0+YXVkX2kyc19mbXQgPSBIRE1JX0ky U19NT0RFX0kyU18yNEJJVDsKPiArICAgICAgIGF1ZF9wYXJhbS0+YXVkX21jbGsgPSBIRE1JX0FV RF9NQ0xLXzEyOEZTOwo+ICsgICAgICAgYXVkX3BhcmFtLT5pZWNfZnJhbWVfZnMgPSBIRE1JX0lF Q180OEs7Cj4gKyAgICAgICBhdWRfcGFyYW0tPmF1ZF9pbnB1dF9jaGFuX3R5cGUgPSBIRE1JX0FV RF9DSEFOX1RZUEVfMl8wOwo+ICsgICAgICAgYXVkX3BhcmFtLT5oZG1pX2xfY2hhbm5lbF9zdGF0 ZVsyXSA9IDI7Cj4gKyAgICAgICBhdWRfcGFyYW0tPmhkbWlfcl9jaGFubmVsX3N0YXRlWzJdID0g MjsKPiArICAgICAgIGhkbWktPmluaXQgPSB0cnVlOwo+ICsKPiArICAgICAgIHJldHVybiAwOwo+ ICt9Cj4gKwo+ICt2b2lkIG10a19oZG1pX3Bvd2VyX29uKHN0cnVjdCBtdGtfaGRtaSAqaGRtaSkK PiArewo+ICsgICAgICAgbXRrX2hkbWlfaHdfbWFrZV9yZWdfd3JpdGFibGUoaGRtaSwgdHJ1ZSk7 Cj4gKyAgICAgICBtdGtfaGRtaV9od18xcDRfdmVyc2lvbl9lbmFibGUoaGRtaSwgdHJ1ZSk7Cj4g K30KPiArCj4gK3ZvaWQgbXRrX2hkbWlfcG93ZXJfb2ZmKHN0cnVjdCBtdGtfaGRtaSAqaGRtaSkK PiArewo+ICsgICAgICAgbXRrX2hkbWlfaHdfMXA0X3ZlcnNpb25fZW5hYmxlKGhkbWksIHRydWUp Owo+ICsgICAgICAgbXRrX2hkbWlfaHdfbWFrZV9yZWdfd3JpdGFibGUoaGRtaSwgZmFsc2UpOwo+ ICt9Cj4gKwo+ICtpbnQgbXRrX2hkbWlfb3V0cHV0X3NldF9kaXNwbGF5X21vZGUoc3RydWN0IG10 a19oZG1pICpoZG1pLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKPiArewo+ICsgICAgICAgaW50IHJldDsKPiArCj4g KyAgICAgICBpZiAoIWhkbWktPmluaXQpIHsKCklzIHRoaXMgcG9zc2libGU/Cgo+ICsgICAgICAg ICAgICAgICBkZXZfZXJyKGhkbWktPmRldiwgImRvZXNuJ3QgaW5pdCBoZG1pIGNvbnRyb2wgY29u dGV4dCFcbiIpOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiArICAgICAgIH0K PiArCj4gKyAgICAgICBtdGtfaGRtaV9od192aWRfYmxhY2soaGRtaSwgdHJ1ZSk7Cj4gKyAgICAg ICBtdGtfaGRtaV9od19hdWRfbXV0ZShoZG1pLCB0cnVlKTsKPiArICAgICAgIG10a19oZG1pX3Nl dHVwX2F2X211dGVfcGFja2V0KGhkbWkpOwo+ICsgICAgICAgcGh5X3Bvd2VyX29mZihoZG1pLT5w aHkpOwo+ICsKPiArICAgICAgIHJldCA9IG10a19oZG1pX3ZpZGVvX2NoYW5nZV92cGxsKGhkbWks Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlLT5jbG9jayAq IDEwMDApOwo+ICsgICAgICAgaWYgKHJldCkgewo+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGhk bWktPmRldiwgIkZhaWxlZCB0byBzZXQgdnBsbDogJWRcbiIsIHJldCk7CgpjbGVhbnVwIG9uIGVy cm9yPwoKPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiArICAgICAgIH0KPiArICAgICAg IG10a19oZG1pX3ZpZGVvX3NldF9kaXNwbGF5X21vZGUoaGRtaSwgbW9kZSk7Cj4gKwo+ICsgICAg ICAgcGh5X3Bvd2VyX29uKGhkbWktPnBoeSk7Cj4gKyAgICAgICBtdGtfaGRtaV9hdWRfb3V0cHV0 X2NvbmZpZyhoZG1pLCBtb2RlKTsKPiArCj4gKyAgICAgICBtdGtfaGRtaV9zZXR1cF9hdWRpb19p bmZvZnJhbWUoaGRtaSk7Cj4gKyAgICAgICBtdGtfaGRtaV9zZXR1cF9hdmlfaW5mb2ZyYW1lKGhk bWksIG1vZGUpOwo+ICsgICAgICAgbXRrX2hkbWlfc2V0dXBfc3BkX2luZm9mcmFtZShoZG1pLCAi bWVkaWF0ZWsiLCAiY2hyb21lYm9vayIpOwoKd2hhdD8gIE5vLiAgVGhlICJwcm9kdWN0IiBzaG91 bGQgcmVmZXIgdG8gdGhlIE1USyBIRE1JIGJsb2NrLgoKPiArICAgICAgIGlmIChtb2RlLT5mbGFn cyAmIERSTV9NT0RFX0ZMQUdfM0RfTUFTSykKPiArICAgICAgICAgICAgICAgbXRrX2hkbWlfc2V0 dXBfdmVuZG9yX3NwZWNpZmljX2luZm9mcmFtZShoZG1pLCBtb2RlKTsKPiArCj4gKyAgICAgICBt dGtfaGRtaV9od192aWRfYmxhY2soaGRtaSwgZmFsc2UpOwo+ICsgICAgICAgbXRrX2hkbWlfaHdf YXVkX211dGUoaGRtaSwgZmFsc2UpOwo+ICsgICAgICAgbXRrX2hkbWlfc2V0dXBfYXZfdW5tdXRl X3BhY2tldChoZG1pKTsKPiArCj4gKyAgICAgICByZXR1cm4gMDsKPiArfQo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWkuaCBiL2RyaXZlcnMvZ3B1L2RybS9t ZWRpYXRlay9tdGtfaGRtaS5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAw Li45NDAzOTE1Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRl ay9tdGtfaGRtaS5oCj4gQEAgLTAsMCArMSwyMjEgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IChj KSAyMDE0IE1lZGlhVGVrIEluYy4KPiArICogQXV0aG9yOiBKaWUgUWl1IDxqaWUucWl1QG1lZGlh dGVrLmNvbT4KPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPiArICogaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKPiArICogcHVi bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCj4gKyAqCj4gKyAqIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCj4gKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCj4gKyAqLwo+ICsjaWZuZGVmIF9NVEtfSERNSV9DVFJMX0gKPiAr I2RlZmluZSBfTVRLX0hETUlfQ1RSTF9ICj4gKwo+ICsjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+ Cj4gKyNpbmNsdWRlIDxsaW51eC9oZG1pLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pby5oPgo+ICsj aW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgo+ICsK PiArc3RydWN0IGNsazsKPiArc3RydWN0IGRldmljZTsKPiArc3RydWN0IGRldmljZV9ub2RlOwo+ ICtzdHJ1Y3QgaTJjX2FkYXB0ZXI7Cj4gK3N0cnVjdCBwbGF0Zm9ybV9kZXZpY2U7Cj4gK3N0cnVj dCBwaHk7Cj4gK3N0cnVjdCByZWdtYXA7Cj4gKwo+ICtlbnVtIG10a19oZG1pX2Nsa19pZCB7Cj4g KyAgICAgICBNVEtfSERNSV9DTEtfSERNSV9QSVhFTCwKPiArICAgICAgIE1US19IRE1JX0NMS19I RE1JX1BMTCwKPiArICAgICAgIE1US19IRE1JX0NMS19BVURfQkNMSywKPiArICAgICAgIE1US19I RE1JX0NMS19BVURfU1BESUYsCj4gKyAgICAgICBNVEtfSERNSV9DTEtfQ09VTlQKPiArfTsKPiAr Cj4gK2VudW0gaGRtaV9hdWRfaW5wdXRfdHlwZSB7Cj4gKyAgICAgICBIRE1JX0FVRF9JTlBVVF9J MlMgPSAwLAo+ICsgICAgICAgSERNSV9BVURfSU5QVVRfU1BESUYsCj4gK307Cj4gKwo+ICtlbnVt IGhkbWlfYXVkX2kyc19mbXQgewo+ICsgICAgICAgSERNSV9JMlNfTU9ERV9SSlRfMjRCSVQgPSAw LAo+ICsgICAgICAgSERNSV9JMlNfTU9ERV9SSlRfMTZCSVQsCj4gKyAgICAgICBIRE1JX0kyU19N T0RFX0xKVF8yNEJJVCwKPiArICAgICAgIEhETUlfSTJTX01PREVfTEpUXzE2QklULAo+ICsgICAg ICAgSERNSV9JMlNfTU9ERV9JMlNfMjRCSVQsCj4gKyAgICAgICBIRE1JX0kyU19NT0RFX0kyU18x NkJJVAo+ICt9Owo+ICsKPiArZW51bSBoZG1pX2F1ZF9tY2xrIHsKPiArICAgICAgIEhETUlfQVVE X01DTEtfMTI4RlMsCj4gKyAgICAgICBIRE1JX0FVRF9NQ0xLXzE5MkZTLAo+ICsgICAgICAgSERN SV9BVURfTUNMS18yNTZGUywKPiArICAgICAgIEhETUlfQVVEX01DTEtfMzg0RlMsCj4gKyAgICAg ICBIRE1JX0FVRF9NQ0xLXzUxMkZTLAo+ICsgICAgICAgSERNSV9BVURfTUNMS183NjhGUywKPiAr ICAgICAgIEhETUlfQVVEX01DTEtfMTE1MkZTLAo+ICt9Owo+ICsKPiArZW51bSBoZG1pX2F1ZF9p ZWNfZnJhbWVfcmF0ZSB7Cj4gKyAgICAgICBIRE1JX0lFQ18zMksgPSAwLAo+ICsgICAgICAgSERN SV9JRUNfOTZLLAo+ICsgICAgICAgSERNSV9JRUNfMTkySywKPiArICAgICAgIEhETUlfSUVDXzc2 OEssCj4gKyAgICAgICBIRE1JX0lFQ180NEssCj4gKyAgICAgICBIRE1JX0lFQ184OEssCj4gKyAg ICAgICBIRE1JX0lFQ18xNzZLLAo+ICsgICAgICAgSERNSV9JRUNfNzA1SywKPiArICAgICAgIEhE TUlfSUVDXzE2SywKPiArICAgICAgIEhETUlfSUVDXzIySywKPiArICAgICAgIEhETUlfSUVDXzI0 SywKPiArICAgICAgIEhETUlfSUVDXzQ4SywKPiArfTsKPiArCj4gK2VudW0gaGRtaV9hdWRfY2hh bm5lbF90eXBlIHsKPiArICAgICAgIEhETUlfQVVEX0NIQU5fVFlQRV8xXzAgPSAwLAo+ICsgICAg ICAgSERNSV9BVURfQ0hBTl9UWVBFXzFfMSwKPiArICAgICAgIEhETUlfQVVEX0NIQU5fVFlQRV8y XzAsCj4gKyAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfMl8xLAo+ICsgICAgICAgSERNSV9BVURf Q0hBTl9UWVBFXzNfMCwKPiArICAgICAgIEhETUlfQVVEX0NIQU5fVFlQRV8zXzEsCj4gKyAgICAg ICBIRE1JX0FVRF9DSEFOX1RZUEVfNF8wLAo+ICsgICAgICAgSERNSV9BVURfQ0hBTl9UWVBFXzRf MSwKPiArICAgICAgIEhETUlfQVVEX0NIQU5fVFlQRV81XzAsCj4gKyAgICAgICBIRE1JX0FVRF9D SEFOX1RZUEVfNV8xLAo+ICsgICAgICAgSERNSV9BVURfQ0hBTl9UWVBFXzZfMCwKPiArICAgICAg IEhETUlfQVVEX0NIQU5fVFlQRV82XzEsCj4gKyAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfN18w LAo+ICsgICAgICAgSERNSV9BVURfQ0hBTl9UWVBFXzdfMSwKPiArICAgICAgIEhETUlfQVVEX0NI QU5fVFlQRV8zXzBfTFJTLAo+ICsgICAgICAgSERNSV9BVURfQ0hBTl9UWVBFXzNfMV9MUlMsCj4g KyAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfNF8wX0NMUlMsCj4gKyAgICAgICBIRE1JX0FVRF9D SEFOX1RZUEVfNF8xX0NMUlMsCj4gKyAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfNl8xX0NTLAo+ ICsgICAgICAgSERNSV9BVURfQ0hBTl9UWVBFXzZfMV9DSCwKPiArICAgICAgIEhETUlfQVVEX0NI QU5fVFlQRV82XzFfT0gsCj4gKyAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfNl8xX0NIUiwKPiAr ICAgICAgIEhETUlfQVVEX0NIQU5fVFlQRV83XzFfTEhfUkgsCj4gKyAgICAgICBIRE1JX0FVRF9D SEFOX1RZUEVfN18xX0xTUl9SU1IsCj4gKyAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfN18xX0xD X1JDLAo+ICsgICAgICAgSERNSV9BVURfQ0hBTl9UWVBFXzdfMV9MV19SVywKPiArICAgICAgIEhE TUlfQVVEX0NIQU5fVFlQRV83XzFfTFNEX1JTRCwKPiArICAgICAgIEhETUlfQVVEX0NIQU5fVFlQ RV83XzFfTFNTX1JTUywKPiArICAgICAgIEhETUlfQVVEX0NIQU5fVFlQRV83XzFfTEhTX1JIUywK PiArICAgICAgIEhETUlfQVVEX0NIQU5fVFlQRV83XzFfQ1NfQ0gsCj4gKyAgICAgICBIRE1JX0FV RF9DSEFOX1RZUEVfN18xX0NTX09ILAo+ICsgICAgICAgSERNSV9BVURfQ0hBTl9UWVBFXzdfMV9D U19DSFIsCj4gKyAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfN18xX0NIX09ILAo+ICsgICAgICAg SERNSV9BVURfQ0hBTl9UWVBFXzdfMV9DSF9DSFIsCj4gKyAgICAgICBIRE1JX0FVRF9DSEFOX1RZ UEVfN18xX09IX0NIUiwKPiArICAgICAgIEhETUlfQVVEX0NIQU5fVFlQRV83XzFfTFNTX1JTU19M U1JfUlNSLAo+ICsgICAgICAgSERNSV9BVURfQ0hBTl9UWVBFXzZfMF9DUywKPiArICAgICAgIEhE TUlfQVVEX0NIQU5fVFlQRV82XzBfQ0gsCj4gKyAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfNl8w X09ILAo+ICsgICAgICAgSERNSV9BVURfQ0hBTl9UWVBFXzZfMF9DSFIsCj4gKyAgICAgICBIRE1J X0FVRF9DSEFOX1RZUEVfN18wX0xIX1JILAo+ICsgICAgICAgSERNSV9BVURfQ0hBTl9UWVBFXzdf MF9MU1JfUlNSLAo+ICsgICAgICAgSERNSV9BVURfQ0hBTl9UWVBFXzdfMF9MQ19SQywKPiArICAg ICAgIEhETUlfQVVEX0NIQU5fVFlQRV83XzBfTFdfUlcsCj4gKyAgICAgICBIRE1JX0FVRF9DSEFO X1RZUEVfN18wX0xTRF9SU0QsCj4gKyAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfN18wX0xTU19S U1MsCj4gKyAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfN18wX0xIU19SSFMsCj4gKyAgICAgICBI RE1JX0FVRF9DSEFOX1RZUEVfN18wX0NTX0NILAo+ICsgICAgICAgSERNSV9BVURfQ0hBTl9UWVBF XzdfMF9DU19PSCwKPiArICAgICAgIEhETUlfQVVEX0NIQU5fVFlQRV83XzBfQ1NfQ0hSLAo+ICsg ICAgICAgSERNSV9BVURfQ0hBTl9UWVBFXzdfMF9DSF9PSCwKPiArICAgICAgIEhETUlfQVVEX0NI QU5fVFlQRV83XzBfQ0hfQ0hSLAo+ICsgICAgICAgSERNSV9BVURfQ0hBTl9UWVBFXzdfMF9PSF9D SFIsCj4gKyAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfN18wX0xTU19SU1NfTFNSX1JTUiwKPiAr ICAgICAgIEhETUlfQVVEX0NIQU5fVFlQRV84XzBfTEhfUkhfQ1MsCj4gKyAgICAgICBIRE1JX0FV RF9DSEFOX1RZUEVfVU5LTk9XTiA9IDB4RkYKPiArfTsKPiArCj4gK2VudW0gaGRtaV9hdWRfY2hh bm5lbF9zd2FwX3R5cGUgewo+ICsgICAgICAgSERNSV9BVURfU1dBUF9MUiwKPiArICAgICAgIEhE TUlfQVVEX1NXQVBfTEZFX0NDLAo+ICsgICAgICAgSERNSV9BVURfU1dBUF9MU1JTLAo+ICsgICAg ICAgSERNSV9BVURfU1dBUF9STFNfUlJTLAo+ICsgICAgICAgSERNSV9BVURfU1dBUF9MUl9TVEFU VVMsCj4gK307Cj4gKwo+ICtzdHJ1Y3QgaGRtaV9hdWRpb19wYXJhbSB7Cj4gKyAgICAgICBlbnVt IGhkbWlfYXVkaW9fY29kaW5nX3R5cGUgYXVkX2NvZGVjOwo+ICsgICAgICAgZW51bSBoZG1pX2F1 ZGlvX3NhbXBsZV9mcmVxdWVuY3kgYXVkX2hkbWlfZnM7Cj4gKyAgICAgICBlbnVtIGhkbWlfYXVk aW9fc2FtcGxlX3NpemUgYXVkX3NhbXBlX3NpemU7Cj4gKyAgICAgICBlbnVtIGhkbWlfYXVkX2lu cHV0X3R5cGUgYXVkX2lucHV0X3R5cGU7Cj4gKyAgICAgICBlbnVtIGhkbWlfYXVkX2kyc19mbXQg YXVkX2kyc19mbXQ7Cj4gKyAgICAgICBlbnVtIGhkbWlfYXVkX21jbGsgYXVkX21jbGs7Cj4gKyAg ICAgICBlbnVtIGhkbWlfYXVkX2llY19mcmFtZV9yYXRlIGllY19mcmFtZV9mczsKPiArICAgICAg IGVudW0gaGRtaV9hdWRfY2hhbm5lbF90eXBlIGF1ZF9pbnB1dF9jaGFuX3R5cGU7Cj4gKyAgICAg ICB1OCBoZG1pX2xfY2hhbm5lbF9zdGF0ZVs2XTsKPiArICAgICAgIHU4IGhkbWlfcl9jaGFubmVs X3N0YXRlWzZdOwo+ICt9Owo+ICsKPiArc3RydWN0IG10a19oZG1pIHsKPiArICAgICAgIHN0cnVj dCBkcm1fYnJpZGdlIGJyaWRnZTsKPiArICAgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yIGNvbm47 Cj4gKyAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4gKyAgICAgICBzdHJ1Y3QgcGh5ICpwaHk7 Cj4gKyAgICAgICBzdHJ1Y3QgZGV2aWNlICpjZWNfZGV2Owo+ICsgICAgICAgc3RydWN0IGkyY19h ZGFwdGVyICpkZGNfYWRwdDsKPiArICAgICAgIHN0cnVjdCBjbGsgKmNsa1tNVEtfSERNSV9DTEtf Q09VTlRdOwo+ICsjaWYgZGVmaW5lZChDT05GSUdfREVCVUdfRlMpCj4gKyAgICAgICBzdHJ1Y3Qg ZGVudHJ5ICpkZWJ1Z2ZzOwo+ICsjZW5kaWYKClJlbW92ZSBhbGwgb2YgdGhlIGRlYnVnZnMgc3R1 ZmYgZnJvbSB0aGlzIHBhdGNoLCBzaW5jZSBpdCBpc24ndCBpbXBsZW1lbnRlZC4KCj4gKyAgICAg ICBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICphdWRpb19wZGV2Owo+ICsgICAgICAgc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgbW9kZTsKPiArICAgICAgIGJvb2wgZHZpX21vZGU7Cj4gKyAgICAgICB1 MzIgbWluX2Nsb2NrOwo+ICsgICAgICAgdTMyIG1heF9jbG9jazsKPiArICAgICAgIHUzMiBtYXhf aGRpc3BsYXk7Cj4gKyAgICAgICB1MzIgbWF4X3ZkaXNwbGF5Owo+ICsgICAgICAgdTMyIGliaWFz Owo+ICsgICAgICAgdTMyIGliaWFzX3VwOwo+ICsgICAgICAgc3RydWN0IHJlZ21hcCAqc3lzX3Jl Z21hcDsKPiArICAgICAgIHVuc2lnbmVkIGludCBzeXNfb2Zmc2V0Owo+ICsgICAgICAgdm9pZCBf X2lvbWVtICpyZWdzOwo+ICsgICAgICAgYm9vbCBpbml0Owo+ICsgICAgICAgZW51bSBoZG1pX2Nv bG9yc3BhY2UgY3NwOwo+ICsgICAgICAgYm9vbCBhdWRpb19lbmFibGU7Cj4gKyAgICAgICBib29s IG91dHB1dDsKPiArICAgICAgIHN0cnVjdCBoZG1pX2F1ZGlvX3BhcmFtIGF1ZF9wYXJhbTsKPiAr fTsKPiArCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IG10a19oZG1pICpoZG1pX2N0eF9mcm9tX2Jy aWRnZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYikKPiArewo+ICsgICAgICAgcmV0dXJuIGNvbnRhaW5l cl9vZihiLCBzdHJ1Y3QgbXRrX2hkbWksIGJyaWRnZSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxp bmUgc3RydWN0IG10a19oZG1pICpoZG1pX2N0eF9mcm9tX2Nvbm4oc3RydWN0IGRybV9jb25uZWN0 b3IgKmMpCj4gK3sKPiArICAgICAgIHJldHVybiBjb250YWluZXJfb2YoYywgc3RydWN0IG10a19o ZG1pLCBjb25uKTsKPiArfQo+ICsKPiAraW50IG10a19oZG1pX291dHB1dF9pbml0KHN0cnVjdCBt dGtfaGRtaSAqaGRtaSk7Cj4gK2ludCBtdGtfaGRtaV9ocGRfaGlnaChzdHJ1Y3QgbXRrX2hkbWkg KmhkbWkpOwo+ICtpbnQgbXRrX2hkbWlfb3V0cHV0X3NldF9kaXNwbGF5X21vZGUoc3RydWN0IG10 a19oZG1pICpoZG1pLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSk7Cj4gK3ZvaWQgbXRrX2hkbWlfcG93ZXJfb24oc3Ry dWN0IG10a19oZG1pICpoZG1pKTsKPiArdm9pZCBtdGtfaGRtaV9wb3dlcl9vZmYoc3RydWN0IG10 a19oZG1pICpoZG1pKTsKPiArI2lmIGRlZmluZWQoQ09ORklHX0RFQlVHX0ZTKQo+ICtpbnQgbXRr X2RybV9oZG1pX2RlYnVnZnNfaW5pdChzdHJ1Y3QgbXRrX2hkbWkgKmhkbWkpOwo+ICt2b2lkIG10 a19kcm1faGRtaV9kZWJ1Z2ZzX2V4aXQoc3RydWN0IG10a19oZG1pICpoZG1pKTsKPiArI2Vsc2UK PiAraW50IG10a19kcm1faGRtaV9kZWJ1Z2ZzX2luaXQoc3RydWN0IG10a19oZG1pICpoZG1pKQo+ ICt7Cj4gKyAgICAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArdm9pZCBtdGtfZHJtX2hkbWlfZGVi dWdmc19leGl0KHN0cnVjdCBtdGtfaGRtaSAqaGRtaSkKPiArewo+ICt9Cj4gKyNlbmRpZiAvKiBD T05GSUdfREVCVUdfRlMgKi8KPiArCj4gK2V4dGVybiBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10 a19jZWNfZHJpdmVyOwo+ICtleHRlcm4gc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfaGRtaV9k ZGNfZHJpdmVyOwo+ICtleHRlcm4gc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfaGRtaV9waHlf ZHJpdmVyOwo+ICsjZW5kaWYgLyogX01US19IRE1JX0NUUkxfSCAqLwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWlfZGRjX2Rydi5jIGIvZHJpdmVycy9ncHUv ZHJtL21lZGlhdGVrL210a19oZG1pX2RkY19kcnYuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4g aW5kZXggMDAwMDAwMC4uMjJlNTQ4Nwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWlfZGRjX2Rydi5jCj4gQEAgLTAsMCArMSwzNjIgQEAKPiAr LyoKPiArICogQ29weXJpZ2h0IChjKSAyMDE0IE1lZGlhVGVrIEluYy4KPiArICogQXV0aG9yOiBK aWUgUWl1IDxqaWUucWl1QG1lZGlhdGVrLmNvbT4KPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPiAr ICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2 ZXJzaW9uIDIgYXMKPiArICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24uCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCj4gKyAqIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAqLwo+ICsjaW5jbHVk ZSA8bGludXgva2VybmVsLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiArI2luY2x1 ZGUgPGxpbnV4L2kyYy5oPgo+ICsjaW5jbHVkZSA8bGludXgvdGltZS5oPgo+ICsjaW5jbHVkZSA8 bGludXgvZGVsYXkuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+Cj4gKyNpbmNsdWRlIDxs aW51eC9lcnIuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgo+ICsjaW5j bHVkZSA8bGludXgvY2xrLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4gKyNpbmNsdWRl IDxsaW51eC9pby5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2ZfYWRkcmVzcy5oPgo+ICsjaW5jbHVk ZSA8bGludXgvb2ZfaXJxLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9vZl9wbGF0Zm9ybS5oPgo+ICsK PiArI2RlZmluZSBTSUYxX0NMT0sgICAgICAgICAgICAgICgyODgpCj4gKyNkZWZpbmUgRERDX0RE Q01DVEwwICAgICAgICAgICAoMHgwKQo+ICsjZGVmaW5lIEREQ01fT0RSQUlOICAgICAgICAgICAg ICAgICAgICBCSVQoMzEpCj4gKyNkZWZpbmUgRERDTV9DTEtfRElWX09GRlNFVCAgICAgICAgICAg ICgxNikKPiArI2RlZmluZSBERENNX0NMS19ESVZfTUFTSyAgICAgICAgICAgICAgKDB4ZmZmIDw8 IDE2KQo+ICsjZGVmaW5lIEREQ01fQ1NfU1RBVFVTICAgICAgICAgICAgICAgICBCSVQoNCkKPiAr I2RlZmluZSBERENNX1NDTF9TVEFURSAgICAgICAgICAgICAgICAgQklUKDMpCj4gKyNkZWZpbmUg RERDTV9TREFfU1RBVEUgICAgICAgICAgICAgICAgIEJJVCgyKQo+ICsjZGVmaW5lIEREQ01fU00w RU4gICAgICAgICAgICAgICAgICAgICBCSVQoMSkKPiArI2RlZmluZSBERENNX1NDTF9TVFJFQ0gg ICAgICAgICAgICAgICAgICAgICAgICBCSVQoMCkKPiArI2RlZmluZSBERENfRERDTUNUTDEgICAg ICAgICAgICgweDQpCj4gKyNkZWZpbmUgRERDTV9BQ0tfT0ZGU0VUICAgICAgICAgICAgICAgICAg ICAgICAgKDE2KQo+ICsjZGVmaW5lIEREQ01fQUNLX01BU0sgICAgICAgICAgICAgICAgICAoMHhm ZiA8PCAxNikKPiArI2RlZmluZSBERENNX1BHTEVOX09GRlNFVCAgICAgICAgICAgICAgKDgpCj4g KyNkZWZpbmUgRERDTV9QR0xFTl9NQVNLICAgICAgICAgICAgICAgICAgICAgICAgKDB4NyA8PCA4 KQo+ICsjZGVmaW5lIEREQ01fU0lGX01PREVfT0ZGU0VUICAgICAgICAgICAoNCkKPiArI2RlZmlu ZSBERENNX1NJRl9NT0RFX01BU0sgICAgICAgICAgICAgKDB4NyA8PCA0KQo+ICsjZGVmaW5lIERE Q01fU1RBUlQgICAgICAgICAgICAgICAgICAgICAoMHgxKQo+ICsjZGVmaW5lIEREQ01fV1JJVEVf REFUQSAgICAgICAgICAgICAgICAgICAgICAgICgweDIpCj4gKyNkZWZpbmUgRERDTV9TVE9QICAg ICAgICAgICAgICAgICAgICAgICgweDMpCj4gKyNkZWZpbmUgRERDTV9SRUFEX0RBVEFfTk9fQUNL ICAgICAgICAgICgweDQpCj4gKyNkZWZpbmUgRERDTV9SRUFEX0RBVEFfQUNLICAgICAgICAgICAg ICgweDUpCj4gKyNkZWZpbmUgRERDTV9UUkkgICAgICAgICAgICAgICAgICAgICAgIEJJVCgwKQo+ ICsjZGVmaW5lIEREQ19ERENNRDAgICAgICAgICAgICAgKDB4OCkKPiArI2RlZmluZSBERENNX0RB VEEzICAgICAgICAgICAgICAgICAgICAgKDB4ZmYgPDwgMjQpCj4gKyNkZWZpbmUgRERDTV9EQVRB MiAgICAgICAgICAgICAgICAgICAgICgweGZmIDw8IDE2KQo+ICsjZGVmaW5lIEREQ01fREFUQTEg ICAgICAgICAgICAgICAgICAgICAoMHhmZiA8PCA4KQo+ICsjZGVmaW5lIEREQ01fREFUQTAgICAg ICAgICAgICAgICAgICAgICAoMHhmZiA8PCAwKQo+ICsjZGVmaW5lIEREQ19ERENNRDEgICAgICAg ICAgICAgKDB4YykKPiArI2RlZmluZSBERENNX0RBVEE3ICAgICAgICAgICAgICAgICAgICAgKDB4 ZmYgPDwgMjQpCj4gKyNkZWZpbmUgRERDTV9EQVRBNiAgICAgICAgICAgICAgICAgICAgICgweGZm IDw8IDE2KQo+ICsjZGVmaW5lIEREQ01fREFUQTUgICAgICAgICAgICAgICAgICAgICAoMHhmZiA8 PCA4KQo+ICsjZGVmaW5lIEREQ01fREFUQTQgICAgICAgICAgICAgICAgICAgICAoMHhmZiA8PCAw KQo+ICsKPiArc3RydWN0IG10a19oZG1pX2kyYyB7CgpUaHJvdWdob3V0IHRoaXMgZHJpdmVyLCBJ IHRoaW5rIHdlIHNob3VsZDoKCnMvbXRrX2hkbWlfaTJjL210a19oZG1pX2RkYwoKPiArICAgICAg IHN0cnVjdCBpMmNfYWRhcHRlciBhZGFwOwo+ICsgICAgICAgc3RydWN0IGNsayAqY2xrOwo+ICsg ICAgICAgdm9pZCBfX2lvbWVtICpyZWdzOwo+ICt9Owo+ICsKPiArc3RhdGljIGlubGluZSB2b2lk IHNpZl9zZXRfYml0KHN0cnVjdCBtdGtfaGRtaV9pMmMgKmkyYywgdW5zaWduZWQgaW50IG9mZnNl dCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZhbCkKPiAr ewo+ICsgICAgICAgd3JpdGVsKHJlYWRsKGkyYy0+cmVncyArIG9mZnNldCkgfCB2YWwsIGkyYy0+ cmVncyArIG9mZnNldCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBzaWZfY2xyX2Jp dChzdHJ1Y3QgbXRrX2hkbWlfaTJjICppMmMsIHVuc2lnbmVkIGludCBvZmZzZXQsCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2YWwpCj4gK3sKPiArICAgICAg IHdyaXRlbChyZWFkbChpMmMtPnJlZ3MgKyBvZmZzZXQpICYgfnZhbCwgaTJjLT5yZWdzICsgb2Zm c2V0KTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBib29sIHNpZl9iaXRfaXNfc2V0KHN0cnVj dCBtdGtfaGRtaV9pMmMgKmkyYywgdW5zaWduZWQgaW50IG9mZnNldCwKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZhbCkKPiArewo+ICsgICAgICAgcmV0 dXJuIChyZWFkbChpMmMtPnJlZ3MgKyBvZmZzZXQpICYgdmFsKSA9PSB2YWw7Cj4gK30KPiArCj4g K3N0YXRpYyBpbmxpbmUgdm9pZCBzaWZfd3JpdGVfbWFzayhzdHJ1Y3QgbXRrX2hkbWlfaTJjICpp MmMsIHVuc2lnbmVkIGludCBvZmZzZXQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGludCBtYXNrLCB1bnNpZ25lZCBpbnQgc2hpZnQsCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2YWwpCj4gK3sKPiArICAgICAgIHVu c2lnbmVkIGludCB0bXA7Cj4gKwo+ICsgICAgICAgdG1wID0gcmVhZGwoaTJjLT5yZWdzICsgb2Zm c2V0KTsKPiArICAgICAgIHRtcCAmPSB+bWFzazsKPiArICAgICAgIHRtcCB8PSAodmFsIDw8IHNo aWZ0KSAmIG1hc2s7Cj4gKyAgICAgICB3cml0ZWwodG1wLCBpMmMtPnJlZ3MgKyBvZmZzZXQpOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBzaWZfcmVhZF9tYXNrKHN0cnVj dCBtdGtfaGRtaV9pMmMgKmkyYywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBtYXNrLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNoaWZ0KQo+ICt7 Cj4gKyAgICAgICByZXR1cm4gKHJlYWRsKGkyYy0+cmVncyArIG9mZnNldCkgJiBtYXNrKSA+PiBz aGlmdDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZGRjbV90cmlnZ2VyX21vZGUoc3RydWN0IG10 a19oZG1pX2kyYyAqaTJjLCBpbnQgbW9kZSkKPiArewo+ICsgICAgICAgaW50IHRpbWVvdXQgPSAy MCAqIDEwMDA7Cj4gKwo+ICsgICAgICAgc2lmX3dyaXRlX21hc2soaTJjLCBERENfRERDTUNUTDEs IEREQ01fU0lGX01PREVfTUFTSywKPiArICAgICAgICAgICAgICAgICAgICAgIEREQ01fU0lGX01P REVfT0ZGU0VULCBtb2RlKTsKPiArICAgICAgIHNpZl9zZXRfYml0KGkyYywgRERDX0REQ01DVEwx LCBERENNX1RSSSk7Cj4gKyAgICAgICB3aGlsZSAoc2lmX2JpdF9pc19zZXQoaTJjLCBERENfRERD TUNUTDEsIEREQ01fVFJJKSkgewo+ICsgICAgICAgICAgICAgICB0aW1lb3V0IC09IDI7Cj4gKyAg ICAgICAgICAgICAgIHVkZWxheSgyKTsKPiArICAgICAgICAgICAgICAgaWYgKHRpbWVvdXQgPD0g MCkKPiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgIH0KClVzZSBpb3Bv bGw/CgoKPiArfQo+ICsKPiArc3RhdGljIGludCBtdGtfaGRtaV9pMmNfcmVhZF9tc2coc3RydWN0 IG10a19oZG1pX2kyYyAqaTJjLCBzdHJ1Y3QgaTJjX21zZyAqbXNnKQo+ICt7Cj4gKyAgICAgICBz dHJ1Y3QgZGV2aWNlICpkZXYgPSBpMmMtPmFkYXAuZGV2LnBhcmVudDsKPiArICAgICAgIHUzMiBy ZW1haW5fY291bnQsIGFja19jb3VudCwgYWNrX2ZpbmFsLCByZWFkX2NvdW50LCB0ZW1wX2NvdW50 Owo+ICsgICAgICAgdTMyIGluZGV4ID0gMDsKPiArICAgICAgIHUzMiBhY2s7Cj4gKyAgICAgICBp bnQgaTsKPiArCj4gKyAgICAgICBkZGNtX3RyaWdnZXJfbW9kZShpMmMsIEREQ01fU1RBUlQpOwo+ ICsgICAgICAgc2lmX3dyaXRlX21hc2soaTJjLCBERENfRERDTUQwLCAweGZmLCAwLCAobXNnLT5h ZGRyIDw8IDEpIHwgMHgwMSk7Cj4gKyAgICAgICBzaWZfd3JpdGVfbWFzayhpMmMsIEREQ19ERENN Q1RMMSwgRERDTV9QR0xFTl9NQVNLLCBERENNX1BHTEVOX09GRlNFVCwKPiArICAgICAgICAgICAg ICAgICAgICAgIDB4MDApOwo+ICsgICAgICAgZGRjbV90cmlnZ2VyX21vZGUoaTJjLCBERENNX1dS SVRFX0RBVEEpOwo+ICsgICAgICAgYWNrID0gc2lmX3JlYWRfbWFzayhpMmMsIEREQ19ERENNQ1RM MSwgRERDTV9BQ0tfTUFTSywgRERDTV9BQ0tfT0ZGU0VUKTsKPiArICAgICAgIGRldl9kYmcoZGV2 LCAiYWNrID0gMHgleFxuIiwgYWNrKTsKPiArICAgICAgIGlmIChhY2sgIT0gMHgwMSkgewo+ICsg ICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgImkyYyBhY2sgZXJyIVxuIik7Cj4gKyAgICAgICAg ICAgICAgIHJldHVybiAtRU5YSU87Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcmVtYWluX2Nv dW50ID0gbXNnLT5sZW47Cj4gKyAgICAgICBhY2tfY291bnQgPSAobXNnLT5sZW4gLSAxKSAvIDg7 Cj4gKyAgICAgICBhY2tfZmluYWwgPSAwOwo+ICsKPiArICAgICAgIHdoaWxlIChyZW1haW5fY291 bnQgPiAwKSB7Cj4gKyAgICAgICAgICAgICAgIGlmIChhY2tfY291bnQgPiAwKSB7Cj4gKyAgICAg ICAgICAgICAgICAgICAgICAgcmVhZF9jb3VudCA9IDg7Cj4gKyAgICAgICAgICAgICAgICAgICAg ICAgYWNrX2ZpbmFsID0gMDsKPiArICAgICAgICAgICAgICAgICAgICAgICBhY2tfY291bnQtLTsK PiArICAgICAgICAgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgICAgICAgICAgICByZWFk X2NvdW50ID0gcmVtYWluX2NvdW50Owo+ICsgICAgICAgICAgICAgICAgICAgICAgIGFja19maW5h bCA9IDE7Cj4gKyAgICAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgICAgIHNpZl93cml0 ZV9tYXNrKGkyYywgRERDX0REQ01DVEwxLCBERENNX1BHTEVOX01BU0ssCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEREQ01fUEdMRU5fT0ZGU0VULCByZWFkX2NvdW50IC0gMSk7Cj4g KyAgICAgICAgICAgICAgIGRkY21fdHJpZ2dlcl9tb2RlKGkyYywgKGFja19maW5hbCA9PSAxKSA/ Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEREQ01fUkVBRF9EQVRBX05PX0FD SyA6Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEREQ01fUkVBRF9EQVRBX0FD Syk7Cj4gKwo+ICsgICAgICAgICAgICAgICBhY2sgPSBzaWZfcmVhZF9tYXNrKGkyYywgRERDX0RE Q01DVEwxLCBERENNX0FDS19NQVNLLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEREQ01fQUNLX09GRlNFVCk7Cj4gKyAgICAgICAgICAgICAgIHRlbXBfY291bnQgPSAwOwo+ ICsgICAgICAgICAgICAgICB3aGlsZSAoKChhY2sgJiAoMSA8PCB0ZW1wX2NvdW50KSkgIT0gMCkg JiYgKHRlbXBfY291bnQgPCA4KSkKPiArICAgICAgICAgICAgICAgICAgICAgICB0ZW1wX2NvdW50 Kys7Cj4gKyAgICAgICAgICAgICAgIGlmICgoKGFja19maW5hbCA9PSAxKSAmJiAodGVtcF9jb3Vu dCAhPSAocmVhZF9jb3VudCAtIDEpKSkgfHwKPiArICAgICAgICAgICAgICAgICAgICgoYWNrX2Zp bmFsID09IDApICYmICh0ZW1wX2NvdW50ICE9IHJlYWRfY291bnQpKSkgewo+ICsgICAgICAgICAg ICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiQWRkcmVzcyBOQUNLISBBQ0soMHgleClcbiIsIGFj ayk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgICAgIH0K PiArCj4gKyAgICAgICAgICAgICAgIGZvciAoaSA9IHJlYWRfY291bnQ7IGkgPj0gMTsgaS0tKSB7 Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgaW50IHNoaWZ0Owo+ICsgICAgICAgICAgICAgICAg ICAgICAgIGludCBvZmZzZXQ7Cj4gKwo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID4g NCkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gRERDX0REQ01E MTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0ID0gKGkgLSA1KSAqIDg7 Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG9mZnNldCA9IEREQ19ERENNRDA7Cj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzaGlmdCA9IChpIC0gMSkgKiA4Owo+ICsgICAgICAgICAgICAgICAgICAgICAg IH0KPiArCj4gKyAgICAgICAgICAgICAgICAgICAgICAgbXNnLT5idWZbaW5kZXggKyBpIC0gMV0g PSBzaWZfcmVhZF9tYXNrKGkyYywgb2Zmc2V0LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZmIDw8IHNoaWZ0LAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzaGlmdCk7Cj4gKyAgICAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgICAgIHJl bWFpbl9jb3VudCAtPSByZWFkX2NvdW50Owo+ICsgICAgICAgICAgICAgICBpbmRleCArPSByZWFk X2NvdW50Owo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtz dGF0aWMgaW50IG10a19oZG1pX2kyY193cml0ZV9tc2coc3RydWN0IG10a19oZG1pX2kyYyAqaTJj LCBzdHJ1Y3QgaTJjX21zZyAqbXNnKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYg PSBpMmMtPmFkYXAuZGV2LnBhcmVudDsKPiArICAgICAgIHUzMiBhY2s7Cj4gKwo+ICsgICAgICAg ZGRjbV90cmlnZ2VyX21vZGUoaTJjLCBERENNX1NUQVJUKTsKPiArICAgICAgIHNpZl93cml0ZV9t YXNrKGkyYywgRERDX0REQ01EMCwgRERDTV9EQVRBMCwgMCwgbXNnLT5hZGRyIDw8IDEpOwo+ICsg ICAgICAgc2lmX3dyaXRlX21hc2soaTJjLCBERENfRERDTUQwLCBERENNX0RBVEExLCA4LCBtc2ct PmJ1ZlswXSk7Cj4gKyAgICAgICBzaWZfd3JpdGVfbWFzayhpMmMsIEREQ19ERENNQ1RMMSwgRERD TV9QR0xFTl9NQVNLLCBERENNX1BHTEVOX09GRlNFVCwKPiArICAgICAgICAgICAgICAgICAgICAg IDB4MSk7Cj4gKyAgICAgICBkZGNtX3RyaWdnZXJfbW9kZShpMmMsIEREQ01fV1JJVEVfREFUQSk7 Cj4gKwo+ICsgICAgICAgYWNrID0gc2lmX3JlYWRfbWFzayhpMmMsIEREQ19ERENNQ1RMMSwgRERD TV9BQ0tfTUFTSywgRERDTV9BQ0tfT0ZGU0VUKTsKPiArICAgICAgIGRldl9kYmcoZGV2LCAiYWNr ID0gJWRcbiIsIGFjayk7Cj4gKwo+ICsgICAgICAgaWYgKGFjayAhPSAweDAzKSB7Cj4gKyAgICAg ICAgICAgICAgIGRldl9lcnIoZGV2LCAiaTJjIGFjayBlcnIhXG4iKTsKPiArICAgICAgICAgICAg ICAgcmV0dXJuIC1FSU87Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcmV0dXJuIDA7Cj4gK30K PiArCj4gK3N0YXRpYyBpbnQgbXRrX2hkbWlfaTJjX3hmZXIoc3RydWN0IGkyY19hZGFwdGVyICph ZGFwdGVyLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGkyY19tc2cgKm1z Z3MsIGludCBudW0pCj4gK3sKPiArICAgICAgIHN0cnVjdCBtdGtfaGRtaV9pMmMgKmkyYyA9IGFk YXB0ZXItPmFsZ29fZGF0YTsKPiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9IGFkYXB0ZXIt PmRldi5wYXJlbnQ7Cj4gKyAgICAgICBpbnQgcmV0Owo+ICsgICAgICAgaW50IGk7Cj4gKwo+ICsg ICAgICAgaWYgKCFpMmMpIHsKPiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJpbnZhbGlk IGFyZ3VtZW50c1xuIik7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICsgICAg ICAgfQo+ICsKPiArICAgICAgIHNpZl9zZXRfYml0KGkyYywgRERDX0REQ01DVEwwLCBERENNX1ND TF9TVFJFQ0gpOwo+ICsgICAgICAgc2lmX3NldF9iaXQoaTJjLCBERENfRERDTUNUTDAsIEREQ01f U00wRU4pOwo+ICsgICAgICAgc2lmX2Nscl9iaXQoaTJjLCBERENfRERDTUNUTDAsIEREQ01fT0RS QUlOKTsKPiArCj4gKyAgICAgICBpZiAoc2lmX2JpdF9pc19zZXQoaTJjLCBERENfRERDTUNUTDEs IEREQ01fVFJJKSkgewo+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgImRkYyBsaW5lIGlz IGJ1c3khXG4iKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FQlVTWTsKPiArICAgICAgIH0K PiArCj4gKyAgICAgICBzaWZfd3JpdGVfbWFzayhpMmMsIEREQ19ERENNQ1RMMCwgRERDTV9DTEtf RElWX01BU0ssCj4gKyAgICAgICAgICAgICAgICAgICAgICBERENNX0NMS19ESVZfT0ZGU0VULCBT SUYxX0NMT0spOwo+ICsKPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW07IGkrKykgewo+ICsg ICAgICAgICAgICAgICBzdHJ1Y3QgaTJjX21zZyAqbXNnID0gJm1zZ3NbaV07Cj4gKwo+ICsgICAg ICAgICAgICAgICBkZXZfZGJnKGRldiwgImkyYyBtc2csIGFkcjoweCV4LCBmbGFnczolZCwgbGVu IDoweCV4XG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICAgIG1zZy0+YWRkciwgbXNnLT5mbGFn cywgbXNnLT5sZW4pOwo+ICsKPiArICAgICAgICAgICAgICAgaWYgKG1zZy0+ZmxhZ3MgJiBJMkNf TV9SRCkKPiArICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBtdGtfaGRtaV9pMmNfcmVhZF9t c2coaTJjLCBtc2cpOwo+ICsgICAgICAgICAgICAgICBlbHNlCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgcmV0ID0gbXRrX2hkbWlfaTJjX3dyaXRlX21zZyhpMmMsIG1zZyk7Cj4gKyAgICAgICAg ICAgICAgIGlmIChyZXQgPCAwKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGdvdG8geGZlcl9l bmQ7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgZGRjbV90cmlnZ2VyX21vZGUoaTJjLCBERENN X1NUT1ApOwo+ICsKPiArICAgICAgIHJldHVybiBpOwo+ICsKPiAreGZlcl9lbmQ6Cj4gKyAgICAg ICBkZGNtX3RyaWdnZXJfbW9kZShpMmMsIEREQ01fU1RPUCk7Cj4gKyAgICAgICBkZXZfZXJyKGRl diwgImRkYyBmYWlsZWQhXG4iKTsKPiArICAgICAgIHJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0 YXRpYyB1MzIgbXRrX2hkbWlfaTJjX2Z1bmMoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyKQo+ ICt7Cj4gKyAgICAgICByZXR1cm4gSTJDX0ZVTkNfSTJDIHwgSTJDX0ZVTkNfU01CVVNfRU1VTDsK PiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfYWxnb3JpdGhtIG10a19oZG1pX2ky Y19hbGdvcml0aG0gPSB7Cj4gKyAgICAgICAubWFzdGVyX3hmZXIgPSBtdGtfaGRtaV9pMmNfeGZl ciwKPiArICAgICAgIC5mdW5jdGlvbmFsaXR5ID0gbXRrX2hkbWlfaTJjX2Z1bmMsCj4gK307Cj4g Kwo+ICtzdGF0aWMgaW50IG10a19oZG1pX2kyY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwZGV2KQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Owo+ ICsgICAgICAgc3RydWN0IG10a19oZG1pX2kyYyAqaTJjOwo+ICsgICAgICAgc3RydWN0IHJlc291 cmNlICptZW07Cj4gKyAgICAgICBpbnQgcmV0Owo+ICsKPiArICAgICAgIGkyYyA9IGRldm1fa3ph bGxvYyhkZXYsIHNpemVvZihzdHJ1Y3QgbXRrX2hkbWlfaTJjKSwgR0ZQX0tFUk5FTCk7Cj4gKyAg ICAgICBpZiAoIWkyYykKPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsg ICAgICAgaTJjLT5jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCAiZGRjLWkyYyIpOwo+ICsgICAgICAg aWYgKElTX0VSUihpMmMtPmNsaykpIHsKPiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJn ZXQgZGRjX2NsayBmYWlsZWQgOiAlcCAsXG4iLCBpMmMtPmNsayk7CgpuaXQsIG5vIHNwYWNlIGJl Zm9yZSAnOicKCj4gKyAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGkyYy0+Y2xrKTsKPiAr ICAgICAgIH0KPiArCj4gKyAgICAgICBtZW0gPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwg SU9SRVNPVVJDRV9NRU0sIDApOwo+ICsgICAgICAgaTJjLT5yZWdzID0gZGV2bV9pb3JlbWFwX3Jl c291cmNlKCZwZGV2LT5kZXYsIG1lbSk7Cj4gKyAgICAgICBpZiAoSVNfRVJSKGkyYy0+cmVncykp IHsKPiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJnZXQgbWVtb3J5IHNvdXJjZSBmYWls IVxuIik7CgpuaXQ6IGRvbid0IHJlYWxseSBuZWVkIHRvIHByaW50IGFueXRoaW5nIGhlcmUuCgo+ ICsgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihpMmMtPnJlZ3MpOwo+ICsgICAgICAgfQo+ ICsKPiArICAgICAgIHJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShpMmMtPmNsayk7Cj4gKyAgICAg ICBpZiAocmV0KSB7Cj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiZW5hYmxlIGRkYyBj bGsgZmFpbGVkIVxuIik7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICAgICB9 Cj4gKwo+ICsgICAgICAgc3RybGNweShpMmMtPmFkYXAubmFtZSwgIm1lZGlhdGVrLWhkbWktaTJj Iiwgc2l6ZW9mKGkyYy0+YWRhcC5uYW1lKSk7Cj4gKyAgICAgICBpMmMtPmFkYXAub3duZXIgPSBU SElTX01PRFVMRTsKCmkyYy0+YWRhcC5jbGFzcyA9IEkyQ19DTEFTU19EREM7Cgo+ICsgICAgICAg aTJjLT5hZGFwLmFsZ28gPSAmbXRrX2hkbWlfaTJjX2FsZ29yaXRobTsKPiArICAgICAgIGkyYy0+ YWRhcC5yZXRyaWVzID0gMzsKCndoeSBzZXQgdGhpcz8KCj4gKyAgICAgICBpMmMtPmFkYXAuZGV2 Lm9mX25vZGUgPSBkZXYtPm9mX25vZGU7Cj4gKyAgICAgICBpMmMtPmFkYXAuYWxnb19kYXRhID0g aTJjOwo+ICsgICAgICAgaTJjLT5hZGFwLmRldi5wYXJlbnQgPSAmcGRldi0+ZGV2Owo+ICsKPiAr ICAgICAgIHJldCA9IGkyY19hZGRfYWRhcHRlcigmaTJjLT5hZGFwKTsKPiArICAgICAgIGlmIChy ZXQgPCAwKSB7Cj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGFkZCBi dXMgdG8gaTJjIGNvcmVcbiIpOwo+ICsgICAgICAgICAgICAgICBnb3RvIGVycl9jbGtfZGlzYWJs ZTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBp MmMpOwo+ICsKPiArICAgICAgIGRldl9kYmcoZGV2LCAiaTJjLT5hZGFwOiAlcFxuIiwgJmkyYy0+ YWRhcCk7Cj4gKyAgICAgICBkZXZfZGJnKGRldiwgImkyYy0+Y2xrOiAlcFxuIiwgaTJjLT5jbGsp Owo+ICsgICAgICAgZGV2X2RiZyhkZXYsICJwaHlzaWNhbCBhZHI6IDB4JWxseCwgZW5kOiAweCVs bHhcbiIsIG1lbS0+c3RhcnQsCj4gKyAgICAgICAgICAgICAgIG1lbS0+ZW5kKTsKCnJlbW92ZSB0 aGVzZSBkZWJ1Z2dpbmcgbGluZXMuCgo+ICsKPiArICAgICAgIHJldHVybiAwOwo+ICsKPiArZXJy X2Nsa19kaXNhYmxlOgo+ICsgICAgICAgY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGkyYy0+Y2xrKTsK PiArICAgICAgIHJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbXRrX2hkbWlfaTJj X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICt7Cj4gKyAgICAgICBzdHJ1 Y3QgbXRrX2hkbWlfaTJjICppMmMgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKPiArCj4g KyAgICAgICBjbGtfZGlzYWJsZV91bnByZXBhcmUoaTJjLT5jbGspOwo+ICsgICAgICAgaTJjX2Rl bF9hZGFwdGVyKCZpMmMtPmFkYXApOwoKVG8gbWF0Y2ggcHJvYmUgb3JkZXIsIGNhbGwgaTJjX2Rl bF9hZGFwdGVyKCkgZmlyc3QuCgo+ICsKPiArICAgICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtz dGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdGtfaGRtaV9pMmNfbWF0Y2hbXSA9IHsK PiArICAgICAgIHsgLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ4MTczLWhkbWktZGRjIiwgfSwK PiArICAgICAgIHt9LAo+ICt9Owo+ICsKPiArc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfaGRt aV9kZGNfZHJpdmVyID0gewo+ICsgICAgICAgLnByb2JlID0gbXRrX2hkbWlfaTJjX3Byb2JlLAo+ ICsgICAgICAgLnJlbW92ZSA9IG10a19oZG1pX2kyY19yZW1vdmUsCj4gKyAgICAgICAuZHJpdmVy ID0gewo+ICsgICAgICAgICAgICAgICAubmFtZSA9ICJtZWRpYXRlay1oZG1pLWRkYyIsCj4gKyAg ICAgICAgICAgICAgIC5vZl9tYXRjaF90YWJsZSA9IG10a19oZG1pX2kyY19tYXRjaCwKPiArICAg ICAgIH0sCj4gK307Cj4gKwo+ICtNT0RVTEVfQVVUSE9SKCJKaWUgUWl1IDxqaWUucWl1QG1lZGlh dGVrLmNvbT4iKTsKPiArTU9EVUxFX0RFU0NSSVBUSU9OKCJNZWRpYVRlayBIRE1JIGkyYyBEcml2 ZXIiKTsKPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWlfaHcuYyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRl ay9tdGtfaGRtaV9ody5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi45 OWM3ZmZjCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9t dGtfaGRtaV9ody5jCgpXaGF0IGlzIHRoZSB2YWx1ZSBpbiBoYXZpbmcgdGhpcyBhcyBhIHNlcGFy YXRlIG10a19oZG1pX2h3LmMgZmlsZT8KSWYgdGhlc2UgZnVuY3Rpb25zIHdlcmUgaW4gbXRrX2hk bWkuYywgdGhleSBjb3VsZCBhbGwgYmUgc3RhdGljLCBhbmQKdGhlIGNvbXBpbGVyCmNvdWxkIGlu bGluZSB0aGVtIGF3YXkuCgoKPiBAQCAtMCwwICsxLDY1MiBAQAo+ICsvKgo+ICsgKiBDb3B5cmln aHQgKGMpIDIwMTQgTWVkaWFUZWsgSW5jLgo+ICsgKiBBdXRob3I6IEppZSBRaXUgPGppZS5xaXVA bWVkaWF0ZWsuY29tPgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwo+ICsg KiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPiArICoKPiArICog VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKPiArICogR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiArICovCj4gKyNpbmNsdWRlICJtdGtfaGRtaV9ody5o Igo+ICsjaW5jbHVkZSAibXRrX2hkbWlfcmVncy5oIgo+ICsjaW5jbHVkZSAibXRrX2hkbWkuaCIK CkkgdGhpbmsgdGhlc2UgdXN1YWxseSBnbyBhZnRlciBzeXN0ZW0gaW5jbHVkZXMuCgo+ICsKPiAr I2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+ICsjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KPiArI2lu Y2x1ZGUgPGxpbnV4L2hkbWkuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2lvLmg+Cj4gKyNpbmNsdWRl IDxsaW51eC9yZWdtYXAuaD4KPiArCj4gK3N0YXRpYyB1MzIgbXRrX2hkbWlfcmVhZChzdHJ1Y3Qg bXRrX2hkbWkgKmhkbWksIHUzMiBvZmZzZXQpCj4gK3sKPiArICAgICAgIHJldHVybiByZWFkbCho ZG1pLT5yZWdzICsgb2Zmc2V0KTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbXRrX2hkbWlfd3Jp dGUoc3RydWN0IG10a19oZG1pICpoZG1pLCB1MzIgb2Zmc2V0LCB1MzIgdmFsKQo+ICt7Cj4gKyAg ICAgICB3cml0ZWwodmFsLCBoZG1pLT5yZWdzICsgb2Zmc2V0KTsKPiArfQo+ICsKPiArc3RhdGlj IHZvaWQgbXRrX2hkbWlfbWFzayhzdHJ1Y3QgbXRrX2hkbWkgKmhkbWksIHUzMiBvZmZzZXQsIHUz MiB2YWwsIHUzMiBtYXNrKQo+ICt7Cj4gKyAgICAgICB1MzIgdG1wID0gbXRrX2hkbWlfcmVhZCho ZG1pLCBvZmZzZXQpICYgfm1hc2s7Cj4gKwo+ICsgICAgICAgdG1wIHw9ICh2YWwgJiBtYXNrKTsK PiArICAgICAgIG10a19oZG1pX3dyaXRlKGhkbWksIG9mZnNldCwgdG1wKTsKPiArfQo+ICsKPiAr I2RlZmluZSBOQ1RTX0JZVEVTICAgICAgICAgIDB4MDcKCm1vdmUgYWJvdmUgdGhlIGZ1bmN0aW9u cwoKPiArCj4gK3ZvaWQgbXRrX2hkbWlfaHdfdmlkX2JsYWNrKHN0cnVjdCBtdGtfaGRtaSAqaGRt aSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGJsYWNrKQo+ICt7Cj4gKyAgICAg ICBtdGtfaGRtaV9tYXNrKGhkbWksIFZJREVPX0NGR180LCBibGFjayA/IEdFTl9SR0IgOiBOT1JN QUxfUEFUSCwKPiArICAgICAgICAgICAgICAgICAgICAgVklERU9fU09VUkNFX1NFTCk7Cj4gK30K PiArCj4gK3ZvaWQgbXRrX2hkbWlfaHdfbWFrZV9yZWdfd3JpdGFibGUoc3RydWN0IG10a19oZG1p ICpoZG1pLCBib29sIGVuYWJsZSkKPiArewo+ICsgICAgICAgcmVnbWFwX3VwZGF0ZV9iaXRzKGhk bWktPnN5c19yZWdtYXAsIGhkbWktPnN5c19vZmZzZXQgKyBIRE1JX1NZU19DRkcyMCwKPiArICAg ICAgICAgICAgICAgICAgICAgICAgICBIRE1JX1BDTEtfRlJFRV9SVU4sIGVuYWJsZSA/IEhETUlf UENMS19GUkVFX1JVTiA6IDApOwo+ICsgICAgICAgcmVnbWFwX3VwZGF0ZV9iaXRzKGhkbWktPnN5 c19yZWdtYXAsIGhkbWktPnN5c19vZmZzZXQgKyBIRE1JX1NZU19DRkcxQywKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICBIRE1JX09OIHwgQU5MR19PTiwgZW5hYmxlID8gKEhETUlfT04gfCBB TkxHX09OKSA6IDApOwo+ICt9Cj4gKwo+ICt2b2lkIG10a19oZG1pX2h3XzFwNF92ZXJzaW9uX2Vu YWJsZShzdHJ1Y3QgbXRrX2hkbWkgKmhkbWksIGJvb2wgZW5hYmxlKQo+ICt7Cj4gKyAgICAgICBy ZWdtYXBfdXBkYXRlX2JpdHMoaGRtaS0+c3lzX3JlZ21hcCwgaGRtaS0+c3lzX29mZnNldCArIEhE TUlfU1lTX0NGRzIwLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIEhETUkyUDBfRU4sIGVu YWJsZSA/IDAgOiBIRE1JMlAwX0VOKTsKPiArfQo+ICsKPiArdm9pZCBtdGtfaGRtaV9od19hdWRf bXV0ZShzdHJ1Y3QgbXRrX2hkbWkgKmhkbWksIGJvb2wgbXV0ZSkKPiArewo+ICsgICAgICAgbXRr X2hkbWlfbWFzayhoZG1pLCBHUkxfQVVESU9fQ0ZHLCBtdXRlID8gQVVESU9fWkVSTyA6IDAsIEFV RElPX1pFUk8pOwo+ICt9Cj4gKwo+ICt2b2lkIG10a19oZG1pX2h3X3Jlc2V0KHN0cnVjdCBtdGtf aGRtaSAqaGRtaSkKPiArewo+ICsgICAgICAgcmVnbWFwX3VwZGF0ZV9iaXRzKGhkbWktPnN5c19y ZWdtYXAsIGhkbWktPnN5c19vZmZzZXQgKyBIRE1JX1NZU19DRkcxQywKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICBIRE1JX1JTVCwgSERNSV9SU1QpOwo+ICsgICAgICAgcmVnbWFwX3VwZGF0 ZV9iaXRzKGhkbWktPnN5c19yZWdtYXAsIGhkbWktPnN5c19vZmZzZXQgKyBIRE1JX1NZU19DRkcx QywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICBIRE1JX1JTVCwgMCk7Cj4gKyAgICAgICBt dGtfaGRtaV9tYXNrKGhkbWksIEdSTF9DRkczLCAwLCBDRkczX0NPTlRST0xfUEFDS0VUX0RFTEFZ KTsKPiArICAgICAgIHJlZ21hcF91cGRhdGVfYml0cyhoZG1pLT5zeXNfcmVnbWFwLCBoZG1pLT5z eXNfb2Zmc2V0ICsgSERNSV9TWVNfQ0ZHMUMsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg QU5MR19PTiwgQU5MR19PTik7Cj4gK30KPiArCj4gK3ZvaWQgbXRrX2hkbWlfaHdfZW5hYmxlX25v dGljZShzdHJ1Y3QgbXRrX2hkbWkgKmhkbWksIGJvb2wgZW5hYmxlX25vdGljZSkKPiArewo+ICsg ICAgICAgbXRrX2hkbWlfbWFzayhoZG1pLCBHUkxfQ0ZHMiwgZW5hYmxlX25vdGljZSA/IENGRzJf Tk9USUNFX0VOIDogMCwKPiArICAgICAgICAgICAgICAgICAgICAgQ0ZHMl9OT1RJQ0VfRU4pOwo+ ICt9Cj4gKwo+ICt2b2lkIG10a19oZG1pX2h3X3dyaXRlX2ludF9tYXNrKHN0cnVjdCBtdGtfaGRt aSAqaGRtaSwgdTMyIGludF9tYXNrKQo+ICt7Cj4gKyAgICAgICBtdGtfaGRtaV93cml0ZShoZG1p LCBHUkxfSU5UX01BU0ssIGludF9tYXNrKTsKPiArfQo+ICsKPiArdm9pZCBtdGtfaGRtaV9od19l bmFibGVfZHZpX21vZGUoc3RydWN0IG10a19oZG1pICpoZG1pLCBib29sIGVuYWJsZSkKPiArewo+ ICsgICAgICAgbXRrX2hkbWlfbWFzayhoZG1pLCBHUkxfQ0ZHMSwgZW5hYmxlID8gQ0ZHMV9EVkkg OiAwLCBDRkcxX0RWSSk7Cj4gK30KPiArCj4gK3ZvaWQgbXRrX2hkbWlfaHdfc2VuZF9pbmZvX2Zy YW1lKHN0cnVjdCBtdGtfaGRtaSAqaGRtaSwgdTggKmJ1ZmZlciwgdTggbGVuKQo+ICt7Cj4gKyAg ICAgICB1MzIgY3RybF9yZWcgPSBHUkxfQ1RSTDsKPiArICAgICAgIGludCBpOwo+ICsgICAgICAg dTggKmZyYW1lX2RhdGE7Cj4gKyAgICAgICB1OCBmcmFtZV90eXBlOwo+ICsgICAgICAgdTggZnJh bWVfdmVyOwo+ICsgICAgICAgdTggZnJhbWVfbGVuOwo+ICsgICAgICAgdTggY2hlY2tzdW07Cj4g KyAgICAgICBpbnQgY3RybF9mcmFtZV9lbiA9IDA7Cj4gKwo+ICsgICAgICAgZnJhbWVfdHlwZSA9 ICpidWZmZXI7Cj4gKyAgICAgICBidWZmZXIgKz0gMTsKPiArICAgICAgIGZyYW1lX3ZlciA9ICpi dWZmZXI7Cj4gKyAgICAgICBidWZmZXIgKz0gMTsKPiArICAgICAgIGZyYW1lX2xlbiA9ICpidWZm ZXI7Cj4gKyAgICAgICBidWZmZXIgKz0gMTsKPiArICAgICAgIGNoZWNrc3VtID0gKmJ1ZmZlcjsK PiArICAgICAgIGJ1ZmZlciArPSAxOwo+ICsgICAgICAgZnJhbWVfZGF0YSA9IGJ1ZmZlcjsKPiAr Cj4gKyAgICAgICBkZXZfZGJnKGhkbWktPmRldiwKPiArICAgICAgICAgICAgICAgImZyYW1lX3R5 cGU6MHgleCxmcmFtZV92ZXI6MHgleCxmcmFtZV9sZW46MHgleCxjaGVja3N1bToweCV4XG4iLAo+ ICsgICAgICAgICAgICAgICBmcmFtZV90eXBlLCBmcmFtZV92ZXIsIGZyYW1lX2xlbiwgY2hlY2tz dW0pOwo+ICsKPiArICAgICAgIHN3aXRjaCAoZnJhbWVfdHlwZSkgewo+ICsgICAgICAgY2FzZSBI RE1JX0lORk9GUkFNRV9UWVBFX0FWSToKPiArICAgICAgICAgICAgICAgY3RybF9mcmFtZV9lbiA9 IENUUkxfQVZJX0VOOwo+ICsgICAgICAgICAgICAgICBjdHJsX3JlZyA9IEdSTF9DVFJMOwo+ICsg ICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgIGNhc2UgSERNSV9JTkZPRlJBTUVfVFlQRV9T UEQ6Cj4gKyAgICAgICAgICAgICAgIGN0cmxfZnJhbWVfZW4gPSBDVFJMX1NQRF9FTjsKPiArICAg ICAgICAgICAgICAgY3RybF9yZWcgPSBHUkxfQ1RSTDsKPiArICAgICAgICAgICAgICAgYnJlYWs7 Cj4gKyAgICAgICBjYXNlIEhETUlfSU5GT0ZSQU1FX1RZUEVfQVVESU86Cj4gKyAgICAgICAgICAg ICAgIGN0cmxfZnJhbWVfZW4gPSBDVFJMX0FVRElPX0VOOwo+ICsgICAgICAgICAgICAgICBjdHJs X3JlZyA9IEdSTF9DVFJMOwo+ICsgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgIGNhc2Ug SERNSV9JTkZPRlJBTUVfVFlQRV9WRU5ET1I6Cj4gKyAgICAgICAgICAgICAgIGN0cmxfZnJhbWVf ZW4gPSBWU19FTjsKPiArICAgICAgICAgICAgICAgY3RybF9yZWcgPSBHUkxfQUNQX0lTUkNfQ1RS TDsKPiArICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICBkZWZhdWx0OgoKSnVzdCBmYWxs IHRocm91Z2ggaWYgbm9uZSBvZiB0aGUgYWJvdmU/Cgo+ICsgICAgICAgICAgICAgICBicmVhazsK PiArICAgICAgIH0KPiArICAgICAgIG10a19oZG1pX21hc2soaGRtaSwgY3RybF9yZWcsIDAsIGN0 cmxfZnJhbWVfZW4pOwo+ICsgICAgICAgbXRrX2hkbWlfd3JpdGUoaGRtaSwgR1JMX0lORk9GUk1f VFlQRSwgZnJhbWVfdHlwZSk7Cj4gKyAgICAgICBtdGtfaGRtaV93cml0ZShoZG1pLCBHUkxfSU5G T0ZSTV9WRVIsIGZyYW1lX3Zlcik7Cj4gKyAgICAgICBtdGtfaGRtaV93cml0ZShoZG1pLCBHUkxf SU5GT0ZSTV9MTkcsIGZyYW1lX2xlbik7Cj4gKwo+ICsgICAgICAgbXRrX2hkbWlfd3JpdGUoaGRt aSwgR1JMX0lGTV9QT1JULCBjaGVja3N1bSk7Cj4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgZnJh bWVfbGVuOyBpKyspCj4gKyAgICAgICAgICAgICAgIG10a19oZG1pX3dyaXRlKGhkbWksIEdSTF9J Rk1fUE9SVCwgZnJhbWVfZGF0YVtpXSk7Cj4gKwo+ICsgICAgICAgbXRrX2hkbWlfbWFzayhoZG1p LCBjdHJsX3JlZywgY3RybF9mcmFtZV9lbiwgY3RybF9mcmFtZV9lbik7Cj4gK30KPiArCj4gK3Zv aWQgbXRrX2hkbWlfaHdfc2VuZF9hdWRfcGFja2V0KHN0cnVjdCBtdGtfaGRtaSAqaGRtaSwgYm9v bCBlbmFibGUpCj4gK3sKPiArICAgICAgIG10a19oZG1pX21hc2soaGRtaSwgR1JMX1NISUZUX1Iy LCBlbmFibGUgPyAwIDogQVVESU9fUEFDS0VUX09GRiwKPiArICAgICAgICAgICAgICAgICAgICAg QVVESU9fUEFDS0VUX09GRik7Cj4gK30KPiArCj4gK3ZvaWQgbXRrX2hkbWlfaHdfY29uZmlnX3N5 cyhzdHJ1Y3QgbXRrX2hkbWkgKmhkbWkpCj4gK3sKPiArICAgICAgIHJlZ21hcF91cGRhdGVfYml0 cyhoZG1pLT5zeXNfcmVnbWFwLCBoZG1pLT5zeXNfb2Zmc2V0ICsgSERNSV9TWVNfQ0ZHMjAsCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgSERNSV9PVVRfRklGT19FTiB8IE1ITF9NT0RFX09O LCAwKTsKPiArICAgICAgIG1kZWxheSgyKTsKCkNhbiB0aGlzIGJlIG1zbGVlcCBpbnN0ZWFkIG9m IG1kZWxheT8KSXQgaXMgYSBiaXQgcnVkZSB0byBob2cgdGhlIENQVSBmb3IgMiBtc2VjLgoKPiAr ICAgICAgIHJlZ21hcF91cGRhdGVfYml0cyhoZG1pLT5zeXNfcmVnbWFwLCBoZG1pLT5zeXNfb2Zm c2V0ICsgSERNSV9TWVNfQ0ZHMjAsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgSERNSV9P VVRfRklGT19FTiB8IE1ITF9NT0RFX09OLCBIRE1JX09VVF9GSUZPX0VOKTsKPiArfQo+ICsKPiAr dm9pZCBtdGtfaGRtaV9od19zZXRfZGVlcF9jb2xvcl9tb2RlKHN0cnVjdCBtdGtfaGRtaSAqaGRt aSkKPiArewo+ICsgICAgICAgcmVnbWFwX3VwZGF0ZV9iaXRzKGhkbWktPnN5c19yZWdtYXAsIGhk bWktPnN5c19vZmZzZXQgKyBIRE1JX1NZU19DRkcyMCwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICBERUVQX0NPTE9SX01PREVfTUFTSyB8IERFRVBfQ09MT1JfRU4sIENPTE9SXzhCSVRfTU9E RSk7Cj4gK30KPiArCj4gK3ZvaWQgbXRrX2hkbWlfaHdfc2VuZF9hdl9tdXRlKHN0cnVjdCBtdGtf aGRtaSAqaGRtaSkKPiArewo+ICsgICAgICAgbXRrX2hkbWlfbWFzayhoZG1pLCBHUkxfQ0ZHNCwg MCwgQ1RSTF9BVk1VVEUpOwo+ICsgICAgICAgbWRlbGF5KDIpOwoKQ2FuIHRoaXMgYmUgbXNsZWVw IGluc3RlYWQgb2YgbWRlbGF5PwoKPiArICAgICAgIG10a19oZG1pX21hc2soaGRtaSwgR1JMX0NG RzQsIENUUkxfQVZNVVRFLCBDVFJMX0FWTVVURSk7Cj4gK30KPiArCj4gK3ZvaWQgbXRrX2hkbWlf aHdfc2VuZF9hdl91bm11dGUoc3RydWN0IG10a19oZG1pICpoZG1pKQo+ICt7Cj4gKyAgICAgICBt dGtfaGRtaV9tYXNrKGhkbWksIEdSTF9DRkc0LCBDRkc0X0FWX1VOTVVURV9FTiwKPiArICAgICAg ICAgICAgICAgICAgICAgQ0ZHNF9BVl9VTk1VVEVfRU4gfCBDRkc0X0FWX1VOTVVURV9TRVQpOwo+ ICsgICAgICAgbWRlbGF5KDIpOwoKQ2FuIHRoaXMgYmUgbXNsZWVwIGluc3RlYWQgb2YgbWRlbGF5 PwoKPiArICAgICAgIG10a19oZG1pX21hc2soaGRtaSwgR1JMX0NGRzQsIENGRzRfQVZfVU5NVVRF X1NFVCwKPiArICAgICAgICAgICAgICAgICAgICAgQ0ZHNF9BVl9VTk1VVEVfRU4gfCBDRkc0X0FW X1VOTVVURV9TRVQpOwo+ICt9Cj4gKwo+ICt2b2lkIG10a19oZG1pX2h3X25jdHNfZW5hYmxlKHN0 cnVjdCBtdGtfaGRtaSAqaGRtaSwgYm9vbCBvbikKPiArewo+ICsgICAgICAgbXRrX2hkbWlfbWFz ayhoZG1pLCBHUkxfQ1RTX0NUUkwsIG9uID8gMCA6IENUU19DVFJMX1NPRlQsCj4gKyAgICAgICAg ICAgICAgICAgICAgIENUU19DVFJMX1NPRlQpOwo+ICt9Cj4gKwo+ICt2b2lkIG10a19oZG1pX2h3 X25jdHNfYXV0b193cml0ZV9lbmFibGUoc3RydWN0IG10a19oZG1pICpoZG1pLCBib29sIGVuYWJs ZSkKPiArewo+ICsgICAgICAgbXRrX2hkbWlfbWFzayhoZG1pLCBHUkxfQ1RTX0NUUkwsIGVuYWJs ZSA/IE5DVFNfV1JJX0FOWVRJTUUgOiAwLAo+ICsgICAgICAgICAgICAgICAgICAgICBOQ1RTX1dS SV9BTllUSU1FKTsKPiArfQo+ICsKPiArdm9pZCBtdGtfaGRtaV9od19tc2ljX3NldHRpbmcoc3Ry dWN0IG10a19oZG1pICpoZG1pLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQo+ICt7Cj4gKyAgICAgICBtdGtfaGRtaV9tYXNrKGhk bWksIEdSTF9DRkc0LCAwLCBDRkdfTUhMX01PREUpOwo+ICsKPiArICAgICAgIGlmIChtb2RlLT5m bGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFICYmCj4gKyAgICAgICAgICAgbW9kZS0+Y2xv Y2sgPT0gNzQyNTAgJiYKPiArICAgICAgICAgICBtb2RlLT52ZGlzcGxheSA9PSAxMDgwKQo+ICsg ICAgICAgICAgICAgICBtdGtfaGRtaV9tYXNrKGhkbWksIEdSTF9DRkcyLCAwLCBNSExfREVfU0VM KTsKPiArICAgICAgIGVsc2UKPiArICAgICAgICAgICAgICAgbXRrX2hkbWlfbWFzayhoZG1pLCBH UkxfQ0ZHMiwgTUhMX0RFX1NFTCwgTUhMX0RFX1NFTCk7Cj4gK30KPiArCj4gK3ZvaWQgbXRrX2hk bWlfaHdfYXVkX3NldF9jaGFubmVsX3N3YXAoc3RydWN0IG10a19oZG1pICpoZG1pLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBoZG1pX2F1ZF9jaGFubmVsX3N3 YXBfdHlwZSBzd2FwKQo+ICt7Cj4gKyAgICAgICB1OCBzd2FwX2JpdDsKPiArCj4gKyAgICAgICBz d2l0Y2ggKHN3YXApIHsKPiArICAgICAgIGNhc2UgSERNSV9BVURfU1dBUF9MUjoKPiArICAgICAg ICAgICAgICAgc3dhcF9iaXQgPSBMUl9TV0FQOwo+ICsgICAgICAgICAgICAgICBicmVhazsKPiAr ICAgICAgIGNhc2UgSERNSV9BVURfU1dBUF9MRkVfQ0M6Cj4gKyAgICAgICAgICAgICAgIHN3YXBf Yml0ID0gTEZFX0NDX1NXQVA7Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgY2Fz ZSBIRE1JX0FVRF9TV0FQX0xTUlM6Cj4gKyAgICAgICAgICAgICAgIHN3YXBfYml0ID0gTFNSU19T V0FQOwo+ICsgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgIGNhc2UgSERNSV9BVURfU1dB UF9STFNfUlJTOgo+ICsgICAgICAgICAgICAgICBzd2FwX2JpdCA9IFJMU19SUlNfU1dBUDsKPiAr ICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICBjYXNlIEhETUlfQVVEX1NXQVBfTFJfU1RB VFVTOgo+ICsgICAgICAgICAgICAgICBzd2FwX2JpdCA9IExSX1NUQVRVU19TV0FQOwo+ICsgICAg ICAgICAgICAgICBicmVhazsKPiArICAgICAgIGRlZmF1bHQ6Cj4gKyAgICAgICAgICAgICAgIHN3 YXBfYml0ID0gTEZFX0NDX1NXQVA7Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAg fQo+ICsgICAgICAgbXRrX2hkbWlfbWFzayhoZG1pLCBHUkxfQ0hfU1dBUCwgc3dhcF9iaXQsIDB4 ZmYpOwo+ICt9Cj4gKwo+ICt2b2lkIG10a19oZG1pX2h3X2F1ZF9yYXdfZGF0YV9lbmFibGUoc3Ry dWN0IG10a19oZG1pICpoZG1pLCBib29sIGVuYWJsZSkKPiArewo+ICsgICAgICAgbXRrX2hkbWlf bWFzayhoZG1pLCBHUkxfTUlYX0NUUkwsIGVuYWJsZSA/IE1JWF9DVFJMX0ZMQVQgOiAwLAo+ICsg ICAgICAgICAgICAgICAgICAgICBNSVhfQ1RSTF9GTEFUKTsKPiArfQo+ICsKPiArdm9pZCBtdGtf aGRtaV9od19hdWRfc2V0X2JpdF9udW0oc3RydWN0IG10a19oZG1pICpoZG1pLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gaGRtaV9hdWRpb19zYW1wbGVfc2l6ZSBiaXRf bnVtKQo+ICt7Cj4gKyAgICAgICB1MzIgdmFsID0gMDsKCm5vIDAgaW5pdAoKPiArCj4gKyAgICAg ICBpZiAoYml0X251bSA9PSBIRE1JX0FVRElPX1NBTVBMRV9TSVpFXzE2KQo+ICsgICAgICAgICAg ICAgICB2YWwgPSBBT1VUXzE2QklUOwo+ICsgICAgICAgZWxzZSBpZiAoYml0X251bSA9PSBIRE1J X0FVRElPX1NBTVBMRV9TSVpFXzIwKQo+ICsgICAgICAgICAgICAgICB2YWwgPSBBT1VUXzIwQklU Owo+ICsgICAgICAgZWxzZSBpZiAoYml0X251bSA9PSBIRE1JX0FVRElPX1NBTVBMRV9TSVpFXzI0 KQo+ICsgICAgICAgICAgICAgICB2YWwgPSBBT1VUXzI0QklUOwo+ICsKPiArICAgICAgIG10a19o ZG1pX21hc2soaGRtaSwgR1JMX0FPVVRfQk5VTV9TRUwsIHZhbCwgMHgwMyk7Cj4gK30KPiArCj4g K3ZvaWQgbXRrX2hkbWlfaHdfYXVkX3NldF9pMnNfZm10KHN0cnVjdCBtdGtfaGRtaSAqaGRtaSwK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGhkbWlfYXVkX2kyc19mbXQg aTJzX2ZtdCkKPiArewo+ICsgICAgICAgdTMyIHZhbCA9IDA7CgpubyAwIGluaXQKCj4gKwo+ICsg ICAgICAgdmFsID0gbXRrX2hkbWlfcmVhZChoZG1pLCBHUkxfQ0ZHMCk7Cj4gKyAgICAgICB2YWwg Jj0gfjB4MzM7CgojZGVmaW5lIHRoaXMgbWFzawoKPiArCj4gKyAgICAgICBzd2l0Y2ggKGkyc19m bXQpIHsKPiArICAgICAgIGNhc2UgSERNSV9JMlNfTU9ERV9SSlRfMjRCSVQ6Cj4gKyAgICAgICAg ICAgICAgIHZhbCB8PSAoQ0ZHMF9JMlNfTU9ERV9SVEogfCBDRkcwX0kyU19NT0RFXzI0QklUKTsK PiArICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICBjYXNlIEhETUlfSTJTX01PREVfUkpU XzE2QklUOgo+ICsgICAgICAgICAgICAgICB2YWwgfD0gKENGRzBfSTJTX01PREVfUlRKIHwgQ0ZH MF9JMlNfTU9ERV8xNkJJVCk7Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgY2Fz ZSBIRE1JX0kyU19NT0RFX0xKVF8yNEJJVDoKPiArICAgICAgICAgICAgICAgdmFsIHw9IChDRkcw X0kyU19NT0RFX0xUSiB8IENGRzBfSTJTX01PREVfMjRCSVQpOwo+ICsgICAgICAgICAgICAgICBi cmVhazsKPiArICAgICAgIGNhc2UgSERNSV9JMlNfTU9ERV9MSlRfMTZCSVQ6Cj4gKyAgICAgICAg ICAgICAgIHZhbCB8PSAoQ0ZHMF9JMlNfTU9ERV9MVEogfCBDRkcwX0kyU19NT0RFXzE2QklUKTsK PiArICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICBjYXNlIEhETUlfSTJTX01PREVfSTJT XzI0QklUOgo+ICsgICAgICAgICAgICAgICB2YWwgfD0gKENGRzBfSTJTX01PREVfSTJTIHwgQ0ZH MF9JMlNfTU9ERV8yNEJJVCk7Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgY2Fz ZSBIRE1JX0kyU19NT0RFX0kyU18xNkJJVDoKPiArICAgICAgICAgICAgICAgdmFsIHw9IChDRkcw X0kyU19NT0RFX0kyUyB8IENGRzBfSTJTX01PREVfMTZCSVQpOwo+ICsgICAgICAgICAgICAgICBi cmVhazsKPiArICAgICAgIGRlZmF1bHQ6Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAg ICAgfQo+ICsgICAgICAgbXRrX2hkbWlfd3JpdGUoaGRtaSwgR1JMX0NGRzAsIHZhbCk7Cj4gK30K PiArCj4gK3ZvaWQgbXRrX2hkbWlfaHdfYXVkX3NldF9oaWdoX2JpdHJhdGUoc3RydWN0IG10a19o ZG1pICpoZG1pLCBib29sIGVuYWJsZSkKPiArewo+ICsgICAgICAgbXRrX2hkbWlfbWFzayhoZG1p LCBHUkxfQU9VVF9CTlVNX1NFTCwKPiArICAgICAgICAgICAgICAgICAgICAgZW5hYmxlID8gSElH SF9CSVRfUkFURV9QQUNLRVRfQUxJR04gOiAwLAo+ICsgICAgICAgICAgICAgICAgICAgICBISUdI X0JJVF9SQVRFX1BBQ0tFVF9BTElHTik7Cj4gKyAgICAgICBtdGtfaGRtaV9tYXNrKGhkbWksIEdS TF9BVURJT19DRkcsIGVuYWJsZSA/IEhJR0hfQklUX1JBVEUgOiAwLAo+ICsgICAgICAgICAgICAg ICAgICAgICBISUdIX0JJVF9SQVRFKTsKPiArfQo+ICsKPiArdm9pZCBtdGtfaGRtaV9waHlfYXVk X2RzdF9ub3JtYWxfZG91YmxlX2VuYWJsZShzdHJ1Y3QgbXRrX2hkbWkgKmhkbWksCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGVuYWJsZSkKPiAr ewo+ICsgICAgICAgbXRrX2hkbWlfbWFzayhoZG1pLCBHUkxfQVVESU9fQ0ZHLCBlbmFibGUgPyBE U1RfTk9STUFMX0RPVUJMRSA6IDAsCj4gKyAgICAgICAgICAgICAgICAgICAgIERTVF9OT1JNQUxf RE9VQkxFKTsKPiArfQo+ICsKPiArdm9pZCBtdGtfaGRtaV9od19hdWRfZHN0X2VuYWJsZShzdHJ1 Y3QgbXRrX2hkbWkgKmhkbWksIGJvb2wgZW5hYmxlKQo+ICt7Cj4gKyAgICAgICBtdGtfaGRtaV9t YXNrKGhkbWksIEdSTF9BVURJT19DRkcsIGVuYWJsZSA/IFNBQ0RfRFNUIDogMCwgU0FDRF9EU1Qp Owo+ICt9Cj4gKwo+ICt2b2lkIG10a19oZG1pX2h3X2F1ZF9kc2RfZW5hYmxlKHN0cnVjdCBtdGtf aGRtaSAqaGRtaSwgYm9vbCBlbmFibGUpCj4gK3sKPiArICAgICAgIG10a19oZG1pX21hc2soaGRt aSwgR1JMX0FVRElPX0NGRywgZW5hYmxlID8gU0FDRF9TRUwgOiAwLCBTQUNEX1NFTCk7Cj4gK30K PiArCj4gK3ZvaWQgbXRrX2hkbWlfaHdfYXVkX3NldF9pMnNfY2hhbl9udW0oc3RydWN0IG10a19o ZG1pICpoZG1pLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBo ZG1pX2F1ZF9jaGFubmVsX3R5cGUgY2hhbm5lbF90eXBlLAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdTggY2hhbm5lbF9jb3VudCkKPiArewo+ICsgICAgICAgdTggdmFs XzEsIHZhbF8yLCB2YWxfMywgdmFsXzQ7CgpiZXR0ZXI6CiAgdTggc3dbM10sIHV2OwoKPiArCj4g KyAgICAgICBpZiAoY2hhbm5lbF9jb3VudCA9PSAyKSB7Cj4gKyAgICAgICAgICAgICAgIHZhbF8x ID0gMHgwNDsKPiArICAgICAgICAgICAgICAgdmFsXzIgPSAweDUwOwoKU29tZSAjZGVmaW5lcyB3 aXRoIG1lYW5pbmdmdWwgbmFtZXMgd291bGQgYmUgbmljZSBoZXJlLgoKCj4gKyAgICAgICB9IGVs c2UgaWYgKGNoYW5uZWxfY291bnQgPT0gMyB8fCBjaGFubmVsX2NvdW50ID09IDQpIHsKPiArICAg ICAgICAgICAgICAgaWYgKGNoYW5uZWxfY291bnQgPT0gNCAmJgo+ICsgICAgICAgICAgICAgICAg ICAgKGNoYW5uZWxfdHlwZSA9PSBIRE1JX0FVRF9DSEFOX1RZUEVfM18wX0xSUyB8fAo+ICsgICAg ICAgICAgICAgICAgICAgY2hhbm5lbF90eXBlID09IEhETUlfQVVEX0NIQU5fVFlQRV80XzApKSB7 Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgdmFsXzEgPSAweDE0Owo+ICsgICAgICAgICAgICAg ICB9IGVsc2Ugewo+ICsgICAgICAgICAgICAgICAgICAgICAgIHZhbF8xID0gMHgwYzsKPiArICAg ICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICB2YWxfMiA9IDB4NTA7Cj4gKyAgICAgICB9 IGVsc2UgaWYgKGNoYW5uZWxfY291bnQgPT0gNiB8fCBjaGFubmVsX2NvdW50ID09IDUpIHsKPiAr ICAgICAgICAgICAgICAgaWYgKGNoYW5uZWxfY291bnQgPT0gNiAmJgo+ICsgICAgICAgICAgICAg ICAgICAgY2hhbm5lbF90eXBlICE9IEhETUlfQVVEX0NIQU5fVFlQRV81XzEgJiYKPiArICAgICAg ICAgICAgICAgICAgIGNoYW5uZWxfdHlwZSAhPSBIRE1JX0FVRF9DSEFOX1RZUEVfNF8xX0NMUlMp IHsKPiArICAgICAgICAgICAgICAgICAgICAgICB2YWxfMSA9IDB4M2M7Cj4gKyAgICAgICAgICAg ICAgICAgICAgICAgdmFsXzIgPSAweDUwOwo+ICsgICAgICAgICAgICAgICB9IGVsc2Ugewo+ICsg ICAgICAgICAgICAgICAgICAgICAgIHZhbF8xID0gMHgxYzsKPiArICAgICAgICAgICAgICAgICAg ICAgICB2YWxfMiA9IDB4NTA7Cj4gKyAgICAgICAgICAgICAgIH0KPiArICAgICAgIH0gZWxzZSBp ZiAoY2hhbm5lbF9jb3VudCA9PSA4IHx8IGNoYW5uZWxfY291bnQgPT0gNykgewo+ICsgICAgICAg ICAgICAgICB2YWxfMSA9IDB4M2M7Cj4gKyAgICAgICAgICAgICAgIHZhbF8yID0gMHg1MDsKPiAr ICAgICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgICAgICAgIHZhbF8xID0gMHgwNDsKPiArICAgICAg ICAgICAgICAgdmFsXzIgPSAweDUwOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHZhbF8zID0g MHhjNjsKPiArICAgICAgIHZhbF80ID0gMHhmYTsKPiArCj4gKyAgICAgICBtdGtfaGRtaV93cml0 ZShoZG1pLCBHUkxfQ0hfU1cwLCB2YWxfMik7Cj4gKyAgICAgICBtdGtfaGRtaV93cml0ZShoZG1p LCBHUkxfQ0hfU1cxLCB2YWxfMyk7Cj4gKyAgICAgICBtdGtfaGRtaV93cml0ZShoZG1pLCBHUkxf Q0hfU1cyLCB2YWxfNCk7Cj4gKyAgICAgICBtdGtfaGRtaV93cml0ZShoZG1pLCBHUkxfSTJTX1VW LCB2YWxfMSk7Cj4gK30KPiArCj4gK3ZvaWQgbXRrX2hkbWlfaHdfYXVkX3NldF9pbnB1dF90eXBl KHN0cnVjdCBtdGtfaGRtaSAqaGRtaSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlbnVtIGhkbWlfYXVkX2lucHV0X3R5cGUgaW5wdXRfdHlwZSkKPiArewo+ICsgICAgICAg dTMyIHZhbCA9IDA7CgpubyBuZWVkIHRvIDAgaW5pdAoKPiArCj4gKyAgICAgICB2YWwgPSBtdGtf aGRtaV9yZWFkKGhkbWksIEdSTF9DRkcxKTsKPiArICAgICAgIGlmIChpbnB1dF90eXBlID09IEhE TUlfQVVEX0lOUFVUX0kyUyAmJgo+ICsgICAgICAgICAgICh2YWwgJiBDRkcxX1NQRElGKSA9PSBD RkcxX1NQRElGKSB7Cj4gKyAgICAgICAgICAgICAgIHZhbCAmPSB+Q0ZHMV9TUERJRjsKPiArICAg ICAgIH0gZWxzZSBpZiAoaW5wdXRfdHlwZSA9PSBIRE1JX0FVRF9JTlBVVF9TUERJRiAmJgo+ICsg ICAgICAgICAgICAgICAodmFsICYgQ0ZHMV9TUERJRikgPT0gMCkgewo+ICsgICAgICAgICAgICAg ICB2YWwgfD0gQ0ZHMV9TUERJRjsKPiArICAgICAgIH0KPiArICAgICAgIG10a19oZG1pX3dyaXRl KGhkbWksIEdSTF9DRkcxLCB2YWwpOwo+ICt9Cj4gKwo+ICt2b2lkIG10a19oZG1pX2h3X2F1ZF9z ZXRfY2hhbm5lbF9zdGF0dXMoc3RydWN0IG10a19oZG1pICpoZG1pLAo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1OCAqbF9jaGFuX3N0YXR1cywgdTggKnJfY2hhbl9z dGF0dXMsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gaGRt aV9hdWRpb19zYW1wbGVfZnJlcXVlbmN5Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGF1ZF9oZG1pX2ZzKQo+ICt7Cj4gKyAgICAgICB1OCBsX3N0YXR1c1s1XTsKPiAr ICAgICAgIHU4IHJfc3RhdHVzWzVdOwo+ICsgICAgICAgdTggdmFsID0gMDsKCm5vIG5lZWQgdG8g MCBpbml0Cgo+ICsKPiArICAgICAgIGxfc3RhdHVzWzBdID0gbF9jaGFuX3N0YXR1c1swXTsKPiAr ICAgICAgIGxfc3RhdHVzWzFdID0gbF9jaGFuX3N0YXR1c1sxXTsKPiArICAgICAgIGxfc3RhdHVz WzJdID0gbF9jaGFuX3N0YXR1c1syXTsKPiArICAgICAgIHJfc3RhdHVzWzBdID0gcl9jaGFuX3N0 YXR1c1swXTsKPiArICAgICAgIHJfc3RhdHVzWzFdID0gcl9jaGFuX3N0YXR1c1sxXTsKPiArICAg ICAgIHJfc3RhdHVzWzJdID0gcl9jaGFuX3N0YXR1c1syXTsKPiArCj4gKyAgICAgICBsX3N0YXR1 c1swXSAmPSB+MHgwMjsKPiArICAgICAgIHJfc3RhdHVzWzBdICY9IH4weDAyOwo+ICsKPiArICAg ICAgIHZhbCA9IGxfY2hhbl9zdGF0dXNbM10gJiAweGYwOwo+ICsgICAgICAgc3dpdGNoIChhdWRf aGRtaV9mcykgewo+ICsgICAgICAgY2FzZSBIRE1JX0FVRElPX1NBTVBMRV9GUkVRVUVOQ1lfMzIw MDA6Cj4gKyAgICAgICAgICAgICAgIHZhbCB8PSAweDAzOwo+ICsgICAgICAgICAgICAgICBicmVh azsKPiArICAgICAgIGNhc2UgSERNSV9BVURJT19TQU1QTEVfRlJFUVVFTkNZXzQ0MTAwOgo+ICsg ICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgIGNhc2UgSERNSV9BVURJT19TQU1QTEVfRlJF UVVFTkNZXzg4MjAwOgo+ICsgICAgICAgICAgICAgICB2YWwgfD0gMHgwODsKPiArICAgICAgICAg ICAgICAgYnJlYWs7Cj4gKyAgICAgICBjYXNlIEhETUlfQVVESU9fU0FNUExFX0ZSRVFVRU5DWV85 NjAwMDoKPiArICAgICAgICAgICAgICAgdmFsIHw9IDB4MGE7Cj4gKyAgICAgICAgICAgICAgIGJy ZWFrOwo+ICsgICAgICAgY2FzZSBIRE1JX0FVRElPX1NBTVBMRV9GUkVRVUVOQ1lfNDgwMDA6Cj4g KyAgICAgICAgICAgICAgIHZhbCB8PSAweDAyOwo+ICsgICAgICAgICAgICAgICBicmVhazsKPiAr ICAgICAgIGRlZmF1bHQ6Cj4gKyAgICAgICAgICAgICAgIHZhbCB8PSAweDAyOwo+ICsgICAgICAg ICAgICAgICBicmVhazsKPiArICAgICAgIH0KPiArICAgICAgIGxfc3RhdHVzWzNdID0gdmFsOwo+ ICsgICAgICAgcl9zdGF0dXNbM10gPSB2YWw7Cj4gKwo+ICsgICAgICAgdmFsID0gbF9jaGFuX3N0 YXR1c1s0XTsKPiArICAgICAgIHZhbCB8PSAoKH4obF9zdGF0dXNbM10gJiAweDBmKSkgPDwgNCk7 Cj4gKyAgICAgICBsX3N0YXR1c1s0XSA9IHZhbDsKPiArICAgICAgIHJfc3RhdHVzWzRdID0gdmFs Owo+ICsKPiArICAgICAgIHZhbCA9IGxfc3RhdHVzWzBdOwoKbml0OiBZb3UgZG9uJ3QgbmVlZCB0 byBib3VuY2UgdGhyb3VnaCB2YWwgaGVyZS4KWW91IGNhbiBqdXN0IHdyaXRlIHRoZSAqX3N0YXR1 c1tuXSB2YWx1ZSBkaXJlY3RseS4KCj4gKyAgICAgICBtdGtfaGRtaV93cml0ZShoZG1pLCBHUkxf STJTX0NfU1RBMCwgdmFsKTsKPiArICAgICAgIG10a19oZG1pX3dyaXRlKGhkbWksIEdSTF9MX1NU QVRVU18wLCB2YWwpOwo+ICsKPiArICAgICAgIHZhbCA9IHJfc3RhdHVzWzBdOwo+ICsgICAgICAg bXRrX2hkbWlfd3JpdGUoaGRtaSwgR1JMX1JfU1RBVFVTXzAsIHZhbCk7Cj4gKwo+ICsgICAgICAg dmFsID0gbF9zdGF0dXNbMV07Cj4gKyAgICAgICBtdGtfaGRtaV93cml0ZShoZG1pLCBHUkxfSTJT X0NfU1RBMSwgdmFsKTsKPiArICAgICAgIG10a19oZG1pX3dyaXRlKGhkbWksIEdSTF9MX1NUQVRV U18xLCB2YWwpOwo+ICsKPiArICAgICAgIHZhbCA9IHJfc3RhdHVzWzFdOwo+ICsgICAgICAgbXRr X2hkbWlfd3JpdGUoaGRtaSwgR1JMX1JfU1RBVFVTXzEsIHZhbCk7Cj4gKwo+ICsgICAgICAgdmFs ID0gbF9zdGF0dXNbMl07Cj4gKyAgICAgICBtdGtfaGRtaV93cml0ZShoZG1pLCBHUkxfSTJTX0Nf U1RBMiwgdmFsKTsKPiArICAgICAgIG10a19oZG1pX3dyaXRlKGhkbWksIEdSTF9MX1NUQVRVU18y LCB2YWwpOwo+ICsKPiArICAgICAgIHZhbCA9IHJfc3RhdHVzWzJdOwo+ICsgICAgICAgbXRrX2hk bWlfd3JpdGUoaGRtaSwgR1JMX1JfU1RBVFVTXzIsIHZhbCk7Cj4gKwo+ICsgICAgICAgdmFsID0g bF9zdGF0dXNbM107Cj4gKyAgICAgICBtdGtfaGRtaV93cml0ZShoZG1pLCBHUkxfSTJTX0NfU1RB MywgdmFsKTsKPiArICAgICAgIG10a19oZG1pX3dyaXRlKGhkbWksIEdSTF9MX1NUQVRVU18zLCB2 YWwpOwo+ICsKPiArICAgICAgIHZhbCA9IHJfc3RhdHVzWzNdOwo+ICsgICAgICAgbXRrX2hkbWlf d3JpdGUoaGRtaSwgR1JMX1JfU1RBVFVTXzMsIHZhbCk7Cj4gKwo+ICsgICAgICAgdmFsID0gbF9z dGF0dXNbNF07Cj4gKyAgICAgICBtdGtfaGRtaV93cml0ZShoZG1pLCBHUkxfSTJTX0NfU1RBNCwg dmFsKTsKPiArICAgICAgIG10a19oZG1pX3dyaXRlKGhkbWksIEdSTF9MX1NUQVRVU180LCB2YWwp Owo+ICsKPiArICAgICAgIHZhbCA9IHJfc3RhdHVzWzRdOwo+ICsgICAgICAgbXRrX2hkbWlfd3Jp dGUoaGRtaSwgR1JMX1JfU1RBVFVTXzQsIHZhbCk7Cj4gKwo+ICsgICAgICAgZm9yICh2YWwgPSAw OyB2YWwgPCAxOTsgdmFsKyspIHsKPiArICAgICAgICAgICAgICAgbXRrX2hkbWlfd3JpdGUoaGRt aSwgR1JMX0xfU1RBVFVTXzUgKyB2YWwgKiA0LCAwKTsKPiArICAgICAgICAgICAgICAgbXRrX2hk bWlfd3JpdGUoaGRtaSwgR1JMX1JfU1RBVFVTXzUgKyB2YWwgKiA0LCAwKTsKPiArICAgICAgIH0K PiArfQo+ICsKPiArdm9pZCBtdGtfaGRtaV9od19hdWRfc3JjX3JlZW5hYmxlKHN0cnVjdCBtdGtf aGRtaSAqaGRtaSkKPiArewo+ICsgICAgICAgdTMyIHZhbDsKPiArCj4gKyAgICAgICB2YWwgPSBt dGtfaGRtaV9yZWFkKGhkbWksIEdSTF9NSVhfQ1RSTCk7Cj4gKyAgICAgICBpZiAodmFsICYgTUlY X0NUUkxfU1JDX0VOKSB7Cj4gKyAgICAgICAgICAgICAgIHZhbCAmPSB+TUlYX0NUUkxfU1JDX0VO Owo+ICsgICAgICAgICAgICAgICBtdGtfaGRtaV93cml0ZShoZG1pLCBHUkxfTUlYX0NUUkwsIHZh bCk7Cj4gKyAgICAgICAgICAgICAgIHVzbGVlcF9yYW5nZSgyNTUsIDUxMik7CgpUaG9zZSBhcmUg c29tZSB2ZXJ5IHByZWNpc2UgdmFsdWVzIGZvciBhIHJhbmdlLi4uCgo+ICsgICAgICAgICAgICAg ICB2YWwgfD0gTUlYX0NUUkxfU1JDX0VOOwo+ICsgICAgICAgICAgICAgICBtdGtfaGRtaV93cml0 ZShoZG1pLCBHUkxfTUlYX0NUUkwsIHZhbCk7Cj4gKyAgICAgICB9Cj4gK30KPiArCj4gK3ZvaWQg bXRrX2hkbWlfaHdfYXVkX3NyY19vZmYoc3RydWN0IG10a19oZG1pICpoZG1pKQoKUGVyaGFwcyAq X2Rpc2FibGUoKSB3b3VsZCBiZSBtb3JlIGNvbnNpc3RlbnQuCgo+ICt7Cj4gKyAgICAgICB1MzIg dmFsOwo+ICsKPiArICAgICAgIHZhbCA9IG10a19oZG1pX3JlYWQoaGRtaSwgR1JMX01JWF9DVFJM KTsKPiArICAgICAgIHZhbCAmPSB+TUlYX0NUUkxfU1JDX0VOOwo+ICsgICAgICAgbXRrX2hkbWlf d3JpdGUoaGRtaSwgR1JMX01JWF9DVFJMLCB2YWwpOwo+ICsgICAgICAgbXRrX2hkbWlfd3JpdGUo aGRtaSwgR1JMX1NISUZUX0wxLCAweDAwKTsKPiArfQo+ICsKPiArdm9pZCBtdGtfaGRtaV9od19h dWRfc2V0X21jbGsoc3RydWN0IG10a19oZG1pICpoZG1pLCBlbnVtIGhkbWlfYXVkX21jbGsgbWNs aykKPiArewo+ICsgICAgICAgdTMyIHZhbDsKPiArCj4gKyAgICAgICB2YWwgPSBtdGtfaGRtaV9y ZWFkKGhkbWksIEdSTF9DRkc1KTsKPiArICAgICAgIHZhbCAmPSBDRkc1X0NEX1JBVElPX01BU0s7 Cj4gKwo+ICsgICAgICAgc3dpdGNoIChtY2xrKSB7Cj4gKyAgICAgICBjYXNlIEhETUlfQVVEX01D TEtfMTI4RlM6Cj4gKyAgICAgICAgICAgICAgIHZhbCB8PSBDRkc1X0ZTMTI4Owo+ICsgICAgICAg ICAgICAgICBicmVhazsKPiArICAgICAgIGNhc2UgSERNSV9BVURfTUNMS18yNTZGUzoKPiArICAg ICAgICAgICAgICAgdmFsIHw9IENGRzVfRlMyNTY7Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ ICsgICAgICAgY2FzZSBIRE1JX0FVRF9NQ0xLXzM4NEZTOgo+ICsgICAgICAgICAgICAgICB2YWwg fD0gQ0ZHNV9GUzM4NDsKPiArICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICBjYXNlIEhE TUlfQVVEX01DTEtfNTEyRlM6Cj4gKyAgICAgICAgICAgICAgIHZhbCB8PSBDRkc1X0ZTNTEyOwo+ ICsgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgIGNhc2UgSERNSV9BVURfTUNMS183NjhG UzoKPiArICAgICAgICAgICAgICAgdmFsIHw9IENGRzVfRlM3Njg7Cj4gKyAgICAgICAgICAgICAg IGJyZWFrOwo+ICsgICAgICAgZGVmYXVsdDoKPiArICAgICAgICAgICAgICAgdmFsIHw9IENGRzVf RlMyNTY7Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgfQo+ICsgICAgICAgbXRr X2hkbWlfd3JpdGUoaGRtaSwgR1JMX0NGRzUsIHZhbCk7Cj4gK30KPiArCj4gK3ZvaWQgbXRrX2hk bWlfaHdfYXVkX2FjbGtfaW52X2VuYWJsZShzdHJ1Y3QgbXRrX2hkbWkgKmhkbWksIGJvb2wgZW5h YmxlKQoKbml0OiBJIHByZWZlciBleHBsaWNpdCBfZW5hYmxlKCkgYW5kIF9kaXNhYmxlKCkgZnVu Y3Rpb25zIHcvb3V0IHRoZQonZW5hYmxlJyBwYXJhbWV0ZXIuCgo+ICt7Cj4gKyAgICAgICB1MzIg dmFsOwo+ICsKPiArICAgICAgIHZhbCA9IG10a19oZG1pX3JlYWQoaGRtaSwgR1JMX0NGRzIpOwo+ ICsgICAgICAgaWYgKGVuYWJsZSkKPiArICAgICAgICAgICAgICAgdmFsIHw9IDB4ODA7Cj4gKyAg ICAgICBlbHNlCj4gKyAgICAgICAgICAgICAgIHZhbCAmPSB+MHg4MDsKPiArICAgICAgIG10a19o ZG1pX3dyaXRlKGhkbWksIEdSTF9DRkcyLCB2YWwpOwo+ICt9Cj4gKwo+ICtzdHJ1Y3QgaGRtaV9h Y3JfbiB7Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQgY2xvY2s7Cj4gKyAgICAgICB1bnNpZ25lZCBp bnQgblszXTsKPiArfTsKPiArCj4gKy8qIFJlY29tbWVuZGVkIE4gdmFsdWVzIGZyb20gSERNSSBz cGVjaWZpY2F0aW9uLCB0YWJsZXMgNy0xIHRvIDctMyAqLwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGhkbWlfYWNyX24gaGRtaV9yZWNfbl90YWJsZVtdID0gewo+ICsgICAgICAgLyogQ2xvY2ssIE46 IDMya0h6IDQ0LjFrSHogNDhrSHogKi8KPiArICAgICAgIHsgIDI1MTc1LCB7ICA0NTc2LCAgNzAw NywgIDY4NjQgfSB9LAo+ICsgICAgICAgeyAgNzQxNzYsIHsgMTE2NDgsIDE3ODM2LCAxMTY0OCB9 IH0sCj4gKyAgICAgICB7IDE0ODM1MiwgeyAxMTY0OCwgIDg5MTgsICA1ODI0IH0gfSwKPiArICAg ICAgIHsgMjk2NzAzLCB7ICA1ODI0LCAgNDQ1OSwgIDU4MjQgfSB9LAo+ICsgICAgICAgeyAyOTcw MDAsIHsgIDMwNzIsICA0NzA0LCAgNTEyMCB9IH0sCj4gKyAgICAgICB7ICAgICAgMCwgeyAgNDA5 NiwgIDYyNzIsICA2MTQ0IH0gfSwgLyogYWxsIG90aGVyIFRNRFMgY2xvY2tzICovCj4gK307Cj4g Kwo+ICsvKioKPiArICogaGRtaV9yZWNvbW1lbmRlZF9uKCkgLSBSZXR1cm4gTiB2YWx1ZSByZWNv bW1lbmRlZCBieSBIRE1JIHNwZWNpZmljYXRpb24KPiArICogQGZyZXE6IGF1ZGlvIHNhbXBsZSBy YXRlIGluIEh6Cj4gKyAqIEBjbG9jazogcm91bmRlZCBUTURTIGNsb2NrIGluIGtIego+ICsgKi8K PiArc3RhdGljIHVuc2lnbmVkIGludCBoZG1pX3JlY29tbWVuZGVkX24odW5zaWduZWQgaW50IGZy ZXEsIHVuc2lnbmVkIGludCBjbG9jaykKPiArewo+ICsgICAgICAgY29uc3Qgc3RydWN0IGhkbWlf YWNyX24gKnJlY29tbWVuZGVkOwo+ICsgICAgICAgdW5zaWduZWQgaW50IGk7Cj4gKwo+ICsgICAg ICAgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoaGRtaV9yZWNfbl90YWJsZSkgLSAxOyBpKysp IHsKPiArICAgICAgICAgICAgICAgaWYgKGNsb2NrID09IGhkbWlfcmVjX25fdGFibGVbaV0uY2xv Y2spCj4gKyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICB9Cj4gKyAgICAg ICByZWNvbW1lbmRlZCA9IGhkbWlfcmVjX25fdGFibGUgKyBpOwo+ICsKPiArICAgICAgIHN3aXRj aCAoZnJlcSkgewo+ICsgICAgICAgY2FzZSAzMjAwMDoKPiArICAgICAgICAgICAgICAgcmV0dXJu IHJlY29tbWVuZGVkLT5uWzBdOwo+ICsgICAgICAgY2FzZSA0NDEwMDoKPiArICAgICAgICAgICAg ICAgcmV0dXJuIHJlY29tbWVuZGVkLT5uWzFdOwo+ICsgICAgICAgY2FzZSA0ODAwMDoKPiArICAg ICAgICAgICAgICAgcmV0dXJuIHJlY29tbWVuZGVkLT5uWzJdOwo+ICsgICAgICAgY2FzZSA4ODIw MDoKPiArICAgICAgICAgICAgICAgcmV0dXJuIHJlY29tbWVuZGVkLT5uWzFdICogMjsKPiArICAg ICAgIGNhc2UgOTYwMDA6Cj4gKyAgICAgICAgICAgICAgIHJldHVybiByZWNvbW1lbmRlZC0+blsy XSAqIDI7Cj4gKyAgICAgICBjYXNlIDE3NjQwMDoKPiArICAgICAgICAgICAgICAgcmV0dXJuIHJl Y29tbWVuZGVkLT5uWzFdICogNDsKPiArICAgICAgIGNhc2UgMTkyMDAwOgo+ICsgICAgICAgICAg ICAgICByZXR1cm4gcmVjb21tZW5kZWQtPm5bMl0gKiA0Owo+ICsgICAgICAgZGVmYXVsdDoKPiAr ICAgICAgICAgICAgICAgcmV0dXJuICgxMjggKiBmcmVxKSAvIDEwMDA7Cj4gKyAgICAgICB9Cj4g K30KPiArCj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgaGRtaV9tb2RlX2Nsb2NrX3RvX2h6KHVuc2ln bmVkIGludCBjbG9jaykKPiArewo+ICsgICAgICAgc3dpdGNoIChjbG9jaykgewo+ICsgICAgICAg Y2FzZSAyNTE3NToKPiArICAgICAgICAgICAgICAgcmV0dXJuIDI1MTc0ODI1OyAgICAgICAgLyog MjUuMi8xLjAwMSBNSHogKi8KPiArICAgICAgIGNhc2UgNzQxNzY6Cj4gKyAgICAgICAgICAgICAg IHJldHVybiA3NDE3NTgyNDsgICAgICAgIC8qIDc0LjI1LzEuMDAxIE1IeiAqLwo+ICsgICAgICAg Y2FzZSAxNDgzNTI6Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAxNDgzNTE2NDg7ICAgICAgIC8q IDE0OC41LzEuMDAxIE1IeiAqLwo+ICsgICAgICAgY2FzZSAyOTY3MDM6Cj4gKyAgICAgICAgICAg ICAgIHJldHVybiAyOTY3MDMyOTc7ICAgICAgIC8qIDI5Ny8xLjAwMSBNSHogKi8KPiArICAgICAg IGRlZmF1bHQ6Cj4gKyAgICAgICAgICAgICAgIHJldHVybiBjbG9jayAqIDEwMDA7Cj4gKyAgICAg ICB9Cj4gK30KPiArCj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgaGRtaV9leHBlY3RlZF9jdHModW5z aWduZWQgaW50IGF1ZGlvX3NhbXBsZV9yYXRlLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgaW50IHRtZHNfY2xvY2ssIHVuc2lnbmVkIGludCBuKQo+ICt7 Cj4gKyAgICAgICByZXR1cm4gRElWX1JPVU5EX0NMT1NFU1RfVUxMKCh1NjQpaGRtaV9tb2RlX2Ns b2NrX3RvX2h6KHRtZHNfY2xvY2spICogbiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMTI4ICogYXVkaW9fc2FtcGxlX3JhdGUpOwo+ICt9CgpEb3VnIEFuZGVyc29uIG1h eSBoYXZlIHNvbWUgb3BpbmlvbnMgYWJvdXQgaG93IE4gJiBDVFMgYXJlIGNvbXB1dGVkLgoKCj4g Kwo+ICtzdGF0aWMgdm9pZCBkb19oZG1pX2h3X2F1ZF9zZXRfbmN0cyhzdHJ1Y3QgbXRrX2hkbWkg KmhkbWksIHVuc2lnbmVkIGludCBuLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGludCBjdHMpCj4gK3sKPiArICAgICAgIHVuc2lnbmVkIGNoYXIgdmFsW05D VFNfQllURVNdOwo+ICsgICAgICAgaW50IGk7Cj4gKwo+ICsgICAgICAgbXRrX2hkbWlfd3JpdGUo aGRtaSwgR1JMX05DVFMsIDApOwo+ICsgICAgICAgbXRrX2hkbWlfd3JpdGUoaGRtaSwgR1JMX05D VFMsIDApOwo+ICsgICAgICAgbXRrX2hkbWlfd3JpdGUoaGRtaSwgR1JMX05DVFMsIDApOwo+ICsg ICAgICAgbWVtc2V0KHZhbCwgMCwgc2l6ZW9mKHZhbCkpOwoKbm90IG5lY2Vzc2FyeSwgc2luY2Ug eW91IGZpbGwgaW4gYWxsIDcgYnl0ZXMgYW55d2F5LgoKPiArCj4gKyAgICAgICB2YWxbMF0gPSAo Y3RzID4+IDI0KSAmIDB4ZmY7Cj4gKyAgICAgICB2YWxbMV0gPSAoY3RzID4+IDE2KSAmIDB4ZmY7 Cj4gKyAgICAgICB2YWxbMl0gPSAoY3RzID4+IDgpICYgMHhmZjsKPiArICAgICAgIHZhbFszXSA9 IGN0cyAmIDB4ZmY7Cj4gKwo+ICsgICAgICAgdmFsWzRdID0gKG4gPj4gMTYpICYgMHhmZjsKPiAr ICAgICAgIHZhbFs1XSA9IChuID4+IDgpICYgMHhmZjsKPiArICAgICAgIHZhbFs2XSA9IG4gJiAw eGZmOwoKYWxsIG9mIHRoZXNlICImIDB4ZmYiIGFyZSBub3QgbmVlZGVkLCBzaW5jZSB2YWwgaXMg YW4gdW5zaWduZWQgY2hhciBhcnJheS4KCj4gKwo+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IE5D VFNfQllURVM7IGkrKykKPiArICAgICAgICAgICAgICAgbXRrX2hkbWlfd3JpdGUoaGRtaSwgR1JM X05DVFMsIHZhbFtpXSk7CgpXaGF0IGFuIGludGVyZXN0aW5nIGRlc2lnbi4gIFdlIHdyaXRlIGFs bCAxMCBieXRlcyB0byB0aGUgc2FtZSByZWdpc3RlciBhZGRyZXNzPwpJbiB0aGlzIGNhc2UsIHdo eSBib3RoZXIgd2l0aCB2YWwgYXQgYWxsPwpKdXN0IGRpcmVjdGx5IGNhbGwgbXRrX2hkbWlfd3Jp dGUoKSBmb3IgZWFjaCBvZiB0aGUgYnl0ZXMgYWJvdmUuCgoKPiArfQo+ICsKPiArdm9pZCBtdGtf aGRtaV9od19hdWRfc2V0X25jdHMoc3RydWN0IG10a19oZG1pICpoZG1pLCB1bnNpZ25lZCBpbnQg c2FtcGxlX3JhdGUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50 IGNsb2NrKQo+ICt7Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQgbiwgY3RzOwo+ICsKPiArICAgICAg IG4gPSBoZG1pX3JlY29tbWVuZGVkX24oc2FtcGxlX3JhdGUsIGNsb2NrKTsKPiArICAgICAgIGN0 cyA9IGhkbWlfZXhwZWN0ZWRfY3RzKHNhbXBsZV9yYXRlLCBjbG9jaywgbik7Cj4gKwo+ICsgICAg ICAgZGV2X2RiZyhoZG1pLT5kZXYsICIlczogc2FtcGxlX3JhdGU9JXUsIGNsb2NrPSVkLCBjdHM9 JXUsIG49JXVcbiIsCj4gKyAgICAgICAgICAgICAgIF9fZnVuY19fLCBzYW1wbGVfcmF0ZSwgY2xv Y2ssIG4sIGN0cyk7Cj4gKwo+ICsgICAgICAgbXRrX2hkbWlfbWFzayhoZG1pLCBEVU1NWV8zMDQs IEFVRElPX0kyU19OQ1RTX1NFTF82NCwKPiArICAgICAgICAgICAgICAgICAgICAgQVVESU9fSTJT X05DVFNfU0VMKTsKPiArICAgICAgIGRvX2hkbWlfaHdfYXVkX3NldF9uY3RzKGhkbWksIG4sIGN0 cyk7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1p X2h3LmggYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWlfaHcuaAo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uOTAxMzIxOQo+IC0tLSAvZGV2L251bGwKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWlfaHcuaAo+IEBAIC0wLDAgKzEs NzMgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IChjKSAyMDE0IE1lZGlhVGVrIEluYy4KPiArICog QXV0aG9yOiBKaWUgUWl1IDxqaWUucWl1QG1lZGlhdGVrLmNvbT4KPiArICoKPiArICogVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKPiArICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSB2ZXJzaW9uIDIgYXMKPiArICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24uCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCj4g KyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAqLwo+ ICsjaWZuZGVmIF9NVEtfSERNSV9IV19ICj4gKyNkZWZpbmUgX01US19IRE1JX0hXX0gKPiArCj4g KyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgo+ICsjaW5jbHVkZSA8bGludXgvaGRtaS5oPgo+ICsj aW5jbHVkZSAibXRrX2hkbWkuaCIKPiArCj4gK3ZvaWQgbXRrX2hkbWlfaHdfdmlkX2JsYWNrKHN0 cnVjdCBtdGtfaGRtaSAqaGRtaSwgYm9vbCBibGFjayk7Cj4gK3ZvaWQgbXRrX2hkbWlfaHdfYXVk X211dGUoc3RydWN0IG10a19oZG1pICpoZG1pLCBib29sIG11dGUpOwo+ICt2b2lkIG10a19oZG1p X2h3X3NlbmRfaW5mb19mcmFtZShzdHJ1Y3QgbXRrX2hkbWkgKmhkbWksIHU4ICpidWZmZXIsIHU4 IGxlbik7Cj4gK3ZvaWQgbXRrX2hkbWlfaHdfc2VuZF9hdWRfcGFja2V0KHN0cnVjdCBtdGtfaGRt aSAqaGRtaSwgYm9vbCBlbmFibGUpOwo+ICtpbnQgbXRrX2hkbWlfaHdfc2V0X2Nsb2NrKHN0cnVj dCBtdGtfaGRtaSAqaGN0eCwgdTMyIGNsb2NrKTsKPiArdm9pZCBtdGtfaGRtaV9od19jb25maWdf c3lzKHN0cnVjdCBtdGtfaGRtaSAqaGRtaSk7Cj4gK3ZvaWQgbXRrX2hkbWlfaHdfc2V0X2RlZXBf Y29sb3JfbW9kZShzdHJ1Y3QgbXRrX2hkbWkgKmhkbWkpOwo+ICt2b2lkIG10a19oZG1pX2h3X3Nl bmRfYXZfbXV0ZShzdHJ1Y3QgbXRrX2hkbWkgKmhkbWkpOwo+ICt2b2lkIG10a19oZG1pX2h3X3Nl bmRfYXZfdW5tdXRlKHN0cnVjdCBtdGtfaGRtaSAqaGRtaSk7Cj4gK3ZvaWQgbXRrX2hkbWlfaHdf bmN0c19lbmFibGUoc3RydWN0IG10a19oZG1pICpoZG1pLCBib29sIG9uKTsKPiArdm9pZCBtdGtf aGRtaV9od19hdWRfc2V0X2NoYW5uZWxfc3dhcChzdHJ1Y3QgbXRrX2hkbWkgKmhkbWksCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGhkbWlfYXVkX2NoYW5uZWxf c3dhcF90eXBlIHN3YXApOwo+ICt2b2lkIG10a19oZG1pX2h3X2F1ZF9yYXdfZGF0YV9lbmFibGUo c3RydWN0IG10a19oZG1pICpoZG1pLCBib29sIGVuYWJsZSk7Cj4gK3ZvaWQgbXRrX2hkbWlfaHdf YXVkX3NldF9iaXRfbnVtKHN0cnVjdCBtdGtfaGRtaSAqaGRtaSwKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBlbnVtIGhkbWlfYXVkaW9fc2FtcGxlX3NpemUgYml0X251bSk7Cj4g K3ZvaWQgbXRrX2hkbWlfaHdfYXVkX3NldF9oaWdoX2JpdHJhdGUoc3RydWN0IG10a19oZG1pICpo ZG1pLCBib29sIGVuYWJsZSk7Cj4gK3ZvaWQgbXRrX2hkbWlfcGh5X2F1ZF9kc3Rfbm9ybWFsX2Rv dWJsZV9lbmFibGUoc3RydWN0IG10a19oZG1pICpoZG1pLAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBlbmFibGUpOwo+ICt2b2lkIG10a19oZG1p X2h3X2F1ZF9kc3RfZW5hYmxlKHN0cnVjdCBtdGtfaGRtaSAqaGRtaSwgYm9vbCBlbmFibGUpOwo+ ICt2b2lkIG10a19oZG1pX2h3X2F1ZF9kc2RfZW5hYmxlKHN0cnVjdCBtdGtfaGRtaSAqaGRtaSwg Ym9vbCBlbmFibGUpOwo+ICt2b2lkIG10a19oZG1pX2h3X2F1ZF9zZXRfaTJzX2ZtdChzdHJ1Y3Qg bXRrX2hkbWkgKmhkbWksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBo ZG1pX2F1ZF9pMnNfZm10IGkyc19mbXQpOwo+ICt2b2lkIG10a19oZG1pX2h3X2F1ZF9zZXRfaTJz X2NoYW5fbnVtKHN0cnVjdCBtdGtfaGRtaSAqaGRtaSwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGVudW0gaGRtaV9hdWRfY2hhbm5lbF90eXBlIGNoYW5uZWxfdHlwZSwK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU4IGNoYW5uZWxfY291bnQp Owo+ICt2b2lkIG10a19oZG1pX2h3X2F1ZF9zZXRfaW5wdXRfdHlwZShzdHJ1Y3QgbXRrX2hkbWkg KmhkbWksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBoZG1pX2F1 ZF9pbnB1dF90eXBlIGlucHV0X3R5cGUpOwo+ICt2b2lkIG10a19oZG1pX2h3X2F1ZF9zZXRfY2hh bm5lbF9zdGF0dXMoc3RydWN0IG10a19oZG1pICpoZG1pLAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1OCAqbF9jaGFuX3N0YXR1cywgdTggKnJfY2hhbl9zdGF1cywK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBoZG1pX2F1ZGlv X3NhbXBsZV9mcmVxdWVuY3kKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYXVkX2hkbWlfZnMpOwo+ICt2b2lkIG10a19oZG1pX2h3X2F1ZF9zcmNfZW5hYmxlKHN0cnVj dCBtdGtfaGRtaSAqaGRtaSwgYm9vbCBlbmFibGUpOwo+ICt2b2lkIG10a19oZG1pX2h3X2F1ZF9z ZXRfbWNsayhzdHJ1Y3QgbXRrX2hkbWkgKmhkbWksIGVudW0gaGRtaV9hdWRfbWNsayBtY2xrKTsK PiArdm9pZCBtdGtfaGRtaV9od19hdWRfc3JjX29mZihzdHJ1Y3QgbXRrX2hkbWkgKmhkbWkpOwo+ ICt2b2lkIG10a19oZG1pX2h3X2F1ZF9zcmNfcmVlbmFibGUoc3RydWN0IG10a19oZG1pICpoZG1p KTsKPiArdm9pZCBtdGtfaGRtaV9od19hdWRfYWNsa19pbnZfZW5hYmxlKHN0cnVjdCBtdGtfaGRt aSAqaGRtaSwgYm9vbCBlbmFibGUpOwo+ICt2b2lkIG10a19oZG1pX2h3X2F1ZF9zZXRfbmN0cyhz dHJ1Y3QgbXRrX2hkbWkgKmhkbWksIHVuc2lnbmVkIGludCBzYW1wbGVfcmF0ZSwKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY2xvY2spOwo+ICtib29sIG10a19o ZG1pX2h3X2lzX2hwZF9oaWdoKHN0cnVjdCBtdGtfaGRtaSAqaGRtaSk7Cj4gK3ZvaWQgbXRrX2hk bWlfaHdfbWFrZV9yZWdfd3JpdGFibGUoc3RydWN0IG10a19oZG1pICpoZG1pLCBib29sIGVuYWJs ZSk7Cj4gK3ZvaWQgbXRrX2hkbWlfaHdfcmVzZXQoc3RydWN0IG10a19oZG1pICpoZG1pKTsKPiAr dm9pZCBtdGtfaGRtaV9od19lbmFibGVfbm90aWNlKHN0cnVjdCBtdGtfaGRtaSAqaGRtaSwgYm9v bCBlbmFibGVfbm90aWNlKTsKPiArdm9pZCBtdGtfaGRtaV9od193cml0ZV9pbnRfbWFzayhzdHJ1 Y3QgbXRrX2hkbWkgKmhkbWksIHUzMiBpbnRfbWFzayk7Cj4gK3ZvaWQgbXRrX2hkbWlfaHdfZW5h YmxlX2R2aV9tb2RlKHN0cnVjdCBtdGtfaGRtaSAqaGRtaSwgYm9vbCBlbmFibGUpOwo+ICt2b2lk IG10a19oZG1pX2h3X25jdHNfYXV0b193cml0ZV9lbmFibGUoc3RydWN0IG10a19oZG1pICpoZG1p LCBib29sIGVuYWJsZSk7Cj4gK3ZvaWQgbXRrX2hkbWlfaHdfbXNpY19zZXR0aW5nKHN0cnVjdCBt dGtfaGRtaSAqaGRtaSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqbW9kZSk7Cj4gK3ZvaWQgbXRrX2hkbWlfaHdfMXA0X3ZlcnNpb25fZW5h YmxlKHN0cnVjdCBtdGtfaGRtaSAqaGRtaSwgYm9vbCBlbmFibGUpOwo+ICt2b2lkIG10a19oZG1p X2h3X2h0cGxnX2lycV9lbmFibGUoc3RydWN0IG10a19oZG1pICpoZG1pKTsKPiArdm9pZCBtdGtf aGRtaV9od19odHBsZ19pcnFfZGlzYWJsZShzdHJ1Y3QgbXRrX2hkbWkgKmhkbWkpOwo+ICt2b2lk IG10a19oZG1pX2h3X2NsZWFyX2h0cGxnX2lycShzdHJ1Y3QgbXRrX2hkbWkgKmhkbWkpOwo+ICsK PiArI2VuZGlmIC8qIF9NVEtfSERNSV9IV19IICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9tZWRpYXRlay9tdGtfaGRtaV9yZWdzLmggYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsv bXRrX2hkbWlfcmVncy5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi44 YzFkMzE4Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9t dGtfaGRtaV9yZWdzLmgKPiBAQCAtMCwwICsxLDIyMSBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQg KGMpIDIwMTQgTWVkaWFUZWsgSW5jLgo+ICsgKiBBdXRob3I6IEppZSBRaXUgPGppZS5xaXVAbWVk aWF0ZWsuY29tPgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwo+ICsgKiBw dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPiArICoKPiArICogVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKPiArICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KPiArICovCj4gKyNpZm5kZWYgX01US19IRE1JX1JFR1NfSAo+ ICsjZGVmaW5lIF9NVEtfSERNSV9SRUdTX0gKPiArCj4gKyNkZWZpbmUgR1JMX0lOVF9NQVNLICAg ICAgICAgICAweDE4Cj4gKyNkZWZpbmUgR1JMX0lGTV9QT1JUICAgICAgICAgICAweDE4OAo+ICsj ZGVmaW5lIEdSTF9DSF9TV0FQICAgICAgICAgICAgMHgxOTgKPiArI2RlZmluZSBMUl9TV0FQICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCSVQoMCkKPiArI2RlZmluZSBMRkVfQ0NfU1dB UCAgICAgICAgICAgICAgICAgICAgQklUKDEpCj4gKyNkZWZpbmUgTFNSU19TV0FQICAgICAgICAg ICAgICAgICAgICAgIEJJVCgyKQo+ICsjZGVmaW5lIFJMU19SUlNfU1dBUCAgICAgICAgICAgICAg ICAgICBCSVQoMykKPiArI2RlZmluZSBMUl9TVEFUVVNfU1dBUCAgICAgICAgICAgICAgICAgQklU KDQpCj4gKyNkZWZpbmUgR1JMX0kyU19DX1NUQTAgICAgICAgICAweDE0MAo+ICsjZGVmaW5lIEdS TF9JMlNfQ19TVEExICAgICAgICAgMHgxNDQKPiArI2RlZmluZSBHUkxfSTJTX0NfU1RBMiAgICAg ICAgIDB4MTQ4Cj4gKyNkZWZpbmUgR1JMX0kyU19DX1NUQTMgICAgICAgICAweDE0Qwo+ICsjZGVm aW5lIEdSTF9JMlNfQ19TVEE0ICAgICAgICAgMHgxNTAKPiArI2RlZmluZSBHUkxfSTJTX1VWICAg ICAgICAgICAgIDB4MTU0Cj4gKyNkZWZpbmUgR1JMX0FDUF9JU1JDX0NUUkwgICAgICAweDE1OAo+ ICsjZGVmaW5lIFZTX0VOICAgICAgICAgICAgICAgICAgICAgICAgICBCSVQoMCkKPiArI2RlZmlu ZSBBQ1BfRU4gICAgICAgICAgICAgICAgICAgICAgICAgQklUKDEpCj4gKyNkZWZpbmUgSVNSQzFf RU4gICAgICAgICAgICAgICAgICAgICAgIEJJVCgyKQo+ICsjZGVmaW5lIElTUkMyX0VOICAgICAg ICAgICAgICAgICAgICAgICBCSVQoMykKPiArI2RlZmluZSBHQU1VVF9FTiAgICAgICAgICAgICAg ICAgICAgICAgQklUKDQpCj4gKyNkZWZpbmUgR1JMX0NUU19DVFJMICAgICAgICAgICAweDE2MAo+ ICsjZGVmaW5lIENUU19DVFJMX1NPRlQgICAgICAgICAgICAgICAgICBCSVQoMCkKPiArI2RlZmlu ZSBHUkxfSU5UICAgICAgICAgICAgICAgICAgICAgICAgMHgxNAo+ICsjZGVmaW5lIElOVF9NREkg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJJVCgwKQo+ICsjZGVmaW5lIElOVF9IRENQ ICAgICAgICAgICAgICAgICAgICAgICBCSVQoMSkKPiArI2RlZmluZSBJTlRfRklGT19PICAgICAg ICAgICAgICAgICAgICAgQklUKDIpCj4gKyNkZWZpbmUgSU5UX0ZJRk9fVSAgICAgICAgICAgICAg ICAgICAgIEJJVCgzKQo+ICsjZGVmaW5lIElOVF9JRk1fRVJSICAgICAgICAgICAgICAgICAgICBC SVQoNCkKPiArI2RlZmluZSBJTlRfSU5GX0RPTkUgICAgICAgICAgICAgICAgICAgQklUKDUpCj4g KyNkZWZpbmUgSU5UX05DVFNfRE9ORSAgICAgICAgICAgICAgICAgIEJJVCg2KQo+ICsjZGVmaW5l IElOVF9DVFJMX1BLVF9ET05FICAgICAgICAgICAgICBCSVQoNykKPiArI2RlZmluZSBHUkxfSU5U X01BU0sgICAgICAgICAgIDB4MTgKPiArI2RlZmluZSBHUkxfQ1RSTCAgICAgICAgICAgICAgIDB4 MUMKPiArI2RlZmluZSBDVFJMX0dFTl9FTiAgICAgICAgICAgICAgICAgICAgQklUKDIpCj4gKyNk ZWZpbmUgQ1RSTF9TUERfRU4gICAgICAgICAgICAgICAgICAgIEJJVCgzKQo+ICsjZGVmaW5lIENU UkxfTVBFR19FTiAgICAgICAgICAgICAgICAgICBCSVQoNCkKPiArI2RlZmluZSBDVFJMX0FVRElP X0VOICAgICAgICAgICAgICAgICAgQklUKDUpCj4gKyNkZWZpbmUgQ1RSTF9BVklfRU4gICAgICAg ICAgICAgICAgICAgIEJJVCg2KQo+ICsjZGVmaW5lIENUUkxfQVZNVVRFICAgICAgICAgICAgICAg ICAgICBCSVQoNykKPiArI2RlZmluZSAgICAgICAgR1JMX1NUQVRVUyAgICAgICAgICAgICAgMHgy MAo+ICsjZGVmaW5lIFNUQVRVU19IVFBMRyAgICAgICAgICAgICAgICAgICBCSVQoMCkKPiArI2Rl ZmluZSBTVEFUVVNfUE9SRCAgICAgICAgICAgICAgICAgICAgQklUKDEpCj4gKyNkZWZpbmUgR1JM X0RJVk4gICAgICAgICAgICAgICAweDE3MAo+ICsjZGVmaW5lIE5DVFNfV1JJX0FOWVRJTUUgICAg ICAgICAgICAgICBCSVQoNikKPiArI2RlZmluZSBHUkxfQVVESU9fQ0ZHICAgICAgICAgIDB4MTdD Cj4gKyNkZWZpbmUgQVVESU9fWkVSTyAgICAgICAgICAgICAgICAgICAgIEJJVCgwKQo+ICsjZGVm aW5lIEhJR0hfQklUX1JBVEUgICAgICAgICAgICAgICAgICBCSVQoMSkKPiArI2RlZmluZSBTQUNE X0RTVCAgICAgICAgICAgICAgICAgICAgICAgQklUKDIpCj4gKyNkZWZpbmUgRFNUX05PUk1BTF9E T1VCTEUgICAgICAgICAgICAgIEJJVCgzKQo+ICsjZGVmaW5lIERTRF9JTlYgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEJJVCg0KQo+ICsjZGVmaW5lIExSX0lOViAgICAgICAgICAgICAg ICAgICAgICAgICBCSVQoNSkKPiArI2RlZmluZSBMUl9NSVggICAgICAgICAgICAgICAgICAgICAg ICAgQklUKDYpCj4gKyNkZWZpbmUgU0FDRF9TRUwgICAgICAgICAgICAgICAgICAgICAgIEJJVCg3 KQo+ICsjZGVmaW5lIEdSTF9OQ1RTICAgICAgICAgICAgICAgMHgxODQKPiArI2RlZmluZSBHUkxf Q0hfU1cwICAgICAgICAgICAgIDB4MThDCj4gKyNkZWZpbmUgR1JMX0NIX1NXMSAgICAgICAgICAg ICAweDE5MAo+ICsjZGVmaW5lIEdSTF9DSF9TVzIgICAgICAgICAgICAgMHgxOTQKPiArI2RlZmlu ZSBHUkxfSU5GT0ZSTV9WRVIgICAgICAgICAgICAgICAgMHgxOUMKPiArI2RlZmluZSBHUkxfSU5G T0ZSTV9UWVBFICAgICAgIDB4MUEwCj4gKyNkZWZpbmUgR1JMX0lORk9GUk1fTE5HICAgICAgICAg ICAgICAgIDB4MUE0Cj4gKyNkZWZpbmUgR1JMX01JWF9DVFJMICAgICAgICAgICAweDFCNAo+ICsj ZGVmaW5lIE1JWF9DVFJMX1NSQ19FTiAgICAgICAgICAgICAgICAgICAgICAgIEJJVCgwKQo+ICsj ZGVmaW5lIEJZUEFTU19WT0xVTUUgICAgICAgICAgICAgICAgICBCSVQoMSkKPiArI2RlZmluZSBN SVhfQ1RSTF9GTEFUICAgICAgICAgICAgICAgICAgQklUKDcpCj4gKyNkZWZpbmUgR1JMX0FPVVRf Qk5VTV9TRUwgICAgICAweDFDNAo+ICsjZGVmaW5lIEFPVVRfMjRCSVQgICAgICAgICAgICAgICAg ICAgICAweDAwCj4gKyNkZWZpbmUgQU9VVF8yMEJJVCAgICAgICAgICAgICAgICAgICAgIDB4MDIK PiArI2RlZmluZSBBT1VUXzE2QklUICAgICAgICAgICAgICAgICAgICAgMHgwMwo+ICsjZGVmaW5l IEhJR0hfQklUX1JBVEVfUEFDS0VUX0FMSUdOICAgICAoMHgzIDw8IDYpCj4gKyNkZWZpbmUgR1JM X1NISUZUX0wxICAgICAgICAgICAweDFDMAo+ICsjZGVmaW5lIEdSTF9TSElGVF9SMiAgICAgICAg ICAgMHgxQjAKPiArI2RlZmluZSBBVURJT19QQUNLRVRfT0ZGICAgICAgICAgICAgICAgQklUKDYp Cj4gKyNkZWZpbmUgR1JMX0NGRzAgICAgICAgICAgICAgICAweDI0Cj4gKyNkZWZpbmUgQ0ZHMF9J MlNfTU9ERV9SVEogICAgICAgICAgICAgIDB4MQo+ICsjZGVmaW5lIENGRzBfSTJTX01PREVfTFRK ICAgICAgICAgICAgICAweDAKPiArI2RlZmluZSBDRkcwX0kyU19NT0RFX0kyUyAgICAgICAgICAg ICAgMHgyCj4gKyNkZWZpbmUgQ0ZHMF9JMlNfTU9ERV8yNEJJVCAgICAgICAgICAgIDB4MDAKPiAr I2RlZmluZSBDRkcwX0kyU19NT0RFXzE2QklUICAgICAgICAgICAgMHgxMAo+ICsjZGVmaW5lIEdS TF9DRkcxICAgICAgICAgICAgICAgMHgyOAo+ICsjZGVmaW5lIENGRzFfRURHX1NFTCAgICAgICAg ICAgICAgICAgICBCSVQoMCkKPiArI2RlZmluZSBDRkcxX1NQRElGICAgICAgICAgICAgICAgICAg ICAgQklUKDEpCj4gKyNkZWZpbmUgQ0ZHMV9EVkkgICAgICAgICAgICAgICAgICAgICAgIEJJVCgy KQo+ICsjZGVmaW5lIENGRzFfSERDUF9ERUJVRyAgICAgICAgICAgICAgICAgICAgICAgIEJJVCgz KQo+ICsjZGVmaW5lIEdSTF9DRkcyICAgICAgICAgICAgICAgMHgyYwo+ICsjZGVmaW5lIENGRzJf Tk9USUNFX0VOICAgICAgICAgICAgICAgICBCSVQoNikKPiArI2RlZmluZSBNSExfREVfU0VMICAg ICAgICAgICAgICAgICAgICAgQklUKDMpCj4gKyNkZWZpbmUgR1JMX0NGRzMgICAgICAgICAgICAg ICAweDMwCj4gKyNkZWZpbmUgQ0ZHM19BRVNfS0VZX0lOREVYX01BU0sgICAgICAgICAgICAgICAg MHgzZgo+ICsjZGVmaW5lIENGRzNfQ09OVFJPTF9QQUNLRVRfREVMQVkgICAgICBCSVQoNikKPiAr I2RlZmluZSBDRkczX0tTVl9MT0FEX1NUQVJUICAgICAgICAgICAgQklUKDcpCj4gKyNkZWZpbmUg R1JMX0NGRzQgICAgICAgICAgICAgICAweDM0Cj4gKyNkZWZpbmUgQ0ZHNF9BRVNfS0VZX0xPQUQg ICAgICAgICAgICAgIEJJVCg0KQo+ICsjZGVmaW5lIENGRzRfQVZfVU5NVVRFX0VOICAgICAgICAg ICAgICBCSVQoNSkKPiArI2RlZmluZSBDRkc0X0FWX1VOTVVURV9TRVQgICAgICAgICAgICAgQklU KDYpCj4gKyNkZWZpbmUgQ0ZHX01ITF9NT0RFICAgICAgICAgICAgICAgICAgIEJJVCg3KQo+ICsj ZGVmaW5lIEdSTF9DRkc1ICAgICAgICAgICAgICAgMHgzOAo+ICsjZGVmaW5lIENGRzVfQ0RfUkFU SU9fTUFTSyAgICAgMHg4Rgo+ICsjZGVmaW5lIENGRzVfRlMxMjggICAgICAgICAgICAgICAgICAg ICAoMHgxIDw8IDQpCj4gKyNkZWZpbmUgQ0ZHNV9GUzI1NiAgICAgICAgICAgICAgICAgICAgICgw eDIgPDwgNCkKPiArI2RlZmluZSBDRkc1X0ZTMzg0ICAgICAgICAgICAgICAgICAgICAgKDB4MyA8 PCA0KQo+ICsjZGVmaW5lIENGRzVfRlM1MTIgICAgICAgICAgICAgICAgICAgICAoMHg0IDw8IDQp Cj4gKyNkZWZpbmUgQ0ZHNV9GUzc2OCAgICAgICAgICAgICAgICAgICAgICgweDYgPDwgNCkKPiAr I2RlZmluZSBEVU1NWV8zMDQgICAgICAgICAgICAgIDB4MzA0Cj4gKyNkZWZpbmUgQ0hNT19TRUwg ICAgICAgICAgICAgICAgICAgICAgICgweDMgPDwgMikKPiArI2RlZmluZSBDSE0xX1NFTCAgICAg ICAgICAgICAgICAgICAgICAgKDB4MyA8PCA0KQo+ICsjZGVmaW5lIENITTJfU0VMICAgICAgICAg ICAgICAgICAgICAgICAoMHgzIDw8IDYpCj4gKyNkZWZpbmUgQVVESU9fSTJTX05DVFNfU0VMICAg ICAgICAgICAgIEJJVCgxKQo+ICsjZGVmaW5lIEFVRElPX0kyU19OQ1RTX1NFTF82NCAgICAgICAg ICAoMSA8PCAxKQo+ICsjZGVmaW5lIEFVRElPX0kyU19OQ1RTX1NFTF8xMjggICAgICAgICAoMCA8 PCAxKQo+ICsjZGVmaW5lIE5FV19HQ1BfQ1RSTCAgICAgICAgICAgICAgICAgICBCSVQoMCkKPiAr I2RlZmluZSBORVdfR0NQX0NUUkxfTUVSR0UgICAgICAgICAgICAgQklUKDApCj4gKyNkZWZpbmUg R1JMX0xfU1RBVFVTXzAgICAgICAgICAweDIwMAo+ICsjZGVmaW5lIEdSTF9MX1NUQVRVU18xICAg ICAgICAgMHgyMDQKPiArI2RlZmluZSBHUkxfTF9TVEFUVVNfMiAgICAgICAgIDB4MjA4Cj4gKyNk ZWZpbmUgR1JMX0xfU1RBVFVTXzMgICAgICAgICAweDIwYwo+ICsjZGVmaW5lIEdSTF9MX1NUQVRV U180ICAgICAgICAgMHgyMTAKPiArI2RlZmluZSBHUkxfTF9TVEFUVVNfNSAgICAgICAgIDB4MjE0 Cj4gKyNkZWZpbmUgR1JMX0xfU1RBVFVTXzYgICAgICAgICAweDIxOAo+ICsjZGVmaW5lIEdSTF9M X1NUQVRVU183ICAgICAgICAgMHgyMWMKPiArI2RlZmluZSBHUkxfTF9TVEFUVVNfOCAgICAgICAg IDB4MjIwCj4gKyNkZWZpbmUgR1JMX0xfU1RBVFVTXzkgICAgICAgICAweDIyNAo+ICsjZGVmaW5l IEdSTF9MX1NUQVRVU18xMCAgICAgICAgICAgICAgICAweDIyOAo+ICsjZGVmaW5lIEdSTF9MX1NU QVRVU18xMSAgICAgICAgICAgICAgICAweDIyYwo+ICsjZGVmaW5lIEdSTF9MX1NUQVRVU18xMiAg ICAgICAgICAgICAgICAweDIzMAo+ICsjZGVmaW5lIEdSTF9MX1NUQVRVU18xMyAgICAgICAgICAg ICAgICAweDIzNAo+ICsjZGVmaW5lIEdSTF9MX1NUQVRVU18xNCAgICAgICAgICAgICAgICAweDIz OAo+ICsjZGVmaW5lIEdSTF9MX1NUQVRVU18xNSAgICAgICAgICAgICAgICAweDIzYwo+ICsjZGVm aW5lIEdSTF9MX1NUQVRVU18xNiAgICAgICAgICAgICAgICAweDI0MAo+ICsjZGVmaW5lIEdSTF9M X1NUQVRVU18xNyAgICAgICAgICAgICAgICAweDI0NAo+ICsjZGVmaW5lIEdSTF9MX1NUQVRVU18x OCAgICAgICAgICAgICAgICAweDI0OAo+ICsjZGVmaW5lIEdSTF9MX1NUQVRVU18xOSAgICAgICAg ICAgICAgICAweDI0Ywo+ICsjZGVmaW5lIEdSTF9MX1NUQVRVU18yMCAgICAgICAgICAgICAgICAw eDI1MAo+ICsjZGVmaW5lIEdSTF9MX1NUQVRVU18yMSAgICAgICAgICAgICAgICAweDI1NAo+ICsj ZGVmaW5lIEdSTF9MX1NUQVRVU18yMiAgICAgICAgICAgICAgICAweDI1OAo+ICsjZGVmaW5lIEdS TF9MX1NUQVRVU18yMyAgICAgICAgICAgICAgICAweDI1Ywo+ICsjZGVmaW5lIEdSTF9SX1NUQVRV U18wICAgICAgICAgMHgyNjAKPiArI2RlZmluZSBHUkxfUl9TVEFUVVNfMSAgICAgICAgIDB4MjY0 Cj4gKyNkZWZpbmUgR1JMX1JfU1RBVFVTXzIgICAgICAgICAweDI2OAo+ICsjZGVmaW5lIEdSTF9S X1NUQVRVU18zICAgICAgICAgMHgyNmMKPiArI2RlZmluZSBHUkxfUl9TVEFUVVNfNCAgICAgICAg IDB4MjcwCj4gKyNkZWZpbmUgR1JMX1JfU1RBVFVTXzUgICAgICAgICAweDI3NAo+ICsjZGVmaW5l IEdSTF9SX1NUQVRVU182ICAgICAgICAgMHgyNzgKPiArI2RlZmluZSBHUkxfUl9TVEFUVVNfNyAg ICAgICAgIDB4MjdjCj4gKyNkZWZpbmUgR1JMX1JfU1RBVFVTXzggICAgICAgICAweDI4MAo+ICsj ZGVmaW5lIEdSTF9SX1NUQVRVU185ICAgICAgICAgMHgyODQKPiArI2RlZmluZSBHUkxfUl9TVEFU VVNfMTAgICAgICAgICAgICAgICAgMHgyODgKPiArI2RlZmluZSBHUkxfUl9TVEFUVVNfMTEgICAg ICAgICAgICAgICAgMHgyOGMKPiArI2RlZmluZSBHUkxfUl9TVEFUVVNfMTIgICAgICAgICAgICAg ICAgMHgyOTAKPiArI2RlZmluZSBHUkxfUl9TVEFUVVNfMTMgICAgICAgICAgICAgICAgMHgyOTQK PiArI2RlZmluZSBHUkxfUl9TVEFUVVNfMTQgICAgICAgICAgICAgICAgMHgyOTgKPiArI2RlZmlu ZSBHUkxfUl9TVEFUVVNfMTUgICAgICAgICAgICAgICAgMHgyOWMKPiArI2RlZmluZSBHUkxfUl9T VEFUVVNfMTYgICAgICAgICAgICAgICAgMHgyYTAKPiArI2RlZmluZSBHUkxfUl9TVEFUVVNfMTcg ICAgICAgICAgICAgICAgMHgyYTQKPiArI2RlZmluZSBHUkxfUl9TVEFUVVNfMTggICAgICAgICAg ICAgICAgMHgyYTgKPiArI2RlZmluZSBHUkxfUl9TVEFUVVNfMTkgICAgICAgICAgICAgICAgMHgy YWMKPiArI2RlZmluZSBHUkxfUl9TVEFUVVNfMjAgICAgICAgICAgICAgICAgMHgyYjAKPiArI2Rl ZmluZSBHUkxfUl9TVEFUVVNfMjEgICAgICAgICAgICAgICAgMHgyYjQKPiArI2RlZmluZSBHUkxf Ul9TVEFUVVNfMjIgICAgICAgICAgICAgICAgMHgyYjgKPiArI2RlZmluZSBHUkxfUl9TVEFUVVNf MjMgICAgICAgICAgICAgICAgMHgyYmMKPiArI2RlZmluZSBHUkxfQUJJU1RfQ1RSTDAgICAgICAg ICAgICAgICAgMHgyRDQKPiArI2RlZmluZSBHUkxfQUJJU1RfQ1RSTDEgICAgICAgICAgICAgICAg MHgyRDgKPiArI2RlZmluZSBBQklTVF9FTiAgICAgICAgICAgICAgICAgICAgICAgQklUKDcpCj4g KyNkZWZpbmUgQUJJU1RfREFUQV9GTVQgICAgICAgICAgICAgICAgICgweDcgPDwgMCkKPiArI2Rl ZmluZSBWSURFT19DRkdfMCAgICAgICAgICAgIDB4MzgwCj4gKyNkZWZpbmUgVklERU9fQ0ZHXzEg ICAgICAgICAgICAweDM4NAo+ICsjZGVmaW5lIFZJREVPX0NGR18yICAgICAgICAgICAgMHgzODgK PiArI2RlZmluZSBWSURFT19DRkdfMyAgICAgICAgICAgIDB4MzhjCj4gKyNkZWZpbmUgVklERU9f Q0ZHXzQgICAgICAgICAgICAweDM5MAo+ICsjZGVmaW5lIFZJREVPX1NPVVJDRV9TRUwgICAgICAg ICAgICAgICBCSVQoNykKPiArI2RlZmluZSBOT1JNQUxfUEFUSCAgICAgICAgICAgICAgICAgICAg KDEgPDwgNykKPiArI2RlZmluZSBHRU5fUkdCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoMCA8PCA3KQo+ICsKPiArI2RlZmluZSBIRE1JX1NZU19DRkcxQyAgICAgICAgIDB4MDAwCj4g KyNkZWZpbmUgSERNSV9PTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQklUKDApCj4g KyNkZWZpbmUgSERNSV9SU1QgICAgICAgICAgICAgICAgICAgICAgIEJJVCgxKQo+ICsjZGVmaW5l IEFOTEdfT04gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJJVCgyKQo+ICsjZGVmaW5l IENGRzEwX0RWSSAgICAgICAgICAgICAgICAgICAgICBCSVQoMykKPiArI2RlZmluZSBIRE1JX1RT VCAgICAgICAgICAgICAgICAgICAgICAgQklUKDMpCj4gKyNkZWZpbmUgU1lTX0tFWU1BU0sxICAg ICAgICAgICAgICAgICAgICgweGZmIDw8IDgpCj4gKyNkZWZpbmUgU1lTX0tFWU1BU0syICAgICAg ICAgICAgICAgICAgICgweGZmIDw8IDE2KQo+ICsjZGVmaW5lIEFVRF9PVVRTWU5DX0VOICAgICAg ICAgICAgICAgICBCSVQoMjQpCj4gKyNkZWZpbmUgQVVEX09VVFNZTkNfUFJFX0VOICAgICAgICAg ICAgIEJJVCgyNSkKPiArI2RlZmluZSBJMkNNX09OICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBCSVQoMjYpCj4gKyNkZWZpbmUgRTJQUk9NX1RZUEVfOEJJVCAgICAgICAgICAgICAgIEJJ VCgyNykKPiArI2RlZmluZSBNQ01fRTJQUk9NX09OICAgICAgICAgICAgICAgICAgQklUKDI4KQo+ ICsjZGVmaW5lIEVYVF9FMlBST01fT04gICAgICAgICAgICAgICAgICBCSVQoMjkpCj4gKyNkZWZp bmUgSFRQTEdfUElOX1NFTF9PRkYgICAgICAgICAgICAgIEJJVCgzMCkKPiArI2RlZmluZSBBRVNf RUZVU0VfRU5BQkxFICAgICAgICAgICAgICAgQklUKDMxKQo+ICsjZGVmaW5lIEhETUlfU1lTX0NG RzIwICAgICAgICAgMHgwMDQKPiArI2RlZmluZSBERUVQX0NPTE9SX01PREVfTUFTSyAgICAgICAg ICAgKDMgPDwgMSkKPiArI2RlZmluZSBDT0xPUl84QklUX01PREUgICAgICAgICAgICAgICAgICAg ICAgICAoMCA8PCAxKQo+ICsjZGVmaW5lIENPTE9SXzEwQklUX01PREUgICAgICAgICAgICAgICAo MSA8PCAxKQo+ICsjZGVmaW5lIENPTE9SXzEyQklUX01PREUgICAgICAgICAgICAgICAoMiA8PCAx KQo+ICsjZGVmaW5lIENPTE9SXzE2QklUX01PREUgICAgICAgICAgICAgICAoMyA8PCAxKQo+ICsj ZGVmaW5lIERFRVBfQ09MT1JfRU4gICAgICAgICAgICAgICAgICBCSVQoMCkKPiArI2RlZmluZSBI RE1JX0FVRElPX1RFU1RfU0VMICAgICAgICAgICAgQklUKDgpCj4gKyNkZWZpbmUgSERNSTJQMF9F TiAgICAgICAgICAgICAgICAgICAgIEJJVCgxMSkKPiArI2RlZmluZSBIRE1JX09VVF9GSUZPX0VO ICAgICAgICAgICAgICAgQklUKDE2KQo+ICsjZGVmaW5lIEhETUlfT1VUX0ZJRk9fQ0xLX0lOViAg ICAgICAgICBCSVQoMTcpCj4gKyNkZWZpbmUgTUhMX01PREVfT04gICAgICAgICAgICAgICAgICAg IEJJVCgyOCkKPiArI2RlZmluZSBNSExfUFBfTU9ERSAgICAgICAgICAgICAgICAgICAgQklUKDI5 KQo+ICsjZGVmaW5lIE1ITF9TWU5DX0FVVE9fRU4gICAgICAgICAgICAgICBCSVQoMzApCj4gKyNk ZWZpbmUgSERNSV9QQ0xLX0ZSRUVfUlVOICAgICAgICAgICAgIEJJVCgzMSkKPiArCj4gKyNlbmRp Zgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX210ODE3M19oZG1p X3BoeS5jIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19tdDgxNzNfaGRtaV9waHkuYwo+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNWQ5ZjA3Zgo+IC0tLSAvZGV2 L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX210ODE3M19oZG1pX3Bo eS5jCj4gQEAgLTAsMCArMSw1MDUgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IChjKSAyMDE0IE1l ZGlhVGVrIEluYy4KPiArICogQXV0aG9yOiBKaWUgUWl1IDxqaWUucWl1QG1lZGlhdGVrLmNvbT4K PiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPiArICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKPiArICogcHVibGlzaGVkIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgo+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCj4gKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+ICsjaW5jbHVk ZSA8bGludXgvY2xrLXByb3ZpZGVyLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgo+ICsj aW5jbHVkZSA8bGludXgvaW8uaD4KPiArI2luY2x1ZGUgPGxpbnV4L21mZC9zeXNjb24uaD4KPiAr I2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvcGh5L3BoeS5oPgo+ ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC90 eXBlcy5oPgo+ICsKPiArI2RlZmluZSBIRE1JX0NPTjAgICAgICAgICAgICAgIDB4MDAKPiArI2Rl ZmluZSBSR19IRE1JVFhfUExMX0VOICAgICAgICAgICAgICAgQklUKDMxKQo+ICsjZGVmaW5lIFJH X0hETUlUWF9QTExfRkJLRElWICAgICAgICAgICAoMHg3ZiA8PCAyNCkKPiArI2RlZmluZSBQTExf RkJLRElWX1NISUZUICAgICAgICAgICAgICAgMjQKPiArI2RlZmluZSBSR19IRE1JVFhfUExMX0ZC S1NFTCAgICAgICAgICAgKDB4MyA8PCAyMikKPiArI2RlZmluZSBQTExfRkJLU0VMX1NISUZUICAg ICAgICAgICAgICAgMjIKPiArI2RlZmluZSBSR19IRE1JVFhfUExMX1BSRURJViAgICAgICAgICAg KDB4MyA8PCAyMCkKPiArI2RlZmluZSBQUkVESVZfU0hJRlQgICAgICAgICAgICAgICAgICAgMjAK PiArI2RlZmluZSBSR19IRE1JVFhfUExMX1BPU0RJViAgICAgICAgICAgKDB4MyA8PCAxOCkKPiAr I2RlZmluZSBQT1NESVZfU0hJRlQgICAgICAgICAgICAgICAgICAgMTgKPiArI2RlZmluZSBSR19I RE1JVFhfUExMX1JTVF9ETFkgICAgICAgICAgKDB4MyA8PCAxNikKPiArI2RlZmluZSBSR19IRE1J VFhfUExMX0lSICAgICAgICAgICAgICAgKDB4ZiA8PCAxMikKPiArI2RlZmluZSBQTExfSVJfU0hJ RlQgICAgICAgICAgICAgICAgICAgMTIKPiArI2RlZmluZSBSR19IRE1JVFhfUExMX0lDICAgICAg ICAgICAgICAgKDB4ZiA8PCA4KQo+ICsjZGVmaW5lIFBMTF9JQ19TSElGVCAgICAgICAgICAgICAg ICAgICA4Cj4gKyNkZWZpbmUgUkdfSERNSVRYX1BMTF9CUCAgICAgICAgICAgICAgICgweGYgPDwg NCkKPiArI2RlZmluZSBQTExfQlBfU0hJRlQgICAgICAgICAgICAgICAgICAgNAo+ICsjZGVmaW5l IFJHX0hETUlUWF9QTExfQlIgICAgICAgICAgICAgICAoMHgzIDw8IDIpCj4gKyNkZWZpbmUgUExM X0JSX1NISUZUICAgICAgICAgICAgICAgICAgIDIKPiArI2RlZmluZSBSR19IRE1JVFhfUExMX0JD ICAgICAgICAgICAgICAgKDB4MyA8PCAwKQo+ICsjZGVmaW5lIFBMTF9CQ19TSElGVCAgICAgICAg ICAgICAgICAgICAwCj4gKyNkZWZpbmUgSERNSV9DT04xICAgICAgICAgICAgICAweDA0Cj4gKyNk ZWZpbmUgUkdfSERNSVRYX1BMTF9ESVZFTiAgICAgICAgICAgICgweDcgPDwgMjkpCj4gKyNkZWZp bmUgUExMX0RJVkVOX1NISUZUICAgICAgICAgICAgICAgICAgICAgICAgMjkKPiArI2RlZmluZSBS R19IRE1JVFhfUExMX0FVVE9LX0VOICAgICAgICAgQklUKDI4KQo+ICsjZGVmaW5lIFJHX0hETUlU WF9QTExfQVVUT0tfS0YgICAgICAgICAoMHgzIDw8IDI2KQo+ICsjZGVmaW5lIFJHX0hETUlUWF9Q TExfQVVUT0tfS1MgICAgICAgICAoMHgzIDw8IDI0KQo+ICsjZGVmaW5lIFJHX0hETUlUWF9QTExf QVVUT0tfTE9BRCAgICAgICBCSVQoMjMpCj4gKyNkZWZpbmUgUkdfSERNSVRYX1BMTF9CQU5EICAg ICAgICAgICAgICgweDNmIDw8IDE2KQo+ICsjZGVmaW5lIFJHX0hETUlUWF9QTExfUkVGX1NFTCAg ICAgICAgICBCSVQoMTUpCj4gKyNkZWZpbmUgUkdfSERNSVRYX1BMTF9CSUFTX0VOICAgICAgICAg IEJJVCgxNCkKPiArI2RlZmluZSBSR19IRE1JVFhfUExMX0JJQVNfTFBGX0VOICAgICAgQklUKDEz KQo+ICsjZGVmaW5lIFJHX0hETUlUWF9QTExfVFhESVZfRU4gICAgICAgICBCSVQoMTIpCj4gKyNk ZWZpbmUgUkdfSERNSVRYX1BMTF9UWERJViAgICAgICAgICAgICgweDMgPDwgMTApCj4gKyNkZWZp bmUgUExMX1RYRElWX1NISUZUICAgICAgICAgICAgICAgICAgICAgICAgMTAKPiArI2RlZmluZSBS R19IRE1JVFhfUExMX0xWUk9EX0VOICAgICAgICAgQklUKDkpCj4gKyNkZWZpbmUgUkdfSERNSVRY X1BMTF9NT05WQ19FTiAgICAgICAgIEJJVCg4KQo+ICsjZGVmaW5lIFJHX0hETUlUWF9QTExfTU9O Q0tfRU4gICAgICAgICBCSVQoNykKPiArI2RlZmluZSBSR19IRE1JVFhfUExMX01PTlJFRl9FTiAg ICAgICAgICAgICAgICBCSVQoNikKPiArI2RlZmluZSBSR19IRE1JVFhfUExMX1RTVF9FTiAgICAg ICAgICAgQklUKDUpCj4gKyNkZWZpbmUgUkdfSERNSVRYX1BMTF9UU1RfQ0tfRU4gICAgICAgICAg ICAgICAgQklUKDQpCj4gKyNkZWZpbmUgUkdfSERNSVRYX1BMTF9UU1RfU0VMICAgICAgICAgICgw eGYgPDwgMCkKPiArI2RlZmluZSBIRE1JX0NPTjIgICAgICAgICAgICAgIDB4MDgKPiArI2RlZmlu ZSBSR1NfSERNSVRYX1BMTF9BVVRPS19CQU5EICAgICAgKDB4N2YgPDwgOCkKPiArI2RlZmluZSBS R1NfSERNSVRYX1BMTF9BVVRPS19GQUlMICAgICAgQklUKDEpCj4gKyNkZWZpbmUgUkdfSERNSVRY X0VOX1RYX0NLTERPICAgICAgICAgIEJJVCgwKQo+ICsjZGVmaW5lIEhETUlfQ09OMyAgICAgICAg ICAgICAgMHgwYwo+ICsjZGVmaW5lIFJHX0hETUlUWF9TRVJfRU4gICAgICAgICAgICAgICAoMHhm IDw8IDI4KQo+ICsjZGVmaW5lIFJHX0hETUlUWF9QUkRfRU4gICAgICAgICAgICAgICAoMHhmIDw8 IDI0KQo+ICsjZGVmaW5lIFJHX0hETUlUWF9QUkRfSU1QX0VOICAgICAgICAgICAoMHhmIDw8IDIw KQo+ICsjZGVmaW5lIFJHX0hETUlUWF9EUlZfRU4gICAgICAgICAgICAgICAoMHhmIDw8IDE2KQo+ ICsjZGVmaW5lIFJHX0hETUlUWF9EUlZfSU1QX0VOICAgICAgICAgICAoMHhmIDw8IDEyKQo+ICsj ZGVmaW5lIERSVl9JTVBfRU5fU0hJRlQgICAgICAgICAgICAgICAxMgo+ICsjZGVmaW5lIFJHX0hE TUlUWF9NSExDS19GT1JDRSAgICAgICAgICBCSVQoMTApCj4gKyNkZWZpbmUgUkdfSERNSVRYX01I TENLX1BQSVhfRU4gICAgICAgICAgICAgICAgQklUKDkpCj4gKyNkZWZpbmUgUkdfSERNSVRYX01I TENLX0VOICAgICAgICAgICAgIEJJVCg4KQo+ICsjZGVmaW5lIFJHX0hETUlUWF9TRVJfRElOX1NF TCAgICAgICAgICAoMHhmIDw8IDQpCj4gKyNkZWZpbmUgUkdfSERNSVRYX1NFUl81VDFfQklTVF9F TiAgICAgIEJJVCgzKQo+ICsjZGVmaW5lIFJHX0hETUlUWF9TRVJfQklTVF9UT0cgICAgICAgICBC SVQoMikKPiArI2RlZmluZSBSR19IRE1JVFhfU0VSX0RJTl9UT0cgICAgICAgICAgQklUKDEpCj4g KyNkZWZpbmUgUkdfSERNSVRYX1NFUl9DTEtESUdfSU5WICAgICAgIEJJVCgwKQo+ICsjZGVmaW5l IEhETUlfQ09ONCAgICAgICAgICAgICAgMHgxMAo+ICsjZGVmaW5lIFJHX0hETUlUWF9QUkRfSUJJ QVNfQ0xLICAgICAgICAgICAgICAgICgweGYgPDwgMjQpCj4gKyNkZWZpbmUgUkdfSERNSVRYX1BS RF9JQklBU19EMiAgICAgICAgICgweGYgPDwgMTYpCj4gKyNkZWZpbmUgUkdfSERNSVRYX1BSRF9J QklBU19EMSAgICAgICAgICgweGYgPDwgOCkKPiArI2RlZmluZSBSR19IRE1JVFhfUFJEX0lCSUFT X0QwICAgICAgICAgKDB4ZiA8PCAwKQo+ICsjZGVmaW5lIFBSRF9JQklBU19DTEtfU0hJRlQgICAg ICAgICAgICAyNAo+ICsjZGVmaW5lIFBSRF9JQklBU19EMl9TSElGVCAgICAgICAgICAgICAxNgo+ ICsjZGVmaW5lIFBSRF9JQklBU19EMV9TSElGVCAgICAgICAgICAgICA4Cj4gKyNkZWZpbmUgUFJE X0lCSUFTX0QwX1NISUZUICAgICAgICAgICAgIDAKPiArI2RlZmluZSBIRE1JX0NPTjUgICAgICAg ICAgICAgIDB4MTQKPiArI2RlZmluZSBSR19IRE1JVFhfRFJWX0lCSUFTX0NMSyAgICAgICAgICAg ICAgICAoMHgzZiA8PCAyNCkKPiArI2RlZmluZSBSR19IRE1JVFhfRFJWX0lCSUFTX0QyICAgICAg ICAgKDB4M2YgPDwgMTYpCj4gKyNkZWZpbmUgUkdfSERNSVRYX0RSVl9JQklBU19EMSAgICAgICAg ICgweDNmIDw8IDgpCj4gKyNkZWZpbmUgUkdfSERNSVRYX0RSVl9JQklBU19EMCAgICAgICAgICgw eDNmIDw8IDApCj4gKyNkZWZpbmUgRFJWX0lCSUFTX0NMS19TSElGVCAgICAgICAgICAgIDI0Cj4g KyNkZWZpbmUgRFJWX0lCSUFTX0QyX1NISUZUICAgICAgICAgICAgIDE2Cj4gKyNkZWZpbmUgRFJW X0lCSUFTX0QxX1NISUZUICAgICAgICAgICAgIDgKPiArI2RlZmluZSBEUlZfSUJJQVNfRDBfU0hJ RlQgICAgICAgICAgICAgMAo+ICsjZGVmaW5lIEhETUlfQ09ONiAgICAgICAgICAgICAgMHgxOAo+ ICsjZGVmaW5lIFJHX0hETUlUWF9EUlZfSU1QX0NMSyAgICAgICAgICAoMHgzZiA8PCAyNCkKPiAr I2RlZmluZSBSR19IRE1JVFhfRFJWX0lNUF9EMiAgICAgICAgICAgKDB4M2YgPDwgMTYpCj4gKyNk ZWZpbmUgUkdfSERNSVRYX0RSVl9JTVBfRDEgICAgICAgICAgICgweDNmIDw8IDgpCj4gKyNkZWZp bmUgUkdfSERNSVRYX0RSVl9JTVBfRDAgICAgICAgICAgICgweDNmIDw8IDApCj4gKyNkZWZpbmUg RFJWX0lNUF9DTEtfU0hJRlQgICAgICAgICAgICAgIDI0Cj4gKyNkZWZpbmUgRFJWX0lNUF9EMl9T SElGVCAgICAgICAgICAgICAgIDE2Cj4gKyNkZWZpbmUgRFJWX0lNUF9EMV9TSElGVCAgICAgICAg ICAgICAgIDgKPiArI2RlZmluZSBEUlZfSU1QX0QwX1NISUZUICAgICAgICAgICAgICAgMAo+ICsj ZGVmaW5lIEhETUlfQ09ONyAgICAgICAgICAgICAgMHgxYwo+ICsjZGVmaW5lIFJHX0hETUlUWF9N SExDS19EUlZfSUJJQVMgICAgICAoMHgxZiA8PCAyNykKPiArI2RlZmluZSBSR19IRE1JVFhfU0VS X0RJTiAgICAgICAgICAgICAgKDB4M2ZmIDw8IDE2KQo+ICsjZGVmaW5lIFJHX0hETUlUWF9DSExE Q19UU1QgICAgICAgICAgICAoMHhmIDw8IDEyKQo+ICsjZGVmaW5lIFJHX0hETUlUWF9DSExDS19U U1QgICAgICAgICAgICAoMHhmIDw8IDgpCj4gKyNkZWZpbmUgUkdfSERNSVRYX1JFU0VSVkUgICAg ICAgICAgICAgICgweGZmIDw8IDApCj4gKyNkZWZpbmUgSERNSV9DT044ICAgICAgICAgICAgICAw eDIwCj4gKyNkZWZpbmUgUkdTX0hETUlUWF8yVDFfTEVWICAgICAgICAgICAgICgweGYgPDwgMTYp Cj4gKyNkZWZpbmUgUkdTX0hETUlUWF8yVDFfRURHICAgICAgICAgICAgICgweGYgPDwgMTIpCj4g KyNkZWZpbmUgUkdTX0hETUlUWF81VDFfTEVWICAgICAgICAgICAgICgweGYgPDwgOCkKPiArI2Rl ZmluZSBSR1NfSERNSVRYXzVUMV9FREcgICAgICAgICAgICAgKDB4ZiA8PCA0KQo+ICsjZGVmaW5l IFJHU19IRE1JVFhfUExVR19UU1QgICAgICAgICAgICBCSVQoMCkKPiArCj4gK3N0cnVjdCBtdGtf aGRtaV9waHkgewo+ICsgICAgICAgdm9pZCBfX2lvbWVtICpyZWdzOwo+ICsgICAgICAgc3RydWN0 IGRldmljZSAqZGV2Owo+ICsgICAgICAgc3RydWN0IGNsayAqcGxsOwo+ICsgICAgICAgc3RydWN0 IGNsa19odyBwbGxfaHc7Cj4gKyAgICAgICB1bnNpZ25lZCBsb25nIHBsbF9yYXRlOwo+ICsgICAg ICAgdTggZHJ2X2ltcF9jbGs7Cj4gKyAgICAgICB1OCBkcnZfaW1wX2QyOwo+ICsgICAgICAgdTgg ZHJ2X2ltcF9kMTsKPiArICAgICAgIHU4IGRydl9pbXBfZDA7Cj4gKyAgICAgICB1MzIgaWJpYXM7 Cj4gKyAgICAgICB1MzIgaWJpYXNfdXA7Cj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3QgdTggUFJF RElWWzNdWzRdID0gewo+ICsgICAgICAgezB4MCwgMHgwLCAweDAsIDB4MH0sICAgLyogMjdNaHog Ki8KPiArICAgICAgIHsweDEsIDB4MSwgMHgxLCAweDF9LCAgIC8qIDc0TWh6ICovCj4gKyAgICAg ICB7MHgxLCAweDEsIDB4MSwgMHgxfSAgICAvKiAxNDhNaHogKi8KPiArfTsKPiArCj4gK3N0YXRp YyBjb25zdCB1OCBUWERJVlszXVs0XSA9IHsKPiArICAgICAgIHsweDMsIDB4MywgMHgzLCAweDJ9 LCAgIC8qIDI3TWh6ICovCj4gKyAgICAgICB7MHgyLCAweDEsIDB4MSwgMHgxfSwgICAvKiA3NE1o eiAqLwo+ICsgICAgICAgezB4MSwgMHgwLCAweDAsIDB4MH0gICAgLyogMTQ4TWh6ICovCj4gK307 Cj4gKwo+ICtzdGF0aWMgY29uc3QgdTggRkJLU0VMWzNdWzRdID0gewo+ICsgICAgICAgezB4MSwg MHgxLCAweDEsIDB4MX0sICAgLyogMjdNaHogKi8KPiArICAgICAgIHsweDEsIDB4MCwgMHgxLCAw eDF9LCAgIC8qIDc0TWh6ICovCj4gKyAgICAgICB7MHgxLCAweDAsIDB4MSwgMHgxfSAgICAvKiAx NDhNaHogKi8KPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCB1OCBGQktESVZbM11bNF0gPSB7Cj4g KyAgICAgICB7MTksIDI0LCAyOSwgMTl9LCAgICAgICAvKiAyN01oeiAqLwo+ICsgICAgICAgezE5 LCAyNCwgMTQsIDE5fSwgICAgICAgLyogNzRNaHogKi8KPiArICAgICAgIHsxOSwgMjQsIDE0LCAx OX0gICAgICAgIC8qIDE0OE1oeiAqLwo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHU4IERJVkVO WzNdWzRdID0gewo+ICsgICAgICAgezB4MiwgMHgxLCAweDEsIDB4Mn0sICAgLyogMjdNaHogKi8K PiArICAgICAgIHsweDIsIDB4MiwgMHgyLCAweDJ9LCAgIC8qIDc0TWh6ICovCj4gKyAgICAgICB7 MHgyLCAweDIsIDB4MiwgMHgyfSAgICAvKiAxNDhNaHogKi8KPiArfTsKPiArCj4gK3N0YXRpYyBj b25zdCB1OCBIVFBMTEJQWzNdWzRdID0gewo+ICsgICAgICAgezB4YywgMHhjLCAweDgsIDB4Y30s ICAgLyogMjdNaHogKi8KPiArICAgICAgIHsweGMsIDB4ZiwgMHhmLCAweGN9LCAgIC8qIDc0TWh6 ICovCj4gKyAgICAgICB7MHhjLCAweGYsIDB4ZiwgMHhjfSAgICAvKiAxNDhNaHogKi8KPiArfTsK PiArCj4gK3N0YXRpYyBjb25zdCB1OCBIVFBMTEJDWzNdWzRdID0gewo+ICsgICAgICAgezB4Miwg MHgzLCAweDMsIDB4Mn0sICAgLyogMjdNaHogKi8KPiArICAgICAgIHsweDIsIDB4MywgMHgzLCAw eDJ9LCAgIC8qIDc0TWh6ICovCj4gKyAgICAgICB7MHgyLCAweDMsIDB4MywgMHgyfSAgICAvKiAx NDhNaHogKi8KPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCB1OCBIVFBMTEJSWzNdWzRdID0gewo+ ICsgICAgICAgezB4MSwgMHgxLCAweDAsIDB4MX0sICAgLyogMjdNaHogKi8KPiArICAgICAgIHsw eDEsIDB4MiwgMHgyLCAweDF9LCAgIC8qIDc0TWh6ICovCj4gKyAgICAgICB7MHgxLCAweDIsIDB4 MiwgMHgxfSAgICAvKiAxNDhNaHogKi8KPiArfTsKPiArCj4gK3N0YXRpYyB2b2lkIG10a19oZG1p X3BoeV9tYXNrKHN0cnVjdCBtdGtfaGRtaV9waHkgKmhkbWlfcGh5LCB1MzIgb2Zmc2V0LAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiB2YWwsIHUzMiBtYXNrKQo+ICt7Cj4gKyAg ICAgICB1MzIgdG1wID0gcmVhZGwoaGRtaV9waHktPnJlZ3MgICsgb2Zmc2V0KSAmIH5tYXNrOwo+ ICsKPiArICAgICAgIHRtcCB8PSAodmFsICYgbWFzayk7Cj4gKyAgICAgICB3cml0ZWwodG1wLCBo ZG1pX3BoeS0+cmVncyArIG9mZnNldCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0 IG10a19oZG1pX3BoeSAqdG9fbXRrX2hkbWlfcGh5KHN0cnVjdCBjbGtfaHcgKmh3KQo+ICt7Cj4g KyAgICAgICByZXR1cm4gY29udGFpbmVyX29mKGh3LCBzdHJ1Y3QgbXRrX2hkbWlfcGh5LCBwbGxf aHcpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG10a19oZG1pX3BsbF9wcmVwYXJlKHN0cnVjdCBj bGtfaHcgKmh3KQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3BoeSA9 IHRvX210a19oZG1pX3BoeShodyk7Cj4gKwo+ICsgICAgICAgZGV2X2RiZyhoZG1pX3BoeS0+ZGV2 LCAicHJlcGFyZVxuIik7Cj4gKwo+ICsgICAgICAgbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHks IEhETUlfQ09OMSwgUkdfSERNSVRYX1BMTF9BVVRPS19FTiwKPiArICAgICAgICAgICAgICAgICAg ICAgICAgIFJHX0hETUlUWF9QTExfQVVUT0tfRU4pOwo+ICsgICAgICAgbXRrX2hkbWlfcGh5X21h c2soaGRtaV9waHksIEhETUlfQ09OMCwgUkdfSERNSVRYX1BMTF9QT1NESVYsCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICBSR19IRE1JVFhfUExMX1BPU0RJVik7Cj4gKyAgICAgICBtdGtfaGRt aV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV9DT04zLCAwLCBSR19IRE1JVFhfTUhMQ0tfRU4pOwo+ ICsgICAgICAgbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfQ09OMSwgUkdfSERNSVRY X1BMTF9CSUFTX0VOLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgUkdfSERNSVRYX1BMTF9C SUFTX0VOKTsKPiArICAgICAgIHVzbGVlcF9yYW5nZSgxMDAsIDE1MCk7Cj4gKyAgICAgICBtdGtf aGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV9DT04wLCBSR19IRE1JVFhfUExMX0VOLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgUkdfSERNSVRYX1BMTF9FTik7Cj4gKyAgICAgICB1c2xl ZXBfcmFuZ2UoMTAwLCAxNTApOwo+ICsgICAgICAgbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHks IEhETUlfQ09OMSwgUkdfSERNSVRYX1BMTF9CSUFTX0xQRl9FTiwKPiArICAgICAgICAgICAgICAg ICAgICAgICAgIFJHX0hETUlUWF9QTExfQklBU19MUEZfRU4pOwo+ICsgICAgICAgbXRrX2hkbWlf cGh5X21hc2soaGRtaV9waHksIEhETUlfQ09OMSwgUkdfSERNSVRYX1BMTF9UWERJVl9FTiwKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgIFJHX0hETUlUWF9QTExfVFhESVZfRU4pOwo+ICsKPiAr ICAgICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBtdGtfaGRtaV9wbGxfdW5w cmVwYXJlKHN0cnVjdCBjbGtfaHcgKmh3KQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbXRrX2hkbWlf cGh5ICpoZG1pX3BoeSA9IHRvX210a19oZG1pX3BoeShodyk7Cj4gKwo+ICsgICAgICAgZGV2X2Ri ZyhoZG1pX3BoeS0+ZGV2LCAicHJlcGFyZVxuIik7CgpuaXQ6ICJ1bnByZXBhcmUiIChvciBqdXN0 ICciJXNcbiIsIF9fZnVuY19fKScsIGhlcmUgYW5kIGV2ZXJ5d2hlcmUuCgo+ICsKPiArICAgICAg IG10a19oZG1pX3BoeV9tYXNrKGhkbWlfcGh5LCBIRE1JX0NPTjEsIDAsIFJHX0hETUlUWF9QTExf VFhESVZfRU4pOwo+ICsgICAgICAgbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfQ09O MSwgMCwgUkdfSERNSVRYX1BMTF9CSUFTX0xQRl9FTik7Cj4gKyAgICAgICB1c2xlZXBfcmFuZ2Uo MTAwLCAxNTApOwo+ICsgICAgICAgbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfQ09O MCwgMCwgUkdfSERNSVRYX1BMTF9FTik7Cj4gKyAgICAgICB1c2xlZXBfcmFuZ2UoMTAwLCAxNTAp Owo+ICsgICAgICAgbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfQ09OMSwgMCwgUkdf SERNSVRYX1BMTF9CSUFTX0VOKTsKPiArICAgICAgIG10a19oZG1pX3BoeV9tYXNrKGhkbWlfcGh5 LCBIRE1JX0NPTjAsIDAsIFJHX0hETUlUWF9QTExfUE9TRElWKTsKPiArICAgICAgIG10a19oZG1p X3BoeV9tYXNrKGhkbWlfcGh5LCBIRE1JX0NPTjEsIDAsIFJHX0hETUlUWF9QTExfQVVUT0tfRU4p Owo+ICsgICAgICAgdXNsZWVwX3JhbmdlKDEwMCwgMTUwKTsKPiArfQo+ICsKPiArc3RhdGljIGlu dCBtdGtfaGRtaV9wbGxfc2V0X3JhdGUoc3RydWN0IGNsa19odyAqaHcsIHVuc2lnbmVkIGxvbmcg cmF0ZSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBh cmVudF9yYXRlKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3BoeSA9 IHRvX210a19oZG1pX3BoeShodyk7Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQgcHJlX2RpdjsKPiAr ICAgICAgIHVuc2lnbmVkIGludCBkaXY7Cj4gKwo+ICsgICAgICAgZGV2X2RiZyhoZG1pX3BoeS0+ ZGV2LCAic2V0IHJhdGUgOiAlbHUsIHBhcmVudDogJWx1XG4iLCByYXRlLAoKbml0LCBubyBzcGFj ZSBiZWZvcmUgdGhlIGZpcnN0ICc6Jy4KCj4gKyAgICAgICAgICAgICAgIHBhcmVudF9yYXRlKTsK PiArCj4gKyAgICAgICBpZiAocmF0ZSA8PSAyNzAwMDAwMCkgewo+ICsgICAgICAgICAgICAgICBw cmVfZGl2ID0gMDsKPiArICAgICAgICAgICAgICAgZGl2ID0gMzsKPiArICAgICAgIH0gZWxzZSBp ZiAocmF0ZSA8PSA3NDI1MDAwMCkgewo+ICsgICAgICAgICAgICAgICBwcmVfZGl2ID0gMTsKPiAr ICAgICAgICAgICAgICAgZGl2ID0gMjsKPiArICAgICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgICAg ICAgIHByZV9kaXYgPSAxOwo+ICsgICAgICAgICAgICAgICBkaXYgPSAxOwo+ICsgICAgICAgfQo+ ICsKPiArICAgICAgIG10a19oZG1pX3BoeV9tYXNrKGhkbWlfcGh5LCBIRE1JX0NPTjAsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAocHJlX2RpdiA8PCBQUkVESVZfU0hJRlQpLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgUkdfSERNSVRYX1BMTF9QUkVESVYpOwo+ICsgICAgICAgbXRr X2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfQ09OMCwgUkdfSERNSVRYX1BMTF9QT1NESVYs Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBSR19IRE1JVFhfUExMX1BPU0RJVik7Cj4gKyAg ICAgICBtdGtfaGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV9DT04wLAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgKDB4MSA8PCBQTExfSUNfU0hJRlQpIHwgKDB4MSA8PCBQTExfSVJfU0hJ RlQpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgUkdfSERNSVRYX1BMTF9JQyB8IFJHX0hE TUlUWF9QTExfSVIpOwo+ICsgICAgICAgbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlf Q09OMSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgIChkaXYgPDwgUExMX1RYRElWX1NISUZU KSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgIFJHX0hETUlUWF9QTExfVFhESVYpOwo+ICsg ICAgICAgbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfQ09OMCwKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICgweDEgPDwgUExMX0ZCS1NFTF9TSElGVCkgfCAoMTkgPDwgUExMX0ZC S0RJVl9TSElGVCksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBSR19IRE1JVFhfUExMX0ZC S1NFTCB8IFJHX0hETUlUWF9QTExfRkJLRElWKTsKPiArICAgICAgIG10a19oZG1pX3BoeV9tYXNr KGhkbWlfcGh5LCBIRE1JX0NPTjEsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAoMHgyIDw8 IFBMTF9ESVZFTl9TSElGVCksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBSR19IRE1JVFhf UExMX0RJVkVOKTsKPiArICAgICAgIG10a19oZG1pX3BoeV9tYXNrKGhkbWlfcGh5LCBIRE1JX0NP TjAsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAoMHhjIDw8IFBMTF9CUF9TSElGVCkgfCAo MHgyIDw8IFBMTF9CQ19TSElGVCkgfAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MSA8 PCBQTExfQlJfU0hJRlQpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgUkdfSERNSVRYX1BM TF9CUCB8IFJHX0hETUlUWF9QTExfQkMgfAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgUkdf SERNSVRYX1BMTF9CUik7Cj4gKyAgICAgICBtdGtfaGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERN SV9DT04zLCAwLCBSR19IRE1JVFhfUFJEX0lNUF9FTik7Cj4gKyAgICAgICBtdGtfaGRtaV9waHlf bWFzayhoZG1pX3BoeSwgSERNSV9DT040LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKDB4 MyA8PCBQUkRfSUJJQVNfQ0xLX1NISUZUKSB8Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAo MHgzIDw8IFBSRF9JQklBU19EMl9TSElGVCkgfAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg KDB4MyA8PCBQUkRfSUJJQVNfRDFfU0hJRlQpIHwKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICgweDMgPDwgUFJEX0lCSUFTX0QwX1NISUZUKSwKPiArICAgICAgICAgICAgICAgICAgICAgICAg IFJHX0hETUlUWF9QUkRfSUJJQVNfQ0xLIHwKPiArICAgICAgICAgICAgICAgICAgICAgICAgIFJH X0hETUlUWF9QUkRfSUJJQVNfRDIgfAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgUkdfSERN SVRYX1BSRF9JQklBU19EMSB8Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBSR19IRE1JVFhf UFJEX0lCSUFTX0QwKTsKPiArICAgICAgIG10a19oZG1pX3BoeV9tYXNrKGhkbWlfcGh5LCBIRE1J X0NPTjMsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAoMHgwIDw8IERSVl9JTVBfRU5fU0hJ RlQpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgUkdfSERNSVRYX0RSVl9JTVBfRU4pOwo+ ICsgICAgICAgbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfQ09ONiwKPiArICAgICAg ICAgICAgICAgICAgICAgICAgIChoZG1pX3BoeS0+ZHJ2X2ltcF9jbGsgPDwgRFJWX0lNUF9DTEtf U0hJRlQpIHwKPiArICAgICAgICAgICAgICAgICAgICAgICAgIChoZG1pX3BoeS0+ZHJ2X2ltcF9k MiA8PCBEUlZfSU1QX0QyX1NISUZUKSB8Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAoaGRt aV9waHktPmRydl9pbXBfZDEgPDwgRFJWX0lNUF9EMV9TSElGVCkgfAo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgKGhkbWlfcGh5LT5kcnZfaW1wX2QwIDw8IERSVl9JTVBfRDBfU0hJRlQpLAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgUkdfSERNSVRYX0RSVl9JTVBfQ0xLIHwgUkdfSERN SVRYX0RSVl9JTVBfRDIgfAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgUkdfSERNSVRYX0RS Vl9JTVBfRDEgfCBSR19IRE1JVFhfRFJWX0lNUF9EMCk7Cj4gKyAgICAgICBtdGtfaGRtaV9waHlf bWFzayhoZG1pX3BoeSwgSERNSV9DT041LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKGhk bWlfcGh5LT5pYmlhcyA8PCBEUlZfSUJJQVNfQ0xLX1NISUZUKSB8Cj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAoaGRtaV9waHktPmliaWFzIDw8IERSVl9JQklBU19EMl9TSElGVCkgfAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgKGhkbWlfcGh5LT5pYmlhcyA8PCBEUlZfSUJJQVNfRDFf U0hJRlQpIHwKPiArICAgICAgICAgICAgICAgICAgICAgICAgIChoZG1pX3BoeS0+aWJpYXMgPDwg RFJWX0lCSUFTX0QwX1NISUZUKSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgIFJHX0hETUlU WF9EUlZfSUJJQVNfQ0xLIHwgUkdfSERNSVRYX0RSVl9JQklBU19EMiB8Cj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICBSR19IRE1JVFhfRFJWX0lCSUFTX0QxIHwgUkdfSERNSVRYX0RSVl9JQklB U19EMCk7Cj4gKyAgICAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGxvbmcgbXRrX2hk bWlfcGxsX3JvdW5kX3JhdGUoc3RydWN0IGNsa19odyAqaHcsIHVuc2lnbmVkIGxvbmcgcmF0ZSwK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICpwYXJl bnRfcmF0ZSkKPiArewo+ICsgICAgICAgc3RydWN0IG10a19oZG1pX3BoeSAqaGRtaV9waHkgPSB0 b19tdGtfaGRtaV9waHkoaHcpOwo+ICsKPiArICAgICAgIGhkbWlfcGh5LT5wbGxfcmF0ZSA9IHJh dGU7Cj4gKyAgICAgICBpZiAocmF0ZSA8PSA3NDI1MDAwMCkKPiArICAgICAgICAgICAgICAgKnBh cmVudF9yYXRlID0gcmF0ZTsKPiArICAgICAgIGVsc2UKPiArICAgICAgICAgICAgICAgKnBhcmVu dF9yYXRlID0gcmF0ZSAvIDI7Cj4gKwo+ICsgICAgICAgcmV0dXJuIHJhdGU7Cj4gK30KPiArCj4g K3N0YXRpYyB1bnNpZ25lZCBsb25nIG10a19oZG1pX3BsbF9yZWNhbGNfcmF0ZShzdHJ1Y3QgY2xr X2h3ICpodywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dW5zaWduZWQgbG9uZyBwYXJlbnRfcmF0ZSkKPiArewo+ICsgICAgICAgc3RydWN0IG10a19oZG1p X3BoeSAqaGRtaV9waHkgPSB0b19tdGtfaGRtaV9waHkoaHcpOwo+ICsKPiArICAgICAgIHJldHVy biBoZG1pX3BoeS0+cGxsX3JhdGU7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2xr X29wcyBtdGtfaGRtaV9wbGxfb3BzID0gewo+ICsgICAgICAgLnByZXBhcmUgPSBtdGtfaGRtaV9w bGxfcHJlcGFyZSwKPiArICAgICAgIC51bnByZXBhcmUgPSBtdGtfaGRtaV9wbGxfdW5wcmVwYXJl LAo+ICsgICAgICAgLnNldF9yYXRlID0gbXRrX2hkbWlfcGxsX3NldF9yYXRlLAo+ICsgICAgICAg LnJvdW5kX3JhdGUgPSBtdGtfaGRtaV9wbGxfcm91bmRfcmF0ZSwKPiArICAgICAgIC5yZWNhbGNf cmF0ZSA9IG10a19oZG1pX3BsbF9yZWNhbGNfcmF0ZSwKPiArfTsKPiArCj4gK3N0YXRpYyB2b2lk IG10a19oZG1pX3BoeV9lbmFibGVfdG1kcyhzdHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3BoeSkK PiArewo+ICsgICAgICAgbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfQ09OMywgUkdf SERNSVRYX1NFUl9FTiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgIFJHX0hETUlUWF9TRVJf RU4pOwoKbml0OiBsb3RzIG9mIHRoZXNlIGNhbGxzIG1pZ2h0IGJlIG1vcmUgcmVhZGFibGUgKGFu ZCBlYXNpZXIgdG8gbWFpbnRhaW4gJgpyZXZpZXcpIGlmIHdlIHVzZWQgdHdvIGhlbHBlciBmdW5j dGlvbnM6CgptdGtfaGRtaV9waHlfc2V0X2JpdHMoc3RydWN0IG10a19oZG1pX3BoeSAqaGRtaV9w aHksIHUzMiBvZmZzZXQsIHUzMiBtYXNrKTsKbXRrX2hkbWlfcGh5X2Nscl9iaXRzKHN0cnVjdCBt dGtfaGRtaV9waHkgKmhkbWlfcGh5LCB1MzIgb2Zmc2V0LCB1MzIgbWFzayk7CgphbmQKCm10a19o ZG1pX3NldF9iaXRzKCkKbXRrX2hkbWlfY2xyX2JpdHMoKQoKCj4gKyAgICAgICBtdGtfaGRtaV9w aHlfbWFzayhoZG1pX3BoeSwgSERNSV9DT04zLCBSR19IRE1JVFhfUFJEX0VOLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgUkdfSERNSVRYX1BSRF9FTik7Cj4gKyAgICAgICBtdGtfaGRtaV9w aHlfbWFzayhoZG1pX3BoeSwgSERNSV9DT04zLCBSR19IRE1JVFhfRFJWX0VOLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgUkdfSERNSVRYX0RSVl9FTik7Cj4gKyAgICAgICB1c2xlZXBfcmFu Z2UoMTAwLCAxNTApOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBtdGtfaGRtaV9waHlfZGlzYWJs ZV90bWRzKHN0cnVjdCBtdGtfaGRtaV9waHkgKmhkbWlfcGh5KQo+ICt7Cj4gKyAgICAgICBtdGtf aGRtaV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV9DT04zLCAwLCBSR19IRE1JVFhfRFJWX0VOKTsK PiArICAgICAgIG10a19oZG1pX3BoeV9tYXNrKGhkbWlfcGh5LCBIRE1JX0NPTjMsIDAsIFJHX0hE TUlUWF9QUkRfRU4pOwo+ICsgICAgICAgbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlf Q09OMywgMCwgUkdfSERNSVRYX1NFUl9FTik7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbXRrX2hk bWlfcGh5X3Bvd2VyX29uKHN0cnVjdCBwaHkgKnBoeSkKPiArewo+ICsgICAgICAgc3RydWN0IG10 a19oZG1pX3BoeSAqaGRtaV9waHkgPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsKPiArICAgICAgIGlu dCByZXQ7Cj4gKwo+ICsgICAgICAgcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGhkbWlfcGh5LT5w bGwpOwo+ICsgICAgICAgaWYgKHJldCA8IDApCj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7 Cj4gKwo+ICsgICAgICAgbXRrX2hkbWlfcGh5X2VuYWJsZV90bWRzKGhkbWlfcGh5KTsKPiArCj4g KyAgICAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBtdGtfaGRtaV9waHlfcG93 ZXJfb2ZmKHN0cnVjdCBwaHkgKnBoeSkKPiArewo+ICsgICAgICAgc3RydWN0IG10a19oZG1pX3Bo eSAqaGRtaV9waHkgPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsKPiArCj4gKyAgICAgICBtdGtfaGRt aV9waHlfZGlzYWJsZV90bWRzKGhkbWlfcGh5KTsKPiArICAgICAgIGNsa19kaXNhYmxlX3VucHJl cGFyZShoZG1pX3BoeS0+cGxsKTsKPiArCj4gKyAgICAgICByZXR1cm4gMDsKPiArfQo+ICsKPiAr c3RhdGljIHN0cnVjdCBwaHlfb3BzIG10a19oZG1pX3BoeV9vcHMgPSB7CgpzdGF0aWMgY29uc3QK Cj4gKyAgICAgICAucG93ZXJfb24gPSBtdGtfaGRtaV9waHlfcG93ZXJfb24sCj4gKyAgICAgICAu cG93ZXJfb2ZmID0gbXRrX2hkbWlfcGh5X3Bvd2VyX29mZiwKPiArICAgICAgIC5vd25lciA9IFRI SVNfTU9EVUxFLAo+ICt9Owo+ICsKPiArc3RhdGljIGludCBtdGtfaGRtaV9waHlfcHJvYmUoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiArewo+ICsgICAgICAgc3RydWN0IGRldmljZSAq ZGV2ID0gJnBkZXYtPmRldjsKPiArICAgICAgIHN0cnVjdCBtdGtfaGRtaV9waHkgKmhkbWlfcGh5 Owo+ICsgICAgICAgc3RydWN0IHJlc291cmNlICptZW07Cj4gKyAgICAgICBzdHJ1Y3QgY2xrICpy ZWZfY2xrOwo+ICsgICAgICAgY29uc3QgY2hhciAqcmVmX2Nsa19uYW1lOwo+ICsgICAgICAgc3Ry dWN0IGNsa19pbml0X2RhdGEgY2xrX2luaXQgPSB7Cj4gKyAgICAgICAgICAgICAgIC5vcHMgPSAm bXRrX2hkbWlfcGxsX29wcywKPiArICAgICAgICAgICAgICAgLm51bV9wYXJlbnRzID0gMSwKPiAr ICAgICAgICAgICAgICAgLnBhcmVudF9uYW1lcyA9IChjb25zdCBjaGFyICogY29uc3QgKikmcmVm X2Nsa19uYW1lLAo+ICsgICAgICAgICAgICAgICAuZmxhZ3MgPSBDTEtfU0VUX1JBVEVfUEFSRU5U IHwgQ0xLX1NFVF9SQVRFX0dBVEUsCj4gKyAgICAgICB9Owo+ICsgICAgICAgc3RydWN0IHBoeSAq cGh5Owo+ICsgICAgICAgc3RydWN0IHBoeV9wcm92aWRlciAqcGh5X3Byb3ZpZGVyOwo+ICsgICAg ICAgaW50IHJldDsKPiArCj4gKyAgICAgICBoZG1pX3BoeSA9IGRldm1fa3phbGxvYyhkZXYsIHNp emVvZigqaGRtaV9waHkpLCBHRlBfS0VSTkVMKTsKPiArICAgICAgIGlmICghaGRtaV9waHkpCj4g KyAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ICsKPiArICAgICAgIG1lbSA9IHBsYXRm b3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7Cj4gKyAgICAgICBoZG1p X3BoeS0+cmVncyA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIG1lbSk7Cj4gKyAgICAgICBp ZiAoSVNfRVJSKGhkbWlfcGh5LT5yZWdzKSkgewo+ICsgICAgICAgICAgICAgICByZXQgPSBQVFJf RVJSKGhkbWlfcGh5LT5yZWdzKTsKPiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJGYWls ZWQgdG8gZ2V0IG1lbW9yeSByZXNvdXJjZTogJWRcbiIsIHJldCk7Cj4gKyAgICAgICAgICAgICAg IHJldHVybiByZXQ7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcmVmX2NsayA9IGRldm1fY2xr X2dldChkZXYsICJwbGxfcmVmIik7Cj4gKyAgICAgICBpZiAoSVNfRVJSKHJlZl9jbGspKSB7Cj4g KyAgICAgICAgICAgICAgIHJldCA9IFBUUl9FUlIocmVmX2Nsayk7Cj4gKyAgICAgICAgICAgICAg IGRldl9lcnIoJnBkZXYtPmRldiwgIkZhaWxlZCB0byBnZXQgUExMIHJlZmVyZW5jZSBjbG9jazog JWRcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0KTsKPiArICAgICAgICAgICAgICAg cmV0dXJuIHJldDsKPiArICAgICAgIH0KPiArICAgICAgIHJlZl9jbGtfbmFtZSA9IF9fY2xrX2dl dF9uYW1lKHJlZl9jbGspOwo+ICsKPiArICAgICAgIHJldCA9IG9mX3Byb3BlcnR5X3JlYWRfc3Ry aW5nKGRldi0+b2Zfbm9kZSwgImNsb2NrLW91dHB1dC1uYW1lcyIsCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmY2xrX2luaXQubmFtZSk7Cj4gKyAgICAgICBpZiAocmV0 IDwgMCkgewo+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgIkZhaWxlZCB0byByZWFkIGNs b2NrLW91dHB1dC1uYW1lczogJWRcbiIsIHJldCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiBy ZXQ7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgaGRtaV9waHktPnBsbF9ody5pbml0ID0gJmNs a19pbml0Owo+ICsgICAgICAgaGRtaV9waHktPnBsbCA9IGRldm1fY2xrX3JlZ2lzdGVyKGRldiwg JmhkbWlfcGh5LT5wbGxfaHcpOwo+ICsgICAgICAgaWYgKElTX0VSUihoZG1pX3BoeS0+cGxsKSkg ewo+ICsgICAgICAgICAgICAgICByZXQgPSBQVFJfRVJSKGhkbWlfcGh5LT5wbGwpOwo+ICsgICAg ICAgICAgICAgICBkZXZfZXJyKGRldiwgIkZhaWxlZCB0byByZWdpc3RlciBQTEw6ICVkXG4iLCBy ZXQpOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgICAgfQo+ICsKPiArICAg ICAgIHJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKGRldi0+b2Zfbm9kZSwgIm1lZGlhdGVrLGli aWFzIiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoZG1pX3BoeS0+aWJp YXMpOwo+ICsgICAgICAgaWYgKHJldCA8IDApIHsKPiArICAgICAgICAgICAgICAgZGV2X2Vycigm cGRldi0+ZGV2LCAiRmFpbGVkIHRvIGdldCBpYmlhczogJWRcbiIsIHJldCk7Cj4gKyAgICAgICAg ICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcmV0ID0gb2ZfcHJv cGVydHlfcmVhZF91MzIoZGV2LT5vZl9ub2RlLCAibWVkaWF0ZWssaWJpYXNfdXAiLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhkbWlfcGh5LT5pYmlhc191cCk7Cj4gKyAg ICAgICBpZiAocmV0IDwgMCkgewo+ICsgICAgICAgICAgICAgICBkZXZfZXJyKCZwZGV2LT5kZXYs ICJGYWlsZWQgdG8gZ2V0IGliaWFzIHVwOiAlZFxuIiwgcmV0KTsKPiArICAgICAgICAgICAgICAg cmV0dXJuIHJldDsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBkZXZfaW5mbyhkZXYsICJVc2lu ZyBkZWZhdWx0IFRYIERSViBpbXBlZGFuY2U6IDQuMmsvMzZcbiIpOwo+ICsgICAgICAgaGRtaV9w aHktPmRydl9pbXBfY2xrID0gMHgzMDsKPiArICAgICAgIGhkbWlfcGh5LT5kcnZfaW1wX2QyID0g MHgzMDsKPiArICAgICAgIGhkbWlfcGh5LT5kcnZfaW1wX2QxID0gMHgzMDsKPiArICAgICAgIGhk bWlfcGh5LT5kcnZfaW1wX2QwID0gMHgzMDsKPiArCj4gKyAgICAgICBwaHkgPSBkZXZtX3BoeV9j cmVhdGUoZGV2LCBOVUxMLCAmbXRrX2hkbWlfcGh5X29wcyk7Cj4gKyAgICAgICBpZiAoSVNfRVJS KHBoeSkpIHsKPiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJGYWlsZWQgdG8gY3JlYXRl IEhETUkgUEhZXG4iKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIocGh5KTsKPiAr ICAgICAgIH0KPiArICAgICAgIHBoeV9zZXRfZHJ2ZGF0YShwaHksIGhkbWlfcGh5KTsKPiArCj4g KyAgICAgICBwaHlfcHJvdmlkZXIgPSBkZXZtX29mX3BoeV9wcm92aWRlcl9yZWdpc3RlcihkZXYs IG9mX3BoeV9zaW1wbGVfeGxhdGUpOwo+ICsgICAgICAgaWYgKElTX0VSUihwaHlfcHJvdmlkZXIp KQo+ICsgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihwaHlfcHJvdmlkZXIpOwo+ICsKPiAr ICAgICAgIGhkbWlfcGh5LT5kZXYgPSBkZXY7Cj4gKyAgICAgICByZXR1cm4gb2ZfY2xrX2FkZF9w cm92aWRlcihkZXYtPm9mX25vZGUsIG9mX2Nsa19zcmNfc2ltcGxlX2dldCwKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGhkbWlfcGh5LT5wbGwpOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgaW50IG10a19oZG1pX3BoeV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikK PiArewo+ICsgICAgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg b2ZfZGV2aWNlX2lkIG10a19oZG1pX3BoeV9tYXRjaFtdID0gewo+ICsgICAgICAgeyAuY29tcGF0 aWJsZSA9ICJtZWRpYXRlayxtdDgxNzMtaGRtaS1waHkiLCB9LAo+ICsgICAgICAge30sCj4gK307 Cj4gKwo+ICtzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10a19oZG1pX3BoeV9kcml2ZXIgPSB7Cj4g KyAgICAgICAucHJvYmUgPSBtdGtfaGRtaV9waHlfcHJvYmUsCj4gKyAgICAgICAucmVtb3ZlID0g bXRrX2hkbWlfcGh5X3JlbW92ZSwKPiArICAgICAgIC5kcml2ZXIgPSB7Cj4gKyAgICAgICAgICAg ICAgIC5uYW1lID0gIm1lZGlhdGVrLWhkbWktcGh5IiwKPiArICAgICAgICAgICAgICAgLm9mX21h dGNoX3RhYmxlID0gbXRrX2hkbWlfcGh5X21hdGNoLAo+ICsgICAgICAgfSwKPiArfTsKPiArCj4g K01PRFVMRV9BVVRIT1IoIkppZSBRaXUgPGppZS5xaXVAbWVkaWF0ZWsuY29tPiIpOwo+ICtNT0RV TEVfREVTQ1JJUFRJT04oIk1lZGlhVGVrIE1UODE3MyBIRE1JIFBIWSBEcml2ZXIiKTsKPiArTU9E VUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwo+IC0tCj4gMi43LjAKPgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1k ZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK