Return-path: Received: from web23114.mail.ird.yahoo.com ([217.146.189.54]:45585 "HELO web23114.mail.ird.yahoo.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1754409AbYFOA75 (ORCPT ); Sat, 14 Jun 2008 20:59:57 -0400 Date: Sun, 15 Jun 2008 00:59:54 +0000 (GMT) From: Hin-Tak Leung Subject: [RFC][PATCH] Realtek 8187B wireless support with product id 0x8197/0x8189 To: herton@mandriva.com.br, linux-wireless@vger.kernel.org, flamingice@sourmilk.net, andreamrl@tiscali.it, linville@redhat.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="0-1362908545-1213491594=:32180" Message-ID: <922158.32180.qm@web23114.mail.ird.yahoo.com> (sfid-20080615_030031_808441_97190E2B) Sender: linux-wireless-owner@vger.kernel.org List-ID: --0-1362908545-1213491594=:32180 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable (I am not on linux-wireless so please CC: me if replying) This is a patch against compat-wireless-2008-06-14 to work with 2.6.25.6-55= .fc9.x86_64 kernel headers. I am using it right now so it works for me, YMM= V. It is mostly a patch from Herton a few months ago to add support for Realtek 8187B. Herton's patch was missing a little quirk change for usb end= point 12 for management frame; and I ported it forward to current fedora 9 = kernel headers.=20 The rest of the story is at: https://bugzilla.redhat.com/show_bug.cgi?id=3D432280 I have a few questions during the porting: - control->queue, which the herton's change used, for switching between 4 t= ramission queue at end point 6,7,5,4, has disappeared. I hard-coded 6 in th= is version, (see commemt #37 for background), but what's the correct way to do this in current wireless-2.6 code? - compat-wireless seems to use a small inlined routine=20 from http://article.gmane.org/gmane.linux.kernel.wireless.general/15830, which isn't in the redhat header yet. so I have added an ifndef at the top of rtl8187_dev.c . so the patch needs to have that part removed if commited to compat-wireless. - obviously it is getting a bit painful to forward-port the patch every tim= e something else changes or something else changes in the header...=20 what can I do to make this go into wireless-2.6 ? I think I have forward-port the patch mostly correctly, but I'd like to hea= r about comments, etc and how to make it better... =20 =0A=0A=0A __________________________________________________________= =0ASent from Yahoo! Mail.=0AA Smarter Email http://uk.docs.yahoo.com/nowyou= can.html --0-1362908545-1213491594=:32180 Content-Type: application/octet-stream; name="compat-wireless-2008-06-14_rtl8187b.diff.working-version" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="compat-wireless-2008-06-14_rtl8187b.diff.working-version" ZGlmZiAtcnVCYiAuLi9vcmlnL2NvbXBhdC13aXJlbGVzcy0yMDA4LTA2LTE0 L2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bDgxODdfZGV2LmMgY29tcGF0LXdp cmVsZXNzLTIwMDgtMDYtMTQvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRsODE4 N19kZXYuYwotLS0gLi4vb3JpZy9jb21wYXQtd2lyZWxlc3MtMjAwOC0wNi0x NC9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGw4MTg3X2Rldi5jCTIwMDgtMDYt MTQgMDU6MTA6NTMuMDAwMDAwMDAwICswMTAwCisrKyBjb21wYXQtd2lyZWxl c3MtMjAwOC0wNi0xNC9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGw4MTg3X2Rl di5jCTIwMDgtMDYtMTUgMDA6MTk6MDcuMDAwMDAwMDAwICswMTAwCkBAIC0y MCwyNiArMjAsMzUgQEAKICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgogI2lu Y2x1ZGUgPGxpbnV4L2V0aGVyZGV2aWNlLmg+CiAjaW5jbHVkZSA8bGludXgv ZWVwcm9tXzkzY3g2Lmg+CisjaW5jbHVkZSA8bGludXgvcHJvY19mcy5oPgog I2luY2x1ZGUgPG5ldC9tYWM4MDIxMS5oPgorI2lmbmRlZiBpZWVlODAyMTFf aGFzX21vcmVmcmFncworc3RhdGljIGlubGluZSBpbnQgaWVlZTgwMjExX2hh c19tb3JlZnJhZ3MoX19sZTE2IGZjKQoreworICByZXR1cm4gISEoZmMgJiBj cHVfdG9fbGUxNihJRUVFODAyMTFfRkNUTF9NT1JFRlJBR1MpKTsKK30KKyNl bmRpZgogCiAjaW5jbHVkZSAicnRsODE4Ny5oIgogI2luY2x1ZGUgInJ0bDgx ODdfcnRsODIyNS5oIgogCiBNT0RVTEVfQVVUSE9SKCJNaWNoYWVsIFd1IDxm bGFtaW5naWNlQHNvdXJtaWxrLm5ldD4iKTsKIE1PRFVMRV9BVVRIT1IoIkFu ZHJlYSBNZXJlbGxvIDxhbmRyZWFtcmxAdGlzY2FsaS5pdD4iKTsKLU1PRFVM RV9ERVNDUklQVElPTigiUlRMODE4NyBVU0Igd2lyZWxlc3MgZHJpdmVyIik7 CitNT0RVTEVfREVTQ1JJUFRJT04oIlJUTDgxODcvUlRMODE4N0IgVVNCIHdp cmVsZXNzIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwogCiBz dGF0aWMgc3RydWN0IHVzYl9kZXZpY2VfaWQgcnRsODE4N190YWJsZVtdIF9f ZGV2aW5pdGRhdGEgPSB7CiAJLyogUmVhbHRlayAqLwotCXtVU0JfREVWSUNF KDB4MGJkYSwgMHg4MTg3KX0sCisJe1VTQl9ERVZJQ0UoMHgwYmRhLCAweDgx ODcpLCAuZHJpdmVyX2luZm8gPSBERVZJQ0VfUlRMODE4N30sCisJe1VTQl9E RVZJQ0UoMHgwYmRhLCAweDgxODkpLCAuZHJpdmVyX2luZm8gPSBERVZJQ0Vf UlRMODE4N0J9LAorCXtVU0JfREVWSUNFKDB4MGJkYSwgMHg4MTk3KSwgLmRy aXZlcl9pbmZvID0gREVWSUNFX1JUTDgxODdCfSwKIAkvKiBOZXRnZWFyICov Ci0Je1VTQl9ERVZJQ0UoMHgwODQ2LCAweDYxMDApfSwKLQl7VVNCX0RFVklD RSgweDA4NDYsIDB4NmEwMCl9LAorCXtVU0JfREVWSUNFKDB4MDg0NiwgMHg2 MTAwKSwgLmRyaXZlcl9pbmZvID0gREVWSUNFX1JUTDgxODd9LAorCXtVU0Jf REVWSUNFKDB4MDg0NiwgMHg2YTAwKSwgLmRyaXZlcl9pbmZvID0gREVWSUNF X1JUTDgxODd9LAogCS8qIEhQICovCi0Je1VTQl9ERVZJQ0UoMHgwM2YwLCAw eGNhMDIpfSwKKwl7VVNCX0RFVklDRSgweDAzZjAsIDB4Y2EwMiksIC5kcml2 ZXJfaW5mbyA9IERFVklDRV9SVEw4MTg3fSwKIAkvKiBTaXRlY29tICovCi0J e1VTQl9ERVZJQ0UoMHgwZGY2LCAweDAwMGQpfSwKKwl7VVNCX0RFVklDRSgw eDBkZjYsIDB4MDAwZCksIC5kcml2ZXJfaW5mbyA9IERFVklDRV9SVEw4MTg3 fSwKIAl7fQogfTsKIApAQCAtMTUzLDIzICsxNjIsNTggQEAKIAlzdHJ1Y3Qg c2tfYnVmZiAqc2tiID0gKHN0cnVjdCBza19idWZmICopdXJiLT5jb250ZXh0 OwogCXN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbyA9IElFRUU4MDIx MV9TS0JfQ0Ioc2tiKTsKIAlzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IGlu Zm8tPmRyaXZlcl9kYXRhWzBdOworICAgICAgICBzdHJ1Y3QgcnRsODE4N19w cml2ICpwcml2ID0gaHctPnByaXY7CiAKIAl1c2JfZnJlZV91cmIoaW5mby0+ ZHJpdmVyX2RhdGFbMV0pOwotCXNrYl9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVj dCBydGw4MTg3X3R4X2hkcikpOworICAgICAgICBza2JfcHVsbChza2IsIHBy aXYtPmlzX3J0bDgxODdiID8gc2l6ZW9mKHN0cnVjdCBydGw4MTg3Yl90eF9o ZHIpIDoKKyAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBydGw4MTg3 X3R4X2hkcikpOwogCW1lbXNldCgmaW5mby0+c3RhdHVzLCAwLCBzaXplb2Yo aW5mby0+c3RhdHVzKSk7CiAJaW5mby0+ZmxhZ3MgfD0gSUVFRTgwMjExX1RY X1NUQVRfQUNLOwogCWllZWU4MDIxMV90eF9zdGF0dXNfaXJxc2FmZShodywg c2tiKTsKIH0KIAorc3RhdGljIHZvaWQgKnJ0bDgxODdfdHhfYnVmKHN0cnVj dCBza19idWZmICpza2IsIF9fbGUzMiBmbGFncywgX19sZTE2IHJ0c19kdXIs ICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbGUzMiByZXRy eSkgICAgCit7ICAgIAorICBzdHJ1Y3QgcnRsODE4N190eF9oZHIgKmhkcjsg ICAgCisgICAgCisgIGhkciA9IChzdHJ1Y3QgcnRsODE4N190eF9oZHIgKilz a2JfcHVzaChza2IsIHNpemVvZigqaGRyKSk7ICAgIAorICBoZHItPmZsYWdz ID0gZmxhZ3M7ICAgIAorICBoZHItPmxlbiA9IDA7ICAgIAorICBoZHItPnJ0 c19kdXJhdGlvbiA9IHJ0c19kdXI7ICAgIAorICBoZHItPnJldHJ5ID0gcmV0 cnk7ICAgIAorICAgIAorICByZXR1cm4gaGRyOyAgICAKK30gICAgCisgICAg CitzdGF0aWMgdm9pZCAqcnRsODE4N2JfdHhfYnVmKHN0cnVjdCBza19idWZm ICpza2IsIF9fbGUzMiBmbGFncywgICAgCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF9fbGUxNiBydHNfZHVyLCBfX2xlMzIgcmV0cnksICAgIAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xlMTYgdHhfZHVyKSAg ICAKK3sgICAgCisgIHN0cnVjdCBydGw4MTg3Yl90eF9oZHIgKmhkcjsgICAg CisgICAgCisgIGhkciA9IChzdHJ1Y3QgcnRsODE4N2JfdHhfaGRyICopc2ti X3B1c2goc2tiLCBzaXplb2YoKmhkcikpOyAgICAKKyAgbWVtc2V0KGhkciwg MCwgc2l6ZW9mKCpoZHIpKTsgICAgCisgIGhkci0+ZmxhZ3MgPSBmbGFnczsg ICAgCisgIGhkci0+cnRzX2R1cmF0aW9uID0gcnRzX2R1cjsgICAgCisgIGhk ci0+cmV0cnkgPSByZXRyeTsgICAgCisgIGhkci0+dHhfZHVyYXRpb24gPSB0 eF9kdXI7ICAgIAorICAgIAorICByZXR1cm4gaGRyOyAgICAKK30gICAgCisK IHN0YXRpYyBpbnQgcnRsODE4N190eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpk ZXYsIHN0cnVjdCBza19idWZmICpza2IpCiB7CiAJc3RydWN0IHJ0bDgxODdf cHJpdiAqcHJpdiA9IGRldi0+cHJpdjsKIAlzdHJ1Y3QgaWVlZTgwMjExX3R4 X2luZm8gKmluZm8gPSBJRUVFODAyMTFfU0tCX0NCKHNrYik7Ci0Jc3RydWN0 IHJ0bDgxODdfdHhfaGRyICpoZHI7CisJdm9pZCAqYnVmOwogCXN0cnVjdCB1 cmIgKnVyYjsKIAlfX2xlMTYgcnRzX2R1ciA9IDA7CiAJdTMyIGZsYWdzOwog CWludCByYzsKKyAgICAgICAgdW5zaWduZWQgaW50IGVwWzRdID0geyA2LCA3 LCA1LCA0IH07CisgICAgICAgIHUxNiBmcmFtZV9jb250cm9sID0gbGUxNl90 b19jcHUoKChzdHJ1Y3QgaWVlZTgwMjExX2hkciAqKShza2ItPmRhdGEpKS0+ ZnJhbWVfY29udHJvbCk7CisgICAgICAgIHU4IGlzX21nbXQgPSAoKGZyYW1l X2NvbnRyb2wgJiBJRUVFODAyMTFfRkNUTF9GVFlQRSkgPT0gSUVFRTgwMjEx X0ZUWVBFX01HTVQpOwogCiAJdXJiID0gdXNiX2FsbG9jX3VyYigwLCBHRlBf QVRPTUlDKTsKIAlpZiAoIXVyYikgewpAQCAtMTkzLDE2ICsyMzcsMjQgQEAK IAkJZmxhZ3MgfD0gaWVlZTgwMjExX2dldF9ydHNfY3RzX3JhdGUoZGV2LCBp bmZvKS0+aHdfdmFsdWUgPDwgMTk7CiAJfQogCi0JaGRyID0gKHN0cnVjdCBy dGw4MTg3X3R4X2hkciAqKXNrYl9wdXNoKHNrYiwgc2l6ZW9mKCpoZHIpKTsK LQloZHItPmZsYWdzID0gY3B1X3RvX2xlMzIoZmxhZ3MpOwotCWhkci0+bGVu ID0gMDsKLQloZHItPnJ0c19kdXJhdGlvbiA9IHJ0c19kdXI7Ci0JaGRyLT5y ZXRyeSA9IGNwdV90b19sZTMyKGluZm8tPmNvbnRyb2wucmV0cnlfbGltaXQg PDwgOCk7CisgICAgICAgIGlmICghcHJpdi0+aXNfcnRsODE4N2IpICAgCisg ICAgICAgICAgYnVmID0gcnRsODE4N190eF9idWYoc2tiLCBjcHVfdG9fbGUz MihmbGFncyksIHJ0c19kdXIsICAgCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY3B1X3RvX2xlMzIoaW5mby0+Y29udHJvbC5yZXRyeV9saW1p dCA8PCA4KSk7CisgICAgICAgIGVsc2UgICAKKyAgICAgICAgICBidWYgPSBy dGw4MTg3Yl90eF9idWYoc2tiLCBjcHVfdG9fbGUzMihmbGFncyksIHJ0c19k dXIsICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV90 b19sZTMyKGluZm8tPmNvbnRyb2wucmV0cnlfbGltaXQgPDwgOCksICAgCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGllZWU4MDIxMV9nZW5l cmljX2ZyYW1lX2R1cmF0aW9uKCAgIAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk ZXYsICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPnZpZiwgICAKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2tiLT5sZW4sICAgCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGllZWU4MDIxMV9nZXRfdHhfcmF0ZShkZXYsIGluZm8pKSk7CiAK IAlpbmZvLT5kcml2ZXJfZGF0YVswXSA9IGRldjsKIAlpbmZvLT5kcml2ZXJf ZGF0YVsxXSA9IHVyYjsKLQl1c2JfZmlsbF9idWxrX3VyYih1cmIsIHByaXYt PnVkZXYsIHVzYl9zbmRidWxrcGlwZShwcml2LT51ZGV2LCAyKSwKLQkJCSAg aGRyLCBza2ItPmxlbiwgcnRsODE4N190eF9jYiwgc2tiKTsKKyAgICAgICAg dXNiX2ZpbGxfYnVsa191cmIodXJiLCBwcml2LT51ZGV2LCAgIAorICAgICAg ICAgICAgICAgICAgICAgICAgICB1c2Jfc25kYnVsa3BpcGUocHJpdi0+dWRl diwgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHByaXYtPmlzX3J0bDgxODdiID8gKGlzX21nbXQgPyAxMiA6IDYpIDog MiksIC8qIGZpeCB0aGlzICovICAKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgYnVmLCBza2ItPmxlbiwgcnRsODE4N190eF9jYiwgc2tiKTsgICAKIAly YyA9IHVzYl9zdWJtaXRfdXJiKHVyYiwgR0ZQX0FUT01JQyk7CiAJaWYgKHJj IDwgMCkgewogCQl1c2JfZnJlZV91cmIodXJiKTsKQEAgLTIxOSw2ICsyNzEs NyBAQAogCXN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiA9IGluZm8tPmRldjsK IAlzdHJ1Y3QgcnRsODE4N19wcml2ICpwcml2ID0gZGV2LT5wcml2OwogCXN0 cnVjdCBydGw4MTg3X3J4X2hkciAqaGRyOworCXN0cnVjdCBydGw4MTg3Yl9y eF9oZHIgKmhkcl9iOwogCXN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzIHJ4 X3N0YXR1cyA9IHsgMCB9OwogCWludCByYXRlLCBzaWduYWw7CiAJdTMyIGZs YWdzOwpAQCAtMjM5LDExICsyOTIsMzIgQEAKIAl9CiAKIAlza2JfcHV0KHNr YiwgdXJiLT5hY3R1YWxfbGVuZ3RoKTsKLQloZHIgPSAoc3RydWN0IHJ0bDgx ODdfcnhfaGRyICopKHNrYl90YWlsX3BvaW50ZXIoc2tiKSAtIHNpemVvZigq aGRyKSk7CisJaWYgKCFwcml2LT5pc19ydGw4MTg3YikgeworCQloZHIgPSAo c3RydWN0IHJ0bDgxODdfcnhfaGRyICopCisJCQkoc2tiX3RhaWxfcG9pbnRl cihza2IpIC0gc2l6ZW9mKCpoZHIpKTsKIAlmbGFncyA9IGxlMzJfdG9fY3B1 KGhkci0+ZmxhZ3MpOwotCXNrYl90cmltKHNrYiwgZmxhZ3MgJiAweDBGRkYp OwotCiAJc2lnbmFsID0gaGRyLT5hZ2MgPj4gMTsKKwkJcnhfc3RhdHVzLmFu dGVubmEgPSAoaGRyLT5zaWduYWwgPj4gNykgJiAxOworCQlyeF9zdGF0dXMu c2lnbmFsID0gNjQgLSBtaW4oaGRyLT5ub2lzZSwgKHU4KTY0KTsKKwkJcnhf c3RhdHVzLm1hY3RpbWUgPSBsZTY0X3RvX2NwdShoZHItPm1hY190aW1lKTsK KwkJcHJpdi0+c2lnbmFsID0gaGRyLT5zaWduYWw7CisJCXByaXYtPnF1YWxp dHkgPSBoZHItPmFnYyA+PiAxOworCQlwcml2LT5ub2lzZSA9IGhkci0+bm9p c2U7CisJfSBlbHNlIHsKKwkJaGRyX2IgPSAoc3RydWN0IHJ0bDgxODdiX3J4 X2hkciAqKQorCQkJKHNrYl90YWlsX3BvaW50ZXIoc2tiKSAtIHNpemVvZigq aGRyX2IpKTsKKwkJZmxhZ3MgPSBsZTMyX3RvX2NwdShoZHJfYi0+ZmxhZ3Mp OworCQlzaWduYWwgPSBoZHJfYi0+YWdjID4+IDE7CisJCXJ4X3N0YXR1cy5h bnRlbm5hID0gKGhkcl9iLT5zaWduYWwgPj4gNykgJiAxOworCQlyeF9zdGF0 dXMuc2lnbmFsID0gNjQgLSBtaW4oaGRyX2ItPm5vaXNlLCAodTgpNjQpOwor CQlyeF9zdGF0dXMubm9pc2UgPSBoZHJfYi0+bm9pc2U7CisJCXJ4X3N0YXR1 cy5tYWN0aW1lID0gbGU2NF90b19jcHUoaGRyX2ItPm1hY190aW1lKTsKKwkJ cHJpdi0+c2lnbmFsID0gaGRyX2ItPnNpZ25hbDsKKwkJcHJpdi0+cXVhbGl0 eSA9IGhkcl9iLT5hZ2MgPj4gMTsKKwkJcHJpdi0+bm9pc2UgPSBoZHJfYi0+ bm9pc2U7CisJfQorCisJc2tiX3RyaW0oc2tiLCBmbGFncyAmIDB4MEZGRik7 CiAJcmF0ZSA9IChmbGFncyA+PiAyMCkgJiAweEY7CiAJaWYgKHJhdGUgPiAz KSB7CS8qIE9GRE0gcmF0ZSAqLwogCQlpZiAoc2lnbmFsID4gOTApCkBAIC0y NTksMTMgKzMzMywxMCBAQAogCQlzaWduYWwgPSA5NSAtIHNpZ25hbDsKIAl9 CiAKLQlyeF9zdGF0dXMuYW50ZW5uYSA9IChoZHItPnNpZ25hbCA+PiA3KSAm IDE7Ci0Jcnhfc3RhdHVzLnF1YWwgPSA2NCAtIG1pbihoZHItPm5vaXNlLCAo dTgpNjQpOwogCXJ4X3N0YXR1cy5zaWduYWwgPSBzaWduYWw7CiAJcnhfc3Rh dHVzLnJhdGVfaWR4ID0gcmF0ZTsKIAlyeF9zdGF0dXMuZnJlcSA9IGRldi0+ Y29uZi5jaGFubmVsLT5jZW50ZXJfZnJlcTsKIAlyeF9zdGF0dXMuYmFuZCA9 IGRldi0+Y29uZi5jaGFubmVsLT5iYW5kOwotCXJ4X3N0YXR1cy5tYWN0aW1l ID0gbGU2NF90b19jcHUoaGRyLT5tYWNfdGltZSk7CiAJcnhfc3RhdHVzLmZs YWcgfD0gUlhfRkxBR19UU0ZUOwogCWlmIChmbGFncyAmICgxIDw8IDEzKSkK IAkJcnhfc3RhdHVzLmZsYWcgfD0gUlhfRkxBR19GQUlMRURfRkNTX0NSQzsK QEAgLTMwNSw3ICszNzYsOCBAQAogCQkJYnJlYWs7CiAJCX0KIAkJdXNiX2Zp bGxfYnVsa191cmIoZW50cnksIHByaXYtPnVkZXYsCi0JCQkJICB1c2JfcmN2 YnVsa3BpcGUocHJpdi0+dWRldiwgMSksCisJCQkJICB1c2JfcmN2YnVsa3Bp cGUocHJpdi0+dWRldiwKKwkJCQkgIHByaXYtPmlzX3J0bDgxODdiID8gMyA6 IDEpLAogCQkJCSAgc2tiX3RhaWxfcG9pbnRlcihza2IpLAogCQkJCSAgUlRM ODE4N19NQVhfUlgsIHJ0bDgxODdfcnhfY2IsIHNrYik7CiAJCWluZm8gPSAo c3RydWN0IHJ0bDgxODdfcnhfaW5mbyAqKXNrYi0+Y2I7CkBAIC0zMTgsMjkg KzM5MCwxMiBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IHJ0bDgx ODdfaW5pdF9odyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYpCitzdGF0aWMg aW50IHJ0bDgxODdfY21kX3Jlc2V0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmRl dikKIHsKIAlzdHJ1Y3QgcnRsODE4N19wcml2ICpwcml2ID0gZGV2LT5wcml2 OwogCXU4IHJlZzsKIAlpbnQgaTsKIAotCS8qIHJlc2V0ICovCi0JcnRsODE4 eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5FRVBST01fQ01ELCBSVEw4 MThYX0VFUFJPTV9DTURfQ09ORklHKTsKLQlyZWcgPSBydGw4MTh4X2lvcmVh ZDgocHJpdiwgJnByaXYtPm1hcC0+Q09ORklHMyk7Ci0JcnRsODE4eF9pb3dy aXRlOChwcml2LCAmcHJpdi0+bWFwLT5DT05GSUczLCByZWcgfCBSVEw4MThY X0NPTkZJRzNfQU5BUEFSQU1fV1JJVEUpOwotCXJ0bDgxOHhfaW93cml0ZTMy KHByaXYsICZwcml2LT5tYXAtPkFOQVBBUkFNLCBSVEw4MjI1X0FOQVBBUkFN X09OKTsKLQlydGw4MTh4X2lvd3JpdGUzMihwcml2LCAmcHJpdi0+bWFwLT5B TkFQQVJBTTIsIFJUTDgyMjVfQU5BUEFSQU0yX09OKTsKLQlydGw4MTh4X2lv d3JpdGU4KHByaXYsICZwcml2LT5tYXAtPkNPTkZJRzMsIHJlZyAmIH5SVEw4 MThYX0NPTkZJRzNfQU5BUEFSQU1fV1JJVEUpOwotCXJ0bDgxOHhfaW93cml0 ZTgocHJpdiwgJnByaXYtPm1hcC0+RUVQUk9NX0NNRCwgUlRMODE4WF9FRVBS T01fQ01EX05PUk1BTCk7Ci0KLQlydGw4MTh4X2lvd3JpdGUxNihwcml2LCAm cHJpdi0+bWFwLT5JTlRfTUFTSywgMCk7Ci0KLQltc2xlZXAoMjAwKTsKLQly dGw4MTh4X2lvd3JpdGU4KHByaXYsICh1OCAqKTB4RkUxOCwgMHgxMCk7Ci0J cnRsODE4eF9pb3dyaXRlOChwcml2LCAodTggKikweEZFMTgsIDB4MTEpOwot CXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgKHU4ICopMHhGRTE4LCAweDAwKTsK LQltc2xlZXAoMjAwKTsKLQogCXJlZyA9IHJ0bDgxOHhfaW9yZWFkOChwcml2 LCAmcHJpdi0+bWFwLT5DTUQpOwogCXJlZyAmPSAoMSA8PCAxKTsKIAlyZWcg fD0gUlRMODE4WF9DTURfUkVTRVQ7CkBAIC0zNzYsNiArNDMxLDM2IEBACiAJ CXJldHVybiAtRVRJTUVET1VUOwogCX0KIAorCXJldHVybiAwOworfQorCitz dGF0aWMgaW50IHJ0bDgxODdfaW5pdF9odyhzdHJ1Y3QgaWVlZTgwMjExX2h3 ICpkZXYpCit7CisJc3RydWN0IHJ0bDgxODdfcHJpdiAqcHJpdiA9IGRldi0+ cHJpdjsKKwl1OCByZWc7CisJaW50IHJlczsKKworCS8qIHJlc2V0ICovCisJ cnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5FRVBST01fQ01E LCBSVEw4MThYX0VFUFJPTV9DTURfQ09ORklHKTsKKwlyZWcgPSBydGw4MTh4 X2lvcmVhZDgocHJpdiwgJnByaXYtPm1hcC0+Q09ORklHMyk7CisJcnRsODE4 eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5DT05GSUczLCByZWcgfCBS VEw4MThYX0NPTkZJRzNfQU5BUEFSQU1fV1JJVEUpOworCXJ0bDgxOHhfaW93 cml0ZTMyKHByaXYsICZwcml2LT5tYXAtPkFOQVBBUkFNLCBSVEw4MjI1X0FO QVBBUkFNX09OKTsKKwlydGw4MTh4X2lvd3JpdGUzMihwcml2LCAmcHJpdi0+ bWFwLT5BTkFQQVJBTTIsIFJUTDgyMjVfQU5BUEFSQU0yX09OKTsKKwlydGw4 MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPkNPTkZJRzMsIHJlZyAm IH5SVEw4MThYX0NPTkZJRzNfQU5BUEFSQU1fV1JJVEUpOworCXJ0bDgxOHhf aW93cml0ZTgocHJpdiwgJnByaXYtPm1hcC0+RUVQUk9NX0NNRCwgUlRMODE4 WF9FRVBST01fQ01EX05PUk1BTCk7CisKKwlydGw4MTh4X2lvd3JpdGUxNihw cml2LCAmcHJpdi0+bWFwLT5JTlRfTUFTSywgMCk7CisKKwltc2xlZXAoMjAw KTsKKwlydGw4MTh4X2lvd3JpdGU4KHByaXYsICh1OCAqKTB4RkUxOCwgMHgx MCk7CisJcnRsODE4eF9pb3dyaXRlOChwcml2LCAodTggKikweEZFMTgsIDB4 MTEpOworCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgKHU4ICopMHhGRTE4LCAw eDAwKTsKKwltc2xlZXAoMjAwKTsKKworCXJlcyA9IHJ0bDgxODdfY21kX3Jl c2V0KGRldik7CisJaWYgKHJlcykKKwkJcmV0dXJuIHJlczsKKwogCXJ0bDgx OHhfaW93cml0ZTgocHJpdiwgJnByaXYtPm1hcC0+RUVQUk9NX0NNRCwgUlRM ODE4WF9FRVBST01fQ01EX0NPTkZJRyk7CiAJcmVnID0gcnRsODE4eF9pb3Jl YWQ4KHByaXYsICZwcml2LT5tYXAtPkNPTkZJRzMpOwogCXJ0bDgxOHhfaW93 cml0ZTgocHJpdiwgJnByaXYtPm1hcC0+Q09ORklHMywgcmVnIHwgUlRMODE4 WF9DT05GSUczX0FOQVBBUkFNX1dSSVRFKTsKQEAgLTQ0NSwxNiArNTMwLDE5 MiBAQAogCXJldHVybiAwOwogfQogCitzdGF0aWMgY29uc3QgdTggcnRsODE4 N2JfcmVnX3RhYmxlW11bM10gPSB7CisJezB4RjAsIDB4MzIsIDB9LCB7MHhG MSwgMHgzMiwgMH0sIHsweEYyLCAweDAwLCAwfSwgezB4RjMsIDB4MDAsIDB9 LAorCXsweEY0LCAweDMyLCAwfSwgezB4RjUsIDB4NDMsIDB9LCB7MHhGNiwg MHgwMCwgMH0sIHsweEY3LCAweDAwLCAwfSwKKwl7MHhGOCwgMHg0NiwgMH0s IHsweEY5LCAweEE0LCAwfSwgezB4RkEsIDB4MDAsIDB9LCB7MHhGQiwgMHgw MCwgMH0sCisJezB4RkMsIDB4OTYsIDB9LCB7MHhGRCwgMHhBNCwgMH0sIHsw eEZFLCAweDAwLCAwfSwgezB4RkYsIDB4MDAsIDB9LAorCisJezB4NTgsIDB4 NEIsIDF9LCB7MHg1OSwgMHgwMCwgMX0sIHsweDVBLCAweDRCLCAxfSwgezB4 NUIsIDB4MDAsIDF9LAorCXsweDYwLCAweDRCLCAxfSwgezB4NjEsIDB4MDks IDF9LCB7MHg2MiwgMHg0QiwgMX0sIHsweDYzLCAweDA5LCAxfSwKKwl7MHhD RSwgMHgwRiwgMX0sIHsweENGLCAweDAwLCAxfSwgezB4RTAsIDB4RkYsIDF9 LCB7MHhFMSwgMHgwRiwgMX0sCisJezB4RTIsIDB4MDAsIDF9LCB7MHhGMCwg MHg0RSwgMX0sIHsweEYxLCAweDAxLCAxfSwgezB4RjIsIDB4MDIsIDF9LAor CXsweEYzLCAweDAzLCAxfSwgezB4RjQsIDB4MDQsIDF9LCB7MHhGNSwgMHgw NSwgMX0sIHsweEY2LCAweDA2LCAxfSwKKwl7MHhGNywgMHgwNywgMX0sIHsw eEY4LCAweDA4LCAxfSwKKworCXsweDRFLCAweDAwLCAyfSwgezB4MEMsIDB4 MDQsIDJ9LCB7MHgyMSwgMHg2MSwgMn0sIHsweDIyLCAweDY4LCAyfSwKKwl7 MHgyMywgMHg2RiwgMn0sIHsweDI0LCAweDc2LCAyfSwgezB4MjUsIDB4N0Qs IDJ9LCB7MHgyNiwgMHg4NCwgMn0sCisJezB4MjcsIDB4OEQsIDJ9LCB7MHg0 RCwgMHgwOCwgMn0sIHsweDUwLCAweDA1LCAyfSwgezB4NTEsIDB4RjUsIDJ9 LAorCXsweDUyLCAweDA0LCAyfSwgezB4NTMsIDB4QTAsIDJ9LCB7MHg1NCwg MHgxRiwgMn0sIHsweDU1LCAweDIzLCAyfSwKKwl7MHg1NiwgMHg0NSwgMn0s IHsweDU3LCAweDY3LCAyfSwgezB4NTgsIDB4MDgsIDJ9LCB7MHg1OSwgMHgw OCwgMn0sCisJezB4NUEsIDB4MDgsIDJ9LCB7MHg1QiwgMHgwOCwgMn0sIHsw eDYwLCAweDA4LCAyfSwgezB4NjEsIDB4MDgsIDJ9LAorCXsweDYyLCAweDA4 LCAyfSwgezB4NjMsIDB4MDgsIDJ9LCB7MHg2NCwgMHhDRiwgMn0sIHsweDcy LCAweDU2LCAyfSwKKwl7MHg3MywgMHg5QSwgMn0sCisKKwl7MHgzNCwgMHhG MCwgMH0sIHsweDM1LCAweDBGLCAwfSwgezB4NUIsIDB4NDAsIDB9LCB7MHg4 NCwgMHg4OCwgMH0sCisJezB4ODUsIDB4MjQsIDB9LCB7MHg4OCwgMHg1NCwg MH0sIHsweDhCLCAweEI4LCAwfSwgezB4OEMsIDB4MDcsIDB9LAorCXsweDhE LCAweDAwLCAwfSwgezB4OTQsIDB4MUIsIDB9LCB7MHg5NSwgMHgxMiwgMH0s IHsweDk2LCAweDAwLCAwfSwKKwl7MHg5NywgMHgwNiwgMH0sIHsweDlELCAw eDFBLCAwfSwgezB4OUYsIDB4MTAsIDB9LCB7MHhCNCwgMHgyMiwgMH0sCisJ ezB4QkUsIDB4ODAsIDB9LCB7MHhEQiwgMHgwMCwgMH0sIHsweEVFLCAweDAw LCAwfSwgezB4OTEsIDB4MDMsIDB9LAorCisJezB4NEMsIDB4MDAsIDJ9LCB7 MHg5RiwgMHgwMCwgM30sIHsweDhDLCAweDAxLCAwfSwgezB4OEQsIDB4MTAs IDB9LAorCXsweDhFLCAweDA4LCAwfSwgezB4OEYsIDB4MDAsIDB9Cit9Owor CitzdGF0aWMgaW50IHJ0bDgxODdiX2luaXRfaHcoc3RydWN0IGllZWU4MDIx MV9odyAqZGV2KQoreworCXN0cnVjdCBydGw4MTg3X3ByaXYgKnByaXYgPSBk ZXYtPnByaXY7CisJaW50IHJlcywgaTsKKwl1OCByZWc7CisKKwlydGw4MTh4 X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPkVFUFJPTV9DTUQsIFJUTDgx OFhfRUVQUk9NX0NNRF9DT05GSUcpOworCisJcmVnID0gcnRsODE4eF9pb3Jl YWQ4KHByaXYsICZwcml2LT5tYXAtPkNPTkZJRzMpOworCXJlZyB8PSBSVEw4 MThYX0NPTkZJRzNfQU5BUEFSQU1fV1JJVEUgfCBSVEw4MThYX0NPTkZJRzNf R05UX1NFTEVDVDsKKwlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5t YXAtPkNPTkZJRzMsIHJlZyk7CisJcnRsODE4eF9pb3dyaXRlMzIocHJpdiwg JnByaXYtPm1hcC0+QU5BUEFSQU0yLCAweDcyN2YzZjUyKTsKKwlydGw4MTh4 X2lvd3JpdGUzMihwcml2LCAmcHJpdi0+bWFwLT5BTkFQQVJBTSwgMHg0NTA5 MDY1OCk7CisJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5B TkFQQVJBTTMsIDApOworCisJcnRsODE4eF9pb3dyaXRlOChwcml2LCAodTgg KikweEZGNjEsIDB4MTApOworCXJlZyA9IHJ0bDgxOHhfaW9yZWFkOChwcml2 LCAodTggKikweEZGNjIpOworCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgKHU4 ICopMHhGRjYyLCByZWcgJiB+KDEgPDwgNSkpOworCXJ0bDgxOHhfaW93cml0 ZTgocHJpdiwgKHU4ICopMHhGRjYyLCByZWcgfCAoMSA8PCA1KSk7CisKKwly ZWcgPSBydGw4MTh4X2lvcmVhZDgocHJpdiwgJnByaXYtPm1hcC0+Q09ORklH Myk7CisJcmVnICY9IH5SVEw4MThYX0NPTkZJRzNfQU5BUEFSQU1fV1JJVEU7 CisJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5DT05GSUcz LCByZWcpOworCisJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFw LT5FRVBST01fQ01ELCBSVEw4MThYX0VFUFJPTV9DTURfTk9STUFMKTsKKwor CXJlcyA9IHJ0bDgxODdfY21kX3Jlc2V0KGRldik7CisJaWYgKHJlcykKKwkJ cmV0dXJuIHJlczsKKworCXJ0bDgxOHhfaW93cml0ZTE2KHByaXYsIChfX2xl MTYgKikweEZGMkQsIDB4MEZGRik7CisJcmVnID0gcnRsODE4eF9pb3JlYWQ4 KHByaXYsICZwcml2LT5tYXAtPkNXX0NPTkYpOworCXJlZyB8PSBSVEw4MThY X0NXX0NPTkZfUEVSUEFDS0VUX1JFVFJZX1NISUZUOworCXJ0bDgxOHhfaW93 cml0ZTgocHJpdiwgJnByaXYtPm1hcC0+Q1dfQ09ORiwgcmVnKTsKKwlyZWcg PSBydGw4MTh4X2lvcmVhZDgocHJpdiwgJnByaXYtPm1hcC0+VFhfQUdDX0NU TCk7CisJcmVnIHw9IFJUTDgxOFhfVFhfQUdDX0NUTF9QRVJQQUNLRVRfR0FJ Tl9TSElGVCB8CisJICAgICAgIFJUTDgxOFhfVFhfQUdDX0NUTF9QRVJQQUNL RVRfQU5UU0VMX1NISUZUOworCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgJnBy aXYtPm1hcC0+VFhfQUdDX0NUTCwgcmVnKTsKKworCXJ0bDgxOHhfaW93cml0 ZTE2X2lkeChwcml2LCAoX19sZTE2ICopMHhGRkUwLCAweDBGRkYsIDEpOwor CXJlZyA9IHJ0bDgxOHhfaW9yZWFkOChwcml2LCAmcHJpdi0+bWFwLT5SQVRF X0ZBTExCQUNLKTsKKwlyZWcgfD0gUlRMODE4WF9SQVRFX0ZBTExCQUNLX0VO QUJMRTsKKwlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPlJB VEVfRkFMTEJBQ0ssIHJlZyk7CisKKwlydGw4MTh4X2lvd3JpdGUxNihwcml2 LCAmcHJpdi0+bWFwLT5CRUFDT05fSU5URVJWQUwsIDEwMCk7CisJcnRsODE4 eF9pb3dyaXRlMTYocHJpdiwgJnByaXYtPm1hcC0+QVRJTV9XTkQsIDIpOwor CXJ0bDgxOHhfaW93cml0ZTE2X2lkeChwcml2LCAoX19sZTE2ICopMHhGRkQ0 LCAweEZGRkYsIDEpOworCisJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJp di0+bWFwLT5FRVBST01fQ01ELCBSVEw4MThYX0VFUFJPTV9DTURfQ09ORklH KTsKKwlyZWcgPSBydGw4MTh4X2lvcmVhZDgocHJpdiwgJnByaXYtPm1hcC0+ Q09ORklHMSk7CisJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFw LT5DT05GSUcxLCAocmVnICYgMHgzRikgfCAweDgwKTsKKwlydGw4MTh4X2lv d3JpdGU4KHByaXYsICZwcml2LT5tYXAtPkVFUFJPTV9DTUQsIFJUTDgxOFhf RUVQUk9NX0NNRF9OT1JNQUwpOworCisJcnRsODE4eF9pb3dyaXRlOChwcml2 LCAmcHJpdi0+bWFwLT5XUEFfQ09ORiwgMCk7CisJZm9yIChpID0gMDsgaSA8 IEFSUkFZX1NJWkUocnRsODE4N2JfcmVnX3RhYmxlKTsgaSsrKSB7CisJCXJ0 bDgxOHhfaW93cml0ZThfaWR4KHByaXYsCisJCQkJICAgICAodTggKikodWlu dHB0cl90KQorCQkJCSAgICAgKHJ0bDgxODdiX3JlZ190YWJsZVtpXVswXSB8 IDB4RkYwMCksCisJCQkJICAgICBydGw4MTg3Yl9yZWdfdGFibGVbaV1bMV0s CisJCQkJICAgICBydGw4MTg3Yl9yZWdfdGFibGVbaV1bMl0pOworCX0KKwor CXJ0bDgxOHhfaW93cml0ZTE2KHByaXYsICZwcml2LT5tYXAtPlRJRF9BQ19N QVAsIDB4RkE1MCk7CisJcnRsODE4eF9pb3dyaXRlMTYocHJpdiwgJnByaXYt Pm1hcC0+SU5UX01JRywgMCk7CisKKwlydGw4MTh4X2lvd3JpdGUzMl9pZHgo cHJpdiwgKF9fbGUzMiAqKTB4RkZGMCwgMCwgMSk7CisJcnRsODE4eF9pb3dy aXRlMzJfaWR4KHByaXYsIChfX2xlMzIgKikweEZGRjQsIDAsIDEpOworCXJ0 bDgxOHhfaW93cml0ZThfaWR4KHByaXYsICh1OCAqKTB4RkZGOCwgMCwgMSk7 CisKKwlydGw4MTh4X2lvd3JpdGUzMihwcml2LCAmcHJpdi0+bWFwLT5SRl9U SU1JTkcsIDB4MDAwMDQwMDEpOworCisJcnRsODE4eF9pb3dyaXRlMTZfaWR4 KHByaXYsIChfX2xlMTYgKikweEZGNzIsIDB4NTY5QSwgMik7CisKKwlydGw4 MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPkVFUFJPTV9DTUQsIFJU TDgxOFhfRUVQUk9NX0NNRF9DT05GSUcpOworCXJlZyA9IHJ0bDgxOHhfaW9y ZWFkOChwcml2LCAmcHJpdi0+bWFwLT5DT05GSUczKTsKKwlyZWcgfD0gUlRM ODE4WF9DT05GSUczX0FOQVBBUkFNX1dSSVRFOworCXJ0bDgxOHhfaW93cml0 ZTgocHJpdiwgJnByaXYtPm1hcC0+Q09ORklHMywgcmVnKTsKKwlydGw4MTh4 X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPkVFUFJPTV9DTUQsIFJUTDgx OFhfRUVQUk9NX0NNRF9OT1JNQUwpOworCisJcnRsODE4eF9pb3dyaXRlMTYo cHJpdiwgJnByaXYtPm1hcC0+UkZQaW5zT3V0cHV0LCAweDA0ODApOworCXJ0 bDgxOHhfaW93cml0ZTE2KHByaXYsICZwcml2LT5tYXAtPlJGUGluc1NlbGVj dCwgMHgyNDg4KTsKKwlydGw4MTh4X2lvd3JpdGUxNihwcml2LCAmcHJpdi0+ bWFwLT5SRlBpbnNFbmFibGUsIDB4MUZGRik7CisJbXNsZWVwKDExMDApOwor CisJcHJpdi0+cmYtPmluaXQoZGV2KTsKKworCXJlZyA9IFJUTDgxOFhfQ01E X1RYX0VOQUJMRSB8IFJUTDgxOFhfQ01EX1JYX0VOQUJMRTsKKwlydGw4MTh4 X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPkNNRCwgcmVnKTsKKwlydGw4 MTh4X2lvd3JpdGUxNihwcml2LCAmcHJpdi0+bWFwLT5JTlRfTUFTSywgMHhG RkZGKTsKKworCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgKHU4ICopMHhGRTQx LCAweEY0KTsKKwlydGw4MTh4X2lvd3JpdGU4KHByaXYsICh1OCAqKTB4RkU0 MCwgMHgwMCk7CisJcnRsODE4eF9pb3dyaXRlOChwcml2LCAodTggKikweEZF NDIsIDB4MDApOworCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgKHU4ICopMHhG RTQyLCAweDAxKTsKKwlydGw4MTh4X2lvd3JpdGU4KHByaXYsICh1OCAqKTB4 RkU0MCwgMHgwRik7CisJcnRsODE4eF9pb3dyaXRlOChwcml2LCAodTggKikw eEZFNDIsIDB4MDApOworCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgKHU4ICop MHhGRTQyLCAweDAxKTsKKworCXJlZyA9IHJ0bDgxOHhfaW9yZWFkOChwcml2 LCAodTggKikweEZGREIpOworCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgKHU4 ICopMHhGRkRCLCByZWcgfCAoMSA8PCAyKSk7CisJcnRsODE4eF9pb3dyaXRl MTZfaWR4KHByaXYsIChfX2xlMTYgKikweEZGNzIsIDB4NTlGQSwgMyk7CisJ cnRsODE4eF9pb3dyaXRlMTZfaWR4KHByaXYsIChfX2xlMTYgKikweEZGNzQs IDB4NTlEMiwgMyk7CisJcnRsODE4eF9pb3dyaXRlMTZfaWR4KHByaXYsIChf X2xlMTYgKikweEZGNzYsIDB4NTlEMiwgMyk7CisJcnRsODE4eF9pb3dyaXRl MTZfaWR4KHByaXYsIChfX2xlMTYgKikweEZGNzgsIDB4MTlGQSwgMyk7CisJ cnRsODE4eF9pb3dyaXRlMTZfaWR4KHByaXYsIChfX2xlMTYgKikweEZGN0Es IDB4MTlGQSwgMyk7CisJcnRsODE4eF9pb3dyaXRlMTZfaWR4KHByaXYsIChf X2xlMTYgKikweEZGN0MsIDB4MDBEMCwgMyk7CisJcnRsODE4eF9pb3dyaXRl OChwcml2LCAodTggKikweEZGNjEsIDApOworCXJ0bDgxOHhfaW93cml0ZThf aWR4KHByaXYsICh1OCAqKTB4RkY4MCwgMHgwRiwgMSk7CisJcnRsODE4eF9p b3dyaXRlOF9pZHgocHJpdiwgKHU4ICopMHhGRjgzLCAweDAzLCAxKTsKKwly dGw4MTh4X2lvd3JpdGU4KHByaXYsICh1OCAqKTB4RkZEQSwgMHgxMCk7CisJ cnRsODE4eF9pb3dyaXRlOF9pZHgocHJpdiwgKHU4ICopMHhGRjRELCAweDA4 LCAyKTsKKworCXJ0bDgxOHhfaW93cml0ZTMyKHByaXYsICZwcml2LT5tYXAt PkhTU0lfUEFSQSwgMHgwNjAwMzIxQik7CisKKwlydGw4MTh4X2lvd3JpdGUx Nl9pZHgocHJpdiwgKF9fbGUxNiAqKTB4RkZFQywgMHgwODAwLCAxKTsKKwor CXJldHVybiAwOworfQorCiBzdGF0aWMgaW50IHJ0bDgxODdfc3RhcnQoc3Ry dWN0IGllZWU4MDIxMV9odyAqZGV2KQogewogCXN0cnVjdCBydGw4MTg3X3By aXYgKnByaXYgPSBkZXYtPnByaXY7CiAJdTMyIHJlZzsKIAlpbnQgcmV0Owog Ci0JcmV0ID0gcnRsODE4N19pbml0X2h3KGRldik7CisJcmV0ID0gKCFwcml2 LT5pc19ydGw4MTg3YikgPyBydGw4MTg3X2luaXRfaHcoZGV2KSA6CisJCQkJ ICAgICBydGw4MTg3Yl9pbml0X2h3KGRldik7CiAJaWYgKHJldCkKIAkJcmV0 dXJuIHJldDsKIAorCWlmIChwcml2LT5pc19ydGw4MTg3YikgeworCQlyZWcg PSBSVEw4MThYX1JYX0NPTkZfTUdNVCB8CisJCSAgICAgIFJUTDgxOFhfUlhf Q09ORl9EQVRBIHwKKwkJICAgICAgUlRMODE4WF9SWF9DT05GX0JST0FEQ0FT VCB8CisJCSAgICAgIFJUTDgxOFhfUlhfQ09ORl9OSUNNQUMgfAorCQkgICAg ICBSVEw4MThYX1JYX0NPTkZfQlNTSUQgfAorCQkgICAgICAoNyA8PCAxMyAv KiBSWCBGSUZPIHRocmVzaG9sZCBOT05FICovKSB8CisJCSAgICAgICg3IDw8 IDEwIC8qIE1BWCBSWCBETUEgKi8pIHwKKwkJICAgICAgUlRMODE4WF9SWF9D T05GX1JYX0FVVE9SRVNFVFBIWSB8CisJCSAgICAgIFJUTDgxOFhfUlhfQ09O Rl9PTkxZRVJMUEtUIHwKKwkJICAgICAgUlRMODE4WF9SWF9DT05GX01VTFRJ Q0FTVDsKKwkJcHJpdi0+cnhfY29uZiA9IHJlZzsKKwkJcnRsODE4eF9pb3dy aXRlMzIocHJpdiwgJnByaXYtPm1hcC0+UlhfQ09ORiwgcmVnKTsKKworCQly dGw4MTh4X2lvd3JpdGUzMihwcml2LCAmcHJpdi0+bWFwLT5UWF9DT05GLAor CQkJCSAgUlRMODE4WF9UWF9DT05GX0hXX1NFUU5VTSB8CisJCQkJICBSVEw4 MThYX1RYX0NPTkZfRElTUkVRUVNJWkUgfAorCQkJCSAgKDcgPDwgOCAgLyog c2hvcnQgcmV0cnkgbGltaXQgKi8pIHwKKwkJCQkgICg3IDw8IDAgIC8qIGxv bmcgcmV0cnkgbGltaXQgKi8pIHwKKwkJCQkgICg3IDw8IDIxIC8qIE1BWCBU WCBETUEgKi8pKTsKKwkJcnRsODE4N19pbml0X3VyYnMoZGV2KTsKKwkJcmV0 dXJuIDA7CisJfQorCiAJcnRsODE4eF9pb3dyaXRlMTYocHJpdiwgJnByaXYt Pm1hcC0+SU5UX01BU0ssIDB4RkZGRik7CiAKIAlydGw4MTh4X2lvd3JpdGUz Mihwcml2LCAmcHJpdi0+bWFwLT5NQVJbMF0sIH4wKTsKQEAgLTU4MSw2ICs4 NDIsNyBAQAogCW1zbGVlcCgxMCk7CiAJcnRsODE4eF9pb3dyaXRlMzIocHJp diwgJnByaXYtPm1hcC0+VFhfQ09ORiwgcmVnKTsKIAorCWlmICghcHJpdi0+ aXNfcnRsODE4N2IpIHsKIAlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2 LT5tYXAtPlNJRlMsIDB4MjIpOwogCiAJaWYgKGNvbmYtPmZsYWdzICYgSUVF RTgwMjExX0NPTkZfU0hPUlRfU0xPVF9USU1FKSB7CkBAIC01OTQsNiArODU2 LDcgQEAKIAkJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5F SUZTLCA5MSAtIDB4MjQpOwogCQlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZw cml2LT5tYXAtPkNXX1ZBTCwgMHhhNSk7CiAJfQorCX0KIAogCXJ0bDgxOHhf aW93cml0ZTE2KHByaXYsICZwcml2LT5tYXAtPkFUSU1fV05ELCAyKTsKIAly dGw4MTh4X2lvd3JpdGUxNihwcml2LCAmcHJpdi0+bWFwLT5BVElNVFJfSU5U RVJWQUwsIDEwMCk7CkBAIC02MDgsMTQgKzg3MSwyMCBAQAogewogCXN0cnVj dCBydGw4MTg3X3ByaXYgKnByaXYgPSBkZXYtPnByaXY7CiAJaW50IGk7CisJ dTggcmVnOwogCiAJZm9yIChpID0gMDsgaSA8IEVUSF9BTEVOOyBpKyspCiAJ CXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgJnByaXYtPm1hcC0+QlNTSURbaV0s IGNvbmYtPmJzc2lkW2ldKTsKIAotCWlmIChpc192YWxpZF9ldGhlcl9hZGRy KGNvbmYtPmJzc2lkKSkKLQkJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJp di0+bWFwLT5NU1IsIFJUTDgxOFhfTVNSX0lORlJBKTsKLQllbHNlCi0JCXJ0 bDgxOHhfaW93cml0ZTgocHJpdiwgJnByaXYtPm1hcC0+TVNSLCBSVEw4MThY X01TUl9OT19MSU5LKTsKKwlpZiAoaXNfdmFsaWRfZXRoZXJfYWRkcihjb25m LT5ic3NpZCkpIHsKKwkJcmVnID0gUlRMODE4WF9NU1JfSU5GUkE7CisJCWlm IChwcml2LT5pc19ydGw4MTg3YikKKwkJCXJlZyB8PSBSVEw4MThYX01TUl9F TkVEQ0E7CisJCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgJnByaXYtPm1hcC0+ TVNSLCByZWcpOworCX0gZWxzZSB7CisJCXJlZyA9IFJUTDgxOFhfTVNSX05P X0xJTks7CisJCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgJnByaXYtPm1hcC0+ TVNSLCByZWcpOworCX0KIAogCXJldHVybiAwOwogfQpAQCAtNjk0LDYgKzk2 Myw0OSBAQAogCXVkZWxheSgxMCk7CiB9CiAKK3N0YXRpYyBzdHJ1Y3QgcHJv Y19kaXJfZW50cnkgKnJ0bDgxODdfcHJvYyA9IE5VTEw7CisKK3N0YXRpYyBp bnQgcnRsODE4N19nZXRfcmFkaW9fc3RhdHVzKGNoYXIgKnBhZ2UsIGNoYXIg KipzdGFydCwgb2ZmX3Qgb2Zmc2V0LAorCQkJCSAgICBpbnQgY291bnQsIGlu dCAqZW9mLCB2b2lkICpkYXRhKQoreworCXN0cnVjdCBpZWVlODAyMTFfaHcg KmRldiA9IGRhdGE7CisJc3RydWN0IHJ0bDgxODdfcHJpdiAqcHJpdiA9IGRl di0+cHJpdjsKKwlpbnQgcmVzOworCisJcmVzID0gc25wcmludGYocGFnZSwg Y291bnQsICJTaWduYWw6ICV1XG5RdWFsaXR5OiAldVxuTm9pc2U6ICV1XG4i LAorCQkgICAgICAgcHJpdi0+c2lnbmFsLCBwcml2LT5xdWFsaXR5LCBwcml2 LT5ub2lzZSk7CisJKmVvZiA9IDE7CisJcmV0dXJuIHJlczsKK30KKworc3Rh dGljIHZvaWQgcnRsODE4N19jcmVhdGVfcHJvY19lbnRyaWVzKHN0cnVjdCBp ZWVlODAyMTFfaHcgKmRldikKK3sKKwlydGw4MTg3X3Byb2MgPSBjcmVhdGVf cHJvY19lbnRyeShLQlVJTERfTU9ETkFNRSwgU19JRkRJUiwKKwkJCQkJIGlu aXRfbmV0LnByb2NfbmV0KTsKKwlpZiAoIXJ0bDgxODdfcHJvYykgeworCQlw cmludGsoS0VSTl9XQVJOSU5HICJydGw4MTg3OiBjYW5ub3QgY3JlYXRlIHJ0 bDgxODcgIgorCQkJCSAgICAiL3Byb2MgZW50cnlcbiIpOworCQlyZXR1cm47 CisJfQorCisJY3JlYXRlX3Byb2NfcmVhZF9lbnRyeSgicmFkaW9fc3RhdHVz IiwgU19JRlJFRyB8IFNfSVJVR08sCisJCQkJcnRsODE4N19wcm9jLCBydGw4 MTg3X2dldF9yYWRpb19zdGF0dXMsCisJCQkJZGV2KTsKKwljcmVhdGVfcHJv Y19yZWFkX2VudHJ5KCJyYWRpb19yZWdpc3RlcnMiLCBTX0lGUkVHIHwgU19J UlVHTywKKwkJCQlydGw4MTg3X3Byb2MsIHJ0bDgxODdfZ2V0X3JhZGlvX3Jl Z2lzdGVycywKKwkJCQlkZXYpOworfQorCitzdGF0aWMgdm9pZCBydGw4MTg3 X3JlbW92ZV9wcm9jX2VudHJpZXModm9pZCkKK3sKKwlpZiAoIXJ0bDgxODdf cHJvYykKKwkJcmV0dXJuOworCXJlbW92ZV9wcm9jX2VudHJ5KCJyYWRpb19y ZWdpc3RlcnMiLCBydGw4MTg3X3Byb2MpOworCXJlbW92ZV9wcm9jX2VudHJ5 KCJyYWRpb19zdGF0dXMiLCBydGw4MTg3X3Byb2MpOworCXJlbW92ZV9wcm9j X2VudHJ5KEtCVUlMRF9NT0ROQU1FLCBpbml0X25ldC5wcm9jX25ldCk7CisJ cnRsODE4N19wcm9jID0gTlVMTDsKK30KKwogc3RhdGljIGludCBfX2Rldmlu aXQgcnRsODE4N19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwK IAkJCQkgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpCiB7CkBA IC03MDIsNiArMTAxNCw3IEBACiAJc3RydWN0IHJ0bDgxODdfcHJpdiAqcHJp djsKIAlzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbTsKIAlzdHJ1Y3QgaWVl ZTgwMjExX2NoYW5uZWwgKmNoYW5uZWw7CisJY29uc3QgY2hhciAqY2hpcF9u YW1lOwogCXUxNiB0eHB3ciwgcmVnOwogCWludCBlcnIsIGk7CiAJREVDTEFS RV9NQUNfQlVGKG1hYyk7CkBAIC03MTMsNiArMTAyNiw4IEBACiAJfQogCiAJ cHJpdiA9IGRldi0+cHJpdjsKKwlwcml2LT5pc19ydGw4MTg3YiA9IChpZC0+ ZHJpdmVyX2luZm8gPT0gREVWSUNFX1JUTDgxODdCKSB8fAorCQkJICAgICFt ZW1jbXAodWRldi0+cHJvZHVjdCwgIlJUTDgxODdCIiwgOCk7CiAKIAlTRVRf SUVFRTgwMjExX0RFVihkZXYsICZpbnRmLT5kZXYpOwogCXVzYl9zZXRfaW50 ZmRhdGEoaW50ZiwgZGV2KTsKQEAgLTc0MSw4ICsxMDU2LDEzIEBACiAJZGV2 LT5mbGFncyA9IElFRUU4MDIxMV9IV19IT1NUX0JST0FEQ0FTVF9QU19CVUZG RVJJTkcgfAogCQkgICAgIElFRUU4MDIxMV9IV19SWF9JTkNMVURFU19GQ1Mg fAogCQkgICAgIElFRUU4MDIxMV9IV19TSUdOQUxfVU5TUEVDOwotCWRldi0+ ZXh0cmFfdHhfaGVhZHJvb20gPSBzaXplb2Yoc3RydWN0IHJ0bDgxODdfdHhf aGRyKTsKKyAgICAgICAgZGV2LT5leHRyYV90eF9oZWFkcm9vbSA9ICghcHJp di0+aXNfcnRsODE4N2IpID8KKyAgICAgICAgICBzaXplb2Yoc3RydWN0IHJ0 bDgxODdfdHhfaGRyKSA6CisgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBydGw4 MTg3Yl90eF9oZHIpOworICAgICAgICBpZiAoIXByaXYtPmlzX3J0bDgxODdi KQogCWRldi0+cXVldWVzID0gMTsKKyAgICAgICAgZWxzZQorICAgICAgICAg IGRldi0+cXVldWVzID0gNDsKIAlkZXYtPm1heF9zaWduYWwgPSA2NTsKIAog CWVlcHJvbS5kYXRhID0gZGV2OwpAQCAtNzc3LDEyICsxMDk3LDI2IEBACiAJ CSgqY2hhbm5lbCsrKS5od192YWx1ZSA9IHR4cHdyICYgMHhGRjsKIAkJKCpj aGFubmVsKyspLmh3X3ZhbHVlID0gdHhwd3IgPj4gODsKIAl9CisJaWYgKCFw cml2LT5pc19ydGw4MTg3YikgewogCWZvciAoaSA9IDA7IGkgPCAyOyBpKysp IHsKLQkJZWVwcm9tXzkzY3g2X3JlYWQoJmVlcHJvbSwgUlRMODE4N19FRVBS T01fVFhQV1JfQ0hBTl82ICsgaSwKKwkJCWVlcHJvbV85M2N4Nl9yZWFkKCZl ZXByb20sCisJCQkJCSAgUlRMODE4N19FRVBST01fVFhQV1JfQ0hBTl82ICsg aSwKIAkJCQkgICZ0eHB3cik7CiAJCSgqY2hhbm5lbCsrKS5od192YWx1ZSA9 IHR4cHdyICYgMHhGRjsKIAkJKCpjaGFubmVsKyspLmh3X3ZhbHVlID0gdHhw d3IgPj4gODsKIAl9CisJfSBlbHNlIHsKKwkJZWVwcm9tXzkzY3g2X3JlYWQo JmVlcHJvbSwgUlRMODE4N19FRVBST01fVFhQV1JfQ0hBTl82LAorCQkJCSAg JnR4cHdyKTsKKwkJKCpjaGFubmVsKyspLmh3X3ZhbHVlID0gdHhwd3IgJiAw eEZGOworCisJCWVlcHJvbV85M2N4Nl9yZWFkKCZlZXByb20sIDB4MEEsICZ0 eHB3cik7CisJCSgqY2hhbm5lbCsrKS5od192YWx1ZSA9IHR4cHdyICYgMHhG RjsKKworCQllZXByb21fOTNjeDZfcmVhZCgmZWVwcm9tLCAweDFDLCAmdHhw d3IpOworCQkoKmNoYW5uZWwrKykuaHdfdmFsdWUgPSB0eHB3ciAmIDB4RkY7 CisJCSgqY2hhbm5lbCsrKS5od192YWx1ZSA9IHR4cHdyID4+IDg7CisJfQog CiAJZWVwcm9tXzkzY3g2X3JlYWQoJmVlcHJvbSwgUlRMODE4N19FRVBST01f VFhQV1JfQkFTRSwKIAkJCSAgJnByaXYtPnR4cHdyX2Jhc2UpOwpAQCAtNzk2 LDYgKzExMzAsNTAgQEAKIAlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2 LT5tYXAtPlBHU0VMRUNULCByZWcpOwogCXJ0bDgxOHhfaW93cml0ZTgocHJp diwgJnByaXYtPm1hcC0+RUVQUk9NX0NNRCwgUlRMODE4WF9FRVBST01fQ01E X05PUk1BTCk7CiAKKwlpZiAoIXByaXYtPmlzX3J0bDgxODdiKSB7CisJCXUz MiByZWczMjsKKwkJcmVnMzIgPSBydGw4MTh4X2lvcmVhZDMyKHByaXYsICZw cml2LT5tYXAtPlRYX0NPTkYpOworCQlyZWczMiAmPSBSVEw4MThYX1RYX0NP TkZfSFdWRVJfTUFTSzsKKwkJc3dpdGNoIChyZWczMikgeworCQljYXNlIFJU TDgxOFhfVFhfQ09ORl9SODE4N3ZEXzE6CisJCWNhc2UgUlRMODE4WF9UWF9D T05GX1I4MTg3dkRfMjoKKwkJCWNoaXBfbmFtZSA9ICJSVEw4MTg3dkQiOwor CQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQljaGlwX25hbWUgPSAiUlRMODE4 N3ZCIChkZWZhdWx0KSI7CisJCX0KKyAgICAgICB9IGVsc2UgeworCQlwcmlu dGsoS0VSTl9XQVJOSU5HICJydGw4MTg3OiA4MTg3QiBjaGlwIGRldGVjdGVk LiBTdXBwb3J0ICIKKwkJCSJpcyBFWFBFUklNRU5UQUwsIGFuZCBjb3VsZCBk YW1hZ2UgeW91clxuIgorCQkJIiAgICAgICAgIGhhcmR3YXJlLCB1c2UgYXQg eW91ciBvd24gcmlza1xuIik7CisJCS8qIAorCQkgKiBGb3JjZSBVU0IgcmVx dWVzdCB0byB3cml0ZSByYWRpbyByZWdpc3RlcnMgZm9yIDgxODdCLCBSZWFs dGVrCisJCSAqIG9ubHkgdXNlcyBpdCBpbiB0aGVpciBzb3VyY2VzCisJCSAq LworCQkvKmlmIChwcml2LT5hc2ljX3JldiA9PSAwKSB7CisJCQlwcmludGso S0VSTl9XQVJOSU5HICJydGw4MTg3OiBGb3JjaW5nIHVzZSBvZiBVU0IgIgor CQkJICAgICAgICJyZXF1ZXN0cyB0byB3cml0ZSB0byByYWRpbyByZWdpc3Rl cnNcbiIpOworCQkJcHJpdi0+YXNpY19yZXYgPSAxOworCQl9Ki8KKwkJc3dp dGNoIChydGw4MTh4X2lvcmVhZDgocHJpdiwgKHU4ICopMHhGRkUxKSkgewor CQljYXNlIFJUTDgxOFhfUjgxODdCX0I6CisJCQljaGlwX25hbWUgPSAiUlRM ODE4N0J2QiI7CisJCQlwcml2LT5od19yZXYgPSBSVEw4MTg3QnZCOworCQkJ YnJlYWs7CisJCWNhc2UgUlRMODE4WF9SODE4N0JfRDoKKwkJCWNoaXBfbmFt ZSA9ICJSVEw4MTg3QnZEIjsKKwkJCXByaXYtPmh3X3JldiA9IFJUTDgxODdC dkQ7CisJCQlicmVhazsKKwkJY2FzZSBSVEw4MThYX1I4MTg3Ql9FOgorCQkJ Y2hpcF9uYW1lID0gIlJUTDgxODdCdkUiOworCQkJcHJpdi0+aHdfcmV2ID0g UlRMODE4N0J2RTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJY2hpcF9u YW1lID0gIlJUTDgxODdCdkIgKGRlZmF1bHQpIjsKKwkJCXByaXYtPmh3X3Jl diA9IFJUTDgxODdCdkI7CisJCX0KKwl9CisKIAlwcml2LT5yZiA9IHJ0bDgx ODdfZGV0ZWN0X3JmKGRldik7CiAKIAllcnIgPSBpZWVlODAyMTFfcmVnaXN0 ZXJfaHcoZGV2KTsKQEAgLTgwNCw5ICsxMTgyLDExIEBACiAJCWdvdG8gZXJy X2ZyZWVfZGV2OwogCX0KIAotCXByaW50ayhLRVJOX0lORk8gIiVzOiBod2Fk ZHIgJXMsIHJ0bDgxODcgViVkICsgJXNcbiIsCisJcnRsODE4N19jcmVhdGVf cHJvY19lbnRyaWVzKGRldik7CisKKwlwcmludGsoS0VSTl9JTkZPICIlczog aHdhZGRyICVzLCAlcyBWJWQgKyAlc1xuIiwKIAkgICAgICAgd2lwaHlfbmFt ZShkZXYtPndpcGh5KSwgcHJpbnRfbWFjKG1hYywgZGV2LT53aXBoeS0+cGVy bV9hZGRyKSwKLQkgICAgICAgcHJpdi0+YXNpY19yZXYsIHByaXYtPnJmLT5u YW1lKTsKKwkgICAgICAgY2hpcF9uYW1lLCBwcml2LT5hc2ljX3JldiwgcHJp di0+cmYtPm5hbWUpOwogCiAJcmV0dXJuIDA7CiAKQEAgLTgyNyw2ICsxMjA3 LDggQEAKIAogCWllZWU4MDIxMV91bnJlZ2lzdGVyX2h3KGRldik7CiAKKwly dGw4MTg3X3JlbW92ZV9wcm9jX2VudHJpZXMoKTsKKwogCXByaXYgPSBkZXYt PnByaXY7CiAJdXNiX3B1dF9kZXYoaW50ZXJmYWNlX3RvX3VzYmRldihpbnRm KSk7CiAJaWVlZTgwMjExX2ZyZWVfaHcoZGV2KTsKZGlmZiAtcnVCYiAuLi9v cmlnL2NvbXBhdC13aXJlbGVzcy0yMDA4LTA2LTE0L2RyaXZlcnMvbmV0L3dp cmVsZXNzL3J0bDgxODcuaCBjb21wYXQtd2lyZWxlc3MtMjAwOC0wNi0xNC9k cml2ZXJzL25ldC93aXJlbGVzcy9ydGw4MTg3LmgKLS0tIC4uL29yaWcvY29t cGF0LXdpcmVsZXNzLTIwMDgtMDYtMTQvZHJpdmVycy9uZXQvd2lyZWxlc3Mv cnRsODE4Ny5oCTIwMDgtMDYtMTQgMDU6MTA6NTMuMDAwMDAwMDAwICswMTAw CisrKyBjb21wYXQtd2lyZWxlc3MtMjAwOC0wNi0xNC9kcml2ZXJzL25ldC93 aXJlbGVzcy9ydGw4MTg3LmgJMjAwOC0wNi0xNCAyMzo0Nzo0OS4wMDAwMDAw MDAgKzAxMDAKQEAgLTQ0LDggKzQ0LDE5IEBACiAJX19sZTY0IG1hY190aW1l OwogfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKIAorc3RydWN0IHJ0bDgx ODdiX3J4X2hkciB7ICAKKyAgX19sZTMyIGZsYWdzOyAgCisgIF9fbGU2NCBt YWNfdGltZTsgIAorICB1OCBub2lzZTsgIAorICB1OCBzaWduYWw7ICAKKyAg dTggYWdjOyAgCisgIHU4IHJlc2VydmVkOyAgCisgIF9fbGUzMiB1bnVzZWQ7 ICAKK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisKIHN0cnVjdCBydGw4 MTg3X3R4X2hkciB7CiAJX19sZTMyIGZsYWdzOworLyogVHggZmxhZ3MgYXJl IGNvbW1vbiBiZXR3ZWVuIHJ0bDgxODcgYW5kIHJ0bDgxODdiICovCiAjZGVm aW5lIFJUTDgxODdfVFhfRkxBR19OT19FTkNSWVBUCSgxIDw8IDE1KQogI2Rl ZmluZSBSVEw4MTg3X1RYX0ZMQUdfTU9SRV9GUkFHCSgxIDw8IDE3KQogI2Rl ZmluZSBSVEw4MTg3X1RYX0ZMQUdfQ1RTCQkoMSA8PCAxOCkKQEAgLTU1LDYg KzY2LDIxIEBACiAJX19sZTMyIHJldHJ5OwogfSBfX2F0dHJpYnV0ZV9fKChw YWNrZWQpKTsKIAorc3RydWN0IHJ0bDgxODdiX3R4X2hkciB7CisgIF9fbGUz MiBmbGFnczsKKyAgX19sZTE2IHJ0c19kdXJhdGlvbjsKKyAgX19sZTE2IGxl bjsKKyAgX19sZTMyIHVudXNlZF8xOworICBfX2xlMTYgdW51c2VkXzI7Cisg IF9fbGUxNiB0eF9kdXJhdGlvbjsKKyAgX19sZTMyIHVudXNlZF8zOworICBf X2xlMzIgcmV0cnk7CisgIF9fbGUzMiB1bnVzZWRfNFsyXTsKK30gX19hdHRy aWJ1dGVfXygocGFja2VkKSk7CisKKyNkZWZpbmUgREVWSUNFX1JUTDgxODcg IDAKKyNkZWZpbmUgREVWSUNFX1JUTDgxODdCIDEKKwogc3RydWN0IHJ0bDgx ODdfcHJpdiB7CiAJLyogY29tbW9uIGJldHdlZW4gcnRsODE4eCBkcml2ZXJz ICovCiAJc3RydWN0IHJ0bDgxOHhfY3NyICptYXA7CkBAIC03MCw3MCArOTYs MTIwIEBACiAJdTMyIHJ4X2NvbmY7CiAJdTE2IHR4cHdyX2Jhc2U7CiAJdTgg YXNpY19yZXY7CisJdTggaXNfcnRsODE4N2I7CisJZW51bSB7CisJCVJUTDgx ODdCdkIsCisJCVJUTDgxODdCdkQsCisJCVJUTDgxODdCdkUKKwl9IGh3X3Jl djsKIAlzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHJ4X3F1ZXVlOworCXU4IHNpZ25h bDsKKwl1OCBxdWFsaXR5OworCXU4IG5vaXNlOwogfTsKIAogdm9pZCBydGw4 MTg3X3dyaXRlX3BoeShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsIHU4IGFk ZHIsIHUzMiBkYXRhKTsKIAotc3RhdGljIGlubGluZSB1OCBydGw4MTh4X2lv cmVhZDgoc3RydWN0IHJ0bDgxODdfcHJpdiAqcHJpdiwgdTggKmFkZHIpCitz dGF0aWMgaW5saW5lIHU4IHJ0bDgxOHhfaW9yZWFkOF9pZHgoc3RydWN0IHJ0 bDgxODdfcHJpdiAqcHJpdiwKKwkJCQkgICAgIHU4ICphZGRyLCB1OCBpZHgp CiB7CiAJdTggdmFsOwogCiAJdXNiX2NvbnRyb2xfbXNnKHByaXYtPnVkZXYs IHVzYl9yY3ZjdHJscGlwZShwcml2LT51ZGV2LCAwKSwKIAkJCVJUTDgxODdf UkVRX0dFVF9SRUcsIFJUTDgxODdfUkVRVF9SRUFELAotCQkJKHVuc2lnbmVk IGxvbmcpYWRkciwgMCwgJnZhbCwgc2l6ZW9mKHZhbCksIEhaIC8gMik7CisJ CQkodW5zaWduZWQgbG9uZylhZGRyLCBpZHggJiAweDAzLCAmdmFsLAorCQkJ c2l6ZW9mKHZhbCksIEhaIC8gMik7CiAKIAlyZXR1cm4gdmFsOwogfQogCi1z dGF0aWMgaW5saW5lIHUxNiBydGw4MTh4X2lvcmVhZDE2KHN0cnVjdCBydGw4 MTg3X3ByaXYgKnByaXYsIF9fbGUxNiAqYWRkcikKK3N0YXRpYyBpbmxpbmUg dTggcnRsODE4eF9pb3JlYWQ4KHN0cnVjdCBydGw4MTg3X3ByaXYgKnByaXYs IHU4ICphZGRyKQoreworCXJldHVybiBydGw4MTh4X2lvcmVhZDhfaWR4KHBy aXYsIGFkZHIsIDApOworfQorCitzdGF0aWMgaW5saW5lIHUxNiBydGw4MTh4 X2lvcmVhZDE2X2lkeChzdHJ1Y3QgcnRsODE4N19wcml2ICpwcml2LAorCQkJ CSAgICAgICBfX2xlMTYgKmFkZHIsIHU4IGlkeCkKIHsKIAlfX2xlMTYgdmFs OwogCiAJdXNiX2NvbnRyb2xfbXNnKHByaXYtPnVkZXYsIHVzYl9yY3ZjdHJs cGlwZShwcml2LT51ZGV2LCAwKSwKIAkJCVJUTDgxODdfUkVRX0dFVF9SRUcs IFJUTDgxODdfUkVRVF9SRUFELAotCQkJKHVuc2lnbmVkIGxvbmcpYWRkciwg MCwgJnZhbCwgc2l6ZW9mKHZhbCksIEhaIC8gMik7CisJCQkodW5zaWduZWQg bG9uZylhZGRyLCBpZHggJiAweDAzLCAmdmFsLAorCQkJc2l6ZW9mKHZhbCks IEhaIC8gMik7CiAKIAlyZXR1cm4gbGUxNl90b19jcHUodmFsKTsKIH0KIAot c3RhdGljIGlubGluZSB1MzIgcnRsODE4eF9pb3JlYWQzMihzdHJ1Y3QgcnRs ODE4N19wcml2ICpwcml2LCBfX2xlMzIgKmFkZHIpCitzdGF0aWMgaW5saW5l IHUxNiBydGw4MTh4X2lvcmVhZDE2KHN0cnVjdCBydGw4MTg3X3ByaXYgKnBy aXYsIF9fbGUxNiAqYWRkcikKK3sKKwlyZXR1cm4gcnRsODE4eF9pb3JlYWQx Nl9pZHgocHJpdiwgYWRkciwgMCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdTMy IHJ0bDgxOHhfaW9yZWFkMzJfaWR4KHN0cnVjdCBydGw4MTg3X3ByaXYgKnBy aXYsCisJCQkJICAgICAgIF9fbGUzMiAqYWRkciwgdTggaWR4KQogewogCV9f bGUzMiB2YWw7CiAKIAl1c2JfY29udHJvbF9tc2cocHJpdi0+dWRldiwgdXNi X3JjdmN0cmxwaXBlKHByaXYtPnVkZXYsIDApLAogCQkJUlRMODE4N19SRVFf R0VUX1JFRywgUlRMODE4N19SRVFUX1JFQUQsCi0JCQkodW5zaWduZWQgbG9u ZylhZGRyLCAwLCAmdmFsLCBzaXplb2YodmFsKSwgSFogLyAyKTsKKwkJCSh1 bnNpZ25lZCBsb25nKWFkZHIsIGlkeCAmIDB4MDMsICZ2YWwsCisJCQlzaXpl b2YodmFsKSwgSFogLyAyKTsKIAogCXJldHVybiBsZTMyX3RvX2NwdSh2YWwp OwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgcnRsODE4eF9pb3dyaXRlOChz dHJ1Y3QgcnRsODE4N19wcml2ICpwcml2LAotCQkJCSAgICB1OCAqYWRkciwg dTggdmFsKQorc3RhdGljIGlubGluZSB1MzIgcnRsODE4eF9pb3JlYWQzMihz dHJ1Y3QgcnRsODE4N19wcml2ICpwcml2LCBfX2xlMzIgKmFkZHIpCit7CisJ cmV0dXJuIHJ0bDgxOHhfaW9yZWFkMzJfaWR4KHByaXYsIGFkZHIsIDApOwor fQorCitzdGF0aWMgaW5saW5lIHZvaWQgcnRsODE4eF9pb3dyaXRlOF9pZHgo c3RydWN0IHJ0bDgxODdfcHJpdiAqcHJpdiwKKwkJCQkJdTggKmFkZHIsIHU4 IHZhbCwgdTggaWR4KQogewogCXVzYl9jb250cm9sX21zZyhwcml2LT51ZGV2 LCB1c2Jfc25kY3RybHBpcGUocHJpdi0+dWRldiwgMCksCiAJCQlSVEw4MTg3 X1JFUV9TRVRfUkVHLCBSVEw4MTg3X1JFUVRfV1JJVEUsCi0JCQkodW5zaWdu ZWQgbG9uZylhZGRyLCAwLCAmdmFsLCBzaXplb2YodmFsKSwgSFogLyAyKTsK KwkJCSh1bnNpZ25lZCBsb25nKWFkZHIsIGlkeCAmIDB4MDMsICZ2YWwsCisJ CQlzaXplb2YodmFsKSwgSFogLyAyKTsKIH0KIAotc3RhdGljIGlubGluZSB2 b2lkIHJ0bDgxOHhfaW93cml0ZTE2KHN0cnVjdCBydGw4MTg3X3ByaXYgKnBy aXYsCi0JCQkJICAgICBfX2xlMTYgKmFkZHIsIHUxNiB2YWwpCitzdGF0aWMg aW5saW5lIHZvaWQgcnRsODE4eF9pb3dyaXRlOChzdHJ1Y3QgcnRsODE4N19w cml2ICpwcml2LCB1OCAqYWRkciwgdTggdmFsKQoreworCXJ0bDgxOHhfaW93 cml0ZThfaWR4KHByaXYsIGFkZHIsIHZhbCwgMCk7Cit9CisKK3N0YXRpYyBp bmxpbmUgdm9pZCBydGw4MTh4X2lvd3JpdGUxNl9pZHgoc3RydWN0IHJ0bDgx ODdfcHJpdiAqcHJpdiwKKwkJCQkJIF9fbGUxNiAqYWRkciwgdTE2IHZhbCwg dTggaWR4KQogewogCV9fbGUxNiBidWYgPSBjcHVfdG9fbGUxNih2YWwpOwog CiAJdXNiX2NvbnRyb2xfbXNnKHByaXYtPnVkZXYsIHVzYl9zbmRjdHJscGlw ZShwcml2LT51ZGV2LCAwKSwKIAkJCVJUTDgxODdfUkVRX1NFVF9SRUcsIFJU TDgxODdfUkVRVF9XUklURSwKLQkJCSh1bnNpZ25lZCBsb25nKWFkZHIsIDAs ICZidWYsIHNpemVvZihidWYpLCBIWiAvIDIpOworCQkJKHVuc2lnbmVkIGxv bmcpYWRkciwgaWR4ICYgMHgwMywgJmJ1Ziwgc2l6ZW9mKGJ1ZiksCisJCQlI WiAvIDIpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgcnRsODE4eF9pb3dy aXRlMTYoc3RydWN0IHJ0bDgxODdfcHJpdiAqcHJpdiwgX19sZTE2ICphZGRy LAorCQkJCSAgICAgdTE2IHZhbCkKK3sKKwlydGw4MTh4X2lvd3JpdGUxNl9p ZHgocHJpdiwgYWRkciwgdmFsLCAwKTsKIH0KIAotc3RhdGljIGlubGluZSB2 b2lkIHJ0bDgxOHhfaW93cml0ZTMyKHN0cnVjdCBydGw4MTg3X3ByaXYgKnBy aXYsCi0JCQkJICAgICBfX2xlMzIgKmFkZHIsIHUzMiB2YWwpCitzdGF0aWMg aW5saW5lIHZvaWQgcnRsODE4eF9pb3dyaXRlMzJfaWR4KHN0cnVjdCBydGw4 MTg3X3ByaXYgKnByaXYsCisJCQkJCSBfX2xlMzIgKmFkZHIsIHUzMiB2YWws IHU4IGlkeCkKIHsKIAlfX2xlMzIgYnVmID0gY3B1X3RvX2xlMzIodmFsKTsK IAogCXVzYl9jb250cm9sX21zZyhwcml2LT51ZGV2LCB1c2Jfc25kY3RybHBp cGUocHJpdi0+dWRldiwgMCksCiAJCQlSVEw4MTg3X1JFUV9TRVRfUkVHLCBS VEw4MTg3X1JFUVRfV1JJVEUsCi0JCQkodW5zaWduZWQgbG9uZylhZGRyLCAw LCAmYnVmLCBzaXplb2YoYnVmKSwgSFogLyAyKTsKKwkJCSh1bnNpZ25lZCBs b25nKWFkZHIsIGlkeCAmIDB4MDMsICZidWYsIHNpemVvZihidWYpLAorCQkJ SFogLyAyKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHJ0bDgxOHhfaW93 cml0ZTMyKHN0cnVjdCBydGw4MTg3X3ByaXYgKnByaXYsIF9fbGUzMiAqYWRk ciwKKwkJCQkgICAgIHUzMiB2YWwpCit7CisJcnRsODE4eF9pb3dyaXRlMzJf aWR4KHByaXYsIGFkZHIsIHZhbCwgMCk7CiB9CiAKICNlbmRpZiAvKiBSVEw4 MTg3X0ggKi8KZGlmZiAtcnVCYiAuLi9vcmlnL2NvbXBhdC13aXJlbGVzcy0y MDA4LTA2LTE0L2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bDgxODdfcnRsODIy NS5jIGNvbXBhdC13aXJlbGVzcy0yMDA4LTA2LTE0L2RyaXZlcnMvbmV0L3dp cmVsZXNzL3J0bDgxODdfcnRsODIyNS5jCi0tLSAuLi9vcmlnL2NvbXBhdC13 aXJlbGVzcy0yMDA4LTA2LTE0L2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bDgx ODdfcnRsODIyNS5jCTIwMDgtMDYtMTQgMDU6MTA6NTMuMDAwMDAwMDAwICsw MTAwCisrKyBjb21wYXQtd2lyZWxlc3MtMjAwOC0wNi0xNC9kcml2ZXJzL25l dC93aXJlbGVzcy9ydGw4MTg3X3J0bDgyMjUuYwkyMDA4LTA2LTE0IDIzOjAz OjE2LjAwMDAwMDAwMCArMDEwMApAQCAtNDcxLDEyICs0NzEsNDIgQEAKIAly dGw4MjI1X3dyaXRlX3BoeV9jY2soZGV2LCAweDQxLCBydGw4MjI1X3RocmVz aG9sZFsyXSk7CiB9CiAKK3N0YXRpYyBjb25zdCB1OCBydGw4MjI1ejJfYWdj W10gPSB7CisJMHg1ZSwgMHg1ZSwgMHg1ZSwgMHg1ZSwgMHg1ZCwgMHg1Yiwg MHg1OSwgMHg1NywgMHg1NSwgMHg1MywgMHg1MSwgMHg0ZiwKKwkweDRkLCAw eDRiLCAweDQ5LCAweDQ3LCAweDQ1LCAweDQzLCAweDQxLCAweDNmLCAweDNk LCAweDNiLCAweDM5LCAweDM3LAorCTB4MzUsIDB4MzMsIDB4MzEsIDB4MmYs IDB4MmQsIDB4MmIsIDB4MjksIDB4MjcsIDB4MjUsIDB4MjMsIDB4MjEsIDB4 MWYsCisJMHgxZCwgMHgxYiwgMHgxOSwgMHgxNywgMHgxNSwgMHgxMywgMHgx MSwgMHgwZiwgMHgwZCwgMHgwYiwgMHgwOSwgMHgwNywKKwkweDA1LCAweDAz LCAweDAxLCAweDAxLCAweDAxLCAweDAxLCAweDAxLCAweDAxLCAweDAxLCAw eDAxLCAweDAxLCAweDAxLAorCTB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4 MTksIDB4MTksIDB4MTksIDB4MTksIDB4MTksIDB4MTksIDB4MTksIDB4MTks CisJMHgxOSwgMHgyMCwgMHgyMSwgMHgyMiwgMHgyMywgMHgyNCwgMHgyNSwg MHgyNiwgMHgyNiwgMHgyNywgMHgyNywgMHgyOCwKKwkweDI4LCAweDI5LCAw eDJhLCAweDJhLCAweDJhLCAweDJiLCAweDJiLCAweDJiLCAweDJjLCAweDJj LCAweDJjLCAweDJkLAorCTB4MmQsIDB4MmQsIDB4MmQsIDB4MmUsIDB4MmUs IDB4MmUsIDB4MmUsIDB4MmYsIDB4MmYsIDB4MmYsIDB4MzAsIDB4MzAsCisJ MHgzMSwgMHgzMSwgMHgzMSwgMHgzMSwgMHgzMSwgMHgzMSwgMHgzMSwgMHgz MSwgMHgzMSwgMHgzMSwgMHgzMSwgMHgzMSwKKwkweDMxLCAweDMxLCAweDMx LCAweDMxLCAweDMxLCAweDMxLCAweDMxLCAweDMxCit9Oworc3RhdGljIGNv bnN0IHU4IHJ0bDgyMjV6Ml9vZmRtW10gPSB7CisJMHgxMCwgMHgwZCwgMHgw MSwgMHgwMCwgMHgxNCwgMHhmYiwgMHhmYiwgMHg2MCwKKwkweDAwLCAweDYw LCAweDAwLCAweDAwLCAweDAwLCAweDVjLCAweDAwLCAweDAwLAorCTB4NDAs IDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YTgsIDB4MjYsCisJ MHgzMiwgMHgzMywgMHgwNywgMHhhNSwgMHg2ZiwgMHg1NSwgMHhjOCwgMHhi MywKKwkweDBhLCAweGUxLCAweDJDLCAweDhhLCAweDg2LCAweDgzLCAweDM0 LCAweDBmLAorCTB4NGYsIDB4MjQsIDB4NmYsIDB4YzIsIDB4NmIsIDB4NDAs IDB4ODAsIDB4MDAsCisJMHhjMCwgMHhjMSwgMHg1OCwgMHhmMSwgMHgwMCwg MHhlNCwgMHg5MCwgMHgzZSwKKwkweDZkLCAweDNjLCAweGZiLCAweDA3Cit9 OworCiBzdGF0aWMgY29uc3QgdTggcnRsODIyNXoyX3R4X3Bvd2VyX2Nja19j aDE0W10gPSB7Ci0JMHgzNiwgMHgzNSwgMHgyZSwgMHgxYiwgMHgwMCwgMHgw MCwgMHgwMCwgMHgwMAorCTB4MzYsIDB4MzUsIDB4MmUsIDB4MWIsIDB4MDAs IDB4MDAsIDB4MDAsIDB4MDAsCisJMHgzMCwgMHgyZiwgMHgyOSwgMHgxNSwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkweDMwLCAweDJmLCAweDI5LCAw eDE1LCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCTB4MzAsIDB4MmYsIDB4 MjksIDB4MTUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAKIH07CiAKIHN0YXRp YyBjb25zdCB1OCBydGw4MjI1ejJfdHhfcG93ZXJfY2NrW10gPSB7Ci0JMHgz NiwgMHgzNSwgMHgyZSwgMHgyNSwgMHgxYywgMHgxMiwgMHgwOSwgMHgwNAor CTB4MzYsIDB4MzUsIDB4MmUsIDB4MjUsIDB4MWMsIDB4MTIsIDB4MDksIDB4 MDQsCisJMHgzMCwgMHgyZiwgMHgyOSwgMHgyMSwgMHgxOSwgMHgxMCwgMHgw OCwgMHgwMywKKwkweDJiLCAweDJhLCAweDI1LCAweDFlLCAweDE2LCAweDBl LCAweDA3LCAweDAzLAorCTB4MjYsIDB4MjUsIDB4MjEsIDB4MWIsIDB4MTQs IDB4MGQsIDB4MDYsIDB4MDMKIH07CiAKIHN0YXRpYyBjb25zdCB1OCBydGw4 MjI1ejJfdHhfcG93ZXJfb2ZkbVtdID0gewpAQCAtNTQyLDYgKzU3Miw4NSBA QAogCW1zbGVlcCgxKTsKIH0KIAorc3RhdGljIHZvaWQgcnRsODIyNXoyX2Jf cmZfc2V0X3R4X3Bvd2VyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgaW50 IGNoYW5uZWwpCit7CisJc3RydWN0IHJ0bDgxODdfcHJpdiAqcHJpdiA9IGRl di0+cHJpdjsKKwl1OCBjY2tfcG93ZXIsIG9mZG1fcG93ZXI7CisJY29uc3Qg dTggKnRtcDsKKwlpbnQgaTsKKworCWNja19wb3dlciA9IHByaXYtPmNoYW5u ZWxzW2NoYW5uZWwgLSAxXS5od192YWx1ZSAmIDB4RjsKKwlvZmRtX3Bvd2Vy ID0gcHJpdi0+Y2hhbm5lbHNbY2hhbm5lbCAtIDFdLmh3X3ZhbHVlID4+IDQ7 CisKKwlpZiAoY2NrX3Bvd2VyID4gMTUpCisJCWNja19wb3dlciA9IChwcml2 LT5od19yZXYgPT0gUlRMODE4N0J2QikgPyAxNSA6IDIyOworCWVsc2UKKwkJ Y2NrX3Bvd2VyICs9IChwcml2LT5od19yZXYgPT0gUlRMODE4N0J2QikgPyAw IDogNzsKKwljY2tfcG93ZXIgKz0gcHJpdi0+dHhwd3JfYmFzZSAmIDB4RjsK KwljY2tfcG93ZXIgPSBtaW4oY2NrX3Bvd2VyLCAodTgpMzUpOworCisJaWYg KG9mZG1fcG93ZXIgPiAxNSkKKwkJb2ZkbV9wb3dlciA9IChwcml2LT5od19y ZXYgPT0gUlRMODE4N0J2QikgPyAxNyA6IDI1OworCWVsc2UKKwkJb2ZkbV9w b3dlciArPSAocHJpdi0+aHdfcmV2ID09IFJUTDgxODdCdkIpID8gMiA6IDEw OworCW9mZG1fcG93ZXIgKz0gKHByaXYtPnR4cHdyX2Jhc2UgPj4gNCkgJiAw eEY7CisJb2ZkbV9wb3dlciA9IG1pbihvZmRtX3Bvd2VyLCAodTgpMzUpOwor CisJaWYgKGNoYW5uZWwgPT0gMTQpCisJCXRtcCA9IHJ0bDgyMjV6Ml90eF9w b3dlcl9jY2tfY2gxNDsKKwllbHNlCisJCXRtcCA9IHJ0bDgyMjV6Ml90eF9w b3dlcl9jY2s7CisKKwlpZiAocHJpdi0+aHdfcmV2ID09IFJUTDgxODdCdkIp IHsKKwkJaWYgKGNja19wb3dlciA8PSA2KQorCQkJOyAvKiBkbyBub3RoaW5n ICovCisJCWVsc2UgaWYgKGNja19wb3dlciA8PSAxMSkKKwkJCXRtcCArPSA4 OworCQllbHNlCisJCQl0bXAgKz0gMTY7CisJfSBlbHNlIHsKKwkJaWYgKGNj a19wb3dlciA8PSA1KQorCQkJOyAvKiBkbyBub3RoaW5nICovCisJCWVsc2Ug aWYgKGNja19wb3dlciA8PSAxMSkKKwkJCXRtcCArPSA4OworCQllbHNlIGlm IChjY2tfcG93ZXIgPD0gMTcpCisJCQl0bXAgKz0gMTY7CisJCWVsc2UKKwkJ CXRtcCArPSAyNDsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKQor CQlydGw4MjI1X3dyaXRlX3BoeV9jY2soZGV2LCAweDQ0ICsgaSwgKnRtcCsr KTsKKworCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgJnByaXYtPm1hcC0+VFhf R0FJTl9DQ0ssCisJCQkgcnRsODIyNXoyX3R4X2dhaW5fY2NrX29mZG1bY2Nr X3Bvd2VyXSk7CisJbXNsZWVwKDEpOworCisJcnRsODE4eF9pb3dyaXRlOChw cml2LCAmcHJpdi0+bWFwLT5UWF9HQUlOX09GRE0sCisJCQkgcnRsODIyNXoy X3R4X2dhaW5fY2NrX29mZG1bb2ZkbV9wb3dlcl0gPDwgMSk7CisJaWYgKHBy aXYtPmh3X3JldiA9PSBSVEw4MTg3QnZCKSB7CisJCWlmIChvZmRtX3Bvd2Vy IDw9IDExKSB7CisJCQlydGw4MjI1X3dyaXRlX3BoeV9vZmRtKGRldiwgMHg4 NywgMHg2MCk7CisJCQlydGw4MjI1X3dyaXRlX3BoeV9vZmRtKGRldiwgMHg4 OSwgMHg2MCk7CisJCX0gZWxzZSB7CisJCQlydGw4MjI1X3dyaXRlX3BoeV9v ZmRtKGRldiwgMHg4NywgMHg1Yyk7CisJCQlydGw4MjI1X3dyaXRlX3BoeV9v ZmRtKGRldiwgMHg4OSwgMHg1Yyk7CisJCX0KKwl9IGVsc2UgeworCQlpZiAo b2ZkbV9wb3dlciA8PSAxMSkgeworCQkJcnRsODIyNV93cml0ZV9waHlfb2Zk bShkZXYsIDB4ODcsIDB4NWMpOworCQkJcnRsODIyNV93cml0ZV9waHlfb2Zk bShkZXYsIDB4ODksIDB4NWMpOworCQl9IGVsc2UgaWYgKG9mZG1fcG93ZXIg PD0gMTcpIHsKKwkJCXJ0bDgyMjVfd3JpdGVfcGh5X29mZG0oZGV2LCAweDg3 LCAweDU0KTsKKwkJCXJ0bDgyMjVfd3JpdGVfcGh5X29mZG0oZGV2LCAweDg5 LCAweDU0KTsKKwkJfSBlbHNlIHsKKwkJCXJ0bDgyMjVfd3JpdGVfcGh5X29m ZG0oZGV2LCAweDg3LCAweDUwKTsKKwkJCXJ0bDgyMjVfd3JpdGVfcGh5X29m ZG0oZGV2LCAweDg5LCAweDUwKTsKKwkJfQorCX0KKwltc2xlZXAoMSk7Cit9 CisKIHN0YXRpYyBjb25zdCB1MTYgcnRsODIyNXoyX3J4Z2FpbltdID0gewog CTB4MDQwMCwgMHgwNDAxLCAweDA0MDIsIDB4MDQwMywgMHgwNDA0LCAweDA0 MDUsIDB4MDQwOCwgMHgwNDA5LAogCTB4MDQwYSwgMHgwNDBiLCAweDA1MDIs IDB4MDUwMywgMHgwNTA0LCAweDA1MDUsIDB4MDU0MCwgMHgwNTQxLApAQCAt NzE1LDYgKzgyNCw4MSBAQAogCXJ0bDgxOHhfaW93cml0ZTMyKHByaXYsIChf X2xlMzIgKikweEZGOTQsIDB4M2RjMDAwMDIpOwogfQogCitzdGF0aWMgdm9p ZCBydGw4MjI1ejJfYl9yZl9pbml0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmRl dikKK3sKKwlzdHJ1Y3QgcnRsODE4N19wcml2ICpwcml2ID0gZGV2LT5wcml2 OworCWludCBpOworCisJcnRsODIyNV93cml0ZShkZXYsIDB4MCwgMHgwQjcp OyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShkZXYsIDB4MSwgMHhFRTAp OyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShkZXYsIDB4MiwgMHg0NEQp OyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShkZXYsIDB4MywgMHg0NDEp OyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShkZXYsIDB4NCwgMHg4QzMp OyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShkZXYsIDB4NSwgMHhDNzIp OyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShkZXYsIDB4NiwgMHgwRTYp OyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShkZXYsIDB4NywgMHg4MkEp OyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShkZXYsIDB4OCwgMHgwM0Yp OyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShkZXYsIDB4OSwgMHgzMzUp OyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShkZXYsIDB4YSwgMHg5RDQp OyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShkZXYsIDB4YiwgMHg3QkIp OyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShkZXYsIDB4YywgMHg4NTAp OyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShkZXYsIDB4ZCwgMHhDREYp OyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShkZXYsIDB4ZSwgMHgwMkIp OyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShkZXYsIDB4ZiwgMHgxMTQp OyBtc2xlZXAoMSk7CisKKwlydGw4MjI1X3dyaXRlKGRldiwgMHgwLCAweDFC Nyk7IG1zbGVlcCgxKTsKKworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpF KHJ0bDgyMjV6Ml9yeGdhaW4pOyBpKyspIHsKKwkJcnRsODIyNV93cml0ZShk ZXYsIDB4MSwgaSArIDEpOyBtc2xlZXAoMSk7CisJCXJ0bDgyMjVfd3JpdGUo ZGV2LCAweDIsIHJ0bDgyMjV6Ml9yeGdhaW5baV0pOyBtc2xlZXAoMSk7CisJ fQorCisJcnRsODIyNV93cml0ZShkZXYsIDB4MywgMHgwODApOyBtc2xlZXAo MSk7CisJcnRsODIyNV93cml0ZShkZXYsIDB4NSwgMHgwMDQpOyBtc2xlZXAo MSk7CisJcnRsODIyNV93cml0ZShkZXYsIDB4MCwgMHgwQjcpOyBtc2xlZXAo MSk7CisJbXNsZWVwKDMwMDApOworCisJcnRsODIyNV93cml0ZShkZXYsIDB4 MiwgMHhDNEQpOyBtc2xlZXAoMSk7CisJbXNsZWVwKDIwMDApOworCisJcnRs ODIyNV93cml0ZShkZXYsIDB4MiwgMHg0NEQpOyBtc2xlZXAoMSk7CisJcnRs ODIyNV93cml0ZShkZXYsIDB4MCwgMHgyQkYpOyBtc2xlZXAoMSk7CisKKwly dGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPlRYX0dBSU5fQ0NL LCAweDAzKTsKKwlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAt PlRYX0dBSU5fT0ZETSwgMHgwNyk7CisJcnRsODE4eF9pb3dyaXRlOChwcml2 LCAmcHJpdi0+bWFwLT5UWF9BTlRFTk5BLCAweDAzKTsKKworCXJ0bDgyMjVf d3JpdGVfcGh5X29mZG0oZGV2LCAweDgwLCAweDEyKTsKKwlmb3IgKGkgPSAw OyBpIDwgQVJSQVlfU0laRShydGw4MjI1ejJfYWdjKTsgaSsrKSB7CisJCXJ0 bDgyMjVfd3JpdGVfcGh5X29mZG0oZGV2LCAweEYsIHJ0bDgyMjV6Ml9hZ2Nb aV0pOworCQlydGw4MjI1X3dyaXRlX3BoeV9vZmRtKGRldiwgMHhFLCAweDgw ICsgaSk7CisJCXJ0bDgyMjVfd3JpdGVfcGh5X29mZG0oZGV2LCAweEUsIDAp OworCX0KKwlydGw4MjI1X3dyaXRlX3BoeV9vZmRtKGRldiwgMHg4MCwgMHgx MCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShydGw4MjI1ejJf b2ZkbSk7IGkrKykKKwkJcnRsODIyNV93cml0ZV9waHlfb2ZkbShkZXYsIGks IHJ0bDgyMjV6Ml9vZmRtW2ldKTsKKworCXJ0bDgxOHhfaW93cml0ZTgocHJp diwgJnByaXYtPm1hcC0+U0lGUywgMHgyMik7CisJcnRsODE4eF9pb3dyaXRl OChwcml2LCAmcHJpdi0+bWFwLT5TTE9ULCA5KTsKKwlydGw4MTh4X2lvd3Jp dGU4KHByaXYsICh1OCAqKTB4RkZGMCwgMjgpOworCXJ0bDgxOHhfaW93cml0 ZTgocHJpdiwgKHU4ICopMHhGRkY0LCAyOCk7CisJcnRsODE4eF9pb3dyaXRl OChwcml2LCAodTggKikweEZGRjgsIDI4KTsKKwlydGw4MTh4X2lvd3JpdGU4 KHByaXYsICh1OCAqKTB4RkZGQywgMjgpOworCXJ0bDgxOHhfaW93cml0ZTgo cHJpdiwgKHU4ICopMHhGRjJELCAweDVCKTsKKwlydGw4MTh4X2lvd3JpdGU4 KHByaXYsICh1OCAqKTB4RkY3OSwgMHg1Qik7CisJcnRsODE4eF9pb3dyaXRl MzIocHJpdiwgKF9fbGUzMiAqKTB4RkZGMCwgKDcgPDwgMTIpIHwgKDMgPDwg OCkgfCAyOCk7CisJcnRsODE4eF9pb3dyaXRlMzIocHJpdiwgKF9fbGUzMiAq KTB4RkZGNCwgKDcgPDwgMTIpIHwgKDMgPDwgOCkgfCAyOCk7CisJcnRsODE4 eF9pb3dyaXRlMzIocHJpdiwgKF9fbGUzMiAqKTB4RkZGOCwgKDcgPDwgMTIp IHwgKDMgPDwgOCkgfCAyOCk7CisJcnRsODE4eF9pb3dyaXRlMzIocHJpdiwg KF9fbGUzMiAqKTB4RkZGQywgKDcgPDwgMTIpIHwgKDMgPDwgOCkgfCAyOCk7 CisJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5BQ01fQ09O VFJPTCwgMCk7CisKKwlydGw4MjI1X3dyaXRlX3BoeV9vZmRtKGRldiwgMHg5 NywgMHg0Nik7IG1zbGVlcCgxKTsKKwlydGw4MjI1X3dyaXRlX3BoeV9vZmRt KGRldiwgMHhhNCwgMHhiNik7IG1zbGVlcCgxKTsKKwlydGw4MjI1X3dyaXRl X3BoeV9vZmRtKGRldiwgMHg4NSwgMHhmYyk7IG1zbGVlcCgxKTsKKwlydGw4 MjI1X3dyaXRlX3BoeV9jY2soZGV2LCAweGMxLCAweDg4KTsgbXNsZWVwKDEp OworfQorCiBzdGF0aWMgdm9pZCBydGw4MjI1X3JmX3N0b3Aoc3RydWN0IGll ZWU4MDIxMV9odyAqZGV2KQogewogCXU4IHJlZzsKQEAgLTczMSw2ICs5MTUs MjggQEAKIAlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPkVF UFJPTV9DTUQsIFJUTDgxOFhfRUVQUk9NX0NNRF9OT1JNQUwpOwogfQogCitp bnQgcnRsODE4N19nZXRfcmFkaW9fcmVnaXN0ZXJzKGNoYXIgKnBhZ2UsIGNo YXIgKipzdGFydCwgb2ZmX3Qgb2Zmc2V0LAorCQkJCWludCBjb3VudCwgaW50 ICplb2YsIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGllZWU4MDIxMV9odyAq ZGV2ID0gZGF0YTsKKwlzdGF0aWMgdW5zaWduZWQgaW50IHJlZ19wb3M7CisJ aW50IGxlbiA9IDA7CisKKwl3aGlsZSAocmVnX3BvcyA8PSAweEZGKSB7CisJ CWlmIChsZW4gKyAxMSA+IGNvdW50KQorCQkJYnJlYWs7CisJCWxlbiArPSBz bnByaW50ZihwYWdlICsgb2Zmc2V0ICsgbGVuLCBjb3VudCAtIGxlbiwKKwkJ CQkiMHglMDJ4OiAlMDR4XG4iLCByZWdfcG9zLAorCQkJCXJ0bDgyMjVfcmVh ZChkZXYsICh1OClyZWdfcG9zKSk7CisJCXJlZ19wb3MrKzsKKwl9CisJaWYg KHJlZ19wb3MgPiAweEZGKSB7CisJCXJlZ19wb3MgPSAwOworCQkqZW9mID0g MTsKKwl9CisJcmV0dXJuIGxlbjsKK30KKwogc3RhdGljIHZvaWQgcnRsODIy NV9yZl9zZXRfY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsCiAJ CQkJICAgc3RydWN0IGllZWU4MDIxMV9jb25mICpjb25mKQogewpAQCAtNzM5 LDggKzk0NSwxMCBAQAogCiAJaWYgKHByaXYtPnJmLT5pbml0ID09IHJ0bDgy MjVfcmZfaW5pdCkKIAkJcnRsODIyNV9yZl9zZXRfdHhfcG93ZXIoZGV2LCBj aGFuKTsKLQllbHNlCisJZWxzZSBpZiAocHJpdi0+cmYtPmluaXQgPT0gcnRs ODIyNXoyX3JmX2luaXQpCiAJCXJ0bDgyMjV6Ml9yZl9zZXRfdHhfcG93ZXIo ZGV2LCBjaGFuKTsKKwllbHNlCisJCXJ0bDgyMjV6Ml9iX3JmX3NldF90eF9w b3dlcihkZXYsIGNoYW4pOwogCiAJcnRsODIyNV93cml0ZShkZXYsIDB4Nywg cnRsODIyNV9jaGFuW2NoYW4gLSAxXSk7CiAJbXNsZWVwKDEwKTsKQEAgLTc2 MCwxMCArOTY4LDE5IEBACiAJLnNldF9jaGFuCT0gcnRsODIyNV9yZl9zZXRf Y2hhbm5lbAogfTsKIAorc3RhdGljIGNvbnN0IHN0cnVjdCBydGw4MTh4X3Jm X29wcyBydGw4MjI1ejJfYl9vcHMgPSB7CisJLm5hbWUJCT0gInJ0bDgyMjV6 MiIsCisJLmluaXQJCT0gcnRsODIyNXoyX2JfcmZfaW5pdCwKKwkuc3RvcAkJ PSBydGw4MjI1X3JmX3N0b3AsCisJLnNldF9jaGFuCT0gcnRsODIyNV9yZl9z ZXRfY2hhbm5lbAorfTsKKwogY29uc3Qgc3RydWN0IHJ0bDgxOHhfcmZfb3Bz ICogcnRsODE4N19kZXRlY3RfcmYoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2 KQogewogCXUxNiByZWc4LCByZWc5OworCXN0cnVjdCBydGw4MTg3X3ByaXYg KnByaXYgPSBkZXYtPnByaXY7CiAKKwlpZiAoIXByaXYtPmlzX3J0bDgxODdi KSB7CiAJcnRsODIyNV93cml0ZShkZXYsIDAsIDB4MUI3KTsKIAogCXJlZzgg PSBydGw4MjI1X3JlYWQoZGV2LCA4KTsKQEAgLTc3NSw0ICs5OTIsNiBAQAog CQlyZXR1cm4gJnJ0bDgyMjVfb3BzOwogCiAJcmV0dXJuICZydGw4MjI1ejJf b3BzOworCX0gZWxzZQorCQlyZXR1cm4gJnJ0bDgyMjV6Ml9iX29wczsKIH0K ZGlmZiAtcnVCYiAuLi9vcmlnL2NvbXBhdC13aXJlbGVzcy0yMDA4LTA2LTE0 L2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bDgxODdfcnRsODIyNS5oIGNvbXBh dC13aXJlbGVzcy0yMDA4LTA2LTE0L2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0 bDgxODdfcnRsODIyNS5oCi0tLSAuLi9vcmlnL2NvbXBhdC13aXJlbGVzcy0y MDA4LTA2LTE0L2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bDgxODdfcnRsODIy NS5oCTIwMDgtMDYtMTQgMDU6MTA6NTMuMDAwMDAwMDAwICswMTAwCisrKyBj b21wYXQtd2lyZWxlc3MtMjAwOC0wNi0xNC9kcml2ZXJzL25ldC93aXJlbGVz cy9ydGw4MTg3X3J0bDgyMjUuaAkyMDA4LTA2LTE0IDIzOjAzOjE2LjAwMDAw MDAwMCArMDEwMApAQCAtMzQsNCArMzQsNyBAQAogCXJ0bDgxODdfd3JpdGVf cGh5KGRldiwgYWRkciwgZGF0YSB8IDB4MTAwMDApOwogfQogCitpbnQgcnRs ODE4N19nZXRfcmFkaW9fcmVnaXN0ZXJzKGNoYXIgKnBhZ2UsIGNoYXIgKipz dGFydCwgb2ZmX3Qgb2Zmc2V0LAorCQkJCWludCBjb3VudCwgaW50ICplb2Ys IHZvaWQgKmRhdGEpOworCiAjZW5kaWYgLyogUlRMODE4N19SVEw4MjI1X0gg Ki8KZGlmZiAtcnVCYiAuLi9vcmlnL2NvbXBhdC13aXJlbGVzcy0yMDA4LTA2 LTE0L2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bDgxOHguaCBjb21wYXQtd2ly ZWxlc3MtMjAwOC0wNi0xNC9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGw4MTh4 LmgKLS0tIC4uL29yaWcvY29tcGF0LXdpcmVsZXNzLTIwMDgtMDYtMTQvZHJp dmVycy9uZXQvd2lyZWxlc3MvcnRsODE4eC5oCTIwMDgtMDYtMTQgMDU6MTA6 NTMuMDAwMDAwMDAwICswMTAwCisrKyBjb21wYXQtd2lyZWxlc3MtMjAwOC0w Ni0xNC9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGw4MTh4LmgJMjAwOC0wNi0x NCAyMzowMzoxNi4wMDAwMDAwMDAgKzAxMDAKQEAgLTY2LDcgKzY2LDEwIEBA CiAjZGVmaW5lIFJUTDgxOFhfVFhfQ09ORl9SODE4MF9GCQkoMyA8PCAyNSkK ICNkZWZpbmUgUlRMODE4WF9UWF9DT05GX1I4MTg1X0FCQwkoNCA8PCAyNSkK ICNkZWZpbmUgUlRMODE4WF9UWF9DT05GX1I4MTg1X0QJCSg1IDw8IDI1KQor I2RlZmluZSBSVEw4MThYX1RYX0NPTkZfUjgxODd2RF8xCSg1IDw8IDI1KQor I2RlZmluZSBSVEw4MThYX1RYX0NPTkZfUjgxODd2RF8yCSg2IDw8IDI1KQog I2RlZmluZSBSVEw4MThYX1RYX0NPTkZfSFdWRVJfTUFTSwkoNyA8PCAyNSkK KyNkZWZpbmUgUlRMODE4WF9UWF9DT05GX0RJU1JFUVFTSVpFCSgxIDw8IDI4 KQogI2RlZmluZSBSVEw4MThYX1RYX0NPTkZfUFJPQkVfRFRTCSgxIDw8IDI5 KQogI2RlZmluZSBSVEw4MThYX1RYX0NPTkZfSFdfU0VRTlVNCSgxIDw8IDMw KQogI2RlZmluZSBSVEw4MThYX1RYX0NPTkZfQ1dfTUlOCQkoMSA8PCAzMSkK QEAgLTEwNiw4ICsxMDksMTEgQEAKICNkZWZpbmUgUlRMODE4WF9NU1JfTk9f TElOSwkJKDAgPDwgMikKICNkZWZpbmUgUlRMODE4WF9NU1JfQURIT0MJCSgx IDw8IDIpCiAjZGVmaW5lIFJUTDgxOFhfTVNSX0lORlJBCQkoMiA8PCAyKQor I2RlZmluZSBSVEw4MThYX01TUl9NQVNURVIJCSgzIDw8IDIpCisjZGVmaW5l IFJUTDgxOFhfTVNSX0VORURDQQkJKDQgPDwgMikKIAl1OAlDT05GSUczOwog I2RlZmluZSBSVEw4MThYX0NPTkZJRzNfQU5BUEFSQU1fV1JJVEUJKDEgPDwg NikKKyNkZWZpbmUgUlRMODE4WF9DT05GSUczX0dOVF9TRUxFQ1QJKDEgPDwg NykKIAl1OAlDT05GSUc0OwogI2RlZmluZSBSVEw4MThYX0NPTkZJRzRfUE9X RVJPRkYJKDEgPDwgNikKICNkZWZpbmUgUlRMODE4WF9DT05GSUc0X1ZDT09G RgkJKDEgPDwgNykKQEAgLTEzMyw3ICsxMzksOSBAQAogCV9fbGUzMglSRl9U SU1JTkc7CiAJdTgJR1BfRU5BQkxFOwogCXU4CUdQSU87Ci0JdTgJcmVzZXJ2 ZWRfMTJbMTBdOworCXU4CXJlc2VydmVkXzEyWzJdOworCV9fbGUzMglIU1NJ X1BBUkE7CisJdTgJcmVzZXJ2ZWRfMTNbNF07CiAJdTgJVFhfQUdDX0NUTDsK ICNkZWZpbmUgUlRMODE4WF9UWF9BR0NfQ1RMX1BFUlBBQ0tFVF9HQUlOX1NI SUZUCQkoMSA8PCAwKQogI2RlZmluZSBSVEw4MThYX1RYX0FHQ19DVExfUEVS UEFDS0VUX0FOVFNFTF9TSElGVAkoMSA8PCAxKQpAQCAtMTQxLDI5ICsxNDks MzggQEAKIAl1OAlUWF9HQUlOX0NDSzsKIAl1OAlUWF9HQUlOX09GRE07CiAJ dTgJVFhfQU5URU5OQTsKLQl1OAlyZXNlcnZlZF8xM1sxNl07CisJdTgJcmVz ZXJ2ZWRfMTRbMTZdOwogCXU4CVdQQV9DT05GOwotCXU4CXJlc2VydmVkXzE0 WzNdOworCXU4CXJlc2VydmVkXzE1WzNdOwogCXU4CVNJRlM7CiAJdTgJRElG UzsKIAl1OAlTTE9UOwotCXU4CXJlc2VydmVkXzE1WzVdOworCXU4CXJlc2Vy dmVkXzE2WzVdOwogCXU4CUNXX0NPTkY7CiAjZGVmaW5lIFJUTDgxOFhfQ1df Q09ORl9QRVJQQUNLRVRfQ1dfU0hJRlQJKDEgPDwgMCkKICNkZWZpbmUgUlRM ODE4WF9DV19DT05GX1BFUlBBQ0tFVF9SRVRSWV9TSElGVAkoMSA8PCAxKQog CXU4CUNXX1ZBTDsKIAl1OAlSQVRFX0ZBTExCQUNLOwotCXU4CXJlc2VydmVk XzE2WzI1XTsKKyNkZWZpbmUgUlRMODE4WF9SQVRFX0ZBTExCQUNLX0VOQUJM RQkoMSA8PCA3KQorCXU4CUFDTV9DT05UUk9MOworCXU4CXJlc2VydmVkXzE3 WzI0XTsKIAl1OAlDT05GSUc1OwogCXU4CVRYX0RNQV9QT0xMSU5HOwotCXU4 CXJlc2VydmVkXzE3WzJdOworCXU4CXJlc2VydmVkXzE4WzJdOwogCV9fbGUx NglDV1I7CiAJdTgJUkVUUllfQ1RSOwotCXU4CXJlc2VydmVkXzE4WzVdOwor CXU4CXJlc2VydmVkXzE5WzNdOworCV9fbGUxNglJTlRfTUlHOworI2RlZmlu ZSBSVEw4MThYX1I4MTg3Ql9CCTAKKyNkZWZpbmUgUlRMODE4WF9SODE4N0Jf RAkxCisjZGVmaW5lIFJUTDgxOFhfUjgxODdCX0UJMgogCV9fbGUzMglSRFNB UjsKLQl1OAlyZXNlcnZlZF8xOVsxMl07Ci0JX19sZTE2CUZFTVI7CisJX19s ZTE2CVRJRF9BQ19NQVA7CiAJdTgJcmVzZXJ2ZWRfMjBbNF07CisJdTgJQU5B UEFSQU0zOworCXU4CXJlc2VydmVkXzIxWzVdOworCV9fbGUxNglGRU1SOwor CXU4CXJlc2VydmVkXzIyWzRdOwogCV9fbGUxNglUQUxMWV9DTlQ7CiAJdTgJ VEFMTFlfU0VMOwogfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsK --0-1362908545-1213491594=:32180--