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 1CC133858436 for ; Wed, 21 Jun 2023 09:11:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1CC133858436 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: bizesmtp78t1687338666t8a7zuyn Received: from LAPTOP-EPITNQBU ( [58.60.1.5]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 21 Jun 2023 17:11:05 +0800 (CST) X-QQ-SSF: 01400000000000G0S000000A0000000 X-QQ-FEAT: ERSZEewZJul3dfXIespqoiM2sUeDLG86uz8vY1UrRGkUv0WMeXaYaj1+qFYRr EO85IWZlTINCGN0uOgverVDUgtbxj4uGUMozNxUISx/4BSkaAyJPwEMuDkYTsrfkMFeygYc ReBiept4kYyDaMEBqE+7oOGcn2XLIRggw5vgo5wuYjiCARh3RQKWcVe00XEGZdInQU/MKuU cvRqisOksWjlEzyo8u7HRUla0S+uU6VpE7moXV5+mwpd4QQf14Fez0AcyL3CeAhtj1bHkHE KaRgU1yDxgixMd8v3DMsI3h26TbLslAAlEeA1aD+vpbQQvutLqBHWuDRHeYiw73HWyYbokM R+9EpL6FOSu2YAelAWj0I4CBk4QkciVtIg7FWhlsfq01uKXXQ4XNA4fvDIx7miXyihXPReL vA+OrzViCJHDjPrG23neXZPpfdwqGt9i X-QQ-GoodBg: 2 X-BIZMAIL-ID: 7313606200441821268 Date: Wed, 21 Jun 2023 17:11:04 +0800 From: "juzhe.zhong@rivai.ai" To: rguenther Cc: gcc-patches , richard.sandiford Subject: Re: Re: [PATCH V3] VECT: Apply LEN_MASK_{LOAD,STORE} into vectorizer References: <20230620150626.269383-1-juzhe.zhong@rivai.ai>, X-Priority: 3 X-GUID: E13E0FD3-9684-4201-A03A-700A1263BF84 X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: Content-Type: multipart/alternative; boundary="----=_001_NextPart141553182502_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-11.7 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_NextPart141553182502_=---- Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGksIFJpY2hpLiBUaGFua3Mgc28gbXVjaCBmb3IgdGhlIHJldmlldyBhbmQg Y29tbWVudHMuDQoNCj4+IENhbiB5b3UgaW5zdGVhZCBhZGp1c3QgZ2V0X2xl bl9sb2FkX3N0b3JlX21vZGUgYW5kDQo+PmNhbl92ZWNfbWFza19sb2FkX3N0 b3JlX3AgdG8gcHJvdmlkZSB0aGUgb3B0YWIgdGhleSBtYXRjaGVkIG9uDQo+ PnZpYSB0aGUgY29ycmVzcG9uZGluZyBJRk4gY29kZSBhcyBhZGRpdGlvbmFs IG91dHB1dCAoYWRkIGENCj4+cG9pbnRlciBhcmd1bWVudCwgeW91IGNhbiBk ZWZhdWx0IGl0IHRvIG51bGxwdHIgYW5kIG9ubHkNCj4+ZmlsbCBpbiB0aGUg ZGV0YWlsIGluIHRoZSBjb250ZXh0IHRoYXQgbmVlZCBpdCk/DQo+Pkxpa2Ug YWJvdmUgdGhlIF9sZW4gY2FzZSBjYW4gdGhlbiBzaW1wbHkNCj4+dGFrZSBw cmVjZWRlbmNlLg0KDQpEbyB5b3UgbWVhbiBJIHJlbW92ZSBwYXJ0aWFsX29y X21hc2tfdmVjdG9yX2lmbg0KdGhlbiB1c2UgY2FuX3ZlY19tYXNrX2xvYWRf c3RvcmVfcCBvciBnZXRfbGVuX2xvYWRfc3RvcmVfbW9kZSB0byBjYWxjdWxh dGUgSUZOIGluc3RlYWQ/DQoNCkkgdHJpZWQgdG8gYWRkIHBvaW50ZXIgYXJn dW1lbnQgaW50ZXJuYWxfZm4gKiBpbnRvIGdldF9sZW5fbG9hZF9zdG9yZV9t b2RlIGJ1dCBpdCBmYWlsIHRvIGNvbXBpbGU6DQoNCi4uLy4uLy4uL3Jpc2N2 LWdjYy9nY2Mvb3B0YWJzLXF1ZXJ5Lmg6MTkxOjYzOiBlcnJvcjog4oCYaW50 ZXJuYWxfZm7igJkgaGFzIG5vdCBiZWVuIGRlY2xhcmVkDQogb3B0X21hY2hp bmVfbW9kZSBnZXRfbGVuX2xvYWRfc3RvcmVfbW9kZSAobWFjaGluZV9tb2Rl LCBib29sLCBpbnRlcm5hbF9mbiogPSBudWxscHRyKTsNCg0KSSBhbSBub3Qg c3VyZSB3aGV0aGVyIEkgYW0gb24gdGhlIHNhbWUgcGFnZSB3aXRoIHlvdS4N CkNvdWxkIHlvdSBoZWxwIG1lIHdpdGggdGhhdD8NCg0KVGhhbmtzLg0KDQoN Cmp1emhlLnpob25nQHJpdmFpLmFpDQogDQpGcm9tOiBSaWNoYXJkIEJpZW5l cg0KRGF0ZTogMjAyMy0wNi0yMSAxNjo1Mw0KVG86IEp1LVpoZSBaaG9uZw0K Q0M6IGdjYy1wYXRjaGVzOyByaWNoYXJkLnNhbmRpZm9yZA0KU3ViamVjdDog UmU6IFtQQVRDSCBWM10gVkVDVDogQXBwbHkgTEVOX01BU0tfe0xPQUQsU1RP UkV9IGludG8gdmVjdG9yaXplcg0KT24gVHVlLCAyMCBKdW4gMjAyMywganV6 aGUuemhvbmdAcml2YWkuYWkgd3JvdGU6DQogDQo+IEZyb206IEp1LVpoZSBa aG9uZyA8anV6aGUuemhvbmdAcml2YWkuYWk+DQo+IA0KPiBnY2MvQ2hhbmdl TG9nOg0KPiANCj4gICAgICAgICAqIGludGVybmFsLWZuLmNjIChleHBhbmRf cGFydGlhbF9zdG9yZV9vcHRhYl9mbik6IEFkZCBMRU5fTUFTS197TE9BRCxT VE9SRX0gdmVjdG9yaXplciBzdXBwb3J0Lg0KPiAgICAgICAgIChpbnRlcm5h bF9sb2FkX2ZuX3ApOiBEaXR0by4NCj4gICAgICAgICAoaW50ZXJuYWxfc3Rv cmVfZm5fcCk6IERpdHRvLg0KPiAgICAgICAgIChpbnRlcm5hbF9mbl9tYXNr X2luZGV4KTogRGl0dG8uDQo+ICAgICAgICAgKGludGVybmFsX2ZuX3N0b3Jl ZF92YWx1ZV9pbmRleCk6IERpdHRvLg0KPiAgICAgICAgIChpbnRlcm5hbF9s ZW5fbG9hZF9zdG9yZV9iaWFzKTogRGl0dG8uDQo+ICAgICAgICAgKiBvcHRh YnMtcXVlcnkuY2MgKGNhbl92ZWNfbWFza19sb2FkX3N0b3JlX3ApOiBEaXR0 by4NCj4gICAgICAgICAoZ2V0X2xlbl9sb2FkX3N0b3JlX21vZGUpOiBEaXR0 by4NCj4gICAgICAgICAqIHRyZWUtdmVjdC1zdG10cy5jYyAoY2hlY2tfbG9h ZF9zdG9yZV9mb3JfcGFydGlhbF92ZWN0b3JzKTogRGl0dG8uDQo+ICAgICAg ICAgKGdldF9hbGxfb25lc19tYXNrKTogTmV3IGZ1bmN0aW9uLg0KPiAgICAg ICAgICh2ZWN0b3JpemFibGVfc3RvcmUpOiBBZGQgTEVOX01BU0tfe0xPQUQs U1RPUkV9IHZlY3Rvcml6ZXIgc3VwcG9ydC4NCj4gICAgICAgICAodmVjdG9y aXphYmxlX2xvYWQpOiBEaXR0by4NCj4gRA0KPiAtLS0NCj4gIGdjYy9pbnRl cm5hbC1mbi5jYyAgICAgfCAgMzUgKysrKystDQo+ICBnY2Mvb3B0YWJzLXF1 ZXJ5LmNjICAgIHwgIDI1ICsrKystDQo+ICBnY2MvdHJlZS12ZWN0LXN0bXRz LmNjIHwgMjM0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0t LS0tLS0tDQo+ICAzIGZpbGVzIGNoYW5nZWQsIDIyNyBpbnNlcnRpb25zKCsp LCA2NyBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9nY2MvaW50 ZXJuYWwtZm4uY2MgYi9nY2MvaW50ZXJuYWwtZm4uY2MNCj4gaW5kZXggYzkx MWFlNzkwY2IuLmUxMGMyMWRlNWYxIDEwMDY0NA0KPiAtLS0gYS9nY2MvaW50 ZXJuYWwtZm4uY2MNCj4gKysrIGIvZ2NjL2ludGVybmFsLWZuLmNjDQo+IEBA IC0yOTQ5LDcgKzI5NDksNyBAQCBleHBhbmRfcGFydGlhbF9sb2FkX29wdGFi X2ZuIChpbnRlcm5hbF9mbiwgZ2NhbGwgKnN0bXQsIGNvbnZlcnRfb3B0YWIg b3B0YWIpDQo+ICAgKiBPUFRBQi4gICovDQo+ICANCj4gIHN0YXRpYyB2b2lk DQo+IC1leHBhbmRfcGFydGlhbF9zdG9yZV9vcHRhYl9mbiAoaW50ZXJuYWxf Zm4sIGdjYWxsICpzdG10LCBjb252ZXJ0X29wdGFiIG9wdGFiKQ0KPiArZXhw YW5kX3BhcnRpYWxfc3RvcmVfb3B0YWJfZm4gKGludGVybmFsX2ZuIGlmbiwg Z2NhbGwgKnN0bXQsIGNvbnZlcnRfb3B0YWIgb3B0YWIpDQo+ICB7DQo+ICAg IGNsYXNzIGV4cGFuZF9vcGVyYW5kIG9wc1s1XTsNCj4gICAgdHJlZSB0eXBl LCBsaHMsIHJocywgbWFza3QsIGJpYXN0Ow0KPiBAQCAtMjk1Nyw3ICsyOTU3 LDcgQEAgZXhwYW5kX3BhcnRpYWxfc3RvcmVfb3B0YWJfZm4gKGludGVybmFs X2ZuLCBnY2FsbCAqc3RtdCwgY29udmVydF9vcHRhYiBvcHRhYikNCj4gICAg aW5zbl9jb2RlIGljb2RlOw0KPiAgDQo+ICAgIG1hc2t0ID0gZ2ltcGxlX2Nh bGxfYXJnIChzdG10LCAyKTsNCj4gLSAgcmhzID0gZ2ltcGxlX2NhbGxfYXJn IChzdG10LCAzKTsNCj4gKyAgcmhzID0gZ2ltcGxlX2NhbGxfYXJnIChzdG10 LCBpbnRlcm5hbF9mbl9zdG9yZWRfdmFsdWVfaW5kZXggKGlmbikpOw0KPiAg ICB0eXBlID0gVFJFRV9UWVBFIChyaHMpOw0KPiAgICBsaHMgPSBleHBhbmRf Y2FsbF9tZW1fcmVmICh0eXBlLCBzdG10LCAwKTsNCj4gIA0KPiBAQCAtNDQz NSw2ICs0NDM1LDcgQEAgaW50ZXJuYWxfbG9hZF9mbl9wIChpbnRlcm5hbF9m biBmbikNCj4gICAgICBjYXNlIElGTl9HQVRIRVJfTE9BRDoNCj4gICAgICBj YXNlIElGTl9NQVNLX0dBVEhFUl9MT0FEOg0KPiAgICAgIGNhc2UgSUZOX0xF Tl9MT0FEOg0KPiArICAgIGNhc2UgSUZOX0xFTl9NQVNLX0xPQUQ6DQo+ICAg ICAgICByZXR1cm4gdHJ1ZTsNCj4gIA0KPiAgICAgIGRlZmF1bHQ6DQo+IEBA IC00NDU1LDYgKzQ0NTYsNyBAQCBpbnRlcm5hbF9zdG9yZV9mbl9wIChpbnRl cm5hbF9mbiBmbikNCj4gICAgICBjYXNlIElGTl9TQ0FUVEVSX1NUT1JFOg0K PiAgICAgIGNhc2UgSUZOX01BU0tfU0NBVFRFUl9TVE9SRToNCj4gICAgICBj YXNlIElGTl9MRU5fU1RPUkU6DQo+ICsgICAgY2FzZSBJRk5fTEVOX01BU0tf U1RPUkU6DQo+ICAgICAgICByZXR1cm4gdHJ1ZTsNCj4gIA0KPiAgICAgIGRl ZmF1bHQ6DQo+IEBAIC00NDk0LDYgKzQ0OTYsMTAgQEAgaW50ZXJuYWxfZm5f bWFza19pbmRleCAoaW50ZXJuYWxfZm4gZm4pDQo+ICAgICAgY2FzZSBJRk5f TUFTS19TVE9SRV9MQU5FUzoNCj4gICAgICAgIHJldHVybiAyOw0KPiAgDQo+ ICsgICAgY2FzZSBJRk5fTEVOX01BU0tfTE9BRDoNCj4gKyAgICBjYXNlIElG Tl9MRU5fTUFTS19TVE9SRToNCj4gKyAgICAgIHJldHVybiAzOw0KPiArDQo+ ICAgICAgY2FzZSBJRk5fTUFTS19HQVRIRVJfTE9BRDoNCj4gICAgICBjYXNl IElGTl9NQVNLX1NDQVRURVJfU1RPUkU6DQo+ICAgICAgICByZXR1cm4gNDsN Cj4gQEAgLTQ1MTksNiArNDUyNSw5IEBAIGludGVybmFsX2ZuX3N0b3JlZF92 YWx1ZV9pbmRleCAoaW50ZXJuYWxfZm4gZm4pDQo+ICAgICAgY2FzZSBJRk5f TEVOX1NUT1JFOg0KPiAgICAgICAgcmV0dXJuIDM7DQo+ICANCj4gKyAgICBj YXNlIElGTl9MRU5fTUFTS19TVE9SRToNCj4gKyAgICAgIHJldHVybiA0Ow0K PiArDQo+ICAgICAgZGVmYXVsdDoNCj4gICAgICAgIHJldHVybiAtMTsNCj4g ICAgICB9DQo+IEBAIC00NTgzLDEzICs0NTkyLDMxIEBAIGludGVybmFsX2xl bl9sb2FkX3N0b3JlX2JpYXMgKGludGVybmFsX2ZuIGlmbiwgbWFjaGluZV9t b2RlIG1vZGUpDQo+ICB7DQo+ICAgIG9wdGFiIG9wdGFiID0gZGlyZWN0X2lu dGVybmFsX2ZuX29wdGFiIChpZm4pOw0KPiAgICBpbnNuX2NvZGUgaWNvZGUg PSBkaXJlY3Rfb3B0YWJfaGFuZGxlciAob3B0YWIsIG1vZGUpOw0KPiArICBp bnQgYmlhc19hcmdubyA9IDM7DQo+ICsgIGlmIChpY29kZSA9PSBDT0RFX0ZP Ul9ub3RoaW5nKQ0KPiArICAgIHsNCj4gKyAgICAgIG1hY2hpbmVfbW9kZSBt YXNrX21vZGUNCj4gKyA9IHRhcmdldG0udmVjdG9yaXplLmdldF9tYXNrX21v ZGUgKG1vZGUpLnJlcXVpcmUgKCk7DQo+ICsgICAgICBpZiAoaWZuID09IElG Tl9MRU5fTE9BRCkNCj4gKyB7DQo+ICsgICAvKiBUcnkgTEVOX01BU0tfTE9B RC4gICovDQo+ICsgICBvcHRhYiA9IGRpcmVjdF9pbnRlcm5hbF9mbl9vcHRh YiAoSUZOX0xFTl9NQVNLX0xPQUQpOw0KPiArIH0NCj4gKyAgICAgIGVsc2UN Cj4gKyB7DQo+ICsgICAvKiBUcnkgTEVOX01BU0tfU1RPUkUuICAqLw0KPiAr ICAgb3B0YWIgPSBkaXJlY3RfaW50ZXJuYWxfZm5fb3B0YWIgKElGTl9MRU5f TUFTS19TVE9SRSk7DQo+ICsgfQ0KPiArICAgICAgaWNvZGUgPSBjb252ZXJ0 X29wdGFiX2hhbmRsZXIgKG9wdGFiLCBtb2RlLCBtYXNrX21vZGUpOw0KPiAr ICAgICAgYmlhc19hcmdubyA9IDQ7DQo+ICsgICAgfQ0KPiAgDQo+ICAgIGlm IChpY29kZSAhPSBDT0RFX0ZPUl9ub3RoaW5nKQ0KPiAgICAgIHsNCj4gICAg ICAgIC8qIEZvciBub3cgd2Ugb25seSBzdXBwb3J0IGJpYXNlcyBvZiAwIG9y IC0xLiAgVHJ5IGJvdGggb2YgdGhlbS4gICovDQo+IC0gICAgICBpZiAoaW5z bl9vcGVyYW5kX21hdGNoZXMgKGljb2RlLCAzLCBHRU5fSU5UICgwKSkpDQo+ ICsgICAgICBpZiAoaW5zbl9vcGVyYW5kX21hdGNoZXMgKGljb2RlLCBiaWFz X2FyZ25vLCBHRU5fSU5UICgwKSkpDQo+ICByZXR1cm4gMDsNCj4gLSAgICAg IGlmIChpbnNuX29wZXJhbmRfbWF0Y2hlcyAoaWNvZGUsIDMsIEdFTl9JTlQg KC0xKSkpDQo+ICsgICAgICBpZiAoaW5zbl9vcGVyYW5kX21hdGNoZXMgKGlj b2RlLCBiaWFzX2FyZ25vLCBHRU5fSU5UICgtMSkpKQ0KPiAgcmV0dXJuIC0x Ow0KPiAgICAgIH0NCj4gIA0KPiBkaWZmIC0tZ2l0IGEvZ2NjL29wdGFicy1x dWVyeS5jYyBiL2djYy9vcHRhYnMtcXVlcnkuY2MNCj4gaW5kZXggMjc2Zjg0 MDhkZDcuLjQzOTRkMzkxMjAwIDEwMDY0NA0KPiAtLS0gYS9nY2Mvb3B0YWJz LXF1ZXJ5LmNjDQo+ICsrKyBiL2djYy9vcHRhYnMtcXVlcnkuY2MNCj4gQEAg LTU2NiwxMSArNTY2LDE0IEBAIGNhbl92ZWNfbWFza19sb2FkX3N0b3JlX3Ag KG1hY2hpbmVfbW9kZSBtb2RlLA0KPiAgICAgYm9vbCBpc19sb2FkKQ0KPiAg ew0KPiAgICBvcHRhYiBvcCA9IGlzX2xvYWQgPyBtYXNrbG9hZF9vcHRhYiA6 IG1hc2tzdG9yZV9vcHRhYjsNCj4gKyAgb3B0YWIgbGVuX29wID0gaXNfbG9h ZCA/IGxlbl9tYXNrbG9hZF9vcHRhYiA6IGxlbl9tYXNrc3RvcmVfb3B0YWI7 DQo+ICAgIG1hY2hpbmVfbW9kZSB2bW9kZTsNCj4gIA0KPiAgICAvKiBJZiBt b2RlIGlzIHZlY3RvciBtb2RlLCBjaGVjayBpdCBkaXJlY3RseS4gICovDQo+ ICAgIGlmIChWRUNUT1JfTU9ERV9QIChtb2RlKSkNCj4gLSAgICByZXR1cm4g Y29udmVydF9vcHRhYl9oYW5kbGVyIChvcCwgbW9kZSwgbWFza19tb2RlKSAh PSBDT0RFX0ZPUl9ub3RoaW5nOw0KPiArICAgIHJldHVybiBjb252ZXJ0X29w dGFiX2hhbmRsZXIgKG9wLCBtb2RlLCBtYXNrX21vZGUpICE9IENPREVfRk9S X25vdGhpbmcNCj4gKyAgICB8fCBjb252ZXJ0X29wdGFiX2hhbmRsZXIgKGxl bl9vcCwgbW9kZSwgbWFza19tb2RlKQ0KPiArICE9IENPREVfRk9SX25vdGhp bmc7DQo+ICANCj4gICAgLyogT3RoZXJ3aXNlLCByZXR1cm4gdHJ1ZSBpZiB0 aGVyZSBpcyBzb21lIHZlY3RvciBtb2RlIHdpdGgNCj4gICAgICAgdGhlIG1h c2sgbG9hZC9zdG9yZSBzdXBwb3J0ZWQuICAqLw0KPiBAQCAtNTg0LDcgKzU4 Nyw5IEBAIGNhbl92ZWNfbWFza19sb2FkX3N0b3JlX3AgKG1hY2hpbmVfbW9k ZSBtb2RlLA0KPiAgICB2bW9kZSA9IHRhcmdldG0udmVjdG9yaXplLnByZWZl cnJlZF9zaW1kX21vZGUgKHNtb2RlKTsNCj4gICAgaWYgKFZFQ1RPUl9NT0RF X1AgKHZtb2RlKQ0KPiAgICAgICAgJiYgdGFyZ2V0bS52ZWN0b3JpemUuZ2V0 X21hc2tfbW9kZSAodm1vZGUpLmV4aXN0cyAoJm1hc2tfbW9kZSkNCj4gLSAg ICAgICYmIGNvbnZlcnRfb3B0YWJfaGFuZGxlciAob3AsIHZtb2RlLCBtYXNr X21vZGUpICE9IENPREVfRk9SX25vdGhpbmcpDQo+ICsgICAgICAmJiAoY29u dmVydF9vcHRhYl9oYW5kbGVyIChvcCwgdm1vZGUsIG1hc2tfbW9kZSkgIT0g Q09ERV9GT1Jfbm90aGluZw0KPiArICAgfHwgY29udmVydF9vcHRhYl9oYW5k bGVyIChsZW5fb3AsIHZtb2RlLCBtYXNrX21vZGUpDQo+ICsgICAgICAgICE9 IENPREVfRk9SX25vdGhpbmcpKQ0KPiAgICAgIHJldHVybiB0cnVlOw0KPiAg DQo+ICAgIGF1dG9fdmVjdG9yX21vZGVzIHZlY3Rvcl9tb2RlczsNCj4gQEAg LTU5Miw3ICs1OTcsOSBAQCBjYW5fdmVjX21hc2tfbG9hZF9zdG9yZV9wICht YWNoaW5lX21vZGUgbW9kZSwNCj4gICAgZm9yIChtYWNoaW5lX21vZGUgYmFz ZV9tb2RlIDogdmVjdG9yX21vZGVzKQ0KPiAgICAgIGlmIChyZWxhdGVkX3Zl Y3Rvcl9tb2RlIChiYXNlX21vZGUsIHNtb2RlKS5leGlzdHMgKCZ2bW9kZSkN Cj4gICYmIHRhcmdldG0udmVjdG9yaXplLmdldF9tYXNrX21vZGUgKHZtb2Rl KS5leGlzdHMgKCZtYXNrX21vZGUpDQo+IC0gJiYgY29udmVydF9vcHRhYl9o YW5kbGVyIChvcCwgdm1vZGUsIG1hc2tfbW9kZSkgIT0gQ09ERV9GT1Jfbm90 aGluZykNCj4gKyAmJiAoY29udmVydF9vcHRhYl9oYW5kbGVyIChvcCwgdm1v ZGUsIG1hc2tfbW9kZSkgIT0gQ09ERV9GT1Jfbm90aGluZw0KPiArICAgICB8 fCBjb252ZXJ0X29wdGFiX2hhbmRsZXIgKGxlbl9vcCwgdm1vZGUsIG1hc2tf bW9kZSkNCj4gKyAhPSBDT0RFX0ZPUl9ub3RoaW5nKSkNCj4gICAgICAgIHJl dHVybiB0cnVlOw0KPiAgICByZXR1cm4gZmFsc2U7DQo+ICB9DQo+IEBAIC02 MDgsMTcgKzYxNSwyNyBAQCBvcHRfbWFjaGluZV9tb2RlDQo+ICBnZXRfbGVu X2xvYWRfc3RvcmVfbW9kZSAobWFjaGluZV9tb2RlIG1vZGUsIGJvb2wgaXNf bG9hZCkNCj4gIHsNCj4gICAgb3B0YWIgb3AgPSBpc19sb2FkID8gbGVuX2xv YWRfb3B0YWIgOiBsZW5fc3RvcmVfb3B0YWI7DQo+ICsgIG9wdGFiIG1hc2tl ZF9vcCA9IGlzX2xvYWQgPyBsZW5fbWFza2xvYWRfb3B0YWIgOiBsZW5fbWFz a3N0b3JlX29wdGFiOw0KPiAgICBnY2NfYXNzZXJ0IChWRUNUT1JfTU9ERV9Q IChtb2RlKSk7DQo+ICANCj4gICAgLyogQ2hlY2sgaWYgbGVuZ3RoIGluIGxh bmVzIHN1cHBvcnRlZCBmb3IgdGhpcyBtb2RlIGRpcmVjdGx5LiAgKi8NCj4g ICAgaWYgKGRpcmVjdF9vcHRhYl9oYW5kbGVyIChvcCwgbW9kZSkpDQo+ICAg ICAgcmV0dXJuIG1vZGU7DQo+ICANCj4gKyAgLyogQ2hlY2sgaWYgbGVuZ3Ro IGluIGxhbmVzIHN1cHBvcnRlZCBieSBsZW5fbWFza2xvYWQvc3RvcmUuICAq Lw0KPiArICBtYWNoaW5lX21vZGUgbWFza19tb2RlOw0KPiArICBpZiAodGFy Z2V0bS52ZWN0b3JpemUuZ2V0X21hc2tfbW9kZSAobW9kZSkuZXhpc3RzICgm bWFza19tb2RlKQ0KPiArICAgICAgJiYgY29udmVydF9vcHRhYl9oYW5kbGVy IChtYXNrZWRfb3AsIG1vZGUsIG1hc2tfbW9kZSkgIT0gQ09ERV9GT1Jfbm90 aGluZykNCj4gKyAgICByZXR1cm4gbW9kZTsNCj4gKw0KPiAgICAvKiBDaGVj ayBpZiBsZW5ndGggaW4gYnl0ZXMgc3VwcG9ydGVkIGZvciBzYW1lIHZlY3Rv ciBzaXplIFZuUUkuICAqLw0KPiAgICBtYWNoaW5lX21vZGUgdm1vZGU7DQo+ ICAgIHBvbHlfdWludDY0IG51bml0cyA9IEdFVF9NT0RFX1NJWkUgKG1vZGUp Ow0KPiAgICBpZiAocmVsYXRlZF92ZWN0b3JfbW9kZSAobW9kZSwgUUltb2Rl LCBudW5pdHMpLmV4aXN0cyAoJnZtb2RlKQ0KPiAtICAgICAgJiYgZGlyZWN0 X29wdGFiX2hhbmRsZXIgKG9wLCB2bW9kZSkpDQo+ICsgICAgICAmJiAoZGly ZWN0X29wdGFiX2hhbmRsZXIgKG9wLCB2bW9kZSkNCj4gKyAgIHx8ICh0YXJn ZXRtLnZlY3Rvcml6ZS5nZXRfbWFza19tb2RlICh2bW9kZSkuZXhpc3RzICgm bWFza19tb2RlKQ0KPiArICAgICAgICYmIGNvbnZlcnRfb3B0YWJfaGFuZGxl ciAobWFza2VkX29wLCB2bW9kZSwgbWFza19tb2RlKQ0KPiArICAgICE9IENP REVfRk9SX25vdGhpbmcpKSkNCj4gICAgICByZXR1cm4gdm1vZGU7DQo+ICAN Cj4gICAgcmV0dXJuIG9wdF9tYWNoaW5lX21vZGUgKCk7DQo+IGRpZmYgLS1n aXQgYS9nY2MvdHJlZS12ZWN0LXN0bXRzLmNjIGIvZ2NjL3RyZWUtdmVjdC1z dG10cy5jYw0KPiBpbmRleCAwNTZhMGVjYjJiZS4uNDE2ZmRlOWE5YTYgMTAw NjQ0DQo+IC0tLSBhL2djYy90cmVlLXZlY3Qtc3RtdHMuY2MNCj4gKysrIGIv Z2NjL3RyZWUtdmVjdC1zdG10cy5jYw0KPiBAQCAtMTgxOSwxNiArMTgxOSw4 IEBAIGNoZWNrX2xvYWRfc3RvcmVfZm9yX3BhcnRpYWxfdmVjdG9ycyAobG9v cF92ZWNfaW5mbyBsb29wX3ZpbmZvLCB0cmVlIHZlY3R5cGUsDQo+ICAgIHBv bHlfdWludDY0IG51bml0cyA9IFRZUEVfVkVDVE9SX1NVQlBBUlRTICh2ZWN0 eXBlKTsNCj4gICAgcG9seV91aW50NjQgdmYgPSBMT09QX1ZJTkZPX1ZFQ1Rf RkFDVE9SIChsb29wX3ZpbmZvKTsNCj4gICAgbWFjaGluZV9tb2RlIG1hc2tf bW9kZTsNCj4gLSAgYm9vbCB1c2luZ19wYXJ0aWFsX3ZlY3RvcnNfcCA9IGZh bHNlOw0KPiAtICBpZiAodGFyZ2V0bS52ZWN0b3JpemUuZ2V0X21hc2tfbW9k ZSAodmVjbW9kZSkuZXhpc3RzICgmbWFza19tb2RlKQ0KPiAtICAgICAgJiYg Y2FuX3ZlY19tYXNrX2xvYWRfc3RvcmVfcCAodmVjbW9kZSwgbWFza19tb2Rl LCBpc19sb2FkKSkNCj4gLSAgICB7DQo+IC0gICAgICBudmVjdG9ycyA9IGdy b3VwX21lbW9yeV9udmVjdG9ycyAoZ3JvdXBfc2l6ZSAqIHZmLCBudW5pdHMp Ow0KPiAtICAgICAgdmVjdF9yZWNvcmRfbG9vcF9tYXNrIChsb29wX3ZpbmZv LCBtYXNrcywgbnZlY3RvcnMsIHZlY3R5cGUsIHNjYWxhcl9tYXNrKTsNCj4g LSAgICAgIHVzaW5nX3BhcnRpYWxfdmVjdG9yc19wID0gdHJ1ZTsNCj4gLSAg ICB9DQo+IC0NCj4gICAgbWFjaGluZV9tb2RlIHZtb2RlOw0KPiArICBib29s IHVzaW5nX3BhcnRpYWxfdmVjdG9yc19wID0gZmFsc2U7DQo+ICAgIGlmIChn ZXRfbGVuX2xvYWRfc3RvcmVfbW9kZSAodmVjbW9kZSwgaXNfbG9hZCkuZXhp c3RzICgmdm1vZGUpKQ0KPiAgICAgIHsNCj4gICAgICAgIG52ZWN0b3JzID0g Z3JvdXBfbWVtb3J5X252ZWN0b3JzIChncm91cF9zaXplICogdmYsIG51bml0 cyk7DQo+IEBAIC0xODM3LDYgKzE4MjksMTMgQEAgY2hlY2tfbG9hZF9zdG9y ZV9mb3JfcGFydGlhbF92ZWN0b3JzIChsb29wX3ZlY19pbmZvIGxvb3Bfdmlu Zm8sIHRyZWUgdmVjdHlwZSwNCj4gICAgICAgIHZlY3RfcmVjb3JkX2xvb3Bf bGVuIChsb29wX3ZpbmZvLCBsZW5zLCBudmVjdG9ycywgdmVjdHlwZSwgZmFj dG9yKTsNCj4gICAgICAgIHVzaW5nX3BhcnRpYWxfdmVjdG9yc19wID0gdHJ1 ZTsNCj4gICAgICB9DQo+ICsgIGVsc2UgaWYgKHRhcmdldG0udmVjdG9yaXpl LmdldF9tYXNrX21vZGUgKHZlY21vZGUpLmV4aXN0cyAoJm1hc2tfbW9kZSkN Cj4gKyAgICAmJiBjYW5fdmVjX21hc2tfbG9hZF9zdG9yZV9wICh2ZWNtb2Rl LCBtYXNrX21vZGUsIGlzX2xvYWQpKQ0KPiArICAgIHsNCj4gKyAgICAgIG52 ZWN0b3JzID0gZ3JvdXBfbWVtb3J5X252ZWN0b3JzIChncm91cF9zaXplICog dmYsIG51bml0cyk7DQo+ICsgICAgICB2ZWN0X3JlY29yZF9sb29wX21hc2sg KGxvb3BfdmluZm8sIG1hc2tzLCBudmVjdG9ycywgdmVjdHlwZSwgc2NhbGFy X21hc2spOw0KPiArICAgICAgdXNpbmdfcGFydGlhbF92ZWN0b3JzX3AgPSB0 cnVlOw0KPiArICAgIH0NCj4gIA0KPiAgICBpZiAoIXVzaW5nX3BhcnRpYWxf dmVjdG9yc19wKQ0KPiAgICAgIHsNCj4gQEAgLTI4MDksNiArMjgwOCw1OCBA QCB2ZWN0X2J1aWxkX3plcm9fbWVyZ2VfYXJndW1lbnQgKHZlY19pbmZvICp2 aW5mbywNCj4gICAgcmV0dXJuIHZlY3RfaW5pdF92ZWN0b3IgKHZpbmZvLCBz dG10X2luZm8sIG1lcmdlLCB2ZWN0eXBlLCBOVUxMKTsNCj4gIH0NCj4gIA0K PiArLyogR2V0IGFsbC1vbmVzIHZlY3RvciBtYXNrIGZvciBjb3JyZXNwb25k aW5nIHZlY3R5cGUuICAqLw0KPiArDQo+ICtzdGF0aWMgdHJlZQ0KPiArZ2V0 X2FsbF9vbmVzX21hc2sgKG1hY2hpbmVfbW9kZSB2bW9kZSkNCj4gK3sNCj4g KyAgbWFjaGluZV9tb2RlIG1hc2ttb2RlID0gdGFyZ2V0bS52ZWN0b3JpemUu Z2V0X21hc2tfbW9kZSAodm1vZGUpLnJlcXVpcmUgKCk7DQo+ICsgIHBvbHlf dWludDY0IG51bml0cyA9IEdFVF9NT0RFX05VTklUUyAobWFza21vZGUpOw0K PiArICB0cmVlIG1hc2t0eXBlID0gYnVpbGRfdHJ1dGhfdmVjdG9yX3R5cGVf Zm9yX21vZGUgKG51bml0cywgbWFza21vZGUpOw0KPiArICByZXR1cm4gY29u c3RhbnRfYm9vbGVhbl9ub2RlICh0cnVlLCBtYXNrdHlwZSk7DQo+ICt9DQo+ ICsNCj4gKy8qIEdldCB0aGUgcGFydGlhbCB2ZWN0b3IgSUZOIHRoYXQgdGhl IHRhcmdldCBzdXBwb3J0cy4NCj4gKw0KPiArICAgRm9yIHBhcnRpYWwgY29u dGlndW91cyBsb2FkLCB3ZSBjb3VsZCByZXR1cm4gSUZOX0xFTl9MT0FELCBJ Rk5fTUFTS19MT0FEDQo+ICsgICBvciBJRk5fTEVOX01BU0tfTE9BRC4NCj4g Kw0KPiArICAgRm9yIHBhcnRpYWwgY29udGlndW91cyBsb2FkLCB3ZSBjb3Vs ZCByZXR1cm4gSUZOX0xFTl9TVE9SRSwgSUZOX01BU0tfU1RPUkUNCj4gKyAg IG9yIElGTl9MRU5fTUFTS19TVE9SRS4NCj4gKyovDQo+ICsNCj4gK3N0YXRp YyBpbnRlcm5hbF9mbg0KPiArcGFydGlhbF9vcl9tYXNrX3ZlY3Rvcl9pZm4g KG1hY2hpbmVfbW9kZSB2ZWNtb2RlLCBib29sIGlzX2xvYWQpDQo+ICt7DQo+ ICsgIG1hY2hpbmVfbW9kZSBtYXNrbW9kZTsNCj4gKyAgbWFjaGluZV9tb2Rl IHZtb2RlOw0KIA0KQ2FuIHlvdSBpbnN0ZWFkIGFkanVzdCBnZXRfbGVuX2xv YWRfc3RvcmVfbW9kZSBhbmQNCmNhbl92ZWNfbWFza19sb2FkX3N0b3JlX3Ag dG8gcHJvdmlkZSB0aGUgb3B0YWIgdGhleSBtYXRjaGVkIG9uDQp2aWEgdGhl IGNvcnJlc3BvbmRpbmcgSUZOIGNvZGUgYXMgYWRkaXRpb25hbCBvdXRwdXQg KGFkZCBhDQpwb2ludGVyIGFyZ3VtZW50LCB5b3UgY2FuIGRlZmF1bHQgaXQg dG8gbnVsbHB0ciBhbmQgb25seQ0KZmlsbCBpbiB0aGUgZGV0YWlsIGluIHRo ZSBjb250ZXh0IHRoYXQgbmVlZCBpdCk/DQpMaWtlIGFib3ZlIHRoZSBfbGVu IGNhc2UgY2FuIHRoZW4gc2ltcGx5DQp0YWtlIHByZWNlZGVuY2UuDQogDQpU aGUgcmVzdCBsb29rcyBnb29kIG5vdy4NCiANClRoYW5rcywNClJpY2hhcmQu DQogDQo+ICsgIGlmIChnZXRfbGVuX2xvYWRfc3RvcmVfbW9kZSAodmVjbW9k ZSwgaXNfbG9hZCkuZXhpc3RzICgmdm1vZGUpKQ0KPiArICAgIHsNCj4gKyAg ICAgIGlmICh0YXJnZXRtLnZlY3Rvcml6ZS5nZXRfbWFza19tb2RlICh2ZWNt b2RlKS5leGlzdHMgKCZtYXNrbW9kZSkNCj4gKyAgICYmIGNhbl92ZWNfbWFz a19sb2FkX3N0b3JlX3AgKHZlY21vZGUsIG1hc2ttb2RlLCBpc19sb2FkKSkN Cj4gKyB7DQo+ICsgICBpZiAoaXNfbG9hZCkNCj4gKyAgICAgcmV0dXJuIElG Tl9MRU5fTUFTS19MT0FEOw0KPiArICAgZWxzZQ0KPiArICAgICByZXR1cm4g SUZOX0xFTl9NQVNLX1NUT1JFOw0KPiArIH0NCj4gKyAgICAgIGlmIChpc19s b2FkKQ0KPiArIHJldHVybiBJRk5fTEVOX0xPQUQ7DQo+ICsgICAgICBlbHNl DQo+ICsgcmV0dXJuIElGTl9MRU5fU1RPUkU7DQo+ICsgICAgfQ0KPiArICBl bHNlIGlmICh0YXJnZXRtLnZlY3Rvcml6ZS5nZXRfbWFza19tb2RlICh2ZWNt b2RlKS5leGlzdHMgKCZtYXNrbW9kZSkNCj4gKyAgICAmJiBjYW5fdmVjX21h c2tfbG9hZF9zdG9yZV9wICh2ZWNtb2RlLCBtYXNrbW9kZSwgaXNfbG9hZCkp DQo+ICsgICAgew0KPiArICAgICAgaWYgKGlzX2xvYWQpDQo+ICsgcmV0dXJu IElGTl9NQVNLX0xPQUQ7DQo+ICsgICAgICBlbHNlDQo+ICsgcmV0dXJuIElG Tl9NQVNLX1NUT1JFOw0KPiArICAgIH0NCj4gKyAgcmV0dXJuIElGTl9MQVNU Ow0KPiArfQ0KPiArDQo+ICAvKiBCdWlsZCBhIGdhdGhlciBsb2FkIGNhbGwg d2hpbGUgdmVjdG9yaXppbmcgU1RNVF9JTkZPLiAgSW5zZXJ0IG5ldw0KPiAg ICAgaW5zdHJ1Y3Rpb25zIGJlZm9yZSBHU0kgYW5kIGFkZCB0aGVtIHRvIFZF Q19TVE1ULiAgR1NfSU5GTyBkZXNjcmliZXMNCj4gICAgIHRoZSBnYXRoZXIg bG9hZCBvcGVyYXRpb24uICBJZiB0aGUgbG9hZCBpcyBjb25kaXRpb25hbCwg TUFTSyBpcyB0aGUNCj4gQEAgLTg5NDUsMzAgKzg5OTYsNDYgQEAgdmVjdG9y aXphYmxlX3N0b3JlICh2ZWNfaW5mbyAqdmluZm8sDQo+ICB9DQo+ICANCj4g ICAgICAgIC8qIEFyZ3VtZW50cyBhcmUgcmVhZHkuICBDcmVhdGUgdGhlIG5l dyB2ZWN0b3Igc3RtdC4gICovDQo+IC0gICAgICAgaWYgKGZpbmFsX21hc2sp DQo+IC0gew0KPiAtICAgdHJlZSBwdHIgPSBidWlsZF9pbnRfY3N0IChyZWZf dHlwZSwgYWxpZ24gKiBCSVRTX1BFUl9VTklUKTsNCj4gLSAgIGdjYWxsICpj YWxsDQo+IC0gICAgID0gZ2ltcGxlX2J1aWxkX2NhbGxfaW50ZXJuYWwgKElG Tl9NQVNLX1NUT1JFLCA0LA0KPiAtICAgZGF0YXJlZl9wdHIsIHB0ciwNCj4g LSAgIGZpbmFsX21hc2ssIHZlY19vcHJuZCk7DQo+IC0gICBnaW1wbGVfY2Fs bF9zZXRfbm90aHJvdyAoY2FsbCwgdHJ1ZSk7DQo+IC0gICB2ZWN0X2Zpbmlz aF9zdG10X2dlbmVyYXRpb24gKHZpbmZvLCBzdG10X2luZm8sIGNhbGwsIGdz aSk7DQo+IC0gICBuZXdfc3RtdCA9IGNhbGw7DQo+IC0gfQ0KPiAtICAgICAg IGVsc2UgaWYgKGxvb3BfbGVucykNCj4gKyAgICAgICBpbnRlcm5hbF9mbiBw YXJ0aWFsX2lmbg0KPiArID0gcGFydGlhbF9vcl9tYXNrX3ZlY3Rvcl9pZm4g KFRZUEVfTU9ERSAodmVjdHlwZSksIGZhbHNlKTsNCj4gKyAgICAgICB0cmVl IGZpbmFsX2xlbiA9IE5VTExfVFJFRTsNCj4gKyAgICAgICBtYWNoaW5lX21v ZGUgdm1vZGUgPSBUWVBFX01PREUgKHZlY3R5cGUpOw0KPiArICAgICAgIG1h Y2hpbmVfbW9kZSBuZXdfdm1vZGU7DQo+ICsNCj4gKyAgICAgICAvKiBQcm9k dWNlICdsZW4nIGFyZ3VtZW50LiAgKi8NCj4gKyAgICAgICBpZiAobG9vcF9s ZW5zKQ0KPiAgew0KPiAtICAgbWFjaGluZV9tb2RlIHZtb2RlID0gVFlQRV9N T0RFICh2ZWN0eXBlKTsNCj4gICAgb3B0X21hY2hpbmVfbW9kZSBuZXdfb3Zt b2RlDQo+ICAgICAgPSBnZXRfbGVuX2xvYWRfc3RvcmVfbW9kZSAodm1vZGUs IGZhbHNlKTsNCj4gLSAgIG1hY2hpbmVfbW9kZSBuZXdfdm1vZGUgPSBuZXdf b3Ztb2RlLnJlcXVpcmUgKCk7DQo+ICsgICBuZXdfdm1vZGUgPSBuZXdfb3Zt b2RlLnJlcXVpcmUgKCk7DQo+ICAgIHVuc2lnbmVkIGZhY3Rvcg0KPiAgICAg ID0gKG5ld19vdm1vZGUgPT0gdm1vZGUpID8gMSA6IEdFVF9NT0RFX1VOSVRf U0laRSAodm1vZGUpOw0KPiAtICAgdHJlZSBmaW5hbF9sZW4NCj4gLSAgICAg PSB2ZWN0X2dldF9sb29wX2xlbiAobG9vcF92aW5mbywgZ3NpLCBsb29wX2xl bnMsDQo+IC0gdmVjX251bSAqIG5jb3BpZXMsIHZlY3R5cGUsDQo+IC0gdmVj X251bSAqIGogKyBpLCBmYWN0b3IpOw0KPiAtICAgdHJlZSBwdHIgPSBidWls ZF9pbnRfY3N0IChyZWZfdHlwZSwgYWxpZ24gKiBCSVRTX1BFUl9VTklUKTsN Cj4gKyAgIGZpbmFsX2xlbiA9IHZlY3RfZ2V0X2xvb3BfbGVuIChsb29wX3Zp bmZvLCBnc2ksIGxvb3BfbGVucywNCj4gKyB2ZWNfbnVtICogbmNvcGllcywg dmVjdHlwZSwNCj4gKyB2ZWNfbnVtICogaiArIGksIGZhY3Rvcik7DQo+ICsg fQ0KPiArICAgICAgIGlmIChwYXJ0aWFsX2lmbiA9PSBJRk5fTEVOX01BU0tf U1RPUkUpDQo+ICsgew0KPiArICAgaWYgKCFmaW5hbF9sZW4pDQo+ICsgICAg IHsNCj4gKyAgICAgICAvKiBQYXNzIFZGIHZhbHVlIHRvICdsZW4nIGFyZ3Vt ZW50IG9mIExFTl9NQVNLX1NUT1JFIGlmDQo+ICsgICAgICAgICogTE9PUF9M RU5TIGlzIGludmFsaWQuICAqLw0KPiArICAgICAgIHRyZWUgaXZfdHlwZSA9 IExPT1BfVklORk9fUkdST1VQX0lWX1RZUEUgKGxvb3BfdmluZm8pOw0KPiAr ICAgICAgIGZpbmFsX2xlbg0KPiArID0gYnVpbGRfaW50X2NzdCAoaXZfdHlw ZSwNCj4gKyBUWVBFX1ZFQ1RPUl9TVUJQQVJUUyAodmVjdHlwZSkpOw0KPiAr ICAgICB9DQo+ICsgICBpZiAoIWZpbmFsX21hc2spDQo+ICsgICAgIHsNCj4g KyAgICAgICAvKiBQYXNzIGFsbCBvbmVzIHZhbHVlIHRvICdtYXNrJyBhcmd1 bWVudCBvZg0KPiArICAgICAgICAqIExFTl9NQVNLX1NUT1JFIGlmIGZpbmFs X21hc2sgaXMgaW52YWxpZC4gICovDQo+ICsgICAgICAgZmluYWxfbWFzayA9 IGdldF9hbGxfb25lc19tYXNrICh2bW9kZSk7DQo+ICsgICAgIH0NCj4gKyB9 DQo+ICsNCj4gKyAgICAgICB0cmVlIHB0ciA9IGJ1aWxkX2ludF9jc3QgKHJl Zl90eXBlLCBhbGlnbiAqIEJJVFNfUEVSX1VOSVQpOw0KPiArICAgICAgIGlm IChmaW5hbF9sZW4pDQo+ICsgew0KPiAgICAvKiBOZWVkIGNvbnZlcnNpb24g aWYgaXQncyB3cmFwcGVkIHdpdGggVm5RSS4gICovDQo+ICAgIGlmICh2bW9k ZSAhPSBuZXdfdm1vZGUpDQo+ICAgICAgew0KPiBAQCAtODk4NywxNCArOTA1 NCwzMiBAQCB2ZWN0b3JpemFibGVfc3RvcmUgKHZlY19pbmZvICp2aW5mbywN Cj4gICAgICAgIHZlY19vcHJuZCA9IHZhcjsNCj4gICAgICB9DQo+ICANCj4g LSAgIHNpZ25lZCBjaGFyIGJpYXN2YWwgPQ0KPiAtICAgICBMT09QX1ZJTkZP X1BBUlRJQUxfTE9BRF9TVE9SRV9CSUFTIChsb29wX3ZpbmZvKTsNCj4gKyAg IHNpZ25lZCBjaGFyIGJpYXN2YWwNCj4gKyAgICAgPSBMT09QX1ZJTkZPX1BB UlRJQUxfTE9BRF9TVE9SRV9CSUFTIChsb29wX3ZpbmZvKTsNCj4gIA0KPiAg ICB0cmVlIGJpYXMgPSBidWlsZF9pbnRfY3N0IChpbnRRSV90eXBlX25vZGUs IGJpYXN2YWwpOw0KPiArICAgZ2NhbGwgKmNhbGw7DQo+ICsNCj4gKyAgIGlm IChmaW5hbF9tYXNrKQ0KPiArICAgICBjYWxsID0gZ2ltcGxlX2J1aWxkX2Nh bGxfaW50ZXJuYWwgKElGTl9MRU5fTUFTS19TVE9SRSwgNiwNCj4gKyAgICAg ICAgZGF0YXJlZl9wdHIsIHB0ciwNCj4gKyAgICAgICAgZmluYWxfbGVuLCBm aW5hbF9tYXNrLA0KPiArICAgICAgICB2ZWNfb3BybmQsIGJpYXMpOw0KPiAr ICAgZWxzZQ0KPiArICAgICBjYWxsDQo+ICsgICAgICAgPSBnaW1wbGVfYnVp bGRfY2FsbF9pbnRlcm5hbCAoSUZOX0xFTl9TVE9SRSwgNSwNCj4gKyAgICAg ZGF0YXJlZl9wdHIsIHB0ciwgZmluYWxfbGVuLA0KPiArICAgICB2ZWNfb3By bmQsIGJpYXMpOw0KPiArICAgZ2ltcGxlX2NhbGxfc2V0X25vdGhyb3cgKGNh bGwsIHRydWUpOw0KPiArICAgdmVjdF9maW5pc2hfc3RtdF9nZW5lcmF0aW9u ICh2aW5mbywgc3RtdF9pbmZvLCBjYWxsLCBnc2kpOw0KPiArICAgbmV3X3N0 bXQgPSBjYWxsOw0KPiArIH0NCj4gKyAgICAgICBlbHNlIGlmIChmaW5hbF9t YXNrKQ0KPiArIHsNCj4gICAgZ2NhbGwgKmNhbGwNCj4gLSAgICAgPSBnaW1w bGVfYnVpbGRfY2FsbF9pbnRlcm5hbCAoSUZOX0xFTl9TVE9SRSwgNSwgZGF0 YXJlZl9wdHIsDQo+IC0gICBwdHIsIGZpbmFsX2xlbiwgdmVjX29wcm5kLA0K PiAtICAgYmlhcyk7DQo+ICsgICAgID0gZ2ltcGxlX2J1aWxkX2NhbGxfaW50 ZXJuYWwgKElGTl9NQVNLX1NUT1JFLCA0LA0KPiArICAgZGF0YXJlZl9wdHIs IHB0ciwNCj4gKyAgIGZpbmFsX21hc2ssIHZlY19vcHJuZCk7DQo+ICAgIGdp bXBsZV9jYWxsX3NldF9ub3Rocm93IChjYWxsLCB0cnVlKTsNCj4gICAgdmVj dF9maW5pc2hfc3RtdF9nZW5lcmF0aW9uICh2aW5mbywgc3RtdF9pbmZvLCBj YWxsLCBnc2kpOw0KPiAgICBuZXdfc3RtdCA9IGNhbGw7DQo+IEBAIC0xMDMw NCw0NSArMTAzODksNjYgQEAgdmVjdG9yaXphYmxlX2xvYWQgKHZlY19pbmZv ICp2aW5mbywNCj4gICAgICAgIGFsaWduLCBtaXNhbGlnbik7DQo+ICAgICAg YWxpZ24gPSBsZWFzdF9iaXRfaHdpIChtaXNhbGlnbiB8IGFsaWduKTsNCj4g IA0KPiAtICAgICBpZiAoZmluYWxfbWFzaykNCj4gLSAgICAgICB7DQo+IC0g dHJlZSBwdHIgPSBidWlsZF9pbnRfY3N0IChyZWZfdHlwZSwNCj4gLSAgIGFs aWduICogQklUU19QRVJfVU5JVCk7DQo+IC0gZ2NhbGwgKmNhbGwNCj4gLSAg ID0gZ2ltcGxlX2J1aWxkX2NhbGxfaW50ZXJuYWwgKElGTl9NQVNLX0xPQUQs IDMsDQo+IC0gZGF0YXJlZl9wdHIsIHB0ciwNCj4gLSBmaW5hbF9tYXNrKTsN Cj4gLSBnaW1wbGVfY2FsbF9zZXRfbm90aHJvdyAoY2FsbCwgdHJ1ZSk7DQo+ IC0gbmV3X3N0bXQgPSBjYWxsOw0KPiAtIGRhdGFfcmVmID0gTlVMTF9UUkVF Ow0KPiAtICAgICAgIH0NCj4gLSAgICAgZWxzZSBpZiAobG9vcF9sZW5zICYm IG1lbW9yeV9hY2Nlc3NfdHlwZSAhPSBWTUFUX0lOVkFSSUFOVCkNCj4gKyAg ICAgaW50ZXJuYWxfZm4gcGFydGlhbF9pZm4NCj4gKyAgICAgICA9IHBhcnRp YWxfb3JfbWFza192ZWN0b3JfaWZuIChUWVBFX01PREUgKHZlY3R5cGUpLCB0 cnVlKTsNCj4gKyAgICAgdHJlZSBmaW5hbF9sZW4gPSBOVUxMX1RSRUU7DQo+ ICsgICAgIG1hY2hpbmVfbW9kZSB2bW9kZSA9IFRZUEVfTU9ERSAodmVjdHlw ZSk7DQo+ICsgICAgIG1hY2hpbmVfbW9kZSBuZXdfdm1vZGU7DQo+ICsNCj4g KyAgICAgLyogUHJvZHVjZSAnbGVuJyBhcmd1bWVudC4gICovDQo+ICsgICAg IGlmIChsb29wX2xlbnMpDQo+ICAgICAgICB7DQo+IC0gbWFjaGluZV9tb2Rl IHZtb2RlID0gVFlQRV9NT0RFICh2ZWN0eXBlKTsNCj4gIG9wdF9tYWNoaW5l X21vZGUgbmV3X292bW9kZQ0KPiAtICAgPSBnZXRfbGVuX2xvYWRfc3RvcmVf bW9kZSAodm1vZGUsIHRydWUpOw0KPiAtIG1hY2hpbmVfbW9kZSBuZXdfdm1v ZGUgPSBuZXdfb3Ztb2RlLnJlcXVpcmUgKCk7DQo+ICsgICA9IGdldF9sZW5f bG9hZF9zdG9yZV9tb2RlICh2bW9kZSwgZmFsc2UpOw0KPiArIG5ld192bW9k ZSA9IG5ld19vdm1vZGUucmVxdWlyZSAoKTsNCj4gIHVuc2lnbmVkIGZhY3Rv ciA9IChuZXdfb3Ztb2RlID09IHZtb2RlKQ0KPiAgICAgID8gMQ0KPiAgICAg IDogR0VUX01PREVfVU5JVF9TSVpFICh2bW9kZSk7DQo+IC0gdHJlZSBmaW5h bF9sZW4NCj4gKyBmaW5hbF9sZW4NCj4gICAgPSB2ZWN0X2dldF9sb29wX2xl biAobG9vcF92aW5mbywgZ3NpLCBsb29wX2xlbnMsDQo+ICAgICAgICAgdmVj X251bSAqIG5jb3BpZXMsIHZlY3R5cGUsDQo+ICAgICAgICAgdmVjX251bSAq IGogKyBpLCBmYWN0b3IpOw0KPiAtIHRyZWUgcHRyDQo+IC0gICA9IGJ1aWxk X2ludF9jc3QgKHJlZl90eXBlLCBhbGlnbiAqIEJJVFNfUEVSX1VOSVQpOw0K PiArICAgICAgIH0NCj4gKyAgICAgaWYgKHBhcnRpYWxfaWZuID09IElGTl9M RU5fTUFTS19MT0FEKQ0KPiArICAgICAgIHsNCj4gKyBpZiAoIWZpbmFsX2xl bikNCj4gKyAgIHsNCj4gKyAgICAgLyogUGFzcyBWRiB2YWx1ZSB0byAnbGVu JyBhcmd1bWVudCBvZiBMRU5fTUFTS19TVE9SRQ0KPiArICAgICAgKiBpZiBM T09QX0xFTlMgaXMgaW52YWxpZC4gICovDQo+ICsgICAgIHRyZWUgaXZfdHlw ZQ0KPiArICAgICAgID0gTE9PUF9WSU5GT19SR1JPVVBfSVZfVFlQRSAobG9v cF92aW5mbyk7DQo+ICsgICAgIGZpbmFsX2xlbg0KPiArICAgICAgID0gYnVp bGRfaW50X2NzdCAoaXZfdHlwZSwNCj4gKyAgICAgICAgVFlQRV9WRUNUT1Jf U1VCUEFSVFMgKHZlY3R5cGUpKTsNCj4gKyAgIH0NCj4gKyBpZiAoIWZpbmFs X21hc2spDQo+ICsgICB7DQo+ICsgICAgIC8qIFBhc3MgYWxsIG9uZXMgdmFs dWUgdG8gJ21hc2snIGFyZ3VtZW50IG9mDQo+ICsgICAgICAqIExFTl9NQVNL X1NUT1JFIGlmIGZpbmFsX21hc2sgaXMgaW52YWxpZC4gICovDQo+ICsgICAg IGZpbmFsX21hc2sgPSBnZXRfYWxsX29uZXNfbWFzayAodm1vZGUpOw0KPiAr ICAgfQ0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICB0cmVlIHB0ciA9IGJ1 aWxkX2ludF9jc3QgKHJlZl90eXBlLCBhbGlnbiAqIEJJVFNfUEVSX1VOSVQp Ow0KPiArICAgICBpZiAoZmluYWxfbGVuICYmIG1lbW9yeV9hY2Nlc3NfdHlw ZSAhPSBWTUFUX0lOVkFSSUFOVCkNCj4gKyAgICAgICB7DQo+ICsgZ2NhbGwg KmNhbGw7DQo+ICANCj4gIHRyZWUgcWlfdHlwZSA9IHVuc2lnbmVkX2ludFFJ X3R5cGVfbm9kZTsNCj4gIA0KPiAtIHNpZ25lZCBjaGFyIGJpYXN2YWwgPQ0K PiAtICAgTE9PUF9WSU5GT19QQVJUSUFMX0xPQURfU1RPUkVfQklBUyAobG9v cF92aW5mbyk7DQo+ICsgc2lnbmVkIGNoYXIgYmlhc3ZhbA0KPiArICAgPSBM T09QX1ZJTkZPX1BBUlRJQUxfTE9BRF9TVE9SRV9CSUFTIChsb29wX3ZpbmZv KTsNCj4gIA0KPiAgdHJlZSBiaWFzID0gYnVpbGRfaW50X2NzdCAoaW50UUlf dHlwZV9ub2RlLCBiaWFzdmFsKTsNCj4gLQ0KPiAtIGdjYWxsICpjYWxsDQo+ IC0gICA9IGdpbXBsZV9idWlsZF9jYWxsX2ludGVybmFsIChJRk5fTEVOX0xP QUQsIDQsDQo+IC0gZGF0YXJlZl9wdHIsIHB0ciwNCj4gLSBmaW5hbF9sZW4s IGJpYXMpOw0KPiArIGlmIChmaW5hbF9tYXNrKQ0KPiArICAgY2FsbCA9IGdp bXBsZV9idWlsZF9jYWxsX2ludGVybmFsIChJRk5fTEVOX01BU0tfTE9BRCwN Cj4gKyAgICAgIDUsIGRhdGFyZWZfcHRyLA0KPiArICAgICAgcHRyLCBmaW5h bF9sZW4sDQo+ICsgICAgICBmaW5hbF9tYXNrLCBiaWFzKTsNCj4gKyBlbHNl DQo+ICsgICBjYWxsID0gZ2ltcGxlX2J1aWxkX2NhbGxfaW50ZXJuYWwgKElG Tl9MRU5fTE9BRCwgNCwNCj4gKyAgICAgIGRhdGFyZWZfcHRyLCBwdHIsDQo+ ICsgICAgICBmaW5hbF9sZW4sIGJpYXMpOw0KPiAgZ2ltcGxlX2NhbGxfc2V0 X25vdGhyb3cgKGNhbGwsIHRydWUpOw0KPiAgbmV3X3N0bXQgPSBjYWxsOw0K PiAgZGF0YV9yZWYgPSBOVUxMX1RSRUU7DQo+IEBAIC0xMDM2Myw2ICsxMDQ2 OSwxNiBAQCB2ZWN0b3JpemFibGVfbG9hZCAodmVjX2luZm8gKnZpbmZvLA0K PiAgICAgICBWSUVXX0NPTlZFUlRfRVhQUiwgb3ApOw0KPiAgICB9DQo+ICAg ICAgICB9DQo+ICsgICAgIGVsc2UgaWYgKGZpbmFsX21hc2spDQo+ICsgICAg ICAgew0KPiArIGdjYWxsICpjYWxsDQo+ICsgICA9IGdpbXBsZV9idWlsZF9j YWxsX2ludGVybmFsIChJRk5fTUFTS19MT0FELCAzLA0KPiArIGRhdGFyZWZf cHRyLCBwdHIsDQo+ICsgZmluYWxfbWFzayk7DQo+ICsgZ2ltcGxlX2NhbGxf c2V0X25vdGhyb3cgKGNhbGwsIHRydWUpOw0KPiArIG5ld19zdG10ID0gY2Fs bDsNCj4gKyBkYXRhX3JlZiA9IE5VTExfVFJFRTsNCj4gKyAgICAgICB9DQo+ ICAgICAgZWxzZQ0KPiAgICAgICAgew0KPiAgdHJlZSBsdHlwZSA9IHZlY3R5 cGU7DQo+IA0KIA0KLS0gDQpSaWNoYXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1 c2UuZGU+DQpTVVNFIFNvZnR3YXJlIFNvbHV0aW9ucyBHZXJtYW55IEdtYkgs IEZyYW5rZW5zdHJhc3NlIDE0NiwgOTA0NjEgTnVlcm5iZXJnLA0KR2VybWFu eTsgR0Y6IEl2byBUb3RldiwgQW5kcmV3IE15ZXJzLCBBbmRyZXcgTWNEb25h bGQsIEJvdWRpZW4gTW9lcm1hbjsNCkhSQiAzNjgwOSAoQUcgTnVlcm5iZXJn KQ0KIA0K ------=_001_NextPart141553182502_=------