From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 57750 invoked by alias); 25 Oct 2016 16:26:43 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 57715 invoked by uid 89); 25 Oct 2016 16:26:40 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.1 required=5.0 tests=BAYES_20,KAM_LOTSOFHASH,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 spammy=Engineering, FRV, frv, specification X-HELO: foss.arm.com Received: from foss.arm.com (HELO foss.arm.com) (217.140.101.70) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 25 Oct 2016 16:26:30 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id A65E928; Tue, 25 Oct 2016 09:26:28 -0700 (PDT) Received: from [10.2.206.246] (e107157-lin.cambridge.arm.com [10.2.206.246]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id EA0D73F220; Tue, 25 Oct 2016 09:26:27 -0700 (PDT) Subject: Re: [PATCHv2 1/7, GCC, ARM, V8M] Add support for ARMv8-M's Secure Extensions flag and intrinsics To: gcc-patches@gcc.gnu.org References: <5796116C.6010100@arm.com> <579611FF.4090807@arm.com> <57BD7E4C.5080809@arm.com> Cc: Kyrill Tkachov From: "Andre Vieira (lists)" Message-ID: <580F87B2.7090407@arm.com> Date: Tue, 25 Oct 2016 16:26:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 MIME-Version: 1.0 In-Reply-To: <57BD7E4C.5080809@arm.com> Content-Type: multipart/mixed; boundary="------------030707090603050205030501" X-IsSubscribed: yes X-SW-Source: 2016-10/txt/msg02045.txt.bz2 This is a multi-part message in MIME format. --------------030707090603050205030501 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Content-length: 4667 On 24/08/16 12:00, Andre Vieira (lists) wrote: > On 25/07/16 14:19, Andre Vieira (lists) wrote: >> This patch adds the support of the '-mcmse' option to enable ARMv8-M's >> Security Extensions and supports the following intrinsics: >> cmse_TT >> cmse_TT_fptr >> cmse_TTT >> cmse_TTT_fptr >> cmse_TTA >> cmse_TTA_fptr >> cmse_TTAT >> cmse_TTAT_fptr >> cmse_check_address_range >> cmse_check_pointed_object >> cmse_is_nsfptr >> cmse_nsfptr_create >> >> It also defines the mandatory cmse_address_info struct and the >> __ARM_FEATURE_CMSE macro. >> See Chapter 4, Sections 5.2, 5.3 and 5.6 of ARM®v8-M Security >> Extensions: Requirements on Development Tools >> (http://infocenter.arm.com/help/topic/com.arm.doc.ecm0359818/index.html). >> >> *** gcc/ChangeLog *** >> 2016-07-25 Andre Vieira >> Thomas Preud'homme >> >> * config.gcc (extra_headers): Added arm_cmse.h. >> * config/arm/arm-arches.def (ARM_ARCH): >> (armv8-m): Add FL2_CMSE. >> (armv8-m.main): Likewise. >> (armv8-m.main+dsp): Likewise. >> * config/arm/arm-c.c >> (arm_cpu_builtins): Added __ARM_FEATURE_CMSE macro. >> * config/arm/arm-protos.h >> (arm_is_constant_pool_ref): Define FL2_CMSE. >> * config/arm.c (arm_arch_cmse): New. >> (arm_option_override): New error for unsupported cmse target. >> * config/arm/arm.h (arm_arch_cmse): New. >> * config/arm/arm.opt (mcmse): New. >> * doc/invoke.texi (ARM Options): Add -mcmse. >> * config/arm/arm_cmse.h: New file. >> >> *** libgcc/ChangeLog *** >> 2016-07-25 Andre Vieira >> Thomas Preud'homme >> >> * config/arm/cmse.c: Likewise. >> * config/arm/t-arm (HAVE_CMSE): New. >> >> *** gcc/testsuite/ChangeLog *** >> 2016-07-25 Andre Vieira >> Thomas Preud'homme >> >> * gcc.target/arm/cmse/cmse.exp: New. >> * gcc.target/arm/cmse/cmse-1.c: New. >> * gcc.target/arm/cmse/cmse-12.c: New. >> * lib/target-supports.exp >> (check_effective_target_arm_cmse_ok): New. >> > > Added more documentation as requested. > > This patch adds the support of the '-mcmse' option to enable ARMv8-M's > Security Extensions and supports the following intrinsics: > cmse_TT > cmse_TT_fptr > cmse_TTT > cmse_TTT_fptr > cmse_TTA > cmse_TTA_fptr > cmse_TTAT > cmse_TTAT_fptr > cmse_check_address_range > cmse_check_pointed_object > cmse_is_nsfptr > cmse_nsfptr_create > > It also defines the mandatory cmse_address_info struct and the > __ARM_FEATURE_CMSE macro. > See Chapter 4, Sections 5.2, 5.3 and 5.6 of ARM®v8-M Security > Extensions: Requirements on Development Tools > (http://infocenter.arm.com/help/topic/com.arm.doc.ecm0359818/index.html). > > *** gcc/ChangeLog *** > 2016-07-xx Andre Vieira > Thomas Preud'homme > > * config.gcc (extra_headers): Added arm_cmse.h. > * config/arm/arm-arches.def (ARM_ARCH): > (armv8-m): Add FL2_CMSE. > (armv8-m.main): Likewise. > (armv8-m.main+dsp): Likewise. > * config/arm/arm-c.c > (arm_cpu_builtins): Added __ARM_FEATURE_CMSE macro. > * config/arm/arm-protos.h > (arm_is_constant_pool_ref): Define FL2_CMSE. > * config/arm.c (arm_arch_cmse): New. > (arm_option_override): New error for unsupported cmse target. > * config/arm/arm.h (arm_arch_cmse): New. > * config/arm/arm.opt (mcmse): New. > * doc/invoke.texi (ARM Options): Add -mcmse. > * doc/extend.texi (ARM ARMv8-M Security Extensions): Add section. > * config/arm/arm_cmse.h: New file. > > *** libgcc/ChangeLog *** > 2016-07-xx Andre Vieira > Thomas Preud'homme > * config/arm/cmse.c: Likewise. > * config/arm/t-arm (HAVE_CMSE): New. > > > *** gcc/testsuite/ChangeLog *** > 2016-07-xx Andre Vieira > Thomas Preud'homme > > * gcc.target/arm/cmse/cmse.exp: New. > * gcc.target/arm/cmse/cmse-1.c: New. > * gcc.target/arm/cmse/cmse-12.c: New. > * lib/target-supports.exp > (check_effective_target_arm_cmse_ok): New. > Hi, Rebased previous patch on top of trunk as requested. No changes to ChangeLog. Cheers, Andre --------------030707090603050205030501 Content-Type: text/plain; charset=UTF-8; name="diff1" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="diff1" Content-length: 32017 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcuZ2NjIGIvZ2NjL2NvbmZpZy5nY2MK aW5kZXggMjE0M2Q2MzJmZDI1ODkyZTM2MzNhYmFmZTE3ZWVlOTMyNmIxZWZk OC4uNjMyNDVlY2VjNTVjMTcxMmU4MzczYjMxYmNmOGM2NTViNGVjZmNlYSAx MDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy5nY2MKKysrIGIvZ2NjL2NvbmZpZy5n Y2MKQEAgLTMyMiw3ICszMjIsNyBAQCBhcmMqLSotKikKIGFybSotKi0qKQog CWNwdV90eXBlPWFybQogCWV4dHJhX29ianM9ImFybS1idWlsdGlucy5vIGFh cmNoLWNvbW1vbi5vIgotCWV4dHJhX2hlYWRlcnM9Im1taW50cmluLmggYXJt X25lb24uaCBhcm1fYWNsZS5oIGFybV9mcDE2LmgiCisJZXh0cmFfaGVhZGVy cz0ibW1pbnRyaW4uaCBhcm1fbmVvbi5oIGFybV9hY2xlLmggYXJtX2ZwMTYu aCBhcm1fY21zZS5oIgogCXRhcmdldF90eXBlX2Zvcm1hdF9jaGFyPSclJwog CWNfdGFyZ2V0X29ianM9ImFybS1jLm8iCiAJY3h4X3RhcmdldF9vYmpzPSJh cm0tYy5vIgpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vYXJtLWFyY2hl cy5kZWYgYi9nY2MvY29uZmlnL2FybS9hcm0tYXJjaGVzLmRlZgppbmRleCA0 YjE5NmE3ZDExODhkZTVlY2EwMjhlNWMyNTk3YmJjMjA4MzUyMDFmLi4xYmRj ZjVkOWY5MjQwNGQ1ZDVhYmIyYTUzZmY4OWFkM2QzZmYyNzk0IDEwMDY0NAot LS0gYS9nY2MvY29uZmlnL2FybS9hcm0tYXJjaGVzLmRlZgorKysgYi9nY2Mv Y29uZmlnL2FybS9hcm0tYXJjaGVzLmRlZgpAQCAtNzAsMTAgKzcwLDEwIEBA IEFSTV9BUkNIICgiYXJtdjguMi1hK2ZwMTYiLCBjb3J0ZXhhNTMsICA4QSwK IAkgIEFSTV9GU0VUX01BS0UgKEZMX0NPX1BST0MgfCBGTF9DUkMzMiB8IEZM X0ZPUl9BUkNIOEEsCiAJCQkgRkwyX0ZPUl9BUkNIOF8yQSB8IEZMMl9GUDE2 SU5TVCkpCiBBUk1fQVJDSCgiYXJtdjgtbS5iYXNlIiwgY29ydGV4bTAsIDhN X0JBU0UsCi0JIEFSTV9GU0VUX01BS0VfQ1BVMSAoCQkJICAgICAgRkxfRk9S X0FSQ0g4TV9CQVNFKSkKKwkgQVJNX0ZTRVRfTUFLRSAoCQkJICBGTF9GT1Jf QVJDSDhNX0JBU0UsIEZMMl9DTVNFKSkKIEFSTV9BUkNIKCJhcm12OC1tLm1h aW4iLCBjb3J0ZXhtNywgOE1fTUFJTiwKLQkgQVJNX0ZTRVRfTUFLRV9DUFUx KEZMX0NPX1BST0MgfAkgICAgICBGTF9GT1JfQVJDSDhNX01BSU4pKQorCSBB Uk1fRlNFVF9NQUtFIChGTF9DT19QUk9DIHwJCSAgRkxfRk9SX0FSQ0g4TV9N QUlOLCBGTDJfQ01TRSkpCiBBUk1fQVJDSCgiYXJtdjgtbS5tYWluK2RzcCIs IGNvcnRleG03LCA4TV9NQUlOLAotCSBBUk1fRlNFVF9NQUtFX0NQVTEoRkxf Q09fUFJPQyB8IEZMX0FSQ0g3RU0gfCBGTF9GT1JfQVJDSDhNX01BSU4pKQor CSBBUk1fRlNFVF9NQUtFIChGTF9DT19QUk9DIHwgRkxfQVJDSDdFTSB8IEZM X0ZPUl9BUkNIOE1fTUFJTiwgRkwyX0NNU0UpKQogQVJNX0FSQ0goIml3bW14 dCIsICBpd21teHQsICAgICA1VEUsCUFSTV9GU0VUX01BS0VfQ1BVMSAoRkxf TERTQ0hFRCB8IEZMX1NUUk9ORyB8IEZMX0ZPUl9BUkNINVRFIHwgRkxfWFND QUxFIHwgRkxfSVdNTVhUKSkKIEFSTV9BUkNIKCJpd21teHQyIiwgaXdtbXh0 MiwgICAgNVRFLAlBUk1fRlNFVF9NQUtFX0NQVTEgKEZMX0xEU0NIRUQgfCBG TF9TVFJPTkcgfCBGTF9GT1JfQVJDSDVURSB8IEZMX1hTQ0FMRSB8IEZMX0lX TU1YVCB8IEZMX0lXTU1YVDIpKQpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9h cm0vYXJtLWMuYyBiL2djYy9jb25maWcvYXJtL2FybS1jLmMKaW5kZXggZGY5 MzBmNDQ4MDFlOWU1ZjQ4MWVlNmViOTkwNjU2ZGRhNGJmMGNlYS4uNDAzMTA4 Mzg5M2Q4ZjljYmQ0NDg4MWUwMDhiMGNlZjQwZjNhZDYxNCAxMDA2NDQKLS0t IGEvZ2NjL2NvbmZpZy9hcm0vYXJtLWMuYworKysgYi9nY2MvY29uZmlnL2Fy bS9hcm0tYy5jCkBAIC03Nyw2ICs3NywxNCBAQCBhcm1fY3B1X2J1aWx0aW5z IChzdHJ1Y3QgY3BwX3JlYWRlciogcGZpbGUpCiAKICAgZGVmX29yX3VuZGVm X21hY3JvIChwZmlsZSwgIl9fQVJNXzMyQklUX1NUQVRFIiwgVEFSR0VUXzMy QklUKTsKIAorICBpZiAoYXJtX2FyY2g4ICYmICFhcm1fYXJjaF9ub3RtKQor ICAgIHsKKyAgICAgIGlmIChhcm1fYXJjaF9jbXNlICYmIHVzZV9jbXNlKQor CWJ1aWx0aW5fZGVmaW5lX3dpdGhfaW50X3ZhbHVlICgiX19BUk1fRkVBVFVS RV9DTVNFIiwgMyk7CisgICAgICBlbHNlCisJYnVpbHRpbl9kZWZpbmUgKCJf X0FSTV9GRUFUVVJFX0NNU0UiKTsKKyAgICB9CisKICAgaWYgKFRBUkdFVF9B Uk1fRkVBVFVSRV9MRFJFWCkKICAgICBidWlsdGluX2RlZmluZV93aXRoX2lu dF92YWx1ZSAoIl9fQVJNX0ZFQVRVUkVfTERSRVgiLAogCQkJCSAgIFRBUkdF VF9BUk1fRkVBVFVSRV9MRFJFWCk7CmRpZmYgLS1naXQgYS9nY2MvY29uZmln L2FybS9hcm0tcHJvdG9zLmggYi9nY2MvY29uZmlnL2FybS9hcm0tcHJvdG9z LmgKaW5kZXggZmQ4YjZkMTA2ZDEzZmFlYmVkZjdhMzUzOWQzMDE1OWMxNGYw NjFjNi4uZTdkOWY4MjQ1OTZhNjJmNWM5OTAwMDk0MGY2MTkwYWI2YWVlOTI1 NSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hcm0vYXJtLXByb3Rvcy5oCisr KyBiL2djYy9jb25maWcvYXJtL2FybS1wcm90b3MuaApAQCAtMzk2LDYgKzM5 Niw3IEBAIGV4dGVybiBib29sIGFybV9pc19jb25zdGFudF9wb29sX3JlZiAo cnR4KTsKICNkZWZpbmUgRkwyX0FSQ0g4XzIgICAoMSA8PCAxKQkgICAgICAv KiBBcmNoaXRlY3R1cmUgOC4yLiAgKi8KICNkZWZpbmUgRkwyX0ZQMTZJTlNU ICAoMSA8PCAyKQkgICAgICAvKiBGUDE2IEluc3RydWN0aW9ucyBmb3IgQVJN djguMiBhbmQKIAkJCQkJIGxhdGVyLiAgKi8KKyNkZWZpbmUgRkwyX0NNU0Ug ICAgICAoMSA8PCAzKQkgICAgICAvKiBBUk12OC1NIFNlY3VyaXR5IEV4dGVu c2lvbnMuICAqLwogCiAvKiBGbGFncyB0aGF0IG9ubHkgZWZmZWN0IHR1bmlu Zywgbm90IGF2YWlsYWJsZSBpbnN0cnVjdGlvbnMuICAqLwogI2RlZmluZSBG TF9UVU5FCQkoRkxfV0JVRiB8IEZMX1ZGUFYyIHwgRkxfU1RST05HIHwgRkxf TERTQ0hFRCBcCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9hcm0uaCBi L2djYy9jb25maWcvYXJtL2FybS5oCmluZGV4IDhhMDc2YmEzZDhlYjY2ZTIz Nzc5MGQyM2RkN2MyZWNiNGI2ZmQyNjQuLmEzNzBkY2NkYWE5ZmE0Yzk4MGMx ZGYxMWNiOTVhNjVjYWQxNmFjODUgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcv YXJtL2FybS5oCisrKyBiL2djYy9jb25maWcvYXJtL2FybS5oCkBAIC01MjQs NiArNTI0LDkgQEAgZXh0ZXJuIGJvb2wgYXJtX2Rpc2FibGVfbGl0ZXJhbF9w b29sOwogLyogTm9uemVybyBpZiBjaGlwIHN1cHBvcnRzIHRoZSBBUk12OCBD UkMgaW5zdHJ1Y3Rpb25zLiAgKi8KIGV4dGVybiBpbnQgYXJtX2FyY2hfY3Jj OwogCisvKiBOb256ZXJvIGlmIGNoaXAgc3VwcG9ydHMgdGhlIEFSTXY4LU0g U2VjdXJpdHkgRXh0ZW5zaW9ucy4gICovCitleHRlcm4gaW50IGFybV9hcmNo X2Ntc2U7CisKICNpZm5kZWYgVEFSR0VUX0RFRkFVTFQKICNkZWZpbmUgVEFS R0VUX0RFRkFVTFQgIChNQVNLX0FQQ1NfRlJBTUUpCiAjZW5kaWYKZGlmZiAt LWdpdCBhL2djYy9jb25maWcvYXJtL2FybS5jIGIvZ2NjL2NvbmZpZy9hcm0v YXJtLmMKaW5kZXggMDIyYzFkNzJhMTI3MmU1NjM5N2RjN2UyMDE4NDgzZTc3 ZjE4YjkwZC4uNDQ2NzdjMWJjY2FkNDJjNWFkNjAzZWEwOTUxZDYyYWJjYmQ2 ZjA1ZCAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hcm0vYXJtLmMKKysrIGIv Z2NjL2NvbmZpZy9hcm0vYXJtLmMKQEAgLTkwNiw2ICs5MDYsOSBAQCBpbnQg YXJtX2NvbmRleGVjX21hc2tsZW4gPSAwOwogLyogTm9uemVybyBpZiBjaGlw IHN1cHBvcnRzIHRoZSBBUk12OCBDUkMgaW5zdHJ1Y3Rpb25zLiAgKi8KIGlu dCBhcm1fYXJjaF9jcmMgPSAwOwogCisvKiBOb256ZXJvIGlmIGNoaXAgc3Vw cG9ydHMgdGhlIEFSTXY4LU0gc2VjdXJpdHkgZXh0ZW5zaW9ucy4gICovCitp bnQgYXJtX2FyY2hfY21zZSA9IDA7CisKIC8qIE5vbnplcm8gaWYgdGhlIGNv cmUgaGFzIGEgdmVyeSBzbWFsbCwgaGlnaC1sYXRlbmN5LCBtdWx0aXBseSB1 bml0LiAgKi8KIGludCBhcm1fbV9wcm9maWxlX3NtYWxsX211bCA9IDA7CiAK QEAgLTMyNTYsNiArMzI1OSw3IEBAIGFybV9vcHRpb25fb3ZlcnJpZGUgKHZv aWQpCiAgIGFybV9hcmNoX25vX3ZvbGF0aWxlX2NlID0gQVJNX0ZTRVRfSEFT X0NQVTEgKGluc25fZmxhZ3MsIEZMX05PX1ZPTEFUSUxFX0NFKTsKICAgYXJt X3R1bmVfY29ydGV4X2E5ID0gKGFybV90dW5lID09IGNvcnRleGE5KSAhPSAw OwogICBhcm1fYXJjaF9jcmMgPSBBUk1fRlNFVF9IQVNfQ1BVMSAoaW5zbl9m bGFncywgRkxfQ1JDMzIpOworICBhcm1fYXJjaF9jbXNlID0gQVJNX0ZTRVRf SEFTX0NQVTIgKGluc25fZmxhZ3MsIEZMMl9DTVNFKTsKICAgYXJtX21fcHJv ZmlsZV9zbWFsbF9tdWwgPSBBUk1fRlNFVF9IQVNfQ1BVMSAoaW5zbl9mbGFn cywgRkxfU01BTExNVUwpOwogICBhcm1fZnAxNl9pbnN0ID0gQVJNX0ZTRVRf SEFTX0NQVTIgKGluc25fZmxhZ3MsIEZMMl9GUDE2SU5TVCk7CiAgIGlmIChh cm1fZnAxNl9pbnN0KQpAQCAtMzUyMyw2ICszNTI3LDkgQEAgYXJtX29wdGlv bl9vdmVycmlkZSAodm9pZCkKICAgaWYgKHRhcmdldF9zbG93X2ZsYXNoX2Rh dGEgfHwgdGFyZ2V0X3B1cmVfY29kZSkKICAgICBhcm1fZGlzYWJsZV9saXRl cmFsX3Bvb2wgPSB0cnVlOwogCisgIGlmICh1c2VfY21zZSAmJiAhYXJtX2Fy Y2hfY21zZSkKKyAgICBlcnJvciAoInRhcmdldCBDUFUgZG9lcyBub3Qgc3Vw cG9ydCBBUk12OC1NIFNlY3VyaXR5IEV4dGVuc2lvbnMiKTsKKwogICAvKiBE aXNhYmxlIHNjaGVkdWxpbmcgZnVzaW9uIGJ5IGRlZmF1bHQgaWYgaXQncyBu b3QgYXJtdjcgcHJvY2Vzc29yCiAgICAgIG9yIGRvZXNuJ3QgcHJlZmVyIGxk cmQvc3RyZC4gICovCiAgIGlmIChmbGFnX3NjaGVkdWxlX2Z1c2lvbiA9PSAy CmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9hcm0ub3B0IGIvZ2NjL2Nv bmZpZy9hcm0vYXJtLm9wdAppbmRleCAzNWYwNDdlMmRlMTY1OWMyYjQyNmNm NDJkYmJkYWU1YmU2MmNiZmVmLi41ZmI2NDVkZjcxYjkzOTYwZThjZGEzOGM0 YjViMWQ5ZDM3ZGYxMjVjIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2FybS9h cm0ub3B0CisrKyBiL2djYy9jb25maWcvYXJtL2FybS5vcHQKQEAgLTEwOSw2 ICsxMDksMTAgQEAgbWZsb2F0LWFiaT0KIFRhcmdldCBSZWplY3ROZWdhdGl2 ZSBKb2luZWQgRW51bShmbG9hdF9hYmlfdHlwZSkgVmFyKGFybV9mbG9hdF9h YmkpIEluaXQoVEFSR0VUX0RFRkFVTFRfRkxPQVRfQUJJKQogU3BlY2lmeSBp ZiBmbG9hdGluZyBwb2ludCBoYXJkd2FyZSBzaG91bGQgYmUgdXNlZC4KIAor bWNtc2UKK1RhcmdldCBSZWplY3ROZWdhdGl2ZSBWYXIodXNlX2Ntc2UpCitT cGVjaWZ5IHRoYXQgdGhlIGNvbXBpbGVyIHNob3VsZCB0YXJnZXQgc2VjdXJl IGNvZGUgYXMgcGVyIEFSTXY4LU0gU2VjdXJpdHkgRXh0ZW5zaW9ucy4KKwog RW51bQogTmFtZShmbG9hdF9hYmlfdHlwZSkgVHlwZShlbnVtIGZsb2F0X2Fi aV90eXBlKQogS25vd24gZmxvYXRpbmctcG9pbnQgQUJJcyAoZm9yIHVzZSB3 aXRoIHRoZSAtbWZsb2F0LWFiaT0gb3B0aW9uKToKZGlmZiAtLWdpdCBhL2dj Yy9jb25maWcvYXJtL2FybV9jbXNlLmggYi9nY2MvY29uZmlnL2FybS9hcm1f Y21zZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0MjMyOTM3YzZhZTA0 NzU0YTZiYmM1MTNiMTQzNjcyYTRiZTU1MzAKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvY29uZmlnL2FybS9hcm1fY21zZS5oCkBAIC0wLDAgKzEsMTkyIEBA CisvKiBBUk12OC1NIFNlY3VyZSBFeHRlbnNpb25zIGludHJpbnNpY3MgaW5j bHVkZSBmaWxlLgorCisgICBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIENvbnRyaWJ1dGVkIGJ5 IEFSTSBMdGQuCisKKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdDQy4KKwor ICAgR0NDIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCisg ICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzLCBvciAoYXQgeW91cgorICAgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKworICAgR0NDIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisgICBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBN RVJDSEFOVEFCSUxJVFkKKyAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAgIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgVW5kZXIgU2VjdGlvbiA3 IG9mIEdQTCB2ZXJzaW9uIDMsIHlvdSBhcmUgZ3JhbnRlZCBhZGRpdGlvbmFs CisgICBwZXJtaXNzaW9ucyBkZXNjcmliZWQgaW4gdGhlIEdDQyBSdW50aW1l IExpYnJhcnkgRXhjZXB0aW9uLCB2ZXJzaW9uCisgICAzLjEsIGFzIHB1Ymxp c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorCisgICBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhbmQKKyAgIGEgY29weSBvZiB0aGUgR0ND IFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRpb24gYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW07CisgICBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5H LlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKKyAgIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKworI2lmbmRlZiBf R0NDX0FSTV9DTVNFX0gKKyNkZWZpbmUgX0dDQ19BUk1fQ01TRV9ICisKKyNp ZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworI2lm IF9fQVJNX0ZFQVRVUkVfQ01TRSAmIDEKKworI2luY2x1ZGUgPHN0ZGRlZi5o PgorI2luY2x1ZGUgPHN0ZGludC5oPgorCisjaWZkZWYgX19BUk1fQklHX0VO RElBTgorCit0eXBlZGVmIHVuaW9uIHsKKyAgc3RydWN0IGNtc2VfYWRkcmVz c19pbmZvIHsKKyNpZiBfX0FSTV9GRUFUVVJFX0NNU0UgJiAyCisgICAgdW5z aWduZWQgaWRhdV9yZWdpb246ODsKKyAgICB1bnNpZ25lZCBpZGF1X3JlZ2lv bl92YWxpZDoxOworICAgIHVuc2lnbmVkIHNlY3VyZToxOworICAgIHVuc2ln bmVkIG5vbnNlY3VyZV9yZWFkd3JpdGVfb2s6MTsKKyAgICB1bnNpZ25lZCBu b25zZWN1cmVfcmVhZF9vazoxOworI2Vsc2UKKyAgICB1bnNpZ25lZCA6MTI7 CisjZW5kaWYKKyAgICB1bnNpZ25lZCByZWFkd3JpdGVfb2s6MTsKKyAgICB1 bnNpZ25lZCByZWFkX29rOjE7CisjaWYgX19BUk1fRkVBVFVSRV9DTVNFICYg MgorICAgIHVuc2lnbmVkIHNhdV9yZWdpb25fdmFsaWQ6MTsKKyNlbHNlCisg ICAgdW5zaWduZWQgOjE7CisjZW5kaWYKKyAgICB1bnNpZ25lZCBtcHVfcmVn aW9uX3ZhbGlkOjE7CisjaWYgX19BUk1fRkVBVFVSRV9DTVNFICYgMgorICAg IHVuc2lnbmVkIHNhdV9yZWdpb246ODsKKyNlbHNlCisgICAgdW5zaWduZWQg Ojg7CisjZW5kaWYKKyAgICB1bnNpZ25lZCBtcHVfcmVnaW9uOjg7CisgIH0g ZmxhZ3M7CisgIHVuc2lnbmVkIHZhbHVlOworfSBjbXNlX2FkZHJlc3NfaW5m b190OworCisjZWxzZQorCit0eXBlZGVmIHVuaW9uIHsKKyAgc3RydWN0IGNt c2VfYWRkcmVzc19pbmZvIHsKKyAgICB1bnNpZ25lZCBtcHVfcmVnaW9uOjg7 CisjaWYgX19BUk1fRkVBVFVSRV9DTVNFICYgMgorICAgIHVuc2lnbmVkIHNh dV9yZWdpb246ODsKKyNlbHNlCisgICAgdW5zaWduZWQgOjg7CisjZW5kaWYK KyAgICB1bnNpZ25lZCBtcHVfcmVnaW9uX3ZhbGlkOjE7CisjaWYgX19BUk1f RkVBVFVSRV9DTVNFICYgMgorICAgIHVuc2lnbmVkIHNhdV9yZWdpb25fdmFs aWQ6MTsKKyNlbHNlCisgICAgdW5zaWduZWQgOjE7CisjZW5kaWYKKyAgICB1 bnNpZ25lZCByZWFkX29rOjE7CisgICAgdW5zaWduZWQgcmVhZHdyaXRlX29r OjE7CisjaWYgX19BUk1fRkVBVFVSRV9DTVNFICYgMgorICAgIHVuc2lnbmVk IG5vbnNlY3VyZV9yZWFkX29rOjE7CisgICAgdW5zaWduZWQgbm9uc2VjdXJl X3JlYWR3cml0ZV9vazoxOworICAgIHVuc2lnbmVkIHNlY3VyZToxOworICAg IHVuc2lnbmVkIGlkYXVfcmVnaW9uX3ZhbGlkOjE7CisgICAgdW5zaWduZWQg aWRhdV9yZWdpb246ODsKKyNlbHNlCisgICAgdW5zaWduZWQgOjEyOworI2Vu ZGlmCisgIH0gZmxhZ3M7CisgIHVuc2lnbmVkIHZhbHVlOworfSBjbXNlX2Fk ZHJlc3NfaW5mb190OworCisjZW5kaWYgLyogX19BUk1fQklHX0VORElBTiAq LworCisjZGVmaW5lIGNtc2VfVFRfZnB0cihwKSAoX19jbXNlX1RUX2ZwdHIg KChfX2Ntc2VfZnB0cikocCkpKQorCit0eXBlZGVmIHZvaWQgKCpfX2Ntc2Vf ZnB0cikodm9pZCk7CisKKyNkZWZpbmUgX19DTVNFX1RUX0FTTShmbGFncykg XAoreyBcCisgIGNtc2VfYWRkcmVzc19pbmZvX3QgX19yZXN1bHQ7IFwKKyAg IF9fYXNtX18gKCJ0dCIgIyBmbGFncyAiICUwLCUxIiBcCisJICAgOiAiPXIi KF9fcmVzdWx0KSBcCisJICAgOiAiciIoX19wKSBcCisJICAgOiAibWVtb3J5 Iik7IFwKKyAgcmV0dXJuIF9fcmVzdWx0OyBcCit9CisKK19fZXh0ZW5zaW9u X18gc3RhdGljIF9faW5saW5lIF9fYXR0cmlidXRlX18gKChfX2Fsd2F5c19p bmxpbmVfXykpCitjbXNlX2FkZHJlc3NfaW5mb190CitfX2Ntc2VfVFRfZnB0 ciAoX19jbXNlX2ZwdHIgX19wKQorX19DTVNFX1RUX0FTTSAoKQorCitfX2V4 dGVuc2lvbl9fIHN0YXRpYyBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19h bHdheXNfaW5saW5lX18pKQorY21zZV9hZGRyZXNzX2luZm9fdAorY21zZV9U VCAodm9pZCAqX19wKQorX19DTVNFX1RUX0FTTSAoKQorCisjZGVmaW5lIGNt c2VfVFRUX2ZwdHIocCkgKF9fY21zZV9UVFRfZnB0ciAoKF9fY21zZV9mcHRy KShwKSkpCisKK19fZXh0ZW5zaW9uX18gc3RhdGljIF9faW5saW5lIF9fYXR0 cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXykpCitjbXNlX2FkZHJlc3Nf aW5mb190CitfX2Ntc2VfVFRUX2ZwdHIgKF9fY21zZV9mcHRyIF9fcCkKK19f Q01TRV9UVF9BU00gKHQpCisKK19fZXh0ZW5zaW9uX18gc3RhdGljIF9faW5s aW5lIF9fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXykpCitjbXNl X2FkZHJlc3NfaW5mb190CitjbXNlX1RUVCAodm9pZCAqX19wKQorX19DTVNF X1RUX0FTTSAodCkKKworI2lmIF9fQVJNX0ZFQVRVUkVfQ01TRSAmIDIKKwor I2RlZmluZSBjbXNlX1RUQV9mcHRyKHApIChfX2Ntc2VfVFRBX2ZwdHIgKChf X2Ntc2VfZnB0cikocCkpKQorCitfX2V4dGVuc2lvbl9fIHN0YXRpYyBfX2lu bGluZSBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18pKQorY21z ZV9hZGRyZXNzX2luZm9fdAorX19jbXNlX1RUQV9mcHRyIChfX2Ntc2VfZnB0 ciBfX3ApCitfX0NNU0VfVFRfQVNNIChhKQorCitfX2V4dGVuc2lvbl9fIHN0 YXRpYyBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5l X18pKQorY21zZV9hZGRyZXNzX2luZm9fdAorY21zZV9UVEEgKHZvaWQgKl9f cCkKK19fQ01TRV9UVF9BU00gKGEpCisKKyNkZWZpbmUgY21zZV9UVEFUX2Zw dHIocCkgKF9fY21zZV9UVEFUX2ZwdHIgKChfX2Ntc2VfZnB0cikocCkpKQor CitfX2V4dGVuc2lvbl9fIHN0YXRpYyBfX2lubGluZSBjbXNlX2FkZHJlc3Nf aW5mb190CitfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18pKQor X19jbXNlX1RUQVRfZnB0ciAoX19jbXNlX2ZwdHIgX19wKQorX19DTVNFX1RU X0FTTSAoYXQpCisKK19fZXh0ZW5zaW9uX18gc3RhdGljIF9faW5saW5lIGNt c2VfYWRkcmVzc19pbmZvX3QKK19fYXR0cmlidXRlX18gKChfX2Fsd2F5c19p bmxpbmVfXykpCitjbXNlX1RUQVQgKHZvaWQgKl9fcCkKK19fQ01TRV9UVF9B U00gKGF0KQorCisjZGVmaW5lIENNU0VfQVVfTk9OU0VDVVJFCTIKKyNkZWZp bmUgQ01TRV9NUFVfTk9OU0VDVVJFCTE2CisjZGVmaW5lIENNU0VfTk9OU0VD VVJFCQkxOAorCisjZW5kaWYgLyogX19BUk1fRkVBVFVSRV9DTVNFICYgMiAq LworCisjZGVmaW5lIENNU0VfTVBVX1VOUFJJVgkJNAorI2RlZmluZSBDTVNF X01QVV9SRUFEV1JJVEUJMQorI2RlZmluZSBDTVNFX01QVV9SRUFECQk4CisK K19fZXh0ZW5zaW9uX18gdm9pZCAqCitjbXNlX2NoZWNrX2FkZHJlc3NfcmFu Z2UgKHZvaWQgKiwgc2l6ZV90LCBpbnQpOworCisjZGVmaW5lIGNtc2VfY2hl Y2tfcG9pbnRlZF9vYmplY3QocCwgZikgXAorICAoKHR5cGVvZiAoKHApKSkg Y21zZV9jaGVja19hZGRyZXNzX3JhbmdlICgocCksIHNpemVvZiAoKihwKSks IChmKSkpCisKKyNkZWZpbmUgY21zZV9uc2ZwdHJfY3JlYXRlKHApICgodHlw ZW9mICgocCkpKSAoKGludHB0cl90KSAocCkgJiB+MSkpCisKKyNkZWZpbmUg Y21zZV9pc19uc2ZwdHIocCkgKCEoKGludHB0cl90KSAocCkgJiAxKSkKKwor I2VuZGlmIC8qIF9fQVJNX0ZFQVRVUkVfQ01TRSAmIDEgKi8KKworI2lmZGVm IF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIF9HQ0NfQVJN X0NNU0VfSCAqLwpkaWZmIC0tZ2l0IGEvZ2NjL2RvYy9leHRlbmQudGV4aSBi L2djYy9kb2MvZXh0ZW5kLnRleGkKaW5kZXggMDY2OWY3OTk5YmViMDc4ODIy ZTQ3MTM1MjAzNmQ4ZjEzNTE3ODEyZC4uM2Y2ZmMyNzk1MGZhZmEyZTc2NDlk ZWI5ZGM1ZGI0NDczN2NiYjY5MSAxMDA2NDQKLS0tIGEvZ2NjL2RvYy9leHRl bmQudGV4aQorKysgYi9nY2MvZG9jL2V4dGVuZC50ZXhpCkBAIC0xMTc1Myw2 ICsxMTc1Myw3IEBAIGluc3RydWN0aW9ucywgYnV0IGFsbG93IHRoZSBjb21w aWxlciB0byBzY2hlZHVsZSB0aG9zZSBjYWxscy4KICogQVJNIGlXTU1YdCBC dWlsdC1pbiBGdW5jdGlvbnM6OgogKiBBUk0gQyBMYW5ndWFnZSBFeHRlbnNp b25zIChBQ0xFKTo6CiAqIEFSTSBGbG9hdGluZyBQb2ludCBTdGF0dXMgYW5k IENvbnRyb2wgSW50cmluc2ljczo6CisqIEFSTSBBUk12OC1NIFNlY3VyaXR5 IEV4dGVuc2lvbnM6OgogKiBBVlIgQnVpbHQtaW4gRnVuY3Rpb25zOjoKICog QmxhY2tmaW4gQnVpbHQtaW4gRnVuY3Rpb25zOjoKICogRlItViBCdWlsdC1p biBGdW5jdGlvbnM6OgpAQCAtMTI1OTgsNiArMTI1OTksMzEgQEAgdW5zaWdu ZWQgaW50IF9fYnVpbHRpbl9hcm1fZ2V0X2Zwc2NyICgpCiB2b2lkIF9fYnVp bHRpbl9hcm1fc2V0X2Zwc2NyICh1bnNpZ25lZCBpbnQpCiBAZW5kIHNtYWxs ZXhhbXBsZQogCitAbm9kZSBBUk0gQVJNdjgtTSBTZWN1cml0eSBFeHRlbnNp b25zCitAc3Vic2VjdGlvbiBBUk0gQVJNdjgtTSBTZWN1cml0eSBFeHRlbnNp b25zCisKK0dDQyBpbXBsZW1lbnRzIHRoZSBBUk12OC1NIFNlY3VyaXR5IEV4 dGVuc2lvbnMgYXMgZGVzY3JpYmVkIGluIHRoZSBBUk12OC1NCitTZWN1cml0 eSBFeHRlbnNpb25zOiBSZXF1aXJlbWVuZXRzIG9uIERldmVsb3BtZW50IFRv b2xzIEVuZ2luZWVyaW5nCitTcGVjaWZpY2F0aW9uLCB3aGljaCBjYW4gYmUg Zm91bmQgYXQKK0B1cmVme2h0dHA6Ly9pbmZvY2VudGVyLmFybS5jb20vaGVs cC90b3BpYy9jb20uYXJtLmRvYy5lY20wMzU5ODE4L0VDTTAzNTk4MThfYXJt djhtX3NlY3VyaXR5X2V4dGVuc2lvbnNfcmVxc19vbl9kZXZfdG9vbHNfMV8w LnBkZn0uCisKK0FzIHBhcnQgb2YgdGhlIFNlY3VyaXR5IEV4dGVuc2lvbnMg R0NDIGltcGxlbWVudHMgdGhlIGludHJpbnNpY3MgYmVsb3cuICBGUFRSCitp cyB1c2VkIGhlcmUgdG8gbWVhbiBhbnkgZnVuY3Rpb24gcG9pbnRlciB0eXBl LgorCitAc21hbGxleGFtcGxlCitjbXNlX2FkZHJlc3NfaW5mb190IGNtc2Vf VFQgKHZvaWQgKikKK2Ntc2VfYWRkcmVzc19pbmZvX3QgY21zZV9UVF9mcHRy IChGUFRSKQorY21zZV9hZGRyZXNzX2luZm9fdCBjbXNlX1RUVCAodm9pZCAq KQorY21zZV9hZGRyZXNzX2luZm9fdCBjbXNlX1RUVF9mcHRyIChGUFRSKQor Y21zZV9hZGRyZXNzX2luZm9fdCBjbXNlX1RUQSAodm9pZCAqKQorY21zZV9h ZGRyZXNzX2luZm9fdCBjbXNlX1RUQV9mcHRyIChGUFRSKQorY21zZV9hZGRy ZXNzX2luZm9fdCBjbXNlX1RUQVQgKHZvaWQgKikKK2Ntc2VfYWRkcmVzc19p bmZvX3QgY21zZV9UVEFUX2ZwdHIgKEZQVFIpCit2b2lkICogY21zZV9jaGVj a19hZGRyZXNzX3JhbmdlICh2b2lkICosIHNpemVfdCwgaW50KQordHlwZW9m KHApIGNtc2VfbnNmcHRyX2NyZWF0ZSAoRlBUUiBwKQoraW50cHRyX3QgY21z ZV9pc19uc2ZwdHIgKEZQVFIpCitAZW5kIHNtYWxsZXhhbXBsZQorCiBAbm9k ZSBBVlIgQnVpbHQtaW4gRnVuY3Rpb25zCiBAc3Vic2VjdGlvbiBBVlIgQnVp bHQtaW4gRnVuY3Rpb25zCiAKZGlmZiAtLWdpdCBhL2djYy9kb2MvaW52b2tl LnRleGkgYi9nY2MvZG9jL2ludm9rZS50ZXhpCmluZGV4IDVjY2Q0MjQ0ZWYz OTY2OTZmMWE3Y2E5NjJhN2E3ZmU5OTczZmNmNmUuLjEzY2FmM2MzYmVmMjU2 NGQyYzAxNTJhOTVkNTIwYjY4NjlmZmRhMzYgMTAwNjQ0Ci0tLSBhL2djYy9k b2MvaW52b2tlLnRleGkKKysrIGIvZ2NjL2RvYy9pbnZva2UudGV4aQpAQCAt NjQ1LDcgKzY0NSw4IEBAIE9iamVjdGl2ZS1DIGFuZCBPYmplY3RpdmUtQysr IERpYWxlY3RzfS4KIC1tc2xvdy1mbGFzaC1kYXRhIEBnb2wKIC1tYXNtLXN5 bnRheC11bmlmaWVkIEBnb2wKIC1tcmVzdHJpY3QtaXQgQGdvbAotLW1wdXJl LWNvZGV9CistbXB1cmUtY29kZSBAZ29sCistbWNtc2V9CiAKIEBlbXBoe0FW UiBPcHRpb25zfQogQGdjY29wdGxpc3R7LW1tY3U9QHZhcnttY3V9IC1tYWNj dW11bGF0ZS1hcmdzIC1tYnJhbmNoLWNvc3Q9QHZhcntjb3N0fSBAZ29sCkBA IC0xNTE3MCw2ICsxNTE3MSwxMSBAQCBBZGRpdGlvbmFsbHksIHdoZW4gY29t cGlsaW5nIGZvciBFTEYgb2JqZWN0IGZvcm1hdCBnaXZlIGFsbCB0ZXh0IHNl Y3Rpb25zIHRoZQogRUxGIHByb2Nlc3Nvci1zcGVjaWZpYyBzZWN0aW9uIGF0 dHJpYnV0ZSBAY29kZXtTSEZfQVJNX1BVUkVDT0RFfS4gIFRoaXMgb3B0aW9u CiBpcyBvbmx5IGF2YWlsYWJsZSB3aGVuIGdlbmVyYXRpbmcgbm9uLXBpYyBj b2RlIGZvciBBUk12Ny1NIHRhcmdldHMuCiAKK0BpdGVtIC1tY21zZQorQG9w aW5kZXggbWNtc2UKK0dlbmVyYXRlIHNlY3VyZSBjb2RlIGFzIHBlciB0aGUg IkFSTXY4LU0gU2VjdXJpdHkgRXh0ZW5zaW9uczogUmVxdWlyZW1lbnRzIG9u CitEZXZlbG9wbWVudCBUb29scyBFbmdpbmVlcmluZyBTcGVjaWZpY2F0aW9u Iiwgd2hpY2ggY2FuIGJlIGZvdW5kIG9uCitAdXJse2h0dHA6Ly9pbmZvY2Vu dGVyLmFybS5jb20vaGVscC90b3BpYy9jb20uYXJtLmRvYy5lY20wMzU5ODE4 L0VDTTAzNTk4MThfYXJtdjhtX3NlY3VyaXR5X2V4dGVuc2lvbnNfcmVxc19v bl9kZXZfdG9vbHNfMV8wLnBkZn0uCiBAZW5kIHRhYmxlCiAKIEBub2RlIEFW UiBPcHRpb25zCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvYXJtL2Ntc2UvY21zZS0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvYXJtL2Ntc2UvY21zZS0xLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u ZDViOWEyZDlkNTk1NjlkZTE3MGRhODE0YWU2NjBlOWZiMmI5NDNlNwotLS0g L2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0v Y21zZS9jbXNlLTEuYwpAQCAtMCwwICsxLDY3IEBACisvKiB7IGRnLWRvIGNv bXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItT3MgLW1jbXNlIC1mZHVt cC1ydGwtZXhwYW5kIiB9ICAqLworCisjaW5jbHVkZSA8YXJtX2Ntc2UuaD4K KworZXh0ZXJuIGludCBhOworZXh0ZXJuIGludCBiYXIgKHZvaWQpOworCitp bnQgZm9vIChjaGFyICogcCkKK3sKKyAgY21zZV9hZGRyZXNzX2luZm9fdCBj YWl0OworCisgIGNhaXQgPSBjbXNlX1RUICgmYSk7CisgIGlmIChjYWl0LmZs YWdzLm1wdV9yZWdpb24pCisgICAgYSsrOworCisgIGNhaXQgPSBjbXNlX1RU X2ZwdHIgKCZiYXIpOworICBpZiAoY2FpdC5mbGFncy5tcHVfcmVnaW9uKQor ICAgIGErPSBiYXIgKCk7CisKKyAgY2FpdCA9IGNtc2VfVFRBICgmYSk7Cisg IGlmIChjYWl0LmZsYWdzLm1wdV9yZWdpb24pCisgICAgYSsrOworCisgIGNh aXQgPSBjbXNlX1RUQV9mcHRyICgmYmFyKTsKKyAgaWYgKGNhaXQuZmxhZ3Mu bXB1X3JlZ2lvbikKKyAgICBhKz0gYmFyICgpOworCisgIGNhaXQgPSBjbXNl X1RUVCAoJmEpOworICBpZiAoY2FpdC5mbGFncy5tcHVfcmVnaW9uKQorICAg IGErKzsKKworICBjYWl0ID0gY21zZV9UVFRfZnB0ciAoJmJhcik7CisgIGlm IChjYWl0LmZsYWdzLm1wdV9yZWdpb24pCisgICAgYSs9IGJhciAoKTsKKwor ICBjYWl0ID0gY21zZV9UVEFUICgmYSk7CisgIGlmIChjYWl0LmZsYWdzLm1w dV9yZWdpb24pCisgICAgYSsrOworCisgIGNhaXQgPSBjbXNlX1RUQVRfZnB0 ciAoJmJhcik7CisgIGlmIChjYWl0LmZsYWdzLm1wdV9yZWdpb24pCisgICAg YSs9IGJhciAoKTsKKworICBwID0gKGNoYXIgKikgY21zZV9jaGVja19hZGRy ZXNzX3JhbmdlICgodm9pZCAqKSBwLCBzaXplb2YgKGNoYXIpLCAwKTsKKyAg cCA9IChjaGFyICopIGNtc2VfY2hlY2tfYWRkcmVzc19yYW5nZSAoKHZvaWQg KikgcCwgc2l6ZW9mIChjaGFyKSwKKwkJCQkJIENNU0VfTVBVX1VOUFJJVik7 CisgIHAgPSAoY2hhciAqKSBjbXNlX2NoZWNrX2FkZHJlc3NfcmFuZ2UgKCh2 b2lkICopIHAsIHNpemVvZiAoY2hhciksCisJCQkJCSBDTVNFX01QVV9SRUFE V1JJVEUpOworICBwID0gKGNoYXIgKikgY21zZV9jaGVja19hZGRyZXNzX3Jh bmdlICgodm9pZCAqKSBwLCBzaXplb2YgKGNoYXIpLAorCQkJCQkgQ01TRV9N UFVfVU5QUklWIHwgQ01TRV9NUFVfUkVBRCk7CisgIHAgPSAoY2hhciAqKSBj bXNlX2NoZWNrX2FkZHJlc3NfcmFuZ2UgKCh2b2lkICopIHAsIHNpemVvZiAo Y2hhciksCisJCQkJCSBDTVNFX0FVX05PTlNFQ1VSRQorCQkJCQkgfCBDTVNF X01QVV9OT05TRUNVUkUpOworICBwID0gKGNoYXIgKikgY21zZV9jaGVja19h ZGRyZXNzX3JhbmdlICgodm9pZCAqKSBwLCBzaXplb2YgKGNoYXIpLAorCQkJ CQkgQ01TRV9OT05TRUNVUkUgfCBDTVNFX01QVV9VTlBSSVYpOworCisgIHAg PSAoY2hhciAqKSBjbXNlX2NoZWNrX3BvaW50ZWRfb2JqZWN0IChwLCBDTVNF X05PTlNFQ1VSRSB8IENNU0VfTVBVX1VOUFJJVik7CisKKyAgcmV0dXJuIGE7 Cit9CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIlx0 dHQgIiAyIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy LXRpbWVzICJ0dHQgIiAyIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLXRpbWVzICJ0dGEgIiAyIH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJ0dGF0ICIgMiB9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiYmwuY21zZV9j aGVja19hZGRyZXNzX3JhbmdlIiA3IH0gfSAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyLW5vdCAiY21zZV9jaGVja19wb2ludGVkX29iamVj dCIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvYXJtL2Ntc2UvY21zZS0xMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2FybS9jbXNlL2Ntc2UtMTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw Li44N2EyZjEzNjNhNGU0YmQ4MTc1MDNlNzllNTA0OTgwMjEwZTcyMmMzCi0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2Fy bS9jbXNlL2Ntc2UtMTIuYwpAQCAtMCwwICsxLDE0IEBACisvKiB7IGRnLWRv IGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItbWNtc2UiIH0gICov CisjaW5jbHVkZSA8YXJtX2Ntc2UuaD4KKworY2hhciAqCitmb28gKGNoYXIg KiBwKQoreworICBpZiAoIWNtc2VfaXNfbnNmcHRyIChwKSkKKyAgICByZXR1 cm4gY21zZV9uc2ZwdHJfY3JlYXRlIChwKTsKK30KKworLyogQ2hlY2tzIGZv ciBzYXZpbmcgYW5kIGNsZWFyaW5nIHByaW9yIHRvIGZ1bmN0aW9uIGNhbGwu ICAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiY21z ZV9pc19uc2ZwdHIiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyLW5vdCAiY21zZV9uc2ZwdHJfY3JlYXRlIiB9IH0gKi8KZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vY21zZS9jbXNl LmV4cCBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vY21zZS9jbXNl LmV4cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzk3ZGJhMTkwMTcyMGUw NDI0OWQ2MTA3OGMxY2JmMmEzZTQzNmE5Ci0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9jbXNlL2Ntc2UuZXhwCkBA IC0wLDAgKzEsNTAgQEAKKyMgICBDb3B5cmlnaHQgKEMpIDE5OTctMjAxNiBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworIyBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIEdDQzsgc2VlIHRo ZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorIyA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCisKKyMgR0NDIHRlc3RzdWl0ZSBmb3IgQVJN djgtTSBTZWN1cml0eSBFeHRlbnNpb25zIHVzaW5nIHRoZSBgZGcuZXhwJyBk cml2ZXIuCisKKyMgTG9hZCBzdXBwb3J0IHByb2NzLgorbG9hZF9saWIgZ2Nj LWRnLmV4cAorCisjIEV4aXQgaW1tZWRpYXRlbHkgaWYgdGhlIHRhcmdldCBk b2VzIG5vdCBzdXBwb3J0IC1tY21zZS4KK2lmICFbY2hlY2tfZWZmZWN0aXZl X3RhcmdldF9hcm1fY21zZV9va10gdGhlbiB7CisgICAgcmV0dXJuCit9CisK KyMgSWYgYSB0ZXN0Y2FzZSBkb2Vzbid0IGhhdmUgc3BlY2lhbCBvcHRpb25z LCB1c2UgdGhlc2UuCitnbG9iYWwgREVGQVVMVF9DRkxBR1MKK2lmICFbaW5m byBleGlzdHMgREVGQVVMVF9DRkxBR1NdIHRoZW4geworICAgIHNldCBERUZB VUxUX0NGTEFHUyAiIC1hbnNpIC1wZWRhbnRpYy1lcnJvcnMiCit9CisKKyMg SW5pdGlhbGl6ZSBgZGcnLgorZGctaW5pdAorCitzZXQgc2F2ZWQtZGctZG8t d2hhdC1kZWZhdWx0ICR7ZGctZG8td2hhdC1kZWZhdWx0fQorc2V0IGRnLWRv LXdoYXQtZGVmYXVsdCAiYXNzZW1ibGUiCisKK3NldCBzYXZlZC1sdG9fdG9y dHVyZV9vcHRpb25zICR7TFRPX1RPUlRVUkVfT1BUSU9OU30KK3NldCBMVE9f VE9SVFVSRV9PUFRJT05TICIiCisKKyMgVGhlc2UgYXJlIGZvciBib3RoIGJh c2VsaW5lIGFuZCBtYWlubGluZS4KK2djYy1kZy1ydW50ZXN0IFtsc29ydCBb Z2xvYiAkc3JjZGlyLyRzdWJkaXIvKi5jXV0gXAorCSIiICRERUZBVUxUX0NG TEFHUworCitzZXQgTFRPX1RPUlRVUkVfT1BUSU9OUyAke3NhdmVkLWx0b190 b3J0dXJlX29wdGlvbnN9CitzZXQgZGctZG8td2hhdC1kZWZhdWx0ICR7c2F2 ZWQtZGctZG8td2hhdC1kZWZhdWx0fQorCisjIEFsbCBkb25lLgorZGctZmlu aXNoCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2xpYi90YXJnZXQtc3Vw cG9ydHMuZXhwIGIvZ2NjL3Rlc3RzdWl0ZS9saWIvdGFyZ2V0LXN1cHBvcnRz LmV4cAppbmRleCBiNWE5ZmFhYjVhNDdkMDEzNzFjNjQwMmE1YjA3ZDM0MDcx ZGJjMzRiLi5lYWVhZjA1NmM2MTE4ODk5OTNiMTE4ZDQ4YTdhZWIyMGU5NWJl NDc3IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2xpYi90YXJnZXQtc3Vw cG9ydHMuZXhwCisrKyBiL2djYy90ZXN0c3VpdGUvbGliL3RhcmdldC1zdXBw b3J0cy5leHAKQEAgLTM4NjYsNiArMzg2NiwxOSBAQCBwcm9jIGNoZWNrX2Vm ZmVjdGl2ZV90YXJnZXRfYXJtX3RodW1iMV9jYnpfb2sge30gewogICAgIH0K IH0KIAorIyBSZXR1cm4gMSBpZiB0aGlzIGlzIGFuIEFSTSB0YXJnZXQgd2hl cmUgQVJNdjgtTSBTZWN1cml0eSBFeHRlbnNpb25zIGlzCisjIGF2YWlsYWJs ZS4KKworcHJvYyBjaGVja19lZmZlY3RpdmVfdGFyZ2V0X2FybV9jbXNlX29r IHt9IHsKKyAgICByZXR1cm4gW2NoZWNrX25vX2NvbXBpbGVyX21lc3NhZ2Vz IGFybV9jbXNlIG9iamVjdCB7CisJaW50CisJZm9vICh2b2lkKQorCXsKKwkg IGFzbSAoImJ4bnMgcjAiKTsKKwl9CisgICAgfSAiLW1jbXNlIl07Cit9CisK ICMgUmV0dXJuIDEgaWYgdGhpcyBjb21waWxhdGlvbiB0dXJucyBvbiBzdHJp bmdfb3BzX3ByZWZlcl9uZW9uIG9uLgogCiBwcm9jIGNoZWNrX2VmZmVjdGl2 ZV90YXJnZXRfYXJtX3R1bmVfc3RyaW5nX29wc19wcmVmZXJfbmVvbiB7IH0g ewpkaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZy9hcm0vY21zZS5jIGIvbGli Z2NjL2NvbmZpZy9hcm0vY21zZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu LmZlM2EyMjk2N2M4NTM2ZjJhOGMwNWI1ODYyN2Y5NjRkM2ZiMWQzNDUKLS0t IC9kZXYvbnVsbAorKysgYi9saWJnY2MvY29uZmlnL2FybS9jbXNlLmMKQEAg LTAsMCArMSwxMDggQEAKKy8qIEFSTXY4LU0gU2VjdXJpdHkgRXh0ZW5zaW9u cyByb3V0aW5lcy4KKyAgIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgQ29udHJpYnV0ZWQgYnkg QVJNIEx0ZC4KKworICAgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgIHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorICAgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24p IGFueQorICAgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBmaWxlIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws IGJ1dAorICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH TlUKKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKworICAgVW5kZXIgU2VjdGlvbiA3IG9mIEdQTCB2ZXJzaW9uIDMsIHlv dSBhcmUgZ3JhbnRlZCBhZGRpdGlvbmFsCisgICBwZXJtaXNzaW9ucyBkZXNj cmliZWQgaW4gdGhlIEdDQyBSdW50aW1lIExpYnJhcnkgRXhjZXB0aW9uLCB2 ZXJzaW9uCisgICAzLjEsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh bmQKKyAgIGEgY29weSBvZiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNl cHRpb24gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07CisgICBzZWUgdGhlIGZp bGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5 LiAgSWYgbm90LCBzZWUKKyAgIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4gICovCisKKworI2lmIF9fQVJNX0ZFQVRVUkVfQ01TRSAmIDEKKwor I2luY2x1ZGUgPGFybV9jbXNlLmg+CisKKy8qIEFSTSBpbnRyaW5zaWMgZnVu Y3Rpb24gdG8gcGVyZm9ybSBhIHBlcm1pc3Npb24gY2hlY2sgb24gYSBnaXZl bgorICAgYWRkcmVzcyByYW5nZS4gIFNlZSBBQ0xFIGNoYW5nZXMgZm9yIEFS TXY4LU0uICAqLworCit2b2lkICoKK2Ntc2VfY2hlY2tfYWRkcmVzc19yYW5n ZSAodm9pZCAqcCwgc2l6ZV90IHNpemUsIGludCBmbGFncykKK3sKKyAgY21z ZV9hZGRyZXNzX2luZm9fdCBwZXJtYiwgcGVybWU7CisgIGNoYXIgKnBiID0g KGNoYXIgKikgcCwgKnBlOworCisgIC8qIENoZWNrIGlmIHRoZSByYW5nZSB3 cmFwcyBhcm91bmQuICAqLworICBpZiAoVUlOVFBUUl9NQVggLSAodWludHB0 cl90KSBwIDwgc2l6ZSkKKyAgICByZXR1cm4gTlVMTDsKKworICAvKiBDaGVj ayBpZiBhbiB1bmtub3duIGZsYWcgaXMgcHJlc2VudC4gICovCisgIGludCBr bm93biA9IENNU0VfTVBVX1VOUFJJViB8IENNU0VfTVBVX1JFQURXUklURSB8 IENNU0VfTVBVX1JFQUQ7CisgIGludCBrbm93bl9zZWN1cmVfbGV2ZWwgPSBD TVNFX01QVV9VTlBSSVY7CisjaWYgX19BUk1fRkVBVFVSRV9DTVNFICYgMgor ICBrbm93biB8PSBDTVNFX0FVX05PTlNFQ1VSRSB8IENNU0VfTVBVX05PTlNF Q1VSRTsKKyAga25vd25fc2VjdXJlX2xldmVsIHw9IENNU0VfTVBVX05PTlNF Q1VSRTsKKyNlbmRpZgorICBpZiAoZmxhZ3MgJiAofmtub3duKSkKKyAgICBy ZXR1cm4gTlVMTDsKKworICAvKiBFeGVjdXRlIHRoZSByaWdodCB2YXJpYW50 IG9mIHRoZSBUVCBpbnN0cnVjdGlvbnMuICAqLworICBwZSA9IHBiICsgc2l6 ZSAtIDE7CisgIGNvbnN0IGludCBzaW5nbGVDaGVjayA9ICgoKHVpbnRwdHJf dCkgcGIgXiAodWludHB0cl90KSBwZSkgPCAzMik7CisgIHN3aXRjaCAoZmxh Z3MgJiBrbm93bl9zZWN1cmVfbGV2ZWwpCisgICAgeworICAgIGNhc2UgMDoK KyAgICAgIHBlcm1iID0gY21zZV9UVCAocGIpOworICAgICAgcGVybWUgPSBz aW5nbGVDaGVjayA/IHBlcm1iIDogY21zZV9UVCAocGUpOworICAgICAgYnJl YWs7CisgICAgY2FzZSBDTVNFX01QVV9VTlBSSVY6CisgICAgICBwZXJtYiA9 IGNtc2VfVFRUIChwYik7CisgICAgICBwZXJtZSA9IHNpbmdsZUNoZWNrID8g cGVybWIgOiBjbXNlX1RUVCAocGUpOworICAgICAgYnJlYWs7CisjaWYgX19B Uk1fRkVBVFVSRV9DTVNFICYgMgorICAgIGNhc2UgQ01TRV9NUFVfTk9OU0VD VVJFOgorICAgICAgcGVybWIgPSBjbXNlX1RUQSAocGIpOworICAgICAgcGVy bWUgPSBzaW5nbGVDaGVjayA/IHBlcm1iIDogY21zZV9UVEEgKHBlKTsKKyAg ICAgIGJyZWFrOworICAgIGNhc2UgQ01TRV9NUFVfVU5QUklWIHwgQ01TRV9N UFVfTk9OU0VDVVJFOgorICAgICAgcGVybWIgPSBjbXNlX1RUQVQgKHBiKTsK KyAgICAgIHBlcm1lID0gc2luZ2xlQ2hlY2sgPyBwZXJtYiA6IGNtc2VfVFRB VCAocGUpOworICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICBkZWZhdWx0Ogor ICAgICAgLyogSW52YWxpZCBmbGFnLCBlZy4gIENNU0VfTVBVX05PTlNFQ1VS RSBzcGVjaWZpZWQgYnV0CisJIF9fQVJNX0ZFQVRVUkVfQ01TRSAmIDIgPT0g MC4gICovCisgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgLyogQ2hl Y2sgdGhhdCB0aGUgcmFuZ2UgZG9lcyBub3QgY3Jvc3MgTVBVLCBTQVUsIG9y IElEQVUgYm91bmRhcmllcy4gICovCisgIGlmIChwZXJtYi52YWx1ZSAhPSBw ZXJtZS52YWx1ZSkKKyAgICByZXR1cm4gTlVMTDsKKworICAvKiBDaGVjayB0 aGUgcGVybWlzc2lvbnMgb24gdGhlIHJhbmdlLiAgKi8KKyAgc3dpdGNoIChm bGFncyAmICh+a25vd25fc2VjdXJlX2xldmVsKSkKKyAgICB7CisjaWYgX19B Uk1fRkVBVFVSRV9DTVNFICYgMgorICAgIGNhc2UgQ01TRV9NUFVfUkVBRCB8 IENNU0VfTVBVX1JFQURXUklURSB8IENNU0VfQVVfTk9OU0VDVVJFOgorICAg IGNhc2UJCSBDTVNFX01QVV9SRUFEV1JJVEUgfCBDTVNFX0FVX05PTlNFQ1VS RToKKyAgICAgIHJldHVybiBwZXJtYi5mbGFncy5ub25zZWN1cmVfcmVhZHdy aXRlX29rCT8gcCA6IE5VTEw7CisgICAgY2FzZSBDTVNFX01QVV9SRUFEIHwg Q01TRV9BVV9OT05TRUNVUkU6CisgICAgICByZXR1cm4gcGVybWIuZmxhZ3Mu bm9uc2VjdXJlX3JlYWRfb2sJPyBwIDogTlVMTDsKKyAgICBjYXNlIENNU0Vf QVVfTk9OU0VDVVJFOgorICAgICAgcmV0dXJuIHBlcm1iLmZsYWdzLnNlY3Vy ZQkJCT8gTlVMTCA6IHA7CisjZW5kaWYKKyAgICBjYXNlIENNU0VfTVBVX1JF QUQgfCBDTVNFX01QVV9SRUFEV1JJVEU6CisgICAgY2FzZQkJIENNU0VfTVBV X1JFQURXUklURToKKyAgICAgIHJldHVybiBwZXJtYi5mbGFncy5yZWFkd3Jp dGVfb2sJCT8gcCA6IE5VTEw7CisgICAgY2FzZSBDTVNFX01QVV9SRUFEOgor ICAgICAgcmV0dXJuIHBlcm1iLmZsYWdzLnJlYWRfb2sJCT8gcCA6IE5VTEw7 CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0KK30K KworCisjZW5kaWYgLyogX19BUk1fRkVBVFVSRV9DTVNFICYgMS4gICovCmRp ZmYgLS1naXQgYS9saWJnY2MvY29uZmlnL2FybS90LWFybSBiL2xpYmdjYy9j b25maWcvYXJtL3QtYXJtCmluZGV4IDRlMTdlOTliNGE1M2JiYWZjMGYxZjhk ZGRkMDIwMDBmMGU4ZjRmNDguLjU2MTgxNDNiZmQwZjAyYjE3MGRiM2Y5ZTRj MGExNWNlY2I0MDNjZWMgMTAwNjQ0Ci0tLSBhL2xpYmdjYy9jb25maWcvYXJt L3QtYXJtCisrKyBiL2xpYmdjYy9jb25maWcvYXJtL3QtYXJtCkBAIC0xLDMg KzEsMTUgQEAKIExJQjFBU01TUkMgPSBhcm0vbGliMWZ1bmNzLlMKIExJQjFB U01GVU5DUyA9IF90aHVtYjFfY2FzZV9zcWkgX3RodW1iMV9jYXNlX3VxaSBf dGh1bWIxX2Nhc2Vfc2hpIFwKIAlfdGh1bWIxX2Nhc2VfdWhpIF90aHVtYjFf Y2FzZV9zaQorCitIQVZFX0NNU0U6PSQoZmluZHN0cmluZyBfX0FSTV9GRUFU VVJFX0NNU0UsJChzaGVsbCAkKGdjY19jb21waWxlX2JhcmUpIC1kTSAtRSAt IDwvZGV2L251bGwpKQoraWZuZXEgKCQoc2hlbGwgJChnY2NfY29tcGlsZV9i YXJlKSAtRSAtbWNtc2UgLSA8L2Rldi9udWxsIDI+L2Rldi9udWxsKSwpCitD TVNFX09QVFM6PS1tY21zZQorZW5kaWYKKworaWZkZWYgSEFWRV9DTVNFCits aWJnY2Mtb2JqZWN0cyArPSBjbXNlLm8gY21zZV9ub25zZWN1cmVfY2FsbC5v CisKK2Ntc2UubzogJChzcmNkaXIpL2NvbmZpZy9hcm0vY21zZS5jCisJJChn Y2NfY29tcGlsZSkgLWMgJChDTVNFX09QVFMpICQ8CitlbmRpZgo= --------------030707090603050205030501--