From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sender3-pp-o97.zoho.com (sender3-pp-o97.zoho.com [136.143.184.97]) by sourceware.org (Postfix) with ESMTPS id B184C3858D33; Thu, 9 Nov 2023 22:27:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B184C3858D33 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=zoho.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=zoho.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org B184C3858D33 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=136.143.184.97 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1699568884; cv=pass; b=eT+CW3otInROOYUD0JeWuaCeLwBLUF01dooXhjCLx5VxLvg5AknRlsk5yT9wLadZltYS2wwJRnKoewtNoCziMCqwlcZgeQ+wgU9Ap1Ty4ALea0Z7pdM8K3w/olpgGMdHZr7fjUR43lMJ1lwhqvaVEp5JFfUxhRQiW1XEnili5o8= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1699568884; c=relaxed/simple; bh=+Bd7yJoZ3A6yc5VxVna14XcNC961Qq3AYoF4fOZvf/k=; h=DKIM-Signature:Message-ID:Subject:From:To:Date:MIME-Version; b=kLJ2qSvzXJ+oIG/m1tNSiHjVO63nhnFUsgBk1eA7CUUBw68Kx4qDzsSFRtSNXZXtPsiOMik6x3XYaEuCrRHMiAuQd2oaLFwPtwBEqzbXm0AdpOHgTtDy94koIWeGyHVlZYdJuWrgzxpWGw6hpugnZPvP4wLZI5X3pGF6GETS1zw= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; t=1699568870; cv=none; d=zohomail.com; s=zohoarc; b=Sn4eNaRdKYbjJ6aUL5Av6IXZf9bbhCrrZO/fYlblyVyFRGKnZJS8dMcefqAX3kvVYbcYSZ6eR3HUCxZb7XvzwelOR93cIKxRGBDiwuWUe/mjvSo1EWPXkKAtw3OD9psCjAC3B6mn4GSWty5KR3VhmLm1Q+lKttEjskbzPTikOkg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1699568870; h=Content-Type:Cc:Cc:Date:Date:From:From:MIME-Version:Message-ID:Subject:Subject:To:To:Message-Id:Reply-To; bh=kB/922gFjv+tRKujxwrdsMjB5gV5bweunEwEOKTGLa4=; b=AWt/1SYeytVowD9AWh3VKy5HeuNcKB2bOGgIGPY53ZfSdzlYQtLSDd2xbnSY1koU1mD9FTM0DNqirVXT/lCEzU/j16fR7iJUsJn5bzjCv91BDWUTU58dyjfucRaR5yYh8Pzb81dYAPKE7U08KOn0ZVEcUt646W8axYaC9MC7lIQ= 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= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1699568870; s=zm2022; d=zoho.com; i=bouanto@zoho.com; h=Message-ID:Subject:Subject:From:From:To:To:Cc:Cc:Date:Date:Content-Type:MIME-Version:Feedback-ID:Message-Id:Reply-To; bh=kB/922gFjv+tRKujxwrdsMjB5gV5bweunEwEOKTGLa4=; b=LHj3H5p6BuOqAECpRt7ZyBEhj4GMA69QoEQm2jqjLb5WWAr1Jxpe6oGbMsmhx9/G NV5ohnvP/9sCTmFcCqA/1ZK155/vmgtTPIyQU+zSsrWowne9G8+IhX+b36AQ52mEwS2 svkBUsbzIfVQkLbb74IeMDltAtsaNkvebGbTpkv4= Received: from [192.168.1.172] (38.87.11.6 [38.87.11.6]) by mx.zohomail.com with SMTPS id 1699568869336881.3167417341464; Thu, 9 Nov 2023 14:27:49 -0800 (PST) Message-ID: <8b0199d9835f568b7bcde41bf9432c21f604e489.camel@zoho.com> Subject: [PATCH] libgccjit: Add ability to get CPU features From: Antoni Boucher To: jit@gcc.gnu.org, gcc-patches@gcc.gnu.org Cc: David Malcolm Date: Thu, 09 Nov 2023 17:27:47 -0500 Autocrypt: addr=bouanto@zoho.com; prefer-encrypt=mutual; keydata=mQENBFOSMLQBCADO5aw6Ys8thMQUNzrwAnfJX2wbgWiz0pQ01DjYj22eeIpChkoZn6LWdt4dieq30u2rFi/yQzJ02foHwI2+aL9rU6xz/x4TwqyRJQGMOqklNc3R+pdXmH4WDQkQDWmLxvc07vu+zb8Tx5A6pMDh4J2ncCEhLEUcH39Yq/yg4eBnFwUX6N7kakvHrnScGNqhnSFCacoJeMJUAR+1G7VBSBd++jmnHLnx3mj7QkRZVECJUw2zqiv1yReCC6GU4SvqLjdqm5ZGeoWOqD/NHjBRoEeOVjzp6M/qOjjWRbkJVqmvgfcD8UytSSqqboR35YFT4L+rZt2ri3T12MJb3i5syCAXABEBAAG0IUFudG9uaSBCb3VjaGVyIDxib3VhbnRvQHpvaG8uY29tPokBVgQTAQgAQAIbIwcLCQgHAwIBBhUIAgkKCwQWAgMBAh4BAheAFiEEOELC4Uw1Jeb66YE6RVeGAwR4zcEFAlz4QM4FCRLMEZoACgkQRVeGAwR4zcFBQQf/afttJrA/puADQZhrDfkgr0MFvq6iB+GCy1b8BkXimk1TOXTPt87YLehSeijNu3JkYhl5eRc87BNfU9J87KfI/KIy6hZxqlDXk16FhW9bw/7wYEA0hpb3MUn7xLElXDT0ZHaD+KTe8Oun7qfzgx5RlL6r/WODf3CkSpO085R/rfeBqDEx9mVlhDWgq6Az3CZoD+3CqiCKVqmDuHTWz4kwrd9AM5eVcLvvLKnZIdoIp+G5Ao6BvaGlZyfenN1iOSjLy2NXNt4MnUt0lUYEP5KSIIRhHQ8xkUbj7eWUmaahkxhNb3fH3sAPwGnRZrPpb4rgYzNmSk63wWMh9M2xk+rLb7kBDQRTkjC0AQgAumZzsAV/UFWI+dpzebQfma36kKYZZFuseant5sq/HWP553XQ/U6ttJiKyN5MpCqtxvCAoRplf42YhlHuFqgf73WJxoJ6Y+sdyqoBSwlR+ gzAneAmsa8gmmY0wawH0Z2leazjKuS7mJjVEQZg0ZGsiCVRGeRnDqFGzDEzDc9ngWKSoTq0fKzlGy1X85OrtmUrvEbhSo6HP+FoeunHkIqrxu3w3vDoFEXxVQlKI6V3I4nCz5n6DB8WR3L7nsiiTnOiGirPw1ngvWFLW86kkA4FJpayc8Xl3va3SLY+2y4yuROboX2DVI4AC/Qeug/mDiBicPxkP6YfUartQRMe6obkEQARAQABiQE8BBgBCAAmAhsMFiEEOELC4Uw1Jeb66YE6RVeGAwR4zcEFAlz4QRsFCRLMEecACgkQRVeGAwR4zcE56ggAgTgrJInBKC+7552Dpccuo6Clh3wZfjlNLv9/6r5lKEbaNzaTrfhPiAP4WgnluIUmj8amOFLFJpj+BAVNOXpZ4D2R3o9ch8z7fot+fW4Yw+PKIxH4I2xEys8ndoEB3aiQwHjKcGIhkIU7uyMJFQr2aWjdTY0gmXw0YZueHOSLgo7uX4XKxB8fEO/yto/Tff2YBAAq+AtNwt+Gh5YS9rZw7rwUTWMi84yVOlc+zRE79E9NJkvdTwX7IJYo64VzIRNfgHsn7QNdVzuM1XIFHl+Glk6cIlI8s6BO7nEoCn3hTF104fQTAO3fEs+XXZOKXo2lk8faowEoPq5r58StrV0nyg== Content-Type: multipart/mixed; boundary="=-OU0D2uibXs/RA/y+6hy4" User-Agent: Evolution 3.50.1 MIME-Version: 1.0 X-Zoho-Virus-Status: 1 Feedback-ID: rr0801122801ac91a3b585204e5594f6840000938dc2753bd1830b60240109ef1b722704d4aacd5a70b086bec2:zu08011226a1a73813e817122dba249b4e0000e132e6f471e47874ad84babb01443e8ca775e9f2d4f320e3:rf080112328a9252bf2b024b54a2264f13000045138471e59465c5ccb60975b19ebf716ea20a6a783d71dd390301d43e85d655bdcce13b:ZohoMail X-ZohoMailClient: External X-Spam-Status: No, score=-11.8 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,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: --=-OU0D2uibXs/RA/y+6hy4 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi. This patch adds support for getting the CPU features in libgccjit (bug 112466) There's a TODO in the test: I'm not sure how to test that gcc_jit_target_info_arch returns the correct value since it is dependant on the CPU. Any idea on how to improve this? Also, I created a CStringHash to be able to have a std::unordered_set. Is there any built-in way of doing this? Thanks for the review. --=-OU0D2uibXs/RA/y+6hy4 Content-Disposition: attachment; filename="0001-libgccjit-Add-ability-to-get-CPU-features.patch" Content-Type: text/x-patch; name="0001-libgccjit-Add-ability-to-get-CPU-features.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAzMDJmOWYwYmIyMmRlYWUzZGViODI0OWE5MTI3NDQ3YzNlYzRmN2M3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmkgQm91Y2hlciA8Ym91YW50b0B6b2hvLmNvbT4KRGF0 ZTogTW9uLCAyNiBKdW4gMjAyMyAxODoyOToxNSAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIGxpYmdj Y2ppdDogQWRkIGFiaWxpdHkgdG8gZ2V0IENQVSBmZWF0dXJlcwoKZ2NjL0NoYW5nZUxvZzoKCVBS IGppdC8xMTI0NjYKCSogTWFrZWZpbGUuaW4gKHRtX2ppdF9maWxlX2xpc3QsIHRtX2ppdF9pbmNs dWRlX2xpc3QsIFRNX0pJVF9ILAoJSklUX1RBUkdFVF9ERUYsIEpJVF9UQVJHRVRfSCwgSklUX1RB UkdFVF9PQkpTKTogTmV3IHZhcmlhYmxlcy4KCSh0bV9qaXQuaCwgY3MtdG1faml0LmgsIGppdC9q aXQtdGFyZ2V0LWhvb2tzLWRlZi5oLAoJcy1qaXQtdGFyZ2V0LWhvb2tzLWRlZi1oKTogTmV3IHJ1 bGVzLgoJKHMtdG0tdGV4aSk6IEFsc28gY2hlY2sgdGltZXN0YW1wIG9uIGppdC10YXJnZXQuZGVm LgoJKGdlbmVyYXRlZF9maWxlcyk6IEFkZCBUTV9KSVRfSCBhbmQgaml0L2ppdC10YXJnZXQtaG9v a3MtZGVmLmguCgkoYnVpbGQvZ2VuaG9va3Mubyk6IEFsc28gZGVwZW5kIG9uIEpJVF9UQVJHRVRf REVGLgoJKiBjb25maWcuZ2NjICh0bV9qaXRfZmlsZSwgaml0X3RhcmdldF9vYmpzLCB0YXJnZXRf aGFzX3RhcmdldGppdG0pOgoJTmV3IHZhcmlhYmxlcy4KCSogY29uZmlnL2kzODYvdC1pMzg2IChp Mzg2LWppdC5vKTogTmV3IHJ1bGUuCgkqIGNvbmZpZy90LWxpbnV4IChsaW51eC1qaXQubyk6IE5l dyBydWxlLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZ3VyZS5hYyAodG1faml0 X2ZpbGVfbGlzdCwgdG1faml0X2luY2x1ZGVfbGlzdCwKCWppdF90YXJnZXRfb2Jqcyk6IEFkZCBz dWJzdGl0dXRlcy4KCSogZG9jL3RtLnRleGk6IFJlZ2VuZXJhdGUuCgkqIGRvYy90bS50ZXhpLmlu ICh0YXJnZXRqaXRtKTogRG9jdW1lbnQuCgkodGFyZ2V0X2hhc190YXJnZXRqaXRtKTogRG9jdW1l bnQuCgkqIGdlbmhvb2tzLmNjOiBJbmNsdWRlIGppdC9qaXQtdGFyZ2V0LmRlZi4KCSogY29uZmln L2RlZmF1bHQtaml0LmNjOiBOZXcgZmlsZS4KCSogY29uZmlnL2kzODYvaTM4Ni1qaXQuY2M6IE5l dyBmaWxlLgoJKiBjb25maWcvaTM4Ni9pMzg2LWppdC5oOiBOZXcgZmlsZS4KCSogY29uZmlnL2xp bnV4LWppdC5jYzogTmV3IGZpbGUuCgpnY2Mvaml0L0NoYW5nZUxvZzoKCVBSIGppdC8xMTI0NjYK CSogTWFrZS1sYW5nLmluIChKSVRfT0JKUyk6IE5ldyB2YXJpYWJsZS4KCSogaml0LXBsYXliYWNr LmNjIChyZXBsYXkpOiBJbmNsdWRlIGppdC10YXJnZXQuaCBhbmQgaW5pdGlhbGl6ZQoJdGFyZ2V0 LgoJKiBqaXQtcGxheWJhY2suaCAoY2xhc3MgZ2V0X3RhcmdldF9pbmZvKTogTmV3IGNsYXNzLgoJ KiBqaXQtcmVjb3JkaW5nLmNjIChyZWNvcmRpbmc6OmNvbnRleHQ6OmdldF90YXJnZXRfaW5mbyk6 IE5ldwoJbWV0aG9kLgoJKiBqaXQtcmVjb3JkaW5nLmggKHJlY29yZGluZzo6Y29udGV4dDo6Z2V0 X3RhcmdldF9pbmZvKTogTmV3CgltZXRob2QuCgkqIGxpYmdjY2ppdC5jYzogSW5jbHVkZSBqaXQt dGFyZ2V0LmguCgkoc3RydWN0IGdjY19qaXRfdGFyZ2V0X2luZm8pOiBOZXcgc3RydWN0LgoJKGdj Y19qaXRfY29udGV4dF9nZXRfdGFyZ2V0X2luZm8sIGdjY19qaXRfdGFyZ2V0X2luZm9fcmVsZWFz ZSwKCWdjY19qaXRfdGFyZ2V0X2luZm9fY3B1X3N1cHBvcnRzLCBnY2Nfaml0X3RhcmdldF9pbmZv X2FyY2gsCglnY2Nfaml0X3RhcmdldF9pbmZvX3N1cHBvcnRzXzEyOGJpdF9pbnQpOiBOZXcgZnVu Y3Rpb25zLgoJKiBsaWJnY2NqaXQuaCAoZ2NjX2ppdF9jb250ZXh0X2dldF90YXJnZXRfaW5mbywK CWdjY19qaXRfdGFyZ2V0X2luZm9fcmVsZWFzZSwgZ2NjX2ppdF90YXJnZXRfaW5mb19jcHVfc3Vw cG9ydHMsCglnY2Nfaml0X3RhcmdldF9pbmZvX2FyY2gsIGdjY19qaXRfdGFyZ2V0X2luZm9fc3Vw cG9ydHNfMTI4Yml0X2ludCk6CglOZXcgZnVuY3Rpb25zLgoJKiBsaWJnY2NqaXQubWFwIChMSUJH Q0NKSVRfQUJJXzI2KTogTmV3IEFCSSB0YWcuCgkqIGRvY3MvdG9waWNzL2NvbXBpbGF0aW9uLnJz dDogQWRkIGRvY3VtZW50YXRpb24gZm9yIHRoZQoJZnVuY3Rpb25zIGdjY19qaXRfY29udGV4dF9n ZXRfdGFyZ2V0X2luZm8sIGdjY19qaXRfdGFyZ2V0X2luZm9fcmVsZWFzZSwKCWdjY19qaXRfdGFy Z2V0X2luZm9fY3B1X3N1cHBvcnRzLCBnY2Nfaml0X3RhcmdldF9pbmZvX2FyY2gsCglnY2Nfaml0 X3RhcmdldF9pbmZvX3N1cHBvcnRzXzEyOGJpdF9pbnQuCgkqIGRvY3MvdG9waWNzL2NvbXBhdGli aWxpdHkucnN0IChMSUJHQ0NKSVRfQUJJXzI2KTogTmV3IEFCSSB0YWcuCgkqIGppdC10YXJnZXQt ZGVmLmg6IE5ldyBmaWxlLgoJKiBqaXQtdGFyZ2V0LmNjOiBOZXcgZmlsZS4KCSogaml0LXRhcmdl dC5kZWY6IE5ldyBmaWxlLgoJKiBqaXQtdGFyZ2V0Lmg6IE5ldyBmaWxlLgoKZ2NjL3Rlc3RzdWl0 ZS9DaGFuZ2VMb2c6CglQUiBqaXQvMTEyNDY2CgkqIGppdC5kZy9hbGwtbm9uLWZhaWxpbmctdGVz dHMuaDogTWVudGlvbgoJdGVzdC10YXJnZXQtaW5mby5jLgoJKiBqaXQuZGcvdGVzdC10YXJnZXQt aW5mby5jOiBOZXcgdGVzdC4KLS0tCiBnY2MvTWFrZWZpbGUuaW4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAyOSArKy0KIGdjYy9jb25maWcuZ2NjICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgIDIxICsrCiBnY2MvY29uZmlnL2RlZmF1bHQtaml0LmNjICAgICAgICAgICAg ICAgICAgICB8ICAyOSArKysKIGdjYy9jb25maWcvaTM4Ni9pMzg2LWppdC5jYyAgICAgICAgICAg ICAgICAgIHwgMTk1ICsrKysrKysrKysrKysrKysrKysKIGdjYy9jb25maWcvaTM4Ni9pMzg2LWpp dC5oICAgICAgICAgICAgICAgICAgIHwgIDIyICsrKwogZ2NjL2NvbmZpZy9pMzg2L3QtaTM4NiAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKwogZ2NjL2NvbmZpZy9saW51eC1qaXQuY2MgICAg ICAgICAgICAgICAgICAgICAgfCAgMzYgKysrKwogZ2NjL2NvbmZpZy90LWxpbnV4ICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDQgKwogZ2NjL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgMTQgKysKIGdjYy9jb25maWd1cmUuYWMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIDE0ICsrCiBnY2MvZG9jL3RtLnRleGkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAyNiArKysKIGdjYy9kb2MvdG0udGV4aS5pbiAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgIDE2ICsrCiBnY2MvZ2VuaG9va3MuY2MgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgMSArCiBnY2Mvaml0L01ha2UtbGFuZy5pbiAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgOCArLQogZ2NjL2ppdC9kb2NzL3RvcGljcy9jb21wYXRpYmlsaXR5LnJzdCAgICAg ICAgfCAgMTQgKysKIGdjYy9qaXQvZG9jcy90b3BpY3MvY29tcGlsYXRpb24ucnN0ICAgICAgICAg IHwgIDUxICsrKysrCiBnY2Mvaml0L2ppdC1wbGF5YmFjay5jYyAgICAgICAgICAgICAgICAgICAg ICB8ICAgMiArCiBnY2Mvaml0L2ppdC1wbGF5YmFjay5oICAgICAgICAgICAgICAgICAgICAgICB8 ICAxNyArLQogZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmNjICAgICAgICAgICAgICAgICAgICAgfCAg MTkgKysKIGdjYy9qaXQvaml0LXJlY29yZGluZy5oICAgICAgICAgICAgICAgICAgICAgIHwgICAz ICsKIGdjYy9qaXQvaml0LXRhcmdldC1kZWYuaCAgICAgICAgICAgICAgICAgICAgIHwgIDIwICsr CiBnY2Mvaml0L2ppdC10YXJnZXQuY2MgICAgICAgICAgICAgICAgICAgICAgICB8ICA4OSArKysr KysrKysKIGdjYy9qaXQvaml0LXRhcmdldC5kZWYgICAgICAgICAgICAgICAgICAgICAgIHwgIDUy ICsrKysrCiBnY2Mvaml0L2ppdC10YXJnZXQuaCAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3 MyArKysrKysrCiBnY2Mvaml0L2xpYmdjY2ppdC5jYyAgICAgICAgICAgICAgICAgICAgICAgICB8 ICA0MyArKysrCiBnY2Mvaml0L2xpYmdjY2ppdC5oICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICA2MCArKysrKysKIGdjYy9qaXQvbGliZ2Njaml0Lm1hcCAgICAgICAgICAgICAgICAgICAgICAg IHwgICA5ICsKIGdjYy90ZXN0c3VpdGUvaml0LmRnL2FsbC1ub24tZmFpbGluZy10ZXN0cy5oIHwg ICAzICsKIGdjYy90ZXN0c3VpdGUvaml0LmRnL3Rlc3QtdGFyZ2V0LWluZm8uYyAgICAgIHwgIDYz ICsrKysrKwogMjkgZmlsZXMgY2hhbmdlZCwgOTMxIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25z KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL2NvbmZpZy9kZWZhdWx0LWppdC5jYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGdjYy9jb25maWcvaTM4Ni9pMzg2LWppdC5jYwogY3JlYXRlIG1vZGUgMTAw NjQ0IGdjYy9jb25maWcvaTM4Ni9pMzg2LWppdC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL2Nv bmZpZy9saW51eC1qaXQuY2MKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2Mvaml0L2ppdC10YXJnZXQt ZGVmLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2Mvaml0L2ppdC10YXJnZXQuY2MKIGNyZWF0ZSBt b2RlIDEwMDY0NCBnY2Mvaml0L2ppdC10YXJnZXQuZGVmCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2Nj L2ppdC9qaXQtdGFyZ2V0LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2ppdC5k Zy90ZXN0LXRhcmdldC1pbmZvLmMKCmRpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2Mv TWFrZWZpbGUuaW4KaW5kZXggMjljZWMyMWM4MjUuLjcwMTY2MWZiYWEwIDEwMDY0NAotLS0gYS9n Y2MvTWFrZWZpbGUuaW4KKysrIGIvZ2NjL01ha2VmaWxlLmluCkBAIC02MDksNiArNjA5LDggQEAg dG1fZF9maWxlX2xpc3Q9QHRtX2RfZmlsZV9saXN0QAogdG1fZF9pbmNsdWRlX2xpc3Q9QHRtX2Rf aW5jbHVkZV9saXN0QAogdG1fcnVzdF9maWxlX2xpc3Q9QHRtX3J1c3RfZmlsZV9saXN0QAogdG1f cnVzdF9pbmNsdWRlX2xpc3Q9QHRtX3J1c3RfaW5jbHVkZV9saXN0QAordG1faml0X2ZpbGVfbGlz dD1AdG1faml0X2ZpbGVfbGlzdEAKK3RtX2ppdF9pbmNsdWRlX2xpc3Q9QHRtX2ppdF9pbmNsdWRl X2xpc3RACiBidWlsZF94bV9maWxlX2xpc3Q9QGJ1aWxkX3htX2ZpbGVfbGlzdEAKIGJ1aWxkX3ht X2luY2x1ZGVfbGlzdD1AYnVpbGRfeG1faW5jbHVkZV9saXN0QAogYnVpbGRfeG1fZGVmaW5lcz1A YnVpbGRfeG1fZGVmaW5lc0AKQEAgLTkwOCw2ICs5MTAsNyBAQCBUQ09ORklHX0ggPSB0Y29uZmln LmggJCh4bV9maWxlX2xpc3QpCiBUTV9QX0ggICAgPSB0bV9wLmggICAgJCh0bV9wX2ZpbGVfbGlz dCkgJChUUkVFX0gpCiBUTV9EX0ggICAgPSB0bV9kLmggICAgJCh0bV9kX2ZpbGVfbGlzdCkKIFRN X1JVU1RfSCA9IHRtX3J1c3QuaCAkKHRtX3J1c3RfZmlsZV9saXN0KQorVE1fSklUX0ggID0gdG1f aml0LmggICAgJCh0bV9qaXRfZmlsZV9saXN0KQogR1RNX0ggICAgID0gdG0uaCAgICAgICQodG1f ZmlsZV9saXN0KSBpbnNuLWNvbnN0YW50cy5oCiBUTV9IICAgICAgPSAkKEdUTV9IKSBpbnNuLWZs YWdzLmggJChPUFRJT05TX0gpCiAKQEAgLTk2NywxMSArOTcwLDEzIEBAIENfVEFSR0VUX0RFRiA9 IGMtZmFtaWx5L2MtdGFyZ2V0LmRlZiB0YXJnZXQtaG9va3MtbWFjcm9zLmgKIENPTU1PTl9UQVJH RVRfREVGID0gY29tbW9uL2NvbW1vbi10YXJnZXQuZGVmIHRhcmdldC1ob29rcy1tYWNyb3MuaAog RF9UQVJHRVRfREVGID0gZC9kLXRhcmdldC5kZWYgdGFyZ2V0LWhvb2tzLW1hY3Jvcy5oCiBSVVNU X1RBUkdFVF9ERUYgPSBydXN0L3J1c3QtdGFyZ2V0LmRlZiB0YXJnZXQtaG9va3MtbWFjcm9zLmgK K0pJVF9UQVJHRVRfREVGID0gaml0L2ppdC10YXJnZXQuZGVmIHRhcmdldC1ob29rcy1tYWNyb3Mu aAogVEFSR0VUX0ggPSAkKFRNX0gpIHRhcmdldC5oICQoVEFSR0VUX0RFRikgaW5zbi1tb2Rlcy5o IGluc24tY29kZXMuaAogQ19UQVJHRVRfSCA9IGMtZmFtaWx5L2MtdGFyZ2V0LmggJChDX1RBUkdF VF9ERUYpCiBDT01NT05fVEFSR0VUX0ggPSBjb21tb24vY29tbW9uLXRhcmdldC5oICQoSU5QVVRf SCkgJChDT01NT05fVEFSR0VUX0RFRikKIERfVEFSR0VUX0ggPSBkL2QtdGFyZ2V0LmggJChEX1RB UkdFVF9ERUYpCiBSVVNUX1RBUkdFVF9IID0gcnVzdC9ydXN0LXRhcmdldC5oICQoUlVTVF9UQVJH RVRfREVGKQorSklUX1RBUkdFVF9IID0gaml0L2ppdC10YXJnZXQuaCAkKEpJVF9UQVJHRVRfREVG KQogTUFDSE1PREVfSCA9IG1hY2htb2RlLmggbW9kZS1jbGFzc2VzLmRlZgogSE9PS1NfSCA9IGhv b2tzLmgKIEhPU1RIT09LU19ERUZfSCA9IGhvc3Rob29rcy1kZWYuaCAkKEhPT0tTX0gpCkBAIC0x Mjc5LDYgKzEyODQsOSBAQCBDWFhfVEFSR0VUX09CSlM9QGN4eF90YXJnZXRfb2Jqc0AKICMgVGFy Z2V0IHNwZWNpZmljLCBEIHNwZWNpZmljIG9iamVjdCBmaWxlCiBEX1RBUkdFVF9PQkpTPUBkX3Rh cmdldF9vYmpzQAogCisjIFRhcmdldCBzcGVjaWZpYywgSklUIHNwZWNpZmljIG9iamVjdCBmaWxl CitKSVRfVEFSR0VUX09CSlM9QGppdF90YXJnZXRfb2Jqc0AKKwogIyBUYXJnZXQgc3BlY2lmaWMs IEZvcnRyYW4gc3BlY2lmaWMgb2JqZWN0IGZpbGUKIEZPUlRSQU5fVEFSR0VUX09CSlM9QGZvcnRy YW5fdGFyZ2V0X29ianNACiAKQEAgLTIwMjMsNiArMjAzMSw3IEBAIHRtLmg6IGNzLXRtLmggOyBA dHJ1ZQogdG1fcC5oOiBjcy10bV9wLmggOyBAdHJ1ZQogdG1fZC5oOiBjcy10bV9kLmggOyBAdHJ1 ZQogdG1fcnVzdC5oOiBjcy10bV9ydXN0LmggOyBAdHJ1ZQordG1faml0Lmg6IGNzLXRtX2ppdC5o IDsgQHRydWUKIAogY3MtY29uZmlnLmg6IE1ha2VmaWxlCiAJVEFSR0VUX0NQVV9ERUZBVUxUPSIi IFwKQEAgLTIwNjIsNiArMjA3MSwxMSBAQCBjcy10bV9ydXN0Lmg6IE1ha2VmaWxlCiAJSEVBREVS Uz0iJCh0bV9ydXN0X2luY2x1ZGVfbGlzdCkiIERFRklORVM9IiIgXAogCSQoU0hFTEwpICQoc3Jj ZGlyKS9ta2NvbmZpZy5zaCB0bV9ydXN0LmgKIAorY3MtdG1faml0Lmg6IE1ha2VmaWxlCisJVEFS R0VUX0NQVV9ERUZBVUxUPSIiIFwKKwlIRUFERVJTPSIkKHRtX2ppdF9pbmNsdWRlX2xpc3QpIiBE RUZJTkVTPSIiIFwKKwkkKFNIRUxMKSAkKHNyY2RpcikvbWtjb25maWcuc2ggdG1faml0LmgKKwog IyBEb24ndCBhdXRvbWF0aWNhbGx5IHJ1biBhdXRvY29uZiwgc2luY2UgY29uZmlndXJlLmFjIG1p Z2h0IGJlIGFjY2lkZW50YWxseQogIyBuZXdlciB0aGFuIGNvbmZpZ3VyZS4gIEFsc28sIHRoaXMg d3JpdGVzIGludG8gdGhlIHNvdXJjZSBkaXJlY3Rvcnkgd2hpY2gKICMgbWlnaHQgYmUgb24gYSBy ZWFkLW9ubHkgZmlsZSBzeXN0ZW0uICBJZiBjb25maWd1cmVkIGZvciBtYWludGFpbmVyIG1vZGUK QEAgLTI3MzEsNiArMjc0NSwxNSBAQCBzLXJ1c3QtdGFyZ2V0LWhvb2tzLWRlZi1oOiBidWlsZC9n ZW5ob29rcyQoYnVpbGRfZXhlZXh0KQogCQkJCQkgICAgIHJ1c3QvcnVzdC10YXJnZXQtaG9va3Mt ZGVmLmgKIAkkKFNUQU1QKSBzLXJ1c3QtdGFyZ2V0LWhvb2tzLWRlZi1oCiAKK2ppdC9qaXQtdGFy Z2V0LWhvb2tzLWRlZi5oOiBzLWppdC10YXJnZXQtaG9va3MtZGVmLWg7IEB0cnVlCisKK3Mtaml0 LXRhcmdldC1ob29rcy1kZWYtaDogYnVpbGQvZ2VuaG9va3MkKGJ1aWxkX2V4ZWV4dCkKKwkkKFJV Tl9HRU4pIGJ1aWxkL2dlbmhvb2tzJChidWlsZF9leGVleHQpICJKSVQgVGFyZ2V0IEhvb2siIFwK KwkJCQkJICAgICA+IHRtcC1qaXQtdGFyZ2V0LWhvb2tzLWRlZi5oCisJJChTSEVMTCkgJChzcmNk aXIpLy4uL21vdmUtaWYtY2hhbmdlIHRtcC1qaXQtdGFyZ2V0LWhvb2tzLWRlZi5oIFwKKwkJCQkJ ICAgICBqaXQvaml0LXRhcmdldC1ob29rcy1kZWYuaAorCSQoU1RBTVApIHMtaml0LXRhcmdldC1o b29rcy1kZWYtaAorCiAjIGNoZWNrIGlmIHNvbWVvbmUgbWlzdGFrZW5seSBvbmx5IGNoYW5nZWQg dG0udGV4aS4KICMgV2UgdXNlIGEgZGlmZmVyZW50IHBhdGhuYW1lIGhlcmUgdG8gYXZvaWQgYSBj aXJjdWxhciBkZXBlbmRlbmN5Lgogcy10bS10ZXhpOiAkKHNyY2RpcikvZG9jLy4uL2RvYy90bS50 ZXhpCkBAIC0yNzU2LDYgKzI3NzksNyBAQCBzLXRtLXRleGk6IGJ1aWxkL2dlbmhvb2tzJChidWls ZF9leGVleHQpICQoc3JjZGlyKS9kb2MvdG0udGV4aS5pbgogCSAgICB8fCB0ZXN0ICQoc3JjZGly KS9kb2MvdG0udGV4aSAtbnQgJChzcmNkaXIpL2NvbW1vbi9jb21tb24tdGFyZ2V0LmRlZiBcCiAJ ICAgIHx8IHRlc3QgJChzcmNkaXIpL2RvYy90bS50ZXhpIC1udCAkKHNyY2RpcikvZC9kLXRhcmdl dC5kZWYgXAogCSAgICB8fCB0ZXN0ICQoc3JjZGlyKS9kb2MvdG0udGV4aSAtbnQgJChzcmNkaXIp L3J1c3QvcnVzdC10YXJnZXQuZGVmIFwKKwkgICAgfHwgdGVzdCAkKHNyY2RpcikvZG9jL3RtLnRl eGkgLW50ICQoc3JjZGlyKS9qaXQvaml0LXRhcmdldC5kZWYgXAogCSAgKTsgdGhlbiBcCiAJICBl Y2hvID4mMiA7IFwKIAkgIGVjaG8gWW91IHNob3VsZCBlZGl0ICQoc3JjZGlyKS9kb2MvdG0udGV4 aS5pbiByYXRoZXIgdGhhbiAkKHNyY2RpcikvZG9jL3RtLnRleGkgLiA+JjIgOyBcCkBAIC0yOTMz LDYgKzI5NTcsNyBAQCBnZW5lcmF0ZWRfZmlsZXMgPSBjb25maWcuaCB0bS5oICQoVE1fUF9IKSAk KFRNX0RfSCkgJChUTV9IKSBtdWx0aWxpYi5oIFwKICAgICAgICBnaW1wbGUtbWF0Y2gtYXV0by5o IGdlbmVyaWMtbWF0Y2gtYXV0by5oIFwKICAgICAgICBjLWZhbWlseS9jLXRhcmdldC1ob29rcy1k ZWYuaCBkL2QtdGFyZ2V0LWhvb2tzLWRlZi5oIFwKICAgICAgICAkKFRNX1JVU1RfSCkgcnVzdC9y dXN0LXRhcmdldC1ob29rcy1kZWYuaCBcCisgICAgICAgJChUTV9KSVRfSCkgaml0L2ppdC10YXJn ZXQtaG9va3MtZGVmLmggXAogICAgICAgIGNhc2UtY2ZuLW1hY3Jvcy5oIFwKICAgICAgICBjZm4t b3BlcmF0b3JzLnBkIG9tcC1kZXZpY2UtcHJvcGVydGllcy5oCiAKQEAgLTMwNjcsOCArMzA5Miw4 IEBAIGJ1aWxkL2dlbnJlY29nLm8gOiBnZW5yZWNvZy5jYyAkKFJUTF9CQVNFX0gpICQoQkNPTkZJ R19IKSAkKFNZU1RFTV9IKQlcCiAgICQoQ09SRVRZUEVTX0gpICQoR1RNX0gpIGVycm9ycy5oICQo UkVBRF9NRF9IKSAkKEdFTlNVUFBPUlRfSCkJCVwKICAgJChIQVNIX1RBQkxFX0gpIGluY2hhc2gu aAogYnVpbGQvZ2VuaG9va3MubyA6IGdlbmhvb2tzLmNjICQoVEFSR0VUX0RFRikgJChDX1RBUkdF VF9ERUYpCQlcCi0gICQoQ09NTU9OX1RBUkdFVF9ERUYpICQoRF9UQVJHRVRfREVGKSAkKFJVU1Rf VEFSR0VUX0RFRikgJChCQ09ORklHX0gpIFwKLSAgJChTWVNURU1fSCkgZXJyb3JzLmgKKyAgJChD T01NT05fVEFSR0VUX0RFRikgJChEX1RBUkdFVF9ERUYpICQoUlVTVF9UQVJHRVRfREVGKSAkKEpJ VF9UQVJHRVRfREVGKSBcCisgICQoQkNPTkZJR19IKSAkKFNZU1RFTV9IKSBlcnJvcnMuaAogYnVp bGQvZ2VubWRkdW1wLm8gOiBnZW5tZGR1bXAuY2MgJChSVExfQkFTRV9IKSAkKEJDT05GSUdfSCkg JChTWVNURU1fSCkJXAogICAkKENPUkVUWVBFU19IKSAkKEdUTV9IKSBlcnJvcnMuaCAkKFJFQURf TURfSCkgJChHRU5TVVBQT1JUX0gpCiBidWlsZC9nZW5tYXRjaC5vIDogZ2VubWF0Y2guY2MgJChC Q09ORklHX0gpICQoU1lTVEVNX0gpICQoQ09SRVRZUEVTX0gpIFwKZGlmZiAtLWdpdCBhL2djYy9j b25maWcuZ2NjIGIvZ2NjL2NvbmZpZy5nY2MKaW5kZXggYmE2ZDYzZTMzYWMuLmExNGRlN2JlOGQ2 IDEwMDY0NAotLS0gYS9nY2MvY29uZmlnLmdjYworKysgYi9nY2MvY29uZmlnLmdjYwpAQCAtMTQ5 LDYgKzE0OSw5IEBACiAjICBkX3RhcmdldF9vYmpzCUxpc3Qgb2YgZXh0cmEgdGFyZ2V0LWRlcGVu ZGVudCBvYmplY3RzIHRoYXQgYmUKICMJCQlsaW5rZWQgaW50byB0aGUgRCBjb21waWxlciBvbmx5 LgogIworIyAgaml0X3RhcmdldF9vYmpzCUxpc3Qgb2YgZXh0cmEgdGFyZ2V0LWRlcGVuZGVudCBv YmplY3RzIHRoYXQgYmUKKyMJCQlsaW5rZWQgaW50byB0aGUgaml0IGNvbXBpbGVyIG9ubHkuCisj CiAjICBmb3J0cmFuX3RhcmdldF9vYmpzCUxpc3Qgb2YgZXh0cmEgdGFyZ2V0LWRlcGVuZGVudCBv YmplY3RzIHRoYXQgYmUKICMJCQlsaW5rZWQgaW50byB0aGUgZm9ydHJhbiBjb21waWxlciBvbmx5 LgogIwpAQCAtMjEwLDYgKzIxMyw4IEBACiAjCiAjICB0YXJnZXRfaGFzX3RhcmdldHJ1c3RtCVNl dCB0byB5ZXMgb3Igbm8gZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIHRhcmdldAogIwkJCWhhcyBp dHMgb3duIGRlZmluaXRpb24gb2YgdGFyZ2V0cnVzdG0uCisjICB0YXJnZXRfaGFzX3RhcmdldGpp dG0JU2V0IHRvIHllcyBvciBubyBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgdGFyZ2V0CisjCQkJ aGFzIGl0cyBvd24gZGVmaW5pdGlvbiBvZiB0YXJnZXRkbS4KIAogb3V0X2ZpbGU9CiBjb21tb25f b3V0X2ZpbGU9CkBAIC0yMjYsMTIgKzIzMSwxNCBAQCBleHRyYV9vcHRpb25zPQogY190YXJnZXRf b2Jqcz0KIGN4eF90YXJnZXRfb2Jqcz0KIGRfdGFyZ2V0X29ianM9CitqaXRfdGFyZ2V0X29ianM9 CiBmb3J0cmFuX3RhcmdldF9vYmpzPQogcnVzdF90YXJnZXRfb2Jqcz0KIHRhcmdldF9oYXNfdGFy Z2V0Y209bm8KIHRhcmdldF9oYXNfdGFyZ2V0bV9jb21tb249eWVzCiB0YXJnZXRfaGFzX3Rhcmdl dGRtPW5vCiB0YXJnZXRfaGFzX3RhcmdldHJ1c3RtPW5vCit0YXJnZXRfaGFzX3RhcmdldGppdG09 bm8KIHRtX2RlZmluZXM9CiB4bV9kZWZpbmVzPQogIyBTZXQgdGhpcyB0byBmb3JjZSBpbnN0YWxs YXRpb24gYW5kIHVzZSBvZiBjb2xsZWN0Mi4KQEAgLTQxMiw2ICs0MTksNyBAQCBpWzM0NTY3XTg2 LSotKiB8IHg4Nl82NC0qLSopCiAJY190YXJnZXRfb2Jqcz0iaTM4Ni1jLm8iCiAJY3h4X3Rhcmdl dF9vYmpzPSJpMzg2LWMubyIKIAlkX3RhcmdldF9vYmpzPSJpMzg2LWQubyIKKwlqaXRfdGFyZ2V0 X29ianM9ImkzODYtaml0Lm8iCiAJZXh0cmFfb2Jqcz0ieDg2LXR1bmUtc2NoZWQubyB4ODYtdHVu ZS1zY2hlZC1iZC5vIHg4Ni10dW5lLXNjaGVkLWF0b20ubyB4ODYtdHVuZS1zY2hlZC1jb3JlLm8g aTM4Ni1vcHRpb25zLm8gaTM4Ni1idWlsdGlucy5vIGkzODYtZXhwYW5kLm8gaTM4Ni1mZWF0dXJl cy5vIgogCXRhcmdldF9ndGZpbGVzPSJcJChzcmNkaXIpL2NvbmZpZy9pMzg2L2kzODYtYnVpbHRp bnMuY2MgXCQoc3JjZGlyKS9jb25maWcvaTM4Ni9pMzg2LWV4cGFuZC5jYyBcJChzcmNkaXIpL2Nv bmZpZy9pMzg2L2kzODYtb3B0aW9ucy5jYyIKIAlleHRyYV9vcHRpb25zPSIke2V4dHJhX29wdGlv bnN9IGZ1c2VkLW1hZGQub3B0IgpAQCAtNjE0LDYgKzYyMiwxMiBAQCB0aGVuCiAJcnVzdF90YXJn ZXRfb2Jqcz0iJHtydXN0X3RhcmdldF9vYmpzfSAke2NwdV90eXBlfS1ydXN0Lm8iCiBmaQogCit0 bV9qaXRfZmlsZT0KK2lmIHRlc3QgLWYgJHtzcmNkaXJ9L2NvbmZpZy8ke2NwdV90eXBlfS8ke2Nw dV90eXBlfS1qaXQuaAordGhlbgorCXRtX2ppdF9maWxlPSIke3RtX2ppdF9maWxlfSAke2NwdV90 eXBlfS8ke2NwdV90eXBlfS1qaXQuaCIKK2ZpCisKIGV4dHJhX21vZGVzPQogaWYgdGVzdCAtZiAk e3NyY2Rpcn0vY29uZmlnLyR7Y3B1X3R5cGV9LyR7Y3B1X3R5cGV9LW1vZGVzLmRlZgogdGhlbgpA QCAtOTQ2LDkgKzk2MCwxMSBAQCBjYXNlICR7dGFyZ2V0fSBpbgogICBjYXNlICR0YXJnZXQgaW4K ICAgICAqLSotKmxpbnV4KikKICAgICAgIGRfdGFyZ2V0X29ianM9IiR7ZF90YXJnZXRfb2Jqc30g bGludXgtZC5vIgorICAgICAgaml0X3RhcmdldF9vYmpzPSIke2ppdF90YXJnZXRfb2Jqc30gbGlu dXgtaml0Lm8iCiAgICAgICB0YXJnZXRfaGFzX3RhcmdldGRtPXllcwogICAgICAgcnVzdF90YXJn ZXRfb2Jqcz0iJHtydXN0X3RhcmdldF9vYmpzfSBsaW51eC1ydXN0Lm8iCiAgICAgICB0YXJnZXRf aGFzX3RhcmdldHJ1c3RtPXllcworICAgICAgdGFyZ2V0X2hhc190YXJnZXRqaXRtPXllcwogICAg ICAgOzsKICAgICAqLSota2ZyZWVic2QqLWdudSkKICAgICAgIGRfdGFyZ2V0X29ianM9IiR7ZF90 YXJnZXRfb2Jqc30ga2ZyZWVic2QtZC5vIgpAQCAtMzY2Nyw2ICszNjgzLDEwIEBAIGlmIFsgIiR0 YXJnZXRfaGFzX3RhcmdldHJ1c3RtIiA9ICJubyIgXTsgdGhlbgogICBydXN0X3RhcmdldF9vYmpz PSIkcnVzdF90YXJnZXRfb2JqcyBkZWZhdWx0LXJ1c3QubyIKIGZpCiAKK2lmIFsgIiR0YXJnZXRf aGFzX3RhcmdldGppdG0iID0gIm5vIiBdOyB0aGVuCisgIGppdF90YXJnZXRfb2Jqcz0iJGppdF90 YXJnZXRfb2JqcyBkZWZhdWx0LWppdC5vIgorZmkKKwogIyBTdXBwb3J0IGZvciAtLXdpdGgtY3B1 IGFuZCByZWxhdGVkIG9wdGlvbnMgKGFuZCBhIGZldyB1bnJlbGF0ZWQgb3B0aW9ucywKICMgdG9v KS4KIGNhc2UgJHt3aXRoX2NwdX0gaW4KQEAgLTU5MjIsNiArNTk0Miw3IEBAIGNhc2UgJHt0YXJn ZXR9IGluCiAJCWNfdGFyZ2V0X29ianM9IiR7Y190YXJnZXRfb2Jqc30gJHtjcHVfdHlwZX0tYy5v IgogCQljeHhfdGFyZ2V0X29ianM9IiR7Y3h4X3RhcmdldF9vYmpzfSAke2NwdV90eXBlfS1jLm8i CiAJCWRfdGFyZ2V0X29ianM9IiR7ZF90YXJnZXRfb2Jqc30gJHtjcHVfdHlwZX0tZC5vIgorCQlq aXRfdGFyZ2V0X29ianM9IiR7aml0X3RhcmdldF9vYmpzfSAke2NwdV90eXBlfS1qaXQubyIKIAkJ dG1ha2VfZmlsZT0iJHtjcHVfdHlwZX0vdC0ke2NwdV90eXBlfSAke3RtYWtlX2ZpbGV9IgogCQk7 OwogCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2RlZmF1bHQtaml0LmNjIGIvZ2NjL2NvbmZpZy9k ZWZhdWx0LWppdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDI4 NmQ2YzRjYWEKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvY29uZmlnL2RlZmF1bHQtaml0LmNjCkBA IC0wLDAgKzEsMjkgQEAKKy8qIERlZmF1bHQgSklUIGxhbmd1YWdlIHRhcmdldCBob29rcyBpbml0 aWFsaXplci4KKyAgIENvcHlyaWdodCAoQykgMjAyMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KKworR0NDIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkgaXQgdW5kZXIKK3RoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlCitTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlcgordmVyc2lvbi4K KworR0NDIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws IGJ1dCBXSVRIT1VUIEFOWQorV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKK0ZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorZm9yIG1vcmUgZGV0YWls cy4KKworWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKK2Fsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJ ZiBub3Qgc2VlCis8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisjaW5jbHVk ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAic3lzdGVtLmgiCisjaW5jbHVkZSAiY29yZXR5cGVzLmgi CisjaW5jbHVkZSAidG1faml0LmgiCisjaW5jbHVkZSAiaml0L2ppdC10YXJnZXQuaCIKKyNpbmNs dWRlICJqaXQvaml0LXRhcmdldC1kZWYuaCIKKworLyogRG8gbm90IGluY2x1ZGUgdG0uaCBvciB0 bV9wLmggaGVyZTsgZGVmaW5pdGlvbnMgbmVlZGVkIGJ5IHRoZSB0YXJnZXQKKyAgIGFyY2hpdGVj dHVyZSB0byBpbml0aWFsaXplIHRhcmdldGppdG0gc2hvdWxkIGluc3RlYWQgYmUgYWRkZWQgdG8K KyAgIHRtX2ppdC5oLiAgKi8KKworc3RydWN0IGdjY190YXJnZXRqaXRtIHRhcmdldGppdG0gPSBU QVJHRVRKSVRNX0lOSVRJQUxJWkVSOwpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYt aml0LmNjIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYtaml0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi4zOGIzZjY2ZTY4NgotLS0gL2Rldi9udWxsCisrKyBiL2djYy9j b25maWcvaTM4Ni9pMzg2LWppdC5jYwpAQCAtMCwwICsxLDE5NSBAQAorLyogU3Vicm91dGluZXMg Zm9yIHRoZSBKSVQgZnJvbnQgZW5kIG9uIHRoZSB4ODYgYXJjaGl0ZWN0dXJlLgorICAgQ29weXJp Z2h0IChDKSAyMDIzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCitHQ0MgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQoraXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKK3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9y IChhdCB5b3VyIG9wdGlvbikKK2FueSBsYXRlciB2ZXJzaW9uLgorCitHQ0MgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKK2J1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCitNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCitHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCitZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorYWxv bmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKzxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKyNkZWZpbmUgSU5fVEFSR0VUX0NPREUgMQor CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAic3lzdGVtLmgiCisjaW5jbHVkZSAiY29y ZXR5cGVzLmgiCisjaW5jbHVkZSAidGFyZ2V0LmgiCisjaW5jbHVkZSAidG0uaCIKKyNpbmNsdWRl ICJ0bV9qaXQuaCIKKyNpbmNsdWRlICJqaXQvaml0LXRhcmdldC5oIgorI2luY2x1ZGUgImppdC9q aXQtdGFyZ2V0LWRlZi5oIgorCisvKiBJbXBsZW1lbnQgVEFSR0VUX0pJVF9SRUdJU1RFUl9DUFVf VEFSR0VUX0lORk8uICAqLworCitleHRlcm4gY29uc3QgY2hhciAqaG9zdF9kZXRlY3RfbG9jYWxf Y3B1IChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpOworCisjaWYgVEFSR0VUXzY0QklUX0RF RkFVTFQKK2NvbnN0IGNoYXIqIHg4Nl9iaXRzID0gIjY0IjsKKyNlbHNlCitjb25zdCBjaGFyKiB4 ODZfYml0cyA9ICIzMiI7CisjZW5kaWYKKwordm9pZAoraXg4Nl9qaXRfcmVnaXN0ZXJfdGFyZ2V0 X2luZm8gKHZvaWQpCit7CisgIGNvbnN0IGNoYXIgKnBhcmFtc1tdID0geyJhcmNoIiwgeDg2X2Jp dHN9OworICBjb25zdCBjaGFyKiBsb2NhbF9jcHUgPSBob3N0X2RldGVjdF9sb2NhbF9jcHUgKDIs IHBhcmFtcyk7CisgIHN0ZDo6c3RyaW5nIGFyY2ggPSBsb2NhbF9jcHU7CisgIGZyZWUgKGNvbnN0 X2Nhc3QgPGNoYXIgKj4gKGxvY2FsX2NwdSkpOworCisgIGNvbnN0IGNoYXIqIGFyZyA9ICItbWFy Y2g9IjsKKyAgc2l6ZV90IGFyZ19wb3MgPSBhcmNoLmZpbmQgKGFyZykgKyBzdHJsZW4gKGFyZyk7 CisgIHNpemVfdCBlbmRfcG9zID0gYXJjaC5maW5kICgiICIsIGFyZ19wb3MpOworCisgIHN0ZDo6 c3RyaW5nIGNwdSA9IGFyY2guc3Vic3RyIChhcmdfcG9zLCBlbmRfcG9zIC0gYXJnX3Bvcyk7Cisg IGppdF90YXJnZXRfc2V0X2FyY2ggKGNwdSk7CisKKyAgaml0X3RhcmdldF9zZXRfMTI4Yml0X2lu dF9zdXBwb3J0ICh0YXJnZXRtLnNjYWxhcl9tb2RlX3N1cHBvcnRlZF9wIChUSW1vZGUpKTsKKwor ICBpZiAoVEFSR0VUX01NWCkKKyAgICBqaXRfYWRkX3RhcmdldF9pbmZvICgidGFyZ2V0X2ZlYXR1 cmUiLCAibW14Iik7CisgIGlmIChUQVJHRVRfU1NFKQorICAgIGppdF9hZGRfdGFyZ2V0X2luZm8g KCJ0YXJnZXRfZmVhdHVyZSIsICJzc2UiKTsKKyAgaWYgKFRBUkdFVF9TU0UyKQorICAgIGppdF9h ZGRfdGFyZ2V0X2luZm8gKCJ0YXJnZXRfZmVhdHVyZSIsICJzc2UyIik7CisgIGlmIChUQVJHRVRf U1NFMykKKyAgICBqaXRfYWRkX3RhcmdldF9pbmZvICgidGFyZ2V0X2ZlYXR1cmUiLCAic3NlMyIp OworICBpZiAoVEFSR0VUX1NTU0UzKQorICAgIGppdF9hZGRfdGFyZ2V0X2luZm8gKCJ0YXJnZXRf ZmVhdHVyZSIsICJzc3NlMyIpOworICBpZiAoVEFSR0VUX1NTRTRfMSkKKyAgICBqaXRfYWRkX3Rh cmdldF9pbmZvICgidGFyZ2V0X2ZlYXR1cmUiLCAic3NlNC4xIik7CisgIGlmIChUQVJHRVRfU1NF NF8yKQorICAgIGppdF9hZGRfdGFyZ2V0X2luZm8gKCJ0YXJnZXRfZmVhdHVyZSIsICJzc2U0LjIi KTsKKyAgaWYgKFRBUkdFVF9BRVMpCisgICAgaml0X2FkZF90YXJnZXRfaW5mbyAoInRhcmdldF9m ZWF0dXJlIiwgImFlcyIpOworICBpZiAoVEFSR0VUX1NIQSkKKyAgICBqaXRfYWRkX3RhcmdldF9p bmZvICgidGFyZ2V0X2ZlYXR1cmUiLCAic2hhIik7CisgIGlmIChUQVJHRVRfQVZYKQorICAgIGpp dF9hZGRfdGFyZ2V0X2luZm8gKCJ0YXJnZXRfZmVhdHVyZSIsICJhdngiKTsKKyAgaWYgKFRBUkdF VF9BVlgyKQorICAgIGppdF9hZGRfdGFyZ2V0X2luZm8gKCJ0YXJnZXRfZmVhdHVyZSIsICJhdngy Iik7CisgIGlmIChUQVJHRVRfQVZYNTEyRikKKyAgICBqaXRfYWRkX3RhcmdldF9pbmZvICgidGFy Z2V0X2ZlYXR1cmUiLCAiYXZ4NTEyZiIpOworICBpZiAoVEFSR0VUX0FWWDUxMkVSKQorICAgIGpp dF9hZGRfdGFyZ2V0X2luZm8gKCJ0YXJnZXRfZmVhdHVyZSIsICJhdng1MTJlciIpOworICBpZiAo VEFSR0VUX0FWWDUxMkNEKQorICAgIGppdF9hZGRfdGFyZ2V0X2luZm8gKCJ0YXJnZXRfZmVhdHVy ZSIsICJhdng1MTJjZCIpOworICBpZiAoVEFSR0VUX0FWWDUxMlBGKQorICAgIGppdF9hZGRfdGFy Z2V0X2luZm8gKCJ0YXJnZXRfZmVhdHVyZSIsICJhdng1MTJwZiIpOworICBpZiAoVEFSR0VUX0FW WDUxMkRRKQorICAgIGppdF9hZGRfdGFyZ2V0X2luZm8gKCJ0YXJnZXRfZmVhdHVyZSIsICJhdng1 MTJkcSIpOworICBpZiAoVEFSR0VUX0FWWDUxMkJXKQorICAgIGppdF9hZGRfdGFyZ2V0X2luZm8g KCJ0YXJnZXRfZmVhdHVyZSIsICJhdng1MTJidyIpOworICBpZiAoVEFSR0VUX0FWWDUxMlZMKQor ICAgIGppdF9hZGRfdGFyZ2V0X2luZm8gKCJ0YXJnZXRfZmVhdHVyZSIsICJhdng1MTJ2bCIpOwor ICBpZiAoVEFSR0VUX0FWWDUxMlZCTUkpCisgICAgaml0X2FkZF90YXJnZXRfaW5mbyAoInRhcmdl dF9mZWF0dXJlIiwgImF2eDUxMnZibWkiKTsKKyAgaWYgKFRBUkdFVF9BVlg1MTJJRk1BKQorICAg IGppdF9hZGRfdGFyZ2V0X2luZm8gKCJ0YXJnZXRfZmVhdHVyZSIsICJhdng1MTJpZm1hIik7Cisg IGlmIChUQVJHRVRfQVZYNTEyVlBPUENOVERRKQorICAgIGppdF9hZGRfdGFyZ2V0X2luZm8gKCJ0 YXJnZXRfZmVhdHVyZSIsICJhdng1MTJ2cG9wY250ZHEiKTsKKyAgaWYgKFRBUkdFVF9GTUEpCisg ICAgaml0X2FkZF90YXJnZXRfaW5mbyAoInRhcmdldF9mZWF0dXJlIiwgImZtYSIpOworICBpZiAo VEFSR0VUX1JUTSkKKyAgICBqaXRfYWRkX3RhcmdldF9pbmZvICgidGFyZ2V0X2ZlYXR1cmUiLCAi cnRtIik7CisgIGlmIChUQVJHRVRfU1NFNEEpCisgICAgaml0X2FkZF90YXJnZXRfaW5mbyAoInRh cmdldF9mZWF0dXJlIiwgInNzZTRhIik7CisgIGlmIChUQVJHRVRfQk1JKQorICB7CisgICAgaml0 X2FkZF90YXJnZXRfaW5mbyAoInRhcmdldF9mZWF0dXJlIiwgImJtaTEiKTsKKyAgICBqaXRfYWRk X3RhcmdldF9pbmZvICgidGFyZ2V0X2ZlYXR1cmUiLCAiYm1pIik7CisgIH0KKyAgaWYgKFRBUkdF VF9CTUkyKQorICAgIGppdF9hZGRfdGFyZ2V0X2luZm8gKCJ0YXJnZXRfZmVhdHVyZSIsICJibWky Iik7CisgIGlmIChUQVJHRVRfTFpDTlQpCisgICAgaml0X2FkZF90YXJnZXRfaW5mbyAoInRhcmdl dF9mZWF0dXJlIiwgImx6Y250Iik7CisgIGlmIChUQVJHRVRfVEJNKQorICAgIGppdF9hZGRfdGFy Z2V0X2luZm8gKCJ0YXJnZXRfZmVhdHVyZSIsICJ0Ym0iKTsKKyAgaWYgKFRBUkdFVF9QT1BDTlQp CisgICAgaml0X2FkZF90YXJnZXRfaW5mbyAoInRhcmdldF9mZWF0dXJlIiwgInBvcGNudCIpOwor ICBpZiAoVEFSR0VUX1JEUk5EKQorICB7CisgICAgaml0X2FkZF90YXJnZXRfaW5mbyAoInRhcmdl dF9mZWF0dXJlIiwgInJkcmFuZCIpOworICAgIGppdF9hZGRfdGFyZ2V0X2luZm8gKCJ0YXJnZXRf ZmVhdHVyZSIsICJyZHJuZCIpOworICB9CisgIGlmIChUQVJHRVRfRjE2QykKKyAgICBqaXRfYWRk X3RhcmdldF9pbmZvICgidGFyZ2V0X2ZlYXR1cmUiLCAiZjE2YyIpOworICBpZiAoVEFSR0VUX1JE U0VFRCkKKyAgICBqaXRfYWRkX3RhcmdldF9pbmZvICgidGFyZ2V0X2ZlYXR1cmUiLCAicmRzZWVk Iik7CisgIGlmIChUQVJHRVRfQURYKQorICAgIGppdF9hZGRfdGFyZ2V0X2luZm8gKCJ0YXJnZXRf ZmVhdHVyZSIsICJhZHgiKTsKKyAgaWYgKFRBUkdFVF9GWFNSKQorICAgIGppdF9hZGRfdGFyZ2V0 X2luZm8gKCJ0YXJnZXRfZmVhdHVyZSIsICJmeHNyIik7CisgIGlmIChUQVJHRVRfWFNBVkUpCisg ICAgaml0X2FkZF90YXJnZXRfaW5mbyAoInRhcmdldF9mZWF0dXJlIiwgInhzYXZlIik7CisgIGlm IChUQVJHRVRfWFNBVkVPUFQpCisgICAgaml0X2FkZF90YXJnZXRfaW5mbyAoInRhcmdldF9mZWF0 dXJlIiwgInhzYXZlb3B0Iik7CisgIGlmIChUQVJHRVRfWFNBVkVDKQorICAgIGppdF9hZGRfdGFy Z2V0X2luZm8gKCJ0YXJnZXRfZmVhdHVyZSIsICJ4c2F2ZWMiKTsKKyAgaWYgKFRBUkdFVF9YU0FW RVMpCisgICAgaml0X2FkZF90YXJnZXRfaW5mbyAoInRhcmdldF9mZWF0dXJlIiwgInhzYXZlcyIp OworICBpZiAoVEFSR0VUX1ZQQ0xNVUxRRFEpCisgIHsKKyAgICBqaXRfYWRkX3RhcmdldF9pbmZv ICgidGFyZ2V0X2ZlYXR1cmUiLCAicGNsbXVscWRxIik7CisgICAgaml0X2FkZF90YXJnZXRfaW5m byAoInRhcmdldF9mZWF0dXJlIiwgInZwY2xtdWxxZHEiKTsKKyAgfQorICBpZiAoVEFSR0VUX0NN UFhDSEcxNkIpCisgICAgaml0X2FkZF90YXJnZXRfaW5mbyAoInRhcmdldF9mZWF0dXJlIiwgImNt cHhjaGcxNmIiKTsKKyAgaWYgKFRBUkdFVF9NT1ZCRSkKKyAgICBqaXRfYWRkX3RhcmdldF9pbmZv ICgidGFyZ2V0X2ZlYXR1cmUiLCAibW92YmUiKTsKKyAgaWYgKFRBUkdFVF9BVlg1MTJWQk1JMikK KyAgICBqaXRfYWRkX3RhcmdldF9pbmZvICgidGFyZ2V0X2ZlYXR1cmUiLCAiYXZ4NTEydmJtaTIi KTsKKyAgaWYgKFRBUkdFVF9QS1UpCisgICAgaml0X2FkZF90YXJnZXRfaW5mbyAoInRhcmdldF9m ZWF0dXJlIiwgInBrdSIpOworICBpZiAoVEFSR0VUX0FWWDUxMlZOTkkpCisgICAgaml0X2FkZF90 YXJnZXRfaW5mbyAoInRhcmdldF9mZWF0dXJlIiwgImF2eDUxMnZubmkiKTsKKyAgaWYgKFRBUkdF VF9BVlg1MTJCRjE2KQorICAgIGppdF9hZGRfdGFyZ2V0X2luZm8gKCJ0YXJnZXRfZmVhdHVyZSIs ICJhdng1MTJiZjE2Iik7CisgIGlmIChUQVJHRVRfQVZYNTEyQklUQUxHKQorICAgIGppdF9hZGRf dGFyZ2V0X2luZm8gKCJ0YXJnZXRfZmVhdHVyZSIsICJhdng1MTJiaXRhbGciKTsKKyAgaWYgKFRB UkdFVF9BVlg1MTJWUDJJTlRFUlNFQ1QpCisgICAgaml0X2FkZF90YXJnZXRfaW5mbyAoInRhcmdl dF9mZWF0dXJlIiwgImF2eDUxMnZwMmludGVyc2VjdCIpOworICBpZiAoVEFSR0VUX1BDTE1VTCkK KyAgICBqaXRfYWRkX3RhcmdldF9pbmZvICgidGFyZ2V0X2ZlYXR1cmUiLCAicGNsbXVsIik7Cisg IGlmIChUQVJHRVRfR0ZOSSkKKyAgICBqaXRfYWRkX3RhcmdldF9pbmZvICgidGFyZ2V0X2ZlYXR1 cmUiLCAiZ2ZuaSIpOworICBpZiAoVEFSR0VUX0ZNQTQpCisgICAgaml0X2FkZF90YXJnZXRfaW5m byAoInRhcmdldF9mZWF0dXJlIiwgImZtYTQiKTsKKyAgaWYgKFRBUkdFVF9YT1ApCisgICAgaml0 X2FkZF90YXJnZXRfaW5mbyAoInRhcmdldF9mZWF0dXJlIiwgInhvcCIpOworCisgIGlmIChUQVJH RVRfVkFFUykKKyAgICBqaXRfYWRkX3RhcmdldF9pbmZvICgidGFyZ2V0X2ZlYXR1cmUiLCAidmFl cyIpOworICBpZiAoVEFSR0VUX0xXUCkKKyAgICBqaXRfYWRkX3RhcmdldF9pbmZvICgidGFyZ2V0 X2ZlYXR1cmUiLCAibHdwIik7CisgIGlmIChUQVJHRVRfRlNHU0JBU0UpCisgICAgaml0X2FkZF90 YXJnZXRfaW5mbyAoInRhcmdldF9mZWF0dXJlIiwgImZzZ3NiYXNlIik7CisgIGlmIChUQVJHRVRf U0hTVEspCisgICAgaml0X2FkZF90YXJnZXRfaW5mbyAoInRhcmdldF9mZWF0dXJlIiwgInNoc3Rr Iik7CisgIGlmIChUQVJHRVRfUFJGQ0hXKQorICAgIGppdF9hZGRfdGFyZ2V0X2luZm8gKCJ0YXJn ZXRfZmVhdHVyZSIsICJwcmZjaHciKTsKKyAgaWYgKFRBUkdFVF9NV0FJVFgpCisgICAgaml0X2Fk ZF90YXJnZXRfaW5mbyAoInRhcmdldF9mZWF0dXJlIiwgIm13YWl0eCIpOworICBpZiAoVEFSR0VU X0NMWkVSTykKKyAgICBqaXRfYWRkX3RhcmdldF9pbmZvICgidGFyZ2V0X2ZlYXR1cmUiLCAiY2x6 ZXJvIik7CisgIGlmIChUQVJHRVRfQ0xERU1PVEUpCisgICAgaml0X2FkZF90YXJnZXRfaW5mbyAo InRhcmdldF9mZWF0dXJlIiwgImNsZGVtb3RlIik7CisgIGlmIChUQVJHRVRfUFRXUklURSkKKyAg ICBqaXRfYWRkX3RhcmdldF9pbmZvICgidGFyZ2V0X2ZlYXR1cmUiLCAicHR3cml0ZSIpOworICBi b29sIGhhc0VSTVNCID0gaXg4Nl9hcmNoID09IFBST0NFU1NPUl9IQVNXRUxMCisgICAgfHwgaXg4 Nl9hcmNoID09IFBST0NFU1NPUl9TS1lMQUtFIHx8IGl4ODZfYXJjaCA9PSBQUk9DRVNTT1JfU0tZ TEFLRV9BVlg1MTIKKyAgICB8fCBpeDg2X2FyY2ggPT0gUFJPQ0VTU09SX0NBTk5PTkxBS0UKKyAg ICB8fCBpeDg2X2FyY2ggPT0gUFJPQ0VTU09SX0lDRUxBS0VfQ0xJRU5UCisgICAgfHwgaXg4Nl9h cmNoID09IFBST0NFU1NPUl9JQ0VMQUtFX1NFUlZFUgorICAgIHx8IGl4ODZfYXJjaCA9PSBQUk9D RVNTT1JfQ0FTQ0FERUxBS0UgfHwgaXg4Nl9hcmNoID09IFBST0NFU1NPUl9USUdFUkxBS0UKKyAg ICB8fCBpeDg2X2FyY2ggPT0gUFJPQ0VTU09SX0NPT1BFUkxBS0U7CisgIGlmIChoYXNFUk1TQikK KyAgICBqaXRfYWRkX3RhcmdldF9pbmZvICgidGFyZ2V0X2ZlYXR1cmUiLCAiZXJtc2JkIik7Cit9 CmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni1qaXQuaCBiL2djYy9jb25maWcvaTM4 Ni9pMzg2LWppdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40ZjA1 ZTg4MDAzZgotLS0gL2Rldi9udWxsCisrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LWppdC5oCkBA IC0wLDAgKzEsMjIgQEAKKy8qIERlZmluaXRpb25zIGZvciB0aGUgaml0IGZyb250IGVuZCBvbiB0 aGUgeDg2IGFyY2hpdGVjdHVyZS4KKyAgIENvcHlyaWdodCAoQykgMjAyMyBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKworR0NDIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKK2l0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cit0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24pCithbnkgbGF0 ZXIgdmVyc2lvbi4KKworR0NDIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCitidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKworWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKK2Fsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUg Q09QWUlORzMuICBJZiBub3Qgc2VlCis8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAq LworCisvKiBJbiBpMzg2LWppdC5jYyAgKi8KK2V4dGVybiB2b2lkIGl4ODZfaml0X3JlZ2lzdGVy X3RhcmdldF9pbmZvICh2b2lkKTsKKworLyogVGFyZ2V0IGhvb2tzIGZvciBqaXQgbGFuZ3VhZ2Uu ICAqLworI2RlZmluZSBUQVJHRVRfSklUX1JFR0lTVEVSX0NQVV9UQVJHRVRfSU5GTyBpeDg2X2pp dF9yZWdpc3Rlcl90YXJnZXRfaW5mbwpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L3QtaTM4 NiBiL2djYy9jb25maWcvaTM4Ni90LWkzODYKaW5kZXggZjg1ODE3ZDY5OGMuLjVhMjRlY2VhMDU1 IDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2kzODYvdC1pMzg2CisrKyBiL2djYy9jb25maWcvaTM4 Ni90LWkzODYKQEAgLTUwLDYgKzUwLDEwIEBAIGkzODYtcnVzdC5vOiAkKHNyY2RpcikvY29uZmln L2kzODYvaTM4Ni1ydXN0LmNjCiAJJChDT01QSUxFKSAkPAogCSQoUE9TVENPTVBJTEUpCiAKK2kz ODYtaml0Lm86ICQoc3JjZGlyKS9jb25maWcvaTM4Ni9pMzg2LWppdC5jYworCSQoQ09NUElMRSkg JDwKKwkkKFBPU1RDT01QSUxFKQorCiBpMzg2LW9wdGlvbnMubzogJChzcmNkaXIpL2NvbmZpZy9p Mzg2L2kzODYtb3B0aW9ucy5jYwogCSQoQ09NUElMRSkgJDwKIAkkKFBPU1RDT01QSUxFKQpkaWZm IC0tZ2l0IGEvZ2NjL2NvbmZpZy9saW51eC1qaXQuY2MgYi9nY2MvY29uZmlnL2xpbnV4LWppdC5j YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZTg1YTZmM2JlMTgKLS0t IC9kZXYvbnVsbAorKysgYi9nY2MvY29uZmlnL2xpbnV4LWppdC5jYwpAQCAtMCwwICsxLDM2IEBA CisvKiBMaW51eCBzdXBwb3J0IG5lZWRlZCBvbmx5IGJ5IGppdCBmcm9udC1lbmQuCisgICBDb3B5 cmlnaHQgKEMpIDIwMjMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKK0dDQyBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVu ZGVyCit0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieSB0aGUgRnJlZQorU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywg b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIKK3ZlcnNpb24uCisKK0dDQyBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkK K1dBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRB QklMSVRZIG9yCitGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKK2ZvciBtb3JlIGRldGFpbHMuCisKK1lvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCith bG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu Y2x1ZGUgInN5c3RlbS5oIgorI2luY2x1ZGUgImNvcmV0eXBlcy5oIgorI2luY2x1ZGUgInRtLmgi CisjaW5jbHVkZSAidG1faml0LmgiCisjaW5jbHVkZSAiaml0L2ppdC10YXJnZXQuaCIKKyNpbmNs dWRlICJqaXQvaml0LXRhcmdldC1kZWYuaCIKKworLyogSW1wbGVtZW50IFRBUkdFVF9KSVRfUkVH SVNURVJfT1NfVEFSR0VUX0lORk8gZm9yIExpbnV4IHRhcmdldHMuICAqLworCitzdGF0aWMgdm9p ZAorbGludXhfaml0X3JlZ2lzdGVyX3RhcmdldF9pbmZvICh2b2lkKQoreworfQorCisjdW5kZWYg VEFSR0VUX0pJVF9SRUdJU1RFUl9PU19UQVJHRVRfSU5GTworI2RlZmluZSBUQVJHRVRfSklUX1JF R0lTVEVSX09TX1RBUkdFVF9JTkZPIGxpbnV4X2ppdF9yZWdpc3Rlcl90YXJnZXRfaW5mbworCitz dHJ1Y3QgZ2NjX3RhcmdldGppdG0gdGFyZ2V0aml0bSA9IFRBUkdFVEpJVE1fSU5JVElBTElaRVI7 CmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3QtbGludXggYi9nY2MvY29uZmlnL3QtbGludXgKaW5k ZXggOTY1OTNmYmYyN2YuLjE0Mzc2ODI1ZDc5IDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL3QtbGlu dXgKKysrIGIvZ2NjL2NvbmZpZy90LWxpbnV4CkBAIC0yNywzICsyNyw3IEBAIGxpbnV4LWQubzog JChzcmNkaXIpL2NvbmZpZy9saW51eC1kLmNjCiBsaW51eC1ydXN0Lm86ICQoc3JjZGlyKS9jb25m aWcvbGludXgtcnVzdC5jYwogCSAgJChDT01QSUxFKSAkPAogCSAgJChQT1NUQ09NUElMRSkKKwor bGludXgtaml0Lm86ICQoc3JjZGlyKS9jb25maWcvbGludXgtaml0LmNjCisJICAkKENPTVBJTEUp ICQ8CisJICAkKFBPU1RDT01QSUxFKQpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9j b25maWd1cmUKaW5kZXggMGQ4MThhZTY4NTAuLmUzNTlkMmZiZGNjIDEwMDc1NQotLS0gYS9nY2Mv Y29uZmlndXJlCisrKyBiL2djYy9jb25maWd1cmUKQEAgLTY0Nyw2ICs2NDcsNyBAQCBHTVBMSUJT CiB0YXJnZXRfY3B1X2RlZmF1bHQKIHJ1c3RfdGFyZ2V0X29ianMKIGRfdGFyZ2V0X29ianMKK2pp dF90YXJnZXRfb2JqcwogZm9ydHJhbl90YXJnZXRfb2JqcwogY3h4X3RhcmdldF9vYmpzCiBjX3Rh cmdldF9vYmpzCkBAIC02NTgsNiArNjU5LDggQEAgdG1fcnVzdF9pbmNsdWRlX2xpc3QKIHRtX3J1 c3RfZmlsZV9saXN0CiB0bV9kX2luY2x1ZGVfbGlzdAogdG1fZF9maWxlX2xpc3QKK3RtX2ppdF9p bmNsdWRlX2xpc3QKK3RtX2ppdF9maWxlX2xpc3QKIHRtX3BfaW5jbHVkZV9saXN0CiB0bV9wX2Zp bGVfbGlzdAogdG1fZGVmaW5lcwpAQCAtMTM2MjksNiArMTM2MzIsMTcgQEAgZm9yIGYgaW4gJHRt X3J1c3RfZmlsZTsgZG8KICAgZXNhYwogZG9uZQogCit0bV9qaXRfZmlsZV9saXN0PQordG1faml0 X2luY2x1ZGVfbGlzdD0KK2ZvciBmIGluICR0bV9qaXRfZmlsZTsgZG8KKyAgY2FzZSAkZiBpbgor ICAgICogKQorICAgICAgIHRtX2ppdF9maWxlX2xpc3Q9IiR7dG1faml0X2ZpbGVfbGlzdH0gXCQo c3JjZGlyKS9jb25maWcvJGYiCisgICAgICAgdG1faml0X2luY2x1ZGVfbGlzdD0iJHt0bV9qaXRf aW5jbHVkZV9saXN0fSBjb25maWcvJGYiCisgICAgICAgOzsKKyAgZXNhYworZG9uZQorCiB4bV9m aWxlX2xpc3Q9CiB4bV9pbmNsdWRlX2xpc3Q9CiBmb3IgZiBpbiAkeG1fZmlsZTsgZG8KZGlmZiAt LWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCmluZGV4IDc2NGEzM2Yw YjA0Li5mMzc0MDliYTc3ZCAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYworKysgYi9nY2Mv Y29uZmlndXJlLmFjCkBAIC0yNDUxLDYgKzI0NTEsMTcgQEAgZm9yIGYgaW4gJHRtX3J1c3RfZmls ZTsgZG8KICAgZXNhYwogZG9uZQogCit0bV9qaXRfZmlsZV9saXN0PQordG1faml0X2luY2x1ZGVf bGlzdD0KK2ZvciBmIGluICR0bV9qaXRfZmlsZTsgZG8KKyAgY2FzZSAkZiBpbgorICAgICogKQor ICAgICAgIHRtX2ppdF9maWxlX2xpc3Q9IiR7dG1faml0X2ZpbGVfbGlzdH0gXCQoc3JjZGlyKS9j b25maWcvJGYiCisgICAgICAgdG1faml0X2luY2x1ZGVfbGlzdD0iJHt0bV9qaXRfaW5jbHVkZV9s aXN0fSBjb25maWcvJGYiCisgICAgICAgOzsKKyAgZXNhYworZG9uZQorCiB4bV9maWxlX2xpc3Q9 CiB4bV9pbmNsdWRlX2xpc3Q9CiBmb3IgZiBpbiAkeG1fZmlsZTsgZG8KQEAgLTc0ODgsNiArNzQ5 OSw4IEBAIEFDX1NVQlNUKHRtX2RfZmlsZV9saXN0KQogQUNfU1VCU1QodG1fZF9pbmNsdWRlX2xp c3QpCiBBQ19TVUJTVCh0bV9ydXN0X2ZpbGVfbGlzdCkKIEFDX1NVQlNUKHRtX3J1c3RfaW5jbHVk ZV9saXN0KQorQUNfU1VCU1QodG1faml0X2ZpbGVfbGlzdCkKK0FDX1NVQlNUKHRtX2ppdF9pbmNs dWRlX2xpc3QpCiBBQ19TVUJTVCh4bV9maWxlX2xpc3QpCiBBQ19TVUJTVCh4bV9pbmNsdWRlX2xp c3QpCiBBQ19TVUJTVCh4bV9kZWZpbmVzKQpAQCAtNzQ5Nyw2ICs3NTEwLDcgQEAgQUNfU1VCU1Qo Y3h4X3RhcmdldF9vYmpzKQogQUNfU1VCU1QoZm9ydHJhbl90YXJnZXRfb2JqcykKIEFDX1NVQlNU KGRfdGFyZ2V0X29ianMpCiBBQ19TVUJTVChydXN0X3RhcmdldF9vYmpzKQorQUNfU1VCU1Qoaml0 X3RhcmdldF9vYmpzKQogQUNfU1VCU1QodGFyZ2V0X2NwdV9kZWZhdWx0KQogCiBBQ19TVUJTVF9G SUxFKGxhbmd1YWdlX2hvb2tzKQpkaWZmIC0tZ2l0IGEvZ2NjL2RvYy90bS50ZXhpIGIvZ2NjL2Rv Yy90bS50ZXhpCmluZGV4IGY3YWM4MDZmZjE1Li41ZDg4NTdlZTA3YyAxMDA2NDQKLS0tIGEvZ2Nj L2RvYy90bS50ZXhpCisrKyBiL2djYy9kb2MvdG0udGV4aQpAQCAtMTI0LDYgKzEyNCwxNCBAQCBJ ZiB0YXJnZXRzIGluaXRpYWxpemUgQGNvZGV7dGFyZ2V0cnVzdG19IHRoZW1zZWx2ZXMsIHRoZXkg c2hvdWxkIHNldAogQGNvZGV7dGFyZ2V0X2hhc190YXJnZXRydXN0bT15ZXN9IGluIEBmaWxle2Nv bmZpZy5nY2N9OyBvdGhlcndpc2UgYQogZGVmYXVsdCBkZWZpbml0aW9uIGlzIHVzZWQuCiAKK1Np bWlsYXJseSwgdGhlcmUgaXMgYSBAY29kZXt0YXJnZXRqaXRtfSB2YXJpYWJsZSBmb3IgaG9va3Mg dGhhdCBhcmUKK3NwZWNpZmljIHRvIHRoZSBqaXQgZnJvbnQgZW5kLCBkb2N1bWVudGVkIGFzIGBg SklUIFRhcmdldCBIb29rJycuCitUaGlzIGlzIGRlY2xhcmVkIGluIEBmaWxle2ppdC9qaXQtdGFy Z2V0Lmh9LCB0aGUgaW5pdGlhbGl6ZXIKK0Bjb2Rle1RBUkdFVEpJVE1fSU5JVElBTElaRVJ9IGlu IEBmaWxle2ppdC9qaXQtdGFyZ2V0LWRlZi5ofS4gIElmIHRhcmdldHMKK2luaXRpYWxpemUgQGNv ZGV7dGFyZ2V0aml0bX0gdGhlbXNlbHZlcywgdGhleSBzaG91bGQgc2V0CitAY29kZXt0YXJnZXRf aGFzX3RhcmdldGppdG09eWVzfSBpbiBAZmlsZXtjb25maWcuZ2NjfTsgb3RoZXJ3aXNlIGEgZGVm YXVsdAorZGVmaW5pdGlvbiBpcyB1c2VkLgorCiBAbm9kZSBEcml2ZXIKIEBzZWN0aW9uIENvbnRy b2xsaW5nIHRoZSBDb21waWxhdGlvbiBEcml2ZXIsIEBmaWxle2djY30KIEBjaW5kZXggZHJpdmVy CkBAIC0xMTAwNiw2ICsxMTAxNCwyNCBAQCBTaW1pbGFyIHRvIEBjb2Rle1RBUkdFVF9SVVNUX0NQ VV9JTkZPfSwgYnV0IGlzIHVzZWQgZm9yIGNvbmZpZ3VyYXRpb24gaW5mbwogcmVsYXRpbmcgdG8g dGhlIHRhcmdldCBvcGVyYXRpbmcgc3lzdGVtLgogQGVuZCBkZWZ0eXBlZm4KIAorQG5vZGUgSklU IExhbmd1YWdlIGFuZCBBQkkKK0BzZWN0aW9uIEpJVCBBQkkgcGFyYW1ldGVycworQGNpbmRleCBw YXJhbWV0ZXJzLCBqaXQgYWJpCisKK0BkZWZ0eXBlZm4ge0pJVCBUYXJnZXQgSG9va30gdm9pZCBU QVJHRVRfSklUX1JFR0lTVEVSX0NQVV9UQVJHRVRfSU5GTyAodm9pZCkKK1JlZ2lzdGVyIGFsbCB0 YXJnZXQgaW5mb3JtYXRpb24ga2V5cyByZWxhdGluZyB0byB0aGUgdGFyZ2V0IENQVSB1c2luZyB0 aGUKK2Z1bmN0aW9uIEBjb2Rle2ppdF9hZGRfdGFyZ2V0X2luZm9faGFuZGxlcnN9LCB3aGljaCB0 YWtlcyBhCitAc2FtcHtzdHJ1Y3Qgaml0X3RhcmdldF9pbmZvX3NwZWN9IChkZWZpbmVkIGluIEBm aWxle2ppdC9qaXQtdGFyZ2V0Lmh9KS4gIFRoZQora2V5cyBhZGRlZCBieSB0aGlzIGhvb2sgYXJl IG1hZGUgYXZhaWxhYmxlIGF0IGNvbXBpbGUgdGltZSBieSB0aGUKK0Bjb2Rle19fdHJhaXRzKGdl dFRhcmdldEluZm8pfSBleHRlbnNpb24sIHRoZSByZXN1bHQgaXMgYW4gZXhwcmVzc2lvbgorZGVz Y3JpYmluZyB0aGUgcmVxdWVzdGVkIHRhcmdldCBpbmZvcm1hdGlvbi4KK0BlbmQgZGVmdHlwZWZu CisKK0BkZWZ0eXBlZm4ge0pJVCBUYXJnZXQgSG9va30gdm9pZCBUQVJHRVRfSklUX1JFR0lTVEVS X09TX1RBUkdFVF9JTkZPICh2b2lkKQorU2FtZSBhcyBAY29kZXtUQVJHRVRfSklUX0NQVV9UQVJH RVRfSU5GT30sIGJ1dCBpcyB1c2VkIGZvciBrZXlzIHJlbGF0aW5nIHRvCit0aGUgdGFyZ2V0IG9w ZXJhdGluZyBzeXN0ZW0uCitAZW5kIGRlZnR5cGVmbgorCiBAbm9kZSBOYW1lZCBBZGRyZXNzIFNw YWNlcwogQHNlY3Rpb24gQWRkaW5nIHN1cHBvcnQgZm9yIG5hbWVkIGFkZHJlc3Mgc3BhY2VzCiBA Y2luZGV4IG5hbWVkIGFkZHJlc3Mgc3BhY2VzCmRpZmYgLS1naXQgYS9nY2MvZG9jL3RtLnRleGku aW4gYi9nY2MvZG9jL3RtLnRleGkuaW4KaW5kZXggMTQxMDI3ZTBiYjQuLjdhYjgwMjY2NTk1IDEw MDY0NAotLS0gYS9nY2MvZG9jL3RtLnRleGkuaW4KKysrIGIvZ2NjL2RvYy90bS50ZXhpLmluCkBA IC0xMjQsNiArMTI0LDE0IEBAIElmIHRhcmdldHMgaW5pdGlhbGl6ZSBAY29kZXt0YXJnZXRydXN0 bX0gdGhlbXNlbHZlcywgdGhleSBzaG91bGQgc2V0CiBAY29kZXt0YXJnZXRfaGFzX3RhcmdldHJ1 c3RtPXllc30gaW4gQGZpbGV7Y29uZmlnLmdjY307IG90aGVyd2lzZSBhCiBkZWZhdWx0IGRlZmlu aXRpb24gaXMgdXNlZC4KIAorU2ltaWxhcmx5LCB0aGVyZSBpcyBhIEBjb2Rle3RhcmdldGppdG19 IHZhcmlhYmxlIGZvciBob29rcyB0aGF0IGFyZQorc3BlY2lmaWMgdG8gdGhlIGppdCBmcm9udCBl bmQsIGRvY3VtZW50ZWQgYXMgYGBKSVQgVGFyZ2V0IEhvb2snJy4KK1RoaXMgaXMgZGVjbGFyZWQg aW4gQGZpbGV7aml0L2ppdC10YXJnZXQuaH0sIHRoZSBpbml0aWFsaXplcgorQGNvZGV7VEFSR0VU SklUTV9JTklUSUFMSVpFUn0gaW4gQGZpbGV7aml0L2ppdC10YXJnZXQtZGVmLmh9LiAgSWYgdGFy Z2V0cworaW5pdGlhbGl6ZSBAY29kZXt0YXJnZXRqaXRtfSB0aGVtc2VsdmVzLCB0aGV5IHNob3Vs ZCBzZXQKK0Bjb2Rle3RhcmdldF9oYXNfdGFyZ2V0aml0bT15ZXN9IGluIEBmaWxle2NvbmZpZy5n Y2N9OyBvdGhlcndpc2UgYSBkZWZhdWx0CitkZWZpbml0aW9uIGlzIHVzZWQuCisKIEBub2RlIERy aXZlcgogQHNlY3Rpb24gQ29udHJvbGxpbmcgdGhlIENvbXBpbGF0aW9uIERyaXZlciwgQGZpbGV7 Z2NjfQogQGNpbmRleCBkcml2ZXIKQEAgLTcxNzgsNiArNzE4NiwxNCBAQCBmbG9hdGluZy1wb2lu dCBzdXBwb3J0OyB0aGV5IGFyZSBub3QgaW5jbHVkZWQgaW4gdGhpcyBtZWNoYW5pc20uCiAKIEBo b29rIFRBUkdFVF9SVVNUX09TX0lORk8KIAorQG5vZGUgSklUIExhbmd1YWdlIGFuZCBBQkkKK0Bz ZWN0aW9uIEpJVCBBQkkgcGFyYW1ldGVycworQGNpbmRleCBwYXJhbWV0ZXJzLCBqaXQgYWJpCisK K0Bob29rIFRBUkdFVF9KSVRfUkVHSVNURVJfQ1BVX1RBUkdFVF9JTkZPCisKK0Bob29rIFRBUkdF VF9KSVRfUkVHSVNURVJfT1NfVEFSR0VUX0lORk8KKwogQG5vZGUgTmFtZWQgQWRkcmVzcyBTcGFj ZXMKIEBzZWN0aW9uIEFkZGluZyBzdXBwb3J0IGZvciBuYW1lZCBhZGRyZXNzIHNwYWNlcwogQGNp bmRleCBuYW1lZCBhZGRyZXNzIHNwYWNlcwpkaWZmIC0tZ2l0IGEvZ2NjL2dlbmhvb2tzLmNjIGIv Z2NjL2dlbmhvb2tzLmNjCmluZGV4IDQ5NDE0ZWNhNTMxLi43MDY0ZDk2NTlkZCAxMDA2NDQKLS0t IGEvZ2NjL2dlbmhvb2tzLmNjCisrKyBiL2djYy9nZW5ob29rcy5jYwpAQCAtMzYsNiArMzYsNyBA QCBzdGF0aWMgc3RydWN0IGhvb2tfZGVzYyBob29rX2FycmF5W10gPSB7CiAjaW5jbHVkZSAiY29t bW9uL2NvbW1vbi10YXJnZXQuZGVmIgogI2luY2x1ZGUgImQvZC10YXJnZXQuZGVmIgogI2luY2x1 ZGUgInJ1c3QvcnVzdC10YXJnZXQuZGVmIgorI2luY2x1ZGUgImppdC9qaXQtdGFyZ2V0LmRlZiIK ICN1bmRlZiBERUZIT09LCiB9OwogCmRpZmYgLS1naXQgYS9nY2Mvaml0L01ha2UtbGFuZy5pbiBi L2djYy9qaXQvTWFrZS1sYW5nLmluCmluZGV4IDNmZDU2NGE1OTMyLi4xOWVmNTg5ZTU1YyAxMDA2 NDQKLS0tIGEvZ2NjL2ppdC9NYWtlLWxhbmcuaW4KKysrIGIvZ2NjL2ppdC9NYWtlLWxhbmcuaW4K QEAgLTEyMCw3ICsxMjAsNyBAQCBqaXQuc2VyaWFsID0gJChMSUJHQ0NKSVRfRklMRU5BTUUpCiAj IFRlbGwgR05VIG1ha2UgdG8gaWdub3JlIHRoZXNlIGlmIHRoZXkgZXhpc3QuCiAuUEhPTlk6IGpp dAogCi1qaXRfT0JKUyA9IGF0dHJpYnMubyBcCitKSVRfT0JKUyA9IGF0dHJpYnMubyBcCiAJaml0 L2R1bW15LWZyb250ZW5kLm8gXAogCWppdC9saWJnY2NqaXQubyBcCiAJaml0L2ppdC1sb2dnaW5n Lm8gXApAQCAtMTI5LDEzICsxMjksMTcgQEAgaml0X09CSlMgPSBhdHRyaWJzLm8gXAogCWppdC9q aXQtcmVzdWx0Lm8gXAogCWppdC9qaXQtdGVtcGRpci5vIFwKIAlqaXQvaml0LWJ1aWx0aW5zLm8g XAorCWppdC9qaXQtdGFyZ2V0Lm8gXAogCWppdC9qaXQtc3BlYy5vIFwKIAlnY2MubwogCiBpZm5l cSAoLCQoZmluZHN0cmluZyBtaW5ndywkKHRhcmdldCkpKQotaml0X09CSlMgKz0gaml0L2ppdC13 MzIubworSklUX09CSlMgKz0gaml0L2ppdC13MzIubwogZW5kaWYKIAorIyBBbGwgbGFuZ3VhZ2Ut c3BlY2lmaWMgb2JqZWN0IGZpbGVzIGZvciBqaXQuCitqaXRfT0JKUyA9ICQoSklUX09CSlMpICQo SklUX1RBUkdFVF9PQkpTKQorCiAjIFVzZSBzdHJpY3Qgd2FybmluZ3MgZm9yIHRoaXMgZnJvbnQg ZW5kLgogaml0LXdhcm4gPSAkKFNUUklDVF9XQVJOKQogCmRpZmYgLS1naXQgYS9nY2Mvaml0L2Rv Y3MvdG9waWNzL2NvbXBhdGliaWxpdHkucnN0IGIvZ2NjL2ppdC9kb2NzL3RvcGljcy9jb21wYXRp YmlsaXR5LnJzdAppbmRleCBlYmVkZTQ0MGVlNC4uZmU3M2NhYTM5ODIgMTAwNjQ0Ci0tLSBhL2dj Yy9qaXQvZG9jcy90b3BpY3MvY29tcGF0aWJpbGl0eS5yc3QKKysrIGIvZ2NjL2ppdC9kb2NzL3Rv cGljcy9jb21wYXRpYmlsaXR5LnJzdApAQCAtMzc4LDMgKzM3OCwxNyBAQCBhbGlnbm1lbnQgb2Yg YSB2YXJpYWJsZToKIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiBgYExJQkdDQ0pJVF9BQklfMjVgYCBj b3ZlcnMgdGhlIGFkZGl0aW9uIG9mCiA6ZnVuYzpgZ2NjX2ppdF90eXBlX2dldF9yZXN0cmljdGAK KworLi4gX0xJQkdDQ0pJVF9BQklfMjY6CisKK2BgTElCR0NDSklUX0FCSV8yNmBgCistLS0tLS0t LS0tLS0tLS0tLS0tLQorYGBMSUJHQ0NKSVRfQUJJXzI2YGAgY292ZXJzIHRoZSBhZGRpdGlvbiBv ZiBmdW5jdGlvbnMgdG8gcXVlcnkgdGhlIHRhcmdldAoraW5mb3JtYXRpb246CisKKyAgKiA6ZnVu YzpgZ2NjX2ppdF90eXBlX2dldF9yZXN0cmljdGAKKyAgKiA6ZnVuYzpgZ2NjX2ppdF9jb250ZXh0 X2dldF90YXJnZXRfaW5mb2AKKyAgKiA6ZnVuYzpgZ2NjX2ppdF90YXJnZXRfaW5mb19yZWxlYXNl YAorICAqIDpmdW5jOmBnY2Nfaml0X3RhcmdldF9pbmZvX2NwdV9zdXBwb3J0c2AKKyAgKiA6ZnVu YzpgZ2NjX2ppdF90YXJnZXRfaW5mb19hcmNoYAorICAqIDpmdW5jOmBnY2Nfaml0X3RhcmdldF9p bmZvX3N1cHBvcnRzXzEyOGJpdF9pbnRgCmRpZmYgLS1naXQgYS9nY2Mvaml0L2RvY3MvdG9waWNz L2NvbXBpbGF0aW9uLnJzdCBiL2djYy9qaXQvZG9jcy90b3BpY3MvY29tcGlsYXRpb24ucnN0Cmlu ZGV4IDA5MTFmMTA4YmE0Li42ZGIxZGU4MmM3ZCAxMDA2NDQKLS0tIGEvZ2NjL2ppdC9kb2NzL3Rv cGljcy9jb21waWxhdGlvbi5yc3QKKysrIGIvZ2NjL2ppdC9kb2NzL3RvcGljcy9jb21waWxhdGlv bi5yc3QKQEAgLTE5OSwzICsxOTksNTQgQEAgVGhlIGF2YWlsYWJsZSBraW5kcyBvZiBvdXRwdXQg YXJlOgogLi4gYzptYWNybzo6IEdDQ19KSVRfT1VUUFVUX0tJTkRfRVhFQ1VUQUJMRQogCiAgICBD b21waWxlIHRoZSBjb250ZXh0IHRvIGFuIGV4ZWN1dGFibGUuCisKKworR2V0dGluZyBpbmZvcm1h dGlvbiBhYm91dCBhIHRhcmdldAorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor CitZb3UgY2FuIHF1ZXJ5IHRoZSB0YXJnZXQgaW5mb3JtYXRpb24gYnkgdXNpbmcgdGhlIGZvbGxv d2luZyBBUEk6CisKKy4uIGZ1bmN0aW9uOjogZ2NjX2ppdF90YXJnZXRfaW5mbyAqIFwKKyAgICAg ICAgICAgICAgZ2NjX2ppdF9jb250ZXh0X2dldF90YXJnZXRfaW5mbyAoZ2NjX2ppdF9jb250ZXh0 ICpjdHh0KQorCisgICBDb21wdXRlIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBhIHRhcmdldC4KKwor ICAgSWYgdGhlIHJlc3VsdCBpcyBub24tTlVMTCwgdGhlIGNhbGxlciBiZWNvbWVzIHJlc3BvbnNp YmxlIGZvcgorICAgY2FsbGluZyA6ZnVuYzpgZ2NjX2ppdF90YXJnZXRfaW5mb19yZWxlYXNlYCBv biBpdCBvbmNlIHRoZXkncmUgZG9uZQorICAgd2l0aCBpdC4KKworLi4gZnVuY3Rpb246OiB2b2lk IFwKKyAgICAgICAgICAgICAgZ2NjX2ppdF90YXJnZXRfaW5mb19yZWxlYXNlIChnY2Nfaml0X3Rh cmdldF9pbmZvICppbmZvKQorCisgICBUaGlzIGZ1bmN0aW9uIHJlbGVhc2VzIGFsbCByZXNvdXJj ZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiB0YXJnZXQgaW5mby4KKworLi4gZnVuY3Rpb246 OiBpbnQgXAorICAgICAgICAgICAgICBnY2Nfaml0X3RhcmdldF9pbmZvX2NwdV9zdXBwb3J0cyAo Z2NjX2ppdF90YXJnZXRfaW5mbyAqaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZlYXR1cmUpCisKKyAgIENoZWNrIGlmIHRo ZSBzcGVjaWZpZWQgdGFyZ2V0IElORk8gc3VwcG9ydHMgdGhlIGNwdSBGRUFUVVJFLgorCisuLiBm dW5jdGlvbjo6IGNvbnN0IGNoYXIgKiBcCisgICAgICAgICAgICAgIGdjY19qaXRfdGFyZ2V0X2lu Zm9fYXJjaCAoZ2NjX2ppdF90YXJnZXRfaW5mbyAqaW5mbykKKworICAgR2V0IHRoZSBhcmNoaXRl Y3R1cmUgb2YgdGhlIGN1cnJlbnRseSBydW5uaW5nIENQVS4KKworLi4gZnVuY3Rpb246OiBpbnQg XAorICAgICAgICAgICAgICBnY2Nfaml0X3RhcmdldF9pbmZvX3N1cHBvcnRzXzEyOGJpdF9pbnQg KGdjY19qaXRfdGFyZ2V0X2luZm8gKmluZm8pCisKKyAgIENoZWNrIGlmIHRoZSBzcGVjaWZpZWQg dGFyZ2V0IElORk8gc3VwcG9ydHMgMTI4LWJpdCBpbnRlZ2Vycy4KKworICAgVGhlIEFQSSBlbnRy eXBvaW50cyByZWxhdGluZyB0byB0aGUgdGFyZ2V0IGluZm86CisKKyAgICAgICogOmM6ZnVuYzpg Z2NjX2ppdF9jb250ZXh0X2dldF90YXJnZXRfaW5mb2AKKyAgICAgICogOmM6ZnVuYzpgZ2NjX2pp dF90YXJnZXRfaW5mb19yZWxlYXNlYAorICAgICAgKiA6YzpmdW5jOmBnY2Nfaml0X3RhcmdldF9p bmZvX2NwdV9zdXBwb3J0c2AKKyAgICAgICogOmM6ZnVuYzpgZ2NjX2ppdF90YXJnZXRfaW5mb19h cmNoYAorICAgICAgKiA6YzpmdW5jOmBnY2Nfaml0X3RhcmdldF9pbmZvX3N1cHBvcnRzXzEyOGJp dF9pbnRgCisKKyAgIHdlcmUgYWRkZWQgaW4gOnJlZjpgTElCR0NDSklUX0FCSV8yNmA7IHlvdSBj YW4gdGVzdCBmb3IgdGhlaXIgcHJlc2VuY2UKKyAgIHVzaW5nCisKKyAgIC4uIGNvZGUtYmxvY2s6 OiBjCisKKyAgICAgICNpZmRlZiBMSUJHQ0NKSVRfSEFWRV9UQVJHRVRfSU5GT19BUEkKZGlmZiAt LWdpdCBhL2djYy9qaXQvaml0LXBsYXliYWNrLmNjIGIvZ2NjL2ppdC9qaXQtcGxheWJhY2suY2MK aW5kZXggMThjYzRkYTI1YjguLmJmNTNjMDM5ZTg1IDEwMDY0NAotLS0gYS9nY2Mvaml0L2ppdC1w bGF5YmFjay5jYworKysgYi9nY2Mvaml0L2ppdC1wbGF5YmFjay5jYwpAQCAtNDYsNiArNDYsNyBA QCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQogI2lu Y2x1ZGUgImppdC1yZXN1bHQuaCIKICNpbmNsdWRlICJqaXQtYnVpbHRpbnMuaCIKICNpbmNsdWRl ICJqaXQtdGVtcGRpci5oIgorI2luY2x1ZGUgImppdC10YXJnZXQuaCIKIAogI2lmZGVmIF9XSU4z MgogI2luY2x1ZGUgImppdC13MzIuaCIKQEAgLTMyMjYsNiArMzIyNyw3IEBAIHJlcGxheSAoKQog ICBKSVRfTE9HX1NDT1BFIChnZXRfbG9nZ2VyICgpKTsKIAogICBpbml0X3R5cGVzICgpOworICBq aXRfdGFyZ2V0X2luaXQgKCk7CiAKICAgLyogUmVwbGF5IHRoZSByZWNvcmRlZCBldmVudHM6ICAq LwogICB0aW1ldmFyX3B1c2ggKFRWX0pJVF9SRVBMQVkpOwpkaWZmIC0tZ2l0IGEvZ2NjL2ppdC9q aXQtcGxheWJhY2suaCBiL2djYy9qaXQvaml0LXBsYXliYWNrLmgKaW5kZXggZjllMjlkMGJhZWMu LmFmYTZkMjgxMTg4IDEwMDY0NAotLS0gYS9nY2Mvaml0L2ppdC1wbGF5YmFjay5oCisrKyBiL2dj Yy9qaXQvaml0LXBsYXliYWNrLmgKQEAgLTQzLDkgKzQzLDEwIEBAIG5hbWVzcGFjZSBwbGF5YmFj ayB7CiAKIC8qIHBsYXliYWNrOjpjb250ZXh0IGlzIGFuIGFic3RyYWN0IGJhc2UgY2xhc3MuCiAK LSAgIFRoZSB0d28gY29uY3JldGUgc3ViY2xhc3NlcyBhcmU6CisgICBUaGUgdGhyZWUgY29uY3Jl dGUgc3ViY2xhc3NlcyBhcmU6CiAgICAtIHBsYXliYWNrOjpjb21waWxlX3RvX21lbW9yeQotICAg LSBwbGF5YmFjazo6Y29tcGlsZV90b19maWxlLiAgKi8KKyAgIC0gcGxheWJhY2s6OmNvbXBpbGVf dG9fZmlsZQorICAgLSBwbGF5YmFjazo6Z2V0X3RhcmdldF9pbmZvLiAgKi8KIAogY2xhc3MgY29u dGV4dCA6IHB1YmxpYyBsb2dfdXNlcgogewpAQCAtNDA1LDYgKzQwNiwxOCBAQCBjbGFzcyBjb21w aWxlX3RvX2ZpbGUgOiBwdWJsaWMgY29udGV4dAogICBjb25zdCBjaGFyICptX291dHB1dF9wYXRo OwogfTsKIAorY2xhc3MgZ2V0X3RhcmdldF9pbmZvIDogcHVibGljIGNvbnRleHQKK3sKKyBwdWJs aWM6CisgIGdldF90YXJnZXRfaW5mbyAocmVjb3JkaW5nOjpjb250ZXh0ICpjdHh0KSA6IGNvbnRl eHQgKGN0eHQpCisgIHsKKyAgfQorCisgIHZvaWQgcG9zdHByb2Nlc3MgKGNvbnN0IGNoYXIgKikg ZmluYWwgb3ZlcnJpZGUKKyAgeworICB9Cit9OworCiAKIC8qIEEgdGVtcG9yYXJ5IHdyYXBwZXIg b2JqZWN0LgogICAgVGhlc2Ugb2JqZWN0cyBhcmUgKG1vc3RseSkgb25seSB2YWxpZCBkdXJpbmcg cmVwbGF5LgpkaWZmIC0tZ2l0IGEvZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmNjIGIvZ2NjL2ppdC9q aXQtcmVjb3JkaW5nLmNjCmluZGV4IDliNWI4MDA1ZWJlLi45NDk3ODE3MGMxMCAxMDA2NDQKLS0t IGEvZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmNjCisrKyBiL2djYy9qaXQvaml0LXJlY29yZGluZy5j YwpAQCAtMTUyNSw2ICsxNTI1LDI1IEBAIHJlY29yZGluZzo6Y29udGV4dDo6Y29tcGlsZV90b19m aWxlIChlbnVtIGdjY19qaXRfb3V0cHV0X2tpbmQgb3V0cHV0X2tpbmQsCiAgIHJlcGxheWVyLmNv bXBpbGUgKCk7CiB9CiAKK3ZvaWQKK3JlY29yZGluZzo6Y29udGV4dDo6Z2V0X3RhcmdldF9pbmZv ICgpCit7CisgIEpJVF9MT0dfU0NPUEUgKGdldF9sb2dnZXIgKCkpOworCisgIGxvZ19hbGxfb3B0 aW9ucyAoKTsKKworICBpZiAoZXJyb3JzX29jY3VycmVkICgpKQorICAgIHJldHVybjsKKworICBh ZGRfZHJpdmVyX29wdGlvbiAoIi1mc3ludGF4LW9ubHkiKTsKKworICAvKiBTZXQgdXAgYSBnZXRf dGFyZ2V0X2luZm8gcGxheWJhY2sgY29udGV4dC4gICovCisgIDo6Z2NjOjpqaXQ6OnBsYXliYWNr OjpnZXRfdGFyZ2V0X2luZm8gcmVwbGF5ZXIgKHRoaXMpOworCisgIC8qIFVzZSBpdC4gICovCisg IHJlcGxheWVyLmNvbXBpbGUgKCk7Cit9CisKIC8qIEZvcm1hdCB0aGUgZ2l2ZW4gZXJyb3IgdXNp bmcgcHJpbnRmJ3MgY29udmVudGlvbnMsIHByaW50CiAgICBpdCB0byBzdGRlcnIsIGFuZCBhZGQg aXQgdG8gdGhlIGNvbnRleHQuICAqLwogCmRpZmYgLS1naXQgYS9nY2Mvaml0L2ppdC1yZWNvcmRp bmcuaCBiL2djYy9qaXQvaml0LXJlY29yZGluZy5oCmluZGV4IDRhODA4Mjk5MWZiLi5hMDkwYzg1 YjE5ZSAxMDA2NDQKLS0tIGEvZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmgKKysrIGIvZ2NjL2ppdC9q aXQtcmVjb3JkaW5nLmgKQEAgLTI4Myw2ICsyODMsOSBAQCBwdWJsaWM6CiAgIGNvbXBpbGVfdG9f ZmlsZSAoZW51bSBnY2Nfaml0X291dHB1dF9raW5kIG91dHB1dF9raW5kLAogCQkgICBjb25zdCBj aGFyICpvdXRwdXRfcGF0aCk7CiAKKyAgdm9pZAorICBnZXRfdGFyZ2V0X2luZm8gKCk7CisKICAg dm9pZAogICBhZGRfZXJyb3IgKGxvY2F0aW9uICpsb2MsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQog ICAgICAgR05VX1BSSU5URigzLCA0KTsKZGlmZiAtLWdpdCBhL2djYy9qaXQvaml0LXRhcmdldC1k ZWYuaCBiL2djYy9qaXQvaml0LXRhcmdldC1kZWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uZGNiMzQyZmFmZTcKLS0tIC9kZXYvbnVsbAorKysgYi9nY2Mvaml0L2pp dC10YXJnZXQtZGVmLmgKQEAgLTAsMCArMSwyMCBAQAorLyogaml0LXRhcmdldC1kZWYuaCAtLSBE ZWZhdWx0IGluaXRpYWxpemVycyBmb3Igaml0IHRhcmdldCBob29rcy4KKyAgIENvcHlyaWdodCAo QykgMjAyMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkg aXQKKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5IHRoZQorICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24pIGFueQorICAgbGF0ZXIgdmVyc2lvbi4KKwor ICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgICA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisjaW5jbHVkZSAiaml0L2ppdC10YXJnZXQtaG9v a3MtZGVmLmgiCisjaW5jbHVkZSAidHJlZS5oIgorI2luY2x1ZGUgImhvb2tzLmgiCmRpZmYgLS1n aXQgYS9nY2Mvaml0L2ppdC10YXJnZXQuY2MgYi9nY2Mvaml0L2ppdC10YXJnZXQuY2MKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU4YWM4NDdkM2RmCi0tLSAvZGV2L251 bGwKKysrIGIvZ2NjL2ppdC9qaXQtdGFyZ2V0LmNjCkBAIC0wLDAgKzEsODkgQEAKKy8qIGppdC10 YXJnZXQuY2MgLS0gVGFyZ2V0IGludGVyZmFjZSBmb3IgdGhlIGppdCBmcm9udCBlbmQuCisgICBD b3B5cmlnaHQgKEMpIDIwMjMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKK0dDQyBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Citp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQordGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g Mywgb3IgKGF0IHlvdXIgb3B0aW9uKQorYW55IGxhdGVyIHZlcnNpb24uCisKK0dDQyBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKK01FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK K0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKK1lvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl CithbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor I2luY2x1ZGUgInN5c3RlbS5oIgorI2luY2x1ZGUgImNvcmV0eXBlcy5oIgorCisjaW5jbHVkZSAi dHJlZS5oIgorI2luY2x1ZGUgIm1lbW1vZGVsLmgiCisjaW5jbHVkZSAiZm9sZC1jb25zdC5oIgor I2luY2x1ZGUgImRpYWdub3N0aWMuaCIKKyNpbmNsdWRlICJzdG9yLWxheW91dC5oIgorI2luY2x1 ZGUgInRtLmgiCisjaW5jbHVkZSAidG1fcC5oIgorI2luY2x1ZGUgInRhcmdldC5oIgorI2luY2x1 ZGUgImNhbGxzLmgiCisKKyNpbmNsdWRlICJqaXQtdGFyZ2V0LmgiCisKKyNpbmNsdWRlIDxhbGdv cml0aG0+CisKK3N0YXRpYyB0YXJnZXRfaW5mbyBqaXRfdGFyZ2V0X2luZm87CisKKy8qIEluaXRp YWxpemUgYWxsIHZhcmlhYmxlcyBvZiB0aGUgVGFyZ2V0IHN0cnVjdHVyZS4gICovCisKK3ZvaWQK K2ppdF90YXJnZXRfaW5pdCAoKQoreworICAvKiBJbml0aWFsaXplIHRhcmdldCBpbmZvIHRhYmxl cywgdGhlIGtleXMgcmVxdWlyZWQgYnkgdGhlIGxhbmd1YWdlIGFyZSBhZGRlZAorICAgICBsYXN0 LCBzbyB0aGF0IHRoZSBPUyBhbmQgQ1BVIGhhbmRsZXJzIGNhbiBvdmVycmlkZS4gICovCisgIHRh cmdldGppdG0uaml0X3JlZ2lzdGVyX2NwdV90YXJnZXRfaW5mbyAoKTsKKyAgdGFyZ2V0aml0bS5q aXRfcmVnaXN0ZXJfb3NfdGFyZ2V0X2luZm8gKCk7Cit9CisKKy8qIEFkZCBhbGwgdGFyZ2V0IGlu Zm8gaW4gSEFORExFUlMgdG8gSklUX1RBUkdFVF9JTkZPIGZvciB1c2UgYnkKKyAgIGppdF9oYXNf dGFyZ2V0X3ZhbHVlICgpLiAgKi8KKwordm9pZAoraml0X2FkZF90YXJnZXRfaW5mbyAoY29uc3Qg Y2hhciAqa2V5LCBjb25zdCBjaGFyICp2YWx1ZSkKK3sKKyAgaWYgKGppdF90YXJnZXRfaW5mby5t X2luZm8uZmluZCAoa2V5KSA9PSBqaXRfdGFyZ2V0X2luZm8ubV9pbmZvLmVuZCAoKSkKKyAgICBq aXRfdGFyZ2V0X2luZm8ubV9pbmZvLmluc2VydCAoe2tleSwge3ZhbHVlfX0pOworICBlbHNlCisg ICAgaml0X3RhcmdldF9pbmZvLm1faW5mb1trZXldLmluc2VydCAodmFsdWUpOworfQorCit2b2lk CitqaXRfdGFyZ2V0X3NldF9hcmNoIChzdGQ6OnN0cmluZyBjb25zdCYgYXJjaCkKK3sKKyAgaml0 X3RhcmdldF9pbmZvLm1fYXJjaCA9IGFyY2g7Cit9CisKK3ZvaWQKK2ppdF90YXJnZXRfc2V0XzEy OGJpdF9pbnRfc3VwcG9ydCAoYm9vbCBzdXBwb3J0KQoreworICBqaXRfdGFyZ2V0X2luZm8ubV9z dXBwb3J0c18xMjhiaXRfaW50ID0gc3VwcG9ydDsKK30KKwordGFyZ2V0X2luZm8gKgoraml0X2dl dF90YXJnZXRfaW5mbyAoKQoreworICB0YXJnZXRfaW5mbyAqaW5mbyA9IG5ldyB0YXJnZXRfaW5m byB7aml0X3RhcmdldF9pbmZvfTsKKyAgaml0X3RhcmdldF9pbmZvID0gdGFyZ2V0X2luZm97fTsK KyAgcmV0dXJuIGluZm87Cit9CisKK2Jvb2wKK3RhcmdldF9pbmZvOjpoYXNfdGFyZ2V0X3ZhbHVl IChjb25zdCBjaGFyICprZXksIGNvbnN0IGNoYXIgKnZhbHVlKQoreworICBpZiAobV9pbmZvLmZp bmQgKGtleSkgPT0gbV9pbmZvLmVuZCAoKSkKKyAgICByZXR1cm4gZmFsc2U7CisKKyAgYXV0byYg c2V0ID0gbV9pbmZvW2tleV07CisgIHJldHVybiBzZXQuZmluZCAodmFsdWUpICE9IHNldC5lbmQg KCk7Cit9CmRpZmYgLS1naXQgYS9nY2Mvaml0L2ppdC10YXJnZXQuZGVmIGIvZ2NjL2ppdC9qaXQt dGFyZ2V0LmRlZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZGUwZDcx N2IzNjUKLS0tIC9kZXYvbnVsbAorKysgYi9nY2Mvaml0L2ppdC10YXJnZXQuZGVmCkBAIC0wLDAg KzEsNTIgQEAKKy8qIGppdC10YXJnZXQuZGVmIC0tIFRhcmdldCBob29rIGRlZmluaXRpb25zIGZv ciB0aGUgaml0IGZyb250IGVuZC4KKyAgIENvcHlyaWdodCAoQykgMjAyMyBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgIHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQor ICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91 ciBvcHRpb24pIGFueQorICAgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K KworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUg Q09QWUlORzMuICBJZiBub3Qgc2VlCisgICA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u ICAqLworCisvKiBTZWUgdGFyZ2V0LWhvb2tzLW1hY3Jvcy5oIGZvciBkZXRhaWxzIG9mIG1hY3Jv cyB0aGF0IHNob3VsZCBiZQorICAgcHJvdmlkZWQgYnkgdGhlIGluY2x1ZGluZyBmaWxlLCBhbmQg aG93IHRvIHVzZSB0aGVtIGhlcmUuICAqLworCisjaW5jbHVkZSAidGFyZ2V0LWhvb2tzLW1hY3Jv cy5oIgorCisjdW5kZWYgSE9PS19UWVBFCisjZGVmaW5lIEhPT0tfVFlQRSAiSklUIFRhcmdldCBI b29rIgorCitIT09LX1ZFQ1RPUiAoVEFSR0VUSklUTV9JTklUSUFMSVpFUiwgZ2NjX3RhcmdldGpp dG0pCisKKyN1bmRlZiBIT09LX1BSRUZJWAorI2RlZmluZSBIT09LX1BSRUZJWCAiVEFSR0VUXyIK KworLyogZ2V0VGFyZ2V0SW5mbyBrZXlzIHJlbGF0aW5nIHRvIHRoZSB0YXJnZXQgQ1BVLiAgKi8K K0RFRkhPT0sKKyhqaXRfcmVnaXN0ZXJfY3B1X3RhcmdldF9pbmZvLAorICJSZWdpc3RlciBhbGwg dGFyZ2V0IGluZm9ybWF0aW9uIGtleXMgcmVsYXRpbmcgdG8gdGhlIHRhcmdldCBDUFUgdXNpbmcg dGhlXG5cCitmdW5jdGlvbiBAY29kZXtqaXRfYWRkX3RhcmdldF9pbmZvX2hhbmRsZXJzfSwgd2hp Y2ggdGFrZXMgYVxuXAorQHNhbXB7c3RydWN0IGppdF90YXJnZXRfaW5mb19zcGVjfSAoZGVmaW5l ZCBpbiBAZmlsZXtqaXQvaml0LXRhcmdldC5ofSkuICBUaGVcblwKK2tleXMgYWRkZWQgYnkgdGhp cyBob29rIGFyZSBtYWRlIGF2YWlsYWJsZSBhdCBjb21waWxlIHRpbWUgYnkgdGhlXG5cCitAY29k ZXtfX3RyYWl0cyhnZXRUYXJnZXRJbmZvKX0gZXh0ZW5zaW9uLCB0aGUgcmVzdWx0IGlzIGFuIGV4 cHJlc3Npb25cblwKK2Rlc2NyaWJpbmcgdGhlIHJlcXVlc3RlZCB0YXJnZXQgaW5mb3JtYXRpb24u IiwKKyB2b2lkLCAodm9pZCksCisgaG9va192b2lkX3ZvaWQpCisKKy8qIGdldFRhcmdldEluZm8g a2V5cyByZWxhdGluZyB0byB0aGUgdGFyZ2V0IE9TLiAgKi8KK0RFRkhPT0sKKyhqaXRfcmVnaXN0 ZXJfb3NfdGFyZ2V0X2luZm8sCisgIlNhbWUgYXMgQGNvZGV7VEFSR0VUX0pJVF9DUFVfVEFSR0VU X0lORk99LCBidXQgaXMgdXNlZCBmb3Iga2V5cyByZWxhdGluZyB0b1xuXAordGhlIHRhcmdldCBv cGVyYXRpbmcgc3lzdGVtLiIsCisgdm9pZCwgKHZvaWQpLAorIGhvb2tfdm9pZF92b2lkKQorCisv KiBDbG9zZSB0aGUgJ3N0cnVjdCBnY2NfdGFyZ2V0ZG0nIGRlZmluaXRpb24uICAqLworSE9PS19W RUNUT1JfRU5EIChDOTBfRU1QVFlfSEFDSykKZGlmZiAtLWdpdCBhL2djYy9qaXQvaml0LXRhcmdl dC5oIGIvZ2NjL2ppdC9qaXQtdGFyZ2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLjY0NDNjZDcxMDI1Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL2ppdC9qaXQtdGFy Z2V0LmgKQEAgLTAsMCArMSw3MyBAQAorLyogaml0LXRhcmdldC5oIC0tIERhdGEgc3RydWN0dXJl IGRlZmluaXRpb25zIGZvciB0YXJnZXQtc3BlY2lmaWMgaml0IGJlaGF2aW9yLgorICAgQ29weXJp Z2h0IChDKSAyMDIzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeSBpdAorICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55CisgICBsYXRlciB2ZXJzaW9u LgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyAgIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKyNpZm5kZWYgR0NDX0pJVF9UQVJHRVRf SAorI2RlZmluZSBHQ0NfSklUX1RBUkdFVF9ICisKKyNkZWZpbmUgREVGSE9PS1BPRChOQU1FLCBE T0MsIFRZUEUsIElOSVQpIFRZUEUgTkFNRTsKKyNkZWZpbmUgREVGSE9PSyhOQU1FLCBET0MsIFRZ UEUsIFBBUkFNUywgSU5JVCkgVFlQRSAoKiBOQU1FKSBQQVJBTVM7CisjZGVmaW5lIERFRkhPT0tf VU5ET0MgREVGSE9PSworI2RlZmluZSBIT09LU1RSVUNUKEZSQUdNRU5UKSBGUkFHTUVOVAorCisj aW5jbHVkZSAiaml0LXRhcmdldC5kZWYiCisKKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8 dW5vcmRlcmVkX21hcD4KKyNpbmNsdWRlIDx1bm9yZGVyZWRfc2V0PgorCitzdGF0aWMgc2l6ZV90 IGhhc2hfY3N0ciAoY29uc3QgY2hhciAqcykKK3sKKyAgY29uc3Qgc2l6ZV90IHNlZWQgPSAwOwor ICByZXR1cm4gc3RkOjpfSGFzaF9ieXRlcyAocywgc3RkOjpzdHJsZW4gKHMpLCBzZWVkKTsKK30K Kworc3RydWN0IENTdHJpbmdIYXNoIHsKKyAgc2l6ZV90IG9wZXJhdG9yKCkgKGNvbnN0IGNoYXIq IGNvbnN0ICZzdHJpbmcpIGNvbnN0IHsKKyAgICBhdXRvIHJlcyA9IGhhc2hfY3N0ciAoc3RyaW5n KTsKKyAgICByZXR1cm4gcmVzOworICB9Cit9OworCitzdHJ1Y3QgQ1N0cmluZ0VxdWFsIHsKKyAg Ym9vbCBvcGVyYXRvcigpIChjb25zdCBjaGFyKiBjb25zdCAmc3RyaW5nMSwKKwkJICAgY29uc3Qg Y2hhciogY29uc3QgJnN0cmluZzIpIGNvbnN0IHsKKyAgICAgIHJldHVybiBzdHJjbXAgKHN0cmlu ZzEsIHN0cmluZzIpID09IDA7CisgIH0KK307CisKK3N0cnVjdCB0YXJnZXRfaW5mbyB7CisgIHB1 YmxpYzoKKyAgICBib29sIGhhc190YXJnZXRfdmFsdWUgKGNvbnN0IGNoYXIgKmtleSwgY29uc3Qg Y2hhciAqdmFsdWUpOworCisgICAgc3RkOjp1bm9yZGVyZWRfbWFwPGNvbnN0IGNoYXIgKiwKKwkJ ICAgICAgIHN0ZDo6dW5vcmRlcmVkX3NldDxjb25zdCBjaGFyICosIENTdHJpbmdIYXNoLAorCQkJ CQkgIENTdHJpbmdFcXVhbD4sCisJCSAgICAgICBDU3RyaW5nSGFzaCwgQ1N0cmluZ0VxdWFsPiBt X2luZm87CisgICAgc3RkOjpzdHJpbmcgbV9hcmNoOworICAgIGJvb2wgbV9zdXBwb3J0c18xMjhi aXRfaW50ID0gZmFsc2U7Cit9OworCisvKiBFYWNoIHRhcmdldCBjYW4gcHJvdmlkZSB0aGVpciBv d24uICAqLworZXh0ZXJuIHN0cnVjdCBnY2NfdGFyZ2V0aml0bSB0YXJnZXRqaXRtOworCitleHRl cm4gdm9pZCBqaXRfdGFyZ2V0X2luaXQgKCk7CitleHRlcm4gdm9pZCBqaXRfdGFyZ2V0X3NldF9h cmNoIChzdGQ6OnN0cmluZyBjb25zdCYgYXJjaCk7CitleHRlcm4gdm9pZCBqaXRfdGFyZ2V0X3Nl dF8xMjhiaXRfaW50X3N1cHBvcnQgKGJvb2wgc3VwcG9ydCk7CitleHRlcm4gdm9pZCBqaXRfYWRk X3RhcmdldF9pbmZvIChjb25zdCBjaGFyICprZXksIGNvbnN0IGNoYXIgKnZhbHVlKTsKK2V4dGVy biB0YXJnZXRfaW5mbyAqIGppdF9nZXRfdGFyZ2V0X2luZm8gKCk7CisKKyNlbmRpZiAvKiBHQ0Nf SklUX1RBUkdFVF9IICAqLwpkaWZmIC0tZ2l0IGEvZ2NjL2ppdC9saWJnY2NqaXQuY2MgYi9nY2Mv aml0L2xpYmdjY2ppdC5jYwppbmRleCAwNDUxYjRkZjdmOS4uMTViYTNhY2M5NWMgMTAwNjQ0Ci0t LSBhL2djYy9qaXQvbGliZ2Njaml0LmNjCisrKyBiL2djYy9qaXQvbGliZ2Njaml0LmNjCkBAIC0y OSw2ICsyOSw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBu b3Qgc2VlCiAjaW5jbHVkZSAibGliZ2Njaml0LmgiCiAjaW5jbHVkZSAiaml0LXJlY29yZGluZy5o IgogI2luY2x1ZGUgImppdC1yZXN1bHQuaCIKKyNpbmNsdWRlICJqaXQtdGFyZ2V0LmgiCiAKIC8q IFRoZSBvcGFxdWUgdHlwZXMgdXNlZCBieSB0aGUgcHVibGljIEFQSSBhcmUgYWN0dWFsbHkgc3Vi Y2xhc3NlcwogICAgb2YgdGhlIGdjYzo6aml0OjpyZWNvcmRpbmcgY2xhc3Nlcy4gICovCkBAIC00 NCw2ICs0NSwxMCBAQCBzdHJ1Y3QgZ2NjX2ppdF9yZXN1bHQgOiBwdWJsaWMgZ2NjOjpqaXQ6OnJl c3VsdAogewogfTsKIAorc3RydWN0IGdjY19qaXRfdGFyZ2V0X2luZm8gOiBwdWJsaWMgdGFyZ2V0 X2luZm8KK3sKK307CisKIHN0cnVjdCBnY2Nfaml0X29iamVjdCA6IHB1YmxpYyBnY2M6OmppdDo6 cmVjb3JkaW5nOjptZW1lbnRvCiB7CiB9OwpAQCAtMzY3OSw2ICszNjg0LDQ0IEBAIGdjY19qaXRf Y29udGV4dF9jb21waWxlX3RvX2ZpbGUgKGdjY19qaXRfY29udGV4dCAqY3R4dCwKICAgY3R4dC0+ Y29tcGlsZV90b19maWxlIChvdXRwdXRfa2luZCwgb3V0cHV0X3BhdGgpOwogfQogCitnY2Nfaml0 X3RhcmdldF9pbmZvICoKK2djY19qaXRfY29udGV4dF9nZXRfdGFyZ2V0X2luZm8gKGdjY19qaXRf Y29udGV4dCAqY3R4dCkKK3sKKyAgUkVUVVJOX05VTExfSUZfRkFJTCAoY3R4dCwgTlVMTCwgTlVM TCwgIk5VTEwgY29udGV4dCIpOworICBKSVRfTE9HX0ZVTkMgKGN0eHQtPmdldF9sb2dnZXIgKCkp OworCisgIGN0eHQtPmxvZyAoImdldF90YXJnZXRfaW5mbyBvZiBjdHh0OiAlcCIsICh2b2lkICop Y3R4dCk7CisKKyAgY3R4dC0+Z2V0X3RhcmdldF9pbmZvICgpOworCisgIHJldHVybiAoZ2NjX2pp dF90YXJnZXRfaW5mbyopIGppdF9nZXRfdGFyZ2V0X2luZm8gKCk7Cit9CisKK3ZvaWQKK2djY19q aXRfdGFyZ2V0X2luZm9fcmVsZWFzZSAoZ2NjX2ppdF90YXJnZXRfaW5mbyAqaW5mbykKK3sKKyAg UkVUVVJOX0lGX0ZBSUwgKGluZm8sIE5VTEwsIE5VTEwsICJOVUxMIGluZm8iKTsKKyAgZGVsZXRl IGluZm87Cit9CisKK2ludAorZ2NjX2ppdF90YXJnZXRfaW5mb19jcHVfc3VwcG9ydHMgKGdjY19q aXRfdGFyZ2V0X2luZm8gKmluZm8sCisJCQkJICBjb25zdCBjaGFyICpmZWF0dXJlKQoreworICBy ZXR1cm4gaW5mby0+aGFzX3RhcmdldF92YWx1ZSAoInRhcmdldF9mZWF0dXJlIiwgZmVhdHVyZSk7 Cit9CisKK2NvbnN0IGNoYXIgKgorZ2NjX2ppdF90YXJnZXRfaW5mb19hcmNoIChnY2Nfaml0X3Rh cmdldF9pbmZvICppbmZvKQoreworICByZXR1cm4gaW5mby0+bV9hcmNoLmNfc3RyICgpOworfQor CitpbnQKK2djY19qaXRfdGFyZ2V0X2luZm9fc3VwcG9ydHNfMTI4Yml0X2ludCAoZ2NjX2ppdF90 YXJnZXRfaW5mbyAqaW5mbykKK3sKKyAgcmV0dXJuIGluZm8tPm1fc3VwcG9ydHNfMTI4Yml0X2lu dDsKK30KIAogLyogUHVibGljIGVudHJ5cG9pbnQuICBTZWUgZGVzY3JpcHRpb24gaW4gbGliZ2Nj aml0LmguCiAKZGlmZiAtLWdpdCBhL2djYy9qaXQvbGliZ2Njaml0LmggYi9nY2Mvaml0L2xpYmdj Y2ppdC5oCmluZGV4IDc0OWY2YzI0MTc3Li5hMjg5ODYyMzExYiAxMDA2NDQKLS0tIGEvZ2NjL2pp dC9saWJnY2NqaXQuaAorKysgYi9nY2Mvaml0L2xpYmdjY2ppdC5oCkBAIC01Miw2ICs1Miw5IEBA IHR5cGVkZWYgc3RydWN0IGdjY19qaXRfY29udGV4dCBnY2Nfaml0X2NvbnRleHQ7CiAvKiBBIGdj Y19qaXRfcmVzdWx0IGVuY2Fwc3VsYXRlcyB0aGUgcmVzdWx0IG9mIGFuIGluLW1lbW9yeSBjb21w aWxhdGlvbi4gICovCiB0eXBlZGVmIHN0cnVjdCBnY2Nfaml0X3Jlc3VsdCBnY2Nfaml0X3Jlc3Vs dDsKIAorLyogQSBnY2Nfaml0X3RhcmdldF9pbmZvIGVuY2Fwc3VsYXRlcyB0aGUgdGFyZ2V0IGlu Zm8uICAqLwordHlwZWRlZiBzdHJ1Y3QgZ2NjX2ppdF90YXJnZXRfaW5mbyBnY2Nfaml0X3Rhcmdl dF9pbmZvOworCiAvKiBBbiBvYmplY3QgY3JlYXRlZCB3aXRoaW4gYSBjb250ZXh0LiAgU3VjaCBv YmplY3RzIGFyZSBhdXRvbWF0aWNhbGx5CiAgICBjbGVhbmVkIHVwIHdoZW4gdGhlIGNvbnRleHQg aXMgcmVsZWFzZWQuCiAKQEAgLTE5OTksNiArMjAwMiw2MyBAQCBnY2Nfaml0X3ZlY3Rvcl90eXBl X2dldF9lbGVtZW50X3R5cGUgKGdjY19qaXRfdmVjdG9yX3R5cGUgKnZlY3Rvcl90eXBlKTsKIGV4 dGVybiBnY2Nfaml0X3R5cGUgKgogZ2NjX2ppdF90eXBlX3VucXVhbGlmaWVkIChnY2Nfaml0X3R5 cGUgKnR5cGUpOwogCisvKiBDcmVhdGUgYSBnY2Nfaml0X3RhcmdldF9pbmZvIGluc3RhbmNlLgor CisgICBUaGlzIEFQSSBlbnRyeXBvaW50IHdhcyBhZGRlZCBpbiBMSUJHQ0NKSVRfQUJJXzI2OyB5 b3UgY2FuIHRlc3QgZm9yIGl0cworICAgcHJlc2VuY2UgdXNpbmcKKyAgICAgI2lmZGVmIExJQkdD Q0pJVF9IQVZFX1RBUkdFVF9JTkZPX0FQSQorKi8KKworZXh0ZXJuIGdjY19qaXRfdGFyZ2V0X2lu Zm8gKgorZ2NjX2ppdF9jb250ZXh0X2dldF90YXJnZXRfaW5mbyAoZ2NjX2ppdF9jb250ZXh0ICpj dHh0KTsKKworLyogUmVsZWFzZSBhIGdjY19qaXRfdGFyZ2V0X2luZm8gaW5zdGFuY2UuCisKKyAg IFRoaXMgQVBJIGVudHJ5cG9pbnQgd2FzIGFkZGVkIGluIExJQkdDQ0pJVF9BQklfMjY7IHlvdSBj YW4gdGVzdCBmb3IgaXRzCisgICBwcmVzZW5jZSB1c2luZworICAgICAjaWZkZWYgTElCR0NDSklU X0hBVkVfVEFSR0VUX0lORk9fQVBJCisqLworCitleHRlcm4gdm9pZAorZ2NjX2ppdF90YXJnZXRf aW5mb19yZWxlYXNlIChnY2Nfaml0X3RhcmdldF9pbmZvICppbmZvKTsKKworLyogUmV0dXJucyBu b24temVybyBpZiBGRUFUVVJFIGlzIHN1cHBvcnRlZCBieSB0aGUgc3BlY2lmaWVkIHRhcmdldC4K KworICAgVGhpcyBBUEkgZW50cnlwb2ludCB3YXMgYWRkZWQgaW4gTElCR0NDSklUX0FCSV8yNjsg eW91IGNhbiB0ZXN0IGZvciBpdHMKKyAgIHByZXNlbmNlIHVzaW5nCisgICAgICNpZmRlZiBMSUJH Q0NKSVRfSEFWRV9UQVJHRVRfSU5GT19BUEkKKyovCisKK2V4dGVybiBpbnQKK2djY19qaXRfdGFy Z2V0X2luZm9fY3B1X3N1cHBvcnRzIChnY2Nfaml0X3RhcmdldF9pbmZvICppbmZvLAorCQkJCSAg Y29uc3QgY2hhciAqZmVhdHVyZSk7CisKKy8qIFJldHVybnMgdGhlIEFSQ0ggb2YgdGhlIGN1cnJl bnRseSBydW5uaW5nIENQVS4KKworICAgVGhpcyBBUEkgZW50cnlwb2ludCB3YXMgYWRkZWQgaW4g TElCR0NDSklUX0FCSV8yNjsgeW91IGNhbiB0ZXN0IGZvciBpdHMKKyAgIHByZXNlbmNlIHVzaW5n CisgICAgICNpZmRlZiBMSUJHQ0NKSVRfSEFWRV9UQVJHRVRfSU5GT19BUEkKKyovCisKK2V4dGVy biBjb25zdCBjaGFyICoKK2djY19qaXRfdGFyZ2V0X2luZm9fYXJjaCAoZ2NjX2ppdF90YXJnZXRf aW5mbyAqaW5mbyk7CisKKy8qIFJldHVybnMgbm9uLXplcm8gaWYgdGhlIHRhcmdldCBuYXRpdmVs eSBzdXBwb3J0cyAxMjgtYml0IGludGVnZXJzLgorCisgICBUaGlzIEFQSSBlbnRyeXBvaW50IHdh cyBhZGRlZCBpbiBMSUJHQ0NKSVRfQUJJXzI2OyB5b3UgY2FuIHRlc3QgZm9yIGl0cworICAgcHJl c2VuY2UgdXNpbmcKKyAgICAgI2lmZGVmIExJQkdDQ0pJVF9IQVZFX1RBUkdFVF9JTkZPX0FQSQor Ki8KKworZXh0ZXJuIGludAorZ2NjX2ppdF90YXJnZXRfaW5mb19zdXBwb3J0c18xMjhiaXRfaW50 IChnY2Nfaml0X3RhcmdldF9pbmZvICppbmZvKTsKKworLyogVGhlIHRhcmdldCBpbmZvIEFQSSB3 YXMgYWRkZWQgaW4gTElCR0NDSklUX0FCSV8yNjsgeW91IGNhbiB0ZXN0IGZvciBpdHMKKyAgIHBy ZXNlbmNlIHVzaW5nCisgICAgICNpZmRlZiBMSUJHQ0NKSVRfSEFWRV9UQVJHRVRfSU5GT19BUEkK KyovCisjZGVmaW5lIExJQkdDQ0pJVF9IQVZFX1RBUkdFVF9JTkZPX0FQSQorCiAjaWZkZWYgX19j cGx1c3BsdXMKIH0KICNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLwpkaWZmIC0tZ2l0IGEvZ2NjL2pp dC9saWJnY2NqaXQubWFwIGIvZ2NjL2ppdC9saWJnY2NqaXQubWFwCmluZGV4IDhiOTBhMGUyZmYz Li4zMGYwOGNlNjdkNyAxMDA2NDQKLS0tIGEvZ2NjL2ppdC9saWJnY2NqaXQubWFwCisrKyBiL2dj Yy9qaXQvbGliZ2Njaml0Lm1hcApAQCAtMjc2LDMgKzI3NiwxMiBAQCBMSUJHQ0NKSVRfQUJJXzI1 IHsKICAgZ2xvYmFsOgogICAgIGdjY19qaXRfdHlwZV9nZXRfcmVzdHJpY3Q7CiB9IExJQkdDQ0pJ VF9BQklfMjQ7CisKK0xJQkdDQ0pJVF9BQklfMjYgeworICBnbG9iYWw6CisgICAgZ2NjX2ppdF9j b250ZXh0X2dldF90YXJnZXRfaW5mbzsKKyAgICBnY2Nfaml0X3RhcmdldF9pbmZvX3JlbGVhc2U7 CisgICAgZ2NjX2ppdF90YXJnZXRfaW5mb19jcHVfc3VwcG9ydHM7CisgICAgZ2NjX2ppdF90YXJn ZXRfaW5mb19hcmNoOworICAgIGdjY19qaXRfdGFyZ2V0X2luZm9fc3VwcG9ydHNfMTI4Yml0X2lu dDsKK30gTElCR0NDSklUX0FCSV8yNTsKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvaml0LmRn L2FsbC1ub24tZmFpbGluZy10ZXN0cy5oIGIvZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvYWxsLW5vbi1m YWlsaW5nLXRlc3RzLmgKaW5kZXggZTc2MjU2M2Y5YmQuLmYwZjczNTZkNjg3IDEwMDY0NAotLS0g YS9nY2MvdGVzdHN1aXRlL2ppdC5kZy9hbGwtbm9uLWZhaWxpbmctdGVzdHMuaAorKysgYi9nY2Mv dGVzdHN1aXRlL2ppdC5kZy9hbGwtbm9uLWZhaWxpbmctdGVzdHMuaApAQCAtMzIyLDYgKzMyMiw5 IEBACiAvKiB0ZXN0LXNldHRpbmctYWxpZ25tZW50LmM6IFRoaXMgY2FuJ3QgYmUgaW4gdGhlIHRl c3RjYXNlcyBhcnJheSBhcyBpdAogICAgaXMgdGFyZ2V0LXNwZWNpZmljLiAgKi8KIAorLyogdGVz dC10YXJnZXQtaW5mby5jOiBUaGlzIGNhbid0IGJlIGluIHRoZSB0ZXN0Y2FzZXMgYXJyYXkgYXMg aXQKKyAgIGlzIHRhcmdldC1zcGVjaWZpYy4gICovCisKIC8qIHRlc3Qtc3RyaW5nLWxpdGVyYWwu YyAqLwogI2RlZmluZSBjcmVhdGVfY29kZSBjcmVhdGVfY29kZV9zdHJpbmdfbGl0ZXJhbAogI2Rl ZmluZSB2ZXJpZnlfY29kZSB2ZXJpZnlfY29kZV9zdHJpbmdfbGl0ZXJhbApkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9qaXQuZGcvdGVzdC10YXJnZXQtaW5mby5jIGIvZ2NjL3Rlc3RzdWl0ZS9q aXQuZGcvdGVzdC10YXJnZXQtaW5mby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi5kYjU1OTFlZGNiZAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvaml0 LmRnL3Rlc3QtdGFyZ2V0LWluZm8uYwpAQCAtMCwwICsxLDYzIEBACisvKiB7IGRnLWRvIGNvbXBp bGUgeyB0YXJnZXQgeDg2XzY0LSotKiB9IH0gKi8KKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2lu Y2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlICJsaWJnY2NqaXQuaCIKKworI2RlZmluZSBURVNU X1BST1ZJREVTX01BSU4KKyNpbmNsdWRlICJoYXJuZXNzLmgiCisKK3ZvaWQKK2NyZWF0ZV9jb2Rl IChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIHZvaWQgKnVzZXJfZGF0YSkKK3sKK30KKwordm9pZAor dmVyaWZ5X2NvZGUgKGdjY19qaXRfY29udGV4dCAqY3R4dCwgZ2NjX2ppdF9yZXN1bHQgKnJlc3Vs dCkKK3sKK30KKworaW50CittYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisgIC8qICBU aGlzIGlzIHRoZSBzYW1lIGFzIHRoZSBtYWluIHByb3ZpZGVkIGJ5IGhhcm5lc3MuaCwgYnV0IGNh bGxzIGdjY19qaXRfY29udGV4dF9nZXRfdGFyZ2V0X2luZm8uICAqLworICBnY2Nfaml0X2NvbnRl eHQgKmN0eHQ7CisgIGN0eHQgPSBnY2Nfaml0X2NvbnRleHRfYWNxdWlyZSAoKTsKKyAgaWYgKCFj dHh0KQorICAgIHsKKyAgICAgIGZhaWwgKCJnY2Nfaml0X2NvbnRleHRfYWNxdWlyZSBmYWlsZWQi KTsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgIGdjY19qaXRfdGFyZ2V0X2luZm8qIGluZm8g PSBnY2Nfaml0X2NvbnRleHRfZ2V0X3RhcmdldF9pbmZvIChjdHh0KTsKKworICBpbnQgc3NlMl9z dXBwb3J0ZWQgPSBnY2Nfaml0X3RhcmdldF9pbmZvX2NwdV9zdXBwb3J0cyAoaW5mbywgInNzZTIi KTsKKyAgQ0hFQ0tfVkFMVUUgKHNzZTJfc3VwcG9ydGVkLCAxKTsKKworICBjb25zdCBjaGFyICph cmNoID0gZ2NjX2ppdF90YXJnZXRfaW5mb19hcmNoIChpbmZvKTsKKyAgLy8gVE9ETzogbm90IHN1 cmUgd2hhdCB2YWx1ZSB0byBjaGVjayBoZXJlLgorICBDSEVDS19TVFJJTkdfVkFMVUUgKGFyY2gs ICJ6bnZlcjIiKTsKKworICBpbnQgc3VwcG9ydHNfMTI4Yml0X2ludCA9IGdjY19qaXRfdGFyZ2V0 X2luZm9fc3VwcG9ydHNfMTI4Yml0X2ludCAoaW5mbyk7CisgIENIRUNLX1ZBTFVFIChzdXBwb3J0 c18xMjhiaXRfaW50LCAxKTsKKyAgZ2NjX2ppdF90YXJnZXRfaW5mb19yZWxlYXNlIChpbmZvKTsK KyAgZ2NjX2ppdF9jb250ZXh0X3JlbGVhc2UgKGN0eHQpOworCisgIGludCBpOworCisgIGZvciAo aSA9IDE7IGkgPD0gNTsgaSsrKQorICAgIHsKKyAgICAgIHNucHJpbnRmICh0ZXN0LCBzaXplb2Yg KHRlc3QpLAorCQkiJXMgaXRlcmF0aW9uICVkIG9mICVkIiwKKyAgICAgICAgICAgICAgICBleHRy YWN0X3Byb2duYW1lIChhcmd2WzBdKSwKKyAgICAgICAgICAgICAgICBpLCA1KTsKKworICAgICAg Ly9wcmludGYgKCJJVEVSQVRJT04gJWRcbiIsIGkpOworICAgICAgdGVzdF9qaXQgKGFyZ3ZbMF0s IE5VTEwpOworICAgICAgLy9wcmludGYgKCJcbiIpOworICAgIH0KKworICB0b3RhbHMgKCk7CisK KyAgcmV0dXJuIDA7Cit9Ci0tIAoyLjQyLjAKCg== --=-OU0D2uibXs/RA/y+6hy4--