<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>185368</bug_id>
          
          <creation_ts>2018-05-06 16:20:37 -0700</creation_ts>
          <short_desc>Storage Access API: Add a request roundtrip to check whether prompting is needed</short_desc>
          <delta_ts>2018-05-08 12:36:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>185335</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cgarcia</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1421168</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-05-06 16:20:37 -0700</bug_when>
    <thetext>Experimental Storage Access API prompting is added in https://bugs.webkit.org/show_bug.cgi?id=185335. To support it, we should consult WebKit::WebResourceLoadStatisticsStore to see whether prompting is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421169</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-06 16:20:58 -0700</bug_when>
    <thetext>&lt;rdar://problem/40011556&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421173</commentid>
    <comment_count>2</comment_count>
      <attachid>339696</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-05-06 16:51:11 -0700</bug_when>
    <thetext>Created attachment 339696
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421181</commentid>
    <comment_count>3</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-05-06 18:20:31 -0700</bug_when>
    <thetext>Mac-debug test failures seem unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421573</commentid>
    <comment_count>4</comment_count>
      <attachid>339786</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-05-07 18:17:04 -0700</bug_when>
    <thetext>Created attachment 339786
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421598</commentid>
    <comment_count>5</comment_count>
      <attachid>339790</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-05-07 19:40:27 -0700</bug_when>
    <thetext>Created attachment 339790
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421599</commentid>
    <comment_count>6</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-05-07 19:41:27 -0700</bug_when>
    <thetext>Weird build errors. Added RELEASE_ASSERT_NOT_REACHED() to the two switch-cases over the enum. I believe those are needed for platforms that compile with gcc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421603</commentid>
    <comment_count>7</comment_count>
      <attachid>339792</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-05-07 19:54:00 -0700</bug_when>
    <thetext>Created attachment 339792
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421604</commentid>
    <comment_count>8</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-05-07 19:54:39 -0700</bug_when>
    <thetext>Put all changes behind the appropriate compile-time flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421605</commentid>
    <comment_count>9</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-05-07 20:07:51 -0700</bug_when>
    <thetext>iOS build are complaining about WebPageProxy.cpp:

The following build commands failed:
	CompileC /Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release-iphoneos/WebKit.build/Objects-normal/arm64/WebPageProxy.o UIProcess/WebPageProxy.cpp normal arm64 c++ com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)

Failed to run &quot;[&apos;Tools/Scripts/build-webkit&apos;, &apos;--release&apos;, &apos;--sdk=iphoneos&apos;, &apos;ARCHS=arm64&apos;]&quot; exit_code: 65</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421606</commentid>
    <comment_count>10</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-05-07 20:17:41 -0700</bug_when>
    <thetext>GTK and WPE are complaining about WebsiteDataStore.cpp:

Failed to run &quot;[&apos;Tools/Scripts/build-webkit&apos;, &apos;--release&apos;, &apos;--gtk&apos;, &apos;--update-gtk&apos;, &apos;--makeargs=&quot;-j32&quot;&apos;]&quot; exit_code: 1
d from DerivedSources/ForwardingHeaders/wtf/text/WTFString.h:29:0,
                 from ../../Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h:31,
                 from /home/ews/ltilve-gtk-wk2-ews/WebKit/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:28,
                 from /home/ews/ltilve-gtk-wk2-ews/WebKit/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:27:
DerivedSources/ForwardingHeaders/wtf/Function.h: In instantiation of ‘Out WTF::Function&lt;Out(In ...)&gt;::CallableWrapper&lt;CallableType&gt;::call(In ...) [with CallableType = WTF::Function&lt;void(bool)&gt;; Out = void; In = {WebKit::StorageAccessStatus}]’:
/home/ews/ltilve-gtk-wk2-ews/WebKit/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1527:1:   required from here
DerivedSources/ForwardingHeaders/wtf/Function.h:101:77: error: no match for call to ‘(WTF::Function&lt;void(bool)&gt;) (WebKit::StorageAccessStatus)’
         Out call(In... in) final { return m_callable(std::forward&lt;In&gt;(in)...); }
                                                                             ^
DerivedSources/ForwardingHeaders/wtf/Function.h:53:9: note: candidate: Out WTF::Function&lt;Out(In ...)&gt;::operator()(In ...) const [with Out = void; In = {bool}]
     Out operator()(In... in) const
         ^~~~~~~~
DerivedSources/ForwardingHeaders/wtf/Function.h:53:9: note:   no known conversion for argument 1 from ‘WebKit::StorageAccessStatus’ to ‘bool’
DerivedSources/ForwardingHeaders/wtf/Function.h:101:77: error: return-statement with a value, in function returning &apos;void&apos; [-fpermissive]
         Out call(In... in) final { return m_callable(std::forward&lt;In&gt;(in)...); }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421609</commentid>
    <comment_count>11</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-05-07 20:34:45 -0700</bug_when>
    <thetext>Your patch is adding some #if HAVE(CFNETWORK_STORAGE_PARTITIONING) to declare some types and include some headers in WebPageProxy.cpp and WebResourceLoadStatisticsStore.h.
There is a need for the code using those declarations to also be guarded in the same way, or drop these #if if possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421610</commentid>
    <comment_count>12</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-05-07 20:40:16 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #11)
&gt; Your patch is adding some #if HAVE(CFNETWORK_STORAGE_PARTITIONING) to
&gt; declare some types and include some headers in WebPageProxy.cpp and
&gt; WebResourceLoadStatisticsStore.h.
&gt; There is a need for the code using those declarations to also be guarded in
&gt; the same way, or drop these #if if possible.

