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 DECDE3857036 for ; Wed, 10 May 2023 21:00:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org DECDE3857036 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: bizesmtp69t1683752442tveh2r1p Received: from TABLET-POE6JQHH ( [115.44.118.116]) by bizesmtp.qq.com (ESMTP) with id ; Thu, 11 May 2023 05:00:41 +0800 (CST) X-QQ-SSF: 01400000000000F0Q000000A0000000 X-QQ-FEAT: RmDZc/K2LPF1XZZxDUexXYCNW6hxB87dJmhf2LO33J/LJcNtHZV8vfVhkALLV lCFtVxcyFD6LcSFl/xM3d18vnCSKJ8KWMYHoqiMEHeJVjva+kA9OqIv7mLYIf90ZU4+KgMr SsSxYhy1+V17AEHYUyxTZjXrVoQrDvsvtlCjD+AJHaMKXMrACyCHbb/YPJCvAZkj6gxKsqd UgHvPAwakHTLXFFHx24ZPlHQkXoTZl7kNbfWJIWOid24OM/IFYksez96HIj1h25wqyDu2Ox 9xMrNqE3xd1Qu8rhkPl1hNsPURFwrolUXJN+Q9CPYzobJYCLabby/qYnsGzw5v8aNGNiHqv FWlMXD5gYMQRcxAyUp2Ii+apvHnpWWntmcvm+ysXdaKr/0oGCCFzplXr7Q4wA== X-QQ-GoodBg: 2 X-BIZMAIL-ID: 18213538978666618870 Date: Thu, 11 May 2023 05:00:43 +0800 From: =?GB2312?B?1tO+09Xc?= To: richard.sandiford Cc: gcc-patches , rguenther Subject: Re: Re: [PATCH V4] VECT: Add decrement IV iteration loop control by variable amount support References: <20230504132540.286148-1-juzhe.zhong@rivai.ai>, X-Priority: 3 X-GUID: 45AA8103-C9E3-4E59-A16C-2F2C2D25015B X-Has-Attach: no X-Mailer: Foxmail 7.2.23.121[cn] Mime-Version: 1.0 Message-ID: <6FF047D0528730E9+202305110500425721249@rivai.ai> Content-Type: multipart/alternative; boundary="----=_001_NextPart611371262650_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-8.8 required=5.0 tests=BAYES_00,CHARSET_FARAWAY_HEADER,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,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_NextPart611371262650_=---- Content-Type: text/plain; charset="GB2312" Content-Transfer-Encoding: base64 VGhhbmtzIFJpY2hhcmQuDQpJIGFtIHBsYW5uaW5nIHRvIHNlcGVyYXRlIGEg cGF0Y2ggd2l0aCBvbmx5IGNyZWF0X2l2IHN0dWZmIG9ubHkuDQoNCkFyZSB5 b3Ugc3VnZ2VzdGluZyB0aGF0IEkgcmVtb3ZlICJ0cmVlX2NvZGUgaW5jcl9v cCA9IGNvZGU7Ig0KVXNlIHRoZSBhcmd1bWVudCBkaXJlY3RseSA/DQoNCkkg c2F3IHRoZSBjb2RlcyBoZXJlOg0KDQogIC8qIEZvciBlYXNpZXIgcmVhZGFi aWxpdHkgb2YgdGhlIGNyZWF0ZWQgY29kZSwgcHJvZHVjZSBNSU5VU19FWFBS cw0KICAgICB3aGVuIHN1aXRhYmxlLiAgKi8NCiAgaWYgKFRSRUVfQ09ERSAo c3RlcCkgPT0gSU5URUdFUl9DU1QpDQogICAgew0KICAgICAgaWYgKFRZUEVf VU5TSUdORUQgKFRSRUVfVFlQRSAoc3RlcCkpKQ0Kew0KICBzdGVwMSA9IGZv bGRfYnVpbGQxIChORUdBVEVfRVhQUiwgVFJFRV9UWVBFIChzdGVwKSwgc3Rl cCk7DQogIGlmICh0cmVlX2ludF9jc3RfbHQgKHN0ZXAxLCBzdGVwKSkNCiAg ICB7DQogICAgICBpbmNyX29wID0gTUlOVVNfRVhQUjsNCiAgICAgIHN0ZXAg PSBzdGVwMTsNCiAgICB9DQp9DQogICAgICBlbHNlDQp7DQogIGJvb2wgb3Zm Ow0KDQogIGlmICghdHJlZV9leHByX25vbm5lZ2F0aXZlX3dhcm52X3AgKHN0 ZXAsICZvdmYpDQogICAgICAmJiBtYXlfbmVnYXRlX3dpdGhvdXRfb3ZlcmZs b3dfcCAoc3RlcCkpDQogICAgew0KICAgICAgaW5jcl9vcCA9IE1JTlVTX0VY UFI7DQogICAgICBzdGVwID0gZm9sZF9idWlsZDEgKE5FR0FURV9FWFBSLCBU UkVFX1RZUEUgKHN0ZXApLCBzdGVwKTsNCiAgICB9DQp9DQogICAgfQ0KICBp ZiAoUE9JTlRFUl9UWVBFX1AgKFRSRUVfVFlQRSAoYmFzZSkpKQ0KICAgIHsN CiAgICAgIGlmIChUUkVFX0NPREUgKGJhc2UpID09IEFERFJfRVhQUikNCm1h cmtfYWRkcmVzc2FibGUgKFRSRUVfT1BFUkFORCAoYmFzZSwgMCkpOw0KICAg ICAgc3RlcCA9IGNvbnZlcnRfdG9fcHRyb2ZmdHlwZSAoc3RlcCk7DQogICAg ICBpZiAoaW5jcl9vcCA9PSBNSU5VU19FWFBSKQ0Kc3RlcCA9IGZvbGRfYnVp bGQxIChORUdBVEVfRVhQUiwgVFJFRV9UWVBFIChzdGVwKSwgc3RlcCk7DQog ICAgICBpbmNyX29wID0gUE9JTlRFUl9QTFVTX0VYUFI7DQogICAgfQ0KICAv KiBHaW1wbGlmeSB0aGUgc3RlcCBpZiBuZWNlc3NhcnkuICBXZSBwdXQgdGhl IGNvbXB1dGF0aW9ucyBpbiBmcm9udCBvZiB0aGUNCiAgICAgbG9vcCAoaS5l LiB0aGUgc3RlcCBzaG91bGQgYmUgbG9vcCBpbnZhcmlhbnQpLiAgKi8NCiAg c3RlcCA9IGZvcmNlX2dpbXBsZV9vcGVyYW5kIChzdGVwLCAmc3RtdHMsIHRy dWUsIE5VTExfVFJFRSk7DQogIGlmIChzdG10cykNCiAgICBnc2lfaW5zZXJ0 X3NlcV9vbl9lZGdlX2ltbWVkaWF0ZSAocGUsIHN0bXRzKTsNCg0KICBzdG10 ID0gZ2ltcGxlX2J1aWxkX2Fzc2lnbiAodmEsIGluY3Jfb3AsIHZiLCBzdGVw KTsNCi4uLg0KDQpJdCBzZWVtcyB0aGF0IGl0IGhhcyBjb21wbGljYXRlZCBj b25kaXRpb25zIGhlcmUgdG8gY2hhbmdlIHZhbHVlIG9mIHZhcmlhYmxlICJp bmNyX29wIi4NClRoYXQncyB3aHkgSSBkZWZpbmUgYSB0ZW1wb3JhcnkgdmFy aWFibGUgInRyZWVfY29kZSBpbmNyX29wID0gY29kZTsiIGhlcmUgYW5kDQps ZXQgdGhlIGZvbGxvd2luZyBjb2RlcyBjaGFuZ2UgdGhlIHZhbHVlIG9mICJp bmNyX29wIi4NCg0KQ291bGQgeW91IGdpdmUgbWUgc29tZSBoaW50cyBvZiBk ZWFsaW5nIHdpdGggdGhpcyBwaWVjZSBvZiBjb2RlIHRvIGdldCByaWQgb2Yg InRyZWVfY29kZSBpbmNyX29wID0gY29kZTsiID8NCg0KVGhhbmtzLg0KDQoN Cmp1emhlLnpob25nQHJpdmFpLmFpDQogDQpGcm9tOiBSaWNoYXJkIFNhbmRp Zm9yZA0KRGF0ZTogMjAyMy0wNS0xMSAwMDo0NQ0KVG86IGp1emhlLnpob25n DQpDQzogZ2NjLXBhdGNoZXM7IHJndWVudGhlcg0KU3ViamVjdDogUmU6IFtQ QVRDSCBWNF0gVkVDVDogQWRkIGRlY3JlbWVudCBJViBpdGVyYXRpb24gbG9v cCBjb250cm9sIGJ5IHZhcmlhYmxlIGFtb3VudCBzdXBwb3J0DQpJbiBhZGRp dGlvbiB0byBKZWZmJ3MgY29tbWVudHM6DQogDQpqdXpoZS56aG9uZ0ByaXZh aS5haSB3cml0ZXM6DQo+IFsuLi5dDQo+IGRpZmYgLS1naXQgYS9nY2MvZG9j L21kLnRleGkgYi9nY2MvZG9jL21kLnRleGkNCj4gaW5kZXggY2M0YTkzYTg3 NjMuLjk5Y2YwY2RiZGNhIDEwMDY0NA0KPiAtLS0gYS9nY2MvZG9jL21kLnRl eGkNCj4gKysrIGIvZ2NjL2RvYy9tZC50ZXhpDQo+IEBAIC00OTc0LDYgKzQ5 NzQsNDAgQEAgZm9yIChpID0gMTsgaSA8IG9wZXJhbmQzOyBpKyspDQo+ICAg IG9wZXJhbmQwW2ldID0gb3BlcmFuZDBbaSAtIDFdICYmIChvcGVyYW5kMSAr IGkgPCBvcGVyYW5kMik7DQo+ICBAZW5kIHNtYWxsZXhhbXBsZQ0KPiAgDQo+ ICtAY2luZGV4IEBjb2Rle3NlbGVjdF92bEB2YXJ7bX19IGluc3RydWN0aW9u IHBhdHRlcm4NCj4gK0BpdGVtIEBjb2Rle3NlbGVjdF92bEB2YXJ7bX19DQo+ ICtTZXQgb3BlcmFuZCAwIHRvIHRoZSBudW1iZXIgb2YgYWN0aXZlIGVsZW1l bnRzIGluIHZlY3RvciB3aWxsIGJlIHVwZGF0ZWQgdmFsdWUuDQo+ICtvcGVy YW5kIDEgaXMgdGhlIHRvdGFsIGVsZW1lbnRzIG5lZWQgdG8gYmUgdXBkYXRl ZCB2YWx1ZS4NCj4gK29wZXJhbmQgMiBpcyB0aGUgdmVjdG9yaXphdGlvbiBm YWN0b3IuDQo+ICtUaGUgdmFsdWUgb2Ygb3BlcmFuZCAwIGlzIHRhcmdldCBk ZXBlbmRlbnQgYW5kIGZsZXhpYmxlIGluIGVhY2ggaXRlcmF0aW9uLg0KPiAr VGhlIG9wZXJhdGlvbiBvZiB0aGlzIHBhdHRlcm4gY2FuIGJlOg0KPiArDQo+ ICtAc21hbGxleGFtcGxlDQo+ICtDYXNlIDE6DQo+ICtvcGVyYW5kMCA9IE1J TiAob3BlcmFuZDEsIG9wZXJhbmQyKTsNCj4gK29wZXJhbmQyIGNhbiBiZSBj b25zdF9wb2x5X2ludCBvciBwb2x5X2ludCByZWxhdGVkIHRvIHZlY3RvciBt b2RlIHNpemUuDQo+ICtTb21lIHRhcmdldCBsaWtlIFJJU0MtViBoYXMgYSBz dGFuZGFsb25lIGluc3RydWN0aW9uIHRvIGdldCBNSU4gKG4sIE1PREUgU0la RSkgc28NCj4gK3RoYXQgd2UgY2FuIHJlZHVjZSBhIHVzZSBvZiBnZW5lcmFs IHB1cnBvc2UgcmVnaXN0ZXIuDQo+ICsNCj4gK0luIHRoaXMgY2FzZSwgb25s eSB0aGUgbGFzdCBpdGVyYXRpb24gb2YgdGhlIGxvb3AgaXMgcGFydGlhbCBp dGVyYXRpb24uDQo+ICtAZW5kIHNtYWxsZXhhbXBsZQ0KPiArDQo+ICtAc21h bGxleGFtcGxlDQo+ICtDYXNlIDI6DQo+ICtpZiAob3BlcmFuZDEgPD0gb3Bl cmFuZDIpDQo+ICsgIG9wZXJhbmQwID0gb3BlcmFuZDE7DQo+ICtlbHNlIGlm IChvcGVyYW5kMSA8IDIgKiBvcGVyYW5kMikNCj4gKyAgb3BlcmFuZDAgPSBJ Tl9SQU5HRSAoY2VpbCAob3BlcmFuZDEgLyAyKSwgb3BlcmFuZDIpOw0KIA0K R0NDJ3MgSU5fUkFOR0UgaXMgYSBwcmVkaWNhdGUsIHNvIGl0IHdvdWxkIGJl IGJlc3QgdG8gYXZvaWQgdGhhdCBoZXJlLg0KV2h5IGlzbid0IGl0IHNpbXBs eSBjZWlsIChvcGVyYW5kMSAvIDIpLCB3aGljaCBtdXN0IGJlIDw9IG9wZXJh bmQyPw0KIA0KPiArZWxzZQ0KPiArICBvcGVyYW5kMCA9IG9wZXJhbmQyOw0K PiArDQo+ICtUaGlzIGNhc2Ugd2lsbCBldmVubHkgZGlzdHJpYnV0ZSB3b3Jr IG92ZXIgdGhlIGxhc3QgMiBpdGVyYXRpb25zIG9mIGEgc3RyaXBtaW5lIGxv b3AuDQo+ICtAZW5kIHNtYWxsZXhhbXBsZQ0KPiArDQo+ICtUaGUgb3V0cHV0 IG9mIHRoaXMgcGF0dGVybiBpcyBub3Qgb25seSB1c2VkIGFzIElWIG9mIGxv b3AgY29udHJvbCBjb3VudGVyLCBidXQgYWxzbw0KPiAraXMgdXNlZCBhcyB0 aGUgSVYgb2YgYWRkcmVzcyBjYWxjdWxhdGlvbiB3aXRoIG11bHRpcGx5L3No aWZ0IG9wZXJhdGlvbi4gVGhpcyBhbGxvdw0KPiArdXMgZHluYW1pYyBhZGp1 c3QgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpcyBwcm9jZXNzZWQgaW4gZWFj aCBpdGVyYXRpb24gb2YgdGhlIGxvb3AuDQo+ICsNCj4gIEBjaW5kZXggQGNv ZGV7Y2hlY2tfcmF3X3B0cnNAdmFye219fSBpbnN0cnVjdGlvbiBwYXR0ZXJu DQo+ICBAaXRlbSBAc2FtcHtjaGVja19yYXdfcHRyc0B2YXJ7bX19DQo+ICBD aGVjayB3aGV0aGVyLCBnaXZlbiB0d28gcG9pbnRlcnMgQHZhcnthfSBhbmQg QHZhcntifSBhbmQgYSBsZW5ndGggQHZhcntsZW59LA0KPiBbLi4uXQ0KPiBk aWZmIC0tZ2l0IGEvZ2NjL3RyZWUtc3NhLWxvb3AtbWFuaXAuY2MgYi9nY2Mv dHJlZS1zc2EtbG9vcC1tYW5pcC5jYw0KPiBpbmRleCA5MDliNzA1ZDAwZC4u NWFiY2E2NDM3OWUgMTAwNjQ0DQo+IC0tLSBhL2djYy90cmVlLXNzYS1sb29w LW1hbmlwLmNjDQo+ICsrKyBiL2djYy90cmVlLXNzYS1sb29wLW1hbmlwLmNj DQo+IEBAIC00Nyw3ICs0Nyw5IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhl IGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlDQo+ICAgICBzbyB0aGF0IHdl IGNhbiBmcmVlIHRoZW0gYWxsIGF0IG9uY2UuICAqLw0KPiAgc3RhdGljIGJp dG1hcF9vYnN0YWNrIGxvb3BfcmVuYW1lcl9vYnN0YWNrOw0KPiAgDQo+IC0v KiBDcmVhdGVzIGFuIGluZHVjdGlvbiB2YXJpYWJsZSB3aXRoIHZhbHVlIEJB U0UgKyBTVEVQICogaXRlcmF0aW9uIGluIExPT1AuDQo+ICsvKiBDcmVhdGVz IGFuIGluZHVjdGlvbiB2YXJpYWJsZSB3aXRoIHZhbHVlIEJBU0UgKCsvLSkg U1RFUCAqIGl0ZXJhdGlvbiBpbiBMT09QLg0KPiArICAgSWYgQ09ERSBpcyBQ TFVTX0VYUFIsIHRoZSBpbmR1Y3Rpb24gdmFyaWFibGUgaXMgQkFTRSArIFNU RVAgKiBpdGVyYXRpb24uDQo+ICsgICBJZiBDT0RFIGlzIE1JTlVTX0VYUFIs IHRoZSBpbmR1Y3Rpb24gdmFyaWFibGUgaXMgQkFTRSAtIFNURVAgKiBpdGVy YXRpb24uDQo+ICAgICBJdCBpcyBleHBlY3RlZCB0aGF0IG5laXRoZXIgQkFT RSBub3IgU1RFUCBhcmUgc2hhcmVkIHdpdGggb3RoZXIgZXhwcmVzc2lvbnMN Cj4gICAgICh1bmxlc3MgdGhlIHNoYXJpbmcgcnVsZXMgYWxsb3cgdGhpcyku ICBVc2UgVkFSIGFzIGEgYmFzZSB2YXJfZGVjbCBmb3IgaXQNCj4gICAgIChp ZiBOVUxMLCBhIG5ldyB0ZW1wb3Jhcnkgd2lsbCBiZSBjcmVhdGVkKS4gIFRo ZSBpbmNyZW1lbnQgd2lsbCBvY2N1ciBhdA0KPiBAQCAtNTcsOCArNTksOCBA QCBzdGF0aWMgYml0bWFwX29ic3RhY2sgbG9vcF9yZW5hbWVyX29ic3RhY2s7 DQo+ICAgICBWQVJfQUZURVIgKHVubGVzcyB0aGV5IGFyZSBOVUxMKS4gICov DQo+ICANCj4gIHZvaWQNCj4gLWNyZWF0ZV9pdiAodHJlZSBiYXNlLCB0cmVl IHN0ZXAsIHRyZWUgdmFyLCBjbGFzcyBsb29wICpsb29wLA0KPiAtICAgIGdp bXBsZV9zdG10X2l0ZXJhdG9yICppbmNyX3BvcywgYm9vbCBhZnRlciwNCj4g K2NyZWF0ZV9pdiAodHJlZSBiYXNlLCB0cmVlX2NvZGUgY29kZSwgdHJlZSBz dGVwLCB0cmVlIHZhciwNCj4gKyAgICBjbGFzcyBsb29wICpsb29wLCBnaW1w bGVfc3RtdF9pdGVyYXRvciAqaW5jcl9wb3MsIGJvb2wgYWZ0ZXIsDQo+ICAg ICB0cmVlICp2YXJfYmVmb3JlLCB0cmVlICp2YXJfYWZ0ZXIpDQo+ICB7DQo+ ICAgIGdhc3NpZ24gKnN0bXQ7DQo+IEBAIC02Niw3ICs2OCw5IEBAIGNyZWF0 ZV9pdiAodHJlZSBiYXNlLCB0cmVlIHN0ZXAsIHRyZWUgdmFyLCBjbGFzcyBs b29wICpsb29wLA0KPiAgICB0cmVlIGluaXRpYWwsIHN0ZXAxOw0KPiAgICBn aW1wbGVfc2VxIHN0bXRzOw0KPiAgICB0cmVlIHZiLCB2YTsNCj4gLSAgZW51 bSB0cmVlX2NvZGUgaW5jcl9vcCA9IFBMVVNfRVhQUjsNCj4gKyAgLyogVGhl IGNvZGUgY2FuIG9ubHkgYmUgUExVU19FWFBSIG9yIE1JTlVTX0VYUFIuICAq Lw0KPiArICBnY2NfYXNzZXJ0IChjb2RlID09IFBMVVNfRVhQUiB8fCBjb2Rl ID09IE1JTlVTX0VYUFIpOw0KPiArICB0cmVlX2NvZGUgaW5jcl9vcCA9IGNv ZGU7DQogDQpBcyBSaWNoYXJkIHNhaWQsIHdlIHNob3VsZCBiZSBhYmxlIHRv IGdldCByaWQgb2YgaW5jcl9vcCwgcHJvYmFibHkNCmJ5IGNhbGxpbmcgdGhl IHBhcmFtZXRlciBpbmNyX29wLg0KIA0KSSB0aGluayB0aGUgbGF0ZXI6DQog DQogICAgICBpbmNyX29wID0gTUlOVVNfRVhQUjsNCiANCnN0bXRzIG5lZWQg dG8gYmUgdXBkYXRlZCB0byBzb21ldGhpbmcgdGhhdCBmbGlwcyBiZXR3ZWVu IFBMVVNfRVhQUg0KYW5kIE1JTlVTX0VYUFIgKHdpdGggdXBkYXRlcyB0byB0 aGUgY29tbWVudHMpLg0KIA0KSXQgd291bGQgcHJvYmFibHkgbWFrZSBzZW5z ZSB0byBzcGxpdCB0aGUgY3JlYXRlX2l2IHBhcnQgb3V0IGFzIGENCnNlcGFy YXRlIHByZXBhdGNoLg0KIA0KPiAgICBlZGdlIHBlID0gbG9vcF9wcmVoZWFk ZXJfZWRnZSAobG9vcCk7DQo+ICANCj4gICAgaWYgKHZhciAhPSBOVUxMX1RS RUUpDQo+IEBAIC0xMzY1LDcgKzEzNjksNyBAQCB0cmVlX3RyYW5zZm9ybV9h bmRfdW5yb2xsX2xvb3AgKGNsYXNzIGxvb3AgKmxvb3AsIHVuc2lnbmVkIGZh Y3RvciwNCj4gICAgICAgIHRyZWUgY3RyX2JlZm9yZSwgY3RyX2FmdGVyOw0K PiAgICAgICAgZ2ltcGxlX3N0bXRfaXRlcmF0b3IgYnNpID0gZ3NpX2xhc3Rf bm9uZGVidWdfYmIgKG5ld19leGl0LT5zcmMpOw0KPiAgICAgICAgZXhpdF9p ZiA9IGFzX2EgPGdjb25kICo+IChnc2lfc3RtdCAoYnNpKSk7DQo+IC0gICAg ICBjcmVhdGVfaXYgKGV4aXRfYmFzZSwgZXhpdF9zdGVwLCBOVUxMX1RSRUUs IGxvb3AsDQo+ICsgICAgICBjcmVhdGVfaXYgKGV4aXRfYmFzZSwgUExVU19F WFBSLCBleGl0X3N0ZXAsIE5VTExfVFJFRSwgbG9vcCwNCj4gICZic2ksIGZh bHNlLCAmY3RyX2JlZm9yZSwgJmN0cl9hZnRlcik7DQo+ICAgICAgICBnaW1w bGVfY29uZF9zZXRfY29kZSAoZXhpdF9pZiwgZXhpdF9jbXApOw0KPiAgICAg ICAgZ2ltcGxlX2NvbmRfc2V0X2xocyAoZXhpdF9pZiwgY3RyX2FmdGVyKTsN Cj4gQEAgLTE1ODAsOCArMTU4NCw4IEBAIGNhbm9uaWNhbGl6ZV9sb29wX2l2 cyAoY2xhc3MgbG9vcCAqbG9vcCwgdHJlZSAqbml0LCBib29sIGJ1bXBfaW5f bGF0Y2gpDQo+ICAgICAgZ3NpID0gZ3NpX2xhc3RfYmIgKGxvb3AtPmxhdGNo KTsNCj4gICAgZWxzZQ0KPiAgICAgIGdzaSA9IGdzaV9sYXN0X25vbmRlYnVn X2JiIChsb29wLT5oZWFkZXIpOw0KPiAtICBjcmVhdGVfaXYgKGJ1aWxkX2lu dF9jc3RfdHlwZSAodHlwZSwgMCksIGJ1aWxkX2ludF9jc3QgKHR5cGUsIDEp LCBOVUxMX1RSRUUsDQo+IC0gICAgICBsb29wLCAmZ3NpLCBidW1wX2luX2xh dGNoLCAmdmFyX2JlZm9yZSwgTlVMTCk7DQo+ICsgIGNyZWF0ZV9pdiAoYnVp bGRfaW50X2NzdF90eXBlICh0eXBlLCAwKSwgUExVU19FWFBSLCBidWlsZF9p bnRfY3N0ICh0eXBlLCAxKSwNCj4gKyAgICAgIE5VTExfVFJFRSwgbG9vcCwg JmdzaSwgYnVtcF9pbl9sYXRjaCwgJnZhcl9iZWZvcmUsIE5VTEwpOw0KPiAg DQo+ICAgIHJld3JpdGVfYWxsX3BoaV9ub2Rlc193aXRoX2l2IChsb29wLCB2 YXJfYmVmb3JlKTsNCj4gIA0KPiBbLi4uXQ0KPiBkaWZmIC0tZ2l0IGEvZ2Nj L3RyZWUtdmVjdC1sb29wLW1hbmlwLmNjIGIvZ2NjL3RyZWUtdmVjdC1sb29w LW1hbmlwLmNjDQo+IGluZGV4IDQ0YmQ1ZjJjODA1Li5kNjNkZWQ1ZDRmMCAx MDA2NDQNCj4gLS0tIGEvZ2NjL3RyZWUtdmVjdC1sb29wLW1hbmlwLmNjDQo+ ICsrKyBiL2djYy90cmVlLXZlY3QtbG9vcC1tYW5pcC5jYw0KPiBAQCAtMzg1 LDYgKzM4NSw0OCBAQCB2ZWN0X21heWJlX3Blcm11dGVfbG9vcF9tYXNrcyAo Z2ltcGxlX3NlcSAqc2VxLCByZ3JvdXBfY29udHJvbHMgKmRlc3RfcmdtLA0K PiAgICByZXR1cm4gZmFsc2U7DQo+ICB9DQo+ICANCj4gKy8qIFRyeSB0byB1 c2UgcGVybXV0ZXMgdG8gZGVmaW5lIHRoZSBsZW5zIGluIERFU1RfUkdNIHVz aW5nIHRoZSBsZW5zDQo+ICsgICBpbiBTUkNfUkdNLCBnaXZlbiB0aGF0IHRo ZSBmb3JtZXIgaGFzIHR3aWNlIGFzIG1hbnkgbGVucyBhcyB0aGUNCj4gKyAg IGxhdHRlci4gIFJldHVybiB0cnVlIG9uIHN1Y2Nlc3MsIGFkZGluZyBhbnkg bmV3IHN0YXRlbWVudHMgdG8gU0VRLiAgKi8NCiANCk5pdDogdGhpbmsgaXQn cyBiZXR0ZXIgdG8gdGFsayBhYm91dCAibGVuZ3RocyIgcmF0aGVyIHRoYW4g ImxlbnMiDQood2hpY2ggb3JkaW5hcmlseSBtZWFucyBzb21ldGhpbmcgZGlm ZmVyZW50KS4NCiANCkxpa2UgSmVmZiBzYWlkLCB0aGlzIG9wZXJhdGlvbiBp cyBubyBsb25nZXIgYSBwZXJtdXRlIHdoZW4gYXBwbGllZA0KdG8gbGVuZ3Ro cyAoYXMgb3Bwb3NlZCB0byBtYXNrcykuICBBbmQgYmVjYXVzZSBvZiB0aGF0 LCBJIGRvbid0IHRoaW5rDQp0aGVyZSdzIGFueXRoaW5nIHNwZWNpYWwgYWJv dXQgREVTVF9SR04gaGF2aW5nIHR3aWNlIGFzIG1hbnkgY29udHJvbHMNCmFz IFNSQ19SR04uICAoQW5kIHRoZSBpbXBsZW1lbnRhdGlvbiBkb2VzIHNlZW0g dG8gYmUgbW9yZSBnZW5lcmFsDQp0aGFuIGp1c3QgYSBmYWN0b3Igb2YgdHdv LikNCiANCj4gKw0KPiArc3RhdGljIGJvb2wNCj4gK3ZlY3RfbWF5YmVfcGVy bXV0ZV9sb29wX2xlbnMgKHRyZWUgaXZfdHlwZSwgZ2ltcGxlX3NlcSAqc2Vx LA0KPiArICAgICAgIHJncm91cF9jb250cm9scyAqZGVzdF9yZ20sDQo+ICsg ICAgICAgcmdyb3VwX2NvbnRyb2xzICpzcmNfcmdtKQ0KPiArew0KPiArICB0 cmVlIGN0cmxfdHlwZSA9IGRlc3RfcmdtLT50eXBlOw0KPiArICBwb2x5X3Vp bnQ2NCBuaXRlbXNfcGVyX2N0cmwNCj4gKyAgICA9IFRZUEVfVkVDVE9SX1NV QlBBUlRTIChjdHJsX3R5cGUpICogZGVzdF9yZ20tPmZhY3RvcjsNCj4gKyAg aWYgKGRlc3RfcmdtLT5tYXhfbnNjYWxhcnNfcGVyX2l0ZXIgPD0gc3JjX3Jn bS0+bWF4X25zY2FsYXJzX3Blcl9pdGVyKQ0KPiArICAgIHsNCj4gKyAgICAg IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZGVzdF9yZ20tPmNvbnRy b2xzLmxlbmd0aCAoKTsgKytpKQ0KPiArIHsNCj4gKyAgIHRyZWUgc3JjID0g c3JjX3JnbS0+Y29udHJvbHNbaSAvIGRlc3RfcmdtLT5jb250cm9scy5sZW5n dGggKCldOw0KPiArICAgdHJlZSBkZXN0ID0gZGVzdF9yZ20tPmNvbnRyb2xz W2ldOw0KPiArICAgZ2Fzc2lnbiAqc3RtdDsNCj4gKyAgIGlmIChpID09IDAp DQo+ICsgICAgIHsNCj4gKyAgICAgICAvKiBNSU4gKFgsIFZGKkkvTikgY2Fw cGVkIHRvIHRoZSByYW5nZSBbMCwgVkYvTl0uICAqLw0KPiArICAgICAgIHRy ZWUgZmFjdG9yID0gYnVpbGRfaW50X2NzdCAoaXZfdHlwZSwgbml0ZW1zX3Bl cl9jdHJsKTsNCj4gKyAgICAgICBzdG10ID0gZ2ltcGxlX2J1aWxkX2Fzc2ln biAoZGVzdCwgTUlOX0VYUFIsIHNyYywgZmFjdG9yKTsNCj4gKyAgICAgICBn aW1wbGVfc2VxX2FkZF9zdG10IChzZXEsIHN0bXQpOw0KPiArICAgICB9DQo+ ICsgICBlbHNlDQo+ICsgICAgIHsNCj4gKyAgICAgICAvKiAoWCAtIE1JTiAo WCwgVkYqSS9OKSkgY2FwcGVkIHRvIHRoZSByYW5nZSBbMCwgVkYvTl0uICAq Lw0KPiArICAgICAgIHRyZWUgZmFjdG9yID0gYnVpbGRfaW50X2NzdCAoaXZf dHlwZSwgbml0ZW1zX3Blcl9jdHJsICogaSk7DQo+ICsgICAgICAgdHJlZSB0 ZW1wID0gbWFrZV9zc2FfbmFtZSAoaXZfdHlwZSk7DQo+ICsgICAgICAgc3Rt dCA9IGdpbXBsZV9idWlsZF9hc3NpZ24gKHRlbXAsIE1JTl9FWFBSLCBzcmMs IGZhY3Rvcik7DQo+ICsgICAgICAgZ2ltcGxlX3NlcV9hZGRfc3RtdCAoc2Vx LCBzdG10KTsNCj4gKyAgICAgICBzdG10ID0gZ2ltcGxlX2J1aWxkX2Fzc2ln biAoZGVzdCwgTUlOVVNfRVhQUiwgc3JjLCB0ZW1wKTsNCj4gKyAgICAgICBn aW1wbGVfc2VxX2FkZF9zdG10IChzZXEsIHN0bXQpOw0KPiArICAgICB9DQo+ ICsgfQ0KPiArICAgICAgcmV0dXJuIHRydWU7DQo+ICsgICAgfQ0KPiArICBy ZXR1cm4gZmFsc2U7DQo+ICt9DQo+ICsNCiANClRoaXMgcmV0dXJuIGZhbHNl IHRoaW5nIGxvb2tzIG9kZC4gIEkgZG9uJ3QgdGhpbmsgd2UgY2FuIGRlY2lk ZSBvbg0KYSBncm91cC1ieS1ncm91cCBiYXNpcyB3aGV0aGVyIHRvIHVzZSB0 aGlzIGFwcHJvYWNoIG9yIG5vdC4gIEluc3RlYWQNCml0IGhhcyB0byBiZSBh IHBlci1sb29wIGRlY2lzaW9uLiAgRWl0aGVyICgxKSB3ZSB1c2UgU0VMRUNU X1ZMIGZvciB0aGUNCnNpbmdsZS1jb250cm9sIGdyb3VwLCBhbmQgdXNlIHRo aXMgZnVuY3Rpb24gdG8gZGVyaXZlIGFsbCBvdGhlciBncm91cHMNCmZyb20g dGhhdCwgb3IgKDIpIHdlIGp1c3QgTUlOIGZvciBhbGwgZ3JvdXBzLiAgTm8g bWl4aW5nIGFuZCBtYXRjaGluZw0KaXMgYWxsb3dlZC4NCiANCkluIG90aGVy IHdvcmRzLCBJIHRoaW5rIHdlIG5lZWQgdG8gZGVjaWRlIGF0IHRoZSB0b3Ag bGV2ZWwgd2hldGhlcg0KdG8gdXNlIFNFTEVDVF9WTCBvciBub3QuICBBcyB0 aGluZ3Mgc3RhbmQsIHRoaXMgZGVjaXNpb24gc2hvdWxkIGJlDQoibm8iIGlm IG5pdGVtc19wZXJfaXRlciAhPSAxIGZvciAqYW55KiBncm91cC4gIElmIHRo ZSBkZWNpc2lvbiBpcw0KdG8gdXNlIFNFTEVDVF9WTCwgd2Ugc2hvdWxkIHVz ZSBpdCBmb3IgdGhlIHNpbmdsZS1jb250cm9sIGdyb3VwDQpvbmx5IGFuZCB0 aGVuIHVuY29uZGl0aW9uYWxseSB1c2UgdGhlIGZ1bmN0aW9uIGFib3ZlIGZv ciB0aGUgb3RoZXINCmdyb3Vwcywgd2l0aCBubyBmYWlsdXJlIHBhdGguDQog DQpUaGUgZGVjaXNpb24gYWJvdXQgd2hldGhlciB0byB1c2UgU0VMRUNUX1ZM IG9yIG5vdCBzaG91bGQgYmUgY2FjaGVkDQppZiBuZWNlc3NhcnksIHNvIHRo YXQgaXQncyBhdmFpbGFibGUuLi4NCiANCj4gIC8qIEhlbHBlciBmb3IgdmVj dF9zZXRfbG9vcF9jb25kaXRpb25fcGFydGlhbF92ZWN0b3JzLiAgR2VuZXJh dGUgZGVmaW5pdGlvbnMNCj4gICAgIGZvciBhbGwgdGhlIHJncm91cCBjb250 cm9scyBpbiBSR0MgYW5kIHJldHVybiBhIGNvbnRyb2wgdGhhdCBpcyBub256 ZXJvDQo+ICAgICB3aGVuIHRoZSBsb29wIG5lZWRzIHRvIGl0ZXJhdGUuICBB ZGQgYW55IG5ldyBwcmVoZWFkZXIgc3RhdGVtZW50cyB0bw0KPiBbLi4uXQ0K PiBAQCAtMTAzNjEsMTUgKzEwMzYxLDE4IEBAIHZlY3RfcmVjb3JkX2xvb3Bf bGVuIChsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8sIHZlY19sb29wX2xlbnMg KmxlbnMsDQo+ICB9DQo+ICANCj4gIC8qIEdpdmVuIGEgY29tcGxldGUgc2V0 IG9mIGxlbmd0aCBMRU5TLCBleHRyYWN0IGxlbmd0aCBudW1iZXIgSU5ERVgg Zm9yIGFuDQo+IC0gICByZ3JvdXAgdGhhdCBvcGVyYXRlcyBvbiBOVkVDVE9S UyB2ZWN0b3JzLCB3aGVyZSAwIDw9IElOREVYIDwgTlZFQ1RPUlMuICAqLw0K PiArICAgcmdyb3VwIHRoYXQgb3BlcmF0ZXMgb24gTlZFQ1RPUlMgdmVjdG9y cywgd2hlcmUgMCA8PSBJTkRFWCA8IE5WRUNUT1JTLg0KPiArICAgSW5zZXJ0 IGFueSBzZXQtdXAgc3RhdGVtZW50cyBiZWZvcmUgR1NJLiAgKi8NCj4gIA0K PiAgdHJlZQ0KPiAtdmVjdF9nZXRfbG9vcF9sZW4gKGxvb3BfdmVjX2luZm8g bG9vcF92aW5mbywgdmVjX2xvb3BfbGVucyAqbGVucywNCj4gLSAgICB1bnNp Z25lZCBpbnQgbnZlY3RvcnMsIHVuc2lnbmVkIGludCBpbmRleCkNCj4gK3Zl Y3RfZ2V0X2xvb3BfbGVuIChsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8sIGdp bXBsZV9zdG10X2l0ZXJhdG9yICpnc2ksDQo+ICsgICAgdmVjX2xvb3BfbGVu cyAqbGVucywgdW5zaWduZWQgaW50IG52ZWN0b3JzLCB0cmVlIHZlY3R5cGUs DQo+ICsgICAgdW5zaWduZWQgaW50IGluZGV4KQ0KPiAgew0KPiAgICByZ3Jv dXBfY29udHJvbHMgKnJnbCA9ICYoKmxlbnMpW252ZWN0b3JzIC0gMV07DQo+ ICAgIGJvb2wgdXNlX2JpYXNfYWRqdXN0ZWRfbGVuID0NCj4gICAgICBMT09Q X1ZJTkZPX1BBUlRJQUxfTE9BRF9TVE9SRV9CSUFTIChsb29wX3ZpbmZvKSAh PSAwOw0KPiArICB0cmVlIGl2X3R5cGUgPSBMT09QX1ZJTkZPX1JHUk9VUF9J Vl9UWVBFIChsb29wX3ZpbmZvKTsNCj4gIA0KPiAgICAvKiBQb3B1bGF0ZSB0 aGUgcmdyb3VwJ3MgbGVuIGFycmF5LCBpZiB0aGlzIGlzIHRoZSBmaXJzdCB0 aW1lIHdlJ3ZlDQo+ICAgICAgIHVzZWQgaXQuICAqLw0KPiBAQCAtMTA0MDAs NiArMTA0MDMsMjcgQEAgdmVjdF9nZXRfbG9vcF9sZW4gKGxvb3BfdmVjX2lu Zm8gbG9vcF92aW5mbywgdmVjX2xvb3BfbGVucyAqbGVucywNCj4gIA0KPiAg ICBpZiAodXNlX2JpYXNfYWRqdXN0ZWRfbGVuKQ0KPiAgICAgIHJldHVybiBy Z2wtPmJpYXNfYWRqdXN0ZWRfY3RybDsNCj4gKyAgZWxzZSBpZiAoZGlyZWN0 X2ludGVybmFsX2ZuX3N1cHBvcnRlZF9wIChJRk5fU0VMRUNUX1ZMLCBpdl90 eXBlLA0KPiArICAgIE9QVElNSVpFX0ZPUl9TUEVFRCkpDQo+ICsgICAgew0K PiArICAgICAgdHJlZSBsb29wX2xlbiA9IHJnbC0+Y29udHJvbHNbaW5kZXhd Ow0KPiArICAgICAgcG9seV9pbnQ2NCBudW5pdHMxID0gVFlQRV9WRUNUT1Jf U1VCUEFSVFMgKHJnbC0+dHlwZSk7DQo+ICsgICAgICBwb2x5X2ludDY0IG51 bml0czIgPSBUWVBFX1ZFQ1RPUl9TVUJQQVJUUyAodmVjdHlwZSk7DQo+ICsg ICAgICBpZiAobWF5YmVfbmUgKG51bml0czEsIG51bml0czIpKQ0KPiArIHsN Cj4gKyAgIC8qIEEgbG9vcCBsZW4gZm9yIGRhdGEgdHlwZSBYIGNhbiBiZSBy ZXVzZWQgZm9yIGRhdGEgdHlwZSBZDQo+ICsgICAgICBpZiBYIGhhcyBOIHRp bWVzIG1vcmUgZWxlbWVudHMgdGhhbiBZIGFuZCBpZiBZJ3MgZWxlbWVudHMN Cj4gKyAgICAgIGFyZSBOIHRpbWVzIGJpZ2dlciB0aGFuIFgncy4gICovDQo+ ICsgICBnY2NfYXNzZXJ0IChtdWx0aXBsZV9wIChudW5pdHMxLCBudW5pdHMy KSk7DQo+ICsgICB1bnNpZ25lZCBpbnQgZmFjdG9yID0gZXhhY3RfZGl2IChu dW5pdHMxLCBudW5pdHMyKS50b19jb25zdGFudCAoKTsNCj4gKyAgIGdpbXBs ZV9zZXEgc2VxID0gTlVMTDsNCj4gKyAgIGxvb3BfbGVuID0gZ2ltcGxlX2J1 aWxkICgmc2VxLCBSRElWX0VYUFIsIGl2X3R5cGUsIGxvb3BfbGVuLA0KPiAr ICAgIGJ1aWxkX2ludF9jc3QgKGl2X3R5cGUsIGZhY3RvcikpOw0KPiArICAg aWYgKHNlcSkNCj4gKyAgICAgZ3NpX2luc2VydF9zZXFfYmVmb3JlIChnc2ks IHNlcSwgR1NJX1NBTUVfU1RNVCk7DQo+ICsgfQ0KPiArICAgICAgcmV0dXJu IGxvb3BfbGVuOw0KPiArICAgIH0NCj4gICAgZWxzZQ0KPiAgICAgIHJldHVy biByZ2wtPmNvbnRyb2xzW2luZGV4XTsNCj4gIH0NCiANCi4uLmhlcmUuICBU aGF0IGlzLCB0aGUga2V5IGlzbid0IHdoZXRoZXIgU0VMRUNUX1ZMIGlzIGF2 YWlsYWJsZSwNCmJ1dCBpbnN0ZWFkIHdoZXRoZXIgd2UndmUgZGVjaWRlZCB0 byB1c2UgaXQgZm9yIHRoaXMgbG9vcCAodW5sZXNzDQpJJ20gbWlzc2luZyBz b21ldGhpbmcpLg0KIA0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtdmVjdC1z dG10cy5jYyBiL2djYy90cmVlLXZlY3Qtc3RtdHMuY2MNCj4gaW5kZXggM2Fk NmE3ZDI4ZDcuLjI2ODEzYWI1NmU5IDEwMDY0NA0KPiAtLS0gYS9nY2MvdHJl ZS12ZWN0LXN0bXRzLmNjDQo+ICsrKyBiL2djYy90cmVlLXZlY3Qtc3RtdHMu Y2MNCj4gQEAgLTMxNDcsNiArMzE0Nyw2MSBAQCB2ZWN0X2dldF9kYXRhX3B0 cl9pbmNyZW1lbnQgKHZlY19pbmZvICp2aW5mbywNCj4gICAgcmV0dXJuIGl2 X3N0ZXA7DQo+ICB9DQo+ICANCj4gKy8qIFByZXBhcmUgdGhlIHBvaW50ZXIg SVZzIHdoaWNoIG5lZWRzIHRvIGJlIHVwZGF0ZWQgYnkgYSB2YXJpYWJsZSBh bW91bnQuDQo+ICsgICBTdWNoIHZhcmlhYmxlIGFtb3VudCBpcyB0aGUgb3V0 Y29tZSBvZiAuU0VMRUNUX1ZMLiBJbiB0aGlzIGNhc2UsIHdlIGNhbg0KPiAr ICAgYWxsb3cgZWFjaCBpdGVyYXRpb24gcHJvY2VzcyB0aGUgZmxleGlibGUg bnVtYmVyIG9mIGVsZW1lbnRzIGFzIGxvbmcgYXMNCj4gKyAgIHRoZSBudW1i ZXIgPD0gdmYgZWxtZW50cy4NCj4gKw0KPiArICAgUmV0dXJuIGRhdGEgcmVm ZXJlbmNlIGFjY29yZGluZyB0byBTRUxFQ1RfVkwuDQo+ICsgICBJZiBuZXcg c3RhdGVtZW50cyBhcmUgbmVlZGVkLCBpbnNlcnQgdGhlbSBiZWZvcmUgR1NJ LiAgKi8NCj4gKw0KPiArc3RhdGljIHRyZWUNCj4gK2dldF9zZWxlY3Rfdmxf ZGF0YV9yZWZfcHRyICh2ZWNfaW5mbyAqdmluZm8sIHN0bXRfdmVjX2luZm8g c3RtdF9pbmZvLA0KPiArICAgICB0cmVlIGFnZ3JfdHlwZSwgY2xhc3MgbG9v cCAqYXRfbG9vcCwgdHJlZSBvZmZzZXQsDQo+ICsgICAgIHRyZWUgKmR1bW15 LCBnaW1wbGVfc3RtdF9pdGVyYXRvciAqZ3NpLA0KPiArICAgICBib29sIHNp bWRfbGFuZV9hY2Nlc3NfcCwgdmVjX2xvb3BfbGVucyAqbG9vcF9sZW5zLA0K PiArICAgICBkcl92ZWNfaW5mbyAqZHJfaW5mbywNCj4gKyAgICAgdmVjdF9t ZW1vcnlfYWNjZXNzX3R5cGUgbWVtb3J5X2FjY2Vzc190eXBlKQ0KPiArew0K PiArICBsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8gPSBkeW5fY2FzdDxsb29w X3ZlY19pbmZvPiAodmluZm8pOw0KPiArICB0cmVlIHN0ZXAgPSB2ZWN0X2Ry X2JlaGF2aW9yICh2aW5mbywgZHJfaW5mbyktPnN0ZXA7DQo+ICsNCj4gKyAg LyogVE9ETzogV2UgZG9uJ3Qgc3VwcG9ydCBnYXRoZXIvc2NhdHRlciBvciBs b2FkX2xhbmVzL3N0b3JlX2xhbmVzIGZvciBwb2ludGVyDQo+ICsgICAgIElW cyBhcmUgdXBkYXRlZCBieSB2YXJpYWJsZSBhbW91bnQgYnV0IHdlIHdpbGwg c3VwcG9ydCB0aGVtIGluIHRoZSBmdXR1cmUuDQo+ICsgICAqLw0KPiArICBn Y2NfYXNzZXJ0IChtZW1vcnlfYWNjZXNzX3R5cGUgIT0gVk1BVF9HQVRIRVJf U0NBVFRFUg0KPiArICAgICAgICYmIG1lbW9yeV9hY2Nlc3NfdHlwZSAhPSBW TUFUX0xPQURfU1RPUkVfTEFORVMpOw0KPiArDQo+ICsgIC8qIFdoZW4gd2Ug c3VwcG9ydCBTRUxFQ1RfVkwgcGF0dGVybiwgd2UgZHluYW1pYyBhZGp1c3QN Cj4gKyAgICAgdGhlIG1lbW9yeSBhZGRyZXNzIGJ5IC5TRUxFQ1RfVkwgcmVz dWx0Lg0KPiArDQo+ICsgICAgIFRoZSByZXN1bHQgb2YgLlNFTEVDVF9WTCBp cyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvDQo+ICsgICAgIGJlIHByb2Nl c3NlZCBvZiBlYWNoIGl0ZXJhdGlvbi4gU28gdGhlIG1lbW9yeSBhZGRyZXNz DQo+ICsgICAgIGFkanVzdG1lbnQgb3BlcmF0aW9uIHNob3VsZCBiZToNCj4g Kw0KPiArICAgICBieXRlc2l6ZSA9IEdFVF9NT0RFX1NJWkUgKGVsZW1lbnRf bW9kZSAoYWdncl90eXBlKSk7DQo+ICsgICAgIGFkZHIgPSBhZGRyICsgLlNF TEVDVF9WTCAoQVJHLi4pICogYnl0ZXNpemU7DQo+ICsgICovDQo+ICsgIGdp bXBsZSAqcHRyX2luY3I7DQo+ICsgIHRyZWUgbG9vcF9sZW4NCj4gKyAgICA9 IHZlY3RfZ2V0X2xvb3BfbGVuIChsb29wX3ZpbmZvLCBnc2ksIGxvb3BfbGVu cywgMSwgYWdncl90eXBlLCAwKTsNCj4gKyAgdHJlZSBsZW5fdHlwZSA9IFRS RUVfVFlQRSAobG9vcF9sZW4pOw0KPiArICBwb2x5X3VpbnQ2NCBieXRlc2l6 ZSA9IEdFVF9NT0RFX1NJWkUgKGVsZW1lbnRfbW9kZSAoYWdncl90eXBlKSk7 DQo+ICsgIC8qIFNpbmNlIHRoZSBvdXRjb21lIG9mIC5TRUxFQ1RfVkwgaXMg ZWxlbWVudCBzaXplLCB3ZSBzaG91bGQgYWRqdXN0DQo+ICsgICAgIGl0IGlu dG8gYnl0ZXNpemUgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBpbiBhZGRyZXNz IHBvaW50ZXIgdmFyaWFibGUNCj4gKyAgICAgYW1vdW50IElWcyBhZGp1c3Rt ZW50LiAgKi8NCj4gKyAgdHJlZSB0bXAgPSBmb2xkX2J1aWxkMiAoTVVMVF9F WFBSLCBsZW5fdHlwZSwgbG9vcF9sZW4sDQo+ICsgICBidWlsZF9pbnRfY3N0 IChsZW5fdHlwZSwgYnl0ZXNpemUpKTsNCj4gKyAgaWYgKHRyZWVfaW50X2Nz dF9zZ24gKHN0ZXApID09IC0xKQ0KPiArICAgIHRtcCA9IGZvbGRfYnVpbGQx IChORUdBVEVfRVhQUiwgbGVuX3R5cGUsIHRtcCk7DQo+ICsgIHRyZWUgYnVt cCA9IG1ha2VfdGVtcF9zc2FfbmFtZSAobGVuX3R5cGUsIE5VTEwsICJpdnRt cCIpOw0KPiArICBnYXNzaWduICphc3NpZ24gPSBnaW1wbGVfYnVpbGRfYXNz aWduIChidW1wLCB0bXApOw0KPiArICBnc2lfaW5zZXJ0X2JlZm9yZSAoZ3Np LCBhc3NpZ24sIEdTSV9TQU1FX1NUTVQpOw0KIA0KSXQgc2VlbXMgYSBsaXR0 bGUgd2FzdGVmdWwgdG8gcmVjb21wdXRlIHRoZSB0ZW1wb3JhcnkgcmVzdWx0 cyAoaW50byBnc2kpDQpmb3IgZXZlcnkgcG9pbnRlciwgYnV0IEkgZ3Vlc3Mg aXQncyBub3Qgd29ydGggY29tcGxpY2F0aW5nIHRoZSBjb2RlIHRvDQpkbyBv bi10aGUtZmx5IERDRS4gIExhdGVyIHBhc3NlcyBjYW4gY2xlYW4gaXQgdXAg Zm9yIHVzLiAgKFVubGVzcyBSaWNoaQ0KZmVlbHMgZGlmZmVyZW50bHkuICBD YW4ndCByZW1lbWJlciB3aG8ncyBzYWlkIHdoYXQgbm93LikNCiANCj4gKyAg cmV0dXJuIHZlY3RfY3JlYXRlX2RhdGFfcmVmX3B0ciAodmluZm8sIHN0bXRf aW5mbywgYWdncl90eXBlLCBhdF9sb29wLCBvZmZzZXQsDQo+ICsgICAgZHVt bXksIGdzaSwgJnB0cl9pbmNyLCBzaW1kX2xhbmVfYWNjZXNzX3AsDQo+ICsg ICAgYnVtcCk7DQo+ICt9DQo+ICsNCj4gIC8qIENoZWNrIGFuZCBwZXJmb3Jt IHZlY3Rvcml6YXRpb24gb2YgQlVJTFRfSU5fQlNXQVB7MTYsMzIsNjQsMTI4 fS4gICovDQo+ICANCj4gIHN0YXRpYyBib29sDQo+IEBAIC04Mjc5LDcgKzgz MzQsNyBAQCB2ZWN0b3JpemFibGVfc3RvcmUgKHZlY19pbmZvICp2aW5mbywN Cj4gIA0KPiAgICAgICAgc3RyaWRlX2Jhc2UgPSBjc2VfYW5kX2dpbXBsaWZ5 X3RvX3ByZWhlYWRlciAobG9vcF92aW5mbywgc3RyaWRlX2Jhc2UpOw0KPiAg ICAgICAgaXZzdGVwID0gY3NlX2FuZF9naW1wbGlmeV90b19wcmVoZWFkZXIg KGxvb3BfdmluZm8sIGl2c3RlcCk7DQo+IC0gICAgICBjcmVhdGVfaXYgKHN0 cmlkZV9iYXNlLCBpdnN0ZXAsIE5VTEwsDQo+ICsgICAgICBjcmVhdGVfaXYg KHN0cmlkZV9iYXNlLCBQTFVTX0VYUFIsIGl2c3RlcCwgTlVMTCwNCj4gIGxv b3AsICZpbmNyX2dzaSwgaW5zZXJ0X2FmdGVyLA0KPiAgJm9mZnZhciwgTlVM TCk7DQo+ICAgICAgICBpbmNyID0gZ3NpX3N0bXQgKGluY3JfZ3NpKTsNCj4g QEAgLTg1NDAsNiArODU5NSwxNyBAQCB2ZWN0b3JpemFibGVfc3RvcmUgKHZl Y19pbmZvICp2aW5mbywNCj4gICAgICB2ZWN0X2dldF9nYXRoZXJfc2NhdHRl cl9vcHMgKGxvb3BfdmluZm8sIGxvb3AsIHN0bXRfaW5mbywNCj4gIHNscF9u b2RlLCAmZ3NfaW5mbywgJmRhdGFyZWZfcHRyLA0KPiAgJnZlY19vZmZzZXRz KTsNCj4gKyAgIGVsc2UgaWYgKGxvb3BfbGVucyAmJiBsb29wX2xlbnMtPmxl bmd0aCAoKSA9PSAxDQo+ICsgICAgJiYgZGlyZWN0X2ludGVybmFsX2ZuX3N1 cHBvcnRlZF9wICgNCj4gKyAgICAgIElGTl9TRUxFQ1RfVkwsIExPT1BfVklO Rk9fUkdST1VQX0lWX1RZUEUgKGxvb3BfdmluZm8pLA0KPiArICAgICAgT1BU SU1JWkVfRk9SX1NQRUVEKQ0KPiArICAgICYmIG1lbW9yeV9hY2Nlc3NfdHlw ZSAhPSBWTUFUX0lOVkFSSUFOVCkNCj4gKyAgICAgZGF0YXJlZl9wdHINCj4g KyAgICAgICA9IGdldF9zZWxlY3RfdmxfZGF0YV9yZWZfcHRyICh2aW5mbywg c3RtdF9pbmZvLCBhZ2dyX3R5cGUsDQo+ICsgICAgIHNpbWRfbGFuZV9hY2Nl c3NfcCA/IGxvb3AgOiBOVUxMLA0KPiArICAgICBvZmZzZXQsICZkdW1teSwg Z3NpLA0KPiArICAgICBzaW1kX2xhbmVfYWNjZXNzX3AsIGxvb3BfbGVucywN Cj4gKyAgICAgZHJfaW5mbywgbWVtb3J5X2FjY2Vzc190eXBlKTsNCiANCkhl cmUgdG9vIEkgdGhpbmsgdGhlIGNoZWNrIHNob3VsZCBiZSBiYXNlZCBvbiBh IGNhY2hlZCByZWNvcmQNCm9mIHdoZXRoZXIgd2UncmUgdXNpbmcgU0VMRUNU X1ZMIGZvciB0aGlzIHBhcnRpY3VsYXIgbG9vcCwNCiANCldoYXQgaGFwcGVu cyBmb3IgbG9vcF9sZW5zLT5sZW5ndGggKCkgIT0gMT8NCiANClRoYW5rcywN ClJpY2hhcmQNCiANCj4gICAgZWxzZQ0KPiAgICAgIGRhdGFyZWZfcHRyDQo+ ICAgICAgICA9IHZlY3RfY3JlYXRlX2RhdGFfcmVmX3B0ciAodmluZm8sIGZp cnN0X3N0bXRfaW5mbywgYWdncl90eXBlLA0KPiBAQCAtODc4OCw4ICs4ODU0 LDkgQEAgdmVjdG9yaXphYmxlX3N0b3JlICh2ZWNfaW5mbyAqdmluZm8sDQo+ ICAgICAgICBlbHNlIGlmIChsb29wX2xlbnMpDQo+ICB7DQo+ICAgIHRyZWUg ZmluYWxfbGVuDQo+IC0gICAgID0gdmVjdF9nZXRfbG9vcF9sZW4gKGxvb3Bf dmluZm8sIGxvb3BfbGVucywNCj4gLSB2ZWNfbnVtICogbmNvcGllcywgdmVj X251bSAqIGogKyBpKTsNCj4gKyAgICAgPSB2ZWN0X2dldF9sb29wX2xlbiAo bG9vcF92aW5mbywgZ3NpLCBsb29wX2xlbnMsDQo+ICsgdmVjX251bSAqIG5j b3BpZXMsIHZlY3R5cGUsDQo+ICsgdmVjX251bSAqIGogKyBpKTsNCj4gICAg dHJlZSBwdHIgPSBidWlsZF9pbnRfY3N0IChyZWZfdHlwZSwgYWxpZ24gKiBC SVRTX1BFUl9VTklUKTsNCj4gICAgbWFjaGluZV9tb2RlIHZtb2RlID0gVFlQ RV9NT0RFICh2ZWN0eXBlKTsNCj4gICAgb3B0X21hY2hpbmVfbW9kZSBuZXdf b3Ztb2RlDQo+IEBAIC05NDUwLDcgKzk1MTcsNyBAQCB2ZWN0b3JpemFibGVf bG9hZCAodmVjX2luZm8gKnZpbmZvLA0KPiAgDQo+ICAgICAgICBzdHJpZGVf YmFzZSA9IGNzZV9hbmRfZ2ltcGxpZnlfdG9fcHJlaGVhZGVyIChsb29wX3Zp bmZvLCBzdHJpZGVfYmFzZSk7DQo+ICAgICAgICBpdnN0ZXAgPSBjc2VfYW5k X2dpbXBsaWZ5X3RvX3ByZWhlYWRlciAobG9vcF92aW5mbywgaXZzdGVwKTsN Cj4gLSAgICAgIGNyZWF0ZV9pdiAoc3RyaWRlX2Jhc2UsIGl2c3RlcCwgTlVM TCwNCj4gKyAgICAgIGNyZWF0ZV9pdiAoc3RyaWRlX2Jhc2UsIFBMVVNfRVhQ UiwgaXZzdGVwLCBOVUxMLA0KPiAgbG9vcCwgJmluY3JfZ3NpLCBpbnNlcnRf YWZ0ZXIsDQo+ICAmb2ZmdmFyLCBOVUxMKTsNCj4gIA0KPiBAQCAtOTkyOCw2 ICs5OTk1LDE2IEBAIHZlY3Rvcml6YWJsZV9sb2FkICh2ZWNfaW5mbyAqdmlu Zm8sDQo+ICAgICBzbHBfbm9kZSwgJmdzX2luZm8sICZkYXRhcmVmX3B0ciwN Cj4gICAgICZ2ZWNfb2Zmc2V0cyk7DQo+ICAgICAgfQ0KPiArICAgZWxzZSBp ZiAobG9vcF9sZW5zICYmIGxvb3BfbGVucy0+bGVuZ3RoICgpID09IDENCj4g KyAgICAmJiBkaXJlY3RfaW50ZXJuYWxfZm5fc3VwcG9ydGVkX3AgKA0KPiAr ICAgICAgSUZOX1NFTEVDVF9WTCwgTE9PUF9WSU5GT19SR1JPVVBfSVZfVFlQ RSAobG9vcF92aW5mbyksDQo+ICsgICAgICBPUFRJTUlaRV9GT1JfU1BFRUQp DQo+ICsgICAgJiYgbWVtb3J5X2FjY2Vzc190eXBlICE9IFZNQVRfSU5WQVJJ QU5UKQ0KPiArICAgICBkYXRhcmVmX3B0cg0KPiArICAgICAgID0gZ2V0X3Nl bGVjdF92bF9kYXRhX3JlZl9wdHIgKHZpbmZvLCBzdG10X2luZm8sIGFnZ3Jf dHlwZSwNCj4gKyAgICAgYXRfbG9vcCwgb2Zmc2V0LCAmZHVtbXksIGdzaSwN Cj4gKyAgICAgc2ltZF9sYW5lX2FjY2Vzc19wLCBsb29wX2xlbnMsDQo+ICsg ICAgIGRyX2luZm8sIG1lbW9yeV9hY2Nlc3NfdHlwZSk7DQo+ICAgIGVsc2UN Cj4gICAgICBkYXRhcmVmX3B0cg0KPiAgICAgICAgPSB2ZWN0X2NyZWF0ZV9k YXRhX3JlZl9wdHIgKHZpbmZvLCBmaXJzdF9zdG10X2luZm8sIGFnZ3JfdHlw ZSwNCj4gQEAgLTEwMTQ0LDggKzEwMjIxLDggQEAgdmVjdG9yaXphYmxlX2xv YWQgKHZlY19pbmZvICp2aW5mbywNCj4gICAgICBlbHNlIGlmIChsb29wX2xl bnMgJiYgbWVtb3J5X2FjY2Vzc190eXBlICE9IFZNQVRfSU5WQVJJQU5UKQ0K PiAgICAgICAgew0KPiAgdHJlZSBmaW5hbF9sZW4NCj4gLSAgID0gdmVjdF9n ZXRfbG9vcF9sZW4gKGxvb3BfdmluZm8sIGxvb3BfbGVucywNCj4gLSAgICAg ICAgdmVjX251bSAqIG5jb3BpZXMsDQo+ICsgICA9IHZlY3RfZ2V0X2xvb3Bf bGVuIChsb29wX3ZpbmZvLCBnc2ksIGxvb3BfbGVucywNCj4gKyAgICAgICAg dmVjX251bSAqIG5jb3BpZXMsIHZlY3R5cGUsDQo+ICAgICAgICAgdmVjX251 bSAqIGogKyBpKTsNCj4gIHRyZWUgcHRyID0gYnVpbGRfaW50X2NzdCAocmVm X3R5cGUsDQo+ICAgIGFsaWduICogQklUU19QRVJfVU5JVCk7DQo+IGRpZmYg LS1naXQgYS9nY2MvdHJlZS12ZWN0b3JpemVyLmggYi9nY2MvdHJlZS12ZWN0 b3JpemVyLmgNCj4gaW5kZXggOWNmMmZiMjNmZTMuLjM1N2JjNWM3MzE1IDEw MDY0NA0KPiAtLS0gYS9nY2MvdHJlZS12ZWN0b3JpemVyLmgNCj4gKysrIGIv Z2NjL3RyZWUtdmVjdG9yaXplci5oDQo+IEBAIC0yMjkzLDggKzIyOTMsOCBA QCBleHRlcm4gdHJlZSB2ZWN0X2dldF9sb29wX21hc2sgKGdpbXBsZV9zdG10 X2l0ZXJhdG9yICosIHZlY19sb29wX21hc2tzICosDQo+ICB1bnNpZ25lZCBp bnQsIHRyZWUsIHVuc2lnbmVkIGludCk7DQo+ICBleHRlcm4gdm9pZCB2ZWN0 X3JlY29yZF9sb29wX2xlbiAobG9vcF92ZWNfaW5mbywgdmVjX2xvb3BfbGVu cyAqLCB1bnNpZ25lZCBpbnQsDQo+ICAgIHRyZWUsIHVuc2lnbmVkIGludCk7 DQo+IC1leHRlcm4gdHJlZSB2ZWN0X2dldF9sb29wX2xlbiAobG9vcF92ZWNf aW5mbywgdmVjX2xvb3BfbGVucyAqLCB1bnNpZ25lZCBpbnQsDQo+IC0gICAg ICAgIHVuc2lnbmVkIGludCk7DQo+ICtleHRlcm4gdHJlZSB2ZWN0X2dldF9s b29wX2xlbiAobG9vcF92ZWNfaW5mbywgZ2ltcGxlX3N0bXRfaXRlcmF0b3Ig KiwgdmVjX2xvb3BfbGVucyAqLA0KPiArICAgICAgICB1bnNpZ25lZCBpbnQs IHRyZWUsIHVuc2lnbmVkIGludCk7DQo+ICBleHRlcm4gZ2ltcGxlX3NlcSB2 ZWN0X2dlbl9sZW4gKHRyZWUsIHRyZWUsIHRyZWUsIHRyZWUpOw0KPiAgZXh0 ZXJuIHN0bXRfdmVjX2luZm8gaW5mb19mb3JfcmVkdWN0aW9uICh2ZWNfaW5m byAqLCBzdG10X3ZlY19pbmZvKTsNCj4gIGV4dGVybiBib29sIHJlZHVjdGlv bl9mbl9mb3Jfc2NhbGFyX2NvZGUgKGNvZGVfaGVscGVyLCBpbnRlcm5hbF9m biAqKTsNCiANCg== ------=_001_NextPart611371262650_=------