From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 114239 invoked by alias); 12 Dec 2018 18:12:56 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 113459 invoked by uid 89); 12 Dec 2018 18:12:55 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-24.2 required=5.0 tests=BAYES_50,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,MIME_BASE64_BLANKS,SPF_PASS autolearn=ham version=3.3.2 spammy=sk:martin., sk:martin, Origin, Moreover X-HELO: mail1.med.uni-goettingen.de Received: from mail1.med.uni-goettingen.de (HELO mail1.med.uni-goettingen.de) (134.76.103.230) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 12 Dec 2018 18:12:47 +0000 Received: from umg-exc-3.ads.local.med.uni-goettingen.de ([10.76.100.70]:62149) by mail1.med.uni-goettingen.de with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from ) id 1gX8zz-0008KE-1H; Wed, 12 Dec 2018 19:12:43 +0100 Received: from UMG-EXCARCHIV-1.ads.local.med.uni-goettingen.de (10.76.100.18) by umg-exc-3.ads.local.med.uni-goettingen.de (10.76.100.70) with Microsoft SMTP Server (TLS) id 14.3.408.0; Wed, 12 Dec 2018 19:12:43 +0100 Received: from UMG-EXC-1.ads.local.med.uni-goettingen.de ([fe80::c97f:60fd:6a2d:e4b9]) by umg-excarchiv-1.ads.local.med.uni-goettingen.de ([fe80::e077:5c8d:4a85:75fb%22]) with mapi id 14.03.0415.000; Wed, 12 Dec 2018 19:12:42 +0100 From: "Uecker, Martin" To: "law@redhat.com" , "joseph@codesourcery.com" CC: "gcc-patches@gcc.gnu.org" , "ebotcazou@adacore.com" Subject: [PATCH v4][C][ADA] use function descriptors instead of trampolines in C Date: Wed, 12 Dec 2018 18:12:00 -0000 Message-ID: <1544638361.17067.3.camel@med.uni-goettingen.de> References: <1534005653.22677.9.camel@med.uni-goettingen.de> <1534609978.14596.2.camel@med.uni-goettingen.de> <1534774021.5798.6.camel@med.uni-goettingen.de> <1534832264.15600.1.camel@med.uni-goettingen.de> <1534918133.4891.5.camel@med.uni-goettingen.de> <1541364511.30044.4.camel@med.uni-goettingen.de> In-Reply-To: Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 Return-Path: Martin.Uecker@med.uni-goettingen.de X-SW-Source: 2018-12/txt/msg00853.txt.bz2 DQpIaSBKZWZmLA0KDQp0aGFuayB5b3UuIEkgZml4ZWQgYWxsIHRoZSBtaW5v ciBpc3N1ZXMsIGJ1dCBzZWUgYmVsb3cuDQoNCg0KQW0gTW9udGFnLCBkZW4g MDMuMTIuMjAxOCwgMTQ6NTYgLTA3MDAgc2NocmllYiBKZWZmIExhdzoNCj4g T24gMTEvNC8xOCAxOjQ4IFBNLCBVZWNrZXIsIE1hcnRpbiB3cm90ZToNCj4g PiBIaSBKb3NlcGgsDQo+ID4gDQo+ID4gaGVyZSBpcyBhIG5ldyB2ZXJzaW9u IG9mIHRoaXMgcGF0Y2ggd2hpY2ggYWRkcyBhIHdhcm5pbmcNCj4gPiBmb3Ig dGFyZ2V0cyB3aGljaCBkbyBub3Qgc3VwcG9ydCAtZm5vLXRyYW1wb2xpbmVz wqDCoGFuZA0KPiA+IG9ubHkgcnVucyB0aGUgdGVzdCBjYXNlIG9uIGFyY2hp dGVjdHVyZXMgd2hlcmUgdGhpcyBpcw0KPiA+IHN1cHBvcnRlZC4gSXQgc2Vl bXMgdGhhdCBkb2N1bWVudGF0aW9uIGZvciB0aGlzIGdlbmVyYWwNCj4gPiBm ZWF0dXJlIGhhcyBpbXByb3ZlZCBpbiB0aGUgbWVhbnRpbWUgc28gSSBvbmx5 IG1lbnRpb24NCj4gPiBDIGFzIHN1cHBvcnRlZC4NCj4gPiANCj4gPiANCj4g PiBCZXN0LA0KPiA+IE1hcnRpbg0KPiA+IA0KPiA+IGRpZmYgLS1naXQgYS9n Y2MvYWRhL2djYy1pbnRlcmZhY2UvdHJhbnMuYyBiL2djYy9hZGEvZ2NjLWlu dGVyZmFjZS90cmFucy5jDQo+ID4gaW5kZXggY2UyZDQzZjk4OWUuLmI3OWYy MzczYzYzIDEwMDY0NA0KPiA+IC0tLSBhL2djYy9hZGEvZ2NjLWludGVyZmFj ZS90cmFucy5jDQo+ID4gKysrIGIvZ2NjL2FkYS9nY2MtaW50ZXJmYWNlL3Ry YW5zLmMNCj4gPiBAQCAtMTc1Myw3ICsxNzUzLDggQEAgQXR0cmlidXRlX3Rv X2dudSAoTm9kZV9JZCBnbmF0X25vZGUsIHRyZWUgKmdudV9yZXN1bHRfdHlw ZV9wLCBpbnQNCj4gPiBhdHRyaWJ1dGUpDQo+ID4gwqAJwqDCoMKgwqDCoMKg aWYgKChhdHRyaWJ1dGUgPT0gQXR0cl9BY2Nlc3MNCj4gPiDCoAkJwqDCoMKg fHwgYXR0cmlidXRlID09IEF0dHJfVW5yZXN0cmljdGVkX0FjY2VzcykNCj4g PiDCoAkJwqDCoCYmIHRhcmdldG0uY2FsbHMuY3VzdG9tX2Z1bmN0aW9uX2Rl c2NyaXB0b3JzID4gMA0KPiA+IC0JCcKgwqAmJiBDYW5fVXNlX0ludGVybmFs X1JlcCAoRXR5cGUgKGduYXRfbm9kZSkpKQ0KPiA+ICsJCcKgwqAmJiBDYW5f VXNlX0ludGVybmFsX1JlcCAoRXR5cGUgKGduYXRfbm9kZSkpDQo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCYmIChmbGFnX3Ry YW1wb2xpbmVzICE9IDEpKQ0KPiA+IMKgCQlGVU5DX0FERFJfQllfREVTQ1JJ UFRPUiAoZ251X2V4cHIpID0gMTsNCj4gDQo+IFlvdSd2ZSBnb3QgYW4gZXh0 cmFuZW91cyBzZXQgb2YgcGFyZW50aGVzaXMgYXJvdW5kIHlvdXIgZmxhZ190 cmFtcG9saW5lcw0KPiBjaGVjay7CoMKgUGxlYXNlIHJlbW92ZSB0aGVtLg0K PiANCj4gDQo+ID4gwqANCj4gPiDCoAnCoMKgwqDCoMKgwqAvKiBPdGhlcndp c2UsIHdlIG5lZWQgdG8gY2hlY2sgdGhhdCB3ZSBhcmUgbm90IHZpb2xhdGlu ZyB0aGUNCj4gPiBAQCAtNDMzMCw3ICs0MzMxLDggQEAgQ2FsbF90b19nbnUg KE5vZGVfSWQgZ25hdF9ub2RlLCB0cmVlICpnbnVfcmVzdWx0X3R5cGVfcCwg dHJlZSBnbnVfdGFyZ2V0LA0KPiA+IMKgwqDCoMKgwqDCoMKgLyogSWYgdGhl IGFjY2VzcyB0eXBlIGRvZXNuJ3QgcmVxdWlyZSBmb3JlaWduLWNvbXBhdGli bGUgcmVwcmVzZW50YXRpb24sDQo+ID4gwqAJwqBiZSBwcmVwYXJlZCBmb3Ig ZGVzY3JpcHRvcnMuwqDCoCovDQo+ID4gwqDCoMKgwqDCoMKgwqBpZiAodGFy Z2V0bS5jYWxscy5jdXN0b21fZnVuY3Rpb25fZGVzY3JpcHRvcnMgPiAwDQo+ ID4gLQnCoMKgJiYgQ2FuX1VzZV9JbnRlcm5hbF9SZXAgKEV0eXBlIChQcmVm aXggKE5hbWUgKGduYXRfbm9kZSkpKSkpDQo+ID4gKwnCoMKgJiYgQ2FuX1Vz ZV9JbnRlcm5hbF9SZXAgKEV0eXBlIChQcmVmaXggKE5hbWUgKGduYXRfbm9k ZSkpKSkNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAmJiAoZmxhZ190cmFt cG9saW5lcyAhPSAxKSkNCj4gDQo+IFNpbWlsYXJseSBoZXJlLg0KPiANCj4g DQo+ID4gZGlmZiAtLWdpdCBhL2djYy9jL2Mtb2JqYy1jb21tb24uaCBiL2dj Yy9jL2Mtb2JqYy1jb21tb24uaA0KPiA+IGluZGV4IDc4ZTc2OGMyMzY2Li5l ZjAzOTU2MGViOSAxMDA2NDQNCj4gPiAtLS0gYS9nY2MvYy9jLW9iamMtY29t bW9uLmgNCj4gPiArKysgYi9nY2MvYy9jLW9iamMtY29tbW9uLmgNCj4gPiBA QCAtMTEwLDQgKzExMCw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZp bGUgQ09QWUlORzMuwqDCoElmIG5vdCBzZWUNCj4gPiDCoA0KPiA+IMKgI3Vu ZGVmIExBTkdfSE9PS1NfVFJFRV9JTkxJTklOR19WQVJfTU9EX1RZUEVfUA0K PiA+IMKgI2RlZmluZSBMQU5HX0hPT0tTX1RSRUVfSU5MSU5JTkdfVkFSX01P RF9UWVBFX1AgY192bGFfdW5zcGVjX3ANCj4gPiArDQo+ID4gKyN1bmRlZiBM QU5HX0hPT0tTX0NVU1RPTV9GVU5DVElPTl9ERVNDUklQVE9SUw0KPiA+ICsj ZGVmaW5lIExBTkdfSE9PS1NfQ1VTVE9NX0ZVTkNUSU9OX0RFU0NSSVBUT1JT IHRydWUNCj4gPiDCoCNlbmRpZiAvKiBHQ0NfQ19PQkpDX0NPTU1PTiAqLw0K PiANCj4gSSB3b25kZXIgaWYgd2UgZXZlbiBuZWVkIHRoZSBsYW5nIGhvb2sg YW55bW9yZS7CoMKgSVNUTSB0aGF0IGEgZnJvbnQtZW5kDQo+IHRoYXQgd2Fu dHMgdG8gdXNlIHRoZSBmdW5jdGlvbiBkZXNjcmlwdG9ycyBjYW4ganVzdCBz ZXQNCj4gRlVOQ19BRERSX0JZX0RFU0NSSVBUT1IgYW5kIHdlJ2QgdXNlIHRo ZSBmdW5jdGlvbiBkZXNjcmlwdG9yLCBlbHNlIHdlJ2xsDQo+IHVzZSB0aGUg dHJhbXBvbGluZS7CoMKgVGhvdWdodHM/DQoNClRoZSBsYW5nIGhvb2sgYWxz byBhZmZlY3RzIHRoZSBtaW5pbXVtIGFsaWdubWVudCBmb3IgZnVuY3Rpb24N CnBvaW50ZXJzIHZpYSB0aGUgRlVOQ1RJT05fQUxJR05NRU5UIG1hY3JvIChn Y2MvZGVmYXVsdC5oKS4gVGhpcyBkb2VzDQpub3QgYXBwZWFyIHRvIGNoYW5n ZSB0aGUgZGVmYXVsdCBhbGlnbm1lbnQgb24gYW55IGFyY2hpdGVjdHVyZSwg YnV0DQppdCBjYXVzZXMgYSBmYWlsdXJlIGluIGkzODYvZ2NjLnRhcmdldC9p Mzg2L2F0dHItYWxpZ25lZC5jIHdoZW4NCnJlcXVlc3RpbmcgYSBzbWFsbGVy IGFsaWdubWVudCB3aGljaCBpcyB0aGVuIHNpbGVudGx5IGlnbm9yZWQuDQoN CkkgYW0gbm90IHN1cmUgd2hhdCB0aGUgYmVzdCBhcHByb2FjaCBpcywgYnV0 IG15IHByZWZlcmVuY2UNCndvdWxkIGJlIHRvIHJlbW92ZSB0aGUgbGFuZyBo b29rIGFuZCB0aGUgRlVOQ1RJT05fQUxJR05NRU5UDQpsb2dpYyB3aGljaCB3 aWxsIGFsc28gZml4IHRoZSB0ZXN0IGNhc2UgKHRoZSByZXF1ZXN0ZWQNCmFs aWdubWVudCB3aWxsIGJlIGFwcGxpZWQpLg0KDQpJIHdvdWxkIHRoZW4gaW5z dGVhZCBhZGQgYSB3YXJuaW5nIChvciBlcnJvcj8pIHdoaWNoIHRyaWdnZXJz DQpvbmx5IHdpdGggLWZuby10cmFtcG9saW5lcyBpZiB0aGUgdXNlciByZXF1 ZXN0cyBhbiBhbGlnbm1lbnQNCndoaWNoIGlzIHRvbyBzbWFsbCBmb3IgdGhp cyBtZWNoYW5pc20gdG8gd29yay4NCg0KRG9lcyB0aGlzIHNvdW5kIHJlYXNv bmFibGU/DQoNCkJlc3QsDQpNYXJ0aW4NCg0KDQo+ID4gZGlmZiAtLWdpdCBh L2djYy9jL2MtdHlwZWNrLmMgYi9nY2MvYy9jLXR5cGVjay5jDQo+ID4gaW5k ZXggOWQwOWI4ZDY1ZmQuLmFmYWU5ZGU0MWU3IDEwMDY0NA0KPiA+IC0tLSBh L2djYy9jL2MtdHlwZWNrLmMNCj4gPiArKysgYi9nY2MvYy9jLXR5cGVjay5j DQo+ID4gQEAgLTE5MTIsNyArMTkxMiwxMyBAQCBmdW5jdGlvbl90b19wb2lu dGVyX2NvbnZlcnNpb24gKGxvY2F0aW9uX3QgbG9jLCB0cmVlIGV4cCkNCj4g PiDCoMKgwqBpZiAoVFJFRV9OT19XQVJOSU5HIChvcmlnX2V4cCkpDQo+ID4g wqDCoMKgwqDCoFRSRUVfTk9fV0FSTklORyAoZXhwKSA9IDE7DQo+ID4gwqAN Cj4gPiAtwqDCoHJldHVybiBidWlsZF91bmFyeV9vcCAobG9jLCBBRERSX0VY UFIsIGV4cCwgZmFsc2UpOw0KPiA+ICvCoMKgdHJlZSByID0gYnVpbGRfdW5h cnlfb3AgKGxvYywgQUREUl9FWFBSLCBleHAsIGZhbHNlKTsNCj4gPiArDQo+ ID4gK8KgwqBpZiAoKFRSRUVfQ09ERShyKSA9PSBBRERSX0VYUFIpDQo+ID4g K8KgwqDCoMKgwqDCoCYmIChmbGFnX3RyYW1wb2xpbmVzID09IDApKQ0KPiA+ ICvCoMKgwqDCoMKgRlVOQ19BRERSX0JZX0RFU0NSSVBUT1IgKHIpID0gMTsN Cj4gPiArDQo+ID4gK8KgwqByZXR1cm4gcjsNCj4gDQo+IEV4dHJhbmVvdXMg cGFyZW5zIGhlcmUgdG9vLg0KPiANCj4gPiDCoH0NCj4gPiDCoA0KPiA+IMKg LyogTWFyayBFWFAgYXMgcmVhZCwgbm90IGp1c3Qgc2V0LCBmb3Igc2V0IGJ1 dCBub3QgdXNlZCAtV3VudXNlZA0KPiA+IEBAIC0zMTM0LDYgKzMxNDAsMTEg QEAgYnVpbGRfZnVuY3Rpb25fY2FsbF92ZWMgKGxvY2F0aW9uX3QgbG9jLCB2 ZWM8bG9jYXRpb25fdD4gYXJnX2xvYywNCj4gPiDCoMKgwqBlbHNlDQo+ID4g wqDCoMKgwqDCoHJlc3VsdCA9IGJ1aWxkX2NhbGxfYXJyYXlfbG9jIChsb2Ms IFRSRUVfVFlQRSAoZm50eXBlKSwNCj4gPiDCoAkJCQnCoMKgwqBmdW5jdGlv biwgbmFyZ3MsIGFyZ2FycmF5KTsNCj4gPiArDQo+ID4gK8KgwqBpZiAoKFRS RUVfQ09ERSAocmVzdWx0KSA9PSBDQUxMX0VYUFIpDQo+ID4gK8KgwqDCoMKg wqDCoCYmIChmbGFnX3RyYW1wb2xpbmVzID09IDApKQ0KPiA+ICvCoMKgwqDC oENBTExfRVhQUl9CWV9ERVNDUklQVE9SIChyZXN1bHQpID0gMTsNCj4gPiAr DQo+IA0KPiBBbmQgaGVyZSB0b28uDQo+IA0KPiANCj4gPiBkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9saWIvdGFyZ2V0LXN1cHBvcnRzLmV4cCBiL2dj Yy90ZXN0c3VpdGUvbGliL3RhcmdldC1zdXBwb3J0cy5leHANCj4gPiBpbmRl eCBmZDc0YzA0ZDA5Mi4uYTM0ZTk2NmI3YzQgMTAwNjQ0DQo+ID4gLS0tIGEv Z2NjL3Rlc3RzdWl0ZS9saWIvdGFyZ2V0LXN1cHBvcnRzLmV4cA0KPiA+ICsr KyBiL2djYy90ZXN0c3VpdGUvbGliL3RhcmdldC1zdXBwb3J0cy5leHANCj4g PiBAQCAtOTE2LDYgKzkxNiwxNCBAQCBwcm9jIGNoZWNrX2VmZmVjdGl2ZV90 YXJnZXRfc2NoZWR1bGluZyB7fSB7DQo+ID4gwqDCoMKgwqDCoH0gIi1mc2No ZWR1bGUtaW5zbnMiXQ0KPiA+IMKgfQ0KPiA+IMKgDQo+ID4gKyMgUmV0dXJu IDEgaWYgaXQgaXMgcG9zc2libGUgdG8gdXNlIGZ1bmN0aW9uIGRlc2NyaXB0 b3JzIGluc3RlYWQgb2YgdHJhbXBvbGluZXMsIDAgb3RoZXJ3aXNlLg0KPiA+ ICsNCj4gPiArcHJvYyBjaGVja19lZmZlY3RpdmVfdGFyZ2V0X25vdHJhbXBv bGluZXMge30gew0KPiA+ICvCoMKgwqDCoHJldHVybiBbY2hlY2tfbm9fY29t cGlsZXJfbWVzc2FnZXMgbm90cmFtcG9saW5lcyBhc3NlbWJseSB7DQo+ID4g K8KgwqDCoMKgwqDCoMKgwqB2b2lkIGZvbyAodm9pZCkgeyB9DQo+ID4gK8Kg wqDCoMKgfSAiLWZuby10cmFtcG9saW5lcyJdDQo+ID4gK30NCj4gPiArDQo+ IA0KPiBJIHRoaW5rIHRoaXMgbmVlZHMgZG9jdW1lbnRpbmcgaW4gc291cmNl YnVpbGQudGV4aS7CoMKgwqBMb29rIGZvcg0KPiAiRWZmZWN0aXZlLXRhcmdl dCIgdG8gZmluZCB0aGUgYXBwcm9wcmlhdGUgc2VjdGlvbi4NCj4gDQo+IA0K PiBKZWZmDQoNCg0KZGlmZiAtLWdpdCBhL2djYy9DaGFuZ2VMb2cgYi9nY2Mv Q2hhbmdlTG9nDQppbmRleCAzYzVlM2VkNDMyOS4uMTcwMmE5Y2QzY2QgMTAw NjQ0DQotLS0gYS9nY2MvQ2hhbmdlTG9nDQorKysgYi9nY2MvQ2hhbmdlTG9n DQpAQCAtMSwzICsxLDE1IEBADQorMjAxOC0xMi0xMMKgwqBNYXJ0aW4gVWVj a2VywqDCoDxtYXJ0aW4udWVja2VyQG1lZC51bmktZ29ldHRpbmdlbi5kZT4N CisNCisJKiBjb21tb24ub3B0IChmbGFnX3RyYW1wb2xpbmVzKTogQ2hhbmdl IGRlZmF1bHQuDQorCSogY2FsbHMuYyAocHJlcGFyZV9jYWxsX2FkZHJlc3Mp OiBSZW1vdmUgY2hlY2sgZm9yDQorCWZsYWdfdHJhbXBvbGluZXMuwqDCoERl Y2lzaW9uIGlzIG5vdyBtYWRlIGluIEZFcy4NCisJKiB0cmVlLW5lc3RlZC5j IChjb252ZXJ0X3RyYW1wX3JlZmVyZW5jZV9vcCk6IExpa2V3aXNlLg0KKwkq IHRvcGxldi5jIChwcm9jZXNzX29wdGlvbnMpOiBBZGQgd2FybmluZyBmb3Ig LWZuby10cmFtcG9saW5lcyBvbg0KKwl1bnN1cHBvcnRlZCB0YXJnZXRzLg0K KwkqIGRvYy9pbnZva2UudGV4aSAoLWZuby10cmFtcG9saW5lcyk6IERvY3Vt ZW50IHN1cHBvcnQgZm9yIEMuDQorCSogZG9jL3NvdXJjZWJ1aWxkLnRleGkg KHRhcmdldCBhdHRyaWJ1dGVzKTogRG9jdW1lbnQgbmV3DQorCSJub3RyYW1w b2xpbmVzIiBlZmZlY3RpdmUgdGFyZ2V0IGtleXdvcmQuDQorDQrCoDIwMTgt MTItMTDCoMKgVXJvcyBCaXpqYWvCoMKgPHViaXpqYWtAZ21haWwuY29tPg0K wqANCsKgCVBSIHRhcmdldC84ODQxOA0KZGlmZiAtLWdpdCBhL2djYy9hZGEv Q2hhbmdlTG9nIGIvZ2NjL2FkYS9DaGFuZ2VMb2cNCmluZGV4IGI0OGM3NTdi ODE2Li5lYjE0MjM5ZGM2MiAxMDA2NDQNCi0tLSBhL2djYy9hZGEvQ2hhbmdl TG9nDQorKysgYi9nY2MvYWRhL0NoYW5nZUxvZw0KQEAgLTEsMyArMSw4IEBA DQorMjAxOC0xMi0xMMKgwqBNYXJ0aW4gVWVja2VywqDCoDxtYXJ0aW4udWVj a2VyQG1lZC51bmktZ29ldHRpbmdlbi5kZT4NCisNCisJKiBnY2MtaW50ZXJm YWNlL3RyYW5zLmMgKEF0dHJpYnV0ZV90b19nbnUpOiBBZGQgY2hlY2sgZm9y DQorCWZsYWdfdHJhbXBvbGluZXMuDQorDQrCoDIwMTgtMTItMDPCoMKgR2Fy eSBEaXNtdWtlc8KgwqA8ZGlzbXVrZXNAYWRhY29yZS5jb20+DQrCoA0KwqAJ KiBzZW1fYXV4LmFkYiAoT2JqZWN0X1R5cGVfSGFzX0NvbnN0cmFpbmVkX1Bh cnRpYWxfVmlldyk6IFJldHVybg0KZGlmZiAtLWdpdCBhL2djYy9hZGEvZ2Nj LWludGVyZmFjZS90cmFucy5jIGIvZ2NjL2FkYS9nY2MtaW50ZXJmYWNlL3Ry YW5zLmMNCmluZGV4IDRjMDY2YzAyNDIxLi45N2NlNWViZDNkMiAxMDA2NDQN Ci0tLSBhL2djYy9hZGEvZ2NjLWludGVyZmFjZS90cmFucy5jDQorKysgYi9n Y2MvYWRhL2djYy1pbnRlcmZhY2UvdHJhbnMuYw0KQEAgLTIyMzksNyArMjIz OSw4IEBAIEF0dHJpYnV0ZV90b19nbnUgKE5vZGVfSWQgZ25hdF9ub2RlLCB0 cmVlICpnbnVfcmVzdWx0X3R5cGVfcCwgaW50IGF0dHJpYnV0ZSkNCsKgCcKg wqDCoMKgwqDCoGlmICgoYXR0cmlidXRlID09IEF0dHJfQWNjZXNzDQrCoAkJ wqDCoMKgfHwgYXR0cmlidXRlID09IEF0dHJfVW5yZXN0cmljdGVkX0FjY2Vz cykNCsKgCQnCoMKgJiYgdGFyZ2V0bS5jYWxscy5jdXN0b21fZnVuY3Rpb25f ZGVzY3JpcHRvcnMgPiAwDQotCQnCoMKgJiYgQ2FuX1VzZV9JbnRlcm5hbF9S ZXAgKEV0eXBlIChnbmF0X25vZGUpKSkNCisJCcKgwqAmJiBDYW5fVXNlX0lu dGVybmFsX1JlcCAoRXR5cGUgKGduYXRfbm9kZSkpDQorwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgJiYgZmxhZ190cmFtcG9saW5lcyAh PSAxKQ0KwqAJCUZVTkNfQUREUl9CWV9ERVNDUklQVE9SIChnbnVfZXhwcikg PSAxOw0KwqANCsKgCcKgwqDCoMKgwqDCoC8qIE90aGVyd2lzZSwgd2UgbmVl ZCB0byBjaGVjayB0aGF0IHdlIGFyZSBub3QgdmlvbGF0aW5nIHRoZQ0KQEAg LTUwMjAsNyArNTAyMSw4IEBAIENhbGxfdG9fZ251IChOb2RlX0lkIGduYXRf bm9kZSwgdHJlZSAqZ251X3Jlc3VsdF90eXBlX3AsIHRyZWUgZ251X3Rhcmdl dCwNCsKgwqDCoMKgwqDCoMKgLyogSWYgdGhlIGFjY2VzcyB0eXBlIGRvZXNu J3QgcmVxdWlyZSBmb3JlaWduLWNvbXBhdGlibGUgcmVwcmVzZW50YXRpb24s DQrCoAnCoGJlIHByZXBhcmVkIGZvciBkZXNjcmlwdG9ycy7CoMKgKi8NCsKg wqDCoMKgwqDCoMKgaWYgKHRhcmdldG0uY2FsbHMuY3VzdG9tX2Z1bmN0aW9u X2Rlc2NyaXB0b3JzID4gMA0KLQnCoMKgJiYgQ2FuX1VzZV9JbnRlcm5hbF9S ZXAgKEV0eXBlIChQcmVmaXggKE5hbWUgKGduYXRfbm9kZSkpKSkpDQorCcKg wqAmJiBDYW5fVXNlX0ludGVybmFsX1JlcCAoRXR5cGUgKFByZWZpeCAoTmFt ZSAoZ25hdF9ub2RlKSkpKQ0KK8KgwqDCoMKgwqDCoMKgwqDCoMKgJiYgZmxh Z190cmFtcG9saW5lcyAhPSAxKQ0KwqAJYnlfZGVzY3JpcHRvciA9IHRydWU7 DQrCoMKgwqDCoMKgfQ0KwqDCoMKgZWxzZSBpZiAoTmtpbmQgKE5hbWUgKGdu YXRfbm9kZSkpID09IE5fQXR0cmlidXRlX1JlZmVyZW5jZSkNCmRpZmYgLS1n aXQgYS9nY2MvYy9DaGFuZ2VMb2cgYi9nY2MvYy9DaGFuZ2VMb2cNCmluZGV4 IDliYmZlNzYwNDBiLi40YjRiZDQzMjMwNCAxMDA2NDQNCi0tLSBhL2djYy9j L0NoYW5nZUxvZw0KKysrIGIvZ2NjL2MvQ2hhbmdlTG9nDQpAQCAtMSwzICsx LDEwIEBADQorMjAxOC0xMi0xMMKgwqBNYXJ0aW4gVWVja2VywqDCoDxtYXJ0 aW4udWVja2VyQG1lZC51bmktZ29ldHRpbmdlbi5kZT4NCisNCisJKiBjLW9i amMtY29tbW9uLmg6IERlZmluZSBMQU5HX0hPT0tTX0NVU1RPTV9GVU5DVElP Tl9ERVNDUklQVE9SUy4NCisJKiBjLXR5cGVjay5jIChmdW5jdGlvbl90b19w b2ludGVyX2NvbnZlcnNpb24pOiBJZiB1c2luZyBkZXNjcmlwdG9ycw0KKwlp bnN0ZWFkIG9mIHRyYW1wb2xpbmVzLCBhbWVuZCBmdW5jdGlvbiBhZGRyZXNz IHdpdGgNCisJRlVOQ19BRERSX0JZX0RFU0NSSVBUT1IgYW5kIGNhbGxzIHdp dGggQUxMX0VYUFJfQllfREVTQ1JJUFRPUi4NCisNCsKgMjAxOC0xMi0wOMKg wqBTZWdoZXIgQm9lc3Nlbmtvb2zCoMKgPHNlZ2hlckBrZXJuZWwuY3Jhc2hp bmcub3JnPg0KwqANCsKgCSogYy1wYXJzZXIgKGNfcGFyc2VyX2FzbV9zdGF0 ZW1lbnQpIFtSSURfSU5MSU5FXTogRGVsZXRlIHN0cmF5IGxpbmUNCmRpZmYg LS1naXQgYS9nY2MvYy9jLW9iamMtY29tbW9uLmggYi9nY2MvYy9jLW9iamMt Y29tbW9uLmgNCmluZGV4IDc4ZTc2OGMyMzY2Li5lZjAzOTU2MGViOSAxMDA2 NDQNCi0tLSBhL2djYy9jL2Mtb2JqYy1jb21tb24uaA0KKysrIGIvZ2NjL2Mv Yy1vYmpjLWNvbW1vbi5oDQpAQCAtMTEwLDQgKzExMCw3IEBAIGFsb25nIHdp dGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuwqDCoElmIG5vdCBzZWUN CsKgDQrCoCN1bmRlZiBMQU5HX0hPT0tTX1RSRUVfSU5MSU5JTkdfVkFSX01P RF9UWVBFX1ANCsKgI2RlZmluZSBMQU5HX0hPT0tTX1RSRUVfSU5MSU5JTkdf VkFSX01PRF9UWVBFX1AgY192bGFfdW5zcGVjX3ANCisNCisjdW5kZWYgTEFO R19IT09LU19DVVNUT01fRlVOQ1RJT05fREVTQ1JJUFRPUlMNCisjZGVmaW5l IExBTkdfSE9PS1NfQ1VTVE9NX0ZVTkNUSU9OX0RFU0NSSVBUT1JTIHRydWUN CsKgI2VuZGlmIC8qIEdDQ19DX09CSkNfQ09NTU9OICovDQpkaWZmIC0tZ2l0 IGEvZ2NjL2MvYy10eXBlY2suYyBiL2djYy9jL2MtdHlwZWNrLmMNCmluZGV4 IDFhODk3MjczMDg4Li5iMTQwMzMwNjRmMyAxMDA2NDQNCi0tLSBhL2djYy9j L2MtdHlwZWNrLmMNCisrKyBiL2djYy9jL2MtdHlwZWNrLmMNCkBAIC0xOTEz LDcgKzE5MTMsMTMgQEAgZnVuY3Rpb25fdG9fcG9pbnRlcl9jb252ZXJzaW9u IChsb2NhdGlvbl90IGxvYywgdHJlZSBleHApDQrCoMKgwqBpZiAoVFJFRV9O T19XQVJOSU5HIChvcmlnX2V4cCkpDQrCoMKgwqDCoMKgVFJFRV9OT19XQVJO SU5HIChleHApID0gMTsNCsKgDQotwqDCoHJldHVybiBidWlsZF91bmFyeV9v cCAobG9jLCBBRERSX0VYUFIsIGV4cCwgZmFsc2UpOw0KK8KgwqB0cmVlIHIg PSBidWlsZF91bmFyeV9vcCAobG9jLCBBRERSX0VYUFIsIGV4cCwgZmFsc2Up Ow0KKw0KK8KgwqBpZiAoVFJFRV9DT0RFKHIpID09IEFERFJfRVhQUg0KK8Kg wqDCoMKgwqDCoCYmIGZsYWdfdHJhbXBvbGluZXMgPT0gMCkNCivCoMKgwqDC oMKgRlVOQ19BRERSX0JZX0RFU0NSSVBUT1IgKHIpID0gMTsNCisNCivCoMKg cmV0dXJuIHI7DQrCoH0NCsKgDQrCoC8qIE1hcmsgRVhQIGFzIHJlYWQsIG5v dCBqdXN0IHNldCwgZm9yIHNldCBidXQgbm90IHVzZWQgLVd1bnVzZWQNCkBA IC0zMTM1LDYgKzMxNDEsMTEgQEAgYnVpbGRfZnVuY3Rpb25fY2FsbF92ZWMg KGxvY2F0aW9uX3QgbG9jLCB2ZWM8bG9jYXRpb25fdD4gYXJnX2xvYywNCsKg wqDCoGVsc2UNCsKgwqDCoMKgwqByZXN1bHQgPSBidWlsZF9jYWxsX2FycmF5 X2xvYyAobG9jLCBUUkVFX1RZUEUgKGZudHlwZSksDQrCoAkJCQnCoMKgwqBm dW5jdGlvbiwgbmFyZ3MsIGFyZ2FycmF5KTsNCisNCivCoMKgaWYgKFRSRUVf Q09ERSAocmVzdWx0KSA9PSBDQUxMX0VYUFINCivCoMKgwqDCoMKgwqAmJiBm bGFnX3RyYW1wb2xpbmVzID09IDApDQorwqDCoMKgwqBDQUxMX0VYUFJfQllf REVTQ1JJUFRPUiAocmVzdWx0KSA9IDE7DQorDQrCoMKgwqAvKiBJZiAtV25v bm51bGwgd2FybmluZyBoYXMgYmVlbiBkaWFnbm9zZWQsIGF2b2lkIGRpYWdu b3NpbmcgaXQgYWdhaW4NCsKgwqDCoMKgwqDCoGxhdGVyLsKgwqAqLw0KwqDC oMKgaWYgKHdhcm5lZF9wICYmIFRSRUVfQ09ERSAocmVzdWx0KSA9PSBDQUxM X0VYUFIpDQpkaWZmIC0tZ2l0IGEvZ2NjL2NhbGxzLmMgYi9nY2MvY2FsbHMu Yw0KaW5kZXggOThjNjM3N2Q3OGYuLjhiNjc0MmZkMGJhIDEwMDY0NA0KLS0t IGEvZ2NjL2NhbGxzLmMNCisrKyBiL2djYy9jYWxscy5jDQpAQCAtMjMwLDcg KzIzMCw3IEBAIHByZXBhcmVfY2FsbF9hZGRyZXNzICh0cmVlIGZuZGVjbF9v cl90eXBlLCBydHggZnVuZXhwLCBydHggc3RhdGljX2NoYWluX3ZhbHVlLA0K wqDCoMKgwqDCoHsNCsKgwqDCoMKgwqDCoMKgLyogSWYgaXQncyBhbiBpbmRp cmVjdCBjYWxsIGJ5IGRlc2NyaXB0b3IsIGdlbmVyYXRlIGNvZGUgdG8gcGVy Zm9ybQ0KwqAJwqBydW50aW1lIGlkZW50aWZpY2F0aW9uIG9mIHRoZSBwb2lu dGVyIGFuZCBsb2FkIHRoZSBkZXNjcmlwdG9yLsKgwqAqLw0KLcKgwqDCoMKg wqDCoGlmICgoZmxhZ3MgJiBFQ0ZfQllfREVTQ1JJUFRPUikgJiYgIWZsYWdf dHJhbXBvbGluZXMpDQorwqDCoMKgwqDCoMKgaWYgKGZsYWdzICYgRUNGX0JZ X0RFU0NSSVBUT1IpDQrCoAl7DQrCoAnCoMKgY29uc3QgaW50IGJpdF92YWwg PSB0YXJnZXRtLmNhbGxzLmN1c3RvbV9mdW5jdGlvbl9kZXNjcmlwdG9yczsN CsKgCcKgwqBydHggY2FsbF9sYWIgPSBnZW5fbGFiZWxfcnR4ICgpOw0KZGlm ZiAtLWdpdCBhL2djYy9jb21tb24ub3B0IGIvZ2NjL2NvbW1vbi5vcHQNCmlu ZGV4IDA4YmZmZGYyYzJkLi41ZDQ0MTMxNmFkMiAxMDA2NDQNCi0tLSBhL2dj Yy9jb21tb24ub3B0DQorKysgYi9nY2MvY29tbW9uLm9wdA0KQEAgLTI1NDYs NyArMjU0Niw3IEBAIENvbW1vbiBSZXBvcnQgVmFyKGZsYWdfdHJhY2VyKSBP cHRpbWl6YXRpb24NCsKgUGVyZm9ybSBzdXBlcmJsb2NrIGZvcm1hdGlvbiB2 aWEgdGFpbCBkdXBsaWNhdGlvbi4NCsKgDQrCoGZ0cmFtcG9saW5lcw0KLUNv bW1vbiBSZXBvcnQgVmFyKGZsYWdfdHJhbXBvbGluZXMpIEluaXQoMCkNCitD b21tb24gUmVwb3J0IFZhcihmbGFnX3RyYW1wb2xpbmVzKSBJbml0KC0xKQ0K wqBGb3IgdGFyZ2V0cyB0aGF0IG5vcm1hbGx5IG5lZWQgdHJhbXBvbGluZXMg Zm9yIG5lc3RlZCBmdW5jdGlvbnMsIGFsd2F5cw0KwqBnZW5lcmF0ZSB0aGVt IGluc3RlYWQgb2YgdXNpbmcgZGVzY3JpcHRvcnMuDQrCoA0KZGlmZiAtLWdp dCBhL2djYy9kb2MvaW52b2tlLnRleGkgYi9nY2MvZG9jL2ludm9rZS50ZXhp DQppbmRleCBkZDI2MmI2MGQ4OC4uOTJmNjNlY2MxOWQgMTAwNjQ0DQotLS0g YS9nY2MvZG9jL2ludm9rZS50ZXhpDQorKysgYi9nY2MvZG9jL2ludm9rZS50 ZXhpDQpAQCAtMTQwMzYsNyArMTQwMzYsOCBAQCBtYWRlIGV4ZWN1dGFibGUg aW4gb3JkZXIgZm9yIHRoZSBwcm9ncmFtIHRvIHdvcmsgcHJvcGVybHkuDQrC oGJhc2lzIHRvIGxldCB0aGUgY29tcGlsZXIgYXZvaWQgZ2VuZXJhdGluZyB0 aGVtLCBpZiBpdCBjb21wdXRlcyB0aGF0IHRoaXMNCsKgaXMgc2FmZSwgYW5k IHJlcGxhY2UgdGhlbSB3aXRoIGRlc2NyaXB0b3JzLsKgwqBEZXNjcmlwdG9y cyBhcmUgbWFkZSB1cCBvZiBkYXRhDQrCoG9ubHksIGJ1dCB0aGUgZ2VuZXJh dGVkIGNvZGUgbXVzdCBiZSBwcmVwYXJlZCB0byBkZWFsIHdpdGggdGhlbS7C oMKgQXMgb2YgdGhpcw0KLXdyaXRpbmcsIEBvcHRpb257LWZuby10cmFtcG9s aW5lc30gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9ubHkgZm9yIEFkYS4NCit3 cml0aW5nLCBAb3B0aW9uey1mbm8tdHJhbXBvbGluZXN9IGlzIHN1cHBvcnRl ZCBvbmx5IGZvciBDIGFuZCBBZGEgYW5kDQorZW5hYmxlZCBieSBkZWZhdWx0 IG9ubHkgZm9yIEFkYS4NCsKgDQrCoE1vcmVvdmVyLCBjb2RlIGNvbXBpbGVk IHdpdGggQG9wdGlvbnstZnRyYW1wb2xpbmVzfSBhbmQgY29kZSBjb21waWxl ZCB3aXRoDQrCoEBvcHRpb257LWZuby10cmFtcG9saW5lc30gYXJlIG5vdCBi aW5hcnkgY29tcGF0aWJsZSBpZiBuZXN0ZWQgZnVuY3Rpb25zIGFyZQ0KZGlm ZiAtLWdpdCBhL2djYy9kb2Mvc291cmNlYnVpbGQudGV4aSBiL2djYy9kb2Mv c291cmNlYnVpbGQudGV4aQ0KaW5kZXggMTIwNGE1NDZjMjkuLjg2Y2NkOGNh MTZmIDEwMDY0NA0KLS0tIGEvZ2NjL2RvYy9zb3VyY2VidWlsZC50ZXhpDQor KysgYi9nY2MvZG9jL3NvdXJjZWJ1aWxkLnRleGkNCkBAIC0yMTYyLDYgKzIx NjIsOSBAQCBUYXJnZXQgc3VwcG9ydHMgTmV3bGliLg0KwqBHQ0Mgd2FzIGNv bmZpZ3VyZWQgd2l0aCBAY29kZXstLWVuYWJsZS1uZXdsaWItbmFuby1mb3Jt YXR0ZWQtaW99LCB3aGljaCByZWR1Y2VzDQrCoHRoZSBjb2RlIHNpemUgb2Yg TmV3bGliIGZvcm1hdHRlZCBJL08gZnVuY3Rpb25zLg0KwqANCitAaXRlbSBu b3RyYW1wb2xpbmVzDQorVGFyZ2V0IHN1cHBvcnRzIG9wdGlvbiBAb3B0aW9u ey1mbm8tdHJhbXBvbGluZXN9Lg0KKw0KwqBAaXRlbSBwb3cxMA0KwqBUYXJn ZXQgcHJvdmlkZXMgQGNvZGV7cG93MTB9IGZ1bmN0aW9uLg0KwqANCmRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL0NoYW5nZUxvZyBiL2djYy90ZXN0c3Vp dGUvQ2hhbmdlTG9nDQppbmRleCAzNWI0ZmUxNGMyZS4uOGYyMDUzOTZlMjEg MTAwNjQ0DQotLS0gYS9nY2MvdGVzdHN1aXRlL0NoYW5nZUxvZw0KKysrIGIv Z2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cNCkBAIC0xLDMgKzEsOSBAQA0KKzIw MTgtMTItMTDCoMKgTWFydGluIFVlY2tlcsKgwqA8bWFydGluLnVlY2tlckBt ZWQudW5pLWdvZXR0aW5nZW4uZGU+DQorDQorCSogZ2NjLmRnL3RyYW1wb2xp bmUtMi5jOiBOZXcgdGVzdC4NCisJKiBsaWIvdGFyZ2V0LXN1cHBvcnRzLmV4 cMKgDQorCShjaGVja19lZmZlY3RpdmVfdGFyZ2V0X25vdHJhbXBvbGluZXMp OiBOZXcuDQorDQrCoDIwMTgtMTItMTDCoMKgU3RldmVuIEcuIEthcmdswqDC oDxrYXJnbEBnY2MuZ251Lm9yZz4NCsKgDQrCoAlQUiBmb3J0cmFuLzg4MjY5 DQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJhbXBvbGlu ZS0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmFtcG9saW5lLTIuYw0K bmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwLi4wNmMx Y2Y0ZjY0Nw0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvdHJhbXBvbGluZS0yLmMNCkBAIC0wLDAgKzEsMjMgQEANCisvKiB0 ZXN0IHRoYXQgbmVzdGVkIGZ1bmN0aW9uIHdvcmsgd2l0aG91dCB0cmFtcG9s aW5lcyBmb3IgLWZuby10cmFtcG9saW5lcyAqLw0KKy8qIE9yaWdpbjogTWFy dGluIFVlY2tlciA8bWFydGluLnVlY2tlckBtZWQudW5pLWdvZXR0aW5nZW4u ZGU+ICovDQorLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgbm90 cmFtcG9saW5lcyB9ICovDQorLyogeyBkZy1vcHRpb25zICItc3RkPWdudTEx IC1PMiAtV3RyYW1wb2xpbmVzIC1mbm8tdHJhbXBvbGluZXMiIH0gKi8NCisN CitzdGF0aWMgaW50IHAodm9pZCkgeyByZXR1cm4gKzE7IH0NCitzdGF0aWMg aW50IG0odm9pZCkgeyByZXR1cm4gLTE7IH3CoA0KK3N0YXRpYyBpbnQgeih2 b2lkKSB7IHJldHVybiAwOyB9DQorDQordHlwZWRlZiBpbnQgKCpmdW5wdHJf dCkodm9pZCk7DQorDQorc3RhdGljIGludCBBKGludCBrLCBmdW5wdHJfdCBh MSwgZnVucHRyX3QgYTIsIGZ1bnB0cl90IGEzLCBmdW5wdHJfdCBhNCwgZnVu cHRyX3QgYTUpDQorew0KKwlpbnQgQih2b2lkKSB7IHJldHVybiBBKC0taywg QiwgYTEsIGEyLCBhMywgYTQpOyB9DQorDQorCXJldHVybiAoayA8PSAwKSA/ IChhNCgpICsgYTUoKSkgOiAoQigpKTsNCit9DQorDQoraW50IG1haW4odm9p ZCkNCit7DQorCXJldHVybiAoMCA9PSBBKDUsIHAsIG0sIG0sIHAsIHopKSA/ IDAgOiAxOw0KK30NCisNCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2xp Yi90YXJnZXQtc3VwcG9ydHMuZXhwIGIvZ2NjL3Rlc3RzdWl0ZS9saWIvdGFy Z2V0LXN1cHBvcnRzLmV4cA0KaW5kZXggNTAyNmM1OTA2Y2QuLjQ0ZjNiMGMx ZjM3IDEwMDY0NA0KLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9saWIvdGFyZ2V0LXN1 cHBvcnRzLmV4cA0KKysrIGIvZ2NjL3Rlc3RzdWl0ZS9saWIvdGFyZ2V0LXN1 cHBvcnRzLmV4cA0KQEAgLTkyNCw2ICs5MjQsMTQgQEAgcHJvYyBjaGVja19l ZmZlY3RpdmVfdGFyZ2V0X3NjaGVkdWxpbmcge30gew0KwqDCoMKgwqDCoH0g Ii1mc2NoZWR1bGUtaW5zbnMiXQ0KwqB9DQrCoA0KKyMgUmV0dXJuIDEgaWYg aXQgaXMgcG9zc2libGUgdG8gdXNlIGZ1bmN0aW9uIGRlc2NyaXB0b3JzIGlu c3RlYWQgb2YgdHJhbXBvbGluZXMsIDAgb3RoZXJ3aXNlLg0KKw0KK3Byb2Mg Y2hlY2tfZWZmZWN0aXZlX3RhcmdldF9ub3RyYW1wb2xpbmVzIHt9IHsNCivC oMKgwqDCoHJldHVybiBbY2hlY2tfbm9fY29tcGlsZXJfbWVzc2FnZXMgbm90 cmFtcG9saW5lcyBhc3NlbWJseSB7DQorwqDCoMKgwqDCoMKgwqDCoHZvaWQg Zm9vICh2b2lkKSB7IH0NCivCoMKgwqDCoH0gIi1mbm8tdHJhbXBvbGluZXMi XQ0KK30NCisNCsKgIyBSZXR1cm4gMSBpZiB0cmFwcGluZyBhcml0aG1ldGlj IGlzIGF2YWlsYWJsZSwgMCBvdGhlcndpc2UuDQrCoA0KwqBwcm9jIGNoZWNr X2VmZmVjdGl2ZV90YXJnZXRfdHJhcHBpbmcge30gew0KZGlmZiAtLWdpdCBh L2djYy90b3BsZXYuYyBiL2djYy90b3BsZXYuYw0KaW5kZXggYWIyMGNkOTg5 NjkuLjc2NWNlMzQ3MTcyIDEwMDY0NA0KLS0tIGEvZ2NjL3RvcGxldi5jDQor KysgYi9nY2MvdG9wbGV2LmMNCkBAIC0xNjk4LDYgKzE2OTgsMTIgQEAgcHJv Y2Vzc19vcHRpb25zICh2b2lkKQ0KwqDCoMKgwqDCoMKgwqBmbGFnX3ByZWZl dGNoX2xvb3BfYXJyYXlzID0gMDsNCsKgwqDCoMKgwqB9DQrCoA0KK8KgwqBp ZiAoZmxhZ190cmFtcG9saW5lcyA9PSAwICYmIHRhcmdldG0uY2FsbHMuY3Vz dG9tX2Z1bmN0aW9uX2Rlc2NyaXB0b3JzID09IC0xKQ0KK8KgwqDCoHsNCivC oMKgwqDCoMKgd2FybmluZ19hdCAoVU5LTk9XTl9MT0NBVElPTiwgMCwNCivC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIi1mbm8tdHJhbXBv bGluZXMgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyB0YXJnZXQiKTsNCivCoMKg wqB9DQorDQrCoMKgwqAvKiBUaGlzIGNvbWJpbmF0aW9uIG9mIG9wdGlvbnMg aXNuJ3QgaGFuZGxlZCBmb3IgaTM4NiB0YXJnZXRzIGFuZCBkb2Vzbid0DQrC oMKgwqDCoMKgwqBtYWtlIG11Y2ggc2Vuc2UgYW55d2F5LCBzbyBkb24ndCBh bGxvdyBpdC7CoMKgKi8NCsKgwqDCoGlmIChmbGFnX3ByZWZldGNoX2xvb3Bf YXJyYXlzID4gMCAmJiBvcHRpbWl6ZV9zaXplKQ0KZGlmZiAtLWdpdCBhL2dj Yy90cmVlLW5lc3RlZC5jIGIvZ2NjL3RyZWUtbmVzdGVkLmMNCmluZGV4IDBh ZDQ2OWFkYTQ5Li5lYjliY2NiN2E5ZCAxMDA2NDQNCi0tLSBhL2djYy90cmVl LW5lc3RlZC5jDQorKysgYi9nY2MvdHJlZS1uZXN0ZWQuYw0KQEAgLTI1NDQs NyArMjU0NCw3IEBAIGNvbnZlcnRfdHJhbXBfcmVmZXJlbmNlX29wICh0cmVl ICp0cCwgaW50ICp3YWxrX3N1YnRyZWVzLCB2b2lkICpkYXRhKQ0KwqAJY29u dGludWU7DQrCoA0KwqDCoMKgwqDCoMKgwqAvKiBEZWNpZGUgd2hldGhlciB0 byBnZW5lcmF0ZSBhIGRlc2NyaXB0b3Igb3IgYSB0cmFtcG9saW5lLiAqLw0K LcKgwqDCoMKgwqDCoGRlc2NyID0gRlVOQ19BRERSX0JZX0RFU0NSSVBUT1Ig KHQpICYmICFmbGFnX3RyYW1wb2xpbmVzOw0KK8KgwqDCoMKgwqDCoGRlc2Ny ID0gRlVOQ19BRERSX0JZX0RFU0NSSVBUT1IgKHQpOw0KwqANCsKgwqDCoMKg wqDCoMKgaWYgKGRlc2NyKQ0KwqAJeCA9IGxvb2t1cF9kZXNjcl9mb3JfZGVj bCAoaSwgZGVjbCwgSU5TRVJUKTs=