From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sender3-of-o90.zoho.com (sender3-of-o90.zoho.com [136.143.184.90]) by sourceware.org (Postfix) with ESMTPS id 99ED73858401; Mon, 13 Dec 2021 01:43:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 99ED73858401 ARC-Seal: i=1; a=rsa-sha256; t=1639359794; cv=none; d=zohomail.com; s=zohoarc; b=CJbmOgh9UuoRnUMe+MOhDG8t+Ua0toc6YnNfS0mf/FWAChlnAXmHFEIrjGWqIOI7uri5soySp4ZuFwoJKDVkssaNMpYJ5ad/zYA8GcsTjCj5HArosJThSTFFkhkducFwSu8A/0FwoJFjATKzRxxbfv+TaFPYOd40appA+kkEWYQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1639359794; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=KKVej6VE6gQhqgNLWkAZXsxFsDQaCbH/9yKmoa7TsqY=; b=CTx7Z9tE63i+LXiHUIQezAOZ/TB87hFU/3abQK5p37ygaZ/wY1zxIPQOsAoBKeSfMvuL8GrfGcaHNLuPd/nSIrVFe//IDm8RrvyKjz8QKcMN7VEGGmHFpr80wZ3aM/CkdIhA1gYOz54Lf1eN/9n5hhQYRv93TLbRJLZyZEuSXFc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=zoho.com; spf=pass smtp.mailfrom=bouanto@zoho.com; dmarc=pass header.from= Received: from [192.168.1.174] (38.87.11.6 [38.87.11.6]) by mx.zohomail.com with SMTPS id 1639359792569457.155125215717; Sun, 12 Dec 2021 17:43:12 -0800 (PST) Message-ID: Subject: Re: SV: [PATCH v2] jit: Add support for global rvalue initialization and ctors From: Antoni Boucher To: Petter Tomner , David Malcolm , "gcc-patches@gcc.gnu.org" , "jit@gcc.gnu.org" Date: Sun, 12 Dec 2021 20:43:10 -0500 In-Reply-To: References: <47b54ae597a44706aba180a05f1e5fe7@kth.se> , Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.42.2 MIME-Version: 1.0 Content-Transfer-Encoding: base64 X-ZohoMailClient: External X-Spam-Status: No, score=-10.4 required=5.0 tests=BAYES_00, BODY_8BITS, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, KAM_SHORT, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: jit@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Jit mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Dec 2021 01:43:26 -0000 T25lIHRoaW5nIEknbSBub3Qgc3VyZSBpZiBpdCBpcyBhIGNvZGUgc3R5bGUgaXNzdWUsIGJ1dCB3 b3J0aAptZW50aW9ubmluZzoKCj4gQEAgLTE0MDUsOCArMTQzNiwxMCBAQCBwcml2YXRlOgo+IAo+ ICBwcml2YXRlOgo+ICAgIGVudW0gZ2NjX2ppdF9nbG9iYWxfa2luZCBtX2tpbmQ7Cj4gKyAgZW51 bSBnbG9iYWxfdmFyX2ZsYWdzIGZsYWdzID0gR0xPQkFMX1ZBUl9GTEFHU19OT05FOwoKICAgICAg ICAgICAgICAgICAgICAgICAgICAgXl5eXl4KU2hvdWxkIGl0IGJlIG5hbWVkIG1fZmxhZ3MgaW5z dGVhZCBvZiBmbGFncz8KCj4gICAgc3RyaW5nICptX25hbWU7Cj4gICAgdm9pZCAqbV9pbml0aWFs aXplcjsKPiArICBydmFsdWUgKm1fcnZhbHVlX2luaXQgPSBudWxscHRyOyAvKiBPbmx5IG5lZWRl ZCBmb3Igd3JpdGVfZHVtcC4gKi8KPiAgICBzaXplX3QgbV9pbml0aWFsaXplcl9udW1fYnl0ZXM7 Cj4gIH07CgoKCkxlIHNhbWVkaSAxMSBkw6ljZW1icmUgMjAyMSDDoCAxNTozNSArMDAwMCwgUGV0 dGVyIFRvbW5lciBhIMOpY3JpdMKgOgo+IEhpIQo+IAo+ID4gcy9hbiB1bmlvbi9hIHVuaW9uLwo+ ID4gcy9hIHJ2YWx1ZS9hbiBydmFsdWUvCj4gCj4gSGVoIG5vIHdheSAuLi4gYW5kIEkgdGhvdWdo IEkga25ldyBFbmdsaXNoIGdyYW1tYXIgOikKPiAKPiBIYWQgdG8gbG9vayB0aGF0IHVwIHRvIHNl ZSB3aGF0IHRoZSBkZWFsIHdhcyBidXQgaXQgbWFrZXMgc2Vuc2UuIAo+IAo+IHl1bmlvbiwgYXJl dmFsdWUuCj4gCj4gPiBzL3dyb25nLWZpZWxkLW5hbWUvd3JvbmctZmllbGQtb2JqLwo+ID4gCj4g PiB0byBtYXRjaCB0aGUgc3RydWN0IGV4YW1wbGUgKGdpdmVuIHRoYXQgdGhlIGlzc3VlIGJlaW5n IHRlc3RlZCBmb3IKPiA+IGlzCj4gPiB0aGF0IGl0J3MgdGhlIHdyb25nIG9iamVjdCwgcmF0aGVy IHRoYW4gdGhlIHdyb25nIG5hbWUpLgo+IAo+IEluaXRpYWxseSwgYmVmb3JlIHN1Ym1pdHRpbmcg dG8gdGhlIGxpc3QsIEkgbWFkZSB0aGUgY29kZSBzdWNoIHRoYXQKPiB0aGUgZmllbGQgCj4gb2Jq ZWN0cyBkaWQgbm90IGhhdmUgdG8gYmUgdGhlIG9uZXMgdGhhdCB3ZXJlIHVzZWQgd2hlbiBjcmVh dGluZyB0aGUgCj4gc3RydWN0IG9yIHVuaW9uLCBhbmQgZm9yZ290IGNoYW5naW5nIHRoZSB0ZXN0 IG5hbWVzLiAKPiAKPiBJIGZpZ3VyZWQgaXQgcmVxdWlyZWQgdG9vIG11Y2ggc3RyaW5nIGNvbXBh cmVzIGZvciB0aGUgZmllbGQgbmFtZXMKPiBhbmQgCj4gcG9pbnRlciBjb21wYXJlcyBmb3IgdGhl IGZpZWxkIG9iamVjdCB3ZXJlIG1vcmUgYXBwcm9wcmlhdGUuIFRvCj4gY3JlYXRlCj4gZHVtbXkg ZmllbGQgb2JqZWN0cyB3ZXJlIGFsc28ga2luZGEgaGVhdnkuCj4gCj4gSSdsbCBhZGRyZXNzIHRo ZSBwb2ludHMuCj4gCj4gUmVnYXJkcywgUGV0dGVyCj4gCj4gCj4gRnLDpW46IERhdmlkIE1hbGNv bG0gPGRtYWxjb2xtQHJlZGhhdC5jb20+Cj4gU2tpY2thdDogZGVuIDkgZGVjZW1iZXIgMjAyMSAy MDozOQo+IFRpbGw6IFBldHRlciBUb21uZXI7IGdjYy1wYXRjaGVzQGdjYy5nbnUub3JnOyBqaXRA Z2NjLmdudS5vcmc7IEFudG9uaQo+IEJvdWNoZXIKPiDDhG1uZTogUmU6IFtQQVRDSCB2Ml0gaml0 OiBBZGQgc3VwcG9ydCBmb3IgZ2xvYmFsIHJ2YWx1ZQo+IGluaXRpYWxpemF0aW9uIGFuZCBjdG9y cwo+IMKgwqDCoCAKPiBPbiBNb24sIDIwMjEtMTItMDYgYXQgMTA6NDcgKzAwMDAsIFBldHRlciBU b21uZXIgdmlhIEdjYy1wYXRjaGVzCj4gd3JvdGU6Cj4gPiBIaSEKPiA+IAo+ID4gQXR0YWNoZWQg aXMgYSBwYXRjaCB3aXRoIGNoYW5nZXMgaW4gbGluZSB3aXRoIHRoZSByZXZpZXcgb2YgdGhlCj4g PiBwcmlvcgo+ID4gcGF0Y2guCj4gPiBUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBpbml0aWFs aXphdGlvbiBvZiBnbG9iYWwgdmFyaWFibGVzIHdpdGgKPiA+IHJ2YWx1ZXMgYXMgd2VsbAo+ID4g YXMgcnZhbHVlIGNvbnN0cnVjdG9ycyBmb3Igc3RydWN0cywgYXJyYXlzIGFuZCB1bmlvbnMuCj4g Cj4gVGhhbmtzIGZvciB0aGUgdXBkYXRlZCBwYXRjaC4KPiAKPiBBbnRvbmk6IGRvZXMgdGhpcyBw YXRjaCB3b3JrIGZvciB5b3UgZm9yIHlvdXIgcnVzdGMgcGx1Z2luPwo+IAo+ID4gCj4gPiBSZXZp ZXc6IGh0dHBzOi8vZ2NjLmdudS5vcmcvcGlwZXJtYWlsL2ppdC8yMDIxcTQvMDAxNDAwLmh0bWwK PiA+IAo+ID4gVGhlIHBvaW50cyBoYXZlIGJlZW4gYWRkcmVzc2VkLCBleGNlcHQ6Cj4gPiAKPiA+ ID4gQ2FuIHRoZSB0eXBlIGJlIG1hZGUgY29uc3Q/Cj4gPiAKPiA+IEkgc3RhcnRlZCB0byBtYWtl IHR5cGVzX2tpbmRhX3NhbWVfaW50ZXJuYWwgKCkgdGFraW5nIGNvbnN0IGFyZ3MsCj4gPiBidXQg SQo+ID4gZmVsdCB0aGUKPiA+IHBhdGNoIHdhcyBiYWxsb29uaW5nIGJlY2F1c2Ugc29tZSBzcHJl YWQgb3V0IG1ldGhvZHMgbmVlZGVkIGEgY29uc3QKPiA+IHNpZ25hdHVyZSB0b28uIEkgY291bGQg c3VibWl0IHRoYXQgaW4gYSBzZXBhcmF0ZSBwYXRjaC4KPiAKPiBGYWlyIGVub3VnaDsgZml4aW5n IHRoYXQgaXNuJ3QgYSBibG9ja2VyOyBpdCdzIGFscmVhZHkgYSBiaWcgcGF0Y2guCj4gCj4gPiAK PiA+IEkgYWxzbyBhZGRyZXNzZWQgYSBwcm9ibGVtIEFudG9uaSBmb3VuZDogCj4gPiBodHRwczov L2djYy5nbnUub3JnL3BpcGVybWFpbC9qaXQvMjAyMXE0LzAwMTM5OS5odG1sCj4gPiAKPiA+ICwg d2hlcmUgeW91IGNvdWxkIG5vdCBpbml0aWFsaXplIGdsb2JhbCBwb2ludGVyIHZhcmlhYmxlcyB0 byBwb2ludAo+ID4gdG8KPiA+IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBJIGRpZCB0aGF0IGJ5 IAo+ID4gcmVtb3ZpbmcgYSByZWR1bmRhbnQgY2hlY2sgd2l0aCB2YWxpZGF0ZV92YXJfaGFzX2lu aXQgKCksIHNpbmNlCj4gPiB0aGF0Cj4gPiB3YWxraW5nIGZ1bmN0aW9uIHdvdWxkCj4gPiBoYXZl IHRvIGJlIHF1aXRlIGNvbXBsZXggdG8gYWxsb3cgcG9pbnRlcnMgdG8gdW5pbml0aWFsaXplZAo+ ID4gdmFyaWFibGVzLgo+ID4gCj4gPiBBbnk6Cj4gPiBjb25zdCBpbnQgZm9vOwo+ID4gaW50IGJh ciA9IGZvbzsKPiA+IAo+ID4gd2lsbCBpbnN0ZWFkIGJlIHJlcG9ydGVkIGFzICJub3QgY29tcGls ZSB0aW1lIGNvbnN0YW50IiBpbnN0ZWFkIG9mCj4gPiBhCj4gPiBuaWNlIGVycm9yIG1lc3NhZ2Ug d2l0aCBuYW1lcy4KPiA+IAo+ID4gbWFrZSBjaGVjay1qaXQgcnVucyBmaW5lIG9uIGdudS1saW51 eC14NjQgRGViaWFuLgo+IAo+IFZhcmlvdXMgcmV2aWV3IGNvbW1lbnRzIGlubGluZSBiZWxvdywg d2hpY2ggYXJlIG1vc3RseSBqdXN0IG5pdHM6Cj4gCj4gPiBGcm9tIGE0ZmVmMTMwOGVhYTcyY2U0 ZWM1MWRiZTVlZmNmYmJmMDMyZTk4NzAgTW9uIFNlcCAxNyAwMDowMDowMAo+ID4gMjAwMQo+ID4g RnJvbTogUGV0dGVyIFRvbW5lciA8dG9tbmVyQGt0aC5zZT4KPiA+IERhdGU6IE1vbiwgMjkgTm92 IDIwMjEgMjA6NDQ6MDcgKzAxMDAKPiA+IFN1YmplY3Q6IFtQQVRDSF0gQWRkIHN1cHBvcnQgZm9y IGdsb2JhbCBydmFsdWUgaW5pdGlhbGl6YXRpb24gYW5kCj4gPiBjb25zdHJ1Y3RvcnMKPiA+IAo+ ID4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGluaXRpYWxpemF0aW9uIG9mIGdsb2JhbCB2 YXJpYWJsZXMKPiA+IHdpdGggcnZhbHVlcyBhbmQgY3JlYXRpbmcgY29uc3RydWN0b3JzIGZvciBh cnJheSwgc3RydWN0IGFuZAo+ID4gdW5pb24gdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgYXMgcnZh bHVlcy4KPiA+IAo+ID4gU2lnbmVkLW9mZi1ieToKPiA+IDIwMjEtMTItMDbCoMKgwqAgUGV0dGVy IFRvbW5lcsKgwqAgPHRvbW5lckBrdGguc2U+Cj4gCj4gWy4uLnNuaXAuLi5dCj4gCj4gPiBkaWZm IC0tZ2l0IGEvZ2NjL2ppdC9kb2NzL3RvcGljcy9leHByZXNzaW9ucy5yc3QKPiA+IGIvZ2NjL2pp dC9kb2NzL3RvcGljcy9leHByZXNzaW9ucy5yc3QKPiA+IGluZGV4IDM5NjI1OWVmMDdlLi41ZjY0 Y2E2ODU5NSAxMDA2NDQKPiA+IC0tLSBhL2djYy9qaXQvZG9jcy90b3BpY3MvZXhwcmVzc2lvbnMu cnN0Cj4gPiArKysgYi9nY2Mvaml0L2RvY3MvdG9waWNzL2V4cHJlc3Npb25zLnJzdAo+ID4gQEAg LTEyNiw2ICsxMjYsMTQ3IEBAIFNpbXBsZSBleHByZXNzaW9ucwo+ID4gwqDCoMKgwqAgdW5kZXJs eWluZyBzdHJpbmcsIHNvIGl0IGlzIHZhbGlkIHRvIHBhc3MgaW4gYSBwb2ludGVyIHRvIGFuCj4g PiBvbi1zdGFjawo+ID4gwqDCoMKgwqAgYnVmZmVyLgo+ID4gwqAgCj4gPiArQ29uc3RydWN0b3Ig ZXhwcmVzc2lvbnMKPiA+ICsqKioqKioqKioqKioqKioqKioqKioqKgo+ID4gKwo+ID4gK8KgwqAg VGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgbWFrZSBjb25zdHJ1Y3RvcnMgZm9yIGFycmF5LCBzdHJ1 Y3QgYW5kCj4gPiB1bmlvbgo+ID4gK8KgwqAgdHlwZXMuCj4gPiArCj4gPiArwqDCoCBUaGUgY29u c3RydWN0b3IgcnZhbHVlIGNhbiBiZSB1c2VkIGZvciBhc3NpZ25tZW50IHRvIGxvY2Fscy4KPiA+ ICvCoMKgIEl0IGNhbiBiZSB1c2VkIHRvIGluaXRpYWxpemUgZ2xvYmFsIHZhcmlhYmxlcyB3aXRo Cj4gPiArwqDCoCA6ZnVuYzpgZ2NjX2ppdF9nbG9iYWxfc2V0X2luaXRpYWxpemVyX3J2YWx1ZWAu IEl0IGNhbiBhbHNvIGJlCj4gPiB1c2VkIGFzIGEKPiA+ICvCoMKgIHRlbXBvcmFyeSB2YWx1ZSBm b3IgZnVuY3Rpb24gY2FsbHMgYW5kIHJldHVybiB2YWx1ZXMsIGJ1dCBpdHMKPiA+IGFkZHJlc3MK PiA+ICvCoMKgIGNhbid0IGJlIHRha2VuLgo+ID4gKwo+ID4gK8KgwqAgTm90ZSB0aGF0IGFycmF5 cyBpbiBsaWJnY2NqaXQgZG9lcyBub3QgY29sbGFwc2UgdG8gcG9pbnRlcnMKPiA+IGxpa2UgaW4K PiAKPiBzL2RvZXMgbm90L2RvIG5vdC8KPiAKPiA+ICvCoMKgIEMuIEkuZS4gaWYgYW4gYXJyYXkg Y29uc3RydWN0b3IgaXMgdXNlZCBhcyBlLmcuIGEgcmV0dXJuIHZhbHVlLAo+ID4gdGhlIHdob2xl Cj4gPiArwqDCoCBhcnJheSB3b3VsZCBiZSByZXR1cm5lZCBieSB2YWx1ZSAtIGFycmF5IGNvbnN0 cnVjdG9ycyBjYW4gYmUKPiA+IGFzc2lnbmVkIHRvCj4gPiArwqDCoCBhcnJheSB2YXJpYWJsZXMu Cj4gPiArCj4gPiArwqDCoCBUaGUgY29uc3RydWN0b3IgY2FuIGNvbnRhaW4gbmVzdGVkIGNvbnN0 cnVjdG9ycy4KPiA+ICsKPiA+ICvCoMKgIE5vdGUgdGhhdCBhIHN0cmluZyBsaXRlcmFsIHJ2YWx1 ZSBjYW4ndCBiZSB1c2VkIHRvIGNvbnN0cnVjdCBhCj4gPiBjaGFyIGFycmF5Lgo+ID4gK8KgwqAg SXQgbmVlZCBvbmUgcnZhbHVlIGZvciBlYWNoIGNoYXIuCj4gCj4gcy9jaGFyIGFycmF5LsKgIEl0 IG5lZWQgb25lIHJ2YWx1ZS9jaGFyIGFycmF5OyB0aGUgbGF0dGVyIG5lZWRzIG9uZQo+IHJ2YWx1 ZS8KPiAKPiA+ICsKPiA+ICvCoMKgIFRoZXNlIGVudHJ5cG9pbnRzIHdlcmUgYWRkZWQgaW4gOnJl ZjpgTElCR0NDSklUX0FCSV8xNmA7IHlvdQo+ID4gY2FuIHRlc3QgZm9yIGl0cwo+IAo+IHMvMTYv MTcvwqAgSSBiZWxpZXZlLgo+IAo+IHMvaXRzL3RoZWlyLwo+IAo+IAo+ID4gK8KgwqAgcHJlc2Vu c2UgdXNpbmc6Cj4gCj4gcy9wcmVzZW5zZS9wcmVzZW5jZS8KPiAKPiAoYW5kIGluIHZhcmlvdXMg b3RoZXIgcGxhY2VzIGJlbG93KQo+IAo+IAo+ID4gK8KgwqAgLi4gY29kZS1ibG9jazo6IGMKPiA+ ICvCoMKgwqDCoCAjaWZkZWYgTElCR0NDSklUX0hBVkVfQ1RPUlMKPiA+ICsKPiA+ICsuLiBmdW5j dGlvbjo6IGdjY19qaXRfcnZhbHVlICpcCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2NjX2pp dF9jb250ZXh0X25ld19hcnJheV9jb25zdHJ1Y3RvciAoZ2NjX2ppdF9jb250ZXh0Cj4gPiAqY3R4 dCxcCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2NjX2pp dF9sb2NhdGlvbgo+ID4gKmxvYyxcCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZ2NjX2ppdF90eXBlCj4gPiAqdHlwZSxcCj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2l6ZV90Cj4gPiBhcnJfbGVuZ3RoLFwKPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnY2Nfaml0X3J2YWx1ZQo+ ID4gKip2YWx1ZXMpCj4gPiArCj4gPiArwqDCoCBDcmVhdGUgYSBjb25zdHJ1Y3RvciBmb3IgYW4g YXJyYXkgYXMgYSBydmFsdWUuCj4gPiArCj4gPiArwqDCoCBSZXR1cm5zIE5VTEwgb24gZXJyb3Iu IGBgdmFsdWVzYGAgYXJlIGNvcGllZCBhbmQKPiA+ICvCoMKgIGRvIG5vdCBoYXZlIHRvIG91dGxp dmUgdGhlIGNvbnRleHQuCj4gPiArCj4gPiArwqDCoCBgYHR5cGVgYCBzcGVjaWZpZXMgd2hhdCB0 aGUgY29uc3RydWN0b3Igd2lsbCBidWlsZCBhbmQgaGFzIHRvCj4gPiBiZQo+ID4gK8KgwqAgYW4g YXJyYXkuCj4gPiArCj4gPiArwqDCoCBgYGFycl9sZW5ndGhgYCBzcGVjaWZpZXMgdGhlIG51bWJl ciBvZiBlbGVtZW50cyBpbiBgYHZhbHVlc2BgCj4gPiBhbmQKPiA+ICvCoMKgIGl0IGNhbid0IGhh dmUgbW9yZSBlbGVtZW50cyB0aGFuIHRoZSBhcnJheSB0eXBlLgo+IAo+IExldCdzIHJlbmFtZSB0 aGlzIHRvIGBgbnVtX3ZhbHVlc2BgIChib3RoIGluIHRoZSBkb2NzLCBhbmQgaW4KPiBsaWJnY2Nq aXQuYyBhbmQgLmgsIGluIGFsbCBvZiB0aGUgdmFyaW91cyBwbGFjZXMpLCBzaW5jZSB0aGlzIHdp bGwKPiBtYWtlCj4gaXQgY2xlYXJlciB0aGF0IHdlJ3JlIHRhbGtpbmcgYWJvdXQgdGhlIHNpemUg b2YgInZhbHVlcyIsIHJhdGhlciB0aGFuCj4gdGhhdCBvZiB0aGUgdHlwZS4KPiAKPiA+ICsKPiA+ ICvCoMKgIEVhY2ggdmFsdWUgaW4gYGB2YWx1ZXNgYCBzZXRzIHRoZSBjb3JyZXNwb25kaW5nIHZh bHVlIGluIHRoZQo+ID4gYXJyYXkuCj4gPiArwqDCoCBJZiB0aGUgYXJyYXkgdHlwZSBpdHNlbGYg aGFzIG1vcmUgZWxlbWVudHMgdGhhbiBgYHZhbHVlc2BgLCB0aGUKPiA+ICvCoMKgIGxlZnQtb3Zl ciBlbGVtZW50cyB3aWxsIGJlIHplcm9lZC4KPiA+ICsKPiA+ICvCoMKgIEVhY2ggdmFsdWUgaW4g YGB2YWx1ZXNgYCBuZWVkIHRvIGJlIHRoZSBzYW1lIHVucXVhbGlmaWVkIHR5cGUKPiA+IGFzIHRo ZQo+ID4gK8KgwqAgYXJyYXkgdHlwZSdzIGVsZW1lbnQgdHlwZS4KPiA+ICsKPiA+ICvCoMKgIElm IGBgYXJyX2xlbmd0aGBgIGlzIDAsIHRoZSBgYHZhbHVlc2BgIHBhcmFtZXRlciB3aWxsIGJlCj4g PiArwqDCoCBpZ25vcmVkIGFuZCB6ZXJvIGluaXRpYWxpemF0aW9uIHdpbGwgYmUgdXNlZC4KPiA+ ICsKPiA+ICvCoMKgIFRoaXMgZW50cnlwb2ludCB3YXMgYWRkZWQgaW4gOnJlZjpgTElCR0NDSklU X0FCSV8xN2A7IHlvdSBjYW4KPiA+IHRlc3QgZm9yIGl0cwo+ID4gK8KgwqAgcHJlc2Vuc2UgdXNp bmc6Cj4gPiArCj4gPiArwqDCoCAuLiBjb2RlLWJsb2NrOjogYwo+ID4gK8KgwqDCoMKgICNpZmRl ZiBMSUJHQ0NKSVRfSEFWRV9DVE9SUwo+ID4gKwo+ID4gKy4uIGZ1bmN0aW9uOjogZ2NjX2ppdF9y dmFsdWUgKlwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBnY2Nfaml0X2NvbnRleHRfbmV3X3N0 cnVjdF9jb25zdHJ1Y3RvciAoZ2NjX2ppdF9jb250ZXh0Cj4gPiAqY3R4dCxcCj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+ID4gZ2NjX2ppdF9sb2NhdGlv biAqbG9jLFwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGdjY19qaXRfdHlwZQo+ID4gKnR5cGUsXAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgc2l6ZV90Cj4gPiBhcnJfbGVuZ3RoLFwKPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdjY19qaXRfZmllbGQKPiA+ICoqZmll bGRzLFwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdj Y19qaXRfcnZhbHVlCj4gPiAqKnZhbHVlKQo+ID4gKwo+ID4gKwo+ID4gK8KgwqAgQ3JlYXRlIGEg Y29uc3RydWN0b3IgZm9yIGFuIHN0cnVjdCBhcyBhIHJ2YWx1ZS4KPiA+ICsKPiA+ICvCoMKgIFJl dHVybnMgTlVMTCBvbiBlcnJvci4gVGhlIHR3byBwYXJhbWV0ZXIgYXJyYXlzIGFyZSBjb3BpZWQg YW5kCj4gPiArwqDCoCBkbyBub3QgaGF2ZSB0byBvdXRsaXZlIHRoZSBjb250ZXh0Lgo+ID4gKwo+ ID4gK8KgwqAgYGB0eXBlYGAgc3BlY2lmaWVzIHdoYXQgdGhlIGNvbnN0cnVjdG9yIHdpbGwgYnVp bGQgYW5kIGhhcyB0bwo+ID4gYmUKPiA+ICvCoMKgIGEgc3RydWN0Lgo+ID4gKwo+ID4gK8KgwqAg YGBhcnJfbGVuZ3RoYGAgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gYGB2YWx1 ZXNgYC4KPiAKPiBBZ2FpbiwgbGV0J3MgbWFrZSB0aGlzICJudW1fdmFsdWVzIiBoZXJlIGFuZCBp biB0aGUgLmMvLmgsIGZvcgo+IGNsYXJpdHkuCj4gCj4gCj4gWy4uLnNuaXAuLi5dCj4gCj4gPiBA QCAtNjAzLDYgKzc0NCwzOCBAQCBHbG9iYWwgdmFyaWFibGVzCj4gPiDCoCAKPiA+IMKgwqDCoMKg wqDCoMKgICNpZmRlZiBMSUJHQ0NKSVRfSEFWRV9nY2Nfaml0X2dsb2JhbF9zZXRfaW5pdGlhbGl6 ZXIKPiA+IMKgIAo+ID4gKy4uIGZ1bmN0aW9uOjogZ2NjX2ppdF9sdmFsdWUgKlwKPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoCBnY2Nfaml0X2dsb2JhbF9zZXRfaW5pdGlhbGl6ZXJfcnZhbHVlIChn Y2Nfaml0X2x2YWx1ZQo+ID4gKmdsb2JhbCwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBnY2Nfaml0X3J2YWx1ZQo+ID4gKmluaXRfdmFsdWUpCj4gPiArCj4g PiArwqDCoCBTZXQgdGhlIGluaXRpYWwgdmFsdWUgb2YgYSBnbG9iYWwgd2l0aCBhbiBydmFsdWUu Cj4gPiArCj4gPiArwqDCoCBUaGUgcnZhbHVlIG5lZWQgdG8gYmUgYSBjb25zdGFudCBleHByZXNz aW9uLCBlLmcuIG5vIGZ1bmN0aW9uCj4gPiBjYWxscy4KPiAKPiBzL25lZWQvbmVlZHMvCj4gCj4g Wy4uLnNuaXAuLi5dCj4gCj4gPiArdm9pZAo+ID4gK3BsYXliYWNrOjpjb250ZXh0OjoKPiA+ICtn bG9iYWxfc2V0X2luaXRfcnZhbHVlIChsdmFsdWUqIHZhcmlhYmxlLAo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcnZhbHVlKiBpbml0KQo+ID4gK3sKPiA+ICvC oCB0cmVlIGlubmVyID0gdmFyaWFibGUtPmFzX3RyZWUgKCk7Cj4gPiArCj4gPiArwqAgLyogV2Ug bmVlZCB0byBmb2xkIGFsbCBleHByZXNzaW9ucyBhcyBtdWNoIGFzIHBvc3NpYmxlLsKgIFRoZQo+ ID4gY29kZQo+ID4gK8KgwqDCoMKgIGZvciBhIERFQ0xfSU5JVElBTCBvbmx5IGhhbmRsZXMgc29t ZSBvcGVyYXRpb25zLAo+ID4gK8KgwqDCoMKgIGV0YyBhZGRpdGlvbiwgbWludXMsICdhZGRyZXNz IG9mJy7CoCBTZWUKPiA+IG91dHB1dF9hZGRyZXNzZWRfY29uc3RhbnRzICgpCj4gPiArwqDCoMKg wqAgaW4gdmFyYXNtLmMuwqAgKi8KPiA+ICvCoCB0cmVlIGluaXRfdHJlZSA9IGluaXQtPmFzX3Ry ZWUgKCk7Cj4gPiArwqAgdHJlZSBmb2xkZWQgPSBmb2xkX2NvbnN0X3ZhciAoaW5pdF90cmVlKTsK PiA+ICsKPiA+ICvCoCBpZiAoIVRSRUVfQ09OU1RBTlQgKGZvbGRlZCkpCj4gPiArwqDCoMKgIHsK PiA+ICvCoMKgwqDCoMKgIHRyZWUgbmFtZSA9IERFQ0xfTkFNRSAoaW5uZXIpOwo+ID4gKwo+ID4g K8KgwqDCoMKgwqAgYWRkX2Vycm9yIChOVUxMLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICJ1bmFibGUgdG8gY29udmVydCBpbml0aWFsIHZhbHVlIGZvciB0aGUgZ2xvYmFsCj4gPiB2 YXJpYWJsZSAlcyIKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiIHRvIGEgY29tcGls ZS10aW1lIGNvbnN0YW50IiwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuYW1lICE9 IE5VTExfVFJFRSA/IElERU5USUZJRVJfUE9JTlRFUiAobmFtZSkgOgo+ID4gTlVMTCk7Cj4gCj4g SXQncyBub3Qgc2FmZSBpbiBnZW5lcmFsIHRvIHVzZSBOVUxMIHdpdGggJXMsIHNvIHRoaXMgbmVl ZHMgdG8gYmUKPiBzcGxpdAo+IGludG8gc29tZXRoaW5nIGxpa2U6Cj4gCj4gwqDCoMKgwqDCoCBp ZiAobmFtZSkKPiDCoMKgwqDCoMKgwqDCoCBhZGRfZXJyb3IgKE5VTEwsCj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJ1bmFibGUgdG8gY29udmVydCBpbml0aWFsIHZhbHVl IGZvciB0aGUgZ2xvYmFsCj4gdmFyaWFibGUgJXMiCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICIgdG8gYSBjb21waWxlLXRpbWUgY29uc3RhbnQiLAo+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBJREVOVElGSUVSX1BPSU5URVIpOwo+IMKgwqDCoMKg wqAgZWxzZQo+IMKgwqDCoMKgwqDCoMKgIGFkZF9lcnJvciAoTlVMTCwKPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgInVuYWJsZSB0byBjb252ZXJ0IGluaXRpYWwgdmFsdWUg Zm9yIGdsb2JhbAo+IHZhcmlhYmxlIgo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAiIHRvIGEgY29tcGlsZS10aW1lIGNvbnN0YW50Iik7Cj4gCj4gWy4uLnNuaXAuLi5dCj4g Cj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL2ppdC9saWJnY2NqaXQuaCBiL2djYy9qaXQvbGliZ2Njaml0 LmgKPiA+IGluZGV4IGExYzk0MzZjNTQ1Li45NjdkODg0M2E5OCAxMDA2NDQKPiA+IC0tLSBhL2dj Yy9qaXQvbGliZ2Njaml0LmgKPiA+ICsrKyBiL2djYy9qaXQvbGliZ2Njaml0LmgKPiA+IEBAIC04 MTIsNiArODEyLDE1OSBAQCBnY2Nfaml0X2NvbnRleHRfbmV3X2dsb2JhbCAoZ2NjX2ppdF9jb250 ZXh0Cj4gPiAqY3R4dCwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBnY2Nfaml0X3R5cGUgKnR5cGUsCj4gPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgY2hhciAqbmFtZSk7 Cj4gPiDCoCAKPiA+ICsjZGVmaW5lIExJQkdDQ0pJVF9IQVZFX0NUT1JTCj4gPiArCj4gPiArLyog Q3JlYXRlIGEgY29uc3RydWN0b3IgZm9yIGFuIHN0cnVjdCBhcyBhIHJ2YWx1ZS4KPiAKPiBzL2Fu IHN0cnVjdC9hIHN0cnVjdC8KPiAKPiBzL2EgcnZhbHVlL2FuIHJ2YWx1ZS8KPiAKPiBbLi4uc25p cC4uLl0KPiAKPiAKPiA+ICtleHRlcm4gZ2NjX2ppdF9ydmFsdWUgKgo+ID4gK2djY19qaXRfY29u dGV4dF9uZXdfc3RydWN0X2NvbnN0cnVjdG9yIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsCj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGdjY19qaXRfbG9jYXRpb24gKmxvYywKPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZ2NjX2ppdF90eXBlICp0eXBlLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzaXplX3QgYXJyX2xl bmd0aCwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2NjX2ppdF9maWVsZCAqKmZpZWxkcywKPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgZ2NjX2ppdF9ydmFsdWUgKip2YWx1ZXMpOwo+ID4gKwo+ID4gKy8qIENy ZWF0ZSBhIGNvbnN0cnVjdG9yIGZvciBhbiB1bmlvbiBhcyBhIHJ2YWx1ZS4KPiAKPiBzL2FuIHVu aW9uL2EgdW5pb24vCj4gcy9hIHJ2YWx1ZS9hbiBydmFsdWUvCj4gCj4gWy4uLnNuaXAuLi5dCj4g Cj4gPiArLyogQ3JlYXRlIGEgY29uc3RydWN0b3IgZm9yIGFuIGFycmF5IGFzIGEgcnZhbHVlLgo+ IAo+IHMvYSBydmFsdWUvYW4gcnZhbHVlLwo+IAo+IFsuLi5zbmlwLi4uXQo+IAo+ID4gZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvaml0LmRnL3Rlc3QtZXJyb3ItY3Rvci1hcnJheS13cm9uZy0K PiA+IHR5cGUuYyBiL2djYy90ZXN0c3VpdGUvaml0LmRnL3Rlc3QtZXJyb3ItY3Rvci1hcnJheS13 cm9uZy10eXBlLmMKPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAw MC4uMWNlODNiMmVkNmMKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL2djYy90ZXN0c3VpdGUv aml0LmRnL3Rlc3QtZXJyb3ItY3Rvci1hcnJheS13cm9uZy10eXBlLmMKPiA+IEBAIC0wLDAgKzEs NTQgQEAKPiA+ICsvKgo+ID4gKwo+ID4gK8KgIFRlc3QgdGhhdCB0aGUgcHJvcGVyIGVycm9yIGlz IHRyaWdnZXJlZCB3aGVuIHdlIGJ1aWxkIGEgY3Rvcgo+ID4gK8KgIGZvciBhbiBhcnJheSB0eXBl LCBidXQgaGFzIHRoZSB0eXBlIHdyb25nIG9uIGFuIGVsZW1lbnQuCj4gPiArCj4gPiArKi8KPiA+ ICsKPiA+ICsjaW5jbHVkZSA8c3RkbGliLmg+Cj4gPiArI2luY2x1ZGUgPHN0ZGlvLmg+Cj4gPiAr Cj4gPiArI2luY2x1ZGUgImxpYmdjY2ppdC5oIgo+ID4gKyNpbmNsdWRlICJoYXJuZXNzLmgiCj4g PiArCj4gPiArdm9pZAo+ID4gK2NyZWF0ZV9jb2RlIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIHZv aWQgKnVzZXJfZGF0YSkKPiA+ICt7Cj4gPiArwqAgZ2NjX2ppdF90eXBlICppbnRfdHlwZSA9IGdj Y19qaXRfY29udGV4dF9nZXRfdHlwZSAoY3R4dCwKPiA+ICvCoMKgwqAgR0NDX0pJVF9UWVBFX0lO VCk7Cj4gPiArwqAgZ2NjX2ppdF90eXBlICpmbG9hdF90eXBlID0gZ2NjX2ppdF9jb250ZXh0X2dl dF90eXBlIChjdHh0LAo+ID4gK8KgwqDCoCBHQ0NfSklUX1RZUEVfRkxPQVQpOwo+ID4gKwo+ID4g K8KgIGdjY19qaXRfdHlwZSAqYXJyX3R5cGUgPQo+ID4gK8KgwqDCoCBnY2Nfaml0X2NvbnRleHRf bmV3X2FycmF5X3R5cGUgKGN0eHQsIDAsIGludF90eXBlLCAxMCk7Cj4gPiArCj4gPiArwqAgZ2Nj X2ppdF9ydmFsdWUgKmZydiA9IGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVlX2Zyb21fZG91Ymxl Cj4gPiAoY3R4dCwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiA+IGZsb2F0X3R5cGUsCj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDEyKTsK PiA+ICsKPiA+ICvCoCBnY2Nfaml0X3J2YWx1ZSAqY3RvciA9IGdjY19qaXRfY29udGV4dF9uZXdf YXJyYXlfY29uc3RydWN0b3IKPiA+ICvCoMKgwqAgKGN0eHQsIDAsCj4gPiArwqDCoMKgwqAgYXJy X3R5cGUsCj4gPiArwqDCoMKgwqAgMSwKPiA+ICvCoMKgwqDCoCAmZnJ2KTsKPiA+ICsKPiA+ICvC oCBDSEVDS19WQUxVRSAoY3RvciwgTlVMTCk7Cj4gPiArfQo+ID4gKwo+ID4gK3ZvaWQKPiA+ICt2 ZXJpZnlfY29kZSAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LCBnY2Nfaml0X3Jlc3VsdCAqcmVzdWx0 KQo+ID4gK3sKPiA+ICvCoCAvKiBFbnN1cmUgdGhhdCB0aGUgYmFkIEFQSSB1c2FnZSBwcmV2ZW50 cyB0aGUgQVBJIGdpdmluZyBhIGJvZ3VzCj4gPiArwqDCoMKgwqAgcmVzdWx0IGJhY2suwqAgKi8K PiA+ICvCoCBDSEVDS19WQUxVRSAocmVzdWx0LCBOVUxMKTsKPiA+ICsKPiA+ICvCoCAvKiBWZXJp ZnkgdGhhdCB0aGUgY29ycmVjdCBlcnJvciBtZXNzYWdlIHdhcyBlbWl0dGVkLiAqLwo+ID4gK8Kg IENIRUNLX1NUUklOR19WQUxVRSAoZ2NjX2ppdF9jb250ZXh0X2dldF9maXJzdF9lcnJvciAoY3R4 dCksCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJnY2Nfaml0X2Nv bnRleHRfbmV3X2FycmF5X2NvbnN0cnVjdG9yOiBhcnJheQo+ID4gZWxlbWVudCAiCj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJ2YWx1ZSB0eXBlcyBkaWZmZXIgZnJv bSB0eXBlcyBpbiAndmFsdWVzJwo+ID4gKGVsZW1lbnQgIgo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAidHlwZTogaW50KSgndmFsdWVzJyB0eXBlOiBmbG9hdCkiKTsK PiA+ICvCoCBDSEVDS19TVFJJTkdfVkFMVUUgKGdjY19qaXRfY29udGV4dF9nZXRfZmlyc3RfZXJy b3IgKGN0eHQpLAo+IAo+IExvb2tzIGxpa2UgYSBjb3B5JnBhc3RlIGVycm9yOiB0aGUgc2Vjb25k IENIRUNLX1NUUklOR19WQUxVRSBpcwo+IHByZXN1bWFibHkgbWVhbnQgdG8gY2hlY2sgZ2V0X2xh c3RfZXJyb3IgaGVyZSwgcmF0aGVyIHRoYW4gY2hlY2tpbmcKPiBnZXRfZmlyc3RfZXJyb3IgYWdh aW4sIHJpZ2h0Pwo+IAo+IE1pZ2h0IGJlIGdvb2QgdG8gaW50cm9kdWNlIGEgbWFjcm8sIHNheSwg RVhQRUNURURfRVJST1JfTUVTU0FHRSwgdG8KPiBhdm9pZCByZXBlYXRpbmcgdGhlIHN0cmluZyBs aXRlcmFsLCB3aGljaCB3b3VsZCBtYWtlIHN1Y2ggY29weSZwYXN0ZQo+IGVycm9ycyBtb3JlIG9i dmlvdXMgKGFuZCBhdm9pZCByZXBldGl0aW9uKSwgZm9yIGFsbCBvZiB0aGVzZSB2YXJpb3VzCj4g ZXJyb3IgY2FzZXMuCj4gCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICJnY2Nfaml0X2NvbnRleHRfbmV3X2FycmF5X2NvbnN0cnVjdG9yOiBhcnJheQo+ID4gZWxlbWVu dCAiCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJ2YWx1ZSB0eXBl cyBkaWZmZXIgZnJvbSB0eXBlcyBpbiAndmFsdWVzJwo+ID4gKGVsZW1lbnQgIgo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAidHlwZTogaW50KSgndmFsdWVzJyB0eXBl OiBmbG9hdCkiKTsKPiA+ICt9Cj4gCj4gWy4uLnNuaXAuLi5dCj4gCj4gPiBkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9qaXQuZGcvdGVzdC1lcnJvci1jdG9yLXVuaW9uLXdyb25nLQo+ID4gZmll bGQtbmFtZS5jIGIvZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvdGVzdC1lcnJvci1jdG9yLXVuaW9uLXdy b25nLQo+ID4gZmllbGQtbmFtZS5jCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXgg MDAwMDAwMDAwMDAuLjJiZjhlZTQwMjNlCj4gPiAtLS0gL2Rldi9udWxsCj4gPiArKysgYi9nY2Mv dGVzdHN1aXRlL2ppdC5kZy90ZXN0LWVycm9yLWN0b3ItdW5pb24td3JvbmctZmllbGQtbmFtZS5j Cj4gCj4gcy93cm9uZy1maWVsZC1uYW1lL3dyb25nLWZpZWxkLW9iai8KPiAKPiB0byBtYXRjaCB0 aGUgc3RydWN0IGV4YW1wbGUgKGdpdmVuIHRoYXQgdGhlIGlzc3VlIGJlaW5nIHRlc3RlZCBmb3Ig aXMKPiB0aGF0IGl0J3MgdGhlIHdyb25nIG9iamVjdCwgcmF0aGVyIHRoYW4gdGhlIHdyb25nIG5h bWUpLgo+IAo+IAo+IFsuLi5zbmlwLi4uXQo+IAo+ID4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvaml0LmRnL3Rlc3QtZXJyb3ItZ2xvYmFsLWluaXQtdG9vLXNtYWxsLQo+ID4gYXJyYXkuYyBi L2djYy90ZXN0c3VpdGUvaml0LmRnL3Rlc3QtZXJyb3ItZ2xvYmFsLWluaXQtdG9vLXNtYWxsLQo+ ID4gYXJyYXkuYwo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAwMDAwMDAw Li45OTZkOTU4Mzg2MAo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9q aXQuZGcvdGVzdC1lcnJvci1nbG9iYWwtaW5pdC10b28tc21hbGwtYXJyYXkuYwo+ID4gQEAgLTAs MCArMSw2NSBAQAo+ID4gKy8qCj4gPiArCj4gPiArwqAgVGVzdCB0aGF0IHRoZSBwcm9wZXIgZXJy b3IgaXMgdHJpZ2dlcmVkIHdoZW4gd2UgaW5pdGlhbGl6ZQo+ID4gK8KgIGEgZ2xvYmFsIHdpdGgg YW5vdGhlciBub24tY29uc3QgZ2xvYmFsJ3MgcnZhbHVlLgo+IAo+IEkgdGhpbmsgdGhpcyBjb21t ZW50IGlzIHdyb25nOyB0aGUgZmlsZW5hbWUgYW5kIGNvZGUgc3VnZ2VzdCB0aGlzIGlzCj4gdGVz dGluZyBzb21ldGhpbmcgZWxzZS7CoCBMb29rcyBsaWtlIGEgY29weSZwYXN0ZSBlcnJvciBmcm9t IHRoZQo+IGNvbW1lbnQKPiBpbiB0ZXN0LWVycm9yLWdsb2JhbC1sdmFsdWUtaW5pdC5jCj4gCj4g PiArCj4gPiArwqAgVXNpbmcgZ2NjX2ppdF9nbG9iYWxfc2V0X2luaXRpYWxpemVyX3J2YWx1ZSgp Cj4gPiArCj4gPiArKi8KPiA+ICsKPiA+ICsjaW5jbHVkZSA8c3RkbGliLmg+Cj4gPiArI2luY2x1 ZGUgPHN0ZGlvLmg+Cj4gPiArCj4gPiArI2luY2x1ZGUgImxpYmdjY2ppdC5oIgo+ID4gKyNpbmNs dWRlICJoYXJuZXNzLmgiCj4gPiArCj4gPiArdm9pZAo+ID4gK2NyZWF0ZV9jb2RlIChnY2Nfaml0 X2NvbnRleHQgKmN0eHQsIHZvaWQgKnVzZXJfZGF0YSkKPiA+ICt7IC8qIGZsb2F0IGZvb1sxXSA9 IHsxLDJ9OyAqLwo+ID4gKwo+ID4gK8KgIGdjY19qaXRfdHlwZSAqZmxvYXRfdHlwZSA9IGdjY19q aXRfY29udGV4dF9nZXRfdHlwZSAoY3R4dCwKPiA+ICvCoMKgwqAgR0NDX0pJVF9UWVBFX0ZMT0FU KTsKPiA+ICvCoCBnY2Nfaml0X3R5cGUgKmFycl90eXBlID0gZ2NjX2ppdF9jb250ZXh0X25ld19h cnJheV90eXBlIChjdHh0LAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIDAsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiA+IGZsb2F0X3R5cGUsCj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMSk7Cj4gPiArwqAgZ2Nj X2ppdF9ydmFsdWUgKnJ2YWxfMSA9IGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVlX2Zyb21faW50 ICgKPiA+ICvCoMKgwqAgY3R4dCwgZmxvYXRfdHlwZSwgMSk7Cj4gPiArwqAgZ2NjX2ppdF9ydmFs dWUgKnJ2YWxfMiA9IGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVlX2Zyb21faW50ICgKPiA+ICvC oMKgwqAgY3R4dCwgZmxvYXRfdHlwZSwgMik7Cj4gPiArCj4gPiArwqAgZ2NjX2ppdF9ydmFsdWUg KnZhbHVlc1tdID0ge3J2YWxfMSwgcnZhbF8yfTsKPiA+ICsKPiA+ICvCoCBnY2Nfaml0X3J2YWx1 ZSAqY3RvciA9IGdjY19qaXRfY29udGV4dF9uZXdfYXJyYXlfY29uc3RydWN0b3IKPiA+IChjdHh0 LAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAwLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+ID4gYXJyX3R5cGUsCj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDIs Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgCj4gPiB2YWx1ZXMpOwo+ID4gK8KgIGlmICghY3RvcikKPiA+ICvCoMKgwqAg cmV0dXJuOwo+ID4gKwo+ID4gK8KgIGdjY19qaXRfbHZhbHVlICpmb28gPcKgIGdjY19qaXRfY29u dGV4dF9uZXdfZ2xvYmFsICgKPiA+ICvCoMKgwqAgY3R4dCwgTlVMTCwKPiA+ICvCoMKgwqAgR0ND X0pJVF9HTE9CQUxfRVhQT1JURUQsCj4gPiArwqDCoMKgIGFycl90eXBlLAo+ID4gK8KgwqDCoCAi Z2xvYmFsX2Zsb2F0YXJyXzEyIik7Cj4gPiArwqAgZ2NjX2ppdF9nbG9iYWxfc2V0X2luaXRpYWxp emVyX3J2YWx1ZSAoZm9vLCBjdG9yKTsKPiA+ICt9Cj4gPiArCj4gPiArdm9pZAo+ID4gK3Zlcmlm eV9jb2RlIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIGdjY19qaXRfcmVzdWx0ICpyZXN1bHQpCj4g PiArewo+ID4gK8KgIC8qIEVuc3VyZSB0aGF0IHRoZSBiYWQgQVBJIHVzYWdlIHByZXZlbnRzIHRo ZSBBUEkgZ2l2aW5nIGEgYm9ndXMKPiA+ICvCoMKgwqDCoCByZXN1bHQgYmFjay7CoCAqLwo+ID4g K8KgIENIRUNLX1ZBTFVFIChyZXN1bHQsIE5VTEwpOwo+ID4gKwo+ID4gK8KgIC8qIFZlcmlmeSB0 aGF0IHRoZSBjb3JyZWN0IGVycm9yIG1lc3NhZ2Ugd2FzIGVtaXR0ZWQuICovCj4gPiArwqAgQ0hF Q0tfU1RSSU5HX1ZBTFVFIChnY2Nfaml0X2NvbnRleHRfZ2V0X2ZpcnN0X2Vycm9yIChjdHh0KSwK PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgImdjY19qaXRfY29udGV4 dF9uZXdfYXJyYXlfY29uc3RydWN0b3I6IGFycmF5ICIKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgImNvbnN0cnVjdG9yIGhhcyBtb3JlIHZhbHVlcyB0aGFuIHRoZSBh cnJheQo+ID4gdHlwZSdzICIKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgImxlbmd0aCAoYXJyYXkgdHlwZSBsZW5ndGg6IDEsIGNvbnN0cnVjdG9yCj4gPiBsZW5ndGg6 IDIpIik7Cj4gPiArwqAgQ0hFQ0tfU1RSSU5HX1ZBTFVFIChnY2Nfaml0X2NvbnRleHRfZ2V0X2xh c3RfZXJyb3IgKGN0eHQpLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAiZ2NjX2ppdF9jb250ZXh0X25ld19hcnJheV9jb25zdHJ1Y3RvcjogYXJyYXkgIgo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiY29uc3RydWN0b3IgaGFzIG1vcmUg dmFsdWVzIHRoYW4gdGhlIGFycmF5Cj4gPiB0eXBlJ3MgIgo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAibGVuZ3RoIChhcnJheSB0eXBlIGxlbmd0aDogMSwgY29uc3Ry dWN0b3IKPiA+IGxlbmd0aDogMikiKTsKPiA+ICt9Cj4gCj4gWy4uLnNuaXAuLi5dCj4gCj4gPiBk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvdGVzdC1nbG9iYWwtaW5pdC1ydmFsdWUu Ywo+ID4gYi9nY2MvdGVzdHN1aXRlL2ppdC5kZy90ZXN0LWdsb2JhbC1pbml0LXJ2YWx1ZS5jCj4g PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMDAwMDAuLjIxNjc1YWM5YWNm Cj4gPiAtLS0gL2Rldi9udWxsCj4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2ppdC5kZy90ZXN0LWds b2JhbC1pbml0LXJ2YWx1ZS5jCj4gPiBAQCAtMCwwICsxLDE1NjMgQEAKPiA+ICsvKiBUaGlzIHRl c3RjYXNlIGNoZWNrcyB0aGF0Cj4gPiBnY2Nfaml0X2dsb2JhbF9zZXRfaW5pdGlhbGl6ZXJfcnZh bHVlKCkgd29ya3MKPiA+ICvCoMKgIHdpdGggcnZhbHVlcywgZXNwZWNpYWxseSB3aXRoCj4gPiBn Y2Nfaml0X2NvbnRleHRfbmV3XypfY29uc3RydWN0b3IoKSBmb3IKPiA+ICvCoMKgIHN0cnVjdCwg dW5pb25zIGFuZCBhcnJheXMuICovCj4gCj4gWy4uLnNuaXAuLi5dCj4gCj4gVGhlIG9yZGVyIGlu IHdoaWNoIHlvdSBjcmVhdGUgdGhpbmdzIGluIGNyZWF0ZV9jb2RlIGlzbid0IHF1aXRlIHRoZQo+ IHNhbWUgYXMgdGhlIG9yZGVyIGluIHdoaWNoIHlvdSBjaGVjayB0aGluZ3MgaW4gdmVyaWZ5X2Nv ZGUuwqAgSXMgaXQKPiBwb3NzaWJsZSB0byByZW9yZGVyIHRoaW5ncyBzbyB0aGF0IHRoZXNlIGFy ZSBjb25zaXN0ZW50P8KgIFRoYXQgd291bGQKPiBtYWtlIGl0IGVhc2llciB0byBjb21wYXJlIHRo ZSBsaWJnY2NqaXQgY2FsbHMgd2l0aCB0aGUgZXhwZWN0ZWQKPiBiZWhhdmlvci4KPiAKPiBUaGFu a3MgZm9yIGFsbCB0aGUgdGVzdCBjb3ZlcmFnZSwgQlRXIC0gYm90aCBvZiB2YWxpZCB1c2FnZSBh bmQKPiBlcnJvci0KPiBoYW5kbGluZyAtIGl0IG1ha2VzIG1lIG11Y2ggaGFwcGllciBhYm91dCB0 aGUgcGF0Y2guCj4gCj4gWy4uLnNuaXAuLi5dCj4gCj4gSSB3b3VsZCBzYXkgIk9LIGZvciB0cnVu aywgd2l0aCB0aG9zZSBuaXRzIGZpeGVkIiwgYnV0IEkgd2FudCB0byBoZWFyCj4gQW50b25pJ3Mg b3BpbmlvbiBvbiB3aGV0aGVyIHRoaXMgd29ya3MgZm9yIGhpbSBmb3IgdGhlIHJ1c3RjIHBsdWdp biwKPiBvcgo+IGlmIGhlIG5lZWRzIGZ1cnRoZXIgY2hhbmdlcy7CoCBBbnRvbmkgLSBkb2VzIHRo aXMgcGF0Y2ggd29yayBmb3IgeW91Pwo+IAo+IFRoYW5rcyBhZ2FpbiBmb3IgdGhlIHBhdGNoOyB0 aGlzIGlzIGxvb2tpbmcgY2xvc2UgdG8gcmVhZHk7IGhvcGUgdGhlCj4gYWJvdmUgbWFrZXMgc2Vu c2UuCj4gRGF2ZQo+IAo+IAo+IMKgwqDCoCAKCg==