From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from xry111.site (xry111.site [IPv6:2001:470:683e::1]) by sourceware.org (Postfix) with ESMTPS id 2CC393858D32 for ; Tue, 19 Sep 2023 07:31:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2CC393858D32 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=xry111.site Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=xry111.site DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=xry111.site; s=default; t=1695108695; bh=CMDvvjrKRZmyQBFzISh2swr56dAtKM0IhG5QlDiMnn4=; h=Subject:From:To:Date:In-Reply-To:References:From; b=AnGMe6kXoIvcqpVQZ/ngozwnquB/AqPTVe9pbU/DLRNhelmrOqvXrjqOL8U+/F+Sk z+j4cW0I5KlyyfK/HSwYhtkKF3UBu5po9JYJCtqE8eM8Z6pf4k9yxq+q0EUHbtdDjO dih32OGhpcLkF081arOn2+z9FNj0tLXc3yjLkyT0= Received: from [IPv6:240e:358:11a5:1100:dc73:854d:832e:4] (unknown [IPv6:240e:358:11a5:1100:dc73:854d:832e:4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature ECDSA (P-384) server-digest SHA384) (Client did not present a certificate) (Authenticated sender: xry111@xry111.site) by xry111.site (Postfix) with ESMTPSA id 066FD659C0 for ; Tue, 19 Sep 2023 03:31:33 -0400 (EDT) Message-ID: <1a4f7fdbde6ff8f4a36426701bc5d68bc855d7e8.camel@xry111.site> Subject: PING^5: [PATCH] rtl-optimization/110939 Really fix narrow comparison of memory and constant From: Xi Ruoyao To: gcc-patches@gcc.gnu.org Date: Tue, 19 Sep 2023 15:31:29 +0800 In-Reply-To: <6b775391962e6fd035da3815db32a0465511b08a.camel@xry111.site> References: <20230810130402.752335-2-stefansf@linux.ibm.com> <49f59333ae7a3fc1ff6ea03244da3dcf802764e3.camel@xry111.site> <6b775391962e6fd035da3815db32a0465511b08a.camel@xry111.site> Autocrypt: addr=xry111@xry111.site; prefer-encrypt=mutual; keydata=mDMEYnkdPhYJKwYBBAHaRw8BAQdAsY+HvJs3EVKpwIu2gN89cQT/pnrbQtlvd6Yfq7egugi0HlhpIFJ1b3lhbyA8eHJ5MTExQHhyeTExMS5zaXRlPoiTBBMWCgA7FiEEkdD1djAfkk197dzorKrSDhnnEOMFAmJ5HT4CGwMFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQrKrSDhnnEOPHFgD8D9vUToTd1MF5bng9uPJq5y3DfpcxDp+LD3joA3U2TmwA/jZtN9xLH7CGDHeClKZK/ZYELotWfJsqRcthOIGjsdAPuDgEYnkdPhIKKwYBBAGXVQEFAQEHQG+HnNiPZseiBkzYBHwq/nN638o0NPwgYwH70wlKMZhRAwEIB4h4BBgWCgAgFiEEkdD1djAfkk197dzorKrSDhnnEOMFAmJ5HT4CGwwACgkQrKrSDhnnEOPjXgD/euD64cxwqDIqckUaisT3VCst11RcnO5iRHm6meNIwj0BALLmWplyi7beKrOlqKfuZtCLbiAPywGfCNg8LOTt4iMD Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.50.0 MIME-Version: 1.0 X-Spam-Status: No, score=-7.5 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,LIKELY_SPAM_FROM,SPF_HELO_PASS,SPF_PASS,TXREP 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: UGluZ141LgoKPiA+ID4gT24gVGh1LCBBdWcgMTAsIDIwMjMgYXQgMDM6MDQ6MDNQTSArMDIwMCwg U3RlZmFuIFNjaHVsemUgRnJpZWxpbmdoYXVzIHdyb3RlOgo+ID4gPiA+IEluIHRoZSBmb3JtZXIg Zml4IGluIGNvbW1pdCA0MWVmNWEzNDE2MTM1NjgxNzgwN2JlM2EyZTUxZmJkYmU1NzVhZTg1IEkK PiA+ID4gPiBjb21wbGV0ZWx5IG1pc3NlZCB0aGUgZmFjdCB0aGF0IHRoZSBub3JtYWwgZm9ybSBv ZiBhIGdlbmVyYXRlZCBjb25zdGFudCBmb3IgYQo+ID4gPiA+IG1vZGUgd2l0aCBmZXdlciBiaXRz IHRoYW4gaW4gSE9TVF9XSURFX0lOVCBpcyBhIHNpZ24gZXh0ZW5kZWQgdmVyc2lvbiBvZiB0aGUK PiA+ID4gPiBhY3R1YWwgY29uc3RhbnQuwqAgVGhpcyBldmVuIGhvbGRzIHRydWUgZm9yIHVuc2ln bmVkIGNvbnN0YW50cy4KPiA+ID4gPiAKPiA+ID4gPiBGaXhlZCBieSBtYXNraW5nIG91dCB0aGUg dXBwZXIgYml0cyBmb3IgdGhlIGluY29taW5nIGNvbnN0YW50IGFuZCBzaWduCj4gPiA+ID4gZXh0 ZW5kaW5nIHRoZSByZXN1bHRpbmcgdW5zaWduZWQgY29uc3RhbnQuCj4gPiA+ID4gCj4gPiA+ID4g Qm9vdHN0cmFwcGVkIGFuZCByZWd0ZXN0ZWQgb24geDY0IGFuZCBzMzkweC7CoCBPayBmb3IgbWFp bmxpbmU/Cj4gPiA+ID4gCj4gPiA+ID4gV2hpbGUgcmVhZGluZyBleGlzdGluZyBvcHRpbWl6YXRp b25zIGluIGNvbWJpbmUgSSBzdHVtYmxlZCBhY3Jvc3MgdHdvCj4gPiA+ID4gb3B0aW1pemF0aW9u cyB3aGVyZSBlaXRoZXIgbXkgaW50dWl0aW9uIGFib3V0IHRoZSByZXByZXNlbnRhdGlvbiBvZgo+ ID4gPiA+IHVuc2lnbmVkIGludGVnZXJzIHZpYSBhIGNvbnN0X2ludCBydHggaXMgd3JvbmcsIHdo aWNoIHRoZW4gaW4gdHVybiB3b3VsZAo+ID4gPiA+IHByb2JhYmx5IGFsc28gbWVhbiB0aGF0IHRo aXMgcGF0Y2ggaXMgd3JvbmcsIG9yIHRoYXQgdGhlIG9wdGltaXphdGlvbnMKPiA+ID4gPiBhcmUg bWlzc2VkIHNvbWV0aW1lcy7CoCBJbiBvdGhlciB3b3JkcyBpbiB0aGUgZm9sbG93aW5nIEkgd291 bGQgYXNzdW1lCj4gPiA+ID4gdGhhdCB0aGUgdXBwZXIgYml0cyBhcmUgbWFza2VkIG91dDoKPiA+ ID4gPiAKPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL2NvbWJpbmUuY2MgYi9nY2MvY29tYmluZS5j Ywo+ID4gPiA+IGluZGV4IDQ2OGI3ZmRlOTExLi44MGM0ZmYwZmJhZiAxMDA2NDQKPiA+ID4gPiAt LS0gYS9nY2MvY29tYmluZS5jYwo+ID4gPiA+ICsrKyBiL2djYy9jb21iaW5lLmNjCj4gPiA+ID4g QEAgLTExOTIzLDcgKzExOTIzLDcgQEAgc2ltcGxpZnlfY29tcGFyZV9jb25zdCAoZW51bSBydHhf Y29kZSBjb2RlLCBtYWNoaW5lX21vZGUgbW9kZSwKPiA+ID4gPiDCoMKgwqDCoMKgwqAgLyogKHVu c2lnbmVkKSA8IDB4ODAwMDAwMDAgaXMgZXF1aXZhbGVudCB0byA+PSAwLsKgICovCj4gPiA+ID4g wqDCoMKgwqDCoMKgIGVsc2UgaWYgKGlzX2EgPHNjYWxhcl9pbnRfbW9kZT4gKG1vZGUsICZpbnRf bW9kZSkKPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICYmIEdFVF9NT0RFX1BS RUNJU0lPTiAoaW50X21vZGUpIC0gMSA8IEhPU1RfQklUU19QRVJfV0lERV9JTlQKPiA+ID4gPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJiYgKCh1bnNpZ25lZCBIT1NUX1dJREVfSU5UKSBj b25zdF9vcAo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmJiAoKCh1bnNpZ25l ZCBIT1NUX1dJREVfSU5UKSBjb25zdF9vcCAmIEdFVF9NT0RFX01BU0sgKGludF9tb2RlKSkKPiA+ ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgPT0gSE9TVF9XSURFX0lO VF8xVSA8PCAoR0VUX01PREVfUFJFQ0lTSU9OIChpbnRfbW9kZSkgLSAxKSkpCj4gPiA+ID4gwqDC oMKgwqDCoMKgwqAgewo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdF9vcCA9IDA7Cj4g PiA+ID4gQEAgLTExOTYyLDcgKzExOTYyLDcgQEAgc2ltcGxpZnlfY29tcGFyZV9jb25zdCAoZW51 bSBydHhfY29kZSBjb2RlLCBtYWNoaW5lX21vZGUgbW9kZSwKPiA+ID4gPiDCoMKgwqDCoMKgwqAg LyogKHVuc2lnbmVkKSA+PSAweDgwMDAwMDAwIGlzIGVxdWl2YWxlbnQgdG8gPCAwLsKgICovCj4g PiA+ID4gwqDCoMKgwqDCoMKgIGVsc2UgaWYgKGlzX2EgPHNjYWxhcl9pbnRfbW9kZT4gKG1vZGUs ICZpbnRfbW9kZSkKPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICYmIEdFVF9N T0RFX1BSRUNJU0lPTiAoaW50X21vZGUpIC0gMSA8IEhPU1RfQklUU19QRVJfV0lERV9JTlQKPiA+ ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJiYgKCh1bnNpZ25lZCBIT1NUX1dJREVf SU5UKSBjb25zdF9vcAo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmJiAoKCh1 bnNpZ25lZCBIT1NUX1dJREVfSU5UKSBjb25zdF9vcCAmIEdFVF9NT0RFX01BU0sgKGludF9tb2Rl KSkKPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgPT0gSE9TVF9X SURFX0lOVF8xVSA8PCAoR0VUX01PREVfUFJFQ0lTSU9OIChpbnRfbW9kZSkgLSAxKSkpCj4gPiA+ ID4gwqDCoMKgwqDCoMKgwqAgewo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdF9vcCA9 IDA7Cj4gPiA+ID4gCj4gPiA+ID4gRm9yIGV4YW1wbGUsIHdoaWxlIGJvb3RzdHJhcHBpbmcgb24g eDY0IHRoZSBvcHRpbWl6YXRpb24gaXMgbWlzc2VkIHNpbmNlCj4gPiA+ID4gYSBMVFUgY29tcGFy aXNvbiBpbiBRSW1vZGUgaXMgZG9uZSBhbmQgdGhlIGNvbnN0YW50IGVxdWFscwo+ID4gPiA+IDB4 ZmZmZmZmZmZmZmZmZmY4MC4KPiA+ID4gPiAKPiA+ID4gPiBTb3JyeSBmb3IgaW5saW5pbmcgYW5v dGhlciBwYXRjaCwgYnV0IEkgd291bGQgcmVhbGx5IGxpa2UgdG8gbWFrZSBzdXJlCj4gPiA+ID4g dGhhdCBteSB1bmRlcnN0YW5kaW5nIGlzIGNvcnJlY3QsIG5vdywgYmVmb3JlIEkgY29tZSB1cCB3 aXRoIGFub3RoZXIKPiA+ID4gPiBwYXRjaC7CoCBUaHVzIGl0IHdvdWxkIGJlIGdyZWF0IGlmIHNv bWVvbmUgY291bGQgc2hlZCBzb21lIGxpZ2h0IG9uIHRoaXMuCj4gPiA+ID4gCj4gPiA+ID4gZ2Nj L0NoYW5nZUxvZzoKPiA+ID4gPiAKPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgKiBjb21iaW5lLmNj IChzaW1wbGlmeV9jb21wYXJlX2NvbnN0KTogUHJvcGVybHkgaGFuZGxlIHVuc2lnbmVkCj4gPiA+ ID4gwqDCoMKgwqDCoMKgwqDCoGNvbnN0YW50cyB3aGlsZSBuYXJyb3dpbmcgY29tcGFyaXNvbiBv ZiBtZW1vcnkgYW5kIGNvbnN0YW50cy4KPiA+ID4gPiAtLS0KPiA+ID4gPiDCoGdjYy9jb21iaW5l LmNjIHwgMTkgKysrKysrKysrKy0tLS0tLS0tLQo+ID4gPiA+IMKgMSBmaWxlIGNoYW5nZWQsIDEw IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCj4gPiA+ID4gCj4gPiA+ID4gZGlmZiAtLWdp dCBhL2djYy9jb21iaW5lLmNjIGIvZ2NjL2NvbWJpbmUuY2MKPiA+ID4gPiBpbmRleCBlNDZkMjAy ZDBhNy4uNDY4YjdmZGU5MTEgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvZ2NjL2NvbWJpbmUuY2MKPiA+ ID4gPiArKysgYi9nY2MvY29tYmluZS5jYwo+ID4gPiA+IEBAIC0xMjAwMywxNCArMTIwMDMsMTUg QEAgc2ltcGxpZnlfY29tcGFyZV9jb25zdCAoZW51bSBydHhfY29kZSBjb2RlLCBtYWNoaW5lX21v ZGUgbW9kZSwKPiA+ID4gPiDCoMKgwqDCoMKgwqAgJiYgIU1FTV9WT0xBVElMRV9QIChvcDApCj4g PiA+ID4gwqDCoMKgwqDCoMKgIC8qIFRoZSBvcHRpbWl6YXRpb24gbWFrZXMgb25seSBzZW5zZSBm b3IgY29uc3RhbnRzIHdoaWNoIGFyZSBiaWcgZW5vdWdoCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDC oCBzbyB0aGF0IHdlIGhhdmUgYSBjaGFuY2UgdG8gY2hvcCBvZmYgc29tZXRoaW5nIGF0IGFsbC7C oCAqLwo+ID4gPiA+IC3CoMKgwqDCoMKgICYmICh1bnNpZ25lZCBIT1NUX1dJREVfSU5UKSBjb25z dF9vcCA+IDB4ZmYKPiA+ID4gPiAtwqDCoMKgwqDCoCAvKiBCYWlsIG91dCwgaWYgdGhlIGNvbnN0 YW50IGRvZXMgbm90IGZpdCBpbnRvIElOVF9NT0RFLsKgICovCj4gPiA+ID4gLcKgwqDCoMKgwqAg JiYgKHVuc2lnbmVkIEhPU1RfV0lERV9JTlQpIGNvbnN0X29wCj4gPiA+ID4gLcKgwqDCoMKgwqDC oMKgIDwgKChIT1NUX1dJREVfSU5UXzFVIDw8IChHRVRfTU9ERV9QUkVDSVNJT04gKGludF9tb2Rl KSAtIDEpIDw8IDEpIC0gMSkKPiA+ID4gPiArwqDCoMKgwqDCoCAmJiAoKHVuc2lnbmVkIEhPU1Rf V0lERV9JTlQpIGNvbnN0X29wICYgR0VUX01PREVfTUFTSyAoaW50X21vZGUpKSA+IDB4ZmYKPiA+ ID4gPiDCoMKgwqDCoMKgwqAgLyogRW5zdXJlIHRoYXQgd2UgZG8gbm90IG92ZXJmbG93IGR1cmlu ZyBub3JtYWxpemF0aW9uLsKgICovCj4gPiA+ID4gLcKgwqDCoMKgwqAgJiYgKGNvZGUgIT0gR1RV IHx8ICh1bnNpZ25lZCBIT1NUX1dJREVfSU5UKSBjb25zdF9vcCA8IEhPU1RfV0lERV9JTlRfTTFV KSkKPiA+ID4gPiArwqDCoMKgwqDCoCAmJiAoY29kZSAhPSBHVFUKPiA+ID4gPiArwqDCoMKgwqDC oMKgwqDCoCB8fCAoKHVuc2lnbmVkIEhPU1RfV0lERV9JTlQpIGNvbnN0X29wICYgR0VUX01PREVf TUFTSyAoaW50X21vZGUpKQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDwgSE9TVF9X SURFX0lOVF9NMVUpCj4gPiA+ID4gK8KgwqDCoMKgwqAgJiYgdHJ1bmNfaW50X2Zvcl9tb2RlIChj b25zdF9vcCwgaW50X21vZGUpID09IGNvbnN0X29wKQo+ID4gPiA+IMKgwqDCoMKgIHsKPiA+ID4g PiAtwqDCoMKgwqDCoCB1bnNpZ25lZCBIT1NUX1dJREVfSU5UIG4gPSAodW5zaWduZWQgSE9TVF9X SURFX0lOVCkgY29uc3Rfb3A7Cj4gPiA+ID4gK8KgwqDCoMKgwqAgdW5zaWduZWQgSE9TVF9XSURF X0lOVCBuCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgPSAodW5zaWduZWQgSE9TVF9XSURFX0lOVCkg Y29uc3Rfb3AgJiBHRVRfTU9ERV9NQVNLIChpbnRfbW9kZSk7Cj4gPiA+ID4gwqDCoMKgwqDCoMKg IGVudW0gcnR4X2NvZGUgYWRqdXN0ZWRfY29kZTsKPiA+ID4gPiDCoAo+ID4gPiA+IMKgwqDCoMKg wqDCoCAvKiBOb3JtYWxpemUgY29kZSB0byBlaXRoZXIgTEVVIG9yIEdFVS7CoCAqLwo+ID4gPiA+ IEBAIC0xMjA1MSwxNSArMTIwNTIsMTUgQEAgc2ltcGxpZnlfY29tcGFyZV9jb25zdCAoZW51bSBy dHhfY29kZSBjb2RlLCBtYWNoaW5lX21vZGUgbW9kZSwKPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoEhPU1RfV0lERV9JTlRfUFJJTlRfSEVYICIpIHRvIChNRU0gJXMgIgo+ ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgSE9TVF9XSURFX0lOVF9QUklO VF9IRVggIikuXG4iLCBHRVRfTU9ERV9OQU1FIChpbnRfbW9kZSksCj4gPiA+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBHRVRfTU9ERV9OQU1FIChuYXJyb3dfbW9kZV9pdGVyKSwg R0VUX1JUWF9OQU1FIChjb2RlKSwKPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgKHVuc2lnbmVkIEhPU1RfV0lERV9JTlQpY29uc3Rfb3AsIEdFVF9SVFhfTkFNRSAoYWRqdXN0 ZWRfY29kZSksCj4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4pOwo+ID4g PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAodW5zaWduZWQgSE9TVF9XSURFX0lO VCkgY29uc3Rfb3AgJiBHRVRfTU9ERV9NQVNLIChpbnRfbW9kZSksCj4gPiA+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoEdFVF9SVFhfTkFNRSAoYWRqdXN0ZWRfY29kZSksIG4pOwo+ ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDC oCBwb2x5X2ludDY0IG9mZnNldCA9IChCWVRFU19CSUdfRU5ESUFOCj4gPiA+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgID8gMAo+ ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCA6IChHRVRfTU9ERV9TSVpFIChpbnRfbW9kZSkKPiA+ID4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg LSBHRVRfTU9ERV9TSVpFIChuYXJyb3dfbW9kZV9pdGVyKSkpOwo+ID4gPiA+IMKgwqDCoMKgwqDC oMKgwqDCoCAqcG9wMCA9IGFkanVzdF9hZGRyZXNzX252IChvcDAsIG5hcnJvd19tb2RlX2l0ZXIs IG9mZnNldCk7Cj4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqAgKnBvcDEgPSBHRU5fSU5UIChuKTsK PiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoCAqcG9wMSA9IGdlbl9pbnRfbW9kZSAobiwgbmFycm93 X21vZGVfaXRlcik7Cj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBhZGp1c3RlZF9j b2RlOwo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiA+ID4gwqDCoMKgwqAgfQo+ID4gPiA+ IC0tIAo+ID4gPiA+IDIuNDEuMAo+ID4gPiA+IAo+ID4gCj4gPiAtLSAKPiA+IFhpIFJ1b3lhbyA8 eHJ5MTExQHhyeTExMS5zaXRlPgo+ID4gU2Nob29sIG9mIEFlcm9zcGFjZSBTY2llbmNlIGFuZCBU ZWNobm9sb2d5LCBYaWRpYW4gVW5pdmVyc2l0eQoKCi0tIApYaSBSdW95YW8gPHhyeTExMUB4cnkx MTEuc2l0ZT4KU2Nob29sIG9mIEFlcm9zcGFjZSBTY2llbmNlIGFuZCBUZWNobm9sb2d5LCBYaWRp YW4gVW5pdmVyc2l0eQo=