From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbgjp3.qq.com (smtpbgjp3.qq.com [54.92.39.34]) by sourceware.org (Postfix) with ESMTPS id 88D1B3858C41 for ; Thu, 15 Jun 2023 08:47:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 88D1B3858C41 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivai.ai Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivai.ai X-QQ-mid: bizesmtp76t1686818851tacgmk2z Received: from LAPTOP-EPITNQBU ( [58.60.1.5]) by bizesmtp.qq.com (ESMTP) with id ; Thu, 15 Jun 2023 16:47:30 +0800 (CST) X-QQ-SSF: 01400000000000G0S000000A0000000 X-QQ-FEAT: EKa9/5zJOSgfmSy5rKdNDRzTyRU+mkiTKqVDqU8uP/X1nSLdL0dRl9VBztiU8 HxGSKzFjYAswrkYFNVL2cX5+M2kVdI5qApnLCGmxK7K9CoKwSCYmDPrJBQPCES7du4wJ9f7 bsLjFmvsyc8shzLZMm5JEb84yjvHJDw7HAPXXTwF2fgxIPOIcOmCo+RDDSzNg5dtHMiBiLN Y/Pmyo6iBJs680ksnld5zghWa8w9gkf+TBYY7P7rUKC2KjCnF5yF+MvYDDJhL9F4VfhsYnn EOLDaM0OPKZeoBtEVy0F2k5KbK8YEp/6+Yyfj6243GGocdJDusT2i5SjsesywGRD9uI01ge IB1uPgaOiDEq9VUn6IPb+lkBHDKmkVKKF++JOmSUNbiIFMuXRr8yDu2kBT0OQuaF0cCn6uX TTI2yI8c8E3CIeXzWiC0FQ== X-QQ-GoodBg: 2 X-BIZMAIL-ID: 11374450478235199460 Date: Thu, 15 Jun 2023 16:47:31 +0800 From: "juzhe.zhong@rivai.ai" To: rguenther Cc: gcc-patches , richard.sandiford , krebbel , uweigand Subject: Re: Re: [PATCH V2] VECT: Support LEN_MASK_ LOAD/STORE to support flow control for length loop control References: <20230612041438.272885-1-juzhe.zhong@rivai.ai>, X-Priority: 3 X-GUID: CC81A374-0AD4-484D-9055-9432CBA9BA4B X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: <1A27F1FE56A91998+2023061516473052116877@rivai.ai> Content-Type: multipart/alternative; boundary="----=_001_NextPart586183214086_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-11.8 required=5.0 tests=BAYES_00,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS,TXREP,T_KAM_HTML_FONT_INVALID,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. ------=_001_NextPart586183214086_=---- Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: base64 SGksIFJpY2hhcmQuDQoNClRoYW5rcyBmb3IgY29tbWVudHMuDQoNCj4+Q2Fu IHlvdSB0cnkgdXNpbmcgdGhlIHNhbWUgd29yZGluZyBmb3IgbGVuZ3RoIGFu ZCBtYXNrIG9wZXJhbmRzDQo+PmFzIGZvciBsZW5fbG9hZCBhbmQgbWFza2xv YWQ/ICBBbHNvIGxlbl9sb2FkIGhhcyB0aGUgImJpYXMiDQo+Pm9wZXJhbmQg d2hpY2ggeW91IG9taXQgaGVyZSAtIElJUkMgdGhhdCB3YXMgYWRkZWQgZm9y IHMzOTAgd2hpY2gNCj4+Zm9yIHVua25vd24gcmVhc29uIGJlaGF2ZXMgYSBs aXR0bGUgZGlmZmVyZW50IHRoYW4gcG93ZXIuICBJZg0KPj5sZW4gc3VwcG9y dCBmb3IgczM5MCBldmVyIGV4dGVuZHMgdG8gb3RoZXIgb3BzIG9yIHBvd2Vy IG9yIHMzOTANCj4+Z2FpbiBtYXNrIHN1cHBvcnQgZm9yIGNvbmRpdGlvbmFs IGNvZGUgd2UnZCBsaWtlbHkgaGF2ZSB0byBhZGp1c3QNCj4+ZWFjaCBvcHRh YiB5b3UgYWRkLiAgTWF5YmUgaXQncyBiZXR0ZXIgdG8gYWRkIHRoZSBiaWFz IG9wZXJhbmQNCj4+bm93Lg0KDQpJIGRvbid0IGtub3cgQklBUyB3ZWxsIGFu ZCBJdCBzZWVtcyB0byBiZSBhIFBvd2VyIHRhcmdldCBkZXBlbmRlbnQgZmVh dHVyZS4NCkkgdGhpbmsgbGVuX21hc2tfKiBpbiBnZW5lcmFsIHNob3VsZCBv bmx5IG5lZWQgbGVuZ2h0IGFuZCBtYXNrIG9wZXJhbmQuDQpBY3R1YWxseSwg dGhlIGZ1bmN0aW9uIGFyZ3VtZW50IGlzIHRvdGFsbHkgc2FtZSBhcyB2cF9s b2FkL3ZwX3N0b3JlIGluIExMVk0uDQoNCkNvdWxkIEkganVzdCBrZWVwIGN1 cnJlbnQgZm9ybWF0ICh3aXRob3V0IEJJQVMgYXJndW1lbnQpPyBBbmQgZXh0 ZW5kIGl0IHdpdGggQklBUyBpZg0KUG93ZXJQQyB3YW50IHRvIHVzZSBMRU5f TUFTS18gKiA/DQoNCg0KPj4gQ2FuIHlvdSBwbGVhc2Ugc3BsaXQgdGhlIHBh dGNoPyAgSGF2ZSAxL24gYWRkIHRoZSBvcHRhYiBhbmQgaWZuDQo+PnBsdXMg YWRqdXN0IHRoZSBnZW5lcmljIGlmbiBwcmVkaWNhdGVzLiAgSGF2ZSAyL24g YWRqdXN0IHRoZSB2ZWN0b3JpemVyDQo+PnBhcnRzIGFuZCAzL24gb3B0aW9u YWwgdGhpbmdzIHN1Y2ggYXMgRFNFLg0KT2suDQoNCj4+Q2FuIHlvdSBpbnN0 ZWFkIGFkZCBhIGxlbl9wIGFyZ3VtZW50IHRvIHRoZSBmdW5jdGlvbiBhbmQg ZG8NCg0KPj4gICAgaWYgKGxlbl9wKQ0KPj4gICAgICBjaGVjayBsZW4gaXMg ZnVsbA0KPj4gICAgaWYgKG1hc2tfcCkNCj4+ICAgICAgY2hlY2sgbWFzayBp cyBmdWxsDQoNCj4+Pw0KDQoNCj4+VXNlIGludGVybmFsX2ZuX3N0b3JlZF92 YWx1ZV9pbmRleCBhbmQgaW50ZXJuYWxfZm5fbWFza19pbmRleCwNCj4+cG9z c2libHkgYWRkIGludGVybmFsX2ZuX2xlbl9pbmRleD8NCg0KPj53aHkgZGV2 aWF0ZSBmcm9tIGNhbl92ZWNfbWFza19sb2FkX3N0b3JlX3AgYW5kIG5vdCBw YXNzIGluIHRoZQ0KPj5tYXNrX21vZGU/ICBJbiBmYWN0IEkgd29uZGVyIHdo eSB0aGlzIGZ1bmN0aW9uIGRpZmZlcnMgZnJvbQ0KPj5jYW5fdmVjX21hc2tf bG9hZF9zdG9yZV9wIGJlc2lkZXMgdXNpbmcgb3RoZXIgb3B0YWJzPyAgQ291 bGRuJ3QNCj4+d2Ugc2ltcGx5IGFkZCBhIGJvb2wgd2l0aF9sZW4gYXJndW1l bnQgdG8gY2FuX3ZlY19tYXNrX2xvYWRfc3RvcmVfcD8NCg0KPj5CdXQgaWYt Y29udmVyc2lvbiBvbmx5IG5lZWRzIHRoZSBjb25kaXRpb25hbCBtYXNraW5n LCBub3QgX2xlbi4gIEkNCj4+ZG9uJ3QgdGhpbmsgd2UgbmVlZCB0byBjaGVj ayB0aGlzIGF0IGFsbD8gIEluIGZhY3QNCj4+Y2FuX3ZlY19tYXNrX2xvYWRf c3RvcmVfcCBzaG91bGQgcHJvYmFibHkgcmV0dXJuIHRydWUgd2hlbg0KPj5M RU5fTUFTS0xPQUQgaXMgYXZhaWxhYmxlIHNpbmNlIHdlIGNhbiBhbHdheXMg dXNlIHRoZSBmdWxsIHZlY3Rvcg0KPj5sZW4gYXMgbGVuIGFyZ3VtZW50PyAg VGhlIHN1Z2dlc3RlZCBib29sIGFyZ3VtZW50IHdpdGhfbGVuDQo+PmNvdWxk IGFsc28gYmVjb21lIGFuIGVudW0geyBXSVRIX0xFTiwgV0lUSE9VVF9MRU4s IEVJVEhFUiB9LA0KPj5idXQgbm90IHN1cmUgaWYgdGhhdCdzIHJlYWxseSBu ZWNlc3NhcnkuDQoNCk9rLg0KDQoNCj4+QXJlIHlvdSBnb2luZyB0byBwcm92 aWRlIGxlbl9sb2FkLCBtYXNrbG9hZCBhbmQgbGVuX21hc2tsb2FkDQo+PnBh dHRlcm5zIG9yIGp1c3QgbGVuX21hc2tsb2FkPyAgKEkgaG9wZSB0aGUgbGFz dCkNCg0KSSBqdXN0IHdhbnQgdG8gb25seSBlbmFibGUgbGVuX21hc2tsb2Fk IGluIFJJU0MtViBwb3J0IChubyBsZW5fbG9hZCBvciBtYXNrX2xvYWQpDQpB cyBJIHNhaWQgaW4gY29tbWl0IGxvZywgDQoNCmZvciAoaW50IGk9IDA7IGkg PCBuOyBpKyspDQogIGFbaV0gPSBhW2ldICsgYltpXTsNCg0KaGFzIGxlbmd0 aCBubyBtYXNrID09ID4gbGVuX21hc2tsb2FkL2xlbl9tYXNrc3RvcmUgKCBs ZW5ndGgsIG1hc2sgPSB7MSwxLDEsMSwxLDEsMSwuLi4uLn0pDQoNCmZvciAo aW50IGk9IDA7IGkgPCA0OyBpKyspDQogIGlmIChjb25kW2ldKQ0KICBhW2ld ID0gYVtpXSArIGJbaV07DQoNCm5vIGxlbmd0aCBoYXMgbWFzayA9PSA+IGxl bl9tYXNrbG9hZC9sZW5fbWFza3N0b3JlICggbGVuZ3RoID0gdmYsIG1hc2sg PSBjb21wYXJpc29uKQ0KDQoNCj4+IGNvbW1vbiB3aXRoIElGTl9NQVNLX1NU T1JFIGJ5IHVzaW5nIGludGVybmFsX2ZuX3N0b3JlZF92YWx1ZV9pbmRleA0K T2suDQoNCj4+IGludGVybmFsX2ZuX3N0b3JlZF92YWx1ZV9pbmRleA0Kb2sN Cg0KPj4gVGhhdCdzIHRvbyBzaW1wbGUsIHRoZSBjb2RlIHVzaW5nIHRoZSBp bmZvIGlzIG5vdCBwcmVwYXJlZCBmb3INCj4+IExFTl9NQVNLIHNpbmNlIGl0 IGhhbmRsZXMgbWFza2xvYWQgYW5kIGxlbl9sb2FkIHNlcGFyYXRlbHkuDQo+ PiBJIHN1Z2dlc3QgdG8gZHJvcCB0aGlzLCBwaWNraW5nIGl0IHVwIHNlcGFy YXRlbHkuDQpvaw0KDQo+PiBJIHRoaW5rIHlvdSBuZWVkIHRvIHZlcmlmeSB0 aGUgbGVuZ3RoIG9wZXJhbmQgaXMgdGhlIGZ1bGwgdmVjdG9yLCBub3RlDQo+ PiB0aGlzIGlzIGZvciBpZi1jb252ZXJzaW9uIHdoaWNoIGNvdWxkIGNhcmUg bGVzcyBmb3IgX0xFTiwgYnV0IGlmIHdlDQo+PiBpbnNpc3Qgb24gdXNpbmcg X0xFTiAoSSBkaWRuJ3Qgc2VlIHlvdSBjaGFuZ2luZyBpZi1jb252ZXJzaW9u IHRoYXQNCj4+IHdheT8hKSB0aGVuIHdlIG5lZWQgdG8gcHV0IGluIHNvbWUg dmFsdWUgZXZlbiBmb3IgdGhlICJzY2FsYXIiDQo+PiBwbGFjZWhvbGRlci4g IEknZCBzdWdnZXN0IHRvIHNpbXBseSB1c2UgSUZOX01BU0tfe0xPQUQsU1RP UkV9IGluDQo+PiBpZi1jb252ZXJzaW9uIGJ1dCB2ZWN0b3JpemUgdGhhdCBh cyBMRU5fIHdpdGggZnVsbCBsZW5ndGggaWYNCj4+IHBsYWluIE1BU0tfTE9B RC9TVE9SRSBpc24ndCBhdmFpbGFibGUuICBXaGljaCBtZWFucyB0aGVzZSBj aGFuZ2VzDQo+PiBhcmUgbm90IG5lY2Vzc2FyeSBhdCBhbGwuDQoNCm9rDQoN Cj4+YXMgd2l0aCBjYW5fbWFza18qIHdlIGRvbid0IHJlYWxseSBjYXJlIGlm IG1hc2tpbmcgaXMgc3VwcG9ydGVkIG9yDQo+Pm5vdCBzbyBJIHN1Z2dlc3Qg dG8gYW1lbmQgZ2V0X2xlbl9sb2FkX3N0b3JlX21vZGUgdG8gYWxzbyBjaGVj ayB0aGUNCj4+bGVuX21hc2t7bG9hZCxzdG9yZX0gb3B0YWJzPyAgR2l2ZW4g dGhhdCB0aGUgZnVuY3Rpb24NCj4+c2hvdWxkIHBvc3NpYmx5IHJldHVybiB0 aGUgY29ycmVzcG9uZGluZyBJRk4gYXMgd2VsbC4NCm9rDQoNCj4+dXNlIHRo ZSBwcm9wZXIgaWZuIGluZGV4IGNvbXB1dGUgZm4NCm9rDQoNCj4+c28gdGhp cyBhbnN3ZXJzIG15IHF1ZXN0aW9uIC0geW91IGp1c3QgaGF2ZSBsZW5fbWFz a3tsb2FkLHN0b3JlfT8NClllcy4NCg0KDQo+PkkgdGhpbmsgd2UgcmVhbGx5 IHdhbnQgdG8gY29tbW9uIHRoaXMgc29tZWhvdywgaGF2aW5nDQo+PmlmIChs b29wX2xlbnMpIGRvIHRoZSBmaW5hbF9sZW4gY29tcHV0ZSBhbmQgdGhlbiBh ZnRlcndhcmRzDQo+PnNlbGVjdCB0aGUgSUZOIHRvIGNyZWF0ZSwgZmlsbGlu ZyByZXF1aXJlZCBkZWZhdWx0IGFyZ3Mgb2YNCj4+ZmluYWxfbWFzayBhbmQg ZmluYWxfbGVuIGlmIG5vdCBjb21wdXRlZC4NCm9rLg0KDQo+PmFuZCBzcGxp dCB0aGlzIG91dCB0byBhIGhlbHBlciBmdW5jdGlvbg0Kb2suDQoNCg0KDQoN Cmp1emhlLnpob25nQHJpdmFpLmFpDQogDQpGcm9tOiBSaWNoYXJkIEJpZW5l cg0KRGF0ZTogMjAyMy0wNi0xNSAxNjowNg0KVG86IEp1LVpoZSBaaG9uZw0K Q0M6IGdjYy1wYXRjaGVzOyByaWNoYXJkLnNhbmRpZm9yZDsga3JlYmJlbDsg dXdlaWdhbmQNClN1YmplY3Q6IFJlOiBbUEFUQ0ggVjJdIFZFQ1Q6IFN1cHBv cnQgTEVOX01BU0tfIExPQUQvU1RPUkUgdG8gc3VwcG9ydCBmbG93IGNvbnRy b2wgZm9yIGxlbmd0aCBsb29wIGNvbnRyb2wNCk9uIE1vbiwgMTIgSnVuIDIw MjMsIGp1emhlLnpob25nQHJpdmFpLmFpIHdyb3RlOg0KIA0KPiBGcm9tOiBK dS1aaGUgWmhvbmcgPGp1emhlLnpob25nQHJpdmFpLmFpPg0KPiANCj4gVGFy Z2V0IGxpa2UgQVJNIFNWRSBpbiBHQ0MgaGFzIGFuIGVsZWdhbnQgd2F5IHRv IGhhbmRsZSBib3RoIGxvb3AgY29udHJvbA0KPiBhbmQgZmxvdyBjb250cm9s IHNpbXVsdGFuZW91c2x5Og0KPiANCj4gbG9vcF9jb250cm9sX21hc2sgPSBX SElMRV9VTFQNCj4gZmxvd19jb250cm9sX21hc2sgPSBjb21wYXJpc29uDQo+ IGNvbnRyb2xfbWFzayA9IGxvb3BfY29udHJvbF9tYXNrICYgZmxvd19jb250 cm9sX21hc2s7DQo+IE1BU0tfTE9BRCAoY29udHJvbF9tYXNrKQ0KPiBNQVNL X1NUT1JFIChjb250cm9sX21hc2spDQo+IA0KPiBIb3dldmVyLCB0YXJnZXRz IGxpa2UgUlZWIChSSVNDLVYgVmVjdG9yKSBjYW4gbm90IHVzZSB0aGlzIGFw cHJvYWNoIGluDQo+IGF1dG8tdmVjdG9yaXphdGlvbiBzaW5jZSBSVlYgdXNl IGxlbmd0aCBpbiBsb29wIGNvbnRyb2wuDQo+IA0KPiBUaGlzIHBhdGNoIGFk ZHMgTEVOX01BU0tfIExPQUQvU1RPUkUgdG8gc3VwcG9ydCBmbG93IGNvbnRy b2wgZm9yIHRhcmdldHMNCj4gbGlrZSBSSVNDLVYgdGhhdCB1c2VzIGxlbmd0 aCBpbiBsb29wIGNvbnRyb2wuDQo+IE5vcm1hbGl6ZSBsb2FkL3N0b3JlIGlu dG8gTEVOX01BU0tfIExPQUQvU1RPUkUgYXMgbG9uZyBhcyBlaXRoZXIgbGVu Z3RoDQo+IG9yIG1hc2sgaXMgdmFsaWQuIExlbmd0aCBpcyB0aGUgb3V0Y29t ZSBvZiBTRUxFQ1RfVkwgb3IgTUlOX0VYUFIuDQo+IE1hc2sgaXMgdGhlIG91 dGNvbWUgb2YgY29tcGFyaXNvbi4NCj4gDQo+IExFTl9NQVNLXyBMT0FEL1NU T1JFIGZvcm1hdCBpcyBkZWZpbmVkIGFzIGZvbGxvd3M6DQo+IDEpLiBMRU5f TUFTS19MT0FEIChwdHIsIGFsaWduLCBsZW5ndGgsIG1hc2spLg0KPiAyKS4g TEVOX01BU0tfU1RPUkUgKHB0ciwgYWxpZ24sIGxlbmd0aCwgbWFzaywgdmVj KS4NCj4gDQo+IENvbnNpZGVyIHRoZXNlIDQgZm9sbG93aW5nIGNhc2VzOg0K PiANCj4gVkxBOiBWYXJpYWJsZS1sZW5ndGggYXV0by12ZWN0b3JpemF0aW9u DQo+IFZMUzogU3BlY2lmaWMtbGVuZ3RoIGF1dG8tdmVjdG9yaXphdGlvbg0K PiANCj4gQ2FzZSAxIChWTFMpOiAtbXJ2di12ZWN0b3ItYml0cz0xMjggICBJ UiAoRG9lcyBub3QgdXNlIExFTl9NQVNLXyopOg0KPiBDb2RlOiB2MSA9IE1F TSAoLi4uKQ0KPiAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKSAgICAg ICAgICAgdjIgPSBNRU0gKC4uLikNCj4gICAgIGFbaV0gPSBiW2ldICsgY1tp XTsgICAgICAgICAgICAgICAgIHYzID0gdjEgKyB2MiANCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FTVsuLi5dID0gdjMN Cj4gDQo+IENhc2UgMiAoVkxTKTogLW1ydnYtdmVjdG9yLWJpdHM9MTI4ICAg SVIgKExFTl9NQVNLXyogd2l0aCBsZW5ndGggPSBWRiwgbWFzayA9IGNvbXBh cmlzb24pOg0KPiBDb2RlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbWFzayA9IGNvbXBhcmlzb24NCj4gICBmb3IgKGludCBpID0gMDsg aSA8IDQ7IGkrKykgICAgICAgICAgIHYxID0gTEVOX01BU0tfTE9BRCAobGVu Z3RoID0gVkYsIG1hc2spDQo+ICAgICBpZiAoY29uZFtpXSkgICAgICAgICAg ICAgICAgICAgICAgICB2MiA9IExFTl9NQVNLX0xPQUQgKGxlbmd0aCA9IFZG LCBtYXNrKSANCj4gICAgICAgYVtpXSA9IGJbaV0gKyBjW2ldOyAgICAgICAg ICAgICAgIHYzID0gdjEgKyB2Mg0KPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTEVOX01BU0tfU1RPUkUgKGxlbmd0aCA9IFZG LCBtYXNrLCB2MykNCj4gICAgICAgICAgICANCj4gQ2FzZSAzIChWTEEpOg0K PiBDb2RlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9v cF9sZW4gPSBTRUxFQ1RfVkwgb3IgTUlODQo+ICAgZm9yIChpbnQgaSA9IDA7 IGkgPCBuOyBpKyspICAgICAgICAgICB2MSA9IExFTl9NQVNLX0xPQUQgKGxl bmd0aCA9IGxvb3BfbGVuLCBtYXNrID0gey0xLC0xLC4uLn0pDQo+ICAgICAg IGFbaV0gPSBiW2ldICsgY1tpXTsgICAgICAgICAgICAgICB2MiA9IExFTl9N QVNLX0xPQUQgKGxlbmd0aCA9IGxvb3BfbGVuLCBtYXNrID0gey0xLC0xLC4u Ln0pDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB2MyA9IHYxICsgdjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQo+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMRU5f TUFTS19TVE9SRSAobGVuZ3RoID0gbG9vcF9sZW4sIG1hc2sgPSB7LTEsLTEs Li4ufSwgdjMpDQo+IA0KPiBDYXNlIDQgKFZMQSk6DQo+IENvZGU6ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wX2xlbiA9IFNFTEVD VF9WTCBvciBNSU4NCj4gICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykg ICAgICAgICAgIG1hc2sgPSBjb21wYXJpc29uDQo+ICAgICAgIGlmIChjb25k W2ldKSAgICAgICAgICAgICAgICAgICAgICB2MSA9IExFTl9NQVNLX0xPQUQg KGxlbmd0aCA9IGxvb3BfbGVuLCBtYXNrKQ0KPiAgICAgICBhW2ldID0gYltp XSArIGNbaV07ICAgICAgICAgICAgICAgdjIgPSBMRU5fTUFTS19MT0FEIChs ZW5ndGggPSBsb29wX2xlbiwgbWFzaykNCj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHYzID0gdjEgKyB2MiAgICAgICAgICAg ICAgICAgICAgICAgICAgICANCj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExFTl9NQVNLX1NUT1JFIChsZW5ndGggPSBsb29w X2xlbiwgbWFzaywgdjMpDQo+IA0KPiBNb3JlIGZlYXR1cmVzOg0KPiAxLiBT dXBwb3J0IHNpbXBsaWZ5IGdpbXBsZSBmb2xkIGZvciBMRU5fTUFTS18gTE9B RC9TVE9SRToNCj4gICAgTEVOX01BU0tfU1RPUkUgKGxlbmd0aCA9IHZmLCBt YXNrID0gey0xLC0xLC4uLn0sIHYpID09PT4gTUVNIFsuLi5dID0gVg0KPiAy LiBBbGxvdyBEU0UgZm9yIExFTl9NQVNLXyogTE9BRC9TVE9SRS4NCj4gDQo+ IEJvb3RzdHJhcCAmJiBSZWdyZXNzaW9uIG9uIFg4NiB3aXRoIG5vIHN1cnBy aXNlIGRpZmZlcmVuY2UuDQogDQpDYW4geW91IHBsZWFzZSBzcGxpdCB0aGUg cGF0Y2g/ICBIYXZlIDEvbiBhZGQgdGhlIG9wdGFiIGFuZCBpZm4NCnBsdXMg YWRqdXN0IHRoZSBnZW5lcmljIGlmbiBwcmVkaWNhdGVzLiAgSGF2ZSAyL24g YWRqdXN0IHRoZSB2ZWN0b3JpemVyDQpwYXJ0cyBhbmQgMy9uIG9wdGlvbmFs IHRoaW5ncyBzdWNoIGFzIERTRS4NCiANClNvbWUgY29tbWVudHMgYmVsb3cu DQogDQo+IGdjYy9DaGFuZ2VMb2c6DQo+IA0KPiAgICAgICAgICogZG9jL21k LnRleGk6IEFkZCBMRU5fTUFTS18gTE9BRC9TVE9SRS4NCj4gICAgICAgICAq IGdlbm9waW5pdC5jYyAobWFpbik6IERpdHRvLg0KPiAgICAgICAgIChDTVBf TkFNRSk6IERpdHRvLg0KPiAgICAgICAgICogZ2ltcGxlLWZvbGQuY2MgKGFy aXRoX292ZXJmbG93ZWRfcCk6IERpdHRvLg0KPiAgICAgICAgIChnaW1wbGVf Zm9sZF9wYXJ0aWFsX2xvYWRfc3RvcmVfbWVtX3JlZik6IERpdHRvLg0KPiAg ICAgICAgIChnaW1wbGVfZm9sZF9wYXJ0aWFsX3N0b3JlKTogRGl0dG8uDQo+ ICAgICAgICAgKGdpbXBsZV9mb2xkX2NhbGwpOiBEaXR0by4NCj4gICAgICAg ICAqIGludGVybmFsLWZuLmNjIChsZW5fbWFza2xvYWRfZGlyZWN0KTogRGl0 dG8uDQo+ICAgICAgICAgKGxlbl9tYXNrc3RvcmVfZGlyZWN0KTogRGl0dG8u DQo+ICAgICAgICAgKGV4cGFuZF9wYXJ0aWFsX2xvYWRfb3B0YWJfZm4pOiBE aXR0by4NCj4gICAgICAgICAoZXhwYW5kX2xlbl9tYXNrbG9hZF9vcHRhYl9m bik6IERpdHRvLg0KPiAgICAgICAgIChleHBhbmRfcGFydGlhbF9zdG9yZV9v cHRhYl9mbik6IERpdHRvLg0KPiAgICAgICAgIChleHBhbmRfbGVuX21hc2tz dG9yZV9vcHRhYl9mbik6IERpdHRvLg0KPiAgICAgICAgIChkaXJlY3RfbGVu X21hc2tsb2FkX29wdGFiX3N1cHBvcnRlZF9wKTogRGl0dG8uDQo+ICAgICAg ICAgKGRpcmVjdF9sZW5fbWFza3N0b3JlX29wdGFiX3N1cHBvcnRlZF9wKTog RGl0dG8uDQo+ICAgICAgICAgKGludGVybmFsX2xvYWRfZm5fcCk6IERpdHRv Lg0KPiAgICAgICAgIChpbnRlcm5hbF9zdG9yZV9mbl9wKTogRGl0dG8uDQo+ ICAgICAgICAgKGludGVybmFsX2ZuX21hc2tfaW5kZXgpOiBEaXR0by4NCj4g ICAgICAgICAoaW50ZXJuYWxfZm5fc3RvcmVkX3ZhbHVlX2luZGV4KTogRGl0 dG8uDQo+ICAgICAgICAgKiBpbnRlcm5hbC1mbi5kZWYgKExFTl9NQVNLX0xP QUQpOiBEaXR0by4NCj4gICAgICAgICAoTEVOX01BU0tfU1RPUkUpOiBEaXR0 by4NCj4gICAgICAgICAqIG9wdGFicy1xdWVyeS5jYyAoY2FuX3ZlY19sZW5f bWFza19sb2FkX3N0b3JlX3ApOiBEaXR0by4NCj4gICAgICAgICAqIG9wdGFi cy1xdWVyeS5oIChjYW5fdmVjX2xlbl9tYXNrX2xvYWRfc3RvcmVfcCk6IERp dHRvLg0KPiAgICAgICAgICogb3B0YWJzLmRlZiAoT1BUQUJfQ0QpOiBEaXR0 by4NCj4gICAgICAgICAqIHRyZWUtZGF0YS1yZWYuY2MgKGdldF9yZWZlcmVu Y2VzX2luX3N0bXQpOiBEaXR0by4NCj4gICAgICAgICAqIHRyZWUtaWYtY29u di5jYyAoaWZjdnRfY2FuX3VzZV9tYXNrX2xvYWRfc3RvcmUpOiBEaXR0by4N Cj4gICAgICAgICAqIHRyZWUtc3NhLWFsaWFzLmNjIChyZWZfbWF5YmVfdXNl ZF9ieV9jYWxsX3BfMSk6IERpdHRvLg0KPiAgICAgICAgIChjYWxsX21heV9j bG9iYmVyX3JlZl9wXzEpOiBEaXR0by4NCj4gICAgICAgICAqIHRyZWUtc3Nh LWRzZS5jYyAoaW5pdGlhbGl6ZV9hb19yZWZfZm9yX2RzZSk6IERpdHRvLg0K PiAgICAgICAgIChkc2Vfb3B0aW1pemVfc3RtdCk6IERpdHRvLg0KPiAgICAg ICAgICogdHJlZS1zc2EtbG9vcC1pdm9wdHMuY2MgKGdldF9tZW1fdHlwZV9m b3JfaW50ZXJuYWxfZm4pOiBEaXR0by4NCj4gICAgICAgICAoZ2V0X2FsaWFz X3B0cl90eXBlX2Zvcl9wdHJfYWRkcmVzcyk6IERpdHRvLg0KPiAgICAgICAg ICogdHJlZS1zc2Etc2Njdm4uY2MgKHZuX3JlZmVyZW5jZV9sb29rdXBfMyk6 IERpdHRvLg0KPiAgICAgICAgICogdHJlZS12ZWN0LWRhdGEtcmVmcy5jYyAo Y2FuX2dyb3VwX3N0bXRzX3ApOiBEaXR0by4NCj4gICAgICAgICAodmVjdF9m aW5kX3N0bXRfZGF0YV9yZWZlcmVuY2UpOiBEaXR0by4NCj4gICAgICAgICAo dmVjdF9zdXBwb3J0YWJsZV9kcl9hbGlnbm1lbnQpOiBEaXR0by4NCj4gICAg ICAgICAqIHRyZWUtdmVjdC1sb29wLmNjICh2ZWN0X3ZlcmlmeV9sb29wX2xl bnMpOiBEaXR0by4NCj4gICAgICAgICAob3B0aW1pemVfbWFza19zdG9yZXMp OiBEaXR0by4NCj4gICAgICAgICAqIHRyZWUtdmVjdC1zbHAuY2MgKHZlY3Rf Z2V0X29wZXJhbmRfbWFwKTogRGl0dG8uDQo+ICAgICAgICAgKHZlY3RfYnVp bGRfc2xwX3RyZWVfMik6IERpdHRvLg0KPiAgICAgICAgICogdHJlZS12ZWN0 LXN0bXRzLmNjIChjaGVja19sb2FkX3N0b3JlX2Zvcl9wYXJ0aWFsX3ZlY3Rv cnMpOiBEaXR0by4NCj4gICAgICAgICAodmVjdG9yaXphYmxlX3N0b3JlKTog RGl0dG8uDQo+ICAgICAgICAgKHZlY3Rvcml6YWJsZV9sb2FkKTogRGl0dG8u DQo+ICAgICAgICAgKHZlY3RfZ2V0X3ZlY3Rvcl90eXBlc19mb3Jfc3RtdCk6 IERpdHRvLg0KPiAgICAgICAgICogdHJlZS12ZWN0b3JpemVyLmNjICh0cnlf dmVjdG9yaXplX2xvb3BfMSk6IERpdHRvLg0KPiANCj4gLS0tDQo+ICBnY2Mv ZG9jL21kLnRleGkgICAgICAgICAgICAgfCAzMiArKysrKysrKysrKysNCj4g IGdjYy9nZW5vcGluaXQuY2MgICAgICAgICAgICB8ICA2ICsrLQ0KPiAgZ2Nj L2dpbXBsZS1mb2xkLmNjICAgICAgICAgIHwgMjggKysrKysrKystLS0NCj4g IGdjYy9pbnRlcm5hbC1mbi5jYyAgICAgICAgICB8IDM3ICsrKysrKysrKysr KystDQo+ICBnY2MvaW50ZXJuYWwtZm4uZGVmICAgICAgICAgfCAgNCArKw0K PiAgZ2NjL29wdGFicy1xdWVyeS5jYyAgICAgICAgIHwgMzkgKysrKysrKysr KysrKysrDQo+ICBnY2Mvb3B0YWJzLXF1ZXJ5LmggICAgICAgICAgfCAgMSAr DQo+ICBnY2Mvb3B0YWJzLmRlZiAgICAgICAgICAgICAgfCAgMiArDQo+ICBn Y2MvdHJlZS1kYXRhLXJlZi5jYyAgICAgICAgfCAgNCArKw0KPiAgZ2NjL3Ry ZWUtaWYtY29udi5jYyAgICAgICAgIHwgIDMgKysNCj4gIGdjYy90cmVlLXNz YS1hbGlhcy5jYyAgICAgICB8ICAzICsrDQo+ICBnY2MvdHJlZS1zc2EtZHNl LmNjICAgICAgICAgfCAxMiArKysrKw0KPiAgZ2NjL3RyZWUtc3NhLWxvb3At aXZvcHRzLmNjIHwgIDggKysrDQo+ICBnY2MvdHJlZS1zc2Etc2Njdm4uY2Mg ICAgICAgfCAgNiArKysNCj4gIGdjYy90cmVlLXZlY3QtZGF0YS1yZWZzLmNj ICB8IDIwICsrKysrLS0tDQo+ICBnY2MvdHJlZS12ZWN0LWxvb3AuY2MgICAg ICAgfCA1MiArKysrKysrKysrKy0tLS0tLS0tDQo+ICBnY2MvdHJlZS12ZWN0 LXNscC5jYyAgICAgICAgfCAgNSArKw0KPiAgZ2NjL3RyZWUtdmVjdC1zdG10 cy5jYyAgICAgIHwgOTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLQ0KPiAgZ2NjL3RyZWUtdmVjdG9yaXplci5jYyAgICAgIHwgIDIg Kw0KPiAgMTkgZmlsZXMgY2hhbmdlZCwgMzIwIGluc2VydGlvbnMoKyksIDQz IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2djYy9kb2MvbWQu dGV4aSBiL2djYy9kb2MvbWQudGV4aQ0KPiBpbmRleCA5NWY3ZmUxZjgwMi4u ZmM5OTk5MDQ2NWQgMTAwNjQ0DQo+IC0tLSBhL2djYy9kb2MvbWQudGV4aQ0K PiArKysgYi9nY2MvZG9jL21kLnRleGkNCj4gQEAgLTUxMzYsNiArNTEzNiwz OCBAQCBvZiBAY29kZXtRSX0gZWxlbWVudHMuDQo+ICANCj4gIFRoaXMgcGF0 dGVybiBpcyBub3QgYWxsb3dlZCB0byBAY29kZXtGQUlMfS4NCj4gIA0KPiAr QGNpbmRleCBAY29kZXtsZW5fbWFza2xvYWRAdmFye219QHZhcntufX0gaW5z dHJ1Y3Rpb24gcGF0dGVybg0KPiArQGl0ZW0gQHNhbXB7bGVuX21hc2tsb2Fk QHZhcnttfUB2YXJ7bn19DQo+ICtQZXJmb3JtIGEgbG9hZCBvZiB2ZWN0b3Ig d2hpY2ggaXMgcHJlZGljYXRlZCBieSBsZW5ndGggYW5kIG1hc2sNCj4gK2Zy b20gbWVtb3J5IG9wZXJhbmQgMSBvZiBtb2RlIEB2YXJ7bX0gaW50byByZWdp c3RlciBvcGVyYW5kIDAuDQo+ICtMZW5ndGggaXMgcHJvdmlkZWQgaW4gb3Bl cmFuZCAyIHdoaWNoIGhhcyB3aGljaGV2ZXINCj4gK2ludGVnZXIgbW9kZSB0 aGUgdGFyZ2V0IHByZWZlcnMuDQo+ICtNYXNrIGlzIHByb3ZpZGVkIGluIHJl Z2lzdGVyIG9wZXJhbmQgMyBvZiBtb2RlIEB2YXJ7bn0uDQo+ICsNCj4gK29w ZXJhbmQgMiBjYW4gYmUgYSB2YXJpYWJsZSBvciBhIGNvbnN0YW50IGFtb3Vu dC4gSXQgY2FuIGJlIHZlY3Rvcml6YXRpb24NCj4gK2ZhY3RvciB3aGljaCBp cyB0aGUgc3BlY2lhbCBjb25zdGFudCB2YWx1ZSByZXByZXNlbnRzIHRoZSBt YXhpbXVtIGxlbmd0aC4NCiANCkNhbiB5b3UgdHJ5IHVzaW5nIHRoZSBzYW1l IHdvcmRpbmcgZm9yIGxlbmd0aCBhbmQgbWFzayBvcGVyYW5kcw0KYXMgZm9y IGxlbl9sb2FkIGFuZCBtYXNrbG9hZD8gIEFsc28gbGVuX2xvYWQgaGFzIHRo ZSAiYmlhcyINCm9wZXJhbmQgd2hpY2ggeW91IG9taXQgaGVyZSAtIElJUkMg dGhhdCB3YXMgYWRkZWQgZm9yIHMzOTAgd2hpY2gNCmZvciB1bmtub3duIHJl YXNvbiBiZWhhdmVzIGEgbGl0dGxlIGRpZmZlcmVudCB0aGFuIHBvd2VyLiAg SWYNCmxlbiBzdXBwb3J0IGZvciBzMzkwIGV2ZXIgZXh0ZW5kcyB0byBvdGhl ciBvcHMgb3IgcG93ZXIgb3IgczM5MA0KZ2FpbiBtYXNrIHN1cHBvcnQgZm9y IGNvbmRpdGlvbmFsIGNvZGUgd2UnZCBsaWtlbHkgaGF2ZSB0byBhZGp1c3QN CmVhY2ggb3B0YWIgeW91IGFkZC4gIE1heWJlIGl0J3MgYmV0dGVyIHRvIGFk ZCB0aGUgYmlhcyBvcGVyYW5kDQpub3cuDQogDQpBbmRyZWFzPyAgVWxpPw0K IA0KPiArDQo+ICtvcGVyYW5kIDMgY2FuIGJlIGEgdmFyaWFibGUgb3IgYSBj b25zdGFudCBhbW91bnQuIEl0IGNhbiBiZSBhbGwgMQ0KPiArd2hpY2ggaXMg dGhlIHNwZWNpYWwgY29uc3RhbnQgdmFsdWUgcmVwcmVzZW50cyB0aGUgZnVs bCBtYXNrLg0KPiArDQo+ICtUaGlzIHBhdHRlcm4gaXMgbm90IGFsbG93ZWQg dG8gQGNvZGV7RkFJTH0uDQo+ICsNCj4gK0BjaW5kZXggQGNvZGV7bGVuX21h c2tzdG9yZUB2YXJ7bX1AdmFye259fSBpbnN0cnVjdGlvbiBwYXR0ZXJuDQo+ ICtAaXRlbSBAc2FtcHtsZW5fbWFza3N0b3JlQHZhcnttfUB2YXJ7bn19DQo+ ICtQZXJmb3JtIGEgc3RvcmUgb2YgdmVjdG9yIHdoaWNoIGlzIHByZWRpY2F0 ZWQgYnkgbGVuZ3RoIGFuZCBtYXNrDQo+ICtmcm9tIHJlZ2lzdGVyIG9wZXJh bmQgMSBvZiBtb2RlIEB2YXJ7bX0gaW50byBtZW1vcnkgb3BlcmFuZCAwLg0K PiArTGVuZ3RoIGlzIHByb3ZpZGVkIGluIG9wZXJhbmQgMiB3aGljaCBoYXMg d2hpY2hldmVyDQo+ICtpbnRlZ2VyIG1vZGUgdGhlIHRhcmdldCBwcmVmZXJz Lg0KPiArTWFzayBpcyBwcm92aWRlZCBpbiByZWdpc3RlciBvcGVyYW5kIDMg b2YgbW9kZSBAdmFye259Lg0KPiArDQo+ICtvcGVyYW5kIDIgY2FuIGJlIGEg dmFyaWFibGUgb3IgYSBjb25zdGFudCBhbW91bnQuIEl0IGNhbiBiZSB2ZWN0 b3JpemF0aW9uDQo+ICtmYWN0b3Igd2hpY2ggaXMgdGhlIHNwZWNpYWwgY29u c3RhbnQgdmFsdWUgcmVwcmVzZW50cyB0aGUgbWF4aW11bSBsZW5ndGguDQo+ ICsNCj4gK29wZXJhbmQgMyBjYW4gYmUgYSB2YXJpYWJsZSBvciBhIGNvbnN0 YW50IGFtb3VudC4gSXQgY2FuIGJlIGFsbCAxDQo+ICt3aGljaCBpcyB0aGUg c3BlY2lhbCBjb25zdGFudCB2YWx1ZSByZXByZXNlbnRzIHRoZSBmdWxsIG1h c2suDQo+ICsNCj4gK1RoaXMgcGF0dGVybiBpcyBub3QgYWxsb3dlZCB0byBA Y29kZXtGQUlMfS4NCj4gKw0KPiAgQGNpbmRleCBAY29kZXt2ZWNfcGVybUB2 YXJ7bX19IGluc3RydWN0aW9uIHBhdHRlcm4NCj4gIEBpdGVtIEBzYW1we3Zl Y19wZXJtQHZhcnttfX0NCj4gIE91dHB1dCBhICh2YXJpYWJsZSkgdmVjdG9y IHBlcm11dGF0aW9uLiAgT3BlcmFuZCAwIGlzIHRoZSBkZXN0aW5hdGlvbg0K PiBkaWZmIC0tZ2l0IGEvZ2NjL2dlbm9waW5pdC5jYyBiL2djYy9nZW5vcGlu aXQuY2MNCj4gaW5kZXggMGMxYjY4NTljYTAuLjlhZWViZDY2NzI0IDEwMDY0 NA0KPiAtLS0gYS9nY2MvZ2Vub3Bpbml0LmNjDQo+ICsrKyBiL2djYy9nZW5v cGluaXQuY2MNCj4gQEAgLTM3Niw3ICszNzYsOCBAQCBtYWluIChpbnQgYXJn YywgY29uc3QgY2hhciAqKmFyZ3YpDQo+ICANCj4gICAgZnByaW50ZiAoc19m aWxlLA0KPiAgICAgIi8qIFJldHVybnMgVFJVRSBpZiB0aGUgdGFyZ2V0IHN1 cHBvcnRzIGFueSBvZiB0aGUgcGFydGlhbCB2ZWN0b3JcbiINCj4gLSAgICAi ICAgb3B0YWJzOiB3aGlsZV91bHRfb3B0YWIsIGxlbl9sb2FkX29wdGFiIG9y IGxlbl9zdG9yZV9vcHRhYixcbiINCj4gKyAgICAiICAgb3B0YWJzOiB3aGls ZV91bHRfb3B0YWIsIGxlbl9sb2FkX29wdGFiLCBsZW5fc3RvcmVfb3B0YWIs XG4iDQo+ICsgICAgIiAgIGxlbl9tYXNrbG9hZF9vcHRhYiBvciBsZW5fbWFz a3N0b3JlX29wdGFiLFxuIg0KPiAgICAgIiAgIGZvciBhbnkgbW9kZS4gICov XG4iDQo+ICAgICAiYm9vbFxucGFydGlhbF92ZWN0b3JzX3N1cHBvcnRlZF9w ICh2b2lkKVxue1xuIik7DQo+ICAgIGJvb2wgYW55X21hdGNoID0gZmFsc2U7 DQo+IEBAIC0zODYsNyArMzg3LDggQEAgbWFpbiAoaW50IGFyZ2MsIGNvbnN0 IGNoYXIgKiphcmd2KQ0KPiAgICAgIHsNCj4gICNkZWZpbmUgQ01QX05BTUUo TikgIXN0cm5jbXAgKHAtPm5hbWUsIChOKSwgc3RybGVuICgoTikpKQ0KPiAg ICAgICAgaWYgKENNUF9OQU1FKCJ3aGlsZV91bHQiKSB8fCBDTVBfTkFNRSAo Imxlbl9sb2FkIikNCj4gLSAgIHx8IENNUF9OQU1FICgibGVuX3N0b3JlIikp DQo+ICsgICB8fCBDTVBfTkFNRSAoImxlbl9zdG9yZSIpIHx8IENNUF9OQU1F ICgibGVuX21hc2tsb2FkIikNCj4gKyAgIHx8IENNUF9OQU1FICgibGVuX21h c2tzdG9yZSIpKQ0KPiAgew0KPiAgICBpZiAoZmlyc3QpDQo+ICAgICAgZnBy aW50ZiAoc19maWxlLCAiIEhBVkVfJXMiLCBwLT5uYW1lKTsNCj4gZGlmZiAt LWdpdCBhL2djYy9naW1wbGUtZm9sZC5jYyBiL2djYy9naW1wbGUtZm9sZC5j Yw0KPiBpbmRleCA1ODE1NzViNjVlYy4uYTJjMmFkNWJmZTcgMTAwNjQ0DQo+ IC0tLSBhL2djYy9naW1wbGUtZm9sZC5jYw0KPiArKysgYi9nY2MvZ2ltcGxl LWZvbGQuY2MNCj4gQEAgLTUzNzAsOCArNTM3MCw4IEBAIGFyaXRoX292ZXJm bG93ZWRfcCAoZW51bSB0cmVlX2NvZGUgY29kZSwgY29uc3RfdHJlZSB0eXBl LA0KPiAgICByZXR1cm4gd2k6Om1pbl9wcmVjaXNpb24gKHdyZXMsIHNpZ24p ID4gVFlQRV9QUkVDSVNJT04gKHR5cGUpOw0KPiAgfQ0KPiAgDQo+IC0vKiBJ ZiBJRk5fe01BU0ssTEVOfV9MT0FEL1NUT1JFIGNhbGwgQ0FMTCBpcyB1bmNv bmRpdGlvbmFsLCByZXR1cm4gYSBNRU1fUkVGDQo+IC0gICBmb3IgdGhlIG1l bW9yeSBpdCByZWZlcmVuY2VzLCBvdGhlcndpc2UgcmV0dXJuIG51bGwuICBW RUNUWVBFIGlzIHRoZQ0KPiArLyogSWYgSUZOX3tNQVNLLExFTixMRU5fTUFT S31fTE9BRC9TVE9SRSBjYWxsIENBTEwgaXMgdW5jb25kaXRpb25hbCwgcmV0 dXJuIGENCj4gKyAgIE1FTV9SRUYgZm9yIHRoZSBtZW1vcnkgaXQgcmVmZXJl bmNlcywgb3RoZXJ3aXNlIHJldHVybiBudWxsLiAgVkVDVFlQRSBpcyB0aGUN Cj4gICAgIHR5cGUgb2YgdGhlIG1lbW9yeSB2ZWN0b3IuICBNQVNLX1AgaW5k aWNhdGVzIGl0J3MgZm9yIE1BU0sgaWYgdHJ1ZSwNCj4gICAgIG90aGVyd2lz ZSBpdCdzIGZvciBMRU4uICAqLw0KPiAgDQo+IEBAIC01MzgzLDcgKzUzODMs MjAgQEAgZ2ltcGxlX2ZvbGRfcGFydGlhbF9sb2FkX3N0b3JlX21lbV9yZWYg KGdjYWxsICpjYWxsLCB0cmVlIHZlY3R5cGUsIGJvb2wgbWFza19wKQ0KPiAg ICBpZiAoIXRyZWVfZml0c191aHdpX3AgKGFsaWFzX2FsaWduKSkNCj4gICAg ICByZXR1cm4gTlVMTF9UUkVFOw0KPiAgDQo+IC0gIGlmIChtYXNrX3ApDQo+ ICsgIGlmIChnaW1wbGVfY2FsbF9pbnRlcm5hbF9mbiAoY2FsbCkgPT0gSUZO X0xFTl9NQVNLX0xPQUQNCj4gKyAgICAgIHx8IGdpbXBsZV9jYWxsX2ludGVy bmFsX2ZuIChjYWxsKSA9PSBJRk5fTEVOX01BU0tfU1RPUkUpDQo+ICsgICAg ew0KIA0KQ2FuIHlvdSBpbnN0ZWFkIGFkZCBhIGxlbl9wIGFyZ3VtZW50IHRv IHRoZSBmdW5jdGlvbiBhbmQgZG8NCiANCiAgICBpZiAobGVuX3ApDQogICAg ICBjaGVjayBsZW4gaXMgZnVsbA0KICAgIGlmIChtYXNrX3ApDQogICAgICBj aGVjayBtYXNrIGlzIGZ1bGwNCiANCj8NCiANCj4gKyAgICAgIHRyZWUgYmFz aWNfbGVuID0gZ2ltcGxlX2NhbGxfYXJnIChjYWxsLCAyKTsNCj4gKyAgICAg IGlmICghcG9seV9pbnRfdHJlZV9wIChiYXNpY19sZW4pKQ0KPiArIHJldHVy biBOVUxMX1RSRUU7DQo+ICsgICAgICBpZiAobWF5YmVfbmUgKHRyZWVfdG9f cG9seV91aW50NjQgKGJhc2ljX2xlbiksDQo+ICsgICAgIFRZUEVfVkVDVE9S X1NVQlBBUlRTICh2ZWN0eXBlKSkpDQo+ICsgcmV0dXJuIE5VTExfVFJFRTsN Cj4gKyAgICAgIHRyZWUgbWFzayA9IGdpbXBsZV9jYWxsX2FyZyAoY2FsbCwg Myk7DQo+ICsgICAgICBpZiAoIWludGVnZXJfYWxsX29uZXNwIChtYXNrKSkN Cj4gKyByZXR1cm4gTlVMTF9UUkVFOw0KPiArICAgIH0NCj4gKyAgZWxzZSBp ZiAobWFza19wKQ0KPiAgICAgIHsNCj4gICAgICAgIHRyZWUgbWFzayA9IGdp bXBsZV9jYWxsX2FyZyAoY2FsbCwgMik7DQo+ICAgICAgICBpZiAoIWludGVn ZXJfYWxsX29uZXNwIChtYXNrKSkNCj4gQEAgLTU0MDksNyArNTQyMiw3IEBA IGdpbXBsZV9mb2xkX3BhcnRpYWxfbG9hZF9zdG9yZV9tZW1fcmVmIChnY2Fs bCAqY2FsbCwgdHJlZSB2ZWN0eXBlLCBib29sIG1hc2tfcCkNCj4gICAgcmV0 dXJuIGZvbGRfYnVpbGQyIChNRU1fUkVGLCB2ZWN0eXBlLCBwdHIsIG9mZnNl dCk7DQo+ICB9DQo+ICANCj4gLS8qIFRyeSB0byBmb2xkIElGTl97TUFTSyxM RU59X0xPQUQgY2FsbCBDQUxMLiAgUmV0dXJuIHRydWUgb24gc3VjY2Vzcy4N Cj4gKy8qIFRyeSB0byBmb2xkIElGTl97TUFTSyxMRU4sTEVOX01BU0t9X0xP QUQgY2FsbCBDQUxMLiAgUmV0dXJuIHRydWUgb24gc3VjY2Vzcy4NCj4gICAg IE1BU0tfUCBpbmRpY2F0ZXMgaXQncyBmb3IgTUFTSyBpZiB0cnVlLCBvdGhl cndpc2UgaXQncyBmb3IgTEVOLiAgKi8NCj4gIA0KPiAgc3RhdGljIGJvb2wN Cj4gQEAgLTU0MzEsMTQgKzU0NDQsMTUgQEAgZ2ltcGxlX2ZvbGRfcGFydGlh bF9sb2FkIChnaW1wbGVfc3RtdF9pdGVyYXRvciAqZ3NpLCBnY2FsbCAqY2Fs bCwgYm9vbCBtYXNrX3ApDQo+ICAgIHJldHVybiBmYWxzZTsNCj4gIH0NCj4g IA0KPiAtLyogVHJ5IHRvIGZvbGQgSUZOX3tNQVNLLExFTn1fU1RPUkUgY2Fs bCBDQUxMLiAgUmV0dXJuIHRydWUgb24gc3VjY2Vzcy4NCj4gKy8qIFRyeSB0 byBmb2xkIElGTl97TUFTSyxMRU4sTEVOX01BU0t9X1NUT1JFIGNhbGwgQ0FM TC4gIFJldHVybiB0cnVlIG9uIHN1Y2Nlc3MuDQo+ICAgICBNQVNLX1AgaW5k aWNhdGVzIGl0J3MgZm9yIE1BU0sgaWYgdHJ1ZSwgb3RoZXJ3aXNlIGl0J3Mg Zm9yIExFTi4gICovDQo+ICANCj4gIHN0YXRpYyBib29sDQo+ICBnaW1wbGVf Zm9sZF9wYXJ0aWFsX3N0b3JlIChnaW1wbGVfc3RtdF9pdGVyYXRvciAqZ3Np LCBnY2FsbCAqY2FsbCwNCj4gICAgIGJvb2wgbWFza19wKQ0KPiAgew0KPiAt ICB0cmVlIHJocyA9IGdpbXBsZV9jYWxsX2FyZyAoY2FsbCwgMyk7DQo+ICsg IHRyZWUgcmhzID0gZ2ltcGxlX2NhbGxfYXJnICgNCj4gKyAgICBjYWxsLCBn aW1wbGVfY2FsbF9pbnRlcm5hbF9mbiAoY2FsbCkgPT0gSUZOX0xFTl9NQVNL X1NUT1JFID8gNCA6IDMpOw0KIA0KVXNlIGludGVybmFsX2ZuX3N0b3JlZF92 YWx1ZV9pbmRleCBhbmQgaW50ZXJuYWxfZm5fbWFza19pbmRleCwNCnBvc3Np Ymx5IGFkZCBpbnRlcm5hbF9mbl9sZW5faW5kZXg/DQogDQo+ICAgIGlmICh0 cmVlIGxocw0KPiAgICAgICAgPSBnaW1wbGVfZm9sZF9wYXJ0aWFsX2xvYWRf c3RvcmVfbWVtX3JlZiAoY2FsbCwgVFJFRV9UWVBFIChyaHMpLCBtYXNrX3Ap KQ0KPiAgICAgIHsNCj4gQEAgLTU2NTksOSArNTY3MywxMSBAQCBnaW1wbGVf Zm9sZF9jYWxsIChnaW1wbGVfc3RtdF9pdGVyYXRvciAqZ3NpLCBib29sIGlu cGxhY2UpDQo+ICAgIGNwbHhfcmVzdWx0ID0gdHJ1ZTsNCj4gICAgYnJlYWs7 DQo+ICBjYXNlIElGTl9NQVNLX0xPQUQ6DQo+ICsgY2FzZSBJRk5fTEVOX01B U0tfTE9BRDoNCj4gICAgY2hhbmdlZCB8PSBnaW1wbGVfZm9sZF9wYXJ0aWFs X2xvYWQgKGdzaSwgc3RtdCwgdHJ1ZSk7DQo+ICAgIGJyZWFrOw0KPiAgY2Fz ZSBJRk5fTUFTS19TVE9SRToNCj4gKyBjYXNlIElGTl9MRU5fTUFTS19TVE9S RToNCj4gICAgY2hhbmdlZCB8PSBnaW1wbGVfZm9sZF9wYXJ0aWFsX3N0b3Jl IChnc2ksIHN0bXQsIHRydWUpOw0KPiAgICBicmVhazsNCj4gIGNhc2UgSUZO X0xFTl9MT0FEOg0KPiBkaWZmIC0tZ2l0IGEvZ2NjL2ludGVybmFsLWZuLmNj IGIvZ2NjL2ludGVybmFsLWZuLmNjDQo+IGluZGV4IGRhOWI5NDRkZDVkLi40 YTlmZTM4OGVlZCAxMDA2NDQNCj4gLS0tIGEvZ2NjL2ludGVybmFsLWZuLmNj DQo+ICsrKyBiL2djYy9pbnRlcm5hbC1mbi5jYw0KPiBAQCAtMTY1LDYgKzE2 NSw3IEBAIGluaXRfaW50ZXJuYWxfZm5zICgpDQo+ICAjZGVmaW5lIG1hc2tf bG9hZF9sYW5lc19kaXJlY3QgeyAtMSwgLTEsIGZhbHNlIH0NCj4gICNkZWZp bmUgZ2F0aGVyX2xvYWRfZGlyZWN0IHsgMywgMSwgZmFsc2UgfQ0KPiAgI2Rl ZmluZSBsZW5fbG9hZF9kaXJlY3QgeyAtMSwgLTEsIGZhbHNlIH0NCj4gKyNk ZWZpbmUgbGVuX21hc2tsb2FkX2RpcmVjdCB7IC0xLCAzLCBmYWxzZSB9DQo+ ICAjZGVmaW5lIG1hc2tfc3RvcmVfZGlyZWN0IHsgMywgMiwgZmFsc2UgfQ0K PiAgI2RlZmluZSBzdG9yZV9sYW5lc19kaXJlY3QgeyAwLCAwLCBmYWxzZSB9 DQo+ICAjZGVmaW5lIG1hc2tfc3RvcmVfbGFuZXNfZGlyZWN0IHsgMCwgMCwg ZmFsc2UgfQ0KPiBAQCAtMTcyLDYgKzE3Myw3IEBAIGluaXRfaW50ZXJuYWxf Zm5zICgpDQo+ICAjZGVmaW5lIHZlY19jb25kX2RpcmVjdCB7IDIsIDAsIGZh bHNlIH0NCj4gICNkZWZpbmUgc2NhdHRlcl9zdG9yZV9kaXJlY3QgeyAzLCAx LCBmYWxzZSB9DQo+ICAjZGVmaW5lIGxlbl9zdG9yZV9kaXJlY3QgeyAzLCAz LCBmYWxzZSB9DQo+ICsjZGVmaW5lIGxlbl9tYXNrc3RvcmVfZGlyZWN0IHsg NCwgMywgZmFsc2UgfQ0KPiAgI2RlZmluZSB2ZWNfc2V0X2RpcmVjdCB7IDMs IDMsIGZhbHNlIH0NCj4gICNkZWZpbmUgdW5hcnlfZGlyZWN0IHsgMCwgMCwg dHJ1ZSB9DQo+ICAjZGVmaW5lIHVuYXJ5X2NvbnZlcnRfZGlyZWN0IHsgLTEs IDAsIHRydWUgfQ0KPiBAQCAtMjg3NSw2ICsyODc3LDE3IEBAIGV4cGFuZF9w YXJ0aWFsX2xvYWRfb3B0YWJfZm4gKGludGVybmFsX2ZuLCBnY2FsbCAqc3Rt dCwgY29udmVydF9vcHRhYiBvcHRhYikNCj4gICAgICAgIGNyZWF0ZV9pbnB1 dF9vcGVyYW5kICgmb3BzWzNdLCBiaWFzLCBRSW1vZGUpOw0KPiAgICAgICAg ZXhwYW5kX2luc24gKGljb2RlLCA0LCBvcHMpOw0KPiAgICAgIH0NCj4gKyAg ZWxzZSBpZiAob3B0YWIgPT0gbGVuX21hc2tsb2FkX29wdGFiKQ0KPiArICAg IHsNCj4gKyAgICAgIGNyZWF0ZV9jb252ZXJ0X29wZXJhbmRfZnJvbSAoJm9w c1syXSwgbWFzaywgVFlQRV9NT0RFIChUUkVFX1RZUEUgKG1hc2t0KSksDQo+ ICsgICAgVFlQRV9VTlNJR05FRCAoVFJFRV9UWVBFIChtYXNrdCkpKTsNCj4g KyAgICAgIG1hc2t0ID0gZ2ltcGxlX2NhbGxfYXJnIChzdG10LCAzKTsNCj4g KyAgICAgIG1hc2sgPSBleHBhbmRfbm9ybWFsIChtYXNrdCk7DQo+ICsgICAg ICBjcmVhdGVfaW5wdXRfb3BlcmFuZCAoJm9wc1szXSwgbWFzaywgVFlQRV9N T0RFIChUUkVFX1RZUEUgKG1hc2t0KSkpOw0KPiArICAgICAgaWNvZGUgPSBj b252ZXJ0X29wdGFiX2hhbmRsZXIgKG9wdGFiLCBUWVBFX01PREUgKHR5cGUp LA0KPiArICAgICAgVFlQRV9NT0RFIChUUkVFX1RZUEUgKG1hc2t0KSkpOw0K PiArICAgICAgZXhwYW5kX2luc24gKGljb2RlLCA0LCBvcHMpOw0KPiArICAg IH0NCj4gICAgZWxzZQ0KPiAgICAgIHsNCj4gICAgICAgIGNyZWF0ZV9pbnB1 dF9vcGVyYW5kICgmb3BzWzJdLCBtYXNrLCBUWVBFX01PREUgKFRSRUVfVFlQ RSAobWFza3QpKSk7DQo+IEBAIC0yODg4LDYgKzI5MDEsNyBAQCBleHBhbmRf cGFydGlhbF9sb2FkX29wdGFiX2ZuIChpbnRlcm5hbF9mbiwgZ2NhbGwgKnN0 bXQsIGNvbnZlcnRfb3B0YWIgb3B0YWIpDQo+ICAjZGVmaW5lIGV4cGFuZF9t YXNrX2xvYWRfb3B0YWJfZm4gZXhwYW5kX3BhcnRpYWxfbG9hZF9vcHRhYl9m bg0KPiAgI2RlZmluZSBleHBhbmRfbWFza19sb2FkX2xhbmVzX29wdGFiX2Zu IGV4cGFuZF9tYXNrX2xvYWRfb3B0YWJfZm4NCj4gICNkZWZpbmUgZXhwYW5k X2xlbl9sb2FkX29wdGFiX2ZuIGV4cGFuZF9wYXJ0aWFsX2xvYWRfb3B0YWJf Zm4NCj4gKyNkZWZpbmUgZXhwYW5kX2xlbl9tYXNrbG9hZF9vcHRhYl9mbiBl eHBhbmRfcGFydGlhbF9sb2FkX29wdGFiX2ZuDQo+ICANCj4gIC8qIEV4cGFu ZCBNQVNLX1NUT1JFeyxfTEFORVN9IG9yIExFTl9TVE9SRSBjYWxsIFNUTVQg dXNpbmcgb3B0YWIgT1BUQUIuICAqLw0KPiAgDQo+IEBAIC0yOTAwLDcgKzI5 MTQsNyBAQCBleHBhbmRfcGFydGlhbF9zdG9yZV9vcHRhYl9mbiAoaW50ZXJu YWxfZm4sIGdjYWxsICpzdG10LCBjb252ZXJ0X29wdGFiIG9wdGFiKQ0KPiAg ICBpbnNuX2NvZGUgaWNvZGU7DQo+ICANCj4gICAgbWFza3QgPSBnaW1wbGVf Y2FsbF9hcmcgKHN0bXQsIDIpOw0KPiAtICByaHMgPSBnaW1wbGVfY2FsbF9h cmcgKHN0bXQsIDMpOw0KPiArICByaHMgPSBnaW1wbGVfY2FsbF9hcmcgKHN0 bXQsIG9wdGFiID09IGxlbl9tYXNrc3RvcmVfb3B0YWIgPyA0IDogMyk7DQog DQpzZWUgYWJvdmUNCiANCj4gICAgdHlwZSA9IFRSRUVfVFlQRSAocmhzKTsN Cj4gICAgbGhzID0gZXhwYW5kX2NhbGxfbWVtX3JlZiAodHlwZSwgc3RtdCwg MCk7DQo+ICANCj4gQEAgLTI5MjcsNiArMjk0MSwxNiBAQCBleHBhbmRfcGFy dGlhbF9zdG9yZV9vcHRhYl9mbiAoaW50ZXJuYWxfZm4sIGdjYWxsICpzdG10 LCBjb252ZXJ0X29wdGFiIG9wdGFiKQ0KPiAgICAgICAgY3JlYXRlX2lucHV0 X29wZXJhbmQgKCZvcHNbM10sIGJpYXMsIFFJbW9kZSk7DQo+ICAgICAgICBl eHBhbmRfaW5zbiAoaWNvZGUsIDQsIG9wcyk7DQo+ICAgICAgfQ0KPiArICBl bHNlIGlmIChvcHRhYiA9PSBsZW5fbWFza3N0b3JlX29wdGFiKQ0KPiArICAg IHsNCj4gKyAgICAgIGNyZWF0ZV9jb252ZXJ0X29wZXJhbmRfZnJvbSAoJm9w c1syXSwgbWFzaywgVFlQRV9NT0RFIChUUkVFX1RZUEUgKG1hc2t0KSksDQo+ ICsgICAgVFlQRV9VTlNJR05FRCAoVFJFRV9UWVBFIChtYXNrdCkpKTsNCj4g KyAgICAgIG1hc2t0ID0gZ2ltcGxlX2NhbGxfYXJnIChzdG10LCAzKTsNCj4g KyAgICAgIG1hc2sgPSBleHBhbmRfbm9ybWFsIChtYXNrdCk7DQo+ICsgICAg ICBjcmVhdGVfaW5wdXRfb3BlcmFuZCAoJm9wc1szXSwgbWFzaywgVFlQRV9N T0RFIChUUkVFX1RZUEUgKG1hc2t0KSkpOw0KPiArICAgICAgaWNvZGUgPSBj b252ZXJ0X29wdGFiX2hhbmRsZXIgKG9wdGFiLCBUWVBFX01PREUgKHR5cGUp LCBHRVRfTU9ERSAobWFzaykpOw0KPiArICAgICAgZXhwYW5kX2luc24gKGlj b2RlLCA0LCBvcHMpOw0KPiArICAgIH0NCj4gICAgZWxzZQ0KPiAgICAgIHsN Cj4gICAgICAgIGNyZWF0ZV9pbnB1dF9vcGVyYW5kICgmb3BzWzJdLCBtYXNr LCBUWVBFX01PREUgKFRSRUVfVFlQRSAobWFza3QpKSk7DQo+IEBAIC0yOTM3 LDYgKzI5NjEsNyBAQCBleHBhbmRfcGFydGlhbF9zdG9yZV9vcHRhYl9mbiAo aW50ZXJuYWxfZm4sIGdjYWxsICpzdG10LCBjb252ZXJ0X29wdGFiIG9wdGFi KQ0KPiAgI2RlZmluZSBleHBhbmRfbWFza19zdG9yZV9vcHRhYl9mbiBleHBh bmRfcGFydGlhbF9zdG9yZV9vcHRhYl9mbg0KPiAgI2RlZmluZSBleHBhbmRf bWFza19zdG9yZV9sYW5lc19vcHRhYl9mbiBleHBhbmRfbWFza19zdG9yZV9v cHRhYl9mbg0KPiAgI2RlZmluZSBleHBhbmRfbGVuX3N0b3JlX29wdGFiX2Zu IGV4cGFuZF9wYXJ0aWFsX3N0b3JlX29wdGFiX2ZuDQo+ICsjZGVmaW5lIGV4 cGFuZF9sZW5fbWFza3N0b3JlX29wdGFiX2ZuIGV4cGFuZF9wYXJ0aWFsX3N0 b3JlX29wdGFiX2ZuDQo+ICANCj4gIC8qIEV4cGFuZCBWQ09ORCwgVkNPTkRV IGFuZCBWQ09OREVRIG9wdGFiIGludGVybmFsIGZ1bmN0aW9ucy4NCj4gICAg IFRoZSBleHBhbnNpb24gb2YgU1RNVCBoYXBwZW5zIGJhc2VkIG9uIE9QVEFC IHRhYmxlIGFzc29jaWF0ZWQuICAqLw0KPiBAQCAtMzg5MCw2ICszOTE1LDcg QEAgbXVsdGlfdmVjdG9yX29wdGFiX3N1cHBvcnRlZF9wIChjb252ZXJ0X29w dGFiIG9wdGFiLCB0cmVlX3BhaXIgdHlwZXMsDQo+ICAjZGVmaW5lIGRpcmVj dF9tYXNrX2xvYWRfbGFuZXNfb3B0YWJfc3VwcG9ydGVkX3AgbXVsdGlfdmVj dG9yX29wdGFiX3N1cHBvcnRlZF9wDQo+ICAjZGVmaW5lIGRpcmVjdF9nYXRo ZXJfbG9hZF9vcHRhYl9zdXBwb3J0ZWRfcCBjb252ZXJ0X29wdGFiX3N1cHBv cnRlZF9wDQo+ICAjZGVmaW5lIGRpcmVjdF9sZW5fbG9hZF9vcHRhYl9zdXBw b3J0ZWRfcCBkaXJlY3Rfb3B0YWJfc3VwcG9ydGVkX3ANCj4gKyNkZWZpbmUg ZGlyZWN0X2xlbl9tYXNrbG9hZF9vcHRhYl9zdXBwb3J0ZWRfcCBjb252ZXJ0 X29wdGFiX3N1cHBvcnRlZF9wDQo+ICAjZGVmaW5lIGRpcmVjdF9tYXNrX3N0 b3JlX29wdGFiX3N1cHBvcnRlZF9wIGNvbnZlcnRfb3B0YWJfc3VwcG9ydGVk X3ANCj4gICNkZWZpbmUgZGlyZWN0X3N0b3JlX2xhbmVzX29wdGFiX3N1cHBv cnRlZF9wIG11bHRpX3ZlY3Rvcl9vcHRhYl9zdXBwb3J0ZWRfcA0KPiAgI2Rl ZmluZSBkaXJlY3RfbWFza19zdG9yZV9sYW5lc19vcHRhYl9zdXBwb3J0ZWRf cCBtdWx0aV92ZWN0b3Jfb3B0YWJfc3VwcG9ydGVkX3ANCj4gQEAgLTM4OTcs NiArMzkyMyw3IEBAIG11bHRpX3ZlY3Rvcl9vcHRhYl9zdXBwb3J0ZWRfcCAo Y29udmVydF9vcHRhYiBvcHRhYiwgdHJlZV9wYWlyIHR5cGVzLA0KPiAgI2Rl ZmluZSBkaXJlY3RfdmVjX2NvbmRfb3B0YWJfc3VwcG9ydGVkX3AgY29udmVy dF9vcHRhYl9zdXBwb3J0ZWRfcA0KPiAgI2RlZmluZSBkaXJlY3Rfc2NhdHRl cl9zdG9yZV9vcHRhYl9zdXBwb3J0ZWRfcCBjb252ZXJ0X29wdGFiX3N1cHBv cnRlZF9wDQo+ICAjZGVmaW5lIGRpcmVjdF9sZW5fc3RvcmVfb3B0YWJfc3Vw cG9ydGVkX3AgZGlyZWN0X29wdGFiX3N1cHBvcnRlZF9wDQo+ICsjZGVmaW5l IGRpcmVjdF9sZW5fbWFza3N0b3JlX29wdGFiX3N1cHBvcnRlZF9wIGNvbnZl cnRfb3B0YWJfc3VwcG9ydGVkX3ANCj4gICNkZWZpbmUgZGlyZWN0X3doaWxl X29wdGFiX3N1cHBvcnRlZF9wIGNvbnZlcnRfb3B0YWJfc3VwcG9ydGVkX3AN Cj4gICNkZWZpbmUgZGlyZWN0X2ZvbGRfZXh0cmFjdF9vcHRhYl9zdXBwb3J0 ZWRfcCBkaXJlY3Rfb3B0YWJfc3VwcG9ydGVkX3ANCj4gICNkZWZpbmUgZGly ZWN0X2ZvbGRfbGVmdF9vcHRhYl9zdXBwb3J0ZWRfcCBkaXJlY3Rfb3B0YWJf c3VwcG9ydGVkX3ANCj4gQEAgLTQzNjEsNiArNDM4OCw3IEBAIGludGVybmFs X2xvYWRfZm5fcCAoaW50ZXJuYWxfZm4gZm4pDQo+ICAgICAgY2FzZSBJRk5f R0FUSEVSX0xPQUQ6DQo+ICAgICAgY2FzZSBJRk5fTUFTS19HQVRIRVJfTE9B RDoNCj4gICAgICBjYXNlIElGTl9MRU5fTE9BRDoNCj4gKyAgICBjYXNlIElG Tl9MRU5fTUFTS19MT0FEOg0KPiAgICAgICAgcmV0dXJuIHRydWU7DQo+ICAN Cj4gICAgICBkZWZhdWx0Og0KPiBAQCAtNDM4MSw2ICs0NDA5LDcgQEAgaW50 ZXJuYWxfc3RvcmVfZm5fcCAoaW50ZXJuYWxfZm4gZm4pDQo+ICAgICAgY2Fz ZSBJRk5fU0NBVFRFUl9TVE9SRToNCj4gICAgICBjYXNlIElGTl9NQVNLX1ND QVRURVJfU1RPUkU6DQo+ICAgICAgY2FzZSBJRk5fTEVOX1NUT1JFOg0KPiAr ICAgIGNhc2UgSUZOX0xFTl9NQVNLX1NUT1JFOg0KPiAgICAgICAgcmV0dXJu IHRydWU7DQo+ICANCj4gICAgICBkZWZhdWx0Og0KPiBAQCAtNDQyMCw2ICs0 NDQ5LDEwIEBAIGludGVybmFsX2ZuX21hc2tfaW5kZXggKGludGVybmFsX2Zu IGZuKQ0KPiAgICAgIGNhc2UgSUZOX01BU0tfU1RPUkVfTEFORVM6DQo+ICAg ICAgICByZXR1cm4gMjsNCj4gIA0KPiArICAgIGNhc2UgSUZOX0xFTl9NQVNL X0xPQUQ6DQo+ICsgICAgY2FzZSBJRk5fTEVOX01BU0tfU1RPUkU6DQo+ICsg ICAgICByZXR1cm4gMzsNCj4gKw0KPiAgICAgIGNhc2UgSUZOX01BU0tfR0FU SEVSX0xPQUQ6DQo+ICAgICAgY2FzZSBJRk5fTUFTS19TQ0FUVEVSX1NUT1JF Og0KPiAgICAgICAgcmV0dXJuIDQ7DQo+IEBAIC00NDQ0LDYgKzQ0NzcsOCBA QCBpbnRlcm5hbF9mbl9zdG9yZWRfdmFsdWVfaW5kZXggKGludGVybmFsX2Zu IGZuKQ0KPiAgICAgIGNhc2UgSUZOX01BU0tfU0NBVFRFUl9TVE9SRToNCj4g ICAgICBjYXNlIElGTl9MRU5fU1RPUkU6DQo+ICAgICAgICByZXR1cm4gMzsN Cj4gKyAgICBjYXNlIElGTl9MRU5fTUFTS19TVE9SRToNCj4gKyAgICAgIHJl dHVybiA0Ow0KPiAgDQo+ICAgICAgZGVmYXVsdDoNCj4gICAgICAgIHJldHVy biAtMTsNCj4gZGlmZiAtLWdpdCBhL2djYy9pbnRlcm5hbC1mbi5kZWYgYi9n Y2MvaW50ZXJuYWwtZm4uZGVmDQo+IGluZGV4IDVkNjM4ZGU2ZDA2Li5jZjBi Y2VhNWFjNyAxMDA2NDQNCj4gLS0tIGEvZ2NjL2ludGVybmFsLWZuLmRlZg0K PiArKysgYi9nY2MvaW50ZXJuYWwtZm4uZGVmDQo+IEBAIC01MCwxMiArNTAs MTQgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4g IElmIG5vdCBzZWUNCj4gICAgIC0gbWFza19sb2FkX2xhbmVzOiBjdXJyZW50 bHkganVzdCB2ZWNfbWFza19sb2FkX2xhbmVzDQo+ICAgICAtIGdhdGhlcl9s b2FkOiB1c2VkIGZvciB7bWFza18sfWdhdGhlcl9sb2FkDQo+ICAgICAtIGxl bl9sb2FkOiBjdXJyZW50bHkganVzdCBsZW5fbG9hZA0KPiArICAgLSBsZW5f bWFza2xvYWQ6IGN1cnJlbnRseSBqdXN0IGxlbl9tYXNrbG9hZA0KPiAgDQo+ ICAgICAtIG1hc2tfc3RvcmU6IGN1cnJlbnRseSBqdXN0IG1hc2tzdG9yZQ0K PiAgICAgLSBzdG9yZV9sYW5lczogY3VycmVudGx5IGp1c3QgdmVjX3N0b3Jl X2xhbmVzDQo+ICAgICAtIG1hc2tfc3RvcmVfbGFuZXM6IGN1cnJlbnRseSBq dXN0IHZlY19tYXNrX3N0b3JlX2xhbmVzDQo+ICAgICAtIHNjYXR0ZXJfc3Rv cmU6IHVzZWQgZm9yIHttYXNrXyx9c2NhdHRlcl9zdG9yZQ0KPiAgICAgLSBs ZW5fc3RvcmU6IGN1cnJlbnRseSBqdXN0IGxlbl9zdG9yZQ0KPiArICAgLSBs ZW5fbWFza3N0b3JlOiBjdXJyZW50bHkganVzdCBsZW5fbWFza3N0b3JlDQo+ ICANCj4gICAgIC0gdW5hcnk6IGEgbm9ybWFsIHVuYXJ5IG9wdGFiLCBzdWNo IGFzIHZlY19yZXZlcnNlXzxtb2RlPg0KPiAgICAgLSBiaW5hcnk6IGEgbm9y bWFsIGJpbmFyeSBvcHRhYiwgc3VjaCBhcyB2ZWNfaW50ZXJsZWF2ZV9sb188 bW9kZT4NCj4gQEAgLTE1Nyw2ICsxNTksNyBAQCBERUZfSU5URVJOQUxfT1BU QUJfRk4gKE1BU0tfR0FUSEVSX0xPQUQsIEVDRl9QVVJFLA0KPiAgICAgICAg IG1hc2tfZ2F0aGVyX2xvYWQsIGdhdGhlcl9sb2FkKQ0KPiAgDQo+ICBERUZf SU5URVJOQUxfT1BUQUJfRk4gKExFTl9MT0FELCBFQ0ZfUFVSRSwgbGVuX2xv YWQsIGxlbl9sb2FkKQ0KPiArREVGX0lOVEVSTkFMX09QVEFCX0ZOIChMRU5f TUFTS19MT0FELCBFQ0ZfUFVSRSwgbGVuX21hc2tsb2FkLCBsZW5fbWFza2xv YWQpDQo+ICANCj4gIERFRl9JTlRFUk5BTF9PUFRBQl9GTiAoU0NBVFRFUl9T VE9SRSwgMCwgc2NhdHRlcl9zdG9yZSwgc2NhdHRlcl9zdG9yZSkNCj4gIERF Rl9JTlRFUk5BTF9PUFRBQl9GTiAoTUFTS19TQ0FUVEVSX1NUT1JFLCAwLA0K PiBAQCAtMTc1LDYgKzE3OCw3IEBAIERFRl9JTlRFUk5BTF9PUFRBQl9GTiAo VkNPTkRfTUFTSywgMCwgdmNvbmRfbWFzaywgdmVjX2NvbmRfbWFzaykNCj4g IERFRl9JTlRFUk5BTF9PUFRBQl9GTiAoVkVDX1NFVCwgMCwgdmVjX3NldCwg dmVjX3NldCkNCj4gIA0KPiAgREVGX0lOVEVSTkFMX09QVEFCX0ZOIChMRU5f U1RPUkUsIDAsIGxlbl9zdG9yZSwgbGVuX3N0b3JlKQ0KPiArREVGX0lOVEVS TkFMX09QVEFCX0ZOIChMRU5fTUFTS19TVE9SRSwgMCwgbGVuX21hc2tzdG9y ZSwgbGVuX21hc2tzdG9yZSkNCj4gIA0KPiAgREVGX0lOVEVSTkFMX09QVEFC X0ZOIChXSElMRV9VTFQsIEVDRl9DT05TVCB8IEVDRl9OT1RIUk9XLCB3aGls ZV91bHQsIHdoaWxlKQ0KPiAgREVGX0lOVEVSTkFMX09QVEFCX0ZOIChTRUxF Q1RfVkwsIEVDRl9DT05TVCB8IEVDRl9OT1RIUk9XLCBzZWxlY3RfdmwsIGJp bmFyeSkNCj4gZGlmZiAtLWdpdCBhL2djYy9vcHRhYnMtcXVlcnkuY2MgYi9n Y2Mvb3B0YWJzLXF1ZXJ5LmNjDQo+IGluZGV4IDI3NmY4NDA4ZGQ3Li5lYzc2 NWU3ODA4OCAxMDA2NDQNCj4gLS0tIGEvZ2NjL29wdGFicy1xdWVyeS5jYw0K PiArKysgYi9nY2Mvb3B0YWJzLXF1ZXJ5LmNjDQo+IEBAIC02MjQsNiArNjI0 LDQ1IEBAIGdldF9sZW5fbG9hZF9zdG9yZV9tb2RlIChtYWNoaW5lX21vZGUg bW9kZSwgYm9vbCBpc19sb2FkKQ0KPiAgICByZXR1cm4gb3B0X21hY2hpbmVf bW9kZSAoKTsNCj4gIH0NCj4gIA0KPiArLyogUmV0dXJuIHRydWUgaWYgdGFy Z2V0IHN1cHBvcnRzIHZlY3RvciBsZW5ndGggJiYgbWFza2VkIGxvYWQvc3Rv cmUgZm9yIG1vZGUuDQo+ICsgICBMZW5ndGggaXMgdXNlZCBvbiBsb29wIGNv bnRyb2wgYW5kIG1hc2sgaXMgdXNlZCBvbiBmbG93IGNvbnRyb2wuICAqLw0K PiArDQo+ICtib29sDQo+ICtjYW5fdmVjX2xlbl9tYXNrX2xvYWRfc3RvcmVf cCAobWFjaGluZV9tb2RlIG1vZGUsIGJvb2wgaXNfbG9hZCkNCiANCndoeSBk ZXZpYXRlIGZyb20gY2FuX3ZlY19tYXNrX2xvYWRfc3RvcmVfcCBhbmQgbm90 IHBhc3MgaW4gdGhlDQptYXNrX21vZGU/ICBJbiBmYWN0IEkgd29uZGVyIHdo eSB0aGlzIGZ1bmN0aW9uIGRpZmZlcnMgZnJvbQ0KY2FuX3ZlY19tYXNrX2xv YWRfc3RvcmVfcCBiZXNpZGVzIHVzaW5nIG90aGVyIG9wdGFicz8gIENvdWxk bid0DQp3ZSBzaW1wbHkgYWRkIGEgYm9vbCB3aXRoX2xlbiBhcmd1bWVudCB0 byBjYW5fdmVjX21hc2tfbG9hZF9zdG9yZV9wPw0KIA0KPiArew0KPiArICBv cHRhYiBvcCA9IGlzX2xvYWQgPyBsZW5fbWFza2xvYWRfb3B0YWIgOiBsZW5f bWFza3N0b3JlX29wdGFiOw0KPiArICBtYWNoaW5lX21vZGUgdm1vZGU7DQo+ ICsgIG1hY2hpbmVfbW9kZSBtYXNrX21vZGU7DQo+ICsNCj4gKyAgLyogSWYg bW9kZSBpcyB2ZWN0b3IgbW9kZSwgY2hlY2sgaXQgZGlyZWN0bHkuICAqLw0K PiArICBpZiAoVkVDVE9SX01PREVfUCAobW9kZSkpDQo+ICsgICAgcmV0dXJu IHRhcmdldG0udmVjdG9yaXplLmdldF9tYXNrX21vZGUgKG1vZGUpLmV4aXN0 cyAoJm1hc2tfbW9kZSkNCj4gKyAgICAmJiBjb252ZXJ0X29wdGFiX2hhbmRs ZXIgKG9wLCBtb2RlLCBtYXNrX21vZGUpICE9IENPREVfRk9SX25vdGhpbmc7 DQo+ICsNCj4gKyAgc2NhbGFyX21vZGUgc21vZGU7DQo+ICsgIGlmIChpc19h PHNjYWxhcl9tb2RlPiAobW9kZSwgJnNtb2RlKSkNCj4gKyAgICAvKiBTZWUg aWYgdGhlcmUgaXMgYW55IGNoYW5jZSB0aGUgbWFzayBsb2FkIG9yIHN0b3Jl IG1pZ2h0IGJlDQo+ICsgICAgICAgdmVjdG9yaXplZC4gIElmIG5vdCwgcHVu dC4gICovDQo+ICsgICAgdm1vZGUgPSB0YXJnZXRtLnZlY3Rvcml6ZS5wcmVm ZXJyZWRfc2ltZF9tb2RlIChzbW9kZSk7DQo+ICsgIGVsc2UNCj4gKyAgICB2 bW9kZSA9IG1vZGU7DQo+ICsNCj4gKyAgaWYgKFZFQ1RPUl9NT0RFX1AgKHZt b2RlKQ0KPiArICAgICAgJiYgdGFyZ2V0bS52ZWN0b3JpemUuZ2V0X21hc2tf bW9kZSAodm1vZGUpLmV4aXN0cyAoJm1hc2tfbW9kZSkNCj4gKyAgICAgICYm IGNvbnZlcnRfb3B0YWJfaGFuZGxlciAob3AsIHZtb2RlLCBtYXNrX21vZGUp ICE9IENPREVfRk9SX25vdGhpbmcpDQo+ICsgICAgcmV0dXJuIHRydWU7DQo+ ICsNCj4gKyAgYXV0b192ZWN0b3JfbW9kZXMgdmVjdG9yX21vZGVzOw0KPiAr ICB0YXJnZXRtLnZlY3Rvcml6ZS5hdXRvdmVjdG9yaXplX3ZlY3Rvcl9tb2Rl cyAoJnZlY3Rvcl9tb2RlcywgdHJ1ZSk7DQo+ICsgIGZvciAobWFjaGluZV9t b2RlIGJhc2VfbW9kZSA6IHZlY3Rvcl9tb2RlcykNCj4gKyAgICBpZiAocmVs YXRlZF92ZWN0b3JfbW9kZSAoYmFzZV9tb2RlLCBzbW9kZSkuZXhpc3RzICgm dm1vZGUpDQo+ICsgJiYgdGFyZ2V0bS52ZWN0b3JpemUuZ2V0X21hc2tfbW9k ZSAodm1vZGUpLmV4aXN0cyAoJm1hc2tfbW9kZSkNCj4gKyAmJiBjb252ZXJ0 X29wdGFiX2hhbmRsZXIgKG9wLCB2bW9kZSwgbWFza19tb2RlKSAhPSBDT0RF X0ZPUl9ub3RoaW5nKQ0KPiArICAgICAgcmV0dXJuIHRydWU7DQo+ICsNCj4g KyAgcmV0dXJuIGZhbHNlOw0KPiArfQ0KPiArDQo+ICAvKiBSZXR1cm4gdHJ1 ZSBpZiB0aGVyZSBpcyBhIGNvbXBhcmVfYW5kX3N3YXAgcGF0dGVybi4gICov DQo+ICANCj4gIGJvb2wNCj4gZGlmZiAtLWdpdCBhL2djYy9vcHRhYnMtcXVl cnkuaCBiL2djYy9vcHRhYnMtcXVlcnkuaA0KPiBpbmRleCBiMjY2ZDJmZTk5 MC4uMmI5YzliNDRhZjIgMTAwNjQ0DQo+IC0tLSBhL2djYy9vcHRhYnMtcXVl cnkuaA0KPiArKysgYi9nY2Mvb3B0YWJzLXF1ZXJ5LmgNCj4gQEAgLTE4OSw2 ICsxODksNyBAQCBlbnVtIGluc25fY29kZSBmaW5kX3dpZGVuaW5nX29wdGFi X2hhbmRsZXJfYW5kX21vZGUgKG9wdGFiLCBtYWNoaW5lX21vZGUsDQo+ICBp bnQgY2FuX211bHRfaGlnaHBhcnRfcCAobWFjaGluZV9tb2RlLCBib29sKTsN Cj4gIGJvb2wgY2FuX3ZlY19tYXNrX2xvYWRfc3RvcmVfcCAobWFjaGluZV9t b2RlLCBtYWNoaW5lX21vZGUsIGJvb2wpOw0KPiAgb3B0X21hY2hpbmVfbW9k ZSBnZXRfbGVuX2xvYWRfc3RvcmVfbW9kZSAobWFjaGluZV9tb2RlLCBib29s KTsNCj4gK2Jvb2wgY2FuX3ZlY19sZW5fbWFza19sb2FkX3N0b3JlX3AgKG1h Y2hpbmVfbW9kZSwgYm9vbCk7DQo+ICBib29sIGNhbl9jb21wYXJlX2FuZF9z d2FwX3AgKG1hY2hpbmVfbW9kZSwgYm9vbCk7DQo+ICBib29sIGNhbl9hdG9t aWNfZXhjaGFuZ2VfcCAobWFjaGluZV9tb2RlLCBib29sKTsNCj4gIGJvb2wg Y2FuX2F0b21pY19sb2FkX3AgKG1hY2hpbmVfbW9kZSk7DQo+IGRpZmYgLS1n aXQgYS9nY2Mvb3B0YWJzLmRlZiBiL2djYy9vcHRhYnMuZGVmDQo+IGluZGV4 IGYzMWI2OWM1ZDg1Li5mNTQwMWFlYTM2NCAxMDA2NDQNCj4gLS0tIGEvZ2Nj L29wdGFicy5kZWYNCj4gKysrIGIvZ2NjL29wdGFicy5kZWYNCj4gQEAgLTkx LDYgKzkxLDggQEAgT1BUQUJfQ0QodmVjX2NtcHVfb3B0YWIsICJ2ZWNfY21w dSRhJGIiKQ0KPiAgT1BUQUJfQ0QodmVjX2NtcGVxX29wdGFiLCAidmVjX2Nt cGVxJGEkYiIpDQo+ICBPUFRBQl9DRChtYXNrbG9hZF9vcHRhYiwgIm1hc2ts b2FkJGEkYiIpDQo+ICBPUFRBQl9DRChtYXNrc3RvcmVfb3B0YWIsICJtYXNr c3RvcmUkYSRiIikNCj4gK09QVEFCX0NEKGxlbl9tYXNrbG9hZF9vcHRhYiwg Imxlbl9tYXNrbG9hZCRhJGIiKQ0KPiArT1BUQUJfQ0QobGVuX21hc2tzdG9y ZV9vcHRhYiwgImxlbl9tYXNrc3RvcmUkYSRiIikNCj4gIE9QVEFCX0NEKGdh dGhlcl9sb2FkX29wdGFiLCAiZ2F0aGVyX2xvYWQkYSRiIikNCj4gIE9QVEFC X0NEKG1hc2tfZ2F0aGVyX2xvYWRfb3B0YWIsICJtYXNrX2dhdGhlcl9sb2Fk JGEkYiIpDQo+ICBPUFRBQl9DRChzY2F0dGVyX3N0b3JlX29wdGFiLCAic2Nh dHRlcl9zdG9yZSRhJGIiKQ0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtZGF0 YS1yZWYuY2MgYi9nY2MvdHJlZS1kYXRhLXJlZi5jYw0KPiBpbmRleCBiNTc2 Y2NlNmRiNi4uOTlhY2E0NGU2YTUgMTAwNjQ0DQo+IC0tLSBhL2djYy90cmVl LWRhdGEtcmVmLmNjDQo+ICsrKyBiL2djYy90cmVlLWRhdGEtcmVmLmNjDQo+ IEBAIC01ODE2LDYgKzU4MTYsOCBAQCBnZXRfcmVmZXJlbmNlc19pbl9zdG10 IChnaW1wbGUgKnN0bXQsIHZlYzxkYXRhX3JlZl9sb2MsIHZhX2hlYXA+ICpy ZWZlcmVuY2VzKQ0KPiAgICAgIH0NCj4gICAgY2FzZSBJRk5fTUFTS19MT0FE Og0KPiAgICBjYXNlIElGTl9NQVNLX1NUT1JFOg0KPiArICAgY2FzZSBJRk5f TEVOX01BU0tfTE9BRDoNCj4gKyAgIGNhc2UgSUZOX0xFTl9NQVNLX1NUT1JF Og0KPiAgICAgIGJyZWFrOw0KPiAgICBkZWZhdWx0Og0KPiAgICAgIGNsb2Ji ZXJzX21lbW9yeSA9IHRydWU7DQo+IEBAIC01ODYxLDExICs1ODYzLDEzIEBA IGdldF9yZWZlcmVuY2VzX2luX3N0bXQgKGdpbXBsZSAqc3RtdCwgdmVjPGRh dGFfcmVmX2xvYywgdmFfaGVhcD4gKnJlZmVyZW5jZXMpDQo+ICBzd2l0Y2gg KGdpbXBsZV9jYWxsX2ludGVybmFsX2ZuIChzdG10KSkNCj4gICAgew0KPiAg ICBjYXNlIElGTl9NQVNLX0xPQUQ6DQo+ICsgICBjYXNlIElGTl9MRU5fTUFT S19MT0FEOg0KPiAgICAgIGlmIChnaW1wbGVfY2FsbF9saHMgKHN0bXQpID09 IE5VTExfVFJFRSkNCj4gICAgICAgIGJyZWFrOw0KPiAgICAgIHJlZi5pc19y ZWFkID0gdHJ1ZTsNCj4gICAgICAvKiBGQUxMVEhSVSAqLw0KPiAgICBjYXNl IElGTl9NQVNLX1NUT1JFOg0KPiArICAgY2FzZSBJRk5fTEVOX01BU0tfU1RP UkU6DQo+ICAgICAgcHRyID0gYnVpbGRfaW50X2NzdCAoVFJFRV9UWVBFIChn aW1wbGVfY2FsbF9hcmcgKHN0bXQsIDEpKSwgMCk7DQo+ICAgICAgYWxpZ24g PSB0cmVlX3RvX3Nod2kgKGdpbXBsZV9jYWxsX2FyZyAoc3RtdCwgMSkpOw0K PiAgICAgIGlmIChyZWYuaXNfcmVhZCkNCj4gZGlmZiAtLWdpdCBhL2djYy90 cmVlLWlmLWNvbnYuY2MgYi9nY2MvdHJlZS1pZi1jb252LmNjDQo+IGluZGV4 IDEzOTNjZTE4NGUzLi4wZjU0OWZhNTI4ZCAxMDA2NDQNCj4gLS0tIGEvZ2Nj L3RyZWUtaWYtY29udi5jYw0KPiArKysgYi9nY2MvdHJlZS1pZi1jb252LmNj DQo+IEBAIC05NjAsNiArOTYwLDkgQEAgaWZjdnRfY2FuX3VzZV9tYXNrX2xv YWRfc3RvcmUgKGdpbXBsZSAqc3RtdCkNCj4gICAgaWYgKGNhbl92ZWNfbWFz a19sb2FkX3N0b3JlX3AgKG1vZGUsIFZPSURtb2RlLCBpc19sb2FkKSkNCj4g ICAgICByZXR1cm4gdHJ1ZTsNCj4gIA0KPiArICBpZiAoY2FuX3ZlY19sZW5f bWFza19sb2FkX3N0b3JlX3AgKG1vZGUsIGlzX2xvYWQpKQ0KPiArICAgIHJl dHVybiB0cnVlOw0KIA0KQnV0IGlmLWNvbnZlcnNpb24gb25seSBuZWVkcyB0 aGUgY29uZGl0aW9uYWwgbWFza2luZywgbm90IF9sZW4uICBJDQpkb24ndCB0 aGluayB3ZSBuZWVkIHRvIGNoZWNrIHRoaXMgYXQgYWxsPyAgSW4gZmFjdA0K Y2FuX3ZlY19tYXNrX2xvYWRfc3RvcmVfcCBzaG91bGQgcHJvYmFibHkgcmV0 dXJuIHRydWUgd2hlbg0KTEVOX01BU0tMT0FEIGlzIGF2YWlsYWJsZSBzaW5j ZSB3ZSBjYW4gYWx3YXlzIHVzZSB0aGUgZnVsbCB2ZWN0b3INCmxlbiBhcyBs ZW4gYXJndW1lbnQ/ICBUaGUgc3VnZ2VzdGVkIGJvb2wgYXJndW1lbnQgd2l0 aF9sZW4NCmNvdWxkIGFsc28gYmVjb21lIGFuIGVudW0geyBXSVRIX0xFTiwg V0lUSE9VVF9MRU4sIEVJVEhFUiB9LA0KYnV0IG5vdCBzdXJlIGlmIHRoYXQn cyByZWFsbHkgbmVjZXNzYXJ5Lg0KIA0KQXJlIHlvdSBnb2luZyB0byBwcm92 aWRlIGxlbl9sb2FkLCBtYXNrbG9hZCBhbmQgbGVuX21hc2tsb2FkDQpwYXR0 ZXJucyBvciBqdXN0IGxlbl9tYXNrbG9hZD8gIChJIGhvcGUgdGhlIGxhc3Qp DQogDQo+ICsNCj4gICAgcmV0dXJuIGZhbHNlOw0KPiAgfQ0KPiAgDQo+IGRp ZmYgLS1naXQgYS9nY2MvdHJlZS1zc2EtYWxpYXMuY2MgYi9nY2MvdHJlZS1z c2EtYWxpYXMuY2MNCj4gaW5kZXggNzllZDk1NmUzMDAuLjEwMGM0YjJlN2Q5 IDEwMDY0NA0KPiAtLS0gYS9nY2MvdHJlZS1zc2EtYWxpYXMuY2MNCj4gKysr IGIvZ2NjL3RyZWUtc3NhLWFsaWFzLmNjDQo+IEBAIC0yODE1LDExICsyODE1 LDEzIEBAIHJlZl9tYXliZV91c2VkX2J5X2NhbGxfcF8xIChnY2FsbCAqY2Fs bCwgYW9fcmVmICpyZWYsIGJvb2wgdGJhYV9wKQ0KPiAgICAgICAgY2FzZSBJ Rk5fU0NBVFRFUl9TVE9SRToNCj4gICAgICAgIGNhc2UgSUZOX01BU0tfU0NB VFRFUl9TVE9SRToNCj4gICAgICAgIGNhc2UgSUZOX0xFTl9TVE9SRToNCj4g KyAgICAgIGNhc2UgSUZOX0xFTl9NQVNLX1NUT1JFOg0KPiAgcmV0dXJuIGZh bHNlOw0KPiAgICAgICAgY2FzZSBJRk5fTUFTS19TVE9SRV9MQU5FUzoNCj4g IGdvdG8gcHJvY2Vzc19hcmdzOw0KPiAgICAgICAgY2FzZSBJRk5fTUFTS19M T0FEOg0KPiAgICAgICAgY2FzZSBJRk5fTEVOX0xPQUQ6DQo+ICsgICAgICBj YXNlIElGTl9MRU5fTUFTS19MT0FEOg0KPiAgICAgICAgY2FzZSBJRk5fTUFT S19MT0FEX0xBTkVTOg0KPiAgew0KPiAgICBhb19yZWYgcmhzX3JlZjsNCj4g QEAgLTMwNjUsNiArMzA2Nyw3IEBAIGNhbGxfbWF5X2Nsb2JiZXJfcmVmX3Bf MSAoZ2NhbGwgKmNhbGwsIGFvX3JlZiAqcmVmLCBib29sIHRiYWFfcCkNCj4g IHJldHVybiBmYWxzZTsNCj4gICAgICAgIGNhc2UgSUZOX01BU0tfU1RPUkU6 DQo+ICAgICAgICBjYXNlIElGTl9MRU5fU1RPUkU6DQo+ICsgICAgICBjYXNl IElGTl9MRU5fTUFTS19TVE9SRToNCj4gICAgICAgIGNhc2UgSUZOX01BU0tf U1RPUkVfTEFORVM6DQo+ICB7DQo+ICAgIHRyZWUgcmhzID0gZ2ltcGxlX2Nh bGxfYXJnIChjYWxsLA0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtc3NhLWRz ZS5jYyBiL2djYy90cmVlLXNzYS1kc2UuY2MNCj4gaW5kZXggZWFiZThiYTQ1 MjIuLmFjYWY4NDRiOGVmIDEwMDY0NA0KPiAtLS0gYS9nY2MvdHJlZS1zc2Et ZHNlLmNjDQo+ICsrKyBiL2djYy90cmVlLXNzYS1kc2UuY2MNCj4gQEAgLTE3 NCw2ICsxNzQsMTcgQEAgaW5pdGlhbGl6ZV9hb19yZWZfZm9yX2RzZSAoZ2lt cGxlICpzdG10LCBhb19yZWYgKndyaXRlLCBib29sIG1heV9kZWZfb2sgPSBm YWxzZSkNCj4gICAgICAgIHJldHVybiB0cnVlOw0KPiAgICAgIH0NCj4gICAg YnJlYWs7DQo+ICsgY2FzZSBJRk5fTEVOX01BU0tfU1RPUkU6DQo+ICsgICAv KiBXZSBjYW5ub3QgaW5pdGlhbGl6ZSBhIG11c3QtZGVmIGFvX3JlZiAoaW4g YWxsIGNhc2VzKSBidXQgd2UNCj4gKyAgICAgIGNhbiBwcm92aWRlIGEgbWF5 LWRlZiB2YXJpYW50LiAgKi8NCj4gKyAgIGlmIChtYXlfZGVmX29rKQ0KPiAr ICAgICB7DQo+ICsgICAgICAgYW9fcmVmX2luaXRfZnJvbV9wdHJfYW5kX3Np emUNCj4gKyAgICh3cml0ZSwgZ2ltcGxlX2NhbGxfYXJnIChzdG10LCAwKSwN Cj4gKyAgICBUWVBFX1NJWkVfVU5JVCAoVFJFRV9UWVBFIChnaW1wbGVfY2Fs bF9hcmcgKHN0bXQsIDQpKSkpOw0KIA0KY29tbW9uIHdpdGggSUZOX01BU0tf U1RPUkUgYnkgdXNpbmcgaW50ZXJuYWxfZm5fc3RvcmVkX3ZhbHVlX2luZGV4 DQogDQo+ICsgICAgICAgcmV0dXJuIHRydWU7DQo+ICsgICAgIH0NCj4gKyAg IGJyZWFrOw0KPiAgZGVmYXVsdDo7DQo+ICB9DQo+ICAgICAgfQ0KPiBAQCAt MTQ4Myw2ICsxNDk0LDcgQEAgZHNlX29wdGltaXplX3N0bXQgKGZ1bmN0aW9u ICpmdW4sIGdpbXBsZV9zdG10X2l0ZXJhdG9yICpnc2ksIHNiaXRtYXAgbGl2 ZV9ieXRlcykNCj4gIHsNCj4gIGNhc2UgSUZOX0xFTl9TVE9SRToNCj4gIGNh c2UgSUZOX01BU0tfU1RPUkU6DQo+ICsgY2FzZSBJRk5fTEVOX01BU0tfU1RP UkU6DQo+ICAgIHsNCj4gICAgICBlbnVtIGRzZV9zdG9yZV9zdGF0dXMgc3Rv cmVfc3RhdHVzOw0KPiAgICAgIHN0b3JlX3N0YXR1cyA9IGRzZV9jbGFzc2lm eV9zdG9yZSAoJnJlZiwgc3RtdCwgZmFsc2UsIGxpdmVfYnl0ZXMpOw0KPiBk aWZmIC0tZ2l0IGEvZ2NjL3RyZWUtc3NhLWxvb3AtaXZvcHRzLmNjIGIvZ2Nj L3RyZWUtc3NhLWxvb3AtaXZvcHRzLmNjDQo+IGluZGV4IDZmYmQyZDU5MzE4 Li5lOGU5ZGYxYWI3NCAxMDA2NDQNCj4gLS0tIGEvZ2NjL3RyZWUtc3NhLWxv b3AtaXZvcHRzLmNjDQo+ICsrKyBiL2djYy90cmVlLXNzYS1sb29wLWl2b3B0 cy5jYw0KPiBAQCAtMjQzOSw2ICsyNDM5LDcgQEAgZ2V0X21lbV90eXBlX2Zv cl9pbnRlcm5hbF9mbiAoZ2NhbGwgKmNhbGwsIHRyZWUgKm9wX3ApDQo+ICAg ICAgY2FzZSBJRk5fTUFTS19MT0FEOg0KPiAgICAgIGNhc2UgSUZOX01BU0tf TE9BRF9MQU5FUzoNCj4gICAgICBjYXNlIElGTl9MRU5fTE9BRDoNCj4gKyAg ICBjYXNlIElGTl9MRU5fTUFTS19MT0FEOg0KPiAgICAgICAgaWYgKG9wX3Ag PT0gZ2ltcGxlX2NhbGxfYXJnX3B0ciAoY2FsbCwgMCkpDQo+ICByZXR1cm4g VFJFRV9UWVBFIChnaW1wbGVfY2FsbF9saHMgKGNhbGwpKTsNCj4gICAgICAg IHJldHVybiBOVUxMX1RSRUU7DQo+IEBAIC0yNDUwLDYgKzI0NTEsMTEgQEAg Z2V0X21lbV90eXBlX2Zvcl9pbnRlcm5hbF9mbiAoZ2NhbGwgKmNhbGwsIHRy ZWUgKm9wX3ApDQo+ICByZXR1cm4gVFJFRV9UWVBFIChnaW1wbGVfY2FsbF9h cmcgKGNhbGwsIDMpKTsNCj4gICAgICAgIHJldHVybiBOVUxMX1RSRUU7DQo+ ICANCj4gKyAgICBjYXNlIElGTl9MRU5fTUFTS19TVE9SRToNCj4gKyAgICAg IGlmIChvcF9wID09IGdpbXBsZV9jYWxsX2FyZ19wdHIgKGNhbGwsIDApKQ0K PiArIHJldHVybiBUUkVFX1RZUEUgKGdpbXBsZV9jYWxsX2FyZyAoY2FsbCwg NCkpOw0KIA0KaW50ZXJuYWxfZm5fc3RvcmVkX3ZhbHVlX2luZGV4DQogDQo+ ICsgICAgICByZXR1cm4gTlVMTF9UUkVFOw0KPiArDQo+ICAgICAgZGVmYXVs dDoNCj4gICAgICAgIHJldHVybiBOVUxMX1RSRUU7DQo+ICAgICAgfQ0KPiBA QCAtNzU1NSw2ICs3NTYxLDggQEAgZ2V0X2FsaWFzX3B0cl90eXBlX2Zvcl9w dHJfYWRkcmVzcyAoaXZfdXNlICp1c2UpDQo+ICAgICAgY2FzZSBJRk5fTUFT S19TVE9SRV9MQU5FUzoNCj4gICAgICBjYXNlIElGTl9MRU5fTE9BRDoNCj4g ICAgICBjYXNlIElGTl9MRU5fU1RPUkU6DQo+ICsgICAgY2FzZSBJRk5fTEVO X01BU0tfTE9BRDoNCj4gKyAgICBjYXNlIElGTl9MRU5fTUFTS19TVE9SRToN Cj4gICAgICAgIC8qIFRoZSBzZWNvbmQgYXJndW1lbnQgY29udGFpbnMgdGhl IGNvcnJlY3QgYWxpYXMgdHlwZS4gICovDQo+ICAgICAgICBnY2NfYXNzZXJ0 ICh1c2UtPm9wX3AgPSBnaW1wbGVfY2FsbF9hcmdfcHRyIChjYWxsLCAwKSk7 DQo+ICAgICAgICByZXR1cm4gVFJFRV9UWVBFIChnaW1wbGVfY2FsbF9hcmcg KGNhbGwsIDEpKTsNCj4gZGlmZiAtLWdpdCBhL2djYy90cmVlLXNzYS1zY2N2 bi5jYyBiL2djYy90cmVlLXNzYS1zY2N2bi5jYw0KPiBpbmRleCAyN2M4NGU3 OGZjZi4uMDJmYmM0YTJkZmEgMTAwNjQ0DQo+IC0tLSBhL2djYy90cmVlLXNz YS1zY2N2bi5jYw0KPiArKysgYi9nY2MvdHJlZS1zc2Etc2Njdm4uY2MNCj4g QEAgLTMzMDQsNiArMzMwNCwxMiBAQCB2bl9yZWZlcmVuY2VfbG9va3VwXzMg KGFvX3JlZiAqcmVmLCB0cmVlIHZ1c2UsIHZvaWQgKmRhdGFfLA0KPiAgICBp ZiAoIXRyZWVfZml0c191aHdpX3AgKGxlbikgfHwgIXRyZWVfZml0c19zaHdp X3AgKGJpYXMpKQ0KPiAgICAgIHJldHVybiAodm9pZCAqKS0xOw0KPiAgICBi cmVhazsNCj4gKyBjYXNlIElGTl9MRU5fTUFTS19TVE9SRToNCj4gKyAgIGxl biA9IGdpbXBsZV9jYWxsX2FyZyAoY2FsbCwgMik7DQo+ICsgICBtYXNrID0g Z2ltcGxlX2NhbGxfYXJnIChjYWxsLCBpbnRlcm5hbF9mbl9tYXNrX2luZGV4 IChmbikpOw0KPiArICAgaWYgKCF0cmVlX2ZpdHNfdWh3aV9wIChsZW4pIHx8 IFRSRUVfQ09ERSAobWFzaykgIT0gVkVDVE9SX0NTVCkNCj4gKyAgICAgcmV0 dXJuICh2b2lkICopLTE7DQo+ICsgICBicmVhazsNCiANClRoYXQncyB0b28g c2ltcGxlLCB0aGUgY29kZSB1c2luZyB0aGUgaW5mbyBpcyBub3QgcHJlcGFy ZWQgZm9yDQpMRU5fTUFTSyBzaW5jZSBpdCBoYW5kbGVzIG1hc2tsb2FkIGFu ZCBsZW5fbG9hZCBzZXBhcmF0ZWx5Lg0KSSBzdWdnZXN0IHRvIGRyb3AgdGhp cywgcGlja2luZyBpdCB1cCBzZXBhcmF0ZWx5Lg0KIA0KPiAgZGVmYXVsdDoN Cj4gICAgcmV0dXJuICh2b2lkICopLTE7DQo+ICB9DQo+IGRpZmYgLS1naXQg YS9nY2MvdHJlZS12ZWN0LWRhdGEtcmVmcy5jYyBiL2djYy90cmVlLXZlY3Qt ZGF0YS1yZWZzLmNjDQo+IGluZGV4IGViZTkzODMyYjFlLi5mYjgzNDQ2NTE5 YSAxMDA2NDQNCj4gLS0tIGEvZ2NjL3RyZWUtdmVjdC1kYXRhLXJlZnMuY2MN Cj4gKysrIGIvZ2NjL3RyZWUtdmVjdC1kYXRhLXJlZnMuY2MNCj4gQEAgLTMw MzksMTcgKzMwMzksMjEgQEAgY2FuX2dyb3VwX3N0bXRzX3AgKHN0bXRfdmVj X2luZm8gc3RtdDFfaW5mbywgc3RtdF92ZWNfaW5mbyBzdG10Ml9pbmZvLA0K PiAgICAgICAgaWYgKCFjYWxsMiB8fCAhZ2ltcGxlX2NhbGxfaW50ZXJuYWxf cCAoY2FsbDIpKQ0KPiAgcmV0dXJuIGZhbHNlOw0KPiAgICAgICAgaW50ZXJu YWxfZm4gaWZuID0gZ2ltcGxlX2NhbGxfaW50ZXJuYWxfZm4gKGNhbGwxKTsN Cj4gLSAgICAgIGlmIChpZm4gIT0gSUZOX01BU0tfTE9BRCAmJiBpZm4gIT0g SUZOX01BU0tfU1RPUkUpDQo+ICsgICAgICBpZiAoaWZuICE9IElGTl9NQVNL X0xPQUQgJiYgaWZuICE9IElGTl9NQVNLX1NUT1JFDQo+ICsgICAmJiBpZm4g IT0gSUZOX0xFTl9NQVNLX0xPQUQgJiYgaWZuICE9IElGTl9MRU5fTUFTS19T VE9SRSkNCj4gIHJldHVybiBmYWxzZTsNCj4gICAgICAgIGlmIChpZm4gIT0g Z2ltcGxlX2NhbGxfaW50ZXJuYWxfZm4gKGNhbGwyKSkNCj4gIHJldHVybiBm YWxzZTsNCj4gIA0KPiAgICAgICAgLyogQ2hlY2sgdGhhdCB0aGUgbWFza3Mg YXJlIHRoZSBzYW1lLiAgQ29wZSB3aXRoIGNhc3RzIG9mIG1hc2tzLA0KPiAg bGlrZSB0aG9zZSBjcmVhdGVkIGJ5IGJ1aWxkX21hc2tfY29udmVyc2lvbi4g ICovDQo+IC0gICAgICB0cmVlIG1hc2sxID0gZ2ltcGxlX2NhbGxfYXJnIChj YWxsMSwgMik7DQo+IC0gICAgICB0cmVlIG1hc2syID0gZ2ltcGxlX2NhbGxf YXJnIChjYWxsMiwgMik7DQo+ICsgICAgICB1bnNpZ25lZCBpbnQgbWFza19h cmdubw0KPiArID0gaWZuID09IElGTl9MRU5fTUFTS19MT0FEIHx8IGlmbiA9 PSBJRk5fTEVOX01BU0tfU1RPUkUgPyAzIDogMjsNCj4gKyAgICAgIHRyZWUg bWFzazEgPSBnaW1wbGVfY2FsbF9hcmcgKGNhbGwxLCBtYXNrX2FyZ25vKTsN Cj4gKyAgICAgIHRyZWUgbWFzazIgPSBnaW1wbGVfY2FsbF9hcmcgKGNhbGwy LCBtYXNrX2FyZ25vKTsNCj4gICAgICAgIGlmICghb3BlcmFuZF9lcXVhbF9w IChtYXNrMSwgbWFzazIsIDApDQo+IC0gICAgICAgICAgJiYgKGlmbiA9PSBJ Rk5fTUFTS19TVE9SRSB8fCAhYWxsb3dfc2xwX3ApKQ0KPiArICAgJiYgKGlm biA9PSBJRk5fTUFTS19TVE9SRSB8fCBpZm4gPT0gSUZOX0xFTl9NQVNLX1NU T1JFDQo+ICsgICAgICAgfHwgIWFsbG93X3NscF9wKSkNCiANCkkgdGhpbmsg eW91IG5lZWQgdG8gdmVyaWZ5IHRoZSBsZW5ndGggb3BlcmFuZCBpcyB0aGUg ZnVsbCB2ZWN0b3IsIG5vdGUNCnRoaXMgaXMgZm9yIGlmLWNvbnZlcnNpb24g d2hpY2ggY291bGQgY2FyZSBsZXNzIGZvciBfTEVOLCBidXQgaWYgd2UNCmlu c2lzdCBvbiB1c2luZyBfTEVOIChJIGRpZG4ndCBzZWUgeW91IGNoYW5naW5n IGlmLWNvbnZlcnNpb24gdGhhdA0Kd2F5PyEpIHRoZW4gd2UgbmVlZCB0byBw dXQgaW4gc29tZSB2YWx1ZSBldmVuIGZvciB0aGUgInNjYWxhciINCnBsYWNl aG9sZGVyLiAgSSdkIHN1Z2dlc3QgdG8gc2ltcGx5IHVzZSBJRk5fTUFTS197 TE9BRCxTVE9SRX0gaW4NCmlmLWNvbnZlcnNpb24gYnV0IHZlY3Rvcml6ZSB0 aGF0IGFzIExFTl8gd2l0aCBmdWxsIGxlbmd0aCBpZg0KcGxhaW4gTUFTS19M T0FEL1NUT1JFIGlzbid0IGF2YWlsYWJsZS4gIFdoaWNoIG1lYW5zIHRoZXNl IGNoYW5nZXMNCmFyZSBub3QgbmVjZXNzYXJ5IGF0IGFsbC4NCiANCj4gIHsN Cj4gICAgbWFzazEgPSBzdHJpcF9jb252ZXJzaW9uIChtYXNrMSk7DQo+ICAg IGlmICghbWFzazEpDQo+IEBAIC00MjkyLDcgKzQyOTYsOSBAQCB2ZWN0X2Zp bmRfc3RtdF9kYXRhX3JlZmVyZW5jZSAobG9vcF9wIGxvb3AsIGdpbXBsZSAq c3RtdCwNCj4gICAgaWYgKGdjYWxsICpjYWxsID0gZHluX2Nhc3QgPGdjYWxs ICo+IChzdG10KSkNCj4gICAgICBpZiAoIWdpbXBsZV9jYWxsX2ludGVybmFs X3AgKGNhbGwpDQo+ICB8fCAoZ2ltcGxlX2NhbGxfaW50ZXJuYWxfZm4gKGNh bGwpICE9IElGTl9NQVNLX0xPQUQNCj4gLSAgICAgJiYgZ2ltcGxlX2NhbGxf aW50ZXJuYWxfZm4gKGNhbGwpICE9IElGTl9NQVNLX1NUT1JFKSkNCj4gKyAg ICAgJiYgZ2ltcGxlX2NhbGxfaW50ZXJuYWxfZm4gKGNhbGwpICE9IElGTl9N QVNLX1NUT1JFDQo+ICsgICAgICYmIGdpbXBsZV9jYWxsX2ludGVybmFsX2Zu IChjYWxsKSAhPSBJRk5fTEVOX01BU0tfTE9BRA0KPiArICAgICAmJiBnaW1w bGVfY2FsbF9pbnRlcm5hbF9mbiAoY2FsbCkgIT0gSUZOX0xFTl9NQVNLX1NU T1JFKSkNCj4gICAgICAgIHsNCj4gIGZyZWVfZGF0YV9yZWYgKGRyKTsNCj4g IHJldHVybiBvcHRfcmVzdWx0OjpmYWlsdXJlX2F0IChzdG10LA0KPiBAQCAt NjczMSw3ICs2NzM3LDkgQEAgdmVjdF9zdXBwb3J0YWJsZV9kcl9hbGlnbm1l bnQgKHZlY19pbmZvICp2aW5mbywgZHJfdmVjX2luZm8gKmRyX2luZm8sDQo+ ICAgIGlmIChnY2FsbCAqc3RtdCA9IGR5bl9jYXN0IDxnY2FsbCAqPiAoc3Rt dF9pbmZvLT5zdG10KSkNCj4gICAgICBpZiAoZ2ltcGxlX2NhbGxfaW50ZXJu YWxfcCAoc3RtdCkNCj4gICYmIChnaW1wbGVfY2FsbF9pbnRlcm5hbF9mbiAo c3RtdCkgPT0gSUZOX01BU0tfTE9BRA0KPiAtICAgICB8fCBnaW1wbGVfY2Fs bF9pbnRlcm5hbF9mbiAoc3RtdCkgPT0gSUZOX01BU0tfU1RPUkUpKQ0KPiAr ICAgICB8fCBnaW1wbGVfY2FsbF9pbnRlcm5hbF9mbiAoc3RtdCkgPT0gSUZO X01BU0tfU1RPUkUNCj4gKyAgICAgfHwgZ2ltcGxlX2NhbGxfaW50ZXJuYWxf Zm4gKHN0bXQpID09IElGTl9MRU5fTUFTS19MT0FEDQo+ICsgICAgIHx8IGdp bXBsZV9jYWxsX2ludGVybmFsX2ZuIChzdG10KSA9PSBJRk5fTEVOX01BU0tf U1RPUkUpKQ0KPiAgICAgICAgcmV0dXJuIGRyX3VuYWxpZ25lZF9zdXBwb3J0 ZWQ7DQo+ICANCj4gICAgaWYgKGxvb3BfdmluZm8pDQo+IGRpZmYgLS1naXQg YS9nY2MvdHJlZS12ZWN0LWxvb3AuY2MgYi9nY2MvdHJlZS12ZWN0LWxvb3Au Y2MNCj4gaW5kZXggYWNlOWU3NTlmNWIuLjAzZGU0MWQ0OTg4IDEwMDY0NA0K PiAtLS0gYS9nY2MvdHJlZS12ZWN0LWxvb3AuY2MNCj4gKysrIGIvZ2NjL3Ry ZWUtdmVjdC1sb29wLmNjDQo+IEBAIC0xMjk2LDMwICsxMjk2LDMzIEBAIHZl Y3RfdmVyaWZ5X2xvb3BfbGVucyAobG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZv KQ0KPiAgICBpZiAoTE9PUF9WSU5GT19MRU5TIChsb29wX3ZpbmZvKS5pc19l bXB0eSAoKSkNCj4gICAgICByZXR1cm4gZmFsc2U7DQo+ICANCj4gLSAgbWFj aGluZV9tb2RlIGxlbl9sb2FkX21vZGUgPSBnZXRfbGVuX2xvYWRfc3RvcmVf bW9kZQ0KPiAtICAgIChsb29wX3ZpbmZvLT52ZWN0b3JfbW9kZSwgdHJ1ZSku cmVxdWlyZSAoKTsNCj4gLSAgbWFjaGluZV9tb2RlIGxlbl9zdG9yZV9tb2Rl ID0gZ2V0X2xlbl9sb2FkX3N0b3JlX21vZGUNCj4gLSAgICAobG9vcF92aW5m by0+dmVjdG9yX21vZGUsIGZhbHNlKS5yZXF1aXJlICgpOw0KPiArICBpZiAo IWNhbl92ZWNfbGVuX21hc2tfbG9hZF9zdG9yZV9wIChsb29wX3ZpbmZvLT52 ZWN0b3JfbW9kZSwgdHJ1ZSkNCj4gKyAgICAgICYmICFjYW5fdmVjX2xlbl9t YXNrX2xvYWRfc3RvcmVfcCAobG9vcF92aW5mby0+dmVjdG9yX21vZGUsIGZh bHNlKSkNCj4gKyAgICB7DQo+ICsgICAgICBtYWNoaW5lX21vZGUgbGVuX2xv YWRfbW9kZQ0KPiArID0gZ2V0X2xlbl9sb2FkX3N0b3JlX21vZGUgKGxvb3Bf dmluZm8tPnZlY3Rvcl9tb2RlLCB0cnVlKS5yZXF1aXJlICgpOw0KPiArICAg ICAgbWFjaGluZV9tb2RlIGxlbl9zdG9yZV9tb2RlDQo+ICsgPSBnZXRfbGVu X2xvYWRfc3RvcmVfbW9kZSAobG9vcF92aW5mby0+dmVjdG9yX21vZGUsIGZh bHNlKS5yZXF1aXJlICgpOw0KIA0KYXMgd2l0aCBjYW5fbWFza18qIHdlIGRv bid0IHJlYWxseSBjYXJlIGlmIG1hc2tpbmcgaXMgc3VwcG9ydGVkIG9yDQpu b3Qgc28gSSBzdWdnZXN0IHRvIGFtZW5kIGdldF9sZW5fbG9hZF9zdG9yZV9t b2RlIHRvIGFsc28gY2hlY2sgdGhlDQpsZW5fbWFza3tsb2FkLHN0b3JlfSBv cHRhYnM/ICBHaXZlbiB0aGF0IHRoZSBmdW5jdGlvbg0Kc2hvdWxkIHBvc3Np Ymx5IHJldHVybiB0aGUgY29ycmVzcG9uZGluZyBJRk4gYXMgd2VsbC4NCiAN Cj4gLSAgc2lnbmVkIGNoYXIgcGFydGlhbF9sb2FkX2JpYXMgPSBpbnRlcm5h bF9sZW5fbG9hZF9zdG9yZV9iaWFzDQo+IC0gICAgKElGTl9MRU5fTE9BRCwg bGVuX2xvYWRfbW9kZSk7DQo+ICsgICAgICBzaWduZWQgY2hhciBwYXJ0aWFs X2xvYWRfYmlhcw0KPiArID0gaW50ZXJuYWxfbGVuX2xvYWRfc3RvcmVfYmlh cyAoSUZOX0xFTl9MT0FELCBsZW5fbG9hZF9tb2RlKTsNCj4gIA0KPiAtICBz aWduZWQgY2hhciBwYXJ0aWFsX3N0b3JlX2JpYXMgPSBpbnRlcm5hbF9sZW5f bG9hZF9zdG9yZV9iaWFzDQo+IC0gICAgKElGTl9MRU5fU1RPUkUsIGxlbl9z dG9yZV9tb2RlKTsNCj4gKyAgICAgIHNpZ25lZCBjaGFyIHBhcnRpYWxfc3Rv cmVfYmlhcw0KPiArID0gaW50ZXJuYWxfbGVuX2xvYWRfc3RvcmVfYmlhcyAo SUZOX0xFTl9TVE9SRSwgbGVuX3N0b3JlX21vZGUpOw0KPiAgDQo+IC0gIGdj Y19hc3NlcnQgKHBhcnRpYWxfbG9hZF9iaWFzID09IHBhcnRpYWxfc3RvcmVf Ymlhcyk7DQo+ICsgICAgICBnY2NfYXNzZXJ0IChwYXJ0aWFsX2xvYWRfYmlh cyA9PSBwYXJ0aWFsX3N0b3JlX2JpYXMpOw0KPiAgDQo+IC0gIGlmIChwYXJ0 aWFsX2xvYWRfYmlhcyA9PSBWRUNUX1BBUlRJQUxfQklBU19VTlNVUFBPUlRF RCkNCj4gLSAgICByZXR1cm4gZmFsc2U7DQo+ICsgICAgICBpZiAocGFydGlh bF9sb2FkX2JpYXMgPT0gVkVDVF9QQVJUSUFMX0JJQVNfVU5TVVBQT1JURUQp DQo+ICsgcmV0dXJuIGZhbHNlOw0KPiAgDQo+IC0gIC8qIElmIHRoZSBiYWNr ZW5kIHJlcXVpcmVzIGEgYmlhcyBvZiAtMSBmb3IgTEVOX0xPQUQsIHdlIG11 c3Qgbm90IGVtaXQNCj4gLSAgICAgbGVuX2xvYWRzIHdpdGggYSBsZW5ndGgg b2YgemVyby4gIEluIG9yZGVyIHRvIGF2b2lkIHRoYXQgd2UgcHJvaGliaXQN Cj4gLSAgICAgbW9yZSB0aGFuIG9uZSBsb29wIGxlbmd0aCBoZXJlLiAgKi8N Cj4gLSAgaWYgKHBhcnRpYWxfbG9hZF9iaWFzID09IC0xDQo+IC0gICAgICAm JiBMT09QX1ZJTkZPX0xFTlMgKGxvb3BfdmluZm8pLmxlbmd0aCAoKSA+IDEp DQo+IC0gICAgcmV0dXJuIGZhbHNlOw0KPiArICAgICAgLyogSWYgdGhlIGJh Y2tlbmQgcmVxdWlyZXMgYSBiaWFzIG9mIC0xIGZvciBMRU5fTE9BRCwgd2Ug bXVzdCBub3QgZW1pdA0KPiArIGxlbl9sb2FkcyB3aXRoIGEgbGVuZ3RoIG9m IHplcm8uICBJbiBvcmRlciB0byBhdm9pZCB0aGF0IHdlIHByb2hpYml0DQo+ ICsgbW9yZSB0aGFuIG9uZSBsb29wIGxlbmd0aCBoZXJlLiAgKi8NCj4gKyAg ICAgIGlmIChwYXJ0aWFsX2xvYWRfYmlhcyA9PSAtMSAmJiBMT09QX1ZJTkZP X0xFTlMgKGxvb3BfdmluZm8pLmxlbmd0aCAoKSA+IDEpDQo+ICsgcmV0dXJu IGZhbHNlOw0KPiAgDQo+IC0gIExPT1BfVklORk9fUEFSVElBTF9MT0FEX1NU T1JFX0JJQVMgKGxvb3BfdmluZm8pID0gcGFydGlhbF9sb2FkX2JpYXM7DQo+ ICsgICAgICBMT09QX1ZJTkZPX1BBUlRJQUxfTE9BRF9TVE9SRV9CSUFTIChs b29wX3ZpbmZvKSA9IHBhcnRpYWxfbG9hZF9iaWFzOw0KPiArICAgIH0NCj4g IA0KPiAgICB1bnNpZ25lZCBpbnQgbWF4X25pdGVtc19wZXJfaXRlciA9IDE7 DQo+ICAgIHVuc2lnbmVkIGludCBpOw0KPiBAQCAtMTEzMTcsNyArMTEzMjAs OCBAQCBvcHRpbWl6ZV9tYXNrX3N0b3JlcyAoY2xhc3MgbG9vcCAqbG9vcCkN Cj4gICAgIGdzaV9uZXh0ICgmZ3NpKSkNCj4gIHsNCj4gICAgc3RtdCA9IGdz aV9zdG10IChnc2kpOw0KPiAtICAgaWYgKGdpbXBsZV9jYWxsX2ludGVybmFs X3AgKHN0bXQsIElGTl9NQVNLX1NUT1JFKSkNCj4gKyAgIGlmIChnaW1wbGVf Y2FsbF9pbnRlcm5hbF9wIChzdG10LCBJRk5fTUFTS19TVE9SRSkNCj4gKyAg ICAgICB8fCBnaW1wbGVfY2FsbF9pbnRlcm5hbF9wIChzdG10LCBJRk5fTEVO X01BU0tfU1RPUkUpKQ0KPiAgICAgIHdvcmtsaXN0LnNhZmVfcHVzaCAoc3Rt dCk7DQo+ICB9DQo+ICAgICAgfQ0KPiBAQCAtMTEzNDAsNyArMTEzNDQsOCBA QCBvcHRpbWl6ZV9tYXNrX3N0b3JlcyAoY2xhc3MgbG9vcCAqbG9vcCkNCj4g ICAgICAgIHRyZWUgemVybzsNCj4gIA0KPiAgICAgICAgbGFzdCA9IHdvcmts aXN0LnBvcCAoKTsNCj4gLSAgICAgIG1hc2sgPSBnaW1wbGVfY2FsbF9hcmcg KGxhc3QsIDIpOw0KPiArICAgICAgbWFzayA9IGdpbXBsZV9jYWxsX2FyZyAo DQo+ICsgbGFzdCwgZ2ltcGxlX2NhbGxfaW50ZXJuYWxfcCAoc3RtdCwgSUZO X0xFTl9NQVNLX1NUT1JFKSA/IDMgOiAyKTsNCiANCnVzZSB0aGUgcHJvcGVy IGlmbiBpbmRleCBjb21wdXRlIGZuDQogDQo+ICAgICAgICBiYiA9IGdpbXBs ZV9iYiAobGFzdCk7DQo+ICAgICAgICAvKiBDcmVhdGUgdGhlbl9iYiBhbmQg aWYtdGhlbiBzdHJ1Y3R1cmUgaW4gQ0ZHLCB0aGVuX2JiIGJlbG9uZ3MgdG8N Cj4gIHRoZSBzYW1lIGxvb3AgYXMgaWZfYmIuICBJdCBjb3VsZCBiZSBkaWZm ZXJlbnQgdG8gTE9PUCB3aGVuIHR3bw0KPiBAQCAtMTE0NzMsNyArMTE0Nzgs MTIgQEAgb3B0aW1pemVfbWFza19zdG9yZXMgKGNsYXNzIGxvb3AgKmxvb3Ap DQo+ICAgICAgfQ0KPiAgICAvKiBQdXQgb3RoZXIgbWFza2VkIHN0b3JlcyB3 aXRoIHRoZSBzYW1lIG1hc2sgdG8gU1RPUkVfQkIuICAqLw0KPiAgICBpZiAo d29ya2xpc3QuaXNfZW1wdHkgKCkNCj4gLSAgICAgICB8fCBnaW1wbGVfY2Fs bF9hcmcgKHdvcmtsaXN0Lmxhc3QgKCksIDIpICE9IG1hc2sNCj4gKyAgICAg ICB8fCBnaW1wbGVfY2FsbF9hcmcgKHdvcmtsaXN0Lmxhc3QgKCksDQo+ICsg ICBnaW1wbGVfY2FsbF9pbnRlcm5hbF9wICh3b3JrbGlzdC5sYXN0ICgpLA0K PiArICAgSUZOX0xFTl9NQVNLX1NUT1JFKQ0KPiArICAgICA/IDMNCj4gKyAg ICAgOiAyKQ0KIA0KdXNlIHRoZSBwcm9wZXIgaWZuIGluZGV4IGNvbXB1dGUg Zm4NCiANCj4gKyAgICAhPSBtYXNrDQo+ICAgICAgICB8fCB3b3JrbGlzdC5s YXN0ICgpICE9IHN0bXQxKQ0KPiAgICAgIGJyZWFrOw0KPiAgICBsYXN0ID0g d29ya2xpc3QucG9wICgpOw0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtdmVj dC1zbHAuY2MgYi9nY2MvdHJlZS12ZWN0LXNscC5jYw0KPiBpbmRleCBhYjg5 YTgyZjFiMy4uOTM3YjUyOTVkZjQgMTAwNjQ0DQo+IC0tLSBhL2djYy90cmVl LXZlY3Qtc2xwLmNjDQo+ICsrKyBiL2djYy90cmVlLXZlY3Qtc2xwLmNjDQo+ IEBAIC00ODksNiArNDg5LDcgQEAgc3RhdGljIGNvbnN0IGludCBjb25kX2V4 cHJfbWFwc1szXVs1XSA9IHsNCj4gIH07DQo+ICBzdGF0aWMgY29uc3QgaW50 IGFyZzFfbWFwW10gPSB7IDEsIDEgfTsNCj4gIHN0YXRpYyBjb25zdCBpbnQg YXJnMl9tYXBbXSA9IHsgMSwgMiB9Ow0KPiArc3RhdGljIGNvbnN0IGludCBh cmczX21hcFtdID0geyAxLCAzIH07DQo+ICBzdGF0aWMgY29uc3QgaW50IGFy ZzFfYXJnNF9tYXBbXSA9IHsgMiwgMSwgNCB9Ow0KPiAgc3RhdGljIGNvbnN0 IGludCBvcDFfb3AwX21hcFtdID0geyAyLCAxLCAwIH07DQo+ICANCj4gQEAg LTUyNCw2ICs1MjUsOSBAQCB2ZWN0X2dldF9vcGVyYW5kX21hcCAoY29uc3Qg Z2ltcGxlICpzdG10LCB1bnNpZ25lZCBjaGFyIHN3YXAgPSAwKQ0KPiAgICBj YXNlIElGTl9NQVNLX0xPQUQ6DQo+ICAgICAgcmV0dXJuIGFyZzJfbWFwOw0K PiAgDQo+ICsgICBjYXNlIElGTl9MRU5fTUFTS19MT0FEOg0KPiArICAgICBy ZXR1cm4gYXJnM19tYXA7DQo+ICsNCj4gICAgY2FzZSBJRk5fR0FUSEVSX0xP QUQ6DQo+ICAgICAgcmV0dXJuIGFyZzFfbWFwOw0KPiAgDQo+IEBAIC0xNzc5 LDYgKzE3ODMsNyBAQCB2ZWN0X2J1aWxkX3NscF90cmVlXzIgKHZlY19pbmZv ICp2aW5mbywgc2xwX3RyZWUgbm9kZSwNCj4gICAgICB7DQo+ICAgICAgICBp ZiAoZ2NhbGwgKnN0bXQgPSBkeW5fY2FzdCA8Z2NhbGwgKj4gKHN0bXRfaW5m by0+c3RtdCkpDQo+ICBnY2NfYXNzZXJ0IChnaW1wbGVfY2FsbF9pbnRlcm5h bF9wIChzdG10LCBJRk5fTUFTS19MT0FEKQ0KPiArICAgICB8fCBnaW1wbGVf Y2FsbF9pbnRlcm5hbF9wIChzdG10LCBJRk5fTEVOX01BU0tfTE9BRCkNCiAN Ckl0J3MgcHJvYmFibHkgbm90IG5lY2Vzc2FyeSB0byBoYW5kbGUgdGhpcyBp ZiBpZi1jb252ZXJzaW9uIGVtaXRzDQpqdXN0IElGTl9NQVNLX0xPQUQuDQog DQo+ICAgICAgfHwgZ2ltcGxlX2NhbGxfaW50ZXJuYWxfcCAoc3RtdCwgSUZO X0dBVEhFUl9MT0FEKQ0KPiAgICAgIHx8IGdpbXBsZV9jYWxsX2ludGVybmFs X3AgKHN0bXQsIElGTl9NQVNLX0dBVEhFUl9MT0FEKSk7DQo+ICAgICAgICBl bHNlDQo+IGRpZmYgLS1naXQgYS9nY2MvdHJlZS12ZWN0LXN0bXRzLmNjIGIv Z2NjL3RyZWUtdmVjdC1zdG10cy5jYw0KPiBpbmRleCBhN2FjYzAzMmQ0Ny4u OWI3OTdjNjFjODggMTAwNjQ0DQo+IC0tLSBhL2djYy90cmVlLXZlY3Qtc3Rt dHMuY2MNCj4gKysrIGIvZ2NjL3RyZWUtdmVjdC1zdG10cy5jYw0KPiBAQCAt MTgzNyw2ICsxODM3LDE1IEBAIGNoZWNrX2xvYWRfc3RvcmVfZm9yX3BhcnRp YWxfdmVjdG9ycyAobG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZvLCB0cmVlIHZl Y3R5cGUsDQo+ICAgICAgICB1c2luZ19wYXJ0aWFsX3ZlY3RvcnNfcCA9IHRy dWU7DQo+ICAgICAgfQ0KPiAgDQo+ICsgIGlmIChjYW5fdmVjX2xlbl9tYXNr X2xvYWRfc3RvcmVfcCAodmVjbW9kZSwgaXNfbG9hZCkpDQo+ICsgICAgew0K PiArICAgICAgbnZlY3RvcnMgPSBncm91cF9tZW1vcnlfbnZlY3RvcnMgKGdy b3VwX3NpemUgKiB2ZiwgbnVuaXRzKTsNCj4gKyAgICAgIC8qIExlbmd0aCBp cyB1c2VkIG9uIGxvb3AgY29udHJvbCBhbmQgbWFzayBmb3IgZmxvdyBjb250 cm9sLiovDQo+ICsgICAgICB2ZWNfbG9vcF9sZW5zICpsZW5zID0gJkxPT1Bf VklORk9fTEVOUyAobG9vcF92aW5mbyk7DQo+ICsgICAgICB2ZWN0X3JlY29y ZF9sb29wX2xlbiAobG9vcF92aW5mbywgbGVucywgbnZlY3RvcnMsIHZlY3R5 cGUsIDEpOw0KPiArICAgICAgdXNpbmdfcGFydGlhbF92ZWN0b3JzX3AgPSB0 cnVlOw0KPiArICAgIH0NCj4gKw0KIA0Kc28gdGhpcyBhbnN3ZXJzIG15IHF1 ZXN0aW9uIC0geW91IGp1c3QgaGF2ZSBsZW5fbWFza3tsb2FkLHN0b3JlfT8N CiANCj4gICAgaWYgKCF1c2luZ19wYXJ0aWFsX3ZlY3RvcnNfcCkNCj4gICAg ICB7DQo+ICAgICAgICBpZiAoZHVtcF9lbmFibGVkX3AgKCkpDQo+IEBAIC03 OTc4LDggKzc5ODcsOSBAQCB2ZWN0b3JpemFibGVfc3RvcmUgKHZlY19pbmZv ICp2aW5mbywNCj4gICAgICAgIGlmIChtZW1vcnlfYWNjZXNzX3R5cGUgPT0g Vk1BVF9DT05USUdVT1VTKQ0KPiAgew0KPiAgICBpZiAoIVZFQ1RPUl9NT0RF X1AgKHZlY19tb2RlKQ0KPiAtICAgICAgIHx8ICFjYW5fdmVjX21hc2tfbG9h ZF9zdG9yZV9wICh2ZWNfbW9kZSwNCj4gLSAgICAgIFRZUEVfTU9ERSAobWFz a192ZWN0eXBlKSwgZmFsc2UpKQ0KPiArICAgICAgIHx8ICghY2FuX3ZlY19t YXNrX2xvYWRfc3RvcmVfcCAodmVjX21vZGUsDQo+ICsgICAgICAgVFlQRV9N T0RFIChtYXNrX3ZlY3R5cGUpLCBmYWxzZSkNCj4gKyAgICYmICFjYW5fdmVj X2xlbl9tYXNrX2xvYWRfc3RvcmVfcCAodmVjX21vZGUsIGZhbHNlKSkpDQo+ ICAgICAgcmV0dXJuIGZhbHNlOw0KPiAgfQ0KPiAgICAgICAgZWxzZSBpZiAo bWVtb3J5X2FjY2Vzc190eXBlICE9IFZNQVRfTE9BRF9TVE9SRV9MQU5FUw0K PiBAQCAtODk0Miw3ICs4OTUyLDM4IEBAIHZlY3Rvcml6YWJsZV9zdG9yZSAo dmVjX2luZm8gKnZpbmZvLA0KPiAgfQ0KPiAgDQo+ICAgICAgICAvKiBBcmd1 bWVudHMgYXJlIHJlYWR5LiAgQ3JlYXRlIHRoZSBuZXcgdmVjdG9yIHN0bXQu ICAqLw0KPiAtICAgICAgIGlmIChmaW5hbF9tYXNrKQ0KPiArICAgICAgIGlm IChjYW5fdmVjX2xlbl9tYXNrX2xvYWRfc3RvcmVfcCAoVFlQRV9NT0RFICh2 ZWN0eXBlKSwgZmFsc2UpDQo+ICsgICAmJiAoZmluYWxfbWFzayB8fCBsb29w X2xlbnMpKQ0KIA0KSSB0aGluayB3ZSByZWFsbHkgd2FudCB0byBjb21tb24g dGhpcyBzb21laG93LCBoYXZpbmcNCmlmIChsb29wX2xlbnMpIGRvIHRoZSBm aW5hbF9sZW4gY29tcHV0ZSBhbmQgdGhlbiBhZnRlcndhcmRzDQpzZWxlY3Qg dGhlIElGTiB0byBjcmVhdGUsIGZpbGxpbmcgcmVxdWlyZWQgZGVmYXVsdCBh cmdzIG9mDQpmaW5hbF9tYXNrIGFuZCBmaW5hbF9sZW4gaWYgbm90IGNvbXB1 dGVkLg0KIA0KPiArIHsNCj4gKyAgIHRyZWUgcHRyID0gYnVpbGRfaW50X2Nz dCAocmVmX3R5cGUsIGFsaWduICogQklUU19QRVJfVU5JVCk7DQo+ICsgICBw b2x5X3VpbnQ2NCBudW5pdHMgPSBUWVBFX1ZFQ1RPUl9TVUJQQVJUUyAodmVj dHlwZSk7DQo+ICsgICBpZiAoIWZpbmFsX21hc2spDQo+ICsgICAgIHsNCj4g KyAgICAgICBtYWNoaW5lX21vZGUgbWFza19tb2RlDQo+ICsgPSB0YXJnZXRt LnZlY3Rvcml6ZS5nZXRfbWFza19tb2RlIChUWVBFX01PREUgKHZlY3R5cGUp KQ0KPiArICAgICAucmVxdWlyZSAoKTsNCj4gKyAgICAgICBtYXNrX3ZlY3R5 cGUNCj4gKyA9IGJ1aWxkX3RydXRoX3ZlY3Rvcl90eXBlX2Zvcl9tb2RlIChu dW5pdHMsIG1hc2tfbW9kZSk7DQo+ICsgICAgICAgdHJlZSBtYXNrID0gYnVp bGRfaW50X2NzdCAoVFJFRV9UWVBFIChtYXNrX3ZlY3R5cGUpLCAtMSk7DQo+ ICsgICAgICAgZmluYWxfbWFzayA9IGJ1aWxkX3ZlY3Rvcl9mcm9tX3ZhbCAo bWFza192ZWN0eXBlLCBtYXNrKTsNCj4gKyAgICAgfQ0KPiArICAgdHJlZSBp dl90eXBlID0gTE9PUF9WSU5GT19SR1JPVVBfSVZfVFlQRSAobG9vcF92aW5m byk7DQo+ICsgICB0cmVlIGZpbmFsX2xlbjsNCj4gKyAgIGlmIChsb29wX2xl bnMpDQo+ICsgICAgIGZpbmFsX2xlbiA9IHZlY3RfZ2V0X2xvb3BfbGVuIChs b29wX3ZpbmZvLCBnc2ksIGxvb3BfbGVucywNCj4gKyAgICB2ZWNfbnVtICog bmNvcGllcywgdmVjdHlwZSwNCj4gKyAgICB2ZWNfbnVtICogaiArIGksIDEp Ow0KPiArICAgZWxzZQ0KPiArICAgICBmaW5hbF9sZW4gPSBidWlsZF9pbnRf Y3N0IChpdl90eXBlLCBudW5pdHMpOw0KPiArICAgZ2NhbGwgKmNhbGwNCj4g KyAgICAgPSBnaW1wbGVfYnVpbGRfY2FsbF9pbnRlcm5hbCAoSUZOX0xFTl9N QVNLX1NUT1JFLCA1LA0KPiArICAgZGF0YXJlZl9wdHIsIHB0ciwgZmluYWxf bGVuLA0KPiArICAgZmluYWxfbWFzaywgdmVjX29wcm5kKTsNCj4gKyAgIGdp bXBsZV9jYWxsX3NldF9ub3Rocm93IChjYWxsLCB0cnVlKTsNCj4gKyAgIHZl Y3RfZmluaXNoX3N0bXRfZ2VuZXJhdGlvbiAodmluZm8sIHN0bXRfaW5mbywg Y2FsbCwgZ3NpKTsNCj4gKyAgIG5ld19zdG10ID0gY2FsbDsNCj4gKyB9DQo+ ICsgICAgICAgZWxzZSBpZiAoZmluYWxfbWFzaykNCj4gIHsNCj4gICAgdHJl ZSBwdHIgPSBidWlsZF9pbnRfY3N0IChyZWZfdHlwZSwgYWxpZ24gKiBCSVRT X1BFUl9VTklUKTsNCj4gICAgZ2NhbGwgKmNhbGwNCj4gQEAgLTk0MDcsOCAr OTQ0OCw5IEBAIHZlY3Rvcml6YWJsZV9sb2FkICh2ZWNfaW5mbyAqdmluZm8s DQo+ICB7DQo+ICAgIG1hY2hpbmVfbW9kZSB2ZWNfbW9kZSA9IFRZUEVfTU9E RSAodmVjdHlwZSk7DQo+ICAgIGlmICghVkVDVE9SX01PREVfUCAodmVjX21v ZGUpDQo+IC0gICAgICAgfHwgIWNhbl92ZWNfbWFza19sb2FkX3N0b3JlX3Ag KHZlY19tb2RlLA0KPiAtICAgICAgVFlQRV9NT0RFIChtYXNrX3ZlY3R5cGUp LCB0cnVlKSkNCj4gKyAgICAgICB8fCAoIWNhbl92ZWNfbWFza19sb2FkX3N0 b3JlX3AgKHZlY19tb2RlLA0KPiArICAgICAgIFRZUEVfTU9ERSAobWFza192 ZWN0eXBlKSwgdHJ1ZSkNCj4gKyAgICYmICFjYW5fdmVjX2xlbl9tYXNrX2xv YWRfc3RvcmVfcCAodmVjX21vZGUsIGZhbHNlKSkpDQo+ICAgICAgcmV0dXJu IGZhbHNlOw0KPiAgfQ0KPiAgICAgICAgZWxzZSBpZiAobWVtb3J5X2FjY2Vz c190eXBlICE9IFZNQVRfTE9BRF9TVE9SRV9MQU5FUw0KPiBAQCAtMTAzMDEs NyArMTAzNDMsNDcgQEAgdmVjdG9yaXphYmxlX2xvYWQgKHZlY19pbmZvICp2 aW5mbywNCj4gICAgICAgIGFsaWduLCBtaXNhbGlnbik7DQo+ICAgICAgYWxp Z24gPSBsZWFzdF9iaXRfaHdpIChtaXNhbGlnbiB8IGFsaWduKTsNCj4gIA0K PiAtICAgICBpZiAoZmluYWxfbWFzaykNCj4gKyAgICAgaWYgKGNhbl92ZWNf bGVuX21hc2tfbG9hZF9zdG9yZV9wIChUWVBFX01PREUgKHZlY3R5cGUpLA0K PiArICAgICAgICB0cnVlKQ0KPiArICYmIChmaW5hbF9tYXNrIHx8IGxvb3Bf bGVucykNCj4gKyAmJiBtZW1vcnlfYWNjZXNzX3R5cGUgIT0gVk1BVF9JTlZB UklBTlQpDQogDQpzYW1lDQogDQo+ICsgICAgICAgew0KPiArIHRyZWUgcHRy DQo+ICsgICA9IGJ1aWxkX2ludF9jc3QgKHJlZl90eXBlLCBhbGlnbiAqIEJJ VFNfUEVSX1VOSVQpOw0KPiArIHBvbHlfdWludDY0IG51bml0cyA9IFRZUEVf VkVDVE9SX1NVQlBBUlRTICh2ZWN0eXBlKTsNCj4gKyBpZiAoIWZpbmFsX21h c2spDQo+ICsgICB7DQo+ICsgICAgIG1hY2hpbmVfbW9kZSBtYXNrX21vZGUN Cj4gKyAgICAgICA9IHRhcmdldG0udmVjdG9yaXplDQo+ICsgICAuZ2V0X21h c2tfbW9kZSAoVFlQRV9NT0RFICh2ZWN0eXBlKSkNCj4gKyAgIC5yZXF1aXJl ICgpOw0KPiArICAgICBtYXNrX3ZlY3R5cGUNCj4gKyAgICAgICA9IGJ1aWxk X3RydXRoX3ZlY3Rvcl90eXBlX2Zvcl9tb2RlIChudW5pdHMsDQo+ICsgICBt YXNrX21vZGUpOw0KPiArICAgICB0cmVlIG1hc2sNCj4gKyAgICAgICA9IGJ1 aWxkX2ludF9jc3QgKFRSRUVfVFlQRSAobWFza192ZWN0eXBlKSwgLTEpOw0K PiArICAgICBmaW5hbF9tYXNrDQo+ICsgICAgICAgPSBidWlsZF92ZWN0b3Jf ZnJvbV92YWwgKG1hc2tfdmVjdHlwZSwgbWFzayk7DQo+ICsgICB9DQogDQph bmQgc3BsaXQgdGhpcyBvdXQgdG8gYSBoZWxwZXIgZnVuY3Rpb24NCiANCj4g KyB0cmVlIGl2X3R5cGUgPSBMT09QX1ZJTkZPX1JHUk9VUF9JVl9UWVBFIChs b29wX3ZpbmZvKTsNCj4gKyB0cmVlIGZpbmFsX2xlbjsNCj4gKyBpZiAobG9v cF9sZW5zKQ0KPiArICAgZmluYWxfbGVuDQo+ICsgICAgID0gdmVjdF9nZXRf bG9vcF9sZW4gKGxvb3BfdmluZm8sIGdzaSwgbG9vcF9sZW5zLA0KPiArIHZl Y19udW0gKiBuY29waWVzLCB2ZWN0eXBlLA0KPiArIHZlY19udW0gKiBqICsg aSwgMSk7DQo+ICsgZWxzZQ0KPiArICAgZmluYWxfbGVuID0gYnVpbGRfaW50 X2NzdCAoaXZfdHlwZSwgbnVuaXRzKTsNCj4gKw0KPiArIGdjYWxsICpjYWxs DQo+ICsgICA9IGdpbXBsZV9idWlsZF9jYWxsX2ludGVybmFsIChJRk5fTEVO X01BU0tfTE9BRCwgNCwNCj4gKyBkYXRhcmVmX3B0ciwgcHRyLA0KPiArIGZp bmFsX2xlbiwgZmluYWxfbWFzayk7DQo+ICsgZ2ltcGxlX2NhbGxfc2V0X25v dGhyb3cgKGNhbGwsIHRydWUpOw0KPiArIG5ld19zdG10ID0gY2FsbDsNCj4g KyBkYXRhX3JlZiA9IE5VTExfVFJFRTsNCj4gKyAgICAgICB9DQo+ICsgICAg IGVsc2UgaWYgKGZpbmFsX21hc2spDQo+ICAgICAgICB7DQo+ICB0cmVlIHB0 ciA9IGJ1aWxkX2ludF9jc3QgKHJlZl90eXBlLA0KPiAgICBhbGlnbiAqIEJJ VFNfUEVSX1VOSVQpOw0KPiBAQCAtMTMwMjcsNyArMTMxMDksOCBAQCB2ZWN0 X2dldF92ZWN0b3JfdHlwZXNfZm9yX3N0bXQgKHZlY19pbmZvICp2aW5mbywg c3RtdF92ZWNfaW5mbyBzdG10X2luZm8sDQo+ICANCj4gICAgaWYgKGdpbXBs ZV9nZXRfbGhzIChzdG10KSA9PSBOVUxMX1RSRUUNCj4gICAgICAgIC8qIE1B U0tfU1RPUkUgaGFzIG5vIGxocywgYnV0IGlzIG9rLiAgKi8NCj4gLSAgICAg ICYmICFnaW1wbGVfY2FsbF9pbnRlcm5hbF9wIChzdG10LCBJRk5fTUFTS19T VE9SRSkpDQo+ICsgICAgICAmJiAhZ2ltcGxlX2NhbGxfaW50ZXJuYWxfcCAo c3RtdCwgSUZOX01BU0tfU1RPUkUpDQo+ICsgICAgICAmJiAhZ2ltcGxlX2Nh bGxfaW50ZXJuYWxfcCAoc3RtdCwgSUZOX0xFTl9NQVNLX1NUT1JFKSkNCiAN ClNlZSBpZi1jb252ZXJzaW9uIGNvbW1lbnQuICBUaGlzIHNob3VsZG4ndCBi ZSBuZWNlc3NhcnkuDQogDQo+ICAgICAgew0KPiAgICAgICAgaWYgKGlzX2Eg PGdjYWxsICo+IChzdG10KSkNCj4gIHsNCj4gQEAgLTEzMDcxLDYgKzEzMTU0 LDggQEAgdmVjdF9nZXRfdmVjdG9yX3R5cGVzX2Zvcl9zdG10ICh2ZWNfaW5m byAqdmluZm8sIHN0bXRfdmVjX2luZm8gc3RtdF9pbmZvLA0KPiAgc2NhbGFy X3R5cGUgPSBUUkVFX1RZUEUgKERSX1JFRiAoZHIpKTsNCj4gICAgICAgIGVs c2UgaWYgKGdpbXBsZV9jYWxsX2ludGVybmFsX3AgKHN0bXQsIElGTl9NQVNL X1NUT1JFKSkNCj4gIHNjYWxhcl90eXBlID0gVFJFRV9UWVBFIChnaW1wbGVf Y2FsbF9hcmcgKHN0bXQsIDMpKTsNCj4gKyAgICAgIGVsc2UgaWYgKGdpbXBs ZV9jYWxsX2ludGVybmFsX3AgKHN0bXQsIElGTl9MRU5fTUFTS19TVE9SRSkp DQo+ICsgc2NhbGFyX3R5cGUgPSBUUkVFX1RZUEUgKGdpbXBsZV9jYWxsX2Fy ZyAoc3RtdCwgNCkpOw0KPiAgICAgICAgZWxzZQ0KPiAgc2NhbGFyX3R5cGUg PSBUUkVFX1RZUEUgKGdpbXBsZV9nZXRfbGhzIChzdG10KSk7DQo+ICANCj4g ZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3Rvcml6ZXIuY2MgYi9nY2MvdHJl ZS12ZWN0b3JpemVyLmNjDQo+IGluZGV4IGEwNDhlOWQ4OTE3Li4xOTMxMjQw NGFjNCAxMDA2NDQNCj4gLS0tIGEvZ2NjL3RyZWUtdmVjdG9yaXplci5jYw0K PiArKysgYi9nY2MvdHJlZS12ZWN0b3JpemVyLmNjDQo+IEBAIC0xMTAxLDYg KzExMDEsOCBAQCB0cnlfdmVjdG9yaXplX2xvb3BfMSAoaGFzaF90YWJsZTxz aW1kdWlkX3RvX3ZmPiAqJnNpbWR1aWRfdG9fdmZfaHRhYiwNCj4gIHsNCj4g ICAgaW50ZXJuYWxfZm4gaWZuID0gZ2ltcGxlX2NhbGxfaW50ZXJuYWxfZm4g KGNhbGwpOw0KPiAgICBpZiAoaWZuID09IElGTl9NQVNLX0xPQUQgfHwgaWZu ID09IElGTl9NQVNLX1NUT1JFDQo+ICsgICAgICAgfHwgaWZuID09IElGTl9M RU5fTUFTS19MT0FEDQo+ICsgICAgICAgfHwgaWZuID09IElGTl9MRU5fTUFT S19TVE9SRQ0KIA0KTGlrZXdpc2UuDQogDQo+ICAgICAgICAvKiBEb24ndCBr ZWVwIHRoZSBpZi1jb252ZXJ0ZWQgcGFydHMgd2hlbiB0aGUgaWZuIHdpdGgN Cj4gIHNwZWNpZmMgdHlwZSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBiYWNr ZW5kLiAgKi8NCj4gICAgICAgIHx8IChkaXJlY3RfaW50ZXJuYWxfZm5fcCAo aWZuKQ0KPiANCiANCi0tIA0KUmljaGFyZCBCaWVuZXIgPHJndWVudGhlckBz dXNlLmRlPg0KU1VTRSBTb2Z0d2FyZSBTb2x1dGlvbnMgR2VybWFueSBHbWJI LCBGcmFua2Vuc3RyYXNzZSAxNDYsIDkwNDYxIE51ZXJuYmVyZywNCkdlcm1h bnk7IEdGOiBJdm8gVG90ZXYsIEFuZHJldyBNeWVycywgQW5kcmV3IE1jRG9u YWxkLCBCb3VkaWVuIE1vZXJtYW47DQpIUkIgMzY4MDkgKEFHIE51ZXJuYmVy ZykNCiANCg== ------=_001_NextPart586183214086_=------