From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbguseast3.qq.com (smtpbguseast3.qq.com [54.243.244.52]) by sourceware.org (Postfix) with ESMTPS id B111B3858D28 for ; Wed, 12 Apr 2023 09:15:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B111B3858D28 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: bizesmtp80t1681290951tcd24xlf Received: from LAPTOP-EPITNQBU ( [58.60.1.20]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 12 Apr 2023 17:15:49 +0800 (CST) X-QQ-SSF: 01400000000000F0O000000A0000000 X-QQ-FEAT: UYv57O1xLruclf9fag+CmAaleyvzYtomuFqbUI/FNc7NbUN5vIrR6b3T6vGe3 +zu1Oy25aoNYSnaI8XXBWZ4rvtP5NlHm1fX86UweVDU1q03StRw1ErwzfXJHVPCQUWufGwV esZD8IbwmMewqujFGiQ9x60wk16Q7L8m9fZjp6bKo4mwlAqQBEpAYOWjXHb8Yf/ryMx62GP vNB4fc8xXIK36RSysgxTysyyax8QREhIPeMY2dzWpcBa/3oFcLFOdHjEYyu98BiFYI6gPLH cMwuZpGi2ghGQXesIqVqppvKZYuFxMsb0TY2q84WdBaPDAOK3tFj3MTTy/V/KmL1UHEYyU0 Jc9s+LQLTrspKtxLsnhX+OyvgjAwL8EbRQ1O8rYcAwzOC7pED9zLSmkgrsJqOhJG1F7bj91 8g2zESVoYLgbFYDpHUf9OW13NHjVwsByoG650DipTlg= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 4949090061027586340 Date: Wed, 12 Apr 2023 17:15:50 +0800 From: "juzhe.zhong@rivai.ai" To: rguenther Cc: richard.sandiford , gcc-patches , jeffreyalaw Subject: Re: Re: [PATCH] VECT: Add WHILE_LEN pattern for decrement IV support for auto-vectorization References: <20230407014741.139387-1-juzhe.zhong@rivai.ai>, <63723855B0BF2130+2023041120125573846623@rivai.ai>, , , <139DA38AFC9CA5B5+2023041216004591287739@rivai.ai>, X-Priority: 3 X-GUID: 5CB99AA6-AAD2-4929-B7E3-D8D614F2481B X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: Content-Type: multipart/alternative; boundary="----=_001_NextPart418128270042_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvr:qybglogicsvr7 X-Spam-Status: No, score=-9.4 required=5.0 tests=BAYES_00,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,RCVD_IN_BARRACUDACENTRAL,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,RCVD_IN_SORBS_WEB,SCC_5_SHORT_WORD_LINES,SPF_HELO_PASS,SPF_PASS,TXREP,T_KAM_HTML_FONT_INVALID 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_NextPart418128270042_=---- Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: base64 DQo+PiBUaGFua3MgZm9yIHRoZSBkZXRhaWxlZCBleHBsYW5hdGlvbi4gIEp1 c3QgdG8gY2xhcmlmeSAtIHdpdGggUlZWDQo+PiB0aGVyZSdzIG9ubHkgYSBz aW5nbGUgbWFzayByZWdpc3RlciwgdjAudCwgb3IgZGlkIHlvdSB3YW50IHRv DQo+PiBzYXkgYW4gaW5zdHJ1Y3Rpb24gY2FuIG9ubHkgc3BlY2lmeSBhIHNp bmdsZSBtYXNrIHJlZ2lzdGVyPw0KDQpSVlYgaGFzIDMyICh2MH52MzEpIHZl Y3RvciByZWdpc3RlciBpbiB0b3RhbC4NCldlIGNhbiBzdG9yZSB2ZWN0b3Ig ZGF0YSB2YWx1ZSBvciBtYXNrIHZhbHVlIGluIGFueSBvZiB0aGVtLg0KV2Ug YWxzbyBoYXZlIG1hc2stbG9naWMgaW5zdHJ1Y3Rpb24gZm9yIGV4YW1wbGUg bWFzay1hbmQgYmV0d2VlbiBhbnkgdmVjdG9yIHJlZ2lzdGVyLg0KDQpIb3dl dmVyLCBhbnkgdmVjdG9yIG9wZXJhdGlvbiBmb3IgZXhhbXBsZSBsaWtlIHZh ZGQudnYgY2FuIG9ubHkgIHByZWRpY2F0ZWQgYnkgdjAgKGluIGFzbSBpcyB2 MC50KSB3aGljaCBpcyB0aGUgZmlyc3QgdmVjdG9yIHJlZ2lzdGVyLg0KV2Ug Y2FuIHByZWRpY2F0ZSB2YWRkLnZ2IHdpdGggdjEgLSB2MzEuDQoNClNvLCB5 b3UgY2FuIGltYWdlIGV2ZXJ5IHRpbWUgd2Ugd2FudCB0byB1c2UgYSBtYXNr IHRvIHByZWRpY2F0ZSBhIHZlY3RvciBvcGVyYXRpb24sIHdlIHNob3VsZCBh bHdheXMgZmlyc3Qgc3RvcmUgdGhlIG1hc2sgdmFsdWUNCmludG8gdjAuDQoN ClNvLCB3ZSBjYW4gd3JpdGUgaW50cmluc2ljIHNlcXVlbmNlIGxpa2UgdGhp czoNCg0Kdm1zZXEgdjAsdjgsdjkgKHN0b3JlIG1hc2sgdmFsdWUgdG8gdjAp DQp2bXNsdCB2MSx2MTAsdjExIChzdG9yZSBtYXNrIHZhbHVlIHRvIHYxKQ0K dm1hbmQgdjAsdjAsdjENCnZhZGQudnYgLi4udjAudCAocHJlZGljYXRlIG1h c2sgc2hvdWxkIGFsd2F5cyBiZSBtYXNrKS4NCg0KPj4gQVJNIFNWRSB3b3Vs ZCBoYXZlIGEgbG9vcCBjb250cm9sIG1hc2sgYW5kIGEgc2VwYXJhdGUgbWFz aw0KPj4gZm9yIHRoZSBpZiAoY29uZFtpXSkgd2hpY2ggd291bGQgYmUgY29t YmluZWQgd2l0aCBhIG1hc2stYW5kDQo+PiBpbnN0cnVjdGlvbiB0byBhIHRo aXJkIG1hc2sgd2hpY2ggaXMgdGhlbiB1c2VkIG9uIHRoZQ0KPj4gcHJlZGlj YXRlZCBpbnN0cnVjdGlvbnMuDQoNClllYWgsIEkga25vdyBpdC4gQVJNIFNW RSB3YXkgaXMgYSBtb3JlIGVsZWdhbnQgd2F5IHRoYW4gUlZWIGRvLiANCkhv d2V2ZXIsIGZvciBSVlYsIHdlIGNhbid0IGZvbGxvdyB0aGlzIGZsb3cuDQpX ZSBkb24ndCBoYXZlIGEgICJ3aGlsZWxvIiBpbnN0cnVjdGlvbiB0byBnZW5l cmF0ZSBsb29wIGNvbnRyb2wgbWFzay4NCldlIG9ubHkgY2FuIGRvIGxvb3Ag Y29udHJvbCB3aXRoIGxlbmd0aCBnZW5lcmF0ZWQgYnkgdnNldHZsLg0KQW5k IHdlIGNhbiBvbmx5IHVzZSAidjAiIHRvIG1hc2sgcHJlZGljYXRlIHZhZGQu dnYsIGFuZCBtYXNrIHZhbHVlIGNhbiBvbmx5IGdlbmVyYXRlZCBieSBjb21w YXJpc29uIG9yIG1hc2sgbG9naWNhbCBpbnN0cnVjdGlvbnMuIA0KDQo+PiBQ b3dlclBDIGFuZCBzMzkweCBtaWdodCBiZSBhYmxlIHRvIHVzZSBXSElMRV9M RU4gYXMgd2VsbCAodGhvdWdoDQo+PiB0aGV5IG9ubHkgaGF2ZSBMRU4gdmFy aWFudHMgb2YgbG9hZHMgYW5kIHN0b3JlcykgLSBvZiBjb3Vyc2UNCj4+IG9u bHkgInNpbXVsYXRpbmcgaXQiLiAgRm9yIHRoZSBmaXhlZC12ZWN0b3ItbGVu Z3RoIElTQXMgdGhlDQo+PiBwcmVkaWNhdGVkIHZlY3RvciBsb29wIElNSE8g bWFrZXMgbW9zdCBzZW5zZSBmb3IgdGhlIGVwaWxvZ3VlIHRvDQo+PiBoYW5k bGUgbG93LXRyaXAgbG9vcHMgYmV0dGVyLg0KDQpZZWFoLCBJIHdvbmRlciBo b3cgdGhleSBkbyB0aGUgZmxvdyBjb250cm9sIChpZiAoY29uZFtpXSkpLiAN CkZvciBSVlYsIHlvdSBjYW4gaW1hZ2UgSSB3aWxsIG5lZWQgdG8gYWRkIGEg cGF0dGVybiBMRU5fTUFTS19MT0FEL0xFTl9NQVNLX1NUT1JFIChsZW5ndGgg Z2VuZXJhdGVkIGJ5IFdISUxFX0xFTiBhbmQgbWFzayBnZW5lcmF0ZWQgYnkg Y29tcGFyaXNvbikNCg0KSSB0aGluayB3ZSBjYW4gQ0MgSUJNIGZvbGtzIHRv IHNlZSB3aGV0aGVyIHdlIGNhbiBtYWtlIFdISUxFX0xFTiB3b3JrcyANCmZv ciBib3RoIElCTSBhbmQgUlZWID8gDQoNClRoYW5rcy4NCg0KDQpqdXpoZS56 aG9uZ0ByaXZhaS5haQ0KIA0KRnJvbTogUmljaGFyZCBCaWVuZXINCkRhdGU6 IDIwMjMtMDQtMTIgMTY6NDINClRvOiBqdXpoZS56aG9uZ0ByaXZhaS5haQ0K Q0M6IHJpY2hhcmQuc2FuZGlmb3JkOyBnY2MtcGF0Y2hlczsgamVmZnJleWFs YXcNClN1YmplY3Q6IFJlOiBSZTogW1BBVENIXSBWRUNUOiBBZGQgV0hJTEVf TEVOIHBhdHRlcm4gZm9yIGRlY3JlbWVudCBJViBzdXBwb3J0IGZvciBhdXRv LXZlY3Rvcml6YXRpb24NCk9uIFdlZCwgMTIgQXByIDIwMjMsIGp1emhlLnpo b25nQHJpdmFpLmFpIHdyb3RlOg0KIA0KPiBUaGFuayB5b3UgdmVyeSBtdWNo IGZvciByZXBseS4NCj4gDQo+IFdISUxFX0xFTiBpcyB0aGUgcGF0dGVybiB0 aGF0IGNhbGN1bGF0ZXMgdGhlIG51bWJlciBvZiB0aGUgZWxlbWVudHMgb2Yg dGhlIHZlY3RvciB3aWxsIGJlIHVwZGF0ZWQgaW4gZWFjaCBpdGVyYXRpb24u DQo+IEZvciBSVlYsIHdlIHVzZSB2c2V0dmwgaW5zdHJ1Y3Rpb24gdG8gY2Fs Y3VsYXRlIHRoZSBudW1iZXIgb2YgdGhlIGVsZW1lbnRzIG9mIHRoZSB2ZWN0 b3IuDQo+IA0KPiBXSElMRV9VTFQgY2FuIG5vdCB3b3JrIGZvciBSVlYgc2lu Y2UgV0hJTEVfVUxUIGlzIGdlbmVyYXRpbmcgbWFzayB0byBwcmVkaWNhdGUg dmVjdG9yIG9wZXJhdGlvbiwgYnV0IFJWViBkbyBub3QNCj4gdXNlIG1hc2sg dG8gZG8gdGhlIGxvb3Agc3RyaXAgbWluaW5nIChSVlYgb25seSB1c2UgbWFz ayBmb3IgY29udHJvbCBmbG93IGluc2lkZSB0aGUgbG9vcCkuDQo+IA0KPiBI ZXJlIGlzIHRoZSBleGFtcGxlIFdISUxFX1VMVCB3b3JraW5nIGluIEFSTSBT VkU6DQo+IGh0dHBzOi8vZ29kYm9sdC5vcmcvei9qS3NUOEUxaFAgDQo+IA0K PiBUaGUgZmlyc3QgZXhhbXBsZSBpczoNCj4gdm9pZCBmb28gKGludDMyX3Qg KiBfX3Jlc3RyaWN0IGEsIGludDMyX3QgKiBfX3Jlc3RyaWN0IGIsIGludCBu KQ0KPiB7DQo+ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykNCj4g ICAgICAgYVtpXSA9IGFbaV0gKyBiW2ldOw0KPiB9DQo+IA0KPiBBUk0gU1ZF Og0KPiBmb286DQo+ICAgICAgICAgY21wICAgICB3MiwgMA0KPiAgICAgICAg IGJsZSAgICAgLkwxDQo+ICAgICAgICAgbW92ICAgICB4MywgMA0KPiAgICAg ICAgIGNudHcgICAgeDQNCj4gICAgICAgICB3aGlsZWxvIHAwLnMsIHd6ciwg dzINCj4gLkwzOg0KPiAgICAgICAgIGxkMXcgICAgejEucywgcDAveiwgW3gw LCB4MywgbHNsIDJdDQo+ICAgICAgICAgbGQxdyAgICB6MC5zLCBwMC96LCBb eDEsIHgzLCBsc2wgMl0NCj4gICAgICAgICBhZGQgICAgIHowLnMsIHowLnMs IHoxLnMNCj4gICAgICAgICBzdDF3ICAgIHowLnMsIHAwLCBbeDAsIHgzLCBs c2wgMl0NCj4gICAgICAgICBhZGQgICAgIHgzLCB4MywgeDQNCj4gICAgICAg ICB3aGlsZWxvIHAwLnMsIHczLCB3Mg0KPiAgICAgICAgIGIuYW55ICAgLkwz DQo+IC5MMToNCj4gICAgICAgICByZXQNCj4gDQo+IEhlcmUsIHdoaWxlbG8g d2lsbCBnZW5lcmF0ZSB0aGUgbWFzayBhY2NvcmRpbmcgdG8gdzMgdG8gdzIu DQo+IFNvIGZvciBleGFtcGxlLCBpZiB3MyA9IDAsIGFuZCB3MiA9IDMgKFN1 cHBvc2UgbWFjaGluZSB2ZWN0b3IgbGVuZ3RoID4gMykuDQo+IFRoZW4gaXQg d2lsbCBnZW5lcmF0ZSBhIG1hc2sgd2l0aCAwYjExMSBtYXNrIHRvIHByZWRp Y2F0ZSBsb2FkcyBhbmQgc3RvcmVzLg0KPiANCj4gRm9yIFJWViwgd2UgY2Fu J3QgZG8gdGhhdCBzaW5jZSBSVlYgZG9lc24ndCBoYXZlIHdoaWxlbG8gaW5z dHJ1Y3Rpb25zIHRvIGdlbmVyYXRlIHByZWRpY2F0ZSBtYXNrLg0KPiBBbHNv LCB3ZSBjYW4ndCB1c2UgbWFzayBhcyB0aGUgcHJlZGljYXRlIHRvIGRvIGxv b3Agc3RyaXAgbWluaW5nIHNpbmNlIFJWViBvbmx5IGhhcyAxIHNpbmdsZSBt YXNrIA0KPiB0byBoYW5kbGUgZmxvdyBjb250cm9sICBpbnNpZGUgdGhlIGxv b3AuDQo+IA0KPiBJbnN0ZWFkLCB3ZSB1c2UgdnNldHZsIHRvIGRvIHRoZSBz dHJpcCBtaW5pbmcsIHNvIGJhc2Ugb24gdGhpcywgdGhlIHNhbWUgQyBjb2Rl LCBSVlYgaWRlYWwgYXNtIGFjY29yZGluZyBSVlYgSVNBIHNob3VsZCBiZToN Cj4gDQo+IHByZWhlYWRlcjoNCj4gYTAgPSBuICh0aGUgdG90YWwgbnVtYmVy IG9mIHRoZSBzY2FsYXIgc2hvdWxkIGJlIGNhbGN1bGF0ZWQpLg0KPiAgLi4u Li4NCj4gLkwzOg0KPiAgICAgICAgIHZzZXR2bGkgYTUsYTAsZTMyLG0xLHRh LG1hICAgID09PT0+IFdISUxFX0xFTiBwYXR0ZXJuIGdlbmVyYXRlIHRoaXMg aW5zdHJ1Y3Rpb24sIGNhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIHRoZSBlbGVt ZW50cyBzaG91bGQgYmUgdXBkYXRlZA0KPiAgICAgICAgIHZsZTMyLnYgdjEs MChhNCkNCj4gICAgICAgICBzdWIgICAgIGEwLGEwLGE1ICAgICAgPT09PT09 PT09PT09PiBEZWNyZW1lbnQgdGhlIGluZHVjdGlvbiB2YXJpYWJsZSBieSB0 aGUgYTUgKGdlbmVyYXRlZCBieSBXSElMRV9MRU4pDQo+ICAgICAgICAgLi4u LiAgIA0KPiANCj4gICAgICAgICB2YWRkLnZ2Li4uLg0KPiAgICAgICAgIHZz ZTMyLnYgdjEsMChhMykNCj4gICAgICAgICBhZGQgICAgIGE0LGE0LGEyDQo+ ICAgICAgICAgYWRkICAgICBhMyxhMyxhMg0KPiAgICAgICAgIGJuZSAgICAg YTAsemVybywuTDMNCj4gLkwxOg0KPiAgICAgICAgIHJldA0KPiANCj4gU28g eW91IHdpbGwgc2VlLCBpZiBuID0gMyBsaWtlIEkgc2FpZCBmb3IgQVJNIFNW RSAoU3VwcG9zZSBtYWNoaW5lIHZlY3RvciBsZW5ndGggPiAzKSwgdGhlbiB2 c2V0dmxpIGE1LGEwLGUzMixtMSx0YSxtYSB3aWxsDQo+IGdlbmVyYXRlIGE1 ID0gMywgdGhlbiB0aGUgdmxlMzIudi92YWRkLnZ2L3ZzZTMyLnYgYXJlIGFs bCBkb2luZyB0aGUgb3BlcmF0aW9uIG9ubHkgb24gdGhlIGVsZW1lbnQgMCwg IGVsZW1lbnQgMSwgZWxlbWVudCAyLg0KPiANCj4gQmVzaWRlcywgV0hJTEVf TEVOIGlzIGRlZmluZWQgdG8gbWFrZSBzdXJlIHRvIGJlIG5ldmVyIG92ZXJm bG93IHRoZSBpbnB1dCBvcGVyYW5kIHdoaWNoIGlzICJhMCIuDQo+IFRoYXQg bWVhbnMgIHN1YiAgICAgYTAsYTAsYTUgd2lsbCBtYWtlIGEwIG5ldmVyIHVu ZGVyZmxvdyAwLg0KPiANCj4gSSBoYXZlIHRyaWVkIHRvIHJldHVybiBQbW9k ZSBpbiBUQVJHRVRfVkVDVE9SSVpFX0dFVF9NQVNLX01PREUgDQo+IHRhcmdl dCBob29rIGFuZCB0aGVuIHVzZSBXSElMRV9VTFQuIA0KPiANCj4gQnV0IHRo ZXJlIGFyZSAyIGlzc3VlczoNCj4gT25lIGlzIHRoYXQgY3VycmVudCBHQ0Mg aXMgZG9pbmcgdGhlIGZsb3cgZnJvbSAwLWJhc2VkIHVudGlsIHRoZSBURVNU X0xJTUlULiBXaGVyYXMgdGhlIG9wdGltYWwgZmxvdyBvZiBSVlYgSSBzaG93 ZWQgYWJvdmUNCj4gaXMgZnJvbSAibiIga2VlcCBkZWNyZWFzaW5nIG4gdW50 aWwgMC4gIFRyeWluZyB0byBmaXQgdGhlIGN1cnJlbnQgZmxvdyBvZiBHQ0Ms IFJWViBuZWVkcyBtb3JlIGluc3RydWN0aW9ucyB0byBkbyB0aGUgbG9vcCBz dHJpcCBtaW5pbmcuDQo+IA0KPiBTZWNvbmQgaXMgdGhhdCBpZiB3ZSByZXR1 cm4gYSBQbW9kZSBpbiBUQVJHRVRfVkVDVE9SSVpFX0dFVF9NQVNLX01PREUg DQo+IHdoaWNoIG5vdCBvbmx5IHNwZWNpZnkgdGhlIGRlc3QgbW9kZSBmb3Ig V0hJTEVfVUxUIGJ1dCBhbHNvIHRoZSBtYXNrIG1vZGUgb2YgZmxvdyBjb250 cm9sLg0KPiBJZiB3ZSByZXR1cm4gUG1vZGUgd2hpY2ggaXMgdXNlZCBhcyB0 aGUgbGVuZ3RoIGZvciBSVlYuIFdlIGNhbid0IHVzZSBtYXNrIG1vZGUgbGlr ZSBWTngyQkkgbW9kZSB0byBkbyB0aGUgZmxvdyBjb250cm9sIHByZWRpY2F0 ZS4NCj4gVGhpcyBhbm90aGVyIGV4YW1wbGU6DQo+IHZvaWQgZm9vMiAoaW50 MzJfdCAqIF9fcmVzdHJpY3QgYSwgaW50MzJfdCAqIF9fcmVzdHJpY3QgYiwg aW50MzJfdCAqIHJlc3RyaWN0IGNvbmQsIGludCBuKQ0KPiB7DQo+ICAgICBm b3IgKGludCBpID0gMDsgaSA8IG47IGkrKykNCj4gICAgICAgaWYgKGNvbmRb aV0pDQo+ICAgICAgICAgYVtpXSA9IGFbaV0gKyBiW2ldOw0KPiB9DQo+IA0K PiBBUk0gU1ZFOg0KPiAgICAgICAgIGxkMXcgICAgejAucywgcDAveiwgW3gy LCB4NCwgbHNsIDJdDQo+ICAgICAgICAgY21wbmUgICBwMC5zLCBwMC96LCB6 MC5zLCAjMA0KPiAgICAgICAgIGxkMXcgICAgejAucywgcDAveiwgW3gwLCB4 NCwgbHNsIDJdDQo+ICAgICAgICAgbGQxdyAgICB6MS5zLCBwMC96LCBbeDEs IHg0LCBsc2wgMl0NCj4gICAgICAgICBhZGQgICAgIHowLnMsIHowLnMsIHox LnMNCj4gICAgICAgICBzdDF3ICAgIHowLnMsIHAwLCBbeDAsIHg0LCBsc2wg Ml0NCj4gICAgICAgICBhZGQgICAgIHg0LCB4NCwgeDUNCj4gICAgICAgICB3 aGlsZWxvIHAwLnMsIHc0LCB3Mw0KPiAgICAgICAgIGIuYW55ICAgLkw4DQo+ IA0KPiBIZXJlIHdlIGNhbiBzZWUgQVJNIHVzZSBtYXNrIG1vZGUgZm9yIGJv dGggbG9vcCBzdHJpcCBtaW5uaW5nIGFuZCBmbG93IGNvbnRyb2wuDQo+IA0K PiBXaGVyYXMsIFJWViB1c2UgbGVuZ3RoIGdlbmVyYXRlZCBieSB2c2V0dmwg KFdISUxFX0xFTikgdG8gZG8gdGhlIGxvb3Agc3RyaXAgbWlubmluZyBhbmQg bWFzayBnZW5lcmF0ZWQgYnkgY29tcGFyaXNvbiB0byBkbyB0aGUgZmxvdyBj b250cm9sLg0KPiANCj4gU28gdGhlIEFTTSBnZW5lcmF0ZWQgYnkgbXkgZG93 bnN0cmVhbSBMTFZNL0dDQzoNCj4gLkwzOg0KPiAgICAgICAgIHZzZXR2bGkg YTYsYTMsZTMyLG0xLHRhLG11ICAgPT09PT09PT09PT4gZ2VuZXJhdGUgbGVu Z3RoIHRvIHByZWRpY2F0ZSBSVlYgb3BlcmF0aW9uLiANCj4gICAgICAgICB2 bGUzMi52IHYwLChhMikNCj4gICAgICAgICBzdWIgICAgIGEzLGEzLGE2ICAg ICAgPT09PT09PT09PT4gZGVjcmVhc2UgdGhlIGluZHVjdGlvbiB2YXJpYWJs ZSB1bnRpbCAwLg0KPiAgICAgICAgIHZtc25lLnZpICAgICAgICB2MCx2MCww ICAgPT09PT09PT09PT4gZ2VuZXJhdGUgbWFzayB0byBwcmVkaWNhdGUgUlZW IG9wZXJhdGlvbi4gDQo+ICAgICAgICAgdmxlMzIudiB2MjQsKGEwKSx2MC50 ICAgPT09PT09PT09PT0+IGhlcmUgdXNpbmcgdjAudCBpcyB0aGUgb25seSBt YXNrIHJlZ2lzdGVyIHRvIHByZWRpY2F0ZSBSVlYgb3BlcmF0aW9uDQo+ICAg ICAgICAgdmxlMzIudiB2MjUsKGExKSx2MC50DQo+ICAgICAgICAgdmFkZC52 diB2MjQsdjI0LHYyNQ0KPiAgICAgICAgIHZzZTMyLnYgdjI0LChhMCksdjAu dA0KPiAgICAgICAgIGFkZCAgICAgYTIsYTIsYTQNCj4gICAgICAgICBhZGQg ICAgIGEwLGEwLGE0DQo+ICAgICAgICAgYWRkICAgICBhMSxhMSxhNA0KPiAg ICAgICAgIGJuZSAgICAgYTMsemVybywuTDMNCj4gLkwxOg0KPiAgICAgICAg IHJldA0KPiANCj4gDQo+IFRoaXMgaXMgdGhlIGhvdyBSVlYgd29ya3MuDQo+ IEZlZWwgZnJlZSB0byBjb21tZW50IGlmIHlvdSBoYXZlIGFueSBxdWVzdGlv bnMuDQogDQpUaGFua3MgZm9yIHRoZSBkZXRhaWxlZCBleHBsYW5hdGlvbi4g IEp1c3QgdG8gY2xhcmlmeSAtIHdpdGggUlZWDQp0aGVyZSdzIG9ubHkgYSBz aW5nbGUgbWFzayByZWdpc3RlciwgdjAudCwgb3IgZGlkIHlvdSB3YW50IHRv DQpzYXkgYW4gaW5zdHJ1Y3Rpb24gY2FuIG9ubHkgc3BlY2lmeSBhIHNpbmds ZSBtYXNrIHJlZ2lzdGVyPw0KQVJNIFNWRSB3b3VsZCBoYXZlIGEgbG9vcCBj b250cm9sIG1hc2sgYW5kIGEgc2VwYXJhdGUgbWFzaw0KZm9yIHRoZSBpZiAo Y29uZFtpXSkgd2hpY2ggd291bGQgYmUgY29tYmluZWQgd2l0aCBhIG1hc2st YW5kDQppbnN0cnVjdGlvbiB0byBhIHRoaXJkIG1hc2sgd2hpY2ggaXMgdGhl biB1c2VkIG9uIHRoZQ0KcHJlZGljYXRlZCBpbnN0cnVjdGlvbnMuDQogDQpG b3IgQVZYNTEyIFdISUxFX1VMVCBpcyBhIGJldHRlciBtYXRjaCBzaW5jZSB3 ZSBuZWVkIGEgbWFzayBpbiB0aGUNCmVuZCAoYnV0IFdISUxFX1VMVCBpc24n dCBhIHZlcnkgZ29vZCBtYXRjaCBlaXRoZXIsIHNvIEknbSBzdGlsbA0Kd29y a2luZyBvbiBtYXNrZWQgbG9vcCBzdXBwb3J0IHRoZXJlKS4NCiANClBvd2Vy UEMgYW5kIHMzOTB4IG1pZ2h0IGJlIGFibGUgdG8gdXNlIFdISUxFX0xFTiBh cyB3ZWxsICh0aG91Z2gNCnRoZXkgb25seSBoYXZlIExFTiB2YXJpYW50cyBv ZiBsb2FkcyBhbmQgc3RvcmVzKSAtIG9mIGNvdXJzZQ0Kb25seSAic2ltdWxh dGluZyBpdCIuICBGb3IgdGhlIGZpeGVkLXZlY3Rvci1sZW5ndGggSVNBcyB0 aGUNCnByZWRpY2F0ZWQgdmVjdG9yIGxvb3AgSU1ITyBtYWtlcyBtb3N0IHNl bnNlIGZvciB0aGUgZXBpbG9ndWUgdG8NCmhhbmRsZSBsb3ctdHJpcCBsb29w cyBiZXR0ZXIuDQogDQpSaWNoYXJkLg0KIA0KPiBUaGFua3MuDQo+IA0KPiAN Cj4ganV6aGUuemhvbmdAcml2YWkuYWkNCj4gIA0KPiBGcm9tOiBSaWNoYXJk IEJpZW5lcg0KPiBEYXRlOiAyMDIzLTA0LTEyIDE1OjAwDQo+IFRvOiBSaWNo YXJkIFNhbmRpZm9yZA0KPiBDQzoganV6aGUuemhvbmdAcml2YWkuYWk7IGdj Yy1wYXRjaGVzOyBqZWZmcmV5YWxhdw0KPiBTdWJqZWN0OiBSZTogW1BBVENI XSBWRUNUOiBBZGQgV0hJTEVfTEVOIHBhdHRlcm4gZm9yIGRlY3JlbWVudCBJ ViBzdXBwb3J0IGZvciBhdXRvLXZlY3Rvcml6YXRpb24NCj4gT24gVHVlLCAx MSBBcHIgMjAyMywgUmljaGFyZCBTYW5kaWZvcmQgd3JvdGU6DQo+ICANCj4g PiAianV6aGUuemhvbmdAcml2YWkuYWkiIDxqdXpoZS56aG9uZ0ByaXZhaS5h aT4gd3JpdGVzOg0KPiA+ID4gSGksIFJpY2hhcmRzLiANCj4gPiA+IEtpbmRs eSBQaW5nIHRoaXMgcGF0Y2guIA0KPiA+ID4gVGhpcyBpcyB0aGUgbW9zdCBp bXBvcnRhbnQgcGF0Y2ggZm9yIFJWViBhdXRvLXZlY3Rvcml6YXRpb24gc3Vw cG9ydC4NCj4gPiA+IEJvb3RzdHJhcGVkIG9uIFg4NiBoYXMgcGFzc2VkLg0K PiA+IA0KPiA+IENhbiBpdCB3YWl0IGZvciBHQ0MgMTQ/ICBJdCBkb2Vzbid0 IHNlZW0gbGlrZSBzdGFnZSA0IG1hdGVyaWFsLg0KPiA+IA0KPiA+IEFsc28s IHBpbmdpbmcgYWZ0ZXIgNSBkYXlzIHNlZW1zIGEgYml0IHNvb24uICBJdCdz IGJlZW4gYSA0LWRheQ0KPiA+IGhvbGlkYXkgd2Vla2VuZCBmb3IgbXVjaCBv ZiBFdXJvcGUuDQo+ICANCj4gQWxzbyBjYW4geW91IGV4cGxhaW4gd2h5IHVz aW5nIFdISUxFX1VMVCBpcyBub3QgcG9zc2libGU/ICAoSSd2ZQ0KPiBzdWNj ZXNzZnVsbHkgLSB0byBzb21lIGV4dGVudCAtIGRvbmUgdGhhdCBmb3IgQVZY NTEyIGZvciBleGFtcGxlKQ0KPiAgDQo+IFRoZSBwYXRjaCBsYWNrcyB0aGUg ZGVzY3JpcHRpb24gb2Ygd2hhdCBXSElMRV9MRU4gYWN0dWFsbHkgaXMuDQo+ ICANCj4gUmljaGFyZC4NCj4gIA0KPiA+IFRoYW5rcywNCj4gPiBSaWNoYXJk DQo+ID4gDQo+ID4gPiBGZWVsIGZyZWUgdG8gY29tbWVudHMuDQo+ID4gPg0K PiA+ID4gVGhhbmtzLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiBqdXpoZS56aG9u Z0ByaXZhaS5haQ0KPiA+ID4gIA0KPiA+ID4gRnJvbToganV6aGUuemhvbmcN Cj4gPiA+IERhdGU6IDIwMjMtMDQtMDcgMDk6NDcNCj4gPiA+IFRvOiBnY2Mt cGF0Y2hlcw0KPiA+ID4gQ0M6IHJpY2hhcmQuc2FuZGlmb3JkOyByZ3VlbnRo ZXI7IGplZmZyZXlhbGF3OyBKdXpoZS1aaG9uZw0KPiA+ID4gU3ViamVjdDog W1BBVENIXSBWRUNUOiBBZGQgV0hJTEVfTEVOIHBhdHRlcm4gZm9yIGRlY3Jl bWVudCBJViBzdXBwb3J0IGZvciBhdXRvLXZlY3Rvcml6YXRpb24NCj4gPiA+ IEZyb206IEp1emhlLVpob25nIDxqdXpoZS56aG9uZ0ByaXZhaS5haT4NCj4g PiA+ICANCj4gPiA+IFRoaXMgcGF0Y2ggaXMgdG8gYWRkIFdISUxFX0xFTiBw YXR0ZXJuLg0KPiA+ID4gSXQncyBpbnNwaXJlZCBieSBSVlYgSVNBIHNpbXBs ZSAidnZhZGRpbnQzMi5zIiBleGFtcGxlOg0KPiA+ID4gaHR0cHM6Ly9naXRo dWIuY29tL3Jpc2N2L3Jpc2N2LXYtc3BlYy9ibG9iL21hc3Rlci9leGFtcGxl L3Z2YWRkaW50MzIucw0KPiA+ID4gIA0KPiA+ID4gTW9yZSBkZXRhaWxzIGFy ZSBpbiAidmVjdF9zZXRfbG9vcF9jb250cm9sc19ieV93aGlsZV9sZW4iIGlt cGxlbWVudGF0aW9uDQo+ID4gPiBhbmQgY29tbWVudHMuDQo+ID4gPiAgDQo+ ID4gPiBDb25zaWRlciBzdWNoIGZvbGxvd2luZyBjYXNlOg0KPiA+ID4gI2Rl ZmluZSBOIDE2DQo+ID4gPiBpbnQgc3JjW05dOw0KPiA+ID4gaW50IGRlc3Rb Tl07DQo+ID4gPiAgDQo+ID4gPiB2b2lkDQo+ID4gPiBmb28gKGludCBuKQ0K PiA+ID4gew0KPiA+ID4gICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykN Cj4gPiA+ICAgICBkZXN0W2ldID0gc3JjW2ldOw0KPiA+ID4gfQ0KPiA+ID4g IA0KPiA+ID4gLW1hcmNoPXJ2NjRnY3YgLU8zIC0tcGFyYW0gcmlzY3YtYXV0 b3ZlYy1wcmVmZXJlbmNlPXNjYWxhYmxlIC1mbm8tdmVjdC1jb3N0LW1vZGVs IC1mbm8tdHJlZS1sb29wLWRpc3RyaWJ1dGUtcGF0dGVybnM6DQo+ID4gPiAg DQo+ID4gPiBmb286ICAgICAgICANCj4gPiA+ICAgICAgICAgYmxlICAgICBh MCx6ZXJvLC5MMQ0KPiA+ID4gICAgICAgICBsdWkgICAgIGE0LCVoaSguTEFO Q0hPUjApDQo+ID4gPiAgICAgICAgIGFkZGkgICAgYTQsYTQsJWxvKC5MQU5D SE9SMCkNCj4gPiA+ICAgICAgICAgYWRkaSAgICBhMyxhNCw2NA0KPiA+ID4g ICAgICAgICBjc3JyICAgIGEyLHZsZW5iDQo+ID4gPiAuTDM6DQo+ID4gPiAg ICAgICAgIHZzZXR2bGkgYTUsYTAsZTMyLG0xLHRhLG1hDQo+ID4gPiAgICAg ICAgIHZsZTMyLnYgdjEsMChhNCkNCj4gPiA+ICAgICAgICAgc3ViICAgICBh MCxhMCxhNQ0KPiA+ID4gICAgICAgICB2c2UzMi52IHYxLDAoYTMpDQo+ID4g PiAgICAgICAgIGFkZCAgICAgYTQsYTQsYTINCj4gPiA+ICAgICAgICAgYWRk ICAgICBhMyxhMyxhMg0KPiA+ID4gICAgICAgICBibmUgICAgIGEwLHplcm8s LkwzDQo+ID4gPiAuTDE6DQo+ID4gPiAgICAgICAgIHJldA0KPiA+ID4gIA0K PiA+ID4gZ2NjL0NoYW5nZUxvZzoNCj4gPiA+ICANCj4gPiA+ICAgICAgICAg KiBkb2MvbWQudGV4aTogQWRkIFdISUxFX0xFTiBzdXBwb3J0Lg0KPiA+ID4g ICAgICAgICAqIGludGVybmFsLWZuLmNjICh3aGlsZV9sZW5fZGlyZWN0KTog RGl0dG8uDQo+ID4gPiAgICAgICAgIChleHBhbmRfd2hpbGVfbGVuX29wdGFi X2ZuKTogRGl0dG8uDQo+ID4gPiAgICAgICAgIChkaXJlY3Rfd2hpbGVfbGVu X29wdGFiX3N1cHBvcnRlZF9wKTogRGl0dG8uDQo+ID4gPiAgICAgICAgICog aW50ZXJuYWwtZm4uZGVmIChXSElMRV9MRU4pOiBEaXR0by4NCj4gPiA+ICAg ICAgICAgKiBvcHRhYnMuZGVmIChPUFRBQl9EKTogRGl0dG8uDQo+ID4gPiAg ICAgICAgICogdHJlZS1zc2EtbG9vcC1tYW5pcC5jYyAoY3JlYXRlX2l2KTog RGl0dG8uDQo+ID4gPiAgICAgICAgICogdHJlZS1zc2EtbG9vcC1tYW5pcC5o IChjcmVhdGVfaXYpOiBEaXR0by4NCj4gPiA+ICAgICAgICAgKiB0cmVlLXZl Y3QtbG9vcC1tYW5pcC5jYyAodmVjdF9zZXRfbG9vcF9jb250cm9sc19ieV93 aGlsZV9sZW4pOiBEaXR0by4NCj4gPiA+ICAgICAgICAgKHZlY3Rfc2V0X2xv b3BfY29uZGl0aW9uX3BhcnRpYWxfdmVjdG9ycyk6IERpdHRvLg0KPiA+ID4g ICAgICAgICAqIHRyZWUtdmVjdC1sb29wLmNjICh2ZWN0X2dldF9sb29wX2xl bik6IERpdHRvLg0KPiA+ID4gICAgICAgICAqIHRyZWUtdmVjdC1zdG10cy5j YyAodmVjdG9yaXphYmxlX3N0b3JlKTogRGl0dG8uDQo+ID4gPiAgICAgICAg ICh2ZWN0b3JpemFibGVfbG9hZCk6IERpdHRvLg0KPiA+ID4gICAgICAgICAq IHRyZWUtdmVjdG9yaXplci5oICh2ZWN0X2dldF9sb29wX2xlbik6IERpdHRv Lg0KPiA+ID4gIA0KPiA+ID4gLS0tDQo+ID4gPiBnY2MvZG9jL21kLnRleGkg ICAgICAgICAgICAgfCAgMTQgKysrDQo+ID4gPiBnY2MvaW50ZXJuYWwtZm4u Y2MgICAgICAgICAgfCAgMjkgKysrKysrDQo+ID4gPiBnY2MvaW50ZXJuYWwt Zm4uZGVmICAgICAgICAgfCAgIDEgKw0KPiA+ID4gZ2NjL29wdGFicy5kZWYg ICAgICAgICAgICAgIHwgICAxICsNCj4gPiA+IGdjYy90cmVlLXNzYS1sb29w LW1hbmlwLmNjICB8ICAgNCArLQ0KPiA+ID4gZ2NjL3RyZWUtc3NhLWxvb3At bWFuaXAuaCAgIHwgICAyICstDQo+ID4gPiBnY2MvdHJlZS12ZWN0LWxvb3At bWFuaXAuY2MgfCAxODYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tDQo+ID4gPiBnY2MvdHJlZS12ZWN0LWxvb3AuY2MgICAgICAgfCAg MzUgKysrKystLQ0KPiA+ID4gZ2NjL3RyZWUtdmVjdC1zdG10cy5jYyAgICAg IHwgICA5ICstDQo+ID4gPiBnY2MvdHJlZS12ZWN0b3JpemVyLmggICAgICAg fCAgIDQgKy0NCj4gPiA+IDEwIGZpbGVzIGNoYW5nZWQsIDI2NCBpbnNlcnRp b25zKCspLCAyMSBkZWxldGlvbnMoLSkNCj4gPiA+ICANCj4gPiA+IGRpZmYg LS1naXQgYS9nY2MvZG9jL21kLnRleGkgYi9nY2MvZG9jL21kLnRleGkNCj4g PiA+IGluZGV4IDhlMzExMzU5OWZkLi43MjE3OGFiMDE0YyAxMDA2NDQNCj4g PiA+IC0tLSBhL2djYy9kb2MvbWQudGV4aQ0KPiA+ID4gKysrIGIvZ2NjL2Rv Yy9tZC50ZXhpDQo+ID4gPiBAQCAtNDk2NSw2ICs0OTY1LDIwIEBAIGZvciAo aSA9IDE7IGkgPCBvcGVyYW5kMzsgaSsrKQ0KPiA+ID4gICAgb3BlcmFuZDBb aV0gPSBvcGVyYW5kMFtpIC0gMV0gJiYgKG9wZXJhbmQxICsgaSA8IG9wZXJh bmQyKTsNCj4gPiA+IEBlbmQgc21hbGxleGFtcGxlDQo+ID4gPiArQGNpbmRl eCBAY29kZXt3aGlsZV9sZW5AdmFye219QHZhcntufX0gaW5zdHJ1Y3Rpb24g cGF0dGVybg0KPiA+ID4gK0BpdGVtIEBjb2Rle3doaWxlX2xlbkB2YXJ7bX1A dmFye259fQ0KPiA+ID4gK1NldCBvcGVyYW5kIDAgdG8gdGhlIG51bWJlciBv ZiBhY3RpdmUgZWxlbWVudHMgaW4gdmVjdG9yIHdpbGwgYmUgdXBkYXRlZCB2 YWx1ZS4NCj4gPiA+ICtvcGVyYW5kIDEgaXMgdGhlIHRvdGFsIGVsZW1lbnRz IG5lZWQgdG8gYmUgdXBkYXRlZCB2YWx1ZS4NCj4gPiA+ICtvcGVyYW5kIDIg aXMgdGhlIHZlY3Rvcml6YXRpb24gZmFjdG9yLg0KPiA+ID4gK1RoZSBvcGVy YXRpb24gaXMgZXF1aXZhbGVudCB0bzoNCj4gPiA+ICsNCj4gPiA+ICtAc21h bGxleGFtcGxlDQo+ID4gPiArb3BlcmFuZDAgPSBNSU4gKG9wZXJhbmQxLCBv cGVyYW5kMik7DQo+ID4gPiArb3BlcmFuZDIgY2FuIGJlIGNvbnN0X3BvbHlf aW50IG9yIHBvbHlfaW50IHJlbGF0ZWQgdG8gdmVjdG9yIG1vZGUgc2l6ZS4N Cj4gPiA+ICtTb21lIHRhcmdldCBsaWtlIFJJU0MtViBoYXMgYSBzdGFuZGFs b25lIGluc3RydWN0aW9uIHRvIGdldCBNSU4gKG4sIE1PREUgU0laRSkgc28N Cj4gPiA+ICt0aGF0IHdlIGNhbiByZWR1Y2UgYSB1c2Ugb2YgZ2VuZXJhbCBw dXJwb3NlIHJlZ2lzdGVyLg0KPiA+ID4gK0BlbmQgc21hbGxleGFtcGxlDQo+ ID4gPiArDQo+ID4gPiBAY2luZGV4IEBjb2Rle2NoZWNrX3Jhd19wdHJzQHZh cnttfX0gaW5zdHJ1Y3Rpb24gcGF0dGVybg0KPiA+ID4gQGl0ZW0gQHNhbXB7 Y2hlY2tfcmF3X3B0cnNAdmFye219fQ0KPiA+ID4gQ2hlY2sgd2hldGhlciwg Z2l2ZW4gdHdvIHBvaW50ZXJzIEB2YXJ7YX0gYW5kIEB2YXJ7Yn0gYW5kIGEg bGVuZ3RoIEB2YXJ7bGVufSwNCj4gPiA+IGRpZmYgLS1naXQgYS9nY2MvaW50 ZXJuYWwtZm4uY2MgYi9nY2MvaW50ZXJuYWwtZm4uY2MNCj4gPiA+IGluZGV4 IDZlODFkYzA1ZTBlLi41ZjQ0ZGVmOTBkMyAxMDA2NDQNCj4gPiA+IC0tLSBh L2djYy9pbnRlcm5hbC1mbi5jYw0KPiA+ID4gKysrIGIvZ2NjL2ludGVybmFs LWZuLmNjDQo+ID4gPiBAQCAtMTI3LDYgKzEyNyw3IEBAIGluaXRfaW50ZXJu YWxfZm5zICgpDQo+ID4gPiAjZGVmaW5lIGNvbmRfYmluYXJ5X2RpcmVjdCB7 IDEsIDEsIHRydWUgfQ0KPiA+ID4gI2RlZmluZSBjb25kX3Rlcm5hcnlfZGly ZWN0IHsgMSwgMSwgdHJ1ZSB9DQo+ID4gPiAjZGVmaW5lIHdoaWxlX2RpcmVj dCB7IDAsIDIsIGZhbHNlIH0NCj4gPiA+ICsjZGVmaW5lIHdoaWxlX2xlbl9k aXJlY3QgeyAwLCAwLCBmYWxzZSB9DQo+ID4gPiAjZGVmaW5lIGZvbGRfZXh0 cmFjdF9kaXJlY3QgeyAyLCAyLCBmYWxzZSB9DQo+ID4gPiAjZGVmaW5lIGZv bGRfbGVmdF9kaXJlY3QgeyAxLCAxLCBmYWxzZSB9DQo+ID4gPiAjZGVmaW5l IG1hc2tfZm9sZF9sZWZ0X2RpcmVjdCB7IDEsIDEsIGZhbHNlIH0NCj4gPiA+ IEBAIC0zNzAyLDYgKzM3MDMsMzMgQEAgZXhwYW5kX3doaWxlX29wdGFiX2Zu IChpbnRlcm5hbF9mbiwgZ2NhbGwgKnN0bXQsIGNvbnZlcnRfb3B0YWIgb3B0 YWIpDQo+ID4gPiAgICAgIGVtaXRfbW92ZV9pbnNuIChsaHNfcnR4LCBvcHNb MF0udmFsdWUpOw0KPiA+ID4gfQ0KPiA+ID4gKy8qIEV4cGFuZCBXSElMRV9M RU4gY2FsbCBTVE1UIHVzaW5nIG9wdGFiIE9QVEFCLiAgKi8NCj4gPiA+ICtz dGF0aWMgdm9pZA0KPiA+ID4gK2V4cGFuZF93aGlsZV9sZW5fb3B0YWJfZm4g KGludGVybmFsX2ZuLCBnY2FsbCAqc3RtdCwgY29udmVydF9vcHRhYiBvcHRh YikNCj4gPiA+ICt7DQo+ID4gPiArICBleHBhbmRfb3BlcmFuZCBvcHNbM107 DQo+ID4gPiArICB0cmVlIHJoc190eXBlWzJdOw0KPiA+ID4gKw0KPiA+ID4g KyAgdHJlZSBsaHMgPSBnaW1wbGVfY2FsbF9saHMgKHN0bXQpOw0KPiA+ID4g KyAgdHJlZSBsaHNfdHlwZSA9IFRSRUVfVFlQRSAobGhzKTsNCj4gPiA+ICsg IHJ0eCBsaHNfcnR4ID0gZXhwYW5kX2V4cHIgKGxocywgTlVMTF9SVFgsIFZP SURtb2RlLCBFWFBBTkRfV1JJVEUpOw0KPiA+ID4gKyAgY3JlYXRlX291dHB1 dF9vcGVyYW5kICgmb3BzWzBdLCBsaHNfcnR4LCBUWVBFX01PREUgKGxoc190 eXBlKSk7DQo+ID4gPiArDQo+ID4gPiArICBmb3IgKHVuc2lnbmVkIGludCBp ID0gMDsgaSA8IGdpbXBsZV9jYWxsX251bV9hcmdzIChzdG10KTsgKytpKQ0K PiA+ID4gKyAgICB7DQo+ID4gPiArICAgICAgdHJlZSByaHMgPSBnaW1wbGVf Y2FsbF9hcmcgKHN0bXQsIGkpOw0KPiA+ID4gKyAgICAgIHJoc190eXBlW2ld ID0gVFJFRV9UWVBFIChyaHMpOw0KPiA+ID4gKyAgICAgIHJ0eCByaHNfcnR4 ID0gZXhwYW5kX25vcm1hbCAocmhzKTsNCj4gPiA+ICsgICAgICBjcmVhdGVf aW5wdXRfb3BlcmFuZCAoJm9wc1tpICsgMV0sIHJoc19ydHgsIFRZUEVfTU9E RSAocmhzX3R5cGVbaV0pKTsNCj4gPiA+ICsgICAgfQ0KPiA+ID4gKw0KPiA+ ID4gKyAgaW5zbl9jb2RlIGljb2RlID0gZGlyZWN0X29wdGFiX2hhbmRsZXIg KG9wdGFiLCBUWVBFX01PREUgKHJoc190eXBlWzBdKSk7DQo+ID4gPiArDQo+ ID4gPiArICBleHBhbmRfaW5zbiAoaWNvZGUsIDMsIG9wcyk7DQo+ID4gPiAr ICBpZiAoIXJ0eF9lcXVhbF9wIChsaHNfcnR4LCBvcHNbMF0udmFsdWUpKQ0K PiA+ID4gKyAgICBlbWl0X21vdmVfaW5zbiAobGhzX3J0eCwgb3BzWzBdLnZh bHVlKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiAvKiBFeHBhbmQgYSBj YWxsIHRvIGEgY29udmVydC1saWtlIG9wdGFiIHVzaW5nIHRoZSBvcGVyYW5k cyBpbiBTVE1ULg0KPiA+ID4gICAgIEZOIGhhcyBhIHNpbmdsZSBvdXRwdXQg b3BlcmFuZCBhbmQgTkFSR1MgaW5wdXQgb3BlcmFuZHMuICAqLw0KPiA+ID4g QEAgLTM4NDMsNiArMzg3MSw3IEBAIG11bHRpX3ZlY3Rvcl9vcHRhYl9zdXBw b3J0ZWRfcCAoY29udmVydF9vcHRhYiBvcHRhYiwgdHJlZV9wYWlyIHR5cGVz LA0KPiA+ID4gI2RlZmluZSBkaXJlY3Rfc2NhdHRlcl9zdG9yZV9vcHRhYl9z dXBwb3J0ZWRfcCBjb252ZXJ0X29wdGFiX3N1cHBvcnRlZF9wDQo+ID4gPiAj ZGVmaW5lIGRpcmVjdF9sZW5fc3RvcmVfb3B0YWJfc3VwcG9ydGVkX3AgZGly ZWN0X29wdGFiX3N1cHBvcnRlZF9wDQo+ID4gPiAjZGVmaW5lIGRpcmVjdF93 aGlsZV9vcHRhYl9zdXBwb3J0ZWRfcCBjb252ZXJ0X29wdGFiX3N1cHBvcnRl ZF9wDQo+ID4gPiArI2RlZmluZSBkaXJlY3Rfd2hpbGVfbGVuX29wdGFiX3N1 cHBvcnRlZF9wIGRpcmVjdF9vcHRhYl9zdXBwb3J0ZWRfcA0KPiA+ID4gI2Rl ZmluZSBkaXJlY3RfZm9sZF9leHRyYWN0X29wdGFiX3N1cHBvcnRlZF9wIGRp cmVjdF9vcHRhYl9zdXBwb3J0ZWRfcA0KPiA+ID4gI2RlZmluZSBkaXJlY3Rf Zm9sZF9sZWZ0X29wdGFiX3N1cHBvcnRlZF9wIGRpcmVjdF9vcHRhYl9zdXBw b3J0ZWRfcA0KPiA+ID4gI2RlZmluZSBkaXJlY3RfbWFza19mb2xkX2xlZnRf b3B0YWJfc3VwcG9ydGVkX3AgZGlyZWN0X29wdGFiX3N1cHBvcnRlZF9wDQo+ ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL2ludGVybmFsLWZuLmRlZiBiL2djYy9p bnRlcm5hbC1mbi5kZWYNCj4gPiA+IGluZGV4IDdmZTc0MmMyYWU3Li4zYTkz M2FiZmY1ZCAxMDA2NDQNCj4gPiA+IC0tLSBhL2djYy9pbnRlcm5hbC1mbi5k ZWYNCj4gPiA+ICsrKyBiL2djYy9pbnRlcm5hbC1mbi5kZWYNCj4gPiA+IEBA IC0xNTMsNiArMTUzLDcgQEAgREVGX0lOVEVSTkFMX09QVEFCX0ZOIChWRUNf U0VULCAwLCB2ZWNfc2V0LCB2ZWNfc2V0KQ0KPiA+ID4gREVGX0lOVEVSTkFM X09QVEFCX0ZOIChMRU5fU1RPUkUsIDAsIGxlbl9zdG9yZSwgbGVuX3N0b3Jl KQ0KPiA+ID4gREVGX0lOVEVSTkFMX09QVEFCX0ZOIChXSElMRV9VTFQsIEVD Rl9DT05TVCB8IEVDRl9OT1RIUk9XLCB3aGlsZV91bHQsIHdoaWxlKQ0KPiA+ ID4gK0RFRl9JTlRFUk5BTF9PUFRBQl9GTiAoV0hJTEVfTEVOLCBFQ0ZfQ09O U1QgfCBFQ0ZfTk9USFJPVywgd2hpbGVfbGVuLCB3aGlsZV9sZW4pDQo+ID4g PiBERUZfSU5URVJOQUxfT1BUQUJfRk4gKENIRUNLX1JBV19QVFJTLCBFQ0Zf Q09OU1QgfCBFQ0ZfTk9USFJPVywNCj4gPiA+ICAgICAgICBjaGVja19yYXdf cHRycywgY2hlY2tfcHRycykNCj4gPiA+IERFRl9JTlRFUk5BTF9PUFRBQl9G TiAoQ0hFQ0tfV0FSX1BUUlMsIEVDRl9DT05TVCB8IEVDRl9OT1RIUk9XLA0K PiA+ID4gZGlmZiAtLWdpdCBhL2djYy9vcHRhYnMuZGVmIGIvZ2NjL29wdGFi cy5kZWYNCj4gPiA+IGluZGV4IDY5NWY1OTExYjMwLi5mNTkzOGJkMmMyNCAx MDA2NDQNCj4gPiA+IC0tLSBhL2djYy9vcHRhYnMuZGVmDQo+ID4gPiArKysg Yi9nY2Mvb3B0YWJzLmRlZg0KPiA+ID4gQEAgLTQ3NiwzICs0NzYsNCBAQCBP UFRBQl9EQyAodmVjX3Nlcmllc19vcHRhYiwgInZlY19zZXJpZXMkYSIsIFZF Q19TRVJJRVMpDQo+ID4gPiBPUFRBQl9EICh2ZWNfc2hsX2luc2VydF9vcHRh YiwgInZlY19zaGxfaW5zZXJ0XyRhIikNCj4gPiA+IE9QVEFCX0QgKGxlbl9s b2FkX29wdGFiLCAibGVuX2xvYWRfJGEiKQ0KPiA+ID4gT1BUQUJfRCAobGVu X3N0b3JlX29wdGFiLCAibGVuX3N0b3JlXyRhIikNCj4gPiA+ICtPUFRBQl9E ICh3aGlsZV9sZW5fb3B0YWIsICJ3aGlsZV9sZW4kYSIpDQo+ID4gPiBkaWZm IC0tZ2l0IGEvZ2NjL3RyZWUtc3NhLWxvb3AtbWFuaXAuY2MgYi9nY2MvdHJl ZS1zc2EtbG9vcC1tYW5pcC5jYw0KPiA+ID4gaW5kZXggMDlhY2MxYzk0Y2Mu LmNkYmYyODBlMjQ5IDEwMDY0NA0KPiA+ID4gLS0tIGEvZ2NjL3RyZWUtc3Nh LWxvb3AtbWFuaXAuY2MNCj4gPiA+ICsrKyBiL2djYy90cmVlLXNzYS1sb29w LW1hbmlwLmNjDQo+ID4gPiBAQCAtNTksMTQgKzU5LDE0IEBAIHN0YXRpYyBi aXRtYXBfb2JzdGFjayBsb29wX3JlbmFtZXJfb2JzdGFjazsNCj4gPiA+IHZv aWQNCj4gPiA+IGNyZWF0ZV9pdiAodHJlZSBiYXNlLCB0cmVlIHN0ZXAsIHRy ZWUgdmFyLCBjbGFzcyBsb29wICpsb29wLA0KPiA+ID4gICAgZ2ltcGxlX3N0 bXRfaXRlcmF0b3IgKmluY3JfcG9zLCBib29sIGFmdGVyLA0KPiA+ID4gLSAg ICB0cmVlICp2YXJfYmVmb3JlLCB0cmVlICp2YXJfYWZ0ZXIpDQo+ID4gPiAr ICAgIHRyZWUgKnZhcl9iZWZvcmUsIHRyZWUgKnZhcl9hZnRlciwgZW51bSB0 cmVlX2NvZGUgY29kZSkNCj4gPiA+IHsNCj4gPiA+ICAgIGdhc3NpZ24gKnN0 bXQ7DQo+ID4gPiAgICBncGhpICpwaGk7DQo+ID4gPiAgICB0cmVlIGluaXRp YWwsIHN0ZXAxOw0KPiA+ID4gICAgZ2ltcGxlX3NlcSBzdG10czsNCj4gPiA+ ICAgIHRyZWUgdmIsIHZhOw0KPiA+ID4gLSAgZW51bSB0cmVlX2NvZGUgaW5j cl9vcCA9IFBMVVNfRVhQUjsNCj4gPiA+ICsgIGVudW0gdHJlZV9jb2RlIGlu Y3Jfb3AgPSBjb2RlOw0KPiA+ID4gICAgZWRnZSBwZSA9IGxvb3BfcHJlaGVh ZGVyX2VkZ2UgKGxvb3ApOw0KPiA+ID4gICAgaWYgKHZhciAhPSBOVUxMX1RS RUUpDQo+ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtc3NhLWxvb3AtbWFu aXAuaCBiL2djYy90cmVlLXNzYS1sb29wLW1hbmlwLmgNCj4gPiA+IGluZGV4 IGQ0OTI3M2EzOTg3Li5kYTc1NTMyMGEzYSAxMDA2NDQNCj4gPiA+IC0tLSBh L2djYy90cmVlLXNzYS1sb29wLW1hbmlwLmgNCj4gPiA+ICsrKyBiL2djYy90 cmVlLXNzYS1sb29wLW1hbmlwLmgNCj4gPiA+IEBAIC0yMyw3ICsyMyw3IEBA IGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBu b3Qgc2VlDQo+ID4gPiB0eXBlZGVmIHZvaWQgKCp0cmFuc2Zvcm1fY2FsbGJh Y2spKGNsYXNzIGxvb3AgKiwgdm9pZCAqKTsNCj4gPiA+IGV4dGVybiB2b2lk IGNyZWF0ZV9pdiAodHJlZSwgdHJlZSwgdHJlZSwgY2xhc3MgbG9vcCAqLCBn aW1wbGVfc3RtdF9pdGVyYXRvciAqLA0KPiA+ID4gLSAgICAgICAgYm9vbCwg dHJlZSAqLCB0cmVlICopOw0KPiA+ID4gKyAgICAgICAgYm9vbCwgdHJlZSAq LCB0cmVlICosIGVudW0gdHJlZV9jb2RlID0gUExVU19FWFBSKTsNCj4gPiA+ IGV4dGVybiB2b2lkIHJld3JpdGVfaW50b19sb29wX2Nsb3NlZF9zc2EgKGJp dG1hcCwgdW5zaWduZWQpOw0KPiA+ID4gZXh0ZXJuIHZvaWQgdmVyaWZ5X2xv b3BfY2xvc2VkX3NzYSAoYm9vbCwgY2xhc3MgbG9vcCAqID0gTlVMTCk7DQo+ ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtdmVjdC1sb29wLW1hbmlwLmNj IGIvZ2NjL3RyZWUtdmVjdC1sb29wLW1hbmlwLmNjDQo+ID4gPiBpbmRleCBm NjBmYTUwZThmNC4uZjNjZDZjNTFkMmUgMTAwNjQ0DQo+ID4gPiAtLS0gYS9n Y2MvdHJlZS12ZWN0LWxvb3AtbWFuaXAuY2MNCj4gPiA+ICsrKyBiL2djYy90 cmVlLXZlY3QtbG9vcC1tYW5pcC5jYw0KPiA+ID4gQEAgLTY4Miw2ICs2ODIs MTczIEBAIHZlY3Rfc2V0X2xvb3BfY29udHJvbHNfZGlyZWN0bHkgKGNsYXNz IGxvb3AgKmxvb3AsIGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbywNCj4gPiA+ ICAgIHJldHVybiBuZXh0X2N0cmw7DQo+ID4gPiB9DQo+ID4gPiArLyogSGVs cGVyIGZvciB2ZWN0X3NldF9sb29wX2NvbmRpdGlvbl9wYXJ0aWFsX3ZlY3Rv cnMuICBHZW5lcmF0ZSBkZWZpbml0aW9ucw0KPiA+ID4gKyAgIGZvciBhbGwg dGhlIHJncm91cCBjb250cm9scyBpbiBSR0MgYW5kIHJldHVybiBhIGNvbnRy b2wgdGhhdCBpcyBub256ZXJvDQo+ID4gPiArICAgd2hlbiB0aGUgbG9vcCBu ZWVkcyB0byBpdGVyYXRlLiAgQWRkIGFueSBuZXcgcHJlaGVhZGVyIHN0YXRl bWVudHMgdG8NCj4gPiA+ICsgICBQUkVIRUFERVJfU0VRLiAgVXNlIExPT1Bf Q09ORF9HU0kgdG8gaW5zZXJ0IGNvZGUgYmVmb3JlIHRoZSBleGl0IGdjb25k Lg0KPiA+ID4gKw0KPiA+ID4gKyAgIFJHQyBiZWxvbmdzIHRvIGxvb3AgTE9P UC4gIFRoZSBsb29wIG9yaWdpbmFsbHkgaXRlcmF0ZWQgTklURVJTDQo+ID4g PiArICAgdGltZXMgYW5kIGhhcyBiZWVuIHZlY3Rvcml6ZWQgYWNjb3JkaW5n IHRvIExPT1BfVklORk8uDQo+ID4gPiArDQo+ID4gPiArICAgVW5saWtlIHZl Y3Rfc2V0X2xvb3BfY29udHJvbHNfZGlyZWN0bHkgd2hpY2ggaXMgaXRlcmF0 aW5nIGZyb20gMC1iYXNlZCBJVg0KPiA+ID4gKyAgIHRvIFRFU1RfTElNSVQg LSBiaWFzLg0KPiA+ID4gKw0KPiA+ID4gKyAgIEluIHZlY3Rfc2V0X2xvb3Bf Y29udHJvbHNfYnlfd2hpbGVfbGVuLCB3ZSBhcmUgaXRlcmF0aW5nIGZyb20g c3RhcnQgYXQNCj4gPiA+ICsgICBJViA9IFRFU1RfTElNSVQgLSBiaWFzIGFu ZCBrZWVwIHN1YnRyYWN0IElWIGJ5IHRoZSBsZW5ndGggY2FsY3VsYXRlZCBi eQ0KPiA+ID4gKyAgIElGTl9XSElMRV9MRU4gcGF0dGVybi4NCj4gPiA+ICsN Cj4gPiA+ICsgICBOb3RlOiB0aGUgY29zdCBvZiB0aGUgY29kZSBnZW5lcmF0 ZWQgYnkgdGhpcyBmdW5jdGlvbiBpcyBtb2RlbGVkDQo+ID4gPiArICAgYnkg dmVjdF9lc3RpbWF0ZV9taW5fcHJvZml0YWJsZV9pdGVycywgc28gY2hhbmdl cyBoZXJlIG1heSBuZWVkDQo+ID4gPiArICAgY29ycmVzcG9uZGluZyBjaGFu Z2VzIHRoZXJlLg0KPiA+ID4gKw0KPiA+ID4gKyAgIDEuIFNpbmdsZSByZ3Jv dXAsIHRoZSBHaW1wbGUgSVIgc2hvdWxkIGJlOg0KPiA+ID4gKw0KPiA+ID4g KyA8YmIgMz4NCj4gPiA+ICsgXzE5ID0gKHVuc2lnbmVkIGxvbmcpIG5fNShE KTsNCj4gPiA+ICsgLi4uDQo+ID4gPiArDQo+ID4gPiArIDxiYiA0PjoNCj4g PiA+ICsgLi4uDQo+ID4gPiArICMgaXZ0bXBfMjAgPSBQSEkgPGl2dG1wXzIx KDQpLCBfMTkoMyk+DQo+ID4gPiArIC4uLg0KPiA+ID4gKyBfMjIgPSAuV0hJ TEVfTEVOIChpdnRtcF8yMCwgdmYpOw0KPiA+ID4gKyAuLi4NCj4gPiA+ICsg dmVjdG9yIHN0YXRlbWVudCAodXNlIF8yMik7DQo+ID4gPiArIC4uLg0KPiA+ ID4gKyBpdnRtcF8yMSA9IGl2dG1wXzIwIC0gXzIyOw0KPiA+ID4gKyAuLi4N Cj4gPiA+ICsgaWYgKGl2dG1wXzIxICE9IDApDQo+ID4gPiArICAgZ290byA8 YmIgND47IFs3NS4wMCVdDQo+ID4gPiArIGVsc2UNCj4gPiA+ICsgICBnb3Rv IDxiYiA1PjsgWzI1LjAwJV0NCj4gPiA+ICsNCj4gPiA+ICsgPGJiIDU+DQo+ ID4gPiArIHJldHVybjsNCj4gPiA+ICsNCj4gPiA+ICsgICBOb3RlOiBJRk5f V0hJTEVfTEVOIHdpbGwgZ3VhcmFudGVlICJpdnRtcF8yMSA9IGl2dG1wXzIw IC0gXzIyIiBuZXZlcg0KPiA+ID4gKyAgIHVuZGVyZmxvdyAwLg0KPiA+ID4g Kw0KPiA+ID4gKyAgIDIuIE11bHRpcGxlIHJncm91cCwgdGhlIEdpbXBsZSBJ UiBzaG91bGQgYmU6DQo+ID4gPiArDQo+ID4gPiArIDxiYiAzPg0KPiA+ID4g KyBfNzAgPSAodW5zaWduZWQgbG9uZykgYm5kLjdfNTI7DQo+ID4gPiArIF83 MSA9IF83MCAqIDI7DQo+ID4gPiArIF83MiA9IE1BWF9FWFBSIDxfNzEsIDQ+ Ow0KPiA+ID4gKyBfNzMgPSBfNzIgKyAxODQ0Njc0NDA3MzcwOTU1MTYxMjsN Cj4gPiA+ICsgLi4uDQo+ID4gPiArDQo+ID4gPiArIDxiYiA0PjoNCj4gPiA+ ICsgLi4uDQo+ID4gPiArICMgaXZ0bXBfNzQgPSBQSEkgPGl2dG1wXzc1KDYp LCBfNzMoMTIpPg0KPiA+ID4gKyAjIGl2dG1wXzc3ID0gUEhJIDxpdnRtcF83 OCg2KSwgXzcxKDEyKT4NCj4gPiA+ICsgXzc2ID0gLldISUxFX0xFTiAoaXZ0 bXBfNzQsIHZmICogbml0ZW1zX3Blcl9jdHJsKTsNCj4gPiA+ICsgXzc5ID0g LldISUxFX0xFTiAoaXZ0bXBfNzcsIHZmICogbml0ZW1zX3Blcl9jdHJsKTsN Cj4gPiA+ICsgLi4uDQo+ID4gPiArIHZlY3RvciBzdGF0ZW1lbnQgKHVzZSBf NzkpOw0KPiA+ID4gKyAuLi4NCj4gPiA+ICsgdmVjdG9yIHN0YXRlbWVudCAo dXNlIF83Nik7DQo+ID4gPiArIC4uLg0KPiA+ID4gKyBfNjUgPSBfNzkgLyAy Ow0KPiA+ID4gKyB2ZWN0b3Igc3RhdGVtZW50ICh1c2UgXzY1KTsNCj4gPiA+ ICsgLi4uDQo+ID4gPiArIF82OCA9IF83NiAvIDI7DQo+ID4gPiArIHZlY3Rv ciBzdGF0ZW1lbnQgKHVzZSBfNjgpOw0KPiA+ID4gKyAuLi4NCj4gPiA+ICsg aXZ0bXBfNzggPSBpdnRtcF83NyAtIF83OTsNCj4gPiA+ICsgaXZ0bXBfNzUg PSBpdnRtcF83NCAtIF83NjsNCj4gPiA+ICsgLi4uDQo+ID4gPiArIGlmIChp dnRtcF83OCAhPSAwKQ0KPiA+ID4gKyAgIGdvdG8gPGJiIDQ+OyBbNzUuMDAl XQ0KPiA+ID4gKyBlbHNlDQo+ID4gPiArICAgZ290byA8YmIgNT47IFsyNS4w MCVdDQo+ID4gPiArDQo+ID4gPiArIDxiYiA1Pg0KPiA+ID4gKyByZXR1cm47 DQo+ID4gPiArDQo+ID4gPiArKi8NCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMg dHJlZQ0KPiA+ID4gK3ZlY3Rfc2V0X2xvb3BfY29udHJvbHNfYnlfd2hpbGVf bGVuIChjbGFzcyBsb29wICpsb29wLCBsb29wX3ZlY19pbmZvIGxvb3Bfdmlu Zm8sDQo+ID4gPiArICAgICAgZ2ltcGxlX3NlcSAqcHJlaGVhZGVyX3NlcSwN Cj4gPiA+ICsgICAgICBnaW1wbGVfc2VxICpoZWFkZXJfc2VxLA0KPiA+ID4g KyAgICAgIHJncm91cF9jb250cm9scyAqcmdjLCB0cmVlIG5pdGVycykNCj4g PiA+ICt7DQo+ID4gPiArICB0cmVlIGNvbXBhcmVfdHlwZSA9IExPT1BfVklO Rk9fUkdST1VQX0NPTVBBUkVfVFlQRSAobG9vcF92aW5mbyk7DQo+ID4gPiAr ICB0cmVlIGl2X3R5cGUgPSBMT09QX1ZJTkZPX1JHUk9VUF9JVl9UWVBFIChs b29wX3ZpbmZvKTsNCj4gPiA+ICsgIC8qIFdlIGFyZSBub3QgYWxsb3dpbmcg bWFza2VkIGFwcHJvYWNoIGluIFdISUxFX0xFTi4gICovDQo+ID4gPiArICBn Y2NfYXNzZXJ0ICghTE9PUF9WSU5GT19GVUxMWV9NQVNLRURfUCAobG9vcF92 aW5mbykpOw0KPiA+ID4gKw0KPiA+ID4gKyAgdHJlZSBjdHJsX3R5cGUgPSBy Z2MtPnR5cGU7DQo+ID4gPiArICB1bnNpZ25lZCBpbnQgbml0ZW1zX3Blcl9p dGVyID0gcmdjLT5tYXhfbnNjYWxhcnNfcGVyX2l0ZXIgKiByZ2MtPmZhY3Rv cjsNCj4gPiA+ICsgIHBvbHlfdWludDY0IG5pdGVtc19wZXJfY3RybCA9IFRZ UEVfVkVDVE9SX1NVQlBBUlRTIChjdHJsX3R5cGUpICogcmdjLT5mYWN0b3I7 DQo+ID4gPiArICBwb2x5X3VpbnQ2NCB2ZiA9IExPT1BfVklORk9fVkVDVF9G QUNUT1IgKGxvb3BfdmluZm8pOw0KPiA+ID4gKw0KPiA+ID4gKyAgLyogQ2Fs Y3VsYXRlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBpdGVtIHZhbHVlcyB0aGF0 IHRoZSByZ3JvdXANCj4gPiA+ICsgICAgIGhhbmRsZXMgaW4gdG90YWwsIHRo ZSBudW1iZXIgdGhhdCBpdCBoYW5kbGVzIGZvciBlYWNoIGl0ZXJhdGlvbg0K PiA+ID4gKyAgICAgb2YgdGhlIHZlY3RvciBsb29wLiAgKi8NCj4gPiA+ICsg IHRyZWUgbml0ZW1zX3RvdGFsID0gbml0ZXJzOw0KPiA+ID4gKyAgaWYgKG5p dGVtc19wZXJfaXRlciAhPSAxKQ0KPiA+ID4gKyAgICB7DQo+ID4gPiArICAg ICAgLyogV2UgY2hlY2tlZCBiZWZvcmUgc2V0dGluZyBMT09QX1ZJTkZPX1VT SU5HX1BBUlRJQUxfVkVDVE9SU19QIHRoYXQNCj4gPiA+ICsgdGhlc2UgbXVs dGlwbGljYXRpb25zIGRvbid0IG92ZXJmbG93LiAgKi8NCj4gPiA+ICsgICAg ICB0cmVlIGNvbXBhcmVfZmFjdG9yID0gYnVpbGRfaW50X2NzdCAoY29tcGFy ZV90eXBlLCBuaXRlbXNfcGVyX2l0ZXIpOw0KPiA+ID4gKyAgICAgIG5pdGVt c190b3RhbCA9IGdpbXBsZV9idWlsZCAocHJlaGVhZGVyX3NlcSwgTVVMVF9F WFBSLCBjb21wYXJlX3R5cGUsDQo+ID4gPiArICAgIG5pdGVtc190b3RhbCwg Y29tcGFyZV9mYWN0b3IpOw0KPiA+ID4gKyAgICB9DQo+ID4gPiArDQo+ID4g PiArICAvKiBDb252ZXJ0IHRoZSBjb21wYXJpc29uIHZhbHVlIHRvIHRoZSBJ ViB0eXBlIChlaXRoZXIgYSBuby1vcCBvcg0KPiA+ID4gKyAgICAgYSBwcm9t b3Rpb24pLiAgKi8NCj4gPiA+ICsgIG5pdGVtc190b3RhbCA9IGdpbXBsZV9j b252ZXJ0IChwcmVoZWFkZXJfc2VxLCBpdl90eXBlLCBuaXRlbXNfdG90YWwp Ow0KPiA+ID4gKw0KPiA+ID4gKyAgLyogQ3JlYXRlIGFuIGluZHVjdGlvbiB2 YXJpYWJsZSB0aGF0IGNvdW50cyB0aGUgbnVtYmVyIG9mIGl0ZW1zDQo+ID4g PiArICAgICBwcm9jZXNzZWQuICAqLw0KPiA+ID4gKyAgdHJlZSBpbmRleF9i ZWZvcmVfaW5jciwgaW5kZXhfYWZ0ZXJfaW5jcjsNCj4gPiA+ICsgIGdpbXBs ZV9zdG10X2l0ZXJhdG9yIGluY3JfZ3NpOw0KPiA+ID4gKyAgYm9vbCBpbnNl cnRfYWZ0ZXI7DQo+ID4gPiArICBzdGFuZGFyZF9pdl9pbmNyZW1lbnRfcG9z aXRpb24gKGxvb3AsICZpbmNyX2dzaSwgJmluc2VydF9hZnRlcik7DQo+ID4g PiArDQo+ID4gPiArICAvKiBUZXN0IHRoZSBkZWNyZW1lbnRlZCBJViwgd2hp Y2ggd2lsbCBuZXZlciB1bmRlcmZsb3cgMCBzaW5jZSB3ZSBoYXZlDQo+ID4g PiArICAgICBJRk5fV0hJTEVfTEVOIHRvIGd1cmFudGVlIHRoYXQuICAqLw0K PiA+ID4gKyAgdHJlZSB0ZXN0X2xpbWl0ID0gbml0ZW1zX3RvdGFsOw0KPiA+ ID4gKw0KPiA+ID4gKyAgLyogUHJvdmlkZSBhIGRlZmluaXRpb24gb2YgZWFj aCBjb250cm9sIGluIHRoZSBncm91cC4gICovDQo+ID4gPiArICB0cmVlIGN0 cmw7DQo+ID4gPiArICB1bnNpZ25lZCBpbnQgaTsNCj4gPiA+ICsgIEZPUl9F QUNIX1ZFQ19FTFRfUkVWRVJTRSAocmdjLT5jb250cm9scywgaSwgY3RybCkN Cj4gPiA+ICsgICAgew0KPiA+ID4gKyAgICAgIC8qIFByZXZpb3VzIGNvbnRy b2xzIHdpbGwgY292ZXIgQklBUyBpdGVtcy4gIFRoaXMgY29udHJvbCBjb3Zl cnMgdGhlDQo+ID4gPiArIG5leHQgYmF0Y2guICAqLw0KPiA+ID4gKyAgICAg IHBvbHlfdWludDY0IGJpYXMgPSBuaXRlbXNfcGVyX2N0cmwgKiBpOw0KPiA+ ID4gKyAgICAgIHRyZWUgYmlhc190cmVlID0gYnVpbGRfaW50X2NzdCAoaXZf dHlwZSwgYmlhcyk7DQo+ID4gPiArDQo+ID4gPiArICAgICAgLyogUmF0aGVy IHRoYW4gaGF2ZSBhIG5ldyBJViB0aGF0IHN0YXJ0cyBhdCBURVNUX0xJTUlU IGFuZCBnb2VzIGRvd24gdG8NCj4gPiA+ICsgQklBUywgcHJlZmVyIHRvIHVz ZSB0aGUgc2FtZSBURVNUX0xJTUlUIC0gQklBUyBiYXNlZCBJViBmb3IgZWFj aA0KPiA+ID4gKyBjb250cm9sIGFuZCBhZGp1c3QgdGhlIGJvdW5kIGRvd24g YnkgQklBUy4gICovDQo+ID4gPiArICAgICAgdHJlZSB0aGlzX3Rlc3RfbGlt aXQgPSB0ZXN0X2xpbWl0Ow0KPiA+ID4gKyAgICAgIGlmIChpICE9IDApDQo+ ID4gPiArIHsNCj4gPiA+ICsgICB0aGlzX3Rlc3RfbGltaXQgPSBnaW1wbGVf YnVpbGQgKHByZWhlYWRlcl9zZXEsIE1BWF9FWFBSLCBpdl90eXBlLA0KPiA+ ID4gKyAgIHRoaXNfdGVzdF9saW1pdCwgYmlhc190cmVlKTsNCj4gPiA+ICsg ICB0aGlzX3Rlc3RfbGltaXQgPSBnaW1wbGVfYnVpbGQgKHByZWhlYWRlcl9z ZXEsIE1JTlVTX0VYUFIsIGl2X3R5cGUsDQo+ID4gPiArICAgdGhpc190ZXN0 X2xpbWl0LCBiaWFzX3RyZWUpOw0KPiA+ID4gKyB9DQo+ID4gPiArDQo+ID4g PiArICAgICAgLyogQ3JlYXRlIGRlY3JlbWVudCBJVi4gICovDQo+ID4gPiAr ICAgICAgY3JlYXRlX2l2ICh0aGlzX3Rlc3RfbGltaXQsIGN0cmwsIE5VTExf VFJFRSwgbG9vcCwgJmluY3JfZ3NpLA0KPiA+ID4gKyBpbnNlcnRfYWZ0ZXIs ICZpbmRleF9iZWZvcmVfaW5jciwgJmluZGV4X2FmdGVyX2luY3IsDQo+ID4g PiArIE1JTlVTX0VYUFIpOw0KPiA+ID4gKw0KPiA+ID4gKyAgICAgIHBvbHlf dWludDY0IGZpbmFsX3ZmID0gdmYgKiBuaXRlbXNfcGVyX2l0ZXI7DQo+ID4g PiArICAgICAgdHJlZSB2Zl9zdGVwID0gYnVpbGRfaW50X2NzdCAoaXZfdHlw ZSwgZmluYWxfdmYpOw0KPiA+ID4gKyAgICAgIHRyZWUgcmVzX2xlbiA9IGdp bXBsZV9idWlsZCAoaGVhZGVyX3NlcSwgSUZOX1dISUxFX0xFTiwgaXZfdHlw ZSwNCj4gPiA+ICsgICAgaW5kZXhfYmVmb3JlX2luY3IsIHZmX3N0ZXApOw0K PiA+ID4gKyAgICAgIGdhc3NpZ24gKmFzc2lnbiA9IGdpbXBsZV9idWlsZF9h c3NpZ24gKGN0cmwsIHJlc19sZW4pOw0KPiA+ID4gKyAgICAgIGdpbXBsZV9z ZXFfYWRkX3N0bXQgKGhlYWRlcl9zZXEsIGFzc2lnbik7DQo+ID4gPiArICAg IH0NCj4gPiA+ICsNCj4gPiA+ICsgIHJldHVybiBpbmRleF9hZnRlcl9pbmNy Ow0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+IC8qIFNldCB1cCB0aGUgaXRl cmF0aW9uIGNvbmRpdGlvbiBhbmQgcmdyb3VwIGNvbnRyb2xzIGZvciBMT09Q LCBnaXZlbg0KPiA+ID4gICAgIHRoYXQgTE9PUF9WSU5GT19VU0lOR19QQVJU SUFMX1ZFQ1RPUlNfUCBpcyB0cnVlIGZvciB0aGUgdmVjdG9yaXplZA0KPiA+ ID4gICAgIGxvb3AuICBMT09QX1ZJTkZPIGRlc2NyaWJlcyB0aGUgdmVjdG9y aXphdGlvbiBvZiBMT09QLiAgTklURVJTIGlzDQo+ID4gPiBAQCAtNzAzLDYg Kzg3MCw3IEBAIHZlY3Rfc2V0X2xvb3BfY29uZGl0aW9uX3BhcnRpYWxfdmVj dG9ycyAoY2xhc3MgbG9vcCAqbG9vcCwNCj4gPiA+ICAgIGJvb2wgdXNlX21h c2tzX3AgPSBMT09QX1ZJTkZPX0ZVTExZX01BU0tFRF9QIChsb29wX3ZpbmZv KTsNCj4gPiA+ICAgIHRyZWUgY29tcGFyZV90eXBlID0gTE9PUF9WSU5GT19S R1JPVVBfQ09NUEFSRV9UWVBFIChsb29wX3ZpbmZvKTsNCj4gPiA+ICsgIHRy ZWUgaXZfdHlwZSA9IExPT1BfVklORk9fUkdST1VQX0lWX1RZUEUgKGxvb3Bf dmluZm8pOw0KPiA+ID4gICAgdW5zaWduZWQgaW50IGNvbXBhcmVfcHJlY2lz aW9uID0gVFlQRV9QUkVDSVNJT04gKGNvbXBhcmVfdHlwZSk7DQo+ID4gPiAg ICB0cmVlIG9yaWdfbml0ZXJzID0gbml0ZXJzOw0KPiA+ID4gQEAgLTc1Nywx MiArOTI1LDE4IEBAIHZlY3Rfc2V0X2xvb3BfY29uZGl0aW9uX3BhcnRpYWxf dmVjdG9ycyAoY2xhc3MgbG9vcCAqbG9vcCwNCj4gPiA+IGJvb2wgbWlnaHRf d3JhcF9wID0gdmVjdF9yZ3JvdXBfaXZfbWlnaHRfd3JhcF9wIChsb29wX3Zp bmZvLCByZ2MpOw0KPiA+ID4gLyogU2V0IHVwIGFsbCBjb250cm9scyBmb3Ig dGhpcyBncm91cC4gICovDQo+ID4gPiAtIHRlc3RfY3RybCA9IHZlY3Rfc2V0 X2xvb3BfY29udHJvbHNfZGlyZWN0bHkgKGxvb3AsIGxvb3BfdmluZm8sDQo+ ID4gPiAtICAgICAgJnByZWhlYWRlcl9zZXEsDQo+ID4gPiAtICAgICAgJmhl YWRlcl9zZXEsDQo+ID4gPiAtICAgICAgbG9vcF9jb25kX2dzaSwgcmdjLA0K PiA+ID4gLSAgICAgIG5pdGVycywgbml0ZXJzX3NraXAsDQo+ID4gPiAtICAg ICAgbWlnaHRfd3JhcF9wKTsNCj4gPiA+ICsgaWYgKGRpcmVjdF9pbnRlcm5h bF9mbl9zdXBwb3J0ZWRfcCAoSUZOX1dISUxFX0xFTiwgaXZfdHlwZSwNCj4g PiA+ICsgICAgIE9QVElNSVpFX0ZPUl9TUEVFRCkpDQo+ID4gPiArICAgdGVz dF9jdHJsDQo+ID4gPiArICAgICA9IHZlY3Rfc2V0X2xvb3BfY29udHJvbHNf Ynlfd2hpbGVfbGVuIChsb29wLCBsb29wX3ZpbmZvLA0KPiA+ID4gKyAgICAm cHJlaGVhZGVyX3NlcSwgJmhlYWRlcl9zZXEsDQo+ID4gPiArICAgIHJnYywg bml0ZXJzKTsNCj4gPiA+ICsgZWxzZQ0KPiA+ID4gKyAgIHRlc3RfY3RybA0K PiA+ID4gKyAgICAgPSB2ZWN0X3NldF9sb29wX2NvbnRyb2xzX2RpcmVjdGx5 IChsb29wLCBsb29wX3ZpbmZvLCAmcHJlaGVhZGVyX3NlcSwNCj4gPiA+ICsg ICAgICAgICZoZWFkZXJfc2VxLCBsb29wX2NvbmRfZ3NpLCByZ2MsDQo+ID4g PiArICAgICAgICBuaXRlcnMsIG5pdGVyc19za2lwLA0KPiA+ID4gKyAgICAg ICAgbWlnaHRfd3JhcF9wKTsNCj4gPiA+ICAgICAgICB9DQo+ID4gPiAgICAv KiBFbWl0IGFsbCBhY2N1bXVsYXRlZCBzdGF0ZW1lbnRzLiAgKi8NCj4gPiA+ IGRpZmYgLS1naXQgYS9nY2MvdHJlZS12ZWN0LWxvb3AuY2MgYi9nY2MvdHJl ZS12ZWN0LWxvb3AuY2MNCj4gPiA+IGluZGV4IDFiYTlmMThkNzNlLi41YmZm ZDlhNjMyMiAxMDA2NDQNCj4gPiA+IC0tLSBhL2djYy90cmVlLXZlY3QtbG9v cC5jYw0KPiA+ID4gKysrIGIvZ2NjL3RyZWUtdmVjdC1sb29wLmNjDQo+ID4g PiBAQCAtMTAzNjAsMTIgKzEwMzYwLDE0IEBAIHZlY3RfcmVjb3JkX2xvb3Bf bGVuIChsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8sIHZlY19sb29wX2xlbnMg KmxlbnMsDQo+ID4gPiAgICAgcmdyb3VwIHRoYXQgb3BlcmF0ZXMgb24gTlZF Q1RPUlMgdmVjdG9ycywgd2hlcmUgMCA8PSBJTkRFWCA8IE5WRUNUT1JTLiAg Ki8NCj4gPiA+IHRyZWUNCj4gPiA+IC12ZWN0X2dldF9sb29wX2xlbiAobG9v cF92ZWNfaW5mbyBsb29wX3ZpbmZvLCB2ZWNfbG9vcF9sZW5zICpsZW5zLA0K PiA+ID4gLSAgICB1bnNpZ25lZCBpbnQgbnZlY3RvcnMsIHVuc2lnbmVkIGlu dCBpbmRleCkNCj4gPiA+ICt2ZWN0X2dldF9sb29wX2xlbiAoZ2ltcGxlX3N0 bXRfaXRlcmF0b3IgKmdzaSwgbG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZvLA0K PiA+ID4gKyAgICB2ZWNfbG9vcF9sZW5zICpsZW5zLCB1bnNpZ25lZCBpbnQg bnZlY3RvcnMsIHRyZWUgdmVjdHlwZSwNCj4gPiA+ICsgICAgdW5zaWduZWQg aW50IGluZGV4KQ0KPiA+ID4gew0KPiA+ID4gICAgcmdyb3VwX2NvbnRyb2xz ICpyZ2wgPSAmKCpsZW5zKVtudmVjdG9ycyAtIDFdOw0KPiA+ID4gLSAgYm9v bCB1c2VfYmlhc19hZGp1c3RlZF9sZW4gPQ0KPiA+ID4gLSAgICBMT09QX1ZJ TkZPX1BBUlRJQUxfTE9BRF9TVE9SRV9CSUFTIChsb29wX3ZpbmZvKSAhPSAw Ow0KPiA+ID4gKyAgYm9vbCB1c2VfYmlhc19hZGp1c3RlZF9sZW4NCj4gPiA+ ICsgICAgPSBMT09QX1ZJTkZPX1BBUlRJQUxfTE9BRF9TVE9SRV9CSUFTIChs b29wX3ZpbmZvKSAhPSAwOw0KPiA+ID4gKyAgdHJlZSBpdl90eXBlID0gTE9P UF9WSU5GT19SR1JPVVBfSVZfVFlQRSAobG9vcF92aW5mbyk7DQo+ID4gPiAg ICAvKiBQb3B1bGF0ZSB0aGUgcmdyb3VwJ3MgbGVuIGFycmF5LCBpZiB0aGlz IGlzIHRoZSBmaXJzdCB0aW1lIHdlJ3ZlDQo+ID4gPiAgICAgICB1c2VkIGl0 LiAgKi8NCj4gPiA+IEBAIC0xMDM4Niw4ICsxMDM4OCw4IEBAIHZlY3RfZ2V0 X2xvb3BfbGVuIChsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8sIHZlY19sb29w X2xlbnMgKmxlbnMsDQo+ID4gPiAgIGlmICh1c2VfYmlhc19hZGp1c3RlZF9s ZW4pDQo+ID4gPiAgICAgew0KPiA+ID4gICAgICAgZ2NjX2Fzc2VydCAoaSA9 PSAwKTsNCj4gPiA+IC0gICAgICAgdHJlZSBhZGp1c3RlZF9sZW4gPQ0KPiA+ ID4gLSBtYWtlX3RlbXBfc3NhX25hbWUgKGxlbl90eXBlLCBOVUxMLCAiYWRq dXN0ZWRfbG9vcF9sZW4iKTsNCj4gPiA+ICsgICAgICAgdHJlZSBhZGp1c3Rl ZF9sZW4NCj4gPiA+ICsgPSBtYWtlX3RlbXBfc3NhX25hbWUgKGxlbl90eXBl LCBOVUxMLCAiYWRqdXN0ZWRfbG9vcF9sZW4iKTsNCj4gPiA+ICAgICAgIFNT QV9OQU1FX0RFRl9TVE1UIChhZGp1c3RlZF9sZW4pID0gZ2ltcGxlX2J1aWxk X25vcCAoKTsNCj4gPiA+ICAgICAgIHJnbC0+Ymlhc19hZGp1c3RlZF9jdHJs ID0gYWRqdXN0ZWRfbGVuOw0KPiA+ID4gICAgIH0NCj4gPiA+IEBAIC0xMDM5 Niw2ICsxMDM5OCwyNyBAQCB2ZWN0X2dldF9sb29wX2xlbiAobG9vcF92ZWNf aW5mbyBsb29wX3ZpbmZvLCB2ZWNfbG9vcF9sZW5zICpsZW5zLA0KPiA+ID4g ICAgaWYgKHVzZV9iaWFzX2FkanVzdGVkX2xlbikNCj4gPiA+ICAgICAgcmV0 dXJuIHJnbC0+Ymlhc19hZGp1c3RlZF9jdHJsOw0KPiA+ID4gKyAgZWxzZSBp ZiAoZGlyZWN0X2ludGVybmFsX2ZuX3N1cHBvcnRlZF9wIChJRk5fV0hJTEVf TEVOLCBpdl90eXBlLA0KPiA+ID4gKyAgICBPUFRJTUlaRV9GT1JfU1BFRUQp KQ0KPiA+ID4gKyAgICB7DQo+ID4gPiArICAgICAgdHJlZSBsb29wX2xlbiA9 IHJnbC0+Y29udHJvbHNbaW5kZXhdOw0KPiA+ID4gKyAgICAgIHBvbHlfaW50 NjQgbnVuaXRzMSA9IFRZUEVfVkVDVE9SX1NVQlBBUlRTIChyZ2wtPnR5cGUp Ow0KPiA+ID4gKyAgICAgIHBvbHlfaW50NjQgbnVuaXRzMiA9IFRZUEVfVkVD VE9SX1NVQlBBUlRTICh2ZWN0eXBlKTsNCj4gPiA+ICsgICAgICBpZiAobWF5 YmVfbmUgKG51bml0czEsIG51bml0czIpKQ0KPiA+ID4gKyB7DQo+ID4gPiAr ICAgLyogQSBsb29wIGxlbiBmb3IgZGF0YSB0eXBlIFggY2FuIGJlIHJldXNl ZCBmb3IgZGF0YSB0eXBlIFkNCj4gPiA+ICsgICAgICBpZiBYIGhhcyBOIHRp bWVzIG1vcmUgZWxlbWVudHMgdGhhbiBZIGFuZCBpZiBZJ3MgZWxlbWVudHMN Cj4gPiA+ICsgICAgICBhcmUgTiB0aW1lcyBiaWdnZXIgdGhhbiBYJ3MuICAq Lw0KPiA+ID4gKyAgIGdjY19hc3NlcnQgKG11bHRpcGxlX3AgKG51bml0czEs IG51bml0czIpKTsNCj4gPiA+ICsgICB1bnNpZ25lZCBpbnQgZmFjdG9yID0g ZXhhY3RfZGl2IChudW5pdHMxLCBudW5pdHMyKS50b19jb25zdGFudCAoKTsN Cj4gPiA+ICsgICBnaW1wbGVfc2VxIHNlcSA9IE5VTEw7DQo+ID4gPiArICAg bG9vcF9sZW4gPSBnaW1wbGVfYnVpbGQgKCZzZXEsIFJESVZfRVhQUiwgaXZf dHlwZSwgbG9vcF9sZW4sDQo+ID4gPiArICAgIGJ1aWxkX2ludF9jc3QgKGl2 X3R5cGUsIGZhY3RvcikpOw0KPiA+ID4gKyAgIGlmIChzZXEpDQo+ID4gPiAr ICAgICBnc2lfaW5zZXJ0X3NlcV9iZWZvcmUgKGdzaSwgc2VxLCBHU0lfU0FN RV9TVE1UKTsNCj4gPiA+ICsgfQ0KPiA+ID4gKyAgICAgIHJldHVybiBsb29w X2xlbjsNCj4gPiA+ICsgICAgfQ0KPiA+ID4gICAgZWxzZQ0KPiA+ID4gICAg ICByZXR1cm4gcmdsLT5jb250cm9sc1tpbmRleF07DQo+ID4gPiB9DQo+ID4g PiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtdmVjdC1zdG10cy5jYyBiL2djYy90 cmVlLXZlY3Qtc3RtdHMuY2MNCj4gPiA+IGluZGV4IGVmYTJkMGRhYTUyLi43 MDhjOGExZDgwNiAxMDA2NDQNCj4gPiA+IC0tLSBhL2djYy90cmVlLXZlY3Qt c3RtdHMuY2MNCj4gPiA+ICsrKyBiL2djYy90cmVlLXZlY3Qtc3RtdHMuY2MN Cj4gPiA+IEBAIC04NjUzLDggKzg2NTMsOSBAQCB2ZWN0b3JpemFibGVfc3Rv cmUgKHZlY19pbmZvICp2aW5mbywNCj4gPiA+ICAgICAgIGVsc2UgaWYgKGxv b3BfbGVucykNCj4gPiA+IHsNCj4gPiA+ICAgdHJlZSBmaW5hbF9sZW4NCj4g PiA+IC0gICAgID0gdmVjdF9nZXRfbG9vcF9sZW4gKGxvb3BfdmluZm8sIGxv b3BfbGVucywNCj4gPiA+IC0gdmVjX251bSAqIG5jb3BpZXMsIHZlY19udW0g KiBqICsgaSk7DQo+ID4gPiArICAgICA9IHZlY3RfZ2V0X2xvb3BfbGVuIChn c2ksIGxvb3BfdmluZm8sIGxvb3BfbGVucywNCj4gPiA+ICsgdmVjX251bSAq IG5jb3BpZXMsIHZlY3R5cGUsDQo+ID4gPiArIHZlY19udW0gKiBqICsgaSk7 DQo+ID4gPiAgIHRyZWUgcHRyID0gYnVpbGRfaW50X2NzdCAocmVmX3R5cGUs IGFsaWduICogQklUU19QRVJfVU5JVCk7DQo+ID4gPiAgIG1hY2hpbmVfbW9k ZSB2bW9kZSA9IFRZUEVfTU9ERSAodmVjdHlwZSk7DQo+ID4gPiAgIG9wdF9t YWNoaW5lX21vZGUgbmV3X292bW9kZQ0KPiA+ID4gQEAgLTEwMDA5LDggKzEw MDEwLDggQEAgdmVjdG9yaXphYmxlX2xvYWQgKHZlY19pbmZvICp2aW5mbywN Cj4gPiA+ICAgICBlbHNlIGlmIChsb29wX2xlbnMgJiYgbWVtb3J5X2FjY2Vz c190eXBlICE9IFZNQVRfSU5WQVJJQU5UKQ0KPiA+ID4gICAgICAgew0KPiA+ ID4gdHJlZSBmaW5hbF9sZW4NCj4gPiA+IC0gICA9IHZlY3RfZ2V0X2xvb3Bf bGVuIChsb29wX3ZpbmZvLCBsb29wX2xlbnMsDQo+ID4gPiAtICAgICAgICB2 ZWNfbnVtICogbmNvcGllcywNCj4gPiA+ICsgICA9IHZlY3RfZ2V0X2xvb3Bf bGVuIChnc2ksIGxvb3BfdmluZm8sIGxvb3BfbGVucywNCj4gPiA+ICsgICAg ICAgIHZlY19udW0gKiBuY29waWVzLCB2ZWN0eXBlLA0KPiA+ID4gICAgICAg IHZlY19udW0gKiBqICsgaSk7DQo+ID4gPiB0cmVlIHB0ciA9IGJ1aWxkX2lu dF9jc3QgKHJlZl90eXBlLA0KPiA+ID4gICBhbGlnbiAqIEJJVFNfUEVSX1VO SVQpOw0KPiA+ID4gZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3Rvcml6ZXIu aCBiL2djYy90cmVlLXZlY3Rvcml6ZXIuaA0KPiA+ID4gaW5kZXggOWNmMmZi MjNmZTMuLmU1Y2YzOGNhZjRiIDEwMDY0NA0KPiA+ID4gLS0tIGEvZ2NjL3Ry ZWUtdmVjdG9yaXplci5oDQo+ID4gPiArKysgYi9nY2MvdHJlZS12ZWN0b3Jp emVyLmgNCj4gPiA+IEBAIC0yMjkzLDggKzIyOTMsOCBAQCBleHRlcm4gdHJl ZSB2ZWN0X2dldF9sb29wX21hc2sgKGdpbXBsZV9zdG10X2l0ZXJhdG9yICos IHZlY19sb29wX21hc2tzICosDQo+ID4gPiB1bnNpZ25lZCBpbnQsIHRyZWUs IHVuc2lnbmVkIGludCk7DQo+ID4gPiBleHRlcm4gdm9pZCB2ZWN0X3JlY29y ZF9sb29wX2xlbiAobG9vcF92ZWNfaW5mbywgdmVjX2xvb3BfbGVucyAqLCB1 bnNpZ25lZCBpbnQsDQo+ID4gPiAgIHRyZWUsIHVuc2lnbmVkIGludCk7DQo+ ID4gPiAtZXh0ZXJuIHRyZWUgdmVjdF9nZXRfbG9vcF9sZW4gKGxvb3BfdmVj X2luZm8sIHZlY19sb29wX2xlbnMgKiwgdW5zaWduZWQgaW50LA0KPiA+ID4g LSAgICAgICAgdW5zaWduZWQgaW50KTsNCj4gPiA+ICtleHRlcm4gdHJlZSB2 ZWN0X2dldF9sb29wX2xlbiAoZ2ltcGxlX3N0bXRfaXRlcmF0b3IgKiwgbG9v cF92ZWNfaW5mbywNCj4gPiA+ICsgICAgICAgIHZlY19sb29wX2xlbnMgKiwg dW5zaWduZWQgaW50LCB0cmVlLCB1bnNpZ25lZCBpbnQpOw0KPiA+ID4gZXh0 ZXJuIGdpbXBsZV9zZXEgdmVjdF9nZW5fbGVuICh0cmVlLCB0cmVlLCB0cmVl LCB0cmVlKTsNCj4gPiA+IGV4dGVybiBzdG10X3ZlY19pbmZvIGluZm9fZm9y X3JlZHVjdGlvbiAodmVjX2luZm8gKiwgc3RtdF92ZWNfaW5mbyk7DQo+ID4g PiBleHRlcm4gYm9vbCByZWR1Y3Rpb25fZm5fZm9yX3NjYWxhcl9jb2RlIChj b2RlX2hlbHBlciwgaW50ZXJuYWxfZm4gKik7DQo+ID4gDQo+ICANCj4gDQog DQotLSANClJpY2hhcmQgQmllbmVyIDxyZ3VlbnRoZXJAc3VzZS5kZT4NClNV U0UgU29mdHdhcmUgU29sdXRpb25zIEdlcm1hbnkgR21iSCwgRnJhbmtlbnN0 cmFzc2UgMTQ2LCA5MDQ2MSBOdWVybmJlcmcsDQpHZXJtYW55OyBHRjogSXZv IFRvdGV2LCBBbmRyZXcgTXllcnMsIEFuZHJldyBNY0RvbmFsZCwgQm91ZGll biBNb2VybWFuOw0KSFJCIDM2ODA5IChBRyBOdWVybmJlcmcpDQogDQo= ------=_001_NextPart418128270042_=------