From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lf1-x12d.google.com (mail-lf1-x12d.google.com [IPv6:2a00:1450:4864:20::12d]) by sourceware.org (Postfix) with ESMTPS id 948053858C53; Thu, 24 Aug 2023 17:35:06 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 948053858C53 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-lf1-x12d.google.com with SMTP id 2adb3069b0e04-4ff9b389677so50778e87.3; Thu, 24 Aug 2023 10:35:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1692898505; x=1693503305; h=in-reply-to:content-language:references:cc:to:from:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=y6VrillizcaInMaWOL4JrYL3F/TRJz9u3zpyDzMpiYU=; b=ISfQmncSdxl1w96rp2jaQ9u90v2iulMI87aRc9CdoeX9Q6oZZ2kMpaYRxymz2P+svn pg2hkX9fPvsqrgZUrMEqc+cRw2cqDr5WmQREUOR2kZywLIycnoAR3lp4TCzQUGBq7cjF rYvs1VI9Xezt9nldGngZq6Xwk6DIw0QxRlLq5QIjg+PVpSc3ugL+tpnQzvV9tMxySejB Eu7SZRqJ0wVvdE/s2EDlz012nXdwqPAmkvgpibQKzhCtE5ekug0RrR4ehFWkhAMH3FLK 3eJJIY2rHVp3CaXvnup6On24+wXvTVd10sUSgsyGGFvL7TpGdkpFm8BTEwLu6F/I0xC3 VdHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692898505; x=1693503305; h=in-reply-to:content-language:references:cc:to:from:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=y6VrillizcaInMaWOL4JrYL3F/TRJz9u3zpyDzMpiYU=; b=alzkl8/QWl8jGDozjpDICY6yocWfa3lZmFLQwkBkVvbZUJboGpYWZR/beBdKAm/KO/ kih2M0FY4Lqd93E3cG8xfBDBCcRLDe516go4zxFn+GJcojbekFX8pCdQqgbdkLYioO7m ndAJqORrOUhFlqimrFukS/4+QjolU4CZTdjG5qsF840cb1/lr9jl+4cbc64Ph5OPciZw T6bnHtpKp+LAWZiIaFFxqIHI3nJLkX/ZGkwusVSnwUT3fkgEaVifX9FhsdaB1KcaoMfn RSDEUTJLYNzWDWbI0kWfSGtRRQhDOByAa/U9hu4Fegd3NP0S0/NaY04VqsNVdO3vL30o xkcg== X-Gm-Message-State: AOJu0YwhmBwNzvBhtS8QP5Vm1YlKEJmhNrmqL5LpIzLAsSBYeC94OLmQ 0TCidaJLYO6+7dOjEYHc9J9xtcjDk1M= X-Google-Smtp-Source: AGHT+IFX1I2zXQieIiPCISHRde/uFPlkHk5YcRtQcWsh/ZYa093UXxMh70K0AgxoDm/OfoxlwTW2Rg== X-Received: by 2002:a05:6512:2305:b0:4fe:c98:789a with SMTP id o5-20020a056512230500b004fe0c98789amr16547893lfu.37.1692898504278; Thu, 24 Aug 2023 10:35:04 -0700 (PDT) Received: from [10.1.1.198] ([89.207.171.94]) by smtp.gmail.com with ESMTPSA id v14-20020a056402184e00b0052a3edff5c3sm1633215edy.87.2023.08.24.10.33.57 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 24 Aug 2023 10:35:03 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------LAQKzI86sydkGqe26cTc4XWk" Message-ID: <6a83012b-0fcc-0439-8f9f-967e8f57cb12@gmail.com> Date: Thu, 24 Aug 2023 19:33:45 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Subject: Re: [PATCH] sso-string@gnu-versioned-namespace [PR83077] From: =?UTF-8?Q?Fran=c3=a7ois_Dumont?= To: Jonathan Wakely Cc: libstdc++ , gcc-patches References: <1dc681f4-41b7-d171-02ac-b0194617bdee@gmail.com> <91dc6383-6bff-ce6c-b24d-81cd2ab2dce8@gmail.com> <5191c46c-2a2b-750f-b3cc-e4445dc16f8a@gmail.com> <1fbe202f-6c4c-208e-3f31-9b69def61fb9@gmail.com> Content-Language: en-US In-Reply-To: <1fbe202f-6c4c-208e-3f31-9b69def61fb9@gmail.com> X-Spam-Status: No, score=-10.8 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,HTML_MESSAGE,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------LAQKzI86sydkGqe26cTc4XWk Content-Type: multipart/alternative; boundary="------------fDJsFZtOd0Xxj0PiXQ8NK0Ga" --------------fDJsFZtOd0Xxj0PiXQ8NK0Ga Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit I've now prepared the patch to support following config: --disable-libstdcxx-dual-abi --with-default-libstdcxx-abi=new and so detected yet another problem with src/c++98/compatibility.cc. We need basic_istream<>::ignore(streamsize) definitions that rely here but not the rest of it. François On 17/08/2023 19:17, François Dumont wrote: > > Another fix to define __cow_string(const std::string&) in > cxx11-stdexcept.cc even if ! _GLIBCXX_USE_DUAL_ABI. > > On 13/08/2023 21:51, François Dumont wrote: >> >> Here is another version with enhanced sizeof/alignof static_assert in >> string-inst.cc for the std::__cow_string definition from . >> The assertions in cow-stdexcept.cc are now checking the definition >> which is in the same file. >> >> On 13/08/2023 15:27, François Dumont wrote: >>> >>> Here is the fixed patch tested in all 3 modes: >>> >>> - _GLIBCXX_USE_DUAL_ABI >>> >>> - !_GLIBCXX_USE_DUAL_ABI && !_GLIBCXX_USE_CXX11_ABI >>> >>> - !_GLIBCXX_USE_DUAL_ABI && _GLIBCXX_USE_CXX11_ABI >>> >>> I don't know what you have in mind for the change below but I wanted >>> to let you know that I tried to put COW std::basic_string into a >>> nested __cow namespace when _GLIBCXX_USE_CXX11_ABI. But it had more >>> impact on string-inst.cc so I preferred the macro substitution approach. >>> >>> There are some test failing when !_GLIBCXX_USE_CXX11_ABI that are >>> unrelated with my changes. I'll propose fixes in coming days. >>> >>>     libstdc++: [_GLIBCXX_INLINE_VERSION] Use cxx11 abi [PR83077] >>> >>>     Use cxx11 abi when activating versioned namespace mode. To do >>> support >>>     a new configuration mode where !_GLIBCXX_USE_DUAL_ABI and >>> _GLIBCXX_USE_CXX11_ABI. >>> >>>     The main change is that std::__cow_string is now defined >>> whenever _GLIBCXX_USE_DUAL_ABI >>>     or _GLIBCXX_USE_CXX11_ABI is true. Implementation is using >>> available std::string in >>>     case of dual abi and a subset of it when it's not. >>> >>>     On the other side std::__sso_string is defined only when >>> _GLIBCXX_USE_DUAL_ABI is true >>>     and _GLIBCXX_USE_CXX11_ABI is false. Meaning that >>> std::__sso_string is a typedef for the >>>     cow std::string implementation when dual abi is disabled and cow >>> string is being used. >>> >>>     libstdcxx-v3/ChangeLog: >>> >>>             PR libstdc++/83077 >>>             * acinclude.m4 [GLIBCXX_ENABLE_LIBSTDCXX_DUAL_ABI]: >>> Default to "new" libstdcxx abi. >>>             * config/locale/dragonfly/monetary_members.cc >>> [!_GLIBCXX_USE_DUAL_ABI]: Define money_base >>>             members. >>>             * config/locale/generic/monetary_members.cc >>> [!_GLIBCXX_USE_DUAL_ABI]: Likewise. >>>             * config/locale/gnu/monetary_members.cc >>> [!_GLIBCXX_USE_DUAL_ABI]: Likewise. >>>             * config/locale/gnu/numeric_members.cc >>> [!_GLIBCXX_USE_DUAL_ABI](__narrow_multibyte_chars): Define. >>>             * configure: Regenerate. >>>             * include/bits/c++config >>> [_GLIBCXX_INLINE_VERSION](_GLIBCXX_NAMESPACE_CXX11, >>> _GLIBCXX_BEGIN_NAMESPACE_CXX11): >>>             Define empty. >>> [_GLIBCXX_INLINE_VERSION](_GLIBCXX_END_NAMESPACE_CXX11, >>> _GLIBCXX_DEFAULT_ABI_TAG): >>>             Likewise. >>>             * include/bits/cow_string.h [!_GLIBCXX_USE_CXX11_ABI]: >>> Define a light version of COW >>>             basic_string as __std_cow_string for use in stdexcept. >>>             * include/std/stdexcept [_GLIBCXX_USE_CXX11_ABI]: Define >>> __cow_string. >>>             (__cow_string(const char*)): New. >>>             (__cow_string::c_str()): New. >>>             * python/libstdcxx/v6/printers.py >>> (StdStringPrinter::__init__): Set self.new_string to True >>>             when std::__8::basic_string type is found. >>>             * src/Makefile.am >>> [ENABLE_SYMVERS_GNU_NAMESPACE](ldbl_alt128_compat_sources): Define >>> empty. >>>             * src/Makefile.in: Regenerate. >>>             * src/c++11/Makefile.am (cxx11_abi_sources): Rename into... >>>             (dual_abi_sources): ...this. Also move >>> cow-local_init.cc, cxx11-hash_tr1.cc, >>>             cxx11-ios_failure.cc entries to... >>>             (sources): ...this. >>>             (extra_string_inst_sources): Move cow-fstream-inst.cc, >>> cow-sstream-inst.cc, cow-string-inst.cc, >>>             cow-string-io-inst.cc, cow-wtring-inst.cc, >>> cow-wstring-io-inst.cc, cxx11-locale-inst.cc, >>>             cxx11-wlocale-inst.cc entries to... >>>             (inst_sources): ...this. >>>             * src/c++11/Makefile.in: Regenerate. >>>             * src/c++11/cow-fstream-inst.cc >>> [_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >>>             * src/c++11/cow-locale_init.cc [_GLIBCXX_USE_CXX11_ABI]: >>> Skip definitions. >>>             * src/c++11/cow-sstream-inst.cc >>> [_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >>>             * src/c++11/cow-stdexcept.cc [_GLIBCXX_USE_CXX11_ABI]: >>> Include . >>>             [_GLIBCXX_USE_DUAL_ABI || >>> _GLIBCXX_USE_CXX11_ABI](__cow_string): Redefine before >>>             including . Define >>> _GLIBCXX_DEFINE_STDEXCEPT_INSTANTIATIONS so that >>>             __cow_string definition in is skipped. >>>             [_GLIBCXX_USE_CXX11_ABI]: Skip Transaction Memory TS >>> definitions. >>>             Move static_assert to check std::_cow_string abi layout >>> to... >>>             * src/c++11/string-inst.cc: ...here. >>>             (_GLIBCXX_DEFINING_CXX11_ABI_INSTANTIATIONS): Define >>> following _GLIBCXX_USE_CXX11_ABI >>>             value. >>>             [_GLIBCXX_USE_CXX11_ABI && >>> !_GLIBCXX_DEFINING_CXX11_ABI_INSTANTIATIONS]: >>>             Define _GLIBCXX_DEFINING_COW_STRING_INSTANTIATIONS. >>> Include . >>>             Define basic_string as __std_cow_string for the current >>> translation unit. >>>             * src/c++11/cow-string-inst.cc [_GLIBCXX_USE_CXX11_ABI]: >>> Skip definitions. >>>             * src/c++11/cow-string-io-inst.cc >>> [_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >>>             * src/c++11/cow-wstring-inst.cc >>> [_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >>>             * src/c++11/cow-wstring-io-inst.cc >>> [_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >>>             * src/c++11/cxx11-hash_tr1.cc [!_GLIBCXX_USE_CXX11_ABI]: >>> Skip definitions. >>>             * src/c++11/cxx11-ios_failure.cc >>> [!_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >>>             [!_GLIBCXX_USE_DUAL_ABI] (__ios_failure): Remove. >>>             * src/c++11/cxx11-locale-inst.cc: Cleanup, just include >>> locale-inst.cc. >>>             * src/c++11/cxx11-stdexcept.cc >>> [!_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >>>             * src/c++11/cxx11-wlocale-inst.cc >>> [!_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >>>             * src/c++11/locale-inst-numeric.h >>> [!_GLIBCXX_USE_DUAL_ABI](std::use_facet>, >>> std::use_facet>): Instantiate. >>> [!_GLIBCXX_USE_DUAL_ABI](std::has_facet>, >>> std::has_facet>): Instantiate. >>>             [!_GLIBCXX_USE_DUAL_ABI](std::num_get>> istreambuf_iterator>): Instantiate. >>>             [!_GLIBCXX_USE_DUAL_ABI](std::num_put>> ostreambuf_iterator>): Instantiate. >>>             * src/c++11/locale-inst.cc [!_GLIBCXX_USE_DUAL_ABI]: >>> Build only when configured >>>             _GLIBCXX_USE_CXX11_ABI is equal to currently built abi. >>> [!_GLIBCXX_USE_DUAL_ABI](__moneypunct_cache): Instantiate. >>> [!_GLIBCXX_USE_DUAL_ABI](__moneypunct_cache): Instantiate. >>> [!_GLIBCXX_USE_DUAL_ABI](__numpunct_cache): Instantiate. >>>             [!_GLIBCXX_USE_DUAL_ABI](__timepunct): Instantiate. >>> [!_GLIBCXX_USE_DUAL_ABI](__timepunct_cache): Instantiate. >>>             [!_GLIBCXX_USE_DUAL_ABI](time_put>> ostreambuf_iterator>): Instantiate. >>>             [!_GLIBCXX_USE_DUAL_ABI](time_put_byname>> ostreambuf_iterator>): Instantiate. >>> [!_GLIBCXX_USE_DUAL_ABI](__ctype_abstract_base): Instantiate. >>>             [!_GLIBCXX_USE_DUAL_ABI](ctype_byname): Instantiate. >>> [!_GLIBCXX_USE_DUAL_ABI](__codecvt_abstract_base>> mbstate_t>): Instantiate. >>>             [!_GLIBCXX_USE_DUAL_ABI](codecvt_byname>> mbstate_t>): Instantiate. >>> [!_GLIBCXX_USE_DUAL_ABI](use_facet>(const locale&)): >>> Instantiate. >>> [!_GLIBCXX_USE_DUAL_ABI](use_facet>> mbstate_t>>(const locale&)): Instantiate. >>> [!_GLIBCXX_USE_DUAL_ABI](use_facet<__timepunct>(const locale&)): >>> Instantiate. >>> [!_GLIBCXX_USE_DUAL_ABI](use_facet>(const locale&)): >>> Instantiate. >>> [!_GLIBCXX_USE_DUAL_ABI](has_facet>(const locale&)): >>> Instantiate. >>> [!_GLIBCXX_USE_DUAL_ABI](has_facet>> mbstate_t>>(const locale&)): Instantiate. >>> [!_GLIBCXX_USE_DUAL_ABI](has_facet<__timepunct>(const locale&)): >>> Instantiate. >>> [!_GLIBCXX_USE_DUAL_ABI](has_facet>(const locale&)): >>> Instantiate. >>> [!_GLIBCXX_USE_DUAL_ABI](__add_grouping): Define. >>>             [!_GLIBCXX_USE_DUAL_ABI](__pad>): >>> Instantiate. >>>             [!_GLIBCXX_USE_DUAL_ABI](__int_to_char(C*, unsigned >>> long, const C*, >>>             ios_base::fmtflags, bool)): Define. >>>             [!_GLIBCXX_USE_DUAL_ABI](__int_to_char(C*, unsigned long >>> long, const C*, >>>             ios_base::fmtflags, bool)): Define. >>>             * src/c++11/wlocale-inst.cc [!_GLIBCXX_USE_CXX11_ABI]: >>> Skip definitions. >>>             * src/c++98/Makefile.am (cxx11_abi_sources): Remove, >>> unique cow-istream-string.cc entry >>>             move to... >>>             (inst_sources): ...this. >>>             * src/c++98/Makefile.in: Regenerate. >>>             * src/c++98/cow-istream-string.cc: Include >>> . >>>             [_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >>>             * src/c++98/hash_tr1.cc [_GLIBCXX_USE_CXX11_ABI]: Skip >>> definitions. >>>             * src/c++98/ios_failure.cc >>> [_GLIBCXX_USE_CXX11_ABI][_GLIBCXX_USE_DUAL_ABI]: Skip definitions. >>>             * src/c++98/istream-string.cc [!_GLIBCXX_USE_DUAL_ABI]: >>> Build only when configured >>>             _GLIBCXX_USE_CXX11_ABI is equal to currently built abi. >>>             * src/c++98/locale_facets.cc >>> [_GLIBCXX_USE_CXX11_ABI](__verify_grouping): Remove. >>>             * src/c++98/stdexcept.cc >>>             [_GLIBCXX_USE_CXX11_ABI](logic_error(const string&): Remove. >>>             [_GLIBCXX_USE_CXX11_ABI](domain_error(const string&): >>> Remove. >>>             [_GLIBCXX_USE_CXX11_ABI](invalid_argument(const >>> string&): Remove. >>>             [_GLIBCXX_USE_CXX11_ABI](length_error(const string&): >>> Remove. >>>             [_GLIBCXX_USE_CXX11_ABI](out_of_range(const string&): >>> Remove. >>>             [_GLIBCXX_USE_CXX11_ABI](runtime_error(const string&): >>> Remove. >>>             [_GLIBCXX_USE_CXX11_ABI](range_error(const string&): Remove. >>>             [_GLIBCXX_USE_CXX11_ABI](overflow_error(const string&): >>> Remove. >>>             [_GLIBCXX_USE_CXX11_ABI](underflow_error(const string&): >>> Remove. >>> >>> Ok to commit ? >>> >>> François >>> >>> On 11/08/2023 09:51, Jonathan Wakely wrote: >>>> >>>> >>>> On Fri, 11 Aug 2023, 06:44 François Dumont via Libstdc++, >>>> > wrote: >>>> >>>> I hadn't tested the most basic default configuration and it is >>>> failing, >>>> >>>> >>>> I did wonder about that when you said which configurations you had >>>> tested :) >>>> >>>> >>>> >>>> >>>> I need some more time yet. >>>> >>>> >>>> OK, no problem. >>>> >>>> I actually have an idea for replacing the __cow_string hack with >>>> something better, which I will try to work on next week. That might >>>> make things simpler for you, as you won't need the __std_cow_string >>>> macro. >>>> >>>> >>>> >>>> >>>> >>>> François >>>> >>>> >>>> On 10/08/2023 07:13, François Dumont wrote: >>>> > Hi >>>> > >>>> > I've eventually completed this work. >>>> > >>>> > This evolution will allow to build libstdc++ without dual abi >>>> and >>>> > using cxx11 abi. For the moment such a config is only accessible >>>> > through the --enable-symvers=gnu-versioned-namespace >>>> configuration. >>>> > >>>> >     libstdc++: [_GLIBCXX_INLINE_VERSION] Use cxx11 abi [PR83077] >>>> > >>>> >     Use cxx11 abi when activating versioned namespace mode. >>>> > >>>> >     libstdcxx-v3/ChangeLog: >>>> > >>>> >             PR libstdc++/83077 >>>> >             * acinclude.m4 [GLIBCXX_ENABLE_LIBSTDCXX_DUAL_ABI]: >>>> > Default to "new" libstdcxx abi. >>>> >             * config/locale/dragonfly/monetary_members.cc >>>> > [!_GLIBCXX_USE_DUAL_ABI]: Define money_base >>>> >             members. >>>> >             * config/locale/generic/monetary_members.cc >>>> > [!_GLIBCXX_USE_DUAL_ABI]: Likewise. >>>> >             * config/locale/gnu/monetary_members.cc >>>> > [!_GLIBCXX_USE_DUAL_ABI]: Likewise. >>>> >             * config/locale/gnu/numeric_members.cc >>>> > [!_GLIBCXX_USE_DUAL_ABI](__narrow_multibyte_chars): Define. >>>> >             * configure: Regenerate. >>>> >             * include/bits/c++config >>>> > [_GLIBCXX_INLINE_VERSION](_GLIBCXX_NAMESPACE_CXX11, >>>> > _GLIBCXX_BEGIN_NAMESPACE_CXX11): >>>> >             Define empty. >>>> > [_GLIBCXX_INLINE_VERSION](_GLIBCXX_END_NAMESPACE_CXX11, >>>> > _GLIBCXX_DEFAULT_ABI_TAG): >>>> >             Likewise. >>>> >             * include/bits/cow_string.h >>>> [!_GLIBCXX_USE_CXX11_ABI]: >>>> > Define a light version of COW >>>> >             basic_string as __std_cow_string for use in >>>> stdexcept. >>>> >             * include/std/stdexcept [_GLIBCXX_USE_CXX11_ABI]: >>>> Define >>>> > __cow_string. >>>> >             (__cow_string(const char*)): New. >>>> >             (__cow_string::c_str()): New. >>>> >             * python/libstdcxx/v6/printers.py >>>> > (StdStringPrinter::__init__): Set self.new_string to True >>>> >             when std::__8::basic_string type is found. >>>> >             * src/Makefile.am >>>> > [ENABLE_SYMVERS_GNU_NAMESPACE](ldbl_alt128_compat_sources): >>>> Define empty. >>>> >             * src/Makefile.in: Regenerate. >>>> >             * src/c++11/Makefile.am (cxx11_abi_sources): >>>> Rename into... >>>> >             (dual_abi_sources): ...this. Also move >>>> cow-local_init.cc, >>>> > cxx11-hash_tr1.cc, >>>> >             cxx11-ios_failure.cc entries to... >>>> >             (sources): ...this. >>>> >             (extra_string_inst_sources): Move >>>> cow-fstream-inst.cc, >>>> > cow-sstream-inst.cc, cow-string-inst.cc, >>>> >             cow-string-io-inst.cc, cow-wtring-inst.cc, >>>> > cow-wstring-io-inst.cc, cxx11-locale-inst.cc, >>>> >             cxx11-wlocale-inst.cc entries to... >>>> >             (inst_sources): ...this. >>>> >             * src/c++11/Makefile.in: Regenerate. >>>> >             * src/c++11/cow-fstream-inst.cc >>>> [_GLIBCXX_USE_CXX11_ABI]: >>>> > Skip definitions. >>>> >             * src/c++11/cow-locale_init.cc >>>> [_GLIBCXX_USE_CXX11_ABI]: >>>> > Skip definitions. >>>> >             * src/c++11/cow-sstream-inst.cc >>>> [_GLIBCXX_USE_CXX11_ABI]: >>>> > Skip definitions. >>>> >             * src/c++11/cow-stdexcept.cc >>>> [_GLIBCXX_USE_CXX11_ABI]: >>>> > Include . >>>> >             [_GLIBCXX_USE_DUAL_ABI || >>>> > _GLIBCXX_USE_CXX11_ABI](__cow_string): Redefine before including >>>> >             . Define >>>> > _GLIBCXX_DEFINE_STDEXCEPT_INSTANTIATIONS so that __cow_string >>>> definition >>>> >             in is skipped. >>>> >             [_GLIBCXX_USE_CXX11_ABI]: Skip Transaction Memory TS >>>> > definitions. >>>> >             * src/c++11/cow-string-inst.cc >>>> [_GLIBCXX_USE_CXX11_ABI]: >>>> > Skip definitions. >>>> >             * src/c++11/cow-string-io-inst.cc >>>> > [_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >>>> >             * src/c++11/cow-wstring-inst.cc >>>> [_GLIBCXX_USE_CXX11_ABI]: >>>> > Skip definitions. >>>> >             * src/c++11/cow-wstring-io-inst.cc >>>> > [_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >>>> >             * src/c++11/cxx11-hash_tr1.cc >>>> [!_GLIBCXX_USE_CXX11_ABI]: >>>> > Skip definitions. >>>> >             * src/c++11/cxx11-ios_failure.cc >>>> > [!_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >>>> >             [!_GLIBCXX_USE_DUAL_ABI] (__ios_failure): Remove. >>>> >             * src/c++11/cxx11-locale-inst.cc: Cleanup, just >>>> include >>>> > locale-inst.cc. >>>> >             * src/c++11/cxx11-stdexcept.cc >>>> [!_GLIBCXX_USE_CXX11_ABI]: >>>> > Skip definitions. >>>> >             * src/c++11/cxx11-wlocale-inst.cc >>>> > [!_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >>>> >             * src/c++11/locale-inst-numeric.h >>>> > [!_GLIBCXX_USE_DUAL_ABI](std::use_facet>, >>>> > std::use_facet>): Instantiate. >>>> > [!_GLIBCXX_USE_DUAL_ABI](std::has_facet>, >>>> > std::has_facet>): Instantiate. >>>> > [!_GLIBCXX_USE_DUAL_ABI](std::num_get>>> > istreambuf_iterator>): Instantiate. >>>> > [!_GLIBCXX_USE_DUAL_ABI](std::num_put>>> > ostreambuf_iterator>): Instantiate. >>>> >             * src/c++11/locale-inst.cc >>>> [!_GLIBCXX_USE_DUAL_ABI]: Build >>>> > only when configured >>>> >             _GLIBCXX_USE_CXX11_ABI is equal to currently >>>> built abi. >>>> > [!_GLIBCXX_USE_DUAL_ABI](__moneypunct_cache): >>>> > Instantiate. >>>> > [!_GLIBCXX_USE_DUAL_ABI](__moneypunct_cache): >>>> > Instantiate. >>>> > [!_GLIBCXX_USE_DUAL_ABI](__numpunct_cache): Instantiate. >>>> > [!_GLIBCXX_USE_DUAL_ABI](__timepunct): Instantiate. >>>> > [!_GLIBCXX_USE_DUAL_ABI](__timepunct_cache): Instantiate. >>>> > [!_GLIBCXX_USE_DUAL_ABI](time_put>>> > ostreambuf_iterator>): Instantiate. >>>> > [!_GLIBCXX_USE_DUAL_ABI](time_put_byname>>> > ostreambuf_iterator>): Instantiate. >>>> > [!_GLIBCXX_USE_DUAL_ABI](__ctype_abstract_base): Instantiate. >>>> > [!_GLIBCXX_USE_DUAL_ABI](ctype_byname): Instantiate. >>>> > [!_GLIBCXX_USE_DUAL_ABI](__codecvt_abstract_base>>> > mbstate_t>): Instantiate. >>>> > [!_GLIBCXX_USE_DUAL_ABI](codecvt_byname>>> > mbstate_t>): Instantiate. >>>> > [!_GLIBCXX_USE_DUAL_ABI](codecvt_byname>>> > mbstate_t>): Instantiate. >>>> > [!_GLIBCXX_USE_DUAL_ABI](use_facet>(const locale&)): >>>> > Instantiate. >>>> > [!_GLIBCXX_USE_DUAL_ABI](use_facet>>> > mbstate_t>>(const locale&)): Instantiate. >>>> > [!_GLIBCXX_USE_DUAL_ABI](use_facet<__timepunct>(const >>>> locale&)): >>>> > Instantiate. >>>> > [!_GLIBCXX_USE_DUAL_ABI](use_facet>(const locale&)): >>>> > Instantiate. >>>> > [!_GLIBCXX_USE_DUAL_ABI](has_facet>(const locale&)): >>>> > Instantiate. >>>> > [!_GLIBCXX_USE_DUAL_ABI](has_facet>>> > mbstate_t>>(const locale&)): Instantiate. >>>> > [!_GLIBCXX_USE_DUAL_ABI](has_facet<__timepunct>(const >>>> locale&)): >>>> > Instantiate. >>>> > [!_GLIBCXX_USE_DUAL_ABI](has_facet>(const locale&)): >>>> > Instantiate. >>>> > [!_GLIBCXX_USE_DUAL_ABI](__add_grouping): Define. >>>> > [!_GLIBCXX_USE_DUAL_ABI](__pad>): >>>> > Instantiate. >>>> > [!_GLIBCXX_USE_DUAL_ABI](__int_to_char(C*, unsigned long, >>>> > const C*, >>>> >             ios_base::fmtflags, bool)): Define. >>>> > [!_GLIBCXX_USE_DUAL_ABI](__int_to_char(C*, unsigned long >>>> > long, const C*, >>>> >             ios_base::fmtflags, bool)): Define. >>>> >             * src/c++11/string-inst.cc >>>> > (_GLIBCXX_DEFINING_CXX11_ABI_INSTANTIATIONS): Define following >>>> >             _GLIBCXX_USE_CXX11_ABI value. >>>> >             [_GLIBCXX_USE_CXX11_ABI && >>>> > !_GLIBCXX_DEFINING_CXX11_ABI_INSTANTIATIONS]: >>>> >             Define _GLIBCXX_DEFINING_COW_STRING_INSTANTIATIONS. >>>> > Include . >>>> >             Define basic_string as __std_cow_string for the >>>> current >>>> > translation unit. >>>> >             * src/c++11/wlocale-inst.cc >>>> [!_GLIBCXX_USE_CXX11_ABI]: >>>> > Skip definitions. >>>> >             * src/c++98/Makefile.am (cxx11_abi_sources): Remove, >>>> > unique cow-istream-string.cc entry >>>> >             move to... >>>> >             (inst_sources): ...this. >>>> >             * src/c++98/Makefile.in: Regenerate. >>>> >             * src/c++98/cow-istream-string.cc: Include >>>> > . >>>> >             [_GLIBCXX_USE_CXX11_ABI]: Skip definitions. >>>> >             * src/c++98/hash_tr1.cc [_GLIBCXX_USE_CXX11_ABI]: >>>> Skip >>>> > definitions. >>>> >             * src/c++98/ios_failure.cc >>>> > [_GLIBCXX_USE_CXX11_ABI][_GLIBCXX_USE_DUAL_ABI]: Skip >>>> definitions. >>>> >             * src/c++98/istream-string.cc >>>> [!_GLIBCXX_USE_DUAL_ABI]: >>>> > Build only when configured >>>> >             _GLIBCXX_USE_CXX11_ABI is equal to currently >>>> built abi. >>>> >             * src/c++98/locale_facets.cc >>>> > [_GLIBCXX_USE_CXX11_ABI](__verify_grouping): Remove. >>>> >             * src/c++98/stdexcept.cc >>>> > [_GLIBCXX_USE_CXX11_ABI](logic_error(const string&): Remove. >>>> > [_GLIBCXX_USE_CXX11_ABI](domain_error(const string&): Remove. >>>> > [_GLIBCXX_USE_CXX11_ABI](invalid_argument(const string&): >>>> > Remove. >>>> > [_GLIBCXX_USE_CXX11_ABI](length_error(const string&): Remove. >>>> > [_GLIBCXX_USE_CXX11_ABI](out_of_range(const string&): Remove. >>>> > [_GLIBCXX_USE_CXX11_ABI](runtime_error(const string&): >>>> > Remove. >>>> > [_GLIBCXX_USE_CXX11_ABI](range_error(const string&): Remove. >>>> > [_GLIBCXX_USE_CXX11_ABI](overflow_error(const string&): >>>> > Remove. >>>> > [_GLIBCXX_USE_CXX11_ABI](underflow_error(const string&): >>>> > Remove. >>>> > >>>> > Tested under linux x86_64 with following configs: >>>> > >>>> > --enable-symvers=gnu-versioned-namespace >>>> > >>>> > --disable-libstdcxx-dual-abi >>>> > >>>> > Ok to commit ? >>>> > >>>> > François >>>> > >>>> > >>>> --------------fDJsFZtOd0Xxj0PiXQ8NK0Ga-- --------------LAQKzI86sydkGqe26cTc4XWk Content-Type: text/x-patch; charset=UTF-8; name="cxx11_gnu-versioned-ns.patch" Content-Disposition: attachment; filename="cxx11_gnu-versioned-ns.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9hY2luY2x1ZGUubTQgYi9saWJz dGRjKystdjMvYWNpbmNsdWRlLm00CmluZGV4IGIyNTM3OGVhYWNlLi4zMjJm MWU0MjYxMSAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL2FjaW5jbHVkZS5t NAorKysgYi9saWJzdGRjKystdjMvYWNpbmNsdWRlLm00CkBAIC00ODc1LDEy ICs0ODc1LDE2IEBAIGRubAogQUNfREVGVU4oW0dMSUJDWFhfRU5BQkxFX0xJ QlNURENYWF9EVUFMX0FCSV0sIFsKICAgR0xJQkNYWF9FTkFCTEUobGlic3Rk Y3h4LWR1YWwtYWJpLCQxLCxbc3VwcG9ydCB0d28gdmVyc2lvbnMgb2Ygc3Rk OjpzdHJpbmddKQogICBpZiB0ZXN0IHgkZW5hYmxlX3N5bXZlcnMgPSB4Z251 LXZlcnNpb25lZC1uYW1lc3BhY2U7IHRoZW4KLSAgICAjIGdudS12ZXJzaW9u ZWQtbmFtZXNwYWNlIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBkdWFsIEFC SS4KLSAgICBlbmFibGVfbGlic3RkY3h4X2R1YWxfYWJpPSJubyIKLSAgZmkK LSAgaWYgdGVzdCB4IiRlbmFibGVfbGlic3RkY3h4X2R1YWxfYWJpIiAhPSB4 eWVzOyB0aGVuCisgICAgIyBnbnUtdmVyc2lvbmVkLW5hbWVzcGFjZSBpcyBp bmNvbXBhdGlibGUgd2l0aCB0aGUgZHVhbCBBQkkuLi4KICAgICBBQ19NU0df Tk9USUNFKFtkdWFsIEFCSSBpcyBkaXNhYmxlZF0pCi0gICAgZGVmYXVsdF9s aWJzdGRjeHhfYWJpPSJnY2M0LWNvbXBhdGlibGUiCisgICAgZW5hYmxlX2xp YnN0ZGN4eF9kdWFsX2FiaT0ibm8iCisgICAgIyAuLi4gYW5kIHVzZSB0aGUg Y3h4MTEgb25lLgorICAgIGRlZmF1bHRfbGlic3RkY3h4X2FiaT0ibmV3Igor ICBlbHNlCisgICAgaWYgdGVzdCB4IiRlbmFibGVfbGlic3RkY3h4X2R1YWxf YWJpIiAhPSB4eWVzOyB0aGVuCisgICAgICBBQ19NU0dfTk9USUNFKFtkdWFs IEFCSSBpcyBkaXNhYmxlZF0pCisgICAgICBkZWZhdWx0X2xpYnN0ZGN4eF9h Ymk9ImdjYzQtY29tcGF0aWJsZSIKKyAgICBmaQogICBmaQogICBHTElCQ1hY X0NPTkRJVElPTkFMKEVOQUJMRV9EVUFMX0FCSSwgdGVzdCAkZW5hYmxlX2xp YnN0ZGN4eF9kdWFsX2FiaSA9IHllcykKIF0pCmRpZmYgLS1naXQgYS9saWJz dGRjKystdjMvY29uZmlnL2xvY2FsZS9kcmFnb25mbHkvbW9uZXRhcnlfbWVt YmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2RyYWdvbmZs eS9tb25ldGFyeV9tZW1iZXJzLmNjCmluZGV4IGY1MzRiYmU0YWViLi4zZjk2 ZjJiOWYxMSAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2Nh bGUvZHJhZ29uZmx5L21vbmV0YXJ5X21lbWJlcnMuY2MKKysrIGIvbGlic3Rk YysrLXYzL2NvbmZpZy9sb2NhbGUvZHJhZ29uZmx5L21vbmV0YXJ5X21lbWJl cnMuY2MKQEAgLTM5LDcgKzM5LDcgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQ QUNFX1ZFUlNJT04KIAogLy8gVGhpcyBmaWxlIG1pZ2h0IGJlIGNvbXBpbGVk IHR3aWNlLCBidXQgd2Ugb25seSB3YW50IHRvIGRlZmluZSB0aGUgbWVtYmVy cwogLy8gb2YgbW9uZXlfYmFzZSBvbmNlLgotI2lmICEgX0dMSUJDWFhfVVNF X0NYWDExX0FCSQorI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSSB8fCAh IF9HTElCQ1hYX1VTRV9EVUFMX0FCSQogCiAgIC8vIENvbnN0cnVjdCBhbmQg cmV0dXJuIHZhbGlkIHBhdHRlcm4gY29uc2lzdGluZyBvZiBzb21lIGNvbWJp bmF0aW9uIG9mOgogICAvLyBzcGFjZSBub25lIHN5bWJvbCBzaWduIHZhbHVl CkBAIC0yMDcsNyArMjA3LDcgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNF X1ZFUlNJT04KICAgICAgIH0KICAgICByZXR1cm4gX19yZXQ7CiAgIH0KLSNl bmRpZgorI2VuZGlmIC8vICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSSB8fCAh IF9HTElCQ1hYX1VTRV9EVUFMX0FCSQogCiAgIHRlbXBsYXRlPD4KICAgICB2 b2lkCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS9n ZW5lcmljL21vbmV0YXJ5X21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29u ZmlnL2xvY2FsZS9nZW5lcmljL21vbmV0YXJ5X21lbWJlcnMuY2MKaW5kZXgg MmMxY2ZlZmYwOTQuLmExYWUxMzZiZTA0IDEwMDY0NAotLS0gYS9saWJzdGRj KystdjMvY29uZmlnL2xvY2FsZS9nZW5lcmljL21vbmV0YXJ5X21lbWJlcnMu Y2MKKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9t b25ldGFyeV9tZW1iZXJzLmNjCkBAIC0zNiw3ICszNiw3IEBAIF9HTElCQ1hY X0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAKIC8vIFRoaXMgZmlsZSBtaWdo dCBiZSBjb21waWxlZCB0d2ljZSwgYnV0IHdlIG9ubHkgd2FudCB0byBkZWZp bmUgdGhlIG1lbWJlcnMKIC8vIG9mIG1vbmV5X2Jhc2Ugb25jZS4KLSNpZiAh IF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKKyNpZiAhIF9HTElCQ1hYX1VTRV9D WFgxMV9BQkkgfHwgISBfR0xJQkNYWF9VU0VfRFVBTF9BQkkKIAogICAvLyBD b25zdHJ1Y3QgYW5kIHJldHVybiB2YWxpZCBwYXR0ZXJuIGNvbnNpc3Rpbmcg b2Ygc29tZSBjb21iaW5hdGlvbiBvZjoKICAgLy8gc3BhY2Ugbm9uZSBzeW1i b2wgc2lnbiB2YWx1ZQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZp Zy9sb2NhbGUvZ251L21vbmV0YXJ5X21lbWJlcnMuY2MgYi9saWJzdGRjKyst djMvY29uZmlnL2xvY2FsZS9nbnUvbW9uZXRhcnlfbWVtYmVycy5jYwppbmRl eCAxZjQ2ZWEyZjUzZi4uODc1NjFiY2M4MjEgMTAwNjQ0Ci0tLSBhL2xpYnN0 ZGMrKy12My9jb25maWcvbG9jYWxlL2dudS9tb25ldGFyeV9tZW1iZXJzLmNj CisrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2dudS9tb25ldGFy eV9tZW1iZXJzLmNjCkBAIC0zNyw3ICszNyw3IEBAIF9HTElCQ1hYX0JFR0lO X05BTUVTUEFDRV9WRVJTSU9OCiAKIC8vIFRoaXMgZmlsZSBtaWdodCBiZSBj b21waWxlZCB0d2ljZSwgYnV0IHdlIG9ubHkgd2FudCB0byBkZWZpbmUgdGhl IG1lbWJlcnMKIC8vIG9mIG1vbmV5X2Jhc2Ugb25jZS4KLSNpZiAhIF9HTElC Q1hYX1VTRV9DWFgxMV9BQkkKKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9B QkkgfHwgISBfR0xJQkNYWF9VU0VfRFVBTF9BQkkKIAogICAvLyBDb25zdHJ1 Y3QgYW5kIHJldHVybiB2YWxpZCBwYXR0ZXJuIGNvbnNpc3Rpbmcgb2Ygc29t ZSBjb21iaW5hdGlvbiBvZjoKICAgLy8gc3BhY2Ugbm9uZSBzeW1ib2wgc2ln biB2YWx1ZQpAQCAtMjA1LDcgKzIwNSw3IEBAIF9HTElCQ1hYX0JFR0lOX05B TUVTUEFDRV9WRVJTSU9OCiAgICAgICB9CiAgICAgcmV0dXJuIF9fcmV0Owog ICB9Ci0jZW5kaWYKKyNlbmRpZiAvLyAhIF9HTElCQ1hYX1VTRV9DWFgxMV9B QkkgfHwgISBfR0xJQkNYWF9VU0VfRFVBTF9BQkkKIAogICBleHRlcm4gY2hh ciBfX25hcnJvd19tdWx0aWJ5dGVfY2hhcnMoY29uc3QgY2hhciogcywgX19s b2NhbGVfdCBjbG9jKTsKIApkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2Nv bmZpZy9sb2NhbGUvZ251L251bWVyaWNfbWVtYmVycy5jYyBiL2xpYnN0ZGMr Ky12My9jb25maWcvbG9jYWxlL2dudS9udW1lcmljX21lbWJlcnMuY2MKaW5k ZXggMjIwYTBmOGM1MTAuLmNiODA5NWU2YWM3IDEwMDY0NAotLS0gYS9saWJz dGRjKystdjMvY29uZmlnL2xvY2FsZS9nbnUvbnVtZXJpY19tZW1iZXJzLmNj CisrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2dudS9udW1lcmlj X21lbWJlcnMuY2MKQEAgLTM5LDcgKzM5LDcgQEAgX0dMSUJDWFhfQkVHSU5f TkFNRVNQQUNFX1ZFUlNJT04KICAgZXh0ZXJuIGNoYXIgX19uYXJyb3dfbXVs dGlieXRlX2NoYXJzKGNvbnN0IGNoYXIqIHMsIF9fbG9jYWxlX3QgY2xvYyk7 CiAKIC8vIFRoaXMgZmlsZSBtaWdodCBiZSBjb21waWxlZCB0d2ljZSwgYnV0 IHdlIG9ubHkgd2FudCB0byBkZWZpbmUgdGhpcyBvbmNlLgotI2lmICEgX0dM SUJDWFhfVVNFX0NYWDExX0FCSQorI2lmICEgX0dMSUJDWFhfVVNFX0NYWDEx X0FCSSB8fCAhIF9HTElCQ1hYX1VTRV9EVUFMX0FCSQogICBjaGFyCiAgIF9f bmFycm93X211bHRpYnl0ZV9jaGFycyhjb25zdCBjaGFyKiBzLCBfX2xvY2Fs ZV90IGNsb2MpCiAgIHsKQEAgLTg0LDcgKzg0LDcgQEAgX0dMSUJDWFhfQkVH SU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgICAgIH0KICAgICByZXR1cm4gJ1ww JzsKICAgfQotI2VuZGlmCisjZW5kaWYgLy8gISBfR0xJQkNYWF9VU0VfQ1hY MTFfQUJJIHx8ICEgX0dMSUJDWFhfVVNFX0RVQUxfQUJJCiAKICAgdGVtcGxh dGU8PgogICAgIHZvaWQKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25m aWd1cmUgYi9saWJzdGRjKystdjMvY29uZmlndXJlCmluZGV4IGM0ZGE1NmMz MDQyLi5mZDQzMWYyODU0NyAxMDA3NTUKLS0tIGEvbGlic3RkYysrLXYzL2Nv bmZpZ3VyZQorKysgYi9saWJzdGRjKystdjMvY29uZmlndXJlCkBAIC03MDcw MiwxMyArNzA3MDIsMTggQEAgZmkKIAogCiAgIGlmIHRlc3QgeCRlbmFibGVf c3ltdmVycyA9IHhnbnUtdmVyc2lvbmVkLW5hbWVzcGFjZTsgdGhlbgotICAg ICMgZ251LXZlcnNpb25lZC1uYW1lc3BhY2UgaXMgaW5jb21wYXRpYmxlIHdp dGggdGhlIGR1YWwgQUJJLgotICAgIGVuYWJsZV9saWJzdGRjeHhfZHVhbF9h Ymk9Im5vIgotICBmaQotICBpZiB0ZXN0IHgiJGVuYWJsZV9saWJzdGRjeHhf ZHVhbF9hYmkiICE9IHh5ZXM7IHRoZW4KKyAgICAjIGdudS12ZXJzaW9uZWQt bmFtZXNwYWNlIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBkdWFsIEFCSS4u LgogICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogZHVhbCBBQkkgaXMgZGlzYWJsZWQiID4mNQogJGFzX2VjaG8gIiRhc19t ZTogZHVhbCBBQkkgaXMgZGlzYWJsZWQiID4mNjt9Ci0gICAgZGVmYXVsdF9s aWJzdGRjeHhfYWJpPSJnY2M0LWNvbXBhdGlibGUiCisgICAgZW5hYmxlX2xp YnN0ZGN4eF9kdWFsX2FiaT0ibm8iCisgICAgIyAuLi4gYW5kIHVzZSB0aGUg Y3h4MTEgb25lLgorICAgIGRlZmF1bHRfbGlic3RkY3h4X2FiaT0ibmV3Igor ICBlbHNlCisgICAgaWYgdGVzdCB4IiRlbmFibGVfbGlic3RkY3h4X2R1YWxf YWJpIiAhPSB4eWVzOyB0aGVuCisgICAgICB7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IGR1YWwgQUJJIGlzIGRpc2FibGVkIiA+ JjUKKyRhc19lY2hvICIkYXNfbWU6IGR1YWwgQUJJIGlzIGRpc2FibGVkIiA+ JjY7fQorICAgICAgZGVmYXVsdF9saWJzdGRjeHhfYWJpPSJnY2M0LWNvbXBh dGlibGUiCisgICAgZmkKICAgZmkKIAogCmRpZmYgLS1naXQgYS9saWJzdGRj KystdjMvaW5jbHVkZS9iaXRzL2MrK2NvbmZpZyBiL2xpYnN0ZGMrKy12My9p bmNsdWRlL2JpdHMvYysrY29uZmlnCmluZGV4IGE5MTdmYjU4MjI1Li5mNDNm ZDliMjI3NiAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0 cy9jKytjb25maWcKKysrIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9j Kytjb25maWcKQEAgLTMzNywyNiArMzM3LDYgQEAgbmFtZXNwYWNlIHN0ZAog I2RlZmluZSBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAjZW5kaWYKIAotI2lm IF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKLW5hbWVzcGFjZSBzdGQKLXsKLSAg aW5saW5lIG5hbWVzcGFjZSBfX2N4eDExIF9fYXR0cmlidXRlX18oKF9fYWJp X3RhZ19fICgiY3h4MTEiKSkpIHsgfQotfQotbmFtZXNwYWNlIF9fZ251X2N4 eAotewotICBpbmxpbmUgbmFtZXNwYWNlIF9fY3h4MTEgX19hdHRyaWJ1dGVf XygoX19hYmlfdGFnX18gKCJjeHgxMSIpKSkgeyB9Ci19Ci0jIGRlZmluZSBf R0xJQkNYWF9OQU1FU1BBQ0VfQ1hYMTEgX19jeHgxMTo6Ci0jIGRlZmluZSBf R0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfQ1hYMTEgbmFtZXNwYWNlIF9fY3h4 MTEgewotIyBkZWZpbmUgX0dMSUJDWFhfRU5EX05BTUVTUEFDRV9DWFgxMSB9 Ci0jIGRlZmluZSBfR0xJQkNYWF9ERUZBVUxUX0FCSV9UQUcgX0dMSUJDWFhf QUJJX1RBR19DWFgxMQotI2Vsc2UKLSMgZGVmaW5lIF9HTElCQ1hYX05BTUVT UEFDRV9DWFgxMQotIyBkZWZpbmUgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNF X0NYWDExCi0jIGRlZmluZSBfR0xJQkNYWF9FTkRfTkFNRVNQQUNFX0NYWDEx Ci0jIGRlZmluZSBfR0xJQkNYWF9ERUZBVUxUX0FCSV9UQUcKLSNlbmRpZgot CiAvLyBOb24temVybyBpZiBpbmxpbmUgbmFtZXNwYWNlcyBhcmUgdXNlZCBm b3IgdmVyc2lvbmluZyB0aGUgZW50aXJlIGxpYnJhcnkuCiAjZGVmaW5lIF9H TElCQ1hYX0lOTElORV9WRVJTSU9OIAogCkBAIC00MTUsNyArMzk1LDcgQEAg X0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgLy8gTm9uLWlu bGluZSBuYW1lc3BhY2UgZm9yIGNvbXBvbmVudHMgcmVwbGFjZWQgYnkgYWx0 ZXJuYXRlcyBpbiBhY3RpdmUgbW9kZS4KICAgbmFtZXNwYWNlIF9fY3h4MTk5 OAogICB7Ci0jIGlmIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKKyMgaWYgX0dM SUJDWFhfVVNFX0NYWDExX0FCSSAmJiAhIF9HTElCQ1hYX0lOTElORV9WRVJT SU9OCiAgIGlubGluZSBuYW1lc3BhY2UgX19jeHgxMSBfX2F0dHJpYnV0ZV9f KChfX2FiaV90YWdfXyAoImN4eDExIikpKSB7IH0KICMgZW5kaWYKICAgfQpA QCAtNDQ1LDYgKzQyNSwyNiBAQCBfR0xJQkNYWF9FTkRfTkFNRVNQQUNFX1ZF UlNJT04KICMgZW5kaWYKICNlbmRpZgogCisjaWYgX0dMSUJDWFhfVVNFX0NY WDExX0FCSSAmJiAhIF9HTElCQ1hYX0lOTElORV9WRVJTSU9OCituYW1lc3Bh Y2Ugc3RkCit7CisgIGlubGluZSBuYW1lc3BhY2UgX19jeHgxMSBfX2F0dHJp YnV0ZV9fKChfX2FiaV90YWdfXyAoImN4eDExIikpKSB7IH0KK30KK25hbWVz cGFjZSBfX2dudV9jeHgKK3sKKyAgaW5saW5lIG5hbWVzcGFjZSBfX2N4eDEx IF9fYXR0cmlidXRlX18oKF9fYWJpX3RhZ19fICgiY3h4MTEiKSkpIHsgfQor fQorIyBkZWZpbmUgX0dMSUJDWFhfTkFNRVNQQUNFX0NYWDExIF9fY3h4MTE6 OgorIyBkZWZpbmUgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX0NYWDExIG5h bWVzcGFjZSBfX2N4eDExIHsKKyMgZGVmaW5lIF9HTElCQ1hYX0VORF9OQU1F U1BBQ0VfQ1hYMTEgfQorIyBkZWZpbmUgX0dMSUJDWFhfREVGQVVMVF9BQklf VEFHIF9HTElCQ1hYX0FCSV9UQUdfQ1hYMTEKKyNlbHNlCisjIGRlZmluZSBf R0xJQkNYWF9OQU1FU1BBQ0VfQ1hYMTEKKyMgZGVmaW5lIF9HTElCQ1hYX0JF R0lOX05BTUVTUEFDRV9DWFgxMQorIyBkZWZpbmUgX0dMSUJDWFhfRU5EX05B TUVTUEFDRV9DWFgxMQorIyBkZWZpbmUgX0dMSUJDWFhfREVGQVVMVF9BQklf VEFHCisjZW5kaWYKKwogLy8gTWFjcm9zIGZvciBuYW1lc3BhY2Ugc2NvcGUu IEVpdGhlciBuYW1lc3BhY2Ugc3RkOjogb3IgdGhlIG5hbWUKIC8vIG9mIHNv bWUgbmVzdGVkIG5hbWVzcGFjZSB3aXRoaW4gaXQgY29ycmVzcG9uZGluZyB0 byB0aGUgYWN0aXZlIG1vZGUuCiAvLyBfR0xJQkNYWF9TVERfQQpkaWZmIC0t Z2l0IGEvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9jb3dfc3RyaW5nLmgg Yi9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL2Nvd19zdHJpbmcuaAppbmRl eCA1NDExZGZlMzJhOS4uNzAyZDU5ZmFlZmUgMTAwNjQ0Ci0tLSBhL2xpYnN0 ZGMrKy12My9pbmNsdWRlL2JpdHMvY293X3N0cmluZy5oCisrKyBiL2xpYnN0 ZGMrKy12My9pbmNsdWRlL2JpdHMvY293X3N0cmluZy5oCkBAIC0zMiwxMyAr MzIsMTUgQEAKICNpZm5kZWYgX0NPV19TVFJJTkdfSAogI2RlZmluZSBfQ09X X1NUUklOR19IIDEKIAotI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQot CiAjaW5jbHVkZSA8ZXh0L2F0b21pY2l0eS5oPiAvLyBfQXRvbWljX3dvcmQs IF9faXNfc2luZ2xlX3RocmVhZGVkCiAKICNkZWZpbmUgX19nbGliY3h4X3dh bnRfY29uc3RleHByX3N0cmluZwogI2luY2x1ZGUgPGJpdHMvdmVyc2lvbi5o PgogCisjaWYgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQorIyBkZWZpbmUgYmFz aWNfc3RyaW5nIF9fc3RkX2Nvd19zdHJpbmcKKyNlbmRpZgorCiBuYW1lc3Bh Y2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKIHsKIF9HTElC Q1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCkBAIC04MzAsNiArODMyLDcg QEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgICAgIGVu ZCgpIGNvbnN0IF9HTElCQ1hYX05PRVhDRVBUCiAgICAgICB7IHJldHVybiBj b25zdF9pdGVyYXRvcihfTV9kYXRhKCkgKyB0aGlzLT5zaXplKCkpOyB9CiAK KyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKICAgICAgIC8qKgogICAg ICAgICogIFJldHVybnMgYSByZWFkL3dyaXRlIHJldmVyc2UgaXRlcmF0b3Ig dGhhdCBwb2ludHMgdG8gdGhlIGxhc3QKICAgICAgICAqICBjaGFyYWN0ZXIg aW4gdGhlICVzdHJpbmcuICBJdGVyYXRpb24gaXMgZG9uZSBpbiByZXZlcnNl IGVsZW1lbnQKQEAgLTkwMSw2ICs5MDQsNyBAQCBfR0xJQkNYWF9CRUdJTl9O QU1FU1BBQ0VfVkVSU0lPTgogICAgICAgY3JlbmQoKSBjb25zdCBub2V4Y2Vw dAogICAgICAgeyByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcih0aGlz LT5iZWdpbigpKTsgfQogI2VuZGlmCisjZW5kaWYgLy8gISBfR0xJQkNYWF9V U0VfQ1hYMTFfQUJJCiAKICAgICBwdWJsaWM6CiAgICAgICAvLyBDYXBhY2l0 eToKQEAgLTkyOCw2ICs5MzIsNyBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BB Q0VfVkVSU0lPTgogICAgICAgbWF4X3NpemUoKSBjb25zdCBfR0xJQkNYWF9O T0VYQ0VQVAogICAgICAgeyByZXR1cm4gX1JlcDo6X1NfbWF4X3NpemU7IH0K IAorI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQogICAgICAgLyoqCiAg ICAgICAgKiAgQGJyaWVmICBSZXNpemVzIHRoZSAlc3RyaW5nIHRvIHRoZSBz cGVjaWZpZWQgbnVtYmVyIG9mIGNoYXJhY3RlcnMuCiAgICAgICAgKiAgQHBh cmFtICBfX24gIE51bWJlciBvZiBjaGFyYWN0ZXJzIHRoZSAlc3RyaW5nIHNo b3VsZCBjb250YWluLgpAQCAtMTAwNyw2ICsxMDEyLDcgQEAgX0dMSUJDWFhf QkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KIAlfX3Jlc2l6ZV9hbmRfb3Zlcndy aXRlKHNpemVfdHlwZSBfX24sIF9PcGVyYXRpb24gX19vcCk7CiAjZW5kaWYK IAorI2VuZGlmIC8vICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQogICAgICAg LyoqCiAgICAgICAgKiAgUmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGNo YXJhY3RlcnMgdGhhdCB0aGUgJXN0cmluZyBjYW4gaG9sZAogICAgICAgICog IGJlZm9yZSBuZWVkaW5nIHRvIGFsbG9jYXRlIG1vcmUgbWVtb3J5LgpAQCAt MTAxNSw2ICsxMDIxLDcgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZF UlNJT04KICAgICAgIGNhcGFjaXR5KCkgY29uc3QgX0dMSUJDWFhfTk9FWENF UFQKICAgICAgIHsgcmV0dXJuIF9NX3JlcCgpLT5fTV9jYXBhY2l0eTsgfQog CisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAgICAgICAvKioKICAg ICAgICAqICBAYnJpZWYgIEF0dGVtcHQgdG8gcHJlYWxsb2NhdGUgZW5vdWdo IG1lbW9yeSBmb3Igc3BlY2lmaWVkIG51bWJlciBvZgogICAgICAgICogICAg ICAgICAgY2hhcmFjdGVycy4KQEAgLTEwNjMsNiArMTA3MCw3IEBAIF9HTElC Q1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgICAgICBjbGVhcigpCiAg ICAgICB7IF9NX211dGF0ZSgwLCB0aGlzLT5zaXplKCksIDApOyB9CiAjZW5k aWYKKyNlbmRpZiAvLyAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKIAogICAg ICAgLyoqCiAgICAgICAgKiAgUmV0dXJucyB0cnVlIGlmIHRoZSAlc3RyaW5n IGlzIGVtcHR5LiAgRXF1aXZhbGVudCB0bwpAQCAtMTA3Miw2ICsxMDgwLDcg QEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgICAgIGVt cHR5KCkgY29uc3QgX0dMSUJDWFhfTk9FWENFUFQKICAgICAgIHsgcmV0dXJu IHRoaXMtPnNpemUoKSA9PSAwOyB9CiAKKyNpZiAhIF9HTElCQ1hYX1VTRV9D WFgxMV9BQkkKICAgICAgIC8vIEVsZW1lbnQgYWNjZXNzOgogICAgICAgLyoq CiAgICAgICAgKiAgQGJyaWVmICBTdWJzY3JpcHQgYWNjZXNzIHRvIHRoZSBk YXRhIGNvbnRhaW5lZCBpbiB0aGUgJXN0cmluZy4KQEAgLTEzODIsNiArMTM5 MSw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAJdHJh aXRzX3R5cGU6OmFzc2lnbihfTV9kYXRhKClbdGhpcy0+c2l6ZSgpXSwgX19j KTsKIAlfTV9yZXAoKS0+X01fc2V0X2xlbmd0aF9hbmRfc2hhcmFibGUoX19s ZW4pOwogICAgICAgfQorI2VuZGlmIC8vICEgX0dMSUJDWFhfVVNFX0NYWDEx X0FCSQogCiAgICAgICAvKioKICAgICAgICAqICBAYnJpZWYgIFNldCB2YWx1 ZSB0byBjb250ZW50cyBvZiBhbm90aGVyIHN0cmluZy4KQEAgLTE1MjYsNiAr MTUzNiw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAJ fQogI2VuZGlmIC8vIEMrKzE3CiAKKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgx MV9BQkkKICAgICAgIC8qKgogICAgICAgICogIEBicmllZiAgSW5zZXJ0IG11 bHRpcGxlIGNoYXJhY3RlcnMuCiAgICAgICAgKiAgQHBhcmFtIF9fcCAgSXRl cmF0b3IgcmVmZXJlbmNpbmcgbG9jYXRpb24gaW4gc3RyaW5nIHRvIGluc2Vy dCBhdC4KQEAgLTIxNDQsNiArMjE1NSw3IEBAIF9HTElCQ1hYX0JFR0lOX05B TUVTUEFDRV9WRVJTSU9OCiAJICByZXR1cm4gdGhpcy0+cmVwbGFjZShfX2kx IC0gYmVnaW4oKSwgX19pMiAtIF9faTEsIF9fc3YpOwogCX0KICNlbmRpZiAv LyBDKysxNworI2VuZGlmIC8vICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQog CiAgICAgcHJpdmF0ZToKICAgICAgIHRlbXBsYXRlPGNsYXNzIF9JbnRlZ2Vy PgpAQCAtMjIxNSw2ICsyMjI3LDcgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQ QUNFX1ZFUlNJT04KIAogICAgIHB1YmxpYzoKIAorI2lmICEgX0dMSUJDWFhf VVNFX0NYWDExX0FCSQogICAgICAgLyoqCiAgICAgICAgKiAgQGJyaWVmICBD b3B5IHN1YnN0cmluZyBpbnRvIEMgc3RyaW5nLgogICAgICAgICogIEBwYXJh bSBfX3MgIEMgc3RyaW5nIHRvIGNvcHkgdmFsdWUgaW50by4KQEAgLTIyMjks NiArMjI0Miw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9O CiAgICAgICAqLwogICAgICAgc2l6ZV90eXBlCiAgICAgICBjb3B5KF9DaGFy VCogX19zLCBzaXplX3R5cGUgX19uLCBzaXplX3R5cGUgX19wb3MgPSAwKSBj b25zdDsKKyNlbmRpZgogCiAgICAgICAvKioKICAgICAgICAqICBAYnJpZWYg IFN3YXAgY29udGVudHMgd2l0aCBhbm90aGVyIHN0cmluZy4KQEAgLTIyODYs NiArMjMwMCw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9O CiAgICAgICBnZXRfYWxsb2NhdG9yKCkgY29uc3QgX0dMSUJDWFhfTk9FWENF UFQKICAgICAgIHsgcmV0dXJuIF9NX2RhdGFwbHVzOyB9CiAKKyNpZiAhIF9H TElCQ1hYX1VTRV9DWFgxMV9BQkkKICAgICAgIC8qKgogICAgICAgICogIEBi cmllZiAgRmluZCBwb3NpdGlvbiBvZiBhIEMgc3Vic3RyaW5nLgogICAgICAg ICogIEBwYXJhbSBfX3MgIEMgc3RyaW5nIHRvIGxvY2F0ZS4KQEAgLTMwOTEs NiArMzEwNiw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9O CiAgICAgICBjb250YWlucyhjb25zdCBfQ2hhclQqIF9feCkgY29uc3Qgbm9l eGNlcHQKICAgICAgIHsgcmV0dXJuIF9fc3ZfdHlwZSh0aGlzLT5kYXRhKCks IHRoaXMtPnNpemUoKSkuY29udGFpbnMoX194KTsgfQogI2VuZGlmIC8vIEMr KzIzCisjZW5kaWYgLy8gISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAKICMg aWZkZWYgX0dMSUJDWFhfVE1fVFNfSU5URVJOQUwKICAgICAgIGZyaWVuZCB2 b2lkCkBAIC0zMjk0LDYgKzMzMTAsNyBAQCBfR0xJQkNYWF9CRUdJTl9OQU1F U1BBQ0VfVkVSU0lPTgogCX0KICAgICAgfQogCisjaWYgISBfR0xJQkNYWF9V U0VfQ1hYMTFfQUJJCiAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlw ZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgIGJhc2ljX3N0 cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mCiAgICAgYmFzaWNfc3Ry aW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CkBAIC0zNDU3LDYgKzM0 NzQsNyBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogCSAg IHJldHVybiBfTV9yZXBsYWNlX3NhZmUoX19wb3MsIF9fbjEsIF9fdG1wLl9N X2RhdGEoKSwgX19uMik7CiAJIH0KICAgICAgfQorI2VuZGlmIC8vICEgX0dM SUJDWFhfVVNFX0NYWDExX0FCSQogCiAgIHRlbXBsYXRlPHR5cGVuYW1lIF9D aGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAg IHZvaWQKQEAgLTM1MTgsNiArMzUzNiw3IEBAIF9HTElCQ1hYX0JFR0lOX05B TUVTUEFDRV9WRVJTSU9OCiAgICAgICBfTV9yZXAoKS0+X01fc2V0X2xlbmd0 aF9hbmRfc2hhcmFibGUoX19uZXdfc2l6ZSk7CiAgICAgfQogCisjaWYgISBf R0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAgIHRlbXBsYXRlPHR5cGVuYW1lIF9D aGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAg IHZvaWQKICAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxs b2M+OjoKQEAgLTM1NDMsNiArMzU2Miw3IEBAIF9HTElCQ1hYX0JFR0lOX05B TUVTUEFDRV9WRVJTSU9OCiAgICAgICBfTV9yZXAoKS0+X01fZGlzcG9zZShf X2EpOwogICAgICAgX01fZGF0YShfX3RtcCk7CiAgICAgfQorI2VuZGlmCiAK ICAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRz LCB0eXBlbmFtZSBfQWxsb2M+CiAgICAgdm9pZApAQCAtMzY2Niw2ICszNjg2 LDcgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgICAg IHJldHVybiBfX3ItPl9NX3JlZmRhdGEoKTsKICAgICB9CiAKKyNpZiAhIF9H TElCQ1hYX1VTRV9DWFgxMV9BQkkKICAgdGVtcGxhdGU8dHlwZW5hbWUgX0No YXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICAg dm9pZAogICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxv Yz46OgpAQCAtMzY3OSw2ICszNzAwLDcgQEAgX0dMSUJDWFhfQkVHSU5fTkFN RVNQQUNFX1ZFUlNJT04KIAl0aGlzLT5lcmFzZShfX24pOwogICAgICAgLy8g ZWxzZSBub3RoaW5nIChpbiBwYXJ0aWN1bGFyLCBhdm9pZCBjYWxsaW5nIF9N X211dGF0ZSgpIHVubmVjZXNzYXJpbHkuKQogICAgIH0KKyNlbmRpZgogCiAg IHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywg dHlwZW5hbWUgX0FsbG9jPgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1 dEl0ZXJhdG9yPgpAQCAtMzcxOSw2ICszNzQxLDcgQEAgX0dMSUJDWFhfQkVH SU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgICAgIHJldHVybiAqdGhpczsKICAg ICB9CiAKKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKICAgdGVtcGxh dGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFt ZSBfQWxsb2M+CiAgICAgdm9pZAogICAgIGJhc2ljX3N0cmluZzxfQ2hhclQs IF9UcmFpdHMsIF9BbGxvYz46OgpAQCAtMzgwMCw4ICszODIzLDExIEBAIF9H TElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgICAgfQogI2VuZGlm IC8vIEMrKzExCiAKLQorI2VuZGlmIC8vICEgX0dMSUJDWFhfVVNFX0NYWDEx X0FCSQogX0dMSUJDWFhfRU5EX05BTUVTUEFDRV9WRVJTSU9OCiB9IC8vIG5h bWVzcGFjZSBzdGQKLSNlbmRpZiAgLy8gISBfR0xJQkNYWF9VU0VfQ1hYMTFf QUJJCisKKyNpZiBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCisjIHVuZGVmIGJh c2ljX3N0cmluZworI2VuZGlmCiAjZW5kaWYgIC8vIF9DT1dfU1RSSU5HX0gK ZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL3N0ZC9zdGRleGNl cHQgYi9saWJzdGRjKystdjMvaW5jbHVkZS9zdGQvc3RkZXhjZXB0CmluZGV4 IDY2Yzg1NzJkMGNkLi4zMzMwNjUwODY5NSAxMDA2NDQKLS0tIGEvbGlic3Rk YysrLXYzL2luY2x1ZGUvc3RkL3N0ZGV4Y2VwdAorKysgYi9saWJzdGRjKyst djMvaW5jbHVkZS9zdGQvc3RkZXhjZXB0CkBAIC00Miw4ICs0Miw4IEBAIG5h bWVzcGFjZSBzdGQgX0dMSUJDWFhfVklTSUJJTElUWShkZWZhdWx0KQogewog X0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KIAotI2lmIF9HTElC Q1hYX1VTRV9EVUFMX0FCSQotI2lmIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkK KyNpZiBfR0xJQkNYWF9VU0VfRFVBTF9BQkkgfHwgX0dMSUJDWFhfVVNFX0NY WDExX0FCSQorI2lmICEgX0dMSUJDWFhfREVGSU5FX1NUREVYQ0VQVF9JTlNU QU5USUFUSU9OUwogICAvLyBFbXVsYXRlcyBhbiBvbGQgQ09XIHN0cmluZyB3 aGVuIHRoZSBuZXcgc3RkOjpzdHJpbmcgaXMgaW4gdXNlLgogICBzdHJ1Y3Qg X19jb3dfc3RyaW5nCiAgIHsKQEAgLTU0LDYgKzU0LDcgQEAgX0dMSUJDWFhf QkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KIAogICAgIF9fY293X3N0cmluZygp OwogICAgIF9fY293X3N0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYpOworICAg IF9fY293X3N0cmluZyhjb25zdCBjaGFyKik7CiAgICAgX19jb3dfc3RyaW5n KGNvbnN0IGNoYXIqLCBzaXplX3QpOwogICAgIF9fY293X3N0cmluZyhjb25z dCBfX2Nvd19zdHJpbmcmKSBfR0xJQkNYWF9OT1RIUk9XOwogICAgIF9fY293 X3N0cmluZyYgb3BlcmF0b3I9KGNvbnN0IF9fY293X3N0cmluZyYpIF9HTElC Q1hYX05PVEhST1c7CkBAIC02MiwxMiArNjMsMTQgQEAgX0dMSUJDWFhfQkVH SU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgICBfX2Nvd19zdHJpbmcoX19jb3df c3RyaW5nJiYpIG5vZXhjZXB0OwogICAgIF9fY293X3N0cmluZyYgb3BlcmF0 b3I9KF9fY293X3N0cmluZyYmKSBub2V4Y2VwdDsKICNlbmRpZgorICAgIGNv bnN0IGNoYXIqIGNfc3RyKCkgY29uc3QgX0dMSUJDWFhfTk9FWENFUFQ7CiAg IH07Ci0KLSAgdHlwZWRlZiBiYXNpY19zdHJpbmc8Y2hhcj4gX19zc29fc3Ry aW5nOwotI2Vsc2UgLy8gX0dMSUJDWFhfVVNFX0NYWDExX0FCSQorI2VuZGlm IC8vICEgX0dMSUJDWFhfREVGSU5FX1NUREVYQ0VQVF9JTlNUQU5USUFUSU9O UworI2Vsc2UKICAgdHlwZWRlZiBiYXNpY19zdHJpbmc8Y2hhcj4gX19jb3df c3RyaW5nOworI2VuZGlmCiAKKyNpZiBfR0xJQkNYWF9VU0VfRFVBTF9BQkkg JiYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAgIC8vIEVtdWxhdGVzIGEg bmV3IFNTTyBzdHJpbmcgd2hlbiB0aGUgb2xkIHN0ZDo6c3RyaW5nIGlzIGlu IHVzZS4KICAgc3RydWN0IF9fc3NvX3N0cmluZwogICB7CkBAIC05NCwxMCAr OTcsOCBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogICAg IF9fc3NvX3N0cmluZyYgb3BlcmF0b3I9KF9fc3NvX3N0cmluZyYmKSBub2V4 Y2VwdDsKICNlbmRpZgogICB9OwotI2VuZGlmIC8vIF9HTElCQ1hYX1VTRV9D WFgxMV9BQkkKLSNlbHNlICAvLyBfR0xJQkNYWF9VU0VfRFVBTF9BQkkKKyNl bHNlCiAgIHR5cGVkZWYgYmFzaWNfc3RyaW5nPGNoYXI+IF9fc3NvX3N0cmlu ZzsKLSAgdHlwZWRlZiBiYXNpY19zdHJpbmc8Y2hhcj4gX19jb3dfc3RyaW5n OwogI2VuZGlmCiAKICAgLyoqCkBAIC0xMjcsNyArMTI4LDcgQEAgX0dMSUJD WFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgICBsb2dpY19lcnJvciYg b3BlcmF0b3I9KGxvZ2ljX2Vycm9yJiYpIG5vZXhjZXB0OwogI2VuZGlmCiAK LSNpZiBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIHx8IF9HTElCQ1hYX0RFRklO RV9TVERFWENFUFRfQ09QWV9PUFMKKyNpZiBfR0xJQkNYWF9VU0VfQ1hYMTFf QUJJIHx8IF9HTElCQ1hYX0RFRklORV9TVERFWENFUFRfSU5TVEFOVElBVElP TlMKICAgICBsb2dpY19lcnJvcihjb25zdCBsb2dpY19lcnJvciYpIF9HTElC Q1hYX05PVEhST1c7CiAgICAgbG9naWNfZXJyb3ImIG9wZXJhdG9yPShjb25z dCBsb2dpY19lcnJvciYpIF9HTElCQ1hYX05PVEhST1c7CiAjZWxpZiBfX2Nw bHVzcGx1cyA+PSAyMDExMDNMCkBAIC0yMzMsNyArMjM0LDcgQEAgX0dMSUJD WFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgICBydW50aW1lX2Vycm9y JiBvcGVyYXRvcj0ocnVudGltZV9lcnJvciYmKSBub2V4Y2VwdDsKICNlbmRp ZgogCi0jaWYgX0dMSUJDWFhfVVNFX0NYWDExX0FCSSB8fCBfR0xJQkNYWF9E RUZJTkVfU1RERVhDRVBUX0NPUFlfT1BTCisjaWYgX0dMSUJDWFhfVVNFX0NY WDExX0FCSSB8fCBfR0xJQkNYWF9ERUZJTkVfU1RERVhDRVBUX0lOU1RBTlRJ QVRJT05TCiAgICAgcnVudGltZV9lcnJvcihjb25zdCBydW50aW1lX2Vycm9y JikgX0dMSUJDWFhfTk9USFJPVzsKICAgICBydW50aW1lX2Vycm9yJiBvcGVy YXRvcj0oY29uc3QgcnVudGltZV9lcnJvciYpIF9HTElCQ1hYX05PVEhST1c7 CiAjZWxpZiBfX2NwbHVzcGx1cyA+PSAyMDExMDNMCmRpZmYgLS1naXQgYS9s aWJzdGRjKystdjMvcHl0aG9uL2xpYnN0ZGN4eC92Ni9wcmludGVycy5weSBi L2xpYnN0ZGMrKy12My9weXRob24vbGlic3RkY3h4L3Y2L3ByaW50ZXJzLnB5 CmluZGV4IDAxODdjNGI2MGU2Li4zNDc1YWEyNDZlZCAxMDA2NDQKLS0tIGEv bGlic3RkYysrLXYzL3B5dGhvbi9saWJzdGRjeHgvdjYvcHJpbnRlcnMucHkK KysrIGIvbGlic3RkYysrLXYzL3B5dGhvbi9saWJzdGRjeHgvdjYvcHJpbnRl cnMucHkKQEAgLTk2Myw2ICs5NjMsOCBAQCBjbGFzcyBTdGRTdHJpbmdQcmlu dGVyOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlbmFtZSwgdmFsKToK ICAgICAgICAgc2VsZi52YWwgPSB2YWwKICAgICAgICAgc2VsZi5uZXdfc3Ry aW5nID0gdHlwZW5hbWUuZmluZCgiOjpfX2N4eDExOjpiYXNpY19zdHJpbmci KSAhPSAtMQorICAgICAgICBpZiBub3Qgc2VsZi5uZXdfc3RyaW5nIGFuZCBf dmVyc2lvbmVkX25hbWVzcGFjZToKKyAgICAgICAgICAgIHNlbGYubmV3X3N0 cmluZyA9IHR5cGVuYW1lLmZpbmQoIjo6IiArIF92ZXJzaW9uZWRfbmFtZXNw YWNlICsgImJhc2ljX3N0cmluZyIpICE9IC0xCiAKICAgICBkZWYgdG9fc3Ry aW5nKHNlbGYpOgogICAgICAgICAjIE1ha2Ugc3VyZSAmc3RyaW5nIHdvcmtz LCB0b28uCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvc3JjL01ha2VmaWxl LmFtIGIvbGlic3RkYysrLXYzL3NyYy9NYWtlZmlsZS5hbQppbmRleCA1Yjlh ZjQxY2RiOS4uZWMwYzUwMmVjYjEgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12 My9zcmMvTWFrZWZpbGUuYW0KKysrIGIvbGlic3RkYysrLXYzL3NyYy9NYWtl ZmlsZS5hbQpAQCAtODksNiArODksOSBAQCBlbHNlCiBsZGJsX2NvbXBhdF9z b3VyY2VzID0KIGVuZGlmCiAKK2lmIEVOQUJMRV9TWU1WRVJTX0dOVV9OQU1F U1BBQ0UKK2xkYmxfYWx0MTI4X2NvbXBhdF9zb3VyY2VzID0KK2Vsc2UKIGlm IEdMSUJDWFhfTERCTF9BTFQxMjhfQ09NUEFUCiBpZiBFTkFCTEVfRFVBTF9B QkkKIGxkYmxfYWx0MTI4X2NvbXBhdF9jeHgxMV9zb3VyY2VzID0gXApAQCAt MTAyLDYgKzEwNSw3IEBAIGxkYmxfYWx0MTI4X2NvbXBhdF9zb3VyY2VzID0g XAogZWxzZQogbGRibF9hbHQxMjhfY29tcGF0X3NvdXJjZXMgPQogZW5kaWYK K2VuZGlmCiAKIGlmIEVOQUJMRV9TWU1WRVJTX0dOVV9OQU1FU1BBQ0UKIGN4 eDB4X2NvbXBhdF9zb3VyY2VzID0KZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12 My9zcmMvTWFrZWZpbGUuaW4gYi9saWJzdGRjKystdjMvc3JjL01ha2VmaWxl LmluCmluZGV4IGY0MmQ5NTdhZjM2Li5jOWMxYjY1ZGI1MiAxMDA2NDQKLS0t IGEvbGlic3RkYysrLXYzL3NyYy9NYWtlZmlsZS5pbgorKysgYi9saWJzdGRj KystdjMvc3JjL01ha2VmaWxlLmluCkBAIC0xNTcsMTAgKzE1Nyw5IEBAIGFt X19vYmplY3RzXzIgPSBjb21wYXRpYmlsaXR5LmxvIGNvbXBhdGliaWxpdHkt ZGVidWdfbGlzdC5sbyBcCiBARU5BQkxFX1NZTVZFUlNfR05VX05BTUVTUEFD RV9GQUxTRUAJY29tcGF0aWJpbGl0eS1jaHJvbm8ubG8gXAogQEVOQUJMRV9T WU1WRVJTX0dOVV9OQU1FU1BBQ0VfRkFMU0VACWNvbXBhdGliaWxpdHktY29u ZHZhci5sbyBcCiBARU5BQkxFX1NZTVZFUlNfR05VX05BTUVTUEFDRV9GQUxT RUAJY29tcGF0aWJpbGl0eS10aHJlYWQtYysrMHgubG8KLUBFTkFCTEVfRFVB TF9BQklfVFJVRUBAR0xJQkNYWF9MREJMX0FMVDEyOF9DT01QQVRfVFJVRUBh bV9fb2JqZWN0c180ID0gY29tcGF0aWJpbGl0eS1sZGJsLWFsdDEyOC1jeHgx MS5sbwotQEdMSUJDWFhfTERCTF9BTFQxMjhfQ09NUEFUX1RSVUVAYW1fX29i amVjdHNfNSA9ICBcCi1AR0xJQkNYWF9MREJMX0FMVDEyOF9DT01QQVRfVFJV RUAJY29tcGF0aWJpbGl0eS1sZGJsLWFsdDEyOC5sbyBcCi1AR0xJQkNYWF9M REJMX0FMVDEyOF9DT01QQVRfVFJVRUAJJChhbV9fb2JqZWN0c180KQorQEVO QUJMRV9EVUFMX0FCSV9UUlVFQEBFTkFCTEVfU1lNVkVSU19HTlVfTkFNRVNQ QUNFX0ZBTFNFQEBHTElCQ1hYX0xEQkxfQUxUMTI4X0NPTVBBVF9UUlVFQGFt X19vYmplY3RzXzQgPSBjb21wYXRpYmlsaXR5LWxkYmwtYWx0MTI4LWN4eDEx LmxvCitARU5BQkxFX1NZTVZFUlNfR05VX05BTUVTUEFDRV9GQUxTRUBAR0xJ QkNYWF9MREJMX0FMVDEyOF9DT01QQVRfVFJVRUBhbV9fb2JqZWN0c181ID0g Y29tcGF0aWJpbGl0eS1sZGJsLWFsdDEyOC5sbyBcCitARU5BQkxFX1NZTVZF UlNfR05VX05BTUVTUEFDRV9GQUxTRUBAR0xJQkNYWF9MREJMX0FMVDEyOF9D T01QQVRfVFJVRUAJJChhbV9fb2JqZWN0c180KQogYW1fX29iamVjdHNfNiA9 ICQoYW1fX29iamVjdHNfMykgJChhbV9fb2JqZWN0c181KQogQEdMSUJDWFhf SE9TVEVEX1RSVUVAYW1fbGlic3RkY19fX2xhX09CSkVDVFMgPSAkKGFtX19v YmplY3RzXzIpIFwKIEBHTElCQ1hYX0hPU1RFRF9UUlVFQAkkKGFtX19vYmpl Y3RzXzYpCkBAIC01MTAsMTQgKzUwOSwxNSBAQCBTVUJESVJTID0gYysrOTgg YysrMTEgYysrMTcgYysrMjAgJChmaWxlc3lzdGVtX2RpcikgJChiYWNrdHJh Y2VfZGlyKSAkKGV4cGVyaW1lbgogCiBAR0xJQkNYWF9MREJMX0NPTVBBVF9G QUxTRUBsZGJsX2NvbXBhdF9zb3VyY2VzID0gCiBAR0xJQkNYWF9MREJMX0NP TVBBVF9UUlVFQGxkYmxfY29tcGF0X3NvdXJjZXMgPSBjb21wYXRpYmlsaXR5 LWxkYmwuY2MKLUBFTkFCTEVfRFVBTF9BQklfRkFMU0VAQEdMSUJDWFhfTERC TF9BTFQxMjhfQ09NUEFUX1RSVUVAbGRibF9hbHQxMjhfY29tcGF0X2N4eDEx X3NvdXJjZXMgPSAKLUBFTkFCTEVfRFVBTF9BQklfVFJVRUBAR0xJQkNYWF9M REJMX0FMVDEyOF9DT01QQVRfVFJVRUBsZGJsX2FsdDEyOF9jb21wYXRfY3h4 MTFfc291cmNlcyA9IFwKLUBFTkFCTEVfRFVBTF9BQklfVFJVRUBAR0xJQkNY WF9MREJMX0FMVDEyOF9DT01QQVRfVFJVRUAJY29tcGF0aWJpbGl0eS1sZGJs LWFsdDEyOC1jeHgxMS5jYwotCi1AR0xJQkNYWF9MREJMX0FMVDEyOF9DT01Q QVRfRkFMU0VAbGRibF9hbHQxMjhfY29tcGF0X3NvdXJjZXMgPSAKLUBHTElC Q1hYX0xEQkxfQUxUMTI4X0NPTVBBVF9UUlVFQGxkYmxfYWx0MTI4X2NvbXBh dF9zb3VyY2VzID0gXAotQEdMSUJDWFhfTERCTF9BTFQxMjhfQ09NUEFUX1RS VUVACWNvbXBhdGliaWxpdHktbGRibC1hbHQxMjguY2MgXAotQEdMSUJDWFhf TERCTF9BTFQxMjhfQ09NUEFUX1RSVUVACSR7bGRibF9hbHQxMjhfY29tcGF0 X2N4eDExX3NvdXJjZXN9CitARU5BQkxFX1NZTVZFUlNfR05VX05BTUVTUEFD RV9GQUxTRUBAR0xJQkNYWF9MREJMX0FMVDEyOF9DT01QQVRfRkFMU0VAbGRi bF9hbHQxMjhfY29tcGF0X3NvdXJjZXMgPSAKK0BFTkFCTEVfU1lNVkVSU19H TlVfTkFNRVNQQUNFX0ZBTFNFQEBHTElCQ1hYX0xEQkxfQUxUMTI4X0NPTVBB VF9UUlVFQGxkYmxfYWx0MTI4X2NvbXBhdF9zb3VyY2VzID0gXAorQEVOQUJM RV9TWU1WRVJTX0dOVV9OQU1FU1BBQ0VfRkFMU0VAQEdMSUJDWFhfTERCTF9B TFQxMjhfQ09NUEFUX1RSVUVACWNvbXBhdGliaWxpdHktbGRibC1hbHQxMjgu Y2MgXAorQEVOQUJMRV9TWU1WRVJTX0dOVV9OQU1FU1BBQ0VfRkFMU0VAQEdM SUJDWFhfTERCTF9BTFQxMjhfQ09NUEFUX1RSVUVACSR7bGRibF9hbHQxMjhf Y29tcGF0X2N4eDExX3NvdXJjZXN9CisKK0BFTkFCTEVfU1lNVkVSU19HTlVf TkFNRVNQQUNFX1RSVUVAbGRibF9hbHQxMjhfY29tcGF0X3NvdXJjZXMgPSAK K0BFTkFCTEVfRFVBTF9BQklfRkFMU0VAQEVOQUJMRV9TWU1WRVJTX0dOVV9O QU1FU1BBQ0VfRkFMU0VAQEdMSUJDWFhfTERCTF9BTFQxMjhfQ09NUEFUX1RS VUVAbGRibF9hbHQxMjhfY29tcGF0X2N4eDExX3NvdXJjZXMgPSAKK0BFTkFC TEVfRFVBTF9BQklfVFJVRUBARU5BQkxFX1NZTVZFUlNfR05VX05BTUVTUEFD RV9GQUxTRUBAR0xJQkNYWF9MREJMX0FMVDEyOF9DT01QQVRfVFJVRUBsZGJs X2FsdDEyOF9jb21wYXRfY3h4MTFfc291cmNlcyA9IFwKK0BFTkFCTEVfRFVB TF9BQklfVFJVRUBARU5BQkxFX1NZTVZFUlNfR05VX05BTUVTUEFDRV9GQUxT RUBAR0xJQkNYWF9MREJMX0FMVDEyOF9DT01QQVRfVFJVRUAJY29tcGF0aWJp bGl0eS1sZGJsLWFsdDEyOC1jeHgxMS5jYwogCiBARU5BQkxFX1NZTVZFUlNf R05VX05BTUVTUEFDRV9GQUxTRUBjeHgweF9jb21wYXRfc291cmNlcyA9IFwK IEBFTkFCTEVfU1lNVkVSU19HTlVfTkFNRVNQQUNFX0ZBTFNFQAljb21wYXRp YmlsaXR5LWF0b21pYy1jKysweC5jYyBcCmRpZmYgLS1naXQgYS9saWJzdGRj KystdjMvc3JjL2MrKzExL01ha2VmaWxlLmFtIGIvbGlic3RkYysrLXYzL3Ny Yy9jKysxMS9NYWtlZmlsZS5hbQppbmRleCA2ODJiZTE2NjlhNC4uODIyMjcz Mzg3OTggMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvTWFr ZWZpbGUuYW0KKysrIGIvbGlic3RkYysrLXYzL3NyYy9jKysxMS9NYWtlZmls ZS5hbQpAQCAtNDAsMTUgKzQwLDExIEBAIGN0eXBlX21lbWJlcnMuY2M6ICR7 Z2xpYmN4eF9zcmNkaXJ9LyQoQ0NUWVBFX0NDKQogCSQoTE5fUykgJHtnbGli Y3h4X3NyY2Rpcn0vJChDQ1RZUEVfQ0MpIC4gfHwgdHJ1ZQogCiBpZiBFTkFC TEVfRFVBTF9BQkkKLWN4eDExX2FiaV9zb3VyY2VzID0gXAotCWNvdy1sb2Nh bGVfaW5pdC5jYyBcCitkdWFsX2FiaV9zb3VyY2VzID0gXAogCWNvdy1zaGlt X2ZhY2V0cy5jYyBcCi0JY3h4MTEtaGFzaF90cjEuY2MgXAotCWN4eDExLWlv c19mYWlsdXJlLmNjIFwKLQljeHgxMS1zaGltX2ZhY2V0cy5jYyBcCi0JY3h4 MTEtc3RkZXhjZXB0LmNjCisJY3h4MTEtc2hpbV9mYWNldHMuY2MKIGVsc2UK LWN4eDExX2FiaV9zb3VyY2VzID0KK2R1YWxfYWJpX3NvdXJjZXMgPQogZW5k aWYKIAogc291cmNlc19mcmVlc3RhbmRpbmcgPSBcCkBAIC01OSw4ICs1NSwx MiBAQCBzb3VyY2VzID0gXAogCWNocm9uby5jYyBcCiAJY29kZWN2dC5jYyBc CiAJY29uZGl0aW9uX3ZhcmlhYmxlLmNjIFwKKwljb3ctbG9jYWxlX2luaXQu Y2MgXAogCWNvdy1zdGRleGNlcHQuY2MgXAogCWN0eXBlLmNjIFwKKwljeHgx MS1oYXNoX3RyMS5jYyBcCisJY3h4MTEtaW9zX2ZhaWx1cmUuY2MgXAorCWN4 eDExLXN0ZGV4Y2VwdC5jYyBcCiAJZGVidWcuY2MgXAogCWZ1bmN0ZXhjZXB0 LmNjIFwKIAlmdW5jdGlvbmFsLmNjIFwKQEAgLTc3LDE5ICs3NywxMSBAQCBz b3VyY2VzID0gXAogCXNucHJpbnRmX2xpdGUuY2MgXAogCXN5c3RlbV9lcnJv ci5jYyBcCiAJdGhyZWFkLmNjIFwKLQkke2N4eDExX2FiaV9zb3VyY2VzfSBc CisJJHtkdWFsX2FiaV9zb3VyY2VzfSBcCiAJJHtob3N0X3NvdXJjZXN9CiAK IGlmIEVOQUJMRV9EVUFMX0FCSQogZXh0cmFfc3RyaW5nX2luc3Rfc291cmNl cyA9IFwKLQljb3ctZnN0cmVhbS1pbnN0LmNjIFwKLQljb3ctc3N0cmVhbS1p bnN0LmNjIFwKLQljb3ctc3RyaW5nLWluc3QuY2MgXAotCWNvdy1zdHJpbmct aW8taW5zdC5jYyBcCi0JY293LXdzdHJpbmctaW5zdC5jYyBcCi0JY293LXdz dHJpbmctaW8taW5zdC5jYyBcCi0JY3h4MTEtbG9jYWxlLWluc3QuY2MgXAot CWN4eDExLXdsb2NhbGUtaW5zdC5jYyBcCiAJc3NvX3N0cmluZy5jYwogZWxz ZQogZXh0cmFfc3RyaW5nX2luc3Rfc291cmNlcyA9CkBAIC05OSw2ICs5MSwx NCBAQCBpZiBFTkFCTEVfRVhURVJOX1RFTVBMQVRFCiAjIFhURU1QTEFURV9G TEFHUyA9IC1mbm8taW1wbGljaXQtdGVtcGxhdGVzCiBpbnN0X3NvdXJjZXMg PSBcCiAJJChleHRyYV9zdHJpbmdfaW5zdF9zb3VyY2VzKSBcCisJY293LWZz dHJlYW0taW5zdC5jYyBcCisJY293LXNzdHJlYW0taW5zdC5jYyBcCisJY293 LXN0cmluZy1pbnN0LmNjIFwKKwljb3ctc3RyaW5nLWlvLWluc3QuY2MgXAor CWNvdy13c3RyaW5nLWluc3QuY2MgXAorCWNvdy13c3RyaW5nLWlvLWluc3Qu Y2MgXAorCWN4eDExLWxvY2FsZS1pbnN0LmNjIFwKKwljeHgxMS13bG9jYWxl LWluc3QuY2MgXAogCWV4dDExLWluc3QuY2MgXAogCWZzdHJlYW0taW5zdC5j YyBcCiAJaW9zLWluc3QuY2MgXApkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYz L3NyYy9jKysxMS9NYWtlZmlsZS5pbiBiL2xpYnN0ZGMrKy12My9zcmMvYysr MTEvTWFrZWZpbGUuaW4KaW5kZXggZTdhMDlmZTMyNDYuLjJkOTQ0MjU0ODBi IDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2MrKzExL01ha2VmaWxl LmluCisrKyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvTWFrZWZpbGUuaW4K QEAgLTEyMiwyNSArMTIyLDI2IEBAIENPTkZJR19DTEVBTl9WUEFUSF9GSUxF UyA9CiBMVExJQlJBUklFUyA9ICQobm9pbnN0X0xUTElCUkFSSUVTKQogbGli Y19fMTFjb252ZW5pZW5jZV9sYV9MSUJBREQgPQogYW1fX29iamVjdHNfMSA9 IGxpbWl0cy5sbyBwbGFjZWhvbGRlcnMubG8KLUBFTkFCTEVfRFVBTF9BQklf VFJVRUBhbV9fb2JqZWN0c18yID0gY293LWxvY2FsZV9pbml0LmxvIFwKLUBF TkFCTEVfRFVBTF9BQklfVFJVRUAJY293LXNoaW1fZmFjZXRzLmxvIGN4eDEx LWhhc2hfdHIxLmxvIFwKLUBFTkFCTEVfRFVBTF9BQklfVFJVRUAJY3h4MTEt aW9zX2ZhaWx1cmUubG8gXAotQEVOQUJMRV9EVUFMX0FCSV9UUlVFQAljeHgx MS1zaGltX2ZhY2V0cy5sbyBjeHgxMS1zdGRleGNlcHQubG8KK0BFTkFCTEVf RFVBTF9BQklfVFJVRUBhbV9fb2JqZWN0c18yID0gY293LXNoaW1fZmFjZXRz LmxvIFwKK0BFTkFCTEVfRFVBTF9BQklfVFJVRUAJY3h4MTEtc2hpbV9mYWNl dHMubG8KIGFtX19vYmplY3RzXzMgPSBjdHlwZV9jb25maWd1cmVfY2hhci5s byBjdHlwZV9tZW1iZXJzLmxvCiBhbV9fb2JqZWN0c180ID0gY2hyb25vLmxv IGNvZGVjdnQubG8gY29uZGl0aW9uX3ZhcmlhYmxlLmxvIFwKLQljb3ctc3Rk ZXhjZXB0LmxvIGN0eXBlLmxvIGRlYnVnLmxvIGZ1bmN0ZXhjZXB0LmxvIFwK LQlmdW5jdGlvbmFsLmxvIGZ1dGV4LmxvIGZ1dHVyZS5sbyBoYXNoX2MrKzB4 LmxvIFwKKwljb3ctbG9jYWxlX2luaXQubG8gY293LXN0ZGV4Y2VwdC5sbyBj dHlwZS5sbyBjeHgxMS1oYXNoX3RyMS5sbyBcCisJY3h4MTEtaW9zX2ZhaWx1 cmUubG8gY3h4MTEtc3RkZXhjZXB0LmxvIGRlYnVnLmxvIFwKKwlmdW5jdGV4 Y2VwdC5sbyBmdW5jdGlvbmFsLmxvIGZ1dGV4LmxvIGZ1dHVyZS5sbyBoYXNo X2MrKzB4LmxvIFwKIAloYXNodGFibGVfYysrMHgubG8gaW9zLmxvIGlvc19l cnJjYXQubG8gbXV0ZXgubG8gcmFuZG9tLmxvIFwKIAlyZWdleC5sbyBzaGFy ZWRfcHRyLmxvIHNucHJpbnRmX2xpdGUubG8gc3lzdGVtX2Vycm9yLmxvIFwK IAl0aHJlYWQubG8gJChhbV9fb2JqZWN0c18yKSAkKGFtX19vYmplY3RzXzMp Ci1ARU5BQkxFX0RVQUxfQUJJX1RSVUVAYW1fX29iamVjdHNfNSA9IGNvdy1m c3RyZWFtLWluc3QubG8gXAotQEVOQUJMRV9EVUFMX0FCSV9UUlVFQAljb3ct c3N0cmVhbS1pbnN0LmxvIGNvdy1zdHJpbmctaW5zdC5sbyBcCi1ARU5BQkxF X0RVQUxfQUJJX1RSVUVACWNvdy1zdHJpbmctaW8taW5zdC5sbyBcCi1ARU5B QkxFX0RVQUxfQUJJX1RSVUVACWNvdy13c3RyaW5nLWluc3QubG8gXAotQEVO QUJMRV9EVUFMX0FCSV9UUlVFQAljb3ctd3N0cmluZy1pby1pbnN0LmxvIFwK LUBFTkFCTEVfRFVBTF9BQklfVFJVRUAJY3h4MTEtbG9jYWxlLWluc3QubG8g XAotQEVOQUJMRV9EVUFMX0FCSV9UUlVFQAljeHgxMS13bG9jYWxlLWluc3Qu bG8gc3NvX3N0cmluZy5sbworQEVOQUJMRV9EVUFMX0FCSV9UUlVFQGFtX19v YmplY3RzXzUgPSBzc29fc3RyaW5nLmxvCiBARU5BQkxFX0VYVEVSTl9URU1Q TEFURV9UUlVFQGFtX19vYmplY3RzXzYgPSAkKGFtX19vYmplY3RzXzUpIFwK K0BFTkFCTEVfRVhURVJOX1RFTVBMQVRFX1RSVUVACWNvdy1mc3RyZWFtLWlu c3QubG8gXAorQEVOQUJMRV9FWFRFUk5fVEVNUExBVEVfVFJVRUAJY293LXNz dHJlYW0taW5zdC5sbyBcCitARU5BQkxFX0VYVEVSTl9URU1QTEFURV9UUlVF QAljb3ctc3RyaW5nLWluc3QubG8gXAorQEVOQUJMRV9FWFRFUk5fVEVNUExB VEVfVFJVRUAJY293LXN0cmluZy1pby1pbnN0LmxvIFwKK0BFTkFCTEVfRVhU RVJOX1RFTVBMQVRFX1RSVUVACWNvdy13c3RyaW5nLWluc3QubG8gXAorQEVO QUJMRV9FWFRFUk5fVEVNUExBVEVfVFJVRUAJY293LXdzdHJpbmctaW8taW5z dC5sbyBcCitARU5BQkxFX0VYVEVSTl9URU1QTEFURV9UUlVFQAljeHgxMS1s b2NhbGUtaW5zdC5sbyBcCitARU5BQkxFX0VYVEVSTl9URU1QTEFURV9UUlVF QAljeHgxMS13bG9jYWxlLWluc3QubG8gXAogQEVOQUJMRV9FWFRFUk5fVEVN UExBVEVfVFJVRUAJZXh0MTEtaW5zdC5sbyBmc3RyZWFtLWluc3QubG8gXAog QEVOQUJMRV9FWFRFUk5fVEVNUExBVEVfVFJVRUAJaW9zLWluc3QubG8gaW9z dHJlYW0taW5zdC5sbyBcCiBARU5BQkxFX0VYVEVSTl9URU1QTEFURV9UUlVF QAlpc3RyZWFtLWluc3QubG8gbG9jYWxlLWluc3QubG8gXApAQCAtNDYxLDE0 ICs0NjIsMTAgQEAgaG9zdF9zb3VyY2VzID0gXAogCWN0eXBlX2NvbmZpZ3Vy ZV9jaGFyLmNjIFwKIAljdHlwZV9tZW1iZXJzLmNjCiAKLUBFTkFCTEVfRFVB TF9BQklfRkFMU0VAY3h4MTFfYWJpX3NvdXJjZXMgPSAKLUBFTkFCTEVfRFVB TF9BQklfVFJVRUBjeHgxMV9hYmlfc291cmNlcyA9IFwKLUBFTkFCTEVfRFVB TF9BQklfVFJVRUAJY293LWxvY2FsZV9pbml0LmNjIFwKK0BFTkFCTEVfRFVB TF9BQklfRkFMU0VAZHVhbF9hYmlfc291cmNlcyA9IAorQEVOQUJMRV9EVUFM X0FCSV9UUlVFQGR1YWxfYWJpX3NvdXJjZXMgPSBcCiBARU5BQkxFX0RVQUxf QUJJX1RSVUVACWNvdy1zaGltX2ZhY2V0cy5jYyBcCi1ARU5BQkxFX0RVQUxf QUJJX1RSVUVACWN4eDExLWhhc2hfdHIxLmNjIFwKLUBFTkFCTEVfRFVBTF9B QklfVFJVRUAJY3h4MTEtaW9zX2ZhaWx1cmUuY2MgXAotQEVOQUJMRV9EVUFM X0FCSV9UUlVFQAljeHgxMS1zaGltX2ZhY2V0cy5jYyBcCi1ARU5BQkxFX0RV QUxfQUJJX1RSVUVACWN4eDExLXN0ZGV4Y2VwdC5jYworQEVOQUJMRV9EVUFM X0FCSV9UUlVFQAljeHgxMS1zaGltX2ZhY2V0cy5jYwogCiBzb3VyY2VzX2Zy ZWVzdGFuZGluZyA9IFwKIAlsaW1pdHMuY2MgXApAQCAtNDc4LDggKzQ3NSwx MiBAQCBzb3VyY2VzID0gXAogCWNocm9uby5jYyBcCiAJY29kZWN2dC5jYyBc CiAJY29uZGl0aW9uX3ZhcmlhYmxlLmNjIFwKKwljb3ctbG9jYWxlX2luaXQu Y2MgXAogCWNvdy1zdGRleGNlcHQuY2MgXAogCWN0eXBlLmNjIFwKKwljeHgx MS1oYXNoX3RyMS5jYyBcCisJY3h4MTEtaW9zX2ZhaWx1cmUuY2MgXAorCWN4 eDExLXN0ZGV4Y2VwdC5jYyBcCiAJZGVidWcuY2MgXAogCWZ1bmN0ZXhjZXB0 LmNjIFwKIAlmdW5jdGlvbmFsLmNjIFwKQEAgLTQ5NiwxOSArNDk3LDExIEBA IHNvdXJjZXMgPSBcCiAJc25wcmludGZfbGl0ZS5jYyBcCiAJc3lzdGVtX2Vy cm9yLmNjIFwKIAl0aHJlYWQuY2MgXAotCSR7Y3h4MTFfYWJpX3NvdXJjZXN9 IFwKKwkke2R1YWxfYWJpX3NvdXJjZXN9IFwKIAkke2hvc3Rfc291cmNlc30K IAogQEVOQUJMRV9EVUFMX0FCSV9GQUxTRUBleHRyYV9zdHJpbmdfaW5zdF9z b3VyY2VzID0gCiBARU5BQkxFX0RVQUxfQUJJX1RSVUVAZXh0cmFfc3RyaW5n X2luc3Rfc291cmNlcyA9IFwKLUBFTkFCTEVfRFVBTF9BQklfVFJVRUAJY293 LWZzdHJlYW0taW5zdC5jYyBcCi1ARU5BQkxFX0RVQUxfQUJJX1RSVUVACWNv dy1zc3RyZWFtLWluc3QuY2MgXAotQEVOQUJMRV9EVUFMX0FCSV9UUlVFQAlj b3ctc3RyaW5nLWluc3QuY2MgXAotQEVOQUJMRV9EVUFMX0FCSV9UUlVFQAlj b3ctc3RyaW5nLWlvLWluc3QuY2MgXAotQEVOQUJMRV9EVUFMX0FCSV9UUlVF QAljb3ctd3N0cmluZy1pbnN0LmNjIFwKLUBFTkFCTEVfRFVBTF9BQklfVFJV RUAJY293LXdzdHJpbmctaW8taW5zdC5jYyBcCi1ARU5BQkxFX0RVQUxfQUJJ X1RSVUVACWN4eDExLWxvY2FsZS1pbnN0LmNjIFwKLUBFTkFCTEVfRFVBTF9B QklfVFJVRUAJY3h4MTEtd2xvY2FsZS1pbnN0LmNjIFwKIEBFTkFCTEVfRFVB TF9BQklfVFJVRUAJc3NvX3N0cmluZy5jYwogCiAjIFhURU1QTEFURV9GTEFH UyA9CkBAIC01MTcsNiArNTEwLDE0IEBAIHNvdXJjZXMgPSBcCiAjIFhURU1Q TEFURV9GTEFHUyA9IC1mbm8taW1wbGljaXQtdGVtcGxhdGVzCiBARU5BQkxF X0VYVEVSTl9URU1QTEFURV9UUlVFQGluc3Rfc291cmNlcyA9IFwKIEBFTkFC TEVfRVhURVJOX1RFTVBMQVRFX1RSVUVACSQoZXh0cmFfc3RyaW5nX2luc3Rf c291cmNlcykgXAorQEVOQUJMRV9FWFRFUk5fVEVNUExBVEVfVFJVRUAJY293 LWZzdHJlYW0taW5zdC5jYyBcCitARU5BQkxFX0VYVEVSTl9URU1QTEFURV9U UlVFQAljb3ctc3N0cmVhbS1pbnN0LmNjIFwKK0BFTkFCTEVfRVhURVJOX1RF TVBMQVRFX1RSVUVACWNvdy1zdHJpbmctaW5zdC5jYyBcCitARU5BQkxFX0VY VEVSTl9URU1QTEFURV9UUlVFQAljb3ctc3RyaW5nLWlvLWluc3QuY2MgXAor QEVOQUJMRV9FWFRFUk5fVEVNUExBVEVfVFJVRUAJY293LXdzdHJpbmctaW5z dC5jYyBcCitARU5BQkxFX0VYVEVSTl9URU1QTEFURV9UUlVFQAljb3ctd3N0 cmluZy1pby1pbnN0LmNjIFwKK0BFTkFCTEVfRVhURVJOX1RFTVBMQVRFX1RS VUVACWN4eDExLWxvY2FsZS1pbnN0LmNjIFwKK0BFTkFCTEVfRVhURVJOX1RF TVBMQVRFX1RSVUVACWN4eDExLXdsb2NhbGUtaW5zdC5jYyBcCiBARU5BQkxF X0VYVEVSTl9URU1QTEFURV9UUlVFQAlleHQxMS1pbnN0LmNjIFwKIEBFTkFC TEVfRVhURVJOX1RFTVBMQVRFX1RSVUVACWZzdHJlYW0taW5zdC5jYyBcCiBA RU5BQkxFX0VYVEVSTl9URU1QTEFURV9UUlVFQAlpb3MtaW5zdC5jYyBcCmRp ZmYgLS1naXQgYS9saWJzdGRjKystdjMvc3JjL2MrKzExL2Nvdy1mc3RyZWFt LWluc3QuY2MgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL2Nvdy1mc3RyZWFt LWluc3QuY2MKaW5kZXggMDU2MmJjNmM5Y2IuLjgxNTMzODdkYWVhIDEwMDY0 NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2MrKzExL2Nvdy1mc3RyZWFtLWlu c3QuY2MKKysrIGIvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jb3ctZnN0cmVh bS1pbnN0LmNjCkBAIC0yOSwxMCArMjksNyBAQAogI2RlZmluZSBfR0xJQkNY WF9VU0VfQ1hYMTFfQUJJIDAKICNpbmNsdWRlIDxmc3RyZWFtPgogCi0jaWYg ISBfR0xJQkNYWF9VU0VfRFVBTF9BQkkKLSMgZXJyb3IgVGhpcyBmaWxlIHNo b3VsZCBub3QgYmUgY29tcGlsZWQgZm9yIHRoaXMgY29uZmlndXJhdGlvbi4K LSNlbmRpZgotCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiBuYW1l c3BhY2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKIHsKIF9H TElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCkBAIC03NiwzICs3Myw0 IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAKIF9HTElC Q1hYX0VORF9OQU1FU1BBQ0VfVkVSU0lPTgogfSAvLyBuYW1lc3BhY2UKKyNl bmRpZgpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jb3ct bG9jYWxlX2luaXQuY2MgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL2Nvdy1s b2NhbGVfaW5pdC5jYwppbmRleCA4NTI3Nzc2MzQyNy4uNjgzM2Y5MDNmNDcg MTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LWxvY2Fs ZV9pbml0LmNjCisrKyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LWxv Y2FsZV9pbml0LmNjCkBAIC0yNCwxMCArMjQsNyBAQAogI2RlZmluZSBfR0xJ QkNYWF9VU0VfQ1hYMTFfQUJJIDAKICNpbmNsdWRlIDxsb2NhbGU+CiAKLSNp ZiAhIF9HTElCQ1hYX1VTRV9EVUFMX0FCSQotIyBlcnJvciBUaGlzIGZpbGUg c2hvdWxkIG5vdCBiZSBjb21waWxlZCBmb3IgdGhpcyBjb25maWd1cmF0aW9u LgotI2VuZGlmCi0KKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKIG5h bWVzcGFjZSBzdGQgX0dMSUJDWFhfVklTSUJJTElUWShkZWZhdWx0KQogewog X0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KQEAgLTE2NSw2ICsx NjIsNyBAQCBuYW1lc3BhY2UKICNlbmRpZgogICB9CiAKKyNpZiBfR0xJQkNY WF9VU0VfRFVBTF9BQkkKIC8vIFRPRE8gc2hvdWxkIGJlIGluIGFub3RoZXIg ZmlsZQogICBzdHJpbmcKICAgbG9jYWxlOjpuYW1lKCkgY29uc3QKQEAgLTE5 MCw2ICsxODgsOCBAQCBuYW1lc3BhY2UKICAgICAgIH0KICAgICByZXR1cm4g X19yZXQ7CiAgIH0KKyNlbmRpZgogCiBfR0xJQkNYWF9FTkRfTkFNRVNQQUNF X1ZFUlNJT04KIH0KKyNlbmRpZiAvLyAhIF9HTElCQ1hYX1VTRV9DWFgxMV9B QkkKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LXNz dHJlYW0taW5zdC5jYyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LXNz dHJlYW0taW5zdC5jYwppbmRleCAwMzVhMjY3ZDlkOC4uNzY5OTE3MGQxM2Qg MTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LXNzdHJl YW0taW5zdC5jYworKysgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL2Nvdy1z c3RyZWFtLWluc3QuY2MKQEAgLTI3LDggKzI3LDggQEAKIC8vCiAKICNkZWZp bmUgX0dMSUJDWFhfVVNFX0NYWDExX0FCSSAwCi0jaW5jbHVkZSAic3N0cmVh bS1pbnN0LmNjIgorI2luY2x1ZGUgPGJpdHMvYysrY29uZmlnLmg+CiAKLSNp ZiAhIF9HTElCQ1hYX1VTRV9EVUFMX0FCSQotIyBlcnJvciBUaGlzIGZpbGUg c2hvdWxkIG5vdCBiZSBjb21waWxlZCBmb3IgdGhpcyBjb25maWd1cmF0aW9u LgorI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQorIyBpbmNsdWRlICJz c3RyZWFtLWluc3QuY2MiCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2xpYnN0ZGMr Ky12My9zcmMvYysrMTEvY293LXN0ZGV4Y2VwdC5jYyBiL2xpYnN0ZGMrKy12 My9zcmMvYysrMTEvY293LXN0ZGV4Y2VwdC5jYwppbmRleCA4ZDFjYzQ2MDVk NC4uMjNmODUzZWFkYWMgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9zcmMv YysrMTEvY293LXN0ZGV4Y2VwdC5jYworKysgYi9saWJzdGRjKystdjMvc3Jj L2MrKzExL2Nvdy1zdGRleGNlcHQuY2MKQEAgLTQzLDExICs0Myw1MiBAQCBf dHhuYWxfcnVudGltZV9lcnJvcl9nZXRfbXNnKHZvaWQqIGUpOwogCiAvLyBB bGwgZXhjZXB0aW9uIGNsYXNzZXMgc3RpbGwgdXNlIHRoZSBjbGFzc2ljIENP VyBzdGQ6OnN0cmluZy4KICNkZWZpbmUgX0dMSUJDWFhfVVNFX0NYWDExX0FC SSAwCi0jZGVmaW5lIF9HTElCQ1hYX0RFRklORV9TVERFWENFUFRfQ09QWV9P UFMgMQotI2RlZmluZSBfX2Nvd19zdHJpbmcgX19jb3dfc3RyaW5neHh4Cisj aW5jbHVkZSA8c3RyaW5nPgorCisjaWYgX0dMSUJDWFhfVVNFX0RVQUxfQUJJ IHx8IF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKKyMgaWYgX0dMSUJDWFhfVVNF X0NYWDExX0FCSQorIyAgaW5jbHVkZSA8Yml0cy9jb3dfc3RyaW5nLmg+Cisj IGVuZGlmCisKK25hbWVzcGFjZSBzdGQgX0dMSUJDWFhfVklTSUJJTElUWShk ZWZhdWx0KQoreworX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04K KworIyBpZiBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCisgIHR5cGVkZWYgc3Rk OjpfX3N0ZF9jb3dfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hh cj4sCisJCQkJc3RkOjphbGxvY2F0b3I8Y2hhcj4+IGNvd3N0cjsKKyMgZWxz ZQorICB0eXBlZGVmIHN0ZDo6c3RyaW5nIGNvd3N0cjsKKyMgZW5kaWYKKwor ICAvLyBSZWRlZmluZSBfX2Nvd19zdHJpbmcgc28gdGhhdCB3ZSBjYW4gZGVm aW5lIGFuZCBleHBvcnQgaXRzIG1lbWJlcnMKKyAgLy8gaW4gdGVybXMgb2Yg dGhlIENPVyBzdGQ6OnN0cmluZy4KKyAgc3RydWN0IF9fY293X3N0cmluZwor ICB7CisgICAgdW5pb24geworICAgICAgY29uc3QgY2hhciogX01fcDsKKyAg ICAgIGNoYXIgX01fYnl0ZXNbc2l6ZW9mKF9NX3ApXTsKKyAgICAgIGNvd3N0 ciBfTV9zdHI7CisgICAgfTsKKworICAgIF9fY293X3N0cmluZygpOworICAg IF9fY293X3N0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgcyk7CisgICAgX19j b3dfc3RyaW5nKGNvbnN0IGNoYXIqKTsKKyAgICBfX2Nvd19zdHJpbmcoY29u c3QgY2hhciosIHNpemVfdCk7CisgICAgX19jb3dfc3RyaW5nKGNvbnN0IF9f Y293X3N0cmluZyYpIG5vZXhjZXB0OworICAgIF9fY293X3N0cmluZyYgb3Bl cmF0b3I9KGNvbnN0IF9fY293X3N0cmluZyYpIG5vZXhjZXB0OworICAgIH5f X2Nvd19zdHJpbmcoKTsKKyAgICBfX2Nvd19zdHJpbmcoX19jb3dfc3RyaW5n JiYpIG5vZXhjZXB0OworICAgIF9fY293X3N0cmluZyYgb3BlcmF0b3I9KF9f Y293X3N0cmluZyYmKSBub2V4Y2VwdDsKKyAgICBjb25zdCBjaGFyKiBjX3N0 cigpIGNvbnN0IG5vZXhjZXB0OworICB9OworX0dMSUJDWFhfRU5EX05BTUVT UEFDRV9WRVJTSU9OCit9CisjZW5kaWYKKworI2RlZmluZSBfR0xJQkNYWF9E RUZJTkVfU1RERVhDRVBUX0lOU1RBTlRJQVRJT05TIDEKICNpbmNsdWRlIDxz dGRleGNlcHQ+CiAjaW5jbHVkZSA8c3lzdGVtX2Vycm9yPgotI3VuZGVmIF9f Y293X3N0cmluZwogCiBuYW1lc3BhY2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJ VFkoZGVmYXVsdCkKIHsKQEAgLTExNCwzMCArMTU1LDE2IEBAIF9HTElCQ1hY X0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgIC8vIENvbnZlcnRpbmcgY29u c3RydWN0b3IgZnJvbSBDT1cgc3RkOjpzdHJpbmcgdG8gU1NPIHN0cmluZy4K ICAgX19zc29fc3RyaW5nOjpfX3Nzb19zdHJpbmcoY29uc3Qgc3RyaW5nJiBz KQogICA6IF9fc3NvX3N0cmluZyhzLmNfc3RyKCksIHMubGVuZ3RoKCkpIHsg fQorI2VuZGlmCiAKLSAgLy8gUmVkZWZpbmUgX19jb3dfc3RyaW5nIHNvIHRo YXQgd2UgY2FuIGRlZmluZSBhbmQgZXhwb3J0IGl0cyBtZW1iZXJzCi0gIC8v IGluIHRlcm1zIG9mIHRoZSBDT1cgc3RkOjpzdHJpbmcuCi0gIHN0cnVjdCBf X2Nvd19zdHJpbmcKLSAgewotICAgIHVuaW9uIHsKLSAgICAgIGNvbnN0IGNo YXIqIF9NX3A7Ci0gICAgICBjaGFyIF9NX2J5dGVzW3NpemVvZihfTV9wKV07 Ci0gICAgICBzdGQ6OnN0cmluZyBfTV9zdHI7Ci0gICAgfTsKLQotICAgIF9f Y293X3N0cmluZygpOwotICAgIF9fY293X3N0cmluZyhjb25zdCBzdGQ6OnN0 cmluZyYgcyk7Ci0gICAgX19jb3dfc3RyaW5nKGNvbnN0IGNoYXIqLCBzaXpl X3Qgbik7Ci0gICAgX19jb3dfc3RyaW5nKGNvbnN0IF9fY293X3N0cmluZyYp IG5vZXhjZXB0OwotICAgIF9fY293X3N0cmluZyYgb3BlcmF0b3I9KGNvbnN0 IF9fY293X3N0cmluZyYpIG5vZXhjZXB0OwotICAgIH5fX2Nvd19zdHJpbmco KTsKLSAgICBfX2Nvd19zdHJpbmcoX19jb3dfc3RyaW5nJiYpIG5vZXhjZXB0 OwotICAgIF9fY293X3N0cmluZyYgb3BlcmF0b3I9KF9fY293X3N0cmluZyYm KSBub2V4Y2VwdDsKLSAgfTsKLQorI2lmIF9HTElCQ1hYX1VTRV9EVUFMX0FC SSB8fCBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAgIF9fY293X3N0cmluZzo6 X19jb3dfc3RyaW5nKCkgOiBfTV9zdHIoKSB7IH0KIAorI2lmICFfR0xJQkNY WF9VU0VfQ1hYMTFfQUJJCiAgIF9fY293X3N0cmluZzo6X19jb3dfc3RyaW5n KGNvbnN0IHN0ZDo6c3RyaW5nJiBzKSA6IF9NX3N0cihzKSB7IH0KKyNlbmRp ZgorCisgIF9fY293X3N0cmluZzo6X19jb3dfc3RyaW5nKGNvbnN0IGNoYXIq IHMpIDogX01fc3RyKHMpIHsgfQogCiAgIF9fY293X3N0cmluZzo6X19jb3df c3RyaW5nKGNvbnN0IGNoYXIqIHMsIHNpemVfdCBuKSA6IF9NX3N0cihzLCBu KSB7IH0KIApAQCAtMTUxLDcgKzE3OCw3IEBAIF9HTElCQ1hYX0JFR0lOX05B TUVTUEFDRV9WRVJTSU9OCiAgICAgcmV0dXJuICp0aGlzOwogICB9CiAKLSAg X19jb3dfc3RyaW5nOjp+X19jb3dfc3RyaW5nKCkgeyBfTV9zdHIufmJhc2lj X3N0cmluZygpOyB9CisgIF9fY293X3N0cmluZzo6fl9fY293X3N0cmluZygp IHsgX01fc3RyLn5jb3dzdHIoKTsgfQogCiAgIF9fY293X3N0cmluZzo6X19j b3dfc3RyaW5nKF9fY293X3N0cmluZyYmIHMpIG5vZXhjZXB0CiAgIDogX01f c3RyKHN0ZDo6bW92ZShzLl9NX3N0cikpIHsgfQpAQCAtMTYzLDEyICsxOTAs MTcgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgICBy ZXR1cm4gKnRoaXM7CiAgIH0KIAotICBzdGF0aWNfYXNzZXJ0KHNpemVvZihf X2Nvd19zdHJpbmcpID09IHNpemVvZihzdGQ6OnN0cmluZyksCisgIGNvbnN0 IGNoYXIqCisgIF9fY293X3N0cmluZzo6Y19zdHIoKSBjb25zdCBub2V4Y2Vw dAorICB7IHJldHVybiBfTV9zdHIuY19zdHIoKTsgfQorCisgIHN0YXRpY19h c3NlcnQoc2l6ZW9mKF9fY293X3N0cmluZykgPT0gc2l6ZW9mKGNvd3N0ciks CiAgICAgICAgICAgICAgICAgInNpemVvZihzdGQ6OnN0cmluZykgaGFzIGNo YW5nZWQiKTsKLSAgc3RhdGljX2Fzc2VydChhbGlnbm9mKF9fY293X3N0cmlu ZykgPT0gYWxpZ25vZihzdGQ6OnN0cmluZyksCisgIHN0YXRpY19hc3NlcnQo YWxpZ25vZihfX2Nvd19zdHJpbmcpID09IGFsaWdub2YoY293c3RyKSwKICAg ICAgICAgICAgICAgICAiYWxpZ25vZihzdGQ6OnN0cmluZykgaGFzIGNoYW5n ZWQiKTsKLSNlbmRpZgorI2VuZGlmIC8vIF9HTElCQ1hYX1VTRV9DWFgxMV9B QkkKIAorI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQogICAvLyBSZXR1 cm4gZXJyb3JfY2F0ZWdvcnk6Om1lc3NhZ2UoKSBhcyBhbiBTU08gc3RyaW5n CiAgIF9fc3NvX3N0cmluZwogICBlcnJvcl9jYXRlZ29yeTo6X01fbWVzc2Fn ZShpbnQgaSkgY29uc3QKQEAgLTE3NiwxMCArMjA4LDEyIEBAIF9HTElCQ1hY X0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgICAgc3RyaW5nIG1zZyA9IHRo aXMtPm1lc3NhZ2UoaSk7CiAgICAgcmV0dXJuIHttc2cuY19zdHIoKSwgbXNn Lmxlbmd0aCgpfTsKICAgfQorI2VuZGlmCiAKIF9HTElCQ1hYX0VORF9OQU1F U1BBQ0VfVkVSU0lPTgogfSAvLyBuYW1lc3BhY2UKIAorI2lmICEgX0dMSUJD WFhfVVNFX0NYWDExX0FCSQogLy8gU3VwcG9ydCBmb3IgdGhlIFRyYW5zYWN0 aW9uYWwgTWVtb3J5IFRTIChONDUxNCkuCiAvLwogLy8gbG9naWNfZXJyb3Ig YW5kIHJ1bnRpbWVfZXJyb3IgYm90aCBjYXJyeSBhIG1lc3NhZ2UgaW4gdGhl IGZvcm0gb2YgYSBDT1cKQEAgLTQ2MywzICs0OTcsNCBAQCBDVE9SRFRPUigx NXVuZGVyZmxvd19lcnJvciwgc3RkOjp1bmRlcmZsb3dfZXJyb3IsIHJ1bnRp bWVfZXJyb3IpCiAKICNlbmRpZiAgLy8gX0dMSUJDWFhfVVNFX0M5OV9TVERJ TlQKICNlbmRpZiAgLy8gX0dMSUJDWFhfVVNFX1dFQUtfUkVGCisjZW5kaWYg IC8vICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQpkaWZmIC0tZ2l0IGEvbGli c3RkYysrLXYzL3NyYy9jKysxMS9jb3ctc3RyaW5nLWluc3QuY2MgYi9saWJz dGRjKystdjMvc3JjL2MrKzExL2Nvdy1zdHJpbmctaW5zdC5jYwppbmRleCA1 YTJiOGZmYTU2OC4uNTdjMjgxMjlmMDAgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMr Ky12My9zcmMvYysrMTEvY293LXN0cmluZy1pbnN0LmNjCisrKyBiL2xpYnN0 ZGMrKy12My9zcmMvYysrMTEvY293LXN0cmluZy1pbnN0LmNjCkBAIC0yOSwx MCArMjksNyBAQAogI2RlZmluZSBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIDAK ICNpbmNsdWRlICJzdHJpbmctaW5zdC5jYyIKIAotI2lmICEgX0dMSUJDWFhf VVNFX0RVQUxfQUJJCi0jIGVycm9yIFRoaXMgZmlsZSBzaG91bGQgbm90IGJl IGNvbXBpbGVkIGZvciB0aGlzIGNvbmZpZ3VyYXRpb24uCi0jZW5kaWYKLQor I2lmIF9HTElCQ1hYX1VTRV9EVUFMX0FCSSAmJiAhIF9HTElCQ1hYX1VTRV9D WFgxMV9BQkkKICNpbmNsdWRlIDxyYW5kb20+CiAKIG5hbWVzcGFjZSBzdGQg X0dMSUJDWFhfVklTSUJJTElUWShkZWZhdWx0KQpAQCAtNDUsMyArNDIsNCBA QCBuYW1lc3BhY2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkK ICAgcmFuZG9tX2RldmljZTo6X01faW5pdF9wcmV0cjEoY29uc3Qgc3RkOjpz dHJpbmcmIHRva2VuKQogICB7IF9NX2luaXQodG9rZW4uY19zdHIoKSwgdG9r ZW4ubGVuZ3RoKCkpOyB9CiB9IC8vIG5hbWVzcGFjZQorI2VuZGlmCmRpZmYg LS1naXQgYS9saWJzdGRjKystdjMvc3JjL2MrKzExL2Nvdy1zdHJpbmctaW8t aW5zdC5jYyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LXN0cmluZy1p by1pbnN0LmNjCmluZGV4IDUwNWJjOWRkMzg0Li45YWJjOWI0N2U1MiAxMDA2 NDQKLS0tIGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jb3ctc3RyaW5nLWlv LWluc3QuY2MKKysrIGIvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jb3ctc3Ry aW5nLWlvLWluc3QuY2MKQEAgLTMwLDEwICszMCw3IEBACiAjaW5jbHVkZSA8 aXN0cmVhbT4KICNpbmNsdWRlIDxvc3RyZWFtPgogCi0jaWYgISBfR0xJQkNY WF9VU0VfRFVBTF9BQkkKLSMgZXJyb3IgVGhpcyBmaWxlIHNob3VsZCBub3Qg YmUgY29tcGlsZWQgZm9yIHRoaXMgY29uZmlndXJhdGlvbi4KLSNlbmRpZgot CisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiBuYW1lc3BhY2Ugc3Rk IF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKIHsKIF9HTElCQ1hYX0JF R0lOX05BTUVTUEFDRV9WRVJTSU9OCkBAIC01NywzICs1NCw0IEBAIF9HTElC Q1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAKIF9HTElCQ1hYX0VORF9O QU1FU1BBQ0VfVkVSU0lPTgogfSAvLyBuYW1lc3BhY2UKKyNlbmRpZgpkaWZm IC0tZ2l0IGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jb3ctd3N0cmluZy1p bnN0LmNjIGIvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jb3ctd3N0cmluZy1p bnN0LmNjCmluZGV4IGNlNTMzZWE4ZmE1Li5kM2MzYjBjMjk3ZSAxMDA2NDQK LS0tIGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jb3ctd3N0cmluZy1pbnN0 LmNjCisrKyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LXdzdHJpbmct aW5zdC5jYwpAQCAtMjksMTIgKzI5LDkgQEAKICNkZWZpbmUgX0dMSUJDWFhf VVNFX0NYWDExX0FCSSAwCiAjaW5jbHVkZSA8Yml0cy9jKytjb25maWcuaD4K IAorI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQogI2lmZGVmIF9HTElC Q1hYX1VTRV9XQ0hBUl9UCiAjZGVmaW5lIEMgd2NoYXJfdAogI2luY2x1ZGUg InN0cmluZy1pbnN0LmNjIgotCi0jaWYgISBfR0xJQkNYWF9VU0VfRFVBTF9B QkkKLSMgZXJyb3IgVGhpcyBmaWxlIHNob3VsZCBub3QgYmUgY29tcGlsZWQg Zm9yIHRoaXMgY29uZmlndXJhdGlvbi4KICNlbmRpZgotCiAjZW5kaWYKZGlm ZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LXdzdHJpbmct aW8taW5zdC5jYyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LXdzdHJp bmctaW8taW5zdC5jYwppbmRleCA0OTM5NGIwZTI3NS4uMGU2Y2M0OTBmYTQg MTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY293LXdzdHJp bmctaW8taW5zdC5jYworKysgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL2Nv dy13c3RyaW5nLWlvLWluc3QuY2MKQEAgLTI5LDE0ICsyOSwxMSBAQAogI2Rl ZmluZSBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIDAKICNpbmNsdWRlIDxiaXRz L2MrK2NvbmZpZy5oPgogCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJ CiAjaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKICNpbmNsdWRlIDxvc3Ry ZWFtPgogI2luY2x1ZGUgPGlzdHJlYW0+CiAKLSNpZiAhIF9HTElCQ1hYX1VT RV9EVUFMX0FCSQotIyBlcnJvciBUaGlzIGZpbGUgc2hvdWxkIG5vdCBiZSBj b21waWxlZCBmb3IgdGhpcyBjb25maWd1cmF0aW9uLgotI2VuZGlmCi0KIG5h bWVzcGFjZSBzdGQgX0dMSUJDWFhfVklTSUJJTElUWShkZWZhdWx0KQogewog X0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KQEAgLTYxLDMgKzU4 LDQgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KIF9HTElC Q1hYX0VORF9OQU1FU1BBQ0VfVkVSU0lPTgogfSAvLyBuYW1lc3BhY2UKICNl bmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvc3JjL2Mr KzExL2N4eDExLWhhc2hfdHIxLmNjIGIvbGlic3RkYysrLXYzL3NyYy9jKysx MS9jeHgxMS1oYXNoX3RyMS5jYwppbmRleCAyMmE3Njg1ZWVjYS4uMGI5ZmMy OGNlYWEgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY3h4 MTEtaGFzaF90cjEuY2MKKysrIGIvbGlic3RkYysrLXYzL3NyYy9jKysxMS9j eHgxMS1oYXNoX3RyMS5jYwpAQCAtMjUsOSArMjUsNyBAQAogI2RlZmluZSBf R0xJQkNYWF9VU0VfQ1hYMTFfQUJJIDEKICNpbmNsdWRlIDxzdHJpbmc+CiAK LSNpZiAhIF9HTElCQ1hYX1VTRV9EVUFMX0FCSQotIyBlcnJvciBUaGlzIGZp bGUgc2hvdWxkIG5vdCBiZSBjb21waWxlZCBmb3IgdGhpcyBjb25maWd1cmF0 aW9uLgotI2VuZGlmCisjaWYgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQogCiAj aW5jbHVkZSA8dHIxL2Z1bmN0aW9uYWw+CiBuYW1lc3BhY2Ugc3RkIF9HTElC Q1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKQEAgLTU3LDMgKzU1LDUgQEAgbmFt ZXNwYWNlIHN0ZCBfR0xJQkNYWF9WSVNJQklMSVRZKGRlZmF1bHQpCiAjZW5k aWYKICAgfQogfQorCisjZW5kaWYgLy8gX0dMSUJDWFhfVVNFX0NYWDExX0FC SQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jeHgxMS1p b3NfZmFpbHVyZS5jYyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY3h4MTEt aW9zX2ZhaWx1cmUuY2MKaW5kZXggZTBlODE2YjQ1M2IuLjQ2YmZkYTMyOWRl IDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2MrKzExL2N4eDExLWlv c19mYWlsdXJlLmNjCisrKyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY3h4 MTEtaW9zX2ZhaWx1cmUuY2MKQEAgLTM4LDkgKzM4LDcgQEAKICMgZGVmaW5l IF8obXNnaWQpICAgKG1zZ2lkKQogI2VuZGlmCiAKLSNpZiAhIF9HTElCQ1hY X1VTRV9EVUFMX0FCSQotIyBlcnJvciBUaGlzIGZpbGUgc2hvdWxkIG5vdCBi ZSBjb21waWxlZCBmb3IgdGhpcyBjb25maWd1cmF0aW9uLgotI2VuZGlmCisj aWYgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQogCiBuYW1lc3BhY2Ugc3RkIF9H TElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKIHsKQEAgLTYyLDcgKzYwLDcg QEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KICAgaW9zX2Jh c2U6OmZhaWx1cmU6OndoYXQoKSBjb25zdCB0aHJvdygpCiAgIHsgcmV0dXJu IHJ1bnRpbWVfZXJyb3I6OndoYXQoKTsgfQogCi0jaWYgX19jcHBfcnR0aQor I2lmIF9HTElCQ1hYX1VTRV9EVUFMX0FCSSAmJiBfX2NwcF9ydHRpCiAgIC8v IFRoZXNlIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZCBpbiBzcmMvYysrOTgvaW9z X2ZhaWx1cmUuY2MKICAgZXh0ZXJuIHZvaWQgX19jb25zdHJ1Y3RfaW9zX2Zh aWx1cmUodm9pZCosIGNvbnN0IGNoYXIqKTsKICAgZXh0ZXJuIHZvaWQgX19k ZXN0cm95X2lvc19mYWlsdXJlKHZvaWQqKTsKQEAgLTExOCw3ICsxMTYsNyBA QCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogICAgIC8vIE90 aGVyd2lzZSBwcm9jZWVkIGFzIG5vcm1hbCB0byBzZWUgaWYgdGhlIGhhbmRs ZXIgbWF0Y2hlcy4KICAgICByZXR1cm4gX19jbGFzc190eXBlX2luZm86Ol9f ZG9fdXBjYXN0KGRzdF90eXBlLCBvYmpfcHRyKTsKICAgfQotI2Vsc2UgLy8g ISBfX2NwcF9ydHRpCisjZWxzZSAvLyAhIF9HTElCQ1hYX1VTRV9EVUFMX0FC SSB8fCAhIF9fY3BwX3J0dGkKICAgdXNpbmcgX19pb3NfZmFpbHVyZSA9IGlv czo6ZmFpbHVyZTsKICNlbmRpZgogCkBAIC0xMzYsMyArMTM0LDUgQEAgX0dM SUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KIAogX0dMSUJDWFhfRU5E X05BTUVTUEFDRV9WRVJTSU9OCiB9IC8vIG5hbWVzcGFjZQorCisjZW5kaWYg Ly8gX0dMSUJDWFhfVVNFX0NYWDExX0FCSQpkaWZmIC0tZ2l0IGEvbGlic3Rk YysrLXYzL3NyYy9jKysxMS9jeHgxMS1sb2NhbGUtaW5zdC5jYyBiL2xpYnN0 ZGMrKy12My9zcmMvYysrMTEvY3h4MTEtbG9jYWxlLWluc3QuY2MKaW5kZXgg OTRiMTgxODg2ZDMuLmUyMWNjNTU0OGJmIDEwMDY0NAotLS0gYS9saWJzdGRj KystdjMvc3JjL2MrKzExL2N4eDExLWxvY2FsZS1pbnN0LmNjCisrKyBiL2xp YnN0ZGMrKy12My9zcmMvYysrMTEvY3h4MTEtbG9jYWxlLWluc3QuY2MKQEAg LTI3LDExICsyNyw1IEBACiAvLyBGYWNldCBpbnN0YW50aWF0aW9ucyB1c2lu ZyBuZXcgQUJJIHN0cmluZ3MuCiAKICNkZWZpbmUgX0dMSUJDWFhfVVNFX0NY WDExX0FCSSAxCi0jaW5jbHVkZSA8Yml0cy9jKytjb25maWcuaD4KLSNpZiAh IF9HTElCQ1hYX1VTRV9EVUFMX0FCSQotIyBlcnJvciBUaGlzIGZpbGUgc2hv dWxkIG5vdCBiZSBjb21waWxlZCBmb3IgdGhpcyBjb25maWd1cmF0aW9uLgot I2VuZGlmCiAKLSNkZWZpbmUgQyBjaGFyCi0jZGVmaW5lIENfaXNfY2hhcgot IyBpbmNsdWRlICJsb2NhbGUtaW5zdC5jYyIKKyNpbmNsdWRlICJsb2NhbGUt aW5zdC5jYyIKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEv Y3h4MTEtc3RkZXhjZXB0LmNjIGIvbGlic3RkYysrLXYzL3NyYy9jKysxMS9j eHgxMS1zdGRleGNlcHQuY2MKaW5kZXggNzRjMDcwYzA0MzkuLjM4YWIzNTY5 MmEzIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2MrKzExL2N4eDEx LXN0ZGV4Y2VwdC5jYworKysgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL2N4 eDExLXN0ZGV4Y2VwdC5jYwpAQCAtMjksOSArMjksNyBAQAogI2RlZmluZSBf R0xJQkNYWF9VU0VfQ1hYMTFfQUJJIDEKICNpbmNsdWRlIDxzdGRleGNlcHQ+ CiAKLSNpZiAhIF9HTElCQ1hYX1VTRV9EVUFMX0FCSQotIyBlcnJvciBUaGlz IGZpbGUgc2hvdWxkIG5vdCBiZSBjb21waWxlZCBmb3IgdGhpcyBjb25maWd1 cmF0aW9uLgotI2VuZGlmCisjaWYgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQog CiBuYW1lc3BhY2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkK IHsKQEAgLTc2LDMgKzc0LDUgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNF X1ZFUlNJT04KIAogX0dMSUJDWFhfRU5EX05BTUVTUEFDRV9WRVJTSU9OCiB9 IC8vIG5hbWVzcGFjZQorCisjZW5kaWYgLy8gX0dMSUJDWFhfVVNFX0NYWDEx X0FCSQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jeHgx MS13bG9jYWxlLWluc3QuY2MgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL2N4 eDExLXdsb2NhbGUtaW5zdC5jYwppbmRleCAxMWZiMTVkOTYwMi4uZmFmZjIz NmMxZGYgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY3h4 MTEtd2xvY2FsZS1pbnN0LmNjCisrKyBiL2xpYnN0ZGMrKy12My9zcmMvYysr MTEvY3h4MTEtd2xvY2FsZS1pbnN0LmNjCkBAIC0yOCwxMSArMjgsMTAgQEAK IAogI2RlZmluZSBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIDEKICNpbmNsdWRl IDxiaXRzL2MrK2NvbmZpZy5oPgotI2lmICEgX0dMSUJDWFhfVVNFX0RVQUxf QUJJCi0jIGVycm9yIFRoaXMgZmlsZSBzaG91bGQgbm90IGJlIGNvbXBpbGVk IGZvciB0aGlzIGNvbmZpZ3VyYXRpb24uCi0jZW5kaWYKIAotI2lmZGVmIF9H TElCQ1hYX1VTRV9XQ0hBUl9UCi0jZGVmaW5lIEMgd2NoYXJfdAotI2luY2x1 ZGUgImxvY2FsZS1pbnN0LmNjIgorI2lmIF9HTElCQ1hYX1VTRV9DWFgxMV9B QkkKKyMgaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKKyMgIGRlZmluZSBD IHdjaGFyX3QKKyMgIGluY2x1ZGUgImxvY2FsZS1pbnN0LmNjIgorIyBlbmRp ZgogI2VuZGlmCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvc3JjL2MrKzEx L2xvY2FsZS1pbnN0LW51bWVyaWMuaCBiL2xpYnN0ZGMrKy12My9zcmMvYysr MTEvbG9jYWxlLWluc3QtbnVtZXJpYy5oCmluZGV4IGI5MTdmZTU4MDJlLi4y MTFlMTljN2ZmOSAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL3NyYy9jKysx MS9sb2NhbGUtaW5zdC1udW1lcmljLmgKKysrIGIvbGlic3RkYysrLXYzL3Ny Yy9jKysxMS9sb2NhbGUtaW5zdC1udW1lcmljLmgKQEAgLTMwLDcgKzMwLDcg QEAKIAogbmFtZXNwYWNlIHN0ZCBfR0xJQkNYWF9WSVNJQklMSVRZKGRlZmF1 bHQpCiB7Ci0jaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCisjaWYgISBf R0xJQkNYWF9VU0VfQ1hYMTFfQUJJIHx8ICEgX0dMSUJDWFhfVVNFX0RVQUxf QUJJCiAvLyB1c2VfZmFjZXQgYW5kIGhhc19mYWNldCBpbnN0YW50aWF0aW9u cwogSU5TVEFOVElBVEVfRkFDRVRfQUNDRVNTT1JTKG51bV9nZXQ8Qz4pOwog SU5TVEFOVElBVEVfRkFDRVRfQUNDRVNTT1JTKG51bV9wdXQ8Qz4pOwpAQCAt MzgsNyArMzgsNyBAQCBJTlNUQU5USUFURV9GQUNFVF9BQ0NFU1NPUlMobnVt X3B1dDxDPik7CiAKIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9MREJMCiAK LSNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKKyNpZiAhIF9HTElCQ1hY X1VTRV9DWFgxMV9BQkkgfHwgISBfR0xJQkNYWF9VU0VfRFVBTF9BQkkKICAg dGVtcGxhdGUgY2xhc3MgbnVtX2dldDxDLCBpc3RyZWFtYnVmX2l0ZXJhdG9y PEM+ID47CiAgIHRlbXBsYXRlIGNsYXNzIG51bV9wdXQ8Qywgb3N0cmVhbWJ1 Zl9pdGVyYXRvcjxDPiA+OwogI2VuZGlmCkBAIC04OCw3ICs4OCw3IEBAIF9H TElCQ1hYX0JFR0lOX05BTUVTUEFDRV9MREJMCiAJCSAgIHVuc2lnbmVkIGxv bmcgbG9uZyYpIGNvbnN0OwogI2VuZGlmCiAKLSNpZiAhIF9HTElCQ1hYX1VT RV9DWFgxMV9BQkkKKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkgfHwg ISBfR0xJQkNYWF9VU0VfRFVBTF9BQkkKICAgLy8gbnVtX3B1dCBtZW1iZXIg ZnVuY3Rpb24gdGVtcGxhdGVzCiAgIHRlbXBsYXRlCiAgICAgb3N0cmVhbWJ1 Zl9pdGVyYXRvcjxDPgpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3NyYy9j KysxMS9sb2NhbGUtaW5zdC5jYyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEv bG9jYWxlLWluc3QuY2MKaW5kZXggM2E1YzY4NDRmMWIuLmVlMzM3NWQ3MDQw IDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2MrKzExL2xvY2FsZS1p bnN0LmNjCisrKyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvbG9jYWxlLWlu c3QuY2MKQEAgLTM1LDggKzM1LDE3IEBACiAjIGRlZmluZSBfR0xJQkNYWF9V U0VfQ1hYMTFfQUJJIDAKICNlbmRpZgogCi0jaW5jbHVkZSA8bG9jYWxlPgor I2lmIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKKyMgZGVmaW5lIF9HTElCQ1hY X0JVSUxEX0NYWDExX0FCSSAxCisjZWxzZQorIyBkZWZpbmUgX0dMSUJDWFhf QlVJTERfQ1hYMTFfQUJJIDAKKyNlbmRpZgorCisjaW5jbHVkZSA8Yml0cy9j Kytjb25maWcuaD4KIAorI2lmIF9HTElCQ1hYX0JVSUxEX0NYWDExX0FCSSA9 PSBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCisKKyNpbmNsdWRlIDxsb2NhbGU+ CiAvLyBJbnN0YW50aWF0aW9uIGNvbmZpZ3VyYXRpb24uCiAjaWZuZGVmIEMK ICMgZGVmaW5lIEMgY2hhcgpAQCAtNTIsNyArNjEsNyBAQCBuYW1lc3BhY2Ug c3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKIF9HTElCQ1hYX0JF R0lOX05BTUVTUEFDRV9WRVJTSU9OCiAKICAgLy8gbW9uZXlwdW5jdCwgbW9u ZXlfZ2V0LCBhbmQgbW9uZXlfcHV0Ci0jaWYgISBfR0xJQkNYWF9VU0VfQ1hY MTFfQUJJCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIHx8ICEgX0dM SUJDWFhfVVNFX0RVQUxfQUJJCiAgIHRlbXBsYXRlIHN0cnVjdCBfX21vbmV5 cHVuY3RfY2FjaGU8QywgZmFsc2U+OwogICB0ZW1wbGF0ZSBzdHJ1Y3QgX19t b25leXB1bmN0X2NhY2hlPEMsIHRydWU+OwogI2VuZGlmCkBAIC02NCw3ICs3 Myw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9DWFgxMQogX0dMSUJD WFhfRU5EX05BTUVTUEFDRV9DWFgxMQogCiAgIC8vIG51bXB1bmN0LCBudW1w dW5jdF9ieW5hbWUsIG51bV9nZXQsIGFuZCBudW1fcHV0Ci0jaWYgISBfR0xJ QkNYWF9VU0VfQ1hYMTFfQUJJCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFf QUJJIHx8ICEgX0dMSUJDWFhfVVNFX0RVQUxfQUJJCiAgIHRlbXBsYXRlIHN0 cnVjdCBfX251bXB1bmN0X2NhY2hlPEM+OwogI2VuZGlmCiBfR0xJQkNYWF9C RUdJTl9OQU1FU1BBQ0VfQ1hYMTEKQEAgLTczLDcgKzgyLDcgQEAgX0dMSUJD WFhfQkVHSU5fTkFNRVNQQUNFX0NYWDExCiBfR0xJQkNYWF9FTkRfTkFNRVNQ QUNFX0NYWDExCiAKICAgLy8gdGltZV9nZXQgYW5kIHRpbWVfcHV0Ci0jaWYg ISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCisjaWYgISBfR0xJQkNYWF9VU0Vf Q1hYMTFfQUJJIHx8ICEgX0dMSUJDWFhfVVNFX0RVQUxfQUJJCiAgIHRlbXBs YXRlIGNsYXNzIF9fdGltZXB1bmN0PEM+OwogICB0ZW1wbGF0ZSBzdHJ1Y3Qg X190aW1lcHVuY3RfY2FjaGU8Qz47CiAgIHRlbXBsYXRlIGNsYXNzIHRpbWVf cHV0PEMsIG9zdHJlYW1idWZfaXRlcmF0b3I8Qz4gPjsKQEAgLTk3LDEzICsx MDYsMTMgQEAgX0dMSUJDWFhfRU5EX05BTUVTUEFDRV9DWFgxMQogICBjdHlw ZV9ieW5hbWU8Qz46OmN0eXBlX2J5bmFtZShjb25zdCBzdHJpbmcmIF9fcywg c2l6ZV90IF9fcmVmcykKICAgOiBjdHlwZV9ieW5hbWUoX19zLmNfc3RyKCks IF9fcmVmcykgeyB9CiAKLSNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkK KyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkgfHwgISBfR0xJQkNYWF9V U0VfRFVBTF9BQkkKICAgaW5saW5lIHRlbXBsYXRlIGNsYXNzIF9fY3R5cGVf YWJzdHJhY3RfYmFzZTxDPjsKICAgdGVtcGxhdGUgY2xhc3MgY3R5cGVfYnlu YW1lPEM+OwogI2VuZGlmCiAKICAgLy8gY29kZWN2dAotI2lmICEgX0dMSUJD WFhfVVNFX0NYWDExX0FCSQorI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FC SSB8fCAhIF9HTElCQ1hYX1VTRV9EVUFMX0FCSQogICBpbmxpbmUgdGVtcGxh dGUgY2xhc3MgX19jb2RlY3Z0X2Fic3RyYWN0X2Jhc2U8QywgY2hhciwgbWJz dGF0ZV90PjsKICAgdGVtcGxhdGUgY2xhc3MgY29kZWN2dF9ieW5hbWU8Qywg Y2hhciwgbWJzdGF0ZV90PjsKICNlbHNlCkBAIC0xMTgsNyArMTI3LDcgQEAg X0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX0NYWDExCiBfR0xJQkNYWF9FTkRf TkFNRVNQQUNFX0NYWDExCiAKIC8vIHVzZV9mYWNldCBhbmQgaGFzX2ZhY2V0 IGluc3RhbnRpYXRpb25zCi0jaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJ CisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIHx8ICEgX0dMSUJDWFhf VVNFX0RVQUxfQUJJCiBJTlNUQU5USUFURV9GQUNFVF9BQ0NFU1NPUlMoY3R5 cGU8Qz4pOwogSU5TVEFOVElBVEVfRkFDRVRfQUNDRVNTT1JTKGNvZGVjdnQ8 QywgY2hhciwgbWJzdGF0ZV90Pik7CiAjZW5kaWYKQEAgLTEyNywxNCArMTM2 LDE0IEBAIElOU1RBTlRJQVRFX0ZBQ0VUX0FDQ0VTU09SUyhudW1wdW5jdDxD Pik7CiBJTlNUQU5USUFURV9GQUNFVF9BQ0NFU1NPUlMobW9uZXlwdW5jdDxD LCBmYWxzZT4pOwogLy8gTm8gZXhwbGljaXQgaW5zdGFudGlhdGlvbiBvZiBo YXNfZmFjZXQ8bW9uZXlwdW5jdDxDLCB0cnVlPj4gZm9yIHNvbWUgcmVhc29u LgogSU5TVEFOVElBVEVfVVNFX0ZBQ0VUICAgICAgKG1vbmV5cHVuY3Q8Qywg dHJ1ZT4pOwotI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQorI2lmICEg X0dMSUJDWFhfVVNFX0NYWDExX0FCSSB8fCAhIF9HTElCQ1hYX1VTRV9EVUFM X0FCSQogSU5TVEFOVElBVEVfRkFDRVRfQUNDRVNTT1JTKF9fdGltZXB1bmN0 PEM+KTsKIElOU1RBTlRJQVRFX0ZBQ0VUX0FDQ0VTU09SUyh0aW1lX3B1dDxD Pik7CiAjZW5kaWYKIElOU1RBTlRJQVRFX0ZBQ0VUX0FDQ0VTU09SUyh0aW1l X2dldDxDPik7CiBJTlNUQU5USUFURV9GQUNFVF9BQ0NFU1NPUlMobWVzc2Fn ZXM8Qz4pOwogCi0jaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCisjaWYg ISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIHx8ICEgX0dMSUJDWFhfVVNFX0RV QUxfQUJJCiAgIC8vIGxvY2FsZSBmdW5jdGlvbnMuCiAgIHRlbXBsYXRlCiAg ICAgQyoKQEAgLTE2MywzICsxNzIsNSBAQCBfR0xJQkNYWF9FTkRfTkFNRVNQ QUNFX1ZFUlNJT04KICNpZiBkZWZpbmVkIF9HTElCQ1hYX0xPTkdfRE9VQkxF X0NPTVBBVCAmJiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKICNpbmNsdWRl ICJjb21wYXRpYmlsaXR5LWxkYmwtZmFjZXRzLWFsaWFzZXMuaCIKICNlbmRp ZiAvLyBfR0xJQkNYWF9MT05HX0RPVUJMRV9DT01QQVQKKworI2VuZGlmIC8v ICBfR0xJQkNYWF9CVUlMRF9DWFgxMV9BQkkgPT0gX0dMSUJDWFhfVVNFX0NY WDExX0FCSQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9z dHJpbmctaW5zdC5jYyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvc3RyaW5n LWluc3QuY2MKaW5kZXggZGRhYWZjMDgxOTkuLmYyOTE3NmRmYzg4IDEwMDY0 NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2MrKzExL3N0cmluZy1pbnN0LmNj CisrKyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvc3RyaW5nLWluc3QuY2MK QEAgLTM1LDYgKzM1LDEyIEBACiAjIGRlZmluZSBfR0xJQkNYWF9VU0VfQ1hY MTFfQUJJIDEKICNlbmRpZgogCisjaWYgX0dMSUJDWFhfVVNFX0NYWDExX0FC SQorIyBkZWZpbmUgX0dMSUJDWFhfREVGSU5JTkdfQ1hYMTFfQUJJX0lOU1RB TlRJQVRJT05TIDEKKyNlbHNlCisjIGRlZmluZSBfR0xJQkNYWF9ERUZJTklO R19DWFgxMV9BQklfSU5TVEFOVElBVElPTlMgMAorI2VuZGlmCisKIC8vIFBy ZXZlbnQgdGhlIGJhc2ljX3N0cmluZyhjb25zdCBfQ2hhclQqLCBjb25zdCBf QWxsb2MmKSBhbmQKIC8vIGJhc2ljX3N0cmluZyhzaXplX3R5cGUsIF9DaGFy VCwgY29uc3QgX0FsbG9jJikgY29uc3RydWN0b3JzIGZyb20gYmVpbmcKIC8v IHJlcGxhY2VkIGJ5IGNvbnN0cmFpbmVkIGZ1bmN0aW9uIHRlbXBsYXRlcywg c28gdGhhdCB3ZSBpbnN0YW50aWF0ZSB0aGUKQEAgLTQ1LDYgKzUxLDI5IEBA CiAKICNpbmNsdWRlIDxzdHJpbmc+CiAKKyNpZiBfR0xJQkNYWF9VU0VfRFVB TF9BQkkgfHwgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQorI2luY2x1ZGUgPHN0 ZGV4Y2VwdD4KKworI2lmIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKKyMgaW5j bHVkZSA8Yml0cy9jb3dfc3RyaW5nLmg+Cit0eXBlZGVmIHN0ZDo6X19zdGRf Y293X3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LAorCQkJ ICAgICAgc3RkOjphbGxvY2F0b3I8Y2hhcj4+IGNvd3N0cjsKKyNlbHNlCit0 eXBlZGVmIHN0ZDo6c3RyaW5nIGNvd3N0cjsKKyNlbmRpZgorCitzdGF0aWNf YXNzZXJ0KHNpemVvZihzdGQ6Ol9fY293X3N0cmluZykgPT0gc2l6ZW9mKGNv d3N0ciksCisJICAgICAgInNpemVvZihzdGQ6OnN0cmluZykgaGFzIGNoYW5n ZWQiKTsKK3N0YXRpY19hc3NlcnQoYWxpZ25vZihzdGQ6Ol9fY293X3N0cmlu ZykgPT0gYWxpZ25vZihjb3dzdHIpLAorCSAgICAgICJhbGlnbm9mKHN0ZDo6 c3RyaW5nKSBoYXMgY2hhbmdlZCIpOworI2VuZGlmIC8vIF9HTElCQ1hYX1VT RV9EVUFMX0FCSSB8fCBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCisKKyNpZiBf R0xJQkNYWF9VU0VfQ1hYMTFfQUJJICYmICEgX0dMSUJDWFhfREVGSU5JTkdf Q1hYMTFfQUJJX0lOU1RBTlRJQVRJT05TCisjIGRlZmluZSBfR0xJQkNYWF9E RUZJTklOR19DT1dfU1RSSU5HX0lOU1RBTlRJQVRJT05TIDEKKyMgaW5jbHVk ZSA8Yml0cy9jb3dfc3RyaW5nLmg+CisjIGRlZmluZSBiYXNpY19zdHJpbmcg X19zdGRfY293X3N0cmluZworI2VuZGlmCisKIC8vIEluc3RhbnRpYXRpb24g Y29uZmlndXJhdGlvbi4KICNpZm5kZWYgQwogIyBkZWZpbmUgQyBjaGFyCkBA IC01NCwxMiArODMsMTQgQEAgbmFtZXNwYWNlIHN0ZCBfR0xJQkNYWF9WSVNJ QklMSVRZKGRlZmF1bHQpCiB7CiBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0Vf VkVSU0lPTgogCi0gIHR5cGVkZWYgYmFzaWNfc3RyaW5nPEM+IFM7Cit0eXBl ZGVmIGJhc2ljX3N0cmluZzxDLCBzdGQ6OmNoYXJfdHJhaXRzPEM+LCBzdGQ6 OmFsbG9jYXRvcjxDPj4gUzsKIAotICB0ZW1wbGF0ZSBjbGFzcyBiYXNpY19z dHJpbmc8Qz47CisgIHRlbXBsYXRlIGNsYXNzIGJhc2ljX3N0cmluZzxDLCBz dGQ6OmNoYXJfdHJhaXRzPEM+LCBzdGQ6OmFsbG9jYXRvcjxDPj47CisjaWYg ISBfR0xJQkNYWF9ERUZJTklOR19DT1dfU1RSSU5HX0lOU1RBTlRJQVRJT05T CiAgIHRlbXBsYXRlIFMgb3BlcmF0b3IrKGNvbnN0IEMqLCBjb25zdCBTJik7 CiAgIHRlbXBsYXRlIFMgb3BlcmF0b3IrKEMsIGNvbnN0IFMmKTsKICAgdGVt cGxhdGUgUyBvcGVyYXRvcisoY29uc3QgUyYsIGNvbnN0IFMmKTsKKyNlbmRp ZgogCiAgIC8vIE9ubHkgb25lIHRlbXBsYXRlIGtleXdvcmQgYWxsb3dlZCBo ZXJlLgogICAvLyBTZWUgY29yZSBpc3N1ZSAjNDYgKE5BRCkKQEAgLTczLDcg KzEwNCw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAg IHRlbXBsYXRlCiAgICAgUzo6YmFzaWNfc3RyaW5nKFM6Oml0ZXJhdG9yLCBT OjppdGVyYXRvciwgY29uc3QgYWxsb2NhdG9yPEM+Jik7CiAKLSNpZiBfR0xJ QkNYWF9VU0VfQ1hYMTFfQUJJCisjaWYgX0dMSUJDWFhfVVNFX0NYWDExX0FC SSAmJiAhIF9HTElCQ1hYX0RFRklOSU5HX0NPV19TVFJJTkdfSU5TVEFOVElB VElPTlMKICAgdGVtcGxhdGUKICAgICB2b2lkCiAgICAgUzo6X01fY29uc3Ry dWN0KFM6Oml0ZXJhdG9yLCBTOjppdGVyYXRvciwgZm9yd2FyZF9pdGVyYXRv cl90YWcpOwpAQCAtOTEsNyArMTIyLDcgQEAgX0dMSUJDWFhfQkVHSU5fTkFN RVNQQUNFX1ZFUlNJT04KICAgICB2b2lkCiAgICAgUzo6X01fY29uc3RydWN0 KGNvbnN0IEMqLCBjb25zdCBDKiwgZm9yd2FyZF9pdGVyYXRvcl90YWcpOwog Ci0jZWxzZSAvLyAhX0dMSUJDWFhfVVNFX0NYWDExX0FCSQorI2Vsc2UgLy8g ISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIHx8IF9HTElCQ1hYX0RFRklOSU5H X0NPV19TVFJJTkdfSU5TVEFOVElBVElPTlMKIAogICB0ZW1wbGF0ZQogICAg IEMqCkBAIC0xMTEsNiArMTQyLDcgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQ QUNFX1ZFUlNJT04KIF9HTElCQ1hYX0VORF9OQU1FU1BBQ0VfVkVSU0lPTgog fSAvLyBuYW1lc3BhY2UKIAorI2lmICEgX0dMSUJDWFhfREVGSU5JTkdfQ09X X1NUUklOR19JTlNUQU5USUFUSU9OUwogbmFtZXNwYWNlIF9fZ251X2N4eCBf R0xJQkNYWF9WSVNJQklMSVRZKGRlZmF1bHQpCiB7CiBfR0xJQkNYWF9CRUdJ Tl9OQU1FU1BBQ0VfVkVSU0lPTgpAQCAtMTIxLDMgKzE1Myw0IEBAIF9HTElC Q1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAKIF9HTElCQ1hYX0VORF9O QU1FU1BBQ0VfVkVSU0lPTgogfSAvLyBuYW1lc3BhY2UKKyNlbmRpZgpkaWZm IC0tZ2l0IGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS93bG9jYWxlLWluc3Qu Y2MgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL3dsb2NhbGUtaW5zdC5jYwpp bmRleCBkYzJkMjM0OTA1NS4uYjVjNzk4YmZlNjQgMTAwNjQ0Ci0tLSBhL2xp YnN0ZGMrKy12My9zcmMvYysrMTEvd2xvY2FsZS1pbnN0LmNjCisrKyBiL2xp YnN0ZGMrKy12My9zcmMvYysrMTEvd2xvY2FsZS1pbnN0LmNjCkBAIC0zMCw3 ICszMCw5IEBACiAjZGVmaW5lIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkgMAog I2luY2x1ZGUgPGJpdHMvYysrY29uZmlnLmg+CiAKLSNpZmRlZiBfR0xJQkNY WF9VU0VfV0NIQVJfVAotI2RlZmluZSBDIHdjaGFyX3QKLSNpbmNsdWRlICJs b2NhbGUtaW5zdC5jYyIKLSNlbmRpZiAvLyBfR0xJQkNYWF9VU0VfV0NIQVJf VAorI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQorIyBpZmRlZiBfR0xJ QkNYWF9VU0VfV0NIQVJfVAorIyAgZGVmaW5lIEMgd2NoYXJfdAorIyAgaW5j bHVkZSAibG9jYWxlLWluc3QuY2MiCisjIGVuZGlmIC8vIF9HTElCQ1hYX1VT RV9XQ0hBUl9UCisjZW5kaWYKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9z cmMvYysrOTgvTWFrZWZpbGUuYW0gYi9saWJzdGRjKystdjMvc3JjL2MrKzk4 L01ha2VmaWxlLmFtCmluZGV4IDI4NGZmZGEzNDQzLi5lYjI0MzI1YWY2NyAx MDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL3NyYy9jKys5OC9NYWtlZmlsZS5h bQorKysgYi9saWJzdGRjKystdjMvc3JjL2MrKzk4L01ha2VmaWxlLmFtCkBA IC05MCwxMyArOTAsNiBAQCBjKytsb2NhbGUuY2M6ICR7Z2xpYmN4eF9zcmNk aXJ9LyQoQ0xPQ0FMRV9DQykKIGJhc2ljX2ZpbGUuY2M6ICR7Z2xpYmN4eF9z cmNkaXJ9LyQoQkFTSUNfRklMRV9DQykKIAkkKExOX1MpICR7Z2xpYmN4eF9z cmNkaXJ9LyQoQkFTSUNfRklMRV9DQykgLi8kQCB8fCB0cnVlCiAKLWlmIEVO QUJMRV9EVUFMX0FCSQotY3h4MTFfYWJpX3NvdXJjZXMgPSBcCi0JY293LWlz dHJlYW0tc3RyaW5nLmNjCi1lbHNlCi1jeHgxMV9hYmlfc291cmNlcyA9Ci1l bmRpZgotCiBpZiBFTkFCTEVfRVhURVJOX1RFTVBMQVRFCiAjIFhURU1QTEFU RV9GTEFHUyA9IC1mbm8taW1wbGljaXQtdGVtcGxhdGVzCiBpbnN0X3NvdXJj ZXMgPSBcCkBAIC0xMTgsNiArMTExLDcgQEAgc291cmNlcyA9IFwKIAltdF9h bGxvY2F0b3IuY2MgXAogCWNvZGVjdnQuY2MgXAogCWNvbXBsZXhfaW8uY2Mg XAorCWNvdy1pc3RyZWFtLXN0cmluZy5jYyBcCiAJZ2xvYmFsc19pby5jYyBc CiAJaGFzaF90cjEuY2MgXAogCWhhc2h0YWJsZV90cjEuY2MgXApAQCAtMTQy LDcgKzEzNiw2IEBAIHNvdXJjZXMgPSBcCiAJaXN0cmVhbS1zdHJpbmcuY2Mg XAogCXN0cmVhbWJ1Zi5jYyBcCiAJdmFsYXJyYXkuY2MgXAotCSR7Y3h4MTFf YWJpX3NvdXJjZXN9IFwKIAkke2hvc3Rfc291cmNlc30gXAogCSR7aG9zdF9z b3VyY2VzX2V4dHJhfQogCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvc3Jj L2MrKzk4L01ha2VmaWxlLmluIGIvbGlic3RkYysrLXYzL3NyYy9jKys5OC9N YWtlZmlsZS5pbgppbmRleCBhMTAwZGY3N2E2ZC4uZDJlZDJhMjIxZjIgMTAw NjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9zcmMvYysrOTgvTWFrZWZpbGUuaW4K KysrIGIvbGlic3RkYysrLXYzL3NyYy9jKys5OC9NYWtlZmlsZS5pbgpAQCAt MTIxLDMxICsxMjEsMzAgQEAgQ09ORklHX0NMRUFOX0ZJTEVTID0KIENPTkZJ R19DTEVBTl9WUEFUSF9GSUxFUyA9CiBMVExJQlJBUklFUyA9ICQobm9pbnN0 X0xUTElCUkFSSUVTKQogbGliY19fOThjb252ZW5pZW5jZV9sYV9MSUJBREQg PQotQEVOQUJMRV9EVUFMX0FCSV9UUlVFQGFtX19vYmplY3RzXzEgPSBjb3ct aXN0cmVhbS1zdHJpbmcubG8KLUBFTkFCTEVfRFVBTF9BQklfVFJVRUBhbV9f b2JqZWN0c18yID0gY29sbGF0ZV9tZW1iZXJzX2Nvdy5sbyBcCitARU5BQkxF X0RVQUxfQUJJX1RSVUVAYW1fX29iamVjdHNfMSA9IGNvbGxhdGVfbWVtYmVy c19jb3cubG8gXAogQEVOQUJMRV9EVUFMX0FCSV9UUlVFQAltZXNzYWdlc19t ZW1iZXJzX2Nvdy5sbyBcCiBARU5BQkxFX0RVQUxfQUJJX1RSVUVACW1vbmV0 YXJ5X21lbWJlcnNfY293LmxvIFwKIEBFTkFCTEVfRFVBTF9BQklfVFJVRUAJ bnVtZXJpY19tZW1iZXJzX2Nvdy5sbwotYW1fX29iamVjdHNfMyA9ICQoYW1f X29iamVjdHNfMikgY29kZWN2dF9tZW1iZXJzLmxvIGNvbGxhdGVfbWVtYmVy cy5sbyBcCithbV9fb2JqZWN0c18yID0gJChhbV9fb2JqZWN0c18xKSBjb2Rl Y3Z0X21lbWJlcnMubG8gY29sbGF0ZV9tZW1iZXJzLmxvIFwKIAltZXNzYWdl c19tZW1iZXJzLmxvIG1vbmV0YXJ5X21lbWJlcnMubG8gbnVtZXJpY19tZW1i ZXJzLmxvIFwKIAl0aW1lX21lbWJlcnMubG8KLUBFTkFCTEVfRVhURVJOX1RF TVBMQVRFX1RSVUVAYW1fX29iamVjdHNfNCA9IGFsbG9jYXRvci1pbnN0Lmxv IFwKK0BFTkFCTEVfRVhURVJOX1RFTVBMQVRFX1RSVUVAYW1fX29iamVjdHNf MyA9IGFsbG9jYXRvci1pbnN0LmxvIFwKIEBFTkFCTEVfRVhURVJOX1RFTVBM QVRFX1RSVUVACWNvbmNlcHQtaW5zdC5sbyBleHQtaW5zdC5sbyBcCiBARU5B QkxFX0VYVEVSTl9URU1QTEFURV9UUlVFQAltaXNjLWluc3QubG8KLWFtX19v YmplY3RzXzUgPSBwYXJhbGxlbF9zZXR0aW5ncy5sbwotYW1fX29iamVjdHNf NiA9IGJhc2ljX2ZpbGUubG8gYysrbG9jYWxlLmxvICQoYW1fX29iamVjdHNf NCkgXAotCSQoYW1fX29iamVjdHNfNSkKLWFtX19vYmplY3RzXzcgPSBiaXRt YXBfYWxsb2NhdG9yLmxvIHBvb2xfYWxsb2NhdG9yLmxvIG10X2FsbG9jYXRv ci5sbyBcCi0JY29kZWN2dC5sbyBjb21wbGV4X2lvLmxvIGdsb2JhbHNfaW8u bG8gaGFzaF90cjEubG8gXAotCWhhc2h0YWJsZV90cjEubG8gaW9zX2ZhaWx1 cmUubG8gaW9zX2luaXQubG8gaW9zX2xvY2FsZS5sbyBcCi0JbGlzdC5sbyBs aXN0LWF1eC5sbyBsaXN0LWF1eC0yLmxvIGxpc3RfYXNzb2NpYXRlZC5sbyBc Ci0JbGlzdF9hc3NvY2lhdGVkLTIubG8gbG9jYWxlLmxvIGxvY2FsZV9pbml0 LmxvIGxvY2FsZV9mYWNldHMubG8gXAotCWxvY2FsZW5hbWUubG8gbWF0aF9z dHVic19mbG9hdC5sbyBtYXRoX3N0dWJzX2xvbmdfZG91YmxlLmxvIFwKLQlz dGRleGNlcHQubG8gc3Ryc3RyZWFtLmxvIHRyZWUubG8gaXN0cmVhbS5sbyBp c3RyZWFtLXN0cmluZy5sbyBcCi0Jc3RyZWFtYnVmLmxvIHZhbGFycmF5Lmxv ICQoYW1fX29iamVjdHNfMSkgJChhbV9fb2JqZWN0c18zKSBcCi0JJChhbV9f b2JqZWN0c182KQorYW1fX29iamVjdHNfNCA9IHBhcmFsbGVsX3NldHRpbmdz LmxvCithbV9fb2JqZWN0c181ID0gYmFzaWNfZmlsZS5sbyBjKytsb2NhbGUu bG8gJChhbV9fb2JqZWN0c18zKSBcCisJJChhbV9fb2JqZWN0c180KQorYW1f X29iamVjdHNfNiA9IGJpdG1hcF9hbGxvY2F0b3IubG8gcG9vbF9hbGxvY2F0 b3IubG8gbXRfYWxsb2NhdG9yLmxvIFwKKwljb2RlY3Z0LmxvIGNvbXBsZXhf aW8ubG8gY293LWlzdHJlYW0tc3RyaW5nLmxvIGdsb2JhbHNfaW8ubG8gXAor CWhhc2hfdHIxLmxvIGhhc2h0YWJsZV90cjEubG8gaW9zX2ZhaWx1cmUubG8g aW9zX2luaXQubG8gXAorCWlvc19sb2NhbGUubG8gbGlzdC5sbyBsaXN0LWF1 eC5sbyBsaXN0LWF1eC0yLmxvIFwKKwlsaXN0X2Fzc29jaWF0ZWQubG8gbGlz dF9hc3NvY2lhdGVkLTIubG8gbG9jYWxlLmxvIFwKKwlsb2NhbGVfaW5pdC5s byBsb2NhbGVfZmFjZXRzLmxvIGxvY2FsZW5hbWUubG8gXAorCW1hdGhfc3R1 YnNfZmxvYXQubG8gbWF0aF9zdHVic19sb25nX2RvdWJsZS5sbyBzdGRleGNl cHQubG8gXAorCXN0cnN0cmVhbS5sbyB0cmVlLmxvIGlzdHJlYW0ubG8gaXN0 cmVhbS1zdHJpbmcubG8gc3RyZWFtYnVmLmxvIFwKKwl2YWxhcnJheS5sbyAk KGFtX19vYmplY3RzXzIpICQoYW1fX29iamVjdHNfNSkKIEBHTElCQ1hYX0hP U1RFRF9UUlVFQGFtX2xpYmNfXzk4Y29udmVuaWVuY2VfbGFfT0JKRUNUUyA9 ICBcCi1AR0xJQkNYWF9IT1NURURfVFJVRUAJJChhbV9fb2JqZWN0c183KQor QEdMSUJDWFhfSE9TVEVEX1RSVUVACSQoYW1fX29iamVjdHNfNikKIGxpYmNf Xzk4Y29udmVuaWVuY2VfbGFfT0JKRUNUUyA9ICQoYW1fbGliY19fOThjb252 ZW5pZW5jZV9sYV9PQkpFQ1RTKQogQU1fVl9sdCA9ICQoYW1fX3ZfbHRfQEFN X1ZAKQogYW1fX3ZfbHRfID0gJChhbV9fdl9sdF9AQU1fREVGQVVMVF9WQCkK QEAgLTQ3MSwxMCArNDcwLDYgQEAgaG9zdF9zb3VyY2VzX2V4dHJhID0gXAog CWJhc2ljX2ZpbGUuY2MgYysrbG9jYWxlLmNjIFwKIAkke2luc3Rfc291cmNl c30gJHtwYXJhbGxlbF9zb3VyY2VzfQogCi1ARU5BQkxFX0RVQUxfQUJJX0ZB TFNFQGN4eDExX2FiaV9zb3VyY2VzID0gCi1ARU5BQkxFX0RVQUxfQUJJX1RS VUVAY3h4MTFfYWJpX3NvdXJjZXMgPSBcCi1ARU5BQkxFX0RVQUxfQUJJX1RS VUVACWNvdy1pc3RyZWFtLXN0cmluZy5jYwotCiAjIFhURU1QTEFURV9GTEFH UyA9CiBARU5BQkxFX0VYVEVSTl9URU1QTEFURV9GQUxTRUBpbnN0X3NvdXJj ZXMgPSAKIApAQCAtNDk0LDYgKzQ4OSw3IEBAIHNvdXJjZXMgPSBcCiAJbXRf YWxsb2NhdG9yLmNjIFwKIAljb2RlY3Z0LmNjIFwKIAljb21wbGV4X2lvLmNj IFwKKwljb3ctaXN0cmVhbS1zdHJpbmcuY2MgXAogCWdsb2JhbHNfaW8uY2Mg XAogCWhhc2hfdHIxLmNjIFwKIAloYXNodGFibGVfdHIxLmNjIFwKQEAgLTUx OCw3ICs1MTQsNiBAQCBzb3VyY2VzID0gXAogCWlzdHJlYW0tc3RyaW5nLmNj IFwKIAlzdHJlYW1idWYuY2MgXAogCXZhbGFycmF5LmNjIFwKLQkke2N4eDEx X2FiaV9zb3VyY2VzfSBcCiAJJHtob3N0X3NvdXJjZXN9IFwKIAkke2hvc3Rf c291cmNlc19leHRyYX0KIApkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Ny Yy9jKys5OC9jb21wYXRpYmlsaXR5LmNjIGIvbGlic3RkYysrLXYzL3NyYy9j Kys5OC9jb21wYXRpYmlsaXR5LmNjCmluZGV4IDVmZjIxZjA5YzQzLi5iN2Zl YWUyNjQ5ZCAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL3NyYy9jKys5OC9j b21wYXRpYmlsaXR5LmNjCisrKyBiL2xpYnN0ZGMrKy12My9zcmMvYysrOTgv Y29tcGF0aWJpbGl0eS5jYwpAQCAtMjUsNyArMjUsOCBAQAogI2RlZmluZSBf R0xJQkNYWF9VU0VfQ1hYMTFfQUJJIDAKICNpbmNsdWRlIDxiaXRzL2MrK2Nv bmZpZy5oPgogCi0jaWYgZGVmaW5lZChfR0xJQkNYWF9TWU1WRVJfR05VKSAm JiBkZWZpbmVkKF9HTElCQ1hYX1NIQVJFRCkgXAorI2lmICEgX0dMSUJDWFhf VVNFX0NYWDExX0FCSSBcCisgICAgJiYgZGVmaW5lZChfR0xJQkNYWF9TWU1W RVJfR05VKSAmJiBkZWZpbmVkKF9HTElCQ1hYX1NIQVJFRCkJXAogICAgICYm IGRlZmluZWQoX0dMSUJDWFhfSEFWRV9BU19TWU1WRVJfRElSRUNUSVZFKVwK ICAgICAmJiBkZWZpbmVkKF9HTElCQ1hYX0hBVkVfU1lNVkVSX1NZTUJPTF9S RU5BTUlOR19SVU5USU1FX1NVUFBPUlQpCiAjZGVmaW5lIGlzdHJlYW1idWZf aXRlcmF0b3IgaXN0cmVhbWJ1Zl9pdGVyYXRvclhYCkBAIC0yMjAsNyArMjIx LDggQEAgX0dMSUJDWFhfRU5EX05BTUVTUEFDRV9WRVJTSU9OCiAKIC8vIE5C OiBUaGVzZSBzeW1ib2xzIHJlbmFtZXMgc2hvdWxkIGdvIGludG8gdGhlIHNo YXJlZCBsaWJyYXJ5IG9ubHksCiAvLyBhbmQgb25seSB0aG9zZSBzaGFyZWQg bGlicmFyaWVzIHRoYXQgc3VwcG9ydCB2ZXJzaW9uaW5nLgotI2lmIGRlZmlu ZWQoX0dMSUJDWFhfU1lNVkVSX0dOVSkgJiYgZGVmaW5lZChfR0xJQkNYWF9T SEFSRUQpIFwKKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkgXAorICAg ICYmIGRlZmluZWQoX0dMSUJDWFhfU1lNVkVSX0dOVSkgJiYgZGVmaW5lZChf R0xJQkNYWF9TSEFSRUQpCVwKICAgICAmJiBkZWZpbmVkKF9HTElCQ1hYX0hB VkVfQVNfU1lNVkVSX0RJUkVDVElWRSkgXAogICAgICYmIGRlZmluZWQoX0dM SUJDWFhfSEFWRV9TWU1WRVJfU1lNQk9MX1JFTkFNSU5HX1JVTlRJTUVfU1VQ UE9SVCkKIApAQCAtNTI1LDcgKzUyNyw3IEBAIF9HTElCQ1hYX01BVEhMX1dS QVBQRVIxICh0YW4sIEdMSUJDWFhfMy40KTsKICNlbmRpZgogI2VuZGlmIC8v IF9HTElCQ1hYX0xPTkdfRE9VQkxFX0NPTVBBVAogCi0jZW5kaWYKKyNlbmRp ZiAvLyAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKIAogI2lmZGVmIF9HTElC Q1hYX0xPTkdfRE9VQkxFX0NPTVBBVAogZXh0ZXJuIHZvaWQgKl9aVFZOMTBf X2N4eGFiaXYxMjNfX2Z1bmRhbWVudGFsX3R5cGVfaW5mb0VbXTsKZGlmZiAt LWdpdCBhL2xpYnN0ZGMrKy12My9zcmMvYysrOTgvY293LWlzdHJlYW0tc3Ry aW5nLmNjIGIvbGlic3RkYysrLXYzL3NyYy9jKys5OC9jb3ctaXN0cmVhbS1z dHJpbmcuY2MKaW5kZXggNDA1ZjllY2I3ODEuLmYwMGNiYzA5ZjY5IDEwMDY0 NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2MrKzk4L2Nvdy1pc3RyZWFtLXN0 cmluZy5jYworKysgYi9saWJzdGRjKystdjMvc3JjL2MrKzk4L2Nvdy1pc3Ry ZWFtLXN0cmluZy5jYwpAQCAtMjcsNCArMjcsOCBAQAogLy8KIAogI2RlZmlu ZSBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIDAKLSNpbmNsdWRlICJpc3RyZWFt LXN0cmluZy5jYyIKKyNpbmNsdWRlIDxiaXRzL2MrK2NvbmZpZy5oPgorCisj aWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCisjIGluY2x1ZGUgImlzdHJl YW0tc3RyaW5nLmNjIgorI2VuZGlmCmRpZmYgLS1naXQgYS9saWJzdGRjKyst djMvc3JjL2MrKzk4L2hhc2hfdHIxLmNjIGIvbGlic3RkYysrLXYzL3NyYy9j Kys5OC9oYXNoX3RyMS5jYwppbmRleCBlMTMyYzAxYmY4ZS4uYTJjZDJjNTA5 ZjMgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9zcmMvYysrOTgvaGFzaF90 cjEuY2MKKysrIGIvbGlic3RkYysrLXYzL3NyYy9jKys5OC9oYXNoX3RyMS5j YwpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiaGFzaC1sb25nLWRv dWJsZS10cjEtYXV4LmNjIgogCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFf QUJJCiBuYW1lc3BhY2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVs dCkKIHsKICAgbmFtZXNwYWNlIHRyMQpAQCAtNTcsMyArNTgsNCBAQCBuYW1l c3BhY2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKICNlbmRp ZgogICB9CiB9CisjZW5kaWYgLy8gISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJ CmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvc3JjL2MrKzk4L2lvc19mYWls dXJlLmNjIGIvbGlic3RkYysrLXYzL3NyYy9jKys5OC9pb3NfZmFpbHVyZS5j YwppbmRleCAyNzQ3NmVjY2JkYi4uNDMyOTE4NzExOTYgMTAwNjQ0Ci0tLSBh L2xpYnN0ZGMrKy12My9zcmMvYysrOTgvaW9zX2ZhaWx1cmUuY2MKKysrIGIv bGlic3RkYysrLXYzL3NyYy9jKys5OC9pb3NfZmFpbHVyZS5jYwpAQCAtMjks MjIgKzI5LDI0IEBACiAjZGVmaW5lIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkg MAogI2luY2x1ZGUgPGlvcz4KIAotI2lmIF9HTElCQ1hYX1VTRV9EVUFMX0FC SSAmJiBfX2NwcF9ydHRpCi0jaW5jbHVkZSA8Y3h4YWJpLmg+Ci0jaW5jbHVk ZSA8dHlwZWluZm8+Ci0jZW5kaWYKLQotI2lmZGVmIF9HTElCQ1hYX1VTRV9O TFMKLSMgaW5jbHVkZSA8bGliaW50bC5oPgotIyBkZWZpbmUgXyhtc2dpZCkg ICBnZXR0ZXh0IChtc2dpZCkKLSNlbHNlCi0jIGRlZmluZSBfKG1zZ2lkKSAg IChtc2dpZCkKLSNlbmRpZgorI2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FC SSB8fCAhIF9HTElCQ1hYX1VTRV9EVUFMX0FCSQorIyBpZiBfR0xJQkNYWF9V U0VfRFVBTF9BQkkgJiYgX19jcHBfcnR0aQorIyAgaW5jbHVkZSA8Y3h4YWJp Lmg+CisjICBpbmNsdWRlIDx0eXBlaW5mbz4KKyMgZW5kaWYKKworIyBpZmRl ZiBfR0xJQkNYWF9VU0VfTkxTCisjICBpbmNsdWRlIDxsaWJpbnRsLmg+Cisj ICBkZWZpbmUgXyhtc2dpZCkgICBnZXR0ZXh0IChtc2dpZCkKKyMgZWxzZQor IyAgZGVmaW5lIF8obXNnaWQpICAgKG1zZ2lkKQorIyBlbmRpZgogCiBuYW1l c3BhY2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKIHsKIF9H TElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAKKyNpZiAhIF9HTElC Q1hYX1VTRV9DWFgxMV9BQkkKICAgaW9zX2Jhc2U6OmZhaWx1cmU6OmZhaWx1 cmUoY29uc3Qgc3RyaW5nJiBfX3N0cikgdGhyb3coKQogICA6IF9NX21zZyhf X3N0cikgeyB9CiAKQEAgLTU0LDYgKzU2LDcgQEAgX0dMSUJDWFhfQkVHSU5f TkFNRVNQQUNFX1ZFUlNJT04KICAgY29uc3QgY2hhcioKICAgaW9zX2Jhc2U6 OmZhaWx1cmU6OndoYXQoKSBjb25zdCB0aHJvdygpCiAgIHsgcmV0dXJuIF9N X21zZy5jX3N0cigpOyB9CisjZW5kaWYKIAogI2lmIF9HTElCQ1hYX1VTRV9E VUFMX0FCSQogICAvLyBXaGVuIHRoZSBkdWFsIEFCSSBpcyBlbmFibGVkIF9f dGhyb3dfaW9zX2ZhaWx1cmUoKSBpcyBkZWZpbmVkIGluCkBAIC04Miw3ICs4 NSw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgIH0K ICNlbmRpZiAvLyBfX2NwcF9ydHRpCiAKLSNlbHNlIC8vICEgX0dMSUJDWFhf VVNFX0RVQUxfQUJJCisjZWxpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkK IAogICB2b2lkCiAgIF9fdGhyb3dfaW9zX2ZhaWx1cmUoY29uc3QgY2hhciog X19zIF9fYXR0cmlidXRlX18oKHVudXNlZCkpKQpAQCAtOTIsNyArOTUsOSBA QCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogICBfX3Rocm93 X2lvc19mYWlsdXJlKGNvbnN0IGNoYXIqIHN0ciwgaW50KQogICB7IF9fdGhy b3dfaW9zX2ZhaWx1cmUoc3RyKTsgfQogCi0jZW5kaWYgLy8gX0dMSUJDWFhf VVNFX0RVQUxfQUJJCisjZW5kaWYgLy8gISBfR0xJQkNYWF9VU0VfQ1hYMTFf QUJJCiAKIF9HTElCQ1hYX0VORF9OQU1FU1BBQ0VfVkVSU0lPTgogfSAvLyBu YW1lc3BhY2UKKworI2VuZGlmIC8vICEgX0dMSUJDWFhfVVNFX0NYWDExX0FC SSB8fCAhIF9HTElCQ1hYX1VTRV9EVUFMX0FCSQpkaWZmIC0tZ2l0IGEvbGli c3RkYysrLXYzL3NyYy9jKys5OC9pc3RyZWFtLXN0cmluZy5jYyBiL2xpYnN0 ZGMrKy12My9zcmMvYysrOTgvaXN0cmVhbS1zdHJpbmcuY2MKaW5kZXggNDg1 OTk4N2ZjYzIuLmI2NDM0N2Y3OTZlIDEwMDY0NAotLS0gYS9saWJzdGRjKyst djMvc3JjL2MrKzk4L2lzdHJlYW0tc3RyaW5nLmNjCisrKyBiL2xpYnN0ZGMr Ky12My9zcmMvYysrOTgvaXN0cmVhbS1zdHJpbmcuY2MKQEAgLTMxLDYgKzMx LDE2IEBACiAvLyBieSBhbm90aGVyIGZpbGUgd2hpY2ggZGVmaW5lcyBfR0xJ QkNYWF9VU0VfQ1hYMTFfQUJJPTAuCiAjIGRlZmluZSBfR0xJQkNYWF9VU0Vf Q1hYMTFfQUJJIDEKICNlbmRpZgorCisjaWYgX0dMSUJDWFhfVVNFX0NYWDEx X0FCSQorIyBkZWZpbmUgX0dMSUJDWFhfQlVJTERfQ1hYMTFfQUJJIDEKKyNl bHNlCisjIGRlZmluZSBfR0xJQkNYWF9CVUlMRF9DWFgxMV9BQkkgMAorI2Vu ZGlmCisKKyNpbmNsdWRlIDxiaXRzL2MrK2NvbmZpZy5oPgorCisjaWYgX0dM SUJDWFhfQlVJTERfQ1hYMTFfQUJJID09IF9HTElCQ1hYX1VTRV9DWFgxMV9B QkkKICNpbmNsdWRlIDxpc3RyZWFtPgogI2luY2x1ZGUgPHN0cmluZz4KIApA QCAtMjg5LDMgKzI5OSw0IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9W RVJTSU9OCiAKIF9HTElCQ1hYX0VORF9OQU1FU1BBQ0VfVkVSU0lPTgogfSAv LyBuYW1lc3BhY2UKKyNlbmRpZiAvLyBfR0xJQkNYWF9CVUlMRF9DWFgxMV9B QkkgPT0gX0dMSUJDWFhfVVNFX0NYWDExX0FCSQpkaWZmIC0tZ2l0IGEvbGli c3RkYysrLXYzL3NyYy9jKys5OC9sb2NhbGVfZmFjZXRzLmNjIGIvbGlic3Rk YysrLXYzL3NyYy9jKys5OC9sb2NhbGVfZmFjZXRzLmNjCmluZGV4IGMwYmI3 ZmQxODFkLi43YTkyOWQ1MWJlNCAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYz L3NyYy9jKys5OC9sb2NhbGVfZmFjZXRzLmNjCisrKyBiL2xpYnN0ZGMrKy12 My9zcmMvYysrOTgvbG9jYWxlX2ZhY2V0cy5jYwpAQCAtMTI1LDYgKzEyNSw3 IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgICAgcmV0 dXJuIF9fdGVzdDsKICAgfQogCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFf QUJJCiAgIGJvb2wKICAgX192ZXJpZnlfZ3JvdXBpbmcoY29uc3QgY2hhciog X19ncm91cGluZywgc2l6ZV90IF9fZ3JvdXBpbmdfc2l6ZSwKIAkJICAgIGNv bnN0IHN0cmluZyYgX19ncm91cGluZ190bXApIHRocm93KCkKQEAgLTEzMyw2 ICsxMzQsNyBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZ3JvdXBpbmdf dG1wLmNfc3RyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgX19ncm91cGluZ190bXAuc2l6ZSgpKTsKICAgfQorI2VuZGlmCiAKICAg bmFtZXNwYWNlCiAgIHsKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9zcmMv YysrOTgvc3RkZXhjZXB0LmNjIGIvbGlic3RkYysrLXYzL3NyYy9jKys5OC9z dGRleGNlcHQuY2MKaW5kZXggZThjOTFmNWMxY2QuLmU4MjU1NGUwYWVjIDEw MDY0NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2MrKzk4L3N0ZGV4Y2VwdC5j YworKysgYi9saWJzdGRjKystdjMvc3JjL2MrKzk4L3N0ZGV4Y2VwdC5jYwpA QCAtMzUsOCArMzUsMTAgQEAgbmFtZXNwYWNlIHN0ZCBfR0xJQkNYWF9WSVNJ QklMSVRZKGRlZmF1bHQpCiB7CiBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0Vf VkVSU0lPTgogCisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAgIGxv Z2ljX2Vycm9yOjpsb2dpY19lcnJvcihjb25zdCBzdHJpbmcmIF9fYXJnKQog ICA6IGV4Y2VwdGlvbigpLCBfTV9tc2coX19hcmcpIHsgfQorI2VuZGlmCiAK ICAgbG9naWNfZXJyb3I6On5sb2dpY19lcnJvcigpIF9HTElCQ1hYX1VTRV9O T0VYQ0VQVCB7IH0KIApAQCAtNDQsMjggKzQ2LDM4IEBAIF9HTElCQ1hYX0JF R0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgIGxvZ2ljX2Vycm9yOjp3aGF0KCkg Y29uc3QgX0dMSUJDWFhfVVNFX05PRVhDRVBUCiAgIHsgcmV0dXJuIF9NX21z Zy5jX3N0cigpOyB9CiAKKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkK ICAgZG9tYWluX2Vycm9yOjpkb21haW5fZXJyb3IoY29uc3Qgc3RyaW5nJiBf X2FyZykKICAgOiBsb2dpY19lcnJvcihfX2FyZykgeyB9CisjZW5kaWYKIAog ICBkb21haW5fZXJyb3I6On5kb21haW5fZXJyb3IoKSBfR0xJQkNYWF9VU0Vf Tk9FWENFUFQgeyB9CiAKKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkK ICAgaW52YWxpZF9hcmd1bWVudDo6aW52YWxpZF9hcmd1bWVudChjb25zdCBz dHJpbmcmIF9fYXJnKQogICA6IGxvZ2ljX2Vycm9yKF9fYXJnKSB7IH0KKyNl bmRpZgogCiAgIGludmFsaWRfYXJndW1lbnQ6On5pbnZhbGlkX2FyZ3VtZW50 KCkgX0dMSUJDWFhfVVNFX05PRVhDRVBUIHsgfQogCisjaWYgISBfR0xJQkNY WF9VU0VfQ1hYMTFfQUJJCiAgIGxlbmd0aF9lcnJvcjo6bGVuZ3RoX2Vycm9y KGNvbnN0IHN0cmluZyYgX19hcmcpCiAgIDogbG9naWNfZXJyb3IoX19hcmcp IHsgfQorI2VuZGlmCiAKICAgbGVuZ3RoX2Vycm9yOjp+bGVuZ3RoX2Vycm9y KCkgX0dMSUJDWFhfVVNFX05PRVhDRVBUIHsgfQogCisjaWYgISBfR0xJQkNY WF9VU0VfQ1hYMTFfQUJJCiAgIG91dF9vZl9yYW5nZTo6b3V0X29mX3Jhbmdl KGNvbnN0IHN0cmluZyYgX19hcmcpCiAgIDogbG9naWNfZXJyb3IoX19hcmcp IHsgfQorI2VuZGlmCiAKICAgb3V0X29mX3JhbmdlOjp+b3V0X29mX3Jhbmdl KCkgX0dMSUJDWFhfVVNFX05PRVhDRVBUIHsgfQogCisjaWYgISBfR0xJQkNY WF9VU0VfQ1hYMTFfQUJJCiAgIHJ1bnRpbWVfZXJyb3I6OnJ1bnRpbWVfZXJy b3IoY29uc3Qgc3RyaW5nJiBfX2FyZykKICAgOiBleGNlcHRpb24oKSwgX01f bXNnKF9fYXJnKSB7IH0KKyNlbmRpZgogCiAgIHJ1bnRpbWVfZXJyb3I6On5y dW50aW1lX2Vycm9yKCkgX0dMSUJDWFhfVVNFX05PRVhDRVBUIHsgfQogCkBA IC03MywxOCArODUsMjQgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZF UlNJT04KICAgcnVudGltZV9lcnJvcjo6d2hhdCgpIGNvbnN0IF9HTElCQ1hY X1VTRV9OT0VYQ0VQVAogICB7IHJldHVybiBfTV9tc2cuY19zdHIoKTsgfQog CisjaWYgISBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJCiAgIHJhbmdlX2Vycm9y OjpyYW5nZV9lcnJvcihjb25zdCBzdHJpbmcmIF9fYXJnKQogICA6IHJ1bnRp bWVfZXJyb3IoX19hcmcpIHsgfQorI2VuZGlmCiAKICAgcmFuZ2VfZXJyb3I6 On5yYW5nZV9lcnJvcigpIF9HTElCQ1hYX1VTRV9OT0VYQ0VQVCB7IH0KIAor I2lmICEgX0dMSUJDWFhfVVNFX0NYWDExX0FCSQogICBvdmVyZmxvd19lcnJv cjo6b3ZlcmZsb3dfZXJyb3IoY29uc3Qgc3RyaW5nJiBfX2FyZykKICAgOiBy dW50aW1lX2Vycm9yKF9fYXJnKSB7IH0KKyNlbmRpZgogCiAgIG92ZXJmbG93 X2Vycm9yOjp+b3ZlcmZsb3dfZXJyb3IoKSBfR0xJQkNYWF9VU0VfTk9FWENF UFQgeyB9CiAKKyNpZiAhIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkKICAgdW5k ZXJmbG93X2Vycm9yOjp1bmRlcmZsb3dfZXJyb3IoY29uc3Qgc3RyaW5nJiBf X2FyZykKICAgOiBydW50aW1lX2Vycm9yKF9fYXJnKSB7IH0KKyNlbmRpZgog CiAgIHVuZGVyZmxvd19lcnJvcjo6fnVuZGVyZmxvd19lcnJvcigpIF9HTElC Q1hYX1VTRV9OT0VYQ0VQVCB7IH0KIAo= --------------LAQKzI86sydkGqe26cTc4XWk--