Re: Spread 2.5
Ed Holyat <[email protected]> Wed, 3 Sep 2014 12:45:17 +0000
| Newsgroups | gmane.network.spread.user |
|---|---|
| Message-ID | <69414ba379bd4edb951baeeba250e1c7@BY2PR0201MB0709.namprd02.prod.outlook.com> |
--_002_69414ba379bd4edb951baeeba250e1c7BY2PR0201MB0709namprd02_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable John, we ran into a similar problem in our older version of spread where th= e token was beating the data to the next daemon and caused high retransmiss= ions requests. The safest fix we could think of is to resend the token bac= k to the daemon which allowed the data to be consumed and avoid the retrans= mission. This was found using multicast on VM's, but, maybe this might gi= ve insight into this issue. -----Original Message----- From: John Lane Schultz [mailto:[email protected]]=20 Sent: Tuesday, September 02, 2014 11:23 PM To: Spread Users Subject: Re: [Spread-users] Spread 2.5 >From the logs, can you tell us what state the daemons were in when this wa= s occurring? It could be a bug. Cheers! ----- John Lane Schultz Spread Concepts LLC Cell: 443 838 2200 On Sep 2, 2014, at 10:43 PM, Yair Amir <[email protected]> wrote: I have a setup with 6 devices (running spread 4.4.0 on linux) with each one= configured on a separate segment because they are located on separate subn= ets. Multicast and broadcast is not available so I configured the segments = as follow =09 Spread_Segment 172.23.1.1 { node1 172.23.1.1 } Spread_Segment 172.23.2.1 { node2 172.23.2.1 } Spread_Segment 172.23.3.1 { node3 172.23.3.1 } Spread_Segment 172.23.4.1 { node4 172.23.4.1 } Spread_Segment 172.23.5.1 { node5 172.23.5.1 } Spread_Segment 172.23.6.1 { node6 172.23.6.1 } Everything works perfectly 99.999% of the time but it happened a few times= that we had a situation where all the communication between the nodes were= stalled and looking at spmonitor we discovered that some daemon were const= antly retransmitting. There was no way to get out of this mode besides res= tarting the daemon. During that time all communication between the nodes we= re work fine on all other ports (ping, 22, http, and some other udp port th= at we use).=20 My Questions are: - Why would that happen ? - Is there a way to detect it and to resolve it without restarting the daem= on ? Thanks=20 Claude _______________________________________________ Spread-users mailing list [email protected] http://lists.spread.org/mailman/listinfo/spread-users _______________________________________________ Spread-users mailing list [email protected] http://lists.spread.org/mailman/listinfo/spread-users --_002_69414ba379bd4edb951baeeba250e1c7BY2PR0201MB0709namprd02_ Content-Type: text/plain; name="#ediff.txt" Content-Description: #ediff.txt Content-Disposition: attachment; filename="#ediff.txt"; size=33336; creation-date="Wed, 03 Sep 2014 12:39:38 GMT"; modification-date="Thu, 24 Jan 2013 21:12:34 GMT" Content-Transfer-Encoding: base64 SW5kZXg6IHNwcmVhZG1hcC9zcHJlYWRfc3JjL3NwcmVhZDRfb2xmL2RhZW1vbi9kYXRhX2xpbmsu Yw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvbWFzdGVyL29sZi9lY29tL3NwcmVhZG1hcC9z cHJlYWRfc3JjL3NwcmVhZDRfb2xmL2RhZW1vbi9kYXRhX2xpbmsuYyx2DQpyZXRyaWV2aW5nIHJl dmlzaW9uIDEuNg0KZGlmZiAtYiAtYyAtMSAtMSAtcjEuNiBkYXRhX2xpbmsuYw0KKioqIHNwcmVh ZG1hcC9zcHJlYWRfc3JjL3NwcmVhZDRfb2xmL2RhZW1vbi9kYXRhX2xpbmsuYwkyMSBKdWwgMjAw OSAyMDo0MDoyMyAtMDAwMAkxLjYNCi0tLSBzcHJlYWRtYXAvc3ByZWFkX3NyYy9zcHJlYWQ0X29s Zi9kYWVtb24vZGF0YV9saW5rLmMJMjQgSmFuIDIwMTMgMjI6MTI6MjQgLTAwMDANCioqKioqKioq KioqKioqKg0KKioqIDUwLDg0ICoqKioNCi0tLSA1MCwxMTUgLS0tLQ0KICAjaW5jbHVkZSAgICAg ICAgPGVycm5vLmg+DQogIA0KICAjZW5kaWYJLyogQVJDSF9QQ19XSU45NSAqLw0KICANCiAgI2lu Y2x1ZGUgPHN0cmluZy5oPg0KICAjaW5jbHVkZSA8YXNzZXJ0Lmg+DQogICNpbmNsdWRlICJkYXRh X2xpbmsuaCINCiAgI2luY2x1ZGUgInN0YXR1cy5oIg0KICAjaW5jbHVkZSAiYWxhcm0uaCINCiAg I2luY2x1ZGUgInNwX2V2ZW50cy5oIiAvKiBmb3Igc3BfdGltZSAqLw0KICANCisgc3RhdGljIHZv aWQgc2V0X2xhcmdlX3NvY2tldF9idWZmZXJzKGludCBzKQ0KKyB7DQorICAgICBpbnQgaSwgb24s IHJldDsNCisgICAgIHNvY2tvcHRfbGVuX3Qgb25sZW47DQorIA0KKyAgICAgZm9yKCBpPTEwOyBp IDw9IDIwMDsgaSs9NSApDQorICAgICB7DQorICAgICAgICAgb24gPSAxMDI0Kmk7DQorIA0KKyAg ICAgICAgIHJldCA9IHNldHNvY2tvcHQoIHMsIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgKHZvaWQg Kikmb24sIDQpOw0KKyAgICAgICAgIGlmIChyZXQgPCAwICkgYnJlYWs7DQorICAgICAgICAgDQor ICAgICAgICAgcmV0ID0gc2V0c29ja29wdCggcywgU09MX1NPQ0tFVCwgU09fUkNWQlVGLCAodm9p ZCAqKSZvbiwgNCk7DQorICAgICAgICAgaWYgKHJldCA8IDAgKSBicmVhazsNCisgCQ0KKyAgICAg ICAgIG9ubGVuID0gc2l6ZW9mKG9uKTsNCisgICAgICAgICByZXQ9IGdldHNvY2tvcHQoIHMsIFNP TF9TT0NLRVQsIFNPX1NOREJVRiwgKHZvaWQgKikmb24sICZvbmxlbiApOw0KKyAgICAgICAgIGlm KCBvbiA8IGkqMTAyNCApIGJyZWFrOw0KKyAgICAgICAgIEFsYXJtcCggU1BMT0dfSU5GTywgU0VT U0lPTiwgInNldF9sYXJnZV9zb2NrZXRfYnVmZmVyczogc2V0IHNuZGJ1ZiAlZCwgcmV0IGlzICVk XG4iLCBvbiwgcmV0ICk7DQorICAgICAgICAgDQorICAgICAgICAgb25sZW4gPSBzaXplb2Yob24p Ow0KKyAgICAgICAgIHJldD0gZ2V0c29ja29wdCggcywgU09MX1NPQ0tFVCwgU09fUkNWQlVGLCAo dm9pZCAqKSZvbiwgJm9ubGVuICk7DQorICAgICAgICAgaWYoIG9uIDwgaSoxMDI0ICkgYnJlYWs7 DQorICAgICAgICAgQWxhcm1wKCBTUExPR19JTkZPLCBTRVNTSU9OLCAic2V0X2xhcmdlX3NvY2tl dF9idWZmZXJzOiBzZXQgcmN2YnVmICVkLCByZXQgaXMgJWRcbiIsIG9uLCByZXQgKTsNCisgICAg IH0NCisgICAgIEFsYXJtcCggU1BMT0dfSU5GTywgU0VTU0lPTiwgInNldF9sYXJnZV9zb2NrZXRf YnVmZmVyczogc2V0IHNuZGJ1Zi9yY3ZidWYgdG8gJWRcbiIsIDEwMjQqKGktNSkgKTsNCisgfQ0K KyANCisgDQogIGNoYW5uZWwJRExfaW5pdF9jaGFubmVsKCBpbnQzMiBjaGFubmVsX3R5cGUsIGlu dDE2IHBvcnQsIGludDMyIG1jYXN0X2FkZHJlc3MsIGludDMyIGludGVyZmFjZV9hZGRyZXNzICkN CiAgew0KICAJY2hhbm5lbAkJCWNoYW47DQogIAlzdHJ1Y3QgIHNvY2thZGRyX2luCXNvY19hZGRy Ow0KICAJaW50CQkJb249MTsNCiAgICAgICAgICBpbnQJCQlpMSxpMixpMyxpNDsNCiAgI2lmZGVm CUlQX01VTFRJQ0FTVF9UVEwNCiAgCXVuc2lnbmVkIGNoYXIJCXR0bF92YWw7DQogICNlbmRpZg0K ICANCiAgCWlmKChjaGFuID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfREdSQU0sIDApKSA9PSAtMSkN CiAgCQlBbGFybSggRVhJVCwgIkRMX2luaXRfY2hhbm5lbDogc29ja2V0IGVycm9yIGZvciBwb3J0 ICVkXG4iLCBwb3J0ICk7DQogIA0KKyAJc2V0X2xhcmdlX3NvY2tldF9idWZmZXJzKGNoYW4pOw0K KyANCiAgCWlmICggY2hhbm5lbF90eXBlICYgU0VORF9DSEFOTkVMICkNCiAgCXsNCiAgICAgICAg ICAJaWYgKHNldHNvY2tvcHQoY2hhbiwgU09MX1NPQ0tFVCwgU09fQlJPQURDQVNULCAoY2hhciAq KSZvbiwgDQogIAkJCSAgICAgICBzaXplb2Yob24pKSA8IDApIA0KICAgICAgICAgICAgICAJCUFs YXJtKCBFWElULCAiRExfaW5pdF9jaGFubmVsOiBzZXRzb2Nrb3B0IGVycm9yIGZvciBwb3J0ICVk XG4iLHBvcnQpOw0KICAJCUFsYXJtKCBEQVRBX0xJTkssICJETF9pbml0X2NoYW5uZWw6IHNldHNv Y2tvcHQgZm9yIHNlbmQgYW5kIGJyb2FkY2FzdCB3ZW50IG9rXG4iKTsNCiAgDQogICNpZmRlZglJ UF9NVUxUSUNBU1RfVFRMDQogIAkJLyogIyMjIElzbid0IHRoaXMgZm9yIHNlbmRpbmc/Pz8gKi8N CiAgCQl0dGxfdmFsID0gMTsNCiAgICAgICAgICAJaWYgKHNldHNvY2tvcHQoY2hhbiwgSVBQUk9U T19JUCwgSVBfTVVMVElDQVNUX1RUTCwgKHZvaWQgKikmdHRsX3ZhbCwgDQoqKioqKioqKioqKioq KioNCioqKiAxMjcsMTYwICoqKioNCi0tLSAxNTgsMTkzIC0tLS0NCiAgCQlpNCA9ICBtY2FzdF9h ZGRyZXNzICYgMHgwMDAwMDBmZjsNCiAgCQlpZiggaTEgPj0yMjQgJiYgaTEgPCAyNDAgKQ0KICAJ CXsNCiAgI2lmZGVmIElQX01VTFRJQ0FTVF9UVEwNCiAgCQkJc3RydWN0IGlwX21yZXEJbXJlcTsN CiAgDQogIAkJCW1yZXEuaW1yX211bHRpYWRkci5zX2FkZHIgPSBodG9ubCggbWNhc3RfYWRkcmVz cyApOw0KICANCiAgCQkJLyogdGhlIGludGVyZmFjZSBjb3VsZCBiZSBjaGFuZ2VkIHRvIGEgc3Bl Y2lmaWMgaW50ZXJmYWNlIGlmIG5lZWRlZCAqLw0KICAJCQltcmVxLmltcl9pbnRlcmZhY2Uuc19h ZGRyID0gSU5BRERSX0FOWTsNCiAgDQorIAkJCQ0KICAgICAgICAgIAkJaWYgKHNldHNvY2tvcHQo Y2hhbiwgSVBQUk9UT19JUCwgSVBfQUREX01FTUJFUlNISVAsICh2b2lkICopJm1yZXEsIA0KICAJ CSAgICAgICAJCXNpemVvZihtcmVxKSkgPCAwKSANCiAgCQkJew0KICAJCQkgICBBbGFybSggRVhJ VCwgIkRMX2luaXRfY2hhbm5lbDogcHJvYmxlbSBpbiBzZXRzb2Nrb3B0IHRvIG11bHRpY2FzdCBh ZGRyZXNzICVkIGVycm5vWyVkXTo6JXNcbiIsIA0KICAJCQkgICAgICBtY2FzdF9hZGRyZXNzLCBz b2NrX2Vycm5vLCBzb2NrX3N0cmVycm9yKHNvY2tfZXJybm8pICk7DQogIAkJCX0NCiAgDQogIAkJ CUFsYXJtKCBEQVRBX0xJTkssICJETF9pbml0X2NoYW5uZWw6IEpvaW5pbmcgbXVsdGljYXN0IGFk ZHJlc3MgJWQuJWQuJWQuJWQgd2VudCBva1xuIixpMSxpMixpMyxpNCk7DQogICNlbHNlCS8qIG5v IG11bHRpY2FzdCBzdXBwb3J0ICovDQogIAkJCUFsYXJtKCBFWElULCAiRExfaW5pdF9jaGFubmVs OiBPbGQgU3VuT1MgYXJjaGl0ZWN0dXJlIGRvZXMgbm90IHN1cHBvcnQgSVAgbXVsdGljYXN0OiAl ZC4lZC4lZC4lZFxuIixpMSxpMixpMyxpNCk7DQogICNlbmRpZg0KICAJCX0gZWxzZSB7DQorIAkJ CQ0KICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXRzb2Nrb3B0KGNoYW4sIFNPTF9TT0NLRVQs IFNPX0JST0FEQ0FTVCwgKGNoYXIgKikmb24sIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNpemVvZihvbikpIDwgMCkgDQogICAgICAgICAgICAgIAkJQWxhcm0oIEVYSVQs ICJETF9pbml0X2NoYW5uZWw6IHNldHNvY2tvcHQgU09fQlJPQURDQVNUIGVycm9yIGZvciBwb3J0 ICVkLCBzb2NrZXQgJWRcbiIscG9ydCxjaGFuKTsNCiAgICAgICAgICAgICAgICAgICAgICBBbGFy bSggREFUQV9MSU5LLCAiRExfaW5pdF9jaGFubmVsOiBzZXRzb2Nrb3B0IGZvciByZWN2IGFuZCBi cm9hZGNhc3Qgd2VudCBva1xuIik7DQogICAgICAgICAgICAgICAgICB9DQogIAl9DQogIA0KICAJ QWxhcm0oIERBVEFfTElOSywgIkRMX2luaXRfY2hhbm5lbDogd2VudCBvayBvbiBjaGFubmVsICVk XG4iLGNoYW4pOw0KICAJcmV0dXJuICggY2hhbiApOw0KICB9DQogIA0KSW5kZXg6IHNwcmVhZG1h cC9zcHJlYWRfc3JjL3NwcmVhZDRfb2xmL2RhZW1vbi9uZXRfdHlwZXMuaA0KPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K UkNTIGZpbGU6IC9jdnMvbWFzdGVyL29sZi9lY29tL3NwcmVhZG1hcC9zcHJlYWRfc3JjL3NwcmVh ZDRfb2xmL2RhZW1vbi9uZXRfdHlwZXMuaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNA0KZGlm ZiAtYiAtYyAtMSAtMSAtcjEuNCBuZXRfdHlwZXMuaA0KKioqIHNwcmVhZG1hcC9zcHJlYWRfc3Jj L3NwcmVhZDRfb2xmL2RhZW1vbi9uZXRfdHlwZXMuaAk1IEphbiAyMDA3IDE1OjU0OjI1IC0wMDAw CTEuNA0KLS0tIHNwcmVhZG1hcC9zcHJlYWRfc3JjL3NwcmVhZDRfb2xmL2RhZW1vbi9uZXRfdHlw ZXMuaAkyNCBKYW4gMjAxMyAyMjoxMjoyNSAtMDAwMA0KKioqKioqKioqKioqKioqDQoqKiogMTIz LDE0NCAqKioqDQotLS0gMTIzLDE0NSAtLS0tDQogIA0KICB0eXBlZGVmCXN0cnVjdAlkdW1teV90 b2tlbl9oZWFkZXIgew0KICAJaW50MzIJCXR5cGU7DQogIAlpbnQzMgkJdHJhbnNtaXRlcl9pZDsN CiAgCWludDMyCQlzZXE7DQogIAlpbnQzMgkJcHJvY19pZDsNCiAgCWludDMyCQlhcnU7DQogICAg ICAgICAgaW50MzIgICAgICAgICAgIGFydV9sYXN0X2lkOw0KICAJaW50MTYJCWZsb3dfY29udHJv bDsNCiAgCWludDE2CQlydHJfbGVuOw0KICAgICAgICAgIGludDMyICAgICAgICAgICBjb25mX2hh c2g7DQorIAlpbnQxNiAgICAgICByZXByb2Nlc3Npbmc7DQogIH0gdG9rZW5faGVhZGVyOw0KICAN CiAgdHlwZWRlZgljaGFyICAgICAgIHRva2VuX2JvZHlbTUFYX1BBQ0tFVF9TSVpFLXNpemVvZih0 b2tlbl9oZWFkZXIpXTsNCiAgDQogIHR5cGVkZWYJc3RydWN0CWR1bW15X3JpbmdfcnRyIHsNCiAg CW1lbWJlcnNoaXBfaWQJbWVtYl9pZDsNCiAgCWludDMyCQlwcm9jX2lkOw0KICAJaW50MTYJCXNl Z19pbmRleDsNCiAgCWludDE2CQludW1fc2VxOw0KICB9IHJpbmdfcnRyOw0KICANCkluZGV4OiBz cHJlYWRtYXAvc3ByZWFkX3NyYy9zcHJlYWQ0X29sZi9kYWVtb24vbmV0d29yay5jDQo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09DQpSQ1MgZmlsZTogL2N2cy9tYXN0ZXIvb2xmL2Vjb20vc3ByZWFkbWFwL3NwcmVhZF9zcmMv c3ByZWFkNF9vbGYvZGFlbW9uL25ldHdvcmsuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQ0K ZGlmZiAtYiAtYyAtMSAtMSAtcjEuNSBuZXR3b3JrLmMNCioqKiBzcHJlYWRtYXAvc3ByZWFkX3Ny Yy9zcHJlYWQ0X29sZi9kYWVtb24vbmV0d29yay5jCTIxIEp1bCAyMDA5IDIwOjQwOjIzIC0wMDAw CTEuNQ0KLS0tIHNwcmVhZG1hcC9zcHJlYWRfc3JjL3NwcmVhZDRfb2xmL2RhZW1vbi9uZXR3b3Jr LmMJMjQgSmFuIDIwMTMgMjI6MTI6MjcgLTAwMDANCioqKioqKioqKioqKioqKg0KKioqIDYxLDgy ICoqKioNCi0tLSA2MSw4NCAtLS0tDQogIHN0YXRpYwlpbnQJCU51bV9zZW5kX25lZWRlZDsNCiAg c3RhdGljICBpbnQzMgkJU2VuZF9hZGRyZXNzW01BWF9TRUdNRU5UU107DQogIHN0YXRpYwlpbnQx NgkJU2VuZF9wb3J0c1tNQVhfU0VHTUVOVFNdOw0KICANCiAgLyogIyMjIFBhY2s6IDMgbGluZXMg Ki8NCiAgLyogR2xvYmFsIGluIGZ1bmN0aW9uIHNvIGJvdGggTmV0X3F1ZXVlX2JjYXN0IGFuZCBO ZXRfZmx1c2hfYmNhc3QgY2FuIGFjY2VzcyB0aGVtICovDQogIHN0YXRpYyAgc3lzX3NjYXR0ZXIg ICAgIFF1ZXVlX3NjYXQ7DQogIHN0YXRpYyAgaW50ICAgICAgICAgICAgIFF1ZXVlZF9ieXRlcyA9 IDA7DQogIHN0YXRpYyAgY29uc3QgY2hhciAgICAgIGFsaWduX3BhZGRpbmdbNF0gPSAicGFkZCI7 DQogIA0KICAvKiBhZGRyZXNzIGZvciB0b2tlbiBzZW5kaW5nIC0gd2hpY2ggaXMgYWx3YXlzIG5l ZWRlZCAqLw0KKyANCisgc3RhdGljICBpbnQzMiAgICAgICBNeV9hZGRyZXNzOw0KICBzdGF0aWMJ aW50MzIJCVRva2VuX2FkZHJlc3M7DQogIHN0YXRpYwlpbnQxNgkJVG9rZW5fcG9ydDsNCiAgDQog IHN0YXRpYwljb25maWd1cmF0aW9uCU5ldF9tZW1iZXJzaGlwOw0KICBzdGF0aWMJaW50CQlTZWdt ZW50X2xlYWRlcjsNCiAgDQogIHN0YXRpYyAJY29uZmlndXJhdGlvbgkqQ247DQogIHN0YXRpYwlw cm9jCQlNeTsNCiAgDQogIHN0YXRpYwlpbnQxNgkJUGFydGl0aW9uW01BWF9QUk9DU19SSU5HXTsN CiAgc3RhdGljCXNwX3RpbWUJCVBhcnRpdGlvbl90aW1lb3V0IAk9IHsgNjAsIDB9Ow0KKioqKioq KioqKioqKioqDQoqKiogMjAyLDIyMyAqKioqDQotLS0gMjA0LDIyNyAtLS0tDQogIAkJTnVtX3Nl bmRfbmVlZGVkKys7DQogIAkgICAgfQ0KICAJfQ0KICAJYXNzZXJ0KG15X25leHRfaW5kZXggIT0g LTEpOw0KICAJZm9yKCBpPTA7IGkgPCBOdW1fc2VuZF9uZWVkZWQ7IGkrKyApDQogIAkJQWxhcm0o IE5FVFdPUkssIA0KICAJCQkiTmV0X3NldF9tZW1iZXJzaGlwOiBTZW5kX2FkZHJbJWRdIGlzICgl dS4ldS4ldS4ldTolZClcbiIsDQogICAgICAgICAgICAgICAgICAgICAgICAgaSwgSVAxKFNlbmRf YWRkcmVzc1tpXSksIElQMihTZW5kX2FkZHJlc3NbaV0pLCBJUDMoU2VuZF9hZGRyZXNzW2ldKSwg SVA0KFNlbmRfYWRkcmVzc1tpXSksIFNlbmRfcG9ydHNbaV0gKTsNCiAgDQogIAkvKiBDYWxjdWxh dGUgd2hlcmUgdG8gc2VuZCB0aGUgdG9rZW4gKi8NCiAgCVRva2VuX2FkZHJlc3MgPSAwOw0KKyAJ TXlfYWRkcmVzcyA9bXlfc2VnLnByb2NzW215X2luZGV4X2luX3NlZ10tPmlkOw0KKyANCiAgCWlm KCBteV9pbmRleF9pbl9zZWcgPCBteV9zZWcubnVtX3Byb2NzLTEgKQ0KICAJew0KICAJCVRva2Vu X2FkZHJlc3MgPSBteV9zZWcucHJvY3NbbXlfaW5kZXhfaW5fc2VnKzFdLT5pZDsNCiAgCQlUb2tl bl9wb3J0ICAgID0gbXlfc2VnLnBvcnQrMTsNCiAgCX1lbHNlew0KICAJCS8qIEkgYW0gbGFzdCBp biBteSBzZWdtZW50ICovDQogIAkJaWYoIE51bV9zZW5kX25lZWRlZCA9PSAwICkNCiAgCQl7DQog IAkJCS8qIA0KICAJCQkgKiBNeSBzZWdtZW50IGlzIHRoZSBvbmx5IHNlZ21lbnQNCiAgCQkJICog c2VuZGluZyB0b2tlbiB0byB0aGUgZmlyc3QgaW4gbXkgc2VnbWVudCANCioqKioqKioqKioqKioq Kg0KKioqIDYzNCw2NjcgKioqKg0KLS0tIDYzOCw2OTAgLS0tLQ0KICB9DQogIA0KICBpbnQJTmV0 X3NlbmRfdG9rZW4oIHN5c19zY2F0dGVyICpzY2F0ICkNCiAgew0KICAJdG9rZW5faGVhZGVyCSp0 b2tlbl9wdHI7DQogIAlpbnQJCXJldDsNCiAgDQogIAl0b2tlbl9wdHIgPSAodG9rZW5faGVhZGVy ICopc2NhdC0+ZWxlbWVudHNbMF0uYnVmOw0KICAJdG9rZW5fcHRyLT50eXBlID0gU2V0X2VuZGlh biggdG9rZW5fcHRyLT50eXBlICk7DQogICAgICAgICAgdG9rZW5fcHRyLT5jb25mX2hhc2ggPSBD bi0+aGFzaF9jb2RlOw0KICAJdG9rZW5fcHRyLT50cmFuc21pdGVyX2lkID0gTXkuaWQ7DQorIAl0 b2tlbl9wdHItPnJlcHJvY2Vzc2luZyA9IDA7DQorIA0KICANCiAgICAgICAgICBpZiAoIHRva2Vu X3B0ci0+cnRyX2xlbiA+IChNQVhfUEFDS0VUX1NJWkUgLSBzaXplb2YodG9rZW5faGVhZGVyKSAp ICkNCiAgICAgICAgICB7DQogICAgICAgICAgICAgIGlmICggSXNfZm9ybSggdG9rZW5fcHRyLT50 eXBlICkgKQ0KICAgICAgICAgICAgICAgICAgTWVtYl9wcmludF9mb3JtX3Rva2VuKCBzY2F0ICk7 DQogICAgICAgICAgICAgIEFsYXJtcCggU1BMT0dfRkFUQUwsIFBSSU5ULCAiTmV0X3NlbmRfdG9r ZW46IFRva2VuIHRvbyBsb25nIGZvciBwYWNrZXQhXG4iKTsNCiAgICAgICAgICB9DQogIA0KICAJ cmV0ID0gRExfc2VuZCggU2VuZF9jaGFubmVsLCBUb2tlbl9hZGRyZXNzLCBUb2tlbl9wb3J0LCBz Y2F0ICk7DQogIAlyZXR1cm4gKCByZXQgKTsNCiAgfQ0KKyBpbnQJTmV0X3Jlc2VuZF9teXNlbGZf dG9rZW4oIHN5c19zY2F0dGVyICpzY2F0ICkNCisgew0KKyAJDQorIAlpbnQJCXJldDsNCisgCXRv a2VuX2hlYWRlcgkqdG9rZW5fcHRyOw0KICANCisgCXNpemVfdCBzYXZlZF9sZW4gPSBzY2F0LT5l bGVtZW50c1sxXS5sZW47DQorIA0KKyAJdG9rZW5fcHRyID0gKHRva2VuX2hlYWRlciAqKXNjYXQt PmVsZW1lbnRzWzBdLmJ1ZjsNCisgICAgIHRva2VuX3B0ci0+dHlwZSA9IFNldF9lbmRpYW4oIHRv a2VuX3B0ci0+dHlwZSApOw0KKyAJdG9rZW5fcHRyLT5yZXByb2Nlc3NpbmcgPSAxOw0KKyANCisg ICAgIHNjYXQtPmVsZW1lbnRzWzFdLmxlbiA9dG9rZW5fcHRyLT5ydHJfbGVuOw0KKyANCisgCXJl dCA9IERMX3NlbmQoIFNlbmRfY2hhbm5lbCwgTXlfYWRkcmVzcywgVG9rZW5fcG9ydCwgc2NhdCAp Ow0KKyAJc2NhdC0+ZWxlbWVudHNbMV0ubGVuID1zYXZlZF9sZW47DQorIAlyZXR1cm4gKCByZXQg KTsNCisgfQ0KICBpbnQJTmV0X3JlY3ZfdG9rZW4oIGNoYW5uZWwgZmQsIHN5c19zY2F0dGVyICpz Y2F0ICkNCiAgew0KICAJdG9rZW5faGVhZGVyCSp0b2tlbl9wdHI7DQogIAlpbnQJCXJldCwgaTsN CiAgICAgICAgICBib29sICAgICAgICAgICAgY2hfZm91bmQ7DQogIA0KICAJdG9rZW5fcHRyID0g KHRva2VuX2hlYWRlciAqKXNjYXQtPmVsZW1lbnRzWzBdLmJ1ZjsNCiAgDQogICAgICAgICAgY2hf Zm91bmQgPSBGQUxTRTsNCiAgICAgICAgICBmb3IgKGkgPSAwIDsgaSA8IE51bV90b2tlbl9jaGFu bmVsczsgaSsrKSB7DQogICAgICAgICAgICAgIGlmICggZmQgPT0gVG9rZW5fY2hhbm5lbFtpXSkg ew0KKioqKioqKioqKioqKioqDQoqKiogODAyLDgxNCAqKioqDQotLS0gODI1LDgzOCAtLS0tDQog IHZvaWQJRmxpcF90b2tlbiggdG9rZW5faGVhZGVyICp0b2tlbl9wdHIgKQ0KICB7DQogIAl0b2tl bl9wdHItPnR5cGUJCSA9IEZsaXBfaW50MzIoIHRva2VuX3B0ci0+dHlwZSApOw0KICAJdG9rZW5f cHRyLT50cmFuc21pdGVyX2lkID0gRmxpcF9pbnQzMiggdG9rZW5fcHRyLT50cmFuc21pdGVyX2lk ICk7DQogIAl0b2tlbl9wdHItPnNlcQkJID0gRmxpcF9pbnQzMiggdG9rZW5fcHRyLT5zZXEgKTsN CiAgCXRva2VuX3B0ci0+cHJvY19pZAkgPSBGbGlwX2ludDMyKCB0b2tlbl9wdHItPnByb2NfaWQg KTsNCiAgCXRva2VuX3B0ci0+YXJ1CQkgPSBGbGlwX2ludDMyKCB0b2tlbl9wdHItPmFydSApOw0K ICAJdG9rZW5fcHRyLT5hcnVfbGFzdF9pZAkgPSBGbGlwX2ludDMyKCB0b2tlbl9wdHItPmFydV9s YXN0X2lkICk7DQogIAl0b2tlbl9wdHItPmZsb3dfY29udHJvbAkgPSBGbGlwX2ludDE2KCB0b2tl bl9wdHItPmZsb3dfY29udHJvbCApOw0KICAJdG9rZW5fcHRyLT5ydHJfbGVuCSA9IEZsaXBfaW50 MTYoIHRva2VuX3B0ci0+cnRyX2xlbiApOw0KICAgICAgICAgIHRva2VuX3B0ci0+Y29uZl9oYXNo ICAgICA9IEZsaXBfaW50MzIoIHRva2VuX3B0ci0+Y29uZl9oYXNoICk7DQorIAl0b2tlbl9wdHIt PnJlcHJvY2Vzc2luZyA9IEZsaXBfaW50MTYoIHRva2VuX3B0ci0+cmVwcm9jZXNzaW5nICk7DQog IH0NCiAgDQpJbmRleDogc3ByZWFkbWFwL3NwcmVhZF9zcmMvc3ByZWFkNF9vbGYvZGFlbW9uL25l dHdvcmsuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvbWFzdGVyL29sZi9lY29tL3NwcmVh ZG1hcC9zcHJlYWRfc3JjL3NwcmVhZDRfb2xmL2RhZW1vbi9uZXR3b3JrLmgsdg0KcmV0cmlldmlu ZyByZXZpc2lvbiAxLjQNCmRpZmYgLWIgLWMgLTEgLTEgLXIxLjQgbmV0d29yay5oDQoqKiogc3By ZWFkbWFwL3NwcmVhZF9zcmMvc3ByZWFkNF9vbGYvZGFlbW9uL25ldHdvcmsuaAk1IEphbiAyMDA3 IDE1OjU0OjI1IC0wMDAwCTEuNA0KLS0tIHNwcmVhZG1hcC9zcHJlYWRfc3JjL3NwcmVhZDRfb2xm L2RhZW1vbi9uZXR3b3JrLmgJMjQgSmFuIDIwMTMgMjI6MTI6MjggLTAwMDANCioqKioqKioqKioq KioqKg0KKioqIDQzLDY0ICoqKioNCi0tLSA0Myw2NSAtLS0tDQogIHZvaWQJTmV0X2luaXQoKTsN CiAgdm9pZAlOZXRfc2V0X21lbWJlcnNoaXAoIGNvbmZpZ3VyYXRpb24gbWVtYiApOw0KICB2b2lk ICAgIE5ldF9zaWduYWxfY29uZl9yZWxvYWQodm9pZCk7DQogIA0KICBpbnQJTmV0X2JjYXN0KCBz eXNfc2NhdHRlciAqc2NhdCApOw0KICBpbnQgICAgIE5ldF9xdWV1ZV9iY2FzdChzeXNfc2NhdHRl ciAqc2NhdCk7DQogIGludCAgICAgTmV0X2ZsdXNoX2JjYXN0KHZvaWQpOw0KICBpbnQJTmV0X3Nj YXN0KCBpbnQxNiBzZWdfaW5kZXgsIHN5c19zY2F0dGVyICpzY2F0ICk7DQogIGludAlOZXRfdWNh c3QoIGludDMyIHByb2NfaWQsIHN5c19zY2F0dGVyICpzY2F0ICk7DQogIGludAlOZXRfcmVjdiAo IGNoYW5uZWwgZmQsIHN5c19zY2F0dGVyICpzY2F0ICk7DQogIGludAlOZXRfc2VuZF90b2tlbigg c3lzX3NjYXR0ZXIgKnNjYXQgKTsNCisgaW50CU5ldF9yZXNlbmRfbXlzZWxmX3Rva2VuKCBzeXNf c2NhdHRlciAqc2NhdCApOw0KICBpbnQJTmV0X3JlY3ZfdG9rZW4oIGNoYW5uZWwgZmQsIHN5c19z Y2F0dGVyICpzY2F0ICk7DQogIGludAlOZXRfdWNhc3RfdG9rZW4oIGludDMyIHByb2NfaWQsIHN5 c19zY2F0dGVyICpzY2F0ICk7DQogIGNoYW5uZWwgKk5ldF9iY2FzdF9jaGFubmVsKHZvaWQpOw0K ICBjaGFubmVsICpOZXRfdG9rZW5fY2hhbm5lbCh2b2lkKTsNCiAgdm9pZCAgICBOZXRfbnVtX2No YW5uZWxzKGludCAqbnVtX2JjYXN0LCBpbnQgKm51bV90b2tlbik7DQogIA0KICB2b2lkICAgIE5l dF9zZXRfcGFydGl0aW9uKGludDE2ICpuZXdfcGFydGl0aW9uKTsNCiAgdm9pZCAgICBOZXRfY2xl YXJfcGFydGl0aW9uKHZvaWQpOw0KICANCiAgI2VuZGlmCS8qIElOQ19ORVRXT1JLICovIA0KICAN CkluZGV4OiBzcHJlYWRtYXAvc3ByZWFkX3NyYy9zcHJlYWQ0X29sZi9kYWVtb24vcHJvdG9jb2wu Yw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvbWFzdGVyL29sZi9lY29tL3NwcmVhZG1hcC9z cHJlYWRfc3JjL3NwcmVhZDRfb2xmL2RhZW1vbi9wcm90b2NvbC5jLHYNCnJldHJpZXZpbmcgcmV2 aXNpb24gMS41DQpkaWZmIC1iIC1jIC0xIC0xIC1yMS41IHByb3RvY29sLmMNCioqKiBzcHJlYWRt YXAvc3ByZWFkX3NyYy9zcHJlYWQ0X29sZi9kYWVtb24vcHJvdG9jb2wuYwkyMSBKdWwgMjAwOSAy MDo0MDoyMyAtMDAwMAkxLjUNCi0tLSBzcHJlYWRtYXAvc3ByZWFkX3NyYy9zcHJlYWQ0X29sZi9k YWVtb24vcHJvdG9jb2wuYwkyNCBKYW4gMjAxMyAyMjoxMjozMCAtMDAwMA0KKioqKioqKioqKioq KioqDQoqKiogMTQ3LDE2OCAqKioqDQotLS0gMTQ3LDE2OSAtLS0tDQogIA0KICAJU2VuZF9wYWNr Lm51bV9lbGVtZW50cyA9IDI7DQogIAlTZW5kX3BhY2suZWxlbWVudHNbMF0ubGVuID0gc2l6ZW9m KHBhY2tldF9oZWFkZXIpOw0KICANCiAgCVRva2VuID0gKHRva2VuX2hlYWRlciAqKU5ld190b2tl bi5lbGVtZW50c1swXS5idWY7DQogIAlMYXN0X3Rva2VuID0gbmV3KFRPS0VOX0hFQURfT0JKKTsN CiAgCUxhc3RfdG9rZW4tPnR5cGUgPSAwOyANCiAgCUxhc3RfdG9rZW4tPnNlcSA9IDA7DQogIAlM YXN0X3Rva2VuLT5hcnUgPSAwOw0KICAJTGFzdF90b2tlbi0+Zmxvd19jb250cm9sID0gMDsNCiAg ICAgIExhc3RfdG9rZW4tPmNvbmZfaGFzaCA9IDA7DQorICAgICBMYXN0X3Rva2VuLT5yZXByb2Nl c3NpbmcgPSAwOw0KICANCiAgCUh1cnJ5X3BhY2subnVtX2VsZW1lbnRzID0gMTsNCiAgCUh1cnJ5 X3BhY2suZWxlbWVudHNbMF0ubGVuID0gc2l6ZW9mKHBhY2tldF9oZWFkZXIpOw0KICAJSHVycnlf cGFjay5lbGVtZW50c1swXS5idWYgPSAoY2hhciAqKSBuZXcoUEFDS0VUX0JPRFkpOw0KICAJSHVy cnlfaGVhZCA9IChwYWNrZXRfaGVhZGVyICopSHVycnlfcGFjay5lbGVtZW50c1swXS5idWY7DQog IAlIdXJyeV9oZWFkLT5wcm9jX2lkID0gTXkuaWQ7DQogIAlIdXJyeV9oZWFkLT50eXBlID0gSFVS UllfVFlQRTsNCiAgDQogIAlOZXRfaW5pdCgpOw0KICANCiAgICAgICAgICBiY2FzdF9jaGFubmVs cyA9IE5ldF9iY2FzdF9jaGFubmVsKCk7DQoqKioqKioqKioqKioqKioNCioqKiAyNDUsMjY2ICoq KioNCi0tLSAyNDYsMjcwIC0tLS0NCiAgCXBhY2tldF9oZWFkZXIJKnBhY2tfcHRyOw0KICAJaW50 CQlwYWNrX2VudHJ5Ow0KICAJcHJvYwkJcDsNCiAgCWludAkJcmVjZWl2ZWRfYnl0ZXM7DQogICAg ICAgICAgaW50ICAgICAgICAgICAgIHRvdGFsX2J5dGVzX3Byb2Nlc3NlZDsNCiAgICAgICAgICBp bnQgICAgICAgICAgICAgbnVtX2J1ZmZlcmVkX3BhY2tldHM7DQogIAlpbnQJCWk7DQogIAlpbnQz MgkJajsNCiAgCS8qIGludAkJcjEscjI7ICovDQogIA0KICAJcmVjZWl2ZWRfYnl0ZXMgPSBOZXRf cmVjdiggZmQsICZOZXdfcGFjayApOw0KKyANCisgCQlBbGFybSggUFJPVE9DT0wsICJCUk9BRENB U1Q6IFJlY2VpdmVkICVkLCB0b3RhbCBwcm9jZXNzZWQgJWRcbiIsIHJlY2VpdmVkX2J5dGVzLCB0 b3RhbF9ieXRlc19wcm9jZXNzZWQpOw0KKyANCiAgCS8qIE15IG93biBwYWNrZXQgb3IgZnJvbSBh bm90aGVyIG1vbml0b3IgY29tcG9uZW50ICovDQogIAlpZiggcmVjZWl2ZWRfYnl0ZXMgPT0gMCAp IHJldHVybjsNCiAgCS8qIHByb2JsZW0gaW4gcmVjZWl2aW5nICovDQogIAlpZiggcmVjZWl2ZWRf Ynl0ZXMgPCAwICkgcmV0dXJuOw0KICANCiAgCXBhY2tfcHRyID0gKHBhY2tldF9oZWFkZXIgKilO ZXdfcGFjay5lbGVtZW50c1swXS5idWY7DQogIA0KICAJLyogIyMjIFBhY2ssIHRoaXMgaGFzIHRv IG1vdmUgZG93biB0byBuZXR3b3JrLmMNCiAgCSAqIGlmKCBwYWNrX3B0ci0+ZGF0YV9sZW4gK3Np emVvZihwYWNrZXRfaGVhZGVyKSAhPSByZWNlaXZlZF9ieXRlcyApDQogIAkgKiB7DQogIAkgKglB bGFybSggUFJJTlQsICJQcm90X2hhbmRsZV9iY2FzdDogcmVjZWl2ZWQgJWQsIHNob3VsZCBiZSAl ZFxuIiwNCioqKioqKioqKioqKioqKg0KKioqIDMxOCwzMzkgKioqKg0KLS0tIDMyMiwzNDUgLS0t LQ0KICAgICAgICAgICAgICAgICAgaWYoIENvbmZfbGVhZGVyKCBNZW1iX2FjdGl2ZV9wdHIoKSAp ID09IE15LmlkICkgDQogICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAg ICAgIEVfcXVldWUoIFByb3RfdG9rZW5faHVycnksIDAsIE5VTEwsIEh1cnJ5X3RpbWVvdXQgKTsN CiAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogIA0KICAJLyogIyMjIFBhY2s6IG5l eHQgNzAgbGluZXMgKGFsbW9zdCB0aWxsIHRoZSBlbmQgb2YgdGhlIHJvdXRpbmUpIGhhdmUgY2hh bmdlZCAqLw0KICAgICAgICAgIEJ1ZmZlcmVkX3BhY2tldHNbMF0uaGVhZCA9IHBhY2tfcHRyOw0K ICAgICAgICAgIEJ1ZmZlcmVkX3BhY2tldHNbMF0uYm9keSA9IChwYWNrZXRfYm9keSAqKU5ld19w YWNrLmVsZW1lbnRzWzFdLmJ1ZjsNCiAgCXJlY2VpdmVkX2J5dGVzIC09IHNpemVvZihwYWNrZXRf aGVhZGVyKTsNCiAgICAgICAgICB0b3RhbF9ieXRlc19wcm9jZXNzZWQgPSBwYWNrX3B0ci0+ZGF0 YV9sZW47DQorIA0KKyAJCUFsYXJtKCBQUk9UT0NPTCwgIkJST0FEQ0FTVDogUmVjZWl2ZWQgJWQs IHRvdGFsIHByb2Nlc3NlZCAlZFxuIiwgcmVjZWl2ZWRfYnl0ZXMsIHRvdGFsX2J5dGVzX3Byb2Nl c3NlZCk7DQogICAgICAgICAgLyogaWdub3JlIGFueSBhbGlnbm1lbnQgcGFkZGluZyAqLw0KICAg ICAgICAgIHN3aXRjaCh0b3RhbF9ieXRlc19wcm9jZXNzZWQgJSA0KQ0KICAgICAgICAgIHsNCiAg ICAgICAgICBjYXNlIDE6DQogICAgICAgICAgICAgICAgICB0b3RhbF9ieXRlc19wcm9jZXNzZWQr KzsNCiAgICAgICAgICBjYXNlIDI6DQogICAgICAgICAgICAgICAgICB0b3RhbF9ieXRlc19wcm9j ZXNzZWQrKzsNCiAgICAgICAgICBjYXNlIDM6DQogICAgICAgICAgICAgICAgICB0b3RhbF9ieXRl c19wcm9jZXNzZWQrKzsNCiAgICAgICAgICBjYXNlIDA6DQogICAgICAgICAgICAgICAgICAvKiBh bHJlYWR5IGFsaWduZWQgKi8NCioqKioqKioqKioqKioqKg0KKioqIDQ0Nyw0NjkgKioqKg0KICAJ LyoJaW50CQlyMSxyMjsqLw0KICANCiAgCXJldCA9IE5ldF9yZWN2X3Rva2VuKCBmZCwgJk5ld190 b2tlbiApOw0KICAJLyogZnJvbSBhbm90aGVyIG1vbml0b3IgY29tcG9uZW50ICovDQogIAlpZigg cmV0ID09IDAgKSByZXR1cm47DQogIA0KICAJLyogZGVsZXRlIHJhbmRvbQ0KICAJcjEgPSAoKC1N eS5pZCklMTcpKzM7DQogIAlyMiA9IGdldF9yYW5kKCkgJSAocjErMyApOw0KICAJaWYgKCByMiA9 PSAwICkgcmV0dXJuOyAqLw0KICANCiEgICAgICAgICBBbGFybSggREVCVUcsICJSZWNlaXZlZCBU b2tlblxuIik7DQogIAkvKiBjaGVjayBpZiBpdCBpcyBhIHJlZ3VsYXIgdG9rZW4gKi8NCiAgCWlm KCBJc19mb3JtKCBUb2tlbi0+dHlwZSApICkNCiAgCXsNCiAgICAgICAgICAgICAgICAgIEFsYXJt KFBST1RPQ09MLCAiaXQgaXMgYSBGb3JtIFRva2VuLlxuIik7DQogICAgICAgICAgICAgICAgICBN ZW1iX2hhbmRsZV90b2tlbiggJk5ld190b2tlbiApOw0KICAJCXJldHVybjsNCiAgCX0NCiAgDQog IAkvKiBUaGUgVmV0byBwcm9wZXJ0eSBmb3IgdG9rZW5zIC0gc3dhbGxvdyB0aGlzIHRva2VuICov DQogIAlpZiggISBNZW1iX3Rva2VuX2FsaXZlKCkgKSB7DQogICAgICAgICAgICAgICAgICBBbGFy bShQUk9UT0NPTCwgIlByb3RfaGFuZGxlX3Rva2VuOiBWZXRvIFByb3BlcnR5LiBNZW1iIG5vdCBh bGl2ZS5cbiIpOw0KLS0tIDQ1Myw0NzYgLS0tLQ0KICAJLyoJaW50CQlyMSxyMjsqLw0KICANCiAg CXJldCA9IE5ldF9yZWN2X3Rva2VuKCBmZCwgJk5ld190b2tlbiApOw0KICAJLyogZnJvbSBhbm90 aGVyIG1vbml0b3IgY29tcG9uZW50ICovDQogIAlpZiggcmV0ID09IDAgKSByZXR1cm47DQogIA0K ICAJLyogZGVsZXRlIHJhbmRvbQ0KICAJcjEgPSAoKC1NeS5pZCklMTcpKzM7DQogIAlyMiA9IGdl dF9yYW5kKCkgJSAocjErMyApOw0KICAJaWYgKCByMiA9PSAwICkgcmV0dXJuOyAqLw0KICANCiEg CUFsYXJtKCBERUJVRywgIlJlY2VpdmVkIFRva2VuIEFSUSA6JWQsIFJldHJhbnMgJWQsIExhc3Qg VG9rZW4gQXJxOiAlZCwgUmV0OiAlZCBTZXE6ICVkLCBNeSBTZXEgJWQsIHJlcHJvY2VzcyAlZFxu IiwNCiEgCQlHZXRfYXJxKFRva2VuLT50eXBlKSwgR2V0X3JldHJhbnMoVG9rZW4tPnR5cGUpLCBH ZXRfYXJxKExhc3RfdG9rZW4tPnR5cGUpLCByZXQsIFRva2VuLT5zZXEsIEhpZ2hlc3Rfc2VxLCBU b2tlbi0+cmVwcm9jZXNzaW5nICk7DQogIAkvKiBjaGVjayBpZiBpdCBpcyBhIHJlZ3VsYXIgdG9r ZW4gKi8NCiAgCWlmKCBJc19mb3JtKCBUb2tlbi0+dHlwZSApICkNCiAgCXsNCiAgICAgICAgICAg ICAgICAgIEFsYXJtKFBST1RPQ09MLCAiaXQgaXMgYSBGb3JtIFRva2VuLlxuIik7DQogICAgICAg ICAgICAgICAgICBNZW1iX2hhbmRsZV90b2tlbiggJk5ld190b2tlbiApOw0KICAJCXJldHVybjsN CiAgCX0NCiAgDQogIAkvKiBUaGUgVmV0byBwcm9wZXJ0eSBmb3IgdG9rZW5zIC0gc3dhbGxvdyB0 aGlzIHRva2VuICovDQogIAlpZiggISBNZW1iX3Rva2VuX2FsaXZlKCkgKSB7DQogICAgICAgICAg ICAgICAgICBBbGFybShQUk9UT0NPTCwgIlByb3RfaGFuZGxlX3Rva2VuOiBWZXRvIFByb3BlcnR5 LiBNZW1iIG5vdCBhbGl2ZS5cbiIpOw0KKioqKioqKioqKioqKioqDQoqKiogNDczLDU0MSAqKioq DQogIAlpZiggcmV0ICE9IHNpemVvZih0b2tlbl9oZWFkZXIpICsgVG9rZW4tPnJ0cl9sZW4gKQ0K ICAJew0KICAJCUFsYXJtKCBQUklOVCwgDQogIAkJICAgICJQcm90X2hhbmRsZV90b2tlbjogcmVj diB0b2tlbiBsZW4gaXMgJWQsIHNob3VsZCBiZSAlZFxuIiwNCiAgCQkgICAgcmV0LHNpemVvZih0 b2tlbl9oZWFkZXIpICsgVG9rZW4tPnJ0cl9sZW4gKTsNCiAgCQlyZXR1cm47DQogIAl9DQogIA0K ICAJaWYoICFTYW1lX2VuZGlhbiggVG9rZW4tPnR5cGUgKSApIA0KICAJCUZsaXBfdG9rZW5fYm9k eSggTmV3X3Rva2VuLmVsZW1lbnRzWzFdLmJ1ZiwgVG9rZW4gKTsNCiAgDQogICAgICAgICAgLyog RGVhbCB3aXRoIHdyYXBwaW5nIHNlcSB2YWx1ZXMgKDJeMzIpIGJ5IHRyaWdnZXJpbmcgYSBtZW1i ZXJzaGlwIGJ5IGRyb3BwaW5nIHRoZSB0b2tlbiAqLw0KICAgICAgICAgIGlmKCAoTWVtYl9zdGF0 ZSgpICE9IEVWUyApICYmIChUb2tlbi0+c2VxID4gTUFYX1dSQVBfU0VRVUVOQ0VfVkFMVUUgKSAp DQogICAgICAgICAgew0KICAgICAgICAgICAgICBBbGFybSggUFJPVE9DT0wsICJQcm90X2hhbmRs ZV90b2tlbjogVG9rZW4gU2VxdWVuY2UgbnVtYmVyICglbGQpIGFwcHJvYWNoaW5nIDJeMzEgc28g dHJpZ2dlciBtZW1iZXJzaGlwIHRvIHJlc2V0IGl0LlxuIiwgVG9rZW4tPnNlcSk7DQogIA0KICAg ICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgfQ0KICANCiAgCWlmKCBDb25mX2xlYWRlcigg TWVtYl9hY3RpdmVfcHRyKCkgKSA9PSBNeS5pZCApDQogIAl7DQogIAkJaWYoIEdldF9hcnEoVG9r ZW4tPnR5cGUpICE9IEdldF9hcnEoTGFzdF90b2tlbi0+dHlwZSkgKQ0KICAJCXsNCiAgCQkgICAg QWxhcm0oIFBST1RPQ09MLCANCiAgCQkJIlByb3RfaGFuZGxlX3Rva2VuOiBsZWFkZXIgc3dhbGxv d2luZyB0b2tlbiAlZCAlZCAlZFxuIiwgDQogIAkJCSBHZXRfYXJxKFRva2VuLT50eXBlKSxHZXRf cmV0cmFucyhUb2tlbi0+dHlwZSksR2V0X2FycShMYXN0X3Rva2VuLT50eXBlKSApOw0KICAJCSAg ICAvKiByZWNlaXZlZCBkb3VibGUgdG9rZW4gLSBzd2FsbG93IGl0ICovDQogIAkJICAgIHJldHVy bjsgDQogIAkJfQ0KISAJfWVsc2V7DQogIAkJaWYoIEdldF9hcnEoVG9rZW4tPnR5cGUpID09IEdl dF9hcnEoTGFzdF90b2tlbi0+dHlwZSkgKQ0KICAJCXsNCiAgCQkgICAgaWYoIEdldF9yZXRyYW5z KFRva2VuLT50eXBlKSA+IEdldF9yZXRyYW5zKExhc3RfdG9rZW4tPnR5cGUpICkNCiAgCQkgICAg ew0KICAJCQl2YWwgPSBHZXRfcmV0cmFucyhUb2tlbi0+dHlwZSk7DQogIAkJCUxhc3RfdG9rZW4t PnR5cGUgPSBTZXRfcmV0cmFucyhMYXN0X3Rva2VuLT50eXBlLHZhbCk7DQogIAkJCS8qIGFza2Vk IHRvIHNlbmQgdG9rZW4gYWdhaW4gKGFsbW9zdCBsb3N0KSAqLw0KICAJCQlBbGFybSggUFJPVE9D T0wsDQogIAkJCSAgICAiUHJvdF9oYW5kbGVfdG9rZW46IG5vdCBsZWFkZXIsIGFza2VkIHRvIHJl dHJhbnMgJWQgJWRcbiIsDQogIAkJCQlHZXRfYXJxKFRva2VuLT50eXBlKSwgdmFsICk7DQogIAkJ CVByb3RfdG9rZW5faHVycnkoKTsNCiEgCQkgICAgfWVsc2V7DQogIAkJCUFsYXJtKCBQUk9UT0NP TCwNCiAgCQkJICAgICJQcm90X2hhbmRsZV90b2tlbjogbm90IGxlYWRlciwgc3dhbGxvdyBzYW1l IHRva2VuICVkICVkXG4iLA0KICAJICAgCQkJR2V0X2FycShUb2tlbi0+dHlwZSksIEdldF9yZXRy YW5zKFRva2VuLT50eXBlKSApOw0KICAJCSAgICB9DQogIAkJICAgIHJldHVybjsNCiAgDQohIAkJ fSBlbHNlIGlmICggR2V0X2FycShUb2tlbi0+dHlwZSkgIT0gKCAoIEdldF9hcnEoIExhc3RfdG9r ZW4tPnR5cGUgKSArIDEgKSAlIDB4MTAgKSApIHsNCiAgCQkgIEFsYXJtKCBQUk9UT0NPTCwgDQog IAkJCSAiUHJvdF9oYW5kbGVfdG9rZW46IG5vdCBsZWFkZXIsIHN3YWxsb3dpbmcgdmVyeSBvdXRk YXRlZCB0b2tlbjogQVJRKCVkKSBSRVRSQU5TKCVkKSB2cy4gTGFzdCBBUlEoJWQpXG4iLA0KICAJ CQkgR2V0X2FycShUb2tlbi0+dHlwZSksIEdldF9yZXRyYW5zKFRva2VuLT50eXBlKSwgR2V0X2Fy cShMYXN0X3Rva2VuLT50eXBlKSApOw0KICAJCSAgcmV0dXJuOw0KICANCiEgCQl9IGVsc2Ugew0K ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIEdldF9yZXRyYW5zKFRva2VuLT50eXBlKSA+ IDAgKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2xvYmFsU3RhdHVzLnRv a2VuX2h1cnJ5Kys7DQogICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg ICAgIH0NCiAgCX0NCiAgCWlmKCBIaWdoZXN0X3NlcSA8IFRva2VuLT5zZXEgKSBIaWdoZXN0X3Nl cSA9IFRva2VuLT5zZXE7DQogIAkJDQogIAkvKiBIYW5kbGUgcmV0cmFuc21pc3Npb25zICovDQog IAludW1fcmV0cmFucyA9IEFuc3dlcl9yZXRyYW5zKCAmbmV3X3B0ciwgJnJ0cl9wcm9jX2lkLCAm cnRyX3NlZ19pbmRleCApOw0KICAJR2xvYmFsU3RhdHVzLnJldHJhbnMgKz0gbnVtX3JldHJhbnM7 DQogIA0KICAJbmV3X3J0ciA9IE5ld190b2tlbi5lbGVtZW50c1sxXS5idWY7DQogIA0KICAJLyog SGFuZGxlIG5ldyBwYWNrZXRzICovDQotLS0gNDgwLDU3MiAtLS0tDQogIAlpZiggcmV0ICE9IHNp emVvZih0b2tlbl9oZWFkZXIpICsgVG9rZW4tPnJ0cl9sZW4gKQ0KICAJew0KICAJCUFsYXJtKCBQ UklOVCwgDQogIAkJICAgICJQcm90X2hhbmRsZV90b2tlbjogcmVjdiB0b2tlbiBsZW4gaXMgJWQs IHNob3VsZCBiZSAlZFxuIiwNCiAgCQkgICAgcmV0LHNpemVvZih0b2tlbl9oZWFkZXIpICsgVG9r ZW4tPnJ0cl9sZW4gKTsNCiAgCQlyZXR1cm47DQogIAl9DQogIA0KICAJaWYoICFTYW1lX2VuZGlh biggVG9rZW4tPnR5cGUgKSApIA0KICAJCUZsaXBfdG9rZW5fYm9keSggTmV3X3Rva2VuLmVsZW1l bnRzWzFdLmJ1ZiwgVG9rZW4gKTsNCiAgDQorIAlpZiAoICFUb2tlbi0+cmVwcm9jZXNzaW5nKQ0K KyAJew0KKyAJCWlmIChIaWdoZXN0X3NlcSA8IFRva2VuLT5zZXEgKQ0KKyAJCXsNCisgCQkJLypt YXkgYmUgYSByYWNlIGNvbmRpdG9uIHRvIHJlc2VuZCB0byB5b3Vyc2VsZiBiZWZvcmUgYXNraW5n IGZvciByZXRyYW5zbWlzc2lvbiovDQorICNpZmRlZiBfV0lOMzINCisgCQkJU2xlZXAoMSk7DQor ICNlbmRpZg0KKyAJCQlOZXRfcmVzZW5kX215c2VsZl90b2tlbiggJk5ld190b2tlbiApOw0KKyAJ CQlyZXR1cm47DQorIAkJfQ0KKyAJfQ0KKyAJDQorIA0KKyANCisgDQogICAgICAgICAgLyogRGVh bCB3aXRoIHdyYXBwaW5nIHNlcSB2YWx1ZXMgKDJeMzIpIGJ5IHRyaWdnZXJpbmcgYSBtZW1iZXJz aGlwIGJ5IGRyb3BwaW5nIHRoZSB0b2tlbiAqLw0KICAgICAgICAgIGlmKCAoTWVtYl9zdGF0ZSgp ICE9IEVWUyApICYmIChUb2tlbi0+c2VxID4gTUFYX1dSQVBfU0VRVUVOQ0VfVkFMVUUgKSApDQog ICAgICAgICAgew0KICAgICAgICAgICAgICBBbGFybSggUFJPVE9DT0wsICJQcm90X2hhbmRsZV90 b2tlbjogVG9rZW4gU2VxdWVuY2UgbnVtYmVyICglbGQpIGFwcHJvYWNoaW5nIDJeMzEgc28gdHJp Z2dlciBtZW1iZXJzaGlwIHRvIHJlc2V0IGl0LlxuIiwgVG9rZW4tPnNlcSk7DQogIA0KICAgICAg ICAgICAgICByZXR1cm47DQogICAgICAgICAgfQ0KICANCiAgCWlmKCBDb25mX2xlYWRlciggTWVt Yl9hY3RpdmVfcHRyKCkgKSA9PSBNeS5pZCApDQogIAl7DQogIAkJaWYoIEdldF9hcnEoVG9rZW4t PnR5cGUpICE9IEdldF9hcnEoTGFzdF90b2tlbi0+dHlwZSkgKQ0KICAJCXsNCiAgCQkgICAgQWxh cm0oIFBST1RPQ09MLCANCiAgCQkJIlByb3RfaGFuZGxlX3Rva2VuOiBsZWFkZXIgc3dhbGxvd2lu ZyB0b2tlbiAlZCAlZCAlZFxuIiwgDQogIAkJCSBHZXRfYXJxKFRva2VuLT50eXBlKSxHZXRfcmV0 cmFucyhUb2tlbi0+dHlwZSksR2V0X2FycShMYXN0X3Rva2VuLT50eXBlKSApOw0KICAJCSAgICAv KiByZWNlaXZlZCBkb3VibGUgdG9rZW4gLSBzd2FsbG93IGl0ICovDQogIAkJICAgIHJldHVybjsg DQogIAkJfQ0KISAJfQ0KISAJZWxzZQ0KISAJew0KICAJCWlmKCBHZXRfYXJxKFRva2VuLT50eXBl KSA9PSBHZXRfYXJxKExhc3RfdG9rZW4tPnR5cGUpICkNCiAgCQl7DQogIAkJICAgIGlmKCBHZXRf cmV0cmFucyhUb2tlbi0+dHlwZSkgPiBHZXRfcmV0cmFucyhMYXN0X3Rva2VuLT50eXBlKSApDQog IAkJICAgIHsNCiAgCQkJdmFsID0gR2V0X3JldHJhbnMoVG9rZW4tPnR5cGUpOw0KICAJCQlMYXN0 X3Rva2VuLT50eXBlID0gU2V0X3JldHJhbnMoTGFzdF90b2tlbi0+dHlwZSx2YWwpOw0KICAJCQkv KiBhc2tlZCB0byBzZW5kIHRva2VuIGFnYWluIChhbG1vc3QgbG9zdCkgKi8NCiAgCQkJQWxhcm0o IFBST1RPQ09MLA0KICAJCQkgICAgIlByb3RfaGFuZGxlX3Rva2VuOiBub3QgbGVhZGVyLCBhc2tl ZCB0byByZXRyYW5zICVkICVkXG4iLA0KICAJCQkJR2V0X2FycShUb2tlbi0+dHlwZSksIHZhbCAp Ow0KICAJCQlQcm90X3Rva2VuX2h1cnJ5KCk7DQohIAkJICAgIH0NCiEgCQkJZWxzZXsNCiAgCQkJ QWxhcm0oIFBST1RPQ09MLA0KICAJCQkgICAgIlByb3RfaGFuZGxlX3Rva2VuOiBub3QgbGVhZGVy LCBzd2FsbG93IHNhbWUgdG9rZW4gJWQgJWRcbiIsDQogIAkgICAJCQlHZXRfYXJxKFRva2VuLT50 eXBlKSwgR2V0X3JldHJhbnMoVG9rZW4tPnR5cGUpICk7DQogIAkJICAgIH0NCiAgCQkgICAgcmV0 dXJuOw0KICANCiEgCQl9IA0KISAJCWVsc2UgaWYgKCBHZXRfYXJxKFRva2VuLT50eXBlKSAhPSAo ICggR2V0X2FycSggTGFzdF90b2tlbi0+dHlwZSApICsgMSApICUgMHgxMCApICkNCiEgCQl7DQog IAkJICBBbGFybSggUFJPVE9DT0wsIA0KICAJCQkgIlByb3RfaGFuZGxlX3Rva2VuOiBub3QgbGVh ZGVyLCBzd2FsbG93aW5nIHZlcnkgb3V0ZGF0ZWQgdG9rZW46IEFSUSglZCkgUkVUUkFOUyglZCkg dnMuIExhc3QgQVJRKCVkKVxuIiwNCiAgCQkJIEdldF9hcnEoVG9rZW4tPnR5cGUpLCBHZXRfcmV0 cmFucyhUb2tlbi0+dHlwZSksIEdldF9hcnEoTGFzdF90b2tlbi0+dHlwZSkgKTsNCiAgCQkgIHJl dHVybjsNCiAgDQohIAkJfSANCiEgCQllbHNlDQohIAkJew0KICAgICAgICAgICAgICAgICAgICAg ICAgICBpZiAoIEdldF9yZXRyYW5zKFRva2VuLT50eXBlKSA+IDAgKSB7DQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR2xvYmFsU3RhdHVzLnRva2VuX2h1cnJ5Kys7DQogICAgICAg ICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgDQogIAkJfQ0KICAJfQ0KICAJ aWYoIEhpZ2hlc3Rfc2VxIDwgVG9rZW4tPnNlcSApIEhpZ2hlc3Rfc2VxID0gVG9rZW4tPnNlcTsN CiAgCQkNCiAgCS8qIEhhbmRsZSByZXRyYW5zbWlzc2lvbnMgKi8NCiAgCW51bV9yZXRyYW5zID0g QW5zd2VyX3JldHJhbnMoICZuZXdfcHRyLCAmcnRyX3Byb2NfaWQsICZydHJfc2VnX2luZGV4ICk7 DQogIAlHbG9iYWxTdGF0dXMucmV0cmFucyArPSBudW1fcmV0cmFuczsNCiAgDQogIAluZXdfcnRy ID0gTmV3X3Rva2VuLmVsZW1lbnRzWzFdLmJ1ZjsNCiAgDQogIAkvKiBIYW5kbGUgbmV3IHBhY2tl dHMgKi8NCioqKioqKioqKioqKioqKg0KKioqIDU0Nyw1NzUgKioqKg0KICAJLyogRmxvdyBjb250 cm9sIGNhbGN1bGF0aW9ucyAqLw0KICAJVG9rZW4tPmZsb3dfY29udHJvbCA9IFRva2VuLT5mbG93 X2NvbnRyb2wNCiAgCQkJCS0gTGFzdF9udW1fcmV0cmFucyAtIExhc3RfbnVtX3NlbnQgDQogIAkJ CQkrIG51bV9yZXRyYW5zICAgICAgKyBudW1fc2VudDsNCiAgCUxhc3RfbnVtX3JldHJhbnMgPSBu dW1fcmV0cmFuczsNCiAgCUxhc3RfbnVtX3NlbnQJID0gbnVtX3NlbnQ7DQogIA0KICAJLyogUHJl cGFyZSBteSByZXRyYW5zbWlzc2lvbiByZXF1ZXN0cyAqLw0KICANCiAgCWZvciggaSA9IE15X2Fy dSsxOyBpIDw9IEhpZ2hlc3Rfc2VxOyBpKysgKQ0KICAJew0KISAJCWlmKCAhIFBhY2tldHNbaSAm IFBBQ0tFVF9NQVNLXS5leGlzdCApIGJyZWFrOw0KICAJCU15X2FydSsrOw0KICAJfQ0KICAJR2xv YmFsU3RhdHVzLm15X2FydSA9IE15X2FydTsNCiAgDQogIAlpZiggTXlfYXJ1IDwgSGlnaGVzdF9z ZXEgKQ0KICAJew0KICAJICAgIC8qIENvbXB1dGUgaG93IG1hbnkgb2YgbXkgcmV0cmFuc21pc3Np b24gcmVxdWVzdHMgYXJlIHBvc3NpYmxlIHRvIGZpdCAqLw0KICAJICAgIHJldHJhbnNfYWxsb3dl ZCA9ICggc2l6ZW9mKCB0b2tlbl9ib2R5ICkgLSBuZXdfcHRyIC0gc2l6ZW9mKCByaW5nX3J0ciAp ICkgLyBzaXplb2YoIGludDMyICk7DQogIAkgICAgaWYoIHJldHJhbnNfYWxsb3dlZCA+IDEgKQ0K ICAJICAgIHsNCiAgCSAgICAJcmluZ19ydHJfcHRyID0gKHJpbmdfcnRyICopJm5ld19ydHJbbmV3 X3B0cl07DQogIAkgICAgCXJpbmdfcnRyX3B0ci0+bWVtYl9pZCAJPSBNZW1iX2lkKCk7DQogIAkg ICAgCXJpbmdfcnRyX3B0ci0+cHJvY19pZAk9IHJ0cl9wcm9jX2lkOw0KICAJICAgIAlyaW5nX3J0 cl9wdHItPnNlZ19pbmRleAk9IHJ0cl9zZWdfaW5kZXg7DQogIAkgICAgCXJpbmdfcnRyX3B0ci0+ bnVtX3NlcQk9IDA7DQogIAkgICAgCW5ld19wdHIgKz0gc2l6ZW9mKHJpbmdfcnRyKTsNCiAgCSAg ICAJZm9yKCBpPU15X2FydSsxOyBpIDw9IEhpZ2hlc3Rfc2VxICYmIHJldHJhbnNfYWxsb3dlZCA+ IDA7IGkrKywgcmV0cmFuc19hbGxvd2VkLS0gKQ0KLS0tIDU3OCw2MTEgLS0tLQ0KICAJLyogRmxv dyBjb250cm9sIGNhbGN1bGF0aW9ucyAqLw0KICAJVG9rZW4tPmZsb3dfY29udHJvbCA9IFRva2Vu LT5mbG93X2NvbnRyb2wNCiAgCQkJCS0gTGFzdF9udW1fcmV0cmFucyAtIExhc3RfbnVtX3NlbnQg DQogIAkJCQkrIG51bV9yZXRyYW5zICAgICAgKyBudW1fc2VudDsNCiAgCUxhc3RfbnVtX3JldHJh bnMgPSBudW1fcmV0cmFuczsNCiAgCUxhc3RfbnVtX3NlbnQJID0gbnVtX3NlbnQ7DQogIA0KICAJ LyogUHJlcGFyZSBteSByZXRyYW5zbWlzc2lvbiByZXF1ZXN0cyAqLw0KICANCiAgCWZvciggaSA9 IE15X2FydSsxOyBpIDw9IEhpZ2hlc3Rfc2VxOyBpKysgKQ0KICAJew0KISAJCWlmKCAhIFBhY2tl dHNbaSAmIFBBQ0tFVF9NQVNLXS5leGlzdCApIA0KISAJCXsNCiEgCQkJYnJlYWs7DQohIAkJfQ0K ICAJCU15X2FydSsrOw0KICAJfQ0KICAJR2xvYmFsU3RhdHVzLm15X2FydSA9IE15X2FydTsNCiAg DQogIAlpZiggTXlfYXJ1IDwgSGlnaGVzdF9zZXEgKQ0KICAJew0KKyAJCSBBbGFybSggUFJPVE9D T0wsICJSRVRSQU5TIE5FRURFRCBBUlUoJWQpLCBIaWdoZXN0IFNlcSAoJWQpIFxuIixNeV9hcnUs IEhpZ2hlc3Rfc2VxKTsNCisgDQogIAkgICAgLyogQ29tcHV0ZSBob3cgbWFueSBvZiBteSByZXRy YW5zbWlzc2lvbiByZXF1ZXN0cyBhcmUgcG9zc2libGUgdG8gZml0ICovDQogIAkgICAgcmV0cmFu c19hbGxvd2VkID0gKCBzaXplb2YoIHRva2VuX2JvZHkgKSAtIG5ld19wdHIgLSBzaXplb2YoIHJp bmdfcnRyICkgKSAvIHNpemVvZiggaW50MzIgKTsNCiAgCSAgICBpZiggcmV0cmFuc19hbGxvd2Vk ID4gMSApDQogIAkgICAgew0KICAJICAgIAlyaW5nX3J0cl9wdHIgPSAocmluZ19ydHIgKikmbmV3 X3J0cltuZXdfcHRyXTsNCiAgCSAgICAJcmluZ19ydHJfcHRyLT5tZW1iX2lkIAk9IE1lbWJfaWQo KTsNCiAgCSAgICAJcmluZ19ydHJfcHRyLT5wcm9jX2lkCT0gcnRyX3Byb2NfaWQ7DQogIAkgICAg CXJpbmdfcnRyX3B0ci0+c2VnX2luZGV4CT0gcnRyX3NlZ19pbmRleDsNCiAgCSAgICAJcmluZ19y dHJfcHRyLT5udW1fc2VxCT0gMDsNCiAgCSAgICAJbmV3X3B0ciArPSBzaXplb2YocmluZ19ydHIp Ow0KICAJICAgIAlmb3IoIGk9TXlfYXJ1KzE7IGkgPD0gSGlnaGVzdF9zZXEgJiYgcmV0cmFuc19h bGxvd2VkID4gMDsgaSsrLCByZXRyYW5zX2FsbG93ZWQtLSApDQoqKioqKioqKioqKioqKioNCioq KiA2MjAsNjQxICoqKioNCi0tLSA2NTYsNjc4IC0tLS0NCiAgCXsNCiAgCSAgICAJdmFsID0gR2V0 X2FycSggVG9rZW4tPnR5cGUgKTsNCiAgCQl2YWwgPSAodmFsICsgMSklIDB4MTA7DQogIAkJVG9r ZW4tPnR5cGUgPSBTZXRfYXJxKCAgICAgVG9rZW4tPnR5cGUsIHZhbCApOw0KICAJCVRva2VuLT50 eXBlID0gU2V0X3JldHJhbnMoIFRva2VuLT50eXBlLCAwICAgKTsNCiAgCX0NCiAgDQogIAkvKiBT ZW5kIHRva2VuICovDQogIAlpZiggISAoIENvbmZfbGVhZGVyKCBNZW1iX2FjdGl2ZV9wdHIoKSAp ID09IE15LmlkICYmDQogIAkJVG9faG9sZF90b2tlbigpICkgKQ0KICAJew0KKyAJCQ0KICAJCS8q IHNlbmRpbmcgdG9rZW4gKi8NCiAgCQlOZXRfc2VuZF90b2tlbiggJk5ld190b2tlbiApOw0KICAv KiAjIyMgQnVnIGZpeCBmb3IgU0dJcyAqLw0KICAjaWZkZWYJQVJDSF9TR0lfSVJJWA0KICAJCU5l dF9zZW5kX3Rva2VuKCAmTmV3X3Rva2VuICk7DQogICNlbmRpZiAgLyogQVJDSF9TR0lfSVJJWCAq Lw0KICANCiAgCQlpZiggR2V0X3JldHJhbnMoIFRva2VuLT50eXBlICkgPiAxICkNCiAgCQl7DQog IAkJCS8qIHByb2JsZW1zICovIA0KICAJCQlOZXRfc2VuZF90b2tlbiggJk5ld190b2tlbiApOw0K KioqKioqKioqKioqKioqDQoqKiogODUzLDg3NSAqKioqDQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgU2VuZF9wYWNrLmVsZW1lbnRzWzFdLmJ1ZiA9IA0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKVBhY2tldHNbcGFja19lbnRyeV0uYm9keTsN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kX3BhY2suZWxlbWVudHNbMV0u bGVuID0gDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tfcHRyLT5k YXRhX2xlbjsgDQogIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCByaW5n X3J0cl9wdHItPnByb2NfaWQgIT0gLTEgKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gTmV0X3Vj YXN0ICggcmluZ19ydHJfcHRyLT5wcm9jX2lkLCAmU2VuZF9wYWNrICk7DQogIAkJCQkgICAgR2xv YmFsU3RhdHVzLnVfcmV0cmFucysrOw0KICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgQWxhcm0oIFBST1RPQ09MLCANCiEgICAgICAgICAiQW5zd2VyX3JldHJhbnM6IHJl dHJhbnNtaXQgdG8gcHJvYyAlZFxuIiwgcmluZ19ydHJfcHRyLT5wcm9jX2lkICk7DQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgaWYoIHJpbmdfcnRyX3B0ci0+c2VnX2lu ZGV4ICE9IC0xICkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQg PSBOZXRfc2Nhc3QgKCByaW5nX3J0cl9wdHItPnNlZ19pbmRleCwgJlNlbmRfcGFjayApOw0KICAJ CQkJICAgIEdsb2JhbFN0YXR1cy5zX3JldHJhbnMrKzsNCiAgDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEFsYXJtKCBQUk9UT0NPTCwgDQogICAgICAgICAgIkFuc3dlcl9y ZXRyYW5zOiByZXRyYW5zbWl0IHRvIHNlZyAlZFxuIiwgcmluZ19ydHJfcHRyLT5zZWdfaW5kZXgg KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsNCiAgI2lmIDENCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gTmV0X3F1ZXVlX2JjYXN0 ICggJlNlbmRfcGFjayApOw0KICAjZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZXQgPSBOZXRfYmNhc3QgKCAmU2VuZF9wYWNrICk7DQotLS0gODkwLDkxMiAtLS0t DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZF9wYWNrLmVsZW1lbnRzWzFd LmJ1ZiA9IA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKVBh Y2tldHNbcGFja19lbnRyeV0uYm9keTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBTZW5kX3BhY2suZWxlbWVudHNbMV0ubGVuID0gDQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBhY2tfcHRyLT5kYXRhX2xlbjsgDQogIA0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlmKCByaW5nX3J0cl9wdHItPnByb2NfaWQgIT0gLTEgKQ0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmV0ID0gTmV0X3VjYXN0ICggcmluZ19ydHJfcHRyLT5wcm9jX2lkLCAmU2Vu ZF9wYWNrICk7DQogIAkJCQkgICAgR2xvYmFsU3RhdHVzLnVfcmV0cmFucysrOw0KICANCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxhcm0oIFBST1RPQ09MLCANCiEgICAg ICAgICAiQW5zd2VyX3JldHJhbnM6IHJldHJhbnNtaXQgdG8gcHJvYyAlZCAgYXJ1IGlzICVkXG4i LCByaW5nX3J0cl9wdHItPnByb2NfaWQsQXJ1ICk7DQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfWVsc2UgaWYoIHJpbmdfcnRyX3B0ci0+c2VnX2luZGV4ICE9IC0xICkgew0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBOZXRfc2Nhc3QgKCByaW5n X3J0cl9wdHItPnNlZ19pbmRleCwgJlNlbmRfcGFjayApOw0KICAJCQkJICAgIEdsb2JhbFN0YXR1 cy5zX3JldHJhbnMrKzsNCiAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEFsYXJtKCBQUk9UT0NPTCwgDQogICAgICAgICAgIkFuc3dlcl9yZXRyYW5zOiByZXRyYW5zbWl0 IHRvIHNlZyAlZFxuIiwgcmluZ19ydHJfcHRyLT5zZWdfaW5kZXggKTsNCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9ZWxzZXsNCiAgI2lmIDENCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmV0ID0gTmV0X3F1ZXVlX2JjYXN0ICggJlNlbmRfcGFjayApOw0K ICAjZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBOZXRf YmNhc3QgKCAmU2VuZF9wYWNrICk7DQoqKioqKioqKioqKioqKioNCioqKiAxMzQ3LDEzNjggKioq Kg0KLS0tIDEzODQsMTQwNiAtLS0tDQogIAllbHNlIHJldHVybiggMCApOw0KICB9DQogIA0KICBz dGF0aWMJdm9pZAlIYW5kbGVfaHVycnkoIHBhY2tldF9oZWFkZXIgKnBhY2tfcHRyICkNCiAgew0K ICAJaWYoIENvbmZfbGVhZGVyKCBNZW1iX2FjdGl2ZV9wdHIoKSApID09IE15LmlkICYmDQogIAkg ICAgSXNfdG9rZW5faG9sZCgpICkgDQogIAl7DQogIAkgICAgaWYoIENvbmZfaWRfaW5fY29uZigg TWVtYl9hY3RpdmVfcHRyKCksIHBhY2tfcHRyLT5wcm9jX2lkICkgIT0gLTEgKQ0KICAJICAgIHsN CiAgCQlBbGFybSggUFJPVE9DT0wsICJIYW5kbGVfaHVycnk6IHNlbmRpbmcgdG9rZW4gbm93XG4i KTsNCisgCQlUb2tlbl9jb3VudGVyID0gMDsNCiAgCQlQcm90X3Rva2VuX2h1cnJ5KCk7DQogIAkg ICAgfQ0KICAJfQ0KICB9DQogIA0KICB2b2lkCVByb3RfdG9rZW5faHVycnkoKQ0KICB7DQogIAkv KiBhc2tlZCB0byBzZW5kIHRva2VuIGFnYWluIChhbG1vc3QgbG9zdCkgKi8NCiAgCQkJDQogIAlz eXNfc2NhdHRlcglyZXRyYW5zX3Rva2VuOw0KICAJaW50MzIJCXZhbDsNCkluZGV4OiBzcHJlYWRt YXAvc3ByZWFkX3NyYy9zcHJlYWQ0X29sZi9kYWVtb24vc2NhdHRlci5oDQo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpS Q1MgZmlsZTogL2N2cy9tYXN0ZXIvb2xmL2Vjb20vc3ByZWFkbWFwL3NwcmVhZF9zcmMvc3ByZWFk NF9vbGYvZGFlbW9uL3NjYXR0ZXIuaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQ0KZGlmZiAt YiAtYyAtMSAtMSAtcjEuNSBzY2F0dGVyLmgNCioqKiBzcHJlYWRtYXAvc3ByZWFkX3NyYy9zcHJl YWQ0X29sZi9kYWVtb24vc2NhdHRlci5oCTEyIERlYyAyMDA3IDE0OjM3OjEzIC0wMDAwCTEuNQ0K LS0tIHNwcmVhZG1hcC9zcHJlYWRfc3JjL3NwcmVhZDRfb2xmL2RhZW1vbi9zY2F0dGVyLmgJMjQg SmFuIDIwMTMgMjI6MTI6MzEgLTAwMDANCioqKioqKioqKioqKioqKg0KKioqIDM1LDYwICoqKioN CiAgDQogICNpZm5kZWYgSU5DX1NDQVRURVINCiAgI2RlZmluZSBJTkNfU0NBVFRFUg0KICANCiAg I2luY2x1ZGUgImFyY2guaCINCiAgI2RlZmluZQlNQVhfU0NBVFRFUl9FTEVNRU5UUwkxMzANCiAg DQogIC8qIHNjYXRfZWxlbWVudCBpcyBFWEFDVExZIGFzIGRlZmluZWQgaW4gaW92ZWMgKi8NCiAg DQogIHR5cGVkZWYgc3RydWN0IGR1bW15X3NjYXRfZWxlbWVudHsNCiAgCWNoYXIJKmJ1ZjsNCiEg CWludAlsZW47DQogIH0gc2NhdF9lbGVtZW50Ow0KICANCiAgdHlwZWRlZiBzdHJ1Y3QgZHVtbXlf c2NhdHRlciB7DQohIAlpbnQJCW51bV9lbGVtZW50czsNCiAgCXNjYXRfZWxlbWVudAllbGVtZW50 c1tBUkNIX1NDQVRURVJfU0laRV07DQogIH0gc3lzX3NjYXR0ZXI7DQogIA0KICB0eXBlZGVmIHN0 cnVjdCBkdW1teV9iaWdfc2NhdHRlciB7DQohIAlpbnQJCW51bV9lbGVtZW50czsNCiAgCXNjYXRf ZWxlbWVudAllbGVtZW50c1tNQVhfU0NBVFRFUl9FTEVNRU5UU107DQogIH0gc2NhdHRlcjsNCiAg DQogICNlbmRpZiAgLyogSU5DX1NDQVRURVIgKi8NCiAgDQotLS0gMzUsNjAgLS0tLQ0KICANCiAg I2lmbmRlZiBJTkNfU0NBVFRFUg0KICAjZGVmaW5lIElOQ19TQ0FUVEVSDQogIA0KICAjaW5jbHVk ZSAiYXJjaC5oIg0KICAjZGVmaW5lCU1BWF9TQ0FUVEVSX0VMRU1FTlRTCTEzMA0KICANCiAgLyog c2NhdF9lbGVtZW50IGlzIEVYQUNUTFkgYXMgZGVmaW5lZCBpbiBpb3ZlYyAqLw0KICANCiAgdHlw ZWRlZiBzdHJ1Y3QgZHVtbXlfc2NhdF9lbGVtZW50ew0KICAJY2hhcgkqYnVmOw0KISAJc2l6ZV90 CWxlbjsNCiAgfSBzY2F0X2VsZW1lbnQ7DQogIA0KICB0eXBlZGVmIHN0cnVjdCBkdW1teV9zY2F0 dGVyIHsNCiEgCXNpemVfdAkJbnVtX2VsZW1lbnRzOw0KICAJc2NhdF9lbGVtZW50CWVsZW1lbnRz W0FSQ0hfU0NBVFRFUl9TSVpFXTsNCiAgfSBzeXNfc2NhdHRlcjsNCiAgDQogIHR5cGVkZWYgc3Ry dWN0IGR1bW15X2JpZ19zY2F0dGVyIHsNCiEgCXNpemVfdAkJbnVtX2VsZW1lbnRzOw0KICAJc2Nh dF9lbGVtZW50CWVsZW1lbnRzW01BWF9TQ0FUVEVSX0VMRU1FTlRTXTsNCiAgfSBzY2F0dGVyOw0K ICANCiAgI2VuZGlmICAvKiBJTkNfU0NBVFRFUiAqLw0KICANCkluZGV4OiBzcHJlYWRtYXAvc3By ZWFkX3NyYy9zcHJlYWQ0X29sZi9kYWVtb24vc3ByZWFkLmMNCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxl OiAvY3ZzL21hc3Rlci9vbGYvZWNvbS9zcHJlYWRtYXAvc3ByZWFkX3NyYy9zcHJlYWQ0X29sZi9k YWVtb24vc3ByZWFkLmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjExDQpkaWZmIC1iIC1jIC0x IC0xIC1yMS4xMSBzcHJlYWQuYw0KKioqIHNwcmVhZG1hcC9zcHJlYWRfc3JjL3NwcmVhZDRfb2xm L2RhZW1vbi9zcHJlYWQuYwkyMSBKdWwgMjAwOSAyMDo0MDoyMyAtMDAwMAkxLjExDQotLS0gc3By ZWFkbWFwL3NwcmVhZF9zcmMvc3ByZWFkNF9vbGYvZGFlbW9uL3NwcmVhZC5jCTI0IEphbiAyMDEz IDIyOjEyOjMzIC0wMDAwDQoqKioqKioqKioqKioqKioNCioqKiAxNDgsMTcwICoqKioNCiAgCSAg IA0KICBpbnQgX3J1bl9tYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQogIHsNCiAgI2lmbmRl ZiBBUkNIX1BDX1dJTjk1DQogIAlzdHJ1Y3QgZ3JvdXAgICpncnA7DQogIAlzdHJ1Y3QgcGFzc3dk ICpwd2Q7DQogICNlbmRpZg0KICANCiAgI2lmZGVmCUFSQ0hfUENfV0lOOTUNCiAgCWludAlyZXQ7 DQogIA0KISAJcmV0ID0gV1NBU3RhcnR1cCggTUFLRVdPUkQoMSwxKSwgJldTQURhdGEgKTsNCiAg CWlmKCByZXQgIT0gMCApDQogICAgICAgICAgICAgIEFsYXJtcCggU1BMT0dfRkFUQUwsIE5FVFdP UkssICJTcHJlYWQ6IHdpbnNvY2sgaW5pdGlhbGl6YXRpb24gZXJyb3IgJWRcbiIsIHJldCApOw0K ICANCiAgI2VuZGlmCS8qIEFSQ0hfUENfV0lOOTUgKi8NCiAgDQogICAgICAgICAgLyogaW5pdGlh bGl6ZSBlYWNoIHZhbGlkIGF1dGhlbnRpY2F0aW9uIHByb3RvY29sICovDQogICAgICAgICAgbnVs bF9pbml0KCk7DQogICAgICAgICAgaXBfaW5pdCgpOw0KICAjaWZkZWYgIEVOQUJMRV9QQVNTV09S RA0KICAgICAgICAgIHB3b3JkX2luaXQoKTsNCiAgI2VuZGlmDQotLS0gMTQ4LDE3MCAtLS0tDQog IAkgICANCiAgaW50IF9ydW5fbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQ0KICB7DQogICNp Zm5kZWYgQVJDSF9QQ19XSU45NQ0KICAJc3RydWN0IGdyb3VwICAqZ3JwOw0KICAJc3RydWN0IHBh c3N3ZCAqcHdkOw0KICAjZW5kaWYNCiAgDQogICNpZmRlZglBUkNIX1BDX1dJTjk1DQogIAlpbnQJ cmV0Ow0KICANCiEgCXJldCA9IFdTQVN0YXJ0dXAoIE1BS0VXT1JEKDIsMiksICZXU0FEYXRhICk7 DQogIAlpZiggcmV0ICE9IDAgKQ0KICAgICAgICAgICAgICBBbGFybXAoIFNQTE9HX0ZBVEFMLCBO RVRXT1JLLCAiU3ByZWFkOiB3aW5zb2NrIGluaXRpYWxpemF0aW9uIGVycm9yICVkXG4iLCByZXQg KTsNCiAgDQogICNlbmRpZgkvKiBBUkNIX1BDX1dJTjk1ICovDQogIA0KICAgICAgICAgIC8qIGlu aXRpYWxpemUgZWFjaCB2YWxpZCBhdXRoZW50aWNhdGlvbiBwcm90b2NvbCAqLw0KICAgICAgICAg IG51bGxfaW5pdCgpOw0KICAgICAgICAgIGlwX2luaXQoKTsNCiAgI2lmZGVmICBFTkFCTEVfUEFT U1dPUkQNCiAgICAgICAgICBwd29yZF9pbml0KCk7DQogICNlbmRpZg0KSW5kZXg6IHNwcmVhZG1h cC9zcHJlYWRfc3JjL3NwcmVhZDRfb2xmL2luY2x1ZGUvc3AuaA0KPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZp bGU6IC9jdnMvbWFzdGVyL29sZi9lY29tL3NwcmVhZG1hcC9zcHJlYWRfc3JjL3NwcmVhZDRfb2xm L2luY2x1ZGUvc3AuaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQ0KZGlmZiAtYiAtYyAtMSAt MSAtcjEuNSBzcC5oDQoqKiogc3ByZWFkbWFwL3NwcmVhZF9zcmMvc3ByZWFkNF9vbGYvaW5jbHVk ZS9zcC5oCTUgSmFuIDIwMDcgMTU6NTQ6MjUgLTAwMDAJMS41DQotLS0gc3ByZWFkbWFwL3NwcmVh ZF9zcmMvc3ByZWFkNF9vbGYvaW5jbHVkZS9zcC5oCTI0IEphbiAyMDEzIDIyOjEyOjM0IC0wMDAw DQoqKioqKioqKioqKioqKioNCioqKiAyOSw1MCAqKioqDQotLS0gMjksNTMgLS0tLQ0KICAgKiAg ICBDcmlzdGluYSBOaXRhLVJvdGFydSBjcmlzbkBjcy5wdXJkdWUuZWR1IC0gZ3JvdXAgY29tbXVu aWNhdGlvbiBzZWN1cml0eS4NCiAgICogICAgVGhlbyBTY2hsb3NzbmFnbGUgICAgamVzdXNAb21u aXRpLmNvbSAtIFBlcmwsIGF1dG9jb25mLCBvbGQgc2tpcGxpc3QuDQogICAqICAgIERhbiBTY2hv ZW5ibHVtICAgICAgIGRhbnNjaEBjbmRzLmpodS5lZHUgLSBKYXZhIGludGVyZmFjZS4NCiAgICoN CiAgICovDQogIA0KICANCiAgDQogICNpZm5kZWYgSU5DX1NQDQogICNkZWZpbmUgSU5DX1NQDQog IA0KKyAvKiBmb3Igc2l6ZV90ICovDQorICNpbmNsdWRlIDxzdGRkZWYuaD4NCisgDQogICNpZmRl ZiBfX2NwbHVzcGx1cw0KICBleHRlcm4gIkMiIHsNCiAgI2VuZGlmDQogIA0KICAjZGVmaW5lIAlp bnQxNglzaG9ydA0KICAjZGVmaW5lCQlpbnQzMglpbnQNCiAgDQogICNkZWZpbmUJCUZsaXBfaW50 MTYoIHR5cGUgKQkoICggKHR5cGUgPj4gOCkgJiAweDAwZmYpIHwgKCAodHlwZSA8PCA4KSAmIDB4 ZmYwMCkgKQ0KICANCiAgI2RlZmluZQkJRmxpcF9pbnQzMiggdHlwZSApCSggKCAodHlwZSA+PjI0 KSAmIDB4MDAwMDAwZmYpIHwgKCAodHlwZSA+PiA4KSAmIDB4MDAwMGZmMDApIHwgKCAodHlwZSA8 PCA4KSAmIDB4MDBmZjAwMDApIHwgKCAodHlwZSA8PDI0KSAmIDB4ZmYwMDAwMDApICkNCiAgDQoq KioqKioqKioqKioqKioNCioqKiAxMzEsMTU3ICoqKioNCiAgI2RlZmluZSAgICAgICAgIEdST1VQ U19UT09fU0hPUlQgICAgICAgIC0xNg0KICAjZGVmaW5lICAgICAgICAgTUVTU0FHRV9UT09fTE9O RyAgICAgICAgLTE3DQogICNkZWZpbmUgICAgICAgICBORVRfRVJST1JfT05fU0VTU0lPTiAgICAt MTgNCiAgDQogICNkZWZpbmUJCU1BWF9DTElFTlRfU0NBVFRFUl9FTEVNRU5UUwkxMDANCiAgDQog IHR5cGVkZWYgCWludCAgICAgICAgICAgICBtYWlsYm94Ow0KICB0eXBlZGVmCQlpbnQgICAgICAg ICAgICAgc2VydmljZTsJDQogIA0KICB0eXBlZGVmCXN0cnVjdAlkdW1teV9zY2F0X2VsZW1lbnR7 DQogIAljaGFyCSpidWY7DQohIAlpbnQJbGVuOw0KICB9IHNjYXRfZWxlbWVudDsNCiAgDQogIHR5 cGVkZWYJc3RydWN0CWR1bW15X3NjYXR0ZXJ7DQohIAlpbnQJCW51bV9lbGVtZW50czsNCiAgCXNj YXRfZWxlbWVudAllbGVtZW50c1tNQVhfQ0xJRU5UX1NDQVRURVJfRUxFTUVOVFNdOw0KICB9IHNj YXR0ZXI7DQogIA0KICB0eXBlZGVmIHN0cnVjdAlkdW1teV9ncm91cF9pZCB7DQogIAlpbnQzMgkJ aWRbM107DQogIH0gZ3JvdXBfaWQ7DQogIA0KICB0eXBlZGVmIHN0cnVjdCBkdW1teV92c19zZXRf aW5mbyB7DQogICAgICAgICAgdW5zaWduZWQgaW50IG51bV9tZW1iZXJzOw0KICAgICAgICAgIHVu c2lnbmVkIGludCBtZW1iZXJzX29mZnNldDsgIC8qIG9mZnNldCBmcm9tIGJlZ2lubmluZyBvZiBt c2cgYm9keSovDQogIH0gdnNfc2V0X2luZm87DQotLS0gMTM0LDE2MCAtLS0tDQogICNkZWZpbmUg ICAgICAgICBHUk9VUFNfVE9PX1NIT1JUICAgICAgICAtMTYNCiAgI2RlZmluZSAgICAgICAgIE1F U1NBR0VfVE9PX0xPTkcgICAgICAgIC0xNw0KICAjZGVmaW5lICAgICAgICAgTkVUX0VSUk9SX09O X1NFU1NJT04gICAgLTE4DQogIA0KICAjZGVmaW5lCQlNQVhfQ0xJRU5UX1NDQVRURVJfRUxFTUVO VFMJMTAwDQogIA0KICB0eXBlZGVmIAlpbnQgICAgICAgICAgICAgbWFpbGJveDsNCiAgdHlwZWRl ZgkJaW50ICAgICAgICAgICAgIHNlcnZpY2U7CQ0KICANCiAgdHlwZWRlZglzdHJ1Y3QJZHVtbXlf c2NhdF9lbGVtZW50ew0KICAJY2hhcgkqYnVmOw0KISAJc2l6ZV90CWxlbjsNCiAgfSBzY2F0X2Vs ZW1lbnQ7DQogIA0KICB0eXBlZGVmCXN0cnVjdAlkdW1teV9zY2F0dGVyew0KISAJc2l6ZV90CQlu dW1fZWxlbWVudHM7DQogIAlzY2F0X2VsZW1lbnQJZWxlbWVudHNbTUFYX0NMSUVOVF9TQ0FUVEVS X0VMRU1FTlRTXTsNCiAgfSBzY2F0dGVyOw0KICANCiAgdHlwZWRlZiBzdHJ1Y3QJZHVtbXlfZ3Jv dXBfaWQgew0KICAJaW50MzIJCWlkWzNdOw0KICB9IGdyb3VwX2lkOw0KICANCiAgdHlwZWRlZiBz dHJ1Y3QgZHVtbXlfdnNfc2V0X2luZm8gew0KICAgICAgICAgIHVuc2lnbmVkIGludCBudW1fbWVt YmVyczsNCiAgICAgICAgICB1bnNpZ25lZCBpbnQgbWVtYmVyc19vZmZzZXQ7ICAvKiBvZmZzZXQg ZnJvbSBiZWdpbm5pbmcgb2YgbXNnIGJvZHkqLw0KICB9IHZzX3NldF9pbmZvOw0K --_002_69414ba379bd4edb951baeeba250e1c7BY2PR0201MB0709namprd02_ Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Spread-users mailing list [email protected] http://lists.spread.org/mailman/listinfo/spread-users --_002_69414ba379bd4edb951baeeba250e1c7BY2PR0201MB0709namprd02_--