Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1030215AbaGDLK4 (ORCPT ); Fri, 4 Jul 2014 07:10:56 -0400 Received: from relay-s04-hub001.domainlocalhost.com ([74.115.207.100]:41787 "EHLO relay-S04-HUB001.domainlocalhost.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752752AbaGDLKx (ORCPT ); Fri, 4 Jul 2014 07:10:53 -0400 Content-Type: multipart/mixed; boundary="_000_77BC725C9062764F874D79F51E1F1A8F4C90DDF6S04MBX0104s04lo_" From: Dudley Du To: "Dmitry Torokhov (dmitry.torokhov@gmail.com)" CC: Alan Stern , Benson Leung , Patrik Fimml , "Rafael J. Wysocki" , "linux-kernel@vger.kernel.org" , "linux-input@vger.kernel.org" , Dudley Du Subject: [PATCH v3 10/14] input: cyapa: add gen5 trackpad device basic functions support Thread-Topic: [PATCH v3 10/14] input: cyapa: add gen5 trackpad device basic functions support Thread-Index: Ac+XeJuVQM5HlwGTSmifAd5ShcZjVg== Date: Fri, 4 Jul 2014 11:10:51 +0000 Message-ID: <77BC725C9062764F874D79F51E1F1A8F4C90DDF6@S04-MBX01-04.s04.local> Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: <77BC725C9062764F874D79F51E1F1A8F4C90DDF6@S04-MBX01-04.s04.local> x-originating-ip: [10.30.12.145] MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --_000_77BC725C9062764F874D79F51E1F1A8F4C90DDF6S04MBX0104s04lo_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 QmFzZWQgb24gdGhlIGN5YXBhIGNvcmUsIGFkZCB0aGUgZ2VuNSB0cmFja3BhZCBkZXZpY2UncyBi YXNpYyBmdW5jdGlvbnMNCnN1cHBvcnRlZCwgc28gZ2VuNSB0cmFja3BhZCBkZXZpY2UgY2FuIHdv cmsgd2l0aCBrZXJuZWwgaW5wdXQgc3lzdGVtLg0KQW5kIGFsc28gYmFzZWQgb24gdGhlIHN0YXRl IHBhcnNlIGludGVyZmFjZSwgdGhlIGN5YXBhIGRyaXZlciBjYW4NCmF1dG9tYXRpY2FsbHkgZGV0 ZXJtaW5lIHRoZSBhdHRhY2hlZCBpcyBnZW4zIG9yIGdlbjUgcHJvdG9jb2wgdHJhY2twYWQNCmRl dmljZSwgdGhlbiBzZXQgdGhlIGNvcnJlY3QgcHJvdG9jb2wgdG8gd29yayB3aXRoIHRoZSBhdHRh Y2hlZA0KdHJhY2twYWQgZGV2aWNlLg0KVEVTVD10ZXN0IG9uIENocm9tZWJvb2tzLg0KDQpTaWdu ZWQtb2ZmLWJ5OiBEdWRsZXkgRHUgPGR1ZGxAY3lwcmVzcy5jb20+DQotLS0NCiBkcml2ZXJzL2lu cHV0L21vdXNlL01ha2VmaWxlICAgICB8ICAgIDIgKy0NCiBkcml2ZXJzL2lucHV0L21vdXNlL2N5 YXBhLmMgICAgICB8ICAgMjkgKy0NCiBkcml2ZXJzL2lucHV0L21vdXNlL2N5YXBhLmggICAgICB8 ICAgIDEgKw0KIGRyaXZlcnMvaW5wdXQvbW91c2UvY3lhcGFfZ2VuNS5jIHwgMTY0OCArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KIDQgZmlsZXMgY2hhbmdlZCwgMTY3NSBp bnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2lucHV0L21vdXNlL2N5YXBhX2dlbjUuYw0KDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9t b3VzZS9NYWtlZmlsZSBiL2RyaXZlcnMvaW5wdXQvbW91c2UvTWFrZWZpbGUNCmluZGV4IDYzYjQy ZTAuLjA4Nzg1YTUgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2lucHV0L21vdXNlL01ha2VmaWxlDQor KysgYi9kcml2ZXJzL2lucHV0L21vdXNlL01ha2VmaWxlDQpAQCAtMzUsNCArMzUsNCBAQCBwc21v dXNlLSQoQ09ORklHX01PVVNFX1BTMl9UUkFDS1BPSU5UKSAgICAgICAgKz0gdHJhY2twb2ludC5v DQogcHNtb3VzZS0kKENPTkZJR19NT1VTRV9QUzJfVE9VQ0hLSVQpICAgKz0gdG91Y2hraXRfcHMy Lm8NCiBwc21vdXNlLSQoQ09ORklHX01PVVNFX1BTMl9DWVBSRVNTKSAgICArPSBjeXByZXNzX3Bz Mi5vDQoNCi1jeWFwYXRwLXkgOj0gY3lhcGEubyBjeWFwYV9nZW4zLm8NCitjeWFwYXRwLXkgOj0g Y3lhcGEubyBjeWFwYV9nZW4zLm8gY3lhcGFfZ2VuNS5vDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9p bnB1dC9tb3VzZS9jeWFwYS5jIGIvZHJpdmVycy9pbnB1dC9tb3VzZS9jeWFwYS5jDQppbmRleCBj YWEwYTQ4Li4xYzM2MDk5IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9pbnB1dC9tb3VzZS9jeWFwYS5j DQorKysgYi9kcml2ZXJzL2lucHV0L21vdXNlL2N5YXBhLmMNCkBAIC0yMDMsNiArMjAzLDggQEAg dm9pZCBjeWFwYV9kZWZhdWx0X2lycV9oYW5kbGVyKHN0cnVjdCBjeWFwYSAqY3lhcGEpDQogICAg ICAgIGNvbnQgPSB0cnVlOw0KICAgICAgICBpZiAoY3lhcGFfZ2VuM19vcHMuaXJxX2NtZF9oYW5k bGVyKQ0KICAgICAgICAgICAgICAgIGNvbnQgPSBjeWFwYV9nZW4zX29wcy5pcnFfY21kX2hhbmRs ZXIoY3lhcGEpOw0KKyAgICAgICBpZiAoY29udCAmJiBjeWFwYV9nZW41X29wcy5pcnFfY21kX2hh bmRsZXIpDQorICAgICAgICAgICAgICAgY29udCA9IGN5YXBhX2dlbjVfb3BzLmlycV9jbWRfaGFu ZGxlcihjeWFwYSk7DQogICAgICAgIGlmICghY29udCkNCiAgICAgICAgICAgICAgICByZXR1cm47 DQoNCkBAIC0zNDIsNiArMzQ0LDkgQEAgc3RhdGljIGludCBjeWFwYV9jaGVja19pc19vcGVyYXRp b25hbChzdHJ1Y3QgY3lhcGEgKmN5YXBhKQ0KICAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQoN CiAgICAgICAgc3dpdGNoIChjeWFwYS0+Z2VuKSB7DQorICAgICAgIGNhc2UgQ1lBUEFfR0VONToN CisgICAgICAgICAgICAgICBjeWFwYS0+b3BzID0gJmN5YXBhX2dlbjVfb3BzOw0KKyAgICAgICAg ICAgICAgIGJyZWFrOw0KICAgICAgICBjYXNlIENZQVBBX0dFTjM6DQogICAgICAgICAgICAgICAg Y3lhcGEtPm9wcyA9ICZjeWFwYV9nZW4zX29wczsNCiAgICAgICAgICAgICAgICBicmVhazsNCkBA IC00NTcsNiArNDYyLDE0IEBAIHN0YXRpYyBpbnQgY3lhcGFfZ2V0X3N0YXRlKHN0cnVjdCBjeWFw YSAqY3lhcGEpDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV0ID09IDApDQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0X2RldGVjdGVkOw0KICAgICAgICAgICAg ICAgIH0NCisgICAgICAgICAgICAgICBpZiAoKGN5YXBhLT5nZW4gPT0gQ1lBUEFfR0VOX1VOS05P V04gfHwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3lhcGEtPmdlbiA9PSBDWUFQ QV9HRU41KSAmJg0KKyAgICAgICAgICAgICAgICAgICAgICAgIXNtYnVzICYmIGV2ZW5fYWRkcikg ew0KKyAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gY3lhcGFfZ2VuNV9vcHMuc3RhdGVfcGFy c2UoY3lhcGEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVz LCBCTF9TVEFUVVNfU0laRSk7DQorICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV0ID09IDAp DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0X2RldGVjdGVkOw0KKyAg ICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIC8qDQogICAgICAgICAgICAgICAgICog Y2Fubm90IGRldGVjdCBjb21tdW5pY2F0aW9uIHByb3RvY29sIGJhc2VkIG9uIGN1cnJlbnQNCkBA IC0xMTg5LDE4ICsxMjAyLDI2IEBAIHN0YXRpYyB2b2lkIGN5YXBhX2RldGVjdF9hbmRfc3RhcnQo dm9pZCAqZGF0YSwgYXN5bmNfY29va2llX3QgY29va2llKQ0KDQogc3RhdGljIGludCBjeWFwYV90 cF9tb2R1bGVzX2luaXQoc3RydWN0IGN5YXBhICpjeWFwYSkNCiB7DQorICAgICAgIGludCByZXQg PSAwOw0KKw0KICAgICAgICBpZiAoY3lhcGFfZ2VuM19vcHMuaW5pdGlhbGl6ZSkNCi0gICAgICAg ICAgICAgICByZXR1cm4gY3lhcGFfZ2VuM19vcHMuaW5pdGlhbGl6ZShjeWFwYSk7DQorICAgICAg ICAgICAgICAgcmV0ID0gY3lhcGFfZ2VuM19vcHMuaW5pdGlhbGl6ZShjeWFwYSk7DQorICAgICAg IGlmICghcmV0ICYmIGN5YXBhX2dlbjVfb3BzLmluaXRpYWxpemUpDQorICAgICAgICAgICAgICAg cmV0ID0gY3lhcGFfZ2VuNV9vcHMuaW5pdGlhbGl6ZShjeWFwYSk7DQoNCi0gICAgICAgcmV0dXJu IDA7DQorICAgICAgIHJldHVybiByZXQ7DQogfQ0KDQogc3RhdGljIGludCBjeWFwYV90cF9tb2R1 bGVzX3VuaW5pdChzdHJ1Y3QgY3lhcGEgKmN5YXBhKQ0KIHsNCisgICAgICAgaW50IHJldCA9IDA7 DQorDQogICAgICAgIGlmIChjeWFwYV9nZW4zX29wcy51bmluaXRpYWxpemUpDQotICAgICAgICAg ICAgICAgcmV0dXJuIGN5YXBhX2dlbjNfb3BzLnVuaW5pdGlhbGl6ZShjeWFwYSk7DQorICAgICAg ICAgICAgICAgcmV0ID0gY3lhcGFfZ2VuM19vcHMudW5pbml0aWFsaXplKGN5YXBhKTsNCisgICAg ICAgaWYgKCFyZXQgJiYgY3lhcGFfZ2VuNV9vcHMudW5pbml0aWFsaXplKQ0KKyAgICAgICAgICAg ICAgIHJldCA9IGN5YXBhX2dlbjVfb3BzLnVuaW5pdGlhbGl6ZShjeWFwYSk7DQoNCi0gICAgICAg cmV0dXJuIDA7DQorICAgICAgIHJldHVybiByZXQ7DQogfQ0KDQogc3RhdGljIGludCBjeWFwYV9w cm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LA0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5w dXQvbW91c2UvY3lhcGEuaCBiL2RyaXZlcnMvaW5wdXQvbW91c2UvY3lhcGEuaA0KaW5kZXggYmNi N2MxNi4uY2NlMjNkZiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvaW5wdXQvbW91c2UvY3lhcGEuaA0K KysrIGIvZHJpdmVycy9pbnB1dC9tb3VzZS9jeWFwYS5oDQpAQCAtMzA0LDUgKzMwNCw2IEBAIHUx NiBjeWFwYV9wd3JfY21kX3RvX3NsZWVwX3RpbWUodTggcHdyX21vZGUpOw0KDQogZXh0ZXJuIGNv bnN0IGNoYXIgdW5pcXVlX3N0cltdOw0KIGV4dGVybiBjb25zdCBzdHJ1Y3QgY3lhcGFfZGV2X29w cyBjeWFwYV9nZW4zX29wczsNCitleHRlcm4gY29uc3Qgc3RydWN0IGN5YXBhX2Rldl9vcHMgY3lh cGFfZ2VuNV9vcHM7DQoNCiAjZW5kaWYNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L21vdXNl L2N5YXBhX2dlbjUuYyBiL2RyaXZlcnMvaW5wdXQvbW91c2UvY3lhcGFfZ2VuNS5jDQpuZXcgZmls ZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uMDc0YWY3MA0KLS0tIC9kZXYvbnVsbA0KKysr IGIvZHJpdmVycy9pbnB1dC9tb3VzZS9jeWFwYV9nZW41LmMNCkBAIC0wLDAgKzEsMTY0OCBAQA0K Ky8qDQorICogQ3lwcmVzcyBBUEEgdHJhY2twYWQgd2l0aCBJMkMgaW50ZXJmYWNlDQorICoNCisg KiBBdXRob3I6IER1ZGxleSBEdSA8ZHVkbEBjeXByZXNzLmNvbT4NCisgKg0KKyAqIENvcHlyaWdo dCAoQykgMjAxNCBDeXByZXNzIFNlbWljb25kdWN0b3IsIEluYy4NCisgKg0KKyAqIFRoaXMgZmls ZSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljDQorICogTGljZW5zZS4gIFNlZSB0aGUgZmlsZSBDT1BZSU5HIGluIHRoZSBtYWlu IGRpcmVjdG9yeSBvZiB0aGlzIGFyY2hpdmUgZm9yDQorICogbW9yZSBkZXRhaWxzLg0KKyAqLw0K Kw0KKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPg0KKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4NCisj aW5jbHVkZSA8bGludXgvaW5wdXQuaD4NCisjaW5jbHVkZSA8bGludXgvaW5wdXQvbXQuaD4NCisj aW5jbHVkZSA8bGludXgvbXV0ZXguaD4NCisjaW5jbHVkZSA8bGludXgvY29tcGxldGlvbi5oPg0K KyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+DQorI2luY2x1ZGUgPGxpbnV4L3VuYWxpZ25lZC9hY2Nl c3Nfb2suaD4NCisjaW5jbHVkZSAiY3lhcGEuaCINCisNCisNCisvKiBNYWNybyBvZiBHZW41ICov DQorI2RlZmluZSBSRUNPUkRfRVZFTlRfTk9ORSAgICAgICAgMA0KKyNkZWZpbmUgUkVDT1JEX0VW RU5UX1RPVUNIRE9XTiAgMQ0KKyNkZWZpbmUgUkVDT1JEX0VWRU5UX0RJU1BMQUNFICAgIDINCisj ZGVmaW5lIFJFQ09SRF9FVkVOVF9MSUZUT0ZGICAgICAzDQorDQorI2RlZmluZSBDWUFQQV9UU0df RkxBU0hfTUFQX0JMT0NLX1NJWkUgICAgICAweDgwDQorI2RlZmluZSBDWUFQQV9UU0dfSU1HX0ZX X0hEUl9TSVpFICAgICAgICAgICAxMw0KKyNkZWZpbmUgQ1lBUEFfVFNHX0ZXX1JPV19TSVpFICAg ICAgICAgICAgICAgKENZQVBBX1RTR19GTEFTSF9NQVBfQkxPQ0tfU0laRSkNCisjZGVmaW5lIENZ QVBBX1RTR19JTUdfU1RBUlRfUk9XX05VTSAgICAgICAgIDB4MDAyZQ0KKyNkZWZpbmUgQ1lBUEFf VFNHX0lNR19FTkRfUk9XX05VTSAgICAgICAgICAgMHgwMWZlDQorI2RlZmluZSBDWUFQQV9UU0df SU1HX0FQUF9JTlRFR1JJVFlfUk9XX05VTSAweDAxZmYNCisjZGVmaW5lIENZQVBBX1RTR19JTUdf TUFYX1JFQ09SRFMgICAgICAgICAgIChDWUFQQV9UU0dfSU1HX0VORF9ST1dfTlVNIC0gXA0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDWUFQQV9UU0dfSU1HX1NUQVJUX1JPV19OVU0g KyAxICsgMSkNCisjZGVmaW5lIENZQVBBX1RTR19JTUdfUkVBRF9TSVpFICAgICAgICAgICAgIChD WUFQQV9UU0dfRkxBU0hfTUFQX0JMT0NLX1NJWkUgLyAyKQ0KKyNkZWZpbmUgQ1lBUEFfVFNHX1NU QVJUX09GX0FQUExJQ0FUSU9OICAgICAgMHgxNzAwDQorI2RlZmluZSBDWUFQQV9UU0dfQVBQX0lO VEVHUklUWV9TSVpFICAgICAgICA2MA0KKyNkZWZpbmUgQ1lBUEFfVFNHX0ZMQVNIX01BUF9NRVRB REFUQV9TSVpFICAgNjANCisjZGVmaW5lIENZQVBBX1RTR19CTF9LRVlfU0laRSAgICAgICAgICAg ICAgIDgNCisNCisvKiBNYWNybyBkZWZpbml0aW9ucyBmb3IgR2VuNSB0cmFja3BhZCBkZXZpY2Uu ICovDQorI2RlZmluZSBHRU41X1RPVUNIX1JFUE9SVF9IRUFEX1NJWkUgICAgIDcNCisjZGVmaW5l IEdFTjVfVE9VQ0hfUkVQT1JUX01BWF9TSVpFICAgICAgMTI3DQorI2RlZmluZSBHRU41X0JUTl9S RVBPUlRfSEVBRF9TSVpFICAgICAgIDYNCisjZGVmaW5lIEdFTjVfQlROX1JFUE9SVF9NQVhfU0la RSAgICAgICAgMTQNCisjZGVmaW5lIEdFTjVfV0FLRVVQX0VWRU5UX1NJWkUgICAgICAgICAgNA0K KyNkZWZpbmUgR0VONV9SQVdfREFUQV9IRUFEX1NJWkUgICAgICAgICAyNA0KKw0KKyNkZWZpbmUg R0VONV9CTF9DTURfUkVQT1JUX0lEICAgICAgICAgICAweDQwDQorI2RlZmluZSBHRU41X0JMX1JF U1BfUkVQT1JUX0lEICAgICAgICAgIDB4MzANCisjZGVmaW5lIEdFTjVfQVBQX0NNRF9SRVBPUlRf SUQgICAgICAgICAgMHgyZg0KKyNkZWZpbmUgR0VONV9BUFBfUkVTUF9SRVBPUlRfSUQgICAgICAg ICAweDFmDQorDQorI2RlZmluZSBHRU41X0FQUF9ERUVQX1NMRUVQX1JFUE9SVF9JRCAgIDB4ZjAN CisjZGVmaW5lIEdFTjVfREVFUF9TTEVFUF9SRVNQX0xFTkdUSCAgICAgNQ0KKw0KKyNkZWZpbmUg R0VONV9QQVJBTUVURVJfQUNUX0lOVEVSVkxfSUQgICAgICAgIDB4NGQNCisjZGVmaW5lIEdFTjVf UEFSQU1FVEVSX0FDVF9JTlRFUlZMX1NJWkUgICAgICAxDQorI2RlZmluZSBHRU41X1BBUkFNRVRF Ul9BQ1RfTEZUX0lOVEVSVkxfSUQgICAgMHg0Zg0KKyNkZWZpbmUgR0VONV9QQVJBTUVURVJfQUNU X0xGVF9JTlRFUlZMX1NJWkUgIDINCisjZGVmaW5lIEdFTjVfUEFSQU1FVEVSX0xQX0lOVFJWTF9J RCAgICAgICAgICAweDRjDQorI2RlZmluZSBHRU41X1BBUkFNRVRFUl9MUF9JTlRSVkxfU0laRSAg ICAgICAgMg0KKw0KKyNkZWZpbmUgR0VONV9QQVJBTUVURVJfRElTQUJMRV9QSVBfUkVQT1JUICAg IDB4MDgNCisNCisjZGVmaW5lIEdFTjVfUE9XRVJfU1RBVEVfQUNUSVZFICAgICAgICAgICAgICAw eDAxDQorI2RlZmluZSBHRU41X1BPV0VSX1NUQVRFX0xPT0tfRk9SX1RPVUNIICAgICAgMHgwMg0K KyNkZWZpbmUgR0VONV9QT1dFUl9TVEFURV9SRUFEWSAgICAgICAgICAgICAgIDB4MDMNCisjZGVm aW5lIEdFTjVfUE9XRVJfU1RBVEVfSURMRSAgICAgICAgICAgICAgICAweDA0DQorI2RlZmluZSBH RU41X1BPV0VSX1NUQVRFX0JUTl9PTkxZICAgICAgICAgICAgMHgwNQ0KKyNkZWZpbmUgR0VONV9Q T1dFUl9TVEFURV9PRkYgICAgICAgICAgICAgICAgIDB4MDYNCisNCisjZGVmaW5lIEdFTjVfREVF UF9TTEVFUF9TVEFURV9NQVNLICAweDAzDQorI2RlZmluZSBHRU41X0RFRVBfU0xFRVBfU1RBVEVf T04gICAgMHgwMA0KKyNkZWZpbmUgR0VONV9ERUVQX1NMRUVQX1NUQVRFX09GRiAgIDB4MDENCisN CisjZGVmaW5lIEdFTjVfREVFUF9TTEVFUF9PUENPREUgICAgICAweDA4DQorI2RlZmluZSBHRU41 X0RFRVBfU0xFRVBfT1BDT0RFX01BU0sgMHgwZg0KKw0KKyNkZWZpbmUgR0VONV9QT1dFUl9SRUFE WV9NQVhfSU5UUlZMX1RJTUUgIDUwICAgLyogdW5pdDogbXMgKi8NCisjZGVmaW5lIEdFTjVfUE9X RVJfSURMRV9NQVhfSU5UUlZMX1RJTUUgICAyNTAgIC8qIHVuaXQ6IG1zICovDQorDQorI2RlZmlu ZSBHRU41X0NNRF9SRVBPUlRfSURfT0ZGU0VUICAgICAgIDQNCisNCisjZGVmaW5lIEdFTjVfUkVT UF9SRVBPUlRfSURfT0ZGU0VUICAgICAgMg0KKyNkZWZpbmUgR0VONV9SRVNQX1JTVkRfT0ZGU0VU ICAgICAgICAgICAzDQorI2RlZmluZSAgICAgR0VONV9SRVNQX1JTVkRfS0VZICAgICAgICAgIDB4 MDANCisjZGVmaW5lIEdFTjVfUkVTUF9CTF9TT1BfT0ZGU0VUICAgICAgICAgNA0KKyNkZWZpbmUg ICAgIEdFTjVfU09QX0tFWSAgICAgICAgICAgICAgICAweDAxICAvKiBTdGFydCBvZiBQYWNrZXQg Ki8NCisjZGVmaW5lICAgICBHRU41X0VPUF9LRVkgICAgICAgICAgICAgICAgMHgxNyAgLyogRW5k IG9mIFBhY2tldCAqLw0KKyNkZWZpbmUgR0VONV9SRVNQX0FQUF9DTURfT0ZGU0VUICAgICAgICA0 DQorI2RlZmluZSAgICAgR0VUX0dFTjVfQ01EX0NPREUocmVnKSAgICAgICgocmVnKSAmIDB4N2Yp DQorDQorI2RlZmluZSBHRU41X01JTl9CTF9DTURfTEVOR1RIICAgICAgICAgICAxMw0KKyNkZWZp bmUgR0VONV9NSU5fQkxfUkVTUF9MRU5HVEggICAgICAgICAgMTENCisjZGVmaW5lIEdFTjVfTUlO X0FQUF9DTURfTEVOR1RIICAgICAgICAgIDcNCisjZGVmaW5lIEdFTjVfTUlOX0FQUF9SRVNQX0xF TkdUSCAgICAgICAgIDUNCisjZGVmaW5lIEdFTjVfVU5TVVBQT1JURURfQ01EX1JFU1BfTEVOR1RI IDYNCisNCisjZGVmaW5lIEdFTjVfUkVTUF9MRU5HVEhfT0ZGU0VUICAweDAwDQorI2RlZmluZSBH RU41X1JFU1BfTEVOR1RIX1NJWkUgICAgMg0KKw0KKyNkZWZpbmUgR0VONV9ISURfREVTQ1JJUFRP Ul9TSVpFICAgICAgMzINCisjZGVmaW5lIEdFTjVfQkxfSElEX1JFUE9SVF9JRCAgICAgICAgIDB4 ZmYNCisjZGVmaW5lIEdFTjVfQVBQX0hJRF9SRVBPUlRfSUQgICAgICAgIDB4ZjcNCisjZGVmaW5l IEdFTjVfQkxfTUFYX09VVFBVVF9MRU5HVEggICAgIDB4MDEwMA0KKyNkZWZpbmUgR0VONV9BUFBf TUFYX09VVFBVVF9MRU5HVEggICAgMHgwMGZlDQorDQorI2RlZmluZSBHRU41X0JMX1JFUE9SVF9E RVNDUklQVE9SX1NJWkUgICAgICAgICAgICAweDFkDQorI2RlZmluZSBHRU41X0JMX1JFUE9SVF9E RVNDUklQVE9SX0lEICAgICAgICAgICAgICAweGZlDQorI2RlZmluZSBHRU41X0FQUF9SRVBPUlRf REVTQ1JJUFRPUl9TSVpFICAgICAgICAgICAweGVlDQorI2RlZmluZSBHRU41X0FQUF9DT05UUkFD VF9SRVBPUlRfREVTQ1JJUFRPUl9TSVpFICAweGZhDQorI2RlZmluZSBHRU41X0FQUF9SRVBPUlRf REVTQ1JJUFRPUl9JRCAgICAgICAgICAgICAweGY2DQorDQorI2RlZmluZSBHRU41X1RPVUNIX1JF UE9SVF9JRCAgICAgICAgIDB4MDENCisjZGVmaW5lIEdFTjVfQlROX1JFUE9SVF9JRCAgICAgICAg ICAgMHgwMw0KKyNkZWZpbmUgR0VONV9XQUtFVVBfRVZFTlRfUkVQT1JUX0lEICAweDA0DQorI2Rl ZmluZSBHRU41X09MRF9QVVNIX0JUTl9SRVBPUlRfSUQgIDB4MDUNCisjZGVmaW5lIEdFTjVfUFVT SF9CVE5fUkVQT1JUX0lEICAgICAgMHgwNg0KKw0KKyNkZWZpbmUgR0VONV9DTURfQ09NUExFVEVf U1VDQ0VTUyhzdGF0dXMpICgoc3RhdHVzKSA9PSAweDAwKQ0KKw0KKyNkZWZpbmUgR0VONV9CTF9J TklUSUFURV9SRVNQX0xFTiAgICAgICAgICAgIDExDQorI2RlZmluZSBHRU41X0JMX0ZBSUxfRVhJ VF9SRVNQX0xFTiAgICAgICAgICAgMTENCisjZGVmaW5lIEdFTjVfQkxfRkFJTF9FWElUX1NUQVRV U19DT0RFICAgICAgICAweDBjDQorI2RlZmluZSBHRU41X0JMX1ZFUklGWV9JTlRFR1JJVFlfUkVT UF9MRU4gICAgMTINCisjZGVmaW5lIEdFTjVfQkxfSU5URUdSSVRZX0NIRUtDX1BBU1MgICAgICAg ICAweDAwDQorI2RlZmluZSBHRU41X0JMX0JMT0NLX1dSSVRFX1JFU1BfTEVOICAgICAgICAgMTEN CisjZGVmaW5lIEdFTjVfQkxfUkVBRF9BUFBfSU5GT19SRVNQX0xFTiAgICAgICAzMQ0KKyNkZWZp bmUgR0VONV9DTURfQ0FMSUJSQVRFICAgICAgICAgICAgICAgICAgIDB4MjgNCisjZGVmaW5lIENZ QVBBX1NFTlNJTkdfTU9ERV9NVVRVQUxfQ0FQX0ZJTkUgICAweDAwDQorI2RlZmluZSBDWUFQQV9T RU5TSU5HX01PREVfU0VMRl9DQVAgICAgICAgICAgMHgwMg0KKw0KKyNkZWZpbmUgR0VONV9DTURf UkVUUklFVkVfREFUQV9TVFJVQ1RVUkUgICAgIDB4MjQNCisjZGVmaW5lIEdFTjVfUkVUUklFVkVf TVVUVUFMX1BXQ19EQVRBICAgICAgICAweDAwDQorI2RlZmluZSBHRU41X1JFVFJJRVZFX1NFTEZf Q0FQX1BXQ19EQVRBICAgICAgMHgwMQ0KKw0KKyNkZWZpbmUgR0VONV9SRVRSSUVWRV9EQVRBX0VM RU1FTlRfU0laRV9NQVNLIDB4MDcNCisNCisjZGVmaW5lIEdFTjVfQ01EX0VYRUNVVEVfUEFORUxf U0NBTiAgICAgICAgICAweDJhDQorI2RlZmluZSBHRU41X0NNRF9SRVRSSUVWRV9QQU5FTF9TQ0FO ICAgICAgICAgMHgyYg0KKyNkZWZpbmUgR0VONV9QQU5FTF9TQ0FOX01VVFVBTF9SQVdfREFUQSAg ICAgIDB4MDANCisjZGVmaW5lIEdFTjVfUEFORUxfU0NBTl9NVVRVQUxfQkFTRUxJTkUgICAgICAw eDAxDQorI2RlZmluZSBHRU41X1BBTkVMX1NDQU5fTVVUVUFMX0RJRkZDT1VOVCAgICAgMHgwMg0K KyNkZWZpbmUgR0VONV9QQU5FTF9TQ0FOX1NFTEZfUkFXX0RBVEEgICAgICAgIDB4MDMNCisjZGVm aW5lIEdFTjVfUEFORUxfU0NBTl9TRUxGX0JBU0VMSU5FICAgICAgICAweDA0DQorI2RlZmluZSBH RU41X1BBTkVMX1NDQU5fU0VMRl9ESUZGQ09VTlQgICAgICAgMHgwNQ0KKw0KKyNkZWZpbmUgR0VO NV9QV0NfREFUQV9FTEVNRU5UX1NJWkVfTUFTSyAgICAgIDB4MDcNCisNCisjZGVmaW5lICAgICAg ICBHRU41X05VTUJFUl9PRl9UT1VDSF9PRkZTRVQgIDUNCisjZGVmaW5lIEdFTjVfTlVNQkVSX09G X1RPVUNIX01BU0sgICAgMHgxZg0KKyNkZWZpbmUgR0VONV9CVVRUT05TX09GRlNFVCAgICAgICAg ICA1DQorI2RlZmluZSBHRU41X0JVVFRPTlNfTUFTSyAgICAgICAgICAgIDB4MGYNCisjZGVmaW5l IEdFTjVfR0VUX0VWRU5UX0lEKHJlZykgICAgICAgKCgocmVnKSA+PiA1KSAmIDB4MDMpDQorI2Rl ZmluZSBHRU41X0dFVF9UT1VDSF9JRChyZWcpICAgICAgICgocmVnKSAmIDB4MWYpDQorDQorI2Rl ZmluZSBHRU41X1BST0RVQ1RfRkFNSUxZX01BU0sgICAgICAgIDB4ZjAwMA0KKyNkZWZpbmUgR0VO NV9QUk9EVUNUX0ZBTUlMWV9UUkFDS1BBRCAgICAweDEwMDANCisNCisjZGVmaW5lIFRTR19JTlZB TElEX0NNRCAgIDB4ZmYNCisNCitzdHJ1Y3QgY3lhcGFfZ2VuNV90b3VjaF9yZWNvcmQgew0KKyAg ICAgICAvKg0KKyAgICAgICAgKiBiaXQgNyAtIDM6IHJlc2VydmVkDQorICAgICAgICAqIGJpdCAy IC0gMDogdG91Y2ggdHlwZTsNCisgICAgICAgICogICAgICAgICAgICAwIDogc3RhbmRhcmQgZmlu Z2VyOw0KKyAgICAgICAgKiAgICAgICAgICAgIDEgLSAxNSA6IHJlc2VydmVkLg0KKyAgICAgICAg Ki8NCisgICAgICAgdTggdG91Y2hfdHlwZTsNCisNCisgICAgICAgLyoNCisgICAgICAgICogYml0 IDc6IGluZGljYXRlcyB0b3VjaCBsaWZ0b2ZmIHN0YXR1cy4NCisgICAgICAgICogICAgICAgICAg ICAgIDAgOiB0b3VjaCBpcyBjdXJyZW50bHkgb24gdGhlIHBhbmVsLg0KKyAgICAgICAgKiAgICAg ICAgICAgICAgMSA6IHRvdWNoIHJlY29yZCBpbmRpY2F0ZXMgYSBsaWZ0b2ZmLg0KKyAgICAgICAg KiBiaXQgNiAtIDU6IGluZGljYXRlcyBhbiBldmVudCBhc3NvY2lhdGVkIHdpdGggdGhpcyB0b3Vj aCBpbnN0YW5jZQ0KKyAgICAgICAgKiAgICAgICAgICAgICAgMCA6IG5vIGV2ZW50DQorICAgICAg ICAqICAgICAgICAgICAgICAxIDogdG91Y2hkb3duDQorICAgICAgICAqICAgICAgICAgICAgICAy IDogc2lnbmlmaWNhbnQgZGlzcGxhY2VtZW50ICg+IGFjdGl2ZSBkaXN0YW5jZSkNCisgICAgICAg ICogICAgICAgICAgICAgIDMgOiBsaWZ0b2ZmIChyZWNvcmQgcmVwb3J0cyBsYXN0IGtub3duIGNv b3JkaW5hdGVzKQ0KKyAgICAgICAgKiBiaXQgNCAtIDA6IEFuIGFyYml0cmFyeSBJRCB0YWcgYXNz b2NpYXRlZCB3aXRoIGEgZmluZ2VyDQorICAgICAgICAqICAgICAgICAgICAgICB0byBhbG93IHRy YWNraW5nIGEgdG91Y2ggYXMgaXQgbW92ZXMgYXJvdW5kIHRoZSBwYW5lbC4NCisgICAgICAgICov DQorICAgICAgIHU4IHRvdWNoX3RpcF9ldmVudF9pZDsNCisNCisgICAgICAgLyogYml0IDcgLSAw IG9mIFgtYXhpcyBjb3JyaW5hdGUgb2YgdGhlIHRvdWNoIGluIHBpeGVsLiAqLw0KKyAgICAgICB1 OCB4X2xvOw0KKw0KKyAgICAgICAvKiBiaXQgMTUgLSA4IG9mIFgtYXhpcyBjb3JyaW5hdGUgb2Yg dGhlIHRvdWNoIGluIHBpeGVsLiAqLw0KKyAgICAgICB1OCB4X2hpOw0KKw0KKyAgICAgICAvKiBi aXQgNyAtIDAgb2YgWS1heGlzIGNvcnJpbmF0ZSBvZiB0aGUgdG91Y2ggaW4gcGl4ZWwuICovDQor ICAgICAgIHU4IHlfbG87DQorDQorICAgICAgIC8qIGJpdCAxNSAtIDggb2YgWS1heGlzIGNvcnJp bmF0ZSBvZiB0aGUgdG91Y2ggaW4gcGl4ZWwuICovDQorICAgICAgIHU4IHlfaGk7DQorDQorICAg ICAgIC8qIHRvdWNoIGludGVuc2l0eSBpbiBjb3VudHMsIHByZXNzdXJlIHZhbHVlLiAqLw0KKyAg ICAgICB1OCB6Ow0KKw0KKyAgICAgICAvKg0KKyAgICAgICAgKiBUaGUgbGVuZ3RoIG9mIHRoZSBt YWpvciBheGlzIG9mIHRoZSBlbGxpcHNlIG9mIGNvbnRhY3QgYmV0d2Vlbg0KKyAgICAgICAgKiB0 aGUgZmluZ2VyIGFuZCB0aGUgcGFuZWwgKEFCU19NVF9UT1VDSF9NQUpPUikuDQorICAgICAgICAq Lw0KKyAgICAgICB1OCBtYWpvcl9heGlzX2xlbjsNCisNCisgICAgICAgLyoNCisgICAgICAgICog VGhlIGxlbmd0aCBvZiB0aGUgbWlub3IgYXhpcyBvZiB0aGUgZWxsaXBzZSBvZiBjb250YWN0IGJl dHdlZW4NCisgICAgICAgICogdGhlIGZpbmdlciBhbmQgdGhlIHBhbmVsIChBQlNfTVRfVE9VQ0hf TUlOT1IpLg0KKyAgICAgICAgKi8NCisgICAgICAgdTggbWlub3JfYXhpc19sZW47DQorDQorICAg ICAgIC8qDQorICAgICAgICAqIFRoZSBsZW5ndGggb2YgdGhlIG1ham9yIGF4aXMgb2YgdGhlIGFw cHJvYWNoaW5nIHRvb2wuDQorICAgICAgICAqIChBQlNfTVRfV0lEVEhfTUFKT1IpDQorICAgICAg ICAqLw0KKyAgICAgICB1OCBtYWpvcl90b29sX2xlbjsNCisNCisgICAgICAgLyoNCisgICAgICAg ICogVGhlIGxlbmd0aCBvZiB0aGUgbWlub3IgYXhpcyBvZiB0aGUgYXBwcm9hY2hpbmcgdG9vbC4N CisgICAgICAgICogKEFCU19NVF9XSURUSF9NSU5PUikNCisgICAgICAgICovDQorICAgICAgIHU4 IG1pbm9yX3Rvb2xfbGVuOw0KKw0KKyAgICAgICAvKg0KKyAgICAgICAgKiBUaGUgYW5nbGUgYmV0 d2VlbiB0aGUgcGFuZWwgdmVydGljYWwgYXhpcyBhbmQNCisgICAgICAgICogdGhlIG1ham9yIGF4 aXMgb2YgdGhlIGNvbnRhY3QgZWxsaXBzZS4gVGhpcyB2YWx1ZSBpcyBhbiA4LWJpdA0KKyAgICAg ICAgKiBzaWduZWQgaW50ZWdlci4gVGhlIHJhbmdlIGlzIC0xMjcgdG8gKzEyNyAoY29ycmVzcG9u ZGluZyB0bw0KKyAgICAgICAgKiAtOTAgZGVncmVlIGFuZCArOTAgZGVncmVlIHJlc3BlY3RpdmVs eSkuDQorICAgICAgICAqIFRoZSBwb3NpdGl2ZSBkaXJlY3Rpb24gaXMgY2xvY2t3aXNlIGZyb20g dGhlIHZlcnRpY2FsIGF4aXMuDQorICAgICAgICAqIElmIHRoZSBlbGxpcHNlIG9mIGNvbnRhY3Qg ZGVnZW5lcmF0ZXMgaW50byBhIGNpcmNsZSwNCisgICAgICAgICogb3JpZW50YXRpb24gaXMgcmVw b3J0ZWQgYXMgMC4NCisgICAgICAgICovDQorICAgICAgIHU4IG9yaWVudGF0aW9uOw0KK30gX19w YWNrZWQ7DQorDQorc3RydWN0IGN5YXBhX2dlbjVfcmVwb3J0X2RhdGEgew0KKyAgICAgICB1OCBy ZXBvcnRfaGVhZFtHRU41X1RPVUNIX1JFUE9SVF9IRUFEX1NJWkVdOw0KKyAgICAgICBzdHJ1Y3Qg Y3lhcGFfZ2VuNV90b3VjaF9yZWNvcmQgdG91Y2hfcmVjb3Jkc1sxMF07DQorfSBfX3BhY2tlZDsN CisNCitzdHJ1Y3QgY3lhcGFfdHNnX2Jpbl9pbWFnZV9oZWFkIHsNCisgICAgICAgdTggaGVhZF9z aXplOyAgLyogaW4gYnl0ZXMsIGluY2x1ZGluZyBpdHNlbGYuICovDQorICAgICAgIHU4IHR0ZGFf ZHJpdmVyX21ham9yX3ZlcnNpb247ICAvKiByZXNlcnZlZCBhcyAwLiAqLw0KKyAgICAgICB1OCB0 dGRhX2RyaXZlcl9taW5vcl92ZXJzaW9uOyAgLyogcmVzZXJ2ZWQgYXMgMC4gKi8NCisgICAgICAg dTggZndfbWFqb3JfdmVyc2lvbjsNCisgICAgICAgdTggZndfbWlub3JfdmVyc2lvbjsNCisgICAg ICAgdTggZndfcmV2aXNpb25fY29udHJvbF9udW1iZXJbOF07DQorfSBfX3BhY2tlZDsNCisNCitz dHJ1Y3QgY3lhcGFfdHNnX2Jpbl9pbWFnZV9kYXRhX3JlY29yZCB7DQorICAgICAgIHU4IGZsYXNo X2FycmF5X2lkOw0KKyAgICAgICBfX2JlMTYgcm93X251bWJlcjsNCisgICAgICAgLyogdGhlIG51 bWJlciBvZiBieXRlcyBvZiBmbGFzaCBkYXRhIGNvbnRhaW5lZCBpbiB0aGlzIHJlY29yZC4gKi8N CisgICAgICAgX19iZTE2IHJlY29yZF9sZW47DQorICAgICAgIC8qIHRoZSBmbGFzaCBwcm9ncmFt IGRhdGEuICovDQorICAgICAgIHU4IHJlY29yZF9kYXRhW0NZQVBBX1RTR19GV19ST1dfU0laRV07 DQorfSBfX3BhY2tlZDsNCisNCitzdHJ1Y3QgY3lhcGFfdHNnX2Jpbl9pbWFnZSB7DQorICAgICAg IHN0cnVjdCBjeWFwYV90c2dfYmluX2ltYWdlX2hlYWQgaW1hZ2VfaGVhZDsNCisgICAgICAgc3Ry dWN0IGN5YXBhX3RzZ19iaW5faW1hZ2VfZGF0YV9yZWNvcmQgcmVjb3Jkc1swXTsNCit9IF9fcGFj a2VkOw0KKw0KKy8qIHZhcmlhYmxlcyBmb3IgUElQIGlycSBzeW5jIGNvbW1hbmQgcHJvY2Vzc2lu Zy4gKi8NCitzdHJ1Y3QgcGlwX3N5bmNfY21kX3N0YXRlcyB7DQorICAgICAgIHN0cnVjdCBtdXRl eCBjbWRfbG9jazsNCisgICAgICAgc3RydWN0IGNvbXBsZXRpb24gY21kX3JlYWR5Ow0KKyAgICAg ICBhdG9taWNfdCBjbWRfaXNzdWVkOw0KKyAgICAgICB1OCBpbl9wcm9ncmVzc19jbWQ7DQorDQor ICAgICAgIGNiX3NvcnQgcmVzcF9zb3J0X2Z1bmM7DQorICAgICAgIHU4ICpyZXNwX2RhdGE7DQor ICAgICAgIGludCAqcmVzcF9sZW47DQorDQorICAgICAgIHU4IGlycV9jbWRfYnVmW0NZQVBBX1JF R19NQVBfU0laRV07DQorICAgICAgIHU4IGVtcHR5X2J1ZltDWUFQQV9SRUdfTUFQX1NJWkVdOw0K K307DQorDQorc3RhdGljIHN0cnVjdCBwaXBfc3luY19jbWRfc3RhdGVzICpnZW41X3BpcDsNCitz dGF0aWMgc3RydWN0IGN5YXBhX3RzZ19iaW5faW1hZ2VfaGVhZCBnZW41X2Z3X2ltZ19oZWFkOw0K Kw0KKy8qIHZhcmlhYmxlcyB0byByZWNvcmQgbGF0ZXN0IGdlbjUgdHJhY2twYWQgcG93ZXIgc3Rh dGVzLiAqLw0KKyNkZWZpbmUgVU5JTklUX1NMRUVQX1RJTUUgMHhGRkZGDQorc3RhdGljIHU4IGdl bjVfcHdyX21vZGUgPSAweEZGOw0KK3N0YXRpYyB1MTYgZ2VuNV9zbGVlcF90aW1lID0gVU5JTklU X1NMRUVQX1RJTUU7DQorI2RlZmluZSBHRU41X1VOSU5JVF9TTEVFUF9USU1FKHNsZWVwX3RpbWUp ICBcDQorICAgICAgICAgICAgICAgKChzbGVlcF90aW1lKSA9PSBVTklOSVRfU0xFRVBfVElNRSkN CisjZGVmaW5lIFNFVF9HRU41X1BPV0VSX1NUQVRFKHMpICAgICAgICAoZ2VuNV9wd3JfbW9kZSA9 IChzKSkNCisjZGVmaW5lIEdFTjVfUE9XRVJfU1RBVEUoKSAgICAgKGdlbjVfcHdyX21vZGUpDQor DQorDQorc3RhdGljIGludCBjeWFwYV9nZW41X2luaXRpYWxpemUoc3RydWN0IGN5YXBhICpjeWFw YSkNCit7DQorICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9ICZjeWFwYS0+Y2xpZW50LT5kZXY7 DQorDQorICAgICAgIGdlbjVfcGlwID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IHBpcF9zeW5jX2Nt ZF9zdGF0ZXMpLCBHRlBfS0VSTkVMKTsNCisgICAgICAgaWYgKCFnZW41X3BpcCkgew0KKyAgICAg ICAgICAgICAgIGRldl9lcnIoZGV2LCAiYWxsb2NhdGUgbWVtb3J5IGZhaWxlZCBmb3IgZ2VuNSBt b2R1bGVcbiIpOw0KKyAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOw0KKyAgICAgICB9DQor DQorICAgICAgIGluaXRfY29tcGxldGlvbigmZ2VuNV9waXAtPmNtZF9yZWFkeSk7DQorICAgICAg IGF0b21pY19zZXQoJmdlbjVfcGlwLT5jbWRfaXNzdWVkLCAwKTsNCisgICAgICAgbXV0ZXhfaW5p dCgmZ2VuNV9waXAtPmNtZF9sb2NrKTsNCisgICAgICAgYXRvbWljX3NldCgmZ2VuNV9waXAtPmNt ZF9pc3N1ZWQsIDApOw0KKw0KKyAgICAgICBnZW41X3BpcC0+cmVzcF9zb3J0X2Z1bmMgPSBOVUxM Ow0KKyAgICAgICBnZW41X3BpcC0+aW5fcHJvZ3Jlc3NfY21kID0gVFNHX0lOVkFMSURfQ01EOw0K KyAgICAgICBnZW41X3BpcC0+cmVzcF9kYXRhID0gTlVMTDsNCisgICAgICAgZ2VuNV9waXAtPnJl c3BfbGVuID0gTlVMTDsNCisNCisgICAgICAgcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQg Y3lhcGFfZ2VuNV91bmluaXRpYWxpemUoc3RydWN0IGN5YXBhICpjeWFwYSkNCit7DQorICAgICAg IGtmcmVlKGdlbjVfcGlwKTsNCisgICAgICAgcmV0dXJuIDA7DQorfQ0KKw0KKy8qIFJldHVybiBu ZWdhdGl2ZSBlcnJubywgb3IgZWxzZSB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuICovDQorc3Rh dGljIHNzaXplX3QgY3lhcGFfaTJjX3BpcF9yZWFkKHN0cnVjdCBjeWFwYSAqY3lhcGEsIHU4ICpi dWYsIHNpemVfdCBzaXplKQ0KK3sNCisgICAgICAgaW50IHJldDsNCisNCisgICAgICAgaWYgKHNp emUgPT0gMCkNCisgICAgICAgICAgICAgICByZXR1cm4gMDsNCisNCisgICAgICAgaWYgKCFidWYg fHwgc2l6ZSA+IENZQVBBX1JFR19NQVBfU0laRSkNCisgICAgICAgICAgICAgICByZXR1cm4gLUVJ TlZBTDsNCisNCisgICAgICAgcmV0ID0gaTJjX21hc3Rlcl9yZWN2KGN5YXBhLT5jbGllbnQsIGJ1 Ziwgc2l6ZSk7DQorDQorICAgICAgIGlmIChyZXQgIT0gc2l6ZSkNCisgICAgICAgICAgICAgICBy ZXR1cm4gKHJldCA8IDApID8gcmV0IDogLUVJTzsNCisNCisgICAgICAgcmV0dXJuIHNpemU7DQor fQ0KKw0KKy8qKg0KKyAqIFJldHVybiBhIG5lZ2F0aXZlIGVycm5vIGNvZGUgZWxzZSB6ZXJvIG9u IHN1Y2Nlc3MuDQorICovDQorc3RhdGljIHNzaXplX3QgY3lhcGFfaTJjX3BpcF93cml0ZShzdHJ1 Y3QgY3lhcGEgKmN5YXBhLCB1OCAqYnVmLCBzaXplX3Qgc2l6ZSkNCit7DQorICAgICAgIGludCBy ZXQ7DQorDQorICAgICAgIGlmICghYnVmIHx8ICFzaXplKQ0KKyAgICAgICAgICAgICAgIHJldHVy biAtRUlOVkFMOw0KKw0KKyAgICAgICByZXQgPSBpMmNfbWFzdGVyX3NlbmQoY3lhcGEtPmNsaWVu dCwgYnVmLCBzaXplKTsNCisNCisgICAgICAgaWYgKHJldCAhPSBzaXplKQ0KKyAgICAgICAgICAg ICAgIHJldHVybiAocmV0IDwgMCkgPyByZXQgOiAtRUlPOw0KKw0KKyAgICAgICByZXR1cm4gMDsN Cit9DQorDQorLyoqDQorICogdGhpcyBmdW5jdGlvbiBpcyBhaW1lZCB0byBkdW1wIGFsbCBub3Qg cmVhZCBkYXRhIGluIEdlbjUgdHJhY2twYWQNCisgKiBiZWZvcmUgc2VuZCBhbnkgY29tbWFuZCwg b3RoZXJ3aXNlLCB0aGUgaW50ZXJydXB0IGxpbmUgd2lsbCBiZSBibG9ja2VkLg0KKyAqLw0KK2lu dCBjeWFwYV9lbXB0eV9waXBfb3V0cHV0X2RhdGEoc3RydWN0IGN5YXBhICpjeWFwYSwNCisgICAg ICAgICAgICAgICB1OCAqYnVmLCBpbnQgKmxlbiwgY2Jfc29ydCBmdW5jKQ0KK3sNCisgICAgICAg aW50IHJldDsNCisgICAgICAgaW50IGxlbmd0aDsNCisgICAgICAgaW50IHJlcG9ydF9jb3VudDsN CisgICAgICAgaW50IGVtcHR5X2NvdW50Ow0KKyAgICAgICBpbnQgYnVmX2xlbjsNCisNCisgICAg ICAgYnVmX2xlbiA9IDA7DQorICAgICAgIGlmIChsZW4pIHsNCisgICAgICAgICAgICAgICBidWZf bGVuID0gKCpsZW4gPCBDWUFQQV9SRUdfTUFQX1NJWkUpID8NCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKmxlbiA6IENZQVBBX1JFR19NQVBfU0laRTsNCisgICAgICAgICAgICAgICAq bGVuID0gMDsNCisgICAgICAgfQ0KKw0KKyAgICAgICByZXBvcnRfY291bnQgPSA4OyAgLyogbWF4 IDcgcGVuZGluZyBkYXRhIGJlZm9yZSBjb21tYW5kIHJlc3BvbnNlIGRhdGEgKi8NCisgICAgICAg ZW1wdHlfY291bnQgPSAwOw0KKyAgICAgICBkbyB7DQorICAgICAgICAgICAgICAgLyoNCisgICAg ICAgICAgICAgICAgKiBEZXBuZGluZyBvbiB0ZXN0aW5nIGluIGN5YXBhIGRyaXZlciwgdGhlcmUg YXJlIG1heCA1ICIwMiAwMCINCisgICAgICAgICAgICAgICAgKiBwYWNrZXRzIGJldHdlZW4gdHdv IHZhbGlkIGJ1ZmZlcnJlZCBkYXRhIHJlcG9ydCBpbiBmaXJtd2FyZS4NCisgICAgICAgICAgICAg ICAgKiBTbyBpbiBvcmRlciB0byBkdW1wIGFsbCBidWZmZXJlZCBkYXRhIG91dCBhbmQNCisgICAg ICAgICAgICAgICAgKiBtYWtlIGludGVycnVwdCBsaW5lIHJlbGVhc2UgZm9yIHJlYXNzZXJ0IGFn YWluLA0KKyAgICAgICAgICAgICAgICAqIHdlIG11c3Qgc2V0IHRoZSBlbXB0eV9jb3VudCBjaGVj ayB2YWx1ZSBiaWdnZXIgdGhhbiA1IHRvDQorICAgICAgICAgICAgICAgICogbWFrZSBpdCB3b3Jr LiBPdGhlcndpc2UsIGluIHNvbWUgc2l0dWF0aW9uLA0KKyAgICAgICAgICAgICAgICAqIHRoZSBp bnRlcnJ1cHQgbGluZSBtYXkgdW5hYmxlIHRvIHJlYWN0aXZlIGFnYWluLA0KKyAgICAgICAgICAg ICAgICAqIHdoaWNoIHdpbGwgY2F1c2UgdHJhY2twYWQgZGV2aWNlIHVuYWJsZSB0bw0KKyAgICAg ICAgICAgICAgICAqIHJlcG9ydCBkYXRhIGFueSBtb3JlLg0KKyAgICAgICAgICAgICAgICAqIGZv ciBleGFtcGxlLCBpdCBtYXkgaGFwcGVuIGluIEVGVCBhbmQgRVNEIHRlc3RpbmcuDQorICAgICAg ICAgICAgICAgICovDQorICAgICAgICAgICAgICAgaWYgKGVtcHR5X2NvdW50ID4gNSkNCisgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KKw0KKyAgICAgICAgICAgICAgIHJldCA9IGN5 YXBhX2kyY19waXBfcmVhZChjeWFwYSwgZ2VuNV9waXAtPmVtcHR5X2J1ZiwNCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0VONV9SRVNQX0xFTkdUSF9TSVpFKTsNCisgICAgICAgICAg ICAgICBpZiAocmV0IDwgMCkNCisgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQor DQorICAgICAgICAgICAgICAgbGVuZ3RoID0gZ2V0X3VuYWxpZ25lZF9sZTE2KGdlbjVfcGlwLT5l bXB0eV9idWYpOw0KKyAgICAgICAgICAgICAgIGlmIChsZW5ndGggPT0gR0VONV9SRVNQX0xFTkdU SF9TSVpFKSB7DQorICAgICAgICAgICAgICAgICAgICAgICBlbXB0eV9jb3VudCsrOw0KKyAgICAg ICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgfSBlbHNlIGlmIChs ZW5ndGggPiBDWUFQQV9SRUdfTUFQX1NJWkUpIHsNCisgICAgICAgICAgICAgICAgICAgICAgIC8q IHNob3VsZCBub3QgaGFwcGVuICovDQorICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJ TlZBTDsNCisgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxlbmd0aCA9PSAwKSB7DQorICAgICAg ICAgICAgICAgICAgICAgICAvKiBhcHBsaWNhdGlvbiBvciBib290bG9hZGVyIGxhdW5jaCBkYXRh IHBvbGxlZCBvdXQuICovDQorICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSBHRU41X1JF U1BfTEVOR1RIX1NJWkU7DQorICAgICAgICAgICAgICAgICAgICAgICBpZiAoYnVmICYmIGJ1Zl9s ZW4gJiYgZnVuYyAmJg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jKGN5YXBh LCBnZW41X3BpcC0+ZW1wdHlfYnVmLCBsZW5ndGgpKSB7DQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxlbmd0aCA9IG1pbihidWZfbGVuLCBsZW5ndGgpOw0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtZW1jcHkoYnVmLCBnZW41X3BpcC0+ZW1wdHlfYnVmLCBsZW5ndGgp Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbGVuID0gbGVuZ3RoOw0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiByZXNwb25zZSBmb3VuZCwgc3VjY2Vzcy4gKi8N CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICAgICAg ICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250 aW51ZTsNCisgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICB9DQorDQor ICAgICAgICAgICAgICAgcmV0ID0gY3lhcGFfaTJjX3BpcF9yZWFkKGN5YXBhLCBnZW41X3BpcC0+ ZW1wdHlfYnVmLCBsZW5ndGgpOw0KKyAgICAgICAgICAgICAgIGlmIChyZXQgPCAwKQ0KKyAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCisNCisgICAgICAgICAgICAgICByZXBvcnRf Y291bnQtLTsNCisgICAgICAgICAgICAgICBlbXB0eV9jb3VudCA9IDA7DQorICAgICAgICAgICAg ICAgbGVuZ3RoID0gZ2V0X3VuYWxpZ25lZF9sZTE2KGdlbjVfcGlwLT5lbXB0eV9idWYpOw0KKyAg ICAgICAgICAgICAgIGlmIChsZW5ndGggPD0gR0VONV9SRVNQX0xFTkdUSF9TSVpFKQ0KKyAgICAg ICAgICAgICAgICAgICAgICAgZW1wdHlfY291bnQrKzsNCisgICAgICAgICAgICAgICBlbHNlIGlm IChidWYgJiYgYnVmX2xlbiAmJiBmdW5jICYmDQorICAgICAgICAgICAgICAgICAgICAgICBmdW5j KGN5YXBhLCBnZW41X3BpcC0+ZW1wdHlfYnVmLCBsZW5ndGgpKSB7DQorICAgICAgICAgICAgICAg ICAgICAgICBsZW5ndGggPSBtaW4oYnVmX2xlbiwgbGVuZ3RoKTsNCisgICAgICAgICAgICAgICAg ICAgICAgIG1lbWNweShidWYsIGdlbjVfcGlwLT5lbXB0eV9idWYsIGxlbmd0aCk7DQorICAgICAg ICAgICAgICAgICAgICAgICAqbGVuID0gbGVuZ3RoOw0KKyAgICAgICAgICAgICAgICAgICAgICAg LyogcmVzcG9uc2UgZm91bmQsIHN1Y2Nlc3MuICovDQorICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gMDsNCisgICAgICAgICAgICAgICB9DQorDQorICAgICAgICAgICAgICAgcmV0ID0gLUVJ TlZBTDsNCisgICAgICAgfSB3aGlsZSAocmVwb3J0X2NvdW50KTsNCisNCisgICAgICAgcmV0dXJu IHJldDsNCit9DQorDQorc3RhdGljIGludCBjeWFwYV9kb19pMmNfcGlwX2NtZF9pcnFfc3luYygN CisgICAgICAgICAgICAgICBzdHJ1Y3QgY3lhcGEgKmN5YXBhLA0KKyAgICAgICAgICAgICAgIHU4 ICpjbWQsIHNpemVfdCBjbWRfbGVuLA0KKyAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdGlt ZW91dCkNCit7DQorICAgICAgIGludCByZXQ7DQorDQorICAgICAgIC8qIHdhaXQgZm9yIGludGVy cnVwdCB0byBzZXQgcmVhZHkgY29tcGxldGlvbiAqLw0KKyAgICAgICBpbml0X2NvbXBsZXRpb24o JmdlbjVfcGlwLT5jbWRfcmVhZHkpOw0KKw0KKyAgICAgICBhdG9taWNfaW5jKCZnZW41X3BpcC0+ Y21kX2lzc3VlZCk7DQorICAgICAgIHJldCA9IGN5YXBhX2kyY19waXBfd3JpdGUoY3lhcGEsIGNt ZCwgY21kX2xlbik7DQorICAgICAgIGlmIChyZXQpIHsNCisgICAgICAgICAgICAgICBhdG9taWNf ZGVjKCZnZW41X3BpcC0+Y21kX2lzc3VlZCk7DQorICAgICAgICAgICAgICAgcmV0dXJuIChyZXQg PCAwKSA/IHJldCA6IC1FSU87DQorICAgICAgIH0NCisNCisgICAgICAgLyogd2FpdCBmb3IgaW50 ZXJydXB0IHRvIGluZGljYXRlIGNvbW1hbmQgaXMgY29tcGxldGVkLiAqLw0KKyAgICAgICB0aW1l b3V0ID0gd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KCZnZW41X3BpcC0+Y21kX3JlYWR5LA0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2Vjc190b19qaWZmaWVzKHRpbWVvdXQp KTsNCisgICAgICAgaWYgKHRpbWVvdXQgPT0gMCkgew0KKyAgICAgICAgICAgICAgIGF0b21pY19k ZWMoJmdlbjVfcGlwLT5jbWRfaXNzdWVkKTsNCisgICAgICAgICAgICAgICByZXR1cm4gLUVUSU1F RE9VVDsNCisgICAgICAgfQ0KKyAgICAgICByZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGludCBj eWFwYV9pMmNfcGlwX2NtZF9pcnFfc3luYygNCisgICAgICAgICAgICAgICBzdHJ1Y3QgY3lhcGEg KmN5YXBhLA0KKyAgICAgICAgICAgICAgIHU4ICpjbWQsIGludCBjbWRfbGVuLA0KKyAgICAgICAg ICAgICAgIHU4ICpyZXNwX2RhdGEsIGludCAqcmVzcF9sZW4sDQorICAgICAgICAgICAgICAgdW5z aWduZWQgbG9uZyB0aW1lb3V0LA0KKyAgICAgICAgICAgICAgIGNiX3NvcnQgZnVuYykNCit7DQor ICAgICAgIGludCByZXQ7DQorICAgICAgIGludCB0cmllczsNCisgICAgICAgaW50IGxlbmd0aDsN CisNCisgICAgICAgaWYgKCFjbWQgfHwgIWNtZF9sZW4pDQorICAgICAgICAgICAgICAgcmV0dXJu IC1FSU5WQUw7DQorDQorICAgICAgIC8qIGNvbW1hbmRzIG11c3QgYmUgc2VyaWFsaXplZC4gKi8N CisgICAgICAgbXV0ZXhfbG9jaygmZ2VuNV9waXAtPmNtZF9sb2NrKTsNCisNCisgICAgICAgZ2Vu NV9waXAtPnJlc3Bfc29ydF9mdW5jID0gZnVuYzsNCisgICAgICAgZ2VuNV9waXAtPnJlc3BfZGF0 YSA9IHJlc3BfZGF0YTsNCisgICAgICAgZ2VuNV9waXAtPnJlc3BfbGVuID0gcmVzcF9sZW47DQor DQorICAgICAgIGlmIChjbWRfbGVuID49IEdFTjVfTUlOX0FQUF9DTURfTEVOR1RIICYmDQorICAg ICAgICAgICAgICAgICAgICAgICBjbWRbNF0gPT0gR0VONV9BUFBfQ01EX1JFUE9SVF9JRCkgew0K KyAgICAgICAgICAgICAgIC8qIGFwcGxpY2F0aW9uIGNvbW1hbmQgKi8NCisgICAgICAgICAgICAg ICBnZW41X3BpcC0+aW5fcHJvZ3Jlc3NfY21kID0gY21kWzZdICYgMHg3ZjsNCisgICAgICAgfSBl bHNlIGlmIChjbWRfbGVuID49IEdFTjVfTUlOX0JMX0NNRF9MRU5HVEggJiYNCisgICAgICAgICAg ICAgICAgICAgICAgIGNtZFs0XSA9PSBHRU41X0JMX0NNRF9SRVBPUlRfSUQpIHsNCisgICAgICAg ICAgICAgICAvKiBib290bG9hZGVyIGNvbW1hbmQgKi8NCisgICAgICAgICAgICAgICBnZW41X3Bp cC0+aW5fcHJvZ3Jlc3NfY21kID0gY21kWzddOw0KKyAgICAgICB9DQorDQorICAgICAgIC8qIHNl bmQgY29tbWFuZCBkYXRhLCB3YWl0IGFuZCByZWFkIG91dHB1dCByZXNwb25zZSBkYXRhJ3MgbGVu Z3RoLiAqLw0KKyAgICAgICBpZiAoY3lhcGFfaXNfaXJxX2VuYWJsZWQoY3lhcGEpKSB7DQorICAg ICAgICAgICAgICAgcmV0ID0gY3lhcGFfZG9faTJjX3BpcF9jbWRfaXJxX3N5bmMoY3lhcGEsIGNt ZCwgY21kX2xlbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGltZW91dCk7DQorICAgICAgICAgICAgICAgaWYgKHJldCA9PSAtRVRJTUVE T1VUICYmIHJlc3BfZGF0YSAmJg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNw X2xlbiAmJiAqcmVzcF9sZW4gIT0gMCAmJiBmdW5jKSB7DQorICAgICAgICAgICAgICAgICAgICAg ICAvKg0KKyAgICAgICAgICAgICAgICAgICAgICAgICogZm9yIHNvbWUgb2xkIHZlcnNpb24gd2l0 aCBzb21lIHVua25vd24gcmVhc29ucywNCisgICAgICAgICAgICAgICAgICAgICAgICAqIHRoZXJl IHdhcyBubyBpbnRlcnJ1cHQgZm9yIHRoZSBjb21tYW5kIHJlc3BvbnNlIGRhdGEsDQorICAgICAg ICAgICAgICAgICAgICAgICAgKiBzbyBuZWVkIHRvIHBvbGwgaGVyZSB0byB0cnkgdG8gZ2V0IHRo ZSByZXNwb25zZSBkYXRhLg0KKyAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAgICAgICAg ICAgICAgICAgICAgICByZXQgPSBjeWFwYV9lbXB0eV9waXBfb3V0cHV0X2RhdGEoY3lhcGEsDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcF9kYXRhLCByZXNwX2xl biwgZnVuYyk7DQorICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV0IHx8ICpyZXNwX2xlbiA9 PSAwKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSByZXQgPyByZXQgOiAt RVRJTUVET1VUOw0KKyAgICAgICAgICAgICAgIH0NCisgICAgICAgfSBlbHNlIHsNCisgICAgICAg ICAgICAgICByZXQgPSBjeWFwYV9pMmNfcGlwX3dyaXRlKGN5YXBhLCBjbWQsIGNtZF9sZW4pOw0K KyAgICAgICAgICAgICAgIGlmIChyZXQpIHsNCisgICAgICAgICAgICAgICAgICAgICAgIHJldCA9 IHJldCA8IDAgPyByZXQgOiAtRUlPOw0KKyAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7 DQorICAgICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgICAgIHRyaWVzID0gdGltZW91dCAv IDU7DQorICAgICAgICAgICAgICAgbGVuZ3RoID0gKnJlc3BfbGVuOw0KKyAgICAgICAgICAgICAg IGlmIChyZXNwX2RhdGEgJiYgcmVzcF9sZW4gJiYgbGVuZ3RoICE9IDAgJiYgZnVuYykgew0KKyAg ICAgICAgICAgICAgICAgICAgICAgZG8gew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1c2xlZXBfcmFuZ2UoMzAwMCwgNTAwMCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICpyZXNwX2xlbiA9IGxlbmd0aDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmV0ID0gY3lhcGFfZW1wdHlfcGlwX291dHB1dF9kYXRhKGN5YXBhLA0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcF9kYXRhLCByZXNwX2xlbiwgZnVu Yyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXQgfHwgKnJlc3BfbGVu ID09IDApDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7 DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgICAgIH0g d2hpbGUgKC0tdHJpZXMgPiAwKTsNCisgICAgICAgICAgICAgICAgICAgICAgIGlmICgocmV0IHx8 ICpyZXNwX2xlbiA9PSAwKSB8fCB0cmllcyA8PSAwKQ0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZXQgPSByZXQgPyByZXQgOiAtRVRJTUVET1VUOw0KKyAgICAgICAgICAgICAgIH0N CisgICAgICAgfQ0KKw0KK291dDoNCisgICAgICAgZ2VuNV9waXAtPnJlc3Bfc29ydF9mdW5jID0g TlVMTDsNCisgICAgICAgZ2VuNV9waXAtPnJlc3BfZGF0YSA9IE5VTEw7DQorICAgICAgIGdlbjVf cGlwLT5yZXNwX2xlbiA9IE5VTEw7DQorICAgICAgIGdlbjVfcGlwLT5pbl9wcm9ncmVzc19jbWQg PSBUU0dfSU5WQUxJRF9DTUQ7DQorDQorICAgICAgIG11dGV4X3VubG9jaygmZ2VuNV9waXAtPmNt ZF9sb2NrKTsNCisgICAgICAgcmV0dXJuIHJldDsNCit9DQorDQorYm9vbCBjeWFwYV9nZW41X3Nv cnRfdHNnX3BpcF9ibF9yZXNwX2RhdGEoc3RydWN0IGN5YXBhICpjeWFwYSwNCisgICAgICAgICAg ICAgICB1OCAqZGF0YSwgaW50IGxlbikNCit7DQorICAgICAgIGlmICghZGF0YSB8fCBsZW4gPCBH RU41X01JTl9CTF9SRVNQX0xFTkdUSCkNCisgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQor DQorICAgICAgIC8qIGJvb3Rsb2FkZXIgaW5wdXQgcmVwb3J0IGlkIDMwaCAqLw0KKyAgICAgICBp ZiAoZGF0YVtHRU41X1JFU1BfUkVQT1JUX0lEX09GRlNFVF0gPT0gR0VONV9CTF9SRVNQX1JFUE9S VF9JRCAmJg0KKyAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtHRU41X1JFU1BfUlNWRF9PRkZT RVRdID09IEdFTjVfUkVTUF9SU1ZEX0tFWSAmJg0KKyAgICAgICAgICAgICAgICAgICAgICAgZGF0 YVtHRU41X1JFU1BfQkxfU09QX09GRlNFVF0gPT0gR0VONV9TT1BfS0VZKQ0KKyAgICAgICAgICAg ICAgIHJldHVybiB0cnVlOw0KKw0KKyAgICAgICByZXR1cm4gZmFsc2U7DQorfQ0KKw0KK2Jvb2wg Y3lhcGFfZ2VuNV9zb3J0X3RzZ19waXBfYXBwX3Jlc3BfZGF0YShzdHJ1Y3QgY3lhcGEgKmN5YXBh LA0KKyAgICAgICAgICAgICAgIHU4ICpkYXRhLCBpbnQgbGVuKQ0KK3sNCisgICAgICAgaW50IHJl c3BfbGVuOw0KKw0KKyAgICAgICBpZiAoIWRhdGEgfHwgbGVuIDwgR0VONV9NSU5fQVBQX1JFU1Bf TEVOR1RIKQ0KKyAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCisNCisgICAgICAgaWYgKGRh dGFbR0VONV9SRVNQX1JFUE9SVF9JRF9PRkZTRVRdID09IEdFTjVfQVBQX1JFU1BfUkVQT1JUX0lE ICYmDQorICAgICAgICAgICAgICAgICAgICAgICBkYXRhW0dFTjVfUkVTUF9SU1ZEX09GRlNFVF0g PT0gR0VONV9SRVNQX1JTVkRfS0VZKSB7DQorICAgICAgICAgICAgICAgcmVzcF9sZW4gPSBnZXRf dW5hbGlnbmVkX2xlMTYoJmRhdGFbR0VONV9SRVNQX0xFTkdUSF9PRkZTRVRdKTsNCisgICAgICAg ICAgICAgICBpZiAoR0VUX0dFTjVfQ01EX0NPREUoZGF0YVtHRU41X1JFU1BfQVBQX0NNRF9PRkZT RVRdKSA9PSAweDAwICYmDQorICAgICAgICAgICAgICAgICAgICAgICByZXNwX2xlbiA9PSBHRU41 X1VOU1VQUE9SVEVEX0NNRF9SRVNQX0xFTkdUSCAmJg0KKyAgICAgICAgICAgICAgICAgICAgICAg ZGF0YVs1XSA9PSBnZW41X3BpcC0+aW5fcHJvZ3Jlc3NfY21kKSB7DQorICAgICAgICAgICAgICAg ICAgICAgICAvKiB1bnN1cHBvcnRlZCBjb21tYW5kIGNvZGUgKi8NCisgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBmYWxzZTsNCisgICAgICAgICAgICAgICB9IGVsc2UgaWYgKEdFVF9HRU41 X0NNRF9DT0RFKGRhdGFbR0VONV9SRVNQX0FQUF9DTURfT0ZGU0VUXSkgPT0NCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ2VuNV9waXAtPmluX3Byb2dyZXNzX2NtZCkgew0KKyAgICAg ICAgICAgICAgICAgICAgICAgLyogY29ycmVjdCBjb21tYW5kIHJlc3BvbnNlIHJlY2VpdmVkICov DQorICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCisgICAgICAgICAgICAgICB9 DQorICAgICAgIH0NCisNCisgICAgICAgcmV0dXJuIGZhbHNlOw0KK30NCisNCitib29sIGN5YXBh X2dlbjVfc29ydF9hcHBsaWNhdGlvbl9sYXVuY2hfZGF0YShzdHJ1Y3QgY3lhcGEgKmN5YXBhLA0K KyAgICAgICAgICAgICAgIHU4ICpidWYsIGludCBsZW4pDQorew0KKyAgICAgICBpZiAoYnVmID09 IE5VTEwgfHwgbGVuIDwgR0VONV9SRVNQX0xFTkdUSF9TSVpFKQ0KKyAgICAgICAgICAgICAgIHJl dHVybiBmYWxzZTsNCisNCisgICAgICAgLyoNCisgICAgICAgICogQWZ0ZXIgcmVzZXQgb3IgcG93 ZXIgb24sIHRyYWNrcGFkIGRldmljZSBhbHdheXMgc2V0cyB0byAweDAwIDB4MDANCisgICAgICAg ICogdG8gaW5kaWNhdGUgYSByZXNldCBvciBwb3dlciBvbiBldmVudC4NCisgICAgICAgICovDQor ICAgICAgIGlmIChidWZbMF0gPT0gMCAmJiBidWZbMV0gPT0gMCkNCisgICAgICAgICAgICAgICBy ZXR1cm4gdHJ1ZTsNCisNCisgICAgICAgcmV0dXJuIGZhbHNlOw0KK30NCisNCitzdGF0aWMgYm9v bCBjeWFwYV9nZW41X3NvcnRfaGlkX2Rlc2NyaXB0b3JfZGF0YShzdHJ1Y3QgY3lhcGEgKmN5YXBh LA0KKyAgICAgICAgICAgICAgIHU4ICpidWYsIGludCBsZW4pDQorew0KKyAgICAgICBpbnQgcmVz cF9sZW47DQorICAgICAgIGludCBtYXhfb3V0cHV0X2xlbjsNCisNCisgICAgICAgLyogY2hlY2sg aGlkIGRlc2NyaXB0b3IuICovDQorICAgICAgIGlmIChsZW4gIT0gR0VONV9ISURfREVTQ1JJUFRP Ul9TSVpFKQ0KKyAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCisNCisgICAgICAgcmVzcF9s ZW4gPSBnZXRfdW5hbGlnbmVkX2xlMTYoJmJ1ZltHRU41X1JFU1BfTEVOR1RIX09GRlNFVF0pOw0K KyAgICAgICBtYXhfb3V0cHV0X2xlbiA9IGdldF91bmFsaWduZWRfbGUxNigmYnVmWzE2XSk7DQor ICAgICAgIGlmIChyZXNwX2xlbiA9PSBHRU41X0hJRF9ERVNDUklQVE9SX1NJWkUpIHsNCisgICAg ICAgICAgICAgICBpZiAoYnVmWzJdID09IEdFTjVfQkxfSElEX1JFUE9SVF9JRCAmJg0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfb3V0cHV0X2xlbiA9PSBHRU41X0JMX01BWF9P VVRQVVRfTEVOR1RIKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAvKiBCTCBtb2RlIEhJRCBE ZXNjcmlwdG9yICovDQorICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCisgICAg ICAgICAgICAgICB9IGVsc2UgaWYgKGJ1ZlsyXSA9PSBHRU41X0FQUF9ISURfUkVQT1JUX0lEICYm DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9vdXRwdXRfbGVuID09IEdFTjVf QVBQX01BWF9PVVRQVVRfTEVOR1RIKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAvKiBBUFAg bW9kZSBISUQgRGVzY3JpcHRvciAqLw0KKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy dWU7DQorICAgICAgICAgICAgICAgfQ0KKyAgICAgICB9DQorDQorICAgICAgIHJldHVybiBmYWxz ZTsNCit9DQorDQorc3RhdGljIGJvb2wgY3lhcGFfZ2VuNV9zb3J0X2RlZXBfc2xlZXBfZGF0YShz dHJ1Y3QgY3lhcGEgKmN5YXBhLA0KKyAgICAgICAgICAgICAgIHU4ICpidWYsIGludCBsZW4pDQor ew0KKyAgICAgICBpZiAobGVuID09IEdFTjVfREVFUF9TTEVFUF9SRVNQX0xFTkdUSCAmJg0KKyAg ICAgICAgICAgICAgIGJ1ZlsyXSA9PSBHRU41X0FQUF9ERUVQX1NMRUVQX1JFUE9SVF9JRCAmJg0K KyAgICAgICAgICAgICAgIChidWZbNF0gJiBHRU41X0RFRVBfU0xFRVBfT1BDT0RFX01BU0spID09 DQorICAgICAgICAgICAgICAgICAgICAgICBHRU41X0RFRVBfU0xFRVBfT1BDT0RFKQ0KKyAgICAg ICAgICAgICAgIHJldHVybiB0cnVlOw0KKyAgICAgICByZXR1cm4gZmFsc2U7DQorfQ0KKw0KK3N0 YXRpYyBpbnQgZ2VuNV9pZGxlX3N0YXRlX3BhcnNlKHN0cnVjdCBjeWFwYSAqY3lhcGEpDQorew0K KyAgICAgICBpbnQgcmV0Ow0KKyAgICAgICBpbnQgbGVuZ3RoOw0KKyAgICAgICB1OCBjbWRbMl07 DQorICAgICAgIHU4IHJlc3BfZGF0YVszMl07DQorICAgICAgIGludCBtYXhfb3V0cHV0X2xlbjsN CisNCisgICAgICAgLyogZHVtcCBhbGwgYnVmZmVyZWQgZGF0YSBmaXJzdGx5IGZvciB0aGUgc2l0 dWF0aW9uDQorICAgICAgICAqIHdoZW4gdGhlIHRyYWNrcGFkIGlzIGp1c3QgcG93ZXIgb24gdGhl IGN5YXBhIGdvIGhlcmUuICovDQorICAgICAgIGN5YXBhX2VtcHR5X3BpcF9vdXRwdXRfZGF0YShj eWFwYSwgTlVMTCwgTlVMTCwgTlVMTCk7DQorDQorICAgICAgIG1lbXNldChyZXNwX2RhdGEsIDAs IHNpemVvZihyZXNwX2RhdGEpKTsNCisgICAgICAgcmV0ID0gY3lhcGFfaTJjX3BpcF9yZWFkKGN5 YXBhLCByZXNwX2RhdGEsIDMpOw0KKyAgICAgICBpZiAocmV0ICE9IDMpDQorICAgICAgICAgICAg ICAgcmV0dXJuIHJldCA8IDAgPyByZXQgOiAtRUlPOw0KKw0KKyAgICAgICBsZW5ndGggPSBnZXRf dW5hbGlnbmVkX2xlMTYoJnJlc3BfZGF0YVtHRU41X1JFU1BfTEVOR1RIX09GRlNFVF0pOw0KKyAg ICAgICBpZiAobGVuZ3RoID09IEdFTjVfUkVTUF9MRU5HVEhfU0laRSkgew0KKyAgICAgICAgICAg ICAgIC8qIG5vcm1hbCBzdGF0ZSBvZiBHZW41IHdpdGggbm8gZGF0YSB0byByZXNwb3NlICovDQor ICAgICAgICAgICAgICAgY3lhcGEtPmdlbiA9IENZQVBBX0dFTjU7DQorDQorICAgICAgICAgICAg ICAgY3lhcGFfZW1wdHlfcGlwX291dHB1dF9kYXRhKGN5YXBhLCBOVUxMLCBOVUxMLCBOVUxMKTsN CisNCisgICAgICAgICAgICAgICAvKiByZWFkIGRlc2NyaXB0aW9uIGZyb20gdHJhY2twYWQgZGV2 aWNlICovDQorICAgICAgICAgICAgICAgY21kWzBdID0gMHgwMTsNCisgICAgICAgICAgICAgICBj bWRbMV0gPSAweDAwOw0KKyAgICAgICAgICAgICAgIGxlbmd0aCA9IEdFTjVfSElEX0RFU0NSSVBU T1JfU0laRTsNCisgICAgICAgICAgICAgICByZXQgPSBjeWFwYV9pMmNfcGlwX2NtZF9pcnFfc3lu YyhjeWFwYSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kLCBHRU41X1JFU1Bf TEVOR1RIX1NJWkUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BfZGF0YSwg Jmxlbmd0aCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAwLA0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjeWFwYV9nZW41X3NvcnRfaGlkX2Rlc2NyaXB0b3JfZGF0 YSk7DQorICAgICAgICAgICAgICAgaWYgKHJldCkNCisgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiByZXQ7DQorDQorICAgICAgICAgICAgICAgbGVuZ3RoID0gZ2V0X3VuYWxpZ25lZF9sZTE2 KA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzcF9kYXRhW0dFTjVfUkVTUF9M RU5HVEhfT0ZGU0VUXSk7DQorICAgICAgICAgICAgICAgbWF4X291dHB1dF9sZW4gPSBnZXRfdW5h bGlnbmVkX2xlMTYoJnJlc3BfZGF0YVsxNl0pOw0KKyAgICAgICAgICAgICAgIGlmICgobGVuZ3Ro ID09IEdFTjVfSElEX0RFU0NSSVBUT1JfU0laRSB8fA0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBsZW5ndGggPT0gR0VONV9SRVNQX0xFTkdUSF9TSVpFKSAmJg0KKyAgICAgICAgICAg ICAgICAgICAgICAgcmVzcF9kYXRhWzJdID09IEdFTjVfQkxfSElEX1JFUE9SVF9JRCAmJg0KKyAg ICAgICAgICAgICAgICAgICAgICAgbWF4X291dHB1dF9sZW4gPT0gR0VONV9CTF9NQVhfT1VUUFVU X0xFTkdUSCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgLyogQkwgbW9kZSBISUQgRGVzY3Jp cHRpb24gcmVhZCAqLw0KKyAgICAgICAgICAgICAgICAgICAgICAgY3lhcGEtPnN0YXRlID0gQ1lB UEFfU1RBVEVfR0VONV9CTDsNCisgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChsZW5ndGggPT0g R0VONV9ISURfREVTQ1JJUFRPUl9TSVpFIHx8DQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxlbmd0aCA9PSBHRU41X1JFU1BfTEVOR1RIX1NJWkUpICYmDQorICAgICAgICAgICAgICAg ICAgICAgICByZXNwX2RhdGFbMl0gPT0gR0VONV9BUFBfSElEX1JFUE9SVF9JRCAmJg0KKyAgICAg ICAgICAgICAgICAgICAgICAgbWF4X291dHB1dF9sZW4gPT0gR0VONV9BUFBfTUFYX09VVFBVVF9M RU5HVEgpIHsNCisgICAgICAgICAgICAgICAgICAgICAgIC8qIEFQUCBtb2RlIEhJRCBEZXNjcmlw dGlvbiByZWFkICovDQorICAgICAgICAgICAgICAgICAgICAgICBjeWFwYS0+c3RhdGUgPSBDWUFQ QV9TVEFURV9HRU41X0FQUDsNCisgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAg ICAgICAgICAgICAgLyogc2hvdWxkIG5vdCBoYXBwZW4hISEgKi8NCisgICAgICAgICAgICAgICAg ICAgICAgIGN5YXBhLT5zdGF0ZSA9IENZQVBBX1NUQVRFX05PX0RFVklDRTsNCisgICAgICAgICAg ICAgICB9DQorICAgICAgIH0NCisNCisgICAgICAgcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBp bnQgZ2VuNV9oaWRfZGVzY3JpcHRpb25faGVhZGVyX3BhcnNlKHN0cnVjdCBjeWFwYSAqY3lhcGEs IHU4ICpyZWdfZGF0YSkNCit7DQorICAgICAgIGludCByZXQ7DQorICAgICAgIGludCBsZW5ndGg7 DQorICAgICAgIHU4IHJlc3BfZGF0YVszMl07DQorICAgICAgIGludCBtYXhfb3V0cHV0X2xlbjsN CisNCisgICAgICAgLyogMHgyMCAweDAwIDB4RjcgaXMgR2VuNSBBcHBsaWNhdGlvbiBISUQgRGVz Y3JpcHRpb24gSGVhZGVyOw0KKyAgICAgICAgKiAweDIwIDB4MDAgMHhGRiBpcyBHZW41IEJvb2xv YWRlciBISUQgRGVzY3JpcHRpb24gSGVhZGVyLg0KKyAgICAgICAgKg0KKyAgICAgICAgKiBtdXN0 IHJlYWQgSElEIERlc2NyaXB0aW9uIGNvbnRlbnQgdGhyb3VnaCBvdXQsDQorICAgICAgICAqIG90 aGVyd2lzZSBHZW41IHRyYWNrcGFkIGNhbm5vdCByZXBvbnNlIG5leHQgY29tbWFuZA0KKyAgICAg ICAgKiBvciByZXBvcnQgYW55IHRvdWNoIG9yIGJ1dHRvbiBkYXRhLg0KKyAgICAgICAgKi8NCisg ICAgICAgcmV0ID0gY3lhcGFfaTJjX3BpcF9yZWFkKGN5YXBhLCByZXNwX2RhdGEsDQorICAgICAg ICAgICAgICAgICAgICAgICBHRU41X0hJRF9ERVNDUklQVE9SX1NJWkUpOw0KKyAgICAgICBpZiAo cmV0ICE9IEdFTjVfSElEX0RFU0NSSVBUT1JfU0laRSkNCisgICAgICAgICAgICAgICByZXR1cm4g cmV0IDwgMCA/IHJldCA6IC1FSU87DQorICAgICAgIGxlbmd0aCA9IGdldF91bmFsaWduZWRfbGUx NigmcmVzcF9kYXRhW0dFTjVfUkVTUF9MRU5HVEhfT0ZGU0VUXSk7DQorICAgICAgIG1heF9vdXRw dXRfbGVuID0gZ2V0X3VuYWxpZ25lZF9sZTE2KCZyZXNwX2RhdGFbMTZdKTsNCisgICAgICAgaWYg KGxlbmd0aCA9PSBHRU41X1JFU1BfTEVOR1RIX1NJWkUpIHsNCisgICAgICAgICAgICAgICBpZiAo cmVnX2RhdGFbMl0gPT0gR0VONV9CTF9ISURfUkVQT1JUX0lEKSB7DQorICAgICAgICAgICAgICAg ICAgICAgICAvKiBCTCBtb2RlIEhJRCBEZXNjcmlwdGlvbiBoYXMgYmVlbiBwcmV2aW91c2x5DQor ICAgICAgICAgICAgICAgICAgICAgICAgKiByZWFkIG91dCAqLw0KKyAgICAgICAgICAgICAgICAg ICAgICAgY3lhcGEtPmdlbiA9IENZQVBBX0dFTjU7DQorICAgICAgICAgICAgICAgICAgICAgICBj eWFwYS0+c3RhdGUgPSBDWUFQQV9TVEFURV9HRU41X0JMOw0KKyAgICAgICAgICAgICAgIH0gZWxz ZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAvKiBBUFAgbW9kZSBISUQgRGVzY3JpcHRpb24g aGFzIGJlZW4gcHJldmlvdXNseQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICogcmVhZCBvdXQg Ki8NCisgICAgICAgICAgICAgICAgICAgICAgIGN5YXBhLT5nZW4gPSBDWUFQQV9HRU41Ow0KKyAg ICAgICAgICAgICAgICAgICAgICAgY3lhcGEtPnN0YXRlID0gQ1lBUEFfU1RBVEVfR0VONV9BUFA7 DQorICAgICAgICAgICAgICAgfQ0KKyAgICAgICB9IGVsc2UgaWYgKGxlbmd0aCA9PSBHRU41X0hJ RF9ERVNDUklQVE9SX1NJWkUgJiYNCisgICAgICAgICAgICAgICAgICAgICAgIHJlc3BfZGF0YVsy XSA9PSBHRU41X0JMX0hJRF9SRVBPUlRfSUQgJiYNCisgICAgICAgICAgICAgICAgICAgICAgIG1h eF9vdXRwdXRfbGVuID09IEdFTjVfQkxfTUFYX09VVFBVVF9MRU5HVEgpIHsNCisgICAgICAgICAg ICAgICAvKiBCTCBtb2RlIEhJRCBEZXNjcmlwdGlvbiByZWFkICovDQorICAgICAgICAgICAgICAg Y3lhcGEtPmdlbiA9IENZQVBBX0dFTjU7DQorICAgICAgICAgICAgICAgY3lhcGEtPnN0YXRlID0g Q1lBUEFfU1RBVEVfR0VONV9CTDsNCisgICAgICAgfSBlbHNlIGlmIChsZW5ndGggPT0gR0VONV9I SURfREVTQ1JJUFRPUl9TSVpFICYmDQorICAgICAgICAgICAgICAgICAgICAgICByZXNwX2RhdGFb Ml0gPT0gR0VONV9BUFBfSElEX1JFUE9SVF9JRCAmJg0KKyAgICAgICAgICAgICAgICAgICAgICAg bWF4X291dHB1dF9sZW4gPT0gR0VONV9BUFBfTUFYX09VVFBVVF9MRU5HVEgpIHsNCisgICAgICAg ICAgICAgICAvKiBBUFAgbW9kZSBISUQgRGVzY3JpcHRpb24gcmVhZCAqLw0KKyAgICAgICAgICAg ICAgIGN5YXBhLT5nZW4gPSBDWUFQQV9HRU41Ow0KKyAgICAgICAgICAgICAgIGN5YXBhLT5zdGF0 ZSA9IENZQVBBX1NUQVRFX0dFTjVfQVBQOw0KKyAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAg ICAgIC8qIHNob3VsZCBub3QgaGFwcGVuISEhICovDQorICAgICAgICAgICAgICAgY3lhcGEtPnN0 YXRlID0gQ1lBUEFfU1RBVEVfTk9fREVWSUNFOw0KKyAgICAgICB9DQorDQorICAgICAgIHJldHVy biAwOw0KK30NCisNCitzdGF0aWMgaW50IGdlbjVfcmVwb3J0X2RhdGFfaGVhZGVyX3BhcnNlKHN0 cnVjdCBjeWFwYSAqY3lhcGEsIHU4ICpyZWdfZGF0YSkNCit7DQorICAgICAgIGludCBsZW5ndGg7 DQorDQorICAgICAgIGxlbmd0aCA9IGdldF91bmFsaWduZWRfbGUxNigmcmVnX2RhdGFbR0VONV9S RVNQX0xFTkdUSF9PRkZTRVRdKTsNCisgICAgICAgc3dpdGNoIChyZWdfZGF0YVsyXSkgew0KKyAg ICAgICBjYXNlIEdFTjVfVE9VQ0hfUkVQT1JUX0lEOg0KKyAgICAgICAgICAgICAgIGlmIChsZW5n dGggPCBHRU41X1RPVUNIX1JFUE9SVF9IRUFEX1NJWkUgfHwNCisgICAgICAgICAgICAgICAgICAg ICAgIGxlbmd0aCA+IEdFTjVfVE9VQ0hfUkVQT1JUX01BWF9TSVpFKQ0KKyAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQorICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAg IGNhc2UgR0VONV9CVE5fUkVQT1JUX0lEOg0KKyAgICAgICBjYXNlIEdFTjVfT0xEX1BVU0hfQlRO X1JFUE9SVF9JRDoNCisgICAgICAgY2FzZSBHRU41X1BVU0hfQlROX1JFUE9SVF9JRDoNCisgICAg ICAgICAgICAgICBpZiAobGVuZ3RoIDwgR0VONV9CVE5fUkVQT1JUX0hFQURfU0laRSB8fA0KKyAg ICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID4gR0VONV9CVE5fUkVQT1JUX01BWF9TSVpFKQ0K KyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQorICAgICAgICAgICAgICAg YnJlYWs7DQorICAgICAgIGNhc2UgR0VONV9XQUtFVVBfRVZFTlRfUkVQT1JUX0lEOg0KKyAgICAg ICAgICAgICAgIGlmIChsZW5ndGggIT0gR0VONV9XQUtFVVBfRVZFTlRfU0laRSkNCisgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KKyAgICAgICAgICAgICAgIGJyZWFrOw0K KyAgICAgICBkZWZhdWx0Og0KKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KKyAgICAg ICB9DQorDQorICAgICAgIGN5YXBhLT5nZW4gPSBDWUFQQV9HRU41Ow0KKyAgICAgICBjeWFwYS0+ c3RhdGUgPSBDWUFQQV9TVEFURV9HRU41X0FQUDsNCisgICAgICAgcmV0dXJuIDA7DQorfQ0KKw0K K3N0YXRpYyBpbnQgZ2VuNV9jbWRfcmVzcF9oZWFkZXJfcGFyc2Uoc3RydWN0IGN5YXBhICpjeWFw YSwgdTggKnJlZ19kYXRhKQ0KK3sNCisgICAgICAgaW50IHJldDsNCisgICAgICAgaW50IGxlbmd0 aDsNCisNCisgICAgICAgLyoNCisgICAgICAgICogbXVzdCByZWFkIHJlcG9ydCBkYXRhIHRocm91 Z2ggb3V0LA0KKyAgICAgICAgKiBvdGhlcndpc2UgR2VuNSB0cmFja3BhZCBjYW5ub3QgcmVwb25z ZSBuZXh0IGNvbW1hbmQNCisgICAgICAgICogb3IgcmVwb3J0IGFueSB0b3VjaCBvciBidXR0b24g ZGF0YS4NCisgICAgICAgICovDQorICAgICAgIGxlbmd0aCA9IGdldF91bmFsaWduZWRfbGUxNigm cmVnX2RhdGFbR0VONV9SRVNQX0xFTkdUSF9PRkZTRVRdKTsNCisgICAgICAgcmV0ID0gY3lhcGFf aTJjX3BpcF9yZWFkKGN5YXBhLCBnZW41X3BpcC0+ZW1wdHlfYnVmLCBsZW5ndGgpOw0KKyAgICAg ICBpZiAocmV0ICE9IGxlbmd0aCkNCisgICAgICAgICAgICAgICByZXR1cm4gcmV0IDwgMCA/IHJl dCA6IC1FSU87DQorDQorICAgICAgIGlmIChsZW5ndGggPT0gR0VONV9SRVNQX0xFTkdUSF9TSVpF KSB7DQorICAgICAgICAgICAgICAgLyogcHJldmlvdXMgY29tbWFuZCBoYXMgcmVhZCB0aGUgZGF0 YSB0aHJvdWdoIG91dC4gKi8NCisgICAgICAgICAgICAgICBpZiAocmVnX2RhdGFbMl0gPT0gR0VO NV9CTF9SRVNQX1JFUE9SVF9JRCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgLyogR2VuNSBC TCBjb21tYW5kIHJlc3BvbnNlIGRhdGEgZGV0ZWN0ZWQgKi8NCisgICAgICAgICAgICAgICAgICAg ICAgIGN5YXBhLT5nZW4gPSBDWUFQQV9HRU41Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgY3lh cGEtPnN0YXRlID0gQ1lBUEFfU1RBVEVfR0VONV9CTDsNCisgICAgICAgICAgICAgICB9IGVsc2Ug ew0KKyAgICAgICAgICAgICAgICAgICAgICAgLyogR2VuNSBBUFAgY29tbWFuZCByZXNwb25zZSBk YXRhIGRldGVjdGVkICovDQorICAgICAgICAgICAgICAgICAgICAgICBjeWFwYS0+Z2VuID0gQ1lB UEFfR0VONTsNCisgICAgICAgICAgICAgICAgICAgICAgIGN5YXBhLT5zdGF0ZSA9IENZQVBBX1NU QVRFX0dFTjVfQVBQOw0KKyAgICAgICAgICAgICAgIH0NCisgICAgICAgfSBlbHNlIGlmIChnZW41 X3BpcC0+ZW1wdHlfYnVmWzJdID09IEdFTjVfQkxfUkVTUF9SRVBPUlRfSUQgJiYNCisgICAgICAg ICAgICAgICAgICAgICAgIGdlbjVfcGlwLT5lbXB0eV9idWZbM10gPT0gR0VONV9SRVNQX1JTVkRf S0VZICYmDQorICAgICAgICAgICAgICAgICAgICAgICBnZW41X3BpcC0+ZW1wdHlfYnVmWzRdID09 IEdFTjVfU09QX0tFWSAmJg0KKyAgICAgICAgICAgICAgICAgICAgICAgZ2VuNV9waXAtPmVtcHR5 X2J1ZltsZW5ndGggLSAxXSA9PQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRU41 X0VPUF9LRVkpIHsNCisgICAgICAgICAgICAgICAvKiBHZW41IEJMIGNvbW1hbmQgcmVzcG9uc2Ug ZGF0YSBkZXRlY3RlZCAqLw0KKyAgICAgICAgICAgICAgIGN5YXBhLT5nZW4gPSBDWUFQQV9HRU41 Ow0KKyAgICAgICAgICAgICAgIGN5YXBhLT5zdGF0ZSA9IENZQVBBX1NUQVRFX0dFTjVfQkw7DQor ICAgICAgIH0gZWxzZSBpZiAoZ2VuNV9waXAtPmVtcHR5X2J1ZlsyXSA9PSBHRU41X0FQUF9SRVNQ X1JFUE9SVF9JRCAmJg0KKyAgICAgICAgICAgICAgICAgICAgICAgZ2VuNV9waXAtPmVtcHR5X2J1 ZlszXSA9PSBHRU41X1JFU1BfUlNWRF9LRVkpIHsNCisgICAgICAgICAgICAgICAvKiBHZW41IEFQ UCBjb21tYW5kIHJlc3BvbnNlIGRhdGEgZGV0ZWN0ZWQgKi8NCisgICAgICAgICAgICAgICBjeWFw YS0+Z2VuID0gQ1lBUEFfR0VONTsNCisgICAgICAgICAgICAgICBjeWFwYS0+c3RhdGUgPSBDWUFQ QV9TVEFURV9HRU41X0FQUDsNCisgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAvKiBz aG91bGQgbm90IGhhcHBlbiEhISAqLw0KKyAgICAgICAgICAgICAgIGN5YXBhLT5zdGF0ZSA9IENZ QVBBX1NUQVRFX05PX0RFVklDRTsNCisgICAgICAgfQ0KKw0KKyAgICAgICByZXR1cm4gMDsNCit9 DQorDQorc3RhdGljIGludCBjeWFwYV9nZW41X3N0YXRlX3BhcnNlKHN0cnVjdCBjeWFwYSAqY3lh cGEsIHU4ICpyZWdfZGF0YSwgaW50IGxlbikNCit7DQorICAgICAgIGludCBsZW5ndGg7DQorDQor ICAgICAgIGlmICghcmVnX2RhdGEgfHwgbGVuIDwgMykNCisgICAgICAgICAgICAgICByZXR1cm4g LUVJTlZBTDsNCisNCisgICAgICAgLyoNCisgICAgICAgICogVHJ5IHRvIGR1bXAgYWxsIGJ1ZmZl cnJlZCBkYXRhIGlmIGl0J3Mga25vd24gZ2VuNSB0cmFja3BhZA0KKyAgICAgICAgKiBiZWZvcmUg ZGV0ZWN0aW5nLiBCZWNhdXNlIHRoZSBpcnEgcm91dGluZSBtYXkgZGlzYWJsZWQNCisgICAgICAg ICogYmVmb3JlIGVudGVyIHRoaXMgcm91dGluZS4NCisgICAgICAgICovDQorICAgICAgIGlmIChj eWFwYS0+Z2VuID09IENZQVBBX0dFTjUpDQorICAgICAgICAgICAgICAgY3lhcGFfZW1wdHlfcGlw X291dHB1dF9kYXRhKGN5YXBhLCBOVUxMLCBOVUxMLCBOVUxMKTsNCisgICAgICAgY3lhcGEtPnN0 YXRlID0gQ1lBUEFfU1RBVEVfTk9fREVWSUNFOw0KKyAgICAgICBjeWFwYV9lbmFibGVfaXJxX3Nh dmUoY3lhcGEpOw0KKw0KKyAgICAgICAvKiBQYXJzZSBiYXNlZCBvbiBHZW41IGNoYXJhY3Rlcmlz dGljIHJlZ2lzdGVycyBhbmQgYml0cyAqLw0KKyAgICAgICBsZW5ndGggPSBnZXRfdW5hbGlnbmVk X2xlMTYoJnJlZ19kYXRhW0dFTjVfUkVTUF9MRU5HVEhfT0ZGU0VUXSk7DQorICAgICAgIGlmIChs ZW5ndGggPT0gMCB8fCBsZW5ndGggPT0gR0VONV9SRVNQX0xFTkdUSF9TSVpFKQ0KKyAgICAgICAg ICAgICAgIGdlbjVfaWRsZV9zdGF0ZV9wYXJzZShjeWFwYSk7DQorICAgICAgIGVsc2UgaWYgKGxl bmd0aCA9PSBHRU41X0hJRF9ERVNDUklQVE9SX1NJWkUgJiYNCisgICAgICAgICAgICAgICAgICAg ICAgIChyZWdfZGF0YVsyXSA9PSBHRU41X0JMX0hJRF9SRVBPUlRfSUQgfHwNCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmVnX2RhdGFbMl0gPT0gR0VONV9BUFBfSElEX1JFUE9SVF9J RCkpDQorICAgICAgICAgICAgICAgZ2VuNV9oaWRfZGVzY3JpcHRpb25faGVhZGVyX3BhcnNlKGN5 YXBhLCByZWdfZGF0YSk7DQorICAgICAgIGVsc2UgaWYgKChsZW5ndGggPT0gR0VONV9BUFBfUkVQ T1JUX0RFU0NSSVBUT1JfU0laRSB8fA0KKyAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID09 IEdFTjVfQVBQX0NPTlRSQUNUX1JFUE9SVF9ERVNDUklQVE9SX1NJWkUpICYmDQorICAgICAgICAg ICAgICAgICAgICAgICByZWdfZGF0YVsyXSA9PSBHRU41X0FQUF9SRVBPUlRfREVTQ1JJUFRPUl9J RCkgew0KKyAgICAgICAgICAgICAgIC8qIDB4RUUgMHgwMCAweEY2IGlzIEdlbjUgQVBQIFJlcG9y dCBEZXNjcmlwdGlvbiBoZWFkZXIuICovDQorICAgICAgICAgICAgICAgY3lhcGEtPmdlbiA9IENZ QVBBX0dFTjU7DQorICAgICAgICAgICAgICAgY3lhcGEtPnN0YXRlID0gQ1lBUEFfU1RBVEVfR0VO NV9BUFA7DQorICAgICAgIH0gZWxzZSBpZiAobGVuZ3RoID09IEdFTjVfQkxfUkVQT1JUX0RFU0NS SVBUT1JfU0laRSAmJg0KKyAgICAgICAgICAgICAgICAgICAgICAgcmVnX2RhdGFbMl0gPT0gR0VO NV9CTF9SRVBPUlRfREVTQ1JJUFRPUl9JRCkgew0KKyAgICAgICAgICAgICAgIC8qIDB4MUQgMHgw MCAweEZFIGlzIEdlbjUgQkwgUmVwb3J0IERlc2NyaXB0aW9yIGhlYWRlci4gKi8NCisgICAgICAg ICAgICAgICBjeWFwYS0+Z2VuID0gQ1lBUEFfR0VONTsNCisgICAgICAgICAgICAgICBjeWFwYS0+ c3RhdGUgPSBDWUFQQV9TVEFURV9HRU41X0JMOw0KKyAgICAgICB9IGVsc2UgaWYgKHJlZ19kYXRh WzJdID09IEdFTjVfVE9VQ0hfUkVQT1JUX0lEIHx8DQorICAgICAgICAgICAgICAgICAgICAgICBy ZWdfZGF0YVsyXSA9PSBHRU41X0JUTl9SRVBPUlRfSUQgfHwNCisgICAgICAgICAgICAgICAgICAg ICAgIHJlZ19kYXRhWzJdID09IEdFTjVfT0xEX1BVU0hfQlROX1JFUE9SVF9JRCB8fA0KKyAgICAg ICAgICAgICAgICAgICAgICAgcmVnX2RhdGFbMl0gPT0gR0VONV9QVVNIX0JUTl9SRVBPUlRfSUQg fHwNCisgICAgICAgICAgICAgICAgICAgICAgIHJlZ19kYXRhWzJdID09IEdFTjVfV0FLRVVQX0VW RU5UX1JFUE9SVF9JRCkNCisgICAgICAgICAgICAgICBnZW41X3JlcG9ydF9kYXRhX2hlYWRlcl9w YXJzZShjeWFwYSwgcmVnX2RhdGEpOw0KKyAgICAgICBlbHNlIGlmIChyZWdfZGF0YVsyXSA9PSBH RU41X0JMX1JFU1BfUkVQT1JUX0lEIHx8DQorICAgICAgICAgICAgICAgICAgICAgICByZWdfZGF0 YVsyXSA9PSBHRU41X0FQUF9SRVNQX1JFUE9SVF9JRCkNCisgICAgICAgICAgICAgICBnZW41X2Nt ZF9yZXNwX2hlYWRlcl9wYXJzZShjeWFwYSwgcmVnX2RhdGEpOw0KKw0KKyAgICAgICBjeWFwYV9p cnFfcmVzdG9yZShjeWFwYSk7DQorICAgICAgIGlmIChjeWFwYS0+Z2VuID09IENZQVBBX0dFTjUg JiYgKGN5YXBhLT5zdGF0ZSA9PSBDWUFQQV9TVEFURV9HRU41X0FQUCB8fA0KKyAgICAgICAgICAg ICAgICAgICAgICAgY3lhcGEtPnN0YXRlID09IENZQVBBX1NUQVRFX0dFTjVfQkwpKSB7DQorICAg ICAgICAgICAgICAgLyoNCisgICAgICAgICAgICAgICAgKiBtdXN0IHJlYWQgdGhlIGNvbnRlbnQg KGUuZy46IFJlcG9ydCBEZXNjcmlwdGlvbiBhbmQgc28gb24pDQorICAgICAgICAgICAgICAgICog ZnJvbSB0cmFja3BhZCBkZXZpY2UgdGhyb3VnaCBvdXQuIE90aGVyd2lzZSwNCisgICAgICAgICAg ICAgICAgKiBHZW41IHRyYWNrcGFkIGNhbm5vdCByZXBvbnNlIHRvIG5leHQgY29tbWFuZCBvcg0K KyAgICAgICAgICAgICAgICAqIHJlcG9ydCBhbnkgdG91Y2ggb3IgYnV0dG9uIGRhdGEgbGF0ZXIu DQorICAgICAgICAgICAgICAgICovDQorICAgICAgICAgICAgICAgY3lhcGFfZW1wdHlfcGlwX291 dHB1dF9kYXRhKGN5YXBhLCBOVUxMLCBOVUxMLCBOVUxMKTsNCisgICAgICAgICAgICAgICByZXR1 cm4gMDsNCisgICAgICAgfQ0KKyAgICAgICByZXR1cm4gLUVBR0FJTjsNCit9DQorDQorYm9vbCBj eWFwYV9nZW41X3NvcnRfYmxfZXhpdF9kYXRhKHN0cnVjdCBjeWFwYSAqY3lhcGEsIHU4ICpidWYs IGludCBsZW4pDQorew0KKyAgICAgICBpZiAoYnVmID09IE5VTEwgfHwgbGVuIDwgR0VONV9SRVNQ X0xFTkdUSF9TSVpFKQ0KKyAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCisNCisgICAgICAg aWYgKGJ1ZlswXSA9PSAwICYmIGJ1ZlsxXSA9PSAwKQ0KKyAgICAgICAgICAgICAgIHJldHVybiB0 cnVlOw0KKw0KKyAgICAgICAvKiBleGl0IGJvb3Rsb2FkZXIgZmFpbGVkIGZvciBzb21lIHJlYXNv bi4gKi8NCisgICAgICAgaWYgKGxlbiA9PSBHRU41X0JMX0ZBSUxfRVhJVF9SRVNQX0xFTiAmJg0K KyAgICAgICAgICAgICAgICAgICAgICAgYnVmWzJdID09IEdFTjVfQkxfUkVTUF9SRVBPUlRfSUQg JiYNCisgICAgICAgICAgICAgICAgICAgICAgIGJ1ZlszXSA9PSBHRU41X1JFU1BfUlNWRF9LRVkg JiYNCisgICAgICAgICAgICAgICAgICAgICAgIGJ1Zls0XSA9PSBHRU41X1NPUF9LRVkgJiYNCisg ICAgICAgICAgICAgICAgICAgICAgIGJ1ZlsxMF0gPT0gR0VONV9FT1BfS0VZKQ0KKyAgICAgICAg ICAgICAgIHJldHVybiB0cnVlOw0KKw0KKyAgICAgICByZXR1cm4gZmFsc2U7DQorfQ0KK3N0YXRp YyBpbnQgY3lhcGFfZ2VuNV9ibF9leGl0KHN0cnVjdCBjeWFwYSAqY3lhcGEpDQorew0KKyAgICAg ICBpbnQgcmV0Ow0KKyAgICAgICB1OCByZXNwX2RhdGFbMTFdOw0KKyAgICAgICBpbnQgcmVzcF9s ZW47DQorICAgICAgIHU4IGJsX2dlbjVfYmxfZXhpdFtdID0geyAweDA0LCAweDAwLA0KKyAgICAg ICAgICAgICAgIDB4MEIsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDEsIDB4M2IsIDB4MDAsIDB4MDAs DQorICAgICAgICAgICAgICAgMHgyMCwgMHhjNywgMHgxNw0KKyAgICAgICB9Ow0KKw0KKyAgICAg ICByZXNwX2xlbiA9IHNpemVvZihyZXNwX2RhdGEpOw0KKyAgICAgICByZXQgPSBjeWFwYV9pMmNf cGlwX2NtZF9pcnFfc3luYyhjeWFwYSwNCisgICAgICAgICAgICAgICAgICAgICAgIGJsX2dlbjVf YmxfZXhpdCwgc2l6ZW9mKGJsX2dlbjVfYmxfZXhpdCksDQorICAgICAgICAgICAgICAgICAgICAg ICByZXNwX2RhdGEsICZyZXNwX2xlbiwNCisgICAgICAgICAgICAgICAgICAgICAgIDUwMDAsIGN5 YXBhX2dlbjVfc29ydF9ibF9leGl0X2RhdGEpOw0KKyAgICAgICBpZiAocmV0KQ0KKyAgICAgICAg ICAgICAgIHJldHVybiByZXQ7DQorDQorICAgICAgIGlmIChyZXNwX2xlbiA9PSBHRU41X0JMX0ZB SUxfRVhJVF9SRVNQX0xFTiB8fA0KKyAgICAgICAgICAgICAgICAgICAgICAgcmVzcF9kYXRhWzJd ID09IEdFTjVfQkxfUkVTUF9SRVBPUlRfSUQpDQorICAgICAgICAgICAgICAgcmV0dXJuIC1FQUdB SU47DQorDQorICAgICAgIGlmIChyZXNwX2RhdGFbMF0gPT0gMHgwMCAmJiByZXNwX2RhdGFbMV0g PT0gMHgwMCkNCisgICAgICAgICAgICAgICByZXR1cm4gMDsNCisNCisgICAgICAgcmV0dXJuIC1F QUdBSU47DQorfQ0KKw0KK3N0YXRpYyBpbnQgY3lhcGFfZ2VuNV9jaGFuZ2VfcG93ZXJfc3RhdGUo c3RydWN0IGN5YXBhICpjeWFwYSwgdTggcG93ZXJfc3RhdGUpDQorew0KKyAgICAgICBpbnQgcmV0 Ow0KKyAgICAgICB1OCBjbWRbOF0gPSB7IDB4MDQsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MmYsIDB4 MDAsIDB4MDgsIDB4MDEgfTsNCisgICAgICAgdTggcmVzcF9kYXRhWzZdOw0KKyAgICAgICBpbnQg cmVzcF9sZW47DQorDQorICAgICAgIGNtZFs3XSA9IHBvd2VyX3N0YXRlOw0KKyAgICAgICByZXNw X2xlbiA9IHNpemVvZihyZXNwX2RhdGEpOw0KKyAgICAgICByZXQgPSBjeWFwYV9pMmNfcGlwX2Nt ZF9pcnFfc3luYyhjeWFwYSwgY21kLCBzaXplb2YoY21kKSwNCisgICAgICAgICAgICAgICAgICAg ICAgIHJlc3BfZGF0YSwgJnJlc3BfbGVuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgNTAwLCBj eWFwYV9nZW41X3NvcnRfdHNnX3BpcF9hcHBfcmVzcF9kYXRhKTsNCisgICAgICAgaWYgKHJldCB8 fCByZXNwX2RhdGFbMl0gIT0gR0VONV9BUFBfUkVTUF9SRVBPUlRfSUQgfHwNCisgICAgICAgICAg ICAgICAgICAgICAgIHJlc3BfZGF0YVszXSAhPSBHRU41X1JFU1BfUlNWRF9LRVkgfHwNCisgICAg ICAgICAgICAgICAgICAgICAgIEdFVF9HRU41X0NNRF9DT0RFKHJlc3BfZGF0YVs0XSkgIT0gMHgw OCB8fA0KKyAgICAgICAgICAgICAgICAgICAgICAgIUdFTjVfQ01EX0NPTVBMRVRFX1NVQ0NFU1Mo cmVzcF9kYXRhWzVdKSkNCisgICAgICAgICAgICAgICByZXR1cm4gcmV0IDwgMCA/IHJldCA6IC1F SU5WQUw7DQorDQorICAgICAgIHJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IGN5YXBhX2dl bjVfc2V0X2ludGVydmFsX3RpbWUoc3RydWN0IGN5YXBhICpjeWFwYSwNCisgICAgICAgICAgICAg ICB1OCBwYXJhbWV0ZXJfaWQsIHUxNiBpbnRlcnZhbF90aW1lKQ0KK3sNCisgICAgICAgaW50IHJl dDsNCisgICAgICAgdTggY21kWzEzXTsNCisgICAgICAgaW50IGNtZF9sZW47DQorICAgICAgIHU4 IHJlc3BfZGF0YVs3XTsNCisgICAgICAgaW50IHJlc3BfbGVuOw0KKyAgICAgICB1OCBwYXJhbWV0 ZXJfc2l6ZTsNCisNCisgICAgICAgc3dpdGNoIChwYXJhbWV0ZXJfaWQpIHsNCisgICAgICAgY2Fz ZSBHRU41X1BBUkFNRVRFUl9BQ1RfSU5URVJWTF9JRDoNCisgICAgICAgICAgICAgICBwYXJhbWV0 ZXJfc2l6ZSA9IEdFTjVfUEFSQU1FVEVSX0FDVF9JTlRFUlZMX1NJWkU7DQorICAgICAgICAgICAg ICAgYnJlYWs7DQorICAgICAgIGNhc2UgR0VONV9QQVJBTUVURVJfQUNUX0xGVF9JTlRFUlZMX0lE Og0KKyAgICAgICAgICAgICAgIHBhcmFtZXRlcl9zaXplID0gR0VONV9QQVJBTUVURVJfQUNUX0xG VF9JTlRFUlZMX1NJWkU7DQorICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgIGNhc2UgR0VO NV9QQVJBTUVURVJfTFBfSU5UUlZMX0lEOg0KKyAgICAgICAgICAgICAgIHBhcmFtZXRlcl9zaXpl ID0gR0VONV9QQVJBTUVURVJfTFBfSU5UUlZMX1NJWkU7DQorICAgICAgICAgICAgICAgYnJlYWs7 DQorICAgICAgIGRlZmF1bHQ6DQorICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQorICAg ICAgIH0NCisgICAgICAgY21kX2xlbiA9IDcgKyBwYXJhbWV0ZXJfc2l6ZTsgIC8qIG5vdCBpbmN1 ZGluZyAyIGJ5dGVzIGFkZHJlc3MgKi8NCisgICAgICAgY21kWzBdID0gMHgwNDsNCisgICAgICAg Y21kWzFdID0gMHgwMDsNCisgICAgICAgcHV0X3VuYWxpZ25lZF9sZTE2KGNtZF9sZW4sICZjbWRb Ml0pOw0KKyAgICAgICBjbWRbNF0gPSAweDJmOw0KKyAgICAgICBjbWRbNV0gPSAweDAwOw0KKyAg ICAgICBjbWRbNl0gPSAweDA2OyAvKiBzZXQgcGFyYW1ldGVyIGNvbW1hbmQgY29kZSAqLw0KKyAg ICAgICBjbWRbN10gPSBwYXJhbWV0ZXJfaWQ7DQorICAgICAgIGNtZFs4XSA9IHBhcmFtZXRlcl9z aXplOw0KKyAgICAgICBwdXRfdW5hbGlnbmVkX2xlMTYoaW50ZXJ2YWxfdGltZSwgJmNtZFs5XSk7 DQorICAgICAgIHJlc3BfbGVuID0gc2l6ZW9mKHJlc3BfZGF0YSk7DQorICAgICAgIHJldCA9IGN5 YXBhX2kyY19waXBfY21kX2lycV9zeW5jKGN5YXBhLCBjbWQsIGNtZF9sZW4gKyAyLA0KKyAgICAg ICAgICAgICAgICAgICAgICAgcmVzcF9kYXRhLCAmcmVzcF9sZW4sDQorICAgICAgICAgICAgICAg ICAgICAgICA1MDAsIGN5YXBhX2dlbjVfc29ydF90c2dfcGlwX2FwcF9yZXNwX2RhdGEpOw0KKyAg ICAgICBpZiAocmV0IHx8IHJlc3BfZGF0YVsyXSAhPSBHRU41X0FQUF9SRVNQX1JFUE9SVF9JRCB8 fA0KKyAgICAgICAgICAgICAgICAgICAgICAgcmVzcF9kYXRhWzNdICE9IEdFTjVfUkVTUF9SU1ZE X0tFWSB8fA0KKyAgICAgICAgICAgICAgICAgICAgICAgR0VUX0dFTjVfQ01EX0NPREUocmVzcF9k YXRhWzRdKSAhPSAweDA2IHx8DQorICAgICAgICAgICAgICAgICAgICAgICByZXNwX2RhdGFbNV0g IT0gcGFyYW1ldGVyX2lkIHx8DQorICAgICAgICAgICAgICAgICAgICAgICByZXNwX2RhdGFbNl0g IT0gcGFyYW1ldGVyX3NpemUpDQorICAgICAgICAgICAgICAgcmV0dXJuIHJldCA8IDAgPyByZXQg OiAtRUlOVkFMOw0KKw0KKyAgICAgICByZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGludCBjeWFw YV9nZW41X2dldF9pbnRlcnZhbF90aW1lKHN0cnVjdCBjeWFwYSAqY3lhcGEsDQorICAgICAgICAg ICAgICAgdTggcGFyYW1ldGVyX2lkLCB1MTYgKmludGVydmFsX3RpbWUpDQorew0KKyAgICAgICBp bnQgcmV0Ow0KKyAgICAgICB1OCBjbWRbOF07DQorICAgICAgIHU4IHJlc3BfZGF0YVsxMV07DQor ICAgICAgIGludCByZXNwX2xlbjsNCisgICAgICAgdTggcGFyYW1ldGVyX3NpemU7DQorICAgICAg IHUxNiBtYXNrLCBpOw0KKw0KKyAgICAgICAqaW50ZXJ2YWxfdGltZSA9IDA7DQorICAgICAgIHN3 aXRjaCAocGFyYW1ldGVyX2lkKSB7DQorICAgICAgIGNhc2UgR0VONV9QQVJBTUVURVJfQUNUX0lO VEVSVkxfSUQ6DQorICAgICAgICAgICAgICAgcGFyYW1ldGVyX3NpemUgPSBHRU41X1BBUkFNRVRF Ul9BQ1RfSU5URVJWTF9TSVpFOw0KKyAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICBjYXNl IEdFTjVfUEFSQU1FVEVSX0FDVF9MRlRfSU5URVJWTF9JRDoNCisgICAgICAgICAgICAgICBwYXJh bWV0ZXJfc2l6ZSA9IEdFTjVfUEFSQU1FVEVSX0FDVF9MRlRfSU5URVJWTF9TSVpFOw0KKyAgICAg ICAgICAgICAgIGJyZWFrOw0KKyAgICAgICBjYXNlIEdFTjVfUEFSQU1FVEVSX0xQX0lOVFJWTF9J RDoNCisgICAgICAgICAgICAgICBwYXJhbWV0ZXJfc2l6ZSA9IEdFTjVfUEFSQU1FVEVSX0xQX0lO VFJWTF9TSVpFOw0KKyAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICBkZWZhdWx0Og0KKyAg ICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KKyAgICAgICB9DQorDQorICAgICAgIGNtZFsw XSA9IDB4MDQ7DQorICAgICAgIGNtZFsxXSA9IDB4MDA7DQorICAgICAgIGNtZFsyXSA9IDB4MDY7 DQorICAgICAgIGNtZFszXSA9IDB4MDA7DQorICAgICAgIGNtZFs0XSA9IDB4MmY7DQorICAgICAg IGNtZFs1XSA9IDB4MDA7DQorICAgICAgIGNtZFs2XSA9IDB4MDU7IC8qIGdldCBwYXJhbWV0ZXIg Y29tbWFuZCBjb2RlICovDQorICAgICAgIGNtZFs3XSA9IHBhcmFtZXRlcl9pZDsNCisgICAgICAg cmVzcF9sZW4gPSBzaXplb2YocmVzcF9kYXRhKTsNCisgICAgICAgcmV0ID0gY3lhcGFfaTJjX3Bp cF9jbWRfaXJxX3N5bmMoY3lhcGEsIGNtZCwgc2l6ZW9mKGNtZCksDQorICAgICAgICAgICAgICAg ICAgICAgICByZXNwX2RhdGEsICZyZXNwX2xlbiwNCisgICAgICAgICAgICAgICAgICAgICAgIDUw MCwgY3lhcGFfZ2VuNV9zb3J0X3RzZ19waXBfYXBwX3Jlc3BfZGF0YSk7DQorICAgICAgIGlmIChy ZXQgfHwgcmVzcF9kYXRhWzJdICE9IEdFTjVfQVBQX1JFU1BfUkVQT1JUX0lEIHx8DQorICAgICAg ICAgICAgICAgICAgICAgICByZXNwX2RhdGFbM10gIT0gR0VONV9SRVNQX1JTVkRfS0VZIHx8DQor ICAgICAgICAgICAgICAgICAgICAgICBHRVRfR0VONV9DTURfQ09ERShyZXNwX2RhdGFbNF0pICE9 IDB4MDUgfHwNCisgICAgICAgICAgICAgICAgICAgICAgIHJlc3BfZGF0YVs1XSAhPSBwYXJhbWV0 ZXJfaWQgfHwNCisgICAgICAgICAgICAgICAgICAgICAgIHJlc3BfZGF0YVs2XSA9PSAwKQ0KKyAg ICAgICAgICAgICAgIHJldHVybiByZXQgPCAwID8gcmV0IDogLUVJTlZBTDsNCisNCisgICAgICAg bWFzayA9IDA7DQorICAgICAgIGZvciAoaSA9IDA7IGkgPCBwYXJhbWV0ZXJfc2l6ZTsgaSsrKQ0K KyAgICAgICAgICAgICAgIG1hc2sgfD0gKDB4ZmYgPDwgKGkgKiA4KSk7DQorICAgICAgICppbnRl cnZhbF90aW1lID0gZ2V0X3VuYWxpZ25lZF9sZTE2KCZyZXNwX2RhdGFbN10pICYgbWFzazsNCisN CisgICAgICAgcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgY3lhcGFfZ2VuNV9kaXNhYmxl X3BpcF9yZXBvcnQoc3RydWN0IGN5YXBhICpjeWFwYSkNCit7DQorICAgICAgIGludCByZXQ7DQor ICAgICAgIHU4IGNtZFsxMF07DQorICAgICAgIHU4IHJlc3BfZGF0YVs3XTsNCisgICAgICAgaW50 IHJlc3BfbGVuOw0KKw0KKyAgICAgICBjbWRbMF0gPSAweDA0Ow0KKyAgICAgICBjbWRbMV0gPSAw eDAwOw0KKyAgICAgICBwdXRfdW5hbGlnbmVkX2xlMTYoOCwgJmNtZFsyXSk7DQorICAgICAgIGNt ZFs0XSA9IDB4MmY7DQorICAgICAgIGNtZFs1XSA9IDB4MDA7DQorICAgICAgIGNtZFs2XSA9IDB4 MDY7IC8qIHNldCBwYXJhbWV0ZXIgY29tbWFuZCBjb2RlICovDQorICAgICAgIGNtZFs3XSA9IEdF TjVfUEFSQU1FVEVSX0RJU0FCTEVfUElQX1JFUE9SVDsNCisgICAgICAgY21kWzhdID0gMHgwMTsN CisgICAgICAgY21kWzldID0gMHgwMTsNCisgICAgICAgcmVzcF9sZW4gPSBzaXplb2YocmVzcF9k YXRhKTsNCisgICAgICAgcmV0ID0gY3lhcGFfaTJjX3BpcF9jbWRfaXJxX3N5bmMoY3lhcGEsIGNt ZCwgMTAsDQorICAgICAgICAgICAgICAgICAgICAgICByZXNwX2RhdGEsICZyZXNwX2xlbiwNCisg ICAgICAgICAgICAgICAgICAgICAgIDUwMCwgY3lhcGFfZ2VuNV9zb3J0X3RzZ19waXBfYXBwX3Jl c3BfZGF0YSk7DQorICAgICAgIGlmIChyZXQgfHwgcmVzcF9kYXRhWzJdICE9IEdFTjVfQVBQX1JF U1BfUkVQT1JUX0lEIHx8DQorICAgICAgICAgICAgICAgICAgICAgICByZXNwX2RhdGFbM10gIT0g R0VONV9SRVNQX1JTVkRfS0VZIHx8DQorICAgICAgICAgICAgICAgICAgICAgICBHRVRfR0VONV9D TURfQ09ERShyZXNwX2RhdGFbNF0pICE9IDB4MDYgfHwNCisgICAgICAgICAgICAgICAgICAgICAg IHJlc3BfZGF0YVs1XSAhPSBHRU41X1BBUkFNRVRFUl9ESVNBQkxFX1BJUF9SRVBPUlQgfHwNCisg ICAgICAgICAgICAgICAgICAgICAgIHJlc3BfZGF0YVs2XSAhPSAweDAxKQ0KKyAgICAgICAgICAg ICAgIHJldHVybiByZXQgPCAwID8gcmV0IDogLUVJTlZBTDsNCisNCisgICAgICAgcmV0dXJuIDA7 DQorfQ0KKw0KK3N0YXRpYyBpbnQgY3lhcGFfZ2VuNV9kZWVwX3NsZWVwKHN0cnVjdCBjeWFwYSAq Y3lhcGEsIHU4IHN0YXRlKQ0KK3sNCisgICAgICAgaW50IHJldDsNCisgICAgICAgdTggY21kWzRd ID0geyAweDA1LCAweDAwLCAweDAwLCAweDA4fTsNCisgICAgICAgdTggcmVzcF9kYXRhWzVdOw0K KyAgICAgICBpbnQgcmVzcF9sZW47DQorDQorICAgICAgIGNtZFswXSA9IDB4MDU7DQorICAgICAg IGNtZFsxXSA9IDB4MDA7DQorICAgICAgIGNtZFsyXSA9IHN0YXRlICYgR0VONV9ERUVQX1NMRUVQ X1NUQVRFX01BU0s7DQorICAgICAgIGNtZFszXSA9IDB4MDg7DQorICAgICAgIHJlc3BfbGVuID0g c2l6ZW9mKHJlc3BfZGF0YSk7DQorICAgICAgIHJldCA9IGN5YXBhX2kyY19waXBfY21kX2lycV9z eW5jKGN5YXBhLCBjbWQsIHNpemVvZihjbWQpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgcmVz cF9kYXRhLCAmcmVzcF9sZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAxMDAsIGN5YXBhX2dl bjVfc29ydF9kZWVwX3NsZWVwX2RhdGEpOw0KKyAgICAgICBpZiAocmV0IHx8ICgocmVzcF9kYXRh WzNdICYgR0VONV9ERUVQX1NMRUVQX1NUQVRFX01BU0spICE9IHN0YXRlKSkNCisgICAgICAgICAg ICAgICByZXR1cm4gLUVJTlZBTDsNCisNCisgICAgICAgcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRp YyBpbnQgY3lhcGFfZ2VuNV9zZXRfcG93ZXJfbW9kZShzdHJ1Y3QgY3lhcGEgKmN5YXBhLA0KKyAg ICAgICAgICAgICAgIHU4IHBvd2VyX21vZGUsIHUxNiBzbGVlcF90aW1lKQ0KK3sNCisgICAgICAg c3RydWN0IGRldmljZSAqZGV2ID0gJmN5YXBhLT5jbGllbnQtPmRldjsNCisgICAgICAgaW50IHJl dDsNCisgICAgICAgdTggcG93ZXJfc3RhdGU7DQorDQorICAgICAgIGlmIChjeWFwYS0+c3RhdGUg IT0gQ1lBUEFfU1RBVEVfR0VONV9BUFApDQorICAgICAgICAgICAgICAgcmV0dXJuIDA7DQorDQor ICAgICAgIC8qIGR1bXAgYWxsIHRoZSByZXBvcnQgZGF0YSBiZWZvcmUgZG8gcG93ZXIgbW9kZSBj b21tbWFuZHMuICovDQorICAgICAgIGN5YXBhX2VtcHR5X3BpcF9vdXRwdXRfZGF0YShjeWFwYSwg TlVMTCwgTlVMTCwgTlVMTCk7DQorDQorICAgICAgIGlmIChHRU41X1BPV0VSX1NUQVRFKCkgIT0g UFdSX01PREVfT0ZGICYmDQorICAgICAgICAgICAgICAgICAgICAgICBHRU41X1VOSU5JVF9TTEVF UF9USU1FKGdlbjVfc2xlZXBfdGltZSkpIHsNCisgICAgICAgICAgICAgICBpZiAoY3lhcGFfZ2Vu NV9nZXRfaW50ZXJ2YWxfdGltZShjeWFwYSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgR0VONV9QQVJBTUVURVJfTFBfSU5UUlZMX0lELA0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmZ2VuNV9zbGVlcF90aW1lKSAhPSAwKQ0KKyAgICAgICAgICAgICAgICAgICAgICAg Z2VuNV9zbGVlcF90aW1lID0gVU5JTklUX1NMRUVQX1RJTUU7DQorICAgICAgIH0NCisNCisgICAg ICAgc3dpdGNoIChwb3dlcl9tb2RlKSB7DQorICAgICAgIGNhc2UgUFdSX01PREVfT0ZGOg0KKyAg ICAgICBjYXNlIFBXUl9NT0RFX0ZVTExfQUNUSVZFOg0KKyAgICAgICBjYXNlIFBXUl9NT0RFX0JU Tl9PTkxZOg0KKyAgICAgICAgICAgICAgIC8qIGhhcyBpbiBjb3JyZWN0IHBvd2VyIG1vZGUgc3Rh dGUsIGVhcmx5IHJldHVybi4gKi8NCisgICAgICAgICAgICAgICBpZiAoR0VONV9QT1dFUl9TVEFU RSgpID09IHBvd2VyX21vZGUpDQorICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsNCisN CisgICAgICAgICAgICAgICAvKiBlbnRlciBkZWVwIHNsZWVwIGRpcmVjdGx5IHdpdGhvdXQgYW55 IGFkZGl0aW9uYWwgc3RlcHMuICovDQorICAgICAgICAgICAgICAgaWYgKHBvd2VyX21vZGUgPT0g UFdSX01PREVfT0ZGKSB7DQorICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBjeWFwYV9nZW41 X2RlZXBfc2xlZXAoY3lhcGEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFTjVf REVFUF9TTEVFUF9TVEFURV9PRkYpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJldCkg ew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgImVudGVyIGRl ZXAgc2xlZXAgZmFpbCwgKCVkKVxuIiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZXQpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0 Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAg U0VUX0dFTjVfUE9XRVJfU1RBVEUocG93ZXJfbW9kZSk7DQorICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gMDsNCisgICAgICAgICAgICAgICB9DQorICAgICAgIGRlZmF1bHQ6DQorICAgICAg ICAgICAgICAgLyogaGFzIGluIGNvcnJlY3QgcG93ZXIgbW9kZSBzdGF0ZSwgZWFybHkgcmV0dXJu LiAqLw0KKyAgICAgICAgICAgICAgIGlmIChnZW41X3NsZWVwX3RpbWUgPT0gc2xlZXBfdGltZSAm Jg0KKyAgICAgICAgICAgICAgICAgICAgICAgR0VONV9QT1dFUl9TVEFURSgpID09IHBvd2VyX21v ZGUpDQorICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsNCisgICAgICAgfQ0KKw0KKyAg ICAgICAvKiB3aGVuIHRyYWNrcGFkIGluIHBvd2VyIG9mZiBtb2RlLCBpdCBjYW5ub3QgY2hhbmdl IHRvIG90aGVyIHBvd2VyDQorICAgICAgICAqIHN0YXRlIGRpcmVjdGx5LCBtdXN0IGJlIHdha2Ug dXAgZnJvbSBzbGVlcCBmaXJzdGx5LCB0aGVuDQorICAgICAgICAqIGNvbnRpbnVlIHRvIGRvIG5l eHQgcG93ZXIgc2F0ZSBjaGFuZ2UuICovDQorICAgICAgIGlmIChHRU41X1BPV0VSX1NUQVRFKCkg PT0gUFdSX01PREVfT0ZGKSB7DQorICAgICAgICAgICAgICAgcmV0ID0gY3lhcGFfZ2VuNV9kZWVw X3NsZWVwKGN5YXBhLCBHRU41X0RFRVBfU0xFRVBfU1RBVEVfT04pOw0KKyAgICAgICAgICAgICAg IGlmIChyZXQpIHsNCisgICAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiZGVlcCBz bGVlcCB3YWtlIGZhaWwsICglZClcbiIsIHJldCk7DQorICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gcmV0Ow0KKyAgICAgICAgICAgICAgIH0NCisgICAgICAgfQ0KKw0KKyAgICAgICBpZiAo cG93ZXJfbW9kZSA9PSBQV1JfTU9ERV9GVUxMX0FDVElWRSkgew0KKyAgICAgICAgICAgICAgIHJl dCA9IGN5YXBhX2dlbjVfY2hhbmdlX3Bvd2VyX3N0YXRlKGN5YXBhLA0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBHRU41X1BPV0VSX1NUQVRFX0FDVElWRSk7DQorICAgICAgICAgICAg ICAgaWYgKHJldCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJjaGFu Z2UgdG8gYWN0aXZlIGZhaWwsICglZClcbiIsIHJldCk7DQorICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gcmV0Ow0KKyAgICAgICAgICAgICAgIH0NCisNCisgICAgICAgICAgICAgICBTRVRf R0VONV9QT1dFUl9TVEFURShQV1JfTU9ERV9GVUxMX0FDVElWRSk7DQorICAgICAgIH0gZWxzZSBp ZiAocG93ZXJfbW9kZSA9PSBQV1JfTU9ERV9CVE5fT05MWSkgew0KKyAgICAgICAgICAgICAgIHJl dCA9IGN5YXBhX2dlbjVfY2hhbmdlX3Bvd2VyX3N0YXRlKGN5YXBhLA0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBHRU41X1BPV0VSX1NUQVRFX0JUTl9PTkxZKTsNCisgICAgICAgICAg ICAgICBpZiAocmV0KSB7DQorICAgICAgICAgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgImZh aWwgY2hhbmdlIHRvIGFjdGl2ZSwgKCVkKVxuIiwgcmV0KTsNCisgICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiByZXQ7DQorICAgICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgICAgIFNF VF9HRU41X1BPV0VSX1NUQVRFKFBXUl9NT0RFX0JUTl9PTkxZKTsNCisgICAgICAgfSBlbHNlIHsN CisgICAgICAgICAgICAgICAvKiBjb250aW51ZSB0byBjaGFuZ2UgcG93ZXIgbW9kZSBldmVuIGZh aWxlZCB0byBzZXQNCisgICAgICAgICAgICAgICAgKiBpbnRlcnZhbCB0aW1lLCBpdCB3b24ndCBh ZmZlY3QgdGhlIHBvd2VyIG1vZGUgY2hhbmdlLg0KKyAgICAgICAgICAgICAgICAqIGV4Y2VwdCB0 aGUgc2xlZXAgaW50ZXJ2YWwgdGltZSBpcyBub3QgY29ycmVjdC4gKi8NCisgICAgICAgICAgICAg ICBpZiAoR0VONV9VTklOSVRfU0xFRVBfVElNRShnZW41X3NsZWVwX3RpbWUpIHx8DQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNsZWVwX3RpbWUgIT0gZ2VuNV9zbGVlcF90aW1lKQ0K KyAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN5YXBhX2dlbjVfc2V0X2ludGVydmFsX3RpbWUo Y3lhcGEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFTjVfUEFSQU1FVEVSX0xQ X0lOVFJWTF9JRCwgc2xlZXBfdGltZSkgPT0gMCkNCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBnZW41X3NsZWVwX3RpbWUgPSBzbGVlcF90aW1lOw0KKw0KKyAgICAgICAg ICAgICAgIGlmIChzbGVlcF90aW1lIDw9IEdFTjVfUE9XRVJfUkVBRFlfTUFYX0lOVFJWTF9USU1F KQ0KKyAgICAgICAgICAgICAgICAgICAgICAgcG93ZXJfc3RhdGUgPSBHRU41X1BPV0VSX1NUQVRF X1JFQURZOw0KKyAgICAgICAgICAgICAgIGVsc2UNCisgICAgICAgICAgICAgICAgICAgICAgIHBv d2VyX3N0YXRlID0gR0VONV9QT1dFUl9TVEFURV9JRExFOw0KKyAgICAgICAgICAgICAgIHJldCA9 IGN5YXBhX2dlbjVfY2hhbmdlX3Bvd2VyX3N0YXRlKGN5YXBhLCBwb3dlcl9zdGF0ZSk7DQorICAg ICAgICAgICAgICAgaWYgKHJldCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgZGV2X2Vycihk ZXYsICJzZXQgcG93ZXIgc3RhdGUgJWQgZmFpbCwgKCVkKVxuIiwNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcG93ZXJfc3RhdGUsIHJldCk7DQorICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gcmV0Ow0KKyAgICAgICAgICAgICAgIH0NCisNCisgICAgICAgICAgICAgICAvKiBk aXNhYmxlIHBpcCByZXBvcnQgZm9yIGEgbGl0dGxlIHRpbWUsIGZpcm13YXJlIHdpbGwNCisgICAg ICAgICAgICAgICAgKiByZS1lbmFibGUgaXQgYXV0b21hdGljYWxseS4gSXQncyB1c2VkIHRvIGZp eCB0aGUgaXNzdWUNCisgICAgICAgICAgICAgICAgKiB0aGF0IHRyYWNrcGFkIHVuYWJsZSB0byBy ZXBvcnQgc2lnbmFsIHRvIHdha2Ugc3lzdGVtIHVwDQorICAgICAgICAgICAgICAgICogaW4gdGhl IHNwZWNpYWwgc2l0dWF0aW9uIHRoYXQgc3lzdGVtIGlzIGluIHN1c3BlbmRpbmcsIGFuZA0KKyAg ICAgICAgICAgICAgICAqIGF0IHRoZSBzYW1lIHRpbWUsIHVzZXIgdG91Y2ggdHJhY2twYWQgdG8g d2FrZSBzeXN0ZW0gdXAuDQorICAgICAgICAgICAgICAgICogVGhpcyBmdW5jdGlvbiBjYW4gYXZv aWQgdGhlIGRhdGEgdG8gYmUgYnVmZnVyZWQgd2hlbiBzeXN0ZW0NCisgICAgICAgICAgICAgICAg KiBpcyBzdXNwZW5kaW5nIHdoaWNoIG1heSBjYXVzZSBpbnRlcnJwdXQgbGluZSB1bmFibGUgdG8g YmUNCisgICAgICAgICAgICAgICAgKiBhc3NlcnRlZCBhZ2Fpbi4gKi8NCisgICAgICAgICAgICAg ICBjeWFwYV9nZW41X2Rpc2FibGVfcGlwX3JlcG9ydChjeWFwYSk7DQorDQorICAgICAgICAgICAg ICAgU0VUX0dFTjVfUE9XRVJfU1RBVEUoY3lhcGFfc2xlZXBfdGltZV90b19wd3JfY21kKHNsZWVw X3RpbWUpKTsNCisgICAgICAgfQ0KKw0KKyAgICAgICBjeWFwYV9lbXB0eV9waXBfb3V0cHV0X2Rh dGEoY3lhcGEsIE5VTEwsIE5VTEwsIE5VTEwpOw0KKyAgICAgICByZXR1cm4gcmV0Ow0KK30NCisN CitzdGF0aWMgYm9vbCBjeWFwYV9nZW41X3NvcnRfc3lzdGVtX2luZm9fZGF0YShzdHJ1Y3QgY3lh cGEgKmN5YXBhLA0KKyAgICAgICAgICAgICAgIHU4ICpidWYsIGludCBsZW4pDQorew0KKyAgICAg ICAvKiBjaGVjayB0aGUgcmVwb3J0IGlkIGFuZCBjb21tYW5kIGNvZGUgKi8NCisgICAgICAgaWYg KGJ1ZltHRU41X1JFU1BfUkVQT1JUX0lEX09GRlNFVF0gPT0gR0VONV9BUFBfUkVTUF9SRVBPUlRf SUQgJiYNCisgICAgICAgICAgICAgICBHRVRfR0VONV9DTURfQ09ERShidWZbR0VONV9DTURfUkVQ T1JUX0lEX09GRlNFVF0pID09IDB4MDIpDQorICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQor DQorICAgICAgIHJldHVybiBmYWxzZTsNCit9DQorDQorc3RhdGljIGludCBjeWFwYV9nZW41X2Js X3F1ZXJ5X2RhdGEoc3RydWN0IGN5YXBhICpjeWFwYSkNCit7DQorICAgICAgIGludCByZXQ7DQor ICAgICAgIHU4IGNtZFsxNl07DQorICAgICAgIGludCBjbWRfbGVuOw0KKyAgICAgICB1OCByZXNw X2RhdGFbR0VONV9CTF9SRUFEX0FQUF9JTkZPX1JFU1BfTEVOXTsNCisgICAgICAgaW50IHJlc3Bf bGVuOw0KKw0KKyAgICAgICAvKiByZWFkIGFwcGxpY2F0aW9uIGluZm9ybWF0aW9uLiAqLw0KKyAg ICAgICBjbWRbMF0gPSAweDA0Ow0KKyAgICAgICBjbWRbMV0gPSAweDAwOw0KKyAgICAgICBjbWRb Ml0gPSAweDBiOw0KKyAgICAgICBjbWRbM10gPSAweDAwOw0KKyAgICAgICBjbWRbNF0gPSAweDQw Ow0KKyAgICAgICBjbWRbNV0gPSAweDAwOw0KKyAgICAgICBjbWRbNl0gPSBHRU41X1NPUF9LRVk7 DQorICAgICAgIGNtZFs3XSA9IDB4M2M7ICAvKiByZWFkIGFwcGxpY2F0aW9uIGluZm9ybWF0aW9u IGNvbW1hbmQgY29kZSAqLw0KKyAgICAgICBjbWRbOF0gPSAweDAwOw0KKyAgICAgICBjbWRbOV0g PSAweDAwOw0KKyAgICAgICBjbWRbMTBdID0gMHhiMDsNCisgICAgICAgY21kWzExXSA9IDB4NDI7 DQorICAgICAgIGNtZFsxMl0gPSBHRU41X0VPUF9LRVk7DQorICAgICAgIGNtZF9sZW4gPSAxMzsN CisgICAgICAgcmVzcF9sZW4gPSBHRU41X0JMX1JFQURfQVBQX0lORk9fUkVTUF9MRU47DQorICAg ICAgIHJldCA9IGN5YXBhX2kyY19waXBfY21kX2lycV9zeW5jKGN5YXBhLA0KKyAgICAgICAgICAg ICAgICAgICAgICAgY21kLCBjbWRfbGVuLA0KKyAgICAgICAgICAgICAgICAgICAgICAgcmVzcF9k YXRhLCAmcmVzcF9sZW4sDQorICAgICAgICAgICAgICAgICAgICAgICA1MDAsIGN5YXBhX2dlbjVf c29ydF90c2dfcGlwX2JsX3Jlc3BfZGF0YSk7DQorICAgICAgIGlmIChyZXNwX2RhdGFbR0VONV9S RVNQX1JFUE9SVF9JRF9PRkZTRVRdICE9IEdFTjVfQkxfUkVTUF9SRVBPUlRfSUQgfHwNCisgICAg ICAgICAgICAgICByZXQgfHwgcmVzcF9sZW4gIT0gR0VONV9CTF9SRUFEX0FQUF9JTkZPX1JFU1Bf TEVOIHx8DQorICAgICAgICAgICAgICAgIUdFTjVfQ01EX0NPTVBMRVRFX1NVQ0NFU1MocmVzcF9k YXRhWzVdKSkNCisgICAgICAgICAgICAgICByZXR1cm4gcmV0IDwgMCA/IHJldCA6IC1FSU87DQor DQorICAgICAgIG1lbWNweSgmY3lhcGEtPnByb2R1Y3RfaWRbMF0sICZyZXNwX2RhdGFbOF0sIDUp Ow0KKyAgICAgICBjeWFwYS0+cHJvZHVjdF9pZFs1XSA9ICctJzsNCisgICAgICAgbWVtY3B5KCZj eWFwYS0+cHJvZHVjdF9pZFs2XSwgJnJlc3BfZGF0YVsxM10sIDYpOw0KKyAgICAgICBjeWFwYS0+ cHJvZHVjdF9pZFsxMl0gPSAnLSc7DQorICAgICAgIG1lbWNweSgmY3lhcGEtPnByb2R1Y3RfaWRb MTNdLCAmcmVzcF9kYXRhWzE5XSwgMik7DQorICAgICAgIGN5YXBhLT5wcm9kdWN0X2lkWzE1XSA9 ICdcMCc7DQorDQorICAgICAgIGN5YXBhLT5md19tYWpfdmVyID0gcmVzcF9kYXRhWzIyXTsNCisg ICAgICAgY3lhcGEtPmZ3X21pbl92ZXIgPSByZXNwX2RhdGFbMjNdOw0KKw0KKyAgICAgICByZXR1 cm4gMDsNCit9DQorDQorc3RhdGljIGludCBjeWFwYV9nZW41X2dldF9xdWVyeV9kYXRhKHN0cnVj dCBjeWFwYSAqY3lhcGEpDQorew0KKyAgICAgICBpbnQgcmV0Ow0KKyAgICAgICB1OCByZXNwX2Rh dGFbNzFdOw0KKyAgICAgICBpbnQgcmVzcF9sZW47DQorICAgICAgIHU4IGdldF9zeXN0ZW1faW5m b3JtYXRpb25bXSA9IHsNCisgICAgICAgICAgICAgICAweDA0LCAweDAwLCAweDA1LCAweDAwLCAw eDJmLCAweDAwLCAweDAyDQorICAgICAgIH07DQorICAgICAgIHUxNiBwcm9kdWN0X2ZhbWlseTsN CisNCisgICAgICAgcmVzcF9sZW4gPSBzaXplb2YocmVzcF9kYXRhKTsNCisgICAgICAgcmV0ID0g Y3lhcGFfaTJjX3BpcF9jbWRfaXJxX3N5bmMoY3lhcGEsDQorICAgICAgICAgICAgICAgICAgICAg ICBnZXRfc3lzdGVtX2luZm9ybWF0aW9uLCBzaXplb2YoZ2V0X3N5c3RlbV9pbmZvcm1hdGlvbiks DQorICAgICAgICAgICAgICAgICAgICAgICByZXNwX2RhdGEsICZyZXNwX2xlbiwNCisgICAgICAg ICAgICAgICAgICAgICAgIDIwMDAsIGN5YXBhX2dlbjVfc29ydF9zeXN0ZW1faW5mb19kYXRhKTsN CisgICAgICAgaWYgKHJldCB8fCByZXNwX2xlbiA8IHNpemVvZihyZXNwX2RhdGEpKQ0KKyAgICAg ICAgICAgICAgIHJldHVybiByZXQ7DQorDQorICAgICAgIGdlbjVfZndfaW1nX2hlYWQuaGVhZF9z aXplID0NCisgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IGN5YXBhX3RzZ19iaW5faW1hZ2Vf aGVhZCkgLSAxOw0KKyAgICAgICBtZW1jcHkoJmdlbjVfZndfaW1nX2hlYWQudHRkYV9kcml2ZXJf bWFqb3JfdmVyc2lvbiwNCisgICAgICAgICAgICAgICAmcmVzcF9kYXRhWzVdLCBnZW41X2Z3X2lt Z19oZWFkLmhlYWRfc2l6ZSk7DQorDQorICAgICAgIHByb2R1Y3RfZmFtaWx5ID0gZ2V0X3VuYWxp Z25lZF9sZTE2KCZyZXNwX2RhdGFbN10pOw0KKyAgICAgICBpZiAoKHByb2R1Y3RfZmFtaWx5ICYg R0VONV9QUk9EVUNUX0ZBTUlMWV9NQVNLKSAhPQ0KKyAgICAgICAgICAgICAgIEdFTjVfUFJPRFVD VF9GQU1JTFlfVFJBQ0tQQUQpDQorICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQorDQor ICAgICAgIGN5YXBhLT5md19tYWpfdmVyID0gcmVzcF9kYXRhWzE1XTsNCisgICAgICAgY3lhcGEt PmZ3X21pbl92ZXIgPSByZXNwX2RhdGFbMTZdOw0KKw0KKyAgICAgICBjeWFwYS0+ZWxlY3Ryb2Rl c194ID0gcmVzcF9kYXRhWzUyXTsNCisgICAgICAgY3lhcGEtPmVsZWN0cm9kZXNfeSA9IHJlc3Bf ZGF0YVs1M107DQorDQorICAgICAgIGN5YXBhLT5waHlzaWNhbF9zaXplX3ggPSAgZ2V0X3VuYWxp Z25lZF9sZTE2KCZyZXNwX2RhdGFbNTRdKSAvIDEwMDsNCisgICAgICAgY3lhcGEtPnBoeXNpY2Fs X3NpemVfeSA9IGdldF91bmFsaWduZWRfbGUxNigmcmVzcF9kYXRhWzU2XSkgLyAxMDA7DQorDQor ICAgICAgIGN5YXBhLT5tYXhfYWJzX3ggPSBnZXRfdW5hbGlnbmVkX2xlMTYoJnJlc3BfZGF0YVs1 OF0pOw0KKyAgICAgICBjeWFwYS0+bWF4X2Fic195ID0gZ2V0X3VuYWxpZ25lZF9sZTE2KCZyZXNw X2RhdGFbNjBdKTsNCisNCisgICAgICAgY3lhcGEtPm1heF96ID0gZ2V0X3VuYWxpZ25lZF9sZTE2 KCZyZXNwX2RhdGFbNjJdKTsNCisNCisgICAgICAgY3lhcGEtPnhfb3JpZ2luID0gcmVzcF9kYXRh WzY0XSAmIDB4MDE7DQorICAgICAgIGN5YXBhLT55X29yaWdpbiA9IHJlc3BfZGF0YVs2NV0gJiAw eDAxOw0KKw0KKyAgICAgICBjeWFwYS0+YnRuX2NhcGFiaWxpdHkgPSAocmVzcF9kYXRhWzcwXSA8 PCAzKSAmIENBUEFCSUxJVFlfQlROX01BU0s7DQorDQorICAgICAgIG1lbWNweSgmY3lhcGEtPnBy b2R1Y3RfaWRbMF0sICZyZXNwX2RhdGFbMzNdLCA1KTsNCisgICAgICAgY3lhcGEtPnByb2R1Y3Rf aWRbNV0gPSAnLSc7DQorICAgICAgIG1lbWNweSgmY3lhcGEtPnByb2R1Y3RfaWRbNl0sICZyZXNw X2RhdGFbMzhdLCA2KTsNCisgICAgICAgY3lhcGEtPnByb2R1Y3RfaWRbMTJdID0gJy0nOw0KKyAg ICAgICBtZW1jcHkoJmN5YXBhLT5wcm9kdWN0X2lkWzEzXSwgJnJlc3BfZGF0YVs0NF0sIDIpOw0K KyAgICAgICBjeWFwYS0+cHJvZHVjdF9pZFsxNV0gPSAnXDAnOw0KKw0KKyAgICAgICBpZiAoIWN5 YXBhLT5lbGVjdHJvZGVzX3ggfHwgIWN5YXBhLT5lbGVjdHJvZGVzX3kgfHwNCisgICAgICAgICAg ICAgICAhY3lhcGEtPnBoeXNpY2FsX3NpemVfeCB8fCAhY3lhcGEtPnBoeXNpY2FsX3NpemVfeSB8 fA0KKyAgICAgICAgICAgICAgICFjeWFwYS0+bWF4X2Fic194IHx8ICFjeWFwYS0+bWF4X2Fic195 IHx8ICFjeWFwYS0+bWF4X3opDQorICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQorDQor ICAgICAgIHJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IGN5YXBhX2dlbjVfZG9fb3BlcmF0 aW9uYWxfY2hlY2soc3RydWN0IGN5YXBhICpjeWFwYSkNCit7DQorICAgICAgIHN0cnVjdCBkZXZp Y2UgKmRldiA9ICZjeWFwYS0+Y2xpZW50LT5kZXY7DQorICAgICAgIGludCByZXQ7DQorDQorICAg ICAgIGlmIChjeWFwYS0+Z2VuICE9IENZQVBBX0dFTjUpDQorICAgICAgICAgICAgICAgcmV0dXJu IC1FSU5WQUw7DQorDQorICAgICAgIGN5YXBhX2VuYWJsZV9pcnFfc2F2ZShjeWFwYSk7DQorICAg ICAgIHN3aXRjaCAoY3lhcGEtPnN0YXRlKSB7DQorICAgICAgIGNhc2UgQ1lBUEFfU1RBVEVfR0VO NV9CTDoNCisgICAgICAgICAgICAgICByZXQgPSBjeWFwYV9nZW41X2JsX2V4aXQoY3lhcGEpOw0K KyAgICAgICAgICAgICAgIGlmIChyZXQpIHsNCisgICAgICAgICAgICAgICAgICAgICAgIC8qIHRy eSB0byB1cGRhdGUgdHJhY2twYWQgcHJvZHVjdCBpbmZvcm1hdGlvbi4gKi8NCisgICAgICAgICAg ICAgICAgICAgICAgIGN5YXBhX2dlbjVfYmxfcXVlcnlfZGF0YShjeWFwYSk7DQorICAgICAgICAg ICAgICAgICAgICAgICBnb3RvIG91dDsNCisgICAgICAgICAgICAgICB9DQorDQorICAgICAgICAg ICAgICAgY3lhcGEtPnN0YXRlID0gQ1lBUEFfU1RBVEVfR0VONV9BUFA7DQorDQorICAgICAgIGNh c2UgQ1lBUEFfU1RBVEVfR0VONV9BUFA6DQorICAgICAgICAgICAgICAgLyogaWYgdHJhY2twYWQg ZGV2aWNlIGluIGRlZXAgc2xlZXAgbW9kZSwNCisgICAgICAgICAgICAgICAgKiB0aGUgYXBwIGNv bW1hbmQgd2lsbCBmYWlsLg0KKyAgICAgICAgICAgICAgICAqIFNvIGFsd2F5cyByZXNldCB0cmFj a3BhZCBkZXZpY2UgdG8gZnVsbCBhY3RpdmUgd2hlbg0KKyAgICAgICAgICAgICAgICAqIHRoZSBk ZXZpY2Ugc3RhdGUgaXMgcmVxdWVyaWVkLg0KKyAgICAgICAgICAgICAgICAqLw0KKyAgICAgICAg ICAgICAgIHJldCA9IGN5YXBhX2dlbjVfc2V0X3Bvd2VyX21vZGUoY3lhcGEsIFBXUl9NT0RFX0ZV TExfQUNUSVZFLCAwKTsNCisgICAgICAgICAgICAgICBpZiAocmV0KQ0KKyAgICAgICAgICAgICAg ICAgICAgICAgZ290byBvdXQ7DQorDQorICAgICAgICAgICAgICAgLyogR2V0IHRyYWNrcGFkIHBy b2R1Y3QgaW5mb3JtYXRpb24uICovDQorICAgICAgICAgICAgICAgcmV0ID0gY3lhcGFfZ2VuNV9n ZXRfcXVlcnlfZGF0YShjeWFwYSk7DQorICAgICAgICAgICAgICAgaWYgKHJldCkNCisgICAgICAg ICAgICAgICAgICAgICAgIGdvdG8gb3V0Ow0KKyAgICAgICAgICAgICAgIC8qIG9ubHkgc3VwcG9y dCBwcm9kdWN0IElEIHN0YXJ0aW5nIHdpdGggQ1lUUkEgKi8NCisgICAgICAgICAgICAgICBpZiAo bWVtY21wKGN5YXBhLT5wcm9kdWN0X2lkLCB1bmlxdWVfc3RyLA0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJsZW4odW5pcXVlX3N0cikpICE9IDApIHsNCisgICAgICAgICAgICAg ICAgICAgICAgIGRldl9lcnIoZGV2LCAiJXM6IHVua25vd24gcHJvZHVjdCBJRCAoJXMpXG4iLA0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgY3lhcGEtPnByb2R1Y3Rf aWQpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gLUVJTlZBTDsNCisgICAgICAgICAg ICAgICB9DQorICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgIGRlZmF1bHQ6DQorICAgICAg ICAgICAgICAgcmV0ID0gLUVJTlZBTDsNCisgICAgICAgfQ0KKw0KK291dDoNCisgICAgICAgY3lh cGFfaXJxX3Jlc3RvcmUoY3lhcGEpOw0KKyAgICAgICByZXR1cm4gcmV0Ow0KK30NCisNCisvKg0K KyAqIHJldHVybiBmYWxzZSwgZG8gbm90IGNvbnRpbnVlIHByb2Nlc3MNCisgKiByZXR1cm4gdHJ1 ZSwgY29udGludWUgcHJvY2Vzcy4NCisgKi8NCitzdGF0aWMgYm9vbCBjeWFwYV9nZW41X2lycV9j bWRfaGFuZGxlcihzdHJ1Y3QgY3lhcGEgKmN5YXBhKQ0KK3sNCisgICAgICAgaW50IGxlbmd0aDsN CisNCisgICAgICAgaWYgKGF0b21pY19yZWFkKCZnZW41X3BpcC0+Y21kX2lzc3VlZCkpIHsNCisg ICAgICAgICAgICAgICAvKg0KKyAgICAgICAgICAgICAgICAqIHJlYWQgb3V0IGFsbCBub25lIGNv bW1hbmQgcmVzcG9uc2UgZGF0YS4NCisgICAgICAgICAgICAgICAgKiB0aGVzZSBvdXRwdXQgZGF0 YSBtYXkgY2F1c2VkIGJ5IHVzZXIgcHV0IGZpbmdlciBvbg0KKyAgICAgICAgICAgICAgICAqIHRy YWNrcGFkIHdoZW4gaG9zdCB3YWl0aW5nIHRoZSBjb21tYW5kIHJlc3BvbnNlLg0KKyAgICAgICAg ICAgICAgICAqLw0KKyAgICAgICAgICAgICAgIGN5YXBhX2kyY19waXBfcmVhZChjeWFwYSwgZ2Vu NV9waXAtPmlycV9jbWRfYnVmLA0KKyAgICAgICAgICAgICAgICAgICAgICAgR0VONV9SRVNQX0xF TkdUSF9TSVpFKTsNCisgICAgICAgICAgICAgICBsZW5ndGggPSBnZXRfdW5hbGlnbmVkX2xlMTYo Z2VuNV9waXAtPmlycV9jbWRfYnVmKTsNCisgICAgICAgICAgICAgICBsZW5ndGggPSAobGVuZ3Ro IDw9IEdFTjVfUkVTUF9MRU5HVEhfU0laRSkgPw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHRU41X1JFU1BfTEVOR1RIX1NJWkUgOiBsZW5ndGg7DQorICAgICAgICAgICAgICAgaWYg KGxlbmd0aCA+IEdFTjVfUkVTUF9MRU5HVEhfU0laRSkNCisgICAgICAgICAgICAgICAgICAgICAg IGN5YXBhX2kyY19waXBfcmVhZChjeWFwYSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ2VuNV9waXAtPmlycV9jbWRfYnVmLCBsZW5ndGgpOw0KKyAgICAgICAgICAgICAgIGlmICgh KGdlbjVfcGlwLT5yZXNwX3NvcnRfZnVuYyAmJg0KKyAgICAgICAgICAgICAgICAgICAgICAgZ2Vu NV9waXAtPnJlc3Bfc29ydF9mdW5jKGN5YXBhLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBnZW41X3BpcC0+aXJxX2NtZF9idWYsIGxlbmd0aCkpKSB7DQorICAgICAgICAgICAgICAg ICAgICAgICAvKg0KKyAgICAgICAgICAgICAgICAgICAgICAgICogQ292ZXIgdGhlIEdlbjUgVjEg ZmlybXdhcmUgaXNzdWUuDQorICAgICAgICAgICAgICAgICAgICAgICAgKiBUaGUgaXNzdWUgaXMg dGhlcmUgaXMgbm8gaW50ZXJydXQgd2lsbCBiZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICog YXNzZXJ0ZWQgdG8gbm90aXR5ZiBob3N0IHRvIHJlYWQgYSBjb21tYW5kDQorICAgICAgICAgICAg ICAgICAgICAgICAgKiBkYXRhIG91dCB3aGVuIGFsd2F5cyBoYXMgZmluZ2VyIHRvdWNoIG9uDQor ICAgICAgICAgICAgICAgICAgICAgICAgKiB0cmFja3BhZCBkdXJpbmcgdGhlIGNvbW1hbmQgaXMg aXNzdWVkIHRvDQorICAgICAgICAgICAgICAgICAgICAgICAgKiB0cmFja2FkIGRldmljZS4NCisg ICAgICAgICAgICAgICAgICAgICAgICAqIFRoaXMgaXNzdWUgaGFzIHRoZSBzY2VuYXJpbyBpcyB0 aGF0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICogdXNlciBhbHdheXMgaGFzIGhpcyBmaW5n ZXJzIHRvdWNoZWQgb24NCisgICAgICAgICAgICAgICAgICAgICAgICAqIHRyYWNrcGFkIGRldmlj ZSB3aGVuIGJvb3RpbmcvcmVib290aW5nDQorICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGVp ciBjaHJvbWUgYm9vay4NCisgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgICAgICAgICAg ICAgICAgICAgICAgbGVuZ3RoID0gKmdlbjVfcGlwLT5yZXNwX2xlbjsNCisgICAgICAgICAgICAg ICAgICAgICAgIGN5YXBhX2VtcHR5X3BpcF9vdXRwdXRfZGF0YShjeWFwYSwNCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW41X3BpcC0+cmVzcF9kYXRhLA0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsZW5ndGgsDQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuNV9waXAtPnJlc3Bfc29ydF9mdW5jKTsNCisg ICAgICAgICAgICAgICAgICAgICAgIGlmIChnZW41X3BpcC0+cmVzcF9sZW4gJiYgbGVuZ3RoICE9 IDApIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmdlbjVfcGlwLT5yZXNwX2xl biA9IGxlbmd0aDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXRvbWljX2RlYygm Z2VuNV9waXAtPmNtZF9pc3N1ZWQpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b21wbGV0ZSgmZ2VuNV9waXAtPmNtZF9yZWFkeSk7DQorICAgICAgICAgICAgICAgICAgICAgICB9 DQorICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQorICAgICAgICAgICAgICAg fQ0KKw0KKyAgICAgICAgICAgICAgIGlmIChnZW41X3BpcC0+cmVzcF9kYXRhICYmIGdlbjVfcGlw LT5yZXNwX2xlbikgew0KKyAgICAgICAgICAgICAgICAgICAgICAgKmdlbjVfcGlwLT5yZXNwX2xl biA9ICgqZ2VuNV9waXAtPnJlc3BfbGVuIDwgbGVuZ3RoKSA/DQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICpnZW41X3BpcC0+cmVzcF9sZW4gOiBsZW5ndGg7DQorICAgICAgICAgICAg ICAgICAgICAgICBtZW1jcHkoZ2VuNV9waXAtPnJlc3BfZGF0YSwgZ2VuNV9waXAtPmlycV9jbWRf YnVmLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZ2VuNV9waXAtPnJlc3BfbGVu KTsNCisgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgYXRvbWljX2RlYygmZ2VuNV9w aXAtPmNtZF9pc3N1ZWQpOw0KKyAgICAgICAgICAgICAgIGNvbXBsZXRlKCZnZW41X3BpcC0+Y21k X3JlYWR5KTsNCisgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQorICAgICAgIH0NCisNCisg ICAgICAgcmV0dXJuIHRydWU7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIGN5YXBhX2dlbjVfcmVwb3J0 X2J1dHRvbnMoc3RydWN0IGN5YXBhICpjeWFwYSwNCisgICAgICAgICAgICAgICBjb25zdCBzdHJ1 Y3QgY3lhcGFfZ2VuNV9yZXBvcnRfZGF0YSAqcmVwb3J0X2RhdGEpDQorew0KKyAgICAgICBzdHJ1 Y3QgaW5wdXRfZGV2ICppbnB1dCA9IGN5YXBhLT5pbnB1dDsNCisgICAgICAgdTggYnV0dG9ucyA9 IHJlcG9ydF9kYXRhLT5yZXBvcnRfaGVhZFtHRU41X0JVVFRPTlNfT0ZGU0VUXTsNCisNCisgICAg ICAgYnV0dG9ucyA9IChidXR0b25zIDw8IENBUEFCSUxJVFlfQlROX1NISUZUKSAmIENBUEFCSUxJ VFlfQlROX01BU0s7DQorDQorICAgICAgIGlmIChjeWFwYS0+YnRuX2NhcGFiaWxpdHkgJiBDQVBB QklMSVRZX0xFRlRfQlROX01BU0spIHsNCisgICAgICAgICAgICAgICBpbnB1dF9yZXBvcnRfa2V5 KGlucHV0LCBCVE5fTEVGVCwNCisgICAgICAgICAgICAgICAgICAgICAgICEhKGJ1dHRvbnMgJiBD QVBBQklMSVRZX0xFRlRfQlROX01BU0spKTsNCisgICAgICAgfQ0KKyAgICAgICBpZiAoY3lhcGEt PmJ0bl9jYXBhYmlsaXR5ICYgQ0FQQUJJTElUWV9NSURETEVfQlROX01BU0spIHsNCisgICAgICAg ICAgICAgICBpbnB1dF9yZXBvcnRfa2V5KGlucHV0LCBCVE5fTUlERExFLA0KKyAgICAgICAgICAg ICAgICAgICAgICAgISEoYnV0dG9ucyAmIENBUEFCSUxJVFlfTUlERExFX0JUTl9NQVNLKSk7DQor ICAgICAgIH0NCisgICAgICAgaWYgKGN5YXBhLT5idG5fY2FwYWJpbGl0eSAmIENBUEFCSUxJVFlf UklHSFRfQlROX01BU0spIHsNCisgICAgICAgICAgICAgICBpbnB1dF9yZXBvcnRfa2V5KGlucHV0 LCBCVE5fUklHSFQsDQorICAgICAgICAgICAgICAgICAgICAgICAhIShidXR0b25zICYgQ0FQQUJJ TElUWV9SSUdIVF9CVE5fTUFTSykpOw0KKyAgICAgICB9DQorDQorICAgICAgIGlucHV0X3N5bmMo aW5wdXQpOw0KK30NCisNCitzdGF0aWMgdm9pZCBjeWFwYV9nZW41X3JlcG9ydF9zbG90X2RhdGEo c3RydWN0IGN5YXBhICpjeWFwYSwNCisgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgY3lhcGFf Z2VuNV90b3VjaF9yZWNvcmQgKnRvdWNoKQ0KK3sNCisgICAgICAgc3RydWN0IGlucHV0X2RldiAq aW5wdXQgPSBjeWFwYS0+aW5wdXQ7DQorICAgICAgIHU4IGV2ZW50X2lkID0gR0VONV9HRVRfRVZF TlRfSUQodG91Y2gtPnRvdWNoX3RpcF9ldmVudF9pZCk7DQorICAgICAgIGludCBzbG90ID0gR0VO NV9HRVRfVE9VQ0hfSUQodG91Y2gtPnRvdWNoX3RpcF9ldmVudF9pZCk7DQorICAgICAgIGludCB4 LCB5Ow0KKw0KKyAgICAgICBpZiAoZXZlbnRfaWQgPT0gUkVDT1JEX0VWRU5UX0xJRlRPRkYpDQor ICAgICAgICAgICAgICAgcmV0dXJuOw0KKw0KKyAgICAgICBpbnB1dF9tdF9zbG90KGlucHV0LCBz bG90KTsNCisgICAgICAgaW5wdXRfbXRfcmVwb3J0X3Nsb3Rfc3RhdGUoaW5wdXQsIE1UX1RPT0xf RklOR0VSLCB0cnVlKTsNCisgICAgICAgeCA9ICh0b3VjaC0+eF9oaSA8PCA4KSB8IHRvdWNoLT54 X2xvOw0KKyAgICAgICBpZiAoY3lhcGEtPnhfb3JpZ2luKQ0KKyAgICAgICAgICAgICAgIHggPSBj eWFwYS0+bWF4X2Fic194IC0geDsNCisgICAgICAgaW5wdXRfcmVwb3J0X2FicyhpbnB1dCwgQUJT X01UX1BPU0lUSU9OX1gsIHgpOw0KKyAgICAgICB5ID0gKHRvdWNoLT55X2hpIDw8IDgpIHwgdG91 Y2gtPnlfbG87DQorICAgICAgIGlmIChjeWFwYS0+eV9vcmlnaW4pDQorICAgICAgICAgICAgICAg eSA9IGN5YXBhLT5tYXhfYWJzX3kgLSB5Ow0KKyAgICAgICBpbnB1dF9yZXBvcnRfYWJzKGlucHV0 LCBBQlNfTVRfUE9TSVRJT05fWSwgeSk7DQorICAgICAgIGlucHV0X3JlcG9ydF9hYnMoaW5wdXQs IEFCU19NVF9QUkVTU1VSRSwNCisgICAgICAgICAgICAgICB0b3VjaC0+eik7DQorICAgICAgIGlu cHV0X3JlcG9ydF9hYnMoaW5wdXQsIEFCU19NVF9UT1VDSF9NQUpPUiwNCisgICAgICAgICAgICAg ICB0b3VjaC0+bWFqb3JfYXhpc19sZW4pOw0KKyAgICAgICBpbnB1dF9yZXBvcnRfYWJzKGlucHV0 LCBBQlNfTVRfVE9VQ0hfTUlOT1IsDQorICAgICAgICAgICAgICAgdG91Y2gtPm1pbm9yX2F4aXNf bGVuKTsNCisNCisgICAgICAgaW5wdXRfcmVwb3J0X2FicyhpbnB1dCwgQUJTX01UX1dJRFRIX01B Sk9SLA0KKyAgICAgICAgICAgICAgIHRvdWNoLT5tYWpvcl90b29sX2xlbik7DQorICAgICAgIGlu cHV0X3JlcG9ydF9hYnMoaW5wdXQsIEFCU19NVF9XSURUSF9NSU5PUiwNCisgICAgICAgICAgICAg ICB0b3VjaC0+bWlub3JfdG9vbF9sZW4pOw0KKw0KKyAgICAgICBpbnB1dF9yZXBvcnRfYWJzKGlu cHV0LCBBQlNfTVRfT1JJRU5UQVRJT04sDQorICAgICAgICAgICAgICAgdG91Y2gtPm9yaWVudGF0 aW9uKTsNCit9DQorDQorc3RhdGljIHZvaWQgY3lhcGFfZ2VuNV9yZXBvcnRfdG91Y2hlcyhzdHJ1 Y3QgY3lhcGEgKmN5YXBhLA0KKyAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBjeWFwYV9nZW41 X3JlcG9ydF9kYXRhICpyZXBvcnRfZGF0YSkNCit7DQorICAgICAgIHN0cnVjdCBpbnB1dF9kZXYg KmlucHV0ID0gY3lhcGEtPmlucHV0Ow0KKyAgICAgICB1bnNpZ25lZCBpbnQgdG91Y2hfbnVtOw0K KyAgICAgICBpbnQgaTsNCisNCisgICAgICAgdG91Y2hfbnVtID0gcmVwb3J0X2RhdGEtPnJlcG9y dF9oZWFkW0dFTjVfTlVNQkVSX09GX1RPVUNIX09GRlNFVF0gJg0KKyAgICAgICAgICAgICAgICAg ICAgICAgR0VONV9OVU1CRVJfT0ZfVE9VQ0hfTUFTSzsNCisNCisgICAgICAgZm9yIChpID0gMDsg aSA8IHRvdWNoX251bTsgaSsrKQ0KKyAgICAgICAgICAgICAgIGN5YXBhX2dlbjVfcmVwb3J0X3Ns b3RfZGF0YShjeWFwYSwNCisgICAgICAgICAgICAgICAgICAgICAgICZyZXBvcnRfZGF0YS0+dG91 Y2hfcmVjb3Jkc1tpXSk7DQorDQorICAgICAgIGlucHV0X210X3N5bmNfZnJhbWUoaW5wdXQpOw0K KyAgICAgICBpbnB1dF9zeW5jKGlucHV0KTsNCit9DQorDQorc3RhdGljIHZvaWQgY3lhcGFfZ2Vu NV9pcnFfaGFuZGxlcihzdHJ1Y3QgY3lhcGEgKmN5YXBhKQ0KK3sNCisgICAgICAgc3RydWN0IGN5 YXBhX2dlbjVfcmVwb3J0X2RhdGEgcmVwb3J0X2RhdGE7DQorICAgICAgIGludCByZXQ7DQorICAg ICAgIHU4IHJlcG9ydF9pZDsNCisgICAgICAgdW5zaWduZWQgaW50IHJlcG9ydF9sZW47DQorDQor ICAgICAgIGlmIChjeWFwYS0+Z2VuICE9IENZQVBBX0dFTjUgfHwNCisgICAgICAgICAgICAgICBj eWFwYS0+c3RhdGUgIT0gQ1lBUEFfU1RBVEVfR0VONV9BUFApIHsNCisgICAgICAgICAgICAgICBh c3luY19zY2hlZHVsZShjeWFwYV9kZXRlY3RfYXN5bmMsIGN5YXBhKTsNCisgICAgICAgICAgICAg ICByZXR1cm47DQorICAgICAgIH0NCisNCisgICAgICAgcmV0ID0gY3lhcGFfaTJjX3BpcF9yZWFk KGN5YXBhLCAodTggKikmcmVwb3J0X2RhdGEsDQorICAgICAgICAgICAgICAgICAgICAgICBHRU41 X1RPVUNIX1JFUE9SVF9IRUFEX1NJWkUpOw0KKyAgICAgICBpZiAocmV0ICE9IEdFTjVfVE9VQ0hf UkVQT1JUX0hFQURfU0laRSkgew0KKyAgICAgICAgICAgICAgIC8qIGZhaWxlZCB0byByZWFkIHJl cG9ydCBoZWFkIGRhdGEuICovDQorICAgICAgICAgICAgICAgYXN5bmNfc2NoZWR1bGUoY3lhcGFf ZGV0ZWN0X2FzeW5jLCBjeWFwYSk7DQorICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICB9 DQorDQorICAgICAgIHJlcG9ydF9sZW4gPSBnZXRfdW5hbGlnbmVkX2xlMTYoDQorICAgICAgICAg ICAgICAgICAgICAgICAmcmVwb3J0X2RhdGEucmVwb3J0X2hlYWRbR0VONV9SRVNQX0xFTkdUSF9P RkZTRVRdKTsNCisgICAgICAgaWYgKHJlcG9ydF9sZW4gPD0gR0VONV9SRVNQX0xFTkdUSF9TSVpF KSB7DQorICAgICAgICAgICAgICAgLyoNCisgICAgICAgICAgICAgICAgKiB0cmFja3BhZCBwb3dl ciB1cCBldmVudCBvciBlbmQgb2Ygb25lIHRvdWNoIHBhY2tldHMgcmVwb3J0LA0KKyAgICAgICAg ICAgICAgICAqIG5vIGRhdGEgZm9yIHJlcG9ydC4NCisgICAgICAgICAgICAgICAgKi8NCisgICAg ICAgICAgICAgICBpZiAocmVwb3J0X2xlbiAhPSBHRU41X1JFU1BfTEVOR1RIX1NJWkUpDQorICAg ICAgICAgICAgICAgICAgICAgICBhc3luY19zY2hlZHVsZShjeWFwYV9kZXRlY3RfYXN5bmMsIGN5 YXBhKTsNCisNCisgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgIH0NCisNCisgICAgICAg cmVwb3J0X2lkID0gcmVwb3J0X2RhdGEucmVwb3J0X2hlYWRbR0VONV9SRVNQX1JFUE9SVF9JRF9P RkZTRVRdOw0KKyAgICAgICBpZiAocmVwb3J0X2lkID09IEdFTjVfV0FLRVVQX0VWRU5UX1JFUE9S VF9JRCAmJg0KKyAgICAgICAgICAgICAgICAgICAgICAgcmVwb3J0X2xlbiA9PSBHRU41X1dBS0VV UF9FVkVOVF9TSVpFKSB7DQorICAgICAgICAgICAgICAgLyogV2FrZSBldmVudCBmcm9tIGRlZXAg c2xlZXAgbW9kZSwgcmVzZXQgcG93ZXIgc3RhdGUuICovDQorICAgICAgICAgICAgICAgcmV0dXJu Ow0KKyAgICAgICB9IGVsc2UgaWYgKHJlcG9ydF9pZCAhPSBHRU41X1RPVUNIX1JFUE9SVF9JRCAm Jg0KKyAgICAgICAgICAgICAgICAgICAgICAgcmVwb3J0X2lkICE9IEdFTjVfQlROX1JFUE9SVF9J RCAmJg0KKyAgICAgICAgICAgICAgICAgICAgICAgcmVwb3J0X2lkICE9IEdFTjVfT0xEX1BVU0hf QlROX1JFUE9SVF9JRCAmJg0KKyAgICAgICAgICAgICAgICAgICAgICAgcmVwb3J0X2lkICE9IEdF TjVfUFVTSF9CVE5fUkVQT1JUX0lEKSB7DQorICAgICAgICAgICAgICAgLyogUnVubmluZyBpbiBC TCBtb2RlIG9yIHVua25vd24gcmVzcG9uc2UgZGF0YSByZWFkLiAqLw0KKw0KKyAgICAgICAgICAg ICAgIGFzeW5jX3NjaGVkdWxlKGN5YXBhX2RldGVjdF9hc3luYywgY3lhcGEpOw0KKyAgICAgICAg ICAgICAgIHJldHVybjsNCisgICAgICAgfQ0KKw0KKyAgICAgICBpZiAocmVwb3J0X2xlbiA+IEdF TjVfVE9VQ0hfUkVQT1JUX0hFQURfU0laRSkgew0KKyAgICAgICAgICAgICAgIC8qIG11c3QgbWFr ZSBzdXJlIHRvIHJlYWQgYWxsIGRhdGEgdGhyb3VnaCBvdXQgYmVmb3JlIHJldHVybi4gKi8NCisg ICAgICAgICAgICAgICByZXQgPSBjeWFwYV9pMmNfcGlwX3JlYWQoY3lhcGEsICh1OCAqKSZyZXBv cnRfZGF0YSwgcmVwb3J0X2xlbik7DQorICAgICAgICAgICAgICAgaWYgKHJldCAhPSByZXBvcnRf bGVuKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAvKiBmYWlsZWQgdG8gcmVhZCByZXBvcnQg aGVhZCBkYXRhLiAqLw0KKyAgICAgICAgICAgICAgICAgICAgICAgYXN5bmNfc2NoZWR1bGUoY3lh cGFfZGV0ZWN0X2FzeW5jLCBjeWFwYSk7DQorICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47 DQorICAgICAgICAgICAgICAgfQ0KKyAgICAgICB9DQorDQorICAgICAgIGlmIChyZXBvcnRfaWQg PT0gR0VONV9UT1VDSF9SRVBPUlRfSUQgJiYNCisgICAgICAgICAgICAgICAocmVwb3J0X2xlbiA8 IEdFTjVfVE9VQ0hfUkVQT1JUX0hFQURfU0laRSB8fA0KKyAgICAgICAgICAgICAgICAgICAgICAg cmVwb3J0X2xlbiA+IEdFTjVfVE9VQ0hfUkVQT1JUX01BWF9TSVpFKSkgew0KKyAgICAgICAgICAg ICAgIC8qIEludmFsZCByZXBvcnQgZGF0YSBsZW5ndGggZm9yIGZpbmdlciBwYWNrZXQuICovDQor ICAgICAgICAgICAgICAgYXN5bmNfc2NoZWR1bGUoY3lhcGFfZGV0ZWN0X2FzeW5jLCBjeWFwYSk7 DQorICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICB9DQorDQorICAgICAgIGlmICgocmVw b3J0X2lkID09IEdFTjVfQlROX1JFUE9SVF9JRCB8fA0KKyAgICAgICAgICAgICAgICAgICAgICAg cmVwb3J0X2lkID09IEdFTjVfT0xEX1BVU0hfQlROX1JFUE9SVF9JRCB8fA0KKyAgICAgICAgICAg ICAgICAgICAgICAgcmVwb3J0X2lkID09IEdFTjVfUFVTSF9CVE5fUkVQT1JUX0lEKSAmJg0KKyAg ICAgICAgICAgICAgIChyZXBvcnRfbGVuIDwgR0VONV9CVE5fUkVQT1JUX0hFQURfU0laRSB8fA0K KyAgICAgICAgICAgICAgICAgICAgICAgcmVwb3J0X2xlbiA+IEdFTjVfQlROX1JFUE9SVF9NQVhf U0laRSkpIHsNCisgICAgICAgICAgICAgICAvKiBJbnZhbGQgcmVwb3J0IGRhdGEgbGVuZ3RoIG9m IGJ1dHRvbiBwYWNrZXQuICovDQorICAgICAgICAgICAgICAgYXN5bmNfc2NoZWR1bGUoY3lhcGFf ZGV0ZWN0X2FzeW5jLCBjeWFwYSk7DQorICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICB9 DQorDQorICAgICAgIGlmIChyZXBvcnRfaWQgPT0gR0VONV9CVE5fUkVQT1JUX0lEIHx8DQorICAg ICAgICAgICAgICAgICAgICAgICByZXBvcnRfaWQgPT0gR0VONV9PTERfUFVTSF9CVE5fUkVQT1JU X0lEIHx8DQorICAgICAgICAgICAgICAgICAgICAgICByZXBvcnRfaWQgPT0gR0VONV9QVVNIX0JU Tl9SRVBPUlRfSUQpDQorICAgICAgICAgICAgICAgY3lhcGFfZ2VuNV9yZXBvcnRfYnV0dG9ucyhj eWFwYSwgJnJlcG9ydF9kYXRhKTsNCisgICAgICAgZWxzZQ0KKyAgICAgICAgICAgICAgIGN5YXBh X2dlbjVfcmVwb3J0X3RvdWNoZXMoY3lhcGEsICZyZXBvcnRfZGF0YSk7DQorfQ0KKw0KK2NvbnN0 IHN0cnVjdCBjeWFwYV9kZXZfb3BzIGN5YXBhX2dlbjVfb3BzID0gew0KKyAgICAgICAuaW5pdGlh bGl6ZSA9IGN5YXBhX2dlbjVfaW5pdGlhbGl6ZSwNCisgICAgICAgLnVuaW5pdGlhbGl6ZSA9IGN5 YXBhX2dlbjVfdW5pbml0aWFsaXplLA0KKw0KKyAgICAgICAuc3RhdGVfcGFyc2UgPSBjeWFwYV9n ZW41X3N0YXRlX3BhcnNlLA0KKyAgICAgICAub3BlcmF0aW9uYWxfY2hlY2sgPSBjeWFwYV9nZW41 X2RvX29wZXJhdGlvbmFsX2NoZWNrLA0KKw0KKyAgICAgICAuaXJxX2hhbmRsZXIgPSBjeWFwYV9n ZW41X2lycV9oYW5kbGVyLA0KKyAgICAgICAuaXJxX2NtZF9oYW5kbGVyID0gY3lhcGFfZ2VuNV9p cnFfY21kX2hhbmRsZXIsDQorICAgICAgIC5zb3J0X2VtcHR5X291dHB1dF9kYXRhID0gY3lhcGFf ZW1wdHlfcGlwX291dHB1dF9kYXRhLA0KKyAgICAgICAuc2V0X3Bvd2VyX21vZGUgPSBjeWFwYV9n ZW41X3NldF9wb3dlcl9tb2RlLA0KK307DQotLQ0KMS43LjkuNQ0KDQpUaGlzIG1lc3NhZ2UgYW5k IGFueSBhdHRhY2htZW50cyBtYXkgY29udGFpbiBDeXByZXNzIChvciBpdHMgc3Vic2lkaWFyaWVz KSBjb25maWRlbnRpYWwgaW5mb3JtYXRpb24uIElmIGl0IGhhcyBiZWVuIHJlY2VpdmVkIGluIGVy cm9yLCBwbGVhc2UgYWR2aXNlIHRoZSBzZW5kZXIgYW5kIGltbWVkaWF0ZWx5IGRlbGV0ZSB0aGlz IG1lc3NhZ2UuDQo= --_000_77BC725C9062764F874D79F51E1F1A8F4C90DDF6S04MBX0104s04lo_ Content-Disposition: attachment; filename="winmail.dat" Content-Transfer-Encoding: base64 Content-Type: application/ms-tnef; name="winmail.dat" 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 AAAfAB4MAQAAAAoAAABTAE0AVABQAAAAAAACARkMAQAAAFgAAAAAAAAAgSsfpL6jEBmdbgDdAQ9U AgAAAIBEAHUAZABsAGUAeQAgAEQAdQAAAFMATQBUAFAAAABkAHUAZABsAEAAYwB5AHAAcgBlAHMA cwAuAGMAbwBtAAAAHwABXQEAAAAiAAAAZAB1AGQAbABAAGMAeQBwAHIAZQBzAHMALgBjAG8AbQAA AAAAHwD4PwEAAAAUAAAARAB1AGQAbABlAHkAIABEAHUAAAAfACNAAQAAACIAAABkAHUAZABsAEAA YwB5AHAAcgBlAHMAcwAuAGMAbwBtAAAAAAAfACJAAQAAAAoAAABTAE0AVABQAAAAAAACAfk/AQAA AFgAAAAAAAAAgSsfpL6jEBmdbgDdAQ9UAgAAAIBEAHUAZABsAGUAeQAgAEQAdQAAAFMATQBUAFAA AABkAHUAZABsAEAAYwB5AHAAcgBlAHMAcwAuAGMAbwBtAAAAHwAJXQEAAAAiAAAAZAB1AGQAbABA AGMAeQBwAHIAZQBzAHMALgBjAG8AbQAAAAAAHwAxQAEAAAACAAAAAAAAAAsAQDoBAAAAHwAwQAEA AAACAAAAAAAAAB8AGgABAAAAEgAAAEkAUABNAC4ATgBvAHQAZQAAAAAAAwDxPwQIAAALAEA6AQAA AAMA/T+oAwAAAgELMAEAAAAQAAAAbHF7bM4wH0CYbjZ1Be6qkAMAFwABAAAAQAA5AIDva514l88B QAAIMHaHv514l88BCwApAAAAAAALACMAAAAAAB8AAICGAwIAAAAAAMAAAAAAAABGAQAAAB4AAABh AGMAYwBlAHAAdABsAGEAbgBnAHUAYQBnAGUAAAAAAAEAAAAaAAAAegBoAC0AQwBOACwAIABlAG4A LQBVAFMAAAAAAAsAAIAIIAYAAAAAAMAAAAAAAABGAAAAAAaFAAAAAAAAHwA3AAEAAACgAAAAWwBQ AEEAVABDAEgAIAB2ADMAIAAxADAALwAxADQAXQAgAGkAbgBwAHUAdAA6ACAAYwB5AGEAcABhADoA IABhAGQAZAAgAGcAZQBuADUAIAB0AHIAYQBjAGsAcABhAGQAIABkAGUAdgBpAGMAZQAgAGIAYQBz AGkAYwAgAGYAdQBuAGMAdABpAG8AbgBzACAAcwB1AHAAcABvAHIAdAAAAB8APQABAAAAAgAAAAAA AAADADYAAAAAAAIBcQABAAAAFgAAAAHPl3iblUDOR5cBk0ponwHeUoXGY1YAAB8AcAABAAAAoAAA AFsAUABBAFQAQwBIACAAdgAzACAAMQAwAC8AMQA0AF0AIABpAG4AcAB1AHQAOgAgAGMAeQBhAHAA YQA6ACAAYQBkAGQAIABnAGUAbgA1ACAAdAByAGEAYwBrAHAAYQBkACAAZABlAHYAaQBjAGUAIABi AGEAcwBpAGMAIABmAHUAbgBjAHQAaQBvAG4AcwAgAHMAdQBwAHAAbwByAHQAAAAfADUQAQAAAIQA AAA8ADcANwBCAEMANwAyADUAQwA5ADAANgAyADcANgA0AEYAOAA3ADQARAA3ADkARgA1ADEARQAx AEYAMQBBADgARgA0AEMAOQAwAEQARABGADYAQABTADAANAAtAE0AQgBYADAAMQAtADAANAAuAHMA MAA0AC4AbABvAGMAYQBsAD4AAAADAN4/6f0AAAsAAIAIIAYAAAAAAMAAAAAAAABGAAAAAAOFAAAA AAAAAwAAgAggBgAAAAAAwAAAAAAAAEYAAAAAAYUAAAAAAAADAACAAyAGAAAAAADAAAAAAAAARgAA AAABgQAAAAAAAAMAgBD/////BQAAgAMgBgAAAAAAwAAAAAAAAEYAAAAAAoEAAAAAAAAAAAAACwAA gAMgBgAAAAAAwAAAAAAAAEYAAAAAHIEAAAAAAABAAAcwqoj6m3iXzwELAAIAAQAAAAMAJgAAAAAA AgEQMAEAAABGAAAAAAAAALEfoTkwIFFGnbSlcN7Qn9QHAHe8clyQYnZPh0159R4fGo8AAACZPBsA ALqnPu7L1/dAo3bvNfxhWYkAGIP8w54AAAAAHwD6PwEAAAAUAAAARAB1AGQAbABlAHkAIABEAHUA AAADAAlZAQAAAAMAAIAIIAYAAAAAAMAAAAAAAABGAAAAABCFAAAAAAAAHwAAgB+k6zOoei5Cvnt5 4amOVLMBAAAAOAAAAEMAbwBuAHYAZQByAHMAYQB0AGkAbwBuAEkAbgBkAGUAeABUAHIAYQBjAGsA aQBuAGcARQB4AAAAAQAAALoAAABJAEkAPQAwADEAQwBGADkANwA3ADgAOQBCADkANQA0ADAAQwBF ADQANwA5ADcAMAAxADkAMwA0AEEANgA4ADkARgAwADEARABFADUAMgA4ADUAQwA2ADYAMwA1ADYA OwBWAGUAcgBzAGkAbwBuAD0AVgBlAHIAcwBpAG8AbgAgADEANAAuADMAIAAoAEIAdQBpAGwAZAAg ADEANwA0AC4AMAApACwAIABTAHQAYQBnAGUAPQBIADQAAAAAAAMAAIADIAYAAAAAAMAAAAAAAABG AAAAABOBAAABAAAAAwAAgAMgBgAAAAAAwAAAAAAAAEYAAAAAI4EAAP///38DAACAAyAGAAAAAADA AAAAAAAARgAAAAAQgQAAAAAAAAMAAIADIAYAAAAAAMAAAAAAAABGAAAAABGBAAAAAAAACwAAgAMg BgAAAAAAwAAAAAAAAEYAAAAAJIEAAAAAAAALAACAAyAGAAAAAADAAAAAAAAARgAAAAAsgQAAAAAA AAMAAIADIAYAAAAAAMAAAAAAAABGAAAAACmBAAAAAAAAAwAAgAMgBgAAAAAAwAAAAAAAAEYAAAAA KoEAAAAAAAAfAACAAyAGAAAAAADAAAAAAAAARgAAAAAngQAAAQAAAAIAAAAAAAAAAwAAgAMgBgAA AAAAwAAAAAAAAEYAAAAAEoEAAAEAAAAfAACAAyAGAAAAAADAAAAAAAAARgAAAAAhgQAAAQAAAAIA AAAAAAAACwAAgAMgBgAAAAAAwAAAAAAAAEYAAAAAA4EAAAAAAAALAACAAyAGAAAAAADAAAAAAAAA RgAAAAAmgQAAAAAAAAsAAIAIIAYAAAAAAMAAAAAAAABGAAAAAA6FAAAAAAAAAwAAgAggBgAAAAAA wAAAAAAAAEYAAAAAGIUAAAAAAAALAACACCAGAAAAAADAAAAAAAAARgAAAACChQAAAAAAAAMADTT9 PwAAHwAAgIYDAgAAAAAAwAAAAAAAAEYBAAAAIAAAAHgALQBtAHMALQBoAGEAcwAtAGEAdAB0AGEA YwBoAAAAAQAAAAIAAAAAAAAAHwAAgIYDAgAAAAAAwAAAAAAAAEYBAAAAIgAAAHgALQBvAHIAaQBn AGkAbgBhAHQAaQBuAGcALQBpAHAAAAAAAAEAAAAeAAAAWwAxADAALgAzADAALgAxADIALgAxADQA NQBdAAAAAAC0Ww== --_000_77BC725C9062764F874D79F51E1F1A8F4C90DDF6S04MBX0104s04lo_-- -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/