From owner-freebsd-usb@FreeBSD.ORG Fri Apr 27 23:30:10 2007 Return-Path: X-Original-To: freebsd-usb@hub.freebsd.org Delivered-To: freebsd-usb@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id DF15416A406 for ; Fri, 27 Apr 2007 23:30:09 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [69.147.83.40]) by mx1.freebsd.org (Postfix) with ESMTP id 8EB1B13C45E for ; Fri, 27 Apr 2007 23:30:09 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.4/8.13.4) with ESMTP id l3RNU9Q8078102 for ; Fri, 27 Apr 2007 23:30:09 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.4/8.13.4/Submit) id l3RNU94X078095; Fri, 27 Apr 2007 23:30:09 GMT (envelope-from gnats) Date: Fri, 27 Apr 2007 23:30:09 GMT Message-Id: <200704272330.l3RNU94X078095@freefall.freebsd.org> To: freebsd-usb@FreeBSD.org From: "Valery V.Chikalov" Cc: Subject: Re: usb/107642: [patch]Ralink Technology RT2501USB/RT2601USB chipset driver X-BeenThere: freebsd-usb@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: "Valery V.Chikalov" List-Id: FreeBSD support for USB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Apr 2007 23:30:10 -0000 The following reply was made to PR usb/107642; it has been noted by GNATS. From: "Valery V.Chikalov" To: bug-followup@FreeBSD.org, valera@chikalov.dp.ua Cc: Subject: Re: usb/107642: [patch]Ralink Technology RT2501USB/RT2601USB chipset driver Date: Sun, 22 Apr 2007 11:32:18 +0300 This is a multi-part message in MIME format. --------------030900090303000507070905 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 if_rum(4) for 7.0-CURRENT replaced amrr_* functions by "standard" ones already existed in net80211/ieee80211_amrr.c -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFGKx14760S3kDvEC4RAn8PAKCn990QJE0wZRKcwdxAZ61MY0JRgACeI2W5 ZosSlh6pIqi7JdZ5Wi1BUYc= =LvWZ -----END PGP SIGNATURE----- --------------030900090303000507070905 Content-Type: text/plain; name="rum.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="rum.patch" SW5kZXg6IHN5cy9kZXYvdXNiL2lmX3J1bS5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTog c3lzL2Rldi91c2IvaWZfcnVtLmMNCmRpZmYgLU4gc3lzL2Rldi91c2IvaWZfcnVtLmMNCi0t LSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMA0KKysrIHN5cy9kZXYvdXNi L2lmX3J1bS5jCTIyIEFwciAyMDA3IDA4OjAxOjU0IC0wMDAwDQpAQCAtMCwwICsxLDIyMjUg QEANCisvKiAgICAkT3BlbkJTRDogaWZfcnVtLmMsdiAxLjQwIDIwMDYvMDkvMTggMTY6MjA6 MjAgZGFtaWVuIEV4cCAkICAgICovDQorLyogICAgJE5ldEJTRDogaWZfcnVtLmMsdiAxLjIg MjAwNi8xMS8wMSAwODozOToyNSB4dHJhZW1lIEV4cCAkICAgICovDQorDQorLyotDQorICog Q29weXJpZ2h0IChjKSAyMDA1LCAyMDA2IERhbWllbiBCZXJnYW1pbmkgPGRhbWllbi5iZXJn YW1pbmlAZnJlZS5mcj4NCisgKiBDb3B5cmlnaHQgKGMpIDIwMDYgTmlhbGwgTydIaWdnaW5z IDxuaWFsbG9Ab3BlbmJzZC5vcmc+DQorICogQ29weXJpZ2h0IChjKSAyMDA2LCAyMDA3IFZh bGVyeSBWLkNoaWthbG92IDx2YWxlcmFAY2hpa2Fsb3YuZHAudWE+DQorICoNCisgKiBQZXJt aXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3 YXJlIGZvciBhbnkNCisgKiBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5 IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlDQorICogY29weXJpZ2h0IG5vdGlj ZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcy4NCisg Kg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBUSEUgQVVUSE9S IERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUw0KKyAqIFdJVEggUkVHQVJEIFRPIFRISVMgU09G VFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YNCisgKiBNRVJDSEFO VEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUg TElBQkxFIEZPUg0KKyAqIEFOWSBTUEVDSUFMLCBESVJFQ1QsIElORElSRUNULCBPUiBDT05T RVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMNCisgKiBXSEFUU09FVkVSIFJFU1VM VElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4N CisgKiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMg QUNUSU9OLCBBUklTSU5HIE9VVCBPRg0KKyAqIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUg VVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuDQorICovDQorDQorLyotDQor ICogUmFsaW5rIFRlY2hub2xvZ3kgUlQyNTAxVVNCL1JUMjYwMVVTQiBjaGlwc2V0IGRyaXZl cg0KKyAqIGh0dHA6Ly93d3cucmFsaW5rdGVjaC5jb20vDQorICovDQorDQorI2lmIGRlZmlu ZWQoX19OZXRCU0RfXykNCisjaW5jbHVkZSAib3B0X25zLmgiDQorI2VuZGlmDQorI2lmIGRl ZmluZWQoX19OZXRCU0RfXykNCisjaW5jbHVkZSAiYnBmaWx0ZXIuaCINCisjZW5kaWYNCisj aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykNCisjZGVmaW5lIE5CUEZJTFRFUiAgIDENCisjZW5k aWYNCisjaWYgZGVmaW5lZChfX05ldEJTRF9fKQ0KKyNpbmNsdWRlICJybmQuaCINCisjZW5k aWYNCisNCisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+DQorI2luY2x1ZGUgPHN5cy9zeXNjdGwu aD4NCisjaW5jbHVkZSA8c3lzL3NvY2tpby5oPg0KKyNpbmNsdWRlIDxzeXMvbWJ1Zi5oPg0K KyNpbmNsdWRlIDxzeXMva2VybmVsLmg+DQorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4NCisj aW5jbHVkZSA8c3lzL3N5c3RtLmg+DQorI2luY2x1ZGUgPHN5cy9tYWxsb2MuaD4NCisjaW5j bHVkZSA8c3lzL21vZHVsZS5oPg0KKyNpbmNsdWRlIDxzeXMvYnVzLmg+DQorI2luY2x1ZGUg PHN5cy9lbmRpYW4uaD4NCisjaW5jbHVkZSA8c3lzL2xpbmtlci5oPg0KKyNpbmNsdWRlIDxz eXMvZmlybXdhcmUuaD4NCisNCisjaW5jbHVkZSA8bWFjaGluZS9idXMuaD4NCisjaW5jbHVk ZSA8bWFjaGluZS9yZXNvdXJjZS5oPg0KKyNpbmNsdWRlIDxtYWNoaW5lL2Nsb2NrLmg+DQor I2luY2x1ZGUgPHN5cy9ybWFuLmg+DQorDQorI2luY2x1ZGUgPG5ldC9icGYuaD4NCisjaW5j bHVkZSA8bmV0L2lmLmg+DQorI2luY2x1ZGUgPG5ldC9pZl9hcnAuaD4NCisjaW5jbHVkZSA8 bmV0L2V0aGVybmV0Lmg+DQorI2luY2x1ZGUgPG5ldC9pZl9kbC5oPg0KKyNpbmNsdWRlIDxu ZXQvaWZfbWVkaWEuaD4NCisjaW5jbHVkZSA8bmV0L2lmX3R5cGVzLmg+DQorDQorI2luY2x1 ZGUgPG5ldDgwMjExL2llZWU4MDIxMV92YXIuaD4NCisjaW5jbHVkZSA8bmV0ODAyMTEvaWVl ZTgwMjExX3JhZGlvdGFwLmg+DQorI2luY2x1ZGUgPG5ldDgwMjExL2llZWU4MDIxMV9hbXJy Lmg+DQorDQorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCisjaW5jbHVkZSA8bmV0aW5ldC9p bl9zeXN0bS5oPg0KKyNpbmNsdWRlIDxuZXRpbmV0L2luX3Zhci5oPg0KKyNpbmNsdWRlIDxu ZXRpbmV0L2lwLmg+DQorI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4NCisNCisjaW5j bHVkZSA8ZGV2L3VzYi91c2IuaD4NCisjaW5jbHVkZSA8ZGV2L3VzYi91c2JkaS5oPg0KKyNp bmNsdWRlIDxkZXYvdXNiL3VzYmRpX3V0aWwuaD4NCisjaW5jbHVkZSAidXNiZGV2cy5oIg0K Kw0KKyNpbmNsdWRlIDxkZXYvdXNiL2lmX3J1bXJlZy5oPg0KKyNpbmNsdWRlIDxkZXYvdXNi L2lmX3J1bXZhci5oPg0KKw0KKyNpZmRlZiBVU0JfREVCVUcNCisjZGVmaW5lIFJVTV9ERUJV Rw0KKyNlbmRpZg0KKw0KKyNpZmRlZiBSVU1fREVCVUcNCitpbnQgcnVtX2RlYnVnID0gMDsN CisjZGVmaW5lIERQUklOVEYoeCkgICAgZG8geyBpZiAocnVtX2RlYnVnKSBsb2dwcmludGYg eDsgfSB3aGlsZSAoMCkNCisjZGVmaW5lIERQUklOVEZOKG4sIHgpICAgIGRvIHsgaWYgKHJ1 bV9kZWJ1ZyA+PSAobikpIGxvZ3ByaW50ZiB4OyB9IHdoaWxlICgwKQ0KKyNlbHNlDQorI2Rl ZmluZSBEUFJJTlRGKHgpDQorI2RlZmluZSBEUFJJTlRGTihuLCB4KQ0KKyNlbmRpZg0KKw0K Ky8qIHZhcmlvdXMgc3VwcG9ydGVkIGRldmljZSB2ZW5kb3JzL3Byb2R1Y3RzICovDQorc3Rh dGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2bm8gcnVtX2RldnNbXSA9IHsNCisgICAgeyBVU0Jf VkVORE9SX0FCT0NPTSwgICAgICAgIFVTQl9QUk9EVUNUX0FCT0NPTV9SVDI1NzMgfSwNCisg ICAgeyBVU0JfVkVORE9SX0FTVVMsICAgICAgICAgIFVTQl9QUk9EVUNUX0FTVVNfUlQyNTcz IH0sDQorICAgIHsgVVNCX1ZFTkRPUl9CRUxLSU4sICAgICAgICBVU0JfUFJPRFVDVF9CRUxL SU5fRjVENzA1MEEgfSwNCisgICAgeyBVU0JfVkVORE9SX0JFTEtJTiwgICAgICAgIFVTQl9Q Uk9EVUNUX0JFTEtJTl9GNUQ5MDUwVjMgfSwNCisgICAgeyBVU0JfVkVORE9SX0xJTktTWVM0 LCAgICAgIFVTQl9QUk9EVUNUX0xJTktTWVM0X1dVU0I1NEdDIH0sDQorICAgIHsgVVNCX1ZF TkRPUl9DT05DRVBUUk9OSUMyLCBVU0JfUFJPRFVDVF9DT05DRVBUUk9OSUMyX0M1NFJVMiB9 LA0KKyAgICB7IFVTQl9WRU5ET1JfRElDS1NNSVRILCAgICAgVVNCX1BST0RVQ1RfRElDS1NN SVRIX0NXRDg1NEYgfSwNCisgICAgeyBVU0JfVkVORE9SX0RJQ0tTTUlUSCwgICAgIFVTQl9Q Uk9EVUNUX0RJQ0tTTUlUSF9SVDI1NzMgfSwNCisgICAgeyBVU0JfVkVORE9SX0RMSU5LMiwg ICAgICAgIFVTQl9QUk9EVUNUX0RMSU5LMl9EV0xHMTIyQzEgfSwNCisgICAgeyBVU0JfVkVO RE9SX0RMSU5LMiwgICAgICAgIFVTQl9QUk9EVUNUX0RMSU5LMl9XVUExMzQwIH0sDQorICAg IHsgVVNCX1ZFTkRPUl9HSUdBQllURSwgICAgICBVU0JfUFJPRFVDVF9HSUdBQllURV9HTldC MDFHUyB9LA0KKyAgICB7IFVTQl9WRU5ET1JfR0lHQVNFVCwgICAgICAgVVNCX1BST0RVQ1Rf R0lHQVNFVF9SVDI1NzMgfSwNCisgICAgeyBVU0JfVkVORE9SX0dPT0RXQVksICAgICAgIFVT Ql9QUk9EVUNUX0dPT0RXQVlfUlQyNTczIH0sDQorICAgIHsgVVNCX1ZFTkRPUl9IVUFXRUkz Q09NLCAgICBVU0JfUFJPRFVDVF9IVUFXRUkzQ09NX1JUMjU3MyB9LA0KKyAgICB7IFVTQl9W RU5ET1JfTVNJLCAgICAgICAgICAgVVNCX1BST0RVQ1RfTVNJX1JUMjU3MyB9LA0KKyAgICB7 IFVTQl9WRU5ET1JfTVNJLCAgICAgICAgICAgVVNCX1BST0RVQ1RfTVNJX1JUMjU3M18yIH0s DQorICAgIHsgVVNCX1ZFTkRPUl9NU0ksICAgICAgICAgICBVU0JfUFJPRFVDVF9NU0lfUlQy NTczXzMgfSwNCisgICAgeyBVU0JfVkVORE9SX1BMQU5FWDIsICAgICAgIFVTQl9QUk9EVUNU X1BMQU5FWDJfR1dVU01NIH0sDQorICAgIHsgVVNCX1ZFTkRPUl9RQ09NLCAgICAgICAgICBV U0JfUFJPRFVDVF9RQ09NX1JUMjU3MyB9LA0KKyAgICB7IFVTQl9WRU5ET1JfUUNPTSwgICAg ICAgICAgVVNCX1BST0RVQ1RfUUNPTV9SVDI1NzNfMiB9LA0KKyAgICB7IFVTQl9WRU5ET1Jf UkFMSU5LLCAgICAgICAgVVNCX1BST0RVQ1RfUkFMSU5LX1JUMjU3MyB9LA0KKyAgICB7IFVT Ql9WRU5ET1JfUkFMSU5LLCAgICAgICAgVVNCX1BST0RVQ1RfUkFMSU5LX1JUMjY3MSB9LA0K KyAgICB7IFVTQl9WRU5ET1JfU0lURUNPTUVVLCAgICAgVVNCX1BST0RVQ1RfU0lURUNPTUVV X1dMMTEzUjIgfSwNCisgICAgeyBVU0JfVkVORE9SX1NJVEVDT01FVSwgICAgIFVTQl9QUk9E VUNUX1NJVEVDT01FVV9XTDE3MiB9LA0KKyAgICB7IFVTQl9WRU5ET1JfU1VSRUNPTSwgICAg ICAgVVNCX1BST0RVQ1RfU1VSRUNPTV9SVDI1NzMgfQ0KK307DQorDQorTU9EVUxFX0RFUEVO RChydW0sIHdsYW4sICAgICAxLCAxLCAxKTsNCitNT0RVTEVfREVQRU5EKHJ1bSwgZmlybXdh cmUsIDEsIDEsIDEpOw0KKw0KK3N0YXRpYyB2b2lkICAgICAgICBydW1fbG9hZF9mdyhzdHJ1 Y3QgcnVtX3NvZnRjICopOw0KK3N0YXRpYyB2b2lkICAgICAgICBydW1fc3RvcChzdHJ1Y3Qg aWZuZXQgKik7DQorDQorc3RhdGljIHZvaWQgICAgICAgIHJ1bV9pbml0KHZvaWQgKik7DQor c3RhdGljIGludCAgICAgICAgIHJ1bV9pb2N0bChzdHJ1Y3QgaWZuZXQgKiwgdV9sb25nLCBj YWRkcl90KTsNCitzdGF0aWMgdm9pZCAgICAgICAgcnVtX3N0YXJ0KHN0cnVjdCBpZm5ldCAq KTsNCitzdGF0aWMgdm9pZCAgICAgICAgcnVtX3dhdGNoZG9nKHN0cnVjdCBpZm5ldCAqKTsN CitzdGF0aWMgaW50ICAgICAgICAgcnVtX21lZGlhX2NoYW5nZShzdHJ1Y3QgaWZuZXQgKik7 DQorDQorc3RhdGljIGludCAgICAgICAgIHJ1bV9hbGxvY190eF9saXN0KHN0cnVjdCBydW1f c29mdGMgKik7DQorc3RhdGljIHZvaWQgICAgICAgIHJ1bV9mcmVlX3R4X2xpc3Qoc3RydWN0 IHJ1bV9zb2Z0YyAqKTsNCitzdGF0aWMgaW50ICAgICAgICAgcnVtX2FsbG9jX3J4X2xpc3Qo c3RydWN0IHJ1bV9zb2Z0YyAqKTsNCitzdGF0aWMgdm9pZCAgICAgICAgcnVtX2ZyZWVfcnhf bGlzdChzdHJ1Y3QgcnVtX3NvZnRjICopOw0KKw0KK3N0YXRpYyB2b2lkICAgICAgICBydW1f dHhlb2YodXNiZF94ZmVyX2hhbmRsZSwgdXNiZF9wcml2YXRlX2hhbmRsZSwgdXNiZF9zdGF0 dXMpOw0KK3N0YXRpYyB2b2lkICAgICAgICBydW1fcnhlb2YodXNiZF94ZmVyX2hhbmRsZSwg dXNiZF9wcml2YXRlX2hhbmRsZSwgdXNiZF9zdGF0dXMpOw0KKw0KK3N0YXRpYyB2b2lkICAg ICAgICBydW1fdGFzayh2b2lkICopOw0KK3N0YXRpYyB2b2lkICAgICAgICBydW1fbmV4dF9z Y2FuKHZvaWQgKik7DQorc3RhdGljIGludCAgICAgICAgIHJ1bV9uZXdzdGF0ZShzdHJ1Y3Qg aWVlZTgwMjExY29tICosIGVudW0gaWVlZTgwMjExX3N0YXRlLCBpbnQpOw0KK3N0YXRpYyB1 aW50OF90ICAgICBydW1fcnhyYXRlKHN0cnVjdCBydW1fcnhfZGVzYyAqKTsNCitzdGF0aWMg aW50ICAgICAgICAgcnVtX2Fja19yYXRlKHN0cnVjdCBpZWVlODAyMTFjb20gKiwgaW50KTsN CitzdGF0aWMgdWludDE2X3QgICAgcnVtX3R4dGltZShpbnQsIGludCwgdWludDMyX3QpOw0K K3N0YXRpYyB1aW50OF90ICAgICBydW1fcGxjcF9zaWduYWwoaW50KTsNCisNCitzdGF0aWMg dm9pZCAgICAgICAgcnVtX3NldHVwX3R4X2Rlc2Moc3RydWN0IHJ1bV9zb2Z0YyAqLCBzdHJ1 Y3QgcnVtX3R4X2Rlc2MgKiwgdWludDMyX3QsIHVpbnQxNl90LCBpbnQsIGludCk7DQorc3Rh dGljIGludCAgICAgICAgIHJ1bV90eF9tZ3Qoc3RydWN0IHJ1bV9zb2Z0YyAqLCBzdHJ1Y3Qg bWJ1ZiAqLCBzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKik7DQorc3RhdGljIGludCAgICAgICAg IHJ1bV90eF9kYXRhKHN0cnVjdCBydW1fc29mdGMgKiwgc3RydWN0IG1idWYgKiwgc3RydWN0 IGllZWU4MDIxMV9ub2RlICopOw0KKw0KK3N0YXRpYyB2b2lkICAgICAgICBydW1fcmVhZF9l ZXByb20oc3RydWN0IHJ1bV9zb2Z0YyAqKTsNCitzdGF0aWMgdm9pZCAgICAgICAgcnVtX2Vl cHJvbV9yZWFkKHN0cnVjdCBydW1fc29mdGMgKiwgdWludDE2X3QsIHZvaWQgKiwgaW50KTsN CitzdGF0aWMgdWludDMyX3QgICAgcnVtX3JlYWQoc3RydWN0IHJ1bV9zb2Z0YyAqLCB1aW50 MTZfdCk7DQorc3RhdGljIHZvaWQgICAgICAgIHJ1bV9yZWFkX211bHRpKHN0cnVjdCBydW1f c29mdGMgKiwgdWludDE2X3QsIHZvaWQgKiwgaW50KTsNCitzdGF0aWMgdm9pZCAgICAgICAg cnVtX3dyaXRlKHN0cnVjdCBydW1fc29mdGMgKiwgdWludDE2X3QsIHVpbnQzMl90KTsNCitz dGF0aWMgdm9pZCAgICAgICAgcnVtX3dyaXRlX211bHRpKHN0cnVjdCBydW1fc29mdGMgKiwg dWludDE2X3QsIHZvaWQgKiwgc2l6ZV90KTsNCisNCitzdGF0aWMgaW50ICAgICAgICAgcnVt X2JicF9pbml0KHN0cnVjdCBydW1fc29mdGMgKik7DQorc3RhdGljIHZvaWQgICAgICAgIHJ1 bV9iYnBfd3JpdGUoc3RydWN0IHJ1bV9zb2Z0YyAqLCB1aW50OF90LCB1aW50OF90KTsNCitz dGF0aWMgdWludDhfdCAgICAgcnVtX2JicF9yZWFkKHN0cnVjdCBydW1fc29mdGMgKiwgdWlu dDhfdCk7DQorDQorc3RhdGljIGNvbnN0IGNoYXIgICpydW1fZ2V0X3JmKGludCk7DQorc3Rh dGljIHZvaWQgICAgICAgIHJ1bV9yZl93cml0ZShzdHJ1Y3QgcnVtX3NvZnRjICosIHVpbnQ4 X3QsIHVpbnQzMl90KTsNCitzdGF0aWMgdm9pZCAgICAgICAgcnVtX3NlbGVjdF9hbnRlbm5h KHN0cnVjdCBydW1fc29mdGMgKik7DQorc3RhdGljIHZvaWQgICAgICAgIHJ1bV9lbmFibGVf bXJyKHN0cnVjdCBydW1fc29mdGMgKik7DQorc3RhdGljIHZvaWQgICAgICAgIHJ1bV9zZXRf dHhwcmVhbWJsZShzdHJ1Y3QgcnVtX3NvZnRjICopOw0KK3N0YXRpYyB2b2lkICAgICAgICBy dW1fc2V0X2Jhc2ljcmF0ZXMoc3RydWN0IHJ1bV9zb2Z0YyAqKTsNCitzdGF0aWMgdm9pZCAg ICAgICAgcnVtX3NlbGVjdF9iYW5kKHN0cnVjdCBydW1fc29mdGMgKiwgc3RydWN0IGllZWU4 MDIxMV9jaGFubmVsICopOw0KK3N0YXRpYyB2b2lkICAgICAgICBydW1fc2V0X2NoYW4oc3Ry dWN0IHJ1bV9zb2Z0YyAqLCBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKik7DQorc3RhdGlj IHZvaWQgICAgICAgIHJ1bV9lbmFibGVfdHNmX3N5bmMoc3RydWN0IHJ1bV9zb2Z0YyAqKTsN CitzdGF0aWMgdm9pZCAgICAgICAgcnVtX3VwZGF0ZV9zbG90KHN0cnVjdCBydW1fc29mdGMg Kik7DQorc3RhdGljIHZvaWQgICAgICAgIHJ1bV9zZXRfYnNzaWQoc3RydWN0IHJ1bV9zb2Z0 YyAqLCBjb25zdCB1aW50OF90ICopOw0KK3N0YXRpYyB2b2lkICAgICAgICBydW1fc2V0X21h Y2FkZHIoc3RydWN0IHJ1bV9zb2Z0YyAqLCBjb25zdCB1aW50OF90ICopOw0KK3N0YXRpYyB2 b2lkICAgICAgICBydW1fdXBkYXRlX3Byb21pc2Moc3RydWN0IHJ1bV9zb2Z0YyAqKTsNCisN CitzdGF0aWMgaW50ICAgICAgICAgcnVtX3ByZXBhcmVfYmVhY29uKHN0cnVjdCBydW1fc29m dGMgKik7DQorDQorc3RhdGljIHZvaWQgICAgICAgIHJ1bV9hbXJyX3N0YXJ0KHN0cnVjdCBy dW1fc29mdGMgKiwgc3RydWN0IGllZWU4MDIxMV9ub2RlICopOw0KK3N0YXRpYyB2b2lkICAg ICAgICBydW1fYW1ycl90aW1lb3V0KHZvaWQgKik7DQorc3RhdGljIHZvaWQgICAgICAgIHJ1 bV9hbXJyX3VwZGF0ZSh1c2JkX3hmZXJfaGFuZGxlLCB1c2JkX3ByaXZhdGVfaGFuZGxlLCB1 c2JkX3N0YXR1cyBzdGF0dXMpOw0KKw0KKy8qDQorICogU3VwcG9ydGVkIHJhdGVzIGZvciA4 MDIuMTFhL2IvZyBtb2RlcyAoaW4gNTAwS2JwcyB1bml0KS4NCisgKi8NCitzdGF0aWMgY29u c3Qgc3RydWN0IGllZWU4MDIxMV9yYXRlc2V0IHJ1bV9yYXRlc2V0XzExYSA9DQorICAgIHsg OCwgeyAxMiwgMTgsIDI0LCAzNiwgNDgsIDcyLCA5NiwgMTA4IH0gfTsNCisNCitzdGF0aWMg Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9yYXRlc2V0IHJ1bV9yYXRlc2V0XzExYiA9DQorICAg IHsgNCwgeyAyLCA0LCAxMSwgMjIgfSB9Ow0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaWVl ZTgwMjExX3JhdGVzZXQgcnVtX3JhdGVzZXRfMTFnID0NCisgICAgeyAxMiwgeyAyLCA0LCAx MSwgMjIsIDEyLCAxOCwgMjQsIDM2LCA0OCwgNzIsIDk2LCAxMDggfSB9Ow0KKw0KK3N0YXRp YyBjb25zdCBzdHJ1Y3Qgew0KKyAgICB1aW50MzJfdCAgICByZWc7DQorICAgIHVpbnQzMl90 ICAgIHZhbDsNCit9IHJ1bV9kZWZfbWFjW10gPSB7DQorICAgIFJUMjU3M19ERUZfTUFDDQor fTsNCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHsNCisgICAgdWludDhfdCAgICByZWc7DQor ICAgIHVpbnQ4X3QgICAgdmFsOw0KK30gcnVtX2RlZl9iYnBbXSA9IHsNCisgICAgUlQyNTcz X0RFRl9CQlANCit9Ow0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmZwcm9nIHsNCisgICAg dWludDhfdCAgICAgICAgY2hhbjsNCisgICAgdWludDMyX3QgICAgcjEsIHIyLCByMywgcjQ7 DQorfSAgcnVtX3JmNTIyNltdID0gew0KKyAgICBSVDI1NzNfUkY1MjI2DQorfSwgcnVtX3Jm NTIyNVtdID0gew0KKyAgICBSVDI1NzNfUkY1MjI1DQorfTsNCisNCitVU0JfREVDTEFSRV9E UklWRVIocnVtKTsNCisNCitVU0JfTUFUQ0gocnVtKQ0KK3sNCisgICAgVVNCX01BVENIX1NU QVJUKHJ1bSwgdWFhKTsNCisNCisgICAgaWYgKHVhYS0+aWZhY2UgIT0gTlVMTCkNCisgICAg ICAgIHJldHVybiBVTUFUQ0hfTk9ORTsNCisNCisgICAgcmV0dXJuICh1c2JfbG9va3VwKHJ1 bV9kZXZzLCB1YWEtPnZlbmRvciwgdWFhLT5wcm9kdWN0KSAhPSBOVUxMKSA/DQorICAgICAg ICBVTUFUQ0hfVkVORE9SX1BST0RVQ1QgOiBVTUFUQ0hfTk9ORTsNCit9DQorDQorc3RhdGlj IHZvaWQNCitydW1fbG9hZF9mdyhzdHJ1Y3QgcnVtX3NvZnRjICpzYykNCit7DQorICAgIGNv bnN0IGNoYXIgKmZ3X25hbWUgPSAicnQyNTczIjsNCisgICAgY29uc3Qgc3RydWN0IGZpcm13 YXJlICpmcDsNCisJdV9pbnQgaTsNCisJc2l6ZV90IHNpemU7DQorICAgIHVzYl9kZXZpY2Vf cmVxdWVzdF90IHJlcTsNCisgICAgdWludDE2X3QgcmVnID0gUlQyNTczX01DVV9DT0RFX0JB U0U7DQorICAgIHVzYmRfc3RhdHVzIGVycm9yOw0KKw0KKyAgICBmcCA9IGZpcm13YXJlX2dl dChmd19uYW1lKTsNCisNCisgICAgaWYgKGZwID09IE5VTEwgfHwgZnAtPmRhdGFzaXplID09 IDApIHsNCisgICAgICAgIHByaW50ZigiJXM6IGZhaWxlZCBsb2FkZmlybXdhcmUgb2YgZmls ZSAlc1xuIiwNCisgICAgICAgICAgICBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19kZXYp LCBmd19uYW1lKTsNCisgICAgICAgIHJldHVybjsNCisgICAgfSBlbHNlIHsNCisgICAgICAg IHByaW50ZigiJXM6IGZpcm13YXJlIGxvYWRlZDogbmFtZTogJXMsIHNpemU6JWRcbiIsIGRl dmljZV9nZXRfbmFtZXVuaXQoc2MtPnNjX2RldiksIGZwLT5uYW1lLCAoaW50KWZwLT5kYXRh c2l6ZSk7DQorICAgIH0NCisNCisgICAgLyogY29weSBmaXJtd2FyZSBpbWFnZSBpbnRvIE5J QyAqLw0KKyAgICBmb3IgKGkgPSAwLCBzaXplID0gZnAtPmRhdGFzaXplOyBzaXplID49IDQ7 IA0KKwkJCXJlZyArPSA0LCBpICs9IDQsIHNpemUgLT0gNCkNCisgICAgICAgIHJ1bV93cml0 ZShzYywgcmVnLCBVR0VURFcoKGNvbnN0IHVfY2hhciopZnAtPmRhdGEgKyBpKSk7DQorDQor ICAgIHJlcS5ibVJlcXVlc3RUeXBlID0gVVRfV1JJVEVfVkVORE9SX0RFVklDRTsNCisgICAg cmVxLmJSZXF1ZXN0ID0gUlQyNTczX01DVV9DTlRMOw0KKyAgICBVU0VUVyhyZXEud1ZhbHVl LCBSVDI1NzNfTUNVX1JVTik7DQorICAgIFVTRVRXKHJlcS53SW5kZXgsIDApOw0KKyAgICBV U0VUVyhyZXEud0xlbmd0aCwgMCk7DQorDQorICAgIGVycm9yID0gdXNiZF9kb19yZXF1ZXN0 KHNjLT5zY191ZGV2LCAmcmVxLCBOVUxMKTsNCisgICAgaWYgKGVycm9yICE9IDApIHsNCisg ICAgICAgIHByaW50ZigiJXM6IGNvdWxkIG5vdCBydW4gZmlybXdhcmU6ICVzXG4iLA0KKyAg ICAgICAgICAgIGRldmljZV9nZXRfbmFtZXVuaXQoc2MtPnNjX2RldiksIHVzYmRfZXJyc3Ry KGVycm9yKSk7DQorICAgICAgICBwcmludGYoIiVzOiBjb3VsZCBub3QgbG9hZCA4MDUxIG1p Y3JvY29kZVxuIiwNCisgICAgICAgICAgICBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19k ZXYpKTsNCisgICAgfQ0KKw0KK30NCisNCitVU0JfQVRUQUNIKHJ1bSkNCit7DQorICAgIFVT Ql9BVFRBQ0hfU1RBUlQocnVtLCBzYywgdWFhKTsNCisgICAgc3RydWN0IGllZWU4MDIxMWNv bSAqaWMgPSAmc2MtPnNjX2ljOw0KKyAgICBzdHJ1Y3QgaWZuZXQgKmlmcCA9IE5VTEw7DQor ICAgIHVzYl9pbnRlcmZhY2VfZGVzY3JpcHRvcl90ICppZDsNCisgICAgdXNiX2VuZHBvaW50 X2Rlc2NyaXB0b3JfdCAqZWQ7DQorICAgIHVzYmRfc3RhdHVzIGVycm9yOw0KKyAgICBjaGFy IGRldmluZm9bMTAyNF07DQorICAgIGludCBpLCBudHJpZXM7DQorICAgIHVpbnQzMl90IHRt cDsNCisNCisJYnplcm8oc2MsIHNpemVvZihzdHJ1Y3QgcnVtX3NvZnRjKSk7DQorDQorICAg IHVzYmRfZGV2aW5mbyh1YWEtPmRldmljZSwgMCwgZGV2aW5mbyk7DQorDQorICAgIHNjLT5z Y191ZGV2ID0gdWFhLT5kZXZpY2U7DQorICAgIHNjLT5zY19mbGFncyA9IDA7DQorDQorICAg IFVTQl9BVFRBQ0hfU0VUVVA7DQorICAgIHByaW50ZigiJXM6ICVzXG4iLCBkZXZpY2VfZ2V0 X25hbWV1bml0KHNjLT5zY19kZXYpLCBkZXZpbmZvKTsNCisNCisgICAgaWYgKHVzYmRfc2V0 X2NvbmZpZ19ubyhzYy0+c2NfdWRldiwgUlQyNTczX0NPTkZJR19OTywgMCkgIT0gMCkgew0K KyAgICAgICAgcHJpbnRmKCIlczogY291bGQgbm90IHNldCBjb25maWd1cmF0aW9uIG5vXG4i LA0KKyAgICAgICAgICAgIGRldmljZV9nZXRfbmFtZXVuaXQoc2MtPnNjX2RldikpOw0KKyAg ICAgICAgVVNCX0FUVEFDSF9FUlJPUl9SRVRVUk47DQorICAgIH0NCisNCisgICAgLyogZ2V0 IHRoZSBmaXJzdCBpbnRlcmZhY2UgaGFuZGxlICovDQorICAgIGVycm9yID0gdXNiZF9kZXZp Y2UyaW50ZXJmYWNlX2hhbmRsZShzYy0+c2NfdWRldiwgUlQyNTczX0lGQUNFX0lOREVYLA0K KyAgICAgICAgJnNjLT5zY19pZmFjZSk7DQorICAgIGlmIChlcnJvciAhPSAwKSB7DQorICAg ICAgICBwcmludGYoIiVzOiBjb3VsZCBub3QgZ2V0IGludGVyZmFjZSBoYW5kbGVcbiIsDQor ICAgICAgICAgICAgZGV2aWNlX2dldF9uYW1ldW5pdChzYy0+c2NfZGV2KSk7DQorICAgICAg ICBVU0JfQVRUQUNIX0VSUk9SX1JFVFVSTjsNCisgICAgfQ0KKw0KKyAgICAvKg0KKyAgICAg KiBGaW5kIGVuZHBvaW50cy4NCisgICAgICovDQorICAgIGlkID0gdXNiZF9nZXRfaW50ZXJm YWNlX2Rlc2NyaXB0b3Ioc2MtPnNjX2lmYWNlKTsNCisNCisgICAgc2MtPnNjX3J4X25vID0g c2MtPnNjX3R4X25vID0gLTE7DQorICAgIGZvciAoaSA9IDA7IGkgPCBpZC0+Yk51bUVuZHBv aW50czsgaSsrKSB7DQorICAgICAgICBlZCA9IHVzYmRfaW50ZXJmYWNlMmVuZHBvaW50X2Rl c2NyaXB0b3Ioc2MtPnNjX2lmYWNlLCBpKTsNCisgICAgICAgIGlmIChlZCA9PSBOVUxMKSB7 DQorICAgICAgICAgICAgcHJpbnRmKCIlczogbm8gZW5kcG9pbnQgZGVzY3JpcHRvciBmb3Ig aWZhY2UgJWRcbiIsDQorICAgICAgICAgICAgICAgIGRldmljZV9nZXRfbmFtZXVuaXQoc2Mt PnNjX2RldiksIGkpOw0KKyAgICAgICAgICAgIFVTQl9BVFRBQ0hfRVJST1JfUkVUVVJOOw0K KyAgICAgICAgfQ0KKw0KKyAgICAgICAgaWYgKFVFX0dFVF9ESVIoZWQtPmJFbmRwb2ludEFk ZHJlc3MpID09IFVFX0RJUl9JTiAmJg0KKyAgICAgICAgICAgIFVFX0dFVF9YRkVSVFlQRShl ZC0+Ym1BdHRyaWJ1dGVzKSA9PSBVRV9CVUxLKQ0KKyAgICAgICAgICAgIHNjLT5zY19yeF9u byA9IGVkLT5iRW5kcG9pbnRBZGRyZXNzOw0KKyAgICAgICAgZWxzZSBpZiAoVUVfR0VUX0RJ UihlZC0+YkVuZHBvaW50QWRkcmVzcykgPT0gVUVfRElSX09VVCAmJg0KKyAgICAgICAgICAg IFVFX0dFVF9YRkVSVFlQRShlZC0+Ym1BdHRyaWJ1dGVzKSA9PSBVRV9CVUxLKQ0KKyAgICAg ICAgICAgIHNjLT5zY190eF9ubyA9IGVkLT5iRW5kcG9pbnRBZGRyZXNzOw0KKyAgICB9DQor ICAgIGlmIChzYy0+c2Nfcnhfbm8gPT0gLTEgfHwgc2MtPnNjX3R4X25vID09IC0xKSB7DQor ICAgICAgICBwcmludGYoIiVzOiBtaXNzaW5nIGVuZHBvaW50XG4iLCBkZXZpY2VfZ2V0X25h bWV1bml0KHNjLT5zY19kZXYpKTsNCisgICAgICAgIFVTQl9BVFRBQ0hfRVJST1JfUkVUVVJO Ow0KKyAgICB9DQorCQ0KKyAgICBtdHhfaW5pdCgmc2MtPnNjX210eCwgZGV2aWNlX2dldF9u YW1ldW5pdChzYy0+c2NfZGV2KSwgTVRYX05FVFdPUktfTE9DSywgDQorCQlNVFhfREVGIHwg TVRYX1JFQ1VSU0UpOw0KKw0KKyAgICB1c2JfaW5pdF90YXNrKCZzYy0+c2NfdGFzaywgcnVt X3Rhc2ssIHNjKTsNCisgICAgY2FsbG91dF9pbml0KCZzYy0+c2Nhbl9jaCwgZGVidWdfbXBz YWZlbmV0ID8gQ0FMTE9VVF9NUFNBRkUgOiAwKTsNCisgICAgY2FsbG91dF9pbml0KCZzYy0+ YW1ycl9jaCwgMCk7DQorDQorICAgIC8qIHJldHJpZXZlIFJUMjU3MyByZXYuIG5vICovDQor ICAgIGZvciAobnRyaWVzID0gMDsgbnRyaWVzIDwgMTAwMDsgbnRyaWVzKyspIHsNCisgICAg ICAgIGlmICgodG1wID0gcnVtX3JlYWQoc2MsIFJUMjU3M19NQUNfQ1NSMCkpICE9IDApDQor ICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBERUxBWSgxMDAwKTsNCisgICAgfQ0KKyAg ICBpZiAobnRyaWVzID09IDEwMDApIHsNCisgICAgICAgIHByaW50ZigiJXM6IHRpbWVvdXQg d2FpdGluZyBmb3IgY2hpcCB0byBzZXR0bGVcbiIsDQorICAgICAgICAgICAgZGV2aWNlX2dl dF9uYW1ldW5pdChzYy0+c2NfZGV2KSk7DQorICAgICAgICBVU0JfQVRUQUNIX0VSUk9SX1JF VFVSTjsNCisgICAgfQ0KKw0KKyAgICAvKiByZXRyaWV2ZSBNQUMgYWRkcmVzcyBhbmQgdmFy aW91cyBvdGhlciB0aGluZ3MgZnJvbSBFRVBST00gKi8NCisgICAgcnVtX3JlYWRfZWVwcm9t KHNjKTsNCisNCisgICAgcHJpbnRmKCIlczogTUFDL0JCUCBSVCUwNHggKHJldiAweCUwNXgp LCBSRiAlcywgYWRkcmVzcyAlc1xuIiwNCisgICAgICAgIGRldmljZV9nZXRfbmFtZXVuaXQo c2MtPnNjX2RldiksIHNjLT5tYWNiYnBfcmV2LCB0bXAsDQorICAgICAgICBydW1fZ2V0X3Jm KHNjLT5yZl9yZXYpLCBldGhlcl9zcHJpbnRmKGljLT5pY19teWFkZHIpKTsNCisNCisgICAg aWZwID0gc2MtPnNjX2lmcCA9IGlmX2FsbG9jKElGVF9FVEhFUik7DQorICAgIGlmIChpZnAg PT0gTlVMTCkgew0KKyAgICAgICAgcHJpbnRmKCIlczogY2FuIG5vdCBpZl9hbGxvYygpXG4i LCBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19kZXYpKTsNCisgICAgICAgIFVTQl9BVFRB Q0hfRVJST1JfUkVUVVJOOw0KKyAgICB9DQorDQorI2lmIDENCisgICAgcnVtX2xvYWRfZnco c2MpOw0KKyNlbmRpZg0KKw0KKyAgICBpYy0+aWNfaWZwID0gaWZwOw0KKyAgICBpYy0+aWNf cGh5dHlwZSA9IElFRUU4MDIxMV9UX09GRE07ICAgIC8qIG5vdCBvbmx5LCBidXQgbm90IHVz ZWQgKi8NCisgICAgaWMtPmljX29wbW9kZSAgPSBJRUVFODAyMTFfTV9TVEE7ICAgIC8qIGRl ZmF1bHQgdG8gQlNTIG1vZGUgKi8NCisgICAgaWMtPmljX3N0YXRlICAgPSBJRUVFODAyMTFf U19JTklUOw0KKw0KKyAgICAvKiBzZXQgZGV2aWNlIGNhcGFiaWxpdGllcyAqLw0KKyAgICBp Yy0+aWNfY2FwcyA9DQorICAgICAgICBJRUVFODAyMTFfQ19JQlNTIHwgICAgICAgIC8qIElC U1MgbW9kZSBzdXBwb3J0ZWQgKi8NCisgICAgICAgIElFRUU4MDIxMV9DX01PTklUT1IgfCAg ICAvKiBtb25pdG9yIG1vZGUgc3VwcG9ydGVkICovDQorICAgICAgICBJRUVFODAyMTFfQ19I T1NUQVAgfCAgICAvKiBIb3N0QXAgbW9kZSBzdXBwb3J0ZWQgKi8NCisgICAgICAgIElFRUU4 MDIxMV9DX1RYUE1HVCB8ICAgIC8qIHR4IHBvd2VyIG1hbmFnZW1lbnQgKi8NCisgICAgICAg IElFRUU4MDIxMV9DX1NIUFJFQU1CTEUgfCAgICAvKiBzaG9ydCBwcmVhbWJsZSBzdXBwb3J0 ZWQgKi8NCisgICAgICAgIElFRUU4MDIxMV9DX1NIU0xPVCB8ICAgIC8qIHNob3J0IHNsb3Qg dGltZSBzdXBwb3J0ZWQgKi8NCisgICAgICAgIElFRUU4MDIxMV9DX1dQQTsgICAgICAgIC8q IDgwMi4xMWkgKi8NCisNCisgICAgaWYgKHNjLT5yZl9yZXYgPT0gUlQyNTczX1JGXzUyMjUg fHwgc2MtPnJmX3JldiA9PSBSVDI1NzNfUkZfNTIyNikgew0KKyAgICAgICAgLyogc2V0IHN1 cHBvcnRlZCAuMTFhIHJhdGVzICovDQorICAgICAgICBpYy0+aWNfc3VwX3JhdGVzW0lFRUU4 MDIxMV9NT0RFXzExQV0gPSBydW1fcmF0ZXNldF8xMWE7DQorDQorICAgICAgICAvKiBzZXQg c3VwcG9ydGVkIC4xMWEgY2hhbm5lbHMgKi8NCisgICAgICAgIGZvciAoaSA9IDM0OyBpIDw9 IDQ2OyBpICs9IDQpIHsNCisgICAgICAgICAgICBpYy0+aWNfY2hhbm5lbHNbaV0uaWNfZnJl cSA9DQorICAgICAgICAgICAgICAgIGllZWU4MDIxMV9pZWVlMm1oeihpLCBJRUVFODAyMTFf Q0hBTl81R0haKTsNCisgICAgICAgICAgICBpYy0+aWNfY2hhbm5lbHNbaV0uaWNfZmxhZ3Mg PSBJRUVFODAyMTFfQ0hBTl9BOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZm9yIChpID0gMzY7 IGkgPD0gNjQ7IGkgKz0gNCkgew0KKyAgICAgICAgICAgIGljLT5pY19jaGFubmVsc1tpXS5p Y19mcmVxID0NCisgICAgICAgICAgICAgICAgaWVlZTgwMjExX2llZWUybWh6KGksIElFRUU4 MDIxMV9DSEFOXzVHSFopOw0KKyAgICAgICAgICAgIGljLT5pY19jaGFubmVsc1tpXS5pY19m bGFncyA9IElFRUU4MDIxMV9DSEFOX0E7DQorICAgICAgICB9DQorICAgICAgICBmb3IgKGkg PSAxMDA7IGkgPD0gMTQwOyBpICs9IDQpIHsNCisgICAgICAgICAgICBpYy0+aWNfY2hhbm5l bHNbaV0uaWNfZnJlcSA9DQorICAgICAgICAgICAgICAgIGllZWU4MDIxMV9pZWVlMm1oeihp LCBJRUVFODAyMTFfQ0hBTl81R0haKTsNCisgICAgICAgICAgICBpYy0+aWNfY2hhbm5lbHNb aV0uaWNfZmxhZ3MgPSBJRUVFODAyMTFfQ0hBTl9BOw0KKyAgICAgICAgfQ0KKyAgICAgICAg Zm9yIChpID0gMTQ5OyBpIDw9IDE2NTsgaSArPSA0KSB7DQorICAgICAgICAgICAgaWMtPmlj X2NoYW5uZWxzW2ldLmljX2ZyZXEgPQ0KKyAgICAgICAgICAgICAgICBpZWVlODAyMTFfaWVl ZTJtaHooaSwgSUVFRTgwMjExX0NIQU5fNUdIWik7DQorICAgICAgICAgICAgaWMtPmljX2No YW5uZWxzW2ldLmljX2ZsYWdzID0gSUVFRTgwMjExX0NIQU5fQTsNCisgICAgICAgIH0NCisg ICAgfQ0KKw0KKyAgICAvKiBzZXQgc3VwcG9ydGVkIC4xMWIgYW5kIC4xMWcgcmF0ZXMgKi8N CisgICAgaWMtPmljX3N1cF9yYXRlc1tJRUVFODAyMTFfTU9ERV8xMUJdID0gcnVtX3JhdGVz ZXRfMTFiOw0KKyAgICBpYy0+aWNfc3VwX3JhdGVzW0lFRUU4MDIxMV9NT0RFXzExR10gPSBy dW1fcmF0ZXNldF8xMWc7DQorDQorICAgIC8qIHNldCBzdXBwb3J0ZWQgLjExYiBhbmQgLjEx ZyBjaGFubmVscyAoMSB0aHJvdWdoIDE0KSAqLw0KKyAgICBmb3IgKGkgPSAxOyBpIDw9IDE0 OyBpKyspIHsNCisgICAgICAgIGljLT5pY19jaGFubmVsc1tpXS5pY19mcmVxID0NCisgICAg ICAgICAgICBpZWVlODAyMTFfaWVlZTJtaHooaSwgSUVFRTgwMjExX0NIQU5fMkdIWik7DQor ICAgICAgICBpYy0+aWNfY2hhbm5lbHNbaV0uaWNfZmxhZ3MgPQ0KKyAgICAgICAgICAgIElF RUU4MDIxMV9DSEFOX0NDSyB8IElFRUU4MDIxMV9DSEFOX09GRE0gfA0KKyAgICAgICAgICAg IElFRUU4MDIxMV9DSEFOX0RZTiB8IElFRUU4MDIxMV9DSEFOXzJHSFo7DQorICAgIH0NCisN CisgICAgaWZwLT5pZl9zb2Z0YyA9IHNjOw0KKyAgICBpZl9pbml0bmFtZShpZnAsICJydW0i LCBkZXZpY2VfZ2V0X3VuaXQoc2MtPnNjX2RldikpOw0KKyAgICBpZnAtPmlmX2ZsYWdzID0g SUZGX0JST0FEQ0FTVCB8IElGRl9TSU1QTEVYIHwgSUZGX01VTFRJQ0FTVCB8IElGRl9ORUVE U0dJQU5UOw0KKyAgICBpZnAtPmlmX2luaXQgICAgID0gcnVtX2luaXQ7DQorICAgIGlmcC0+ aWZfaW9jdGwgICAgPSBydW1faW9jdGw7DQorICAgIGlmcC0+aWZfc3RhcnQgICAgPSBydW1f c3RhcnQ7DQorICAgIGlmcC0+aWZfd2F0Y2hkb2cgPSBydW1fd2F0Y2hkb2c7DQorDQorICAg IElGUV9TRVRfTUFYTEVOKCZpZnAtPmlmX3NuZCwgSUZRX01BWExFTik7DQorICAgIElGUV9T RVRfUkVBRFkoJmlmcC0+aWZfc25kKTsNCisNCisgICAgaWVlZTgwMjExX2lmYXR0YWNoKGlj KTsNCisNCisgICAgLyogb3ZlcnJpZGUgc3RhdGUgdHJhbnNpdGlvbiBtYWNoaW5lICovDQor ICAgIHNjLT5zY19uZXdzdGF0ZSA9IGljLT5pY19uZXdzdGF0ZTsNCisgICAgaWMtPmljX25l d3N0YXRlID0gcnVtX25ld3N0YXRlOw0KKyAgICBpZWVlODAyMTFfbWVkaWFfaW5pdChpYywg cnVtX21lZGlhX2NoYW5nZSwgaWVlZTgwMjExX21lZGlhX3N0YXR1cyk7DQorDQorICAgIGJw ZmF0dGFjaDIoaWZwLCBETFRfSUVFRTgwMl8xMV9SQURJTywNCisgICAgICAgIHNpemVvZiAo c3RydWN0IGllZWU4MDIxMV9mcmFtZSkgKyBJRUVFODAyMTFfUkFESU9UQVBfSERSTEVOLCAm c2MtPnNjX2RydmJwZik7DQorDQorICAgIHNjLT5zY19yeHRhcF9sZW4gPSBzaXplb2Ygc2Mt PnNjX3J4dGFwdTsNCisgICAgc2MtPnNjX3J4dGFwLndyX2loZHIuaXRfbGVuID0gaHRvbGUx NihzYy0+c2Nfcnh0YXBfbGVuKTsNCisgICAgc2MtPnNjX3J4dGFwLndyX2loZHIuaXRfcHJl c2VudCA9IGh0b2xlMzIoUlQyNTczX1JYX1JBRElPVEFQX1BSRVNFTlQpOw0KKw0KKyAgICBz Yy0+c2NfdHh0YXBfbGVuID0gc2l6ZW9mIHNjLT5zY190eHRhcHU7DQorICAgIHNjLT5zY190 eHRhcC53dF9paGRyLml0X2xlbiA9IGh0b2xlMTYoc2MtPnNjX3R4dGFwX2xlbik7DQorICAg IHNjLT5zY190eHRhcC53dF9paGRyLml0X3ByZXNlbnQgPSBodG9sZTMyKFJUMjU3M19UWF9S QURJT1RBUF9QUkVTRU5UKTsNCisNCisJaWYgKGJvb3R2ZXJib3NlKQ0KKyAgICAJaWVlZTgw MjExX2Fubm91bmNlKGljKTsNCisNCisgICAgVVNCX0FUVEFDSF9TVUNDRVNTX1JFVFVSTjsN Cit9DQorDQorVVNCX0RFVEFDSChydW0pDQorew0KKyAgICBVU0JfREVUQUNIX1NUQVJUKHJ1 bSwgc2MpOw0KKyAgICBzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9ICZzYy0+c2NfaWM7DQor ICAgIHN0cnVjdCBpZm5ldCAqaWZwID0gc2MtPnNjX2lmcDsNCisNCisgICAgcnVtX3N0b3Ao aWZwKTsNCisgICAgdXNiX3JlbV90YXNrKHNjLT5zY191ZGV2LCAmc2MtPnNjX3Rhc2spOw0K KyAgICBjYWxsb3V0X3N0b3AoJnNjLT5zY2FuX2NoKTsNCisgICAgY2FsbG91dF9zdG9wKCZz Yy0+YW1ycl9jaCk7DQorDQorICAgIGlmIChzYy0+YW1ycl94ZmVyICE9IE5VTEwpIHsNCisg ICAgICAgIHVzYmRfZnJlZV94ZmVyKHNjLT5hbXJyX3hmZXIpOw0KKyAgICAgICAgc2MtPmFt cnJfeGZlciA9IE5VTEw7DQorICAgIH0NCisNCisgICAgaWYgKHNjLT5zY19yeF9waXBlaCAh PSBOVUxMKSB7DQorICAgICAgICB1c2JkX2Fib3J0X3BpcGUoc2MtPnNjX3J4X3BpcGVoKTsN CisgICAgICAgIHVzYmRfY2xvc2VfcGlwZShzYy0+c2NfcnhfcGlwZWgpOw0KKyAgICB9DQor DQorICAgIGlmIChzYy0+c2NfdHhfcGlwZWggIT0gTlVMTCkgew0KKyAgICAgICAgdXNiZF9h Ym9ydF9waXBlKHNjLT5zY190eF9waXBlaCk7DQorICAgICAgICB1c2JkX2Nsb3NlX3BpcGUo c2MtPnNjX3R4X3BpcGVoKTsNCisgICAgfQ0KKw0KKyAgICBydW1fZnJlZV9yeF9saXN0KHNj KTsNCisgICAgcnVtX2ZyZWVfdHhfbGlzdChzYyk7DQorDQorICAgIGJwZmRldGFjaChpZnAp Ow0KKyAgICBpZWVlODAyMTFfaWZkZXRhY2goaWMpOyAgICAvKiBmcmVlIGFsbCBub2RlcyAq Lw0KKyAvLyAgIGlmX2RldGFjaChpZnApOw0KKyAgICBpZl9mcmVlKGlmcCk7DQorDQorLyoN CisgICAgdXNiZF9hZGRfZHJ2X2V2ZW50KFVTQl9FVkVOVF9EUklWRVJfREVUQUNILCBzYy0+ c2NfdWRldiwNCisgICAgICAgIFVTQkRFVihzYy0+c2NfZGV2KSk7DQorKi8NCisgICAgbXR4 X2Rlc3Ryb3koJnNjLT5zY19tdHgpOw0KKw0KKyAgICByZXR1cm4gMDsNCit9DQorDQorc3Rh dGljIGludA0KK3J1bV9hbGxvY190eF9saXN0KHN0cnVjdCBydW1fc29mdGMgKnNjKQ0KK3sN CisgICAgc3RydWN0IHJ1bV90eF9kYXRhICpkYXRhOw0KKyAgICBpbnQgaSwgZXJyb3I7DQor DQorICAgIHNjLT50eF9xdWV1ZWQgPSAwOw0KKw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgUlQy NTczX1RYX0xJU1RfQ09VTlQ7IGkrKykgew0KKyAgICAgICAgZGF0YSA9ICZzYy0+dHhfZGF0 YVtpXTsNCisNCisgICAgICAgIGRhdGEtPnNjID0gc2M7DQorDQorICAgICAgICBkYXRhLT54 ZmVyID0gdXNiZF9hbGxvY194ZmVyKHNjLT5zY191ZGV2KTsNCisgICAgICAgIGlmIChkYXRh LT54ZmVyID09IE5VTEwpIHsNCisgICAgICAgICAgICBwcmludGYoIiVzOiBjb3VsZCBub3Qg YWxsb2NhdGUgdHggeGZlclxuIiwNCisgICAgICAgICAgICAgICAgZGV2aWNlX2dldF9uYW1l dW5pdChzYy0+c2NfZGV2KSk7DQorICAgICAgICAgICAgZXJyb3IgPSBFTk9NRU07DQorICAg ICAgICAgICAgZ290byBmYWlsOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgZGF0YS0+YnVm ID0gdXNiZF9hbGxvY19idWZmZXIoZGF0YS0+eGZlciwNCisgICAgICAgICAgICBSVDI1NzNf VFhfREVTQ19TSVpFICsgTUNMQllURVMpOw0KKyAgICAgICAgaWYgKGRhdGEtPmJ1ZiA9PSBO VUxMKSB7DQorICAgICAgICAgICAgcHJpbnRmKCIlczogY291bGQgbm90IGFsbG9jYXRlIHR4 IGJ1ZmZlclxuIiwNCisgICAgICAgICAgICAgICAgZGV2aWNlX2dldF9uYW1ldW5pdChzYy0+ c2NfZGV2KSk7DQorICAgICAgICAgICAgZXJyb3IgPSBFTk9NRU07DQorICAgICAgICAgICAg Z290byBmYWlsOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIHJldHVybiAwOw0KKw0K K2ZhaWw6ICAgIHJ1bV9mcmVlX3R4X2xpc3Qoc2MpOw0KKyAgICByZXR1cm4gZXJyb3I7DQor fQ0KKw0KK3N0YXRpYyB2b2lkDQorcnVtX2ZyZWVfdHhfbGlzdChzdHJ1Y3QgcnVtX3NvZnRj ICpzYykNCit7DQorICAgIHN0cnVjdCBydW1fdHhfZGF0YSAqZGF0YTsNCisgICAgaW50IGk7 DQorDQorICAgIGZvciAoaSA9IDA7IGkgPCBSVDI1NzNfVFhfTElTVF9DT1VOVDsgaSsrKSB7 DQorICAgICAgICBkYXRhID0gJnNjLT50eF9kYXRhW2ldOw0KKw0KKyAgICAgICAgaWYgKGRh dGEtPnhmZXIgIT0gTlVMTCkgew0KKyAgICAgICAgICAgIHVzYmRfZnJlZV94ZmVyKGRhdGEt PnhmZXIpOw0KKyAgICAgICAgICAgIGRhdGEtPnhmZXIgPSBOVUxMOw0KKyAgICAgICAgfQ0K Kw0KKyAgICAgICAgaWYgKGRhdGEtPm5pICE9IE5VTEwpIHsNCisgICAgICAgICAgICBpZWVl ODAyMTFfZnJlZV9ub2RlKGRhdGEtPm5pKTsNCisgICAgICAgICAgICBkYXRhLT5uaSA9IE5V TEw7DQorICAgICAgICB9DQorICAgIH0NCit9DQorDQorc3RhdGljIGludA0KK3J1bV9hbGxv Y19yeF9saXN0KHN0cnVjdCBydW1fc29mdGMgKnNjKQ0KK3sNCisgICAgc3RydWN0IHJ1bV9y eF9kYXRhICpkYXRhOw0KKyAgICBpbnQgaSwgZXJyb3I7DQorDQorICAgIGZvciAoaSA9IDA7 IGkgPCBSVDI1NzNfUlhfTElTVF9DT1VOVDsgaSsrKSB7DQorICAgICAgICBkYXRhID0gJnNj LT5yeF9kYXRhW2ldOw0KKw0KKyAgICAgICAgZGF0YS0+c2MgPSBzYzsNCisNCisgICAgICAg IGRhdGEtPnhmZXIgPSB1c2JkX2FsbG9jX3hmZXIoc2MtPnNjX3VkZXYpOw0KKyAgICAgICAg aWYgKGRhdGEtPnhmZXIgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHByaW50ZigiJXM6IGNv dWxkIG5vdCBhbGxvY2F0ZSByeCB4ZmVyXG4iLA0KKyAgICAgICAgICAgICAgICBkZXZpY2Vf Z2V0X25hbWV1bml0KHNjLT5zY19kZXYpKTsNCisgICAgICAgICAgICBlcnJvciA9IEVOT01F TTsNCisgICAgICAgICAgICBnb3RvIGZhaWw7DQorICAgICAgICB9DQorDQorICAgICAgICBp ZiAodXNiZF9hbGxvY19idWZmZXIoZGF0YS0+eGZlciwgTUNMQllURVMpID09IE5VTEwpIHsN CisgICAgICAgICAgICBwcmludGYoIiVzOiBjb3VsZCBub3QgYWxsb2NhdGUgcnggYnVmZmVy XG4iLA0KKyAgICAgICAgICAgICAgICBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19kZXYp KTsNCisgICAgICAgICAgICBlcnJvciA9IEVOT01FTTsNCisgICAgICAgICAgICBnb3RvIGZh aWw7DQorICAgICAgICB9DQorDQorICAgICAgICBNR0VUSERSKGRhdGEtPm0sIE1fRE9OVFdB SVQsIE1UX0RBVEEpOw0KKyAgICAgICAgaWYgKGRhdGEtPm0gPT0gTlVMTCkgew0KKyAgICAg ICAgICAgIHByaW50ZigiJXM6IGNvdWxkIG5vdCBhbGxvY2F0ZSByeCBtYnVmXG4iLA0KKyAg ICAgICAgICAgICAgICBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19kZXYpKTsNCisgICAg ICAgICAgICBlcnJvciA9IEVOT01FTTsNCisgICAgICAgICAgICBnb3RvIGZhaWw7DQorICAg ICAgICB9DQorDQorICAgICAgICBNQ0xHRVQoZGF0YS0+bSwgTV9ET05UV0FJVCk7DQorICAg ICAgICBpZiAoIShkYXRhLT5tLT5tX2ZsYWdzICYgTV9FWFQpKSB7DQorICAgICAgICAgICAg cHJpbnRmKCIlczogY291bGQgbm90IGFsbG9jYXRlIHJ4IG1idWYgY2x1c3RlclxuIiwNCisg ICAgICAgICAgICAgICAgZGV2aWNlX2dldF9uYW1ldW5pdChzYy0+c2NfZGV2KSk7DQorICAg ICAgICAgICAgZXJyb3IgPSBFTk9NRU07DQorICAgICAgICAgICAgZ290byBmYWlsOw0KKyAg ICAgICAgfQ0KKw0KKyAgICAgICAgZGF0YS0+YnVmID0gbXRvZChkYXRhLT5tLCB1aW50OF90 ICopOw0KKyAgICB9DQorDQorICAgIHJldHVybiAwOw0KKw0KK2ZhaWw6ICAgIHJ1bV9mcmVl X3R4X2xpc3Qoc2MpOw0KKyAgICByZXR1cm4gZXJyb3I7DQorfQ0KKw0KK3N0YXRpYyB2b2lk DQorcnVtX2ZyZWVfcnhfbGlzdChzdHJ1Y3QgcnVtX3NvZnRjICpzYykNCit7DQorICAgIHN0 cnVjdCBydW1fcnhfZGF0YSAqZGF0YTsNCisgICAgaW50IGk7DQorDQorICAgIGZvciAoaSA9 IDA7IGkgPCBSVDI1NzNfUlhfTElTVF9DT1VOVDsgaSsrKSB7DQorICAgICAgICBkYXRhID0g JnNjLT5yeF9kYXRhW2ldOw0KKw0KKyAgICAgICAgaWYgKGRhdGEtPnhmZXIgIT0gTlVMTCkg ew0KKyAgICAgICAgICAgIHVzYmRfZnJlZV94ZmVyKGRhdGEtPnhmZXIpOw0KKyAgICAgICAg ICAgIGRhdGEtPnhmZXIgPSBOVUxMOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgaWYgKGRh dGEtPm0gIT0gTlVMTCkgew0KKyAgICAgICAgICAgIG1fZnJlZW0oZGF0YS0+bSk7DQorICAg ICAgICAgICAgZGF0YS0+bSA9IE5VTEw7DQorICAgICAgICB9DQorICAgIH0NCit9DQorDQor c3RhdGljIGludA0KK3J1bV9tZWRpYV9jaGFuZ2Uoc3RydWN0IGlmbmV0ICppZnApDQorew0K KyAgICBzdHJ1Y3QgcnVtX3NvZnRjICpzYyA9IGlmcC0+aWZfc29mdGM7DQorICAgIGludCBl cnJvcjsNCisNCisgICAgUlVNX0xPQ0soc2MpOw0KKw0KKyAgICBlcnJvciA9IGllZWU4MDIx MV9tZWRpYV9jaGFuZ2UoaWZwKTsNCisgICAgaWYgKGVycm9yICE9IEVORVRSRVNFVCl7DQor ICAgIAlSVU1fVU5MT0NLKHNjKTsNCisgICAgICAgIHJldHVybiBlcnJvcjsNCisgICAgfQ0K Kw0KKyAgICBpZiAoKGlmcC0+aWZfZmxhZ3MgJiBJRkZfVVApICYmDQorICAgICAgICAoaWZw LT5pZl9kcnZfZmxhZ3MgJiBJRkZfRFJWX1JVTk5JTkcpKQ0KKyAgICAgICAgcnVtX2luaXQo c2MpOw0KKw0KKyAgICBSVU1fVU5MT0NLKHNjKTsNCisNCisgICAgcmV0dXJuIDA7DQorfQ0K Kw0KKy8qDQorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgcGVyaW9kaWNhbGx5IChldmVy eSAyMDBtcykgZHVyaW5nIHNjYW5uaW5nIHRvDQorICogc3dpdGNoIGZyb20gb25lIGNoYW5u ZWwgdG8gYW5vdGhlci4NCisgKi8NCitzdGF0aWMgdm9pZA0KK3J1bV9uZXh0X3NjYW4odm9p ZCAqYXJnKQ0KK3sNCisgICAgc3RydWN0IHJ1bV9zb2Z0YyAqc2MgPSBhcmc7DQorICAgIHN0 cnVjdCBpZWVlODAyMTFjb20gKmljID0gJnNjLT5zY19pYzsNCisNCisgICAgaWYgKGljLT5p Y19zdGF0ZSA9PSBJRUVFODAyMTFfU19TQ0FOKQ0KKyAgICAgICAgaWVlZTgwMjExX25leHRf c2NhbihpYyk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkDQorcnVtX3Rhc2sodm9pZCAqYXJnKQ0K K3sNCisgICAgc3RydWN0IHJ1bV9zb2Z0YyAqc2MgPSBhcmc7DQorICAgIHN0cnVjdCBpZWVl ODAyMTFjb20gKmljID0gJnNjLT5zY19pYzsNCisgICAgZW51bSBpZWVlODAyMTFfc3RhdGUg b3N0YXRlOw0KKyAgICBzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pOw0KKyAgICB1aW50MzJf dCB0bXA7DQorDQorICAgIG9zdGF0ZSA9IGljLT5pY19zdGF0ZTsNCisNCisgICAgc3dpdGNo IChzYy0+c2Nfc3RhdGUpIHsNCisgICAgY2FzZSBJRUVFODAyMTFfU19JTklUOg0KKyAgICAg ICAgaWYgKG9zdGF0ZSA9PSBJRUVFODAyMTFfU19SVU4pIHsNCisgICAgICAgICAgICAvKiBh Ym9ydCBUU0Ygc3luY2hyb25pemF0aW9uICovDQorICAgICAgICAgICAgdG1wID0gcnVtX3Jl YWQoc2MsIFJUMjU3M19UWFJYX0NTUjkpOw0KKyAgICAgICAgICAgIHJ1bV93cml0ZShzYywg UlQyNTczX1RYUlhfQ1NSOSwgdG1wICYgfjB4MDBmZmZmZmYpOw0KKyAgICAgICAgfQ0KKyAg ICAgICAgYnJlYWs7DQorDQorICAgIGNhc2UgSUVFRTgwMjExX1NfU0NBTjoNCisgICAgICAg IHJ1bV9zZXRfY2hhbihzYywgaWMtPmljX2N1cmNoYW4pOw0KKyAgICAgICAgY2FsbG91dF9y ZXNldCgmc2MtPnNjYW5fY2gsIGh6IC8gNSwgcnVtX25leHRfc2Nhbiwgc2MpOw0KKyAgICAg ICAgYnJlYWs7DQorDQorICAgIGNhc2UgSUVFRTgwMjExX1NfQVVUSDoNCisgICAgICAgIHJ1 bV9zZXRfY2hhbihzYywgaWMtPmljX2N1cmNoYW4pOw0KKyAgICAgICAgYnJlYWs7DQorDQor ICAgIGNhc2UgSUVFRTgwMjExX1NfQVNTT0M6DQorICAgICAgICBydW1fc2V0X2NoYW4oc2Ms IGljLT5pY19jdXJjaGFuKTsNCisgICAgICAgIGJyZWFrOw0KKw0KKyAgICBjYXNlIElFRUU4 MDIxMV9TX1JVTjoNCisgICAgICAgIHJ1bV9zZXRfY2hhbihzYywgaWMtPmljX2N1cmNoYW4p Ow0KKw0KKyAgICAgICAgbmkgPSBpYy0+aWNfYnNzOw0KKw0KKyAgICAgICAgaWYgKGljLT5p Y19vcG1vZGUgIT0gSUVFRTgwMjExX01fTU9OSVRPUikgew0KKyAgICAgICAgICAgIHJ1bV91 cGRhdGVfc2xvdChzYyk7DQorICAgICAgICAgICAgcnVtX2VuYWJsZV9tcnIoc2MpOw0KKyAg ICAgICAgICAgIHJ1bV9zZXRfdHhwcmVhbWJsZShzYyk7DQorICAgICAgICAgICAgcnVtX3Nl dF9iYXNpY3JhdGVzKHNjKTsNCisgICAgICAgICAgICBydW1fc2V0X2Jzc2lkKHNjLCBuaS0+ bmlfYnNzaWQpOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgaWYgKGljLT5pY19vcG1vZGUg PT0gSUVFRTgwMjExX01fSE9TVEFQIHx8DQorICAgICAgICAgICAgaWMtPmljX29wbW9kZSA9 PSBJRUVFODAyMTFfTV9JQlNTKQ0KKyAgICAgICAgICAgIHJ1bV9wcmVwYXJlX2JlYWNvbihz Yyk7DQorDQorICAgICAgICBpZiAoaWMtPmljX29wbW9kZSAhPSBJRUVFODAyMTFfTV9NT05J VE9SKQ0KKyAgICAgICAgICAgIHJ1bV9lbmFibGVfdHNmX3N5bmMoc2MpOw0KKw0KKyAgICAg ICAgLyogZW5hYmxlIGF1dG9tYXRpYyByYXRlIGFkYXB0YXRpb24gaW4gU1RBIG1vZGUgKi8N CisgICAgICAgIGlmIChpYy0+aWNfb3Btb2RlID09IElFRUU4MDIxMV9NX1NUQSAmJg0KKyAg ICAgICAgICAgIGljLT5pY19maXhlZF9yYXRlID09IElFRUU4MDIxMV9GSVhFRF9SQVRFX05P TkUpDQorICAgICAgICAgICAgcnVtX2FtcnJfc3RhcnQoc2MsIG5pKTsNCisNCisgICAgICAg IGJyZWFrOw0KKyAgICB9DQorDQorICAgIHNjLT5zY19uZXdzdGF0ZShpYywgc2MtPnNjX3N0 YXRlLCAtMSk7DQorfQ0KKw0KK3N0YXRpYyBpbnQNCitydW1fbmV3c3RhdGUoc3RydWN0IGll ZWU4MDIxMWNvbSAqaWMsIGVudW0gaWVlZTgwMjExX3N0YXRlIG5zdGF0ZSwgaW50IGFyZykN Cit7DQorICAgIHN0cnVjdCBydW1fc29mdGMgKnNjID0gaWMtPmljX2lmcC0+aWZfc29mdGM7 DQorDQorICAgIHVzYl9yZW1fdGFzayhzYy0+c2NfdWRldiwgJnNjLT5zY190YXNrKTsNCisg ICAgY2FsbG91dF9zdG9wKCZzYy0+c2Nhbl9jaCk7DQorICAgIGNhbGxvdXRfc3RvcCgmc2Mt PmFtcnJfY2gpOw0KKw0KKyAgICAvKiBkbyBpdCBpbiBhIHByb2Nlc3MgY29udGV4dCAqLw0K KyAgICBzYy0+c2Nfc3RhdGUgPSBuc3RhdGU7DQorICAgIHVzYl9hZGRfdGFzayhzYy0+c2Nf dWRldiwgJnNjLT5zY190YXNrLCBVU0JfVEFTS1FfRFJJVkVSKTsNCisNCisgICAgcmV0dXJu IDA7DQorfQ0KKw0KKy8qIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGEgZ2l2ZW4gcmF0ZSBpcyBD Q0sgb3IgT0ZETSAqLw0KKyNkZWZpbmUgUlVNX1JBVEVfSVNfT0ZETShyYXRlKSAgICAoKHJh dGUpID49IDEyICYmIChyYXRlKSAhPSAyMikNCisNCisjZGVmaW5lIFJVTV9BQ0tfU0laRSAg ICAxNCAgICAvKiAxMCArIDQoRkNTKSAqLw0KKyNkZWZpbmUgUlVNX0NUU19TSVpFICAgIDE0 ICAgIC8qIDEwICsgNChGQ1MpICovDQorDQorc3RhdGljIHZvaWQNCitydW1fdHhlb2YodXNi ZF94ZmVyX2hhbmRsZSB4ZmVyLCB1c2JkX3ByaXZhdGVfaGFuZGxlIHByaXYsIHVzYmRfc3Rh dHVzIHN0YXR1cykNCit7DQorICAgIHN0cnVjdCBydW1fdHhfZGF0YSAqZGF0YSA9IHByaXY7 DQorICAgIHN0cnVjdCBydW1fc29mdGMgKnNjID0gZGF0YS0+c2M7DQorICAgIHN0cnVjdCBp Zm5ldCAqaWZwID0gc2MtPnNjX2lmcDsNCisNCisgICAgaWYgKHN0YXR1cyAhPSBVU0JEX05P Uk1BTF9DT01QTEVUSU9OKSB7DQorICAgICAgICBpZiAoc3RhdHVzID09IFVTQkRfTk9UX1NU QVJURUQgfHwgc3RhdHVzID09IFVTQkRfQ0FOQ0VMTEVEKXsNCisgICAgICAgICAgICByZXR1 cm47DQorCQl9DQorDQorICAgIAlwcmludGYoIiVzOiBjb3VsZCBub3QgdHJhbnNtaXQgYnVm ZmVyOiAlc1xuIiwNCisgICAgICAgICAgICBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19k ZXYpLCB1c2JkX2VycnN0cihzdGF0dXMpKTsNCisNCisgICAgICAgIGlmIChzdGF0dXMgPT0g VVNCRF9TVEFMTEVEKQ0KKyAgICAgICAgICAgIHVzYmRfY2xlYXJfZW5kcG9pbnRfc3RhbGxf YXN5bmMoc2MtPnNjX3R4X3BpcGVoKTsNCisNCisgICAgICAgIGlmcC0+aWZfb2Vycm9ycysr Ow0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorDQorICAgIG1fZnJlZW0oZGF0YS0+bSk7 DQorICAgIGRhdGEtPm0gPSBOVUxMOw0KKyAgICBpZWVlODAyMTFfZnJlZV9ub2RlKGRhdGEt Pm5pKTsNCisgICAgZGF0YS0+bmkgPSBOVUxMOw0KKw0KKyAgICBzYy0+dHhfcXVldWVkLS07 DQorICAgIGlmcC0+aWZfb3BhY2tldHMrKzsNCisNCisgICAgRFBSSU5URk4oMTAsICgidHgg ZG9uZVxuIikpOw0KKw0KKyAgICBzYy0+c2NfdHhfdGltZXIgPSAwOw0KKyAgICBpZnAtPmlm X2Rydl9mbGFncyAmPSB+SUZGX0RSVl9PQUNUSVZFOw0KKyAgICBydW1fc3RhcnQoaWZwKTsN CisNCit9DQorDQorc3RhdGljIHZvaWQNCitydW1fcnhlb2YodXNiZF94ZmVyX2hhbmRsZSB4 ZmVyLCB1c2JkX3ByaXZhdGVfaGFuZGxlIHByaXYsIHVzYmRfc3RhdHVzIHN0YXR1cykNCit7 DQorICAgIHN0cnVjdCBydW1fcnhfZGF0YSAqZGF0YSA9IHByaXY7DQorICAgIHN0cnVjdCBy dW1fc29mdGMgKnNjID0gZGF0YS0+c2M7DQorICAgIHN0cnVjdCBpZWVlODAyMTFjb20gKmlj ID0gJnNjLT5zY19pYzsNCisgICAgc3RydWN0IGlmbmV0ICppZnAgPSBzYy0+c2NfaWZwOw0K KyAgICBzdHJ1Y3QgcnVtX3J4X2Rlc2MgKmRlc2M7DQorICAgIHN0cnVjdCBpZWVlODAyMTFf ZnJhbWUgKndoOw0KKyAgICBzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pOw0KKyAgICBzdHJ1 Y3QgbWJ1ZiAqbW5ldywgKm07DQorICAgIGludCBsZW47DQorDQorICAgIGlmIChzdGF0dXMg IT0gVVNCRF9OT1JNQUxfQ09NUExFVElPTikgew0KKyAgICAgICAgaWYgKHN0YXR1cyA9PSBV U0JEX05PVF9TVEFSVEVEIHx8IHN0YXR1cyA9PSBVU0JEX0NBTkNFTExFRCl7DQorICAgICAg ICAgICAgcmV0dXJuOw0KKwkJfQ0KKw0KKyAgICAgICAgaWYgKHN0YXR1cyA9PSBVU0JEX1NU QUxMRUQpDQorICAgICAgICAgICAgdXNiZF9jbGVhcl9lbmRwb2ludF9zdGFsbF9hc3luYyhz Yy0+c2NfcnhfcGlwZWgpOw0KKyAgICAgICAgZ290byBza2lwOw0KKyAgICB9DQorDQorICAg IHVzYmRfZ2V0X3hmZXJfc3RhdHVzKHhmZXIsIE5VTEwsIE5VTEwsICZsZW4sIE5VTEwpOw0K Kw0KKyAgICBpZiAobGVuIDwgUlQyNTczX1JYX0RFU0NfU0laRSArIHNpemVvZiAoc3RydWN0 IGllZWU4MDIxMV9mcmFtZV9taW4pKSB7DQorICAgICAgICBEUFJJTlRGKCgiJXM6IHhmZXIg dG9vIHNob3J0ICVkXG4iLCBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19kZXYpLA0KKyAg ICAgICAgICAgIGxlbikpOw0KKyAgICAgICAgaWZwLT5pZl9pZXJyb3JzKys7DQorICAgICAg ICBnb3RvIHNraXA7DQorICAgIH0NCisNCisgICAgZGVzYyA9IChzdHJ1Y3QgcnVtX3J4X2Rl c2MgKilkYXRhLT5idWY7DQorDQorICAgIGlmIChsZTMydG9oKGRlc2MtPmZsYWdzKSAmIFJU MjU3M19SWF9DUkNfRVJST1IpIHsNCisgICAgICAgIC8qDQorICAgICAgICAgKiBUaGlzIHNo b3VsZCBub3QgaGFwcGVuIHNpbmNlIHdlIGRpZCBub3QgcmVxdWVzdCB0byByZWNlaXZlDQor ICAgICAgICAgKiB0aG9zZSBmcmFtZXMgd2hlbiB3ZSBmaWxsZWQgUlQyNTczX1RYUlhfQ1NS MC4NCisgICAgICAgICAqLw0KKyAgICAgICAgRFBSSU5URk4oNSwgKCJDUkMgZXJyb3JcbiIp KTsNCisgICAgICAgIGlmcC0+aWZfaWVycm9ycysrOw0KKyAgICAgICAgZ290byBza2lwOw0K KyAgICB9DQorDQorICAgIE1HRVRIRFIobW5ldywgTV9ET05UV0FJVCwgTVRfREFUQSk7DQor ICAgIGlmIChtbmV3ID09IE5VTEwpIHsNCisgICAgICAgIHByaW50ZigiJXM6IGNvdWxkIG5v dCBhbGxvY2F0ZSByeCBtYnVmXG4iLA0KKyAgICAgICAgICAgIGRldmljZV9nZXRfbmFtZXVu aXQoc2MtPnNjX2RldikpOw0KKyAgICAgICAgaWZwLT5pZl9pZXJyb3JzKys7DQorICAgICAg ICBnb3RvIHNraXA7DQorICAgIH0NCisNCisgICAgTUNMR0VUKG1uZXcsIE1fRE9OVFdBSVQp Ow0KKyAgICBpZiAoIShtbmV3LT5tX2ZsYWdzICYgTV9FWFQpKSB7DQorICAgICAgICBwcmlu dGYoIiVzOiBjb3VsZCBub3QgYWxsb2NhdGUgcnggbWJ1ZiBjbHVzdGVyXG4iLA0KKyAgICAg ICAgICAgIGRldmljZV9nZXRfbmFtZXVuaXQoc2MtPnNjX2RldikpOw0KKyAgICAgICAgbV9m cmVlbShtbmV3KTsNCisgICAgICAgIGlmcC0+aWZfaWVycm9ycysrOw0KKyAgICAgICAgZ290 byBza2lwOw0KKyAgICB9DQorDQorICAgIG0gPSBkYXRhLT5tOw0KKyAgICBkYXRhLT5tID0g bW5ldzsNCisgICAgZGF0YS0+YnVmID0gbXRvZChkYXRhLT5tLCB1aW50OF90ICopOw0KKw0K KyAgICAvKiBmaW5hbGl6ZSBtYnVmICovDQorICAgIG0tPm1fcGt0aGRyLnJjdmlmID0gaWZw Ow0KKyAgICBtLT5tX2RhdGEgPSAoY2FkZHJfdCkoZGVzYyArIDEpOw0KKyAgICBtLT5tX3Br dGhkci5sZW4gPSBtLT5tX2xlbiA9IChsZTMydG9oKGRlc2MtPmZsYWdzKSA+PiAxNikgJiAw eGZmZjsNCisNCisgICAgaWYgKHNjLT5zY19kcnZicGYgIT0gTlVMTCkgew0KKyAgICAgICAg c3RydWN0IHJ1bV9yeF9yYWRpb3RhcF9oZWFkZXIgKnRhcCA9ICZzYy0+c2Nfcnh0YXA7DQor DQorICAgICAgICB0YXAtPndyX2ZsYWdzID0gSUVFRTgwMjExX1JBRElPVEFQX0ZfRkNTOw0K KyAgICAgICAgdGFwLT53cl9yYXRlID0gcnVtX3J4cmF0ZShkZXNjKTsNCisgICAgICAgIHRh cC0+d3JfY2hhbl9mcmVxID0gaHRvbGUxNihpYy0+aWNfY3VyY2hhbi0+aWNfZnJlcSk7DQor ICAgICAgICB0YXAtPndyX2NoYW5fZmxhZ3MgPSBodG9sZTE2KGljLT5pY19jdXJjaGFuLT5p Y19mbGFncyk7DQorICAgICAgICB0YXAtPndyX2FudGVubmEgPSBzYy0+cnhfYW50Ow0KKyAg ICAgICAgdGFwLT53cl9hbnRzaWduYWwgPSBkZXNjLT5yc3NpOw0KKw0KKyAgICAgICAgYnBm X210YXAyKHNjLT5zY19kcnZicGYsIHRhcCwgc2MtPnNjX3J4dGFwX2xlbiwgbSk7DQorICAg IH0NCisNCisgICAgd2ggPSBtdG9kKG0sIHN0cnVjdCBpZWVlODAyMTFfZnJhbWUgKik7DQor ICAgIG5pID0gaWVlZTgwMjExX2ZpbmRfcnhub2RlKGljLCAoc3RydWN0IGllZWU4MDIxMV9m cmFtZV9taW4gKil3aCk7DQorDQorICAgIC8qIHNlbmQgdGhlIGZyYW1lIHRvIHRoZSA4MDIu MTEgbGF5ZXIgKi8NCisgICAgaWVlZTgwMjExX2lucHV0KGljLCBtLCBuaSwgZGVzYy0+cnNz aSwgMCk7DQorDQorICAgIC8qIG5vZGUgaXMgbm8gbG9uZ2VyIG5lZWRlZCAqLw0KKyAgICBp ZWVlODAyMTFfZnJlZV9ub2RlKG5pKTsNCisNCisgICAgRFBSSU5URk4oMTUsICgicnggZG9u ZVxuIikpOw0KKw0KK3NraXA6ICAgIC8qIHNldHVwIGEgbmV3IHRyYW5zZmVyICovDQorICAg IHVzYmRfc2V0dXBfeGZlcih4ZmVyLCBzYy0+c2NfcnhfcGlwZWgsIGRhdGEsIGRhdGEtPmJ1 ZiwgTUNMQllURVMsDQorICAgICAgICBVU0JEX1NIT1JUX1hGRVJfT0ssIFVTQkRfTk9fVElN RU9VVCwgcnVtX3J4ZW9mKTsNCisgICAgdXNiZF90cmFuc2Zlcih4ZmVyKTsNCit9DQorDQor LyoNCisgKiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZCBieSB0aGUgUnggcmFkaW90YXAg Y29kZS4gSXQgcmV0dXJucyB0aGUgcmF0ZSBhdA0KKyAqIHdoaWNoIGEgZ2l2ZW4gZnJhbWUg d2FzIHJlY2VpdmVkLg0KKyAqLw0KK3N0YXRpYyB1aW50OF90DQorcnVtX3J4cmF0ZShzdHJ1 Y3QgcnVtX3J4X2Rlc2MgKmRlc2MpDQorew0KKyAgICBpZiAobGUzMnRvaChkZXNjLT5mbGFn cykgJiBSVDI1NzNfUlhfT0ZETSkgew0KKyAgICAgICAgLyogcmV2ZXJzZSBmdW5jdGlvbiBv ZiBydW1fcGxjcF9zaWduYWwgKi8NCisgICAgICAgIHN3aXRjaCAoZGVzYy0+cmF0ZSkgew0K KyAgICAgICAgY2FzZSAweGI6ICAgIHJldHVybiAxMjsNCisgICAgICAgIGNhc2UgMHhmOiAg ICByZXR1cm4gMTg7DQorICAgICAgICBjYXNlIDB4YTogICAgcmV0dXJuIDI0Ow0KKyAgICAg ICAgY2FzZSAweGU6ICAgIHJldHVybiAzNjsNCisgICAgICAgIGNhc2UgMHg5OiAgICByZXR1 cm4gNDg7DQorICAgICAgICBjYXNlIDB4ZDogICAgcmV0dXJuIDcyOw0KKyAgICAgICAgY2Fz ZSAweDg6ICAgIHJldHVybiA5NjsNCisgICAgICAgIGNhc2UgMHhjOiAgICByZXR1cm4gMTA4 Ow0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaWYgKGRlc2MtPnJhdGUg PT0gMTApDQorICAgICAgICAgICAgcmV0dXJuIDI7DQorICAgICAgICBpZiAoZGVzYy0+cmF0 ZSA9PSAyMCkNCisgICAgICAgICAgICByZXR1cm4gNDsNCisgICAgICAgIGlmIChkZXNjLT5y YXRlID09IDU1KQ0KKyAgICAgICAgICAgIHJldHVybiAxMTsNCisgICAgICAgIGlmIChkZXNj LT5yYXRlID09IDExMCkNCisgICAgICAgICAgICByZXR1cm4gMjI7DQorICAgIH0NCisgICAg cmV0dXJuIDI7ICAgIC8qIHNob3VsZCBub3QgZ2V0IHRoZXJlICovDQorfQ0KKw0KKy8qDQor ICogUmV0dXJuIHRoZSBleHBlY3RlZCBhY2sgcmF0ZSBmb3IgYSBmcmFtZSB0cmFuc21pdHRl ZCBhdCByYXRlIGByYXRlJy4NCisgKiBYWFg6IHRoaXMgc2hvdWxkIGRlcGVuZCBvbiB0aGUg ZGVzdGluYXRpb24gbm9kZSBiYXNpYyByYXRlIHNldC4NCisgKi8NCitzdGF0aWMgaW50DQor cnVtX2Fja19yYXRlKHN0cnVjdCBpZWVlODAyMTFjb20gKmljLCBpbnQgcmF0ZSkNCit7DQor ICAgIHN3aXRjaCAocmF0ZSkgew0KKyAgICAvKiBDQ0sgcmF0ZXMgKi8NCisgICAgY2FzZSAy Og0KKyAgICAgICAgcmV0dXJuIDI7DQorICAgIGNhc2UgNDoNCisgICAgY2FzZSAxMToNCisg ICAgY2FzZSAyMjoNCisgICAgICAgIHJldHVybiAoaWMtPmljX2N1cm1vZGUgPT0gSUVFRTgw MjExX01PREVfMTFCKSA/IDQgOiByYXRlOw0KKw0KKyAgICAvKiBPRkRNIHJhdGVzICovDQor ICAgIGNhc2UgMTI6DQorICAgIGNhc2UgMTg6DQorICAgICAgICByZXR1cm4gMTI7DQorICAg IGNhc2UgMjQ6DQorICAgIGNhc2UgMzY6DQorICAgICAgICByZXR1cm4gMjQ7DQorICAgIGNh c2UgNDg6DQorICAgIGNhc2UgNzI6DQorICAgIGNhc2UgOTY6DQorICAgIGNhc2UgMTA4Og0K KyAgICAgICAgcmV0dXJuIDQ4Ow0KKyAgICB9DQorDQorICAgIC8qIGRlZmF1bHQgdG8gMU1i cHMgKi8NCisgICAgcmV0dXJuIDI7DQorfQ0KKw0KKy8qDQorICogQ29tcHV0ZSB0aGUgZHVy YXRpb24gKGluIHVzKSBuZWVkZWQgdG8gdHJhbnNtaXQgYGxlbicgYnl0ZXMgYXQgcmF0ZSBg cmF0ZScuDQorICogVGhlIGZ1bmN0aW9uIGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lcyB0aGUg b3BlcmF0aW5nIG1vZGUgZGVwZW5kaW5nIG9uIHRoZQ0KKyAqIGdpdmVuIHJhdGUuIGBmbGFn cycgaW5kaWNhdGVzIHdoZXRoZXIgc2hvcnQgcHJlYW1ibGUgaXMgaW4gdXNlIG9yIG5vdC4N CisgKi8NCitzdGF0aWMgdWludDE2X3QNCitydW1fdHh0aW1lKGludCBsZW4sIGludCByYXRl LCB1aW50MzJfdCBmbGFncykNCit7DQorICAgIHVpbnQxNl90IHR4dGltZTsNCisNCisgICAg aWYgKFJVTV9SQVRFX0lTX09GRE0ocmF0ZSkpIHsNCisgICAgICAgIC8qIElFRUUgU3RkIDgw Mi4xMWEtMTk5OSwgcHAuIDM3ICovDQorICAgICAgICB0eHRpbWUgPSAoOCArIDQgKiBsZW4g KyAzICsgcmF0ZSAtIDEpIC8gcmF0ZTsNCisgICAgICAgIHR4dGltZSA9IDE2ICsgNCArIDQg KiB0eHRpbWUgKyA2Ow0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgLyogSUVFRSBTdGQgODAy LjExYi0xOTk5LCBwcC4gMjggKi8NCisgICAgICAgIHR4dGltZSA9ICgxNiAqIGxlbiArIHJh dGUgLSAxKSAvIHJhdGU7DQorICAgICAgICBpZiAocmF0ZSAhPSAyICYmIChmbGFncyAmIElF RUU4MDIxMV9GX1NIUFJFQU1CTEUpKQ0KKyAgICAgICAgICAgIHR4dGltZSArPSAgNzIgKyAy NDsNCisgICAgICAgIGVsc2UNCisgICAgICAgICAgICB0eHRpbWUgKz0gMTQ0ICsgNDg7DQor ICAgIH0NCisgICAgcmV0dXJuIHR4dGltZTsNCit9DQorDQorc3RhdGljIHVpbnQ4X3QNCity dW1fcGxjcF9zaWduYWwoaW50IHJhdGUpDQorew0KKyAgICBzd2l0Y2ggKHJhdGUpIHsNCisg ICAgLyogQ0NLIHJhdGVzIChyZXR1cm5lZCB2YWx1ZXMgYXJlIGRldmljZS1kZXBlbmRlbnQp ICovDQorICAgIGNhc2UgMjogICAgICAgIHJldHVybiAweDA7DQorICAgIGNhc2UgNDogICAg ICAgIHJldHVybiAweDE7DQorICAgIGNhc2UgMTE6ICAgIHJldHVybiAweDI7DQorICAgIGNh c2UgMjI6ICAgIHJldHVybiAweDM7DQorDQorICAgIC8qIE9GRE0gcmF0ZXMgKGNmIElFRUUg U3RkIDgwMi4xMWEtMTk5OSwgcHAuIDE0IFRhYmxlIDgwKSAqLw0KKyAgICBjYXNlIDEyOiAg ICByZXR1cm4gMHhiOw0KKyAgICBjYXNlIDE4OiAgICByZXR1cm4gMHhmOw0KKyAgICBjYXNl IDI0OiAgICByZXR1cm4gMHhhOw0KKyAgICBjYXNlIDM2OiAgICByZXR1cm4gMHhlOw0KKyAg ICBjYXNlIDQ4OiAgICByZXR1cm4gMHg5Ow0KKyAgICBjYXNlIDcyOiAgICByZXR1cm4gMHhk Ow0KKyAgICBjYXNlIDk2OiAgICByZXR1cm4gMHg4Ow0KKyAgICBjYXNlIDEwODogICAgcmV0 dXJuIDB4YzsNCisNCisgICAgLyogdW5zdXBwb3J0ZWQgcmF0ZXMgKHNob3VsZCBub3QgZ2V0 IHRoZXJlKSAqLw0KKyAgICBkZWZhdWx0OiAgICByZXR1cm4gMHhmZjsNCisgICAgfQ0KK30N CisNCitzdGF0aWMgdm9pZA0KK3J1bV9zZXR1cF90eF9kZXNjKHN0cnVjdCBydW1fc29mdGMg KnNjLCBzdHJ1Y3QgcnVtX3R4X2Rlc2MgKmRlc2MsDQorICAgIHVpbnQzMl90IGZsYWdzLCB1 aW50MTZfdCB4ZmxhZ3MsIGludCBsZW4sIGludCByYXRlKQ0KK3sNCisgICAgc3RydWN0IGll ZWU4MDIxMWNvbSAqaWMgPSAmc2MtPnNjX2ljOw0KKyAgICB1aW50MTZfdCBwbGNwX2xlbmd0 aDsNCisgICAgaW50IHJlbWFpbmRlcjsNCisNCisgICAgZGVzYy0+ZmxhZ3MgPSBodG9sZTMy KGZsYWdzKTsNCisgICAgZGVzYy0+ZmxhZ3MgfD0gaHRvbGUzMihSVDI1NzNfVFhfVkFMSUQp Ow0KKyAgICBkZXNjLT5mbGFncyB8PSBodG9sZTMyKGxlbiA8PCAxNik7DQorDQorICAgIGRl c2MtPnhmbGFncyA9IGh0b2xlMTYoeGZsYWdzKTsNCisNCisgICAgZGVzYy0+d21lID0gaHRv bGUxNigNCisgICAgICAgIFJUMjU3M19RSUQoMCkgfA0KKyAgICAgICAgUlQyNTczX0FJRlNO KDIpIHwNCisgICAgICAgIFJUMjU3M19MT0dDV01JTig0KSB8DQorICAgICAgICBSVDI1NzNf TE9HQ1dNQVgoMTApKTsNCisNCisgICAgLyogc2V0dXAgUExDUCBmaWVsZHMgKi8NCisgICAg ZGVzYy0+cGxjcF9zaWduYWwgID0gcnVtX3BsY3Bfc2lnbmFsKHJhdGUpOw0KKyAgICBkZXNj LT5wbGNwX3NlcnZpY2UgPSA0Ow0KKw0KKyAgICBsZW4gKz0gSUVFRTgwMjExX0NSQ19MRU47 DQorICAgIGlmIChSVU1fUkFURV9JU19PRkRNKHJhdGUpKSB7DQorICAgICAgICBkZXNjLT5m bGFncyB8PSBodG9sZTMyKFJUMjU3M19UWF9PRkRNKTsNCisNCisgICAgICAgIHBsY3BfbGVu Z3RoID0gbGVuICYgMHhmZmY7DQorICAgICAgICBkZXNjLT5wbGNwX2xlbmd0aF9oaSA9IHBs Y3BfbGVuZ3RoID4+IDY7DQorICAgICAgICBkZXNjLT5wbGNwX2xlbmd0aF9sbyA9IHBsY3Bf bGVuZ3RoICYgMHgzZjsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHBsY3BfbGVuZ3RoID0g KDE2ICogbGVuICsgcmF0ZSAtIDEpIC8gcmF0ZTsNCisgICAgICAgIGlmIChyYXRlID09IDIy KSB7DQorICAgICAgICAgICAgcmVtYWluZGVyID0gKDE2ICogbGVuKSAlIDIyOw0KKyAgICAg ICAgICAgIGlmIChyZW1haW5kZXIgIT0gMCAmJiByZW1haW5kZXIgPCA3KQ0KKyAgICAgICAg ICAgICAgICBkZXNjLT5wbGNwX3NlcnZpY2UgfD0gUlQyNTczX1BMQ1BfTEVOR0VYVDsNCisg ICAgICAgIH0NCisgICAgICAgIGRlc2MtPnBsY3BfbGVuZ3RoX2hpID0gcGxjcF9sZW5ndGgg Pj4gODsNCisgICAgICAgIGRlc2MtPnBsY3BfbGVuZ3RoX2xvID0gcGxjcF9sZW5ndGggJiAw eGZmOw0KKw0KKyAgICAgICAgaWYgKHJhdGUgIT0gMiAmJiAoaWMtPmljX2ZsYWdzICYgSUVF RTgwMjExX0ZfU0hQUkVBTUJMRSkpDQorICAgICAgICAgICAgZGVzYy0+cGxjcF9zaWduYWwg fD0gMHgwODsNCisgICAgfQ0KK30NCisNCisjZGVmaW5lIFJVTV9UWF9USU1FT1VUICAgIDUw MDANCisNCitzdGF0aWMgaW50DQorcnVtX3R4X21ndChzdHJ1Y3QgcnVtX3NvZnRjICpzYywg c3RydWN0IG1idWYgKm0wLCBzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pKQ0KK3sNCisgICAg c3RydWN0IGllZWU4MDIxMWNvbSAqaWMgPSAmc2MtPnNjX2ljOw0KKyAgICBzdHJ1Y3QgcnVt X3R4X2Rlc2MgKmRlc2M7DQorICAgIHN0cnVjdCBydW1fdHhfZGF0YSAqZGF0YTsNCisgICAg c3RydWN0IGllZWU4MDIxMV9mcmFtZSAqd2g7DQorICAgIHVpbnQzMl90IGZsYWdzID0gMDsN CisgICAgdWludDE2X3QgZHVyOw0KKyAgICB1c2JkX3N0YXR1cyBlcnJvcjsNCisgICAgaW50 IHhmZXJsZW4sIHJhdGU7DQorDQorICAgIGRhdGEgPSAmc2MtPnR4X2RhdGFbMF07DQorICAg IGRlc2MgPSAoc3RydWN0IHJ1bV90eF9kZXNjICopZGF0YS0+YnVmOw0KKw0KKyAgICByYXRl ID0gSUVFRTgwMjExX0lTX0NIQU5fNUdIWihpYy0+aWNfY3VyY2hhbikgPyAxMiA6IDI7DQor DQorICAgIGRhdGEtPm0gPSBtMDsNCisgICAgZGF0YS0+bmkgPSBuaTsNCisNCisgICAgd2gg PSBtdG9kKG0wLCBzdHJ1Y3QgaWVlZTgwMjExX2ZyYW1lICopOw0KKw0KKyAgICBpZiAoIUlF RUU4MDIxMV9JU19NVUxUSUNBU1Qod2gtPmlfYWRkcjEpKSB7DQorICAgICAgICBmbGFncyB8 PSBSVDI1NzNfVFhfQUNLOw0KKw0KKyAgICAgICAgZHVyID0gcnVtX3R4dGltZShSVU1fQUNL X1NJWkUsIHJ1bV9hY2tfcmF0ZShpYywgcmF0ZSksDQorICAgICAgICAgICAgaWMtPmljX2Zs YWdzKSArIHNjLT5zaWZzOw0KKyAgICAgICAgKih1aW50MTZfdCAqKXdoLT5pX2R1ciA9IGh0 b2xlMTYoZHVyKTsNCisNCisgICAgICAgIC8qIHRlbGwgaGFyZHdhcmUgdG8gc2V0IHRpbWVz dGFtcCBpbiBwcm9iZSByZXNwb25zZXMgKi8NCisgICAgICAgIGlmICgod2gtPmlfZmNbMF0g Jg0KKyAgICAgICAgICAgIChJRUVFODAyMTFfRkMwX1RZUEVfTUFTSyB8IElFRUU4MDIxMV9G QzBfU1VCVFlQRV9NQVNLKSkgPT0NCisgICAgICAgICAgICAoSUVFRTgwMjExX0ZDMF9UWVBF X01HVCB8IElFRUU4MDIxMV9GQzBfU1VCVFlQRV9QUk9CRV9SRVNQKSkNCisgICAgICAgICAg ICBmbGFncyB8PSBSVDI1NzNfVFhfVElNRVNUQU1QOw0KKyAgICB9DQorDQorICAgIGlmIChi cGZfcGVlcnNfcHJlc2VudChzYy0+c2NfZHJ2YnBmKSkgew0KKyAgICAgICAgc3RydWN0IHJ1 bV90eF9yYWRpb3RhcF9oZWFkZXIgKnRhcCA9ICZzYy0+c2NfdHh0YXA7DQorDQorICAgICAg ICB0YXAtPnd0X2ZsYWdzID0gMDsNCisgICAgICAgIHRhcC0+d3RfcmF0ZSA9IHJhdGU7DQor ICAgICAgICB0YXAtPnd0X2NoYW5fZnJlcSA9IGh0b2xlMTYoaWMtPmljX2N1cmNoYW4tPmlj X2ZyZXEpOw0KKyAgICAgICAgdGFwLT53dF9jaGFuX2ZsYWdzID0gaHRvbGUxNihpYy0+aWNf Y3VyY2hhbi0+aWNfZmxhZ3MpOw0KKyAgICAgICAgdGFwLT53dF9hbnRlbm5hID0gc2MtPnR4 X2FudDsNCisNCisgICAgICAgIGJwZl9tdGFwMihzYy0+c2NfZHJ2YnBmLCB0YXAsIHNjLT5z Y190eHRhcF9sZW4sIG0wKTsNCisgICAgfQ0KKw0KKyAgICBtX2NvcHlkYXRhKG0wLCAwLCBt MC0+bV9wa3RoZHIubGVuLCBkYXRhLT5idWYgKyBSVDI1NzNfVFhfREVTQ19TSVpFKTsNCisg ICAgcnVtX3NldHVwX3R4X2Rlc2Moc2MsIGRlc2MsIGZsYWdzLCAwLCBtMC0+bV9wa3RoZHIu bGVuLCByYXRlKTsNCisNCisgICAgLyogYWxpZ24gZW5kIG9uIGEgNC1ieXRlcyBib3VuZGFy eSAqLw0KKyAgICB4ZmVybGVuID0gKFJUMjU3M19UWF9ERVNDX1NJWkUgKyBtMC0+bV9wa3Ro ZHIubGVuICsgMykgJiB+MzsNCisNCisgICAgLyoNCisgICAgICogTm8gc3BhY2UgbGVmdCBp biB0aGUgbGFzdCBVUkIgdG8gc3RvcmUgdGhlIGV4dHJhIDQgYnl0ZXMsIGZvcmNlDQorICAg ICAqIHNlbmRpbmcgb2YgYW5vdGhlciBVUkIuDQorICAgICAqLw0KKyAgICBpZiAoKHhmZXJs ZW4gJSA2NCkgPT0gMCkNCisgICAgICAgIHhmZXJsZW4gKz0gNDsNCisNCisgICAgRFBSSU5U Rk4oMTAsICgic2VuZGluZyBtc2cgZnJhbWUgbGVuPSVsZCByYXRlPSVkIHhmZXIgbGVuPSVk XG4iLA0KKyAgICAgICAgbTAtPm1fcGt0aGRyLmxlbiArIFJUMjU3M19UWF9ERVNDX1NJWkUs IHJhdGUsIHhmZXJsZW4pKTsNCisNCisgICAgdXNiZF9zZXR1cF94ZmVyKGRhdGEtPnhmZXIs IHNjLT5zY190eF9waXBlaCwgZGF0YSwgZGF0YS0+YnVmLCB4ZmVybGVuLA0KKyAgICAgICAg VVNCRF9GT1JDRV9TSE9SVF9YRkVSIHwgVVNCRF9OT19DT1BZLCBSVU1fVFhfVElNRU9VVCwg cnVtX3R4ZW9mKTsNCisNCisgICAgZXJyb3IgPSB1c2JkX3RyYW5zZmVyKGRhdGEtPnhmZXIp Ow0KKyAgICBpZiAoZXJyb3IgIT0gVVNCRF9OT1JNQUxfQ09NUExFVElPTiAmJiBlcnJvciAh PSBVU0JEX0lOX1BST0dSRVNTKSB7DQorICAgICAgICBtX2ZyZWVtKG0wKTsNCisJCWRhdGEt Pm0gPSBOVUxMOw0KKwkJZGF0YS0+bmkgPSBOVUxMOw0KKyAgICAgICAgcmV0dXJuIGVycm9y Ow0KKyAgICB9DQorDQorICAgIHNjLT50eF9xdWV1ZWQrKzsNCisNCisgICAgcmV0dXJuIDA7 DQorfQ0KKw0KK3N0YXRpYyBpbnQNCitydW1fdHhfZGF0YShzdHJ1Y3QgcnVtX3NvZnRjICpz Yywgc3RydWN0IG1idWYgKm0wLCBzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pKQ0KK3sNCisg ICAgc3RydWN0IGllZWU4MDIxMWNvbSAqaWMgPSAmc2MtPnNjX2ljOw0KKyAgICBzdHJ1Y3Qg cnVtX3R4X2Rlc2MgKmRlc2M7DQorICAgIHN0cnVjdCBydW1fdHhfZGF0YSAqZGF0YTsNCisg ICAgc3RydWN0IGllZWU4MDIxMV9mcmFtZSAqd2g7DQorICAgIHN0cnVjdCBpZWVlODAyMTFf a2V5ICprOw0KKyAgICB1aW50MzJfdCBmbGFncyA9IDA7DQorICAgIHVpbnQxNl90IGR1cjsN CisgICAgdXNiZF9zdGF0dXMgZXJyb3I7DQorICAgIGludCB4ZmVybGVuLCByYXRlOw0KKw0K KyAgICB3aCA9IG10b2QobTAsIHN0cnVjdCBpZWVlODAyMTFfZnJhbWUgKik7DQorDQorICAg IGlmIChpYy0+aWNfZml4ZWRfcmF0ZSAhPSBJRUVFODAyMTFfRklYRURfUkFURV9OT05FKQ0K KyAgICAgICAgcmF0ZSA9IGljLT5pY19ic3MtPm5pX3JhdGVzLnJzX3JhdGVzW2ljLT5pY19m aXhlZF9yYXRlXTsNCisgICAgZWxzZQ0KKyAgICAgICAgcmF0ZSA9IG5pLT5uaV9yYXRlcy5y c19yYXRlc1tuaS0+bmlfdHhyYXRlXTsNCisNCisgICAgcmF0ZSAmPSBJRUVFODAyMTFfUkFU RV9WQUw7DQorDQorICAgIGlmICh3aC0+aV9mY1sxXSAmIElFRUU4MDIxMV9GQzFfV0VQKSB7 DQorICAgICAgICBrID0gaWVlZTgwMjExX2NyeXB0b19lbmNhcChpYywgbmksIG0wKTsNCisg ICAgICAgIGlmIChrID09IE5VTEwpIHsNCisgICAgICAgICAgICBtX2ZyZWVtKG0wKTsNCisg ICAgICAgICAgICByZXR1cm4gRU5PQlVGUzsNCisgICAgICAgIH0NCisNCisgICAgICAgIC8q IHBhY2tldCBoZWFkZXIgbWF5IGhhdmUgbW92ZWQsIHJlc2V0IG91ciBsb2NhbCBwb2ludGVy ICovDQorICAgICAgICB3aCA9IG10b2QobTAsIHN0cnVjdCBpZWVlODAyMTFfZnJhbWUgKik7 DQorICAgIH0NCisNCisgICAgZGF0YSA9ICZzYy0+dHhfZGF0YVswXTsNCisgICAgZGVzYyA9 IChzdHJ1Y3QgcnVtX3R4X2Rlc2MgKilkYXRhLT5idWY7DQorDQorICAgIGRhdGEtPm0gPSBt MDsNCisgICAgZGF0YS0+bmkgPSBuaTsNCisNCisgICAgaWYgKCFJRUVFODAyMTFfSVNfTVVM VElDQVNUKHdoLT5pX2FkZHIxKSkgew0KKyAgICAgICAgZmxhZ3MgfD0gUlQyNTczX1RYX0FD SzsNCisNCisgICAgICAgIGR1ciA9IHJ1bV90eHRpbWUoUlVNX0FDS19TSVpFLCBydW1fYWNr X3JhdGUoaWMsIHJhdGUpLA0KKyAgICAgICAgICAgIGljLT5pY19mbGFncykgKyBzYy0+c2lm czsNCisgICAgICAgICoodWludDE2X3QgKil3aC0+aV9kdXIgPSBodG9sZTE2KGR1cik7DQor ICAgIH0NCisNCisgICAgaWYgKGJwZl9wZWVyc19wcmVzZW50KHNjLT5zY19kcnZicGYpKSB7 DQorICAgICAgICBzdHJ1Y3QgcnVtX3R4X3JhZGlvdGFwX2hlYWRlciAqdGFwID0gJnNjLT5z Y190eHRhcDsNCisNCisgICAgICAgIHRhcC0+d3RfZmxhZ3MgPSAwOw0KKyAgICAgICAgdGFw LT53dF9yYXRlID0gcmF0ZTsNCisgICAgICAgIHRhcC0+d3RfY2hhbl9mcmVxID0gaHRvbGUx NihpYy0+aWNfY3VyY2hhbi0+aWNfZnJlcSk7DQorICAgICAgICB0YXAtPnd0X2NoYW5fZmxh Z3MgPSBodG9sZTE2KGljLT5pY19jdXJjaGFuLT5pY19mbGFncyk7DQorICAgICAgICB0YXAt Pnd0X2FudGVubmEgPSBzYy0+dHhfYW50Ow0KKw0KKyAgICAgICAgYnBmX210YXAyKHNjLT5z Y19kcnZicGYsIHRhcCwgc2MtPnNjX3R4dGFwX2xlbiwgbTApOw0KKyAgICB9DQorDQorICAg IG1fY29weWRhdGEobTAsIDAsIG0wLT5tX3BrdGhkci5sZW4sIGRhdGEtPmJ1ZiArIFJUMjU3 M19UWF9ERVNDX1NJWkUpOw0KKyAgICBydW1fc2V0dXBfdHhfZGVzYyhzYywgZGVzYywgZmxh Z3MsIDAsIG0wLT5tX3BrdGhkci5sZW4sIHJhdGUpOw0KKw0KKyAgICAvKiBhbGlnbiBlbmQg b24gYSA0LWJ5dGVzIGJvdW5kYXJ5ICovDQorICAgIHhmZXJsZW4gPSAoUlQyNTczX1RYX0RF U0NfU0laRSArIG0wLT5tX3BrdGhkci5sZW4gKyAzKSAmIH4zOw0KKw0KKyAgICAvKg0KKyAg ICAgKiBObyBzcGFjZSBsZWZ0IGluIHRoZSBsYXN0IFVSQiB0byBzdG9yZSB0aGUgZXh0cmEg NCBieXRlcywgZm9yY2UNCisgICAgICogc2VuZGluZyBvZiBhbm90aGVyIFVSQi4NCisgICAg ICovDQorICAgIGlmICgoeGZlcmxlbiAlIDY0KSA9PSAwKQ0KKyAgICAgICAgeGZlcmxlbiAr PSA0Ow0KKw0KKyAgICBEUFJJTlRGTigxMCwgKCJzZW5kaW5nIGRhdGEgZnJhbWUgbGVuPSVs ZCByYXRlPSVkIHhmZXIgbGVuPSVkXG4iLA0KKyAgICAgICAgbTAtPm1fcGt0aGRyLmxlbiAr IFJUMjU3M19UWF9ERVNDX1NJWkUsIHJhdGUsIHhmZXJsZW4pKTsNCisNCisgICAgdXNiZF9z ZXR1cF94ZmVyKGRhdGEtPnhmZXIsIHNjLT5zY190eF9waXBlaCwgZGF0YSwgZGF0YS0+YnVm LCANCisJCXhmZXJsZW4sIFVTQkRfRk9SQ0VfU0hPUlRfWEZFUiB8IFVTQkRfTk9fQ09QWSwg UlVNX1RYX1RJTUVPVVQsIA0KKwkJcnVtX3R4ZW9mKTsNCisNCisgICAgZXJyb3IgPSB1c2Jk X3RyYW5zZmVyKGRhdGEtPnhmZXIpOw0KKyAgICBpZiAoZXJyb3IgIT0gVVNCRF9OT1JNQUxf Q09NUExFVElPTiAmJiBlcnJvciAhPSBVU0JEX0lOX1BST0dSRVNTKXsNCisgICAgICAgIHJl dHVybiBlcnJvcjsNCisJfQ0KKw0KKyAgICBzYy0+dHhfcXVldWVkKys7DQorCQkNCisgICAg cmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyB2b2lkDQorcnVtX3N0YXJ0KHN0cnVjdCBpZm5l dCAqaWZwKQ0KK3sNCisgICAgc3RydWN0IHJ1bV9zb2Z0YyAqc2MgPSBpZnAtPmlmX3NvZnRj Ow0KKyAgICBzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9ICZzYy0+c2NfaWM7DQorICAgIHN0 cnVjdCBtYnVmICptMDsNCisgICAgc3RydWN0IGV0aGVyX2hlYWRlciAqZWg7DQorICAgIHN0 cnVjdCBpZWVlODAyMTFfbm9kZSAqbmk7DQorCXN0YXRpYyBpbnQgZmJ1c3kgPSAwOw0KKw0K KwlpZiAoZmJ1c3kpIHJldHVybjsNCisNCisJZmJ1c3kgPSAxOw0KKw0KKyAgICBmb3IgKDs7 KSB7DQorICAgICAgICBJRl9QT0xMKCZpYy0+aWNfbWd0cSwgbTApOw0KKyAgICAgICAgaWYg KG0wICE9IE5VTEwpIHsNCisgICAgICAgICAgICBpZiAoc2MtPnR4X3F1ZXVlZCA+PSBSVDI1 NzNfVFhfTElTVF9DT1VOVCkgew0KKyAgICAgICAgICAgICAgICBpZnAtPmlmX2Rydl9mbGFn cyB8PSBJRkZfRFJWX09BQ1RJVkU7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAg ICAgICAgIH0NCisgICAgICAgICAgICBJRl9ERVFVRVVFKCZpYy0+aWNfbWd0cSwgbTApOw0K Kw0KKyAgICAgICAgICAgIG5pID0gKHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqKW0wLT5tX3Br dGhkci5yY3ZpZjsNCisgICAgICAgICAgICBtMC0+bV9wa3RoZHIucmN2aWYgPSBOVUxMOw0K Kw0KKyAgICAgICAgICAgIGlmIChicGZfcGVlcnNfcHJlc2VudChpYy0+aWNfcmF3YnBmKSkN CisgICAgICAgICAgICAgICAgYnBmX210YXAoaWMtPmljX3Jhd2JwZiwgbTApOw0KKw0KKyAg ICAgICAgICAgIGlmIChydW1fdHhfbWd0KHNjLCBtMCwgbmkpICE9IDApDQorICAgICAgICAg ICAgICAgIGJyZWFrOw0KKw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBpZiAo aWMtPmljX3N0YXRlICE9IElFRUU4MDIxMV9TX1JVTikNCisgICAgICAgICAgICAgICAgYnJl YWs7DQorICAgICAgICAgICAgSUZRX0RSVl9ERVFVRVVFKCZpZnAtPmlmX3NuZCwgbTApOw0K KyAgICAgICAgICAgIGlmIChtMCA9PSBOVUxMKQ0KKyAgICAgICAgICAgICAgICBicmVhazsN CisgICAgICAgICAgICBpZiAoc2MtPnR4X3F1ZXVlZCA+PSBSVDI1NzNfVFhfTElTVF9DT1VO VCkgew0KKyAgICAgICAgICAgIAlJRlFfRFJWX1BSRVBFTkQoJmlmcC0+aWZfc25kLCBtMCk7 DQorICAgICAgICAgICAgICAgIGlmcC0+aWZfZHJ2X2ZsYWdzIHw9IElGRl9EUlZfT0FDVElW RTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAg ICAgICAgIGlmIChtMC0+bV9sZW4gPCBzaXplb2Yoc3RydWN0IGV0aGVyX2hlYWRlcikgJiYN CisgICAgICAgICAgICAgICAgIShtMCA9IG1fcHVsbHVwKG0wLCBzaXplb2Yoc3RydWN0IGV0 aGVyX2hlYWRlcikpKSkNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorDQorICAgICAg ICAgICAgZWggPSBtdG9kKG0wLCBzdHJ1Y3QgZXRoZXJfaGVhZGVyICopOw0KKyAgICAgICAg ICAgIG5pID0gaWVlZTgwMjExX2ZpbmRfdHhub2RlKGljLCBlaC0+ZXRoZXJfZGhvc3QpOw0K KyAgICAgICAgICAgIGlmIChuaSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIG1fZnJl ZW0obTApOw0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQor ICAgICAgICAgICAgQlBGX01UQVAoaWZwLCBtMCk7DQorDQorICAgICAgICAgICAgbTAgPSBp ZWVlODAyMTFfZW5jYXAoaWMsIG0wLCBuaSk7DQorICAgICAgICAgICAgaWYgKG0wID09IE5V TEwpIHsNCisgICAgICAgICAgICAgICAgaWVlZTgwMjExX2ZyZWVfbm9kZShuaSk7DQorICAg ICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisNCisgICAgICAgICAg ICBpZiAoYnBmX3BlZXJzX3ByZXNlbnQoaWMtPmljX3Jhd2JwZikpDQorICAgICAgICAgICAg ICAgIGJwZl9tdGFwKGljLT5pY19yYXdicGYsIG0wKTsNCisNCisgICAgICAgICAgICBpZiAo cnVtX3R4X2RhdGEoc2MsIG0wLCBuaSkgIT0gMCkgew0KKyAgICAgICAgICAgICAgICBpZWVl ODAyMTFfZnJlZV9ub2RlKG5pKTsNCisgICAgICAgICAgICAgICAgaWZwLT5pZl9vZXJyb3Jz Kys7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAg IH0NCisNCisgICAgICAgIHNjLT5zY190eF90aW1lciA9IDU7DQorICAgICAgICBpZnAtPmlm X3RpbWVyID0gMTsNCisgICAgfQ0KKw0KKwlmYnVzeSA9IDA7DQorDQorfQ0KKw0KK3N0YXRp YyB2b2lkDQorcnVtX3dhdGNoZG9nKHN0cnVjdCBpZm5ldCAqaWZwKQ0KK3sNCisgICAgc3Ry dWN0IHJ1bV9zb2Z0YyAqc2MgPSBpZnAtPmlmX3NvZnRjOw0KKyAgICBzdHJ1Y3QgaWVlZTgw MjExY29tICppYyA9ICZzYy0+c2NfaWM7DQorDQorICAgIFJVTV9MT0NLKHNjKTsNCisNCisg ICAgaWZwLT5pZl90aW1lciA9IDA7DQorDQorICAgIGlmIChzYy0+c2NfdHhfdGltZXIgPiAw KSB7DQorICAgICAgICBpZiAoLS1zYy0+c2NfdHhfdGltZXIgPT0gMCkgew0KKyAgICAgICAg ICAgIHByaW50ZigiJXM6IGRldmljZSB0aW1lb3V0XG4iLCBkZXZpY2VfZ2V0X25hbWV1bml0 KHNjLT5zY19kZXYpKTsNCisgICAgICAgICAgICAvKnJ1bV9pbml0KGlmcCk7IFhYWCBuZWVk cyBhIHByb2Nlc3MgY29udGV4dCEgKi8NCisgICAgICAgICAgICBpZnAtPmlmX29lcnJvcnMr KzsNCisgICAgCSAgICBSVU1fVU5MT0NLKHNjKTsNCisgICAgICAgICAgICByZXR1cm47DQor ICAgICAgICB9DQorICAgICAgICBpZnAtPmlmX3RpbWVyID0gMTsNCisgICAgfQ0KKw0KKyAg ICBpZWVlODAyMTFfd2F0Y2hkb2coaWMpOw0KKw0KKyAgICBSVU1fVU5MT0NLKHNjKTsNCit9 DQorDQorc3RhdGljIGludA0KK3J1bV9pb2N0bChzdHJ1Y3QgaWZuZXQgKmlmcCwgdV9sb25n IGNtZCwgY2FkZHJfdCBkYXRhKQ0KK3sNCisgICAgc3RydWN0IHJ1bV9zb2Z0YyAqc2MgPSBp ZnAtPmlmX3NvZnRjOw0KKyAgICBzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9ICZzYy0+c2Nf aWM7DQorICAgIGludCBlcnJvciA9IDA7DQorDQorICAgIHN3aXRjaCAoY21kKSB7DQorICAg IGNhc2UgU0lPQ1NJRkZMQUdTOg0KKyAgICAgICAgaWYgKGlmcC0+aWZfZmxhZ3MgJiBJRkZf VVApIHsNCisgICAgICAgICAgICBpZiAoaWZwLT5pZl9kcnZfZmxhZ3MgJiBJRkZfRFJWX1JV Tk5JTkcpew0KKyAgICAJCQlSVU1fTE9DSyhzYyk7DQorICAgICAgICAgICAgICAgIHJ1bV91 cGRhdGVfcHJvbWlzYyhzYyk7DQorICAgIAkJCVJVTV9VTkxPQ0soc2MpOw0KKyAgICAgICAg ICAgIH0gZWxzZSB7DQorICAgIAkJCVJVTV9MT0NLKHNjKTsNCisgICAgICAgICAgICAgICAg cnVtX2luaXQoc2MpOw0KKyAgICAJCQlSVU1fVU5MT0NLKHNjKTsNCisJCQl9DQorICAgICAg ICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmIChpZnAtPmlmX2Rydl9mbGFncyAmIElGRl9E UlZfUlVOTklORyl7DQorICAgIAkJCVJVTV9MT0NLKHNjKTsNCisgICAgICAgICAgICAgICAg cnVtX3N0b3AoaWZwKTsNCisgICAgCQkJUlVNX1VOTE9DSyhzYyk7DQorCQkJfQ0KKyAgICAg ICAgfQ0KKyAgICAgICAgYnJlYWs7DQorDQorICAgIGRlZmF1bHQ6DQorICAgICAgICBlcnJv ciA9IGllZWU4MDIxMV9pb2N0bChpYywgY21kLCBkYXRhKTsNCisgICAgfQ0KKw0KKyAgICBp ZiAoZXJyb3IgPT0gRU5FVFJFU0VUKSB7DQorCQlpZiAoKGlmcC0+aWZfZmxhZ3MgJiBJRkZf VVApICYmDQorICAgICAgICAgICAgCShpZnAtPmlmX2Rydl9mbGFncyAmIElGRl9EUlZfUlVO TklORykgJiYNCisJCQkJKGljLT5pY19yb2FtaW5nICE9IElFRUU4MDIxMV9ST0FNSU5HX01B TlVBTCkpew0KKyAgICAJCVJVTV9MT0NLKHNjKTsNCisgICAgICAgIAlydW1faW5pdChzYyk7 DQorICAgIAkJUlVNX1VOTE9DSyhzYyk7DQorCQl9DQorICAgICAgICBlcnJvciA9IDA7DQor ICAgIH0NCisNCisgICAgcmV0dXJuIGVycm9yOw0KK30NCisNCitzdGF0aWMgdm9pZA0KK3J1 bV9lZXByb21fcmVhZChzdHJ1Y3QgcnVtX3NvZnRjICpzYywgdWludDE2X3QgYWRkciwgdm9p ZCAqYnVmLCBpbnQgbGVuKQ0KK3sNCisgICAgdXNiX2RldmljZV9yZXF1ZXN0X3QgcmVxOw0K KyAgICB1c2JkX3N0YXR1cyBlcnJvcjsNCisNCisgICAgcmVxLmJtUmVxdWVzdFR5cGUgPSBV VF9SRUFEX1ZFTkRPUl9ERVZJQ0U7DQorICAgIHJlcS5iUmVxdWVzdCA9IFJUMjU3M19SRUFE X0VFUFJPTTsNCisgICAgVVNFVFcocmVxLndWYWx1ZSwgMCk7DQorICAgIFVTRVRXKHJlcS53 SW5kZXgsIGFkZHIpOw0KKyAgICBVU0VUVyhyZXEud0xlbmd0aCwgbGVuKTsNCisNCisgICAg ZXJyb3IgPSB1c2JkX2RvX3JlcXVlc3Qoc2MtPnNjX3VkZXYsICZyZXEsIGJ1Zik7DQorICAg IGlmIChlcnJvciAhPSAwKSB7DQorICAgICAgICBwcmludGYoIiVzOiBjb3VsZCBub3QgcmVh ZCBFRVBST006ICVzXG4iLA0KKyAgICAgICAgICAgIGRldmljZV9nZXRfbmFtZXVuaXQoc2Mt PnNjX2RldiksIHVzYmRfZXJyc3RyKGVycm9yKSk7DQorICAgIH0NCit9DQorDQorc3RhdGlj IHVpbnQzMl90DQorcnVtX3JlYWQoc3RydWN0IHJ1bV9zb2Z0YyAqc2MsIHVpbnQxNl90IHJl ZykNCit7DQorICAgIHVpbnQzMl90IHZhbDsNCisNCisgICAgcnVtX3JlYWRfbXVsdGkoc2Ms IHJlZywgJnZhbCwgc2l6ZW9mIHZhbCk7DQorDQorICAgIHJldHVybiBsZTMydG9oKHZhbCk7 DQorfQ0KKw0KK3N0YXRpYyB2b2lkDQorcnVtX3JlYWRfbXVsdGkoc3RydWN0IHJ1bV9zb2Z0 YyAqc2MsIHVpbnQxNl90IHJlZywgdm9pZCAqYnVmLCBpbnQgbGVuKQ0KK3sNCisgICAgdXNi X2RldmljZV9yZXF1ZXN0X3QgcmVxOw0KKyAgICB1c2JkX3N0YXR1cyBlcnJvcjsNCisNCisg ICAgcmVxLmJtUmVxdWVzdFR5cGUgPSBVVF9SRUFEX1ZFTkRPUl9ERVZJQ0U7DQorICAgIHJl cS5iUmVxdWVzdCA9IFJUMjU3M19SRUFEX01VTFRJX01BQzsNCisgICAgVVNFVFcocmVxLndW YWx1ZSwgMCk7DQorICAgIFVTRVRXKHJlcS53SW5kZXgsIHJlZyk7DQorICAgIFVTRVRXKHJl cS53TGVuZ3RoLCBsZW4pOw0KKw0KKyAgICBlcnJvciA9IHVzYmRfZG9fcmVxdWVzdChzYy0+ c2NfdWRldiwgJnJlcSwgYnVmKTsNCisgICAgaWYgKGVycm9yICE9IDApIHsNCisgICAgICAg IHByaW50ZigiJXM6IGNvdWxkIG5vdCBtdWx0aSByZWFkIE1BQyByZWdpc3RlcjogJXNcbiIs DQorICAgICAgICAgICAgZGV2aWNlX2dldF9uYW1ldW5pdChzYy0+c2NfZGV2KSwgdXNiZF9l cnJzdHIoZXJyb3IpKTsNCisgICAgfQ0KK30NCisNCitzdGF0aWMgdm9pZA0KK3J1bV93cml0 ZShzdHJ1Y3QgcnVtX3NvZnRjICpzYywgdWludDE2X3QgcmVnLCB1aW50MzJfdCB2YWwpDQor ew0KKyAgICB1aW50MzJfdCB0bXAgPSBodG9sZTMyKHZhbCk7DQorDQorICAgIHJ1bV93cml0 ZV9tdWx0aShzYywgcmVnLCAmdG1wLCBzaXplb2YgdG1wKTsNCit9DQorDQorc3RhdGljIHZv aWQNCitydW1fd3JpdGVfbXVsdGkoc3RydWN0IHJ1bV9zb2Z0YyAqc2MsIHVpbnQxNl90IHJl Zywgdm9pZCAqYnVmLCBzaXplX3QgbGVuKQ0KK3sNCisgICAgdXNiX2RldmljZV9yZXF1ZXN0 X3QgcmVxOw0KKyAgICB1c2JkX3N0YXR1cyBlcnJvcjsNCisNCisgICAgcmVxLmJtUmVxdWVz dFR5cGUgPSBVVF9XUklURV9WRU5ET1JfREVWSUNFOw0KKyAgICByZXEuYlJlcXVlc3QgPSBS VDI1NzNfV1JJVEVfTVVMVElfTUFDOw0KKyAgICBVU0VUVyhyZXEud1ZhbHVlLCAwKTsNCisg ICAgVVNFVFcocmVxLndJbmRleCwgcmVnKTsNCisgICAgVVNFVFcocmVxLndMZW5ndGgsIGxl bik7DQorDQorICAgIGVycm9yID0gdXNiZF9kb19yZXF1ZXN0KHNjLT5zY191ZGV2LCAmcmVx LCBidWYpOw0KKyAgICBpZiAoZXJyb3IgIT0gMCkgew0KKyAgICAgICAgcHJpbnRmKCIlczog Y291bGQgbm90IG11bHRpIHdyaXRlIE1BQyByZWdpc3RlcjogJXNcbiIsDQorICAgICAgICAg ICAgZGV2aWNlX2dldF9uYW1ldW5pdChzYy0+c2NfZGV2KSwgdXNiZF9lcnJzdHIoZXJyb3Ip KTsNCisgICAgfQ0KK30NCisNCitzdGF0aWMgdm9pZA0KK3J1bV9iYnBfd3JpdGUoc3RydWN0 IHJ1bV9zb2Z0YyAqc2MsIHVpbnQ4X3QgcmVnLCB1aW50OF90IHZhbCkNCit7DQorICAgIHVp bnQzMl90IHRtcDsNCisgICAgaW50IG50cmllczsNCisNCisgICAgZm9yIChudHJpZXMgPSAw OyBudHJpZXMgPCA1OyBudHJpZXMrKykgew0KKyAgICAgICAgaWYgKCEocnVtX3JlYWQoc2Ms IFJUMjU3M19QSFlfQ1NSMykgJiBSVDI1NzNfQkJQX0JVU1kpKQ0KKyAgICAgICAgICAgIGJy ZWFrOw0KKyAgICB9DQorICAgIGlmIChudHJpZXMgPT0gNSkgew0KKyAgICAgICAgcHJpbnRm KCIlczogY291bGQgbm90IHdyaXRlIHRvIEJCUFxuIiwgZGV2aWNlX2dldF9uYW1ldW5pdChz Yy0+c2NfZGV2KSk7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisNCisgICAgdG1wID0g UlQyNTczX0JCUF9CVVNZIHwgKHJlZyAmIDB4N2YpIDw8IDggfCB2YWw7DQorICAgIHJ1bV93 cml0ZShzYywgUlQyNTczX1BIWV9DU1IzLCB0bXApOw0KK30NCisNCitzdGF0aWMgdWludDhf dA0KK3J1bV9iYnBfcmVhZChzdHJ1Y3QgcnVtX3NvZnRjICpzYywgdWludDhfdCByZWcpDQor ew0KKyAgICB1aW50MzJfdCB2YWw7DQorICAgIGludCBudHJpZXM7DQorDQorICAgIGZvciAo bnRyaWVzID0gMDsgbnRyaWVzIDwgNTsgbnRyaWVzKyspIHsNCisgICAgICAgIGlmICghKHJ1 bV9yZWFkKHNjLCBSVDI1NzNfUEhZX0NTUjMpICYgUlQyNTczX0JCUF9CVVNZKSkNCisgICAg ICAgICAgICBicmVhazsNCisgICAgfQ0KKyAgICBpZiAobnRyaWVzID09IDUpIHsNCisgICAg ICAgIHByaW50ZigiJXM6IGNvdWxkIG5vdCByZWFkIEJCUFxuIiwgZGV2aWNlX2dldF9uYW1l dW5pdChzYy0+c2NfZGV2KSk7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKw0KKyAg ICB2YWwgPSBSVDI1NzNfQkJQX0JVU1kgfCBSVDI1NzNfQkJQX1JFQUQgfCByZWcgPDwgODsN CisgICAgcnVtX3dyaXRlKHNjLCBSVDI1NzNfUEhZX0NTUjMsIHZhbCk7DQorDQorICAgIGZv ciAobnRyaWVzID0gMDsgbnRyaWVzIDwgMTAwOyBudHJpZXMrKykgew0KKyAgICAgICAgdmFs ID0gcnVtX3JlYWQoc2MsIFJUMjU3M19QSFlfQ1NSMyk7DQorICAgICAgICBpZiAoISh2YWwg JiBSVDI1NzNfQkJQX0JVU1kpKQ0KKyAgICAgICAgICAgIHJldHVybiB2YWwgJiAweGZmOw0K KyAgICAgICAgREVMQVkoMSk7DQorICAgIH0NCisNCisgICAgcHJpbnRmKCIlczogY291bGQg bm90IHJlYWQgQkJQXG4iLCBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19kZXYpKTsNCisg ICAgcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyB2b2lkDQorcnVtX3JmX3dyaXRlKHN0cnVj dCBydW1fc29mdGMgKnNjLCB1aW50OF90IHJlZywgdWludDMyX3QgdmFsKQ0KK3sNCisgICAg dWludDMyX3QgdG1wOw0KKyAgICBpbnQgbnRyaWVzOw0KKw0KKyAgICBmb3IgKG50cmllcyA9 IDA7IG50cmllcyA8IDU7IG50cmllcysrKSB7DQorICAgICAgICBpZiAoIShydW1fcmVhZChz YywgUlQyNTczX1BIWV9DU1I0KSAmIFJUMjU3M19SRl9CVVNZKSkNCisgICAgICAgICAgICBi cmVhazsNCisgICAgfQ0KKyAgICBpZiAobnRyaWVzID09IDUpIHsNCisgICAgICAgIHByaW50 ZigiJXM6IGNvdWxkIG5vdCB3cml0ZSB0byBSRlxuIiwgZGV2aWNlX2dldF9uYW1ldW5pdChz Yy0+c2NfZGV2KSk7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisNCisgICAgdG1wID0g UlQyNTczX1JGX0JVU1kgfCBSVDI1NzNfUkZfMjBCSVQgfCAodmFsICYgMHhmZmZmZikgPDwg MiB8DQorICAgICAgICAocmVnICYgMyk7DQorICAgIHJ1bV93cml0ZShzYywgUlQyNTczX1BI WV9DU1I0LCB0bXApOw0KKw0KKyAgICAvKiByZW1lbWJlciBsYXN0IHdyaXR0ZW4gdmFsdWUg aW4gc2MgKi8NCisgICAgc2MtPnJmX3JlZ3NbcmVnXSA9IHZhbDsNCisNCisgICAgRFBSSU5U Rk4oMTUsICgiUkYgUlsldV0gPC0gMHglMDV4XG4iLCByZWcgJiAzLCB2YWwgJiAweGZmZmZm KSk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkDQorcnVtX3NlbGVjdF9hbnRlbm5hKHN0cnVjdCBy dW1fc29mdGMgKnNjKQ0KK3sNCisgICAgdWludDhfdCBiYnA0LCBiYnA3NzsNCisgICAgdWlu dDMyX3QgdG1wOw0KKw0KKyAgICBiYnA0ICA9IHJ1bV9iYnBfcmVhZChzYywgNCk7DQorICAg IGJicDc3ID0gcnVtX2JicF9yZWFkKHNjLCA3Nyk7DQorDQorICAgIC8qIFRCRCAqLw0KKw0K KyAgICAvKiBtYWtlIHN1cmUgUnggaXMgZGlzYWJsZWQgYmVmb3JlIHN3aXRjaGluZyBhbnRl bm5hICovDQorICAgIHRtcCA9IHJ1bV9yZWFkKHNjLCBSVDI1NzNfVFhSWF9DU1IwKTsNCisg ICAgcnVtX3dyaXRlKHNjLCBSVDI1NzNfVFhSWF9DU1IwLCB0bXAgfCBSVDI1NzNfRElTQUJM RV9SWCk7DQorDQorICAgIHJ1bV9iYnBfd3JpdGUoc2MsICA0LCBiYnA0KTsNCisgICAgcnVt X2JicF93cml0ZShzYywgNzcsIGJicDc3KTsNCisNCisgICAgcnVtX3dyaXRlKHNjLCBSVDI1 NzNfVFhSWF9DU1IwLCB0bXApOw0KK30NCisNCisvKg0KKyAqIEVuYWJsZSBtdWx0aS1yYXRl IHJldHJpZXMgZm9yIGZyYW1lcyBzZW50IGF0IE9GRE0gcmF0ZXMuDQorICogSW4gODAyLjEx Yi9nIG1vZGUsIGFsbG93IGZhbGxiYWNrIHRvIENDSyByYXRlcy4NCisgKi8NCitzdGF0aWMg dm9pZA0KK3J1bV9lbmFibGVfbXJyKHN0cnVjdCBydW1fc29mdGMgKnNjKQ0KK3sNCisgICAg c3RydWN0IGllZWU4MDIxMWNvbSAqaWMgPSAmc2MtPnNjX2ljOw0KKyAgICB1aW50MzJfdCB0 bXA7DQorDQorICAgIHRtcCA9IHJ1bV9yZWFkKHNjLCBSVDI1NzNfVFhSWF9DU1I0KTsNCisN CisgICAgdG1wICY9IH5SVDI1NzNfTVJSX0NDS19GQUxMQkFDSzsNCisgICAgaWYgKCFJRUVF ODAyMTFfSVNfQ0hBTl81R0haKGljLT5pY19jdXJjaGFuKSkNCisgICAgICAgIHRtcCB8PSBS VDI1NzNfTVJSX0NDS19GQUxMQkFDSzsNCisgICAgdG1wIHw9IFJUMjU3M19NUlJfRU5BQkxF RDsNCisNCisgICAgcnVtX3dyaXRlKHNjLCBSVDI1NzNfVFhSWF9DU1I0LCB0bXApOw0KK30N CisNCitzdGF0aWMgdm9pZA0KK3J1bV9zZXRfdHhwcmVhbWJsZShzdHJ1Y3QgcnVtX3NvZnRj ICpzYykNCit7DQorICAgIHVpbnQzMl90IHRtcDsNCisNCisgICAgdG1wID0gcnVtX3JlYWQo c2MsIFJUMjU3M19UWFJYX0NTUjQpOw0KKw0KKyAgICB0bXAgJj0gflJUMjU3M19TSE9SVF9Q UkVBTUJMRTsNCisgICAgaWYgKHNjLT5zY19pYy5pY19mbGFncyAmIElFRUU4MDIxMV9GX1NI UFJFQU1CTEUpDQorICAgICAgICB0bXAgfD0gUlQyNTczX1NIT1JUX1BSRUFNQkxFOw0KKw0K KyAgICBydW1fd3JpdGUoc2MsIFJUMjU3M19UWFJYX0NTUjQsIHRtcCk7DQorfQ0KKw0KK3N0 YXRpYyB2b2lkDQorcnVtX3NldF9iYXNpY3JhdGVzKHN0cnVjdCBydW1fc29mdGMgKnNjKQ0K K3sNCisgICAgc3RydWN0IGllZWU4MDIxMWNvbSAqaWMgPSAmc2MtPnNjX2ljOw0KKw0KKyAg ICAvKiB1cGRhdGUgYmFzaWMgcmF0ZSBzZXQgKi8NCisgICAgaWYgKGljLT5pY19jdXJtb2Rl ID09IElFRUU4MDIxMV9NT0RFXzExQikgew0KKyAgICAgICAgLyogMTFiIGJhc2ljIHJhdGVz OiAxLCAyTWJwcyAqLw0KKyAgICAgICAgcnVtX3dyaXRlKHNjLCBSVDI1NzNfVFhSWF9DU1I1 LCAweDMpOw0KKyAgICB9IGVsc2UgaWYgKElFRUU4MDIxMV9JU19DSEFOXzVHSFooaWMtPmlj X2Jzcy0+bmlfY2hhbikpIHsNCisgICAgICAgIC8qIDExYSBiYXNpYyByYXRlczogNiwgMTIs IDI0TWJwcyAqLw0KKyAgICAgICAgcnVtX3dyaXRlKHNjLCBSVDI1NzNfVFhSWF9DU1I1LCAw eDE1MCk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICAvKiAxMWcgYmFzaWMgcmF0ZXM6IDEs IDIsIDUuNSwgMTEsIDYsIDEyLCAyNE1icHMgKi8NCisgICAgICAgIHJ1bV93cml0ZShzYywg UlQyNTczX1RYUlhfQ1NSNSwgMHgxNWYpOw0KKyAgICB9DQorfQ0KKw0KKy8qDQorICogUmVw cm9ncmFtIE1BQy9CQlAgdG8gc3dpdGNoIHRvIGEgbmV3IGJhbmQuICBWYWx1ZXMgdGFrZW4g ZnJvbSB0aGUgcmVmZXJlbmNlDQorICogZHJpdmVyLg0KKyAqLw0KK3N0YXRpYyB2b2lkDQor cnVtX3NlbGVjdF9iYW5kKHN0cnVjdCBydW1fc29mdGMgKnNjLCBzdHJ1Y3QgaWVlZTgwMjEx X2NoYW5uZWwgKmMpDQorew0KKyAgICB1aW50OF90IGJicDE3LCBiYnAzNSwgYmJwOTYsIGJi cDk3LCBiYnA5OCwgYmJwMTA0Ow0KKyAgICB1aW50MzJfdCB0bXA7DQorDQorICAgIC8qIHVw ZGF0ZSBhbGwgQkJQIHJlZ2lzdGVycyB0aGF0IGRlcGVuZCBvbiB0aGUgYmFuZCAqLw0KKyAg ICBiYnAxNyA9IDB4MjA7IGJicDk2ID0gMHg0ODsgYmJwMTA0ID0gMHgyYzsNCisgICAgYmJw MzUgPSAweDUwOyBiYnA5NyA9IDB4NDg7IGJicDk4ICA9IDB4NDg7DQorICAgIGlmIChJRUVF ODAyMTFfSVNfQ0hBTl81R0haKGMpKSB7DQorICAgICAgICBiYnAxNyArPSAweDA4OyBiYnA5 NiArPSAweDEwOyBiYnAxMDQgKz0gMHgwYzsNCisgICAgICAgIGJicDM1ICs9IDB4MTA7IGJi cDk3ICs9IDB4MTA7IGJicDk4ICArPSAweDEwOw0KKyAgICB9DQorICAgIGlmICgoSUVFRTgw MjExX0lTX0NIQU5fMkdIWihjKSAmJiBzYy0+ZXh0XzJnaHpfbG5hKSB8fA0KKyAgICAgICAg KElFRUU4MDIxMV9JU19DSEFOXzVHSFooYykgJiYgc2MtPmV4dF81Z2h6X2xuYSkpIHsNCisg ICAgICAgIGJicDE3ICs9IDB4MTA7IGJicDk2ICs9IDB4MTA7IGJicDEwNCArPSAweDEwOw0K KyAgICB9DQorDQorICAgIHNjLT5iYnAxNyA9IGJicDE3Ow0KKyAgICBydW1fYmJwX3dyaXRl KHNjLCAgMTcsIGJicDE3KTsNCisgICAgcnVtX2JicF93cml0ZShzYywgIDk2LCBiYnA5Nik7 DQorICAgIHJ1bV9iYnBfd3JpdGUoc2MsIDEwNCwgYmJwMTA0KTsNCisNCisgICAgaWYgKChJ RUVFODAyMTFfSVNfQ0hBTl8yR0haKGMpICYmIHNjLT5leHRfMmdoel9sbmEpIHx8DQorICAg ICAgICAoSUVFRTgwMjExX0lTX0NIQU5fNUdIWihjKSAmJiBzYy0+ZXh0XzVnaHpfbG5hKSkg ew0KKyAgICAgICAgcnVtX2JicF93cml0ZShzYywgNzUsIDB4ODApOw0KKyAgICAgICAgcnVt X2JicF93cml0ZShzYywgODYsIDB4ODApOw0KKyAgICAgICAgcnVtX2JicF93cml0ZShzYywg ODgsIDB4ODApOw0KKyAgICB9DQorDQorICAgIHJ1bV9iYnBfd3JpdGUoc2MsIDM1LCBiYnAz NSk7DQorICAgIHJ1bV9iYnBfd3JpdGUoc2MsIDk3LCBiYnA5Nyk7DQorICAgIHJ1bV9iYnBf d3JpdGUoc2MsIDk4LCBiYnA5OCk7DQorDQorICAgIHRtcCA9IHJ1bV9yZWFkKHNjLCBSVDI1 NzNfUEhZX0NTUjApOw0KKyAgICB0bXAgJj0gfihSVDI1NzNfUEFfUEVfMkdIWiB8IFJUMjU3 M19QQV9QRV81R0haKTsNCisgICAgaWYgKElFRUU4MDIxMV9JU19DSEFOXzJHSFooYykpDQor ICAgICAgICB0bXAgfD0gUlQyNTczX1BBX1BFXzJHSFo7DQorICAgIGVsc2UNCisgICAgICAg IHRtcCB8PSBSVDI1NzNfUEFfUEVfNUdIWjsNCisgICAgcnVtX3dyaXRlKHNjLCBSVDI1NzNf UEhZX0NTUjAsIHRtcCk7DQorDQorICAgIC8qIDgwMi4xMWEgdXNlcyBhIDE2IG1pY3Jvc2Vj b25kcyBzaG9ydCBpbnRlcmZyYW1lIHNwYWNlICovDQorICAgIHNjLT5zaWZzID0gSUVFRTgw MjExX0lTX0NIQU5fNUdIWihjKSA/IDE2IDogMTA7DQorfQ0KKw0KK3N0YXRpYyB2b2lkDQor cnVtX3NldF9jaGFuKHN0cnVjdCBydW1fc29mdGMgKnNjLCBzdHJ1Y3QgaWVlZTgwMjExX2No YW5uZWwgKmMpDQorew0KKyAgICBzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9ICZzYy0+c2Nf aWM7DQorICAgIGNvbnN0IHN0cnVjdCByZnByb2cgKnJmcHJvZzsNCisgICAgdWludDhfdCBi YnAzLCBiYnA5NCA9IFJUMjU3M19CQlBSOTRfREVGQVVMVDsNCisgICAgaW50OF90IHBvd2Vy Ow0KKyAgICB1X2ludCBpLCBjaGFuOw0KKw0KKyAgICBjaGFuID0gaWVlZTgwMjExX2NoYW4y aWVlZShpYywgYyk7DQorICAgIGlmIChjaGFuID09IDAgfHwgY2hhbiA9PSBJRUVFODAyMTFf Q0hBTl9BTlkpDQorICAgICAgICByZXR1cm47DQorDQorICAgIC8qIHNlbGVjdCB0aGUgYXBw cm9wcmlhdGUgUkYgc2V0dGluZ3MgYmFzZWQgb24gd2hhdCBFRVBST00gc2F5cyAqLw0KKyAg ICByZnByb2cgPSAoc2MtPnJmX3JldiA9PSBSVDI1NzNfUkZfNTIyNSB8fA0KKyAgICAgICAg ICBzYy0+cmZfcmV2ID09IFJUMjU3M19SRl8yNTI3KSA/IHJ1bV9yZjUyMjUgOiBydW1fcmY1 MjI2Ow0KKw0KKyAgICAvKiBmaW5kIHRoZSBzZXR0aW5ncyBmb3IgdGhpcyBjaGFubmVsICh3 ZSBrbm93IGl0IGV4aXN0cykgKi8NCisgICAgZm9yIChpID0gMDsgcmZwcm9nW2ldLmNoYW4g IT0gY2hhbjsgaSsrKTsNCisNCisgICAgcG93ZXIgPSBzYy0+dHhwb3dbaV07DQorICAgIGlm IChwb3dlciA8IDApIHsNCisgICAgICAgIGJicDk0ICs9IHBvd2VyOw0KKyAgICAgICAgcG93 ZXIgPSAwOw0KKyAgICB9IGVsc2UgaWYgKHBvd2VyID4gMzEpIHsNCisgICAgICAgIGJicDk0 ICs9IHBvd2VyIC0gMzE7DQorICAgICAgICBwb3dlciA9IDMxOw0KKyAgICB9DQorDQorICAg IC8qDQorICAgICAqIElmIHdlIGFyZSBzd2l0Y2hpbmcgZnJvbSB0aGUgMkdIeiBiYW5kIHRv IHRoZSA1R0h6IGJhbmQgb3INCisgICAgICogdmljZS12ZXJzYSwgQkJQIHJlZ2lzdGVycyBu ZWVkIHRvIGJlIHJlcHJvZ3JhbW1lZC4NCisgICAgICovDQorICAgIGlmIChjLT5pY19mbGFn cyAhPSBpYy0+aWNfY3VyY2hhbi0+aWNfZmxhZ3MpIHsNCisgICAgICAgIHJ1bV9zZWxlY3Rf YmFuZChzYywgYyk7DQorICAgICAgICBydW1fc2VsZWN0X2FudGVubmEoc2MpOw0KKyAgICB9 DQorICAgIGljLT5pY19jdXJjaGFuID0gYzsNCisNCisgICAgcnVtX3JmX3dyaXRlKHNjLCBS VDI1NzNfUkYxLCByZnByb2dbaV0ucjEpOw0KKyAgICBydW1fcmZfd3JpdGUoc2MsIFJUMjU3 M19SRjIsIHJmcHJvZ1tpXS5yMik7DQorICAgIHJ1bV9yZl93cml0ZShzYywgUlQyNTczX1JG MywgcmZwcm9nW2ldLnIzIHwgcG93ZXIgPDwgNyk7DQorICAgIHJ1bV9yZl93cml0ZShzYywg UlQyNTczX1JGNCwgcmZwcm9nW2ldLnI0IHwgc2MtPnJmZnJlcSA8PCAxMCk7DQorDQorICAg IHJ1bV9yZl93cml0ZShzYywgUlQyNTczX1JGMSwgcmZwcm9nW2ldLnIxKTsNCisgICAgcnVt X3JmX3dyaXRlKHNjLCBSVDI1NzNfUkYyLCByZnByb2dbaV0ucjIpOw0KKyAgICBydW1fcmZf d3JpdGUoc2MsIFJUMjU3M19SRjMsIHJmcHJvZ1tpXS5yMyB8IHBvd2VyIDw8IDcgfCAxKTsN CisgICAgcnVtX3JmX3dyaXRlKHNjLCBSVDI1NzNfUkY0LCByZnByb2dbaV0ucjQgfCBzYy0+ cmZmcmVxIDw8IDEwKTsNCisNCisgICAgcnVtX3JmX3dyaXRlKHNjLCBSVDI1NzNfUkYxLCBy ZnByb2dbaV0ucjEpOw0KKyAgICBydW1fcmZfd3JpdGUoc2MsIFJUMjU3M19SRjIsIHJmcHJv Z1tpXS5yMik7DQorICAgIHJ1bV9yZl93cml0ZShzYywgUlQyNTczX1JGMywgcmZwcm9nW2ld LnIzIHwgcG93ZXIgPDwgNyk7DQorICAgIHJ1bV9yZl93cml0ZShzYywgUlQyNTczX1JGNCwg cmZwcm9nW2ldLnI0IHwgc2MtPnJmZnJlcSA8PCAxMCk7DQorDQorICAgIERFTEFZKDEwKTsN CisNCisgICAgLyogZW5hYmxlIHNtYXJ0IG1vZGUgZm9yIE1JTU8tY2FwYWJsZSBSRnMgKi8N CisgICAgYmJwMyA9IHJ1bV9iYnBfcmVhZChzYywgMyk7DQorDQorICAgIGJicDMgJj0gflJU MjU3M19TTUFSVF9NT0RFOw0KKyAgICBpZiAoc2MtPnJmX3JldiA9PSBSVDI1NzNfUkZfNTIy NSB8fCBzYy0+cmZfcmV2ID09IFJUMjU3M19SRl8yNTI3KQ0KKyAgICAgICAgYmJwMyB8PSBS VDI1NzNfU01BUlRfTU9ERTsNCisNCisgICAgcnVtX2JicF93cml0ZShzYywgMywgYmJwMyk7 DQorDQorICAgIGlmIChiYnA5NCAhPSBSVDI1NzNfQkJQUjk0X0RFRkFVTFQpDQorICAgICAg ICBydW1fYmJwX3dyaXRlKHNjLCA5NCwgYmJwOTQpOw0KK30NCisNCisvKg0KKyAqIEVuYWJs ZSBUU0Ygc3luY2hyb25pemF0aW9uIGFuZCB0ZWxsIGgvdyB0byBzdGFydCBzZW5kaW5nIGJl YWNvbnMgZm9yIElCU1MNCisgKiBhbmQgSG9zdEFQIG9wZXJhdGluZyBtb2Rlcy4NCisgKi8N CitzdGF0aWMgdm9pZA0KK3J1bV9lbmFibGVfdHNmX3N5bmMoc3RydWN0IHJ1bV9zb2Z0YyAq c2MpDQorew0KKyAgICBzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9ICZzYy0+c2NfaWM7DQor ICAgIHVpbnQzMl90IHRtcDsNCisNCisgICAgaWYgKGljLT5pY19vcG1vZGUgIT0gSUVFRTgw MjExX01fU1RBKSB7DQorICAgICAgICAvKg0KKyAgICAgICAgICogQ2hhbmdlIGRlZmF1bHQg MTZtcyBUQlRUIGFkanVzdG1lbnQgdG8gOG1zLg0KKyAgICAgICAgICogTXVzdCBiZSBkb25l IGJlZm9yZSBlbmFibGluZyBiZWFjb24gZ2VuZXJhdGlvbi4NCisgICAgICAgICAqLw0KKyAg ICAgICAgcnVtX3dyaXRlKHNjLCBSVDI1NzNfVFhSWF9DU1IxMCwgMSA8PCAxMiB8IDgpOw0K KyAgICB9DQorDQorICAgIHRtcCA9IHJ1bV9yZWFkKHNjLCBSVDI1NzNfVFhSWF9DU1I5KSAm IDB4ZmYwMDAwMDA7DQorDQorICAgIC8qIHNldCBiZWFjb24gaW50ZXJ2YWwgKGluIDEvMTZt cyB1bml0KSAqLw0KKyAgICB0bXAgfD0gaWMtPmljX2Jzcy0+bmlfaW50dmFsICogMTY7DQor DQorICAgIHRtcCB8PSBSVDI1NzNfVFNGX1RJQ0tJTkcgfCBSVDI1NzNfRU5BQkxFX1RCVFQ7 DQorICAgIGlmIChpYy0+aWNfb3Btb2RlID09IElFRUU4MDIxMV9NX1NUQSkNCisgICAgICAg IHRtcCB8PSBSVDI1NzNfVFNGX01PREUoMSk7DQorICAgIGVsc2UNCisgICAgICAgIHRtcCB8 PSBSVDI1NzNfVFNGX01PREUoMikgfCBSVDI1NzNfR0VORVJBVEVfQkVBQ09OOw0KKw0KKyAg ICBydW1fd3JpdGUoc2MsIFJUMjU3M19UWFJYX0NTUjksIHRtcCk7DQorfQ0KKw0KK3N0YXRp YyB2b2lkDQorcnVtX3VwZGF0ZV9zbG90KHN0cnVjdCBydW1fc29mdGMgKnNjKQ0KK3sNCisg ICAgc3RydWN0IGllZWU4MDIxMWNvbSAqaWMgPSAmc2MtPnNjX2ljOw0KKyAgICB1aW50OF90 IHNsb3R0aW1lOw0KKyAgICB1aW50MzJfdCB0bXA7DQorDQorICAgIHNsb3R0aW1lID0gKGlj LT5pY19mbGFncyAmIElFRUU4MDIxMV9GX1NIU0xPVCkgPyA5IDogMjA7DQorDQorICAgIHRt cCA9IHJ1bV9yZWFkKHNjLCBSVDI1NzNfTUFDX0NTUjkpOw0KKyAgICB0bXAgPSAodG1wICYg fjB4ZmYpIHwgc2xvdHRpbWU7DQorICAgIHJ1bV93cml0ZShzYywgUlQyNTczX01BQ19DU1I5 LCB0bXApOw0KKw0KKyAgICBEUFJJTlRGKCgic2V0dGluZyBzbG90IHRpbWUgdG8gJXV1c1xu Iiwgc2xvdHRpbWUpKTsNCit9DQorDQorc3RhdGljIHZvaWQNCitydW1fc2V0X2Jzc2lkKHN0 cnVjdCBydW1fc29mdGMgKnNjLCBjb25zdCB1aW50OF90ICpic3NpZCkNCit7DQorICAgIHVp bnQzMl90IHRtcDsNCisNCisgICAgdG1wID0gYnNzaWRbMF0gfCBic3NpZFsxXSA8PCA4IHwg YnNzaWRbMl0gPDwgMTYgfCBic3NpZFszXSA8PCAyNDsNCisgICAgcnVtX3dyaXRlKHNjLCBS VDI1NzNfTUFDX0NTUjQsIHRtcCk7DQorDQorICAgIHRtcCA9IGJzc2lkWzRdIHwgYnNzaWRb NV0gPDwgOCB8IFJUMjU3M19PTkVfQlNTSUQgPDwgMTY7DQorICAgIHJ1bV93cml0ZShzYywg UlQyNTczX01BQ19DU1I1LCB0bXApOw0KK30NCisNCitzdGF0aWMgdm9pZA0KK3J1bV9zZXRf bWFjYWRkcihzdHJ1Y3QgcnVtX3NvZnRjICpzYywgY29uc3QgdWludDhfdCAqYWRkcikNCit7 DQorICAgIHVpbnQzMl90IHRtcDsNCisNCisgICAgdG1wID0gYWRkclswXSB8IGFkZHJbMV0g PDwgOCB8IGFkZHJbMl0gPDwgMTYgfCBhZGRyWzNdIDw8IDI0Ow0KKyAgICBydW1fd3JpdGUo c2MsIFJUMjU3M19NQUNfQ1NSMiwgdG1wKTsNCisNCisgICAgdG1wID0gYWRkcls0XSB8IGFk ZHJbNV0gPDwgOCB8IDB4ZmYgPDwgMTY7DQorICAgIHJ1bV93cml0ZShzYywgUlQyNTczX01B Q19DU1IzLCB0bXApOw0KK30NCisNCitzdGF0aWMgdm9pZA0KK3J1bV91cGRhdGVfcHJvbWlz YyhzdHJ1Y3QgcnVtX3NvZnRjICpzYykNCit7DQorICAgIHN0cnVjdCBpZm5ldCAqaWZwID0g c2MtPnNjX2ljLmljX2lmcDsNCisgICAgdWludDMyX3QgdG1wOw0KKw0KKyAgICB0bXAgPSBy dW1fcmVhZChzYywgUlQyNTczX1RYUlhfQ1NSMCk7DQorDQorICAgIHRtcCAmPSB+UlQyNTcz X0RST1BfTk9UX1RPX01FOw0KKyAgICBpZiAoIShpZnAtPmlmX2ZsYWdzICYgSUZGX1BST01J U0MpKQ0KKyAgICAgICAgdG1wIHw9IFJUMjU3M19EUk9QX05PVF9UT19NRTsNCisNCisgICAg cnVtX3dyaXRlKHNjLCBSVDI1NzNfVFhSWF9DU1IwLCB0bXApOw0KKw0KKyAgICBEUFJJTlRG KCgiJXMgcHJvbWlzY3VvdXMgbW9kZVxuIiwgKGlmcC0+aWZfZmxhZ3MgJiBJRkZfUFJPTUlT QykgPw0KKyAgICAgICAgImVudGVyaW5nIiA6ICJsZWF2aW5nIikpOw0KK30NCisNCitzdGF0 aWMgY29uc3QgY2hhciAqDQorcnVtX2dldF9yZihpbnQgcmV2KQ0KK3sNCisgICAgc3dpdGNo IChyZXYpIHsNCisgICAgY2FzZSBSVDI1NzNfUkZfMjUyNzogICAgcmV0dXJuICJSVDI1Mjcg KE1JTU8gWFIpIjsNCisgICAgY2FzZSBSVDI1NzNfUkZfMjUyODogICAgcmV0dXJuICJSVDI1 MjgiOw0KKyAgICBjYXNlIFJUMjU3M19SRl81MjI1OiAgICByZXR1cm4gIlJUNTIyNSAoTUlN TyBYUikiOw0KKyAgICBjYXNlIFJUMjU3M19SRl81MjI2OiAgICByZXR1cm4gIlJUNTIyNiI7 DQorICAgIGRlZmF1bHQ6ICAgICAgICByZXR1cm4gInVua25vd24iOw0KKyAgICB9DQorfQ0K Kw0KK3N0YXRpYyB2b2lkDQorcnVtX3JlYWRfZWVwcm9tKHN0cnVjdCBydW1fc29mdGMgKnNj KQ0KK3sNCisgICAgc3RydWN0IGllZWU4MDIxMWNvbSAqaWMgPSAmc2MtPnNjX2ljOw0KKyAg ICB1aW50MTZfdCB2YWw7DQorI2lmZGVmIFJVTV9ERUJVRw0KKyAgICBpbnQgaTsNCisjZW5k aWYNCisNCisgICAgLyogcmVhZCBNQUMvQkJQIHR5cGUgKi8NCisgICAgcnVtX2VlcHJvbV9y ZWFkKHNjLCBSVDI1NzNfRUVQUk9NX01BQ0JCUCwgJnZhbCwgMik7DQorICAgIHNjLT5tYWNi YnBfcmV2ID0gbGUxNnRvaCh2YWwpOw0KKw0KKyAgICAvKiByZWFkIE1BQyBhZGRyZXNzICov DQorICAgIHJ1bV9lZXByb21fcmVhZChzYywgUlQyNTczX0VFUFJPTV9BRERSRVNTLCBpYy0+ aWNfbXlhZGRyLCA2KTsNCisNCisgICAgcnVtX2VlcHJvbV9yZWFkKHNjLCBSVDI1NzNfRUVQ Uk9NX0FOVEVOTkEsICZ2YWwsIDIpOw0KKyAgICB2YWwgPSBsZTE2dG9oKHZhbCk7DQorICAg IHNjLT5yZl9yZXYgPSAgICh2YWwgPj4gMTEpICYgMHgxZjsNCisgICAgc2MtPmh3X3JhZGlv ID0gKHZhbCA+PiAxMCkgJiAweDE7DQorICAgIHNjLT5yeF9hbnQgPSAgICh2YWwgPj4gNCkg ICYgMHgzOw0KKyAgICBzYy0+dHhfYW50ID0gICAodmFsID4+IDIpICAmIDB4MzsNCisgICAg c2MtPm5iX2FudCA9ICAgdmFsICYgMHgzOw0KKw0KKyAgICBEUFJJTlRGKCgiUkYgcmV2aXNp b249JWRcbiIsIHNjLT5yZl9yZXYpKTsNCisNCisgICAgcnVtX2VlcHJvbV9yZWFkKHNjLCBS VDI1NzNfRUVQUk9NX0NPTkZJRzIsICZ2YWwsIDIpOw0KKyAgICB2YWwgPSBsZTE2dG9oKHZh bCk7DQorICAgIHNjLT5leHRfNWdoel9sbmEgPSAodmFsID4+IDYpICYgMHgxOw0KKyAgICBz Yy0+ZXh0XzJnaHpfbG5hID0gKHZhbCA+PiA0KSAmIDB4MTsNCisNCisgICAgRFBSSU5URigo IkV4dGVybmFsIDJHSHogTE5BPSVkXG5FeHRlcm5hbCA1R0h6IExOQT0lZFxuIiwNCisgICAg ICAgIHNjLT5leHRfMmdoel9sbmEsIHNjLT5leHRfNWdoel9sbmEpKTsNCisNCisgICAgcnVt X2VlcHJvbV9yZWFkKHNjLCBSVDI1NzNfRUVQUk9NX1JTU0lfMkdIWl9PRkZTRVQsICZ2YWws IDIpOw0KKyAgICB2YWwgPSBsZTE2dG9oKHZhbCk7DQorICAgIGlmICgodmFsICYgMHhmZikg IT0gMHhmZikNCisgICAgICAgIHNjLT5yc3NpXzJnaHpfY29yciA9IChpbnQ4X3QpKHZhbCAm IDB4ZmYpOyAgICAvKiBzaWduZWQgKi8NCisNCisgICAgcnVtX2VlcHJvbV9yZWFkKHNjLCBS VDI1NzNfRUVQUk9NX1JTU0lfNUdIWl9PRkZTRVQsICZ2YWwsIDIpOw0KKyAgICB2YWwgPSBs ZTE2dG9oKHZhbCk7DQorICAgIGlmICgodmFsICYgMHhmZikgIT0gMHhmZikNCisgICAgICAg IHNjLT5yc3NpXzVnaHpfY29yciA9IChpbnQ4X3QpKHZhbCAmIDB4ZmYpOyAgICAvKiBzaWdu ZWQgKi8NCisNCisgICAgRFBSSU5URigoIlJTU0kgMkdIeiBjb3JyPSVkXG5SU1NJIDVHSHog Y29ycj0lZFxuIiwNCisgICAgICAgIHNjLT5yc3NpXzJnaHpfY29yciwgc2MtPnJzc2lfNWdo el9jb3JyKSk7DQorDQorICAgIHJ1bV9lZXByb21fcmVhZChzYywgUlQyNTczX0VFUFJPTV9G UkVRX09GRlNFVCwgJnZhbCwgMik7DQorICAgIHZhbCA9IGxlMTZ0b2godmFsKTsNCisgICAg aWYgKCh2YWwgJiAweGZmKSAhPSAweGZmKQ0KKyAgICAgICAgc2MtPnJmZnJlcSA9IHZhbCAm IDB4ZmY7DQorDQorICAgIERQUklOVEYoKCJSRiBmcmVxPSVkXG4iLCBzYy0+cmZmcmVxKSk7 DQorDQorICAgIC8qIHJlYWQgVHggcG93ZXIgZm9yIGFsbCBhL2IvZyBjaGFubmVscyAqLw0K KyAgICBydW1fZWVwcm9tX3JlYWQoc2MsIFJUMjU3M19FRVBST01fVFhQT1dFUiwgc2MtPnR4 cG93LCAxNCk7DQorICAgIC8qIFhYWCBkZWZhdWx0IFR4IHBvd2VyIGZvciA4MDIuMTFhIGNo YW5uZWxzICovDQorICAgIG1lbXNldChzYy0+dHhwb3cgKyAxNCwgMjQsIHNpemVvZiAoc2Mt PnR4cG93KSAtIDE0KTsNCisjaWZkZWYgUlVNX0RFQlVHDQorICAgIGZvciAoaSA9IDA7IGkg PCAxNDsgaSsrKQ0KKyAgICAgICAgRFBSSU5URigoIkNoYW5uZWw9JWQgVHggcG93ZXI9JWRc biIsIGkgKyAxLCAgc2MtPnR4cG93W2ldKSk7DQorI2VuZGlmDQorDQorICAgIC8qIHJlYWQg ZGVmYXVsdCB2YWx1ZXMgZm9yIEJCUCByZWdpc3RlcnMgKi8NCisgICAgcnVtX2VlcHJvbV9y ZWFkKHNjLCBSVDI1NzNfRUVQUk9NX0JCUF9CQVNFLCBzYy0+YmJwX3Byb20sIDIgKiAxNik7 DQorI2lmZGVmIFJVTV9ERUJVRw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgMTQ7IGkrKykgew0K KyAgICAgICAgaWYgKHNjLT5iYnBfcHJvbVtpXS5yZWcgPT0gMCB8fCBzYy0+YmJwX3Byb21b aV0ucmVnID09IDB4ZmYpDQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICBEUFJJ TlRGKCgiQkJQIFIlZD0lMDJ4XG4iLCBzYy0+YmJwX3Byb21baV0ucmVnLA0KKyAgICAgICAg ICAgIHNjLT5iYnBfcHJvbVtpXS52YWwpKTsNCisgICAgfQ0KKyNlbmRpZg0KK30NCisNCitz dGF0aWMgaW50DQorcnVtX2JicF9pbml0KHN0cnVjdCBydW1fc29mdGMgKnNjKQ0KK3sNCisj ZGVmaW5lIE4oYSkgICAgKHNpemVvZiAoYSkgLyBzaXplb2YgKChhKVswXSkpDQorICAgIGlu dCBpLCBudHJpZXM7DQorICAgIHVpbnQ4X3QgdmFsOw0KKw0KKyAgICAvKiB3YWl0IGZvciBC QlAgdG8gYmUgcmVhZHkgKi8NCisgICAgZm9yIChudHJpZXMgPSAwOyBudHJpZXMgPCAxMDA7 IG50cmllcysrKSB7DQorICAgICAgICB2YWwgPSBydW1fYmJwX3JlYWQoc2MsIDApOw0KKyAg ICAgICAgaWYgKHZhbCAhPSAwICYmIHZhbCAhPSAweGZmKQ0KKyAgICAgICAgICAgIGJyZWFr Ow0KKyAgICAgICAgREVMQVkoMTAwMCk7DQorICAgIH0NCisgICAgaWYgKG50cmllcyA9PSAx MDApIHsNCisgICAgICAgIHByaW50ZigiJXM6IHRpbWVvdXQgd2FpdGluZyBmb3IgQkJQXG4i LA0KKyAgICAgICAgICAgIGRldmljZV9nZXRfbmFtZXVuaXQoc2MtPnNjX2RldikpOw0KKyAg ICAgICAgcmV0dXJuIEVJTzsNCisgICAgfQ0KKw0KKyAgICAvKiBpbml0aWFsaXplIEJCUCBy ZWdpc3RlcnMgdG8gZGVmYXVsdCB2YWx1ZXMgKi8NCisgICAgZm9yIChpID0gMDsgaSA8IE4o cnVtX2RlZl9iYnApOyBpKyspDQorICAgICAgICBydW1fYmJwX3dyaXRlKHNjLCBydW1fZGVm X2JicFtpXS5yZWcsIHJ1bV9kZWZfYmJwW2ldLnZhbCk7DQorDQorICAgIC8qIHdyaXRlIHZl bmRvci1zcGVjaWZpYyBCQlAgdmFsdWVzIChmcm9tIEVFUFJPTSkgKi8NCisgICAgZm9yIChp ID0gMDsgaSA8IDE2OyBpKyspIHsNCisgICAgICAgIGlmIChzYy0+YmJwX3Byb21baV0ucmVn ID09IDAgfHwgc2MtPmJicF9wcm9tW2ldLnJlZyA9PSAweGZmKQ0KKyAgICAgICAgICAgIGNv bnRpbnVlOw0KKyAgICAgICAgcnVtX2JicF93cml0ZShzYywgc2MtPmJicF9wcm9tW2ldLnJl Zywgc2MtPmJicF9wcm9tW2ldLnZhbCk7DQorICAgIH0NCisNCisgICAgcmV0dXJuIDA7DQor I3VuZGVmIE4NCit9DQorDQorc3RhdGljIHZvaWQNCitydW1faW5pdCh2b2lkICpwcml2KQ0K K3sNCisjZGVmaW5lIE4oYSkgICAgKHNpemVvZiAoYSkgLyBzaXplb2YgKChhKVswXSkpDQor ICAgIHN0cnVjdCBydW1fc29mdGMgKnNjID0gcHJpdjsNCisgICAgc3RydWN0IGllZWU4MDIx MWNvbSAqaWMgPSAmc2MtPnNjX2ljOw0KKyAgICBzdHJ1Y3QgaWZuZXQgKmlmcCA9IGljLT5p Y19pZnA7DQorICAgIHN0cnVjdCBydW1fcnhfZGF0YSAqZGF0YTsNCisgICAgdWludDMyX3Qg dG1wOw0KKyAgICB1c2JkX3N0YXR1cyBlcnJvciA9IDA7DQorICAgIGludCBpLCBudHJpZXM7 DQorDQorLy8gICAgaWYgKChzYy0+c2NfZmxhZ3MgJiBSVDI1NzNfRldMT0FERUQpID09IDAp IHsNCisvLyAgICAgICAgcnVtX2F0dGFjaGhvb2soc2MpOw0KKy8vICAgIH0NCisNCisgICAg cnVtX3N0b3AoaWZwKTsNCisNCisgICAgLyogaW5pdGlhbGl6ZSBNQUMgcmVnaXN0ZXJzIHRv IGRlZmF1bHQgdmFsdWVzICovDQorICAgIGZvciAoaSA9IDA7IGkgPCBOKHJ1bV9kZWZfbWFj KTsgaSsrKQ0KKyAgICAgICAgcnVtX3dyaXRlKHNjLCBydW1fZGVmX21hY1tpXS5yZWcsIHJ1 bV9kZWZfbWFjW2ldLnZhbCk7DQorDQorICAgIC8qIHNldCBob3N0IHJlYWR5ICovDQorICAg IHJ1bV93cml0ZShzYywgUlQyNTczX01BQ19DU1IxLCAzKTsNCisgICAgcnVtX3dyaXRlKHNj LCBSVDI1NzNfTUFDX0NTUjEsIDApOw0KKw0KKyAgICAvKiB3YWl0IGZvciBCQlAvUkYgdG8g d2FrZXVwICovDQorICAgIGZvciAobnRyaWVzID0gMDsgbnRyaWVzIDwgMTAwMDsgbnRyaWVz KyspIHsNCisgICAgICAgIGlmIChydW1fcmVhZChzYywgUlQyNTczX01BQ19DU1IxMikgJiA4 KQ0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgcnVtX3dyaXRlKHNjLCBSVDI1NzNf TUFDX0NTUjEyLCA0KTsgICAgLyogZm9yY2Ugd2FrZXVwICovDQorICAgICAgICBERUxBWSgx MDAwKTsNCisgICAgfQ0KKyAgICBpZiAobnRyaWVzID09IDEwMDApIHsNCisgICAgICAgIHBy aW50ZigiJXM6IHRpbWVvdXQgd2FpdGluZyBmb3IgQkJQL1JGIHRvIHdha2V1cFxuIiwNCisg ICAgICAgICAgICBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19kZXYpKTsNCisgICAgICAg IGdvdG8gZmFpbDsNCisgICAgfQ0KKw0KKyAgICBpZiAoKGVycm9yID0gcnVtX2JicF9pbml0 KHNjKSkgIT0gMCkNCisgICAgICAgIGdvdG8gZmFpbDsNCisNCisgICAgLyogc2VsZWN0IGRl ZmF1bHQgY2hhbm5lbCAqLw0KKyAgICBydW1fc2VsZWN0X2JhbmQoc2MsIGljLT5pY19jdXJj aGFuKTsNCisgICAgcnVtX3NlbGVjdF9hbnRlbm5hKHNjKTsNCisgICAgcnVtX3NldF9jaGFu KHNjLCBpYy0+aWNfY3VyY2hhbik7DQorDQorICAgIC8qIGNsZWFyIFNUQSByZWdpc3RlcnMg Ki8NCisgICAgcnVtX3JlYWRfbXVsdGkoc2MsIFJUMjU3M19TVEFfQ1NSMCwgc2MtPnN0YSwg c2l6ZW9mIHNjLT5zdGEpOw0KKw0KKyAgICBJRUVFODAyMTFfQUREUl9DT1BZKGljLT5pY19t eWFkZHIsIElGX0xMQUREUihpZnApKTsNCisgICAgcnVtX3NldF9tYWNhZGRyKHNjLCBpYy0+ aWNfbXlhZGRyKTsNCisNCisgICAgLyogaW5pdGlhbGl6ZSBBU0lDICovDQorICAgIHJ1bV93 cml0ZShzYywgUlQyNTczX01BQ19DU1IxLCA0KTsNCisNCisgICAgLyoNCisgICAgICogQWxs b2NhdGUgeGZlciBmb3IgQU1SUiBzdGF0aXN0aWNzIHJlcXVlc3RzLg0KKyAgICAgKi8NCisg ICAgc2MtPmFtcnJfeGZlciA9IHVzYmRfYWxsb2NfeGZlcihzYy0+c2NfdWRldik7DQorICAg IGlmIChzYy0+YW1ycl94ZmVyID09IE5VTEwpIHsNCisgICAgICAgIHByaW50ZigiJXM6IGNv dWxkIG5vdCBhbGxvY2F0ZSBBTVJSIHhmZXJcbiIsDQorICAgICAgICAgICAgZGV2aWNlX2dl dF9uYW1ldW5pdChzYy0+c2NfZGV2KSk7DQorICAgICAgICBnb3RvIGZhaWw7DQorICAgIH0N CisNCisgICAgLyoNCisgICAgICogT3BlbiBUeCBhbmQgUnggVVNCIGJ1bGsgcGlwZXMuDQor ICAgICAqLw0KKyAgICBlcnJvciA9IHVzYmRfb3Blbl9waXBlKHNjLT5zY19pZmFjZSwgc2Mt PnNjX3R4X25vLCBVU0JEX0VYQ0xVU0lWRV9VU0UsDQorICAgICAgICAmc2MtPnNjX3R4X3Bp cGVoKTsNCisgICAgaWYgKGVycm9yICE9IDApIHsNCisgICAgICAgIHByaW50ZigiJXM6IGNv dWxkIG5vdCBvcGVuIFR4IHBpcGU6ICVzXG4iLA0KKyAgICAgICAgICAgIGRldmljZV9nZXRf bmFtZXVuaXQoc2MtPnNjX2RldiksIHVzYmRfZXJyc3RyKGVycm9yKSk7DQorICAgICAgICBn b3RvIGZhaWw7DQorICAgIH0NCisNCisgICAgZXJyb3IgPSB1c2JkX29wZW5fcGlwZShzYy0+ c2NfaWZhY2UsIHNjLT5zY19yeF9ubywgVVNCRF9FWENMVVNJVkVfVVNFLA0KKyAgICAgICAg JnNjLT5zY19yeF9waXBlaCk7DQorICAgIGlmIChlcnJvciAhPSAwKSB7DQorICAgICAgICBw cmludGYoIiVzOiBjb3VsZCBub3Qgb3BlbiBSeCBwaXBlOiAlc1xuIiwNCisgICAgICAgICAg ICBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19kZXYpLCB1c2JkX2VycnN0cihlcnJvcikp Ow0KKyAgICAgICAgZ290byBmYWlsOw0KKyAgICB9DQorDQorICAgIC8qDQorICAgICAqIEFs bG9jYXRlIFR4IGFuZCBSeCB4ZmVyIHF1ZXVlcy4NCisgICAgICovDQorICAgIGVycm9yID0g cnVtX2FsbG9jX3R4X2xpc3Qoc2MpOw0KKyAgICBpZiAoZXJyb3IgIT0gMCkgew0KKyAgICAg ICAgcHJpbnRmKCIlczogY291bGQgbm90IGFsbG9jYXRlIFR4IGxpc3RcbiIsDQorICAgICAg ICAgICAgZGV2aWNlX2dldF9uYW1ldW5pdChzYy0+c2NfZGV2KSk7DQorICAgICAgICBnb3Rv IGZhaWw7DQorICAgIH0NCisNCisgICAgZXJyb3IgPSBydW1fYWxsb2NfcnhfbGlzdChzYyk7 DQorICAgIGlmIChlcnJvciAhPSAwKSB7DQorICAgICAgICBwcmludGYoIiVzOiBjb3VsZCBu b3QgYWxsb2NhdGUgUnggbGlzdFxuIiwNCisgICAgICAgICAgICBkZXZpY2VfZ2V0X25hbWV1 bml0KHNjLT5zY19kZXYpKTsNCisgICAgICAgIGdvdG8gZmFpbDsNCisgICAgfQ0KKw0KKyAg ICAvKg0KKyAgICAgKiBTdGFydCB1cCB0aGUgcmVjZWl2ZSBwaXBlLg0KKyAgICAgKi8NCisg ICAgZm9yIChpID0gMDsgaSA8IFJUMjU3M19SWF9MSVNUX0NPVU5UOyBpKyspIHsNCisgICAg ICAgIGRhdGEgPSAmc2MtPnJ4X2RhdGFbaV07DQorDQorICAgICAgICB1c2JkX3NldHVwX3hm ZXIoZGF0YS0+eGZlciwgc2MtPnNjX3J4X3BpcGVoLCBkYXRhLCBkYXRhLT5idWYsDQorICAg ICAgICAgICAgTUNMQllURVMsIFVTQkRfU0hPUlRfWEZFUl9PSywgVVNCRF9OT19USU1FT1VU LCBydW1fcnhlb2YpOw0KKyAgICAgICAgdXNiZF90cmFuc2ZlcihkYXRhLT54ZmVyKTsNCisg ICAgfQ0KKw0KKyAgICAvKiB1cGRhdGUgUnggZmlsdGVyICovDQorICAgIHRtcCA9IHJ1bV9y ZWFkKHNjLCBSVDI1NzNfVFhSWF9DU1IwKSAmIDB4ZmZmZjsNCisNCisgICAgdG1wIHw9IFJU MjU3M19EUk9QX1BIWV9FUlJPUiB8IFJUMjU3M19EUk9QX0NSQ19FUlJPUjsNCisgICAgaWYg KGljLT5pY19vcG1vZGUgIT0gSUVFRTgwMjExX01fTU9OSVRPUikgew0KKyAgICAgICAgdG1w IHw9IFJUMjU3M19EUk9QX0NUTCB8IFJUMjU3M19EUk9QX1ZFUl9FUlJPUiB8DQorICAgICAg ICAgICAgICAgUlQyNTczX0RST1BfQUNLQ1RTOw0KKyAgICAgICAgaWYgKGljLT5pY19vcG1v ZGUgIT0gSUVFRTgwMjExX01fSE9TVEFQKQ0KKyAgICAgICAgICAgIHRtcCB8PSBSVDI1NzNf RFJPUF9UT0RTOw0KKyAgICAgICAgaWYgKCEoaWZwLT5pZl9mbGFncyAmIElGRl9QUk9NSVND KSkNCisgICAgICAgICAgICB0bXAgfD0gUlQyNTczX0RST1BfTk9UX1RPX01FOw0KKyAgICB9 DQorICAgIHJ1bV93cml0ZShzYywgUlQyNTczX1RYUlhfQ1NSMCwgdG1wKTsNCisNCisgICAg aWZwLT5pZl9kcnZfZmxhZ3MgJj0gfklGRl9EUlZfT0FDVElWRTsNCisgICAgaWZwLT5pZl9k cnZfZmxhZ3MgfD0gSUZGX0RSVl9SVU5OSU5HOw0KKw0KKyAgICBpZiAoaWMtPmljX29wbW9k ZSA9PSBJRUVFODAyMTFfTV9NT05JVE9SKQ0KKyAgICAgICAgaWVlZTgwMjExX25ld19zdGF0 ZShpYywgSUVFRTgwMjExX1NfUlVOLCAtMSk7DQorICAgIGVsc2UNCisgICAgICAgIGllZWU4 MDIxMV9uZXdfc3RhdGUoaWMsIElFRUU4MDIxMV9TX1NDQU4sIC0xKTsNCisNCisgICAgcmV0 dXJuOw0KKw0KK2ZhaWw6ICAgIHJ1bV9zdG9wKGlmcCk7DQorICAgIHJldHVybjsNCisjdW5k ZWYgTg0KK30NCisNCitzdGF0aWMgdm9pZA0KK3J1bV9zdG9wKHN0cnVjdCBpZm5ldCAqaWZw KQ0KK3sNCisgICAgc3RydWN0IHJ1bV9zb2Z0YyAqc2MgPSBpZnAtPmlmX3NvZnRjOw0KKyAg ICBzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9ICZzYy0+c2NfaWM7DQorICAgIHVpbnQzMl90 IHRtcDsNCisNCisgICAgaWVlZTgwMjExX25ld19zdGF0ZShpYywgSUVFRTgwMjExX1NfSU5J VCwgLTEpOyAgICAvKiBmcmVlIGFsbCBub2RlcyAqLw0KKw0KKyAgICBzYy0+c2NfdHhfdGlt ZXIgPSAwOw0KKyAgICBpZnAtPmlmX3RpbWVyID0gMDsNCisgICAgaWZwLT5pZl9kcnZfZmxh Z3MgJj0gfihJRkZfRFJWX1JVTk5JTkcgfCBJRkZfRFJWX09BQ1RJVkUpOw0KKw0KKyAgICAv KiBkaXNhYmxlIFJ4ICovDQorICAgIHRtcCA9IHJ1bV9yZWFkKHNjLCBSVDI1NzNfVFhSWF9D U1IwKTsNCisgICAgcnVtX3dyaXRlKHNjLCBSVDI1NzNfVFhSWF9DU1IwLCB0bXAgfCBSVDI1 NzNfRElTQUJMRV9SWCk7DQorDQorICAgIC8qIHJlc2V0IEFTSUMgKi8NCisgICAgcnVtX3dy aXRlKHNjLCBSVDI1NzNfTUFDX0NTUjEsIDMpOw0KKyAgICBydW1fd3JpdGUoc2MsIFJUMjU3 M19NQUNfQ1NSMSwgMCk7DQorDQorICAgIGlmIChzYy0+c2NfcnhfcGlwZWggIT0gTlVMTCkg ew0KKyAgICAgICAgdXNiZF9hYm9ydF9waXBlKHNjLT5zY19yeF9waXBlaCk7DQorICAgICAg ICB1c2JkX2Nsb3NlX3BpcGUoc2MtPnNjX3J4X3BpcGVoKTsNCisgICAgICAgIHNjLT5zY19y eF9waXBlaCA9IE5VTEw7DQorICAgIH0NCisNCisgICAgaWYgKHNjLT5zY190eF9waXBlaCAh PSBOVUxMKSB7DQorICAgICAgICB1c2JkX2Fib3J0X3BpcGUoc2MtPnNjX3R4X3BpcGVoKTsN CisgICAgICAgIHVzYmRfY2xvc2VfcGlwZShzYy0+c2NfdHhfcGlwZWgpOw0KKyAgICAgICAg c2MtPnNjX3R4X3BpcGVoID0gTlVMTDsNCisgICAgfQ0KKw0KKyAgICBydW1fZnJlZV9yeF9s aXN0KHNjKTsNCisgICAgcnVtX2ZyZWVfdHhfbGlzdChzYyk7DQorfQ0KKw0KK3N0YXRpYyBp bnQNCitydW1fcHJlcGFyZV9iZWFjb24oc3RydWN0IHJ1bV9zb2Z0YyAqc2MpDQorew0KKyAg ICBzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9ICZzYy0+c2NfaWM7DQorICAgIHN0cnVjdCBy dW1fdHhfZGVzYyBkZXNjOw0KKyAgICBzdHJ1Y3QgbWJ1ZiAqbTA7DQorICAgIGludCByYXRl Ow0KKw0KKyAgICBtMCA9IGllZWU4MDIxMV9iZWFjb25fYWxsb2MoaWMsIGljLT5pY19ic3Ms ICZzYy0+c2NfYm8pOw0KKyAgICBpZiAobTAgPT0gTlVMTCkgew0KKyAgICAgICAgcHJpbnRm KCIlczogY291bGQgbm90IGFsbG9jYXRlIGJlYWNvbiBmcmFtZVxuIiwNCisgICAgICAgICAg ICBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19kZXYpKTsNCisgICAgICAgIHJldHVybiBF Tk9CVUZTOw0KKyAgICB9DQorDQorICAgIC8qIHNlbmQgYmVhY29ucyBhdCB0aGUgbG93ZXN0 IGF2YWlsYWJsZSByYXRlICovDQorICAgIHJhdGUgPSBJRUVFODAyMTFfSVNfQ0hBTl81R0ha KGljLT5pY19jdXJjaGFuKSA/IDEyIDogMjsNCisNCisgICAgcnVtX3NldHVwX3R4X2Rlc2Mo c2MsICZkZXNjLCBSVDI1NzNfVFhfVElNRVNUQU1QLCBSVDI1NzNfVFhfSFdTRVEsDQorICAg ICAgICBtMC0+bV9wa3RoZHIubGVuLCByYXRlKTsNCisNCisgICAgLyogY29weSB0aGUgZmly c3QgMjQgYnl0ZXMgb2YgVHggZGVzY3JpcHRvciBpbnRvIE5JQyBtZW1vcnkgKi8NCisgICAg cnVtX3dyaXRlX211bHRpKHNjLCBSVDI1NzNfSFdfQkVBQ09OX0JBU0UwLCAodWludDhfdCAq KSZkZXNjLCAyNCk7DQorDQorICAgIC8qIGNvcHkgYmVhY29uIGhlYWRlciBhbmQgcGF5bG9h ZCBpbnRvIE5JQyBtZW1vcnkgKi8NCisgICAgcnVtX3dyaXRlX211bHRpKHNjLCBSVDI1NzNf SFdfQkVBQ09OX0JBU0UwICsgMjQsIG10b2QobTAsIHVpbnQ4X3QgKiksDQorICAgICAgICBt MC0+bV9wa3RoZHIubGVuKTsNCisNCisgICAgbV9mcmVlbShtMCk7DQorDQorICAgIHJldHVy biAwOw0KK30NCisNCisjZGVmaW5lIFJVTV9BTVJSX01JTl9TVUNDRVNTX1RIUkVTSE9MRCAg MQ0KKyNkZWZpbmUgUlVNX0FNUlJfTUFYX1NVQ0NFU1NfVEhSRVNIT0xEIDEwDQorDQorc3Rh dGljIHZvaWQNCitydW1fYW1ycl9zdGFydChzdHJ1Y3QgcnVtX3NvZnRjICpzYywgc3RydWN0 IGllZWU4MDIxMV9ub2RlICpuaSkNCit7DQorICAgIHN0cnVjdCBpZWVlODAyMTFfYW1yciAq YW1yciA9ICZzYy0+YW1ycjsNCisgICAgc3RydWN0IGllZWU4MDIxMV9hbXJyX25vZGUgKmFt biA9ICZzYy0+YW1uOw0KKyAgICBzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9ICZzYy0+c2Nf aWM7DQorICAgIGludCBpOw0KKw0KKyAgICAvKiBjbGVhciBzdGF0aXN0aWMgcmVnaXN0ZXJz IChTVEFfQ1NSMCB0byBTVEFfQ1NSNSkgKi8NCisgICAgcnVtX3JlYWRfbXVsdGkoc2MsIFJU MjU3M19TVEFfQ1NSMCwgc2MtPnN0YSwgc2l6ZW9mIHNjLT5zdGEpOw0KKw0KKyAgICBpZWVl ODAyMTFfYW1ycl9pbml0KGFtcnIsIGljLCANCisJCQkJCQlJRUVFODAyMTFfQU1SUl9NSU5f U1VDQ0VTU19USFJFU0hPTEQsIA0KKwkJCQkJCUlFRUU4MDIxMV9BTVJSX01BWF9TVUNDRVNT X1RIUkVTSE9MRCk7DQorICAgIGllZWU4MDIxMV9hbXJyX25vZGVfaW5pdChhbXJyLCBhbW4p Ow0KKw0KKyAgICAvKiBzZXQgcmF0ZSB0byBzb21lIHJlYXNvbmFibGUgaW5pdGlhbCB2YWx1 ZSAqLw0KKyAgICBmb3IgKGkgPSBuaS0+bmlfcmF0ZXMucnNfbnJhdGVzIC0gMTsNCisgICAg ICAgICBpID4gMCAmJiAobmktPm5pX3JhdGVzLnJzX3JhdGVzW2ldICYgSUVFRTgwMjExX1JB VEVfVkFMKSA+IDcyOw0KKyAgICAgICAgIGktLSk7DQorICAgIG5pLT5uaV90eHJhdGUgPSBp Ow0KKw0KKyAgICBjYWxsb3V0X3Jlc2V0KCZzYy0+YW1ycl9jaCwgaHosIHJ1bV9hbXJyX3Rp bWVvdXQsIHNjKTsNCit9DQorDQorc3RhdGljIHZvaWQNCitydW1fYW1ycl90aW1lb3V0KHZv aWQgKmFyZykNCit7DQorICAgIHN0cnVjdCBydW1fc29mdGMgKnNjID0gYXJnOw0KKyAgICB1 c2JfZGV2aWNlX3JlcXVlc3RfdCByZXE7DQorDQorICAgIC8qDQorICAgICAqIEFzeW5jaHJv bm91c2x5IHJlYWQgc3RhdGlzdGljIHJlZ2lzdGVycyAoY2xlYXJlZCBieSByZWFkKS4NCisg ICAgICovDQorICAgIHJlcS5ibVJlcXVlc3RUeXBlID0gVVRfUkVBRF9WRU5ET1JfREVWSUNF Ow0KKyAgICByZXEuYlJlcXVlc3QgPSBSVDI1NzNfUkVBRF9NVUxUSV9NQUM7DQorICAgIFVT RVRXKHJlcS53VmFsdWUsIDApOw0KKyAgICBVU0VUVyhyZXEud0luZGV4LCBSVDI1NzNfU1RB X0NTUjApOw0KKyAgICBVU0VUVyhyZXEud0xlbmd0aCwgc2l6ZW9mIHNjLT5zdGEpOw0KKw0K KyAgICB1c2JkX3NldHVwX2RlZmF1bHRfeGZlcihzYy0+YW1ycl94ZmVyLCBzYy0+c2NfdWRl diwgc2MsDQorICAgICAgICBVU0JEX0RFRkFVTFRfVElNRU9VVCwgJnJlcSwgc2MtPnN0YSwg c2l6ZW9mIHNjLT5zdGEsIDAsDQorICAgICAgICBydW1fYW1ycl91cGRhdGUpOw0KKyAgICAo dm9pZCl1c2JkX3RyYW5zZmVyKHNjLT5hbXJyX3hmZXIpOw0KK30NCisNCitzdGF0aWMgdm9p ZA0KK3J1bV9hbXJyX3VwZGF0ZSh1c2JkX3hmZXJfaGFuZGxlIHhmZXIsIHVzYmRfcHJpdmF0 ZV9oYW5kbGUgcHJpdiwNCisgICAgdXNiZF9zdGF0dXMgc3RhdHVzKQ0KK3sNCisgICAgICAg IHN0cnVjdCBydW1fc29mdGMgKnNjID0gKHN0cnVjdCBydW1fc29mdGMgKilwcml2Ow0KKyAg ICAgICAgc3RydWN0IGllZWU4MDIxMV9hbXJyICphbXJyID0gJnNjLT5hbXJyOw0KKyAgICAg ICAgc3RydWN0IGllZWU4MDIxMV9hbXJyX25vZGUgKmFtbiA9ICZzYy0+YW1uOw0KKyAgICAg ICAgc3RydWN0IGlmbmV0ICppZnAgPSBzYy0+c2NfaWZwOw0KKw0KKyAgICAgICAgaWYgKHN0 YXR1cyAhPSBVU0JEX05PUk1BTF9DT01QTEVUSU9OKSB7DQorICAgICAgICAgICAgICAgIGRl dmljZV9wcmludGYoc2MtPnNjX2RldiwgImNvdWxkIG5vdCByZXRyaWV2ZSBUeCBzdGF0aXN0 aWNzIC0gIg0KKyAgICAgICAgICAgICAgICAgICAgImNhbmNlbGxpbmcgYXV0b21hdGljIHJh dGUgY29udHJvbFxuIik7DQorICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0N CisNCisgICAgICAgIC8qIGNvdW50IFRYIHJldHJ5LWZhaWwgYXMgVHggZXJyb3JzICovDQor ICAgICAgICBpZnAtPmlmX29lcnJvcnMgKz0gbGUzMnRvaChzYy0+c3RhWzVdKSA+PiAxNjsN CisNCisgICAgICAgIGllZWU4MDIxMV9hbXJyX2Nob29zZShhbXJyLCBzYy0+c2NfaWMuaWNf YnNzLCBhbW4pOw0KKw0KKyAgICAgICAgY2FsbG91dF9yZXNldCgmc2MtPmFtcnJfY2gsIGh6 LCBydW1fYW1ycl90aW1lb3V0LCBzYyk7DQorfQ0KKw0KK0RSSVZFUl9NT0RVTEUocnVtLCB1 aHViLCBydW1fZHJpdmVyLCBydW1fZGV2Y2xhc3MsIHVzYmRfZHJpdmVyX2xvYWQsIDApOw0K Kw0KSW5kZXg6IHN5cy9kZXYvdXNiL2lmX3J1bXJlZy5oDQo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1Mg ZmlsZTogc3lzL2Rldi91c2IvaWZfcnVtcmVnLmgNCmRpZmYgLU4gc3lzL2Rldi91c2IvaWZf cnVtcmVnLmgNCi0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMA0KKysr IHN5cy9kZXYvdXNiL2lmX3J1bXJlZy5oCTIyIEFwciAyMDA3IDA4OjAxOjU0IC0wMDAwDQpA QCAtMCwwICsxLDM5MCBAQA0KKy8qCSRPcGVuQlNEOiBpZl9ydW1yZWcuaCx2IDEuMTIgMjAw Ni8wOC8wOSAwODoyMTowOCBkYW1pZW4gRXhwICQJKi8NCisNCisvKi0NCisgKiBDb3B5cmln aHQgKGMpIDIwMDUsIDIwMDYgRGFtaWVuIEJlcmdhbWluaSA8ZGFtaWVuLmJlcmdhbWluaUBm cmVlLmZyPg0KKyAqIENvcHlyaWdodCAoYykgMjAwNiBOaWFsbCBPJ0hpZ2dpbnMgPG5pYWxs b0BvcGVuYnNkLm9yZz4NCisgKg0KKyAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2Rp ZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueQ0KKyAqIHB1cnBvc2Ug d2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0 aGUgYWJvdmUNCisgKiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90 aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBS T1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVT DQorICogV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJ RUQgV0FSUkFOVElFUyBPRg0KKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4gSU4g Tk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SDQorICogQU5ZIFNQRUNJ QUwsIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkg REFNQUdFUw0KKyAqIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERB VEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTg0KKyAqIEFDVElPTiBPRiBDT05UUkFDVCwg TkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GDQor ICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJ UyBTT0ZUV0FSRS4NCisgKi8NCisNCisjZGVmaW5lIFJUMjU3M19UWF9ERVNDX1NJWkUJKHNp emVvZiAoc3RydWN0IHJ1bV90eF9kZXNjKSkNCisjZGVmaW5lIFJUMjU3M19SWF9ERVNDX1NJ WkUJKHNpemVvZiAoc3RydWN0IHJ1bV9yeF9kZXNjKSkNCisNCisjZGVmaW5lIFJUMjU3M19D T05GSUdfTk8JMQ0KKyNkZWZpbmUgUlQyNTczX0lGQUNFX0lOREVYCTANCisNCisjZGVmaW5l IFJUMjU3M19NQ1VfQ05UTAkJMHgwMQ0KKyNkZWZpbmUgUlQyNTczX1dSSVRFX01BQwkweDAy DQorI2RlZmluZSBSVDI1NzNfUkVBRF9NQUMJCTB4MDMNCisjZGVmaW5lIFJUMjU3M19XUklU RV9NVUxUSV9NQUMJMHgwNg0KKyNkZWZpbmUgUlQyNTczX1JFQURfTVVMVElfTUFDCTB4MDcN CisjZGVmaW5lIFJUMjU3M19SRUFEX0VFUFJPTQkweDA5DQorI2RlZmluZSBSVDI1NzNfV1JJ VEVfTEVECTB4MGENCisNCisvKg0KKyAqIENvbnRyb2wgYW5kIHN0YXR1cyByZWdpc3RlcnMu DQorICovDQorI2RlZmluZSBSVDI1NzNfQUlGU05fQ1NSCTB4MDQwMA0KKyNkZWZpbmUgUlQy NTczX0NXTUlOX0NTUgkweDA0MDQNCisjZGVmaW5lIFJUMjU3M19DV01BWF9DU1IJMHgwNDA4 DQorI2RlZmluZSBSVDI1NzNfTUNVX0NPREVfQkFTRQkweDA4MDANCisjZGVmaW5lIFJUMjU3 M19IV19CRUFDT05fQkFTRTAJMHgyNDAwDQorI2RlZmluZSBSVDI1NzNfTUFDX0NTUjAJCTB4 MzAwMA0KKyNkZWZpbmUgUlQyNTczX01BQ19DU1IxCQkweDMwMDQNCisjZGVmaW5lIFJUMjU3 M19NQUNfQ1NSMgkJMHgzMDA4DQorI2RlZmluZSBSVDI1NzNfTUFDX0NTUjMJCTB4MzAwYw0K KyNkZWZpbmUgUlQyNTczX01BQ19DU1I0CQkweDMwMTANCisjZGVmaW5lIFJUMjU3M19NQUNf Q1NSNQkJMHgzMDE0DQorI2RlZmluZSBSVDI1NzNfTUFDX0NTUjYJCTB4MzAxOA0KKyNkZWZp bmUgUlQyNTczX01BQ19DU1I3CQkweDMwMWMNCisjZGVmaW5lIFJUMjU3M19NQUNfQ1NSOAkJ MHgzMDIwDQorI2RlZmluZSBSVDI1NzNfTUFDX0NTUjkJCTB4MzAyNA0KKyNkZWZpbmUgUlQy NTczX01BQ19DU1IxMAkweDMwMjgNCisjZGVmaW5lIFJUMjU3M19NQUNfQ1NSMTEJMHgzMDJj DQorI2RlZmluZSBSVDI1NzNfTUFDX0NTUjEyCTB4MzAzMA0KKyNkZWZpbmUgUlQyNTczX01B Q19DU1IxMwkweDMwMzQNCisjZGVmaW5lIFJUMjU3M19NQUNfQ1NSMTQJMHgzMDM4DQorI2Rl ZmluZSBSVDI1NzNfTUFDX0NTUjE1CTB4MzAzYw0KKyNkZWZpbmUgUlQyNTczX1RYUlhfQ1NS MAkweDMwNDANCisjZGVmaW5lIFJUMjU3M19UWFJYX0NTUjEJMHgzMDQ0DQorI2RlZmluZSBS VDI1NzNfVFhSWF9DU1IyCTB4MzA0OA0KKyNkZWZpbmUgUlQyNTczX1RYUlhfQ1NSMwkweDMw NGMNCisjZGVmaW5lIFJUMjU3M19UWFJYX0NTUjQJMHgzMDUwDQorI2RlZmluZSBSVDI1NzNf VFhSWF9DU1I1CTB4MzA1NA0KKyNkZWZpbmUgUlQyNTczX1RYUlhfQ1NSNgkweDMwNTgNCisj ZGVmaW5lIFJUMjU3M19UWFJYX0NTUjcJMHgzMDVjDQorI2RlZmluZSBSVDI1NzNfVFhSWF9D U1I4CTB4MzA2MA0KKyNkZWZpbmUgUlQyNTczX1RYUlhfQ1NSOQkweDMwNjQNCisjZGVmaW5l IFJUMjU3M19UWFJYX0NTUjEwCTB4MzA2OA0KKyNkZWZpbmUgUlQyNTczX1RYUlhfQ1NSMTEJ MHgzMDZjDQorI2RlZmluZSBSVDI1NzNfVFhSWF9DU1IxMgkweDMwNzANCisjZGVmaW5lIFJU MjU3M19UWFJYX0NTUjEzCTB4MzA3NA0KKyNkZWZpbmUgUlQyNTczX1RYUlhfQ1NSMTQJMHgz MDc4DQorI2RlZmluZSBSVDI1NzNfVFhSWF9DU1IxNQkweDMwN2MNCisjZGVmaW5lIFJUMjU3 M19QSFlfQ1NSMAkJMHgzMDgwDQorI2RlZmluZSBSVDI1NzNfUEhZX0NTUjEJCTB4MzA4NA0K KyNkZWZpbmUgUlQyNTczX1BIWV9DU1IyCQkweDMwODgNCisjZGVmaW5lIFJUMjU3M19QSFlf Q1NSMwkJMHgzMDhjDQorI2RlZmluZSBSVDI1NzNfUEhZX0NTUjQJCTB4MzA5MA0KKyNkZWZp bmUgUlQyNTczX1BIWV9DU1I1CQkweDMwOTQNCisjZGVmaW5lIFJUMjU3M19QSFlfQ1NSNgkJ MHgzMDk4DQorI2RlZmluZSBSVDI1NzNfUEhZX0NTUjcJCTB4MzA5Yw0KKyNkZWZpbmUgUlQy NTczX1NFQ19DU1IwCQkweDMwYTANCisjZGVmaW5lIFJUMjU3M19TRUNfQ1NSMQkJMHgzMGE0 DQorI2RlZmluZSBSVDI1NzNfU0VDX0NTUjIJCTB4MzBhOA0KKyNkZWZpbmUgUlQyNTczX1NF Q19DU1IzCQkweDMwYWMNCisjZGVmaW5lIFJUMjU3M19TRUNfQ1NSNAkJMHgzMGIwDQorI2Rl ZmluZSBSVDI1NzNfU0VDX0NTUjUJCTB4MzBiNA0KKyNkZWZpbmUgUlQyNTczX1NUQV9DU1Iw CQkweDMwYzANCisjZGVmaW5lIFJUMjU3M19TVEFfQ1NSMQkJMHgzMGM0DQorI2RlZmluZSBS VDI1NzNfU1RBX0NTUjIJCTB4MzBjOA0KKyNkZWZpbmUgUlQyNTczX1NUQV9DU1IzCQkweDMw Y2MNCisjZGVmaW5lIFJUMjU3M19TVEFfQ1NSNAkJMHgzMGQwDQorI2RlZmluZSBSVDI1NzNf U1RBX0NTUjUJCTB4MzBkNA0KKw0KKw0KKy8qIHBvc3NpYmxlIGZsYWdzIGZvciByZWdpc3Rl ciBSVDI1NzNfTUFDX0NTUjEgKi8NCisjZGVmaW5lIFJUMjU3M19SRVNFVF9BU0lDCSgxIDw8 IDApDQorI2RlZmluZSBSVDI1NzNfUkVTRVRfQkJQCSgxIDw8IDEpDQorI2RlZmluZSBSVDI1 NzNfSE9TVF9SRUFEWQkoMSA8PCAyKQ0KKw0KKy8qIHBvc3NpYmxlIGZsYWdzIGZvciByZWdp c3RlciBNQUNfQ1NSNSAqLw0KKyNkZWZpbmUgUlQyNTczX09ORV9CU1NJRAkzDQorDQorLyog cG9zc2libGUgZmxhZ3MgZm9yIHJlZ2lzdGVyIFRYUlhfQ1NSMCAqLw0KKy8qIFR4IGZpbHRl ciBmbGFncyBhcmUgaW4gdGhlIGxvdyAxNiBiaXRzICovDQorI2RlZmluZSBSVDI1NzNfQVVU T19UWF9TRVEJCSgxIDw8IDE1KQ0KKy8qIFJ4IGZpbHRlciBmbGFncyBhcmUgaW4gdGhlIGhp Z2ggMTYgYml0cyAqLw0KKyNkZWZpbmUgUlQyNTczX0RJU0FCTEVfUlgJCSgxIDw8IDE2KQ0K KyNkZWZpbmUgUlQyNTczX0RST1BfQ1JDX0VSUk9SCQkoMSA8PCAxNykNCisjZGVmaW5lIFJU MjU3M19EUk9QX1BIWV9FUlJPUgkJKDEgPDwgMTgpDQorI2RlZmluZSBSVDI1NzNfRFJPUF9D VEwJCQkoMSA8PCAxOSkNCisjZGVmaW5lIFJUMjU3M19EUk9QX05PVF9UT19NRQkJKDEgPDwg MjApDQorI2RlZmluZSBSVDI1NzNfRFJPUF9UT0RTCQkoMSA8PCAyMSkNCisjZGVmaW5lIFJU MjU3M19EUk9QX1ZFUl9FUlJPUgkJKDEgPDwgMjIpDQorI2RlZmluZSBSVDI1NzNfRFJPUF9N VUxUSUNBU1QJCSgxIDw8IDIzKQ0KKyNkZWZpbmUgUlQyNTczX0RST1BfQlJPQURDQVNUCQko MSA8PCAyNCkNCisjZGVmaW5lIFJUMjU3M19EUk9QX0FDS0NUUwkJKDEgPDwgMjUpDQorDQor LyogcG9zc2libGUgZmxhZ3MgZm9yIHJlZ2lzdGVyIFRYUlhfQ1NSNCAqLw0KKyNkZWZpbmUg UlQyNTczX1NIT1JUX1BSRUFNQkxFCSgxIDw8IDE4KQ0KKyNkZWZpbmUgUlQyNTczX01SUl9F TkFCTEVECSgxIDw8IDE5KQ0KKyNkZWZpbmUgUlQyNTczX01SUl9DQ0tfRkFMTEJBQ0sJKDEg PDwgMjIpDQorDQorLyogcG9zc2libGUgZmxhZ3MgZm9yIHJlZ2lzdGVyIFRYUlhfQ1NSOSAq Lw0KKyNkZWZpbmUgUlQyNTczX1RTRl9USUNLSU5HCSgxIDw8IDE2KQ0KKyNkZWZpbmUgUlQy NTczX1RTRl9NT0RFKHgpCSgoKHgpICYgMHgzKSA8PCAxNykNCisvKiBUQlRUIHN0YW5kcyBm b3IgVGFyZ2V0IEJlYWNvbiBUcmFuc21pc3Npb24gVGltZSAqLw0KKyNkZWZpbmUgUlQyNTcz X0VOQUJMRV9UQlRUCSgxIDw8IDE5KQ0KKyNkZWZpbmUgUlQyNTczX0dFTkVSQVRFX0JFQUNP TgkoMSA8PCAyMCkNCisNCisvKiBwb3NzaWJsZSBmbGFncyBmb3IgcmVnaXN0ZXIgUEhZX0NT UjAgKi8NCisjZGVmaW5lIFJUMjU3M19QQV9QRV8yR0haCSgxIDw8IDE2KQ0KKyNkZWZpbmUg UlQyNTczX1BBX1BFXzVHSFoJKDEgPDwgMTcpDQorDQorLyogcG9zc2libGUgZmxhZ3MgZm9y IHJlZ2lzdGVyIFBIWV9DU1IzICovDQorI2RlZmluZSBSVDI1NzNfQkJQX1JFQUQJKDEgPDwg MTUpDQorI2RlZmluZSBSVDI1NzNfQkJQX0JVU1kJKDEgPDwgMTYpDQorLyogcG9zc2libGUg ZmxhZ3MgZm9yIHJlZ2lzdGVyIFBIWV9DU1I0ICovDQorI2RlZmluZSBSVDI1NzNfUkZfMjBC SVQJKDIwIDw8IDI0KQ0KKyNkZWZpbmUgUlQyNTczX1JGX0JVU1kJKDEgPDwgMzEpDQorDQor LyogTEVEIHZhbHVlcyAqLw0KKyNkZWZpbmUgUlQyNTczX0xFRF9SQURJTwkoMSA8PCA4KQ0K KyNkZWZpbmUgUlQyNTczX0xFRF9HCQkoMSA8PCA5KQ0KKyNkZWZpbmUgUlQyNTczX0xFRF9B CQkoMSA8PCAxMCkNCisjZGVmaW5lIFJUMjU3M19MRURfT04JCTB4MWUxZQ0KKyNkZWZpbmUg UlQyNTczX0xFRF9PRkYJCTB4MA0KKw0KKyNkZWZpbmUgUlQyNTczX01DVV9SVU4JKDEgPDwg MykNCisNCisjZGVmaW5lIFJUMjU3M19TTUFSVF9NT0RFCSgxIDw8IDApDQorDQorI2RlZmlu ZSBSVDI1NzNfQkJQUjk0X0RFRkFVTFQJNg0KKw0KKyNkZWZpbmUgUlQyNTczX0JCUF9XUklU RQkoMSA8PCAxNSkNCisNCisvKiBkdWFsLWJhbmQgUkYgKi8NCisjZGVmaW5lIFJUMjU3M19S Rl81MjI2CTENCisjZGVmaW5lIFJUMjU3M19SRl81MjI1CTMNCisvKiBzaW5nbGUtYmFuZCBS RiAqLw0KKyNkZWZpbmUgUlQyNTczX1JGXzI1MjgJMg0KKyNkZWZpbmUgUlQyNTczX1JGXzI1 MjcJNA0KKw0KKyNkZWZpbmUgUlQyNTczX0JCUF9WRVJTSU9OCTANCisNCitzdHJ1Y3QgcnVt X3R4X2Rlc2Mgew0KKwl1aW50MzJfdAlmbGFnczsNCisjZGVmaW5lIFJUMjU3M19UWF9CVVJT VAkJCSgxIDw8IDApDQorI2RlZmluZSBSVDI1NzNfVFhfVkFMSUQJCQkoMSA8PCAxKQ0KKyNk ZWZpbmUgUlQyNTczX1RYX01PUkVfRlJBRwkJKDEgPDwgMikNCisjZGVmaW5lIFJUMjU3M19U WF9BQ0sJCQkoMSA8PCAzKQ0KKyNkZWZpbmUgUlQyNTczX1RYX1RJTUVTVEFNUAkJKDEgPDwg NCkNCisjZGVmaW5lIFJUMjU3M19UWF9PRkRNCQkJKDEgPDwgNSkNCisjZGVmaW5lIFJUMjU3 M19UWF9JRlNfU0lGUwkJKDEgPDwgNikNCisjZGVmaW5lIFJUMjU3M19UWF9MT05HX1JFVFJZ CQkoMSA8PCA3KQ0KKw0KKwl1aW50MTZfdAl3bWU7DQorI2RlZmluZSBSVDI1NzNfUUlEKHYp CQkodikNCisjZGVmaW5lIFJUMjU3M19BSUZTTih2KQkJKCh2KSA8PCA0KQ0KKyNkZWZpbmUg UlQyNTczX0xPR0NXTUlOKHYpCSgodikgPDwgOCkNCisjZGVmaW5lIFJUMjU3M19MT0dDV01B WCh2KQkoKHYpIDw8IDEyKQ0KKw0KKwl1aW50MTZfdAl4ZmxhZ3M7DQorI2RlZmluZSBSVDI1 NzNfVFhfSFdTRVEJCSgxIDw8IDEyKQ0KKw0KKwl1aW50OF90CQlwbGNwX3NpZ25hbDsNCisJ dWludDhfdAkJcGxjcF9zZXJ2aWNlOw0KKyNkZWZpbmUgUlQyNTczX1BMQ1BfTEVOR0VYVAkw eDgwDQorDQorCXVpbnQ4X3QJCXBsY3BfbGVuZ3RoX2xvOw0KKwl1aW50OF90CQlwbGNwX2xl bmd0aF9oaTsNCisNCisJdWludDMyX3QJaXY7DQorCXVpbnQzMl90CWVpdjsNCisNCisJdWlu dDhfdAkJb2Zmc2V0Ow0KKwl1aW50OF90CQlxaWQ7DQorCXVpbnQ4X3QJCXR4cG93ZXI7DQor I2RlZmluZSBSVDI1NzNfREVGQVVMVF9UWFBPV0VSCTANCisNCisJdWludDhfdAkJcmVzZXJ2 ZWQ7DQorfSBfX3BhY2tlZDsNCisNCitzdHJ1Y3QgcnVtX3J4X2Rlc2Mgew0KKwl1aW50MzJf dAlmbGFnczsNCisjZGVmaW5lIFJUMjU3M19SWF9CVVNZCQkoMSA8PCAwKQ0KKyNkZWZpbmUg UlQyNTczX1JYX0RST1AJCSgxIDw8IDEpDQorI2RlZmluZSBSVDI1NzNfUlhfQ1JDX0VSUk9S CSgxIDw8IDYpDQorI2RlZmluZSBSVDI1NzNfUlhfT0ZETQkJKDEgPDwgNykNCisNCisJdWlu dDhfdAkJcmF0ZTsNCisJdWludDhfdAkJcnNzaTsNCisJdWludDhfdAkJcmVzZXJ2ZWQxOw0K Kwl1aW50OF90CQlvZmZzZXQ7DQorCXVpbnQzMl90CWl2Ow0KKwl1aW50MzJfdAllaXY7DQor CXVpbnQzMl90CXJlc2VydmVkMlsyXTsNCit9IF9fcGFja2VkOw0KKw0KKyNkZWZpbmUgUlQy NTczX1JGMQkwDQorI2RlZmluZSBSVDI1NzNfUkYyCTINCisjZGVmaW5lIFJUMjU3M19SRjMJ MQ0KKyNkZWZpbmUgUlQyNTczX1JGNAkzDQorDQorI2RlZmluZSBSVDI1NzNfRUVQUk9NX01B Q0JCUAkJMHgwMDAwDQorI2RlZmluZSBSVDI1NzNfRUVQUk9NX0FERFJFU1MJCTB4MDAwNA0K KyNkZWZpbmUgUlQyNTczX0VFUFJPTV9BTlRFTk5BCQkweDAwMjANCisjZGVmaW5lIFJUMjU3 M19FRVBST01fQ09ORklHMgkJMHgwMDIyDQorI2RlZmluZSBSVDI1NzNfRUVQUk9NX0JCUF9C QVNFCQkweDAwMjYNCisjZGVmaW5lIFJUMjU3M19FRVBST01fVFhQT1dFUgkJMHgwMDQ2DQor I2RlZmluZSBSVDI1NzNfRUVQUk9NX0ZSRVFfT0ZGU0VUCTB4MDA1ZQ0KKyNkZWZpbmUgUlQy NTczX0VFUFJPTV9SU1NJXzJHSFpfT0ZGU0VUCTB4MDA5YQ0KKyNkZWZpbmUgUlQyNTczX0VF UFJPTV9SU1NJXzVHSFpfT0ZGU0VUCTB4MDA5Yw0KKw0KKy8qDQorICogRGVmYXVsdCB2YWx1 ZXMgZm9yIE1BQyByZWdpc3RlcnM7IHZhbHVlcyB0YWtlbiBmcm9tIHRoZSByZWZlcmVuY2Ug ZHJpdmVyLg0KKyAqLw0KKyNkZWZpbmUgUlQyNTczX0RFRl9NQUMJCQkJXA0KKwl7IFJUMjU3 M19UWFJYX0NTUjAsICAweDAyNWZiMDMyIH0sCVwNCisJeyBSVDI1NzNfVFhSWF9DU1IxLCAg MHg5ZWFhOWVhZiB9LAlcDQorCXsgUlQyNTczX1RYUlhfQ1NSMiwgIDB4OGE4YjhjOGQgfSwJ XA0KKwl7IFJUMjU3M19UWFJYX0NTUjMsICAweDAwODU4Njg3IH0sCVwNCisJeyBSVDI1NzNf VFhSWF9DU1I3LCAgMHgyZTMxMzUzYiB9LAlcDQorCXsgUlQyNTczX1RYUlhfQ1NSOCwgIDB4 MmEyYTJhMmMgfSwJXA0KKwl7IFJUMjU3M19UWFJYX0NTUjE1LCAweDAwMDAwMDBmIH0sCVwN CisJeyBSVDI1NzNfTUFDX0NTUjYsICAgMHgwMDAwMGZmZiB9LAlcDQorCXsgUlQyNTczX01B Q19DU1I4LCAgIDB4MDE2YzAzMGEgfSwJXA0KKwl7IFJUMjU3M19NQUNfQ1NSMTAsICAweDAw MDAwNzE4IH0sCVwNCisJeyBSVDI1NzNfTUFDX0NTUjEyLCAgMHgwMDAwMDAwNCB9LAlcDQor CXsgUlQyNTczX01BQ19DU1IxMywgIDB4MDAwMDdmMDAgfSwJXA0KKwl7IFJUMjU3M19TRUNf Q1NSMCwgICAweDAwMDAwMDAwIH0sCVwNCisJeyBSVDI1NzNfU0VDX0NTUjEsICAgMHgwMDAw MDAwMCB9LAlcDQorCXsgUlQyNTczX1NFQ19DU1I1LCAgIDB4MDAwMDAwMDAgfSwJXA0KKwl7 IFJUMjU3M19QSFlfQ1NSMSwgICAweDAwMDAyM2IwIH0sCVwNCisJeyBSVDI1NzNfUEhZX0NT UjUsICAgMHgwMDA0MGEwNiB9LAlcDQorCXsgUlQyNTczX1BIWV9DU1I2LCAgIDB4MDAwODA2 MDYgfSwJXA0KKwl7IFJUMjU3M19QSFlfQ1NSNywgICAweDAwMDAwNDA4IH0sCVwNCisJeyBS VDI1NzNfQUlGU05fQ1NSLCAgMHgwMDAwMjI3MyB9LAlcDQorCXsgUlQyNTczX0NXTUlOX0NT UiwgIDB4MDAwMDIzNDQgfSwJXA0KKwl7IFJUMjU3M19DV01BWF9DU1IsICAweDAwMDAzNGFh IH0NCisNCisvKg0KKyAqIERlZmF1bHQgdmFsdWVzIGZvciBCQlAgcmVnaXN0ZXJzOyB2YWx1 ZXMgdGFrZW4gZnJvbSB0aGUgcmVmZXJlbmNlIGRyaXZlci4NCisgKi8NCisjZGVmaW5lIFJU MjU3M19ERUZfQkJQCVwNCisJeyAgIDMsIDB4ODAgfSwJXA0KKwl7ICAxNSwgMHgzMCB9LAlc DQorCXsgIDE3LCAweDIwIH0sCVwNCisJeyAgMjEsIDB4YzggfSwJXA0KKwl7ICAyMiwgMHgz OCB9LAlcDQorCXsgIDIzLCAweDA2IH0sCVwNCisJeyAgMjQsIDB4ZmUgfSwJXA0KKwl7ICAy NSwgMHgwYSB9LAlcDQorCXsgIDI2LCAweDBkIH0sCVwNCisJeyAgMzIsIDB4MGIgfSwJXA0K Kwl7ICAzNCwgMHgxMiB9LAlcDQorCXsgIDM3LCAweDA3IH0sCVwNCisJeyAgMzksIDB4Zjgg fSwJXA0KKwl7ICA0MSwgMHg2MCB9LAlcDQorCXsgIDUzLCAweDEwIH0sCVwNCisJeyAgNTQs IDB4MTggfSwJXA0KKwl7ICA2MCwgMHgxMCB9LAlcDQorCXsgIDYxLCAweDA0IH0sCVwNCisJ eyAgNjIsIDB4MDQgfSwJXA0KKwl7ICA3NSwgMHhmZSB9LAlcDQorCXsgIDg2LCAweGZlIH0s CVwNCisJeyAgODgsIDB4ZmUgfSwJXA0KKwl7ICA5MCwgMHgwZiB9LAlcDQorCXsgIDk5LCAw eDAwIH0sCVwNCisJeyAxMDIsIDB4MTYgfSwJXA0KKwl7IDEwNywgMHgwNCB9DQorDQorLyoN CisgKiBEZWZhdWx0IHNldHRpbmdzIGZvciBSRiByZWdpc3RlcnM7IHZhbHVlcyB0YWtlbiBm cm9tIHRoZSByZWZlcmVuY2UgZHJpdmVyLg0KKyAqLw0KKyNkZWZpbmUgUlQyNTczX1JGNTIy NgkJCQkJXA0KKwl7ICAgMSwgMHgwMGIwMywgMHgwMDFlMSwgMHgxYTAxNCwgMHgzMDI4MiB9 LAlcDQorCXsgICAyLCAweDAwYjAzLCAweDAwMWUxLCAweDFhMDE0LCAweDMwMjg3IH0sCVwN CisJeyAgIDMsIDB4MDBiMDMsIDB4MDAxZTIsIDB4MWEwMTQsIDB4MzAyODIgfSwJXA0KKwl7 ICAgNCwgMHgwMGIwMywgMHgwMDFlMiwgMHgxYTAxNCwgMHgzMDI4NyB9LAlcDQorCXsgICA1 LCAweDAwYjAzLCAweDAwMWUzLCAweDFhMDE0LCAweDMwMjgyIH0sCVwNCisJeyAgIDYsIDB4 MDBiMDMsIDB4MDAxZTMsIDB4MWEwMTQsIDB4MzAyODcgfSwJXA0KKwl7ICAgNywgMHgwMGIw MywgMHgwMDFlNCwgMHgxYTAxNCwgMHgzMDI4MiB9LAlcDQorCXsgICA4LCAweDAwYjAzLCAw eDAwMWU0LCAweDFhMDE0LCAweDMwMjg3IH0sCVwNCisJeyAgIDksIDB4MDBiMDMsIDB4MDAx ZTUsIDB4MWEwMTQsIDB4MzAyODIgfSwJXA0KKwl7ICAxMCwgMHgwMGIwMywgMHgwMDFlNSwg MHgxYTAxNCwgMHgzMDI4NyB9LAlcDQorCXsgIDExLCAweDAwYjAzLCAweDAwMWU2LCAweDFh MDE0LCAweDMwMjgyIH0sCVwNCisJeyAgMTIsIDB4MDBiMDMsIDB4MDAxZTYsIDB4MWEwMTQs IDB4MzAyODcgfSwJXA0KKwl7ICAxMywgMHgwMGIwMywgMHgwMDFlNywgMHgxYTAxNCwgMHgz MDI4MiB9LAlcDQorCXsgIDE0LCAweDAwYjAzLCAweDAwMWU4LCAweDFhMDE0LCAweDMwMjg0 IH0sCVwNCisJCQkJCQkJXA0KKwl7ICAzNCwgMHgwMGIwMywgMHgyMDI2NiwgMHgzNjAxNCwg MHgzMDI4MiB9LAlcDQorCXsgIDM4LCAweDAwYjAzLCAweDIwMjY3LCAweDM2MDE0LCAweDMw Mjg0IH0sCVwNCisJeyAgNDIsIDB4MDBiMDMsIDB4MjAyNjgsIDB4MzYwMTQsIDB4MzAyODYg fSwJXA0KKwl7ICA0NiwgMHgwMGIwMywgMHgyMDI2OSwgMHgzNjAxNCwgMHgzMDI4OCB9LAlc DQorCQkJCQkJCVwNCisJeyAgMzYsIDB4MDBiMDMsIDB4MDAyNjYsIDB4MjYwMTQsIDB4MzAy ODggfSwJXA0KKwl7ICA0MCwgMHgwMGIwMywgMHgwMDI2OCwgMHgyNjAxNCwgMHgzMDI4MCB9 LAlcDQorCXsgIDQ0LCAweDAwYjAzLCAweDAwMjY5LCAweDI2MDE0LCAweDMwMjgyIH0sCVwN CisJeyAgNDgsIDB4MDBiMDMsIDB4MDAyNmEsIDB4MjYwMTQsIDB4MzAyODQgfSwJXA0KKwl7 ICA1MiwgMHgwMGIwMywgMHgwMDI2YiwgMHgyNjAxNCwgMHgzMDI4NiB9LAlcDQorCXsgIDU2 LCAweDAwYjAzLCAweDAwMjZjLCAweDI2MDE0LCAweDMwMjg4IH0sCVwNCisJeyAgNjAsIDB4 MDBiMDMsIDB4MDAyNmUsIDB4MjYwMTQsIDB4MzAyODAgfSwJXA0KKwl7ICA2NCwgMHgwMGIw MywgMHgwMDI2ZiwgMHgyNjAxNCwgMHgzMDI4MiB9LAlcDQorCQkJCQkJCVwNCisJeyAxMDAs IDB4MDBiMDMsIDB4MDAyOGEsIDB4MmUwMTQsIDB4MzAyODAgfSwJXA0KKwl7IDEwNCwgMHgw MGIwMywgMHgwMDI4YiwgMHgyZTAxNCwgMHgzMDI4MiB9LAlcDQorCXsgMTA4LCAweDAwYjAz LCAweDAwMjhjLCAweDJlMDE0LCAweDMwMjg0IH0sCVwNCisJeyAxMTIsIDB4MDBiMDMsIDB4 MDAyOGQsIDB4MmUwMTQsIDB4MzAyODYgfSwJXA0KKwl7IDExNiwgMHgwMGIwMywgMHgwMDI4 ZSwgMHgyZTAxNCwgMHgzMDI4OCB9LAlcDQorCXsgMTIwLCAweDAwYjAzLCAweDAwMmEwLCAw eDJlMDE0LCAweDMwMjgwIH0sCVwNCisJeyAxMjQsIDB4MDBiMDMsIDB4MDAyYTEsIDB4MmUw MTQsIDB4MzAyODIgfSwJXA0KKwl7IDEyOCwgMHgwMGIwMywgMHgwMDJhMiwgMHgyZTAxNCwg MHgzMDI4NCB9LAlcDQorCXsgMTMyLCAweDAwYjAzLCAweDAwMmEzLCAweDJlMDE0LCAweDMw Mjg2IH0sCVwNCisJeyAxMzYsIDB4MDBiMDMsIDB4MDAyYTQsIDB4MmUwMTQsIDB4MzAyODgg fSwJXA0KKwl7IDE0MCwgMHgwMGIwMywgMHgwMDJhNiwgMHgyZTAxNCwgMHgzMDI4MCB9LAlc DQorCQkJCQkJCVwNCisJeyAxNDksIDB4MDBiMDMsIDB4MDAyYTgsIDB4MmUwMTQsIDB4MzAy ODcgfSwJXA0KKwl7IDE1MywgMHgwMGIwMywgMHgwMDJhOSwgMHgyZTAxNCwgMHgzMDI4OSB9 LAlcDQorCXsgMTU3LCAweDAwYjAzLCAweDAwMmFiLCAweDJlMDE0LCAweDMwMjgxIH0sCVwN CisJeyAxNjEsIDB4MDBiMDMsIDB4MDAyYWMsIDB4MmUwMTQsIDB4MzAyODMgfSwJXA0KKwl7 IDE2NSwgMHgwMGIwMywgMHgwMDJhZCwgMHgyZTAxNCwgMHgzMDI4NSB9DQorDQorI2RlZmlu ZSBSVDI1NzNfUkY1MjI1CQkJCQlcDQorCXsgICAxLCAweDAwYjMzLCAweDAxMWUxLCAweDFh MDE0LCAweDMwMjgyIH0sCVwNCisJeyAgIDIsIDB4MDBiMzMsIDB4MDExZTEsIDB4MWEwMTQs IDB4MzAyODcgfSwJXA0KKwl7ICAgMywgMHgwMGIzMywgMHgwMTFlMiwgMHgxYTAxNCwgMHgz MDI4MiB9LAlcDQorCXsgICA0LCAweDAwYjMzLCAweDAxMWUyLCAweDFhMDE0LCAweDMwMjg3 IH0sCVwNCisJeyAgIDUsIDB4MDBiMzMsIDB4MDExZTMsIDB4MWEwMTQsIDB4MzAyODIgfSwJ XA0KKwl7ICAgNiwgMHgwMGIzMywgMHgwMTFlMywgMHgxYTAxNCwgMHgzMDI4NyB9LAlcDQor CXsgICA3LCAweDAwYjMzLCAweDAxMWU0LCAweDFhMDE0LCAweDMwMjgyIH0sCVwNCisJeyAg IDgsIDB4MDBiMzMsIDB4MDExZTQsIDB4MWEwMTQsIDB4MzAyODcgfSwJXA0KKwl7ICAgOSwg MHgwMGIzMywgMHgwMTFlNSwgMHgxYTAxNCwgMHgzMDI4MiB9LAlcDQorCXsgIDEwLCAweDAw YjMzLCAweDAxMWU1LCAweDFhMDE0LCAweDMwMjg3IH0sCVwNCisJeyAgMTEsIDB4MDBiMzMs IDB4MDExZTYsIDB4MWEwMTQsIDB4MzAyODIgfSwJXA0KKwl7ICAxMiwgMHgwMGIzMywgMHgw MTFlNiwgMHgxYTAxNCwgMHgzMDI4NyB9LAlcDQorCXsgIDEzLCAweDAwYjMzLCAweDAxMWU3 LCAweDFhMDE0LCAweDMwMjgyIH0sCVwNCisJeyAgMTQsIDB4MDBiMzMsIDB4MDExZTgsIDB4 MWEwMTQsIDB4MzAyODQgfSwJXA0KKwkJCQkJCQlcDQorCXsgIDM0LCAweDAwYjMzLCAweDAx MjY2LCAweDI2MDE0LCAweDMwMjgyIH0sCVwNCisJeyAgMzgsIDB4MDBiMzMsIDB4MDEyNjcs IDB4MjYwMTQsIDB4MzAyODQgfSwJXA0KKwl7ICA0MiwgMHgwMGIzMywgMHgwMTI2OCwgMHgy NjAxNCwgMHgzMDI4NiB9LAlcDQorCXsgIDQ2LCAweDAwYjMzLCAweDAxMjY5LCAweDI2MDE0 LCAweDMwMjg4IH0sCVwNCisJCQkJCQkJXA0KKwl7ICAzNiwgMHgwMGIzMywgMHgwMTI2Niwg MHgyNjAxNCwgMHgzMDI4OCB9LAlcDQorCXsgIDQwLCAweDAwYjMzLCAweDAxMjY4LCAweDI2 MDE0LCAweDMwMjgwIH0sCVwNCisJeyAgNDQsIDB4MDBiMzMsIDB4MDEyNjksIDB4MjYwMTQs IDB4MzAyODIgfSwJXA0KKwl7ICA0OCwgMHgwMGIzMywgMHgwMTI2YSwgMHgyNjAxNCwgMHgz MDI4NCB9LAlcDQorCXsgIDUyLCAweDAwYjMzLCAweDAxMjZiLCAweDI2MDE0LCAweDMwMjg2 IH0sCVwNCisJeyAgNTYsIDB4MDBiMzMsIDB4MDEyNmMsIDB4MjYwMTQsIDB4MzAyODggfSwJ XA0KKwl7ICA2MCwgMHgwMGIzMywgMHgwMTI2ZSwgMHgyNjAxNCwgMHgzMDI4MCB9LAlcDQor CXsgIDY0LCAweDAwYjMzLCAweDAxMjZmLCAweDI2MDE0LCAweDMwMjgyIH0sCVwNCisJCQkJ CQkJXA0KKwl7IDEwMCwgMHgwMGIzMywgMHgwMTI4YSwgMHgyZTAxNCwgMHgzMDI4MCB9LAlc DQorCXsgMTA0LCAweDAwYjMzLCAweDAxMjhiLCAweDJlMDE0LCAweDMwMjgyIH0sCVwNCisJ eyAxMDgsIDB4MDBiMzMsIDB4MDEyOGMsIDB4MmUwMTQsIDB4MzAyODQgfSwJXA0KKwl7IDEx MiwgMHgwMGIzMywgMHgwMTI4ZCwgMHgyZTAxNCwgMHgzMDI4NiB9LAlcDQorCXsgMTE2LCAw eDAwYjMzLCAweDAxMjhlLCAweDJlMDE0LCAweDMwMjg4IH0sCVwNCisJeyAxMjAsIDB4MDBi MzMsIDB4MDEyYTAsIDB4MmUwMTQsIDB4MzAyODAgfSwJXA0KKwl7IDEyNCwgMHgwMGIzMywg MHgwMTJhMSwgMHgyZTAxNCwgMHgzMDI4MiB9LAlcDQorCXsgMTI4LCAweDAwYjMzLCAweDAx MmEyLCAweDJlMDE0LCAweDMwMjg0IH0sCVwNCisJeyAxMzIsIDB4MDBiMzMsIDB4MDEyYTMs IDB4MmUwMTQsIDB4MzAyODYgfSwJXA0KKwl7IDEzNiwgMHgwMGIzMywgMHgwMTJhNCwgMHgy ZTAxNCwgMHgzMDI4OCB9LAlcDQorCXsgMTQwLCAweDAwYjMzLCAweDAxMmE2LCAweDJlMDE0 LCAweDMwMjgwIH0sCVwNCisJCQkJCQkJXA0KKwl7IDE0OSwgMHgwMGIzMywgMHgwMTJhOCwg MHgyZTAxNCwgMHgzMDI4NyB9LAlcDQorCXsgMTUzLCAweDAwYjMzLCAweDAxMmE5LCAweDJl MDE0LCAweDMwMjg5IH0sCVwNCisJeyAxNTcsIDB4MDBiMzMsIDB4MDEyYWIsIDB4MmUwMTQs IDB4MzAyODEgfSwJXA0KKwl7IDE2MSwgMHgwMGIzMywgMHgwMTJhYywgMHgyZTAxNCwgMHgz MDI4MyB9LAlcDQorCXsgMTY1LCAweDAwYjMzLCAweDAxMmFkLCAweDJlMDE0LCAweDMwMjg1 IH0NCkluZGV4OiBzeXMvZGV2L3VzYi9pZl9ydW12YXIuaA0KPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNT IGZpbGU6IHN5cy9kZXYvdXNiL2lmX3J1bXZhci5oDQpkaWZmIC1OIHN5cy9kZXYvdXNiL2lm X3J1bXZhci5oDQotLS0gL2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDANCisr KyBzeXMvZGV2L3VzYi9pZl9ydW12YXIuaAkyMiBBcHIgMjAwNyAwODowMTo1NCAtMDAwMA0K QEAgLTAsMCArMSwxNjMgQEANCisvKgkkT3BlbkJTRDogaWZfcnVtdmFyLmgsdiAxLjYgMjAw Ni8wOC8xOCAxNToxMToxMiBkYW1pZW4gRXhwICQJKi8NCisNCisvKi0NCisgKiBDb3B5cmln aHQgKGMpIDIwMDUsIDIwMDYgRGFtaWVuIEJlcmdhbWluaSA8ZGFtaWVuLmJlcmdhbWluaUBm cmVlLmZyPg0KKyAqIENvcHlyaWdodCAoYykgMjAwNiBOaWFsbCBPJ0hpZ2dpbnMgPG5pYWxs b0BvcGVuYnNkLm9yZz4NCisgKiBDb3B5cmlnaHQgKGMpIDIwMDYsIDIwMDcgVmFsZXJ5IFYu Q2hpa2Fsb3YgPHZhbGVyYUBjaGlrYWxvdi5kcC51YT4NCisgKg0KKyAqIFBlcm1pc3Npb24g dG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9y IGFueQ0KKyAqIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRl ZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUNCisgKiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0 aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLg0KKyAqDQorICog VEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xB SU1TIEFMTCBXQVJSQU5USUVTDQorICogV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJ TkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRg0KKyAqIE1FUkNIQU5UQUJJTElU WSBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUg Rk9SDQorICogQU5ZIFNQRUNJQUwsIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJ QUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUw0KKyAqIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZS T00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTg0KKyAqIEFD VElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04s IEFSSVNJTkcgT1VUIE9GDQorICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1Ig UEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4NCisgKi8NCisNCisjZGVmaW5lIFJUMjU3 M19SWF9MSVNUX0NPVU5UCTENCisjZGVmaW5lIFJUMjU3M19UWF9MSVNUX0NPVU5UCTENCisN CitzdHJ1Y3QgcnVtX3J4X3JhZGlvdGFwX2hlYWRlciB7DQorCXN0cnVjdCBpZWVlODAyMTFf cmFkaW90YXBfaGVhZGVyIHdyX2loZHI7DQorCXVpbnQ4X3QJCXdyX2ZsYWdzOw0KKwl1aW50 OF90CQl3cl9yYXRlOw0KKwl1aW50MTZfdAl3cl9jaGFuX2ZyZXE7DQorCXVpbnQxNl90CXdy X2NoYW5fZmxhZ3M7DQorCXVpbnQ4X3QJCXdyX2FudGVubmE7DQorCXVpbnQ4X3QJCXdyX2Fu dHNpZ25hbDsNCit9IF9fcGFja2VkOw0KKw0KKyNkZWZpbmUgUlQyNTczX1JYX1JBRElPVEFQ X1BSRVNFTlQJCQkJCVwNCisJKCgxIDw8IElFRUU4MDIxMV9SQURJT1RBUF9GTEFHUykgfAkJ CQlcDQorCSAoMSA8PCBJRUVFODAyMTFfUkFESU9UQVBfUkFURSkgfAkJCQlcDQorCSAoMSA8 PCBJRUVFODAyMTFfUkFESU9UQVBfQ0hBTk5FTCkgfAkJCQlcDQorCSAoMSA8PCBJRUVFODAy MTFfUkFESU9UQVBfQU5URU5OQSkgfAkJCQlcDQorCSAoMSA8PCBJRUVFODAyMTFfUkFESU9U QVBfREJfQU5UU0lHTkFMKSkNCisNCitzdHJ1Y3QgcnVtX3R4X3JhZGlvdGFwX2hlYWRlciB7 DQorCXN0cnVjdCBpZWVlODAyMTFfcmFkaW90YXBfaGVhZGVyIHd0X2loZHI7DQorCXVpbnQ4 X3QJCXd0X2ZsYWdzOw0KKwl1aW50OF90CQl3dF9yYXRlOw0KKwl1aW50MTZfdAl3dF9jaGFu X2ZyZXE7DQorCXVpbnQxNl90CXd0X2NoYW5fZmxhZ3M7DQorCXVpbnQ4X3QJCXd0X2FudGVu bmE7DQorfSBfX3BhY2tlZDsNCisNCisjZGVmaW5lIFJUMjU3M19UWF9SQURJT1RBUF9QUkVT RU5UCQkJCQkJXA0KKwkoKDEgPDwgSUVFRTgwMjExX1JBRElPVEFQX0ZMQUdTKSB8CQkJCVwN CisJICgxIDw8IElFRUU4MDIxMV9SQURJT1RBUF9SQVRFKSB8CQkJCVwNCisJICgxIDw8IElF RUU4MDIxMV9SQURJT1RBUF9DSEFOTkVMKSB8CQkJCVwNCisJICgxIDw8IElFRUU4MDIxMV9S QURJT1RBUF9BTlRFTk5BKSkNCisNCitzdHJ1Y3QgcnVtX3NvZnRjOw0KKw0KK3N0cnVjdCBy dW1fdHhfZGF0YSB7DQorCXN0cnVjdCBydW1fc29mdGMJKnNjOw0KKwl1c2JkX3hmZXJfaGFu ZGxlCXhmZXI7DQorCXVpbnQ4X3QJCQkqYnVmOw0KKwlzdHJ1Y3QgbWJ1ZgkJKm07DQorCXN0 cnVjdCBpZWVlODAyMTFfbm9kZQkqbmk7DQorfTsNCisNCitzdHJ1Y3QgcnVtX3J4X2RhdGEg ew0KKwlzdHJ1Y3QgcnVtX3NvZnRjCSpzYzsNCisJdXNiZF94ZmVyX2hhbmRsZQl4ZmVyOw0K Kwl1aW50OF90CQkJKmJ1ZjsNCisJc3RydWN0IG1idWYJCSptOw0KK307DQorDQorc3RydWN0 IHJ1bV9zb2Z0YyB7DQorCWRldmljZV90CQkJICAgIHNjX2RldjsNCisJc3RydWN0IGlmbmV0 ICAgICAgICAgICAqc2NfaWZwOw0KKwlzdHJ1Y3QgaWVlZTgwMjExY29tCQlzY19pYzsNCisJ aW50CQkJCSgqc2NfbmV3c3RhdGUpKHN0cnVjdCBpZWVlODAyMTFjb20gKiwNCisJCQkJCSAg ICBlbnVtIGllZWU4MDIxMV9zdGF0ZSwgaW50KTsNCisNCisJdXNiZF9kZXZpY2VfaGFuZGxl CQlzY191ZGV2Ow0KKwl1c2JkX2ludGVyZmFjZV9oYW5kbGUJCXNjX2lmYWNlOw0KKwlpbnQJ CQkJc2NfZmxhZ3M7DQorI2RlZmluZQlSVDI1NzNfRldMT0FERUQJKDEgPDwgMCkNCisNCisJ c3RydWN0IGllZWU4MDIxMV9jaGFubmVsCSpzY19jdXJjaGFuOw0KKw0KKwlpbnQJCQkJc2Nf cnhfbm87DQorCWludAkJCQlzY190eF9ubzsNCisNCisJdWludDE2X3QJCQltYWNiYnBfcmV2 Ow0KKwl1aW50OF90CQkJCXJmX3JldjsNCisJdWludDhfdAkJCQlyZmZyZXE7DQorDQorCXVz YmRfeGZlcl9oYW5kbGUJCWFtcnJfeGZlcjsNCisNCisJdXNiZF9waXBlX2hhbmRsZQkJc2Nf cnhfcGlwZWg7DQorCXVzYmRfcGlwZV9oYW5kbGUJCXNjX3R4X3BpcGVoOw0KKw0KKwllbnVt IGllZWU4MDIxMV9zdGF0ZQkJc2Nfc3RhdGU7DQorCXN0cnVjdCB1c2JfdGFzawkJCXNjX3Rh c2s7DQorDQorCXN0cnVjdCBpZWVlODAyMTFfYW1yciAgICAgICAgCWFtcnI7DQorCXN0cnVj dCBpZWVlODAyMTFfYW1ycl9ub2RlICAgICAJYW1uOw0KKw0KKwlzdHJ1Y3QgcnVtX3J4X2Rh dGEJCXJ4X2RhdGFbUlQyNTczX1JYX0xJU1RfQ09VTlRdOw0KKwlzdHJ1Y3QgcnVtX3R4X2Rh dGEJCXR4X2RhdGFbUlQyNTczX1RYX0xJU1RfQ09VTlRdOw0KKwlpbnQJCQkJdHhfcXVldWVk Ow0KKw0KKwlzdHJ1Y3QgaWVlZTgwMjExX2JlYWNvbl9vZmZzZXRzCXNjX2JvOw0KKw0KKwlz dHJ1Y3QJbXR4CQkJc2NfbXR4Ow0KKw0KKwlzdHJ1Y3QgY2FsbG91dAkJCXNjYW5fY2g7DQor CXN0cnVjdCBjYWxsb3V0CQkJYW1ycl9jaDsNCisNCisJaW50CQkJCXNjX3R4X3RpbWVyOw0K Kw0KKwl1aW50MzJfdAkJCXN0YVs2XTsNCisJdWludDMyX3QJCQlyZl9yZWdzWzRdOw0KKwl1 aW50OF90CQkJCXR4cG93WzQ0XTsNCisNCisJc3RydWN0IHsNCisJCXVpbnQ4X3QJdmFsOw0K KwkJdWludDhfdAlyZWc7DQorCX0gX19wYWNrZWQJCQliYnBfcHJvbVsxNl07DQorDQorCWlu dAkJCQlod19yYWRpbzsNCisJaW50CQkJCXJ4X2FudDsNCisJaW50CQkJCXR4X2FudDsNCisJ aW50CQkJCW5iX2FudDsNCisJaW50CQkJCWV4dF8yZ2h6X2xuYTsNCisJaW50CQkJCWV4dF81 Z2h6X2xuYTsNCisJaW50CQkJCXJzc2lfMmdoel9jb3JyOw0KKwlpbnQJCQkJcnNzaV81Z2h6 X2NvcnI7DQorCWludAkJCQlzaWZzOw0KKwl1aW50OF90CQkJCWJicDE3Ow0KKw0KKwlzdHJ1 Y3QgYnBmX2lmICAgICAgKnNjX2RydmJwZjsNCisNCisJdW5pb24gew0KKwkJc3RydWN0IHJ1 bV9yeF9yYWRpb3RhcF9oZWFkZXIgdGg7DQorCQl1aW50OF90CXBhZFs2NF07DQorCX0JCQkJ c2Nfcnh0YXB1Ow0KKyNkZWZpbmUgc2Nfcnh0YXAJc2Nfcnh0YXB1LnRoDQorCWludAkJCQlz Y19yeHRhcF9sZW47DQorDQorCXVuaW9uIHsNCisJCXN0cnVjdCBydW1fdHhfcmFkaW90YXBf aGVhZGVyIHRoOw0KKwkJdWludDhfdAlwYWRbNjRdOw0KKwl9CQkJCXNjX3R4dGFwdTsNCisj ZGVmaW5lIHNjX3R4dGFwCXNjX3R4dGFwdS50aA0KKwlpbnQJCQkJc2NfdHh0YXBfbGVuOw0K K307DQorDQorI2lmIDANCisjZGVmaW5lIFJVTV9MT0NLKHNjKSAgICBtdHhfbG9jaygmKHNj KS0+c2NfbXR4KQ0KKyNkZWZpbmUgUlVNX1VOTE9DSyhzYykgIG10eF91bmxvY2soJihzYykt PnNjX210eCkNCisjZWxzZQ0KKyNkZWZpbmUgUlVNX0xPQ0soc2MpICAgIGRvIHsgKChzYykg PSAoc2MpKTsgbXR4X2xvY2soJkdpYW50KTsgfSB3aGlsZSAoMCkNCisjZGVmaW5lIFJVTV9V TkxPQ0soc2MpICBtdHhfdW5sb2NrKCZHaWFudCkNCisjZW5kaWYNCisNCisNCkluZGV4OiBz eXMvZGV2L3VzYi91c2JkZXZzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2hvbWUvbmN2 cy9zcmMvc3lzL2Rldi91c2IvdXNiZGV2cyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjkx DQpkaWZmIC11IC1yMS4yOTEgdXNiZGV2cw0KLS0tIHN5cy9kZXYvdXNiL3VzYmRldnMJMTMg QXByIDIwMDcgMTg6MTU6MDcgLTAwMDAJMS4yOTENCisrKyBzeXMvZGV2L3VzYi91c2JkZXZz CTIyIEFwciAyMDA3IDA4OjAxOjU1IC0wMDAwDQpAQCAtMzU1LDYgKzM1NSw3IEBADQogdmVu ZG9yIERJR0lUQUxTVFJFQU0JMHgwNzRlCURpZ2l0YWwgU3RyZWFtDQogdmVuZG9yIEFVUkVB TAkJMHgwNzU1CUF1cmVhbA0KIHZlbmRvciBNSURJTUFOCQkweDA3NjMJTWlkaW1hbg0KK3Zl bmRvciBTVVJFQ09NCQkweDA3NjkJU3VyZWNvbSBUZWNobm9sb2d5DQogdmVuZG9yIExJTktT WVMyCQkweDA3N2IJTGlua3N5cw0KIHZlbmRvciBHUklGRklOCQkweDA3N2QJR3JpZmZpbg0K IHZlbmRvciBTQU5ESVNLCQkweDA3ODEJU2FuRGlzaw0KQEAgLTM4NCw2ICszODUsNyBAQA0K IHZlbmRvciBBVkVSTUVESUEJMHgwN2NhCUFWZXJNZWRpYQ0KIHZlbmRvciBTSUlHCQkweDA3 Y2MJU0lJRw0KIHZlbmRvciBDQVNJTwkJMHgwN2NmCUNBU0lPDQordmVuZG9yIERMSU5LMgkJ MHgwN2QxCUQtTGluaw0KIHZlbmRvciBBUFRJTwkJMHgwN2QyCUFwdGlvDQogdmVuZG9yIEFS QVNBTgkJMHgwN2RhCUFyYXNhbg0KIHZlbmRvciBBTExJRURDQUJMRQkweDA3ZTYJQWxsaWVk IENhYmxlDQpAQCAtNDg3LDYgKzQ4OSw3IEBADQogdmVuZG9yIEFDREMJCTB4MGQ3ZQlBQ0RD DQogdmVuZG9yIEFCQwkJMHgwZDhjCUFCQw0KIHZlbmRvciBDT05DRVBUUk9OSUMJMHgwZDhl CUNvbmNlcHRyb25pYw0KK3ZlbmRvciBTSVRFQ09NRVUgICAgMHgwZGY2ICBTaXRlY29tIEV1 cm9wZQ0KIHZlbmRvciBNU0kJCTB4MGRiMAlNaWNybyBTdGFyIEludGVybmF0aW9uYWwNCiB2 ZW5kb3IgSEFXS0lORwkJMHgwZTY2CUhhd2tpbmcNCiB2ZW5kb3IgR01BVEUJCTB4MGU3ZQlH Lk1hdGUsIEluYw0KQEAgLTUxNywxMCArNTIwLDEyIEBADQogdmVuZG9yIEhVQVdFSQkJMHgx MmQxCUh1YXdlaSBUZWNobm9sb2dpZXMNCiB2ZW5kb3IgQUlOQ09NTQkJMHgxMmZkCUFpbmNv bW0NCiB2ZW5kb3IgTU9CSUxJVFkJCTB4MTM0MglNb2JpbGl0eQ0KK3ZlbmRvciBESUNLU01J VEgJMHgxMzcxCURpY2sgU21pdGggRWxlY3Ryb25pY3MNCiB2ZW5kb3IgTElOS1NZUzQJCTB4 MTNiMQlMaW5rc3lzDQogdmVuZG9yIFNIQVJLCQkweDEzZDIJU2hhcmsNCiB2ZW5kb3IgTk9W QVRFTAkJMHgxNDEwCU5vdmF0ZWwgV2lyZWxlc3MNCiB2ZW5kb3IgUkFESU9TSEFDSwkweDE0 NTMJUmFkaW8gU2hhY2sNCit2ZW5kb3IgSFVBV0VJM0NPTQkweDE0NzIJSHVhd2VpIDNDb20N CiB2ZW5kb3IgU0lMSUNPTQkJMHgxNDg1CVNpbGljb20NCiB2ZW5kb3IgUkFMSU5LCQkweDE0 OGYJUmFsaW5rIFRlY2hub2xvZ3kNCiB2ZW5kb3IgSU1BR0lOQVRJT04JMHgxNDlhCUltYWdp bmF0aW9uIFRlY2hub2xvZ2llcw0KQEAgLTUzMSwxNCArNTM2LDE3IEBADQogdmVuZG9yIFNP SE9XQVJFCQkweDE1ZTgJU09IT3dhcmUNCiB2ZW5kb3IgVU1BWAkJMHgxNjA2CVVNQVgNCiB2 ZW5kb3IgSU5TSURFT1VUCTB4MTYwOAlJbnNpZGUgT3V0IE5ldHdvcmtzDQordmVuZG9yIEdP T0RXQVkgICAgICAweDE2MzEgIEdvb2QgV2F5IFRlY2hub2xvZ3kNCiB2ZW5kb3IgRU5UUkVH QQkJMHgxNjQ1CUVudHJlZ2ENCiB2ZW5kb3IgQUNUSU9OVEVDCTB4MTY2OAlBY3Rpb250ZWMN CiB2ZW5kb3IgQVRIRVJPUwkJMHgxNjhjCUF0aGVyb3MgQ29tbXVuaWNhdGlvbnMNCiB2ZW5k b3IgR0lHQVNFVAkJMHgxNjkwCUdpZ2FzZXQNCiB2ZW5kb3IgR0xPQkFMU1VOCTB4MTZhYglH bG9iYWwgU3VuIFRlY2hub2xvZ3kNCiB2ZW5kb3IgQ01PVEVDSAkJMHgxNmQ4CUNNT1RFQ0gg Q08uLCBMVEQuDQordmVuZG9yIFFDT00gICAgICAgICAweDE4ZTggIFFjb20NCiB2ZW5kb3Ig TElOS1NZUzMJCTB4MTkxNQlMaW5rc3lzDQogdmVuZG9yIERMSU5LCQkweDIwMDEJRC1MaW5r DQordmVuZG9yIFBMQU5FWDIgICAgICAweDIwMTkgIFBsYW5leCBDb21tdW5pY2F0aW9ucw0K IHZlbmRvciBFUklDU1NPTgkJMHgyMjgyCUVyaWNzc29uDQogdmVuZG9yIE1PVE9ST0xBMgkw eDIyYjgJTW90b3JvbGENCiB2ZW5kb3IgVFJJUFBMSVRFCTB4MjQ3OAlUcmlwcC1MaXRlDQpA QCAtNTU5LDcgKzU2Nyw3IEBADQogdmVuZG9yIE9OU1BFQzIJCTB4NTVhYQlPblNwZWMNCiB2 ZW5kb3IgWklOV0VMTAkJMHg1YTU3CVppbndlbGwNCiB2ZW5kb3IgU0lURUNPTQkJMHg2MTg5 CVNpdGVjb20NCi12ZW5kb3IgQVJLTUlDUk8JCTB4NjU0NwlBcmttaWNybyBUZWNobm9sb2dp ZXMNCit2ZW5kb3IgQVJLTUlDUk8gICAgIDB4NjU0NyAgQXJrbWljcm8gVGVjaG5vbG9naWVz DQogdmVuZG9yIElOVEVMCQkweDgwODYJSW50ZWwNCiB2ZW5kb3IgSFAyCQkweGYwMDMJSGV3 bGV0dCBQYWNrYXJkDQogDQpAQCAtNTk0LDYgKzYwMiw3IEBADQogcHJvZHVjdCBBQk9DT00g WFg4CQkweDQxMDIJWFg4DQogcHJvZHVjdCBBQk9DT00gWFg5CQkweDQxMDQJWFg5DQogcHJv ZHVjdCBBQk9DT00gWFgxMAkJMHhhYmMxCVhYMTANCitwcm9kdWN0IEFCT0NPTSBSVDI1NzMJ MHhiMjFkCVJUMjU3Mw0KIA0KIC8qIEFjY3RvbiBwcm9kdWN0cyAqLw0KIHByb2R1Y3QgQUND VE9OIFVTQjMyMF9FQwkweDEwNDYJVVNCMzIwLUVDIEV0aGVybmV0DQpAQCAtNjkyLDcgKzcw MSw3IEBADQogcHJvZHVjdCBBUFBMRSBJUE9ETkFOTwkJMHgxMjBhCWlQb2QgTmFubw0KIA0K IC8qIEFya21pY3JvIFRlY2hub2xvZ2llcyAqLw0KLXByb2R1Y3QgQVJLTUlDUk8gQVJLMzEx NgkweDAyMzIJQVJLMzExNiBTZXJpYWwNCitwcm9kdWN0IEFSS01JQ1JPIEFSSzMxMTYgICAg ICAweDAyMzIgIEFSSzMxMTYgU2VyaWFsDQogDQogLyogQXNhaGkgT3B0aWNhbCBwcm9kdWN0 cyAqLw0KIHByb2R1Y3QgQVNBSElPUFRJQ0FMIE9QVElPMjMwCTB4MDAwNAlEaWdpdGFsIGNh bWVyYQ0KQEAgLTcwMyw2ICs3MTIsNyBAQA0KIA0KIC8qIEFTVVMgcHJvZHVjdHMgKi8NCiBw cm9kdWN0IEFTVVMgV0wxNjdHCQkweDE3MDcJV0wtMTY3ZyB3aXJlbGVzcyBhZGFwdGVyDQor cHJvZHVjdCBBU1VTIFJUMjU3MwkJMHgxNzIzCVJUMjU3Mw0KIA0KIC8qIEFUZW4gcHJvZHVj dHMgKi8NCiBwcm9kdWN0IEFURU4gVUMxMjg0CQkweDIwMDEJUGFyYWxsZWwgcHJpbnRlcg0K QEAgLTc0MCw5ICs3NTAsMTIgQEANCiBwcm9kdWN0IEJFTEtJTiBGNVUxMDkJCTB4MDEwOQlG NVUxMDkgU2VyaWFsDQogcHJvZHVjdCBCRUxLSU4gRjVVMjA4CQkweDAyMDgJRjVVMjA4IFZp ZGVvQnVzIElJDQogcHJvZHVjdCBCRUxLSU4gRjVVNDA5CQkweDA0MDkJRjVVNDA5IFNlcmlh bA0KLXByb2R1Y3QgQkVMS0lOIEY2QzU1MEFWUgkweDA1NTEJRjZDNTUwLUFWUiBVUFMNCitw cm9kdWN0IEJFTEtJTiBGNkM1NTBBVlIgICAgMHgwNTUxICBGNkM1NTAtQVZSIFVQUw0KIHBy b2R1Y3QgQkVMS0lOIEY1VTEyMAkJMHgxMjAzCUY1VTEyMC1QQyBIdWINCiBwcm9kdWN0IEJF TEtJTiBGNUQ3MDUwCQkweDcwNTAJRjVENzA1MCB3aXJlbGVzcyBhZGFwdGVyDQorcHJvZHVj dCBCRUxLSU4gRjVENzA1MEEJCTB4NzA1YQlGNUQ3MDVBIDU0ZyBVU0IgTmV0d29yayBBZGFw dGVyDQorcHJvZHVjdCBCRUxLSU4gRjVEOTA1MFYzCTB4OTA1YglGNUQ5MDUwIHZlciAzDQor DQogDQogLyogQmlsbGlvbnRvbiBwcm9kdWN0cyAqLw0KIHByb2R1Y3QgQklMTElPTlRPTiBV U0IxMDAJMHgwOTg2CVVTQjEwME4gMTAvMTAwIEZhc3RFdGhlcm5ldA0KQEAgLTg0NSw3ICs4 NTgsNyBAQA0KIC8qIEN5cHJlc3MgU2VtaWNvbmR1Y3RvciBwcm9kdWN0cyAqLw0KIHByb2R1 Y3QgQ1lQUkVTUyBNT1VTRQkJMHgwMDAxCW1vdXNlDQogcHJvZHVjdCBDWVBSRVNTIFRIRVJN TwkJMHgwMDAyCXRoZXJtb21ldGVyDQotcHJvZHVjdCBDWVBSRVNTIFdJU1BZCQkweDBiYWQJ TWV0YUdlZWsgV2ktU3B5DQorcHJvZHVjdCBDWVBSRVNTIFdJU1BZICAgICAgICAgMHgwYmFk ICBNZXRhR2VlayBXaS1TcHkNCiBwcm9kdWN0IENZUFJFU1MgRk1SQURJTwkJMHgxMDAyCUZN IFJhZGlvDQogcHJvZHVjdCBDWVBSRVNTIFNMSU1fSFVCCTB4NjU2MAlTbGltIEh1Yg0KIA0K QEAgLTg2Niw2ICs4NzksMTAgQEANCiAvKiBEaWFtb25kIHByb2R1Y3RzICovDQogcHJvZHVj dCBESUFNT05EIFJJTzUwMFVTQgkweDAwMDEJUmlvIDUwMCBVU0INCiANCisvKiBEaWNrIFNt aXRoIEVsZWN0cm9uaWNzIChyZWFsbHkgQy1OZXQpIHByb2R1Y3RzICovDQorcHJvZHVjdCBE SUNLU01JVEggUlQyNTczCTB4OTAyMglSVDI1NzMNCitwcm9kdWN0IERJQ0tTTUlUSCBDV0Q4 NTRGCTB4OTAzMglDLU5ldCBDV0QtODU0IHJldiBGDQorDQogLyogRGlnaSBJbnRlcm5hdGlv bmFsIHByb2R1Y3RzICovDQogcHJvZHVjdCBESUdJIEFDQ0VMRVBPUlQyCTB4MDAwMglBY2Nl bGVQb3J0IFVTQiAyDQogcHJvZHVjdCBESUdJIEFDQ0VMRVBPUlQ0CTB4MDAwNAlBY2NlbGVQ b3J0IFVTQiA0DQpAQCAtODkxLDYgKzkwOCw4IEBADQogcHJvZHVjdCBETElOSyBEU0I2NTBU WDMJCTB4NDAwYgkxMC8xMDAgZXRoZXJuZXQNCiBwcm9kdWN0IERMSU5LIERTQjY1MFRYMgkJ MHg0MTAyCTEwLzEwMCBldGhlcm5ldA0KIHByb2R1Y3QgRExJTksgRFNCNjUwCQkweGFiYzEJ MTAvMTAwIGV0aGVybmV0DQorcHJvZHVjdCBETElOSzIgRFdMRzEyMkMxCTB4M2MwMwlEV0wt RzEyMiByZXYgQzENCitwcm9kdWN0IERMSU5LMiBXVUExMzQwCQkweDNjMDQJV1VBLTEzNDAN CiANCiAvKiBFSVpPIHByb2R1Y3RzICovDQogcHJvZHVjdCBFSVpPIEhVQgkJMHgwMDAwCWh1 Yg0KQEAgLTk0OCwxMSArOTY3LDExIEBADQogcHJvZHVjdCBFUFNPTiAxNjcwCQkweDAxMWYJ UGVyZmVjdGlvbiAxNjcwIHNjYW5uZXINCiBwcm9kdWN0IEVQU09OIDEyNzAJCTB4MDEyMAlQ ZXJmZWN0aW9uIDEyNzAgc2Nhbm5lcg0KIHByb2R1Y3QgRVBTT04gMjQ4MAkJMHgwMTIxICBQ ZXJmZWN0aW9uIDI0ODAgc2Nhbm5lcg0KLXByb2R1Y3QgRVBTT04gMzU5MAkJMHgwMTIyCVBl cmZlY3Rpb24gMzU5MCBzY2FubmVyDQotcHJvZHVjdCBFUFNPTiA0OTkwCQkweDAxMmEJUGVy ZmVjdGlvbiA0OTkwIFBob3RvIHNjYW5uZXINCitwcm9kdWN0IEVQU09OIDM1OTAgICAgICAg ICAgICAweDAxMjIgIFBlcmZlY3Rpb24gMzU5MCBzY2FubmVyDQorcHJvZHVjdCBFUFNPTiA0 OTkwICAgICAgICAgICAgMHgwMTJhICBQZXJmZWN0aW9uIDQ5OTAgUGhvdG8gc2Nhbm5lcg0K IHByb2R1Y3QgRVBTT04gMzUwMAkJMHgwODBlCUNYLTM1MDAvMzYwMC8zNjUwIE1GUA0KIHBy b2R1Y3QgRVBTT04gUlg0MjUJCTB4MDgwZglTdHlsdXMgUGhvdG8gUlg0MjUgc2Nhbm5lcg0K LXByb2R1Y3QgRVBTT04gNDIwMAkJMHgwODIwICBDWDQyMDAgTVAgc2Nhbm5lcg0KK3Byb2R1 Y3QgRVBTT04gNDIwMCAgICAgICAgICAgIDB4MDgyMCAgQ1g0MjAwIE1QIHNjYW5uZXINCiAN CiAvKiBlLVRFSyBMYWJzIHByb2R1Y3RzICovDQogcHJvZHVjdCBFVEVLIDFDT00JCTB4ODAw NwlTZXJpYWwNCkBAIC0xMDAwLDYgKzEwMTksNyBAQA0KIHByb2R1Y3QgR0lHQUJZVEUgR05C UjQwMlcJMHg4MDAyCUdOLUJSNDAyVw0KIHByb2R1Y3QgR0lHQUJZVEUgR05XTEJNMTAxCTB4 ODAwMwlHTi1XTEJNMTAxDQogcHJvZHVjdCBHSUdBQllURSBHTldCS0cJCTB4ODAwNwlHTi1X QktHDQorcHJvZHVjdCBHSUdBQllURSBHTldCMDFHUyAgIDB4ODAwOCAgR04tV0IwMUdTDQog DQogLyogR2lnYXNldCBwcm9kdWN0cyAqLw0KIHByb2R1Y3QgR0lHQVNFVCBXTEFOCQkweDA3 MDEJV0xBTg0KQEAgLTEwOTMsNiArMTExMywxMiBAQA0KIC8qIEhVQVdFSSBwcm9kdWN0cyAq Lw0KIHByb2R1Y3QgSFVBV0VJIE1PQklMRQkJMHgxMDAxCUh1YXdlaSBNb2JpbGUNCiANCisv KiBIVUFXRUkgcHJvZHVjdHMgKi8NCitwcm9kdWN0IEhVQVdFSTNDT00gUlQyNTczCTB4MDAw OQlSVDI1NzMNCisNCisvKiBHb29kIFdheSBUZWNobm9sb2d5IHByb2R1Y3RzICovDQorcHJv ZHVjdCBHT09EV0FZIFJUMjU3MyAgICAgIDB4YzAxOSAgUlQyNTczDQorDQogLyogSUJNIENv cnBvcmF0aW9uICovDQogcHJvZHVjdCBJQk0gVVNCQ0RST01EUklWRQkweDQ0MjcJVVNCIENE LVJPTSBEcml2ZQ0KIA0KQEAgLTEyMzYsNiArMTI2Miw3IEBADQogcHJvZHVjdCBMSU5LU1lT NCBXVVNCNTRHCTB4MDAwZAlXVVNCNTRHIHdpcmVsZXNzIGFkYXB0ZXINCiBwcm9kdWN0IExJ TktTWVM0IFdVU0I1NEdQCTB4MDAxMQlXVVNCNTRHUCB3aXJlbGVzcyBhZGFwdGVyDQogcHJv ZHVjdCBMSU5LU1lTNCBIVTIwMFRTCTB4MDAxYQlIVTIwMFRTIHdpcmVsZXNzIGFkYXB0ZXIN Citwcm9kdWN0IExJTktTWVM0IFdVU0I1NEdDCTB4MDAyMAlXVVNCNTRHQw0KIA0KIC8qIExv Z2l0ZWNoIHByb2R1Y3RzICovDQogcHJvZHVjdCBMT0dJVEVDSCBNMjQ1MgkJMHgwMjAzCU0y NDUyIGtleWJvYXJkDQpAQCAtMTI1MSwxMSArMTI3OCwxMSBAQA0KIHByb2R1Y3QgTE9HSVRF Q0ggV01NT1VTRQkweGMwMDQJV2luZ01hbiBHYW1pbmcgTW91c2UNCiBwcm9kdWN0IExPR0lU RUNIIEJENTgJCTB4YzAwYwlCRDU4IG1vdXNlDQogcHJvZHVjdCBMT0dJVEVDSCBVTjU4QQkJ MHhjMDMwCWlGZWVsIE1vdXNlDQotcHJvZHVjdCBMT0dJVEVDSCBVTjUzQgkJMHhjMDMyCWlG ZWVsIE1vdXNlTWFuDQorcHJvZHVjdCBMT0dJVEVDSCBVTjUzQiAgICAgIDB4YzAzMiAgaUZl ZWwgTW91c2VNYW4NCiBwcm9kdWN0IExPR0lURUNIIFdNUEFECQkweGMyMDgJV2luZ01hbiBH YW1lUGFkIEV4dHJlbWUNCiBwcm9kdWN0IExPR0lURUNIIFdNUlBBRAkJMHhjMjBhCVdpbmdN YW4gUnVtYmxlUGFkDQogcHJvZHVjdCBMT0dJVEVDSCBXTUpPWQkJMHhjMjgxCVdpbmdNYW4g Rm9yY2Ugam95c3RpY2sNCi1wcm9kdWN0IExPR0lURUNIIEJCMTMJCTB4YzQwMQlVU0ItUFMv MiBUcmFja2JhbGwNCitwcm9kdWN0IExPR0lURUNIIEJCMTMgICAgICAgMHhjNDAxICBVU0It UFMvMiBUcmFja2JhbGwNCiBwcm9kdWN0IExPR0lURUNIIFJLNTMJCTB4YzUwMQlDb3JkbGVz cyBtb3VzZQ0KIHByb2R1Y3QgTE9HSVRFQ0ggUkI2CQkweGM1MDMJQ29yZGxlc3Mga2V5Ym9h cmQNCiBwcm9kdWN0IExPR0lURUNIIE1YNzAwCQkweGM1MDYJQ29yZGxlc3Mgb3B0aWNhbCBt b3VzZQ0KQEAgLTEzMTEsNiArMTMzOCw5IEBADQogcHJvZHVjdCBNU0kgUlQyNTcwCQkweDY4 NjEJUlQyNTcwDQogcHJvZHVjdCBNU0kgUlQyNTcwXzIJCTB4Njg2NQlSVDI1NzANCiBwcm9k dWN0IE1TSSBSVDI1NzBfMwkJMHg2ODY5CVJUMjU3MA0KK3Byb2R1Y3QgTVNJIFJUMjU3MwkJ MHg2ODc3CVJUMjU3Mw0KK3Byb2R1Y3QgTVNJIFJUMjU3M18yCQkweGE4NjEJUlQyNTczDQor cHJvZHVjdCBNU0kgUlQyNTczXzMJCTB4YTg3NAlSVDI1NzMNCiANCiAvKiBNaWNyb3NvZnQg cHJvZHVjdHMgKi8NCiBwcm9kdWN0IE1JQ1JPU09GVCBTSURFUFJFQwkweDAwMDgJU2lkZVdp bmRlciBQcmVjaXNpb24gUHJvDQpAQCAtMTM5Nyw3ICsxNDI3LDcgQEANCiANCiAvKiBOZXRn ZWFyIHByb2R1Y3RzICovDQogcHJvZHVjdCBORVRHRUFSIEVBMTAxCQkweDEwMDEJRXRoZXJu ZXQNCi1wcm9kdWN0IE5FVEdFQVIgRkExMDEJCTB4MTAyMAlFdGhlcm5ldCAxMC8xMDAsIFVT QjEuMQ0KK3Byb2R1Y3QgTkVUR0VBUiBGQTEwMSAgICAgICAgIDB4MTAyMCAgRXRoZXJuZXQg MTAvMTAwLCBVU0IxLjENCiBwcm9kdWN0IE5FVEdFQVIgRkExMjAJCTB4MTA0MAlVU0IgMi4w IEV0aGVybmV0DQogcHJvZHVjdCBORVRHRUFSMyBXRzExMVQJCTB4NDI1MAlXRzExMVQNCiBw cm9kdWN0IE5FVEdFQVIzIFdHMTExVF9ORgkweDQyNTEJV0cxMTFUIChubyBmaXJtd2FyZSkN CkBAIC0xNDExLDcgKzE0NDEsNyBAQA0KIHByb2R1Y3QgTklLT04gTFM0MAkJMHg0MDAwCUNv b2xTY2FuIExTNDAgRUQNCiANCiAvKiBOb3ZhVGVjaCBQcm9kdWN0cyAqLw0KLXByb2R1Y3Qg Tk9WQVRFQ0ggTlY5MDIJCTB4OTAyMCAgTm92YVRlY2ggTlYtOTAyVw0KK3Byb2R1Y3QgTk9W QVRFQ0ggTlY5MDIgICAgICAgICAgICAgICAgMHg5MDIwICBOb3ZhVGVjaCBOVi05MDJXDQog DQogLyogTm92YXRlbCBXaXJlbGVzcyBwcm9kdWN0cyAqLw0KIHByb2R1Y3QgTk9WQVRFTCBV NzQwCQkweDE0MDAJTWVybGluIFU3NDANCkBAIC0xNDQxLDcgKzE0NzEsNyBAQA0KIHByb2R1 Y3QgUEFMTSBaSVJFCQkweDAwNzAJUGFsbSBaaXJlDQogDQogLyogUGFuYXNvbmljIHByb2R1 Y3RzICovDQotcHJvZHVjdCBQQU5BU09OSUMgS1hMODQwQU4JMHgwZDAxCUNELVIgRHJpdmUg S1hMLTg0MEFODQorcHJvZHVjdCBQQU5BU09OSUMgS1hMODQwQU4gICAgMHgwZDAxICBDRC1S IERyaXZlIEtYTC04NDBBTg0KIHByb2R1Y3QgUEFOQVNPTklDIEtYTFJXMzJBTgkweDBkMDkJ Q0QtUiBEcml2ZSBLWEwtUlczMkFODQogcHJvZHVjdCBQQU5BU09OSUMgS1hMQ0IyMEFOCTB4 MGQwYQlDRC1SIERyaXZlIEtYTC1DQjIwQU4NCiBwcm9kdWN0IFBBTkFTT05JQyBLWExDQjM1 QU4JMHgwZDBlCURWRC1ST00gJiBDRC1SL1JXDQpAQCAtMTQ2OSw2ICsxNDk5LDEwIEBADQog LyogUC5JLiBFbmdpbmVlcmluZyBwcm9kdWN0cyAqLw0KIHByb2R1Y3QgUElFTkdJTkVFUklO RyBQUzJVU0IJMHgwMjBiCVBTMiB0byBNYWMgVVNCIEFkYXB0ZXINCiANCisvKiBQbGFuZXgg Q29tbXVuaWNhdGlvbnMgcHJvZHVjdHMgKi8NCitwcm9kdWN0IFBMQU5FWDIgR1dVU01NCQkw eGVkMDIJR1ctVVNNTQ0KKw0KKw0KIC8qIFBsZXh0b3IgQ29ycC4gKi8NCiBwcm9kdWN0IFBM RVhUT1IgNDBfMTJfNDBVCTB4MDAxMQlQbGV4V3JpdGVyIDQwLzEyLzQwVQ0KIA0KQEAgLTE1 MTEsNiArMTU0NSwxMCBAQA0KIC8qIFB1dGVyY29tIHByb2R1Y3RzICovDQogcHJvZHVjdCBQ VVRFUkNPTSBVUEExMDAJCTB4MDQ3ZQlVU0ItMTI4NCBCUklER0UNCiANCisvKiBRY29tIHBy b2R1Y3RzICovDQorcHJvZHVjdCBRQ09NIFJUMjU3MwkJMHg2MTk2CVJUMjU3Mw0KK3Byb2R1 Y3QgUUNPTSBSVDI1NzNfMgkJMHg2MjI5CVJUMjU3Mw0KKw0KIC8qIFF1YWxjb21tIHByb2R1 Y3RzICovDQogcHJvZHVjdCBRVUFMQ09NTSBSV1RfRkNUCTB4MzEwMAlSV1QgRkNULUNETUEg MjAwMCAxeFJUVCBtb2RlbQ0KIHByb2R1Y3QgUVVBTENPTU0gQ0RNQV9NU00JMHgzMTk2CUNE TUEgVGVjaG5vbG9naWVzIE1TTSBtb2RlbQ0KQEAgLTE1MzEsNiArMTU2OSw4IEBADQogLyog UmFsaW5rIFRlY2hub2xvZ3kgcHJvZHVjdHMgKi8NCiBwcm9kdWN0IFJBTElOSyBSVDI1NzAJ CTB4MTcwNglSVDI1MDBVU0Igd2lyZWxlc3MgYWRhcHRlcg0KIHByb2R1Y3QgUkFMSU5LIFJU MjU3MF8yCQkweDI1NzAJUlQyNTAwVVNCIHdpcmVsZXNzIGFkYXB0ZXINCitwcm9kdWN0IFJB TElOSyBSVDI1NzMJCTB4MjU3MwlSVDI1NzMNCitwcm9kdWN0IFJBTElOSyBSVDI2NzEJCTB4 MjY3MQlSVDI2NzENCiANCiAvKiBSZWFrVGVrIHByb2R1Y3RzICovDQogcHJvZHVjdCBSRUFM VEVLIFVTQktSMTAwCTB4ODE1MAlVU0JLUjEwMCBVU0IgRXRoZXJuZXQgKEdSRUVOIEhPVVNF KQ0KQEAgLTE2MDYsNyArMTY0Niw3IEBADQogcHJvZHVjdCBTSUlHMiBVUzIzMDgJCTB4MDQy MQlTZXJpYWwNCiANCiAvKiBTaWxpY29tIHByb2R1Y3RzICovDQotcHJvZHVjdCBTSUxJQ09N IEdQRQkJMHgwMDAyCVBzaW9uIEdvbGQgUG9ydCBFdGhlcm5ldA0KK3Byb2R1Y3QgU0lMSUNP TSBHUEUgICAgICAgICAgIDB4MDAwMiAgUHNpb24gR29sZCBQb3J0IEV0aGVybmV0DQogDQog LyogU2lsaWNvbiBQb3J0YWxzIEluYy4gKi8NCiBwcm9kdWN0IFNJTElDT05QT1JUQUxTIFlB UFBIX05GCTB4MDIwMAlZQVAgUGhvbmUgKG5vIGZpcm13YXJlKQ0KQEAgLTE2MTksNiArMTY1 OSwxMSBAQA0KIHByb2R1Y3QgU0lURUNPTSBMTjAyOQkJMHgxODJkCVVTQiAyLjAgRXRoZXJu ZXQNCiBwcm9kdWN0IFNJVEVDT00gU0VSSUFMCQkweDIwNjgJVVNCIHRvIHNlcmlhbCBjYWJs ZSAodjIpDQogDQorLyogU2l0ZWNvbSBFdXJvcGUgcHJvZHVjdHMgKi8NCitwcm9kdWN0IFNJ VEVDT01FVSBXTDE3MgkJMHg5MGFjCVdMLTE3Mg0KK3Byb2R1Y3QgU0lURUNPTUVVIFdMMTEz UjIJMHg5NzEyCVdMLTExMyByZXYgMg0KKw0KKw0KIC8qIFNtYXJ0QnJpZGdlcyBwcm9kdWN0 cyAqLw0KIHByb2R1Y3QgU01BUlRCUklER0VTIFNNQVJUTElOSwkweDAwMDEJU21hcnRMaW5r IFVTQiBldGhlcm5ldA0KIHByb2R1Y3QgU01BUlRCUklER0VTIFNNQVJUTklDCTB4MDAwMwlz bWFydE5JQyAyIFBuUCBldGhlcm5ldA0KQEAgLTE2ODQsNiArMTcyOSw5IEBADQogcHJvZHVj dCBESUFNT05EMiBSSU82MDBVU0IJMHg1MDAxCVJpbyA2MDAgVVNCDQogcHJvZHVjdCBESUFN T05EMiBSSU84MDBVU0IJMHg1MDAyCVJpbyA4MDAgVVNCDQogDQorLyogU3VyZWNvbSBUZWNo bm9sb2d5IHByb2R1Y3RzICovDQorcHJvZHVjdCBTVVJFQ09NIFJUMjU3MwkJMHgzMWYzCVJU MjU3Mw0KKw0KIC8qIFN5c3RlbSBUQUxLUywgSW5jLiAqLw0KIHByb2R1Y3QgU1lTVEVNVEFM S1MgU0dDWDJVTAkweDE5MjAJU0dDLVgyVUwNCiANCkluZGV4OiBzeXMvbW9kdWxlcy9ydDI1 NzMvTWFrZWZpbGUNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiBzeXMvbW9kdWxlcy9ydDI1 NzMvTWFrZWZpbGUNCmRpZmYgLU4gc3lzL21vZHVsZXMvcnQyNTczL01ha2VmaWxlDQotLS0g L2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDANCisrKyBzeXMvbW9kdWxlcy9y dDI1NzMvTWFrZWZpbGUJMjIgQXByIDIwMDcgMDg6MDI6MDUgLTAwMDANCkBAIC0wLDAgKzEs MyBAQA0KK0tNT0Q9IHJ0MjU3Mw0KK0ZJUk1XUz0gcnVtLXJ0MjU3MzpydDI1NzM6MTAwDQor LmluY2x1ZGUgPGJzZC5rbW9kLm1rPg0KSW5kZXg6IHN5cy9tb2R1bGVzL3J1bS9NYWtlZmls ZQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IHN5cy9tb2R1bGVzL3J1bS9NYWtlZmlsZQ0K ZGlmZiAtTiBzeXMvbW9kdWxlcy9ydW0vTWFrZWZpbGUNCi0tLSAvZGV2L251bGwJMSBKYW4g MTk3MCAwMDowMDowMCAtMDAwMA0KKysrIHN5cy9tb2R1bGVzL3J1bS9NYWtlZmlsZQkyMiBB cHIgMjAwNyAwODowMjowNSAtMDAwMA0KQEAgLTAsMCArMSwxMCBAQA0KKyMgJEZyZWVCU0Q6 IHNyYy9zeXMvbW9kdWxlcy91cmFsL01ha2VmaWxlLHYgMS4xIDIwMDUvMDQvMTggMTg6NDc6 MzggZGFtaWVuIEV4cCAkDQorDQorLlBBVEg6ICR7LkNVUkRJUn0vLi4vLi4vZGV2L3VzYg0K Ky5QQVRIOiAkey5DVVJESVJ9Ly4uLy4uL25ldDgwMjExDQorDQorS01PRCAgICA9IGlmX3J1 bQ0KK1NSQ1MgICAgPSBpZl9ydW0uYyBvcHRfYmRnLmggb3B0X3VzYi5oIGRldmljZV9pZi5o IGJ1c19pZi5oIHVzYmRldnMuaA0KK1NSQ1MgICArPSBpZWVlODAyMTFfYW1yci5jDQorDQor LmluY2x1ZGUgPGJzZC5rbW9kLm1rPg0K --------------030900090303000507070905--