I’ve worked through that and can’t see any such missing checks in the current patch. Can you spot any? Maybe I’m blind. I am pretty tired. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421617</commentid>
    <comment_count>13</comment_count>
      <attachid>339792</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-05-07 21:04:18 -0700</bug_when>
    <thetext>Comment on attachment 339792
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=339792&amp;action=review

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:7488
&gt;      auto completionHandler = [this, protectedThis = makeRef(*this), webProcessContextId] (bool access) {

I wonder whether this completion handler might sometimes be released in a background thread which might not be right.

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:370
&gt; +    m_statisticsQueue-&gt;dispatch([this, protectedThis = makeRef(*this), subFramePrimaryDomain = crossThreadCopy(subFramePrimaryDomain), topFramePrimaryDomain = crossThreadCopy(topFramePrimaryDomain), frameID, pageID, promptStatus, callback = WTFMove(callback)] () mutable {

WebResourceLoadStatisticsStore has maps, we probably shouldn&apos;t take a ref and pass it to a background thread as there might be a risk that it gets deallocated in the background thread.
Ditto for the callback. We should probably use a weak ref and store the callback in WebResourceLoadStatisticsStore.
Or we should make WebResourceLoadStatisticsStore use DestructionThread::MainThread.

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:404
&gt; +                });

Might be better to just call callOnMainThread once and capture the callback value in the lambda.

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.h:78
&gt; +    static Ref&lt;WebResourceLoadStatisticsStore&gt; create(const String&amp; resourceLoadStatisticsDirectory, Function&lt;void (const String&amp;)&gt;&amp;&amp; testingCallback, bool isEphemeral, UpdatePrevalentDomainsToPartitionOrBlockCookiesHandler&amp;&amp; updatePrevalentDomainsToPartitionOrBlockCookiesHandler = [](const WTF::Vector&lt;String&gt;&amp;, const WTF::Vector&lt;String&gt;&amp;, const WTF::Vector&lt;String&gt;&amp;, ShouldClearFirst) { }, HasStorageAccessForFrameHandler&amp;&amp; hasStorageAccessForFrameHandler = [](const String&amp;, const String&amp;, uint64_t, uint64_t, WTF::Function&lt;void(bool)&gt;&amp;&amp;) { }, GrantStorageAccessHandler&amp;&amp; grantStorageAccessHandler = [](const String&amp;, const String&amp;, std::optional&lt;uint64_t&gt;, uint64_t, WTF::Function&lt;void(StorageAccessStatus)&gt;&amp;&amp;) { }, RemoveAllStorageAccessHandler&amp;&amp; removeAllStorageAccessHandler = []() { }, RemovePrevalentDomainsHandler&amp;&amp; removeDomainsHandler = [] (const WTF::Vector&lt;String&gt;&amp;) { })

This one is using both StorageAccessStatus and StorageAccessPromptStatus and is not guarded.

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.h:97
&gt; +    void requestStorageAccess(String&amp;&amp; subFrameHost, String&amp;&amp; topFrameHost, uint64_t frameID, uint64_t pageID, StorageAccessPromptStatus, WTF::CompletionHandler&lt;void(StorageAccessStatus)&gt;&amp;&amp; callback);

No need for WTF::</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421639</commentid>
    <comment_count>14</comment_count>
      <attachid>339792</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-05-07 22:00:18 -0700</bug_when>
    <thetext>Comment on attachment 339792
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=339792&amp;action=review

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:7488
&gt;&gt;      auto completionHandler = [this, protectedThis = makeRef(*this), webProcessContextId] (bool access) {
&gt; 
&gt; I wonder whether this completion handler might sometimes be released in a background thread which might not be right.

Not after r231465

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:7492
&gt; +    auto promptStatus = promptEnabled ? StorageAccessPromptStatus::UserNotPrompted : StorageAccessPromptStatus::UserGrantedAccess;

I think it&apos;s incorrect to say the user granted access at this point.  It looks like we need a third state for PromptingDisabled.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:7510
&gt; +                    m_websiteDataStore-&gt;requestStorageAccess(WTFMove(subFrameHost), WTFMove(topFrameHost), frameID, m_pageID, StorageAccessPromptStatus::UserGrantedAccess, [this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)] (StorageAccessStatus status) mutable {

iOS correctly indicates that this and protectedThis are unused here.  The completionHandler will keep this alive.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:7514
&gt; +                            ASSERT_NOT_REACHED();

I still think this is an indicator that we need better abstractions in our protocol here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421641</commentid>
    <comment_count>15</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-05-07 22:02:59 -0700</bug_when>
    <thetext>Yeah, I don&apos;t know what the linux bots are complaining about.  Carlos?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421643</commentid>
    <comment_count>16</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-05-07 22:11:51 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #15)
&gt; Yeah, I don&apos;t know what the linux bots are complaining about.  Carlos?

I believe GrantStorageAccessHandler default parameter value is incorrect in line 78 of the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421645</commentid>
    <comment_count>17</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-05-07 22:20:13 -0700</bug_when>
    <thetext>Thanks, both of you! I&apos;m too tired to see these things right now and the build errors were just too vague. New patch coming up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421646</commentid>
    <comment_count>18</comment_count>
      <attachid>339800</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-05-07 22:20:34 -0700</bug_when>
    <thetext>Created attachment 339800
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421647</commentid>
    <comment_count>19</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-05-07 22:23:01 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #14)
&gt; &gt; Source/WebKit/UIProcess/WebPageProxy.cpp:7492
&gt; &gt; +    auto promptStatus = promptEnabled ? StorageAccessPromptStatus::UserNotPrompted : StorageAccessPromptStatus::UserGrantedAccess;
&gt; 
&gt; I think it&apos;s incorrect to say the user granted access at this point.  It
&gt; looks like we need a third state for PromptingDisabled.

The implication here is that in shipping we consider the user&apos;s click or tap in the requester&apos;s iframe as the grant access signal. So as long as prompts are disabled, WebPageProxy will tell WebResourceLoadStatisticsStore that &quot;I got what you need from the user. Go ahead and grant access.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421753</commentid>
    <comment_count>20</comment_count>
      <attachid>339800</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-05-08 09:34:17 -0700</bug_when>
    <thetext>Comment on attachment 339800
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=339800&amp;action=review

tire

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:7502
&gt; +                ASSERT_NOT_REACHED();

This ASSERT_NOT_REACHED is not clear to me.
Instead of doing this if (!promptEnabled) check, we could just do ASSERT(promptEnabled).
To make things clearer, we could also rename StorageAccessStatus::DoesNotHaveAccess to StorageAccessStatus::RequiresPrompt.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:7507
&gt; +            String topFrameHostCopy = topFrameHost;

Might not need these extra parameters. Instead we could pass String { } to requestStorageAccessConfirm.
Given the size of this method, I would also be tempted to handle StorageAccessStatus::DoesNotHaveAccess in its own method.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:7510
&gt; +                    m_websiteDataStore-&gt;requestStorageAccess(WTFMove(subFrameHost), WTFMove(topFrameHost), frameID, m_pageID, StorageAccessPromptStatus::UserGrantedAccess, [completionHandler = WTFMove(completionHandler)] (StorageAccessStatus status) mutable {

So we are using requestStorageAccess for two things:
1. to get the access state as done above
2. to set the access state as done below

It might be clearer to add a new method for 2.
The completionHandler would then either take no parameter or an std::optional&lt;Error&gt; in case there might be errors.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:7521
&gt; +                        RELEASE_ASSERT_NOT_REACHED();

Probably not needed.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:7532
&gt; +        RELEASE_ASSERT_NOT_REACHED();

Probably not needed.

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:358
&gt; +void WebResourceLoadStatisticsStore::requestStorageAccess(String&amp;&amp; subFrameHost, String&amp;&amp; topFrameHost, uint64_t frameID, uint64_t pageID, StorageAccessPromptStatus promptStatus, WTF::CompletionHandler&lt;void(StorageAccessStatus)&gt;&amp;&amp; callback)

No need for WTF::</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421757</commentid>
    <comment_count>21</comment_count>
      <attachid>339800</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-05-08 09:43:27 -0700</bug_when>
    <thetext>Comment on attachment 339800
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=339800&amp;action=review

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:7510
&gt;&gt; +                    m_websiteDataStore-&gt;requestStorageAccess(WTFMove(subFrameHost), WTFMove(topFrameHost), frameID, m_pageID, StorageAccessPromptStatus::UserGrantedAccess, [completionHandler = WTFMove(completionHandler)] (StorageAccessStatus status) mutable {
&gt; 
&gt; So we are using requestStorageAccess for two things:
&gt; 1. to get the access state as done above
&gt; 2. to set the access state as done below
&gt; 
&gt; It might be clearer to add a new method for 2.
&gt; The completionHandler would then either take no parameter or an std::optional&lt;Error&gt; in case there might be errors.

We can make a requestStorageAccess and grantStorageAccess, and grant would be used by request in the case where it has access.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421805</commentid>
    <comment_count>22</comment_count>
      <attachid>339836</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-05-08 11:06:17 -0700</bug_when>
    <thetext>Created attachment 339836
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421813</commentid>
    <comment_count>23</comment_count>
      <attachid>339840</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-05-08 11:14:16 -0700</bug_when>
    <thetext>Created attachment 339840
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421843</commentid>
    <comment_count>24</comment_count>
      <attachid>339840</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-05-08 11:38:18 -0700</bug_when>
    <thetext>Comment on attachment 339840
Patch

Some additional comments below.
If pressed on time, please take the time to address these as follow-ups if needed.

View in context: https://bugs.webkit.org/attachment.cgi?id=339840&amp;action=review

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:7488
&gt; +    CompletionHandler&lt;void(bool)&gt; completionHandler = [this, protectedThis = makeRef(*this), webProcessContextId] (bool access) {

This handler is refing WebPageProxy which is unneeded AFAICS since it is captured in a lambda that is also refing this.
Also, it could be defined later on, inside the lambda to requestStorageAccess.

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:401
&gt; +                    callback(StorageAccessStatus::CannotRequestAccess);

Could use a ternary instead.

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:435
&gt; +    m_statisticsQueue-&gt;dispatch([this, protectedThis = makeRef(*this), subFrameHost = crossThreadCopy(subFrameHost), topFrameHost = crossThreadCopy(topFrameHost), frameID, pageID, userWasPrompted, callback = WTFMove(callback)] () mutable {

Is it fine to destroy WebResourceLoadStatisticsStore on a background thread?
Is it fine to have callback being destroyed in a background thread?

It might be safer to use a weak pointer/map-of-callbacks approach.

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:437
&gt; +            callOnMainThread([callback = WTFMove(callback), wasGrantedAccess] () mutable {

Since this is WebKit2 code, we usually use RunLoop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421889</commentid>
    <comment_count>25</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-05-08 12:36:04 -0700</bug_when>
    <thetext>Committed r231501: &lt;https://trac.webkit.org/changeset/231501&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339696</attachid>
            <date>2018-05-06 16:51:11 -0700</date>
            <delta_ts>2018-05-07 18:17:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185368-20180506165110.patch</filename>
            <type>text/plain</type>
            <size>54147</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzE0MDApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc3IEBACisyMDE4LTA1LTA2ICBKb2huIFdpbGFu
ZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3JhZ2UgQWNjZXNzIEFQSTog
QWRkIGEgcmVxdWVzdCByb3VuZHRyaXAgdG8gY2hlY2sgd2hldGhlciBwcm9tcHRpbmcgaXMgbmVl
ZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUz
NjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQwMDExNTU2PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhbiBlbnVtIFdl
YktpdDo6U3RvcmFnZUFjY2Vzc1N0YXR1cyB0byBoYW5kbGUgdGhlIHRocmVlIGFjY2VzcworICAg
ICAgICBzdGF0ZXMgd2UgaGFuZGxlOgorICAgICAgICAtIFdlYktpdDo6U3RvcmFnZUFjY2Vzc1N0
YXR1czo6Q2Fubm90UmVxdWVzdEFjY2Vzcy4KKyAgICAgICAgICAgIFRoaXMgbWVhbnMgdGhlIGRv
bWFpbiBpcyBibG9ja2VkIGZyb20gY29va2llcy4KKyAgICAgICAgLSBXZWJLaXQ6OlN0b3JhZ2VB
Y2Nlc3NTdGF0dXM6OkRvZXNOb3RIYXZlQWNjZXNzLgorICAgICAgICAgICAgVGhpcyBtZWFucyB0
aGF0IHRoaXMgcGFydGljdWxhciBhY2Nlc3MgaGFzIG5vdCBiZWVuIGdyYW50ZWQgeWV0LiBPbmUg
c3VjaAorICAgICAgICAgICAgY29uZGl0aW9uIGlzIHRoYXQgYSBwcm9tcHQgaXMgcmVxdWlyZWQu
IEFub3RoZXIgaXMgdG8gc2ltcGx5IHN1cHBvcnQgdGhlCisgICAgICAgICAgICBkb2N1bWVudC5o
YXNTdG9yYWdlQWNjZXNzKCkgQVBJLgorICAgICAgICAtIFdlYktpdDo6U3RvcmFnZUFjY2Vzc1N0
YXR1czo6SGFzQWNjZXNzLgorICAgICAgICAgICAgVGhpcyBtZWFucyB0aGF0IHRoaXMgZG9tYWlu
IGRvZXMgbm90IG5lZWQgdG8gYXNrIGZvciBhY2Nlc3MsIHRoaXMgcGFydGljdWxhcgorICAgICAg
ICAgICAgYWNjZXNzIHdhcyBhbHJlYWR5IGdyYW50ZWQsIG9yIHRoaXMgcGFydGljdWxhciBhY2Nl
c3Mgd2FzIGdyYW50ZWQgbm93LgorCisgICAgICAgIE1vc3Qgb2YgdGhlIGNoYW5nZXMgYXJlIHRv
IHN1cHBvcnQgdGhlIGFib3ZlIG1lbnRpb25lZCBlbnVtLiBCdXQgdGhlcmUncyBvbmUKKyAgICAg
ICAgbW9yZSBpbXBvcnRhbnQgY2hhbmdlLiBXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6cmVxdWVz
dFN0b3JhZ2VBY2Nlc3MoKSBub3cKKyAgICAgICAgcG90ZW50aWFsbHkgcmVxdWVzdHMgc3RvcmFn
ZSBhY2Nlc3MgdHdpY2UuIElmIHRoZSBmaXJzdCByZXF1ZXN0IGNvbWVzIGJhY2sgYXMKKyAgICAg
ICAgV2ViS2l0OjpTdG9yYWdlQWNjZXNzU3RhdHVzOjpEb2VzTm90SGF2ZUFjY2VzcywgaXQgbWF5
IHByb21wdCB0aGUgdXNlciBhbmQgdGhlbgorICAgICAgICByZXF1ZXN0IGFjY2VzcyBhZ2FpbiBp
ZiB0aGUgdXNlciBzYXlzIHllcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Omhhc1N0b3JhZ2VB
Y2Nlc3NGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpncmFudFN0
b3JhZ2VBY2Nlc3MpOgorICAgICAgICAqIFNoYXJlZC9TdG9yYWdlQWNjZXNzU3RhdHVzLmg6IEFk
ZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmVDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpyZWdpc3RlclVzZXJEZWZhdWx0c0lmTmVlZGVkKToKKyAgICAgICAgICAgIE5vdyBj
aGVja3MgZm9yIHRoZSBleHBlcmltZW50YWwgZmVhdHVyZSBmbGFnIGZvciBwcm9tcHRpbmcuCisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFt
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmdyYW50U3RvcmFnZUFj
Y2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnN0b3JhZ2VBY2Nl
c3NSZXF1ZXN0UmVzdWx0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYXNTdG9yYWdlQWNjZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAg
ICAgTm93IHN1cHBvcnRzIGEgYm9vbGVhbiBmbGFnIGZvciB3aGV0aGVyIHRoZSB1c2VyIGhhcyBl
eHBsaWNpdGx5IGdyYW50ZWQKKyAgICAgICAgICAgIGFjY2VzcyBvciBub3QuIElmIG5vdCwgYW5k
IHRoZSBleHBlcmltZW50YWwgcHJvbXB0IGZsYWcgaXMgb24sIHN0b3JhZ2UKKyAgICAgICAgICAg
IGFjY2VzcyBpcyBub3QgZ3JhbnRlZCwgYWxsb3dpbmcgZm9yIGEgc2Vjb25kIHJlcXVlc3QgYWZ0
ZXIgdGhlIHByb21wdC4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmVuYWJsZVJlc291cmNlTG9hZFN0
YXRpc3RpY3NBbmRTZXRUZXN0aW5nQ2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6Omhhc1N0
b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnJlcXVlc3RT
dG9yYWdlQWNjZXNzKToKKyAgICAgICAgICAgIE5vdyBwb3RlbnRpYWxseSBwZXJmb3JtcyB0d28g
cmVxdWVzdHMgZm9yIGFjY2Vzcy4gSWYgdGhlIGZpcnN0CisgICAgICAgICAgICBvbmUgY29tZXMg
YmFjayBhcyBXZWJLaXQ6OlN0b3JhZ2VBY2Nlc3NTdGF0dXM6OkRvZXNOb3RIYXZlQWNjZXNzLAor
ICAgICAgICAgICAgaXQgbWF5IHByb21wdCB0aGUgdXNlciBhbmQgdGhlbiByZXF1ZXN0IGFjY2Vz
cyBhZ2FpbiBpZiB0aGUgdXNlcgorICAgICAgICAgICAgc2F5cyB5ZXMuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpo
YXNTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzdG9yYWdlQWNjZXNzUmVzcG9u
c2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTgtMDUtMDQgIFRp
bSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgU2hpZnQgdG8g
YSBsb3dlci1sZXZlbCBmcmFtZXdvcmsgZm9yIHNpbXBsaWZ5aW5nIFVSTHMKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lv
biAyMzE0MDApCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgIlJlbW90ZU5l
dHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRl
ICJTdGF0aXN0aWNzRGF0YS5oIgorI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNp
bmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKQEAgLTQwNyw5ICs0MDgs
MTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6dXBkYXRlUHJldmFsZW50RG9tYQogCiB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0
UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qg
Y29udGV4dElkKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIHBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OlN0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzdWx0KG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+aGFz
U3RvcmFnZUFjY2VzcyhyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwg
cGFnZUlEKSwgY29udGV4dElkKSwgMCk7Ci0gICAgZWxzZQorICAgIGlmIChhdXRvKiBuZXR3b3Jr
U3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNl
c3Npb25JRCkpIHsKKyAgICAgICAgYXV0byBzdGF0dXMgPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24t
Pmhhc1N0b3JhZ2VBY2Nlc3MocmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1l
SUQsIHBhZ2VJRCkgPyBTdG9yYWdlQWNjZXNzU3RhdHVzOjpIYXNBY2Nlc3MgOiBTdG9yYWdlQWNj
ZXNzU3RhdHVzOjpEb2VzTm90SGF2ZUFjY2VzczsKKyAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6U3RvcmFnZUFjY2Vz
c1JlcXVlc3RSZXN1bHQoc3RhdHVzLCBjb250ZXh0SWQpLCAwKTsKKyAgICB9IGVsc2UKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKQEAgLTQyMywxNSArNDI1LDE1IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmdldEFsbFN0b3JhZ2VBY2Nlc3MKIAogdm9pZCBOZXR3b3JrUHJvY2Vz
czo6Z3JhbnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3Ry
aW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGNv
bnRleHRJZCkKIHsKLSAgICBib29sIGlzU3RvcmFnZUdyYW50ZWQgPSBmYWxzZTsKKyAgICBhdXRv
IHN0YXR1cyA9IFN0b3JhZ2VBY2Nlc3NTdGF0dXM6OkNhbm5vdFJlcXVlc3RBY2Nlc3M7CiAgICAg
aWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Np
b24tPmdyYW50U3RvcmFnZUFjY2VzcyhyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwg
ZnJhbWVJRCwgcGFnZUlEKTsKICAgICAgICAgQVNTRVJUKG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+
aGFzU3RvcmFnZUFjY2VzcyhyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJ
RCwgcGFnZUlEKSk7Ci0gICAgICAgIGlzU3RvcmFnZUdyYW50ZWQgPSB0cnVlOworICAgICAgICBz
dGF0dXMgPSBTdG9yYWdlQWNjZXNzU3RhdHVzOjpIYXNBY2Nlc3M7CiAgICAgfSBlbHNlCiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCi0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6U3RvcmFnZUFjY2Vzc1JlcXVl
c3RSZXN1bHQoaXNTdG9yYWdlR3JhbnRlZCwgY29udGV4dElkKSwgMCk7CisgICAgcGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6U3Rv
cmFnZUFjY2Vzc1JlcXVlc3RSZXN1bHQoc3RhdHVzLCBjb250ZXh0SWQpLCAwKTsKIH0KIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TdG9yYWdlQWNjZXNzU3RhdHVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvU3RvcmFnZUFjY2Vzc1N0YXR1
cy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1N0b3JhZ2VBY2Nlc3NT
dGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzU3RhdHVzIHsKKyAgICBDYW5ub3RSZXF1
ZXN0QWNjZXNzLAorICAgIERvZXNOb3RIYXZlQWNjZXNzLAorICAgIEhhc0FjY2VzcworfTsKKyAg
ICAKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCituYW1lc3BhY2UgV1RGIHsKKyAgICAKK3RlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpTdG9yYWdlQWNjZXNzU3RhdHVzPiB7Cisg
ICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICBXZWJLaXQ6OlN0b3JhZ2VBY2Nlc3NT
dGF0dXMsCisgICAgV2ViS2l0OjpTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5ub3RSZXF1ZXN0QWNj
ZXNzLAorICAgIFdlYktpdDo6U3RvcmFnZUFjY2Vzc1N0YXR1czo6RG9lc05vdEhhdmVBY2Nlc3Ms
CisgICAgV2ViS2l0OjpTdG9yYWdlQWNjZXNzU3RhdHVzOjpIYXNBY2Nlc3MKKyAgICA+OworfTsK
KyAgICAKK30gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMzE0MDApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSw3IEBACiAj
aW5jbHVkZSAiUGx1Z2luSW5mb3JtYXRpb24uaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFu
YWdlci5oIgogI2luY2x1ZGUgIlByaW50SW5mby5oIgorI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NT
dGF0dXMuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlci5oIgogI2luY2x1ZGUgIlRleHRDaGVja2Vy
U3RhdGUuaCIKICNpbmNsdWRlICJVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgiCkBAIC03
NDc0LDE2ICs3NDc1LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdG9wVVJMU2NoZW1lVGFzayh1
aW4KICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKIHZvaWQgV2ViUGFn
ZVByb3h5OjpoYXNTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYg
dG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90
IHdlYlByb2Nlc3NDb250ZXh0SWQpCiB7Ci0gICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5oYXNTdG9y
YWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVIb3N0KSwgV1RGTW92ZSh0b3BGcmFtZUhvc3QpLCBm
cmFtZUlELCBwYWdlSUQsIFt0aGlzLCB3ZWJQcm9jZXNzQ29udGV4dElkXSAoYm9vbCBoYXNBY2Nl
c3MpIHsKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9yYWdl
QWNjZXNzUmVzcG9uc2UoaGFzQWNjZXNzLCB3ZWJQcm9jZXNzQ29udGV4dElkKSwgbV9wYWdlSUQp
OworICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+aGFzU3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZy
YW1lSG9zdCksIFdURk1vdmUodG9wRnJhbWVIb3N0KSwgZnJhbWVJRCwgcGFnZUlELCBbdGhpcywg
d2ViUHJvY2Vzc0NvbnRleHRJZF0gKFN0b3JhZ2VBY2Nlc3NTdGF0dXMgc3RhdHVzKSB7CisgICAg
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcmFnZUFjY2Vzc1Jlc3Bv
bnNlKHN0YXR1cywgd2ViUHJvY2Vzc0NvbnRleHRJZCksIG1fcGFnZUlEKTsKICAgICB9KTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZy
YW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBwYWdlSUQsIHVpbnQ2NF90IHdlYlByb2Nlc3NDb250ZXh0SWQpCit2b2lkIFdlYlBhZ2VQcm94
eTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0
b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCB1c2Vy
RGlkR3JhbnRTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCB3ZWJQcm9jZXNzQ29udGV4dElkKQogewog
ICAgIEFTU0VSVChwYWdlSUQgPT0gbV9wYWdlSUQpOwotICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+
cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZUhvc3QpLCBXVEZNb3ZlKHRvcEZy
YW1lSG9zdCksIGZyYW1lSUQsIHBhZ2VJRCwgW3RoaXMsIHdlYlByb2Nlc3NDb250ZXh0SWRdIChi
b29sIHdhc0dyYW50ZWQpIHsKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTdG9yYWdlQWNjZXNzUmVzcG9uc2Uod2FzR3JhbnRlZCwgd2ViUHJvY2Vzc0NvbnRleHRJ
ZCksIG1fcGFnZUlEKTsKKyAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPnJlcXVlc3RTdG9yYWdlQWNj
ZXNzKFdURk1vdmUoc3ViRnJhbWVIb3N0KSwgV1RGTW92ZSh0b3BGcmFtZUhvc3QpLCBmcmFtZUlE
LCBwYWdlSUQsIHVzZXJEaWRHcmFudFN0b3JhZ2VBY2Nlc3MsIFt0aGlzLCB3ZWJQcm9jZXNzQ29u
dGV4dElkXSAoU3RvcmFnZUFjY2Vzc1N0YXR1cyBzdGF0dXMpIHsKKyAgICAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9yYWdlQWNjZXNzUmVzcG9uc2Uoc3RhdHVzLCB3
ZWJQcm9jZXNzQ29udGV4dElkKSwgbV9wYWdlSUQpOwogICAgIH0pOwogfQogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjMxNDAwKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyNzgsNyArMTI3OCw3IEBAIHB1YmxpYzoKIAogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JB
R0VfUEFSVElUSU9OSU5HKQogICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJG
cmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgcGFnZUlELCB1aW50NjRfdCB3ZWJQcm9jZXNzQ29udGV4dElkKTsKLSAgICB2b2lkIHJlcXVl
c3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVI
b3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IHdlYlByb2Nl
c3NDb250ZXh0SWQpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3Vi
RnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IHBhZ2VJRCwgYm9vbCB1c2VyRGlkR3JhbnRTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCB3ZWJQ
cm9jZXNzQ29udGV4dElkKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4JKHJldmlzaW9uIDIzMTQwMCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNTExLDcgKzUxMSw3IEBA
IG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdF
X1BBUlRJVElPTklORykKICAgICBIYXNTdG9yYWdlQWNjZXNzKFN0cmluZyBzdWJGcmFtZUhvc3Qs
IFN0cmluZyB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgY29udGV4dElEKQotICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyBzdWJG
cmFtZUhvc3QsIFN0cmluZyB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3QgY29udGV4dElEKQorICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0
cmluZyBzdWJGcmFtZUhvc3QsIFN0cmluZyB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCB1c2VyRGlkR3JhbnRTdG9yYWdlQWNjZXNzLCB1aW50NjRf
dCBjb250ZXh0SUQpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHJldmlzaW9uIDIzMTQwMCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
UGx1Z2luUHJvY2Vzc01hbmFnZXIuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzUHJveHkuaCIK
KyNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaCIKQEAgLTMzMyw3ICszMzQsNyBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzCiAgICAgcHJvY2Vzc1N0YXRp
c3RpY3NBbmREYXRhUmVjb3JkcygpOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6aGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYm
IHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVI
b3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBh
Z2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYm
IGNhbGxiYWNrKQogewogICAgIEFTU0VSVChzdWJGcmFtZUhvc3QgIT0gdG9wRnJhbWVIb3N0KTsK
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtMzQyLDEyICszNDMsMTIgQEAgdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmhhcwogICAgICAgICAKICAgICAgICAg
YXV0byYgc3ViRnJhbWVTdGF0aXN0aWMgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmlt
YXJ5RG9tYWluKHN1YkZyYW1lUHJpbWFyeURvbWFpbik7CiAgICAgICAgIGlmIChzaG91bGRCbG9j
a0Nvb2tpZXMoc3ViRnJhbWVTdGF0aXN0aWMpKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhmYWxz
ZSk7CisgICAgICAgICAgICBjYWxsYmFjayhTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5ub3RSZXF1
ZXN0QWNjZXNzKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlm
ICghc2hvdWxkUGFydGl0aW9uQ29va2llcyhzdWJGcmFtZVN0YXRpc3RpYykpIHsKLSAgICAgICAg
ICAgIGNhbGxiYWNrKHRydWUpOworICAgICAgICAgICAgY2FsbGJhY2soU3RvcmFnZUFjY2Vzc1N0
YXR1czo6SGFzQWNjZXNzKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0z
NTUsNyArMzU2LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhcwog
ICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVz
dFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhv
c3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkIChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0
cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBi
b29sIHVzZXJEaWRHcmFudFN0b3JhZ2VBY2Nlc3MsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoc3ViRnJh
bWVIb3N0ICE9IHRvcEZyYW1lSG9zdCk7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
QEAgLTM2MywyMCArMzY0LDI1IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpyZXEKICAgICBhdXRvIHN1YkZyYW1lUHJpbWFyeURvbWFpbiA9IGlzb2xhdGVkUHJpbWFyeURv
bWFpbihzdWJGcmFtZUhvc3QpOwogICAgIGF1dG8gdG9wRnJhbWVQcmltYXJ5RG9tYWluID0gaXNv
bGF0ZWRQcmltYXJ5RG9tYWluKHRvcEZyYW1lSG9zdCk7CiAgICAgaWYgKHN1YkZyYW1lUHJpbWFy
eURvbWFpbiA9PSB0b3BGcmFtZVByaW1hcnlEb21haW4pIHsKLSAgICAgICAgY2FsbGJhY2sodHJ1
ZSk7CisgICAgICAgIGNhbGxiYWNrKFN0b3JhZ2VBY2Nlc3NTdGF0dXM6Okhhc0FjY2Vzcyk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3ViRnJhbWVQcmltYXJ5RG9t
YWluID0gY3Jvc3NUaHJlYWRDb3B5KHN1YkZyYW1lUHJpbWFyeURvbWFpbiksIHRvcEZyYW1lUHJp
bWFyeURvbWFpbiA9IGNyb3NzVGhyZWFkQ29weSh0b3BGcmFtZVByaW1hcnlEb21haW4pLCBmcmFt
ZUlELCBwYWdlSUQsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldICgpIG11dGFibGUgewor
ICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBzdWJGcmFtZVByaW1hcnlEb21haW4gPSBjcm9zc1RocmVhZENvcHkoc3Vi
RnJhbWVQcmltYXJ5RG9tYWluKSwgdG9wRnJhbWVQcmltYXJ5RG9tYWluID0gY3Jvc3NUaHJlYWRD
b3B5KHRvcEZyYW1lUHJpbWFyeURvbWFpbiksIGZyYW1lSUQsIHBhZ2VJRCwgdXNlckRpZEdyYW50
U3RvcmFnZUFjY2VzcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKCkgbXV0YWJsZSB7
CiAKICAgICAgICAgYXV0byYgc3ViRnJhbWVTdGF0aXN0aWMgPSBlbnN1cmVSZXNvdXJjZVN0YXRp
c3RpY3NGb3JQcmltYXJ5RG9tYWluKHN1YkZyYW1lUHJpbWFyeURvbWFpbik7CiAgICAgICAgIGlm
IChzaG91bGRCbG9ja0Nvb2tpZXMoc3ViRnJhbWVTdGF0aXN0aWMpKSB7Ci0gICAgICAgICAgICBj
YWxsYmFjayhmYWxzZSk7CisgICAgICAgICAgICBjYWxsYmFjayhTdG9yYWdlQWNjZXNzU3RhdHVz
OjpDYW5ub3RSZXF1ZXN0QWNjZXNzKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgaWYgKCFzaG91bGRQYXJ0aXRpb25Db29raWVzKHN1YkZyYW1lU3Rh
dGlzdGljKSkgewotICAgICAgICAgICAgY2FsbGJhY2sodHJ1ZSk7CisgICAgICAgICAgICBjYWxs
YmFjayhTdG9yYWdlQWNjZXNzU3RhdHVzOjpIYXNBY2Nlc3MpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fc3RvcmFnZUFjY2Vzc1Byb21wdHNFbmFibGVk
ICYmICF1c2VyRGlkR3JhbnRTdG9yYWdlQWNjZXNzKSB7CisgICAgICAgICAgICBjYWxsYmFjayhT
dG9yYWdlQWNjZXNzU3RhdHVzOjpEb2VzTm90SGF2ZUFjY2Vzcyk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIApAQCAtNDA1LDcgKzQxMSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpyZXEKICAgICBpZiAoIWNvb2tpZXNCbG9ja2VkICYmICFzaG91bGRQ
YXJ0aXRpb25Db29raWVzKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzc1N0YXRpc3RpYykpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fZ3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihXVEZNb3Zl
KGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyksIFdURk1vdmUob3BlbmVyRG9tYWluKSwgc3Rk
OjpudWxsb3B0LCBvcGVuZXJQYWdlSUQsIFtdKGJvb2wpIHsgfSk7CisgICAgbV9ncmFudFN0b3Jh
Z2VBY2Nlc3NIYW5kbGVyKFdURk1vdmUoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKSwgV1RG
TW92ZShvcGVuZXJEb21haW4pLCBzdGQ6Om51bGxvcHQsIG9wZW5lclBhZ2VJRCwgW10oU3RvcmFn
ZUFjY2Vzc1N0YXR1cykgeyB9KTsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBSRUxF
QVNFX0xPR19JTkZPX0lGKG1fZGVidWdMb2dnaW5nRW5hYmxlZCwgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RlYnVnLCAiR3JhbnQgc3RvcmFnZSBhY2Nlc3MgZm9yICV7cHVibGljfXMgdW5kZXIgb3Bl
bmVyICV7cHVibGljfXMsICV7cHVibGljfXMgdXNlciBpbnRlcmFjdGlvbi4iLCBkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MudXRmOCgpLmRhdGEoKSwgb3BlbmVyRG9tYWluLnV0ZjgoKS5kYXRh
KCksIChpc1RyaWdnZXJlZEJ5VXNlckdlc3R1cmUgPyAid2l0aCIgOiAid2l0aG91dCIpKTsKICNl
bmRpZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHJldmlzaW9uIDIzMTQwMCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01OCwxNSArNTgsMTYgQEAgY2xhc3MgT3BlcmF0aW5nRGF0ZTsKIGNsYXNzIFdl
YlByb2Nlc3NQcm94eTsKIAogZW51bSBjbGFzcyBTaG91bGRDbGVhckZpcnN0OworZW51bSBjbGFz
cyBTdG9yYWdlQWNjZXNzU3RhdHVzOwogCiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUgZmluYWwgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXIgewogcHVibGljOgogICAgIHVzaW5nIFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRp
dGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9t
YWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0
aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3QpPjsKLSAgICB1c2luZyBIYXNTdG9yYWdlQWNj
ZXNzRm9yRnJhbWVIYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgcmVz
b3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCBoYXNBY2Nlc3Mp
PiYmIGNhbGxiYWNrKT47Ci0gICAgdXNpbmcgR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlciA9IFdU
Rjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJp
bmcmIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wgd2FzR3JhbnRlZCk+JiYgY2Fs
bGJhY2spPjsKKyAgICB1c2luZyBIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyID0gV1RG
OjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmlu
ZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBX
VEY6OkZ1bmN0aW9uPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY2FsbGJhY2spPjsKKyAg
ICB1c2luZyBHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNv
bnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFp
biwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6
OkZ1bmN0aW9uPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY2FsbGJhY2spPjsKICAgICB1
c2luZyBSZW1vdmVBbGxTdG9yYWdlQWNjZXNzSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZCgp
PjsKICAgICB1c2luZyBSZW1vdmVQcmV2YWxlbnREb21haW5zSGFuZGxlciA9IFdURjo6RnVuY3Rp
b248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mKT47Ci0gICAgc3RhdGljIFJlZjxXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnksIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYpPiYmIHRl
c3RpbmdDYWxsYmFjaywgYm9vbCBpc0VwaGVtZXJhbCwgVXBkYXRlUHJldmFsZW50RG9tYWluc1Rv
UGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyJiYgdXBkYXRlUHJldmFsZW50RG9tYWluc1Rv
UGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyID0gW10oY29uc3QgV1RGOjpWZWN0b3I8U3Ry
aW5nPiYsIGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3RvcjxTdHJp
bmc+JiwgU2hvdWxkQ2xlYXJGaXJzdCkgeyB9LCBIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5k
bGVyJiYgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciA9IFtdKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90LCB1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJv
b2wpPiYmKSB7IH0sIEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXImJiBncmFudFN0b3JhZ2VBY2Nl
c3NIYW5kbGVyID0gW10oY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4sIHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIHsgfSwg
UmVtb3ZlQWxsU3RvcmFnZUFjY2Vzc0hhbmRsZXImJiByZW1vdmVBbGxTdG9yYWdlQWNjZXNzSGFu
ZGxlciA9IFtdKCkgeyB9LCBSZW1vdmVQcmV2YWxlbnREb21haW5zSGFuZGxlciYmIHJlbW92ZURv
bWFpbnNIYW5kbGVyID0gW10gKGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mKSB7IH0pCisgICAg
c3RhdGljIFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IGNyZWF0ZShjb25zdCBT
dHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIEZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFN0cmluZyYpPiYmIHRlc3RpbmdDYWxsYmFjaywgYm9vbCBpc0VwaGVtZXJhbCwgVXBkYXRl
UHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyJiYgdXBkYXRl
UHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyID0gW10oY29u
c3QgV1RGOjpWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBjb25z
dCBXVEY6OlZlY3RvcjxTdHJpbmc+JiwgU2hvdWxkQ2xlYXJGaXJzdCkgeyB9LCBIYXNTdG9yYWdl
QWNjZXNzRm9yRnJhbWVIYW5kbGVyJiYgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciA9
IFtdKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90LCB1aW50NjRfdCwgV1RG
OjpGdW5jdGlvbjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKSB7IH0sIEdyYW50U3RvcmFn
ZUFjY2Vzc0hhbmRsZXImJiBncmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyID0gW10oY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4sIHVpbnQ2NF90LCBX
VEY6OkZ1bmN0aW9uPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpIHsgfSwgUmVtb3ZlQWxs
U3RvcmFnZUFjY2Vzc0hhbmRsZXImJiByZW1vdmVBbGxTdG9yYWdlQWNjZXNzSGFuZGxlciA9IFtd
KCkgeyB9LCBSZW1vdmVQcmV2YWxlbnREb21haW5zSGFuZGxlciYmIHJlbW92ZURvbWFpbnNIYW5k
bGVyID0gW10gKGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mKSB7IH0pCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUocmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgV1RGTW92ZSh0ZXN0aW5nQ2FsbGJhY2spLCBp
c0VwaGVtZXJhbCwgV1RGTW92ZSh1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJs
b2NrQ29va2llc0hhbmRsZXIpLCBXVEZNb3ZlKGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRs
ZXIpLCBXVEZNb3ZlKGdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIpLCBXVEZNb3ZlKHJlbW92ZUFs
bFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKSwgV1RGTW92ZShyZW1vdmVEb21haW5zSGFuZGxlcikpKTsK
ICAgICB9CkBAIC04NCw4ICs4NSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+
JiYgb3JpZ2lucyk7CiAKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJh
bWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJiBjYWxsYmFjayk7
Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0
cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKTsKKyAgICB2b2lk
IGhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFt
ZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmIGNhbGxiYWNrKTsKKyAgICB2b2lk
IHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9w
RnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNlckRp
ZEdyYW50U3RvcmFnZUFjY2VzcywgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VB
Y2Nlc3NTdGF0dXMpPiYmIGNhbGxiYWNrKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNz
VW5kZXJPcGVuZXIoU3RyaW5nJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRf
dCBvcGVuZXJQYWdlSUQsIFN0cmluZyYmIG9wZW5lckRvbWFpbiwgYm9vbCBpc1RyaWdnZXJlZEJ5
VXNlckdlc3R1cmUpOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDYWxsYmFjayhib29s
IHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNvbnRleHRJZCk7CiAKQEAgLTE4Miw2ICsxODMsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcygpOwogCiAgICAgdm9pZCBz
ZXREZWJ1Z0xvZ2dnaW5nRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9kZWJ1Z0xvZ2dpbmdFbmFi
bGVkICA9IGVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFN0b3JhZ2VBY2Nlc3NQcm9tcHRzRW5hYmxl
ZChib29sIGVuYWJsZWQpIHsgbV9zdG9yYWdlQWNjZXNzUHJvbXB0c0VuYWJsZWQgPSBlbmFibGVk
OyB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHJlZ2lzdGVyVXNlckRlZmF1bHRz
SWZOZWVkZWQoKTsKQEAgLTIzMCw2ICsyMzIsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2Rl
YnVnTW9kZUVuYWJsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9kZWJ1Z0xvZ2dpbmdFbmFibGVk
IHsgZmFsc2UgfTsKKyAgICBib29sIG1fc3RvcmFnZUFjY2Vzc1Byb21wdHNFbmFibGVkIHsgZmFs
c2UgfTsKIAogICAgIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYpPiBtX3N0YXRpc3RpY3NU
ZXN0aW5nQ2FsbGJhY2s7CiB9OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
Q29jb2EubW0JKHJldmlzaW9uIDIzMTQwMCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZUNvY29hLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC01MSw2ICs1MSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpy
ZWcKIAogICAgICAgICBzZXREZWJ1Z0xvZ2dnaW5nRW5hYmxlZChbW05TVXNlckRlZmF1bHRzIHN0
YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OkAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rl
YnVnTG9nZ2luZ0VuYWJsZWQiXSk7CiAgICAgICAgIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
ZWJ1Z01vZGUoW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktl
eTpAIkV4cGVyaW1lbnRhbFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUiXSk7CisgICAg
ICAgIHNldFN0b3JhZ2VBY2Nlc3NQcm9tcHRzRW5hYmxlZChbW05TVXNlckRlZmF1bHRzIHN0YW5k
YXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OkAiRXhwZXJpbWVudGFsU3RvcmFnZUFjY2Vzc1By
b21wdHNFbmFibGVkIl0pOwogICAgIH0pOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJldmlz
aW9uIDIzMTQwMCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzMiw3ICs0MzIsNyBAQCBzdGF0aWMg
dWludDY0X3QgbmV4dFJlcXVlc3RTdG9yYWdlQWNjZXNzCiAgICAgcmV0dXJuICsrbmV4dENvbnRl
eHRJZDsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpoYXNTdG9yYWdlQWNjZXNzRm9y
RnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9t
YWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxi
YWNrKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBj
b25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMp
PiYmIGNhbGxiYWNrKQogewogICAgIGF1dG8gY29udGV4dElkID0gbmV4dFJlcXVlc3RTdG9yYWdl
QWNjZXNzQ29udGV4dElkKCk7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3N0b3JhZ2VBY2Nlc3NS
ZXNwb25zZUNhbGxiYWNrTWFwLmFkZChjb250ZXh0SWQsIFdURk1vdmUoY2FsbGJhY2spKTsKQEAg
LTQ0MCw3ICs0NDAsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Omhhc1N0b3JhZ2VBY2Nl
CiAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okhhc1N0b3JhZ2VBY2Nlc3NGb3JG
cmFtZShzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlE
LCBwYWdlSUQsIGNvbnRleHRJZCksIDApOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OmdyYW50U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OmdyYW50U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0
cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY2FsbGJhY2spCiB7CiAg
ICAgYXV0byBjb250ZXh0SWQgPSBuZXh0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb250ZXh0SWQoKTsK
ICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXAu
YWRkKGNvbnRleHRJZCwgV1RGTW92ZShjYWxsYmFjaykpOwpAQCAtNDU0LDEwICs0NTQsMTAgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZW1vdmVBbGxTdG9yYQogICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhzZXNzaW9uSUQp
LCAwKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzdG9yYWdlQWNjZXNzUmVxdWVz
dFJlc3VsdChib29sIHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6c3RvcmFnZUFjY2Vzc1JlcXVlc3RSZXN1bHQoU3RvcmFnZUFjY2Vzc1N0
YXR1cyBzdGF0dXMsIHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0g
bV9zdG9yYWdlQWNjZXNzUmVzcG9uc2VDYWxsYmFja01hcC50YWtlKGNvbnRleHRJZCk7Ci0gICAg
Y2FsbGJhY2sod2FzR3JhbnRlZCk7CisgICAgY2FsbGJhY2soc3RhdHVzKTsKIH0KIAogdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBk
b21haW5zKT4mJiBjYWxsYmFjaykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyMzE0MDApCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAko
d29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQCBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlw
ZTsKIHN0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIGNsYXNzIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5Owogc3RydWN0IFdlYnNpdGVEYXRhOworZW51bSBjbGFz
cyBTdG9yYWdlQWNjZXNzU3RhdHVzOwogCiBjbGFzcyBOZXR3b3JrUHJvY2Vzc1Byb3h5IDogcHVi
bGljIENoaWxkUHJvY2Vzc1Byb3h5LCBwcml2YXRlIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQgewog
cHVibGljOgpAQCAtODEsOSArODIsOSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEhBVkUoQ0ZO
RVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQotICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25z
dCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBh
Z2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjayk7CisgICAgdm9p
ZCBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYg
cmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VB
Y2Nlc3NTdGF0dXMpPiYmIGNhbGxiYWNrKTsKICAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NF
bnRyaWVzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJp
bmc+JiYgZG9tYWlucyk+JiYpOwotICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0
UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBh
Z2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjayk7CisgICAgdm9p
ZCBncmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3Vy
Y2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmIGNhbGxiYWNrKTsKICAgICB2b2lkIHJlbW92ZUFsbFN0
b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQpOwogI2VuZGlmCiAKQEAgLTE0MSw3ICsxNDIsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFj
ZSh1aW50NjRfdCBsb2FkZXJJRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmKTsKICNlbmRpZgogI2lmIEhBVkUoQ0ZORVRX
T1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQotICAgIHZvaWQgc3RvcmFnZUFjY2Vzc1JlcXVlc3RS
ZXN1bHQoYm9vbCB3YXNHcmFudGVkLCB1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgc3Rv
cmFnZUFjY2Vzc1JlcXVlc3RSZXN1bHQoU3RvcmFnZUFjY2Vzc1N0YXR1cywgdWludDY0X3QgY29u
dGV4dElkKTsKICAgICB2b2lkIGFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzUmVzdWx0KFZlY3RvcjxT
dHJpbmc+JiYgZG9tYWlucywgdWludDY0X3QgY29udGV4dElkKTsKICNlbmRpZgogCkBAIC0xNjks
NyArMTcwLDcgQEAgcHJpdmF0ZToKICAgICBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbiBtX3Rva2VuRm9ySG9sZGluZ0xvY2tlZEZpbGVzOwogCiAgICAgSGFzaE1hcDx1
aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHN1Y2Nlc3MpPj4gbV93cml0ZUJs
b2JUb0ZpbGVQYXRoQ2FsbGJhY2tNYXA7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgV1RGOjpDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgd2FzR3JhbnRlZCk+PiBtX3N0b3JhZ2VBY2Nlc3NSZXNw
b25zZUNhbGxiYWNrTWFwOworICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6Q29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4+IG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNl
Q2FsbGJhY2tNYXA7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPj4gbV9hbGxTdG9yYWdlQWNjZXNzRW50cmllc0Nh
bGxiYWNrTWFwOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5p
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIzMTQwMCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgkod29y
a2luZyBjb3B5KQpAQCAtNDUsOSArNDUsOSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1By
b3h5IExlZ2FjeVJlCiAgICAgQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSh1
aW50NjRfdCBsb2FkZXJJRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBXZWJD
b3JlOjpQcm90ZWN0aW9uU3BhY2UgcHJvdGVjdGlvblNwYWNlKQogI2VuZGlmCiAjaWYgSEFWRShD
Rk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCi0gICAgU3RvcmFnZUFjY2Vzc1JlcXVlc3RS
ZXN1bHQoYm9vbCB3YXNHcmFudGVkLCB1aW50NjRfdCBjb250ZXh0SWQpCisgICAgU3RvcmFnZUFj
Y2Vzc1JlcXVlc3RSZXN1bHQoZW51bSBXZWJLaXQ6OlN0b3JhZ2VBY2Nlc3NTdGF0dXMgc3RhdHVz
LCB1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNSZXN1bHQo
VmVjdG9yPFN0cmluZz4gZG9tYWlucywgdWludDY0X3QgY29udGV4dElkKQotCisjZW5kaWYKICNp
ZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIENvbnRlbnRFeHRlbnNpb25SdWxlcyhX
ZWJLaXQ6OlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDIzMTQwMCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFSZWNvcmQuaCIK
ICNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nl
c3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNpbmNsdWRl
ICJTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCkBAIC0xMTk4LDcg
KzExOTksNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnVwZGF0ZVByZXZhbGVudERvCiAgICAg
ICAgIHByb2Nlc3NQb29sLT5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVz
KG1fc2Vzc2lvbklELCBkb21haW5zVG9QYXJ0aXRpb24sIGRvbWFpbnNUb0Jsb2NrLCBkb21haW5z
VG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIHNob3VsZENsZWFyRmlyc3QgPT0gU2hvdWxkQ2xl
YXJGaXJzdDo6WWVzKSk7CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6aGFzU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lSGFuZGxlcihjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBT
dHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJ
RCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgaGFzQWNjZXNzKT4mJiBjYWxsYmFj
aykKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxl
cihjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlE
b21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmIGNhbGxiYWNrKQogewogICAgIGZv
ciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkKICAgICAgICAgcHJvY2Vzc1Bv
b2wtPm5ldHdvcmtQcm9jZXNzKCktPmhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShtX3Nlc3Npb25J
RCwgcmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RG
TW92ZShjYWxsYmFjaykpOwpAQCAtMTIxMCw3ICsxMjExLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpnZXRBbGxTdG9yYWdlQWNjZQogICAgICAgICBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nl
c3MoKS0+Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMobV9zZXNzaW9uSUQsIFdURk1vdmUoY2Fs
bGJhY2spKTsKIH0KIAotdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NI
YW5kbGVyKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQ
YXJ0eURvbWFpbiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCB3YXNHcmFudGVkKT4mJiBjYWxs
YmFjaykKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihj
b25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21h
aW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RG
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmIGNhbGxiYWNr
KQogewogICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkKICAgICAg
ICAgcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCktPmdyYW50U3RvcmFnZUFjY2VzcyhtX3Nl
c3Npb25JRCwgcmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJ
RCwgV1RGTW92ZShjYWxsYmFjaykpOwpAQCAtMTIzMCwyNCArMTIzMSwyNCBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OnJlbW92ZVByZXZhbGVudERvCiAgICAgICAgIHByb2Nlc3NQb29sLT5zZW5k
VG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlbW92ZVByZXZh
bGVudERvbWFpbnMobV9zZXNzaW9uSUQsIGRvbWFpbnMpKTsKIH0KIAotdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYg
dG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2spCit2b2lkIFdlYnNpdGVEYXRh
U3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0
b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmIGNhbGxiYWNrKQogewog
ICAgIGlmICghcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSkgewotICAgICAgICBjYWxs
YmFjayhmYWxzZSk7CisgICAgICAgIGNhbGxiYWNrKFN0b3JhZ2VBY2Nlc3NTdGF0dXM6OkNhbm5v
dFJlcXVlc3RBY2Nlc3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIG1fcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy0+aGFzU3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lSG9z
dCksIFdURk1vdmUodG9wRnJhbWVIb3N0KSwgZnJhbWVJRCwgcGFnZUlELCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
U3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29s
KT4mJiBjYWxsYmFjaykKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCB1c2VyRGlkR3JhbnRTdG9yYWdlQWNjZXNz
LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY2Fs
bGJhY2spCiB7CiAgICAgaWYgKCFyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpKSB7Ci0g
ICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAgICAgICAgY2FsbGJhY2soU3RvcmFnZUFjY2Vzc1N0
YXR1czo6Q2Fubm90UmVxdWVzdEFjY2Vzcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
Ci0gICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhXVEZN
b3ZlKHN1YkZyYW1lSG9zdCksIFdURk1vdmUodG9wRnJhbWVIb3N0KSwgZnJhbWVJRCwgcGFnZUlE
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5yZXF1
ZXN0U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lSG9zdCksIFdURk1vdmUodG9wRnJhbWVI
b3N0KSwgZnJhbWVJRCwgcGFnZUlELCB1c2VyRGlkR3JhbnRTdG9yYWdlQWNjZXNzLCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CiB9CiAjZW5kaWYKIApAQCAtMTQ1MSw5ICsxNDUyLDkgQEAgdm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjplbmFibGVSZXNvdXJjZUxvYQogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JB
R0VfUEFSVElUSU9OSU5HKQogICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKG1fY29uZmlndXJhdGlvbi5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV9zZXNzaW9uSUQuaXNF
cGhlbWVyYWwoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQ
YXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCBzaG91bGRDbGVhckZpcnN0KSB7CiAg
ICAgICAgIHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKGRv
bWFpbnNUb1BhcnRpdGlvbiwgZG9tYWluc1RvQmxvY2ssIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRp
b25Ob3JCbG9jaywgc2hvdWxkQ2xlYXJGaXJzdCk7Ci0gICAgfSwgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKV0gKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0
IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBoYXNBY2Nlc3MpPiYmIGNhbGxi
YWNrKSB7CisgICAgfSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGNv
bnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFp
biwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY2FsbGJhY2spIHsKICAgICAgICAgaGFz
U3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURv
bWFpbiwgZnJhbWVJRCwgcGFnZUlELCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgfSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VE
b21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCB3YXNHcmFudGVkKT4mJiBjYWxsYmFjaykgeworICAgIH0sIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBj
b25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3Jh
Z2VBY2Nlc3NTdGF0dXMpPiYmIGNhbGxiYWNrKSB7CiAgICAgICAgIGdyYW50U3RvcmFnZUFjY2Vz
c0hhbmRsZXIocmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJ
RCwgV1RGTW92ZShjYWxsYmFjaykpOwogICAgIH0sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyldICgpIHsKICAgICAgICAgcmVtb3ZlQWxsU3RvcmFnZUFjY2Vzc0hhbmRsZXIo
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHJldmlzaW9uIDIzMTQwMCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkod29ya2luZyBjb3B5KQpA
QCAtNTksNiArNTksNyBAQCBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZTsKIHN0cnVjdCBTdG9y
YWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBXZWJzaXRlRGF0YVJlY29yZDsK
IHN0cnVjdCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczsKK2VudW0gY2xhc3MgU3RvcmFnZUFj
Y2Vzc1N0YXR1czsKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogc3RydWN0IFBs
dWdpbk1vZHVsZUluZm87CkBAIC0xMjQsMTMgKzEyNSwxMyBAQCBwdWJsaWM6CiAKICNpZiBIQVZF
KENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKICAgICB2b2lkIHVwZGF0ZVByZXZhbGVu
dERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBk
b21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywg
U2hvdWxkQ2xlYXJGaXJzdCk7Ci0gICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5k
bGVyKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0
eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCBoYXNBY2Nlc3MpPiYmIGNhbGxiYWNrKTsKKyAgICB2b2lkIGhh
c1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFp
biwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3Rh
dHVzKT4mJik7CiAgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+JiYpOwotICAgIHZvaWQgZ3Jh
bnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25z
dCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgd2Fz
R3JhbnRlZCk+JiYgY2FsbGJhY2spOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxl
cihjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlE
b21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwg
V1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKTsKICAg
ICB2b2lkIHJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKCk7CiAgICAgdm9pZCByZW1vdmVQ
cmV2YWxlbnREb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKTsKLSAgICB2b2lk
IGhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFt
ZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkIChib29sKT4mJiBjYWxsYmFjayk7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFn
ZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZv
aWQgKGJvb2wpPiYmIGNhbGxiYWNrKTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5n
JiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NTdGF0dXMpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1
YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQsIGJvb2wgdXNlckRpZEdyYW50U3RvcmFnZUFjY2VzcywgV1RGOjpDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKTsKICNlbmRpZgogICAgIHZv
aWQgbmV0d29ya1Byb2Nlc3NEaWRDcmFzaCgpOwogICAgIHZvaWQgcmVzb2x2ZURpcmVjdG9yaWVz
SWZOZWNlc3NhcnkoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjMxNDAwKQorKysgU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTI4OCw2ICsx
Mjg4LDcgQEAKIAkJNkE1MDgwQkYxRjBFREFBQTAwRTYxN0M1IC8qIFdLV2luZG93RmVhdHVyZXNQ
cml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
QTUwODBCRTFGMEVEQUFBMDBFNjE3QzUgLyogV0tXaW5kb3dGZWF0dXJlc1ByaXZhdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2QjgyMUREQzFF
RUYwNUREMDBEN0FGNEEgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkI4MjFEREExRUVG
MDVERDAwRDdBRjRBIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuaCAqLzsg
fTsKIAkJNkI4MjFEREQxRUVGMDVERDAwRDdBRjRBIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NUZWxlbWV0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNkI4MjFEREIxRUVGMDVERDAwRDdBRjRBIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NUZWxlbWV0cnkuY3BwICovOyB9OworCQk2QkM3MEI0QTIwOUQxNEVBMDBEMzM3MjkgLyogU3Rv
cmFnZUFjY2Vzc1N0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNkJDNzBCNDkyMDlEMTRFQTAwRDMzNzI5IC8qIFN0b3JhZ2VBY2Nlc3NTdGF0dXMu
aCAqLzsgfTsKIAkJNkJFOTY5QzExRTU0RDQ1MjAwOEI3NDgzIC8qIGNvcmVQcmVkaWN0aW9uX21v
ZGVsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkU5
NjlDMDFFNTRENDUyMDA4Qjc0ODMgLyogY29yZVByZWRpY3Rpb25fbW9kZWwgKi87IH07CiAJCTZC
RTk2OUM3MUU1NEQ0QjYwMDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmll
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkU5
NjlDNjFFNTRENEI2MDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIu
Y3BwICovOyB9OwogCQk2QkU5NjlDQTFFNTRENENGMDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0NsYXNzaWZpZXJDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2QkU5NjlDODFFNTRENENGMDA4Qjc0ODMgLyogUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5jcHAgKi87IH07CkBAIC0yMDcxLDcgKzIwNzIsNiBA
QAogCQlDREEyOUEyQjFDQkVCNjdBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEQTI5QTI3MUNCRUI2N0EwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHlNZXNzYWdlcy5oICovOyB9OwogCQlDREMyODMxRDIwMUJENzlEMDBFNkU3NDUgLyogV0tGdWxs
c2NyZWVuU3RhY2tWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREMyODMxQjIwMUJENzlEMDBFNkU3NDUgLyogV0tGdWxsc2NyZWVuU3RhY2tWaWV3
LmggKi87IH07CiAJCUNEQzI4MzFFMjAxQkQ3OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3JlZW5TdGFj
a1ZpZXcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
REMyODMxQzIwMUJENzlEMDBFNkU3NDUgLyogV0tGdWxsc2NyZWVuU3RhY2tWaWV3Lm1tICovOyB9
OwotCQlDREMzODJGRTE3MjExNzk5MDA4QTJGQzMgLyogU2VjSXRlbVNoaW1MaWJyYXJ5Lm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjhBNzgxMzhC
NDYwOTAwQTk1RjQ0IC8qIFNlY0l0ZW1TaGltTGlicmFyeS5tbSAqLzsgfTsKIAkJQ0RDQTg1Qzgx
MzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRENBODVDNjEzMkFCQTRF
MDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbSAqLzsgfTsKIAkJQ0RD
QTg1QzkxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQ0E4NUM3MTMy
QUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggKi87IH07CiAJ
CUNFMTFBRDUwMUNCQzQ3RjgwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMTFBRDRGMUNCQzQ3RjgwMDY4MUVF
NSAvKiBDb2RlU2lnbmluZy5tbSAqLzsgfTsKQEAgLTM3NTAsNiArMzc1MCw3IEBACiAJCTZBNTA4
MEJFMUYwRURBQUEwMEU2MTdDNSAvKiBXS1dpbmRvd0ZlYXR1cmVzUHJpdmF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS1dpbmRvd0ZlYXR1cmVzUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2QjgyMUREQTFFRUYwNUREMDBEN0FGNEEgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1RlbGVtZXRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
VGVsZW1ldHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCODIxRERCMUVFRjA1
REQwMEQ3QUY0QSAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QkM3MEI0OTIwOUQxNEVBMDBEMzM3MjkgLyog
U3RvcmFnZUFjY2Vzc1N0YXR1cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlQWNjZXNzU3RhdHVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCRTk2OUMwMUU1NEQ0NTIwMDhCNzQ4
MyAvKiBjb3JlUHJlZGljdGlvbl9tb2RlbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb3JlUHJl
ZGljdGlvbl9tb2RlbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkJFOTY5QzYxRTU0
RDRCNjAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3ND
bGFzc2lmaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkJFOTY5QzgxRTU0
RDRDRjAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0NsYXNzaWZpZXJDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00
NjAzLDcgKzQ2MDQsNiBAQAogCQlDREMyODMxQjIwMUJENzlEMDBFNkU3NDUgLyogV0tGdWxsc2Ny
ZWVuU3RhY2tWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLRnVsbHNjcmVlblN0YWNrVmlldy5oOyBw
YXRoID0gaW9zL2Z1bGxzY3JlZW4vV0tGdWxsc2NyZWVuU3RhY2tWaWV3Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEQzI4MzFDMjAxQkQ3OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3Jl
ZW5TdGFja1ZpZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0Z1bGxzY3JlZW5TdGFja1Zp
ZXcubW07IHBhdGggPSBpb3MvZnVsbHNjcmVlbi9XS0Z1bGxzY3JlZW5TdGFja1ZpZXcubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQzM4MkY3MTcyMTE1MDYwMDhBMkZDMyAvKiBD
Rk5ldHdvcmsuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDRk5ldHdvcmsuZnJhbWV3b3Jr
OyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yazsg
c291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKLQkJQ0RDMzgzMDYxNzIxMTc5OTAwOEEyRkMz
IC8qIFdlYlByb2Nlc3NTaGltLmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4
cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgaW5jbHVkZUluSW5kZXgg
PSAwOyBwYXRoID0gV2ViUHJvY2Vzc1NoaW0uZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCUNEQzhGNDg4MTcyNUU2NzgwMDE2NkY2RSAvKiBDb3JlRm91bmRhdGlv
bi5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IENvcmVGb3VuZGF0aW9uLmZyYW1ld29yazsg
cGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29y
azsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJQ0RDQTg1QzYxMzJBQkE0RTAwRTk2
MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRENBODVDNzEzMkFCQTRFMDBFOTYxREYgLyog
V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC01Mjc5LDYgKzUyNzksNyBAQAogCQkJCTgzRjk2NDRDMUZBMEY3NjMwMEM0
Nzc1MCAvKiBTaGFyZWRTdHJpbmdIYXNoVGFibGVSZWFkT25seS5oICovLAogCQkJCTUyNzJCMjg4
MTQwNjk4NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0YS5jcHAgKi8sCiAJCQkJNTI3MkIyODkx
NDA2OTg1RDAwOTZBNUQwIC8qIFN0YXRpc3RpY3NEYXRhLmggKi8sCisJCQkJNkJDNzBCNDkyMDlE
MTRFQTAwRDMzNzI5IC8qIFN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCAqLywKIAkJCQkxQTVFNERBMzEy
RDNCRDNEMDA5OUEyQkIgLyogVGV4dENoZWNrZXJTdGF0ZS5oICovLAogCQkJCTJGRDQzQjkyMUZB
MDA2QTMwMDgzRjUxQyAvKiBUb3VjaEJhck1lbnVEYXRhLmNwcCAqLywKIAkJCQkyRkQ0M0I5MTFG
QTAwNkExMDA4M0Y1MUMgLyogVG91Y2hCYXJNZW51RGF0YS5oICovLApAQCAtOTE3NCw2ICs5MTc1
LDcgQEAKIAkJCQkyREU2OTQzRTE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9u
Q29udHJvbGxlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MjcyQjI4QjE0MDY5ODVE
MDA5NkE1RDAgLyogU3RhdGlzdGljc0RhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEJERUQz
MTZDOThFREQwMEU0RTI1RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNkJDNzBCNEEyMDlEMTRFQTAwRDMzNzI5IC8qIFN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBRDMzMDZGMTZCMUQ5OTEwMDRGNjBFNyAvKiBTdG9yYWdlQXJlYUlt
cGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQ0VDRDI1MTcxNjJEQjEwMDFGQzlFRiAvKiBTdG9y
YWdlQXJlYU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzMzRERUUxNkRFOEY4ODAwNkE4RTM4
IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTE0NDYsMTQg
KzExNDQ4LDYgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKLQkJQ0RDMzgyRkQxNzIxMTc5OTAwOEEyRkMzIC8qIFNvdXJjZXMgKi8gPSB7
Ci0JCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCQlDREMzODJGRTE3MjExNzk5MDA4QTJGQzMgLyog
U2VjSXRlbVNoaW1MaWJyYXJ5Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkpOwotCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07CiAvKiBFbmQgUEJYU291cmNlc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rp
b24gKi8KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiAyMzE0MDApCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkluamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZS5oIgogI2luY2x1ZGUgIk5hdmlnYXRpb25BY3Rpb25EYXRhLmgiCiAjaW5j
bHVkZSAiUGFnZUJhbm5lci5oIgorI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNp
bmNsdWRlICJVc2VyRGF0YS5oIgogI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3Nlci5oIgogI2luY2x1
ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgpAQCAtMTI4NiwxMiArMTI4Nyw0OCBAQCB2b2lk
IFdlYkNocm9tZUNsaWVudDo6ZGlkSW52YWxpZGF0ZURvY3VtCiAjaWYgSEFWRShDRk5FVFdPUktf
U1RPUkFHRV9QQVJUSVRJT05JTkcpCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6aGFzU3RvcmFnZUFj
Y2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQg
KGJvb2wpPiYmIGNhbGxiYWNrKQogewotICAgIG1fcGFnZS5oYXNTdG9yYWdlQWNjZXNzKFdURk1v
dmUoc3ViRnJhbWVIb3N0KSwgV1RGTW92ZSh0b3BGcmFtZUhvc3QpLCBmcmFtZUlELCBwYWdlSUQs
IFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBtX3BhZ2UuaGFzU3RvcmFnZUFjY2VzcyhXVEZNb3Zl
KHN1YkZyYW1lSG9zdCksIFdURk1vdmUodG9wRnJhbWVIb3N0KSwgZnJhbWVJRCwgcGFnZUlELCBb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFN0b3JhZ2VBY2Nlc3NTdGF0dXMgc3RhdHVz
KSB7CisgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7CisgICAgICAgIGNhc2UgU3RvcmFnZUFjY2Vz
c1N0YXR1czo6Q2Fubm90UmVxdWVzdEFjY2VzczoKKyAgICAgICAgY2FzZSBTdG9yYWdlQWNjZXNz
U3RhdHVzOjpEb2VzTm90SGF2ZUFjY2VzczoKKyAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBTdG9yYWdlQWNjZXNzU3RhdHVzOjpI
YXNBY2Nlc3M6CisgICAgICAgICAgICBjYWxsYmFjayh0cnVlKTsKKyAgICAgICAgfQorICAgIH0p
OwogfQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5n
JiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJiBj
YWxsYmFjaykKIHsKLSAgICBtX3BhZ2UucmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJG
cmFtZUhvc3QpLCBXVEZNb3ZlKHRvcEZyYW1lSG9zdCksIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92
ZShjYWxsYmFjaykpOworICAgIG1fcGFnZS5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhzdWJGcmFtZUhv
c3QuaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lSG9zdC5pc29sYXRlZENvcHkoKSwgZnJhbWVJRCwg
cGFnZUlELCBmYWxzZSwgW3RoaXMsIHN1YkZyYW1lSG9zdCA9IFdURk1vdmUoc3ViRnJhbWVIb3N0
KSwgdG9wRnJhbWVIb3N0ID0gV1RGTW92ZSh0b3BGcmFtZUhvc3QpLCBmcmFtZUlELCBwYWdlSUQs
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChTdG9yYWdlQWNjZXNzU3RhdHVzIHN0YXR1
cykgbXV0YWJsZSB7CisKKyAgICAgICAgc3dpdGNoIChzdGF0dXMpIHsKKyAgICAgICAgY2FzZSBT
dG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5ub3RSZXF1ZXN0QWNjZXNzOgorICAgICAgICAgICAgY2Fs
bGJhY2soZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIFN0b3JhZ2VB
Y2Nlc3NTdGF0dXM6OkRvZXNOb3RIYXZlQWNjZXNzOgorICAgICAgICAgICAgLy8gRklYTUU6IFBy
b21wdCBjb2RlIGdvZXMgaGVyZSBhbmQgdGhlIHNlY29uZCBjYWxsIHRvIG1fcGFnZS5yZXF1ZXN0
U3RvcmFnZUFjY2VzcygpCisgICAgICAgICAgICAvLyBpcyBvbmx5IG1hZGUgaWYgdGhlIHVzZXIg
Z3JhbnRzIGFjY2Vzcy4KKyAgICAgICAgICAgIG1fcGFnZS5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhX
VEZNb3ZlKHN1YkZyYW1lSG9zdCksIFdURk1vdmUodG9wRnJhbWVIb3N0KSwgZnJhbWVJRCwgcGFn
ZUlELCB0cnVlLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFN0b3JhZ2VBY2Nlc3NT
dGF0dXMgc3RhdHVzKSB7CisKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHN0YXR1cykgeworICAg
ICAgICAgICAgICAgIGNhc2UgU3RvcmFnZUFjY2Vzc1N0YXR1czo6Q2Fubm90UmVxdWVzdEFjY2Vz
czoKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UpOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgY2FzZSBTdG9yYWdlQWNjZXNzU3RhdHVzOjpE
b2VzTm90SGF2ZUFjY2VzczoKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIGNhc2UgU3RvcmFnZUFjY2Vzc1N0YXR1czo6
SGFzQWNjZXNzOgorICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayh0cnVlKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
Y2FzZSBTdG9yYWdlQWNjZXNzU3RhdHVzOjpIYXNBY2Nlc3M6CisgICAgICAgICAgICBjYWxsYmFj
ayh0cnVlKTsKKyAgICAgICAgfQorICAgIH0pOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyMzE0MDAp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjAsNiArNjAsNyBAQAogI2luY2x1ZGUgIlNlc3Npb25TdGF0ZUNvbnZlcnNp
b24uaCIKICNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJp
dG1hcC5oIgorI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNpbmNsdWRlICJVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCIKICNpbmNsdWRlICJWaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yLmgiCiAjaW5jbHVkZSAiVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIu
aCIKQEAgLTU5MDcsNyArNTkwOCw3IEBAIHN0YXRpYyB1aW50NjRfdCBuZXh0UmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MKICAgICByZXR1cm4gKytuZXh0Q29udGV4dElkOwogfQogCi12b2lkIFdlYlBhZ2U6
Omhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFt
ZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkIChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6aGFzU3RvcmFn
ZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY2FsbGJhY2spCiB7CiAgICAgYXV0byBjb250ZXh0
SWQgPSBuZXh0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb250ZXh0SWQoKTsKICAgICBhdXRvIGFkZFJl
c3VsdCA9IG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXAuYWRkKGNvbnRleHRJZCwg
V1RGTW92ZShjYWxsYmFjaykpOwpAQCAtNTkxNSwyNSArNTkxNiwyNSBAQCB2b2lkIFdlYlBhZ2U6
Omhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgCiAgICAgaWYgKGFkZFJlc3VsdC5pdGVyYXRvci0+
dmFsdWUpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGFzU3RvcmFnZUFj
Y2VzcyhXVEZNb3ZlKHN1YkZyYW1lSG9zdCksIFdURk1vdmUodG9wRnJhbWVIb3N0KSwgZnJhbWVJ
RCwgcGFnZUlELCBjb250ZXh0SWQpKTsKICAgICBlbHNlCi0gICAgICAgIGNhbGxiYWNrKGZhbHNl
KTsKKyAgICAgICAgY2FsbGJhY2soU3RvcmFnZUFjY2Vzc1N0YXR1czo6Q2Fubm90UmVxdWVzdEFj
Y2Vzcyk7CiB9Ci0gICAgCi12b2lkIFdlYlBhZ2U6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmlu
ZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYg
Y2FsbGJhY2spCisKK3ZvaWQgV2ViUGFnZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYg
c3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgYm9vbCB1c2VyRGlkR3JhbnRTdG9yYWdlQWNjZXNzLCBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY2FsbGJhY2spCiB7CiAg
ICAgYXV0byBjb250ZXh0SWQgPSBuZXh0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb250ZXh0SWQoKTsK
ICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXAu
YWRkKGNvbnRleHRJZCwgV1RGTW92ZShjYWxsYmFjaykpOwogICAgIEFTU0VSVChhZGRSZXN1bHQu
aXNOZXdFbnRyeSk7CiAgICAgaWYgKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUpCi0gICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92
ZShzdWJGcmFtZUhvc3QpLCBXVEZNb3ZlKHRvcEZyYW1lSG9zdCksIGZyYW1lSUQsIHBhZ2VJRCwg
Y29udGV4dElkKSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVz
dFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZUhvc3QpLCBXVEZNb3ZlKHRvcEZyYW1lSG9z
dCksIGZyYW1lSUQsIHBhZ2VJRCwgdXNlckRpZEdyYW50U3RvcmFnZUFjY2VzcywgY29udGV4dElk
KSk7CiAgICAgZWxzZQotICAgICAgICBjYWxsYmFjayhmYWxzZSk7CisgICAgICAgIGNhbGxiYWNr
KFN0b3JhZ2VBY2Nlc3NTdGF0dXM6OkNhbm5vdFJlcXVlc3RBY2Nlc3MpOwogfQogCi12b2lkIFdl
YlBhZ2U6OnN0b3JhZ2VBY2Nlc3NSZXNwb25zZShib29sIHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNv
bnRleHRJZCkKK3ZvaWQgV2ViUGFnZTo6c3RvcmFnZUFjY2Vzc1Jlc3BvbnNlKFN0b3JhZ2VBY2Nl
c3NTdGF0dXMgc3RhdHVzLCB1aW50NjRfdCBjb250ZXh0SWQpCiB7CiAgICAgYXV0byBjYWxsYmFj
ayA9IG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXAudGFrZShjb250ZXh0SWQpOwog
ICAgIEFTU0VSVChjYWxsYmFjayk7Ci0gICAgY2FsbGJhY2sod2FzR3JhbnRlZCk7CisgICAgY2Fs
bGJhY2soc3RhdHVzKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyMzE0MDApCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyNCw2ICsy
MjQsNyBAQCBjbGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjsKIAogZW51bSBGaW5kT3B0
aW9ucyA6IHVpbnQxNl90OwogZW51bSBjbGFzcyBEcmFnQ29udHJvbGxlckFjdGlvbjsKK2VudW0g
Y2xhc3MgU3RvcmFnZUFjY2Vzc1N0YXR1czsKIAogc3RydWN0IEFzc2lzdGVkTm9kZUluZm9ybWF0
aW9uOwogc3RydWN0IEF0dHJpYnV0ZWRTdHJpbmc7CkBAIC0xMDUyLDkgKzEwNTMsOSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBmbHVzaFBlbmRpbmdFZGl0b3JTdGF0ZVVwZGF0ZSgpOwogCiAjaWYgSEFW
RShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCi0gICAgdm9pZCBoYXNTdG9yYWdlQWNj
ZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAo
Ym9vbCk+JiYgY2FsbGJhY2spOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5n
JiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJiBj
YWxsYmFjayk7Ci0gICAgdm9pZCBzdG9yYWdlQWNjZXNzUmVzcG9uc2UoYm9vbCB3YXNHcmFudGVk
LCB1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcm
JiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vz
c1N0YXR1cyk+JiYgY2FsbGJhY2spOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3Ry
aW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCB1c2VyRGlkR3JhbnRTdG9yYWdlQWNjZXNzLCBXVEY6
OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY2FsbGJhY2sp
OworICAgIHZvaWQgc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlKFN0b3JhZ2VBY2Nlc3NTdGF0dXMsIHVp
bnQ2NF90IGNvbnRleHRJZCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1F
TlQpCkBAIC0xNzA3LDcgKzE3MDgsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8U3RyaW5nLCBS
ZWZQdHI8V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Pj4gbV9zY2hlbWVUb1VSTFNjaGVtZUhhbmRs
ZXJQcm94eU1hcDsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJv
eHkqPiBtX2lkZW50aWZpZXJUb1VSTFNjaGVtZUhhbmRsZXJQcm94eU1hcDsKIAotICAgIEhhc2hN
YXA8dWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCBncmFudGVkKT4+IG1fc3RvcmFn
ZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXA7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgV1RGOjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPj4gbV9zdG9yYWdlQWNj
ZXNzUmVzcG9uc2VDYWxsYmFja01hcDsKIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVT
VCkKICAgICBIYXNoTWFwPHVpbnQ2NF90LCB1aW50NjRfdD4gbV9hcHBsaWNhdGlvbk1hbmlmZXN0
RmV0Y2hDYWxsYmFja01hcDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjMxNDAwKQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtNTAwLDcgKzUwMCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIFNldElzU3VzcGVuZGVkKGJvb2wgc3VzcGVuZGVkKQogCiAjaWYgSEFWRShD
Rk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCi0gICAgU3RvcmFnZUFjY2Vzc1Jlc3BvbnNl
KGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4dElkKQorICAgIFN0b3JhZ2VBY2Nlc3NS
ZXNwb25zZShlbnVtIFdlYktpdDo6U3RvcmFnZUFjY2Vzc1N0YXR1cyBzdGF0dXMsIHVpbnQ2NF90
IGNvbnRleHRJZCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339786</attachid>
            <date>2018-05-07 18:17:04 -0700</date>
            <delta_ts>2018-05-07 19:40:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185368-20180507181704.patch</filename>
            <type>text/plain</type>
            <size>17495</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzE0NzApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE4LTA1LTA3ICBKb2huIFdpbGFu
ZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3JhZ2UgQWNjZXNzIEFQSTog
QWRkIGEgcmVxdWVzdCByb3VuZHRyaXAgdG8gY2hlY2sgd2hldGhlciBwcm9tcHRpbmcgaXMgbmVl
ZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUz
NjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQwMDExNTU2PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhbiBlbnVtIFdl
YktpdDo6U3RvcmFnZUFjY2Vzc1N0YXR1cyB0byBoYW5kbGUgb3VyIHRocmVlIGFjY2VzcworICAg
ICAgICBzdGF0ZXM6CisgICAgICAgIC0gV2ViS2l0OjpTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5u
b3RSZXF1ZXN0QWNjZXNzLgorICAgICAgICAgICAgVGhpcyBtZWFucyB0aGUgZG9tYWluIGlzIGJs
b2NrZWQgZnJvbSBjb29raWUgYWNjZXNzLgorICAgICAgICAtIFdlYktpdDo6U3RvcmFnZUFjY2Vz
c1N0YXR1czo6RG9lc05vdEhhdmVBY2Nlc3MuCisgICAgICAgICAgICBUaGlzIG1lYW5zIHRoYXQg
YWNjZXNzIGhhcyBub3QgYmVlbiBncmFudGVkIHlldCBhbmQgYSBwcm9tcHQgaXMgcmVxdWlyZWQu
CisgICAgICAgIC0gV2ViS2l0OjpTdG9yYWdlQWNjZXNzU3RhdHVzOjpIYXNBY2Nlc3MuCisgICAg
ICAgICAgICBUaGlzIGVpdGhlciBtZWFucyB0aGF0IHRoaXMgZG9tYWluIGRvZXMgbm90IG5lZWQg
dG8gYXNrIGZvciBhY2Nlc3MsIHRoaXMKKyAgICAgICAgICAgIGFjY2VzcyB3YXMgYWxyZWFkeSBn
cmFudGVkLCBvciBhY2Nlc3Mgd2FzIGdyYW50ZWQgbm93LgorCisgICAgICAgIElmIHRoZSBmaXJz
dCBjYWxsIHRvIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3MoKQorICAgICAgICBjb21lcyBiYWNrIGFzIFdlYktpdDo6U3RvcmFnZUFjY2Vzc1N0YXR1
czo6RG9lc05vdEhhdmVBY2Nlc3MsIHRoZSBXZWJQYWdlUHJveHkKKyAgICAgICAgbWF5IHByb21w
dCB0aGUgdXNlciBhbmQgcmVxdWVzdCBhY2Nlc3MgYWdhaW4sIGlmIHRoZSB1c2VyIHNhaWQgeWVz
LgorCisgICAgICAgIEV4aXN0aW5nIHRlc3QgY2FzZXMgcGFzcyBiZWNhdXNlIHJlcXVlc3RTdG9y
YWdlQWNjZXNzQ29uZmlybSBpbiBXS1BhZ2UuY3BwCisgICAgICAgIGRvZXMgbm90IGhhdmUgbV9j
bGllbnQucmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtIGFuZCB0aHVzIHJldHVybnMgdHJ1ZS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICAgICBBZGRlZCBhIG1pc3NpbmcgI2VuZGlmLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgICAgIEhlcmUgd2Ugbm93IGhhbmRsZSB0
aGUgdmFyaW91cyBjYXNlcyBlbmNvZGVkIGluIFdlYktpdDo6U3RvcmFnZUFjY2Vzc1N0YXR1cy4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0
U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgICAgICBOb3cgY292ZXJzIHRoZSBvcHRpb25hbCBwcm9t
cHQgY2FzZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFj
Y2Vzcyk6CisgICAgICAgICAgICBQaXBpbmcgdGhyb3VnaCBXZWJLaXQ6OlN0b3JhZ2VBY2Nlc3NT
dGF0dXMgZnJvbQorICAgICAgICAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIHRv
IFdlYlBhZ2VQcm94eS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5oOgorCiAyMDE4LTA1LTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpy
ZXF1ZXN0U3RvcmFnZUFjY2VzcyBzaG91bGQgY2FsbCBpdHMgY29tcGxldGlvbiBoYW5kbGVyIG9u
IHRoZSBtYWluIHRocmVhZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCShyZXZpc2lvbiAyMzE0NzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0LDcgQEAKICNpbmNsdWRl
ICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1
ZGUgIldlYlByb3RlY3Rpb25TcGFjZS5oIgorI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oIgogI2luY2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXIuaCIKICNpbmNsdWRl
ICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRh
U3RvcmUuaCIKQEAgLTc0ODQsMTYgKzc0ODUsNDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVl
c3RTdG9yYWdlQWNjZXNzKAogICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB3ZWJQcm9jZXNzQ29udGV4dElkXSAoYm9vbCBh
Y2Nlc3MpIHsKICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9y
YWdlQWNjZXNzUmVzcG9uc2UoYWNjZXNzLCB3ZWJQcm9jZXNzQ29udGV4dElkKSwgbV9wYWdlSUQp
OwogICAgIH07Ci0gICAgU3RyaW5nIHJlcXVlc3RpbmdEb21haW4gPSBzdWJGcmFtZUhvc3Q7Ci0g
ICAgU3RyaW5nIGN1cnJlbnREb21haW4gPSB0b3BGcmFtZUhvc3Q7Ci0gICAgbV93ZWJzaXRlRGF0
YVN0b3JlLT5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lSG9zdCksIFdURk1v
dmUodG9wRnJhbWVIb3N0KSwgZnJhbWVJRCwgbV9wYWdlSUQsIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3RpbmdEb21haW4gPSBXVEZNb3ZlKHJlcXVlc3RpbmdE
b21haW4pLCBjdXJyZW50RG9tYWluID0gV1RGTW92ZShjdXJyZW50RG9tYWluKSwgcHJvbXB0RW5h
YmxlZCwgZnJhbWVJRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKGJvb2wgd2FzR3JhbnRlZCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghd2FzR3JhbnRl
ZCkKLSAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgICAg
IAotICAgICAgICBpZiAoIXByb21wdEVuYWJsZWQpCi0gICAgICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIodHJ1ZSk7CiAKLSAgICAgICAgbV91aUNsaWVudC0+cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NDb25maXJtKCp0aGlzLCBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpLCByZXF1ZXN0
aW5nRG9tYWluLCBjdXJyZW50RG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cisg
ICAgYXV0byBwcm9tcHRTdGF0dXMgPSBwcm9tcHRFbmFibGVkID8gU3RvcmFnZUFjY2Vzc1Byb21w
dFN0YXR1czo6VXNlck5vdFByb21wdGVkIDogU3RvcmFnZUFjY2Vzc1Byb21wdFN0YXR1czo6VXNl
ckdyYW50ZWRBY2Nlc3M7CisgICAgU3RyaW5nIHN1YkZyYW1lSG9zdENvcHkgPSBzdWJGcmFtZUhv
c3Q7CisgICAgU3RyaW5nIHRvcEZyYW1lSG9zdENvcHkgPSB0b3BGcmFtZUhvc3Q7CisgICAgbV93
ZWJzaXRlRGF0YVN0b3JlLT5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lSG9z
dENvcHkpLCBXVEZNb3ZlKHRvcEZyYW1lSG9zdENvcHkpLCBmcmFtZUlELCBtX3BhZ2VJRCwgcHJv
bXB0U3RhdHVzLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdWJGcmFt
ZUhvc3QgPSBXVEZNb3ZlKHN1YkZyYW1lSG9zdCksIHRvcEZyYW1lSG9zdCA9IFdURk1vdmUodG9w
RnJhbWVIb3N0KSwgcHJvbXB0RW5hYmxlZCwgZnJhbWVJRCwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFN0b3JhZ2VBY2Nlc3NTdGF0dXMgc3RhdHVzKSBt
dXRhYmxlIHsKKyAgICAgICAgc3dpdGNoIChzdGF0dXMpIHsKKyAgICAgICAgY2FzZSBTdG9yYWdl
QWNjZXNzU3RhdHVzOjpDYW5ub3RSZXF1ZXN0QWNjZXNzOgorICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZmFsc2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RvcmFn
ZUFjY2Vzc1N0YXR1czo6RG9lc05vdEhhdmVBY2Nlc3M6IHsKKyAgICAgICAgICAgIGlmICghcHJv
bXB0RW5hYmxlZCkgeworICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFN0cmluZyBzdWJGcmFtZUhvc3RD
b3B5ID0gc3ViRnJhbWVIb3N0OworICAgICAgICAgICAgU3RyaW5nIHRvcEZyYW1lSG9zdENvcHkg
PSB0b3BGcmFtZUhvc3Q7CisgICAgICAgICAgICBtX3VpQ2xpZW50LT5yZXF1ZXN0U3RvcmFnZUFj
Y2Vzc0NvbmZpcm0oKnRoaXMsIG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCksIFdURk1vdmUo
c3ViRnJhbWVIb3N0Q29weSksIFdURk1vdmUodG9wRnJhbWVIb3N0Q29weSksIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN1YkZyYW1lSG9zdCA9IFdURk1vdmUoc3ViRnJh
bWVIb3N0KSwgdG9wRnJhbWVIb3N0ID0gV1RGTW92ZSh0b3BGcmFtZUhvc3QpLCBmcmFtZUlELCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCBhY2Nl
c3MpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGlmIChhY2Nlc3MpIHsKKyAgICAgICAgICAg
ICAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhXVEZNb3Zl
KHN1YkZyYW1lSG9zdCksIFdURk1vdmUodG9wRnJhbWVIb3N0KSwgZnJhbWVJRCwgbV9wYWdlSUQs
IFN0b3JhZ2VBY2Nlc3NQcm9tcHRTdGF0dXM6OlVzZXJHcmFudGVkQWNjZXNzLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoU3RvcmFnZUFjY2Vzc1N0YXR1cyBzdGF0dXMpIG11dGFibGUg
eworICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzdGF0dXMpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgU3RvcmFnZUFjY2Vzc1N0YXR1czo6Q2Fubm90UmVxdWVzdEFjY2Vz
czoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgU3RvcmFnZUFjY2Vzc1N0YXR1czo6RG9l
c05vdEhhdmVBY2Nlc3M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBTdG9yYWdlQWNjZXNzU3RhdHVzOjpIYXNBY2Nlc3M6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgU3RvcmFnZUFjY2Vzc1N0YXR1
czo6SGFzQWNjZXNzOgorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0pOwogfQogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAJKHJldmlzaW9uIDIzMTQ3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM1NSw3ICszNTUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFz
CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1
ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1l
SG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwg
U3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IFN0b3JhZ2VBY2Nlc3NQcm9tcHRTdGF0dXMgcHJvbXB0U3RhdHVzLCBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY2FsbGJhY2spCiB7CiAgICAgQVNT
RVJUKHN1YkZyYW1lSG9zdCAhPSB0b3BGcmFtZUhvc3QpOwogICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CkBAIC0zNjMsMzMgKzM2Myw0NiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6cmVxCiAgICAgYXV0byBzdWJGcmFtZVByaW1hcnlEb21haW4gPSBpc29sYXRl
ZFByaW1hcnlEb21haW4oc3ViRnJhbWVIb3N0KTsKICAgICBhdXRvIHRvcEZyYW1lUHJpbWFyeURv
bWFpbiA9IGlzb2xhdGVkUHJpbWFyeURvbWFpbih0b3BGcmFtZUhvc3QpOwogICAgIGlmIChzdWJG
cmFtZVByaW1hcnlEb21haW4gPT0gdG9wRnJhbWVQcmltYXJ5RG9tYWluKSB7Ci0gICAgICAgIGNh
bGxiYWNrKHRydWUpOworICAgICAgICBjYWxsYmFjayhTdG9yYWdlQWNjZXNzU3RhdHVzOjpIYXNB
Y2Nlc3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9zdGF0aXN0aWNzUXVldWUt
PmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN1YkZyYW1l
UHJpbWFyeURvbWFpbiA9IGNyb3NzVGhyZWFkQ29weShzdWJGcmFtZVByaW1hcnlEb21haW4pLCB0
b3BGcmFtZVByaW1hcnlEb21haW4gPSBjcm9zc1RocmVhZENvcHkodG9wRnJhbWVQcmltYXJ5RG9t
YWluKSwgZnJhbWVJRCwgcGFnZUlELCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSBt
dXRhYmxlIHsKKyAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3ViRnJhbWVQcmltYXJ5RG9tYWluID0gY3Jvc3NUaHJl
YWRDb3B5KHN1YkZyYW1lUHJpbWFyeURvbWFpbiksIHRvcEZyYW1lUHJpbWFyeURvbWFpbiA9IGNy
b3NzVGhyZWFkQ29weSh0b3BGcmFtZVByaW1hcnlEb21haW4pLCBmcmFtZUlELCBwYWdlSUQsIHBy
b21wdFN0YXR1cywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKCkgbXV0YWJsZSB7CiAK
ICAgICAgICAgYXV0byYgc3ViRnJhbWVTdGF0aXN0aWMgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3Rp
Y3NGb3JQcmltYXJ5RG9tYWluKHN1YkZyYW1lUHJpbWFyeURvbWFpbik7CiAgICAgICAgIGlmIChz
aG91bGRCbG9ja0Nvb2tpZXMoc3ViRnJhbWVTdGF0aXN0aWMpKSB7CiAgICAgICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSB7Ci0gICAgICAgICAg
ICAgICAgY2FsbGJhY2soZmFsc2UpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrKFN0b3JhZ2VB
Y2Nlc3NTdGF0dXM6OkNhbm5vdFJlcXVlc3RBY2Nlc3MpOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmICghc2hvdWxk
UGFydGl0aW9uQ29va2llcyhzdWJGcmFtZVN0YXRpc3RpYykpIHsKICAgICAgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIHsKLSAgICAgICAgICAg
ICAgICBjYWxsYmFjayh0cnVlKTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhTdG9yYWdlQWNj
ZXNzU3RhdHVzOjpIYXNBY2Nlc3MpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAocHJvbXB0U3RhdHVzID09IFN0b3JhZ2VBY2Nl
c3NQcm9tcHRTdGF0dXM6OlVzZXJOb3RQcm9tcHRlZCkgeworICAgICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0geworICAgICAgICAgICAgICAg
IGNhbGxiYWNrKFN0b3JhZ2VBY2Nlc3NTdGF0dXM6OkRvZXNOb3RIYXZlQWNjZXNzKTsKICAgICAg
ICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgc3Vi
RnJhbWVTdGF0aXN0aWMudGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vz
c0FQSSsrOwogCi0gICAgICAgIG1fZ3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihzdWJGcmFtZVBy
aW1hcnlEb21haW4sIHRvcEZyYW1lUHJpbWFyeURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGJvb2wgdmFsdWUpIG11dGFibGUgewotICAgICAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbdmFsdWUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldIHsKLSAgICAgICAgICAgICAgICBjYWxsYmFjayh2YWx1ZSk7Ci0gICAgICAgICAgICB9KTsK
KyAgICAgICAgbV9ncmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKHN1YkZyYW1lUHJpbWFyeURvbWFp
biwgdG9wRnJhbWVQcmltYXJ5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIFtjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXSAoYm9vbCB3YXNHcmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
IGlmICh3YXNHcmFudGVkKSB7CisgICAgICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0geworICAgICAgICAgICAgICAgICAgICBjYWxsYmFj
ayhTdG9yYWdlQWNjZXNzU3RhdHVzOjpIYXNBY2Nlc3MpOworICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxi
YWNrKFN0b3JhZ2VBY2Nlc3NTdGF0dXM6OkNhbm5vdFJlcXVlc3RBY2Nlc3MpOworICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICB9KTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oCShyZXZpc2lvbiAyMzE0NzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAt
NTgsNiArNTgsMTUgQEAgY2xhc3MgT3BlcmF0aW5nRGF0ZTsKIGNsYXNzIFdlYlByb2Nlc3NQcm94
eTsKIAogZW51bSBjbGFzcyBTaG91bGRDbGVhckZpcnN0OworZW51bSBjbGFzcyBTdG9yYWdlQWNj
ZXNzU3RhdHVzIHsKKyAgICBDYW5ub3RSZXF1ZXN0QWNjZXNzLAorICAgIERvZXNOb3RIYXZlQWNj
ZXNzLAorICAgIEhhc0FjY2VzcworfTsKK2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1Byb21wdFN0
YXR1cyB7CisgICAgVXNlck5vdFByb21wdGVkLAorICAgIFVzZXJHcmFudGVkQWNjZXNzCit9Owog
CiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgZmluYWwgOiBwdWJsaWMgSVBD
OjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgpAQCAtNjYs
NyArNzUsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlciA9
IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBT
dHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wgd2FzR3JhbnRlZCk+JiYg
Y2FsbGJhY2spPjsKICAgICB1c2luZyBSZW1vdmVBbGxTdG9yYWdlQWNjZXNzSGFuZGxlciA9IFdU
Rjo6RnVuY3Rpb248dm9pZCgpPjsKICAgICB1c2luZyBSZW1vdmVQcmV2YWxlbnREb21haW5zSGFu
ZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mKT47Ci0gICAg
c3RhdGljIFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IGNyZWF0ZShjb25zdCBT
dHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIEZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFN0cmluZyYpPiYmIHRlc3RpbmdDYWxsYmFjaywgYm9vbCBpc0VwaGVtZXJhbCwgVXBkYXRl
UHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyJiYgdXBkYXRl
UHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyID0gW10oY29u
c3QgV1RGOjpWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBjb25z
dCBXVEY6OlZlY3RvcjxTdHJpbmc+JiwgU2hvdWxkQ2xlYXJGaXJzdCkgeyB9LCBIYXNTdG9yYWdl
QWNjZXNzRm9yRnJhbWVIYW5kbGVyJiYgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciA9
IFtdKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90LCB1aW50NjRfdCwgV1RG
OjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKSB7IH0sIEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIm
JiBncmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyID0gW10oY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4sIHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZv
aWQoYm9vbCk+JiYpIHsgfSwgUmVtb3ZlQWxsU3RvcmFnZUFjY2Vzc0hhbmRsZXImJiByZW1vdmVB
bGxTdG9yYWdlQWNjZXNzSGFuZGxlciA9IFtdKCkgeyB9LCBSZW1vdmVQcmV2YWxlbnREb21haW5z
SGFuZGxlciYmIHJlbW92ZURvbWFpbnNIYW5kbGVyID0gW10gKGNvbnN0IFdURjo6VmVjdG9yPFN0
cmluZz4mKSB7IH0pCisgICAgc3RhdGljIFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnks
IEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYpPiYmIHRlc3RpbmdDYWxsYmFjaywgYm9vbCBp
c0VwaGVtZXJhbCwgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tp
ZXNIYW5kbGVyJiYgdXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tp
ZXNIYW5kbGVyID0gW10oY29uc3QgV1RGOjpWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFdURjo6VmVj
dG9yPFN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JiwgU2hvdWxkQ2xlYXJGaXJz
dCkgeyB9LCBIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyJiYgaGFzU3RvcmFnZUFjY2Vz
c0ZvckZyYW1lSGFuZGxlciA9IFtdKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIHVpbnQ2
NF90LCB1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKSB7IH0sIEdyYW50U3Rv
cmFnZUFjY2Vzc0hhbmRsZXImJiBncmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyID0gW10oY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4sIHVpbnQ2NF90
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpIHsgfSwgUmVtb3Zl
QWxsU3RvcmFnZUFjY2Vzc0hhbmRsZXImJiByZW1vdmVBbGxTdG9yYWdlQWNjZXNzSGFuZGxlciA9
IFtdKCkgeyB9LCBSZW1vdmVQcmV2YWxlbnREb21haW5zSGFuZGxlciYmIHJlbW92ZURvbWFpbnNI
YW5kbGVyID0gW10gKGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mKSB7IH0pCiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUo
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgV1RGTW92ZSh0ZXN0aW5nQ2FsbGJhY2sp
LCBpc0VwaGVtZXJhbCwgV1RGTW92ZSh1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25P
ckJsb2NrQ29va2llc0hhbmRsZXIpLCBXVEZNb3ZlKGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhh
bmRsZXIpLCBXVEZNb3ZlKGdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIpLCBXVEZNb3ZlKHJlbW92
ZUFsbFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKSwgV1RGTW92ZShyZW1vdmVEb21haW5zSGFuZGxlcikp
KTsKICAgICB9CkBAIC04NSw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
PiYmIG9yaWdpbnMpOwogCiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZy
YW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2sp
OwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBT
dHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwg
V1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJiBjYWxsYmFjayk7CisgICAgdm9p
ZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRv
cEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBTdG9yYWdlQWNj
ZXNzUHJvbXB0U3RhdHVzLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vz
c1N0YXR1cyk+JiYgY2FsbGJhY2spOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRl
ck9wZW5lcihTdHJpbmcmJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9w
ZW5lclBhZ2VJRCwgU3RyaW5nJiYgb3BlbmVyRG9tYWluLCBib29sIGlzVHJpZ2dlcmVkQnlVc2Vy
R2VzdHVyZSk7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc0NhbGxiYWNrKGJvb2wgd2Fz
R3JhbnRlZCwgdWludDY0X3QgY29udGV4dElkKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbgkocmV2aXNpb24gMjMxNDcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBA
IC00Nyw3ICs0Nyw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmUK
ICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKICAgICBTdG9yYWdlQWNj
ZXNzUmVxdWVzdFJlc3VsdChib29sIHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNvbnRleHRJZCkKICAg
ICBBbGxTdG9yYWdlQWNjZXNzRW50cmllc1Jlc3VsdChWZWN0b3I8U3RyaW5nPiBkb21haW5zLCB1
aW50NjRfdCBjb250ZXh0SWQpCi0KKyNlbmRpZgogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCiAgICAgQ29udGVudEV4dGVuc2lvblJ1bGVzKFdlYktpdDo6VXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllciBpZGVudGlmaWVyKQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAko
cmV2aXNpb24gMjMxNDcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNDAsMTQgKzEyNDAsMTQg
QEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKAogICAgIG1fcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy0+aGFzU3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lSG9zdCks
IFdURk1vdmUodG9wRnJhbWVIb3N0KSwgZnJhbWVJRCwgcGFnZUlELCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3Ry
aW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4m
JiBjYWxsYmFjaykKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
U3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFN0YXR1cyBwcm9tcHRT
dGF0dXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY2Fs
bGJhY2spCiB7CiAgICAgaWYgKCFyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpKSB7Ci0g
ICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAgICAgICAgY2FsbGJhY2soU3RvcmFnZUFjY2Vzc1N0
YXR1czo6Q2Fubm90UmVxdWVzdEFjY2Vzcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
Ci0gICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhXVEZN
b3ZlKHN1YkZyYW1lSG9zdCksIFdURk1vdmUodG9wRnJhbWVIb3N0KSwgZnJhbWVJRCwgcGFnZUlE
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5yZXF1
ZXN0U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lSG9zdCksIFdURk1vdmUodG9wRnJhbWVI
b3N0KSwgZnJhbWVJRCwgcGFnZUlELCBwcm9tcHRTdGF0dXMsIFdURk1vdmUoY2FsbGJhY2spKTsK
IH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZpc2lvbiAyMzE0NzApCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU5LDYgKzU5LDggQEAgZW51bSBjbGFzcyBXZWJzaXRlRGF0YVR5cGU7CiBz
dHJ1Y3QgU3RvcmFnZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgV2Vic2l0ZURh
dGFSZWNvcmQ7CiBzdHJ1Y3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM7CitlbnVtIGNsYXNz
IFN0b3JhZ2VBY2Nlc3NTdGF0dXM7CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NQcm9tcHRTdGF0
dXM7CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIHN0cnVjdCBQbHVnaW5Nb2R1
bGVJbmZvOwpAQCAtMTMwLDcgKzEzMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUFsbFN0
b3JhZ2VBY2Nlc3NIYW5kbGVyKCk7CiAgICAgdm9pZCByZW1vdmVQcmV2YWxlbnREb21haW5zKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKTsKICAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3Mo
U3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29s
KT4mJiBjYWxsYmFjayk7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBz
dWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxi
YWNrKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9z
dCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdl
SUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRTdGF0dXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Rv
cmFnZUFjY2Vzc1N0YXR1cyk+JiYpOwogI2VuZGlmCiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0Rp
ZENyYXNoKCk7CiAgICAgdm9pZCByZXNvbHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339790</attachid>
            <date>2018-05-07 19:40:27 -0700</date>
            <delta_ts>2018-05-07 19:53:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185368-20180507194026.patch</filename>
            <type>text/plain</type>
            <size>17592</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzE0NzApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE4LTA1LTA3ICBKb2huIFdpbGFu
ZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3JhZ2UgQWNjZXNzIEFQSTog
QWRkIGEgcmVxdWVzdCByb3VuZHRyaXAgdG8gY2hlY2sgd2hldGhlciBwcm9tcHRpbmcgaXMgbmVl
ZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUz
NjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQwMDExNTU2PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhbiBlbnVtIFdl
YktpdDo6U3RvcmFnZUFjY2Vzc1N0YXR1cyB0byBoYW5kbGUgb3VyIHRocmVlIGFjY2VzcworICAg
ICAgICBzdGF0ZXM6CisgICAgICAgIC0gV2ViS2l0OjpTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5u
b3RSZXF1ZXN0QWNjZXNzLgorICAgICAgICAgICAgVGhpcyBtZWFucyB0aGUgZG9tYWluIGlzIGJs
b2NrZWQgZnJvbSBjb29raWUgYWNjZXNzLgorICAgICAgICAtIFdlYktpdDo6U3RvcmFnZUFjY2Vz
c1N0YXR1czo6RG9lc05vdEhhdmVBY2Nlc3MuCisgICAgICAgICAgICBUaGlzIG1lYW5zIHRoYXQg
YWNjZXNzIGhhcyBub3QgYmVlbiBncmFudGVkIHlldCBhbmQgYSBwcm9tcHQgaXMgcmVxdWlyZWQu
CisgICAgICAgIC0gV2ViS2l0OjpTdG9yYWdlQWNjZXNzU3RhdHVzOjpIYXNBY2Nlc3MuCisgICAg
ICAgICAgICBUaGlzIGVpdGhlciBtZWFucyB0aGF0IHRoaXMgZG9tYWluIGRvZXMgbm90IG5lZWQg
dG8gYXNrIGZvciBhY2Nlc3MsIHRoaXMKKyAgICAgICAgICAgIGFjY2VzcyB3YXMgYWxyZWFkeSBn
cmFudGVkLCBvciBhY2Nlc3Mgd2FzIGdyYW50ZWQgbm93LgorCisgICAgICAgIElmIHRoZSBmaXJz
dCBjYWxsIHRvIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3MoKQorICAgICAgICBjb21lcyBiYWNrIGFzIFdlYktpdDo6U3RvcmFnZUFjY2Vzc1N0YXR1
czo6RG9lc05vdEhhdmVBY2Nlc3MsIHRoZSBXZWJQYWdlUHJveHkKKyAgICAgICAgbWF5IHByb21w
dCB0aGUgdXNlciBhbmQgcmVxdWVzdCBhY2Nlc3MgYWdhaW4sIGlmIHRoZSB1c2VyIHNhaWQgeWVz
LgorCisgICAgICAgIEV4aXN0aW5nIHRlc3QgY2FzZXMgcGFzcyBiZWNhdXNlIHJlcXVlc3RTdG9y
YWdlQWNjZXNzQ29uZmlybSBpbiBXS1BhZ2UuY3BwCisgICAgICAgIGRvZXMgbm90IGhhdmUgbV9j
bGllbnQucmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtIGFuZCB0aHVzIHJldHVybnMgdHJ1ZS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICAgICBBZGRlZCBhIG1pc3NpbmcgI2VuZGlmLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgICAgIEhlcmUgd2Ugbm93IGhhbmRsZSB0
aGUgdmFyaW91cyBjYXNlcyBlbmNvZGVkIGluIFdlYktpdDo6U3RvcmFnZUFjY2Vzc1N0YXR1cy4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0
U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgICAgICBOb3cgY292ZXJzIHRoZSBvcHRpb25hbCBwcm9t
cHQgY2FzZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFj
Y2Vzcyk6CisgICAgICAgICAgICBQaXBpbmcgdGhyb3VnaCBXZWJLaXQ6OlN0b3JhZ2VBY2Nlc3NT
dGF0dXMgZnJvbQorICAgICAgICAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIHRv
IFdlYlBhZ2VQcm94eS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5oOgorCiAyMDE4LTA1LTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpy
ZXF1ZXN0U3RvcmFnZUFjY2VzcyBzaG91bGQgY2FsbCBpdHMgY29tcGxldGlvbiBoYW5kbGVyIG9u
IHRoZSBtYWluIHRocmVhZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCShyZXZpc2lvbiAyMzE0NzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0LDcgQEAKICNpbmNsdWRl
ICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1
ZGUgIldlYlByb3RlY3Rpb25TcGFjZS5oIgorI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oIgogI2luY2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXIuaCIKICNpbmNsdWRl
ICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRh
U3RvcmUuaCIKQEAgLTc0ODQsMTYgKzc0ODUsNDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVl
c3RTdG9yYWdlQWNjZXNzKAogICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB3ZWJQcm9jZXNzQ29udGV4dElkXSAoYm9vbCBh
Y2Nlc3MpIHsKICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9y
YWdlQWNjZXNzUmVzcG9uc2UoYWNjZXNzLCB3ZWJQcm9jZXNzQ29udGV4dElkKSwgbV9wYWdlSUQp
OwogICAgIH07Ci0gICAgU3RyaW5nIHJlcXVlc3RpbmdEb21haW4gPSBzdWJGcmFtZUhvc3Q7Ci0g
ICAgU3RyaW5nIGN1cnJlbnREb21haW4gPSB0b3BGcmFtZUhvc3Q7Ci0gICAgbV93ZWJzaXRlRGF0
YVN0b3JlLT5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lSG9zdCksIFdURk1v
dmUodG9wRnJhbWVIb3N0KSwgZnJhbWVJRCwgbV9wYWdlSUQsIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3RpbmdEb21haW4gPSBXVEZNb3ZlKHJlcXVlc3RpbmdE
b21haW4pLCBjdXJyZW50RG9tYWluID0gV1RGTW92ZShjdXJyZW50RG9tYWluKSwgcHJvbXB0RW5h
YmxlZCwgZnJhbWVJRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKGJvb2wgd2FzR3JhbnRlZCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghd2FzR3JhbnRl
ZCkKLSAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgICAg
IAotICAgICAgICBpZiAoIXByb21wdEVuYWJsZWQpCi0gICAgICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIodHJ1ZSk7CiAKLSAgICAgICAgbV91aUNsaWVudC0+cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NDb25maXJtKCp0aGlzLCBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpLCByZXF1ZXN0
aW5nRG9tYWluLCBjdXJyZW50RG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cisg
ICAgYXV0byBwcm9tcHRTdGF0dXMgPSBwcm9tcHRFbmFibGVkID8gU3RvcmFnZUFjY2Vzc1Byb21w
dFN0YXR1czo6VXNlck5vdFByb21wdGVkIDogU3RvcmFnZUFjY2Vzc1Byb21wdFN0YXR1czo6VXNl
ckdyYW50ZWRBY2Nlc3M7CisgICAgU3RyaW5nIHN1YkZyYW1lSG9zdENvcHkgPSBzdWJGcmFtZUhv
c3Q7CisgICAgU3RyaW5nIHRvcEZyYW1lSG9zdENvcHkgPSB0b3BGcmFtZUhvc3Q7CisgICAgbV93
ZWJzaXRlRGF0YVN0b3JlLT5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lSG9z
dENvcHkpLCBXVEZNb3ZlKHRvcEZyYW1lSG9zdENvcHkpLCBmcmFtZUlELCBtX3BhZ2VJRCwgcHJv
bXB0U3RhdHVzLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdWJGcmFt
ZUhvc3QgPSBXVEZNb3ZlKHN1YkZyYW1lSG9zdCksIHRvcEZyYW1lSG9zdCA9IFdURk1vdmUodG9w
RnJhbWVIb3N0KSwgcHJvbXB0RW5hYmxlZCwgZnJhbWVJRCwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFN0b3JhZ2VBY2Nlc3NTdGF0dXMgc3RhdHVzKSBt
dXRhYmxlIHsKKyAgICAgICAgc3dpdGNoIChzdGF0dXMpIHsKKyAgICAgICAgY2FzZSBTdG9yYWdl
QWNjZXNzU3RhdHVzOjpDYW5ub3RSZXF1ZXN0QWNjZXNzOgorICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIFN0b3Jh
Z2VBY2Nlc3NTdGF0dXM6OkRvZXNOb3RIYXZlQWNjZXNzOiB7CisgICAgICAgICAgICBpZiAoIXBy
b21wdEVuYWJsZWQpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgU3RyaW5nIHN1YkZyYW1lSG9zdENv
cHkgPSBzdWJGcmFtZUhvc3Q7CisgICAgICAgICAgICBTdHJpbmcgdG9wRnJhbWVIb3N0Q29weSA9
IHRvcEZyYW1lSG9zdDsKKyAgICAgICAgICAgIG1fdWlDbGllbnQtPnJlcXVlc3RTdG9yYWdlQWNj
ZXNzQ29uZmlybSgqdGhpcywgbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKSwgV1RGTW92ZShz
dWJGcmFtZUhvc3RDb3B5KSwgV1RGTW92ZSh0b3BGcmFtZUhvc3RDb3B5KSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3ViRnJhbWVIb3N0ID0gV1RGTW92ZShzdWJGcmFt
ZUhvc3QpLCB0b3BGcmFtZUhvc3QgPSBXVEZNb3ZlKHRvcEZyYW1lSG9zdCksIGZyYW1lSUQsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChib29sIGFjY2Vz
cykgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgaWYgKGFjY2VzcykgeworICAgICAgICAgICAg
ICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPnJlcXVlc3RTdG9yYWdlQWNjZXNzKFdURk1vdmUo
c3ViRnJhbWVIb3N0KSwgV1RGTW92ZSh0b3BGcmFtZUhvc3QpLCBmcmFtZUlELCBtX3BhZ2VJRCwg
U3RvcmFnZUFjY2Vzc1Byb21wdFN0YXR1czo6VXNlckdyYW50ZWRBY2Nlc3MsIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildIChTdG9yYWdlQWNjZXNzU3RhdHVzIHN0YXR1cykgbXV0YWJsZSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHN0YXR1cykgeworICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5ub3RSZXF1ZXN0QWNjZXNz
OgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBTdG9yYWdlQWNjZXNzU3RhdHVzOjpEb2Vz
Tm90SGF2ZUFjY2VzczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihm
YWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBTdG9yYWdlQWNjZXNzU3RhdHVzOjpIYXNBY2Nlc3M6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNhc2UgU3RvcmFnZUFjY2Vzc1N0YXR1
czo6SGFzQWNjZXNzOgorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICB9KTsKIH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCShy
ZXZpc2lvbiAyMzE0NzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTUsNyArMzU1LDcgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmhhcwogICAgIH0pOwogfQogCi12
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
U3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29s
KT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1
ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1l
SG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJv
bXB0U3RhdHVzIHByb21wdFN0YXR1cywgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3Jh
Z2VBY2Nlc3NTdGF0dXMpPiYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVChzdWJGcmFtZUhvc3Qg
IT0gdG9wRnJhbWVIb3N0KTsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtMzYz
LDMzICszNjMsNDYgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcQog
ICAgIGF1dG8gc3ViRnJhbWVQcmltYXJ5RG9tYWluID0gaXNvbGF0ZWRQcmltYXJ5RG9tYWluKHN1
YkZyYW1lSG9zdCk7CiAgICAgYXV0byB0b3BGcmFtZVByaW1hcnlEb21haW4gPSBpc29sYXRlZFBy
aW1hcnlEb21haW4odG9wRnJhbWVIb3N0KTsKICAgICBpZiAoc3ViRnJhbWVQcmltYXJ5RG9tYWlu
ID09IHRvcEZyYW1lUHJpbWFyeURvbWFpbikgewotICAgICAgICBjYWxsYmFjayh0cnVlKTsKKyAg
ICAgICAgY2FsbGJhY2soU3RvcmFnZUFjY2Vzc1N0YXR1czo6SGFzQWNjZXNzKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdWJGcmFtZVByaW1hcnlEb21haW4gPSBj
cm9zc1RocmVhZENvcHkoc3ViRnJhbWVQcmltYXJ5RG9tYWluKSwgdG9wRnJhbWVQcmltYXJ5RG9t
YWluID0gY3Jvc3NUaHJlYWRDb3B5KHRvcEZyYW1lUHJpbWFyeURvbWFpbiksIGZyYW1lSUQsIHBh
Z2VJRCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKCkgbXV0YWJsZSB7CisgICAgbV9z
dGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHN1YkZyYW1lUHJpbWFyeURvbWFpbiA9IGNyb3NzVGhyZWFkQ29weShzdWJGcmFtZVBy
aW1hcnlEb21haW4pLCB0b3BGcmFtZVByaW1hcnlEb21haW4gPSBjcm9zc1RocmVhZENvcHkodG9w
RnJhbWVQcmltYXJ5RG9tYWluKSwgZnJhbWVJRCwgcGFnZUlELCBwcm9tcHRTdGF0dXMsIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldICgpIG11dGFibGUgewogCiAgICAgICAgIGF1dG8mIHN1
YkZyYW1lU3RhdGlzdGljID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFp
bihzdWJGcmFtZVByaW1hcnlEb21haW4pOwogICAgICAgICBpZiAoc2hvdWxkQmxvY2tDb29raWVz
KHN1YkZyYW1lU3RhdGlzdGljKSkgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gewotICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZh
bHNlKTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5u
b3RSZXF1ZXN0QWNjZXNzKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoIXNob3VsZFBhcnRpdGlvbkNvb2tpZXMo
c3ViRnJhbWVTdGF0aXN0aWMpKSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2sodHJ1
ZSk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soU3RvcmFnZUFjY2Vzc1N0YXR1czo6SGFzQWNj
ZXNzKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKHByb21wdFN0YXR1cyA9PSBTdG9yYWdlQWNjZXNzUHJvbXB0U3RhdHVzOjpV
c2VyTm90UHJvbXB0ZWQpIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhTdG9yYWdl
QWNjZXNzU3RhdHVzOjpEb2VzTm90SGF2ZUFjY2Vzcyk7CiAgICAgICAgICAgICB9KTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHN1YkZyYW1lU3RhdGlzdGljLnRp
bWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkrKzsKIAotICAgICAg
ICBtX2dyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoc3ViRnJhbWVQcmltYXJ5RG9tYWluLCB0b3BG
cmFtZVByaW1hcnlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgW2NhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldIChib29sIHZhbHVlKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3ZhbHVlLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSB7Ci0gICAgICAgICAg
ICAgICAgY2FsbGJhY2sodmFsdWUpOwotICAgICAgICAgICAgfSk7CisgICAgICAgIG1fZ3JhbnRT
dG9yYWdlQWNjZXNzSGFuZGxlcihzdWJGcmFtZVByaW1hcnlEb21haW4sIHRvcEZyYW1lUHJpbWFy
eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0g
KGJvb2wgd2FzR3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAod2FzR3JhbnRlZCkg
eworICAgICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soU3RvcmFnZUFjY2Vzc1N0
YXR1czo6SGFzQWNjZXNzKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0geworICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhTdG9yYWdlQWNjZXNz
U3RhdHVzOjpDYW5ub3RSZXF1ZXN0QWNjZXNzKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgfSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAko
cmV2aXNpb24gMjMxNDcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDE1IEBAIGNs
YXNzIE9wZXJhdGluZ0RhdGU7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiAKIGVudW0gY2xhc3Mg
U2hvdWxkQ2xlYXJGaXJzdDsKK2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1N0YXR1cyB7CisgICAg
Q2Fubm90UmVxdWVzdEFjY2VzcywKKyAgICBEb2VzTm90SGF2ZUFjY2VzcywKKyAgICBIYXNBY2Nl
c3MKK307CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NQcm9tcHRTdGF0dXMgeworICAgIFVzZXJO
b3RQcm9tcHRlZCwKKyAgICBVc2VyR3JhbnRlZEFjY2VzcworfTsKIAogY2xhc3MgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlIGZpbmFsIDogcHVibGljIElQQzo6Q29ubmVjdGlvbjo6V29y
a1F1ZXVlTWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKQEAgLTY2LDcgKzc1LDcgQEAgcHVibGlj
OgogICAgIHVzaW5nIEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZv
aWQoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5
RG9tYWluLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IFdURjo6RnVuY3Rpb248dm9pZChib29sIHdhc0dyYW50ZWQpPiYmIGNhbGxiYWNrKT47CiAgICAg
dXNpbmcgUmVtb3ZlQWxsU3RvcmFnZUFjY2Vzc0hhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQo
KT47CiAgICAgdXNpbmcgUmVtb3ZlUHJldmFsZW50RG9tYWluc0hhbmRsZXIgPSBXVEY6OkZ1bmN0
aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik+OwotICAgIHN0YXRpYyBSZWY8V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmKT4mJiB0
ZXN0aW5nQ2FsbGJhY2ssIGJvb2wgaXNFcGhlbWVyYWwsIFVwZGF0ZVByZXZhbGVudERvbWFpbnNU
b1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciYmIHVwZGF0ZVByZXZhbGVudERvbWFpbnNU
b1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciA9IFtdKGNvbnN0IFdURjo6VmVjdG9yPFN0
cmluZz4mLCBjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JiwgY29uc3QgV1RGOjpWZWN0b3I8U3Ry
aW5nPiYsIFNob3VsZENsZWFyRmlyc3QpIHsgfSwgSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFu
ZGxlciYmIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIgPSBbXShjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCwgdWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZChi
b29sKT4mJikgeyB9LCBHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyJiYgZ3JhbnRTdG9yYWdlQWNj
ZXNzSGFuZGxlciA9IFtdKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+LCB1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKSB7IH0s
IFJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3NIYW5kbGVyJiYgcmVtb3ZlQWxsU3RvcmFnZUFjY2Vzc0hh
bmRsZXIgPSBbXSgpIHsgfSwgUmVtb3ZlUHJldmFsZW50RG9tYWluc0hhbmRsZXImJiByZW1vdmVE
b21haW5zSGFuZGxlciA9IFtdIChjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JikgeyB9KQorICAg
IHN0YXRpYyBSZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBjcmVhdGUoY29uc3Qg
U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBGdW5jdGlvbjx2b2lkIChj
b25zdCBTdHJpbmcmKT4mJiB0ZXN0aW5nQ2FsbGJhY2ssIGJvb2wgaXNFcGhlbWVyYWwsIFVwZGF0
ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciYmIHVwZGF0
ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciA9IFtdKGNv
bnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JiwgY29u
c3QgV1RGOjpWZWN0b3I8U3RyaW5nPiYsIFNob3VsZENsZWFyRmlyc3QpIHsgfSwgSGFzU3RvcmFn
ZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciYmIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIg
PSBbXShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCwgdWludDY0X3QsIFdU
Rjo6RnVuY3Rpb248dm9pZChib29sKT4mJikgeyB9LCBHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVy
JiYgZ3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlciA9IFtdKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+LCB1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2
b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKSB7IH0sIFJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3NI
YW5kbGVyJiYgcmVtb3ZlQWxsU3RvcmFnZUFjY2Vzc0hhbmRsZXIgPSBbXSgpIHsgfSwgUmVtb3Zl
UHJldmFsZW50RG9tYWluc0hhbmRsZXImJiByZW1vdmVEb21haW5zSGFuZGxlciA9IFtdIChjb25z
dCBXVEY6OlZlY3RvcjxTdHJpbmc+JikgeyB9KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKHJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnksIFdURk1vdmUodGVzdGluZ0NhbGxiYWNrKSwgaXNFcGhlbWVyYWwsIFdU
Rk1vdmUodXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5k
bGVyKSwgV1RGTW92ZShoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKSwgV1RGTW92ZShn
cmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKSwgV1RGTW92ZShyZW1vdmVBbGxTdG9yYWdlQWNjZXNz
SGFuZGxlciksIFdURk1vdmUocmVtb3ZlRG9tYWluc0hhbmRsZXIpKSk7CiAgICAgfQpAQCAtODUs
NyArOTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRl
ZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJiBvcmlnaW5zKTsKIAog
ICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYm
IHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKTsKLSAgICB2b2lkIHJlcXVl
c3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVI
b3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhh
bmRsZXI8dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2spOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VB
Y2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFN0YXR1cywg
V1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmIGNhbGxi
YWNrKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoU3RyaW5nJiYg
ZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIFN0cmlu
ZyYmIG9wZW5lckRvbWFpbiwgYm9vbCBpc1RyaWdnZXJlZEJ5VXNlckdlc3R1cmUpOwogICAgIHZv
aWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDYWxsYmFjayhib29sIHdhc0dyYW50ZWQsIHVpbnQ2NF90
IGNvbnRleHRJZCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4JKHJldmlz
aW9uIDIzMTQ3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBt
ZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlCiAjaWYgSEFWRShDRk5FVFdP
UktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCiAgICAgU3RvcmFnZUFjY2Vzc1JlcXVlc3RSZXN1bHQo
Ym9vbCB3YXNHcmFudGVkLCB1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgQWxsU3RvcmFnZUFjY2Vz
c0VudHJpZXNSZXN1bHQoVmVjdG9yPFN0cmluZz4gZG9tYWlucywgdWludDY0X3QgY29udGV4dElk
KQotCisjZW5kaWYKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIENvbnRlbnRF
eHRlbnNpb25SdWxlcyhXZWJLaXQ6OlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRl
bnRpZmllcikKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDIzMTQ3MCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQwLDE0ICsxMjQwLDE0IEBAIHZvaWQgV2Vic2l0ZURh
dGFTdG9yZTo6aGFzU3RvcmFnZUFjY2VzcygKICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mt
Pmhhc1N0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZUhvc3QpLCBXVEZNb3ZlKHRvcEZyYW1l
SG9zdCksIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9z
dCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdl
SUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2spCit2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1l
SG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBw
YWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRTdGF0dXMgcHJvbXB0U3RhdHVzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmIGNhbGxiYWNrKQogewogICAgIGlm
ICghcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSkgewotICAgICAgICBjYWxsYmFjayhm
YWxzZSk7CisgICAgICAgIGNhbGxiYWNrKFN0b3JhZ2VBY2Nlc3NTdGF0dXM6OkNhbm5vdFJlcXVl
c3RBY2Nlc3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIG1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZUhvc3Qp
LCBXVEZNb3ZlKHRvcEZyYW1lSG9zdCksIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShjYWxsYmFj
aykpOworICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
V1RGTW92ZShzdWJGcmFtZUhvc3QpLCBXVEZNb3ZlKHRvcEZyYW1lSG9zdCksIGZyYW1lSUQsIHBh
Z2VJRCwgcHJvbXB0U3RhdHVzLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAjZW5kaWYKIApJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaAkocmV2aXNpb24gMjMxNDcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2
ICs1OSw4IEBAIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlOwogc3RydWN0IFN0b3JhZ2VQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFdlYnNpdGVEYXRhUmVjb3JkOwogc3RydWN0
IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOworZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzU3Rh
dHVzOworZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzUHJvbXB0U3RhdHVzOwogCiAjaWYgRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCiBzdHJ1Y3QgUGx1Z2luTW9kdWxlSW5mbzsKQEAgLTEzMCw3
ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVBbGxTdG9yYWdlQWNjZXNzSGFuZGxl
cigpOwogICAgIHZvaWQgcmVtb3ZlUHJldmFsZW50RG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZG9tYWlucyk7CiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1l
SG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBw
YWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2spOwot
ICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJp
bmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RG
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCBy
ZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZy
YW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBTdG9yYWdlQWNjZXNz
UHJvbXB0U3RhdHVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMp
PiYmKTsKICNlbmRpZgogICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NEaWRDcmFzaCgpOwogICAgIHZv
aWQgcmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3NhcnkoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339792</attachid>
            <date>2018-05-07 19:54:00 -0700</date>
            <delta_ts>2018-05-07 22:20:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185368-20180507195400.patch</filename>
            <type>text/plain</type>
            <size>17628</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzE0NzApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE4LTA1LTA3ICBKb2huIFdpbGFu
ZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3JhZ2UgQWNjZXNzIEFQSTog
QWRkIGEgcmVxdWVzdCByb3VuZHRyaXAgdG8gY2hlY2sgd2hldGhlciBwcm9tcHRpbmcgaXMgbmVl
ZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUz
NjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQwMDExNTU2PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhbiBlbnVtIFdl
YktpdDo6U3RvcmFnZUFjY2Vzc1N0YXR1cyB0byBoYW5kbGUgb3VyIHRocmVlIGFjY2VzcworICAg
ICAgICBzdGF0ZXM6CisgICAgICAgIC0gV2ViS2l0OjpTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5u
b3RSZXF1ZXN0QWNjZXNzLgorICAgICAgICAgICAgVGhpcyBtZWFucyB0aGUgZG9tYWluIGlzIGJs
b2NrZWQgZnJvbSBjb29raWUgYWNjZXNzLgorICAgICAgICAtIFdlYktpdDo6U3RvcmFnZUFjY2Vz
c1N0YXR1czo6RG9lc05vdEhhdmVBY2Nlc3MuCisgICAgICAgICAgICBUaGlzIG1lYW5zIHRoYXQg
YWNjZXNzIGhhcyBub3QgYmVlbiBncmFudGVkIHlldCBhbmQgYSBwcm9tcHQgaXMgcmVxdWlyZWQu
CisgICAgICAgIC0gV2ViS2l0OjpTdG9yYWdlQWNjZXNzU3RhdHVzOjpIYXNBY2Nlc3MuCisgICAg
ICAgICAgICBUaGlzIGVpdGhlciBtZWFucyB0aGF0IHRoaXMgZG9tYWluIGRvZXMgbm90IG5lZWQg
dG8gYXNrIGZvciBhY2Nlc3MsIHRoaXMKKyAgICAgICAgICAgIGFjY2VzcyB3YXMgYWxyZWFkeSBn
cmFudGVkLCBvciBhY2Nlc3Mgd2FzIGdyYW50ZWQgbm93LgorCisgICAgICAgIElmIHRoZSBmaXJz
dCBjYWxsIHRvIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3MoKQorICAgICAgICBjb21lcyBiYWNrIGFzIFdlYktpdDo6U3RvcmFnZUFjY2Vzc1N0YXR1
czo6RG9lc05vdEhhdmVBY2Nlc3MsIHRoZSBXZWJQYWdlUHJveHkKKyAgICAgICAgbWF5IHByb21w
dCB0aGUgdXNlciBhbmQgcmVxdWVzdCBhY2Nlc3MgYWdhaW4sIGlmIHRoZSB1c2VyIHNhaWQgeWVz
LgorCisgICAgICAgIEV4aXN0aW5nIHRlc3QgY2FzZXMgcGFzcyBiZWNhdXNlIHJlcXVlc3RTdG9y
YWdlQWNjZXNzQ29uZmlybSBpbiBXS1BhZ2UuY3BwCisgICAgICAgIGRvZXMgbm90IGhhdmUgbV9j
bGllbnQucmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtIGFuZCB0aHVzIHJldHVybnMgdHJ1ZS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICAgICBBZGRlZCBhIG1pc3NpbmcgI2VuZGlmLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgICAgIEhlcmUgd2Ugbm93IGhhbmRsZSB0
aGUgdmFyaW91cyBjYXNlcyBlbmNvZGVkIGluIFdlYktpdDo6U3RvcmFnZUFjY2Vzc1N0YXR1cy4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0
U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgICAgICBOb3cgY292ZXJzIHRoZSBvcHRpb25hbCBwcm9t
cHQgY2FzZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFj
Y2Vzcyk6CisgICAgICAgICAgICBQaXBpbmcgdGhyb3VnaCBXZWJLaXQ6OlN0b3JhZ2VBY2Nlc3NT
dGF0dXMgZnJvbQorICAgICAgICAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIHRv
IFdlYlBhZ2VQcm94eS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5oOgorCiAyMDE4LTA1LTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpy
ZXF1ZXN0U3RvcmFnZUFjY2VzcyBzaG91bGQgY2FsbCBpdHMgY29tcGxldGlvbiBoYW5kbGVyIG9u
IHRoZSBtYWluIHRocmVhZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCShyZXZpc2lvbiAyMzE0NzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNiArMjA0LDEwIEBACiAjaW5jbHVk
ZSAiV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5oIgogI2VuZGlmCiAKKyNpZiBIQVZFKENG
TkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKKyNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaCIKKyNlbmRpZgorCiAvLyBUaGlzIGNvbnRyb2xzIHdoYXQgc3RyYXRl
Z3kgd2UgdXNlIGZvciBtb3VzZSB3aGVlbCBjb2FsZXNjaW5nLgogI2RlZmluZSBNRVJHRV9XSEVF
TF9FVkVOVFMgMQogCkBAIC03NDg0LDE2ICs3NDg4LDQ4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0U3RvcmFnZUFjY2VzcygKICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgd2ViUHJvY2Vzc0NvbnRleHRJZF0gKGJv
b2wgYWNjZXNzKSB7CiAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U3RvcmFnZUFjY2Vzc1Jlc3BvbnNlKGFjY2Vzcywgd2ViUHJvY2Vzc0NvbnRleHRJZCksIG1fcGFn
ZUlEKTsKICAgICB9OwotICAgIFN0cmluZyByZXF1ZXN0aW5nRG9tYWluID0gc3ViRnJhbWVIb3N0
OwotICAgIFN0cmluZyBjdXJyZW50RG9tYWluID0gdG9wRnJhbWVIb3N0OwotICAgIG1fd2Vic2l0
ZURhdGFTdG9yZS0+cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZUhvc3QpLCBX
VEZNb3ZlKHRvcEZyYW1lSG9zdCksIGZyYW1lSUQsIG1fcGFnZUlELCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0aW5nRG9tYWluID0gV1RGTW92ZShyZXF1ZXN0
aW5nRG9tYWluKSwgY3VycmVudERvbWFpbiA9IFdURk1vdmUoY3VycmVudERvbWFpbiksIHByb21w
dEVuYWJsZWQsIGZyYW1lSUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildIChib29sIHdhc0dyYW50ZWQpIG11dGFibGUgewotICAgICAgICBpZiAoIXdhc0dy
YW50ZWQpCi0gICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAg
ICAgICAKLSAgICAgICAgaWYgKCFwcm9tcHRFbmFibGVkKQotICAgICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKHRydWUpOwogCi0gICAgICAgIG1fdWlDbGllbnQtPnJlcXVlc3RTdG9y
YWdlQWNjZXNzQ29uZmlybSgqdGhpcywgbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKSwgcmVx
dWVzdGluZ0RvbWFpbiwgY3VycmVudERvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgIGF1dG8gcHJvbXB0U3RhdHVzID0gcHJvbXB0RW5hYmxlZCA/IFN0b3JhZ2VBY2Nlc3NQ
cm9tcHRTdGF0dXM6OlVzZXJOb3RQcm9tcHRlZCA6IFN0b3JhZ2VBY2Nlc3NQcm9tcHRTdGF0dXM6
OlVzZXJHcmFudGVkQWNjZXNzOworICAgIFN0cmluZyBzdWJGcmFtZUhvc3RDb3B5ID0gc3ViRnJh
bWVIb3N0OworICAgIFN0cmluZyB0b3BGcmFtZUhvc3RDb3B5ID0gdG9wRnJhbWVIb3N0OworICAg
IG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFt
ZUhvc3RDb3B5KSwgV1RGTW92ZSh0b3BGcmFtZUhvc3RDb3B5KSwgZnJhbWVJRCwgbV9wYWdlSUQs
IHByb21wdFN0YXR1cywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3Vi
RnJhbWVIb3N0ID0gV1RGTW92ZShzdWJGcmFtZUhvc3QpLCB0b3BGcmFtZUhvc3QgPSBXVEZNb3Zl
KHRvcEZyYW1lSG9zdCksIHByb21wdEVuYWJsZWQsIGZyYW1lSUQsIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChTdG9yYWdlQWNjZXNzU3RhdHVzIHN0YXR1
cykgbXV0YWJsZSB7CisgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7CisgICAgICAgIGNhc2UgU3Rv
cmFnZUFjY2Vzc1N0YXR1czo6Q2Fubm90UmVxdWVzdEFjY2VzczoKKyAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBT
dG9yYWdlQWNjZXNzU3RhdHVzOjpEb2VzTm90SGF2ZUFjY2VzczogeworICAgICAgICAgICAgaWYg
KCFwcm9tcHRFbmFibGVkKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFN0cmluZyBzdWJGcmFtZUhv
c3RDb3B5ID0gc3ViRnJhbWVIb3N0OworICAgICAgICAgICAgU3RyaW5nIHRvcEZyYW1lSG9zdENv
cHkgPSB0b3BGcmFtZUhvc3Q7CisgICAgICAgICAgICBtX3VpQ2xpZW50LT5yZXF1ZXN0U3RvcmFn
ZUFjY2Vzc0NvbmZpcm0oKnRoaXMsIG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCksIFdURk1v
dmUoc3ViRnJhbWVIb3N0Q29weSksIFdURk1vdmUodG9wRnJhbWVIb3N0Q29weSksIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN1YkZyYW1lSG9zdCA9IFdURk1vdmUoc3Vi
RnJhbWVIb3N0KSwgdG9wRnJhbWVIb3N0ID0gV1RGTW92ZSh0b3BGcmFtZUhvc3QpLCBmcmFtZUlE
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCBh
Y2Nlc3MpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGlmIChhY2Nlc3MpIHsKKyAgICAgICAg
ICAgICAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhXVEZN
b3ZlKHN1YkZyYW1lSG9zdCksIFdURk1vdmUodG9wRnJhbWVIb3N0KSwgZnJhbWVJRCwgbV9wYWdl
SUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRTdGF0dXM6OlVzZXJHcmFudGVkQWNjZXNzLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoU3RvcmFnZUFjY2Vzc1N0YXR1cyBzdGF0dXMpIG11dGFi
bGUgeworICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzdGF0dXMpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgU3RvcmFnZUFjY2Vzc1N0YXR1czo6Q2Fubm90UmVxdWVzdEFj
Y2VzczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgU3RvcmFnZUFjY2Vzc1N0YXR1czo6
RG9lc05vdEhhdmVBY2Nlc3M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgU3RvcmFnZUFjY2Vzc1N0YXR1czo6SGFzQWNjZXNzOgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFN0b3JhZ2VBY2Nlc3NT
dGF0dXM6Okhhc0FjY2VzczoKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgfSk7CiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cAkocmV2aXNpb24gMjMxNDcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU1LDcgKzM1NSw3
IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXMKICAgICB9KTsKIH0K
IAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNj
ZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAo
Ym9vbCk+JiYgY2FsbGJhY2spCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BG
cmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgU3RvcmFnZUFjY2Vz
c1Byb21wdFN0YXR1cyBwcm9tcHRTdGF0dXMsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dG9yYWdlQWNjZXNzU3RhdHVzKT4mJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoc3ViRnJhbWVI
b3N0ICE9IHRvcEZyYW1lSG9zdCk7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAg
LTM2MywzMyArMzYzLDQ2IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpy
ZXEKICAgICBhdXRvIHN1YkZyYW1lUHJpbWFyeURvbWFpbiA9IGlzb2xhdGVkUHJpbWFyeURvbWFp
bihzdWJGcmFtZUhvc3QpOwogICAgIGF1dG8gdG9wRnJhbWVQcmltYXJ5RG9tYWluID0gaXNvbGF0
ZWRQcmltYXJ5RG9tYWluKHRvcEZyYW1lSG9zdCk7CiAgICAgaWYgKHN1YkZyYW1lUHJpbWFyeURv
bWFpbiA9PSB0b3BGcmFtZVByaW1hcnlEb21haW4pIHsKLSAgICAgICAgY2FsbGJhY2sodHJ1ZSk7
CisgICAgICAgIGNhbGxiYWNrKFN0b3JhZ2VBY2Nlc3NTdGF0dXM6Okhhc0FjY2Vzcyk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3ViRnJhbWVQcmltYXJ5RG9tYWlu
ID0gY3Jvc3NUaHJlYWRDb3B5KHN1YkZyYW1lUHJpbWFyeURvbWFpbiksIHRvcEZyYW1lUHJpbWFy
eURvbWFpbiA9IGNyb3NzVGhyZWFkQ29weSh0b3BGcmFtZVByaW1hcnlEb21haW4pLCBmcmFtZUlE
LCBwYWdlSUQsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldICgpIG11dGFibGUgeworICAg
IG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBzdWJGcmFtZVByaW1hcnlEb21haW4gPSBjcm9zc1RocmVhZENvcHkoc3ViRnJh
bWVQcmltYXJ5RG9tYWluKSwgdG9wRnJhbWVQcmltYXJ5RG9tYWluID0gY3Jvc3NUaHJlYWRDb3B5
KHRvcEZyYW1lUHJpbWFyeURvbWFpbiksIGZyYW1lSUQsIHBhZ2VJRCwgcHJvbXB0U3RhdHVzLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsKIAogICAgICAgICBhdXRv
JiBzdWJGcmFtZVN0YXRpc3RpYyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlE
b21haW4oc3ViRnJhbWVQcmltYXJ5RG9tYWluKTsKICAgICAgICAgaWYgKHNob3VsZEJsb2NrQ29v
a2llcyhzdWJGcmFtZVN0YXRpc3RpYykpIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIHsKLSAgICAgICAgICAgICAgICBjYWxsYmFj
ayhmYWxzZSk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soU3RvcmFnZUFjY2Vzc1N0YXR1czo6
Q2Fubm90UmVxdWVzdEFjY2Vzcyk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKCFzaG91bGRQYXJ0aXRpb25Db29r
aWVzKHN1YkZyYW1lU3RhdGlzdGljKSkgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gewotICAgICAgICAgICAgICAgIGNhbGxiYWNr
KHRydWUpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrKFN0b3JhZ2VBY2Nlc3NTdGF0dXM6Okhh
c0FjY2Vzcyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChwcm9tcHRTdGF0dXMgPT0gU3RvcmFnZUFjY2Vzc1Byb21wdFN0YXR1
czo6VXNlck5vdFByb21wdGVkKSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soU3Rv
cmFnZUFjY2Vzc1N0YXR1czo6RG9lc05vdEhhdmVBY2Nlc3MpOwogICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBzdWJGcmFtZVN0YXRpc3Rp
Yy50aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJKys7CiAKLSAg
ICAgICAgbV9ncmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKHN1YkZyYW1lUHJpbWFyeURvbWFpbiwg
dG9wRnJhbWVQcmltYXJ5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIFtjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXSAoYm9vbCB2YWx1ZSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFt2YWx1ZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gewotICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKHZhbHVlKTsKLSAgICAgICAgICAgIH0pOworICAgICAgICBtX2dy
YW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoc3ViRnJhbWVQcmltYXJ5RG9tYWluLCB0b3BGcmFtZVBy
aW1hcnlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldIChib29sIHdhc0dyYW50ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKHdhc0dyYW50
ZWQpIHsKKyAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKFN0b3JhZ2VBY2Nl
c3NTdGF0dXM6Okhhc0FjY2Vzcyk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soU3RvcmFnZUFj
Y2Vzc1N0YXR1czo6Q2Fubm90UmVxdWVzdEFjY2Vzcyk7CisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmgJKHJldmlzaW9uIDIzMTQ3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCwxNSBA
QCBjbGFzcyBPcGVyYXRpbmdEYXRlOwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCiBlbnVtIGNs
YXNzIFNob3VsZENsZWFyRmlyc3Q7CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTdGF0dXMgewor
ICAgIENhbm5vdFJlcXVlc3RBY2Nlc3MsCisgICAgRG9lc05vdEhhdmVBY2Nlc3MsCisgICAgSGFz
QWNjZXNzCit9OworZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzUHJvbXB0U3RhdHVzIHsKKyAgICBV
c2VyTm90UHJvbXB0ZWQsCisgICAgVXNlckdyYW50ZWRBY2Nlc3MKK307CiAKIGNsYXNzIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBmaW5hbCA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246
OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CkBAIC02Niw3ICs3NSw3IEBAIHB1
YmxpYzoKICAgICB1c2luZyBHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyID0gV1RGOjpGdW5jdGlv
bjx2b2lkKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQ
YXJ0eURvbWFpbiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlELCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCB3YXNHcmFudGVkKT4mJiBjYWxsYmFjayk+Owog
ICAgIHVzaW5nIFJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3NIYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2
b2lkKCk+OwogICAgIHVzaW5nIFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5kbGVyID0gV1RGOjpG
dW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYpPjsKLSAgICBzdGF0aWMgUmVmPFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgRnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJik+
JiYgdGVzdGluZ0NhbGxiYWNrLCBib29sIGlzRXBoZW1lcmFsLCBVcGRhdGVQcmV2YWxlbnREb21h
aW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXImJiB1cGRhdGVQcmV2YWxlbnREb21h
aW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIgPSBbXShjb25zdCBXVEY6OlZlY3Rv
cjxTdHJpbmc+JiwgY29uc3QgV1RGOjpWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFdURjo6VmVjdG9y
PFN0cmluZz4mLCBTaG91bGRDbGVhckZpcnN0KSB7IH0sIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFt
ZUhhbmRsZXImJiBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyID0gW10oY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgdWludDY0X3QsIHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZv
aWQoYm9vbCk+JiYpIHsgfSwgR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlciYmIGdyYW50U3RvcmFn
ZUFjY2Vzc0hhbmRsZXIgPSBbXShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiwgdWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJikg
eyB9LCBSZW1vdmVBbGxTdG9yYWdlQWNjZXNzSGFuZGxlciYmIHJlbW92ZUFsbFN0b3JhZ2VBY2Nl
c3NIYW5kbGVyID0gW10oKSB7IH0sIFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5kbGVyJiYgcmVt
b3ZlRG9tYWluc0hhbmRsZXIgPSBbXSAoY29uc3QgV1RGOjpWZWN0b3I8U3RyaW5nPiYpIHsgfSkK
KyAgICBzdGF0aWMgUmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gY3JlYXRlKGNv
bnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgRnVuY3Rpb248dm9p
ZCAoY29uc3QgU3RyaW5nJik+JiYgdGVzdGluZ0NhbGxiYWNrLCBib29sIGlzRXBoZW1lcmFsLCBV
cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXImJiB1
cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIgPSBb
XShjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JiwgY29uc3QgV1RGOjpWZWN0b3I8U3RyaW5nPiYs
IGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBTaG91bGRDbGVhckZpcnN0KSB7IH0sIEhhc1N0
b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXImJiBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5k
bGVyID0gW10oY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgdWludDY0X3QsIHVpbnQ2NF90
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIHsgfSwgR3JhbnRTdG9yYWdlQWNjZXNzSGFu
ZGxlciYmIGdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIgPSBbXShjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiwgdWludDY0X3QsIFdURjo6RnVuY3Rp
b248dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJikgeyB9LCBSZW1vdmVBbGxTdG9yYWdlQWNj
ZXNzSGFuZGxlciYmIHJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3NIYW5kbGVyID0gW10oKSB7IH0sIFJl
bW92ZVByZXZhbGVudERvbWFpbnNIYW5kbGVyJiYgcmVtb3ZlRG9tYWluc0hhbmRsZXIgPSBbXSAo
Y29uc3QgV1RGOjpWZWN0b3I8U3RyaW5nPiYpIHsgfSkKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShyZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5LCBXVEZNb3ZlKHRlc3RpbmdDYWxsYmFjayksIGlzRXBoZW1lcmFs
LCBXVEZNb3ZlKHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVz
SGFuZGxlciksIFdURk1vdmUoaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciksIFdURk1v
dmUoZ3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlciksIFdURk1vdmUocmVtb3ZlQWxsU3RvcmFnZUFj
Y2Vzc0hhbmRsZXIpLCBXVEZNb3ZlKHJlbW92ZURvbWFpbnNIYW5kbGVyKSkpOwogICAgIH0KQEAg
LTg1LDcgKzk0LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1Vw
ZGF0ZWQoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYgb3JpZ2lucyk7
CiAKICAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJp
bmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RG
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJiBjYWxsYmFjayk7Ci0gICAgdm9pZCBy
ZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZy
YW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9y
YWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRTdGF0
dXMsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJiBj
YWxsYmFjayk7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFN0cmlu
ZyYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBT
dHJpbmcmJiBvcGVuZXJEb21haW4sIGJvb2wgaXNUcmlnZ2VyZWRCeVVzZXJHZXN0dXJlKTsKICAg
ICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ2FsbGJhY2soYm9vbCB3YXNHcmFudGVkLCB1aW50
NjRfdCBjb250ZXh0SWQpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCShy
ZXZpc2lvbiAyMzE0NzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcg
QEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZQogI2lmIEhBVkUoQ0ZO
RVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQogICAgIFN0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVz
dWx0KGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4dElkKQogICAgIEFsbFN0b3JhZ2VB
Y2Nlc3NFbnRyaWVzUmVzdWx0KFZlY3RvcjxTdHJpbmc+IGRvbWFpbnMsIHVpbnQ2NF90IGNvbnRl
eHRJZCkKLQorI2VuZGlmCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBDb250
ZW50RXh0ZW5zaW9uUnVsZXMoV2ViS2l0OjpVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIpCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyMzE0
NzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0MCwxNCArMTI0MCwxNCBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoCiAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLT5oYXNTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVIb3N0KSwgV1RGTW92ZSh0b3BG
cmFtZUhvc3QpLCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAotdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFt
ZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
cGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKQor
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJG
cmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0U3RhdHVzIHByb21wdFN0YXR1cywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJiBjYWxsYmFjaykKIHsKICAg
ICBpZiAoIXJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkpIHsKLSAgICAgICAgY2FsbGJh
Y2soZmFsc2UpOworICAgICAgICBjYWxsYmFjayhTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5ub3RS
ZXF1ZXN0QWNjZXNzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBtX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MtPnJlcXVlc3RTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVI
b3N0KSwgV1RGTW92ZSh0b3BGcmFtZUhvc3QpLCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUoY2Fs
bGJhY2spKTsKKyAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJlcXVlc3RTdG9yYWdlQWNj
ZXNzKFdURk1vdmUoc3ViRnJhbWVIb3N0KSwgV1RGTW92ZSh0b3BGcmFtZUhvc3QpLCBmcmFtZUlE
LCBwYWdlSUQsIHByb21wdFN0YXR1cywgV1RGTW92ZShjYWxsYmFjaykpOwogfQogI2VuZGlmCiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmgJKHJldmlzaW9uIDIzMTQ3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAt
NjAsNiArNjAsMTEgQEAgc3RydWN0IFN0b3JhZ2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwog
c3RydWN0IFdlYnNpdGVEYXRhUmVjb3JkOwogc3RydWN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzOwogCisjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCitlbnVtIGNs
YXNzIFN0b3JhZ2VBY2Nlc3NTdGF0dXM7CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NQcm9tcHRT
dGF0dXM7CisjZW5kaWYKKwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogc3RydWN0
IFBsdWdpbk1vZHVsZUluZm87CiAjZW5kaWYKQEAgLTEzMCw3ICsxMzUsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZW1vdmVBbGxTdG9yYWdlQWNjZXNzSGFuZGxlcigpOwogICAgIHZvaWQgcmVtb3Zl
UHJldmFsZW50RG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7CiAgICAgdm9p
ZCBoYXNTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJh
bWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2spOwotICAgIHZvaWQgcmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkIChib29sKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhT
dHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0U3RhdHVzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKTsKICNlbmRpZgogICAgIHZv
aWQgbmV0d29ya1Byb2Nlc3NEaWRDcmFzaCgpOwogICAgIHZvaWQgcmVzb2x2ZURpcmVjdG9yaWVz
SWZOZWNlc3NhcnkoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339800</attachid>
            <date>2018-05-07 22:20:34 -0700</date>
            <delta_ts>2018-05-08 11:06:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185368-20180507222033.patch</filename>
            <type>text/plain</type>
            <size>15065</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzE0NzApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE4LTA1LTA3ICBKb2huIFdpbGFu
ZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3JhZ2UgQWNjZXNzIEFQSTog
QWRkIGEgcmVxdWVzdCByb3VuZHRyaXAgdG8gY2hlY2sgd2hldGhlciBwcm9tcHRpbmcgaXMgbmVl
ZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUz
NjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQwMDExNTU2PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhbiBlbnVtIFdl
YktpdDo6U3RvcmFnZUFjY2Vzc1N0YXR1cyB0byBoYW5kbGUgb3VyIHRocmVlIGFjY2VzcworICAg
ICAgICBzdGF0ZXM6CisgICAgICAgIC0gV2ViS2l0OjpTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5u
b3RSZXF1ZXN0QWNjZXNzLgorICAgICAgICAgICAgVGhpcyBtZWFucyB0aGUgZG9tYWluIGlzIGJs
b2NrZWQgZnJvbSBjb29raWUgYWNjZXNzLgorICAgICAgICAtIFdlYktpdDo6U3RvcmFnZUFjY2Vz
c1N0YXR1czo6RG9lc05vdEhhdmVBY2Nlc3MuCisgICAgICAgICAgICBUaGlzIG1lYW5zIHRoYXQg
YWNjZXNzIGhhcyBub3QgYmVlbiBncmFudGVkIHlldCBhbmQgYSBwcm9tcHQgaXMgcmVxdWlyZWQu
CisgICAgICAgIC0gV2ViS2l0OjpTdG9yYWdlQWNjZXNzU3RhdHVzOjpIYXNBY2Nlc3MuCisgICAg
ICAgICAgICBUaGlzIGVpdGhlciBtZWFucyB0aGF0IHRoaXMgZG9tYWluIGRvZXMgbm90IG5lZWQg
dG8gYXNrIGZvciBhY2Nlc3MsIHRoaXMKKyAgICAgICAgICAgIGFjY2VzcyB3YXMgYWxyZWFkeSBn
cmFudGVkLCBvciBhY2Nlc3Mgd2FzIGdyYW50ZWQgbm93LgorCisgICAgICAgIElmIHRoZSBmaXJz
dCBjYWxsIHRvIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3MoKQorICAgICAgICBjb21lcyBiYWNrIGFzIFdlYktpdDo6U3RvcmFnZUFjY2Vzc1N0YXR1
czo6RG9lc05vdEhhdmVBY2Nlc3MsIHRoZSBXZWJQYWdlUHJveHkKKyAgICAgICAgbWF5IHByb21w
dCB0aGUgdXNlciBhbmQgcmVxdWVzdCBhY2Nlc3MgYWdhaW4sIGlmIHRoZSB1c2VyIHNhaWQgeWVz
LgorCisgICAgICAgIEV4aXN0aW5nIHRlc3QgY2FzZXMgcGFzcyBiZWNhdXNlIHJlcXVlc3RTdG9y
YWdlQWNjZXNzQ29uZmlybSBpbiBXS1BhZ2UuY3BwCisgICAgICAgIGRvZXMgbm90IGhhdmUgbV9j
bGllbnQucmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtIGFuZCB0aHVzIHJldHVybnMgdHJ1ZS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICAgICBBZGRlZCBhIG1pc3NpbmcgI2VuZGlmLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgICAgIEhlcmUgd2Ugbm93IGhhbmRsZSB0
aGUgdmFyaW91cyBjYXNlcyBlbmNvZGVkIGluIFdlYktpdDo6U3RvcmFnZUFjY2Vzc1N0YXR1cy4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0
U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgICAgICBOb3cgY292ZXJzIHRoZSBvcHRpb25hbCBwcm9t
cHQgY2FzZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFj
Y2Vzcyk6CisgICAgICAgICAgICBQaXBpbmcgdGhyb3VnaCBXZWJLaXQ6OlN0b3JhZ2VBY2Nlc3NT
dGF0dXMgZnJvbQorICAgICAgICAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIHRv
IFdlYlBhZ2VQcm94eS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5oOgorCiAyMDE4LTA1LTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpy
ZXF1ZXN0U3RvcmFnZUFjY2VzcyBzaG91bGQgY2FsbCBpdHMgY29tcGxldGlvbiBoYW5kbGVyIG9u
IHRoZSBtYWluIHRocmVhZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCShyZXZpc2lvbiAyMzE0NzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNiArMjA0LDEwIEBACiAjaW5jbHVk
ZSAiV2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eS5oIgogI2VuZGlmCiAKKyNpZiBIQVZFKENG
TkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKKyNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaCIKKyNlbmRpZgorCiAvLyBUaGlzIGNvbnRyb2xzIHdoYXQgc3RyYXRl
Z3kgd2UgdXNlIGZvciBtb3VzZSB3aGVlbCBjb2FsZXNjaW5nLgogI2RlZmluZSBNRVJHRV9XSEVF
TF9FVkVOVFMgMQogCkBAIC03NDg0LDE2ICs3NDg4LDQ4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0U3RvcmFnZUFjY2VzcygKICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgd2ViUHJvY2Vzc0NvbnRleHRJZF0gKGJv
b2wgYWNjZXNzKSB7CiAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U3RvcmFnZUFjY2Vzc1Jlc3BvbnNlKGFjY2Vzcywgd2ViUHJvY2Vzc0NvbnRleHRJZCksIG1fcGFn
ZUlEKTsKICAgICB9OwotICAgIFN0cmluZyByZXF1ZXN0aW5nRG9tYWluID0gc3ViRnJhbWVIb3N0
OwotICAgIFN0cmluZyBjdXJyZW50RG9tYWluID0gdG9wRnJhbWVIb3N0OwotICAgIG1fd2Vic2l0
ZURhdGFTdG9yZS0+cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZUhvc3QpLCBX
VEZNb3ZlKHRvcEZyYW1lSG9zdCksIGZyYW1lSUQsIG1fcGFnZUlELCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0aW5nRG9tYWluID0gV1RGTW92ZShyZXF1ZXN0
aW5nRG9tYWluKSwgY3VycmVudERvbWFpbiA9IFdURk1vdmUoY3VycmVudERvbWFpbiksIHByb21w
dEVuYWJsZWQsIGZyYW1lSUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildIChib29sIHdhc0dyYW50ZWQpIG11dGFibGUgewotICAgICAgICBpZiAoIXdhc0dy
YW50ZWQpCi0gICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAg
ICAgICAKLSAgICAgICAgaWYgKCFwcm9tcHRFbmFibGVkKQotICAgICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKHRydWUpOwogCi0gICAgICAgIG1fdWlDbGllbnQtPnJlcXVlc3RTdG9y
YWdlQWNjZXNzQ29uZmlybSgqdGhpcywgbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKSwgcmVx
dWVzdGluZ0RvbWFpbiwgY3VycmVudERvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgIGF1dG8gcHJvbXB0U3RhdHVzID0gcHJvbXB0RW5hYmxlZCA/IFN0b3JhZ2VBY2Nlc3NQ
cm9tcHRTdGF0dXM6OlVzZXJOb3RQcm9tcHRlZCA6IFN0b3JhZ2VBY2Nlc3NQcm9tcHRTdGF0dXM6
OlVzZXJHcmFudGVkQWNjZXNzOworICAgIFN0cmluZyBzdWJGcmFtZUhvc3RDb3B5ID0gc3ViRnJh
bWVIb3N0OworICAgIFN0cmluZyB0b3BGcmFtZUhvc3RDb3B5ID0gdG9wRnJhbWVIb3N0OworICAg
IG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFt
ZUhvc3RDb3B5KSwgV1RGTW92ZSh0b3BGcmFtZUhvc3RDb3B5KSwgZnJhbWVJRCwgbV9wYWdlSUQs
IHByb21wdFN0YXR1cywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3Vi
RnJhbWVIb3N0ID0gV1RGTW92ZShzdWJGcmFtZUhvc3QpLCB0b3BGcmFtZUhvc3QgPSBXVEZNb3Zl
KHRvcEZyYW1lSG9zdCksIHByb21wdEVuYWJsZWQsIGZyYW1lSUQsIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChTdG9yYWdlQWNjZXNzU3RhdHVzIHN0YXR1
cykgbXV0YWJsZSB7CisgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7CisgICAgICAgIGNhc2UgU3Rv
cmFnZUFjY2Vzc1N0YXR1czo6Q2Fubm90UmVxdWVzdEFjY2VzczoKKyAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBT
dG9yYWdlQWNjZXNzU3RhdHVzOjpEb2VzTm90SGF2ZUFjY2VzczogeworICAgICAgICAgICAgaWYg
KCFwcm9tcHRFbmFibGVkKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFN0cmluZyBzdWJGcmFtZUhv
c3RDb3B5ID0gc3ViRnJhbWVIb3N0OworICAgICAgICAgICAgU3RyaW5nIHRvcEZyYW1lSG9zdENv
cHkgPSB0b3BGcmFtZUhvc3Q7CisgICAgICAgICAgICBtX3VpQ2xpZW50LT5yZXF1ZXN0U3RvcmFn
ZUFjY2Vzc0NvbmZpcm0oKnRoaXMsIG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCksIFdURk1v
dmUoc3ViRnJhbWVIb3N0Q29weSksIFdURk1vdmUodG9wRnJhbWVIb3N0Q29weSksIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN1YkZyYW1lSG9zdCA9IFdURk1vdmUoc3Vi
RnJhbWVIb3N0KSwgdG9wRnJhbWVIb3N0ID0gV1RGTW92ZSh0b3BGcmFtZUhvc3QpLCBmcmFtZUlE
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCBh
Y2Nlc3MpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGlmIChhY2Nlc3MpIHsKKyAgICAgICAg
ICAgICAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhXVEZN
b3ZlKHN1YkZyYW1lSG9zdCksIFdURk1vdmUodG9wRnJhbWVIb3N0KSwgZnJhbWVJRCwgbV9wYWdl
SUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRTdGF0dXM6OlVzZXJHcmFudGVkQWNjZXNzLCBbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFN0b3JhZ2VBY2Nlc3NT
dGF0dXMgc3RhdHVzKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAo
c3RhdHVzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFN0b3JhZ2VBY2Nlc3NTdGF0
dXM6OkNhbm5vdFJlcXVlc3RBY2Nlc3M6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFN0
b3JhZ2VBY2Nlc3NTdGF0dXM6OkRvZXNOb3RIYXZlQWNjZXNzOgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFN0b3JhZ2VBY2Nlc3NTdGF0
dXM6Okhhc0FjY2VzczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcih0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBTdG9yYWdlQWNjZXNzU3RhdHVzOjpIYXNBY2Nlc3M6CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih0cnVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0pOwogfQogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHJldmlzaW9uIDIzMTQ3MCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM1NSw3ICszNTUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6aGFzCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRv
cEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1l
SG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBw
YWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRTdGF0dXMgcHJvbXB0U3RhdHVzLCBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY2FsbGJhY2spCiB7CiAg
ICAgQVNTRVJUKHN1YkZyYW1lSG9zdCAhPSB0b3BGcmFtZUhvc3QpOwogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CkBAIC0zNjMsMzMgKzM2Myw0NiBAQCB2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6cmVxCiAgICAgYXV0byBzdWJGcmFtZVByaW1hcnlEb21haW4gPSBp
c29sYXRlZFByaW1hcnlEb21haW4oc3ViRnJhbWVIb3N0KTsKICAgICBhdXRvIHRvcEZyYW1lUHJp
bWFyeURvbWFpbiA9IGlzb2xhdGVkUHJpbWFyeURvbWFpbih0b3BGcmFtZUhvc3QpOwogICAgIGlm
IChzdWJGcmFtZVByaW1hcnlEb21haW4gPT0gdG9wRnJhbWVQcmltYXJ5RG9tYWluKSB7Ci0gICAg
ICAgIGNhbGxiYWNrKHRydWUpOworICAgICAgICBjYWxsYmFjayhTdG9yYWdlQWNjZXNzU3RhdHVz
OjpIYXNBY2Nlc3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9zdGF0aXN0aWNz
UXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN1
YkZyYW1lUHJpbWFyeURvbWFpbiA9IGNyb3NzVGhyZWFkQ29weShzdWJGcmFtZVByaW1hcnlEb21h
aW4pLCB0b3BGcmFtZVByaW1hcnlEb21haW4gPSBjcm9zc1RocmVhZENvcHkodG9wRnJhbWVQcmlt
YXJ5RG9tYWluKSwgZnJhbWVJRCwgcGFnZUlELCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XSAoKSBtdXRhYmxlIHsKKyAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3ViRnJhbWVQcmltYXJ5RG9tYWluID0gY3Jv
c3NUaHJlYWRDb3B5KHN1YkZyYW1lUHJpbWFyeURvbWFpbiksIHRvcEZyYW1lUHJpbWFyeURvbWFp
biA9IGNyb3NzVGhyZWFkQ29weSh0b3BGcmFtZVByaW1hcnlEb21haW4pLCBmcmFtZUlELCBwYWdl
SUQsIHByb21wdFN0YXR1cywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKCkgbXV0YWJs
ZSB7CiAKICAgICAgICAgYXV0byYgc3ViRnJhbWVTdGF0aXN0aWMgPSBlbnN1cmVSZXNvdXJjZVN0
YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHN1YkZyYW1lUHJpbWFyeURvbWFpbik7CiAgICAgICAg
IGlmIChzaG91bGRCbG9ja0Nvb2tpZXMoc3ViRnJhbWVTdGF0aXN0aWMpKSB7CiAgICAgICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSB7Ci0gICAg
ICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrKFN0
b3JhZ2VBY2Nlc3NTdGF0dXM6OkNhbm5vdFJlcXVlc3RBY2Nlc3MpOwogICAgICAgICAgICAgfSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmICgh
c2hvdWxkUGFydGl0aW9uQ29va2llcyhzdWJGcmFtZVN0YXRpc3RpYykpIHsKICAgICAgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIHsKLSAgICAg
ICAgICAgICAgICBjYWxsYmFjayh0cnVlKTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhTdG9y
YWdlQWNjZXNzU3RhdHVzOjpIYXNBY2Nlc3MpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAocHJvbXB0U3RhdHVzID09IFN0b3Jh
Z2VBY2Nlc3NQcm9tcHRTdGF0dXM6OlVzZXJOb3RQcm9tcHRlZCkgeworICAgICAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0geworICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKFN0b3JhZ2VBY2Nlc3NTdGF0dXM6OkRvZXNOb3RIYXZlQWNjZXNzKTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAg
ICAgc3ViRnJhbWVTdGF0aXN0aWMudGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFn
ZUFjY2Vzc0FQSSsrOwogCi0gICAgICAgIG1fZ3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihzdWJG
cmFtZVByaW1hcnlEb21haW4sIHRvcEZyYW1lUHJpbWFyeURvbWFpbiwgZnJhbWVJRCwgcGFnZUlE
LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGJvb2wgdmFsdWUpIG11dGFibGUgewot
ICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdmFsdWUsIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldIHsKLSAgICAgICAgICAgICAgICBjYWxsYmFjayh2YWx1ZSk7Ci0gICAgICAgICAg
ICB9KTsKKyAgICAgICAgbV9ncmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKHN1YkZyYW1lUHJpbWFy
eURvbWFpbiwgdG9wRnJhbWVQcmltYXJ5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIFtjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXSAoYm9vbCB3YXNHcmFudGVkKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIGlmICh3YXNHcmFudGVkKSB7CisgICAgICAgICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0geworICAgICAgICAgICAgICAgICAgICBj
YWxsYmFjayhTdG9yYWdlQWNjZXNzU3RhdHVzOjpIYXNBY2Nlc3MpOworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSB7CisgICAgICAgICAgICAgICAgICAg
IGNhbGxiYWNrKFN0b3JhZ2VBY2Nlc3NTdGF0dXM6OkNhbm5vdFJlcXVlc3RBY2Nlc3MpOworICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICB9KTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oCShyZXZpc2lvbiAyMzE0NzApCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkod29ya2luZyBjb3B5
KQpAQCAtNTgsNiArNTgsMTUgQEAgY2xhc3MgT3BlcmF0aW5nRGF0ZTsKIGNsYXNzIFdlYlByb2Nl
c3NQcm94eTsKIAogZW51bSBjbGFzcyBTaG91bGRDbGVhckZpcnN0OworZW51bSBjbGFzcyBTdG9y
YWdlQWNjZXNzU3RhdHVzIHsKKyAgICBDYW5ub3RSZXF1ZXN0QWNjZXNzLAorICAgIERvZXNOb3RI
YXZlQWNjZXNzLAorICAgIEhhc0FjY2VzcworfTsKK2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1By
b21wdFN0YXR1cyB7CisgICAgVXNlck5vdFByb21wdGVkLAorICAgIFVzZXJHcmFudGVkQWNjZXNz
Cit9OwogCiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgZmluYWwgOiBwdWJs
aWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgpA
QCAtODUsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
VXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJiBvcmlnaW5z
KTsKIAogICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0
cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKTsKLSAgICB2b2lk
IHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9w
RnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2spOworICAgIHZvaWQgcmVxdWVzdFN0
b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3Qs
IHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFN0
YXR1cywgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYm
IGNhbGxiYWNrKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoU3Ry
aW5nJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQs
IFN0cmluZyYmIG9wZW5lckRvbWFpbiwgYm9vbCBpc1RyaWdnZXJlZEJ5VXNlckdlc3R1cmUpOwog
ICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDYWxsYmFjayhib29sIHdhc0dyYW50ZWQsIHVp
bnQ2NF90IGNvbnRleHRJZCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4J
KHJldmlzaW9uIDIzMTQ3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcs
NyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlCiAjaWYgSEFWRShD
Rk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCiAgICAgU3RvcmFnZUFjY2Vzc1JlcXVlc3RS
ZXN1bHQoYm9vbCB3YXNHcmFudGVkLCB1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgQWxsU3RvcmFn
ZUFjY2Vzc0VudHJpZXNSZXN1bHQoVmVjdG9yPFN0cmluZz4gZG9tYWlucywgdWludDY0X3QgY29u
dGV4dElkKQotCisjZW5kaWYKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIENv
bnRlbnRFeHRlbnNpb25SdWxlcyhXZWJLaXQ6OlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIgaWRlbnRpZmllcikKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDIz
MTQ3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQwLDE0ICsxMjQwLDE0IEBAIHZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6aGFzU3RvcmFnZUFjY2VzcygKICAgICBtX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MtPmhhc1N0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZUhvc3QpLCBXVEZNb3ZlKHRv
cEZyYW1lSG9zdCksIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12
b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZy
YW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2sp
Cit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1
YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRTdGF0dXMgcHJvbXB0U3RhdHVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmIGNhbGxiYWNrKQogewog
ICAgIGlmICghcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSkgewotICAgICAgICBjYWxs
YmFjayhmYWxzZSk7CisgICAgICAgIGNhbGxiYWNrKFN0b3JhZ2VBY2Nlc3NTdGF0dXM6OkNhbm5v
dFJlcXVlc3RBY2Nlc3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIG1fcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy0+cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFt
ZUhvc3QpLCBXVEZNb3ZlKHRvcEZyYW1lSG9zdCksIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShj
YWxsYmFjaykpOworICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3MoV1RGTW92ZShzdWJGcmFtZUhvc3QpLCBXVEZNb3ZlKHRvcEZyYW1lSG9zdCksIGZyYW1l
SUQsIHBhZ2VJRCwgcHJvbXB0U3RhdHVzLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAjZW5kaWYK
IApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuaAkocmV2aXNpb24gMjMxNDcwKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC02MCw2ICs2MCwxMSBAQCBzdHJ1Y3QgU3RvcmFnZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7
CiBzdHJ1Y3QgV2Vic2l0ZURhdGFSZWNvcmQ7CiBzdHJ1Y3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnM7CiAKKyNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKK2VudW0g
Y2xhc3MgU3RvcmFnZUFjY2Vzc1N0YXR1czsKK2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1Byb21w
dFN0YXR1czsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiBzdHJ1
Y3QgUGx1Z2luTW9kdWxlSW5mbzsKICNlbmRpZgpAQCAtMTMwLDcgKzEzNSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKCk7CiAgICAgdm9pZCByZW1v
dmVQcmV2YWxlbnREb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKTsKICAgICB2
b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BG
cmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0
aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJiBjYWxsYmFjayk7Ci0gICAgdm9pZCByZXF1ZXN0U3Rv
cmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwg
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNz
KFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRTdGF0dXMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpOwogI2VuZGlmCiAgICAg
dm9pZCBuZXR3b3JrUHJvY2Vzc0RpZENyYXNoKCk7CiAgICAgdm9pZCByZXNvbHZlRGlyZWN0b3Jp
ZXNJZk5lY2Vzc2FyeSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339836</attachid>
            <date>2018-05-08 11:06:17 -0700</date>
            <delta_ts>2018-05-08 11:14:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185368-20180508110616.patch</filename>
            <type>text/plain</type>
            <size>17853</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzE0OTMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDE4LTA1LTA4ICBKb2huIFdpbGFu
ZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3JhZ2UgQWNjZXNzIEFQSTog
QWRkIGEgcmVxdWVzdCByb3VuZHRyaXAgdG8gY2hlY2sgd2hldGhlciBwcm9tcHRpbmcgaXMgbmVl
ZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUz
NjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQwMDExNTU2PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhbiBlbnVtIFdl
YktpdDo6U3RvcmFnZUFjY2Vzc1N0YXR1cyB0byBoYW5kbGUgb3VyIHRocmVlIGFjY2VzcworICAg
ICAgICBzdGF0ZXM6CisgICAgICAgIC0gV2ViS2l0OjpTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5u
b3RSZXF1ZXN0QWNjZXNzLgorICAgICAgICAgICAgVGhpcyBtZWFucyB0aGUgZG9tYWluIGlzIGJs
b2NrZWQgZnJvbSBjb29raWUgYWNjZXNzLgorICAgICAgICAtIFdlYktpdDo6U3RvcmFnZUFjY2Vz
c1N0YXR1czo6UmVxdWlyZXNVc2VyUHJvbXB0LgorICAgICAgICAgICAgVGhpcyBtZWFucyB0aGF0
IGFjY2VzcyBoYXMgbm90IGJlZW4gZ3JhbnRlZCB5ZXQgYW5kIGEgcHJvbXB0IGlzIHJlcXVpcmVk
LgorICAgICAgICAtIFdlYktpdDo6U3RvcmFnZUFjY2Vzc1N0YXR1czo6SGFzQWNjZXNzLgorICAg
ICAgICAgICAgVGhpcyBlaXRoZXIgbWVhbnMgdGhhdCB0aGlzIGRvbWFpbiBkb2VzIG5vdCBuZWVk
IHRvIGFzayBmb3IgYWNjZXNzLAorICAgICAgICAgICAgYWNjZXNzIHdhcyBhbHJlYWR5IGdyYW50
ZWQsIG9yIGFjY2VzcyB3YXMgZ3JhbnRlZCBub3cuCisKKyAgICAgICAgSWYgdGhlIGNhbGwgdG8g
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcygpIGNv
bWVzCisgICAgICAgIGJhY2sgYXMgV2ViS2l0OjpTdG9yYWdlQWNjZXNzU3RhdHVzOjpSZXF1aXJl
c1VzZXJQcm9tcHQsIHRoZSBXZWJQYWdlUHJveHkKKyAgICAgICAgcHJvbXB0cyB0aGUgdXNlciBh
bmQgaWYgdGhlIHVzZXIgc2FpZCB5ZXMsIGNhbGxzIGEgZGlyZWN0CisgICAgICAgIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKCkuCisKKyAgICAgICAg
RXhpc3RpbmcgdGVzdCBjYXNlcyBwYXNzIGJlY2F1c2UgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25m
aXJtIGluIFdLUGFnZS5jcHAKKyAgICAgICAgZG9lcyBub3QgaGF2ZSBtX2NsaWVudC5yZXF1ZXN0
U3RvcmFnZUFjY2Vzc0NvbmZpcm0gYW5kIHRodXMgcmV0dXJucyB0cnVlLgorCisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgICAgIEFkZGVkIGEgbWlzc2luZyAjZW5kaWYuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MpOgorICAgICAgICAgICAgSGVyZSB3ZSBub3cgaGFuZGxlIHRoZSB2YXJpb3VzIGNh
c2VzIGVuY29kZWQgaW4gV2ViS2l0OjpTdG9yYWdlQWNjZXNzU3RhdHVzLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNz
KToKKyAgICAgICAgICAgIE5vdyBjb3ZlcnMgdGhlIG9wdGlvbmFsIHByb21wdCBjYXNlLgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9y
YWdlQWNjZXNzVW5kZXJPcGVuZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwp
OgorICAgICAgICAgICAgR3JhbnRpbmcgYWNjZXNzIGlzIGJyb2tlbiBvdXQgdG8gYWxsb3cgV2Vi
S2l0OjpXZWJQYWdlUHJveHkgdG8gY2FsbCBpdAorICAgICAgICAgICAgZGlyZWN0bHkuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MpOgorICAgICAg
ICAgICAgUGlwaW5nIHRocm91Z2ggY2FsbHMgZnJvbSBmcm9tIFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlCisgICAgICAgICAgICB0byBXZWJLaXQ6OldlYlBhZ2VQcm94eS4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorCiAy
MDE4LTA1LTA4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBB
bGxvdyBXZWJSZXNvdXJjZUxvYWRlciB0byBjYW5jZWwgYSBsb2FkIHNlcnZlZCBmcm9tIGEgc2Vy
dmljZSB3b3JrZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAkocmV2aXNpb24gMjMxNDcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA0LDYgKzIwNCwxMCBAQAogI2luY2x1ZGUgIldl
YkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHkuaCIKICNlbmRpZgogCisjaWYgSEFWRShDRk5FVFdP
UktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCisjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgiCisjZW5kaWYKKwogLy8gVGhpcyBjb250cm9scyB3aGF0IHN0cmF0ZWd5IHdl
IHVzZSBmb3IgbW91c2Ugd2hlZWwgY29hbGVzY2luZy4KICNkZWZpbmUgTUVSR0VfV0hFRUxfRVZF
TlRTIDEKIApAQCAtNzQ4MSwxOSArNzQ4NSwyOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFzU3Rv
cmFnZUFjY2VzcyhTdHJpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3RvcmFnZUFjY2Vz
cyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3Qgd2ViUHJvY2Vzc0NvbnRleHRJZCwgYm9vbCBwcm9tcHRFbmFibGVk
KQogewotICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCB3ZWJQcm9jZXNzQ29udGV4dElkXSAoYm9vbCBhY2Nlc3MpIHsKKyAg
ICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHdlYlByb2Nlc3NDb250ZXh0SWRdIChi
b29sIGFjY2VzcykgewogICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlN0b3JhZ2VBY2Nlc3NSZXNwb25zZShhY2Nlc3MsIHdlYlByb2Nlc3NDb250ZXh0SWQpLCBtX3Bh
Z2VJRCk7CiAgICAgfTsKLSAgICBTdHJpbmcgcmVxdWVzdGluZ0RvbWFpbiA9IHN1YkZyYW1lSG9z
dDsKLSAgICBTdHJpbmcgY3VycmVudERvbWFpbiA9IHRvcEZyYW1lSG9zdDsKLSAgICBtX3dlYnNp
dGVEYXRhU3RvcmUtPnJlcXVlc3RTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVIb3N0KSwg
V1RGTW92ZSh0b3BGcmFtZUhvc3QpLCBmcmFtZUlELCBtX3BhZ2VJRCwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdGluZ0RvbWFpbiA9IFdURk1vdmUocmVxdWVz
dGluZ0RvbWFpbiksIGN1cnJlbnREb21haW4gPSBXVEZNb3ZlKGN1cnJlbnREb21haW4pLCBwcm9t
cHRFbmFibGVkLCBmcmFtZUlELCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSAoYm9vbCB3YXNHcmFudGVkKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCF3YXNH
cmFudGVkKQotICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAg
ICAgICAgCi0gICAgICAgIGlmICghcHJvbXB0RW5hYmxlZCkKLSAgICAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcih0cnVlKTsKIAotICAgICAgICBtX3VpQ2xpZW50LT5yZXF1ZXN0U3Rv
cmFnZUFjY2Vzc0NvbmZpcm0oKnRoaXMsIG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCksIHJl
cXVlc3RpbmdEb21haW4sIGN1cnJlbnREb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyhz
dWJGcmFtZUhvc3QpLCBTdHJpbmcodG9wRnJhbWVIb3N0KSwgZnJhbWVJRCwgbV9wYWdlSUQsIHBy
b21wdEVuYWJsZWQsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN1YkZy
YW1lSG9zdCwgdG9wRnJhbWVIb3N0LCBwcm9tcHRFbmFibGVkLCBmcmFtZUlELCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoU3RvcmFnZUFjY2Vzc1N0YXR1
cyBzdGF0dXMpIG11dGFibGUgeworICAgICAgICBzd2l0Y2ggKHN0YXR1cykgeworICAgICAgICBj
YXNlIFN0b3JhZ2VBY2Nlc3NTdGF0dXM6OkNhbm5vdFJlcXVlc3RBY2Nlc3M6CisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGNhc2UgU3RvcmFnZUFjY2Vzc1N0YXR1czo6UmVxdWlyZXNVc2VyUHJvbXB0OgorICAgICAgICAg
ICAgQVNTRVJUX1VOVVNFRChwcm9tcHRFbmFibGVkLCBwcm9tcHRFbmFibGVkKTsKKyAgICAgICAg
ICAgIG1fdWlDbGllbnQtPnJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybSgqdGhpcywgbV9wcm9j
ZXNzLT53ZWJGcmFtZShmcmFtZUlEKSwgU3RyaW5nKHN1YkZyYW1lSG9zdCksIFN0cmluZyh0b3BG
cmFtZUhvc3QpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdWJGcmFt
ZUhvc3QsIHRvcEZyYW1lSG9zdCwgZnJhbWVJRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0gKGJvb2wgdXNlckRpZEdyYW50QWNjZXNzKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgICAgICBpZiAodXNlckRpZEdyYW50QWNjZXNzKQorICAgICAgICAgICAgICAg
ICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPmdyYW50U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZy
YW1lSG9zdCksIFdURk1vdmUodG9wRnJhbWVIb3N0KSwgZnJhbWVJRCwgbV9wYWdlSUQsIHVzZXJE
aWRHcmFudEFjY2VzcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgU3RvcmFn
ZUFjY2Vzc1N0YXR1czo6SGFzQWNjZXNzOgorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
dHJ1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICB9KTsKIH0KICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCShyZXZpc2lvbiAyMzE0NzApCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNTUsNyArMzU1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OmhhcwogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJp
bmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RG
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBz
dWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlELCBib29sIHByb21wdEVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKHN1YkZyYW1l
SG9zdCAhPSB0b3BGcmFtZUhvc3QpOwogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkBA
IC0zNjMsMzIgKzM2Myw0MiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
cmVxCiAgICAgYXV0byBzdWJGcmFtZVByaW1hcnlEb21haW4gPSBpc29sYXRlZFByaW1hcnlEb21h
aW4oc3ViRnJhbWVIb3N0KTsKICAgICBhdXRvIHRvcEZyYW1lUHJpbWFyeURvbWFpbiA9IGlzb2xh
dGVkUHJpbWFyeURvbWFpbih0b3BGcmFtZUhvc3QpOwogICAgIGlmIChzdWJGcmFtZVByaW1hcnlE
b21haW4gPT0gdG9wRnJhbWVQcmltYXJ5RG9tYWluKSB7Ci0gICAgICAgIGNhbGxiYWNrKHRydWUp
OworICAgICAgICBjYWxsYmFjayhTdG9yYWdlQWNjZXNzU3RhdHVzOjpIYXNBY2Nlc3MpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN1YkZyYW1lUHJpbWFyeURvbWFp
biA9IGNyb3NzVGhyZWFkQ29weShzdWJGcmFtZVByaW1hcnlEb21haW4pLCB0b3BGcmFtZVByaW1h
cnlEb21haW4gPSBjcm9zc1RocmVhZENvcHkodG9wRnJhbWVQcmltYXJ5RG9tYWluKSwgZnJhbWVJ
RCwgcGFnZUlELCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsKKyAg
ICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgc3ViRnJhbWVQcmltYXJ5RG9tYWluID0gY3Jvc3NUaHJlYWRDb3B5KHN1YkZy
YW1lUHJpbWFyeURvbWFpbiksIHRvcEZyYW1lUHJpbWFyeURvbWFpbiA9IGNyb3NzVGhyZWFkQ29w
eSh0b3BGcmFtZVByaW1hcnlEb21haW4pLCBmcmFtZUlELCBwYWdlSUQsIHByb21wdEVuYWJsZWQs
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldICgpIG11dGFibGUgewogCiAgICAgICAgIGF1
dG8mIHN1YkZyYW1lU3RhdGlzdGljID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFy
eURvbWFpbihzdWJGcmFtZVByaW1hcnlEb21haW4pOwogICAgICAgICBpZiAoc2hvdWxkQmxvY2tD
b29raWVzKHN1YkZyYW1lU3RhdGlzdGljKSkgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gewotICAgICAgICAgICAgICAgIGNhbGxi
YWNrKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhTdG9yYWdlQWNjZXNzU3RhdHVz
OjpDYW5ub3RSZXF1ZXN0QWNjZXNzKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoIXNob3VsZFBhcnRpdGlvbkNv
b2tpZXMoc3ViRnJhbWVTdGF0aXN0aWMpKSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJh
Y2sodHJ1ZSk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soU3RvcmFnZUFjY2Vzc1N0YXR1czo6
SGFzQWNjZXNzKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKHByb21wdEVuYWJsZWQpIHsKKyAgICAgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIHsKKyAgICAgICAgICAgICAg
ICBjYWxsYmFjayhTdG9yYWdlQWNjZXNzU3RhdHVzOjpSZXF1aXJlc1VzZXJQcm9tcHQpOwogICAg
ICAgICAgICAgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBz
dWJGcmFtZVN0YXRpc3RpYy50aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNj
ZXNzQVBJKys7CiAKLSAgICAgICAgbV9ncmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKHN1YkZyYW1l
UHJpbWFyeURvbWFpbiwgdG9wRnJhbWVQcmltYXJ5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoYm9vbCB2YWx1ZSkgbXV0YWJsZSB7Ci0gICAg
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt2YWx1ZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0gewotICAgICAgICAgICAgICAgIGNhbGxiYWNrKHZhbHVlKTsKKyAgICAgICAgZ3JhbnRT
dG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShzdWJGcmFtZVByaW1hcnlEb21haW4pLCBXVEZN
b3ZlKHRvcEZyYW1lUHJpbWFyeURvbWFpbiksIGZyYW1lSUQsIHBhZ2VJRCwgZmFsc2UsIFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoYm9vbCB3YXNHcmFudGVkQWNjZXNzKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIHdhc0dyYW50ZWRBY2Nlc3NdICgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGlm
ICh3YXNHcmFudGVkQWNjZXNzKQorICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhTdG9yYWdl
QWNjZXNzU3RhdHVzOjpIYXNBY2Nlc3MpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgY2FsbGJhY2soU3RvcmFnZUFjY2Vzc1N0YXR1czo6Q2Fubm90UmVxdWVzdEFj
Y2Vzcyk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfSk7CkBAIC00MTMsMTIg
KzQyMywzNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxCiAgICAg
aWYgKCFjb29raWVzQmxvY2tlZCAmJiAhc2hvdWxkUGFydGl0aW9uQ29va2llcyhkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3NTdGF0aXN0aWMpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2dy
YW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoV1RGTW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nl
c3MpLCBXVEZNb3ZlKG9wZW5lckRvbWFpbiksIHN0ZDo6bnVsbG9wdCwgb3BlbmVyUGFnZUlELCBb
XShib29sKSB7IH0pOworICAgIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoZG9t
YWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKSwgV1RGTW92ZShvcGVuZXJEb21haW4pLCBzdGQ6Om51
bGxvcHQsIG9wZW5lclBhZ2VJRCwgZmFsc2UsIFtdKGJvb2wpIHsgfSk7CiAjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECiAgICAgUkVMRUFTRV9MT0dfSU5GT19JRihtX2RlYnVnTG9nZ2luZ0VuYWJs
ZWQsIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1ZywgIkdyYW50IHN0b3JhZ2UgYWNjZXNzIGZv
ciAle3B1YmxpY31zIHVuZGVyIG9wZW5lciAle3B1YmxpY31zLCAle3B1YmxpY31zIHVzZXIgaW50
ZXJhY3Rpb24uIiwgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLnV0ZjgoKS5kYXRhKCksIG9w
ZW5lckRvbWFpbi51dGY4KCkuZGF0YSgpLCAoaXNUcmlnZ2VyZWRCeVVzZXJHZXN0dXJlID8gIndp
dGgiIDogIndpdGhvdXQiKSk7CiAjZW5kaWYKIH0KIAordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0
cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBi
b29sIHVzZXJXYXNQcm9tcHRlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxs
YmFjaykKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIG1fc3RhdGlzdGlj
c1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBz
dWJGcmFtZUhvc3QgPSBjcm9zc1RocmVhZENvcHkoc3ViRnJhbWVIb3N0KSwgdG9wRnJhbWVIb3N0
ID0gY3Jvc3NUaHJlYWRDb3B5KHRvcEZyYW1lSG9zdCksIGZyYW1lSUQsIHBhZ2VJRCwgdXNlcldh
c1Byb21wdGVkLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsKKyAg
ICAgICAgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShzdWJGcmFtZUhvc3QpLCBX
VEZNb3ZlKHRvcEZyYW1lSG9zdCksIGZyYW1lSUQsIHBhZ2VJRCwgdXNlcldhc1Byb21wdGVkLCBb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGJvb2wgd2FzR3JhbnRlZEFjY2VzcykgbXV0
YWJsZSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCB3YXNHcmFudGVkQWNjZXNzXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAg
ICBjYWxsYmFjayh3YXNHcmFudGVkQWNjZXNzKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
KTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omdy
YW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYg
dG9wRnJhbWVIb3N0LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBw
YWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNhbGxiYWNrKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1
dG8gc3ViRnJhbWVQcmltYXJ5RG9tYWluID0gaXNvbGF0ZWRQcmltYXJ5RG9tYWluKHN1YkZyYW1l
SG9zdCk7CisgICAgYXV0byB0b3BGcmFtZVByaW1hcnlEb21haW4gPSBpc29sYXRlZFByaW1hcnlE
b21haW4odG9wRnJhbWVIb3N0KTsKKyAgICBpZiAoc3ViRnJhbWVQcmltYXJ5RG9tYWluID09IHRv
cEZyYW1lUHJpbWFyeURvbWFpbikgeworICAgICAgICBjYWxsYmFjayh0cnVlKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICAKKyAgICBtX2dyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoc3Vi
RnJhbWVQcmltYXJ5RG9tYWluLCB0b3BGcmFtZVByaW1hcnlEb21haW4sIGZyYW1lSUQsIHBhZ2VJ
RCwgV1RGTW92ZShjYWxsYmFjaykpOworfQorCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6cmVtb3ZlQWxsU3RvcmFnZUFjY2VzcygpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkocmV2aXNpb24gMjMxNDcwKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDExIEBAIGNsYXNzIE9wZXJhdGluZ0RhdGU7CiBj
bGFzcyBXZWJQcm9jZXNzUHJveHk7CiAKIGVudW0gY2xhc3MgU2hvdWxkQ2xlYXJGaXJzdDsKK2Vu
dW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1N0YXR1cyB7CisgICAgQ2Fubm90UmVxdWVzdEFjY2VzcywK
KyAgICBSZXF1aXJlc1VzZXJQcm9tcHQsCisgICAgSGFzQWNjZXNzCit9OwogCiBjbGFzcyBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgZmluYWwgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9u
OjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgpAQCAtODUsOCArOTAsOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2Vi
Q29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJiBvcmlnaW5zKTsKIAogICAgIHZvaWQgaGFz
U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9z
dCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5k
bGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNj
ZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAo
Ym9vbCk+JiYgY2FsbGJhY2spOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5n
JiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCBwcm9tcHRFbmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNj
ZXNzVW5kZXJPcGVuZXIoU3RyaW5nJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50
NjRfdCBvcGVuZXJQYWdlSUQsIFN0cmluZyYmIG9wZW5lckRvbWFpbiwgYm9vbCBpc1RyaWdnZXJl
ZEJ5VXNlckdlc3R1cmUpOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1
YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ2FsbGJhY2soYm9vbCB3
YXNHcmFudGVkLCB1aW50NjRfdCBjb250ZXh0SWQpOwogCiAgICAgdm9pZCBwcm9jZXNzV2lsbE9w
ZW5Db25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIElQQzo6Q29ubmVjdGlvbiYpOwpAQCAtMTc5
LDYgKzE4NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzU3RhdGlzdGljc0FuZERhdGFS
ZWNvcmRzKCk7CiAKICAgICB2b2lkIHJlc2V0Q29va2llUGFydGl0aW9uaW5nU3RhdGUoKTsKKyAg
ICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwg
U3RyaW5nJiYgdG9wRnJhbWVIb3N0LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoKTsKIAogICAg
IHZvaWQgc2V0RGVidWdMb2dnZ2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fZGVidWdMb2dn
aW5nRW5hYmxlZCAgPSBlbmFibGVkOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2Vz
LmluCShyZXZpc2lvbiAyMzE0NzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcg
KzQ3LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZQogI2lmIEhB
VkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQogICAgIFN0b3JhZ2VBY2Nlc3NSZXF1
ZXN0UmVzdWx0KGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4dElkKQogICAgIEFsbFN0
b3JhZ2VBY2Nlc3NFbnRyaWVzUmVzdWx0KFZlY3RvcjxTdHJpbmc+IGRvbWFpbnMsIHVpbnQ2NF90
IGNvbnRleHRJZCkKLQorI2VuZGlmCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAg
ICBDb250ZW50RXh0ZW5zaW9uUnVsZXMoV2ViS2l0OjpVc2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lv
biAyMzE0NzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0MCwxNCArMTI0MCwyNCBAQCB2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoCiAgICAgbV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLT5oYXNTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVIb3N0KSwgV1RGTW92
ZSh0b3BGcmFtZUhvc3QpLCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0K
IAotdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBz
dWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxi
YWNrKQordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcm
JiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlELCBib29sIHByb21wdEVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFyZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpKSB7CisgICAgICAgIGNhbGxiYWNrKFN0b3JhZ2VBY2Nl
c3NTdGF0dXM6OkNhbm5vdFJlcXVlc3RBY2Nlc3MpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIAorICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
V1RGTW92ZShzdWJGcmFtZUhvc3QpLCBXVEZNb3ZlKHRvcEZyYW1lSG9zdCksIGZyYW1lSUQsIHBh
Z2VJRCwgcHJvbXB0RW5hYmxlZCwgV1RGTW92ZShjYWxsYmFjaykpOworfQorCit2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OmdyYW50U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0
cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBi
b29sIHVzZXJXYXNQcm9tcHRlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxs
YmFjaykKIHsKICAgICBpZiAoIXJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkpIHsKICAg
ICAgICAgY2FsbGJhY2soZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAg
IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShz
dWJGcmFtZUhvc3QpLCBXVEZNb3ZlKHRvcEZyYW1lSG9zdCksIGZyYW1lSUQsIHBhZ2VJRCwgV1RG
TW92ZShjYWxsYmFjaykpOworICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+Z3JhbnRTdG9y
YWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVIb3N0KSwgV1RGTW92ZSh0b3BGcmFtZUhvc3QpLCBm
cmFtZUlELCBwYWdlSUQsIHVzZXJXYXNQcm9tcHRlZCwgV1RGTW92ZShjYWxsYmFjaykpOwogfQog
I2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHJldmlzaW9uIDIzMTQ3MCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkod29ya2luZyBj
b3B5KQpAQCAtNjAsNiArNjAsMTEgQEAgc3RydWN0IFN0b3JhZ2VQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOwogc3RydWN0IFdlYnNpdGVEYXRhUmVjb3JkOwogc3RydWN0IFdlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzOwogCisjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcp
CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTdGF0dXM7CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nl
c3NQcm9tcHRTdGF0dXM7CisjZW5kaWYKKwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQogc3RydWN0IFBsdWdpbk1vZHVsZUluZm87CiAjZW5kaWYKQEAgLTEzMCw3ICsxMzUsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZW1vdmVBbGxTdG9yYWdlQWNjZXNzSGFuZGxlcigpOwogICAgIHZv
aWQgcmVtb3ZlUHJldmFsZW50RG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7
CiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5n
JiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2spOwotICAgIHZvaWQgcmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFt
ZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkIChib29sKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFn
ZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHByb21wdEVuYWJsZWQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpOworICAgIHZvaWQgZ3Jh
bnRTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVI
b3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21w
dGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICNlbmRpZgogICAgIHZvaWQg
bmV0d29ya1Byb2Nlc3NEaWRDcmFzaCgpOwogICAgIHZvaWQgcmVzb2x2ZURpcmVjdG9yaWVzSWZO
ZWNlc3NhcnkoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339840</attachid>
            <date>2018-05-08 11:14:16 -0700</date>
            <delta_ts>2018-05-08 11:14:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185368-20180508111415.patch</filename>
            <type>text/plain</type>
            <size>17889</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzE0OTQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDE4LTA1LTA4ICBKb2huIFdpbGFu
ZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3JhZ2UgQWNjZXNzIEFQSTog
QWRkIGEgcmVxdWVzdCByb3VuZHRyaXAgdG8gY2hlY2sgd2hldGhlciBwcm9tcHRpbmcgaXMgbmVl
ZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUz
NjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQwMDExNTU2PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhbiBlbnVtIFdl
YktpdDo6U3RvcmFnZUFjY2Vzc1N0YXR1cyB0byBoYW5kbGUgb3VyIHRocmVlIGFjY2VzcworICAg
ICAgICBzdGF0ZXM6CisgICAgICAgIC0gV2ViS2l0OjpTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5u
b3RSZXF1ZXN0QWNjZXNzLgorICAgICAgICAgICAgVGhpcyBtZWFucyB0aGUgZG9tYWluIGlzIGJs
b2NrZWQgZnJvbSBjb29raWUgYWNjZXNzLgorICAgICAgICAtIFdlYktpdDo6U3RvcmFnZUFjY2Vz
c1N0YXR1czo6UmVxdWlyZXNVc2VyUHJvbXB0LgorICAgICAgICAgICAgVGhpcyBtZWFucyB0aGF0
IGFjY2VzcyBoYXMgbm90IGJlZW4gZ3JhbnRlZCB5ZXQgYW5kIGEgcHJvbXB0IGlzIHJlcXVpcmVk
LgorICAgICAgICAtIFdlYktpdDo6U3RvcmFnZUFjY2Vzc1N0YXR1czo6SGFzQWNjZXNzLgorICAg
ICAgICAgICAgVGhpcyBlaXRoZXIgbWVhbnMgdGhhdCB0aGlzIGRvbWFpbiBkb2VzIG5vdCBuZWVk
IHRvIGFzayBmb3IgYWNjZXNzLAorICAgICAgICAgICAgYWNjZXNzIHdhcyBhbHJlYWR5IGdyYW50
ZWQsIG9yIGFjY2VzcyB3YXMgZ3JhbnRlZCBub3cuCisKKyAgICAgICAgSWYgdGhlIGNhbGwgdG8g
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcygpIGNv
bWVzCisgICAgICAgIGJhY2sgYXMgV2ViS2l0OjpTdG9yYWdlQWNjZXNzU3RhdHVzOjpSZXF1aXJl
c1VzZXJQcm9tcHQsIHRoZSBXZWJQYWdlUHJveHkKKyAgICAgICAgcHJvbXB0cyB0aGUgdXNlciBh
bmQgaWYgdGhlIHVzZXIgc2FpZCB5ZXMsIGNhbGxzIGEgZGlyZWN0CisgICAgICAgIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKCkuCisKKyAgICAgICAg
RXhpc3RpbmcgdGVzdCBjYXNlcyBwYXNzIGJlY2F1c2UgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25m
aXJtIGluIFdLUGFnZS5jcHAKKyAgICAgICAgZG9lcyBub3QgaGF2ZSBtX2NsaWVudC5yZXF1ZXN0
U3RvcmFnZUFjY2Vzc0NvbmZpcm0gYW5kIHRodXMgcmV0dXJucyB0cnVlLgorCisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgICAgIEFkZGVkIGEgbWlzc2luZyAjZW5kaWYuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MpOgorICAgICAgICAgICAgSGVyZSB3ZSBub3cgaGFuZGxlIHRoZSB2YXJpb3VzIGNh
c2VzIGVuY29kZWQgaW4gV2ViS2l0OjpTdG9yYWdlQWNjZXNzU3RhdHVzLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNz
KToKKyAgICAgICAgICAgIE5vdyBjb3ZlcnMgdGhlIG9wdGlvbmFsIHByb21wdCBjYXNlLgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9y
YWdlQWNjZXNzVW5kZXJPcGVuZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwp
OgorICAgICAgICAgICAgR3JhbnRpbmcgYWNjZXNzIGlzIGJyb2tlbiBvdXQgdG8gYWxsb3cgV2Vi
S2l0OjpXZWJQYWdlUHJveHkgdG8gY2FsbCBpdAorICAgICAgICAgICAgZGlyZWN0bHkuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MpOgorICAgICAg
ICAgICAgUGlwaW5nIHRocm91Z2ggY2FsbHMgZnJvbSBmcm9tIFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlCisgICAgICAgICAgICB0byBXZWJLaXQ6OldlYlBhZ2VQcm94eS4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorCiAy
MDE4LTA1LTA4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBB
bGxvdyBXZWJSZXNvdXJjZUxvYWRlciB0byBjYW5jZWwgYSBsb2FkIHNlcnZlZCBmcm9tIGEgc2Vy
dmljZSB3b3JrZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAkocmV2aXNpb24gMjMxNDk0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA0LDYgKzIwNCwxMCBAQAogI2luY2x1ZGUgIldl
YkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHkuaCIKICNlbmRpZgogCisjaWYgSEFWRShDRk5FVFdP
UktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCisjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgiCisjZW5kaWYKKwogLy8gVGhpcyBjb250cm9scyB3aGF0IHN0cmF0ZWd5IHdl
IHVzZSBmb3IgbW91c2Ugd2hlZWwgY29hbGVzY2luZy4KICNkZWZpbmUgTUVSR0VfV0hFRUxfRVZF
TlRTIDEKIApAQCAtNzQ4MSwxOSArNzQ4NSwyOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFzU3Rv
cmFnZUFjY2VzcyhTdHJpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3RvcmFnZUFjY2Vz
cyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3Qgd2ViUHJvY2Vzc0NvbnRleHRJZCwgYm9vbCBwcm9tcHRFbmFibGVk
KQogewotICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCB3ZWJQcm9jZXNzQ29udGV4dElkXSAoYm9vbCBhY2Nlc3MpIHsKKyAg
ICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHdlYlByb2Nlc3NDb250ZXh0SWRdIChi
b29sIGFjY2VzcykgewogICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlN0b3JhZ2VBY2Nlc3NSZXNwb25zZShhY2Nlc3MsIHdlYlByb2Nlc3NDb250ZXh0SWQpLCBtX3Bh
Z2VJRCk7CiAgICAgfTsKLSAgICBTdHJpbmcgcmVxdWVzdGluZ0RvbWFpbiA9IHN1YkZyYW1lSG9z
dDsKLSAgICBTdHJpbmcgY3VycmVudERvbWFpbiA9IHRvcEZyYW1lSG9zdDsKLSAgICBtX3dlYnNp
dGVEYXRhU3RvcmUtPnJlcXVlc3RTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVIb3N0KSwg
V1RGTW92ZSh0b3BGcmFtZUhvc3QpLCBmcmFtZUlELCBtX3BhZ2VJRCwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdGluZ0RvbWFpbiA9IFdURk1vdmUocmVxdWVz
dGluZ0RvbWFpbiksIGN1cnJlbnREb21haW4gPSBXVEZNb3ZlKGN1cnJlbnREb21haW4pLCBwcm9t
cHRFbmFibGVkLCBmcmFtZUlELCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSAoYm9vbCB3YXNHcmFudGVkKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCF3YXNH
cmFudGVkKQotICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAg
ICAgICAgCi0gICAgICAgIGlmICghcHJvbXB0RW5hYmxlZCkKLSAgICAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcih0cnVlKTsKIAotICAgICAgICBtX3VpQ2xpZW50LT5yZXF1ZXN0U3Rv
cmFnZUFjY2Vzc0NvbmZpcm0oKnRoaXMsIG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCksIHJl
cXVlc3RpbmdEb21haW4sIGN1cnJlbnREb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyhz
dWJGcmFtZUhvc3QpLCBTdHJpbmcodG9wRnJhbWVIb3N0KSwgZnJhbWVJRCwgbV9wYWdlSUQsIHBy
b21wdEVuYWJsZWQsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN1YkZy
YW1lSG9zdCwgdG9wRnJhbWVIb3N0LCBwcm9tcHRFbmFibGVkLCBmcmFtZUlELCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoU3RvcmFnZUFjY2Vzc1N0YXR1
cyBzdGF0dXMpIG11dGFibGUgeworICAgICAgICBzd2l0Y2ggKHN0YXR1cykgeworICAgICAgICBj
YXNlIFN0b3JhZ2VBY2Nlc3NTdGF0dXM6OkNhbm5vdFJlcXVlc3RBY2Nlc3M6CisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGNhc2UgU3RvcmFnZUFjY2Vzc1N0YXR1czo6UmVxdWlyZXNVc2VyUHJvbXB0OgorICAgICAgICAg
ICAgQVNTRVJUX1VOVVNFRChwcm9tcHRFbmFibGVkLCBwcm9tcHRFbmFibGVkKTsKKyAgICAgICAg
ICAgIG1fdWlDbGllbnQtPnJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybSgqdGhpcywgbV9wcm9j
ZXNzLT53ZWJGcmFtZShmcmFtZUlEKSwgU3RyaW5nKHN1YkZyYW1lSG9zdCksIFN0cmluZyh0b3BG
cmFtZUhvc3QpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdWJGcmFt
ZUhvc3QsIHRvcEZyYW1lSG9zdCwgZnJhbWVJRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0gKGJvb2wgdXNlckRpZEdyYW50QWNjZXNzKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgICAgICBpZiAodXNlckRpZEdyYW50QWNjZXNzKQorICAgICAgICAgICAgICAg
ICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPmdyYW50U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZy
YW1lSG9zdCksIFdURk1vdmUodG9wRnJhbWVIb3N0KSwgZnJhbWVJRCwgbV9wYWdlSUQsIHVzZXJE
aWRHcmFudEFjY2VzcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgU3RvcmFn
ZUFjY2Vzc1N0YXR1czo6SGFzQWNjZXNzOgorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
dHJ1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICB9KTsKIH0KICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCShyZXZpc2lvbiAyMzE0OTQpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNTUsNyArMzU1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OmhhcwogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJp
bmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RG
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBz
dWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlELCBib29sIHByb21wdEVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKHN1YkZyYW1l
SG9zdCAhPSB0b3BGcmFtZUhvc3QpOwogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkBA
IC0zNjMsMzIgKzM2Myw0MiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
cmVxCiAgICAgYXV0byBzdWJGcmFtZVByaW1hcnlEb21haW4gPSBpc29sYXRlZFByaW1hcnlEb21h
aW4oc3ViRnJhbWVIb3N0KTsKICAgICBhdXRvIHRvcEZyYW1lUHJpbWFyeURvbWFpbiA9IGlzb2xh
dGVkUHJpbWFyeURvbWFpbih0b3BGcmFtZUhvc3QpOwogICAgIGlmIChzdWJGcmFtZVByaW1hcnlE
b21haW4gPT0gdG9wRnJhbWVQcmltYXJ5RG9tYWluKSB7Ci0gICAgICAgIGNhbGxiYWNrKHRydWUp
OworICAgICAgICBjYWxsYmFjayhTdG9yYWdlQWNjZXNzU3RhdHVzOjpIYXNBY2Nlc3MpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN1YkZyYW1lUHJpbWFyeURvbWFp
biA9IGNyb3NzVGhyZWFkQ29weShzdWJGcmFtZVByaW1hcnlEb21haW4pLCB0b3BGcmFtZVByaW1h
cnlEb21haW4gPSBjcm9zc1RocmVhZENvcHkodG9wRnJhbWVQcmltYXJ5RG9tYWluKSwgZnJhbWVJ
RCwgcGFnZUlELCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsKKyAg
ICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgc3ViRnJhbWVQcmltYXJ5RG9tYWluID0gY3Jvc3NUaHJlYWRDb3B5KHN1YkZy
YW1lUHJpbWFyeURvbWFpbiksIHRvcEZyYW1lUHJpbWFyeURvbWFpbiA9IGNyb3NzVGhyZWFkQ29w
eSh0b3BGcmFtZVByaW1hcnlEb21haW4pLCBmcmFtZUlELCBwYWdlSUQsIHByb21wdEVuYWJsZWQs
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldICgpIG11dGFibGUgewogCiAgICAgICAgIGF1
dG8mIHN1YkZyYW1lU3RhdGlzdGljID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFy
eURvbWFpbihzdWJGcmFtZVByaW1hcnlEb21haW4pOwogICAgICAgICBpZiAoc2hvdWxkQmxvY2tD
b29raWVzKHN1YkZyYW1lU3RhdGlzdGljKSkgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gewotICAgICAgICAgICAgICAgIGNhbGxi
YWNrKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhTdG9yYWdlQWNjZXNzU3RhdHVz
OjpDYW5ub3RSZXF1ZXN0QWNjZXNzKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoIXNob3VsZFBhcnRpdGlvbkNv
b2tpZXMoc3ViRnJhbWVTdGF0aXN0aWMpKSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJh
Y2sodHJ1ZSk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soU3RvcmFnZUFjY2Vzc1N0YXR1czo6
SGFzQWNjZXNzKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKHByb21wdEVuYWJsZWQpIHsKKyAgICAgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIHsKKyAgICAgICAgICAgICAg
ICBjYWxsYmFjayhTdG9yYWdlQWNjZXNzU3RhdHVzOjpSZXF1aXJlc1VzZXJQcm9tcHQpOwogICAg
ICAgICAgICAgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBz
dWJGcmFtZVN0YXRpc3RpYy50aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNj
ZXNzQVBJKys7CiAKLSAgICAgICAgbV9ncmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKHN1YkZyYW1l
UHJpbWFyeURvbWFpbiwgdG9wRnJhbWVQcmltYXJ5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoYm9vbCB2YWx1ZSkgbXV0YWJsZSB7Ci0gICAg
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt2YWx1ZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0gewotICAgICAgICAgICAgICAgIGNhbGxiYWNrKHZhbHVlKTsKKyAgICAgICAgZ3JhbnRT
dG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShzdWJGcmFtZVByaW1hcnlEb21haW4pLCBXVEZN
b3ZlKHRvcEZyYW1lUHJpbWFyeURvbWFpbiksIGZyYW1lSUQsIHBhZ2VJRCwgZmFsc2UsIFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoYm9vbCB3YXNHcmFudGVkQWNjZXNzKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIHdhc0dyYW50ZWRBY2Nlc3NdICgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGlm
ICh3YXNHcmFudGVkQWNjZXNzKQorICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhTdG9yYWdl
QWNjZXNzU3RhdHVzOjpIYXNBY2Nlc3MpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgY2FsbGJhY2soU3RvcmFnZUFjY2Vzc1N0YXR1czo6Q2Fubm90UmVxdWVzdEFj
Y2Vzcyk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfSk7CkBAIC00MTMsMTIg
KzQyMywzOCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxCiAgICAg
aWYgKCFjb29raWVzQmxvY2tlZCAmJiAhc2hvdWxkUGFydGl0aW9uQ29va2llcyhkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3NTdGF0aXN0aWMpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2dy
YW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoV1RGTW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nl
c3MpLCBXVEZNb3ZlKG9wZW5lckRvbWFpbiksIHN0ZDo6bnVsbG9wdCwgb3BlbmVyUGFnZUlELCBb
XShib29sKSB7IH0pOworICAgIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoZG9t
YWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKSwgV1RGTW92ZShvcGVuZXJEb21haW4pLCBzdGQ6Om51
bGxvcHQsIG9wZW5lclBhZ2VJRCwgZmFsc2UsIFtdKGJvb2wpIHsgfSk7CiAjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECiAgICAgUkVMRUFTRV9MT0dfSU5GT19JRihtX2RlYnVnTG9nZ2luZ0VuYWJs
ZWQsIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1ZywgIkdyYW50IHN0b3JhZ2UgYWNjZXNzIGZv
ciAle3B1YmxpY31zIHVuZGVyIG9wZW5lciAle3B1YmxpY31zLCAle3B1YmxpY31zIHVzZXIgaW50
ZXJhY3Rpb24uIiwgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLnV0ZjgoKS5kYXRhKCksIG9w
ZW5lckRvbWFpbi51dGY4KCkuZGF0YSgpLCAoaXNUcmlnZ2VyZWRCeVVzZXJHZXN0dXJlID8gIndp
dGgiIDogIndpdGhvdXQiKSk7CiAjZW5kaWYKIH0KIAordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0
cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBi
b29sIHVzZXJXYXNQcm9tcHRlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxs
YmFjaykKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIG1fc3RhdGlzdGlj
c1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBz
dWJGcmFtZUhvc3QgPSBjcm9zc1RocmVhZENvcHkoc3ViRnJhbWVIb3N0KSwgdG9wRnJhbWVIb3N0
ID0gY3Jvc3NUaHJlYWRDb3B5KHRvcEZyYW1lSG9zdCksIGZyYW1lSUQsIHBhZ2VJRCwgdXNlcldh
c1Byb21wdGVkLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsKKyAg
ICAgICAgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShzdWJGcmFtZUhvc3QpLCBX
VEZNb3ZlKHRvcEZyYW1lSG9zdCksIGZyYW1lSUQsIHBhZ2VJRCwgdXNlcldhc1Byb21wdGVkLCBb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGJvb2wgd2FzR3JhbnRlZEFjY2VzcykgbXV0
YWJsZSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCB3YXNHcmFudGVkQWNjZXNzXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAg
ICBjYWxsYmFjayh3YXNHcmFudGVkQWNjZXNzKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
KTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omdy
YW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYg
dG9wRnJhbWVIb3N0LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBw
YWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNhbGxiYWNrKQoreworICAgIFVOVVNFRF9QQVJBTSh1c2VyV2FzUHJvbXB0ZWQpOworICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8gc3ViRnJhbWVQcmltYXJ5RG9t
YWluID0gaXNvbGF0ZWRQcmltYXJ5RG9tYWluKHN1YkZyYW1lSG9zdCk7CisgICAgYXV0byB0b3BG
cmFtZVByaW1hcnlEb21haW4gPSBpc29sYXRlZFByaW1hcnlEb21haW4odG9wRnJhbWVIb3N0KTsK
KyAgICBpZiAoc3ViRnJhbWVQcmltYXJ5RG9tYWluID09IHRvcEZyYW1lUHJpbWFyeURvbWFpbikg
eworICAgICAgICBjYWxsYmFjayh0cnVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAK
KyAgICBtX2dyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoc3ViRnJhbWVQcmltYXJ5RG9tYWluLCB0
b3BGcmFtZVByaW1hcnlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShjYWxsYmFjaykp
OworfQorCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVtb3ZlQWxsU3Rv
cmFnZUFjY2VzcygpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaAkocmV2aXNpb24gMjMxNDk0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4
LDYgKzU4LDExIEBAIGNsYXNzIE9wZXJhdGluZ0RhdGU7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7
CiAKIGVudW0gY2xhc3MgU2hvdWxkQ2xlYXJGaXJzdDsKK2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vz
c1N0YXR1cyB7CisgICAgQ2Fubm90UmVxdWVzdEFjY2VzcywKKyAgICBSZXF1aXJlc1VzZXJQcm9t
cHQsCisgICAgSGFzQWNjZXNzCit9OwogCiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUgZmluYWwgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXIgewogcHVibGljOgpAQCAtODUsOCArOTAsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljcz4mJiBvcmlnaW5zKTsKIAogICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcm
JiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNh
bGxiYWNrKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1l
SG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBw
YWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2spOwor
ICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJp
bmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9v
bCBwcm9tcHRFbmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0
dXMpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoU3RyaW5n
JiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIFN0
cmluZyYmIG9wZW5lckRvbWFpbiwgYm9vbCBpc1RyaWdnZXJlZEJ5VXNlckdlc3R1cmUpOworICAg
IHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYg
dG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNl
cldhc1Byb21wdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lk
IHJlcXVlc3RTdG9yYWdlQWNjZXNzQ2FsbGJhY2soYm9vbCB3YXNHcmFudGVkLCB1aW50NjRfdCBj
b250ZXh0SWQpOwogCiAgICAgdm9pZCBwcm9jZXNzV2lsbE9wZW5Db25uZWN0aW9uKFdlYlByb2Nl
c3NQcm94eSYsIElQQzo6Q29ubmVjdGlvbiYpOwpAQCAtMTc5LDYgKzE4NSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBwcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CiAKICAgICB2b2lk
IHJlc2V0Q29va2llUGFydGl0aW9uaW5nU3RhdGUoKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFj
Y2Vzc0ludGVybmFsKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wg
dXNlcldhc1Byb21wdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2
b2lkIHJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoKTsKIAogICAgIHZvaWQgc2V0RGVidWdMb2dnZ2lu
Z0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fZGVidWdMb2dnaW5nRW5hYmxlZCAgPSBlbmFibGVk
OyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMzE0OTQp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgbWVzc2FnZXMgLT4g
TmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZQogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0Vf
UEFSVElUSU9OSU5HKQogICAgIFN0b3JhZ2VBY2Nlc3NSZXF1ZXN0UmVzdWx0KGJvb2wgd2FzR3Jh
bnRlZCwgdWludDY0X3QgY29udGV4dElkKQogICAgIEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzUmVz
dWx0KFZlY3RvcjxTdHJpbmc+IGRvbWFpbnMsIHVpbnQ2NF90IGNvbnRleHRJZCkKLQorI2VuZGlm
CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBDb250ZW50RXh0ZW5zaW9uUnVs
ZXMoV2ViS2l0OjpVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyMzE0OTQpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI0MCwxNCArMTI0MCwyNCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6Omhh
c1N0b3JhZ2VBY2Nlc3MoCiAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5oYXNTdG9yYWdl
QWNjZXNzKFdURk1vdmUoc3ViRnJhbWVIb3N0KSwgV1RGTW92ZSh0b3BGcmFtZUhvc3QpLCBmcmFt
ZUlELCBwYWdlSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAotdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYm
IHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmlu
ZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29s
IHByb21wdEVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1
cyk+JiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZCgpKSB7CisgICAgICAgIGNhbGxiYWNrKFN0b3JhZ2VBY2Nlc3NTdGF0dXM6OkNhbm5vdFJlcXVl
c3RBY2Nlc3MpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIG1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZUhvc3Qp
LCBXVEZNb3ZlKHRvcEZyYW1lSG9zdCksIGZyYW1lSUQsIHBhZ2VJRCwgcHJvbXB0RW5hYmxlZCwg
V1RGTW92ZShjYWxsYmFjaykpOworfQorCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmdyYW50U3Rv
cmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwg
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHVzZXJXYXNQcm9tcHRlZCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIXJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkpIHsKICAgICAgICAgY2FsbGJhY2soZmFsc2Up
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy0+cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZUhvc3QpLCBXVEZNb3Zl
KHRvcEZyYW1lSG9zdCksIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShjYWxsYmFjaykpOworICAg
IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+Z3JhbnRTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3Vi
RnJhbWVIb3N0KSwgV1RGTW92ZSh0b3BGcmFtZUhvc3QpLCBmcmFtZUlELCBwYWdlSUQsIHVzZXJX
YXNQcm9tcHRlZCwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmgJKHJldmlzaW9uIDIzMTQ5NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNiArNjAsMTEg
QEAgc3RydWN0IFN0b3JhZ2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFdlYnNp
dGVEYXRhUmVjb3JkOwogc3RydWN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOwogCisjaWYg
SEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCitlbnVtIGNsYXNzIFN0b3JhZ2VB
Y2Nlc3NTdGF0dXM7CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NQcm9tcHRTdGF0dXM7CisjZW5k
aWYKKwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogc3RydWN0IFBsdWdpbk1vZHVs
ZUluZm87CiAjZW5kaWYKQEAgLTEzMCw3ICsxMzUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1v
dmVBbGxTdG9yYWdlQWNjZXNzSGFuZGxlcigpOwogICAgIHZvaWQgcmVtb3ZlUHJldmFsZW50RG9t
YWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7CiAgICAgdm9pZCBoYXNTdG9yYWdl
QWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZCAoYm9vbCk+JiYgY2FsbGJhY2spOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3Ry
aW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4m
JiBjYWxsYmFjayk7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJG
cmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgcGFnZUlELCBib29sIHByb21wdEVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Rv
cmFnZUFjY2Vzc1N0YXR1cyk+JiYpOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN0cmlu
ZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKICNlbmRpZgogICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NEaWRDcmFz
aCgpOwogICAgIHZvaWQgcmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3NhcnkoKTsK
</data>
<flag name="review"
          id="358073"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>