<?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>154499</bug_id>
          
          <creation_ts>2016-02-20 11:52:03 -0800</creation_ts>
          <short_desc>Enhance logging: Use &quot;always on&quot; macros</short_desc>
          <delta_ts>2016-03-08 03:29:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</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>154498</dependson>
          <blocked>154500</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Rollin">krollin</reporter>
          <assigned_to name="Keith Rollin">krollin</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>japhet</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1166757</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-02-20 11:52:03 -0800</bug_when>
    <thetext>Use the new &quot;always on&quot; macros in some strategic places. These places are identified by examining some currently &quot;unsolvable&quot; customer bug reports, as well as by some collective WebKit development experience.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166758</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-02-20 11:52:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/24757730&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168737</commentid>
    <comment_count>2</comment_count>
      <attachid>272379</attachid>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-02-26 15:53:53 -0800</bug_when>
    <thetext>Created attachment 272379
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168739</commentid>
    <comment_count>3</comment_count>
      <attachid>272379</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-02-26 16:17:29 -0800</bug_when>
    <thetext>Comment on attachment 272379
Patch

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

&gt; Source/WebCore/loader/ProgressTracker.cpp:123
&gt;  void ProgressTracker::progressStarted(Frame&amp; frame)

I worry these are going to be too noisy. Would it suffice to log frame load start and end in FrameLoader?

&gt; Source/WebCore/platform/MemoryPressureHandler.cpp:183
&gt; +void MemoryPressureHandler::ReliefLogger::diagnosticLog()

This seems to duplicate MemoryPressureHandler::ReliefLogger::platformLog() :(
Can we refactor this so we don&apos;t duplicate the code?

&gt; Source/WebCore/platform/network/mac/ResourceHandleMac.mm:285
&gt;  

If worry these may be too noisy.

&gt; Source/WebCore/platform/network/mac/WebCoreResourceHandleAsDelegate.mm:246
&gt;  

Would logging frame load complete suffice?

&gt; Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:287
&gt; +    LOG_ALWAYS(&quot;Handle %p delegate connectionDidFinishLoading:%p&quot;, m_handle, connection);

Ditto.

&gt; Source/WebKit2/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:243
&gt;  {

These seems very low-level. Also, I don&apos;t believe this code is actually being run anywhere at the moment.

&gt; Source/WebKit2/Platform/IPC/Connection.cpp:905
&gt; +    reportResourceUsage();

We log on EVERY IPC message? This seems like a lot.

&gt; Source/WebKit2/Platform/IPC/Connection.cpp:984
&gt; +    if (elapsed &lt; kFiveSeconds)

Oh, I see now that you technically only log every 5 seconds even though you&apos;ll call this method a lot more often. Honestly, we have so many IPC messages that having a repeating timer with an interval of 5 seconds would likely do the same thing more cheaply.
Also, this seems like a lot of things to log every 5 seconds? no?

&gt; Source/WebKit2/Platform/IPC/Connection.cpp:996
&gt; +    double utime = usage.ru_utime.tv_sec + usage.ru_utime.tv_usec / 1000000.0;

1000000.0 should be a constant with a readable name.

&gt; Source/WebKit2/Platform/IPC/Connection.h:362
&gt; +    struct rusage m_usage = {{0, 0}, {0, 0}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

do we really need the &quot;struct &quot; part?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169913</commentid>
    <comment_count>4</comment_count>
      <attachid>272681</attachid>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-03-02 13:33:52 -0800</bug_when>
    <thetext>Created attachment 272681
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169922</commentid>
    <comment_count>5</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-03-02 13:49:44 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 272379 [details]
&gt; &gt; Source/WebCore/loader/ProgressTracker.cpp:123
&gt; &gt;  void ProgressTracker::progressStarted(Frame&amp; frame)
&gt; 
&gt; I worry these are going to be too noisy. Would it suffice to log frame load
&gt; start and end in FrameLoader?

You and I subsequently had a long discussion about this, and you showed me some better places to insert these logging messages. I&apos;ll make those changes.

&gt; &gt; Source/WebCore/platform/MemoryPressureHandler.cpp:183
&gt; &gt; +void MemoryPressureHandler::ReliefLogger::diagnosticLog()
&gt; 
&gt; This seems to duplicate MemoryPressureHandler::ReliefLogger::platformLog() :(
&gt; Can we refactor this so we don&apos;t duplicate the code?

I haven&apos;t been able to see how. The function is intertwined with logic and logging statements. I don&apos;t see how to pull out the common parts and isolate the different parts.

&gt; &gt; Source/WebKit2/Platform/IPC/Connection.cpp:984
&gt; &gt; +    if (elapsed &lt; kFiveSeconds)
&gt; 
&gt; Oh, I see now that you technically only log every 5 seconds even though
&gt; you&apos;ll call this method a lot more often. Honestly, we have so many IPC
&gt; messages that having a repeating timer with an interval of 5 seconds would
&gt; likely do the same thing more cheaply.
&gt; Also, this seems like a lot of things to log every 5 seconds? no?

Regarding the usefulness and effectiveness of simply logging anything every 5 seconds, you, Gavin, and I talked about this, and have left this as a &quot;it remains to be seen&quot;.

As for a timer, I used to do that, but Gavin pointed out that we don&apos;t want the process to wake up every five seconds if it would otherwise be idle. That might have a negative effect on a device&apos;s battery, so the current approach was taken.

&gt; &gt; Source/WebKit2/Platform/IPC/Connection.cpp:996
&gt; &gt; +    double utime = usage.ru_utime.tv_sec + usage.ru_utime.tv_usec / 1000000.0;
&gt; 
&gt; 1000000.0 should be a constant with a readable name.

Wilco.

&gt; &gt; Source/WebKit2/Platform/IPC/Connection.h:362
&gt; &gt; +    struct rusage m_usage = {{0, 0}, {0, 0}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
&gt; 
&gt; do we really need the &quot;struct &quot; part?

This is a habit of mine for when I deal with plain Std C Lib type. I can remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169970</commentid>
    <comment_count>6</comment_count>
      <attachid>272681</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-02 15:06:43 -0800</bug_when>
    <thetext>Comment on attachment 272681
Patch

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

&gt; Source/WebCore/platform/MemoryPressureHandler.cpp:193
&gt; +        LOG_ALWAYS(&quot;Pressure relief: %s: -dirty %ld bytes (from %lu to %lu)&quot;, m_logString, (memoryDiff * -1), m_initialMemory, currentMemory);

If we called WTFLogAlways() instead of LOG_ALWAYS() (or in addition to) when s_loggingEnabled is true, then we could kill the platform-specific version.

&gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:203
&gt; +    LOG_ALWAYS(&quot;Starting resource load: pageID = %llu, frameID = %llu&quot;, m_parameters.webPageID, m_parameters.webFrameID);

It may be interesting to know if this is a main resource:
m_parameters.request.requester() == ResourceRequest::Requester::Main

Also, maybe this could clarify that it loads from the network, not the cache.

&gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:276
&gt; +    LOG_ALWAYS(&quot;Received page headers: pageID = %llu, frameID = %llu&quot;, m_parameters.webPageID, m_parameters.webFrameID);

Received resource response:

&gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:308
&gt; +            LOG_ALWAYS(&quot;Asking permission to continue: pageID = %llu, frameID = %llu&quot;, m_parameters.webPageID, m_parameters.webFrameID);

I don&apos;t really think we&apos;re asking permission to continue but we are waiting for a message to keep going. The reason I believe is that depending on the response, the WebContent process may decide to convert the resource load into a download (e.g. if the MIME type cannot be displayed in the view).
This should probably say &quot;Sending didReceiveResponse message to the WebContent process&quot; or similar.

&gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:310
&gt; +                LOG_ALWAYS(&quot;Permission to continue denied: pageID = %llu, frameID = %llu&quot;, m_parameters.webPageID, m_parameters.webFrameID);

It is not really that the permission was denied but rather that we failed to send the didReceiveResponse IPC message to the WebContent process.

&gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:323
&gt; +        LOG_ALWAYS(&quot;Should continue: pageID = %llu, frameID = %llu&quot;, m_parameters.webPageID, m_parameters.webFrameID);

should continue what? I think the log message is not very clear on its own. I think we want something like:
Should wait for message from WebContent process before continuing resource load? yes / no.

&gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:359
&gt; +    LOG_ALWAYS(&quot;Finished loading: pageID = %llu, frameID = %llu&quot;, m_parameters.webPageID, m_parameters.webFrameID);

Why not log finishTime since we have it?

&gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:438
&gt; +    LOG_ALWAYS(&quot;Continuing loading: pageID = %llu, frameID = %llu&quot;, m_parameters.webPageID, m_parameters.webFrameID);

This only happens in case of redirect. This should probably says something like &quot;Following redirect&quot;

&gt; Source/WebKit2/Platform/IPC/Connection.cpp:977
&gt; +void Connection::reportResourceUsage()

This is still here? Can we at least split it into a different patch as I am worried about performance implications?

&gt; Source/WebKit2/WebProcess/Network/WebLoaderStrategy.cpp:174
&gt; +    const char* url = resourceLoader-&gt;url().string().utf8().data();

Oh god, keeping a pointer to internal data of a temporary object :)
You want to use CString url = m_coreLoader-&gt;url().string().utf8();

&gt; Source/WebKit2/WebProcess/Network/WebLoaderStrategy.cpp:175
&gt; +    LOG_ALWAYS(&quot;(WebProcess) WebLoaderStrategy::scheduleLoad, url &apos;%s&apos;/%p will be scheduled with the NetworkProcess with priority %d&quot;, url, url, static_cast&lt;int&gt;(resourceLoader-&gt;request().priority()));

Why is it useful to log the URL as a pointer?

&gt; Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp:79
&gt; +    const char* url = proposedRequest.url().string().utf8().data();

Same comment as above, this is wrong.

&gt; Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp:80
&gt; +    LOG_ALWAYS(&quot;(WebProcess) WebResourceLoader::willSendRequest to &apos;%s&apos;/%p&quot;, url, url);

Why is it useful to log the URL as a pointer?

Also, why are we logging URLs on WebContent process side but not Networking side?

&gt; Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp:105
&gt; +    const char* url = m_coreLoader-&gt;url().string().utf8().data();

Same comment as above, this is wrong.

&gt; Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp:106
&gt; +    LOG_ALWAYS(&quot;(WebProcess) WebResourceLoader::didReceiveResponse for &apos;%s&apos;/%p. Status %d.&quot;, url, url, response.httpStatusCode());

Why is it useful to log the URL as a pointer?

&gt; Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp:139
&gt; +    const char* url = m_coreLoader-&gt;url().string().utf8().data();

Same comment as above, this is wrong.

&gt; Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp:140
&gt; +    LOG_ALWAYS(&quot;(WebProcess) WebResourceLoader::didReceiveData of size %d for &apos;%s&apos;/%p&quot;, static_cast&lt;int&gt;(data.size()), url, url);

Why print the pointer?

&gt; Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp:155
&gt; +    const char* url = m_coreLoader-&gt;url().string().utf8().data();

Same comment as above, this is wrong.

&gt; Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp:156
&gt; +    LOG_ALWAYS(&quot;(WebProcess) WebResourceLoader::didFinishResourceLoad for &apos;%s&apos;/%p&quot;, url, url);

Why print the pointer?

&gt; Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp:171
&gt; +    const char* url = m_coreLoader-&gt;url().string().utf8().data();

Same comment as above, this is wrong.

&gt; Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp:172
&gt; +    LOG_ALWAYS(&quot;(WebProcess) WebResourceLoader::didFailResourceLoad for &apos;%s&apos;/%p&quot;, url, url);

Why print the pointer?

&gt; Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp:188
&gt; +    const char* url = m_coreLoader-&gt;url().string().utf8().data();

Same comment as above, this is wrong.

&gt; Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp:189
&gt; +    LOG_ALWAYS(&quot;(WebProcess) WebResourceLoader::didReceiveResource for &apos;%s&apos;/%p&quot;, url, url);

Why print the pointer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169974</commentid>
    <comment_count>7</comment_count>
      <attachid>272681</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-02 15:23:02 -0800</bug_when>
    <thetext>Comment on attachment 272681
Patch

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

&gt;&gt; Source/WebKit2/WebProcess/Network/WebLoaderStrategy.cpp:174
&gt;&gt; +    const char* url = resourceLoader-&gt;url().string().utf8().data();
&gt; 
&gt; Oh god, keeping a pointer to internal data of a temporary object :)
&gt; You want to use CString url = m_coreLoader-&gt;url().string().utf8();

Also I think we can just use latin1() since these are URLs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169986</commentid>
    <comment_count>8</comment_count>
      <attachid>272681</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-02 15:46:26 -0800</bug_when>
    <thetext>Comment on attachment 272681
Patch

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

This logging should probably be disabled for private / ephemeral sessions.

&gt;&gt;&gt; Source/WebKit2/WebProcess/Network/WebLoaderStrategy.cpp:174
&gt;&gt;&gt; +    const char* url = resourceLoader-&gt;url().string().utf8().data();
&gt;&gt; 
&gt;&gt; Oh god, keeping a pointer to internal data of a temporary object :)
&gt;&gt; You want to use CString url = m_coreLoader-&gt;url().string().utf8();
&gt; 
&gt; Also I think we can just use latin1() since these are URLs.

Actually let&apos;s not log URLs at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170005</commentid>
    <comment_count>9</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-03-02 16:30:44 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 272681 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=272681&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/MemoryPressureHandler.cpp:193
&gt; &gt; +        LOG_ALWAYS(&quot;Pressure relief: %s: -dirty %ld bytes (from %lu to %lu)&quot;, m_logString, (memoryDiff * -1), m_initialMemory, currentMemory);
&gt; 
&gt; If we called WTFLogAlways() instead of LOG_ALWAYS() (or in addition to) when
&gt; s_loggingEnabled is true, then we could kill the platform-specific version.

OK.

&gt; &gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:203
&gt; &gt; +    LOG_ALWAYS(&quot;Starting resource load: pageID = %llu, frameID = %llu&quot;, m_parameters.webPageID, m_parameters.webFrameID);
&gt; 
&gt; It may be interesting to know if this is a main resource:
&gt; m_parameters.request.requester() == ResourceRequest::Requester::Main
&gt; 
&gt; Also, maybe this could clarify that it loads from the network, not the cache.

OK.

&gt; &gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:276
&gt; &gt; +    LOG_ALWAYS(&quot;Received page headers: pageID = %llu, frameID = %llu&quot;, m_parameters.webPageID, m_parameters.webFrameID);
&gt; 
&gt; Received resource response:

OK.

&gt; &gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:308
&gt; &gt; +            LOG_ALWAYS(&quot;Asking permission to continue: pageID = %llu, frameID = %llu&quot;, m_parameters.webPageID, m_parameters.webFrameID);
&gt; 
&gt; I don&apos;t really think we&apos;re asking permission to continue but we are waiting
&gt; for a message to keep going. The reason I believe is that depending on the
&gt; response, the WebContent process may decide to convert the resource load
&gt; into a download (e.g. if the MIME type cannot be displayed in the view).
&gt; This should probably say &quot;Sending didReceiveResponse message to the
&gt; WebContent process&quot; or similar.

OK.

&gt; &gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:310
&gt; &gt; +                LOG_ALWAYS(&quot;Permission to continue denied: pageID = %llu, frameID = %llu&quot;, m_parameters.webPageID, m_parameters.webFrameID);
&gt; 
&gt; It is not really that the permission was denied but rather that we failed to
&gt; send the didReceiveResponse IPC message to the WebContent process.

OK

&gt; &gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:323
&gt; &gt; +        LOG_ALWAYS(&quot;Should continue: pageID = %llu, frameID = %llu&quot;, m_parameters.webPageID, m_parameters.webFrameID);
&gt; 
&gt; should continue what? I think the log message is not very clear on its own.
&gt; I think we want something like:
&gt; Should wait for message from WebContent process before continuing resource
&gt; load? yes / no.

OK.

&gt; &gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:359
&gt; &gt; +    LOG_ALWAYS(&quot;Finished loading: pageID = %llu, frameID = %llu&quot;, m_parameters.webPageID, m_parameters.webFrameID);
&gt; 
&gt; Why not log finishTime since we have it?

OK.

&gt; &gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:438
&gt; &gt; +    LOG_ALWAYS(&quot;Continuing loading: pageID = %llu, frameID = %llu&quot;, m_parameters.webPageID, m_parameters.webFrameID);
&gt; 
&gt; This only happens in case of redirect. This should probably says something
&gt; like &quot;Following redirect&quot;

OK.

&gt; &gt; Source/WebKit2/Platform/IPC/Connection.cpp:977
&gt; &gt; +void Connection::reportResourceUsage()
&gt; 
&gt; This is still here? Can we at least split it into a different patch as I am
&gt; worried about performance implications?

OK.

&gt; &gt; Source/WebKit2/WebProcess/Network/WebLoaderStrategy.cpp:174
&gt; &gt; +    const char* url = resourceLoader-&gt;url().string().utf8().data();
&gt; 
&gt; Oh god, keeping a pointer to internal data of a temporary object :)
&gt; You want to use CString url = m_coreLoader-&gt;url().string().utf8();

OK. I had simply copied that expression from when it was part of the subsequent logging statement, and didn&apos;t realize that a temporary was being created.

&gt; &gt; Source/WebKit2/WebProcess/Network/WebLoaderStrategy.cpp:175
&gt; &gt; +    LOG_ALWAYS(&quot;(WebProcess) WebLoaderStrategy::scheduleLoad, url &apos;%s&apos;/%p will be scheduled with the NetworkProcess with priority %d&quot;, url, url, static_cast&lt;int&gt;(resourceLoader-&gt;request().priority()));
&gt; 
&gt; Why is it useful to log the URL as a pointer?

Because we don&apos;t always log the string and we need something to thread together associated logging statements. (And, as we just discussed while I was typing this, we actually won&apos;t ever be logging the strings).

&gt; Also I think we can just use latin1() since these are URLs.

I just made use of code that was previously there. I can change it to use latin1.

&gt; Actually let&apos;s not log URLs at all.

With the &quot;always on&quot; logging no longer attempting to log urls ever, the previous debug-mode logging macros will be retained. Those will log urls, and those will be changed to call latin1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171096</commentid>
    <comment_count>10</comment_count>
      <attachid>273054</attachid>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-03-04 16:17:01 -0800</bug_when>
    <thetext>Created attachment 273054
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171117</commentid>
    <comment_count>11</comment_count>
      <attachid>273054</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-04 17:08:03 -0800</bug_when>
    <thetext>Comment on attachment 273054
Patch

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

&gt; Source/WebCore/loader/FrameLoader.cpp:143
&gt; +#if LOG_ALWAYS_DISABLED

Why do we need this? LOG_ALWAYS() should already do nothing, no?

&gt; Source/WebCore/loader/FrameLoader.cpp:1093
&gt; +    FRAMELOADER_LOG_ALWAYS(&quot;Starting frame load, frame = %p, main = %d&quot;, &amp;m_frame, static_cast&lt;int&gt;(m_frame.isMainFrame()));

I don&apos;t believe you need this static_cast.

&gt; Source/WebCore/loader/FrameLoader.cpp:2274
&gt; +            FRAMELOADER_LOG_ALWAYS(&quot;Committed frame load, frame = %p, main = %d&quot;, &amp;m_frame, static_cast&lt;int&gt;(m_frame.isMainFrame()));

- I don&apos;t believe you need this static_cast.
- I would use &quot;Finished frame load&quot;
- You could also log the success state (see dl-&gt;mainDocumentError() handling below)

&gt; Source/WebCore/loader/FrameLoader.h:299
&gt; +    bool isLoggingAllowed() const;

Maybe we should rename to something less generic like isAlwaysOnLoggingAllowed() ?

&gt; Source/WebCore/platform/MemoryPressureHandler.cpp:195
&gt; +        MEMORYPRESSURE_LOG(&quot;Pressure relief: &quot; STRING_SPECIFICATION &quot;: (Unable to get dirty memory information for process)&quot;, m_logString);

We should probably use &quot;Memory pressure relief:&quot; as prefix here and below.

&gt; Source/WebCore/platform/MemoryPressureHandler.h:93
&gt;              , m_initialMemory(s_loggingEnabled ? platformMemoryUsage() : 0)

crazy thought, could we just set s_loggingEnabled to true when !LOG_ALWAYS_DISABLED and avoid all these #ifdefs?

&gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:49
&gt; +#if LOG_ALWAYS_DISABLED

Why do we need this? LOG_ALWAYS() should already do nothing, no?

&gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:209
&gt; +    NETWORKRESOURCELOADER_LOG_ALWAYS(&quot;Starting network resource load: pageID = %llu, frameID = %llu, isMainResource = %d&quot;, m_parameters.webPageID, m_parameters.webFrameID, isMainResource());

Since there can be several loads in a single frame, pageID/frameID does not uniquely identify a resource. You may want to add |this| pointer in there to identify specific resources.

You don&apos;t need to do this in this patch but we may want to log if it is a XHR as well (requester == XHR). Also maybe the request method (GET, POST, ...).

Also, it is interesting to know if the load is synchronous.

&gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:282
&gt; +    NETWORKRESOURCELOADER_LOG_ALWAYS(&quot;Received network resource response: pageID = %llu, frameID = %llu, isMainResource = %d&quot;, m_parameters.webPageID, m_parameters.webFrameID, isMainResource());

printing response.httpStatusCode() may be nice.

&gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:316
&gt; +                NETWORKRESOURCELOADER_LOG_ALWAYS(&quot;Failed to send the didReceiveResponse IPC message to the WebContent process: pageID = %llu, frameID = %llu, isMainResource = %d&quot;, m_parameters.webPageID, m_parameters.webFrameID, isMainResource());

Should this be a LOG ERROR?

&gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:365
&gt; +    NETWORKRESOURCELOADER_LOG_ALWAYS(&quot;Finished loading network resource: pageID = %llu, frameID = %llu, isMainResource = %d, finishTime = %f&quot;, m_parameters.webPageID, m_parameters.webFrameID, isMainResource(), finishTime);

I think we want the unit for the finishTime.

&gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:398
&gt; +    NETWORKRESOURCELOADER_LOG_ALWAYS(&quot;Failed loading network resource: pageID = %llu, frameID = %llu, isMainResource = %d&quot;, m_parameters.webPageID, m_parameters.webFrameID, isMainResource());

May be nice to log if it is a cancellation, or a timeout. Those are common errors.

&gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.h:101
&gt; +    bool isMainResource() const { return m_parameters.request.requester() == WebCore::ResourceRequest::Requester::Main; }

Adding this utility function is nice but then you should update NetworkResourceLoader.cpp to use it in existing code as well.

&gt; Source/WebKit2/Platform/IPC/Connection.cpp:37
&gt; +#if LOG_ALWAYS_DISABLED

Why do we need this? LOG_ALWAYS() should already do nothing, no?

&gt; Source/WebKit2/Platform/IPC/Connection.cpp:584
&gt; +            CONNECTION_LOG_ALWAYS(&quot;Connection::waitForSyncReply: Connection no longer valid, id=%llu&quot;, syncRequestID);

Should this be a Log error?

&gt; Source/WebKit2/Platform/IPC/Connection.cpp:595
&gt; +    CONNECTION_LOG_ALWAYS(&quot;Connection::waitForSyncReply: Timed-out while waiting for reply, id=%llu&quot;, syncRequestID);

Should this be a LOG error?

&gt; Source/WebKit2/Shared/ChildProcess.cpp:32
&gt; +#if LOG_ALWAYS_DISABLED

Why do we need this? LOG_ALWAYS() should already do nothing, no?

&gt; Source/WebKit2/Shared/ChildProcess.cpp:62
&gt; +        CHILDPROCESS_LOG_ALWAYS(&quot;Exiting process early due to unacknowledged closed-connection&quot;);

Should this be a LOG Error?

&gt; Source/WebKit2/WebProcess/Network/WebLoaderStrategy.cpp:60
&gt; +#if LOG_ALWAYS_DISABLED

Why do we need this? LOG_ALWAYS() should already do nothing, no?

&gt; Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp:85
&gt; +    WEBRESOURCELOADER_LOG_ALWAYS(&quot;(WebProcess) WebResourceLoader::willSendRequest to %p&quot;, &amp;proposedRequest.url());

Would print |this| instead of the address of the URL.

Why the (WebProcess) prefix? Doesn&apos;t LOG_ALWAYS() already give us the info? If it does not, then other logging code should probably add such prefix too.

&gt; Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp:109
&gt; +    WEBRESOURCELOADER_LOG_ALWAYS(&quot;(WebProcess) WebResourceLoader::didReceiveResponse for %p. Status %d.&quot;, &amp;m_coreLoader-&gt;url(), response.httpStatusCode());

Would print |this| instead of the address of the URL.

&gt; Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp:140
&gt; +    LOG(Network, &quot;(WebProcess) WebResourceLoader::didReceiveData of size %i for &apos;%s&apos;&quot;, (int)data.size(), m_coreLoader-&gt;url().string().latin1().data());

Please get rid of the C cast here too.

&gt; Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp:141
&gt; +    WEBRESOURCELOADER_LOG_ALWAYS(&quot;(WebProcess) WebResourceLoader::didReceiveData of size %d for %p&quot;, static_cast&lt;int&gt;(data.size()), &amp;m_coreLoader-&gt;url());

Would print |this| instead of the address of the URL.

&gt; Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp:155
&gt; +    WEBRESOURCELOADER_LOG_ALWAYS(&quot;(WebProcess) WebResourceLoader::didFinishResourceLoad for %p&quot;, &amp;m_coreLoader-&gt;url());

Would print |this| instead of the address of the URL.

&gt; Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp:169
&gt; +    WEBRESOURCELOADER_LOG_ALWAYS(&quot;(WebProcess) WebResourceLoader::didFailResourceLoad for %p&quot;, &amp;m_coreLoader-&gt;url());

Would print |this| instead of the address of the URL.

&gt; Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp:184
&gt; +    WEBRESOURCELOADER_LOG_ALWAYS(&quot;(WebProcess) WebResourceLoader::didReceiveResource for %p&quot;, &amp;m_coreLoader-&gt;url());

Would print |this| instead of the address of the URL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171272</commentid>
    <comment_count>12</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-03-05 14:38:54 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; &gt; Source/WebCore/loader/FrameLoader.cpp:143
&gt; &gt; +#if LOG_ALWAYS_DISABLED
&gt; 
&gt; Why do we need this? LOG_ALWAYS() should already do nothing, no?

I had in mind the possibility that these macros might more complex than simple wrappers around LOG_ALWAYS. In that happened, we&apos;d want local control over whether that complexity got included at the point where the macro was invoked or not. But since the macros are currently simple, I&apos;ll go ahead and remove the trappings around them.

&gt; &gt; Source/WebCore/loader/FrameLoader.cpp:1093
&gt; &gt; +    FRAMELOADER_LOG_ALWAYS(&quot;Starting frame load, frame = %p, main = %d&quot;, &amp;m_frame, static_cast&lt;int&gt;(m_frame.isMainFrame()));
&gt; 
&gt; I don&apos;t believe you need this static_cast.

Yeah, I only recently satisfied myself on that. Even though I know from past experience that bools are promoted to ints in this context, I&apos;ve never trusted that to happen. With all the problems that occur with mismatching formatting specifications with the corresponding values, I&apos;ve gotten into the habit of explicitly casting those values. However, with compiler support of checking those values, I&apos;m slowly &quot;letting go&quot; and letting the compiler help me there. I&apos;ll remove the static_casts.

&gt; &gt; Source/WebCore/loader/FrameLoader.cpp:2274
&gt; &gt; +            FRAMELOADER_LOG_ALWAYS(&quot;Committed frame load, frame = %p, main = %d&quot;, &amp;m_frame, static_cast&lt;int&gt;(m_frame.isMainFrame()));
&gt; 
&gt; - I don&apos;t believe you need this static_cast.
&gt; - I would use &quot;Finished frame load&quot;
&gt; - You could also log the success state (see dl-&gt;mainDocumentError() handling
&gt; below)

1 &amp; 2) OK
3) I assumed that the logging of that error would occur elsewhere, either at the point where it happened or at a top level where it&apos;s ultimate handled. Should I confirm that rather than assuming?

&gt; &gt; Source/WebCore/loader/FrameLoader.h:299
&gt; &gt; +    bool isLoggingAllowed() const;
&gt; 
&gt; Maybe we should rename to something less generic like
&gt; isAlwaysOnLoggingAllowed() ?

I don&apos;t have a problem with that.

&gt; &gt; Source/WebCore/platform/MemoryPressureHandler.cpp:195
&gt; &gt; +        MEMORYPRESSURE_LOG(&quot;Pressure relief: &quot; STRING_SPECIFICATION &quot;: (Unable to get dirty memory information for process)&quot;, m_logString);
&gt; 
&gt; We should probably use &quot;Memory pressure relief:&quot; as prefix here and below.

OK.

&gt; &gt; Source/WebCore/platform/MemoryPressureHandler.h:93
&gt; &gt;              , m_initialMemory(s_loggingEnabled ? platformMemoryUsage() : 0)
&gt; 
&gt; crazy thought, could we just set s_loggingEnabled to true when
&gt; !LOG_ALWAYS_DISABLED and avoid all these #ifdefs?

It&apos;s so crazy that it just might work. But it doesn&apos;t. As you and I subsequently discussed offline, setting s_loggingEnabled to true doesn&apos;t work. Something comes along and sets it to False. You thought this might have something to do with a particular iOS Debug setting, but I was noticing this happen in my OS X testing, too. So I&apos;m not sure why it&apos;s getting set to False, but it is. You and I then discussed perhaps adding some code to permanently pin it to True in ! LOG_ALWAYS_DISABLED mode, but at that point we&apos;re just re-introducing the #ifdefs we were trying to avoid.

&gt; &gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:209
&gt; &gt; +    NETWORKRESOURCELOADER_LOG_ALWAYS(&quot;Starting network resource load: pageID = %llu, frameID = %llu, isMainResource = %d&quot;, m_parameters.webPageID, m_parameters.webFrameID, isMainResource());
&gt; 
&gt; Since there can be several loads in a single frame, pageID/frameID does not
&gt; uniquely identify a resource. You may want to add |this| pointer in there to
&gt; identify specific resources.

OK. 

&gt; Also, it is interesting to know if the load is synchronous.

OK. 

&gt; &gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:282
&gt; &gt; +    NETWORKRESOURCELOADER_LOG_ALWAYS(&quot;Received network resource response: pageID = %llu, frameID = %llu, isMainResource = %d&quot;, m_parameters.webPageID, m_parameters.webFrameID, isMainResource());
&gt; 
&gt; printing response.httpStatusCode() may be nice.

Similar to mainDocumentError() above. Should I not assume that this is already logged or handled in some other way? If not, then perhaps we should create a new task that examines many aspects of WebKit and comprehensively handles the logging of errors.

&gt; &gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:316
&gt; &gt; +                NETWORKRESOURCELOADER_LOG_ALWAYS(&quot;Failed to send the didReceiveResponse IPC message to the WebContent process: pageID = %llu, frameID = %llu, isMainResource = %d&quot;, m_parameters.webPageID, m_parameters.webFrameID, isMainResource());
&gt; 
&gt; Should this be a LOG ERROR?

Good idea.

&gt; &gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:365
&gt; &gt; +    NETWORKRESOURCELOADER_LOG_ALWAYS(&quot;Finished loading network resource: pageID = %llu, frameID = %llu, isMainResource = %d, finishTime = %f&quot;, m_parameters.webPageID, m_parameters.webFrameID, isMainResource(), finishTime);
&gt; 
&gt; I think we want the unit for the finishTime.

What is it? This function is just passed a double. Should it be changed to some std::chrono type? I was told that that was our current standard.

Also, how is the value of finishTime different from the time of the logging statement?

&gt; &gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:398
&gt; &gt; +    NETWORKRESOURCELOADER_LOG_ALWAYS(&quot;Failed loading network resource: pageID = %llu, frameID = %llu, isMainResource = %d&quot;, m_parameters.webPageID, m_parameters.webFrameID, isMainResource());
&gt; 
&gt; May be nice to log if it is a cancellation, or a timeout. Those are common
&gt; errors.

Same comment as above regarding the logging of errors. Great idea if it&apos;s not already being done, but might be nice to take a comprehensive approach rather than as an &quot;as we notice the need&quot; approach.

&gt; &gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.h:101
&gt; &gt; +    bool isMainResource() const { return m_parameters.request.requester() == WebCore::ResourceRequest::Requester::Main; }
&gt; 
&gt; Adding this utility function is nice but then you should update
&gt; NetworkResourceLoader.cpp to use it in existing code as well.

OK. I hadn&apos;t noticed that it was used elsewhere.

&gt; &gt; Source/WebKit2/Platform/IPC/Connection.cpp:584
&gt; &gt; +            CONNECTION_LOG_ALWAYS(&quot;Connection::waitForSyncReply: Connection no longer valid, id=%llu&quot;, syncRequestID);
&gt; 
&gt; Should this be a Log error?

I think they were, but that got lost in the latest refactoring. Thanks for catching that.

&gt; &gt; Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp:85
&gt; &gt; +    WEBRESOURCELOADER_LOG_ALWAYS(&quot;(WebProcess) WebResourceLoader::willSendRequest to %p&quot;, &amp;proposedRequest.url());
&gt; 
&gt; Would print |this| instead of the address of the URL.

I thought about that, but wasn&apos;t sure if it was the right move. Thanks for letting me know it&apos;s OK.

&gt; Why the (WebProcess) prefix? Doesn&apos;t LOG_ALWAYS() already give us the info?
&gt; If it does not, then other logging code should probably add such prefix too.

It&apos;s just left-over from the nearby logging code. It can be removed since the logging process is recorded. Also, after looking at the resulting logging, the &quot;(WebProcess)&quot; text kinda sticks out like a core thumb and should be removed for that reason alone.

&gt; &gt; Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp:140
&gt; &gt; +    LOG(Network, &quot;(WebProcess) WebResourceLoader::didReceiveData of size %i for &apos;%s&apos;&quot;, (int)data.size(), m_coreLoader-&gt;url().string().latin1().data());
&gt; 
&gt; Please get rid of the C cast here too.

I&apos;ll get rid of this and the subsequent static_cast and use the right formatting specifiers for the actual type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171700</commentid>
    <comment_count>13</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-03-07 12:08:35 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; 3) I assumed that the logging of that error would occur elsewhere, either at
&gt; the point where it happened or at a top level where it&apos;s ultimate handled.
&gt; Should I confirm that rather than assuming?

I&apos;ll go ahead and add logging of these error codes, but I&apos;m also adding a new Bugzilla task to take a look at this comprehensively.

&gt; &gt; &gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:365
&gt; &gt; &gt; +    NETWORKRESOURCELOADER_LOG_ALWAYS(&quot;Finished loading network resource: pageID = %llu, frameID = %llu, isMainResource = %d, finishTime = %f&quot;, m_parameters.webPageID, m_parameters.webFrameID, isMainResource(), finishTime);
&gt; &gt; 
&gt; &gt; I think we want the unit for the finishTime.
&gt; 
&gt; What is it? This function is just passed a double. Should it be changed to
&gt; some std::chrono type? I was told that that was our current standard.

didFinishLoading seems to be called with one of three inputs:

* Result of currentTime, which is basically gettimeofday(), or seconds in the UNIX epoch [2 instances]
* Result of monotonicallyIncreasingTime, which is a wrapper around currentTime [1 instance]
* Zero [15 instances]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171753</commentid>
    <comment_count>14</comment_count>
      <attachid>273211</attachid>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-03-07 14:27:05 -0800</bug_when>
    <thetext>Created attachment 273211
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171779</commentid>
    <comment_count>15</comment_count>
      <attachid>273211</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-07 14:59:05 -0800</bug_when>
    <thetext>Comment on attachment 273211
Patch

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

&gt; Source/WebKit2/ChangeLog:10
&gt; +        download activity.

I think this should be &quot;resource load&quot; rather than &quot;resource download&quot;

&gt; Source/WebCore/loader/FrameLoader.cpp:2282
&gt; +            FRAMELOADER_LOG_ALWAYS(&quot;Finished frame load, frame = %p, main = %d, isTimeout = %d, isCancellation = %d, errorCode = %d&quot;, &amp;m_frame, m_frame.isMainFrame(), error.isTimeout(), error.isCancellation(), error.errorCode());

I would move the logging below with the error.isNull() check and split it in 2 log lines (1 for the error case, and 1 for the regular case) for clarity.
e.g. &quot;Load finished without error&quot; / &quot;Load finished with error&quot; + error logging

&gt; Source/WebKit2/WebProcess/Network/WebLoaderStrategy.cpp:203
&gt; +    WEBLOADERSTRATEGY_LOG_ALWAYS(&quot;WebLoaderStrategy::scheduleLoad, pageID = %llu, frameID = %llu will be scheduled with the NetworkProcess with priority %d&quot;, loadParameters.webPageID, loadParameters.webFrameID, static_cast&lt;int&gt;(resourceLoader-&gt;request().priority()));

We have no way to map this to a specific WebResourceLoader logging happening later on. I think we should move this below and log the WebResourceLoader pointer to allow mapping.

&gt; Source/WebKit2/WebProcess/Network/WebLoaderStrategy.cpp:207
&gt;          // This load will never succeed so we will schedule it to fail asynchronously.

We should probably log this error.

&gt; Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp:81
&gt; +    WEBRESOURCELOADER_LOG_ALWAYS(&quot;WebResourceLoader::willSendRequest to %p&quot;, this);

This message does not make much sense: &quot;to %p&quot;. I think we should have something like: &quot;WebResourceLoader = %p&quot;. Same comment for other logging in this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171851</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-07 17:07:32 -0800</bug_when>
    <thetext>Note that your patch is not building on the EFL port as well:
https://webkit-queues.webkit.org/results/938282</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171902</commentid>
    <comment_count>17</comment_count>
      <attachid>273261</attachid>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-03-07 19:38:29 -0800</bug_when>
    <thetext>Created attachment 273261
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171906</commentid>
    <comment_count>18</comment_count>
      <attachid>273261</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-03-07 19:51:05 -0800</bug_when>
    <thetext>Comment on attachment 273261
Patch

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

r=me with changes.

&gt; Source/WebCore/loader/FrameLoader.cpp:2284
&gt; +                FRAMELOADER_LOG_ALWAYS(&quot;Finished frame load without error, frame = %p, main = %d&quot;, &amp;m_frame, m_frame.isMainFrame());

This should go in the else case :)

&gt; Source/WebCore/loader/FrameLoader.cpp:2288
&gt; +                FRAMELOADER_LOG_ALWAYS(&quot;Finished frame load with error, frame = %p, main = %d, isTimeout = %d, isCancellation = %d, errorCode = %d&quot;, &amp;m_frame, m_frame.isMainFrame(), error.isTimeout(), error.isCancellation(), error.errorCode());

This should go in the if case.

&gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:325
&gt; +    if (shouldContinueDidReceiveResponse)

Since you have an if / else now, I would break the ternary below and add the return statements to your if/else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171910</commentid>
    <comment_count>19</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-03-07 20:30:54 -0800</bug_when>
    <thetext>&gt; Note that your patch is not building on the EFL port as well:

Crud.

(In reply to comment #18)
&gt; Comment on attachment 273261 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=273261&amp;action=review
&gt; 
&gt; r=me with changes.
&gt; 
&gt; &gt; Source/WebCore/loader/FrameLoader.cpp:2284
&gt; &gt; +                FRAMELOADER_LOG_ALWAYS(&quot;Finished frame load without error, frame = %p, main = %d&quot;, &amp;m_frame, m_frame.isMainFrame());
&gt; 
&gt; This should go in the else case :)
&gt; 
&gt; &gt; Source/WebCore/loader/FrameLoader.cpp:2288
&gt; &gt; +                FRAMELOADER_LOG_ALWAYS(&quot;Finished frame load with error, frame = %p, main = %d, isTimeout = %d, isCancellation = %d, errorCode = %d&quot;, &amp;m_frame, m_frame.isMainFrame(), error.isTimeout(), error.isCancellation(), error.errorCode());
&gt; 
&gt; This should go in the if case.
&gt; 
&gt; &gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:325
&gt; &gt; +    if (shouldContinueDidReceiveResponse)
&gt; 
&gt; Since you have an if / else now, I would break the ternary below and add the
&gt; return statements to your if/else.

Wilco.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171929</commentid>
    <comment_count>20</comment_count>
      <attachid>273268</attachid>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-03-07 21:46:04 -0800</bug_when>
    <thetext>Created attachment 273268
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171948</commentid>
    <comment_count>21</comment_count>
      <attachid>273268</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-07 22:44:49 -0800</bug_when>
    <thetext>Comment on attachment 273268
Patch

Clearing flags on attachment: 273268

Committed r197728: &lt;http://trac.webkit.org/changeset/197728&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171949</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-07 22:44:55 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171981</commentid>
    <comment_count>23</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-03-08 01:00:14 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; Comment on attachment 273268 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 273268
&gt; 
&gt; Committed r197728: &lt;http://trac.webkit.org/changeset/197728&gt;

It broke the build on many platforms:
- EFL Linux 64-bit Release WK2
   https://build.webkit.org/builders/EFL%20Linux%2064-bit%20Release%20WK2/builds/26929
- WinCairo 64-Bit Release
  https://build.webkit.org/builders/WinCairo%2064-Bit%20Release/builds/54692
- Apple Win Release (Build)
  https://build.webkit.org/builders/Apple%20Win%20Release%20%28Build%29/builds/76194

Please fix the builds ASAP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172001</commentid>
    <comment_count>24</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-03-08 03:29:59 -0800</bug_when>
    <thetext>Linux build fixes landed in
- http://trac.webkit.org/changeset/197750
- http://trac.webkit.org/changeset/197753

The Windows build is still broken. Please don&apos;t land 
patches with red EWS bubbles in the future! Thanks.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272379</attachid>
            <date>2016-02-26 15:53:53 -0800</date>
            <delta_ts>2016-03-02 13:33:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154499-20160226155337.patch</filename>
            <type>text/plain</type>
            <size>19038</size>
            <attacher name="Keith Rollin">krollin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3MTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTg2YmRhYTQxNzc4OGYz
Y2VmMjhmM2U2ZTE2ZmRlYjdlMWI1ODQzMy4uM2JjMDc4M2EyN2U1ZDFiMzAyYzEzOGZhY2RmYmFl
ZGE0NjU4MjhjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE2LTAyLTIzICBLZWl0
aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KKworICAgICAgICBFbmhhbmNlIGxvZ2dpbmc6
IFVzZSAiYWx3YXlzIG9uIiBtYWNyb3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1NDQ5OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQ3NTc3MzA+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSB1
c2Ugb2YgbmV3IGxvZ2dpbmcgbWFjcm9zLgorCisgICAgICAgIC0gUHJvZ3Jlc3NUcmFja2VyLCBS
ZXNvdXJjZUhhbmRsZSwgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZSwKKyAgICAgICAg
ICBhbmQgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlIHVwZGF0
ZWQgdG8gcmVwb3J0CisgICAgICAgICAgd2hlbiBuZXR3b3JrIHJlcXVlc3RzIGFyZSBtYWRlIGFu
ZCByZWNlaXZlZCwgaGVscGluZyB1cyBkZXRlcm1pbmUgaWYKKyAgICAgICAgICB3ZSdyZSBzbG93
IG9yIHRoZSBuZXR3b3JrIGlzIHNsb3cuCisgICAgICAgIC0gTWVtb3J5UHJlc3N1cmVIYW5kbGVy
IHVwZGF0ZWQgdG8gcmVwb3J0IHdoZW4gaXQncyBjYWxsZWQgYW5kIHRoZQorICAgICAgICAgIHJl
c3VsdGluZyBtZW1vcnkgcmVzb3VyY2UgY2hhbmdlLiBUaGlzIHNob3VsZCBoZWxwIGFzc3VyZSB1
cyB0aGF0CisgICAgICAgICAgdGhlIG1lbW9yeSBwcmVzc3VyZSBoYW5kbGVyIGlzIGJlaW5nIGVm
ZmVjdGl2ZS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5vIG5ldyBiYXNpYyBmdW5jdGlvbmFs
aXR5IGhhcyBiZWVuIGFkZGVkLiBPbmx5IG5ldworICAgICAgICBsb2dnaW5nIGhhcyBiZWVuIGFk
ZGVkIGluIHJlbGVhc2UgbW9kZSBvciBoYXMgYmVlbiBlbmFibGVkIHRvIGV4ZWN1dGUKKyAgICAg
ICAgaW4gcmVsZWFzZSBtb2RlIGFzIHdlbGwgYXMgZGVidWcgbW9kZS4KKworICAgICAgICAqIGxv
YWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFj
a2VyOjpwcm9ncmVzc1N0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2Vy
Ojpwcm9ncmVzc0NvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmVzc1RyYWNrZXI6
OmZpbmFsUHJvZ3Jlc3NDb21wbGV0ZSk6CisgICAgICAgICogcGxhdGZvcm0vTWVtb3J5UHJlc3N1
cmVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6
UmVsaWVmTG9nZ2VyOjpkaWFnbm9zdGljTG9nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9NZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxl
cjo6UmVsaWVmTG9nZ2VyOjpSZWxpZWZMb2dnZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5
UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6On5SZWxpZWZMb2dnZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGU6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjpjYW5jZWwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVS
ZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW06CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhh
bmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6XSk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1
ZURlbGVnYXRlLm1tOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlv
blF1ZXVlRGVsZWdhdGUgY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6XSk6CisKIDIwMTYtMDIt
MjUgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIERvbid0IGNs
ZWFyIHRoZSB3ZWFrIEpTU3RyaW5nIGNhY2hlIG9uIG1lbW9yeSBwcmVzc3VyZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpp
bmRleCBmMjZmYjhkZTRjOWYzMzdlNjZmNWExYmM0MDU1YmIwMmRlMDBhM2NiLi44MzkzZjlmNDQ3
Nzk1ZWFiZWNkNjdmNjFmZjFkZWNhYTQ0MjlmN2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEg
QEAKKzIwMTYtMDItMjMgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgorCisgICAg
ICAgIEVuaGFuY2UgbG9nZ2luZzogVXNlICJhbHdheXMgb24iIG1hY3JvcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0NDk5CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8yNDc1NzczMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBNYWtlIHVzZSBvZiBuZXcgbG9nZ2luZyBtYWNyb3MuCisKKyAgICAgICAg
LSBOZXR3b3JrRGF0YVRhc2sgdXBkYXRlZCB0byByZXBvcnQgd2hlbiBuZXR3b3JrIHJlcXVlc3Rz
IGFyZSBtYWRlIGFuZAorICAgICAgICAgIHJlY2VpdmVkLCBoZWxwaW5nIHVzIGRldGVybWluZSBp
ZiB3ZSdyZSBzbG93IG9yIHRoZSBuZXR3b3JrIGlzIHNsb3cuCisgICAgICAgIC0gQ29ubmVjdGlv
biB1cGRhdGVkIHRvIGxvZyByZXNvdXJjZSB1c2FnZSB3aGVuZXZlciBuZXcgbWVzc2FnZXMgYXJl
CisgICAgICAgICAgcmVjZWl2ZWQuIFRoaXMgc2hvdWxkIHByb3ZpZGUgYSBuaWNlIGJhbGFuY2Ug
b2YgbG9nZ2luZyB0aGF0IHdpbGwKKyAgICAgICAgICBjYXRjaCByZXNvdXJjZSB1c2FnZSBpbmNy
ZWFzZXMgYXQgdGhlIHBvaW50IHRoZXkgb2NjdXIsIHdoaWxlIGF0IHRoZQorICAgICAgICAgIHNh
bWUgdGltZSBub3QgcHJvdmlkaW5nIHNvIG11Y2ggbG9nZ2luZyB0aGF0IHdlIGtpbGwgYW4gaVBo
b25lJ3MKKyAgICAgICAgICBiYXR0ZXJ5LgorICAgICAgICAtIENvbm5lY3Rpb24gdXBkYXRlZCB0
byByZXBvcnQgSVBDIGVycm9ycywgaGVscGluZyB1cyBpZGVudGlmeSB3aGVuCisgICAgICAgICAg
bWVzc2FnaW5nIGJldHdlZW4gcHJvY2Vzc2VzIGJyZWFrcyBkb3duLgorICAgICAgICAtIENoaWxk
UHJvY2VzcyB1cGRhdGVkIHRvIGxvZyBpZiBpdCBpcyB0ZXJtaW5hdGluZyBlYXJseS4gU29tZQor
ICAgICAgICAgIHN5c2RpYWdub3NlIGxvZ2dpbmcgZnJvbSBjdXN0b21lcnMgaW5kaWNhdGUgdGhh
dCB0aGlzIGlzIGhhcHBlbmluZworICAgICAgICAgIGluIHRoZSB3aWxkLgorCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0RhdGFUYXNrOjpyZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OnN1
c3BlbmQpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAg
KElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJNZXNzYWdl
KToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseSk6CisgICAgICAg
IChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpD
b25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpy
ZXBvcnRSZXNvdXJjZVVzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5o
OgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVs
eSk6CisgICAgICAgICogU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OmRpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlKToKKwogMjAxNi0wMi0yNSAgQWRhIENoYW4g
IDxhZGFjaGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBIb29rIHVwIGZ1bGxzY3JlZW5NYXlSZXR1
cm5Ub0lubGluZSgpIGluIFdLUGFnZVVJQ2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9n
cmVzc1RyYWNrZXIuY3BwCmluZGV4IGQ1NmNhMDVkYjk5MGIzMGE2YjA3ZDEyZmIyYzA5ZTk5NmI3
OTcyMGYuLjkxMDhmNTY5MzIxOGU5YjM3ZGY0MDk2ZWU0MTY1NmYyMDhmNTFmZmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAg
dm9pZCBQcm9ncmVzc1RyYWNrZXI6OnJlc2V0KCkKIAogdm9pZCBQcm9ncmVzc1RyYWNrZXI6OnBy
b2dyZXNzU3RhcnRlZChGcmFtZSYgZnJhbWUpCiB7Ci0gICAgTE9HKFByb2dyZXNzLCAiUHJvZ3Jl
c3Mgc3RhcnRlZCAoJXApIC0gZnJhbWUgJXAoXCIlc1wiKSwgdmFsdWUgJWYsIHRyYWNrZWQgZnJh
bWVzICVkLCBvcmlnaW5hdGluZyBmcmFtZSAlcCIsIHRoaXMsICZmcmFtZSwgZnJhbWUudHJlZSgp
LnVuaXF1ZU5hbWUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtX3Byb2dyZXNzVmFsdWUsIG1f
bnVtUHJvZ3Jlc3NUcmFja2VkRnJhbWVzLCBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZS5nZXQo
KSk7CisgICAgTE9HX0FMV0FZUygiUHJvZ3Jlc3Mgc3RhcnRlZCAoJXApIC0gZnJhbWUgJXAoXCIl
c1wiKSwgbWFpbiAlZCwgdmFsdWUgJWYsIHRyYWNrZWQgZnJhbWVzICVkLCBvcmlnaW5hdGluZyBm
cmFtZSAlcCIsIHRoaXMsICZmcmFtZSwgZnJhbWUudHJlZSgpLnVuaXF1ZU5hbWUoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpLCBmcmFtZS5pc01haW5GcmFtZSgpLCBtX3Byb2dyZXNzVmFsdWUsIG1f
bnVtUHJvZ3Jlc3NUcmFja2VkRnJhbWVzLCBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZS5nZXQo
KSk7CiAKICAgICBtX2NsaWVudC53aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MoKTsKICAgICAK
QEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFByb2dyZXNzVHJhY2tlcjo6cHJvZ3Jlc3NTdGFydGVk
KEZyYW1lJiBmcmFtZSkKIAogdm9pZCBQcm9ncmVzc1RyYWNrZXI6OnByb2dyZXNzQ29tcGxldGVk
KEZyYW1lJiBmcmFtZSkKIHsKLSAgICBMT0coUHJvZ3Jlc3MsICJQcm9ncmVzcyBjb21wbGV0ZWQg
KCVwKSAtIGZyYW1lICVwKFwiJXNcIiksIHZhbHVlICVmLCB0cmFja2VkIGZyYW1lcyAlZCwgb3Jp
Z2luYXRpbmcgZnJhbWUgJXAiLCB0aGlzLCAmZnJhbWUsIGZyYW1lLnRyZWUoKS51bmlxdWVOYW1l
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgbV9wcm9ncmVzc1ZhbHVlLCBtX251bVByb2dyZXNz
VHJhY2tlZEZyYW1lcywgbV9vcmlnaW5hdGluZ1Byb2dyZXNzRnJhbWUuZ2V0KCkpOworICAgIExP
R19BTFdBWVMoIlByb2dyZXNzIGNvbXBsZXRlZCAoJXApIC0gZnJhbWUgJXAoXCIlc1wiKSwgbWFp
biAlZCwgdmFsdWUgJWYsIHRyYWNrZWQgZnJhbWVzICVkLCBvcmlnaW5hdGluZyBmcmFtZSAlcCIs
IHRoaXMsICZmcmFtZSwgZnJhbWUudHJlZSgpLnVuaXF1ZU5hbWUoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCBmcmFtZS5pc01haW5GcmFtZSgpLCBtX3Byb2dyZXNzVmFsdWUsIG1fbnVtUHJvZ3Jl
c3NUcmFja2VkRnJhbWVzLCBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZS5nZXQoKSk7CiAgICAg
CiAgICAgaWYgKG1fbnVtUHJvZ3Jlc3NUcmFja2VkRnJhbWVzIDw9IDApCiAgICAgICAgIHJldHVy
bjsKQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIFByb2dyZXNzVHJhY2tlcjo6cHJvZ3Jlc3NDb21w
bGV0ZWQoRnJhbWUmIGZyYW1lKQogCiB2b2lkIFByb2dyZXNzVHJhY2tlcjo6ZmluYWxQcm9ncmVz
c0NvbXBsZXRlKCkKIHsKLSAgICBMT0coUHJvZ3Jlc3MsICJGaW5hbCBwcm9ncmVzcyBjb21wbGV0
ZSAoJXApIiwgdGhpcyk7CisgICAgTE9HX0FMV0FZUygiRmluYWwgcHJvZ3Jlc3MgY29tcGxldGUg
KCVwKSIsIHRoaXMpOwogICAgIAogICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBtX29yaWdpbmF0
aW5nUHJvZ3Jlc3NGcmFtZS5yZWxlYXNlKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAppbmRleCA2NjAxOTQyMGIyMTJlMzc2
YTUzZDg4NWY3OTc4NzkyMWZkNmI1Nzc4Li5mZDZmYWY5Njk2MmM3ZjRmNzAyOTgxMWEwMWM3NjA1
Mzc3YThhN2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVz
c3VyZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNz
dXJlSGFuZGxlci5jcHAKQEAgLTE4MCw2ICsxODAsMzQgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhh
bmRsZXI6OnJlbGVhc2VNZW1vcnkoQ3JpdGljYWwgY3JpdGljYWwsIFN5bmNocm9ub3VzIHN5bmNo
cm8KICAgICB9CiB9CiAKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6
OmRpYWdub3N0aWNMb2coKQoreworICAgIHNpemVfdCBjdXJyZW50TWVtb3J5ID0gcGxhdGZvcm1N
ZW1vcnlVc2FnZSgpOworICAgIGlmIChjdXJyZW50TWVtb3J5ID09IHN0YXRpY19jYXN0PHNpemVf
dD4oLTEpIHx8IG1faW5pdGlhbE1lbW9yeSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKSkgewor
ICAgICAgICBMT0dfQUxXQVlTKCJQcmVzc3VyZSByZWxpZWY6ICVzOiAoVW5hYmxlIHRvIGdldCBk
aXJ0eSBtZW1vcnkgaW5mb3JtYXRpb24gZm9yIHByb2Nlc3MpIiwKKyAgICAgICAgICAgIG1fbG9n
U3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNzaXplX3QgbWVtb3J5RGlm
ZiA9IGN1cnJlbnRNZW1vcnkgLSBtX2luaXRpYWxNZW1vcnk7CisgICAgaWYgKG1lbW9yeURpZmYg
PCAwKSB7CisgICAgICAgIExPR19BTFdBWVMoIlByZXNzdXJlIHJlbGllZjogJXM6IC1kaXJ0eSAl
bHUgYnl0ZXMgKGZyb20gJWx1IHRvICVsdSkiLAorICAgICAgICAgICAgbV9sb2dTdHJpbmcsCisg
ICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihtZW1vcnlEaWZmICogLTEpLAor
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obV9pbml0aWFsTWVtb3J5KSwK
KyAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGN1cnJlbnRNZW1vcnkpKTsK
KyAgICB9IGVsc2UgaWYgKG1lbW9yeURpZmYgPiAwKSB7CisgICAgICAgIExPR19BTFdBWVMoIlBy
ZXNzdXJlIHJlbGllZjogJXM6ICtkaXJ0eSAlbHUgYnl0ZXMgKGZyb20gJWx1IHRvICVsdSkiLAor
ICAgICAgICAgICAgbV9sb2dTdHJpbmcsCisgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBsb25nPihtZW1vcnlEaWZmKSwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxv
bmc+KG1faW5pdGlhbE1lbW9yeSksCisgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBs
b25nPihjdXJyZW50TWVtb3J5KSk7CisgICAgfSBlbHNlCisgICAgICAgIExPR19BTFdBWVMoIlBy
ZXNzdXJlIHJlbGllZjogJXM6ID1kaXJ0eSAoYXQgJWx1IGJ5dGVzKSIsCisgICAgICAgICAgICBt
X2xvZ1N0cmluZywKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGN1cnJl
bnRNZW1vcnkpKTsKK30KKwogI2lmICFQTEFURk9STShDT0NPQSkgJiYgIU9TKExJTlVYKSAmJiAh
UExBVEZPUk0oV0lOKQogdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Omluc3RhbGwoKSB7IH0K
IHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp1bmluc3RhbGwoKSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKaW5kZXggYmM0MTUyN2Q1
YmQwNGMxZGI5ZmVmZDIxM2QzMzhlYWRiZTczMzkwMy4uZmJlNTkwOTliMTJhZGY2NDZlYzBiYjUz
NDJmODNkMDY5MjIyY2RlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5
UHJlc3N1cmVIYW5kbGVyLmgKQEAgLTg3LDcgKzg3LDExIEBAIHB1YmxpYzoKICAgICBwdWJsaWM6
CiAgICAgICAgIGV4cGxpY2l0IFJlbGllZkxvZ2dlcihjb25zdCBjaGFyICpsb2cpCiAgICAgICAg
ICAgICA6IG1fbG9nU3RyaW5nKGxvZykKKyNpZiAhTE9HX0FMV0FZU19ESVNBQkxFRAorICAgICAg
ICAgICAgLCBtX2luaXRpYWxNZW1vcnkocGxhdGZvcm1NZW1vcnlVc2FnZSgpKQorI2Vsc2UKICAg
ICAgICAgICAgICwgbV9pbml0aWFsTWVtb3J5KHNfbG9nZ2luZ0VuYWJsZWQgPyBwbGF0Zm9ybU1l
bW9yeVVzYWdlKCkgOiAwKQorI2VuZGlmCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC05NSw2
ICs5OSw5IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAgaWYgKHNfbG9nZ2luZ0Vu
YWJsZWQpCiAgICAgICAgICAgICAgICAgcGxhdGZvcm1Mb2coKTsKKyNpZiAhTE9HX0FMV0FZU19E
SVNBQkxFRAorICAgICAgICAgICAgZGlhZ25vc3RpY0xvZygpOworI2VuZGlmCiAgICAgICAgIH0K
IAogICAgICAgICBjb25zdCBjaGFyKiBsb2dTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX2xvZ1N0
cmluZzsgfQpAQCAtMTA0LDYgKzExMSw3IEBAIHB1YmxpYzoKICAgICBwcml2YXRlOgogICAgICAg
ICBzaXplX3QgcGxhdGZvcm1NZW1vcnlVc2FnZSgpOwogICAgICAgICB2b2lkIHBsYXRmb3JtTG9n
KCk7CisgICAgICAgIHZvaWQgZGlhZ25vc3RpY0xvZygpOwogCiAgICAgICAgIGNvbnN0IGNoYXIq
IG1fbG9nU3RyaW5nOwogICAgICAgICBzaXplX3QgbV9pbml0aWFsTWVtb3J5OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1h
Yy5tbQppbmRleCA4YTc2MzNlMGYyZTk0Yjg0MDEzY2E1YTNmYTg5MWU4MmM2YTA5NmNhLi42Y2E2
MjhlNGFmNDk1ODc4NDM5OGQxMmM3M2Q4NTMxZDc0ODg2MTc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQpA
QCAtMjgzLDcgKzI4Myw3IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KCkKICAgICBlbHNl
CiAgICAgICAgIGQtPm1fc3RhcnRXaGVuU2NoZWR1bGVkID0gdHJ1ZTsKIAotICAgIExPRyhOZXR3
b3JrLCAiSGFuZGxlICVwIHN0YXJ0aW5nIGNvbm5lY3Rpb24gJXAgZm9yICVAIiwgdGhpcywgY29u
bmVjdGlvbigpLCBmaXJzdFJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9k
eSkpOworICAgIExPR19BTFdBWVMoIkhhbmRsZSAlcCBzdGFydGluZyBjb25uZWN0aW9uICVwIiwg
dGhpcywgY29ubmVjdGlvbigpKTsKICAgICAKICAgICBpZiAoZC0+bV9jb25uZWN0aW9uKSB7CiAg
ICAgICAgIGlmIChkLT5tX2RlZmVyc0xvYWRpbmcpCkBAIC0yOTksNyArMjk5LDcgQEAgYm9vbCBS
ZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQogCiB2b2lkIFJlc291cmNlSGFuZGxlOjpjYW5jZWwoKQog
ewotICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIGNhbmNlbCBjb25uZWN0aW9uICVwIiwgdGhp
cywgZC0+bV9jb25uZWN0aW9uLmdldCgpKTsKKyAgICBMT0dfQUxXQVlTKCJIYW5kbGUgJXAgY2Fu
Y2VsIGNvbm5lY3Rpb24gJXAiLCB0aGlzLCBkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkpOwogCiAgICAg
Ly8gTGVha3Mgd2VyZSBzZWVuIG9uIEhUVFAgdGVzdHMgd2l0aG91dCB0aGlzOyBjYW4gYmUgcmVt
b3ZlZCBvbmNlIDxyZGFyOi8vcHJvYmxlbS82ODg2OTM3PiBpcyBmaXhlZC4KICAgICBpZiAoZC0+
bV9jdXJyZW50TWFjQ2hhbGxlbmdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVs
ZWdhdGUubW0KaW5kZXggZGMzYmQ4YWI1ZGNhOTZlNzUzM2JiODA4NzhiMzM1Mjc0MThlNDNmYS4u
ZmZhYTJiNzRhZGU2MmRjMGMxZjdjMjQwMzUxZjQ0Yzk5MGI3ZDJiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNE
ZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCkBAIC0yNDQsNyArMjQ0LDcgQEAgLSAodm9p
ZCljb25uZWN0aW9uRGlkRmluaXNoTG9hZGluZzooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlv
bgogewogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKIAotICAgIExPRyhOZXR3b3JrLCAi
SGFuZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rpb25EaWRGaW5pc2hMb2FkaW5nOiVwIiwgbV9oYW5k
bGUsIGNvbm5lY3Rpb24pOworICAgIExPR19BTFdBWVMoIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25u
ZWN0aW9uRGlkRmluaXNoTG9hZGluZzolcCIsIG1faGFuZGxlLCBjb25uZWN0aW9uKTsKIAogICAg
IGlmICghbV9oYW5kbGUgfHwgIW1faGFuZGxlLT5jbGllbnQoKSkKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1
ZURlbGVnYXRlLm1tCmluZGV4IDM2ZDQ3MGIzOTFiNjRlZWY3ZWM5Y2RlNTJmMDAxY2U5ZWI4OTdi
MDYuLjQxNmI4NjMzMzZlZjYwM2E1MDQyZmZmNGUwOWQ1NDg5Y2QxM2JhNDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUubW0KQEAgLTI4NCw3ICsyODQsNyBAQCAtICh2b2lkKWNvbm5lY3Rpb25EaWRGaW5pc2hMb2Fk
aW5nOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uCiAgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CiAgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogCi0gICAgTE9HKE5ldHdvcmss
ICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6JXAiLCBtX2hh
bmRsZSwgY29ubmVjdGlvbik7CisgICAgTE9HX0FMV0FZUygiSGFuZGxlICVwIGRlbGVnYXRlIGNv
bm5lY3Rpb25EaWRGaW5pc2hMb2FkaW5nOiVwIiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24pOwogCiAg
ICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKICAgICAgICAg
aWYgKCFtX2hhbmRsZSB8fCAhbV9oYW5kbGUtPmNsaWVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bQppbmRleCAzNmJmYmI2NDVhNmFmZDVlYjdlMzRhNmMwODFhMDc4NjkxM2NlNjk3Li5lZWEyZjFj
ZTc2NzIwNmIzOTA4MTQzNzc0YTdjMmJmZTlmMzU4ZmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bQpAQCAtMjQxLDYgKzI0MSw3IEBAIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBOZXR3b3JrRGF0
YVRhc2s6OmN1cnJlbnRSZXF1ZXN0KCkKIAogdm9pZCBOZXR3b3JrRGF0YVRhc2s6OmNhbmNlbCgp
CiB7CisgICAgTE9HX0FMV0FZUygiQ2FuY2VsaW5nIG5ldHdvcmsgdGFzazogc2Vzc2lvbiA9ICVw
IiwgJm1fc2Vzc2lvbikKICAgICBbbV90YXNrIGNhbmNlbF07CiB9CiAKQEAgLTI0OCw2ICsyNDks
OCBAQCB2b2lkIE5ldHdvcmtEYXRhVGFzazo6cmVzdW1lKCkKIHsKICAgICBpZiAobV9zY2hlZHVs
ZWRGYWlsdXJlVHlwZSAhPSBOb0ZhaWx1cmUpCiAgICAgICAgIG1fZmFpbHVyZVRpbWVyLnN0YXJ0
T25lU2hvdCgwKTsKKworICAgIExPR19BTFdBWVMoIlN0YXJ0aW5nL3Jlc3VtaW5nIG5ldHdvcmsg
dGFzazogc2Vzc2lvbiA9ICVwIiwgJm1fc2Vzc2lvbikKICAgICBbbV90YXNrIHJlc3VtZV07CiB9
CiAKQEAgLTI1NSw2ICsyNTgsOCBAQCB2b2lkIE5ldHdvcmtEYXRhVGFzazo6c3VzcGVuZCgpCiB7
CiAgICAgaWYgKG1fZmFpbHVyZVRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fZmFpbHVyZVRp
bWVyLnN0b3AoKTsKKworICAgIExPR19BTFdBWVMoIlN1c3BlbmRpbmcgbmV0d29yayB0YXNrOiBz
ZXNzaW9uID0gJXAiLCAmbV9zZXNzaW9uKQogICAgIFttX3Rhc2sgc3VzcGVuZF07CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAppbmRleCA4MTY2YzlhMmU5
NGI4MDMyODNmM2JlNzhmMGMwYTk2YzllNWE4NGJjLi4xYmNhMjNkYmRiMTYyYWJlMTA3OGJjOWJm
ZDU0ZDAxZmFmMmQwYTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMv
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rp
b24uY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogCiAjaW5j
bHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50
VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CkBAIC0yNzMsNiArMjc0LDEwIEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVtb3ZlV29y
a1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOCiAK
IHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJNZXNzYWdl
KFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciYgd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyLCBNZXNz
YWdlRGVjb2RlciYgZGVjb2RlcikKIHsKKyNpZiAhTE9HX0FMV0FZU19ESVNBQkxFRAorICAgIHJl
cG9ydFJlc291cmNlVXNhZ2UoKTsKKyNlbmRpZgorCiAgICAgaWYgKCFkZWNvZGVyLmlzU3luY01l
c3NhZ2UoKSkgewogICAgICAgICB3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIuZGlkUmVjZWl2ZU1l
c3NhZ2UoKnRoaXMsIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CkBAIC01NzUsNiArNTgwLDgg
QEAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yU3lu
Y1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXMKICAgICAgICAgLy8gSWYgdGhhdCBoYXBwZW5zLCB3
ZSBuZWVkIHRvIHN0b3Agd2FpdGluZywgb3Igd2UnbGwgaGFuZyBzaW5jZSB3ZSB3b24ndCBnZXQK
ICAgICAgICAgLy8gYW55IG1vcmUgaW5jb21pbmcgbWVzc2FnZXMuCiAgICAgICAgIGlmICghaXNW
YWxpZCgpKSB7CisgICAgICAgICAgICBMT0dfQUxXQVlTKCJDb25uZWN0aW9uOjp3YWl0Rm9yU3lu
Y1JlcGx5OiBDb25uZWN0aW9uIG5vIGxvbmdlciB2YWxpZCwgaWQ9JWxsdSIsCisgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihzeW5jUmVxdWVzdElEKSk7CiAg
ICAgICAgICAgICBkaWRSZWNlaXZlU3luY1JlcGx5KHN5bmNTZW5kRmxhZ3MpOwogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KQEAgLTU4NSw2ICs1OTIsOCBAQCBzdGQ6OnVu
aXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+IENvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVwbHkodWlu
dDY0X3Qgc3luY1JlcXVlcwogICAgICAgICB0aW1lZE91dCA9ICFTeW5jTWVzc2FnZVN0YXRlOjpz
aW5nbGV0b24oKS53YWl0KGFic29sdXRlVGltZSk7CiAgICAgfQogCisgICAgTE9HX0FMV0FZUygi
Q29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseTogVGltZWQtb3V0IHdoaWxlIHdhaXRpbmcgZm9y
IHJlcGx5LCBpZD0lbGx1IiwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25n
PihzeW5jUmVxdWVzdElEKSk7CiAgICAgZGlkUmVjZWl2ZVN5bmNSZXBseShzeW5jU2VuZEZsYWdz
KTsKIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtODE4LDYgKzgyNywxMCBAQCB2b2lkIENvbm5l
Y3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2VzKCkKIAogdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRj
aFN5bmNNZXNzYWdlKE1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQogeworI2lmICFMT0dfQUxXQVlT
X0RJU0FCTEVECisgICAgcmVwb3J0UmVzb3VyY2VVc2FnZSgpOworI2VuZGlmCisKICAgICBBU1NF
UlQoZGVjb2Rlci5pc1N5bmNNZXNzYWdlKCkpOwogCiAgICAgdWludDY0X3Qgc3luY1JlcXVlc3RJ
RCA9IDA7CkBAIC04ODgsNiArOTAxLDEwIEBAIHZvaWQgQ29ubmVjdGlvbjo6ZW5xdWV1ZUluY29t
aW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+IGluY29taW5nCiAKIHZv
aWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKE1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQog
eworI2lmICFMT0dfQUxXQVlTX0RJU0FCTEVECisgICAgcmVwb3J0UmVzb3VyY2VVc2FnZSgpOwor
I2VuZGlmCisKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2UoKnRoaXMsIGRlY29kZXIp
OwogfQogCkBAIC05NTgsNCArOTc1LDM3IEBAIHZvaWQgQ29ubmVjdGlvbjo6d2FrZVVwUnVuTG9v
cCgpCiAgICAgUnVuTG9vcDo6bWFpbigpLndha2VVcCgpOwogfQogCisjaWYgIUxPR19BTFdBWVNf
RElTQUJMRUQKK3ZvaWQgQ29ubmVjdGlvbjo6cmVwb3J0UmVzb3VyY2VVc2FnZSgpCit7CisgICAg
Y29uc3Qgc3RkOjpjaHJvbm86OnNlY29uZHMga0ZpdmVTZWNvbmRzKDUpOworICAgIGF1dG8gY3Vy
cmVudCA9IHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpOworICAgIGF1dG8gZWxhcHNl
ZCA9IHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+
KGN1cnJlbnQgLSBtX2xhc3RSZXBvcnRUaW1lKTsKKyAgICBpZiAoZWxhcHNlZCA8IGtGaXZlU2Vj
b25kcykKKyAgICAgICAgcmV0dXJuOworICAgIG1fbGFzdFJlcG9ydFRpbWUgPSBjdXJyZW50Owor
CisgICAgc3RydWN0IHJ1c2FnZSB1c2FnZTsKKyAgICBnZXRydXNhZ2UoUlVTQUdFX1NFTEYsICZ1
c2FnZSk7CisKKyAgICBpZiAoIW1lbWNtcCgmbV91c2FnZSwgJnVzYWdlLCBzaXplb2YodXNhZ2Up
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV91c2FnZSA9IHVzYWdlOworCisgICAgZG91Ymxl
IHV0aW1lID0gdXNhZ2UucnVfdXRpbWUudHZfc2VjICsgdXNhZ2UucnVfdXRpbWUudHZfdXNlYyAv
IDEwMDAwMDAuMDsKKyAgICBkb3VibGUgc3RpbWUgPSB1c2FnZS5ydV9zdGltZS50dl9zZWMgKyB1
c2FnZS5ydV9zdGltZS50dl91c2VjIC8gMTAwMDAwMC4wOworCisgICAgTE9HX0FMV0FZUygiVXNh
Z2U6ICIKKyAgICAgICAgInV0aW1lPSVmLCAiICAgICAgICAic3RpbWU9JWYsICIgICAgICAgICJt
YXhyc3M9JWxkLCAiICAgICAgIml4cnNzPSVsZCwgIgorICAgICAgICAiaWRyc3M9JWxkLCAiICAg
ICAgICJpc3Jzcz0lbGQsICIgICAgICAgIm1pbmZsdD0lbGQsICIgICAgICAibWFqZmx0PSVsZCwg
IgorICAgICAgICAibnN3YXA9JWxkLCAiICAgICAgICJpbmJsb2NrPSVsZCwgIiAgICAgIm91Ymxv
Y2s9JWxkLCAiICAgICAibXNnc25kPSVsZCwgIgorICAgICAgICAibXNncmN2PSVsZCwgIiAgICAg
ICJuc2lnbmFscz0lbGQsICIgICAgIm52Y3N3PSVsZCwgIiAgICAgICAibml2Y3N3PSVsZCIsCisg
ICAgICAgIHV0aW1lLCAgICAgICAgICAgICAgc3RpbWUsICAgICAgICAgICAgICB1c2FnZS5ydV9t
YXhyc3MsICAgIHVzYWdlLnJ1X2l4cnNzLAorICAgICAgICB1c2FnZS5ydV9pZHJzcywgICAgIHVz
YWdlLnJ1X2lzcnNzLCAgICAgdXNhZ2UucnVfbWluZmx0LCAgICB1c2FnZS5ydV9tYWpmbHQsCisg
ICAgICAgIHVzYWdlLnJ1X25zd2FwLCAgICAgdXNhZ2UucnVfaW5ibG9jaywgICB1c2FnZS5ydV9v
dWJsb2NrLCAgIHVzYWdlLnJ1X21zZ3NuZCwKKyAgICAgICAgdXNhZ2UucnVfbXNncmN2LCAgICB1
c2FnZS5ydV9uc2lnbmFscywgIHVzYWdlLnJ1X252Y3N3LCAgICAgdXNhZ2UucnVfbml2Y3N3KTsK
K30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9J
UEMvQ29ubmVjdGlvbi5oCmluZGV4IDYyNDA1MzRhOGU5YWNmNjZkZDcwOWJlYzUwMjkxMTVmNWYx
MWFiNDYuLmU4Y2RkMzZiYzM3Y2EyN2Q3ZDU1YzM1ZDFkZjEyN2ZmZGQ4ZWNhNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMjM5LDcgKzIzOSw3IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHdpbGxTZW5kU3luY01lc3NhZ2UodW5zaWduZWQgc3luY1NlbmRG
bGFncyk7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY1JlcGx5KHVuc2lnbmVkIHN5bmNTZW5kRmxh
Z3MpOwotICAgIAorCiAgICAgQ2xpZW50KiBtX2NsaWVudDsKICAgICBib29sIG1faXNTZXJ2ZXI7
CiAgICAgc3RkOjphdG9taWM8dWludDY0X3Q+IG1fc3luY1JlcXVlc3RJRDsKQEAgLTM1NCw2ICsz
NTQsMTQgQEAgcHJpdmF0ZToKIAogICAgIE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+IG1f
eHBjQ29ubmVjdGlvbjsKICNlbmRpZgorCisjaWYgIUxPR19BTFdBWVNfRElTQUJMRUQKKyAgICB2
b2lkIHJlcG9ydFJlc291cmNlVXNhZ2UoKTsKKworICAgIHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xv
Y2s6OnRpbWVfcG9pbnQgbV9sYXN0UmVwb3J0VGltZTsKKyAgICBzdHJ1Y3QgcnVzYWdlIG1fdXNh
Z2UgPSB7ezAsIDB9LCB7MCwgMH0sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDB9OworI2VuZGlmCisKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVj
dGlvbjo6c2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdW5zaWduZWQg
bWVzc2FnZVNlbmRGbGFncykKQEAgLTM5Niw2ICs0MDQsMTAgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gYm9vbCBDb25uZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRf
dCBkZXMKICAgICBpZiAoIWRlY29kZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorI2lmICFM
T0dfQUxXQVlTX0RJU0FCTEVECisgICAgcmVwb3J0UmVzb3VyY2VVc2FnZSgpOworI2VuZGlmCisK
ICAgICBBU1NFUlQoZGVjb2Rlci0+ZGVzdGluYXRpb25JRCgpID09IGRlc3RpbmF0aW9uSUQpOwog
ICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlTWVzc2FnZSgqdGhpcywgKmRlY29kZXIpOwogICAgIHJl
dHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcAppbmRleCAzYjNj
MTJhNmI5YTg1ZThiZTg0MGFkMWIyOTE0MTM0M2YyMWYxNWQ1Li44NmE0OGZlM2IxYjEzMTdiNDNm
YTA4YTM5OGZlNjhhM2RjYzJkZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q2hpbGRQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNz
LmNwcApAQCAtNTMsNiArNTMsNyBAQCBzdGF0aWMgdm9pZCBkaWRDbG9zZU9uQ29ubmVjdGlvbldv
cmtRdWV1ZShJUEM6OkNvbm5lY3Rpb24qKQogICAgICAgICAvLyBXZSB1c2UgX2V4aXQgaGVyZSBz
aW5jZSB0aGUgd2F0Y2hkb2cgY2FsbGJhY2sgaXMgY2FsbGVkIGZyb20gYW5vdGhlciB0aHJlYWQg
YW5kIHdlIGRvbid0IHdhbnQKICAgICAgICAgLy8gZ2xvYmFsIGRlc3RydWN0b3JzIG9yIGF0ZXhp
dCBoYW5kbGVycyB0byBiZSBjYWxsZWQgZnJvbSB0aGlzIHRocmVhZCB3aGlsZSB0aGUgbWFpbiB0
aHJlYWQgaXMgYnVzeQogICAgICAgICAvLyBkb2luZyBpdHMgdGhpbmcuCisgICAgICAgIExPR19B
TFdBWVMoIkV4aXRpbmcgcHJvY2VzcyBlYXJseSBkdWUgdG8gdW5hY2tub3dsZWRnZWQgY2xvc2Vk
LWNvbm5lY3Rpb24iKTsKICAgICAgICAgX2V4aXQoRVhJVF9GQUlMVVJFKTsKICAgICB9KTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272681</attachid>
            <date>2016-03-02 13:33:52 -0800</date>
            <delta_ts>2016-03-04 16:16:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154499-20160302133337.patch</filename>
            <type>text/plain</type>
            <size>23295</size>
            <attacher name="Keith Rollin">krollin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjJhNzc2YmRiMjA5ODY1
OGY1ZmViNDBlMmE2ZmJmMWJhNTgyZTEwZC4uMmZmMWIwYzdkNjg0MTM3OTk4ZDlkNGEwNzdhMWUw
YTJiMTJiYzQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE2LTAzLTAyICBLZWl0
aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KKworICAgICAgICBFbmhhbmNlIGxvZ2dpbmc6
IFVzZSAiYWx3YXlzIG9uIiBtYWNyb3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1NDQ5OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQ3NTc3MzA+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSB1
c2Ugb2YgbmV3IGxvZ2dpbmcgbWFjcm9zLgorCisgICAgICAgIC0gRnJhbWVMb2FkZXIgdXBkYXRl
ZCB0byByZXBvcnQgd2hlbiBuZXR3b3JrIHJlcXVlc3RzIGFyZSBtYWRlIGFuZAorICAgICAgICAg
IHJlY2VpdmVkLCBoZWxwaW5nIHVzIGRldGVybWluZSBpZiB3ZSdyZSBzbG93IG9yIHRoZSBuZXR3
b3JrIGlzIHNsb3cuCisgICAgICAgIC0gTWVtb3J5UHJlc3N1cmVIYW5kbGVyIHVwZGF0ZWQgdG8g
cmVwb3J0IHdoZW4gaXQncyBjYWxsZWQgYW5kIHRoZQorICAgICAgICAgIHJlc3VsdGluZyBtZW1v
cnkgcmVzb3VyY2UgY2hhbmdlLiBUaGlzIHNob3VsZCBoZWxwIGFzc3VyZSB1cyB0aGF0CisgICAg
ICAgICAgdGhlIG1lbW9yeSBwcmVzc3VyZSBoYW5kbGVyIGlzIGJlaW5nIGVmZmVjdGl2ZS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMuIE5vIG5ldyBiYXNpYyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVu
IGFkZGVkLiBPbmx5IG5ldworICAgICAgICBsb2dnaW5nIGhhcyBiZWVuIGFkZGVkIGluIHJlbGVh
c2UgbW9kZSBvciBoYXMgYmVlbiBlbmFibGVkIHRvIGV4ZWN1dGUKKyAgICAgICAgaW4gcmVsZWFz
ZSBtb2RlIGFzIHdlbGwgYXMgZGVidWcgbW9kZS4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cHJlcGFyZUZvckxvYWRT
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVG
b3JUaGlzRnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dl
cjo6ZGlhZ25vc3RpY0xvZyk6CisgICAgICAgICogcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxv
Z2dlcjo6UmVsaWVmTG9nZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFu
ZGxlcjo6UmVsaWVmTG9nZ2VyOjp+UmVsaWVmTG9nZ2VyKToKKwogMjAxNi0wMy0wMSAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgVGV4dCBjb250cm9sIHNoYWRv
dyBlbGVtZW50IHN0eWxlIHNob3VsZG4ndCBkZXBlbmQgb24gcmVuZGVyZXJzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggMzQ2NjA0ZmY0ZTI1ODA2ZDkyY2ZhYjMzYmNlMmQxYmI5ZTg0M2RiMi4uMGFkMGI1NDNlN2Uz
ODA2NThlODhhMzk0OGM2YzIxYTZkNzZiYWJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBA
CisyMDE2LTAzLTAyICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KKworICAgICAg
ICBFbmhhbmNlIGxvZ2dpbmc6IFVzZSAiYWx3YXlzIG9uIiBtYWNyb3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDQ5OQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMjQ3NTc3MzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTWFrZSB1c2Ugb2YgbmV3IGxvZ2dpbmcgbWFjcm9zLgorCisgICAgICAgIC0g
VXBkYXRlZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIsIFdlYkxvYWRlclN0cmF0ZWd5LCBhbmQKKyAg
ICAgICAgICBXZWJSZXNvdXJjZUxvYWRlciB0byByZXBvcnQgd2hlbiBuZXR3b3JrIHJlcXVlc3Rz
IGFyZSBtYWRlIGFuZAorICAgICAgICAgIHJlY2VpdmVkLCBoZWxwaW5nIHVzIGRldGVybWluZSBp
ZiB3ZSBhcmUgc2xvdyBvciB0aGUgbmV0d29yayBpcworICAgICAgICAgIHNsb3cuCisgICAgICAg
IC0gQ29ubmVjdGlvbiB1cGRhdGVkIHRvIGxvZyByZXNvdXJjZSB1c2FnZSB3aGVuZXZlciBuZXcg
bWVzc2FnZXMgYXJlCisgICAgICAgICAgcmVjZWl2ZWQuIFRoaXMgc2hvdWxkIHByb3ZpZGUgYSBu
aWNlIGJhbGFuY2Ugb2YgbG9nZ2luZyB0aGF0IHdpbGwKKyAgICAgICAgICBjYXRjaCByZXNvdXJj
ZSB1c2FnZSBpbmNyZWFzZXMgYXQgdGhlIHBvaW50IHRoZXkgb2NjdXIsIHdoaWxlIGF0IHRoZQor
ICAgICAgICAgIHNhbWUgdGltZSBub3QgcHJvdmlkaW5nIHNvIG11Y2ggbG9nZ2luZyB0aGF0IHdl
IGtpbGwgYW4gaVBob25lJ3MKKyAgICAgICAgICBiYXR0ZXJ5LgorICAgICAgICAtIENvbm5lY3Rp
b24gdXBkYXRlZCB0byByZXBvcnQgSVBDIGVycm9ycywgaGVscGluZyB1cyBpZGVudGlmeSB3aGVu
CisgICAgICAgICAgbWVzc2FnaW5nIGJldHdlZW4gcHJvY2Vzc2VzIGJyZWFrcyBkb3duLgorICAg
ICAgICAtIENoaWxkUHJvY2VzcyB1cGRhdGVkIHRvIGxvZyBpZiBpdCBpcyB0ZXJtaW5hdGluZyBl
YXJseS4gU29tZQorICAgICAgICAgIHN5c2RpYWdub3NlIGxvZ2dpbmcgZnJvbSBjdXN0b21lcnMg
aW5kaWNhdGUgdGhhdCB0aGlzIGlzIGhhcHBlbmluZworICAgICAgICAgIGluIHRoZSB3aWxkLgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGYWlsTG9hZGlu
Zyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxs
U2VuZFJlcXVlc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcDoKKyAg
ICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJN
ZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseSk6Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UpOgorICAgICAgICAo
SVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0
aW9uOjpyZXBvcnRSZXNvdXJjZVVzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5oOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1l
ZGlhdGVseSk6CisgICAgICAgICogU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OmRpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJM
b2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxv
YWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVy
OjpkaWRGaW5pc2hSZXNvdXJjZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxv
YWRlcjo6ZGlkRmFpbFJlc291cmNlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UpOgorCiAyMDE2LTAzLTAxICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBOZXR3b3JrQ2FjaGU6IFdl
YiBwcm9jZXNzIGxlYWtzIHJlc291cmNlIGJ1ZmZlciB3aGVuIHVzaW5nIHNoYXJlYWJsZSByZWFz
b3VyY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBjZjdkNjI1M2Rk
ZDNlOTViZjNjM2MzNTMzMDMwMDk4MDAwN2NhMWMwLi5iMzNkYmVkOWI2NTBkM2ViZGNjY2U1ZDhk
YjI2MzJmNGY0OGRhMDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAg
LTEwODQsNiArMTA4NCw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0YXJ0ZWQoKQogCiB2b2lkIEZy
YW1lTG9hZGVyOjpwcmVwYXJlRm9yTG9hZFN0YXJ0KCkKIHsKKyAgICBMT0dfQUxXQVlTKCJTdGFy
dGluZyBmcmFtZSBsb2FkLCBmcmFtZSA9ICVwLCBtYWluID0gJWQiLCAmbV9mcmFtZSwgc3RhdGlj
X2Nhc3Q8aW50PihtX2ZyYW1lLmlzTWFpbkZyYW1lKCkpKTsKKwogICAgIG1fcHJvZ3Jlc3NUcmFj
a2VyLT5wcm9ncmVzc1N0YXJ0ZWQoKTsKICAgICBtX2NsaWVudC5kaXNwYXRjaERpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkKCk7CiAKQEAgLTIyNjMsNiArMjI2NSw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1lKCkKICAgICAgICAgICAgIGlmIChtX3N0YXRl
TWFjaGluZS5jcmVhdGluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkgfHwgIW1fc3RhdGVNYWNoaW5l
LmNvbW1pdHRlZEZpcnN0UmVhbERvY3VtZW50TG9hZCgpKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKIAorICAgICAgICAgICAgTE9HX0FMV0FZUygiQ29tbWl0dGVkIGZyYW1lIGxvYWQsIGZyYW1l
ID0gJXAsIG1haW4gPSAlZCIsICZtX2ZyYW1lLCBzdGF0aWNfY2FzdDxpbnQ+KG1fZnJhbWUuaXNN
YWluRnJhbWUoKSkpOworCiAgICAgICAgICAgICBtX3Byb2dyZXNzVHJhY2tlci0+cHJvZ3Jlc3ND
b21wbGV0ZWQoKTsKICAgICAgICAgICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKTsKICAg
ICAgICAgICAgIGlmIChwYWdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmNwcAppbmRleCA2NjAxOTQyMGIyMTJlMzc2YTUzZDg4NWY3OTc4
NzkyMWZkNmI1Nzc4Li5mOGFlNmY5YzQzOTE4ZDM5NDkyNDFiYjZhM2U5MGY3OGE2NTZmOTcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5j
cHAKQEAgLTE4MCw2ICsxODAsMjMgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlbGVh
c2VNZW1vcnkoQ3JpdGljYWwgY3JpdGljYWwsIFN5bmNocm9ub3VzIHN5bmNocm8KICAgICB9CiB9
CiAKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OmRpYWdub3N0aWNM
b2coKQoreworICAgIHNpemVfdCBjdXJyZW50TWVtb3J5ID0gcGxhdGZvcm1NZW1vcnlVc2FnZSgp
OworICAgIGlmIChjdXJyZW50TWVtb3J5ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpIHx8IG1f
aW5pdGlhbE1lbW9yeSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKSkgeworICAgICAgICBMT0df
QUxXQVlTKCJQcmVzc3VyZSByZWxpZWY6ICVzOiAoVW5hYmxlIHRvIGdldCBkaXJ0eSBtZW1vcnkg
aW5mb3JtYXRpb24gZm9yIHByb2Nlc3MpIiwgbV9sb2dTdHJpbmcpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgc3NpemVfdCBtZW1vcnlEaWZmID0gY3VycmVudE1lbW9yeSAtIG1faW5p
dGlhbE1lbW9yeTsKKyAgICBpZiAobWVtb3J5RGlmZiA8IDApCisgICAgICAgIExPR19BTFdBWVMo
IlByZXNzdXJlIHJlbGllZjogJXM6IC1kaXJ0eSAlbGQgYnl0ZXMgKGZyb20gJWx1IHRvICVsdSki
LCBtX2xvZ1N0cmluZywgKG1lbW9yeURpZmYgKiAtMSksIG1faW5pdGlhbE1lbW9yeSwgY3VycmVu
dE1lbW9yeSk7CisgICAgZWxzZSBpZiAobWVtb3J5RGlmZiA+IDApCisgICAgICAgIExPR19BTFdB
WVMoIlByZXNzdXJlIHJlbGllZjogJXM6ICtkaXJ0eSAlbGQgYnl0ZXMgKGZyb20gJWx1IHRvICVs
dSkiLCBtX2xvZ1N0cmluZywgbWVtb3J5RGlmZiwgbV9pbml0aWFsTWVtb3J5LCBjdXJyZW50TWVt
b3J5KTsKKyAgICBlbHNlCisgICAgICAgIExPR19BTFdBWVMoIlByZXNzdXJlIHJlbGllZjogJXM6
ID1kaXJ0eSAoYXQgJWx1IGJ5dGVzKSIsIG1fbG9nU3RyaW5nLCBjdXJyZW50TWVtb3J5KTsKK30K
KwogI2lmICFQTEFURk9STShDT0NPQSkgJiYgIU9TKExJTlVYKSAmJiAhUExBVEZPUk0oV0lOKQog
dm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Omluc3RhbGwoKSB7IH0KIHZvaWQgTWVtb3J5UHJl
c3N1cmVIYW5kbGVyOjp1bmluc3RhbGwoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKaW5kZXggYmM0MTUyN2Q1YmQwNGMxZGI5ZmVmZDIx
M2QzMzhlYWRiZTczMzkwMy4uZmJlNTkwOTliMTJhZGY2NDZlYzBiYjUzNDJmODNkMDY5MjIyY2Rl
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVy
LmgKQEAgLTg3LDcgKzg3LDExIEBAIHB1YmxpYzoKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxp
Y2l0IFJlbGllZkxvZ2dlcihjb25zdCBjaGFyICpsb2cpCiAgICAgICAgICAgICA6IG1fbG9nU3Ry
aW5nKGxvZykKKyNpZiAhTE9HX0FMV0FZU19ESVNBQkxFRAorICAgICAgICAgICAgLCBtX2luaXRp
YWxNZW1vcnkocGxhdGZvcm1NZW1vcnlVc2FnZSgpKQorI2Vsc2UKICAgICAgICAgICAgICwgbV9p
bml0aWFsTWVtb3J5KHNfbG9nZ2luZ0VuYWJsZWQgPyBwbGF0Zm9ybU1lbW9yeVVzYWdlKCkgOiAw
KQorI2VuZGlmCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC05NSw2ICs5OSw5IEBAIHB1Ymxp
YzoKICAgICAgICAgewogICAgICAgICAgICAgaWYgKHNfbG9nZ2luZ0VuYWJsZWQpCiAgICAgICAg
ICAgICAgICAgcGxhdGZvcm1Mb2coKTsKKyNpZiAhTE9HX0FMV0FZU19ESVNBQkxFRAorICAgICAg
ICAgICAgZGlhZ25vc3RpY0xvZygpOworI2VuZGlmCiAgICAgICAgIH0KIAogICAgICAgICBjb25z
dCBjaGFyKiBsb2dTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX2xvZ1N0cmluZzsgfQpAQCAtMTA0
LDYgKzExMSw3IEBAIHB1YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICBzaXplX3QgcGxhdGZv
cm1NZW1vcnlVc2FnZSgpOwogICAgICAgICB2b2lkIHBsYXRmb3JtTG9nKCk7CisgICAgICAgIHZv
aWQgZGlhZ25vc3RpY0xvZygpOwogCiAgICAgICAgIGNvbnN0IGNoYXIqIG1fbG9nU3RyaW5nOwog
ICAgICAgICBzaXplX3QgbV9pbml0aWFsTWVtb3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTljOWU2
MDU3ZDQyOTk4NGRhZjMyZjQ0NDE3MmNkMWQ1YzEzZTE3Yi4uZWUyMThiNWE5NDIzYjVjNjEyNTdl
YTljY2QwZjE2M2I4YzY3MjBlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yMDAsNiArMjAwLDggQEAg
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKICNlbmRpZgogCisgICAgTE9HX0FMV0FZUygiU3RhcnRpbmcg
cmVzb3VyY2UgbG9hZDogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUiLCBtX3BhcmFtZXRl
cnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCk7CisKICAgICBOZXR3b3JrTG9h
ZFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG1fcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLmRl
ZmVyc0xvYWRpbmcgPSBtX2RlZmVyc0xvYWRpbmc7CiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0g
cmVxdWVzdDsKQEAgLTI3MSw2ICsyNzMsOCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
YWJvcnQoKQogCiBhdXRvIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlY2VpdmVkUmVzcG9uc2UpIC0+IFNob3VsZENvbnRp
bnVlRGlkUmVjZWl2ZVJlc3BvbnNlCiB7CisgICAgTE9HX0FMV0FZUygiUmVjZWl2ZWQgcGFnZSBo
ZWFkZXJzOiBwYWdlSUQgPSAlbGx1LCBmcmFtZUlEID0gJWxsdSIsIG1fcGFyYW1ldGVycy53ZWJQ
YWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlEKTsKKwogICAgIG1fcmVzcG9uc2UgPSByZWNl
aXZlZFJlc3BvbnNlOwogCiAgICAgLy8gRm9yIG11bHRpcGFydC94LW1peGVkLXJlcGxhY2UgZGlk
UmVjZWl2ZVJlc3BvbnNlQXN5bmMgZ2V0cyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgYW5kIGJ1ZmZl
cmluZyB3b3VsZCByZXF1aXJlIHNwZWNpYWwgaGFuZGxpbmcuCkBAIC0zMDEsOCArMzA1LDExIEBA
IGF1dG8gTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVjZWl2ZWRSCiAgICAgICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCiAg
ICAgICAgICAgICBtX3N5bmNocm9ub3VzTG9hZERhdGEtPnJlc3BvbnNlID0gbV9yZXNwb25zZTsK
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIXNlbmRBYm9ydGluZ09uRmFpbHVyZShN
ZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZShtX3Jlc3BvbnNl
LCBzaG91bGRXYWl0Q29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpKSkKKyAgICAgICAgICAgIExP
R19BTFdBWVMoIkFza2luZyBwZXJtaXNzaW9uIHRvIGNvbnRpbnVlOiBwYWdlSUQgPSAlbGx1LCBm
cmFtZUlEID0gJWxsdSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJG
cmFtZUlEKTsKKyAgICAgICAgICAgIGlmICghc2VuZEFib3J0aW5nT25GYWlsdXJlKE1lc3NhZ2Vz
OjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlKG1fcmVzcG9uc2UsIHNob3Vs
ZFdhaXRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSkpKSB7CisgICAgICAgICAgICAgICAgTE9H
X0FMV0FZUygiUGVybWlzc2lvbiB0byBjb250aW51ZSBkZW5pZWQ6IHBhZ2VJRCA9ICVsbHUsIGZy
YW1lSUQgPSAlbGx1IiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQpOwogICAgICAgICAgICAgICAgIHJldHVybiBTaG91bGRDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZTo6Tm87CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTMxMiw2
ICszMTksMTEgQEAgYXV0byBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWNlaXZlZFIKICAgICBzaG91bGRDb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZSA9IHNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIHx8IG1f
Y2FjaGVFbnRyeUZvclZhbGlkYXRpb247CiAjZW5kaWYKIAorICAgIGlmIChzaG91bGRDb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZSkKKyAgICAgICAgTE9HX0FMV0FZUygiU2hvdWxkIGNvbnRpbnVl
OiBwYWdlSUQgPSAlbGx1LCBmcmFtZUlEID0gJWxsdSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQs
IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlEKTsKKyAgICBlbHNlCisgICAgICAgIExPR19BTFdBWVMo
IlNob3VsZCBub3QgY29udGludWU6IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1IiwgbV9w
YXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQpOworCiAgICAgcmV0
dXJuIHNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlID8gU2hvdWxkQ29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2U6OlllcyA6IFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlOjpO
bzsKIH0KIApAQCAtMzQ0LDYgKzM1Niw4IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQKIAogdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRp
bWUpCiB7CisgICAgTE9HX0FMV0FZUygiRmluaXNoZWQgbG9hZGluZzogcGFnZUlEID0gJWxsdSwg
ZnJhbWVJRCA9ICVsbHUiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCk7CisKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRSkKICAgICBpZiAobV9jYWNoZUVu
dHJ5Rm9yVmFsaWRhdGlvbikgewogICAgICAgICAvLyAzMDQgTm90IE1vZGlmaWVkCkBAIC0zNzUs
NiArMzg5LDggQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmco
ZG91YmxlIGZpbmlzaFRpbWUpCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGYWls
TG9hZGluZyhjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKKyAgICBMT0dfQUxXQVlTKCJG
YWlsZWQgbG9hZGluZzogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUiLCBtX3BhcmFtZXRl
cnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCk7CisKICAgICBBU1NFUlQoIWVy
cm9yLmlzTnVsbCgpKTsKIAogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFKQpAQCAtNDE5LDYgKzQz
NSw4IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1
ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG5ld1Jl
cXVlc3QpCiB7CisgICAgTE9HX0FMV0FZUygiQ29udGludWluZyBsb2FkaW5nOiBwYWdlSUQgPSAl
bGx1LCBmcmFtZUlEID0gJWxsdSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlEKTsKKwogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFKQogICAgIGlmIChtX2lz
V2FpdGluZ0NvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0Rm9yQ2FjaGVkUmVkaXJlY3QpIHsKICAgICAg
ICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2VzcykgUmV0cmlldmluZyBjYWNoZWQg
cmVkaXJlY3QiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApp
bmRleCA4MTY2YzlhMmU5NGI4MDMyODNmM2JlNzhmMGMwYTk2YzllNWE4NGJjLi5mNzBkNGUwYWQ5
ZDkzMzg5ZDhjNGIxZTMxMjE1MjQwYmIxMzMxZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgogCiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1
ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC0yNzMsNiArMjc0LDEwIEBAIHZvaWQgQ29ubmVj
dGlvbjo6cmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlUmVjZWl2ZXJOCiAKIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWdl
UmVjZWl2ZXJNZXNzYWdlKFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciYgd29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVyLCBNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKIHsKKyNpZiAhTE9HX0FMV0FZU19E
SVNBQkxFRAorICAgIHJlcG9ydFJlc291cmNlVXNhZ2UoKTsKKyNlbmRpZgorCiAgICAgaWYgKCFk
ZWNvZGVyLmlzU3luY01lc3NhZ2UoKSkgewogICAgICAgICB3b3JrUXVldWVNZXNzYWdlUmVjZWl2
ZXIuZGlkUmVjZWl2ZU1lc3NhZ2UoKnRoaXMsIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CkBA
IC01NzUsNiArNTgwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiBDb25uZWN0
aW9uOjp3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXMKICAgICAgICAgLy8gSWYg
dGhhdCBoYXBwZW5zLCB3ZSBuZWVkIHRvIHN0b3Agd2FpdGluZywgb3Igd2UnbGwgaGFuZyBzaW5j
ZSB3ZSB3b24ndCBnZXQKICAgICAgICAgLy8gYW55IG1vcmUgaW5jb21pbmcgbWVzc2FnZXMuCiAg
ICAgICAgIGlmICghaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBMT0dfQUxXQVlTKCJDb25uZWN0
aW9uOjp3YWl0Rm9yU3luY1JlcGx5OiBDb25uZWN0aW9uIG5vIGxvbmdlciB2YWxpZCwgaWQ9JWxs
dSIsIHN5bmNSZXF1ZXN0SUQpOwogICAgICAgICAgICAgZGlkUmVjZWl2ZVN5bmNSZXBseShzeW5j
U2VuZEZsYWdzKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CkBAIC01
ODUsNiArNTkxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiBDb25uZWN0aW9u
Ojp3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXMKICAgICAgICAgdGltZWRPdXQg
PSAhU3luY01lc3NhZ2VTdGF0ZTo6c2luZ2xldG9uKCkud2FpdChhYnNvbHV0ZVRpbWUpOwogICAg
IH0KIAorICAgIExPR19BTFdBWVMoIkNvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVwbHk6IFRpbWVk
LW91dCB3aGlsZSB3YWl0aW5nIGZvciByZXBseSwgaWQ9JWxsdSIsIHN5bmNSZXF1ZXN0SUQpOwog
ICAgIGRpZFJlY2VpdmVTeW5jUmVwbHkoc3luY1NlbmRGbGFncyk7CiAKICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTgxOCw2ICs4MjUsMTAgQEAgdm9pZCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdN
ZXNzYWdlcygpCiAKIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShNZXNzYWdl
RGVjb2RlciYgZGVjb2RlcikKIHsKKyNpZiAhTE9HX0FMV0FZU19ESVNBQkxFRAorICAgIHJlcG9y
dFJlc291cmNlVXNhZ2UoKTsKKyNlbmRpZgorCiAgICAgQVNTRVJUKGRlY29kZXIuaXNTeW5jTWVz
c2FnZSgpKTsKIAogICAgIHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQgPSAwOwpAQCAtODg4LDYgKzg5
OSwxMCBAQCB2b2lkIENvbm5lY3Rpb246OmVucXVldWVJbmNvbWluZ01lc3NhZ2Uoc3RkOjp1bmlx
dWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiBpbmNvbWluZwogCiB2b2lkIENvbm5lY3Rpb246OmRpc3Bh
dGNoTWVzc2FnZShNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKIHsKKyNpZiAhTE9HX0FMV0FZU19E
SVNBQkxFRAorICAgIHJlcG9ydFJlc291cmNlVXNhZ2UoKTsKKyNlbmRpZgorCiAgICAgbV9jbGll
bnQtPmRpZFJlY2VpdmVNZXNzYWdlKCp0aGlzLCBkZWNvZGVyKTsKIH0KIApAQCAtOTU4LDQgKzk3
MywzNyBAQCB2b2lkIENvbm5lY3Rpb246Ondha2VVcFJ1bkxvb3AoKQogICAgIFJ1bkxvb3A6Om1h
aW4oKS53YWtlVXAoKTsKIH0KIAorI2lmICFMT0dfQUxXQVlTX0RJU0FCTEVECit2b2lkIENvbm5l
Y3Rpb246OnJlcG9ydFJlc291cmNlVXNhZ2UoKQoreworICAgIGNvbnN0IHN0ZDo6Y2hyb25vOjpz
ZWNvbmRzIGtGaXZlU2Vjb25kcyg1KTsKKyAgICBhdXRvIGN1cnJlbnQgPSBzdGQ6OmNocm9ubzo6
c3RlYWR5X2Nsb2NrOjpub3coKTsKKyAgICBhdXRvIGVsYXBzZWQgPSBzdGQ6OmNocm9ubzo6ZHVy
YXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPihjdXJyZW50IC0gbV9sYXN0UmVw
b3J0VGltZSk7CisgICAgaWYgKGVsYXBzZWQgPCBrRml2ZVNlY29uZHMpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX2xhc3RSZXBvcnRUaW1lID0gY3VycmVudDsKKworICAgIHN0cnVjdCBydXNhZ2Ug
dXNhZ2U7CisgICAgZ2V0cnVzYWdlKFJVU0FHRV9TRUxGLCAmdXNhZ2UpOworCisgICAgaWYgKCFt
ZW1jbXAoJm1fdXNhZ2UsICZ1c2FnZSwgc2l6ZW9mKHVzYWdlKSkpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fdXNhZ2UgPSB1c2FnZTsKKworICAgIGRvdWJsZSB1dGltZSA9IHVzYWdlLnJ1X3V0
aW1lLnR2X3NlYyArIHVzYWdlLnJ1X3V0aW1lLnR2X3VzZWMgLyBVU0VDX1BFUl9TRUM7CisgICAg
ZG91YmxlIHN0aW1lID0gdXNhZ2UucnVfc3RpbWUudHZfc2VjICsgdXNhZ2UucnVfc3RpbWUudHZf
dXNlYyAvIFVTRUNfUEVSX1NFQzsKKworICAgIExPR19BTFdBWVMoIlVzYWdlOiAiCisgICAgICAg
ICJ1dGltZT0lZiwgIiAgICAgICAgInN0aW1lPSVmLCAiICAgICAgICAibWF4cnNzPSVsZCwgIiAg
ICAgICJpeHJzcz0lbGQsICIKKyAgICAgICAgImlkcnNzPSVsZCwgIiAgICAgICAiaXNyc3M9JWxk
LCAiICAgICAgICJtaW5mbHQ9JWxkLCAiICAgICAgIm1hamZsdD0lbGQsICIKKyAgICAgICAgIm5z
d2FwPSVsZCwgIiAgICAgICAiaW5ibG9jaz0lbGQsICIgICAgICJvdWJsb2NrPSVsZCwgIiAgICAg
Im1zZ3NuZD0lbGQsICIKKyAgICAgICAgIm1zZ3Jjdj0lbGQsICIgICAgICAibnNpZ25hbHM9JWxk
LCAiICAgICJudmNzdz0lbGQsICIgICAgICAgIm5pdmNzdz0lbGQiLAorICAgICAgICB1dGltZSwg
ICAgICAgICAgICAgIHN0aW1lLCAgICAgICAgICAgICAgdXNhZ2UucnVfbWF4cnNzLCAgICB1c2Fn
ZS5ydV9peHJzcywKKyAgICAgICAgdXNhZ2UucnVfaWRyc3MsICAgICB1c2FnZS5ydV9pc3Jzcywg
ICAgIHVzYWdlLnJ1X21pbmZsdCwgICAgdXNhZ2UucnVfbWFqZmx0LAorICAgICAgICB1c2FnZS5y
dV9uc3dhcCwgICAgIHVzYWdlLnJ1X2luYmxvY2ssICAgdXNhZ2UucnVfb3VibG9jaywgICB1c2Fn
ZS5ydV9tc2dzbmQsCisgICAgICAgIHVzYWdlLnJ1X21zZ3JjdiwgICAgdXNhZ2UucnVfbnNpZ25h
bHMsICB1c2FnZS5ydV9udmNzdywgICAgIHVzYWdlLnJ1X25pdmNzdyk7Cit9CisjZW5kaWYKKwog
fSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9J
UEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24u
aAppbmRleCA2MjQwNTM0YThlOWFjZjY2ZGQ3MDliZWM1MDI5MTE1ZjVmMTFhYjQ2Li4xOTEyN2Zh
MDUyYmFiODA4YzEzZjQ5NzcxYWMwN2QyN2M0NDM3ZWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0lQQy9Db25uZWN0aW9uLmgKQEAgLTIzOSw3ICsyMzksNyBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCB3aWxsU2VuZFN5bmNNZXNzYWdlKHVuc2lnbmVkIHN5bmNTZW5kRmxhZ3MpOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVN5bmNSZXBseSh1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKTsKLSAgICAKKwog
ICAgIENsaWVudCogbV9jbGllbnQ7CiAgICAgYm9vbCBtX2lzU2VydmVyOwogICAgIHN0ZDo6YXRv
bWljPHVpbnQ2NF90PiBtX3N5bmNSZXF1ZXN0SUQ7CkBAIC0zNTQsNiArMzU0LDE0IEBAIHByaXZh
dGU6CiAKICAgICBPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90PiBtX3hwY0Nvbm5lY3Rpb247
CiAjZW5kaWYKKworI2lmICFMT0dfQUxXQVlTX0RJU0FCTEVECisgICAgdm9pZCByZXBvcnRSZXNv
dXJjZVVzYWdlKCk7CisKKyAgICBzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjp0aW1lX3BvaW50
IG1fbGFzdFJlcG9ydFRpbWU7CisgICAgcnVzYWdlIG1fdXNhZ2UgPSB7ezAsIDB9LCB7MCwgMH0s
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9OworI2VuZGlmCisKIH07
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6c2VuZChUJiYgbWVzc2Fn
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdW5zaWduZWQgbWVzc2FnZVNlbmRGbGFncykKQEAg
LTM5Niw2ICs0MDQsMTAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9uOjp3
YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXMKICAgICBpZiAoIWRlY29k
ZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorI2lmICFMT0dfQUxXQVlTX0RJU0FCTEVECisg
ICAgcmVwb3J0UmVzb3VyY2VVc2FnZSgpOworI2VuZGlmCisKICAgICBBU1NFUlQoZGVjb2Rlci0+
ZGVzdGluYXRpb25JRCgpID09IGRlc3RpbmF0aW9uSUQpOwogICAgIG1fY2xpZW50LT5kaWRSZWNl
aXZlTWVzc2FnZSgqdGhpcywgKmRlY29kZXIpOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcAppbmRleCAzYjNjMTJhNmI5YTg1ZThiZTg0MGFkMWIy
OTE0MTM0M2YyMWYxNWQ1Li44NmE0OGZlM2IxYjEzMTdiNDNmYTA4YTM5OGZlNjhhM2RjYzJkZjll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcApAQCAtNTMsNiArNTMsNyBA
QCBzdGF0aWMgdm9pZCBkaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZShJUEM6OkNvbm5lY3Rp
b24qKQogICAgICAgICAvLyBXZSB1c2UgX2V4aXQgaGVyZSBzaW5jZSB0aGUgd2F0Y2hkb2cgY2Fs
bGJhY2sgaXMgY2FsbGVkIGZyb20gYW5vdGhlciB0aHJlYWQgYW5kIHdlIGRvbid0IHdhbnQKICAg
ICAgICAgLy8gZ2xvYmFsIGRlc3RydWN0b3JzIG9yIGF0ZXhpdCBoYW5kbGVycyB0byBiZSBjYWxs
ZWQgZnJvbSB0aGlzIHRocmVhZCB3aGlsZSB0aGUgbWFpbiB0aHJlYWQgaXMgYnVzeQogICAgICAg
ICAvLyBkb2luZyBpdHMgdGhpbmcuCisgICAgICAgIExPR19BTFdBWVMoIkV4aXRpbmcgcHJvY2Vz
cyBlYXJseSBkdWUgdG8gdW5hY2tub3dsZWRnZWQgY2xvc2VkLWNvbm5lY3Rpb24iKTsKICAgICAg
ICAgX2V4aXQoRVhJVF9GQUlMVVJFKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IGYx
OGRkZDJjNTZlOWY2NDllYzMyYTQzNTY2ODJlNDAzZGM1YTI3YjcuLmUxYWJkZDI1ZWJiYTRlNjRj
ZWUxNGJiN2Q4ZjEyM2NkZDI2Mjc1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtMTcwLDcgKzE3MCwx
MCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXIq
IHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogICAgIH0KICNlbmRpZgogCi0gICAgTE9HKE5l
dHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVs
ZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNz
IHdpdGggcHJpb3JpdHkgJWQiLCByZXNvdXJjZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci0+cmVxdWVzdCgpLnByaW9y
aXR5KCkpKTsKKyNpZiAhTE9HX0FMV0FZU19ESVNBQkxFRAorICAgIGNvbnN0IGNoYXIqIHVybCA9
IHJlc291cmNlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpOworICAgIExPR19B
TFdBWVMoIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwg
JyVzJy8lcCB3aWxsIGJlIHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyB3aXRoIHBy
aW9yaXR5ICVkIiwgdXJsLCB1cmwsIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXItPnJl
cXVlc3QoKS5wcmlvcml0eSgpKSk7CisjZW5kaWYKIAogICAgIENvbnRlbnRTbmlmZmluZ1BvbGlj
eSBjb250ZW50U25pZmZpbmdQb2xpY3kgPSByZXNvdXJjZUxvYWRlci0+c2hvdWxkU25pZmZDb250
ZW50KCkgPyBTbmlmZkNvbnRlbnQgOiBEb05vdFNuaWZmQ29udGVudDsKICAgICBTdG9yZWRDcmVk
ZW50aWFscyBhbGxvd1N0b3JlZENyZWRlbnRpYWxzID0gcmVzb3VyY2VMb2FkZXItPnNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlKCkgPyBBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogRG9Ob3RBbGxv
d1N0b3JlZENyZWRlbnRpYWxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMmEwZjU1OWFjZjVkMmM2NjBj
YzkwNGM4NWY5OTkwZGU1MzVhZGY3Zi4uM2FiNzMxNWJhMzgwNjRjNDE0MzllYzlhMWM4OTdhNDgy
YzM4ZjJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03NSw3ICs3NSwxMCBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZGVyOjpkZXRhY2hGcm9tQ29yZUxvYWRlcigpCiAKIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
ZXI6OndpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHByb3Bvc2VkUmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKIHsKLSAgICBMT0co
TmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0
IHRvICclcyciLCBwcm9wb3NlZFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CisjaWYgIUxPR19BTFdBWVNfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiB1cmwgPSBwcm9wb3Nl
ZFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKTsKKyAgICBMT0dfQUxXQVlTKCIo
V2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCB0byAnJXMnLyVw
IiwgdXJsLCB1cmwpOworI2VuZGlmCiAKICAgICBSZWZQdHI8V2ViUmVzb3VyY2VMb2FkZXI+IHBy
b3RlY3QodGhpcyk7CiAKQEAgLTk4LDcgKzEwMSwxMCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVy
OjpkaWRTZW5kRGF0YSh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0Jl
UwogCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZU1lc3NhZ2UpCiB7Ci0gICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSBmb3IgJyVzJy4gU3RhdHVzICVkLiIsIG1fY29y
ZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcmVzcG9uc2UuaHR0cFN0YXR1
c0NvZGUoKSk7CisjaWYgIUxPR19BTFdBWVNfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiB1cmwg
PSBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCk7CisgICAgTE9HX0FM
V0FZUygiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Ug
Zm9yICclcycvJXAuIFN0YXR1cyAlZC4iLCB1cmwsIHVybCwgcmVzcG9uc2UuaHR0cFN0YXR1c0Nv
ZGUoKSk7CisjZW5kaWYKIAogICAgIFJlZjxXZWJSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCgqdGhp
cyk7CiAKQEAgLTEyOSw3ICsxMzUsMTAgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib28KIAogdm9p
ZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIExPRyhOZXR3b3Jr
LCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSBvZiBzaXpl
ICVpIGZvciAnJXMnIiwgKGludClkYXRhLnNpemUoKSwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKyNpZiAhTE9HX0FMV0FZU19ESVNBQkxFRAorICAgIGNvbnN0
IGNoYXIqIHVybCA9IG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKTsK
KyAgICBMT0dfQUxXQVlTKCIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhIG9mIHNpemUgJWQgZm9yICclcycvJXAiLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGEuc2l6
ZSgpKSwgdXJsLCB1cmwpOworI2VuZGlmCiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBpZiAo
UXVpY2tMb29rSGFuZGxlKiBxdWlja0xvb2tIYW5kbGUgPSBtX2NvcmVMb2FkZXItPmRvY3VtZW50
TG9hZGVyKCktPnF1aWNrTG9va0hhbmRsZSgpKSB7CkBAIC0xNDIsNyArMTUxLDEwIEBAIHZvaWQg
V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YSwgaW50NjRfdCBlCiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJl
c291cmNlTG9hZChkb3VibGUgZmluaXNoVGltZSkKIHsKLSAgICBMT0coTmV0d29yaywgIihXZWJQ
cm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkIGZvciAnJXMn
IiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyNpZiAhTE9H
X0FMV0FZU19ESVNBQkxFRAorICAgIGNvbnN0IGNoYXIqIHVybCA9IG1fY29yZUxvYWRlci0+dXJs
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKTsKKyAgICBMT0dfQUxXQVlTKCIoV2ViUHJvY2Vzcykg
V2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJlc291cmNlTG9hZCBmb3IgJyVzJy8lcCIsIHVy
bCwgdXJsKTsKKyNlbmRpZgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgaWYgKFF1aWNrTG9v
a0hhbmRsZSogcXVpY2tMb29rSGFuZGxlID0gbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigp
LT5xdWlja0xvb2tIYW5kbGUoKSkgewpAQCAtMTU1LDggKzE2NywxMSBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZGVyOjpkaWRGaW5pc2hSZXNvdXJjZUxvYWQoZG91YmxlIGZpbmlzaFRpbWUpCiAKIHZv
aWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VF
cnJvciYgZXJyb3IpCiB7Ci0gICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVy
bCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIAorI2lmICFMT0dfQUxXQVlTX0RJU0FC
TEVECisgICAgY29uc3QgY2hhciogdXJsID0gbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpOworICAgIExPR19BTFdBWVMoIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxv
YWRlcjo6ZGlkRmFpbFJlc291cmNlTG9hZCBmb3IgJyVzJy8lcCIsIHVybCwgdXJsKTsKKyNlbmRp
ZgorCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgaWYgKFF1aWNrTG9va0hhbmRsZSogcXVpY2tM
b29rSGFuZGxlID0gbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5xdWlja0xvb2tIYW5k
bGUoKSkKICAgICAgICAgcXVpY2tMb29rSGFuZGxlLT5kaWRGYWlsKCk7CkBAIC0xNjksNyArMTg0
LDEwIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKIHZv
aWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZShjb25zdCBTaGFyZWFibGVS
ZXNvdXJjZTo6SGFuZGxlJiBoYW5kbGUsIGRvdWJsZSBmaW5pc2hUaW1lKQogewotICAgIExPRyhO
ZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3Vy
Y2UgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworI2lmICFMT0dfQUxXQVlTX0RJU0FCTEVECisgICAgY29uc3QgY2hhciogdXJsID0gbV9jb3Jl
TG9hZGVyLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpOworICAgIExPR19BTFdBWVMoIihX
ZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cmNlIGZvciAnJXMn
LyVwIiwgdXJsLCB1cmwpOworI2VuZGlmCiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273054</attachid>
            <date>2016-03-04 16:17:01 -0800</date>
            <delta_ts>2016-03-07 14:27:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154499-20160304161646.patch</filename>
            <type>text/plain</type>
            <size>36749</size>
            <attacher name="Keith Rollin">krollin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQyYTQ0NjIyMTNlMTE5NGUxNTgxZTE0
ZDc2YThmNTZhMWE3MTMyMTguLjQ3YjIxOGE2MGEyMWZkNmVjZjIyNzE5Y2UzMjU0OTA4MjVkMjNm
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMDMtMDMgIEtlaXRoIFJvbGxpbiAgPGtyb2xs
aW5AYXBwbGUuY29tPgorCisgICAgICAgIEVuaGFuY2UgbG9nZ2luZzogVXNlICJhbHdheXMgb24i
IG1hY3JvcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU0NDk5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNDc1NzczMD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgTE9HX0FMV0FZUyBhbmQg
TE9HX0FMV0FZU19FUlJPUiBtYWNyb3MgdG8gdGFrZSBhbiBleHByZXNzaW9uIHRvCisgICAgICAg
IGJlIGV2YWx1YXRlZC4gSWYgdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIFRydWUsIHRoZSBh
c3NvY2lhdGVkCisgICAgICAgIG1lc3NhZ2UgaXMgbG9nZ2VkLiBUaGlzIGZhY2lsaXR5IGlzIHVz
ZWQgdG8gcHJldmVudCBsb2dnaW5nIGZyb20gYmVpbmcKKyAgICAgICAgcGVyZm9ybWVkIGluIHBy
aXZhdGUgc2Vzc2lvbnMsIGJ1dCBpdCBjb3VsZCBiZSBleHRlbmRlZCB0byBwcmV2ZW50CisgICAg
ICAgIGxvZ2dpbmcgdW5kZXIgb3RoZXIgY2lyY3Vtc3RhbmNlcyBhcyB3ZWxsLgorCisgICAgICAg
ICogd3RmL0Fzc2VydGlvbnMuaDoKKwogMjAxNi0wMi0yOSAgR2F2aW4gQmFycmFjbG91Z2ggIDxi
YXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmQ291bnRlcjxUPjo6RXZlbnQgLT4g
UmVmQ291bnRlckV2ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjJhNzc2YmRiMjA5ODY1OGY1ZmViNDBlMmE2
ZmJmMWJhNTgyZTEwZC4uMzMwN2JiYjllMThjZWFhOGQyMzgzZTYzOTM0YzExMTRmNzE5YmMzNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE2LTAzLTAzICBLZWl0aCBSb2xsaW4gIDxr
cm9sbGluQGFwcGxlLmNvbT4KKworICAgICAgICBFbmhhbmNlIGxvZ2dpbmc6IFVzZSAiYWx3YXlz
IG9uIiBtYWNyb3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NDQ5OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQ3NTc3MzA+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSB1c2Ugb2YgbmV3IGxv
Z2dpbmcgbWFjcm9zIGJ5IHJlcG9ydGluZyBvbiBmcmFtZSBhbmQgcmVzb3VyY2UKKyAgICAgICAg
ZG93bmxvYWQgYWN0aXZpdHkuCisKKyAgICAgICAgQWRkIG5ldyBsb2dnaW5nIHRvIG1lbW9yeSBw
cmVzc3VyZSBoYW5kbGVyIHRvIHNob3cgd2hlbiBpdCdzIGNhbGxlZAorICAgICAgICBhbmQgaXQn
cyBlZmZlY3RpdmVuZXNzLiBBcyBwYXJ0IG9mIHRoaXMsIHRoZSB2YXJpb3VzIHBsYXRmb3JtLXNw
ZWNpZmljCisgICAgICAgIGltcGxlbWVudGF0aW9ucyBoYXZlIGJlZW4gdW5pZmllZC4KKworICAg
ICAgICBObyBuZXcgdGVzdHMuIE5vIG5ldyBiYXNpYyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIGFk
ZGVkLiBPbmx5IG5ldworICAgICAgICBsb2dnaW5nIGhhcyBiZWVuIGFkZGVkIGluIHJlbGVhc2Ug
bW9kZSBvciBoYXMgYmVlbiBlbmFibGVkIHRvIGV4ZWN1dGUKKyAgICAgICAgaW4gcmVsZWFzZSBt
b2RlIGFzIHdlbGwgYXMgZGVidWcgbW9kZS4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cHJlcGFyZUZvckxvYWRTdGFy
dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JU
aGlzRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmlzTG9nZ2luZ0FsbG93
ZWQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6aXNM
b2dnaW5nQWxsb3dlZCk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAg
ICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aXNMb2dnaW5n
QWxsb3dlZCk6CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjppc0xvZ2dpbmdBbGxvd2VkKToKKyAgICAgICAg
KiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdlL1Nlc3Npb25JRC5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2Vzc2lvbklEOjppc0xvZ2dpbmdBbGxvd2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9N
ZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1
cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OmxvZ01lbW9yeVVzYWdlQ2hhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpwbGF0Zm9ybUxv
Zyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6
UmVsaWVmTG9nZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6
UmVsaWVmTG9nZ2VyOjp+UmVsaWVmTG9nZ2VyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9N
ZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpwbGF0Zm9ybUxvZyk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OnBsYXRm
b3JtTG9nKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vTWVtb3J5UHJlc3N1cmVI
YW5kbGVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6
UmVsaWVmTG9nZ2VyOjpwbGF0Zm9ybUxvZyk6IERlbGV0ZWQuCisKIDIwMTYtMDMtMDEgIEFudHRp
IEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFRleHQgY29udHJvbCBzaGFk
b3cgZWxlbWVudCBzdHlsZSBzaG91bGRuJ3QgZGVwZW5kIG9uIHJlbmRlcmVycwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDM0NjYwNGZmNGUyNTgwNmQ5MmNmYWIzM2JjZTJkMWJiOWU4NDNkYjIuLjVlZDVmMzNmMTNl
N2IyZDk2NjEyM2M5YWFiZDUyZjhmZDA3NmMxNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBA
QAorMjAxNi0wMy0wMyAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgRW5oYW5jZSBsb2dnaW5nOiBVc2UgImFsd2F5cyBvbiIgbWFjcm9zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ0OTkKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzI0NzU3NzMwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1ha2UgdXNlIG9mIG5ldyBsb2dnaW5nIG1hY3JvcyBieSByZXBvcnRpbmcg
b24gZnJhbWUgYW5kIHJlc291cmNlCisgICAgICAgIGRvd25sb2FkIGFjdGl2aXR5LgorCisgICAg
ICAgIENvbm5lY3Rpb24gdXBkYXRlZCB0byByZXBvcnQgSVBDIGVycm9ycywgaGVscGluZyB1cyBp
ZGVudGlmeSB3aGVuCisgICAgICAgIG1lc3NhZ2luZyBiZXR3ZWVuIHByb2Nlc3NlcyBicmVha3Mg
ZG93bi4KKworICAgICAgICBDaGlsZFByb2Nlc3MgdXBkYXRlZCB0byBsb2cgaWYgaXQgaXMgdGVy
bWluYXRpbmcgZWFybHkuIFNvbWUKKyAgICAgICAgc3lzZGlhZ25vc2UgbG9nZ2luZyBmcm9tIGN1
c3RvbWVycyBpbmRpY2F0ZSB0aGF0IHRoaXMgaXMgaGFwcGVuaW5nIGluCisgICAgICAgIHRoZSB3
aWxkLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtM
b2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGYWls
TG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGlu
dWVXaWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmlzTG9nZ2luZ0FsbG93ZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcDoK
KyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseSk6CisgICAgICAgICog
U2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmRpZENsb3NlT25Db25u
ZWN0aW9uV29ya1F1ZXVlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1
bGVMb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hSZXNvdXJjZUxv
YWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbFJlc291cmNl
TG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVz
b3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6aXNMb2dnaW5nQWxs
b3dlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6
CisKIDIwMTYtMDMtMDEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIE5ldHdvcmtDYWNoZTogV2ViIHByb2Nlc3MgbGVha3MgcmVzb3VyY2UgYnVm
ZmVyIHdoZW4gdXNpbmcgc2hhcmVhYmxlIHJlYXNvdXJjZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0Fzc2VydGlvbnMuaCBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaAppbmRleCBi
ZjJmMTlhMTQxZGQ5ZjZkM2Y5ODJlZTdhN2YzMjc0YzBhZDUyNThlLi5iNDhjODYyM2I3ZDVkNGJi
NDFmZGM3YWE2NjQ0NDEwMTQ2ZTYyNDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Bc3Nl
cnRpb25zLmgKKysrIGIvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5oCkBAIC0zODQsMTIgKzM4
NCwxMiBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIFdU
RkNyYXNoV2l0aFNlY3VyaXR5SW1wbGljYXRpb24oKQogCiAjZGVmaW5lIFdURl9MT0dHSU5HX1BS
RUZJWCAiI1dLOiAiCiAjaWYgTE9HX0FMV0FZU19ESVNBQkxFRAotI2RlZmluZSBMT0dfQUxXQVlT
KGZvcm1hdCwgLi4uKSAgICAgICAoKHZvaWQpMCkKLSNkZWZpbmUgTE9HX0FMV0FZU19FUlJPUihm
b3JtYXQsIC4uLikgV1RGUmVwb3J0RXJyb3IoX19GSUxFX18sIF9fTElORV9fLCBXVEZfUFJFVFRZ
X0ZVTkNUSU9OLCBmb3JtYXQsICMjX19WQV9BUkdTX18pCisjZGVmaW5lIExPR19BTFdBWVMoaXNB
bGxvd2VkLCBmb3JtYXQsIC4uLikgICAgICAgKCh2b2lkKTApCisjZGVmaW5lIExPR19BTFdBWVNf
RVJST1IoaXNBbGxvd2VkLCBmb3JtYXQsIC4uLikgV1RGUmVwb3J0RXJyb3IoX19GSUxFX18sIF9f
TElORV9fLCBXVEZfUFJFVFRZX0ZVTkNUSU9OLCBmb3JtYXQsICMjX19WQV9BUkdTX18pCiAjZWxz
ZQogI2RlZmluZSBXVEZfTE9HX0RFRkFVTFQgT1NfTE9HX0RFRkFVTFQKLSNkZWZpbmUgTE9HX0FM
V0FZUyhmb3JtYXQsIC4uLikgICAgICAgb3NfbG9nKFdURl9MT0dfREVGQVVMVCwgV1RGX0xPR0dJ
TkdfUFJFRklYIGZvcm1hdCwgIyNfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTE9HX0FMV0FZU19FUlJP
Uihmb3JtYXQsIC4uLikgb3NfbG9nX2Vycm9yKFdURl9MT0dfREVGQVVMVCwgV1RGX0xPR0dJTkdf
UFJFRklYIGZvcm1hdCwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgTE9HX0FMV0FZUyhpc0FsbG93
ZWQsIGZvcm1hdCwgLi4uKSAgICAgICBkbyB7IGlmIChpc0FsbG93ZWQpIG9zX2xvZyhXVEZfTE9H
X0RFRkFVTFQsIFdURl9MT0dHSU5HX1BSRUZJWCBmb3JtYXQsICMjX19WQV9BUkdTX18pOyB9IHdo
aWxlICgwKQorI2RlZmluZSBMT0dfQUxXQVlTX0VSUk9SKGlzQWxsb3dlZCwgZm9ybWF0LCAuLi4p
IGRvIHsgaWYgKGlzQWxsb3dlZCkgb3NfbG9nX2Vycm9yKFdURl9MT0dfREVGQVVMVCwgV1RGX0xP
R0dJTkdfUFJFRklYIGZvcm1hdCwgIyNfX1ZBX0FSR1NfXyk7IH0gd2hpbGUgKDApCiAjZW5kaWYK
IAogLyogUkVMRUFTRV9BU1NFUlQgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CmluZGV4IGNmN2Q2MjUzZGRkM2U5NWJmM2MzYzM1MzMwMzAwOTgwMDA3Y2ExYzAuLjI2Y2QzZmRh
NjQwZTUxZjQ2MzZhOTA3YTUxMjVjYzc5MzM4OWU5NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcApAQCAtMTQwLDYgKzE0MCwxMiBAQAogI2luY2x1ZGUgIldLQ29udGVudE9i
c2VydmF0aW9uLmgiCiAjZW5kaWYKIAorI2lmIExPR19BTFdBWVNfRElTQUJMRUQKKyNkZWZpbmUg
RlJBTUVMT0FERVJfTE9HX0FMV0FZUyguLi4pICgodm9pZCkwKQorI2Vsc2UKKyNkZWZpbmUgRlJB
TUVMT0FERVJfTE9HX0FMV0FZUyguLi4pIExPR19BTFdBWVMoaXNMb2dnaW5nQWxsb3dlZCgpLCBf
X1ZBX0FSR1NfXykKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CkBAIC0xMDg0LDYgKzEwOTAsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpz
dGFydGVkKCkKIAogdm9pZCBGcmFtZUxvYWRlcjo6cHJlcGFyZUZvckxvYWRTdGFydCgpCiB7Cisg
ICAgRlJBTUVMT0FERVJfTE9HX0FMV0FZUygiU3RhcnRpbmcgZnJhbWUgbG9hZCwgZnJhbWUgPSAl
cCwgbWFpbiA9ICVkIiwgJm1fZnJhbWUsIHN0YXRpY19jYXN0PGludD4obV9mcmFtZS5pc01haW5G
cmFtZSgpKSk7CisKICAgICBtX3Byb2dyZXNzVHJhY2tlci0+cHJvZ3Jlc3NTdGFydGVkKCk7CiAg
ICAgbV9jbGllbnQuZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogCkBAIC0yMjYz
LDYgKzIyNzEsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNG
cmFtZSgpCiAgICAgICAgICAgICBpZiAobV9zdGF0ZU1hY2hpbmUuY3JlYXRpbmdJbml0aWFsRW1w
dHlEb2N1bWVudCgpIHx8ICFtX3N0YXRlTWFjaGluZS5jb21taXR0ZWRGaXJzdFJlYWxEb2N1bWVu
dExvYWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgICAgIEZSQU1FTE9B
REVSX0xPR19BTFdBWVMoIkNvbW1pdHRlZCBmcmFtZSBsb2FkLCBmcmFtZSA9ICVwLCBtYWluID0g
JWQiLCAmbV9mcmFtZSwgc3RhdGljX2Nhc3Q8aW50PihtX2ZyYW1lLmlzTWFpbkZyYW1lKCkpKTsK
KwogICAgICAgICAgICAgbV9wcm9ncmVzc1RyYWNrZXItPnByb2dyZXNzQ29tcGxldGVkKCk7CiAg
ICAgICAgICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCk7CiAgICAgICAgICAgICBpZiAo
cGFnZSkgewpAQCAtMzU2Myw2ICszNTczLDExIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmFwcGx5U2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvTmV3RG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMCiAg
ICAgZG9jdW1lbnRMb2FkZXIuc2V0U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShzaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBseShtX2ZyYW1lLCBwcm9wYWdhdGVkUG9saWN5KSk7
CiB9CiAKK2Jvb2wgRnJhbWVMb2FkZXI6OmlzTG9nZ2luZ0FsbG93ZWQoKSBjb25zdAoreworICAg
IHJldHVybiBmcmFtZSgpLmlzTG9nZ2luZ0FsbG93ZWQoKTsKK30KKwogYm9vbCBGcmFtZUxvYWRl
ckNsaWVudDo6aGFzSFRNTFZpZXcoKSBjb25zdAogewogICAgIHJldHVybiB0cnVlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBkMDg3MzQxYzg2OWUwNTk1NDJkYzI2MGU5NTNh
MWY2MGEzZWU5ZWE5Li40Y2NiYmY5MmM0Y2M0MjEyYjJhYzYxOWVmZGU0N2IxMWZhMGVlMDQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtMjk2LDYgKzI5Niw4IEBAIHB1Ymxp
YzoKICAgICBjb25zdCBVUkwmIHByb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMKCkg
Y29uc3QgeyByZXR1cm4gbV9wcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTDsgfQog
ICAgIHZvaWQgc2V0UHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwoY29uc3QgVVJM
JiB1cmwpIHsgbV9wcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTCA9IHVybDsgfQog
CisgICAgYm9vbCBpc0xvZ2dpbmdBbGxvd2VkKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZW51
bSBGb3JtU3VibWlzc2lvbkNhY2hlTG9hZFBvbGljeSB7CiAgICAgICAgIE1heUF0dGVtcHRDYWNo
ZU9ubHlMb2FkRm9yRm9ybVN1Ym1pc3Npb25JdGVtLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggZDBjODIwYWQ0MDJlODlkOTRkNWVkOTIyOWYzYjliMzA2MGFl
OWM5Mi4uNjViZjA0MzdjNWI4MzBlMGMxNzA1NjAyYzNkMjlkMTU3YjJlNzcxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03NTQsNCArNzU0LDkgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6ZGlkQ3JlYXRlUXVpY2tMb29rSGFuZGxlKFF1aWNrTG9va0hhbmRs
ZSYgaGFuZGxlKQogfQogI2VuZGlmCiAKK2Jvb2wgUmVzb3VyY2VMb2FkZXI6OmlzTG9nZ2luZ0Fs
bG93ZWQoKSBjb25zdAoreworICAgIHJldHVybiBmcmFtZUxvYWRlcigpICYmIGZyYW1lTG9hZGVy
KCktPmlzTG9nZ2luZ0FsbG93ZWQoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuaAppbmRleCAxODliM2JjOGE4MWEwZWQ1MGNmNmI1OGIyM2Y0NmM0MGI0N2RkZWVj
Li44NTliNzJlMjQxYjY4ZTNmYmM3MDU3ZWQ3NmU3NTQwMmQ4N2RjNjRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtMTQ1LDYgKzE0NSw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHVuc2NoZWR1bGUoV1RGOjpTY2hlZHVsZVBhaXImKTsKICNlbmRpZgogCisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBpc0xvZ2dpbmdBbGxvd2VkKCkgY29uc3Q7CisKIHByb3RlY3RlZDoK
ICAgICBSZXNvdXJjZUxvYWRlcihGcmFtZSosIFJlc291cmNlTG9hZGVyT3B0aW9ucyk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAKaW5kZXggNTkyN2NiZmI5ZjQyZDdhZjcwODIzZjliODA4YmQ3M2IwNmE2
ZTJiNy4uYjBhYWUwNzI4ODdhOGQ1MDc3MjRiZjcxZjhmN2UyZDg0NDIyMWJjMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAKQEAgLTEwNTMsNCArMTA1Myw5IEBAIGJvb2wgRnJhbWU6OmlzVVJMQWxsb3dl
ZChjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBGcmFt
ZTo6aXNMb2dnaW5nQWxsb3dlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBhZ2UoKSAmJiBwYWdl
KCktPmlzTG9nZ2luZ0FsbG93ZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5oCmluZGV4IGEwMGE3YzgxMTNhNzY1ZGEyNThkODY4MjYzMmRiZjQwZTJlZWI4NGMu
Ljk0OGMwY2I3MTYxN2JjNTgxNmVlMjBiNjZhOWQwZjIxMDY3NzgxNjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmgKQEAgLTI3Miw2ICsyNzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wg
YWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBt
X2FjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkQ291bnQgPiAwOyB9CiAKICAg
ICAgICAgYm9vbCBpc1VSTEFsbG93ZWQoY29uc3QgVVJMJikgY29uc3Q7CisgICAgICAgIGJvb2wg
aXNMb2dnaW5nQWxsb3dlZCgpIGNvbnN0OwogCiAgICAgLy8gPT09PT09PT0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKaW5kZXggOGJkNDczZGNiYzQyOTM5ODIxZjJjYzU3NWUxNDcxMzk1ZGZiYTUzNC4uNzAw
OTNkOWJhMTBhYjU4NzVkMTZkZGYzNDNhMWFmMDExMTI3YTIwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CkBAIC0xOTEwLDQgKzE5MTAsOSBAQCB2b2lkIFBhZ2U6OnNldFJlc291cmNlVXNhZ2VPdmVybGF5
VmlzaWJsZShib29sIHZpc2libGUpCiB9CiAjZW5kaWYKIAorYm9vbCBQYWdlOjppc0xvZ2dpbmdB
bGxvd2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zZXNzaW9uSUQuaXNMb2dnaW5nQWxsb3dl
ZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGYwMWQ0
ZDhmMjcxYjIyMWM4ZDRhZWRlZWE5MjM4M2MyM2VkOWFmNzguLjdkOWI0MDBhMTc0ODYyMzVmMmVm
N2Q1ODBhNmRhYzQ4ZDE2OGMwYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC01MDEsNiArNTAxLDggQEAg
cHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUaW1lckFsaWdubWVudEludGVy
dmFsSW5jcmVhc2VMaW1pdChzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzKTsKIAorICAgIGJvb2wg
aXNMb2dnaW5nQWxsb3dlZCgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgaW5pdEdyb3VwKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vz
c2lvbklELmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nlc3Npb25JRC5oCmluZGV4IDBkYmFhMWI0
NzE1MTk4M2U3YTgwYjZkNjc2NTI0YTlkOWQwZTcxY2EuLmQ1Njk5YWU0MzdhYjg4NjlhMWM5ZWM1
NzZjZGRjZjRiYzZiYTIzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vzc2lv
bklELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXNzaW9uSUQuaApAQCAtNDIsNiArNDIs
NyBAQCBwdWJsaWM6CiAgICAgdWludDY0X3Qgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9z
ZXNzaW9uSUQ7IH0KICAgICBib29sIG9wZXJhdG9yPT0oU2Vzc2lvbklEIHNlc3Npb25JRCkgY29u
c3QgeyByZXR1cm4gbV9zZXNzaW9uSUQgPT0gc2Vzc2lvbklELm1fc2Vzc2lvbklEOyB9CiAgICAg
Ym9vbCBvcGVyYXRvciE9KFNlc3Npb25JRCBzZXNzaW9uSUQpIGNvbnN0IHsgcmV0dXJuIG1fc2Vz
c2lvbklEICE9IHNlc3Npb25JRC5tX3Nlc3Npb25JRDsgfQorICAgIGJvb2wgaXNMb2dnaW5nQWxs
b3dlZCgpIGNvbnN0IHsgcmV0dXJuICFpc0VwaGVtZXJhbCgpOyB9CiAKICAgICBzdGF0aWMgU2Vz
c2lvbklEIGVtcHR5U2Vzc2lvbklEKCkgeyByZXR1cm4gU2Vzc2lvbklEKDApOyB9CiAgICAgc3Rh
dGljIFNlc3Npb25JRCBkZWZhdWx0U2Vzc2lvbklEKCkgeyByZXR1cm4gU2Vzc2lvbklEKDEpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNw
cAppbmRleCA2NjAxOTQyMGIyMTJlMzc2YTUzZDg4NWY3OTc4NzkyMWZkNmI1Nzc4Li4zZGIwMTYx
MGQ0Y2EwNGQ5MzQ1NzI2ZDcyMzliNjcyOTQ0OGNhYjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKQEAgLTE4MCwxMyArMTgwLDM3
IEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZWxlYXNlTWVtb3J5KENyaXRpY2FsIGNy
aXRpY2FsLCBTeW5jaHJvbm91cyBzeW5jaHJvCiAgICAgfQogfQogCit2b2lkIE1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpsb2dNZW1vcnlVc2FnZUNoYW5nZSgpCit7CisjaWYg
IUxPR19BTFdBWVNfRElTQUJMRUQKKyNkZWZpbmUgU1RSSU5HX1NQRUNJRklDQVRJT04gIiV7cHVi
bGljfXMiCisjZGVmaW5lIE1FTU9SWVBSRVNTVVJFX0xPRyguLi4pIExPR19BTFdBWVModHJ1ZSwg
X19WQV9BUkdTX18pCisjZWxzZQorI2RlZmluZSBTVFJJTkdfU1BFQ0lGSUNBVElPTiAiJXMiCisj
ZGVmaW5lIE1FTU9SWVBSRVNTVVJFX0xPRyguLi4pIFdURkxvZ0Fsd2F5cyhfX1ZBX0FSR1NfXykK
KyNlbmRpZgorCisgICAgc2l6ZV90IGN1cnJlbnRNZW1vcnkgPSBwbGF0Zm9ybU1lbW9yeVVzYWdl
KCk7CisgICAgaWYgKGN1cnJlbnRNZW1vcnkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSkgfHwg
bV9pbml0aWFsTWVtb3J5ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpKSB7CisgICAgICAgIE1F
TU9SWVBSRVNTVVJFX0xPRygiUHJlc3N1cmUgcmVsaWVmOiAiIFNUUklOR19TUEVDSUZJQ0FUSU9O
ICI6IChVbmFibGUgdG8gZ2V0IGRpcnR5IG1lbW9yeSBpbmZvcm1hdGlvbiBmb3IgcHJvY2Vzcyki
LCBtX2xvZ1N0cmluZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzc2l6ZV90IG1l
bW9yeURpZmYgPSBjdXJyZW50TWVtb3J5IC0gbV9pbml0aWFsTWVtb3J5OworICAgIGlmIChtZW1v
cnlEaWZmIDwgMCkKKyAgICAgICAgTUVNT1JZUFJFU1NVUkVfTE9HKCJQcmVzc3VyZSByZWxpZWY6
ICIgU1RSSU5HX1NQRUNJRklDQVRJT04gIjogLWRpcnR5ICVsZCBieXRlcyAoZnJvbSAlbHUgdG8g
JWx1KSIsIG1fbG9nU3RyaW5nLCAobWVtb3J5RGlmZiAqIC0xKSwgbV9pbml0aWFsTWVtb3J5LCBj
dXJyZW50TWVtb3J5KTsKKyAgICBlbHNlIGlmIChtZW1vcnlEaWZmID4gMCkKKyAgICAgICAgTUVN
T1JZUFJFU1NVUkVfTE9HKCJQcmVzc3VyZSByZWxpZWY6ICIgU1RSSU5HX1NQRUNJRklDQVRJT04g
IjogK2RpcnR5ICVsZCBieXRlcyAoZnJvbSAlbHUgdG8gJWx1KSIsIG1fbG9nU3RyaW5nLCBtZW1v
cnlEaWZmLCBtX2luaXRpYWxNZW1vcnksIGN1cnJlbnRNZW1vcnkpOworICAgIGVsc2UKKyAgICAg
ICAgTUVNT1JZUFJFU1NVUkVfTE9HKCJQcmVzc3VyZSByZWxpZWY6ICIgU1RSSU5HX1NQRUNJRklD
QVRJT04gIjogPWRpcnR5IChhdCAlbHUgYnl0ZXMpIiwgbV9sb2dTdHJpbmcsIGN1cnJlbnRNZW1v
cnkpOworfQorCiAjaWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhT1MoTElOVVgpICYmICFQTEFURk9S
TShXSU4pCiB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aW5zdGFsbCgpIHsgfQogdm9pZCBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnVuaW5zdGFsbCgpIHsgfQogdm9pZCBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OmhvbGRPZmYodW5zaWduZWQpIHsgfQogdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRs
ZXI6OnJlc3BvbmRUb01lbW9yeVByZXNzdXJlKENyaXRpY2FsLCBTeW5jaHJvbm91cykgeyB9CiB2
b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cGxhdGZvcm1SZWxlYXNlTWVtb3J5KENyaXRpY2Fs
KSB7IH0KLXZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OnBsYXRmb3Jt
TG9nKCkgeyB9CiBzaXplX3QgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OnBs
YXRmb3JtTWVtb3J5VXNhZ2UoKSB7IHJldHVybiAwOyB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaAppbmRleCBiYzQxNTI3ZDVi
ZDA0YzFkYjlmZWZkMjEzZDMzOGVhZGJlNzMzOTAzLi43MTE0ZDJjMjU3NWE5OWYxMGQzOTJhMmI2
NjAxYjQ3N2Y3ZjdkZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1v
cnlQcmVzc3VyZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuaApAQCAtODcsMTQgKzg3LDIyIEBAIHB1YmxpYzoKICAgICBwdWJsaWM6
CiAgICAgICAgIGV4cGxpY2l0IFJlbGllZkxvZ2dlcihjb25zdCBjaGFyICpsb2cpCiAgICAgICAg
ICAgICA6IG1fbG9nU3RyaW5nKGxvZykKKyNpZiAhTE9HX0FMV0FZU19ESVNBQkxFRAorICAgICAg
ICAgICAgLCBtX2luaXRpYWxNZW1vcnkocGxhdGZvcm1NZW1vcnlVc2FnZSgpKQorI2Vsc2UKICAg
ICAgICAgICAgICwgbV9pbml0aWFsTWVtb3J5KHNfbG9nZ2luZ0VuYWJsZWQgPyBwbGF0Zm9ybU1l
bW9yeVVzYWdlKCkgOiAwKQorI2VuZGlmCiAgICAgICAgIHsKICAgICAgICAgfQogCiAgICAgICAg
IH5SZWxpZWZMb2dnZXIoKQogICAgICAgICB7CisjaWYgIUxPR19BTFdBWVNfRElTQUJMRUQKKyAg
ICAgICAgICAgIGxvZ01lbW9yeVVzYWdlQ2hhbmdlKCk7CisjZWxzZQogICAgICAgICAgICAgaWYg
KHNfbG9nZ2luZ0VuYWJsZWQpCi0gICAgICAgICAgICAgICAgcGxhdGZvcm1Mb2coKTsKKyAgICAg
ICAgICAgICAgICBsb2dNZW1vcnlVc2FnZUNoYW5nZSgpOworI2VuZGlmCiAgICAgICAgIH0KIAog
ICAgICAgICBjb25zdCBjaGFyKiBsb2dTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX2xvZ1N0cmlu
ZzsgfQpAQCAtMTAzLDcgKzExMSw3IEBAIHB1YmxpYzoKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IHNpemVfdCBwbGF0Zm9ybU1lbW9yeVVzYWdlKCk7Ci0gICAgICAgIHZvaWQgcGxhdGZvcm1Mb2co
KTsKKyAgICAgICAgdm9pZCBsb2dNZW1vcnlVc2FnZUNoYW5nZSgpOwogCiAgICAgICAgIGNvbnN0
IGNoYXIqIG1fbG9nU3RyaW5nOwogICAgICAgICBzaXplX3QgbV9pbml0aWFsTWVtb3J5OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5k
bGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXJDb2NvYS5tbQppbmRleCA2YzI1MmI1ZjJjODU5MjA5MGQ3MTQ5OThjNWZmNzI1MTIw
Y2M3N2MyLi5lOTQ1NmEzOWNmYzZhM2Q4M2RkMzkyMmE5NTNlN2U5M2ViMTE1Mjg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXJDb2NvYS5tbQpAQCAtMjM0LDIzICsyMzQsNiBAQCBzaXplX3QgTWVtb3J5UHJlc3N1
cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OnBsYXRmb3JtTWVtb3J5VXNhZ2UoKQogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxzaXplX3Q+KHZtSW5mby5pbnRlcm5hbCk7CiB9CiAKLXZvaWQgTWVtb3J5
UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OnBsYXRmb3JtTG9nKCkKLXsKLSAgICBzaXpl
X3QgY3VycmVudE1lbW9yeSA9IHBsYXRmb3JtTWVtb3J5VXNhZ2UoKTsKLSAgICBpZiAoY3VycmVu
dE1lbW9yeSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKSB8fCBtX2luaXRpYWxNZW1vcnkgPT0g
c3RhdGljX2Nhc3Q8c2l6ZV90PigtMSkpIHsKLSAgICAgICAgTlNMb2coQCIlcyAoVW5hYmxlIHRv
IGdldCBkaXJ0eSBtZW1vcnkgaW5mb3JtYXRpb24gZm9yIHByb2Nlc3MpXG4iLCBtX2xvZ1N0cmlu
Zyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzc2l6ZV90IG1lbW9yeURpZmYgPSBj
dXJyZW50TWVtb3J5IC0gbV9pbml0aWFsTWVtb3J5OwotICAgIGlmIChtZW1vcnlEaWZmIDwgMCkK
LSAgICAgICAgTlNMb2coQCJQcmVzc3VyZSByZWxpZWY6ICVzOiAtZGlydHkgJWxkIGJ5dGVzIChm
cm9tICVsZCB0byAlbGQpXG4iLCBtX2xvZ1N0cmluZywgKG1lbW9yeURpZmYgKiAtMSksIG1faW5p
dGlhbE1lbW9yeSwgY3VycmVudE1lbW9yeSk7Ci0gICAgZWxzZSBpZiAobWVtb3J5RGlmZiA+IDAp
Ci0gICAgICAgIE5TTG9nKEAiUHJlc3N1cmUgcmVsaWVmOiAlczogK2RpcnR5ICVsZCBieXRlcyAo
ZnJvbSAlbGQgdG8gJWxkKVxuIiwgbV9sb2dTdHJpbmcsIG1lbW9yeURpZmYsIG1faW5pdGlhbE1l
bW9yeSwgY3VycmVudE1lbW9yeSk7Ci0gICAgZWxzZQotICAgICAgICBOU0xvZyhAIlByZXNzdXJl
IHJlbGllZjogJXM6ID1kaXJ0eSAoYXQgJWxkIGJ5dGVzKVxuIiwgbV9sb2dTdHJpbmcsIGN1cnJl
bnRNZW1vcnkpOwotfQotCiAjaWYgUExBVEZPUk0oSU9TKQogc3RhdGljIHZvaWQgcmVzcG9uZFRv
TWVtb3J5UHJlc3N1cmVDYWxsYmFjayhDRlJ1bkxvb3BPYnNlcnZlclJlZiBvYnNlcnZlciwgQ0ZS
dW5Mb29wQWN0aXZpdHkgLyphY3Rpdml0eSovLCB2b2lkKiAvKmluZm8qLykKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L01lbW9yeVByZXNzdXJlSGFuZGxlckxp
bnV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L01lbW9yeVByZXNzdXJlSGFu
ZGxlckxpbnV4LmNwcAppbmRleCBmZWI2OWJkYmYzZWYzOWY1MDBmMjg3OWZjMDkzYTJlNWQzMDIy
MDM1Li5kMGQxMzZhY2MxMzRlYmU5OTcxYmM0MWRkMzA1NDUyYTNhNDUxMTk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgvTWVtb3J5UHJlc3N1cmVI
YW5kbGVyTGludXguY3BwCkBAIC0yMDcsMjMgKzIwNyw2IEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVI
YW5kbGVyOjpwbGF0Zm9ybVJlbGVhc2VNZW1vcnkoQ3JpdGljYWwpCiAjZW5kaWYKIH0KIAotdm9p
ZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1Mb2coKQotewot
ICAgIHNpemVfdCBjdXJyZW50TWVtb3J5ID0gcGxhdGZvcm1NZW1vcnlVc2FnZSgpOwotICAgIGlm
IChjdXJyZW50TWVtb3J5ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpIHx8IG1faW5pdGlhbE1l
bW9yeSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKSkgewotICAgICAgICBMT0coTWVtb3J5UHJl
c3N1cmUsICIlcyAoVW5hYmxlIHRvIGdldCBkaXJ0eSBtZW1vcnkgaW5mb3JtYXRpb24gZm9yIHBy
b2Nlc3MpIiwgbV9sb2dTdHJpbmcpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc3Np
emVfdCBtZW1vcnlEaWZmID0gY3VycmVudE1lbW9yeSAtIG1faW5pdGlhbE1lbW9yeTsKLSAgICBp
ZiAobWVtb3J5RGlmZiA8IDApCi0gICAgICAgIExPRyhNZW1vcnlQcmVzc3VyZSwgIlByZXNzdXJl
IHJlbGllZjogJXM6IC1kaXJ0eSAlbHUgYnl0ZXMgKGZyb20gJWx1IHRvICVsdSkiLCBtX2xvZ1N0
cmluZywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obWVtb3J5RGlmZiAqIC0xKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgbG9uZz4obV9pbml0aWFsTWVtb3J5KSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgbG9uZz4oY3VycmVudE1lbW9yeSkpOwotICAgIGVsc2UgaWYgKG1lbW9yeURpZmYgPiAwKQot
ICAgICAgICBMT0coTWVtb3J5UHJlc3N1cmUsICJQcmVzc3VyZSByZWxpZWY6ICVzOiArZGlydHkg
JWx1IGJ5dGVzIChmcm9tICVsdSB0byAlbHUpIiwgbV9sb2dTdHJpbmcsIHN0YXRpY19jYXN0PHVu
c2lnbmVkIGxvbmc+KG1lbW9yeURpZmYpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihtX2lu
aXRpYWxNZW1vcnkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihjdXJyZW50TWVtb3J5KSk7
Ci0gICAgZWxzZQotICAgICAgICBMT0coTWVtb3J5UHJlc3N1cmUsICJQcmVzc3VyZSByZWxpZWY6
ICVzOiA9ZGlydHkgKGF0ICVsdSBieXRlcykiLCBtX2xvZ1N0cmluZywgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgbG9uZz4oY3VycmVudE1lbW9yeSkpOwotfQotCiBzaXplX3QgTWVtb3J5UHJlc3N1cmVI
YW5kbGVyOjpSZWxpZWZMb2dnZXI6OnBsYXRmb3JtTWVtb3J5VXNhZ2UoKQogewogICAgIEZJTEUq
IGZpbGUgPSBmb3BlbihzX3Byb2Nlc3NTdGF0dXMsICJyIik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vTWVtb3J5UHJlc3N1cmVIYW5kbGVyV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NZW1vcnlQcmVzc3VyZUhhbmRsZXJXaW4uY3BwCmluZGV4
IDBkNTIzYjg4YTYwMTc2YzY3ZjE3YzIzODVhZTNmZjVkMTY3ZjMxMjkuLmRjOTdjNzMxNjFiZmE3
MzI5Y2YyMzlmMTRkMTFiNzc3YTk5YjZkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9NZW1vcnlQcmVzc3VyZUhhbmRsZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9NZW1vcnlQcmVzc3VyZUhhbmRsZXJXaW4uY3BwCkBAIC0xMjgsOCAr
MTI4LDQgQEAgc2l6ZV90IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpwbGF0
Zm9ybU1lbW9yeVVzYWdlKCkKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1Mb2coKQotewotfQotCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBlOWM5ZTYwNTdkNDI5OTg0ZGFmMzJmNDQ0
MTcyY2QxZDVjMTNlMTdiLi5hOTNlZjc3ZmYxZDgwZjM4YWU5Nzc4N2Q3Y2VlZTE1MzczNmY3NTVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTQ2LDYgKzQ2LDEyIEBACiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCisjaWYgTE9HX0FMV0FZU19ESVNBQkxFRAorI2RlZmluZSBORVRXT1JLUkVTT1VS
Q0VMT0FERVJfTE9HX0FMV0FZUyguLi4pICgodm9pZCkwKQorI2Vsc2UKKyNkZWZpbmUgTkVUV09S
S1JFU09VUkNFTE9BREVSX0xPR19BTFdBWVMoLi4uKSBMT0dfQUxXQVlTKGlzTG9nZ2luZ0FsbG93
ZWQoKSwgX19WQV9BUkdTX18pCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVj
dCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZERhdGEgewpAQCAtMjAwLDYg
KzIwNiw4IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JD
YWNoZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAjZW5kaWYKIAorICAgIE5FVFdPUktSRVNP
VVJDRUxPQURFUl9MT0dfQUxXQVlTKCJTdGFydGluZyBuZXR3b3JrIHJlc291cmNlIGxvYWQ6IHBh
Z2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCBpc01haW5SZXNvdXJjZSA9ICVkIiwgbV9wYXJh
bWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIGlzTWFpblJlc291cmNl
KCkpOworCiAgICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBtX3BhcmFtZXRl
cnM7CiAgICAgcGFyYW1ldGVycy5kZWZlcnNMb2FkaW5nID0gbV9kZWZlcnNMb2FkaW5nOwogICAg
IHBhcmFtZXRlcnMucmVxdWVzdCA9IHJlcXVlc3Q7CkBAIC0yNzEsNiArMjc5LDggQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmFib3J0KCkKIAogYXV0byBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWNlaXZlZFJl
c3BvbnNlKSAtPiBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZQogeworICAgIE5FVFdP
UktSRVNPVVJDRUxPQURFUl9MT0dfQUxXQVlTKCJSZWNlaXZlZCBuZXR3b3JrIHJlc291cmNlIHJl
c3BvbnNlOiBwYWdlSUQgPSAlbGx1LCBmcmFtZUlEID0gJWxsdSwgaXNNYWluUmVzb3VyY2UgPSAl
ZCIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBpc01h
aW5SZXNvdXJjZSgpKTsKKwogICAgIG1fcmVzcG9uc2UgPSByZWNlaXZlZFJlc3BvbnNlOwogCiAg
ICAgLy8gRm9yIG11bHRpcGFydC94LW1peGVkLXJlcGxhY2UgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5
bmMgZ2V0cyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgYW5kIGJ1ZmZlcmluZyB3b3VsZCByZXF1aXJl
IHNwZWNpYWwgaGFuZGxpbmcuCkBAIC0zMDEsOCArMzExLDExIEBAIGF1dG8gTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVj
ZWl2ZWRSCiAgICAgICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCiAgICAgICAgICAgICBtX3N5bmNo
cm9ub3VzTG9hZERhdGEtPnJlc3BvbnNlID0gbV9yZXNwb25zZTsKICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICBpZiAoIXNlbmRBYm9ydGluZ09uRmFpbHVyZShNZXNzYWdlczo6V2ViUmVzb3Vy
Y2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZShtX3Jlc3BvbnNlLCBzaG91bGRXYWl0Q29udGlu
dWVEaWRSZWNlaXZlUmVzcG9uc2UpKSkKKyAgICAgICAgICAgIE5FVFdPUktSRVNPVVJDRUxPQURF
Ul9MT0dfQUxXQVlTKCJTZW5kaW5nIGRpZFJlY2VpdmVSZXNwb25zZSBtZXNzYWdlIHRvIHRoZSBX
ZWJDb250ZW50IHByb2Nlc3M6IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCBpc01haW5S
ZXNvdXJjZSA9ICVkIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsIGlzTWFpblJlc291cmNlKCkpOworICAgICAgICAgICAgaWYgKCFzZW5kQWJvcnRpbmdP
bkZhaWx1cmUoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2Uo
bV9yZXNwb25zZSwgc2hvdWxkV2FpdENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKSkpIHsKKyAg
ICAgICAgICAgICAgICBORVRXT1JLUkVTT1VSQ0VMT0FERVJfTE9HX0FMV0FZUygiRmFpbGVkIHRv
IHNlbmQgdGhlIGRpZFJlY2VpdmVSZXNwb25zZSBJUEMgbWVzc2FnZSB0byB0aGUgV2ViQ29udGVu
dCBwcm9jZXNzOiBwYWdlSUQgPSAlbGx1LCBmcmFtZUlEID0gJWxsdSwgaXNNYWluUmVzb3VyY2Ug
PSAlZCIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBp
c01haW5SZXNvdXJjZSgpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gU2hvdWxkQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2U6Ok5vOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQog
CkBAIC0zMTIsNiArMzI1LDExIEBAIGF1dG8gTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVjZWl2ZWRSCiAgICAgc2hvdWxk
Q29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgPSBzaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZSB8fCBtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uOwogI2VuZGlmCiAKKyAgICBpZiAoc2hv
dWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpCisgICAgICAgIE5FVFdPUktSRVNPVVJDRUxP
QURFUl9MT0dfQUxXQVlTKCJTaG91bGQgd2FpdCBmb3IgbWVzc2FnZSBmcm9tIFdlYkNvbnRlbnQg
cHJvY2VzcyBiZWZvcmUgY29udGludWluZyByZXNvdXJjZSBsb2FkOiBwYWdlSUQgPSAlbGx1LCBm
cmFtZUlEID0gJWxsdSwgaXNNYWluUmVzb3VyY2UgPSAlZCIsIG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBpc01haW5SZXNvdXJjZSgpKTsKKyAgICBlbHNl
CisgICAgICAgIE5FVFdPUktSRVNPVVJDRUxPQURFUl9MT0dfQUxXQVlTKCJTaG91bGQgbm90IHdh
aXQgZm9yIG1lc3NhZ2UgZnJvbSBXZWJDb250ZW50IHByb2Nlc3MgYmVmb3JlIGNvbnRpbnVpbmcg
cmVzb3VyY2UgbG9hZDogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIGlzTWFpblJlc291
cmNlID0gJWQiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJ
RCwgaXNNYWluUmVzb3VyY2UoKSk7CisKICAgICByZXR1cm4gc2hvdWxkQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2UgPyBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZTo6WWVzIDogU2hv
dWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2U6Ok5vOwogfQogCkBAIC0zNDQsNiArMzYyLDgg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludAogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGltZSkKIHsKKyAgICBORVRXT1JLUkVTT1VS
Q0VMT0FERVJfTE9HX0FMV0FZUygiRmluaXNoZWQgbG9hZGluZyBuZXR3b3JrIHJlc291cmNlOiBw
YWdlSUQgPSAlbGx1LCBmcmFtZUlEID0gJWxsdSwgaXNNYWluUmVzb3VyY2UgPSAlZCwgZmluaXNo
VGltZSA9ICVmIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQsIGlzTWFpblJlc291cmNlKCksIGZpbmlzaFRpbWUpOworCiAjaWYgRU5BQkxFKE5FVFdPUktf
Q0FDSEUpCiAgICAgaWYgKG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pIHsKICAgICAgICAgLy8g
MzA0IE5vdCBNb2RpZmllZApAQCAtMzc1LDYgKzM5NSw4IEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKQogCiB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpCiB7CisgICAgTkVUV09SS1JFU09VUkNFTE9BREVSX0xPR19BTFdBWVMoIkZhaWxlZCBsb2Fk
aW5nIG5ldHdvcmsgcmVzb3VyY2U6IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCBpc01h
aW5SZXNvdXJjZSA9ICVkIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQsIGlzTWFpblJlc291cmNlKCkpOworCiAgICAgQVNTRVJUKCFlcnJvci5pc051bGwo
KSk7CiAKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRSkKQEAgLTQxOSw2ICs0NDEsOCBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGlu
dWVXaWxsU2VuZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KQogewor
ICAgIE5FVFdPUktSRVNPVVJDRUxPQURFUl9MT0dfQUxXQVlTKCJGb2xsb3dpbmcgcmVkaXJlY3Qg
b2YgbmV0d29yayByZXNvdXJjZTogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIGlzTWFp
blJlc291cmNlID0gJWQiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgaXNNYWluUmVzb3VyY2UoKSk7CisKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRSkK
ICAgICBpZiAobV9pc1dhaXRpbmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGly
ZWN0KSB7CiAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIFJldHJp
ZXZpbmcgY2FjaGVkIHJlZGlyZWN0Iik7CkBAIC02MjQsNCArNjQ4LDkgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25T
cGFjZShib29sIHIKIH0KICNlbmRpZgogCitib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aXNM
b2dnaW5nQWxsb3dlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNlc3Npb25JRCgpLmlzTG9nZ2lu
Z0FsbG93ZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IDll
MGFkODNjNmFmYzc5NTdmZmI5MzI2ODE4NDQ0NTQzNTM3YzRmZWMuLmZkNGVjZTJlODUzMWNiYzk0
MGQwZDdmMjVhNWI2MTExYTJiMzM0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC05OCw2ICs5OCw5IEBAIHB1
YmxpYzoKICAgICAKICAgICB2b2lkIGRpZENvbnZlcnRUb0Rvd25sb2FkKCk7CiAKKyAgICBib29s
IGlzTWFpblJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLnJlcXVlc3QucmVx
dWVzdGVyKCkgPT0gV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6Ok1haW47IH0K
KyAgICBib29sIGlzTG9nZ2luZ0FsbG93ZWQoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBOZXR3
b3JrUmVzb3VyY2VMb2FkZXIoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmLCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlZlB0cjxNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBs
eT4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAppbmRl
eCA4MTY2YzlhMmU5NGI4MDMyODNmM2JlNzhmMGMwYTk2YzllNWE4NGJjLi42M2MzMjFmYzE3OWZh
ZjM1ZDdkNzg0ZmE2MjdjMTUzY2YyOWI2ZTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC0zNCw2ICszNCwxMiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgog
CisjaWYgTE9HX0FMV0FZU19ESVNBQkxFRAorI2RlZmluZSBDT05ORUNUSU9OX0xPR19BTFdBWVMo
Li4uKSAoKHZvaWQpMCkKKyNlbHNlCisjZGVmaW5lIENPTk5FQ1RJT05fTE9HX0FMV0FZUyguLi4p
IExPR19BTFdBWVModHJ1ZSwgX19WQV9BUkdTX18pCisjZW5kaWYKKwogbmFtZXNwYWNlIElQQyB7
CiAKIHN0cnVjdCBXYWl0Rm9yTWVzc2FnZVN0YXRlIHsKQEAgLTU3NSw2ICs1ODEsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+IENvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVwbHko
dWludDY0X3Qgc3luY1JlcXVlcwogICAgICAgICAvLyBJZiB0aGF0IGhhcHBlbnMsIHdlIG5lZWQg
dG8gc3RvcCB3YWl0aW5nLCBvciB3ZSdsbCBoYW5nIHNpbmNlIHdlIHdvbid0IGdldAogICAgICAg
ICAvLyBhbnkgbW9yZSBpbmNvbWluZyBtZXNzYWdlcy4KICAgICAgICAgaWYgKCFpc1ZhbGlkKCkp
IHsKKyAgICAgICAgICAgIENPTk5FQ1RJT05fTE9HX0FMV0FZUygiQ29ubmVjdGlvbjo6d2FpdEZv
clN5bmNSZXBseTogQ29ubmVjdGlvbiBubyBsb25nZXIgdmFsaWQsIGlkPSVsbHUiLCBzeW5jUmVx
dWVzdElEKTsKICAgICAgICAgICAgIGRpZFJlY2VpdmVTeW5jUmVwbHkoc3luY1NlbmRGbGFncyk7
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQpAQCAtNTg1LDYgKzU5Miw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvclN5
bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzCiAgICAgICAgIHRpbWVkT3V0ID0gIVN5bmNNZXNz
YWdlU3RhdGU6OnNpbmdsZXRvbigpLndhaXQoYWJzb2x1dGVUaW1lKTsKICAgICB9CiAKKyAgICBD
T05ORUNUSU9OX0xPR19BTFdBWVMoIkNvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVwbHk6IFRpbWVk
LW91dCB3aGlsZSB3YWl0aW5nIGZvciByZXBseSwgaWQ9JWxsdSIsIHN5bmNSZXF1ZXN0SUQpOwog
ICAgIGRpZFJlY2VpdmVTeW5jUmVwbHkoc3luY1NlbmRGbGFncyk7CiAKICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAKaW5kZXggM2IzYzEyYTZi
OWE4NWU4YmU4NDBhZDFiMjkxNDEzNDNmMjFmMTVkNS4uMWNkM2E0Y2RkOGNhMTMyNWE4NWFlZGE1
YThmMWM5ZTIwMDkzZTQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxk
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAK
QEAgLTI5LDYgKzI5LDEyIEBACiAjaW5jbHVkZSAiU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1l
dGVycy5oIgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogCisjaWYgTE9HX0FMV0FZU19ESVNBQkxFRAor
I2RlZmluZSBDSElMRFBST0NFU1NfTE9HX0FMV0FZUyguLi4pICgodm9pZCkwKQorI2Vsc2UKKyNk
ZWZpbmUgQ0hJTERQUk9DRVNTX0xPR19BTFdBWVMoLi4uKSBMT0dfQUxXQVlTKHRydWUsIF9fVkFf
QVJHU19fKQorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBDaGlsZFByb2Nlc3M6OkNo
aWxkUHJvY2VzcygpCkBAIC01Myw2ICs1OSw3IEBAIHN0YXRpYyB2b2lkIGRpZENsb3NlT25Db25u
ZWN0aW9uV29ya1F1ZXVlKElQQzo6Q29ubmVjdGlvbiopCiAgICAgICAgIC8vIFdlIHVzZSBfZXhp
dCBoZXJlIHNpbmNlIHRoZSB3YXRjaGRvZyBjYWxsYmFjayBpcyBjYWxsZWQgZnJvbSBhbm90aGVy
IHRocmVhZCBhbmQgd2UgZG9uJ3Qgd2FudAogICAgICAgICAvLyBnbG9iYWwgZGVzdHJ1Y3RvcnMg
b3IgYXRleGl0IGhhbmRsZXJzIHRvIGJlIGNhbGxlZCBmcm9tIHRoaXMgdGhyZWFkIHdoaWxlIHRo
ZSBtYWluIHRocmVhZCBpcyBidXN5CiAgICAgICAgIC8vIGRvaW5nIGl0cyB0aGluZy4KKyAgICAg
ICAgQ0hJTERQUk9DRVNTX0xPR19BTFdBWVMoIkV4aXRpbmcgcHJvY2VzcyBlYXJseSBkdWUgdG8g
dW5hY2tub3dsZWRnZWQgY2xvc2VkLWNvbm5lY3Rpb24iKTsKICAgICAgICAgX2V4aXQoRVhJVF9G
QUlMVVJFKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IGYxOGRkZDJjNTZlOWY2NDll
YzMyYTQzNTY2ODJlNDAzZGM1YTI3YjcuLmY3YmJkNzhmMGNmOGRjNTI2NDVmYzJlMWUzZmM4ZjRj
MWVhOGZmZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtNTcsNiArNTcsMTIgQEAKIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKKyNpZiBMT0dfQUxXQVlTX0RJU0FCTEVECisjZGVmaW5lIFdFQkxP
QURFUlNUUkFURUdZX0xPR19BTFdBWVMoLi4uKSAoKHZvaWQpMCkKKyNlbHNlCisjZGVmaW5lIFdF
QkxPQURFUlNUUkFURUdZX0xPR19BTFdBWVMoLi4uKSBMT0dfQUxXQVlTKGxvYWRQYXJhbWV0ZXJz
LnNlc3Npb25JRC5pc0xvZ2dpbmdBbGxvd2VkKCksIF9fVkFfQVJHU19fKQorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBXZWJMb2FkZXJTdHJhdGVneTo6V2ViTG9hZGVyU3RyYXRlZ3ko
KQpAQCAtMTcwLDggKzE3Niw2IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9h
ZChSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAgICAgfQogI2Vu
ZGlmCiAKLSAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVy
U3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBzY2hlZHVsZWQgd2l0aCB0
aGUgTmV0d29ya1Byb2Nlc3Mgd2l0aCBwcmlvcml0eSAlZCIsIHJlc291cmNlTG9hZGVyLT51cmwo
KS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVy
LT5yZXF1ZXN0KCkucHJpb3JpdHkoKSkpOwotCiAgICAgQ29udGVudFNuaWZmaW5nUG9saWN5IGNv
bnRlbnRTbmlmZmluZ1BvbGljeSA9IHJlc291cmNlTG9hZGVyLT5zaG91bGRTbmlmZkNvbnRlbnQo
KSA/IFNuaWZmQ29udGVudCA6IERvTm90U25pZmZDb250ZW50OwogICAgIFN0b3JlZENyZWRlbnRp
YWxzIGFsbG93U3RvcmVkQ3JlZGVudGlhbHMgPSByZXNvdXJjZUxvYWRlci0+c2hvdWxkVXNlQ3Jl
ZGVudGlhbFN0b3JhZ2UoKSA/IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMgOiBEb05vdEFsbG93U3Rv
cmVkQ3JlZGVudGlhbHM7CiAKQEAgLTE5OSw2ICsyMDMsOSBAQCB2b2lkIFdlYkxvYWRlclN0cmF0
ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyLCBDYWNoZWRS
ZXNvdQogCiAgICAgQVNTRVJUKChsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQgJiYgbG9hZFBhcmFt
ZXRlcnMud2ViRnJhbWVJRCkgfHwgbG9hZFBhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGlj
eSA9PSBEb05vdEFza0NsaWVudEZvckFueUNyZWRlbnRpYWxzKTsKIAorICAgIExPRyhOZXR3b3Jr
U2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2Fk
LCB1cmwgJyVzJyB3aWxsIGJlIHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyB3aXRo
IHByaW9yaXR5ICVkIiwgcmVzb3VyY2VMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRh
dGEoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci0+cmVxdWVzdCgpLnByaW9yaXR5
KCkpKTsKKyAgICBXRUJMT0FERVJTVFJBVEVHWV9MT0dfQUxXQVlTKCIoV2ViUHJvY2VzcykgV2Vi
TG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVs
bHUgd2lsbCBiZSBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3Mgd2l0aCBwcmlvcml0
eSAlZCIsIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJ
RCwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci0+cmVxdWVzdCgpLnByaW9yaXR5KCkp
KTsKKwogICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24o
KS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6U2NoZWR1bGVSZXNvdXJjZUxvYWQobG9hZFBhcmFtZXRlcnMpLCAwKSkgewogICAgICAg
ICAvLyBXZSBwcm9iYWJseSBmYWlsZWQgdG8gc2NoZWR1bGUgdGhpcyBsb2FkIHdpdGggdGhlIE5l
dHdvcmtQcm9jZXNzIGJlY2F1c2UgaXQgaGFkIGNyYXNoZWQuCiAgICAgICAgIC8vIFRoaXMgbG9h
ZCB3aWxsIG5ldmVyIHN1Y2NlZWQgc28gd2Ugd2lsbCBzY2hlZHVsZSBpdCB0byBmYWlsIGFzeW5j
aHJvbm91c2x5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMmEwZjU1OWFjZjVkMmM2NjBjYzkwNGM4NWY5
OTkwZGU1MzVhZGY3Zi4uMmIyZDZlOWY0NGQ0YmRkNTU3NzM2YTJjNzBhZjJmMDhkMDg2NmY0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC00Miw2ICs0MiwxMiBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAorI2lmIExPR19BTFdBWVNfRElTQUJMRUQKKyNkZWZpbmUgV0VCUkVTT1VSQ0VMT0FE
RVJfTE9HX0FMV0FZUyguLi4pICgodm9pZCkwKQorI2Vsc2UKKyNkZWZpbmUgV0VCUkVTT1VSQ0VM
T0FERVJfTE9HX0FMV0FZUyguLi4pIExPR19BTFdBWVMoaXNMb2dnaW5nQWxsb3dlZCgpLCBfX1ZB
X0FSR1NfXykKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogUmVmPFdlYlJlc291cmNl
TG9hZGVyPiBXZWJSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKFBhc3NSZWZQdHI8UmVzb3VyY2VMb2Fk
ZXI+IGNvcmVMb2FkZXIpCkBAIC03NSw3ICs4MSw4IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6
OmRldGFjaEZyb21Db3JlTG9hZGVyKCkKIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNl
bmRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcHJvcG9zZWRSZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQogewotICAgIExPRyhOZXR3b3JrLCAi
KFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QgdG8gJyVzJyIs
IHByb3Bvc2VkUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0co
TmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0
IHRvICclcyciLCBwcm9wb3NlZFJlcXVlc3QudXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgp
KTsKKyAgICBXRUJSRVNPVVJDRUxPQURFUl9MT0dfQUxXQVlTKCIoV2ViUHJvY2VzcykgV2ViUmVz
b3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCB0byAlcCIsICZwcm9wb3NlZFJlcXVlc3QudXJs
KCkpOwogCiAgICAgUmVmUHRyPFdlYlJlc291cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOwogCkBA
IC05OCw3ICsxMDUsOCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRTZW5kRGF0YSh1aW50
NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlUwogCiB2b2lkIFdlYlJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCiB7Ci0g
ICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZSBmb3IgJyVzJy4gU3RhdHVzICVkLiIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CisgICAgTE9H
KE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZSBmb3IgJyVzJy4gU3RhdHVzICVkLiIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCku
bGF0aW4xKCkuZGF0YSgpLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKKyAgICBXRUJSRVNP
VVJDRUxPQURFUl9MT0dfQUxXQVlTKCIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZSBmb3IgJXAuIFN0YXR1cyAlZC4iLCAmbV9jb3JlTG9hZGVyLT51cmwo
KSwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CiAKICAgICBSZWY8V2ViUmVzb3VyY2VMb2Fk
ZXI+IHByb3RlY3QoKnRoaXMpOwogCkBAIC0xMjksNyArMTM3LDggQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBib28KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogewot
ICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YSBvZiBzaXplICVpIGZvciAnJXMnIiwgKGludClkYXRhLnNpemUoKSwgbV9jb3JlTG9h
ZGVyLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0coTmV0d29yaywgIihX
ZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEgb2Ygc2l6ZSAlaSBm
b3IgJyVzJyIsIChpbnQpZGF0YS5zaXplKCksIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCku
bGF0aW4xKCkuZGF0YSgpKTsKKyAgICBXRUJSRVNPVVJDRUxPQURFUl9MT0dfQUxXQVlTKCIoV2Vi
UHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhIG9mIHNpemUgJWQgZm9y
ICVwIiwgc3RhdGljX2Nhc3Q8aW50PihkYXRhLnNpemUoKSksICZtX2NvcmVMb2FkZXItPnVybCgp
KTsKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIGlmIChRdWlja0xvb2tIYW5kbGUqIHF1aWNr
TG9va0hhbmRsZSA9IG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+cXVpY2tMb29rSGFu
ZGxlKCkpIHsKQEAgLTE0Miw3ICsxNTEsOCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZQogCiB2
b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hSZXNvdXJjZUxvYWQoZG91YmxlIGZpbmlz
aFRpbWUpCiB7Ci0gICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2Fk
ZXI6OmRpZEZpbmlzaFJlc291cmNlTG9hZCBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2Vzcykg
V2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJlc291cmNlTG9hZCBmb3IgJyVzJyIsIG1fY29y
ZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKKyAgICBXRUJSRVNPVVJD
RUxPQURFUl9MT0dfQUxXQVlTKCIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZp
bmlzaFJlc291cmNlTG9hZCBmb3IgJXAiLCAmbV9jb3JlTG9hZGVyLT51cmwoKSk7CiAKICNpZiBV
U0UoUVVJQ0tfTE9PSykKICAgICBpZiAoUXVpY2tMb29rSGFuZGxlKiBxdWlja0xvb2tIYW5kbGUg
PSBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnF1aWNrTG9va0hhbmRsZSgpKSB7CkBA
IC0xNTUsOCArMTY1LDkgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3Vy
Y2VMb2FkKGRvdWJsZSBmaW5pc2hUaW1lKQogCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRG
YWlsUmVzb3VyY2VMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIExPRyhO
ZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGYWlsUmVzb3VyY2VM
b2FkIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKLSAgICAKKyAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkRmFpbFJlc291cmNlTG9hZCBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3Ry
aW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKKyAgICBXRUJSRVNPVVJDRUxPQURFUl9MT0dfQUxXQVlT
KCIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQgZm9y
ICVwIiwgJm1fY29yZUxvYWRlci0+dXJsKCkpOworCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAg
aWYgKFF1aWNrTG9va0hhbmRsZSogcXVpY2tMb29rSGFuZGxlID0gbV9jb3JlTG9hZGVyLT5kb2N1
bWVudExvYWRlcigpLT5xdWlja0xvb2tIYW5kbGUoKSkKICAgICAgICAgcXVpY2tMb29rSGFuZGxl
LT5kaWRGYWlsKCk7CkBAIC0xNjksNyArMTgwLDggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICNpZiBFTkFC
TEUoU0hBUkVBQkxFX1JFU09VUkNFKQogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc291cmNlKGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhhbmRsZSwgZG91Ymxl
IGZpbmlzaFRpbWUpCiB7Ci0gICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZSBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJs
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2Vz
cykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZSBmb3IgJyVzJyIsIG1fY29y
ZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKKyAgICBXRUJSRVNPVVJD
RUxPQURFUl9MT0dfQUxXQVlTKCIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNvdXJjZSBmb3IgJXAiLCAmbV9jb3JlTG9hZGVyLT51cmwoKSk7CiAKICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7
CiAKQEAgLTIxMyw0ICsyMjUsOSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNvbnN0IFByb3RlY3Rpb25TcAogfQogI2VuZGlm
CiAKK2Jvb2wgV2ViUmVzb3VyY2VMb2FkZXI6OmlzTG9nZ2luZ0FsbG93ZWQoKSBjb25zdAorewor
ICAgIHJldHVybiByZXNvdXJjZUxvYWRlcigpICYmIHJlc291cmNlTG9hZGVyKCktPmlzTG9nZ2lu
Z0FsbG93ZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCmluZGV4IDNh
NjIwMDlmODNmOGQzMzM1MjkzM2UxZDllM2FmOTJkYTJlOTJjZWUuLjkxOTU1ZmE5ZmE1OTkxNWI4
Y2VjZDAzZGJlZGIxMTc3NTc3NjAzMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCkBAIC02Niw2ICs2Niw4IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgZGV0YWNoRnJvbUNvcmVMb2FkZXIoKTsKIAorICAgIGJvb2wgaXNM
b2dnaW5nQWxsb3dlZCgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFdlYlJlc291cmNlTG9hZGVy
KFBhc3NSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+KTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273211</attachid>
            <date>2016-03-07 14:27:05 -0800</date>
            <delta_ts>2016-03-07 19:38:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154499-20160307142651.patch</filename>
            <type>text/plain</type>
            <size>38078</size>
            <attacher name="Keith Rollin">krollin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI1NmQxYmNkODMwMjA5ZTQzZjU0OGJk
NTQxMzAzYTYxYmNiYjIzOGQuLjAxYTc3MGJiNjcyMzc5YWNlMWQwNWUwZGUzMTVmNDMwMzU2NjQw
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMDMtMDMgIEtlaXRoIFJvbGxpbiAgPGtyb2xs
aW5AYXBwbGUuY29tPgorCisgICAgICAgIEVuaGFuY2UgbG9nZ2luZzogVXNlICJhbHdheXMgb24i
IG1hY3JvcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU0NDk5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNDc1NzczMD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgTE9HX0FMV0FZUyBhbmQg
TE9HX0FMV0FZU19FUlJPUiBtYWNyb3MgdG8gdGFrZSBhbiBleHByZXNzaW9uIHRvCisgICAgICAg
IGJlIGV2YWx1YXRlZC4gSWYgdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIFRydWUsIHRoZSBh
c3NvY2lhdGVkCisgICAgICAgIG1lc3NhZ2UgaXMgbG9nZ2VkLiBUaGlzIGZhY2lsaXR5IGlzIHVz
ZWQgdG8gcHJldmVudCBsb2dnaW5nIGZyb20gYmVpbmcKKyAgICAgICAgcGVyZm9ybWVkIGluIHBy
aXZhdGUgc2Vzc2lvbnMsIGJ1dCBpdCBjb3VsZCBiZSBleHRlbmRlZCB0byBwcmV2ZW50CisgICAg
ICAgIGxvZ2dpbmcgdW5kZXIgb3RoZXIgY2lyY3Vtc3RhbmNlcyBhcyB3ZWxsLgorCisgICAgICAg
ICogd3RmL0Fzc2VydGlvbnMuaDoKKwogMjAxNi0wMy0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSB2Y3hwcm9qIGJ1aWxkIHN5
c3RlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDIxZjY3ZTI3YTRkY2I0OTA4ODY3MDNiNThmNWYwZTM3N2VhNmY3
YzEuLmEzMTI4M2E3ZDA0YjkwNTMwYjdkOTgwNDMzZjUwM2FlZmJlNWRlMWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw1MSBAQAorMjAxNi0wMy0wMyAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgRW5oYW5jZSBsb2dnaW5nOiBVc2UgImFsd2F5cyBvbiIgbWFjcm9z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ0OTkK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0NzU3NzMwPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgdXNlIG9mIG5ldyBsb2dnaW5nIG1hY3Jv
cyBieSByZXBvcnRpbmcgb24gZnJhbWUgYW5kIHJlc291cmNlCisgICAgICAgIGRvd25sb2FkIGFj
dGl2aXR5LgorCisgICAgICAgIEFkZCBuZXcgbG9nZ2luZyB0byBtZW1vcnkgcHJlc3N1cmUgaGFu
ZGxlciB0byBzaG93IHdoZW4gaXQncyBjYWxsZWQKKyAgICAgICAgYW5kIGl0cyBlZmZlY3RpdmVu
ZXNzLiBBcyBwYXJ0IG9mIHRoaXMgY2hhbmdlLCB0aGUgdmFyaW91cworICAgICAgICBwbGF0Zm9y
bS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgaGF2ZSBiZWVuIHVuaWZpZWQuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzLiBObyBuZXcgYmFzaWMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiBhZGRlZC4g
T25seSBuZXcKKyAgICAgICAgbG9nZ2luZyBoYXMgYmVlbiBhZGRlZCBpbiByZWxlYXNlIG1vZGUg
b3IgaGFzIGJlZW4gZW5hYmxlZCB0byBleGVjdXRlCisgICAgICAgIGluIHJlbGVhc2UgbW9kZSBh
cyB3ZWxsIGFzIGRlYnVnIG1vZGUuCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnByZXBhcmVGb3JMb2FkU3RhcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhpc0Zy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6
aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Ojppc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAg
ICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aXNBbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdl
L1Nlc3Npb25JRC5oOgorICAgICAgICAoV2ViQ29yZTo6U2Vzc2lvbklEOjppc0Fsd2F5c09uTG9n
Z2luZ0FsbG93ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dl
cjo6bG9nTWVtb3J5VXNhZ2VDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1
cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OnBsYXRmb3JtTG9nKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
bW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpSZWxpZWZMb2dnZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6On5SZWxpZWZM
b2dnZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZM
b2dnZXI6OnBsYXRmb3JtTG9nKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9saW51eC9N
ZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQ
cmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1Mb2cpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9NZW1vcnlQcmVzc3VyZUhhbmRsZXJXaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OnBsYXRmb3Jt
TG9nKTogRGVsZXRlZC4KKwogMjAxNi0wMy0wNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJs
ZXRAY3JmLmNhbm9uLmZyPgogCiAgICAgICAgIEVuYWJsZSBET00gY2xhc3MgY3JlYXRlIGZ1bmN0
aW9ucyB0byB0YWtlIHBhcmFtZXRlcnMgaW4gY2FzZSBvZiBKU0J1aWx0aW5Db25zdHJ1Y3Rvcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IDljM2E3ZmY4NTI1N2I0ZTY3NGE4ZjA0ZTY2NDlmYTMwZjliM2M2NDguLjQ0
MjA5NGYyNmQ1M2QzYzE0MmZiZDJjMjNmODEyNzg3MmExNTZhNzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAxNi0wMy0wMyAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgRW5oYW5jZSBsb2dnaW5nOiBVc2UgImFsd2F5cyBvbiIgbWFjcm9zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ0OTkKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzI0NzU3NzMwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgdXNlIG9mIG5ldyBsb2dnaW5nIG1hY3JvcyBieSBy
ZXBvcnRpbmcgb24gZnJhbWUgYW5kIHJlc291cmNlCisgICAgICAgIGRvd25sb2FkIGFjdGl2aXR5
LgorCisgICAgICAgIENvbm5lY3Rpb24gdXBkYXRlZCB0byByZXBvcnQgSVBDIGVycm9ycywgaGVs
cGluZyB1cyBpZGVudGlmeSB3aGVuCisgICAgICAgIG1lc3NhZ2luZyBiZXR3ZWVuIHByb2Nlc3Nl
cyBicmVha3MgZG93bi4KKworICAgICAgICBDaGlsZFByb2Nlc3MgdXBkYXRlZCB0byBsb2cgaWYg
aXQgaXMgdGVybWluYXRpbmcgZWFybHkuIFNvbWUKKyAgICAgICAgc3lzZGlhZ25vc2UgbG9nZ2lu
ZyBmcm9tIGN1c3RvbWVycyBpbmRpY2F0ZSB0aGF0IHRoaXMgaXMgaGFwcGVuaW5nIGluCisgICAg
ICAgIHRoZSB3aWxkLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFy
dE5ldHdvcmtMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1Jl
cGx5KToKKyAgICAgICAgKiBTaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6ZGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRl
clN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVy
Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRp
ZEZpbmlzaFJlc291cmNlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVy
OjpkaWRGYWlsUmVzb3VyY2VMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZGVyOjppc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorCiAyMDE2LTAzLTA2ICBBbmRyZWFzIEtsaW5nICA8
YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWR1Y2UgcGFnZSBjYWNoZSBjYXBhY2l0eSBm
cm9tIDMgdG8gMi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaCBiL1Nv
dXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaAppbmRleCBiZjJmMTlhMTQxZGQ5ZjZkM2Y5ODJlZTdh
N2YzMjc0YzBhZDUyNThlLi5iNDhjODYyM2I3ZDVkNGJiNDFmZGM3YWE2NjQ0NDEwMTQ2ZTYyNDMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvQXNzZXJ0aW9ucy5oCkBAIC0zODQsMTIgKzM4NCwxMiBAQCBXVEZfRVhQT1JUX1BSSVZB
VEUgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIFdURkNyYXNoV2l0aFNlY3VyaXR5SW1wbGlj
YXRpb24oKQogCiAjZGVmaW5lIFdURl9MT0dHSU5HX1BSRUZJWCAiI1dLOiAiCiAjaWYgTE9HX0FM
V0FZU19ESVNBQkxFRAotI2RlZmluZSBMT0dfQUxXQVlTKGZvcm1hdCwgLi4uKSAgICAgICAoKHZv
aWQpMCkKLSNkZWZpbmUgTE9HX0FMV0FZU19FUlJPUihmb3JtYXQsIC4uLikgV1RGUmVwb3J0RXJy
b3IoX19GSUxFX18sIF9fTElORV9fLCBXVEZfUFJFVFRZX0ZVTkNUSU9OLCBmb3JtYXQsICMjX19W
QV9BUkdTX18pCisjZGVmaW5lIExPR19BTFdBWVMoaXNBbGxvd2VkLCBmb3JtYXQsIC4uLikgICAg
ICAgKCh2b2lkKTApCisjZGVmaW5lIExPR19BTFdBWVNfRVJST1IoaXNBbGxvd2VkLCBmb3JtYXQs
IC4uLikgV1RGUmVwb3J0RXJyb3IoX19GSUxFX18sIF9fTElORV9fLCBXVEZfUFJFVFRZX0ZVTkNU
SU9OLCBmb3JtYXQsICMjX19WQV9BUkdTX18pCiAjZWxzZQogI2RlZmluZSBXVEZfTE9HX0RFRkFV
TFQgT1NfTE9HX0RFRkFVTFQKLSNkZWZpbmUgTE9HX0FMV0FZUyhmb3JtYXQsIC4uLikgICAgICAg
b3NfbG9nKFdURl9MT0dfREVGQVVMVCwgV1RGX0xPR0dJTkdfUFJFRklYIGZvcm1hdCwgIyNfX1ZB
X0FSR1NfXykKLSNkZWZpbmUgTE9HX0FMV0FZU19FUlJPUihmb3JtYXQsIC4uLikgb3NfbG9nX2Vy
cm9yKFdURl9MT0dfREVGQVVMVCwgV1RGX0xPR0dJTkdfUFJFRklYIGZvcm1hdCwgIyNfX1ZBX0FS
R1NfXykKKyNkZWZpbmUgTE9HX0FMV0FZUyhpc0FsbG93ZWQsIGZvcm1hdCwgLi4uKSAgICAgICBk
byB7IGlmIChpc0FsbG93ZWQpIG9zX2xvZyhXVEZfTE9HX0RFRkFVTFQsIFdURl9MT0dHSU5HX1BS
RUZJWCBmb3JtYXQsICMjX19WQV9BUkdTX18pOyB9IHdoaWxlICgwKQorI2RlZmluZSBMT0dfQUxX
QVlTX0VSUk9SKGlzQWxsb3dlZCwgZm9ybWF0LCAuLi4pIGRvIHsgaWYgKGlzQWxsb3dlZCkgb3Nf
bG9nX2Vycm9yKFdURl9MT0dfREVGQVVMVCwgV1RGX0xPR0dJTkdfUFJFRklYIGZvcm1hdCwgIyNf
X1ZBX0FSR1NfXyk7IH0gd2hpbGUgKDApCiAjZW5kaWYKIAogLyogUkVMRUFTRV9BU1NFUlQgKi8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGRhYTc1MzRiZTJhMjk0MTVi
OTFhMjNmNGUwYzc2MjNiNDY4MWIxMjUuLjg4NzNkYzY5ZWZjZjY5OWFkMmNlNTE4YzgwYjNhZjYx
ZjVkMzdkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTQwLDYg
KzE0MCw4IEBACiAjaW5jbHVkZSAiV0tDb250ZW50T2JzZXJ2YXRpb24uaCIKICNlbmRpZgogCisj
ZGVmaW5lIEZSQU1FTE9BREVSX0xPR19BTFdBWVMoLi4uKSBMT0dfQUxXQVlTKGlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpLCBfX1ZBX0FSR1NfXykKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMTA4NCw2ICsxMDg2LDggQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6c3RhcnRlZCgpCiAKIHZvaWQgRnJhbWVMb2FkZXI6OnByZXBhcmVGb3JMb2FkU3Rh
cnQoKQogeworICAgIEZSQU1FTE9BREVSX0xPR19BTFdBWVMoIlN0YXJ0aW5nIGZyYW1lIGxvYWQs
IGZyYW1lID0gJXAsIG1haW4gPSAlZCIsICZtX2ZyYW1lLCBtX2ZyYW1lLmlzTWFpbkZyYW1lKCkp
OworCiAgICAgbV9wcm9ncmVzc1RyYWNrZXItPnByb2dyZXNzU3RhcnRlZCgpOwogICAgIG1fY2xp
ZW50LmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKIApAQCAtMjI3NSw2ICsyMjc5
LDggQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWUoKQog
CiAgICAgICAgICAgICBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciA9IGRsLT5tYWluRG9jdW1l
bnRFcnJvcigpOwogCisgICAgICAgICAgICBGUkFNRUxPQURFUl9MT0dfQUxXQVlTKCJGaW5pc2hl
ZCBmcmFtZSBsb2FkLCBmcmFtZSA9ICVwLCBtYWluID0gJWQsIGlzVGltZW91dCA9ICVkLCBpc0Nh
bmNlbGxhdGlvbiA9ICVkLCBlcnJvckNvZGUgPSAlZCIsICZtX2ZyYW1lLCBtX2ZyYW1lLmlzTWFp
bkZyYW1lKCksIGVycm9yLmlzVGltZW91dCgpLCBlcnJvci5pc0NhbmNlbGxhdGlvbigpLCBlcnJv
ci5lcnJvckNvZGUoKSk7CisKICAgICAgICAgICAgIEFYT2JqZWN0Q2FjaGU6OkFYTG9hZGluZ0V2
ZW50IGxvYWRpbmdFdmVudDsKICAgICAgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKICAg
ICAgICAgICAgICAgICBtX2NsaWVudC5kaXNwYXRjaERpZEZhaWxMb2FkKGVycm9yKTsKQEAgLTM1
NjYsNiArMzU3MiwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjphcHBseVNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKERvY3VtZW50TAogICAgIGRvY3VtZW50TG9h
ZGVyLnNldFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeVRvQXBwbHkobV9mcmFtZSwgcHJvcGFnYXRlZFBvbGljeSkpOwogfQogCitib29sIEZy
YW1lTG9hZGVyOjppc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdAoreworICAgIHJldHVy
biBmcmFtZSgpLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpOworfQorCiBib29sIEZyYW1lTG9h
ZGVyQ2xpZW50OjpoYXNIVE1MVmlldygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGQwODczNDFjODY5ZTA1OTU0MmRjMjYwZTk1
M2ExZjYwYTNlZTllYTkuLmYyNGQ0NGVlMzUxMTc5MjYyZjhiMjE1OTUzNmM5ZWI3MGQ5MWM3NWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC0yOTYsNiArMjk2LDggQEAgcHVi
bGljOgogICAgIGNvbnN0IFVSTCYgcHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwo
KSBjb25zdCB7IHJldHVybiBtX3Byb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMOyB9
CiAgICAgdm9pZCBzZXRQcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTChjb25zdCBV
UkwmIHVybCkgeyBtX3Byb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMID0gdXJsOyB9
CiAKKyAgICBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0OworCiBwcml2YXRl
OgogICAgIGVudW0gRm9ybVN1Ym1pc3Npb25DYWNoZUxvYWRQb2xpY3kgewogICAgICAgICBNYXlB
dHRlbXB0Q2FjaGVPbmx5TG9hZEZvckZvcm1TdWJtaXNzaW9uSXRlbSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGQwYzgyMGFkNDAyZTg5ZDk0ZDVlZDkyMjlm
M2I5YjMwNjBhZTljOTIuLmNlZjA2YTM2YmU5MjY5ZjMzYjVkMWE4NDUyMGE5MWQ5NjI4ZWVlYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNzU0LDQgKzc1
NCw5IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZENyZWF0ZVF1aWNrTG9va0hhbmRsZShRdWlj
a0xvb2tIYW5kbGUmIGhhbmRsZSkKIH0KICNlbmRpZgogCitib29sIFJlc291cmNlTG9hZGVyOjpp
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdAoreworICAgIHJldHVybiBmcmFtZUxvYWRl
cigpICYmIGZyYW1lTG9hZGVyKCktPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpOworfQorCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDA3MDY0ZDcwMDlhNjQz
ODg2YjE3ZjJlMjYwNWFlNzUwNDIyYTVlMjYuLmM3MGRjMmJjOTUzM2RlZmYwZGIzYzhkNzhjY2Rm
OWI4NDIwMmI0MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC0x
NDUsNiArMTQ1LDggQEAgcHVibGljOgogICAgIHZvaWQgdW5zY2hlZHVsZShXVEY6OlNjaGVkdWxl
UGFpciYpOwogI2VuZGlmCiAKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQWx3YXlzT25Mb2dn
aW5nQWxsb3dlZCgpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgUmVzb3VyY2VMb2FkZXIoRnJh
bWUqLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDU5
MjdjYmZiOWY0MmQ3YWY3MDgyM2Y5YjgwOGJkNzNiMDZhNmUyYjcuLjVkNDYxNmY1Mzg0ZmIyNjgx
MjM4YjJhOWFjMzdmNTVlNDg2MTMzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0xMDUzLDQg
KzEwNTMsOSBAQCBib29sIEZyYW1lOjppc1VSTEFsbG93ZWQoY29uc3QgVVJMJiB1cmwpIGNvbnN0
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgRnJhbWU6OmlzQWx3YXlzT25Mb2dnaW5nQWxs
b3dlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBhZ2UoKSAmJiBwYWdlKCktPmlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmgKaW5kZXggYTAwYTdjODExM2E3NjVkYTI1OGQ4NjgyNjMyZGJmNDBlMmVlYjg0Yy4uZjMwNTA3
NWVlNDA2YmI5YjRiZTNhYjdkYThmMTM3M2Y5MzY0NjBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAt
MjcyLDYgKzI3Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBhY3RpdmVE
T01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZl
RE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWRDb3VudCA+IDA7IH0KIAogICAgICAgICBi
b29sIGlzVVJMQWxsb3dlZChjb25zdCBVUkwmKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc0Fsd2F5
c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdDsKIAogICAgIC8vID09PT09PT09CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCmluZGV4IGQ2NTU4YWJjNzRiZjQ5MTkxNmMyYWIyMmZjZmEyM2FkYzRmMzJkMjguLjIz
NzM3OWU3N2E4MDE2NzdkOGZkMmI4MzY0ZjEyODBlMDQ3NmFmMGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cApAQCAtMjAwNCw0ICsyMDA0LDkgQEAgdm9pZCBQYWdlOjpzZXRSZXNvdXJjZVVzYWdlT3Zlcmxh
eVZpc2libGUoYm9vbCB2aXNpYmxlKQogfQogI2VuZGlmCiAKK2Jvb2wgUGFnZTo6aXNBbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zZXNzaW9uSUQuaXNBbHdh
eXNPbkxvZ2dpbmdBbGxvd2VkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgKaW5kZXggYzQ3MDYxNWU4MDMxNDE2YjMxMzY3ZDExNjNiZDFhNTY2MjNhN2YxOS4uNGE2
MjI4MWU5ZTE5ZTU0Yjk1NjI2MzEwY2U3NTM0YTUyYjQ1Y2JkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAg
LTUwNyw2ICs1MDcsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NvbnRyb2xsZWRCeUF1dG9tYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX2NvbnRyb2xsZWRCeUF1dG9tYXRpb247IH0KICAgICB2b2lk
IHNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oYm9vbCBjb250cm9sbGVkKSB7IG1fY29udHJvbGxl
ZEJ5QXV0b21hdGlvbiA9IGNvbnRyb2xsZWQ7IH0KIAorICAgIGJvb2wgaXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBp
bml0R3JvdXAoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXNzaW9uSUQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vzc2lvbklELmgKaW5kZXggMGRiYWExYjQ3MTUxOTgz
ZTdhODBiNmQ2NzY1MjRhOWQ5ZDBlNzFjYS4uNWI5YjcxZGE1ZWMyNzRhOGZmYTA3YThjYWViYjE2
NGE0YWMzNWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXNzaW9uSUQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nlc3Npb25JRC5oCkBAIC00Miw2ICs0Miw3IEBAIHB1
YmxpYzoKICAgICB1aW50NjRfdCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25J
RDsgfQogICAgIGJvb2wgb3BlcmF0b3I9PShTZXNzaW9uSUQgc2Vzc2lvbklEKSBjb25zdCB7IHJl
dHVybiBtX3Nlc3Npb25JRCA9PSBzZXNzaW9uSUQubV9zZXNzaW9uSUQ7IH0KICAgICBib29sIG9w
ZXJhdG9yIT0oU2Vzc2lvbklEIHNlc3Npb25JRCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQg
IT0gc2Vzc2lvbklELm1fc2Vzc2lvbklEOyB9CisgICAgYm9vbCBpc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKSBjb25zdCB7IHJldHVybiAhaXNFcGhlbWVyYWwoKTsgfQogCiAgICAgc3RhdGljIFNl
c3Npb25JRCBlbXB0eVNlc3Npb25JRCgpIHsgcmV0dXJuIFNlc3Npb25JRCgwKTsgfQogICAgIHN0
YXRpYyBTZXNzaW9uSUQgZGVmYXVsdFNlc3Npb25JRCgpIHsgcmV0dXJuIFNlc3Npb25JRCgxKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5j
cHAKaW5kZXggNjYwMTk0MjBiMjEyZTM3NmE1M2Q4ODVmNzk3ODc5MjFmZDZiNTc3OC4uNWI0ODBi
ZmM3ZGQyYTYzZjZiNTI2NmEzMzNhNGIzMDRmNWMxNDI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCkBAIC0xODAsMTMgKzE4MCwz
NyBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVsZWFzZU1lbW9yeShDcml0aWNhbCBj
cml0aWNhbCwgU3luY2hyb25vdXMgc3luY2hybwogICAgIH0KIH0KIAordm9pZCBNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6bG9nTWVtb3J5VXNhZ2VDaGFuZ2UoKQoreworI2lm
ICFMT0dfQUxXQVlTX0RJU0FCTEVECisjZGVmaW5lIFNUUklOR19TUEVDSUZJQ0FUSU9OICIle3B1
YmxpY31zIgorI2RlZmluZSBNRU1PUllQUkVTU1VSRV9MT0coLi4uKSBMT0dfQUxXQVlTKHRydWUs
IF9fVkFfQVJHU19fKQorI2Vsc2UKKyNkZWZpbmUgU1RSSU5HX1NQRUNJRklDQVRJT04gIiVzIgor
I2RlZmluZSBNRU1PUllQUkVTU1VSRV9MT0coLi4uKSBXVEZMb2dBbHdheXMoX19WQV9BUkdTX18p
CisjZW5kaWYKKworICAgIHNpemVfdCBjdXJyZW50TWVtb3J5ID0gcGxhdGZvcm1NZW1vcnlVc2Fn
ZSgpOworICAgIGlmIChjdXJyZW50TWVtb3J5ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpIHx8
IG1faW5pdGlhbE1lbW9yeSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKSkgeworICAgICAgICBN
RU1PUllQUkVTU1VSRV9MT0coIk1lbW9yeSBwcmVzc3VyZSByZWxpZWY6ICIgU1RSSU5HX1NQRUNJ
RklDQVRJT04gIjogKFVuYWJsZSB0byBnZXQgZGlydHkgbWVtb3J5IGluZm9ybWF0aW9uIGZvciBw
cm9jZXNzKSIsIG1fbG9nU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNz
aXplX3QgbWVtb3J5RGlmZiA9IGN1cnJlbnRNZW1vcnkgLSBtX2luaXRpYWxNZW1vcnk7CisgICAg
aWYgKG1lbW9yeURpZmYgPCAwKQorICAgICAgICBNRU1PUllQUkVTU1VSRV9MT0coIk1lbW9yeSBw
cmVzc3VyZSByZWxpZWY6ICIgU1RSSU5HX1NQRUNJRklDQVRJT04gIjogLWRpcnR5ICVsZCBieXRl
cyAoZnJvbSAlbHUgdG8gJWx1KSIsIG1fbG9nU3RyaW5nLCAobWVtb3J5RGlmZiAqIC0xKSwgbV9p
bml0aWFsTWVtb3J5LCBjdXJyZW50TWVtb3J5KTsKKyAgICBlbHNlIGlmIChtZW1vcnlEaWZmID4g
MCkKKyAgICAgICAgTUVNT1JZUFJFU1NVUkVfTE9HKCJNZW1vcnkgcHJlc3N1cmUgcmVsaWVmOiAi
IFNUUklOR19TUEVDSUZJQ0FUSU9OICI6ICtkaXJ0eSAlbGQgYnl0ZXMgKGZyb20gJWx1IHRvICVs
dSkiLCBtX2xvZ1N0cmluZywgbWVtb3J5RGlmZiwgbV9pbml0aWFsTWVtb3J5LCBjdXJyZW50TWVt
b3J5KTsKKyAgICBlbHNlCisgICAgICAgIE1FTU9SWVBSRVNTVVJFX0xPRygiTWVtb3J5IHByZXNz
dXJlIHJlbGllZjogIiBTVFJJTkdfU1BFQ0lGSUNBVElPTiAiOiA9ZGlydHkgKGF0ICVsdSBieXRl
cykiLCBtX2xvZ1N0cmluZywgY3VycmVudE1lbW9yeSk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09D
T0EpICYmICFPUyhMSU5VWCkgJiYgIVBMQVRGT1JNKFdJTikKIHZvaWQgTWVtb3J5UHJlc3N1cmVI
YW5kbGVyOjppbnN0YWxsKCkgeyB9CiB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6dW5pbnN0
YWxsKCkgeyB9CiB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aG9sZE9mZih1bnNpZ25lZCkg
eyB9CiB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUo
Q3JpdGljYWwsIFN5bmNocm9ub3VzKSB7IH0KIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpw
bGF0Zm9ybVJlbGVhc2VNZW1vcnkoQ3JpdGljYWwpIHsgfQotdm9pZCBNZW1vcnlQcmVzc3VyZUhh
bmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1Mb2coKSB7IH0KIHNpemVfdCBNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1NZW1vcnlVc2FnZSgpIHsgcmV0dXJu
IDA7IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1v
cnlQcmVzc3VyZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNz
dXJlSGFuZGxlci5oCmluZGV4IGJjNDE1MjdkNWJkMDRjMWRiOWZlZmQyMTNkMzM4ZWFkYmU3MzM5
MDMuLjcxMTRkMmMyNTc1YTk5ZjEwZDM5MmEyYjY2MDFiNDc3ZjdmN2RkOTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCkBAIC04NywxNCAr
ODcsMjIgQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgUmVsaWVmTG9n
Z2VyKGNvbnN0IGNoYXIgKmxvZykKICAgICAgICAgICAgIDogbV9sb2dTdHJpbmcobG9nKQorI2lm
ICFMT0dfQUxXQVlTX0RJU0FCTEVECisgICAgICAgICAgICAsIG1faW5pdGlhbE1lbW9yeShwbGF0
Zm9ybU1lbW9yeVVzYWdlKCkpCisjZWxzZQogICAgICAgICAgICAgLCBtX2luaXRpYWxNZW1vcnko
c19sb2dnaW5nRW5hYmxlZCA/IHBsYXRmb3JtTWVtb3J5VXNhZ2UoKSA6IDApCisjZW5kaWYKICAg
ICAgICAgewogICAgICAgICB9CiAKICAgICAgICAgflJlbGllZkxvZ2dlcigpCiAgICAgICAgIHsK
KyNpZiAhTE9HX0FMV0FZU19ESVNBQkxFRAorICAgICAgICAgICAgbG9nTWVtb3J5VXNhZ2VDaGFu
Z2UoKTsKKyNlbHNlCiAgICAgICAgICAgICBpZiAoc19sb2dnaW5nRW5hYmxlZCkKLSAgICAgICAg
ICAgICAgICBwbGF0Zm9ybUxvZygpOworICAgICAgICAgICAgICAgIGxvZ01lbW9yeVVzYWdlQ2hh
bmdlKCk7CisjZW5kaWYKICAgICAgICAgfQogCiAgICAgICAgIGNvbnN0IGNoYXIqIGxvZ1N0cmlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fbG9nU3RyaW5nOyB9CkBAIC0xMDMsNyArMTExLDcgQEAgcHVi
bGljOgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgc2l6ZV90IHBsYXRmb3JtTWVtb3J5VXNhZ2Uo
KTsKLSAgICAgICAgdm9pZCBwbGF0Zm9ybUxvZygpOworICAgICAgICB2b2lkIGxvZ01lbW9yeVVz
YWdlQ2hhbmdlKCk7CiAKICAgICAgICAgY29uc3QgY2hhciogbV9sb2dTdHJpbmc7CiAgICAgICAg
IHNpemVfdCBtX2luaXRpYWxNZW1vcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCmluZGV4IDZjMjUy
YjVmMmM4NTkyMDkwZDcxNDk5OGM1ZmY3MjUxMjBjYzc3YzIuLmU5NDU2YTM5Y2ZjNmEzZDgzZGQz
OTIyYTk1M2U3ZTkzZWIxMTUyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCkBAIC0yMzQsMjMg
KzIzNCw2IEBAIHNpemVfdCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxh
dGZvcm1NZW1vcnlVc2FnZSgpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4odm1JbmZv
LmludGVybmFsKTsKIH0KIAotdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dl
cjo6cGxhdGZvcm1Mb2coKQotewotICAgIHNpemVfdCBjdXJyZW50TWVtb3J5ID0gcGxhdGZvcm1N
ZW1vcnlVc2FnZSgpOwotICAgIGlmIChjdXJyZW50TWVtb3J5ID09IHN0YXRpY19jYXN0PHNpemVf
dD4oLTEpIHx8IG1faW5pdGlhbE1lbW9yeSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKSkgewot
ICAgICAgICBOU0xvZyhAIiVzIChVbmFibGUgdG8gZ2V0IGRpcnR5IG1lbW9yeSBpbmZvcm1hdGlv
biBmb3IgcHJvY2VzcylcbiIsIG1fbG9nU3RyaW5nKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIHNzaXplX3QgbWVtb3J5RGlmZiA9IGN1cnJlbnRNZW1vcnkgLSBtX2luaXRpYWxNZW1v
cnk7Ci0gICAgaWYgKG1lbW9yeURpZmYgPCAwKQotICAgICAgICBOU0xvZyhAIlByZXNzdXJlIHJl
bGllZjogJXM6IC1kaXJ0eSAlbGQgYnl0ZXMgKGZyb20gJWxkIHRvICVsZClcbiIsIG1fbG9nU3Ry
aW5nLCAobWVtb3J5RGlmZiAqIC0xKSwgbV9pbml0aWFsTWVtb3J5LCBjdXJyZW50TWVtb3J5KTsK
LSAgICBlbHNlIGlmIChtZW1vcnlEaWZmID4gMCkKLSAgICAgICAgTlNMb2coQCJQcmVzc3VyZSBy
ZWxpZWY6ICVzOiArZGlydHkgJWxkIGJ5dGVzIChmcm9tICVsZCB0byAlbGQpXG4iLCBtX2xvZ1N0
cmluZywgbWVtb3J5RGlmZiwgbV9pbml0aWFsTWVtb3J5LCBjdXJyZW50TWVtb3J5KTsKLSAgICBl
bHNlCi0gICAgICAgIE5TTG9nKEAiUHJlc3N1cmUgcmVsaWVmOiAlczogPWRpcnR5IChhdCAlbGQg
Ynl0ZXMpXG4iLCBtX2xvZ1N0cmluZywgY3VycmVudE1lbW9yeSk7Ci19Ci0KICNpZiBQTEFURk9S
TShJT1MpCiBzdGF0aWMgdm9pZCByZXNwb25kVG9NZW1vcnlQcmVzc3VyZUNhbGxiYWNrKENGUnVu
TG9vcE9ic2VydmVyUmVmIG9ic2VydmVyLCBDRlJ1bkxvb3BBY3Rpdml0eSAvKmFjdGl2aXR5Ki8s
IHZvaWQqIC8qaW5mbyovKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwCmluZGV4IGZlYjY5YmRi
ZjNlZjM5ZjUwMGYyODc5ZmMwOTNhMmU1ZDMwMjIwMzUuLmQwZDEzNmFjYzEzNGViZTk5NzFiYzQx
ZGQzMDU0NTJhM2E0NTExOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xp
bnV4L01lbW9yeVByZXNzdXJlSGFuZGxlckxpbnV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHAKQEAgLTIwNywyMyAr
MjA3LDYgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnBsYXRmb3JtUmVsZWFzZU1lbW9y
eShDcml0aWNhbCkKICNlbmRpZgogfQogCi12b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVs
aWVmTG9nZ2VyOjpwbGF0Zm9ybUxvZygpCi17Ci0gICAgc2l6ZV90IGN1cnJlbnRNZW1vcnkgPSBw
bGF0Zm9ybU1lbW9yeVVzYWdlKCk7Ci0gICAgaWYgKGN1cnJlbnRNZW1vcnkgPT0gc3RhdGljX2Nh
c3Q8c2l6ZV90PigtMSkgfHwgbV9pbml0aWFsTWVtb3J5ID09IHN0YXRpY19jYXN0PHNpemVfdD4o
LTEpKSB7Ci0gICAgICAgIExPRyhNZW1vcnlQcmVzc3VyZSwgIiVzIChVbmFibGUgdG8gZ2V0IGRp
cnR5IG1lbW9yeSBpbmZvcm1hdGlvbiBmb3IgcHJvY2VzcykiLCBtX2xvZ1N0cmluZyk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzc2l6ZV90IG1lbW9yeURpZmYgPSBjdXJyZW50TWVt
b3J5IC0gbV9pbml0aWFsTWVtb3J5OwotICAgIGlmIChtZW1vcnlEaWZmIDwgMCkKLSAgICAgICAg
TE9HKE1lbW9yeVByZXNzdXJlLCAiUHJlc3N1cmUgcmVsaWVmOiAlczogLWRpcnR5ICVsdSBieXRl
cyAoZnJvbSAlbHUgdG8gJWx1KSIsIG1fbG9nU3RyaW5nLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBs
b25nPihtZW1vcnlEaWZmICogLTEpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihtX2luaXRp
YWxNZW1vcnkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihjdXJyZW50TWVtb3J5KSk7Ci0g
ICAgZWxzZSBpZiAobWVtb3J5RGlmZiA+IDApCi0gICAgICAgIExPRyhNZW1vcnlQcmVzc3VyZSwg
IlByZXNzdXJlIHJlbGllZjogJXM6ICtkaXJ0eSAlbHUgYnl0ZXMgKGZyb20gJWx1IHRvICVsdSki
LCBtX2xvZ1N0cmluZywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obWVtb3J5RGlmZiksIHN0
YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KG1faW5pdGlhbE1lbW9yeSksIHN0YXRpY19jYXN0PHVu
c2lnbmVkIGxvbmc+KGN1cnJlbnRNZW1vcnkpKTsKLSAgICBlbHNlCi0gICAgICAgIExPRyhNZW1v
cnlQcmVzc3VyZSwgIlByZXNzdXJlIHJlbGllZjogJXM6ID1kaXJ0eSAoYXQgJWx1IGJ5dGVzKSIs
IG1fbG9nU3RyaW5nLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihjdXJyZW50TWVtb3J5KSk7
Ci19Ci0KIHNpemVfdCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZv
cm1NZW1vcnlVc2FnZSgpCiB7CiAgICAgRklMRSogZmlsZSA9IGZvcGVuKHNfcHJvY2Vzc1N0YXR1
cywgInIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NZW1vcnlQ
cmVzc3VyZUhhbmRsZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01lbW9y
eVByZXNzdXJlSGFuZGxlcldpbi5jcHAKaW5kZXggMGQ1MjNiODhhNjAxNzZjNjdmMTdjMjM4NWFl
M2ZmNWQxNjdmMzEyOS4uZGM5N2M3MzE2MWJmYTczMjljZjIzOWYxNGQxMWI3NzdhOTliNmRlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01lbW9yeVByZXNzdXJlSGFu
ZGxlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01lbW9yeVByZXNz
dXJlSGFuZGxlcldpbi5jcHAKQEAgLTEyOCw4ICsxMjgsNCBAQCBzaXplX3QgTWVtb3J5UHJlc3N1
cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OnBsYXRmb3JtTWVtb3J5VXNhZ2UoKQogICAgIHJldHVy
biAwOwogfQogCi12b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpwbGF0
Zm9ybUxvZygpCi17Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IGU5YzllNjA1N2Q0Mjk5ODRkYWYzMmY0NDQxNzJjZDFkNWMxM2UxN2IuLmI4NTA4ZTgyNjNm
OGZjOTZkZTcyZTRhYWQ5OGM5NGM3ZWQwMmI1ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNDYsNiAr
NDYsOSBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorI2RlZmluZSBORVRXT1JLUkVT
T1VSQ0VMT0FERVJfTE9HX0FMV0FZUyguLi4pIExPR19BTFdBWVMoaXNBbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCksIF9fVkFfQVJHU19fKQorI2RlZmluZSBORVRXT1JLUkVTT1VSQ0VMT0FERVJfTE9H
X0FMV0FZU19FUlJPUiguLi4pIExPR19BTFdBWVNfRVJST1IoaXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCksIF9fVkFfQVJHU19fKQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSB7CkBAIC0yMDAsNiArMjAzLDgg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICNlbmRpZgogCisgICAgTkVUV09SS1JFU09VUkNFTE9B
REVSX0xPR19BTFdBWVMoIlN0YXJ0aW5nIG5ldHdvcmsgcmVzb3VyY2UgbG9hZDogbG9hZGVyID0g
JXAsIHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCBpc01haW5SZXNvdXJjZSA9ICVkLCBp
c1N5bmNocm9ub3VzID0gJWQiLCB0aGlzLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFt
ZXRlcnMud2ViRnJhbWVJRCwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKKwog
ICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gbV9wYXJhbWV0ZXJzOwogICAg
IHBhcmFtZXRlcnMuZGVmZXJzTG9hZGluZyA9IG1fZGVmZXJzTG9hZGluZzsKICAgICBwYXJhbWV0
ZXJzLnJlcXVlc3QgPSByZXF1ZXN0OwpAQCAtMjcxLDYgKzI3Niw4IEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjphYm9ydCgpCiAKIGF1dG8gTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVjZWl2ZWRSZXNwb25zZSkg
LT4gU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UKIHsKKyAgICBORVRXT1JLUkVTT1VS
Q0VMT0FERVJfTE9HX0FMV0FZUygiUmVjZWl2ZWQgbmV0d29yayByZXNvdXJjZSByZXNwb25zZTog
bG9hZGVyID0gJXAsIHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCBpc01haW5SZXNvdXJj
ZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIGh0dHBTdGF0dXNDb2RlID0gJWQiLCB0aGlzLCBt
X3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgaXNNYWluUmVz
b3VyY2UoKSwgaXNTeW5jaHJvbm91cygpLCByZWNlaXZlZFJlc3BvbnNlLmh0dHBTdGF0dXNDb2Rl
KCkpOworCiAgICAgbV9yZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAKICAgICAvLyBGb3Ig
bXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyBnZXRzIGNh
bGxlZCBtdWx0aXBsZSB0aW1lcyBhbmQgYnVmZmVyaW5nIHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBo
YW5kbGluZy4KQEAgLTI5NiwxMyArMzAzLDE2IEBAIGF1dG8gTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVjZWl2ZWRSCiAg
ICAgc2hvdWxkU2VuZERpZFJlY2VpdmVSZXNwb25zZSA9ICFtX2NhY2hlRW50cnlGb3JWYWxpZGF0
aW9uOwogI2VuZGlmCiAKLSAgICBib29sIHNob3VsZFdhaXRDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZSA9IG9yaWdpbmFsUmVxdWVzdCgpLnJlcXVlc3RlcigpID09IFJlc291cmNlUmVxdWVzdDo6
UmVxdWVzdGVyOjpNYWluOworICAgIGJvb2wgc2hvdWxkV2FpdENvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlID0gaXNNYWluUmVzb3VyY2UoKTsKICAgICBpZiAoc2hvdWxkU2VuZERpZFJlY2VpdmVS
ZXNwb25zZSkgewogICAgICAgICBpZiAoaXNTeW5jaHJvbm91cygpKQogICAgICAgICAgICAgbV9z
eW5jaHJvbm91c0xvYWREYXRhLT5yZXNwb25zZSA9IG1fcmVzcG9uc2U7CiAgICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgaWYgKCFzZW5kQWJvcnRpbmdPbkZhaWx1cmUoTWVzc2FnZXM6OldlYlJl
c291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UobV9yZXNwb25zZSwgc2hvdWxkV2FpdENv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKSkpCisgICAgICAgICAgICBORVRXT1JLUkVTT1VSQ0VM
T0FERVJfTE9HX0FMV0FZUygiU2VuZGluZyBkaWRSZWNlaXZlUmVzcG9uc2UgbWVzc2FnZSB0byB0
aGUgV2ViQ29udGVudCBwcm9jZXNzOiBsb2FkZXIgPSAlcCwgcGFnZUlEID0gJWxsdSwgZnJhbWVJ
RCA9ICVsbHUsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCIsIHRoaXMs
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBpc01haW5S
ZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICAgICAgaWYgKCFzZW5kQWJvcnRp
bmdPbkZhaWx1cmUoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9u
c2UobV9yZXNwb25zZSwgc2hvdWxkV2FpdENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKSkpIHsK
KyAgICAgICAgICAgICAgICBORVRXT1JLUkVTT1VSQ0VMT0FERVJfTE9HX0FMV0FZU19FUlJPUigi
RmFpbGVkIHRvIHNlbmQgdGhlIGRpZFJlY2VpdmVSZXNwb25zZSBJUEMgbWVzc2FnZSB0byB0aGUg
V2ViQ29udGVudCBwcm9jZXNzOiBsb2FkZXIgPSAlcCwgcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9
ICVsbHUsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCIsIHRoaXMsIG1f
cGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBpc01haW5SZXNv
dXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAgICAgICAgICAgIHJldHVybiBTaG91bGRD
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZTo6Tm87CisgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTMxMiw2ICszMjIsMTEgQEAgYXV0byBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWNlaXZlZFIKICAg
ICBzaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSA9IHNob3VsZENvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlIHx8IG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb247CiAjZW5kaWYKIAorICAg
IGlmIChzaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSkKKyAgICAgICAgTkVUV09SS1JF
U09VUkNFTE9BREVSX0xPR19BTFdBWVMoIlNob3VsZCB3YWl0IGZvciBtZXNzYWdlIGZyb20gV2Vi
Q29udGVudCBwcm9jZXNzIGJlZm9yZSBjb250aW51aW5nIHJlc291cmNlIGxvYWQ6IGxvYWRlciA9
ICVwLCBwYWdlSUQgPSAlbGx1LCBmcmFtZUlEID0gJWxsdSwgaXNNYWluUmVzb3VyY2UgPSAlZCwg
aXNTeW5jaHJvbm91cyA9ICVkIiwgdGhpcywgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJh
bWV0ZXJzLndlYkZyYW1lSUQsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7Cisg
ICAgZWxzZQorICAgICAgICBORVRXT1JLUkVTT1VSQ0VMT0FERVJfTE9HX0FMV0FZUygiU2hvdWxk
IG5vdCB3YWl0IGZvciBtZXNzYWdlIGZyb20gV2ViQ29udGVudCBwcm9jZXNzIGJlZm9yZSBjb250
aW51aW5nIHJlc291cmNlIGxvYWQ6IGxvYWRlciA9ICVwLCBwYWdlSUQgPSAlbGx1LCBmcmFtZUlE
ID0gJWxsdSwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkIiwgdGhpcywg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIGlzTWFpblJl
c291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CisKICAgICByZXR1cm4gc2hvdWxkQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2UgPyBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZTo6WWVz
IDogU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2U6Ok5vOwogfQogCkBAIC0zNDQsNiAr
MzU5LDggQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludAogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6ZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGltZSkKIHsKKyAgICBORVRXT1JL
UkVTT1VSQ0VMT0FERVJfTE9HX0FMV0FZUygiRmluaXNoZWQgbG9hZGluZyBuZXR3b3JrIHJlc291
cmNlOiBsb2FkZXIgPSAlcCwgcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIGlzTWFpblJl
c291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCIsIHRoaXMsIG1fcGFyYW1ldGVycy53ZWJQ
YWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNo
cm9ub3VzKCkpOworCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEUpCiAgICAgaWYgKG1fY2FjaGVF
bnRyeUZvclZhbGlkYXRpb24pIHsKICAgICAgICAgLy8gMzA0IE5vdCBNb2RpZmllZApAQCAtMzc1
LDYgKzM5Miw4IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5n
KGRvdWJsZSBmaW5pc2hUaW1lKQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFp
bExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CisgICAgTkVUV09SS1JFU09V
UkNFTE9BREVSX0xPR19BTFdBWVMoIkZhaWxlZCBsb2FkaW5nIG5ldHdvcmsgcmVzb3VyY2U6IGxv
YWRlciA9ICVwLCBwYWdlSUQgPSAlbGx1LCBmcmFtZUlEID0gJWxsdSwgaXNNYWluUmVzb3VyY2Ug
PSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBpc1RpbWVvdXQgPSAlZCwgaXNDYW5jZWxsYXRpb24g
PSAlZCwgZXJyQ29kZSA9ICVkIiwgdGhpcywgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJh
bWV0ZXJzLndlYkZyYW1lSUQsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSwgZXJy
b3IuaXNUaW1lb3V0KCksIGVycm9yLmlzQ2FuY2VsbGF0aW9uKCksIGVycm9yLmVycm9yQ29kZSgp
KTsKKwogICAgIEFTU0VSVCghZXJyb3IuaXNOdWxsKCkpOwogCiAjaWYgRU5BQkxFKE5FVFdPUktf
Q0FDSEUpCkBAIC00MTksNiArNDM4LDggQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ondp
bGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXEKIAogdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCkKIHsKKyAgICBORVRXT1JLUkVTT1VSQ0VMT0FERVJf
TE9HX0FMV0FZUygiRm9sbG93aW5nIHJlZGlyZWN0IG9mIG5ldHdvcmsgcmVzb3VyY2U6IGxvYWRl
ciA9ICVwLCBwYWdlSUQgPSAlbGx1LCBmcmFtZUlEID0gJWxsdSwgaXNNYWluUmVzb3VyY2UgPSAl
ZCwgaXNTeW5jaHJvbm91cyA9ICVkIiwgdGhpcywgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7
CisKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRSkKICAgICBpZiAobV9pc1dhaXRpbmdDb250aW51
ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0KSB7CiAgICAgICAgIExPRyhOZXR3b3Jr
Q2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIFJldHJpZXZpbmcgY2FjaGVkIHJlZGlyZWN0Iik7CkBA
IC01MTAsNyArNTMxLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJldHJpZXZl
Q2FjaGVFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjoKICAgICAgICAgbV9zeW5j
aHJvbm91c0xvYWREYXRhLT5yZXNwb25zZSA9IGVudHJ5LT5yZXNwb25zZSgpOwogICAgICAgICBz
ZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBlbnRy
eS0+YnVmZmVyKCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGJvb2wgbmVlZHNDb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgPSBvcmlnaW5hbFJlcXVlc3QoKS5yZXF1ZXN0ZXIoKSA9
PSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbjsKKyAgICAgICAgYm9vbCBuZWVkc0Nv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSA9IGlzTWFpblJlc291cmNlKCk7CiAgICAg
ICAgIHNlbmRBYm9ydGluZ09uRmFpbHVyZShNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRp
ZFJlY2VpdmVSZXNwb25zZShlbnRyeS0+cmVzcG9uc2UoKSwgbmVlZHNDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZU1lc3NhZ2UpKTsKIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCkBA
IC02MjQsNCArNjQ1LDkgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlQ2Fu
QXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sIHIKIH0KICNlbmRpZgogCiti
b29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gc2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBkOTlkYzNhNjhlMTNj
NDdhOTRmZDQ5MGFkOTllNjhmMDYzNWFlOTRlLi45NmJjMmVlY2M2YzM3ZDE3NjMyZTI2NzBjNzdk
NDRmMDE3MWNlMjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtOTgsNiArOTgsOSBAQCBwdWJsaWM6CiAgICAg
CiAgICAgdm9pZCBkaWRDb252ZXJ0VG9Eb3dubG9hZCgpOwogCisgICAgYm9vbCBpc01haW5SZXNv
dXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5yZXF1ZXN0LnJlcXVlc3RlcigpID09
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpNYWluOyB9CisgICAgYm9vbCBp
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXIoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmLCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlZlB0cjxNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseT4m
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAppbmRleCA4
MTY2YzlhMmU5NGI4MDMyODNmM2JlNzhmMGMwYTk2YzllNWE4NGJjLi4xMTU1MjFiOGRkODg5YWJl
OTkzNTlmNGEzNmJjYWU0OTk2YjI1MWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uY3BwCkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKKyNk
ZWZpbmUgQ09OTkVDVElPTl9MT0dfQUxXQVlTX0VSUk9SKC4uLikgTE9HX0FMV0FZU19FUlJPUih0
cnVlLCBfX1ZBX0FSR1NfXykKKwogbmFtZXNwYWNlIElQQyB7CiAKIHN0cnVjdCBXYWl0Rm9yTWVz
c2FnZVN0YXRlIHsKQEAgLTU3NSw2ICs1NzcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURl
Y29kZXI+IENvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlcwog
ICAgICAgICAvLyBJZiB0aGF0IGhhcHBlbnMsIHdlIG5lZWQgdG8gc3RvcCB3YWl0aW5nLCBvciB3
ZSdsbCBoYW5nIHNpbmNlIHdlIHdvbid0IGdldAogICAgICAgICAvLyBhbnkgbW9yZSBpbmNvbWlu
ZyBtZXNzYWdlcy4KICAgICAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIENPTk5F
Q1RJT05fTE9HX0FMV0FZU19FUlJPUigiQ29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseTogQ29u
bmVjdGlvbiBubyBsb25nZXIgdmFsaWQsIGlkPSVsbHUiLCBzeW5jUmVxdWVzdElEKTsKICAgICAg
ICAgICAgIGRpZFJlY2VpdmVTeW5jUmVwbHkoc3luY1NlbmRGbGFncyk7CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQpAQCAtNTg1LDYgKzU4OCw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseSh1aW50NjRf
dCBzeW5jUmVxdWVzCiAgICAgICAgIHRpbWVkT3V0ID0gIVN5bmNNZXNzYWdlU3RhdGU6OnNpbmds
ZXRvbigpLndhaXQoYWJzb2x1dGVUaW1lKTsKICAgICB9CiAKKyAgICBDT05ORUNUSU9OX0xPR19B
TFdBWVNfRVJST1IoIkNvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVwbHk6IFRpbWVkLW91dCB3aGls
ZSB3YWl0aW5nIGZvciByZXBseSwgaWQ9JWxsdSIsIHN5bmNSZXF1ZXN0SUQpOwogICAgIGRpZFJl
Y2VpdmVTeW5jUmVwbHkoc3luY1NlbmRGbGFncyk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAKaW5kZXggM2IzYzEyYTZiOWE4NWU4YmU4
NDBhZDFiMjkxNDEzNDNmMjFmMTVkNS4uODA1OGJkNzE0MmY3MzQ3YTFlZjJmZDQ1NjlkM2M1NWZi
ZmFhM2Y2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAKQEAgLTI5LDYg
KzI5LDggQEAKICNpbmNsdWRlICJTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmgiCiAj
aW5jbHVkZSA8dW5pc3RkLmg+CiAKKyNkZWZpbmUgQ0hJTERQUk9DRVNTX0xPR19BTFdBWVNfRVJS
T1IoLi4uKSBMT0dfQUxXQVlTX0VSUk9SKHRydWUsIF9fVkFfQVJHU19fKQorCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogQ2hpbGRQcm9jZXNzOjpDaGlsZFByb2Nlc3MoKQpAQCAtNTMsNiArNTUsNyBA
QCBzdGF0aWMgdm9pZCBkaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZShJUEM6OkNvbm5lY3Rp
b24qKQogICAgICAgICAvLyBXZSB1c2UgX2V4aXQgaGVyZSBzaW5jZSB0aGUgd2F0Y2hkb2cgY2Fs
bGJhY2sgaXMgY2FsbGVkIGZyb20gYW5vdGhlciB0aHJlYWQgYW5kIHdlIGRvbid0IHdhbnQKICAg
ICAgICAgLy8gZ2xvYmFsIGRlc3RydWN0b3JzIG9yIGF0ZXhpdCBoYW5kbGVycyB0byBiZSBjYWxs
ZWQgZnJvbSB0aGlzIHRocmVhZCB3aGlsZSB0aGUgbWFpbiB0aHJlYWQgaXMgYnVzeQogICAgICAg
ICAvLyBkb2luZyBpdHMgdGhpbmcuCisgICAgICAgIENISUxEUFJPQ0VTU19MT0dfQUxXQVlTX0VS
Uk9SKCJFeGl0aW5nIHByb2Nlc3MgZWFybHkgZHVlIHRvIHVuYWNrbm93bGVkZ2VkIGNsb3NlZC1j
b25uZWN0aW9uIik7CiAgICAgICAgIF9leGl0KEVYSVRfRkFJTFVSRSk7CiAgICAgfSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmNwcAppbmRleCBmMThkZGQyYzU2ZTlmNjQ5ZWMzMmE0MzU2NjgyZTQwM2RjNWEyN2I3
Li4wOGIyY2IxYWFlZDA5NWUwZjQ5OWQ1OGVmNDgxMmQ3ZjZjZmZlYTFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5j
cHAKQEAgLTU3LDYgKzU3LDggQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKKyNkZWZp
bmUgV0VCTE9BREVSU1RSQVRFR1lfTE9HX0FMV0FZUyguLi4pIExPR19BTFdBWVMobG9hZFBhcmFt
ZXRlcnMuc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBfX1ZBX0FSR1NfXykK
KwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYkxvYWRlclN0cmF0ZWd5OjpXZWJMb2FkZXJTdHJh
dGVneSgpCkBAIC0xNzAsOCArMTcyLDYgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1
bGVMb2FkKFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKICAgICB9
CiAjZW5kaWYKIAotICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJM
b2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIHNjaGVkdWxlZCB3
aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyB3aXRoIHByaW9yaXR5ICVkIiwgcmVzb3VyY2VMb2FkZXIt
PnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VM
b2FkZXItPnJlcXVlc3QoKS5wcmlvcml0eSgpKSk7Ci0KICAgICBDb250ZW50U25pZmZpbmdQb2xp
Y3kgY29udGVudFNuaWZmaW5nUG9saWN5ID0gcmVzb3VyY2VMb2FkZXItPnNob3VsZFNuaWZmQ29u
dGVudCgpID8gU25pZmZDb250ZW50IDogRG9Ob3RTbmlmZkNvbnRlbnQ7CiAgICAgU3RvcmVkQ3Jl
ZGVudGlhbHMgYWxsb3dTdG9yZWRDcmVkZW50aWFscyA9IHJlc291cmNlTG9hZGVyLT5zaG91bGRV
c2VDcmVkZW50aWFsU3RvcmFnZSgpID8gQWxsb3dTdG9yZWRDcmVkZW50aWFscyA6IERvTm90QWxs
b3dTdG9yZWRDcmVkZW50aWFsczsKIApAQCAtMTk5LDYgKzE5OSw5IEBAIHZvaWQgV2ViTG9hZGVy
U3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIsIENh
Y2hlZFJlc291CiAKICAgICBBU1NFUlQoKGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRCAmJiBsb2Fk
UGFyYW1ldGVycy53ZWJGcmFtZUlEKSB8fCBsb2FkUGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFs
UG9saWN5ID09IERvTm90QXNrQ2xpZW50Rm9yQW55Q3JlZGVudGlhbHMpOwogCisgICAgTE9HKE5l
dHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVs
ZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNz
IHdpdGggcHJpb3JpdHkgJWQiLCByZXNvdXJjZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4x
KCkuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLT5yZXF1ZXN0KCkucHJp
b3JpdHkoKSkpOworICAgIFdFQkxPQURFUlNUUkFURUdZX0xPR19BTFdBWVMoIldlYkxvYWRlclN0
cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1IHdpbGwg
YmUgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIHdpdGggcHJpb3JpdHkgJWQiLCBs
b2FkUGFyYW1ldGVycy53ZWJQYWdlSUQsIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQsIHN0YXRp
Y19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXItPnJlcXVlc3QoKS5wcmlvcml0eSgpKSk7CisKICAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNj
aGVkdWxlUmVzb3VyY2VMb2FkKGxvYWRQYXJhbWV0ZXJzKSwgMCkpIHsKICAgICAgICAgLy8gV2Ug
cHJvYmFibHkgZmFpbGVkIHRvIHNjaGVkdWxlIHRoaXMgbG9hZCB3aXRoIHRoZSBOZXR3b3JrUHJv
Y2VzcyBiZWNhdXNlIGl0IGhhZCBjcmFzaGVkLgogICAgICAgICAvLyBUaGlzIGxvYWQgd2lsbCBu
ZXZlciBzdWNjZWVkIHNvIHdlIHdpbGwgc2NoZWR1bGUgaXQgdG8gZmFpbCBhc3luY2hyb25vdXNs
eS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IDJhMGY1NTlhY2Y1ZDJjNjYwY2M5MDRjODVmOTk5MGRlNTM1
YWRmN2YuLjI5YmNiOGJjZWM3OGVhMjE5NTljNTJiMWJmZDg1MTVlMjdkMmNmZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcApAQCAtNDIsNiArNDIsOCBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAor
I2RlZmluZSBXRUJSRVNPVVJDRUxPQURFUl9MT0dfQUxXQVlTKC4uLikgTE9HX0FMV0FZUyhpc0Fs
d2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgX19WQV9BUkdTX18pCisKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBSZWY8V2ViUmVzb3VyY2VMb2FkZXI+IFdlYlJlc291cmNlTG9hZGVyOjpjcmVhdGUoUGFz
c1JlZlB0cjxSZXNvdXJjZUxvYWRlcj4gY29yZUxvYWRlcikKQEAgLTc1LDcgKzc3LDggQEAgdm9p
ZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGV0YWNoRnJvbUNvcmVMb2FkZXIoKQogCiB2b2lkIFdlYlJl
c291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBwcm9w
b3NlZFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCiB7
Ci0gICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxT
ZW5kUmVxdWVzdCB0byAnJXMnIiwgcHJvcG9zZWRSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9h
ZGVyOjp3aWxsU2VuZFJlcXVlc3QgdG8gJyVzJyIsIHByb3Bvc2VkUmVxdWVzdC51cmwoKS5zdHJp
bmcoKS5sYXRpbjEoKS5kYXRhKCkpOworICAgIFdFQlJFU09VUkNFTE9BREVSX0xPR19BTFdBWVMo
IldlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QgdG8gJXAiLCB0aGlzKTsKIAogICAg
IFJlZlB0cjxXZWJSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKIApAQCAtOTgsNyArMTAx
LDggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNT
ZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVMKIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib29s
IG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQogewotICAgIExPRyhOZXR3
b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Ug
Zm9yICclcycuIFN0YXR1cyAlZC4iLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCksIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOworICAgIExPRyhOZXR3b3JrLCAi
KFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UgZm9yICcl
cycuIFN0YXR1cyAlZC4iLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRh
dGEoKSwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CisgICAgV0VCUkVTT1VSQ0VMT0FERVJf
TE9HX0FMV0FZUygiV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSBmb3IgJXAu
IFN0YXR1cyAlZC4iLCB0aGlzLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKIAogICAgIFJl
ZjxXZWJSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CiAKQEAgLTEyOSw3ICsxMzMsOCBA
QCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvbwogCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2Rl
ZERhdGFMZW5ndGgpCiB7Ci0gICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhIG9mIHNpemUgJWkgZm9yICclcyciLCAoaW50KWRhdGEu
c2l6ZSgpLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAg
IExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YSBvZiBzaXplICVsdSBmb3IgJyVzJyIsIGRhdGEuc2l6ZSgpLCBtX2NvcmVMb2FkZXItPnVy
bCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CisgICAgV0VCUkVTT1VSQ0VMT0FERVJfTE9H
X0FMV0FZUygiV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhIG9mIHNpemUgJWx1IGZv
ciAlcCIsIGRhdGEuc2l6ZSgpLCB0aGlzKTsKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIGlm
IChRdWlja0xvb2tIYW5kbGUqIHF1aWNrTG9va0hhbmRsZSA9IG1fY29yZUxvYWRlci0+ZG9jdW1l
bnRMb2FkZXIoKS0+cXVpY2tMb29rSGFuZGxlKCkpIHsKQEAgLTE0Miw3ICsxNDcsOCBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGRhdGEsIGludDY0X3QgZQogCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hS
ZXNvdXJjZUxvYWQoZG91YmxlIGZpbmlzaFRpbWUpCiB7Ci0gICAgTE9HKE5ldHdvcmssICIoV2Vi
UHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJlc291cmNlTG9hZCBmb3IgJyVz
JyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgTE9H
KE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJlc291
cmNlTG9hZCBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCku
ZGF0YSgpKTsKKyAgICBXRUJSRVNPVVJDRUxPQURFUl9MT0dfQUxXQVlTKCJXZWJSZXNvdXJjZUxv
YWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkIGZvciAlcCIsIHRoaXMpOwogCiAjaWYgVVNFKFFV
SUNLX0xPT0spCiAgICAgaWYgKFF1aWNrTG9va0hhbmRsZSogcXVpY2tMb29rSGFuZGxlID0gbV9j
b3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5xdWlja0xvb2tIYW5kbGUoKSkgewpAQCAtMTU1
LDggKzE2MSw5IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJlc291cmNlTG9h
ZChkb3VibGUgZmluaXNoVGltZSkKIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbFJl
c291cmNlTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBMT0coTmV0d29y
aywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbFJlc291cmNlTG9hZCBm
b3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0g
ICAgCisgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRp
ZEZhaWxSZXNvdXJjZUxvYWQgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygp
LmxhdGluMSgpLmRhdGEoKSk7CisgICAgV0VCUkVTT1VSQ0VMT0FERVJfTE9HX0FMV0FZUygiV2Vi
UmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQgZm9yICVwIiwgdGhpcyk7CisKICNp
ZiBVU0UoUVVJQ0tfTE9PSykKICAgICBpZiAoUXVpY2tMb29rSGFuZGxlKiBxdWlja0xvb2tIYW5k
bGUgPSBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnF1aWNrTG9va0hhbmRsZSgpKQog
ICAgICAgICBxdWlja0xvb2tIYW5kbGUtPmRpZEZhaWwoKTsKQEAgLTE2OSw3ICsxNzYsOCBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGYWlsUmVzb3VyY2VMb2FkKGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yKQogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiB2b2lkIFdlYlJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6
OkhhbmRsZSYgaGFuZGxlLCBkb3VibGUgZmluaXNoVGltZSkKIHsKLSAgICBMT0coTmV0d29yaywg
IihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cmNlIGZvciAn
JXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBM
T0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJl
c291cmNlIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5k
YXRhKCkpOworICAgIFdFQlJFU09VUkNFTE9BREVSX0xPR19BTFdBWVMoIldlYlJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UgZm9yICVwIiwgdGhpcyk7CiAKICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKQEAg
LTIxMyw0ICsyMjEsOSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjYW5BdXRoZW50aWNhdGVB
Z2FpbnN0UHJvdGVjdGlvblNwYWNlKGNvbnN0IFByb3RlY3Rpb25TcAogfQogI2VuZGlmCiAKK2Jv
b2wgV2ViUmVzb3VyY2VMb2FkZXI6OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHJlc291cmNlTG9hZGVyKCkgJiYgcmVzb3VyY2VMb2FkZXIoKS0+aXNBbHdh
eXNPbkxvZ2dpbmdBbGxvd2VkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
aAppbmRleCBiY2E5MmI0NTNkNDMzYmM2OTBjMTI1NGVkYjU0ZjcyNGJiMzM5M2Q1Li41NmFjOGIw
YjQwZjZhYmVmNDRmMzRhM2RiYWNiNTBmZDFjYzMyNzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApAQCAtNjYsNiAr
NjYsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRldGFjaEZyb21Db3JlTG9hZGVyKCk7CiAKKyAg
ICBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0OworCiBwcml2YXRlOgogICAg
IFdlYlJlc291cmNlTG9hZGVyKFBhc3NSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+KTsK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273261</attachid>
            <date>2016-03-07 19:38:29 -0800</date>
            <delta_ts>2016-03-07 21:46:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154499-20160307193815.patch</filename>
            <type>text/plain</type>
            <size>39538</size>
            <attacher name="Keith Rollin">krollin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI1NmQxYmNkODMwMjA5ZTQzZjU0OGJk
NTQxMzAzYTYxYmNiYjIzOGQuLjAxYTc3MGJiNjcyMzc5YWNlMWQwNWUwZGUzMTVmNDMwMzU2NjQw
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMDMtMDMgIEtlaXRoIFJvbGxpbiAgPGtyb2xs
aW5AYXBwbGUuY29tPgorCisgICAgICAgIEVuaGFuY2UgbG9nZ2luZzogVXNlICJhbHdheXMgb24i
IG1hY3JvcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU0NDk5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNDc1NzczMD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgTE9HX0FMV0FZUyBhbmQg
TE9HX0FMV0FZU19FUlJPUiBtYWNyb3MgdG8gdGFrZSBhbiBleHByZXNzaW9uIHRvCisgICAgICAg
IGJlIGV2YWx1YXRlZC4gSWYgdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIFRydWUsIHRoZSBh
c3NvY2lhdGVkCisgICAgICAgIG1lc3NhZ2UgaXMgbG9nZ2VkLiBUaGlzIGZhY2lsaXR5IGlzIHVz
ZWQgdG8gcHJldmVudCBsb2dnaW5nIGZyb20gYmVpbmcKKyAgICAgICAgcGVyZm9ybWVkIGluIHBy
aXZhdGUgc2Vzc2lvbnMsIGJ1dCBpdCBjb3VsZCBiZSBleHRlbmRlZCB0byBwcmV2ZW50CisgICAg
ICAgIGxvZ2dpbmcgdW5kZXIgb3RoZXIgY2lyY3Vtc3RhbmNlcyBhcyB3ZWxsLgorCisgICAgICAg
ICogd3RmL0Fzc2VydGlvbnMuaDoKKwogMjAxNi0wMy0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSB2Y3hwcm9qIGJ1aWxkIHN5
c3RlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDIxZjY3ZTI3YTRkY2I0OTA4ODY3MDNiNThmNWYwZTM3N2VhNmY3
YzEuLjQxZDk3OWYwNDRmMTNlNTM0YTVlMWFmM2UxZTc3MjA3ODQwY2Q3ZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw1MSBAQAorMjAxNi0wMy0wMyAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgRW5oYW5jZSBsb2dnaW5nOiBVc2UgImFsd2F5cyBvbiIgbWFjcm9z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ0OTkK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0NzU3NzMwPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgdXNlIG9mIG5ldyBsb2dnaW5nIG1hY3Jv
cyBieSByZXBvcnRpbmcgb24gZnJhbWUgYW5kIHJlc291cmNlCisgICAgICAgIGxvYWQgYWN0aXZp
dHkuCisKKyAgICAgICAgQWRkIG5ldyBsb2dnaW5nIHRvIG1lbW9yeSBwcmVzc3VyZSBoYW5kbGVy
IHRvIHNob3cgd2hlbiBpdCdzIGNhbGxlZAorICAgICAgICBhbmQgaXRzIGVmZmVjdGl2ZW5lc3Mu
IEFzIHBhcnQgb2YgdGhpcyBjaGFuZ2UsIHRoZSB2YXJpb3VzCisgICAgICAgIHBsYXRmb3JtLXNw
ZWNpZmljIGltcGxlbWVudGF0aW9ucyBoYXZlIGJlZW4gdW5pZmllZC4KKworICAgICAgICBObyBu
ZXcgdGVzdHMuIE5vIG5ldyBiYXNpYyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIGFkZGVkLiBPbmx5
IG5ldworICAgICAgICBsb2dnaW5nIGhhcyBiZWVuIGFkZGVkIGluIHJlbGVhc2UgbW9kZSBvciBo
YXMgYmVlbiBlbmFibGVkIHRvIGV4ZWN1dGUKKyAgICAgICAgaW4gcmVsZWFzZSBtb2RlIGFzIHdl
bGwgYXMgZGVidWcgbW9kZS4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cHJlcGFyZUZvckxvYWRTdGFydCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dl
ZCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjppc0Fs
d2F5c09uTG9nZ2luZ0FsbG93ZWQpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5o
OgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Omlz
QWx3YXlzT25Mb2dnaW5nQWxsb3dlZCk6CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAg
ICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjppc0Fsd2F5c09uTG9n
Z2luZ0FsbG93ZWQpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAqIHBhZ2UvU2Vz
c2lvbklELmg6CisgICAgICAgIChXZWJDb3JlOjpTZXNzaW9uSUQ6OmlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCk6CisgICAgICAgICogcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjps
b2dNZW1vcnlVc2FnZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhh
bmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1Mb2cpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5
UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OlJlbGllZkxvZ2dlcik6CisgICAgICAgIChX
ZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6flJlbGllZkxvZ2dl
cik6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2Eu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dl
cjo6cGxhdGZvcm1Mb2cpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2xpbnV4L01lbW9y
eVByZXNzdXJlSGFuZGxlckxpbnV4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpwbGF0Zm9ybUxvZyk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vd2luL01lbW9yeVByZXNzdXJlSGFuZGxlcldpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1Mb2cp
OiBEZWxldGVkLgorCiAyMDE2LTAzLTA2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBj
cmYuY2Fub24uZnI+CiAKICAgICAgICAgRW5hYmxlIERPTSBjbGFzcyBjcmVhdGUgZnVuY3Rpb25z
IHRvIHRha2UgcGFyYW1ldGVycyBpbiBjYXNlIG9mIEpTQnVpbHRpbkNvbnN0cnVjdG9yCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggOWMzYTdmZjg1MjU3YjRlNjc0YThmMDRlNjY0OWZhMzBmOWIzYzY0OC4uMDUwZGY1
ODQ3OTk0N2VmN2RiMzdhNzZiYzQwODg0MmJmYmViZGI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ0IEBACisyMDE2LTAzLTAzICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KKwor
ICAgICAgICBFbmhhbmNlIGxvZ2dpbmc6IFVzZSAiYWx3YXlzIG9uIiBtYWNyb3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDQ5OQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMjQ3NTc3MzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTWFrZSB1c2Ugb2YgbmV3IGxvZ2dpbmcgbWFjcm9zIGJ5IHJlcG9y
dGluZyBvbiBmcmFtZSBhbmQgcmVzb3VyY2UKKyAgICAgICAgbG9hZCBhY3Rpdml0eS4KKworICAg
ICAgICBDb25uZWN0aW9uIHVwZGF0ZWQgdG8gcmVwb3J0IElQQyBlcnJvcnMsIGhlbHBpbmcgdXMg
aWRlbnRpZnkgd2hlbgorICAgICAgICBtZXNzYWdpbmcgYmV0d2VlbiBwcm9jZXNzZXMgYnJlYWtz
IGRvd24uCisKKyAgICAgICAgQ2hpbGRQcm9jZXNzIHVwZGF0ZWQgdG8gbG9nIGlmIGl0IGlzIHRl
cm1pbmF0aW5nIGVhcmx5LiBTb21lCisgICAgICAgIHN5c2RpYWdub3NlIGxvZ2dpbmcgZnJvbSBj
dXN0b21lcnMgaW5kaWNhdGUgdGhhdCB0aGlzIGlzIGhhcHBlbmluZyBpbgorICAgICAgICB0aGUg
d2lsZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3Jr
TG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNo
TG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFp
bExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRp
bnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjppc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseSk6Cisg
ICAgICAgICogU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmRpZENs
b3NlT25Db25uZWN0aW9uV29ya1F1ZXVlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVn
eTo6c2NoZWR1bGVMb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNl
bmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hS
ZXNvdXJjZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmFp
bFJlc291cmNlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6aXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuaDoKKwogMjAxNi0wMy0wNiAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgUmVkdWNlIHBhZ2UgY2FjaGUgY2FwYWNpdHkgZnJvbSAzIHRv
IDIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmggYi9Tb3VyY2UvV1RG
L3d0Zi9Bc3NlcnRpb25zLmgKaW5kZXggYmYyZjE5YTE0MWRkOWY2ZDNmOTgyZWU3YTdmMzI3NGMw
YWQ1MjU4ZS4uYjQ4Yzg2MjNiN2Q1ZDRiYjQxZmRjN2FhNjY0NDQxMDE0NmU2MjQzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Fz
c2VydGlvbnMuaApAQCAtMzg0LDEyICszODQsMTIgQEAgV1RGX0VYUE9SVF9QUklWQVRFIE5PX1JF
VFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBXVEZDcmFzaFdpdGhTZWN1cml0eUltcGxpY2F0aW9uKCkK
IAogI2RlZmluZSBXVEZfTE9HR0lOR19QUkVGSVggIiNXSzogIgogI2lmIExPR19BTFdBWVNfRElT
QUJMRUQKLSNkZWZpbmUgTE9HX0FMV0FZUyhmb3JtYXQsIC4uLikgICAgICAgKCh2b2lkKTApCi0j
ZGVmaW5lIExPR19BTFdBWVNfRVJST1IoZm9ybWF0LCAuLi4pIFdURlJlcG9ydEVycm9yKF9fRklM
RV9fLCBfX0xJTkVfXywgV1RGX1BSRVRUWV9GVU5DVElPTiwgZm9ybWF0LCAjI19fVkFfQVJHU19f
KQorI2RlZmluZSBMT0dfQUxXQVlTKGlzQWxsb3dlZCwgZm9ybWF0LCAuLi4pICAgICAgICgodm9p
ZCkwKQorI2RlZmluZSBMT0dfQUxXQVlTX0VSUk9SKGlzQWxsb3dlZCwgZm9ybWF0LCAuLi4pIFdU
RlJlcG9ydEVycm9yKF9fRklMRV9fLCBfX0xJTkVfXywgV1RGX1BSRVRUWV9GVU5DVElPTiwgZm9y
bWF0LCAjI19fVkFfQVJHU19fKQogI2Vsc2UKICNkZWZpbmUgV1RGX0xPR19ERUZBVUxUIE9TX0xP
R19ERUZBVUxUCi0jZGVmaW5lIExPR19BTFdBWVMoZm9ybWF0LCAuLi4pICAgICAgIG9zX2xvZyhX
VEZfTE9HX0RFRkFVTFQsIFdURl9MT0dHSU5HX1BSRUZJWCBmb3JtYXQsICMjX19WQV9BUkdTX18p
Ci0jZGVmaW5lIExPR19BTFdBWVNfRVJST1IoZm9ybWF0LCAuLi4pIG9zX2xvZ19lcnJvcihXVEZf
TE9HX0RFRkFVTFQsIFdURl9MT0dHSU5HX1BSRUZJWCBmb3JtYXQsICMjX19WQV9BUkdTX18pCisj
ZGVmaW5lIExPR19BTFdBWVMoaXNBbGxvd2VkLCBmb3JtYXQsIC4uLikgICAgICAgZG8geyBpZiAo
aXNBbGxvd2VkKSBvc19sb2coV1RGX0xPR19ERUZBVUxULCBXVEZfTE9HR0lOR19QUkVGSVggZm9y
bWF0LCAjI19fVkFfQVJHU19fKTsgfSB3aGlsZSAoMCkKKyNkZWZpbmUgTE9HX0FMV0FZU19FUlJP
Uihpc0FsbG93ZWQsIGZvcm1hdCwgLi4uKSBkbyB7IGlmIChpc0FsbG93ZWQpIG9zX2xvZ19lcnJv
cihXVEZfTE9HX0RFRkFVTFQsIFdURl9MT0dHSU5HX1BSRUZJWCBmb3JtYXQsICMjX19WQV9BUkdT
X18pOyB9IHdoaWxlICgwKQogI2VuZGlmCiAKIC8qIFJFTEVBU0VfQVNTRVJUICovCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBkYWE3NTM0YmUyYTI5NDE1YjkxYTIzZjRl
MGM3NjIzYjQ2ODFiMTI1Li40ZGEzMzhmNTQyZWQwOWQ0YTI2NjUxMzQ2NzFkN2NhYzNlZjg3ZGYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTE0MCw2ICsxNDAsOCBA
QAogI2luY2x1ZGUgIldLQ29udGVudE9ic2VydmF0aW9uLmgiCiAjZW5kaWYKIAorI2RlZmluZSBG
UkFNRUxPQURFUl9MT0dfQUxXQVlTKC4uLikgTE9HX0FMV0FZUyhpc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKSwgX19WQV9BUkdTX18pCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKQEAgLTEwODQsNiArMTA4Niw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OnN0YXJ0ZWQoKQogCiB2b2lkIEZyYW1lTG9hZGVyOjpwcmVwYXJlRm9yTG9hZFN0YXJ0KCkKIHsK
KyAgICBGUkFNRUxPQURFUl9MT0dfQUxXQVlTKCJTdGFydGluZyBmcmFtZSBsb2FkLCBmcmFtZSA9
ICVwLCBtYWluID0gJWQiLCAmbV9mcmFtZSwgbV9mcmFtZS5pc01haW5GcmFtZSgpKTsKKwogICAg
IG1fcHJvZ3Jlc3NUcmFja2VyLT5wcm9ncmVzc1N0YXJ0ZWQoKTsKICAgICBtX2NsaWVudC5kaXNw
YXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAKQEAgLTIyNzcsOSArMjI4MSwxMSBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNGcmFtZSgpCiAKICAgICAg
ICAgICAgIEFYT2JqZWN0Q2FjaGU6OkFYTG9hZGluZ0V2ZW50IGxvYWRpbmdFdmVudDsKICAgICAg
ICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgICAgICBGUkFNRUxPQURF
Ul9MT0dfQUxXQVlTKCJGaW5pc2hlZCBmcmFtZSBsb2FkIHdpdGhvdXQgZXJyb3IsIGZyYW1lID0g
JXAsIG1haW4gPSAlZCIsICZtX2ZyYW1lLCBtX2ZyYW1lLmlzTWFpbkZyYW1lKCkpOwogICAgICAg
ICAgICAgICAgIG1fY2xpZW50LmRpc3BhdGNoRGlkRmFpbExvYWQoZXJyb3IpOwogICAgICAgICAg
ICAgICAgIGxvYWRpbmdFdmVudCA9IEFYT2JqZWN0Q2FjaGU6OkFYTG9hZGluZ0ZhaWxlZDsKICAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgRlJBTUVMT0FERVJfTE9HX0FMV0FZ
UygiRmluaXNoZWQgZnJhbWUgbG9hZCB3aXRoIGVycm9yLCBmcmFtZSA9ICVwLCBtYWluID0gJWQs
IGlzVGltZW91dCA9ICVkLCBpc0NhbmNlbGxhdGlvbiA9ICVkLCBlcnJvckNvZGUgPSAlZCIsICZt
X2ZyYW1lLCBtX2ZyYW1lLmlzTWFpbkZyYW1lKCksIGVycm9yLmlzVGltZW91dCgpLCBlcnJvci5p
c0NhbmNlbGxhdGlvbigpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAjaWYgRU5BQkxFKERBVEFfREVU
RUNUSU9OKQogICAgICAgICAgICAgICAgIGlmIChtX2ZyYW1lLnNldHRpbmdzKCkuZGF0YURldGVj
dG9yVHlwZXMoKSAhPSBEYXRhRGV0ZWN0b3JUeXBlTm9uZSkgewogICAgICAgICAgICAgICAgICAg
ICBSZWZQdHI8UmFuZ2U+IGRvY3VtZW50UmFuZ2UgPSBtYWtlUmFuZ2UoZmlyc3RQb3NpdGlvbklu
Tm9kZShtX2ZyYW1lLmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpKSwgbGFzdFBvc2l0aW9u
SW5Ob2RlKG1fZnJhbWUuZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpKTsKQEAgLTM1NjYs
NiArMzU3MiwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjphcHBseVNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKERvY3VtZW50TAogICAgIGRvY3VtZW50TG9hZGVy
LnNldFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koc2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeVRvQXBwbHkobV9mcmFtZSwgcHJvcGFnYXRlZFBvbGljeSkpOwogfQogCitib29sIEZyYW1l
TG9hZGVyOjppc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdAoreworICAgIHJldHVybiBm
cmFtZSgpLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpOworfQorCiBib29sIEZyYW1lTG9hZGVy
Q2xpZW50OjpoYXNIVE1MVmlldygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGQwODczNDFjODY5ZTA1OTU0MmRjMjYwZTk1M2Ex
ZjYwYTNlZTllYTkuLmYyNGQ0NGVlMzUxMTc5MjYyZjhiMjE1OTUzNmM5ZWI3MGQ5MWM3NWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC0yOTYsNiArMjk2LDggQEAgcHVibGlj
OgogICAgIGNvbnN0IFVSTCYgcHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwoKSBj
b25zdCB7IHJldHVybiBtX3Byb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMOyB9CiAg
ICAgdm9pZCBzZXRQcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTChjb25zdCBVUkwm
IHVybCkgeyBtX3Byb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMID0gdXJsOyB9CiAK
KyAgICBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0OworCiBwcml2YXRlOgog
ICAgIGVudW0gRm9ybVN1Ym1pc3Npb25DYWNoZUxvYWRQb2xpY3kgewogICAgICAgICBNYXlBdHRl
bXB0Q2FjaGVPbmx5TG9hZEZvckZvcm1TdWJtaXNzaW9uSXRlbSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGQwYzgyMGFkNDAyZTg5ZDk0ZDVlZDkyMjlmM2I5
YjMwNjBhZTljOTIuLmNlZjA2YTM2YmU5MjY5ZjMzYjVkMWE4NDUyMGE5MWQ5NjI4ZWVlYzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNzU0LDQgKzc1NCw5
IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZENyZWF0ZVF1aWNrTG9va0hhbmRsZShRdWlja0xv
b2tIYW5kbGUmIGhhbmRsZSkKIH0KICNlbmRpZgogCitib29sIFJlc291cmNlTG9hZGVyOjppc0Fs
d2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdAoreworICAgIHJldHVybiBmcmFtZUxvYWRlcigp
ICYmIGZyYW1lTG9hZGVyKCktPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpOworfQorCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDA3MDY0ZDcwMDlhNjQzODg2
YjE3ZjJlMjYwNWFlNzUwNDIyYTVlMjYuLmM3MGRjMmJjOTUzM2RlZmYwZGIzYzhkNzhjY2RmOWI4
NDIwMmI0MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC0xNDUs
NiArMTQ1LDggQEAgcHVibGljOgogICAgIHZvaWQgdW5zY2hlZHVsZShXVEY6OlNjaGVkdWxlUGFp
ciYpOwogI2VuZGlmCiAKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgUmVzb3VyY2VMb2FkZXIoRnJhbWUq
LCBSZXNvdXJjZUxvYWRlck9wdGlvbnMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDU5Mjdj
YmZiOWY0MmQ3YWY3MDgyM2Y5YjgwOGJkNzNiMDZhNmUyYjcuLjVkNDYxNmY1Mzg0ZmIyNjgxMjM4
YjJhOWFjMzdmNTVlNDg2MTMzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0xMDUzLDQgKzEw
NTMsOSBAQCBib29sIEZyYW1lOjppc1VSTEFsbG93ZWQoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgRnJhbWU6OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dl
ZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBhZ2UoKSAmJiBwYWdlKCktPmlzQWx3YXlzT25Mb2dn
aW5nQWxsb3dlZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgK
aW5kZXggYTAwYTdjODExM2E3NjVkYTI1OGQ4NjgyNjMyZGJmNDBlMmVlYjg0Yy4uZjMwNTA3NWVl
NDA2YmI5YjRiZTNhYjdkYThmMTM3M2Y5MzY0NjBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMjcy
LDYgKzI3Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBhY3RpdmVET01P
YmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlRE9N
T2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWRDb3VudCA+IDA7IH0KIAogICAgICAgICBib29s
IGlzVVJMQWxsb3dlZChjb25zdCBVUkwmKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc0Fsd2F5c09u
TG9nZ2luZ0FsbG93ZWQoKSBjb25zdDsKIAogICAgIC8vID09PT09PT09CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCmluZGV4IGQ2NTU4YWJjNzRiZjQ5MTkxNmMyYWIyMmZjZmEyM2FkYzRmMzJkMjguLjIzNzM3
OWU3N2E4MDE2NzdkOGZkMmI4MzY0ZjEyODBlMDQ3NmFmMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApA
QCAtMjAwNCw0ICsyMDA0LDkgQEAgdm9pZCBQYWdlOjpzZXRSZXNvdXJjZVVzYWdlT3ZlcmxheVZp
c2libGUoYm9vbCB2aXNpYmxlKQogfQogI2VuZGlmCiAKK2Jvb2wgUGFnZTo6aXNBbHdheXNPbkxv
Z2dpbmdBbGxvd2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zZXNzaW9uSUQuaXNBbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmgKaW5kZXggYzQ3MDYxNWU4MDMxNDE2YjMxMzY3ZDExNjNiZDFhNTY2MjNhN2YxOS4uNGE2MjI4
MWU5ZTE5ZTU0Yjk1NjI2MzEwY2U3NTM0YTUyYjQ1Y2JkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTUw
Nyw2ICs1MDcsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX2NvbnRyb2xsZWRCeUF1dG9tYXRpb247IH0KICAgICB2b2lkIHNl
dENvbnRyb2xsZWRCeUF1dG9tYXRpb24oYm9vbCBjb250cm9sbGVkKSB7IG1fY29udHJvbGxlZEJ5
QXV0b21hdGlvbiA9IGNvbnRyb2xsZWQ7IH0KIAorICAgIGJvb2wgaXNBbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0
R3JvdXAoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXNzaW9uSUQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vzc2lvbklELmgKaW5kZXggMGRiYWExYjQ3MTUxOTgzZTdh
ODBiNmQ2NzY1MjRhOWQ5ZDBlNzFjYS4uNWI5YjcxZGE1ZWMyNzRhOGZmYTA3YThjYWViYjE2NGE0
YWMzNWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXNzaW9uSUQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nlc3Npb25JRC5oCkBAIC00Miw2ICs0Miw3IEBAIHB1Ymxp
YzoKICAgICB1aW50NjRfdCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsg
fQogICAgIGJvb2wgb3BlcmF0b3I9PShTZXNzaW9uSUQgc2Vzc2lvbklEKSBjb25zdCB7IHJldHVy
biBtX3Nlc3Npb25JRCA9PSBzZXNzaW9uSUQubV9zZXNzaW9uSUQ7IH0KICAgICBib29sIG9wZXJh
dG9yIT0oU2Vzc2lvbklEIHNlc3Npb25JRCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQgIT0g
c2Vzc2lvbklELm1fc2Vzc2lvbklEOyB9CisgICAgYm9vbCBpc0Fsd2F5c09uTG9nZ2luZ0FsbG93
ZWQoKSBjb25zdCB7IHJldHVybiAhaXNFcGhlbWVyYWwoKTsgfQogCiAgICAgc3RhdGljIFNlc3Np
b25JRCBlbXB0eVNlc3Npb25JRCgpIHsgcmV0dXJuIFNlc3Npb25JRCgwKTsgfQogICAgIHN0YXRp
YyBTZXNzaW9uSUQgZGVmYXVsdFNlc3Npb25JRCgpIHsgcmV0dXJuIFNlc3Npb25JRCgxKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAK
aW5kZXggNjYwMTk0MjBiMjEyZTM3NmE1M2Q4ODVmNzk3ODc5MjFmZDZiNTc3OC4uNWI0ODBiZmM3
ZGQyYTYzZjZiNTI2NmEzMzNhNGIzMDRmNWMxNDI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCkBAIC0xODAsMTMgKzE4MCwzNyBA
QCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVsZWFzZU1lbW9yeShDcml0aWNhbCBjcml0
aWNhbCwgU3luY2hyb25vdXMgc3luY2hybwogICAgIH0KIH0KIAordm9pZCBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6bG9nTWVtb3J5VXNhZ2VDaGFuZ2UoKQoreworI2lmICFM
T0dfQUxXQVlTX0RJU0FCTEVECisjZGVmaW5lIFNUUklOR19TUEVDSUZJQ0FUSU9OICIle3B1Ymxp
Y31zIgorI2RlZmluZSBNRU1PUllQUkVTU1VSRV9MT0coLi4uKSBMT0dfQUxXQVlTKHRydWUsIF9f
VkFfQVJHU19fKQorI2Vsc2UKKyNkZWZpbmUgU1RSSU5HX1NQRUNJRklDQVRJT04gIiVzIgorI2Rl
ZmluZSBNRU1PUllQUkVTU1VSRV9MT0coLi4uKSBXVEZMb2dBbHdheXMoX19WQV9BUkdTX18pCisj
ZW5kaWYKKworICAgIHNpemVfdCBjdXJyZW50TWVtb3J5ID0gcGxhdGZvcm1NZW1vcnlVc2FnZSgp
OworICAgIGlmIChjdXJyZW50TWVtb3J5ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpIHx8IG1f
aW5pdGlhbE1lbW9yeSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKSkgeworICAgICAgICBNRU1P
UllQUkVTU1VSRV9MT0coIk1lbW9yeSBwcmVzc3VyZSByZWxpZWY6ICIgU1RSSU5HX1NQRUNJRklD
QVRJT04gIjogKFVuYWJsZSB0byBnZXQgZGlydHkgbWVtb3J5IGluZm9ybWF0aW9uIGZvciBwcm9j
ZXNzKSIsIG1fbG9nU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNzaXpl
X3QgbWVtb3J5RGlmZiA9IGN1cnJlbnRNZW1vcnkgLSBtX2luaXRpYWxNZW1vcnk7CisgICAgaWYg
KG1lbW9yeURpZmYgPCAwKQorICAgICAgICBNRU1PUllQUkVTU1VSRV9MT0coIk1lbW9yeSBwcmVz
c3VyZSByZWxpZWY6ICIgU1RSSU5HX1NQRUNJRklDQVRJT04gIjogLWRpcnR5ICVsZCBieXRlcyAo
ZnJvbSAlbHUgdG8gJWx1KSIsIG1fbG9nU3RyaW5nLCAobWVtb3J5RGlmZiAqIC0xKSwgbV9pbml0
aWFsTWVtb3J5LCBjdXJyZW50TWVtb3J5KTsKKyAgICBlbHNlIGlmIChtZW1vcnlEaWZmID4gMCkK
KyAgICAgICAgTUVNT1JZUFJFU1NVUkVfTE9HKCJNZW1vcnkgcHJlc3N1cmUgcmVsaWVmOiAiIFNU
UklOR19TUEVDSUZJQ0FUSU9OICI6ICtkaXJ0eSAlbGQgYnl0ZXMgKGZyb20gJWx1IHRvICVsdSki
LCBtX2xvZ1N0cmluZywgbWVtb3J5RGlmZiwgbV9pbml0aWFsTWVtb3J5LCBjdXJyZW50TWVtb3J5
KTsKKyAgICBlbHNlCisgICAgICAgIE1FTU9SWVBSRVNTVVJFX0xPRygiTWVtb3J5IHByZXNzdXJl
IHJlbGllZjogIiBTVFJJTkdfU1BFQ0lGSUNBVElPTiAiOiA9ZGlydHkgKGF0ICVsdSBieXRlcyki
LCBtX2xvZ1N0cmluZywgY3VycmVudE1lbW9yeSk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0Ep
ICYmICFPUyhMSU5VWCkgJiYgIVBMQVRGT1JNKFdJTikKIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5k
bGVyOjppbnN0YWxsKCkgeyB9CiB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6dW5pbnN0YWxs
KCkgeyB9CiB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aG9sZE9mZih1bnNpZ25lZCkgeyB9
CiB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUoQ3Jp
dGljYWwsIFN5bmNocm9ub3VzKSB7IH0KIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpwbGF0
Zm9ybVJlbGVhc2VNZW1vcnkoQ3JpdGljYWwpIHsgfQotdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRs
ZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1Mb2coKSB7IH0KIHNpemVfdCBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1NZW1vcnlVc2FnZSgpIHsgcmV0dXJuIDA7
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJl
SGFuZGxlci5oCmluZGV4IGJjNDE1MjdkNWJkMDRjMWRiOWZlZmQyMTNkMzM4ZWFkYmU3MzM5MDMu
LjcxMTRkMmMyNTc1YTk5ZjEwZDM5MmEyYjY2MDFiNDc3ZjdmN2RkOTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCkBAIC04NywxNCArODcs
MjIgQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgUmVsaWVmTG9nZ2Vy
KGNvbnN0IGNoYXIgKmxvZykKICAgICAgICAgICAgIDogbV9sb2dTdHJpbmcobG9nKQorI2lmICFM
T0dfQUxXQVlTX0RJU0FCTEVECisgICAgICAgICAgICAsIG1faW5pdGlhbE1lbW9yeShwbGF0Zm9y
bU1lbW9yeVVzYWdlKCkpCisjZWxzZQogICAgICAgICAgICAgLCBtX2luaXRpYWxNZW1vcnkoc19s
b2dnaW5nRW5hYmxlZCA/IHBsYXRmb3JtTWVtb3J5VXNhZ2UoKSA6IDApCisjZW5kaWYKICAgICAg
ICAgewogICAgICAgICB9CiAKICAgICAgICAgflJlbGllZkxvZ2dlcigpCiAgICAgICAgIHsKKyNp
ZiAhTE9HX0FMV0FZU19ESVNBQkxFRAorICAgICAgICAgICAgbG9nTWVtb3J5VXNhZ2VDaGFuZ2Uo
KTsKKyNlbHNlCiAgICAgICAgICAgICBpZiAoc19sb2dnaW5nRW5hYmxlZCkKLSAgICAgICAgICAg
ICAgICBwbGF0Zm9ybUxvZygpOworICAgICAgICAgICAgICAgIGxvZ01lbW9yeVVzYWdlQ2hhbmdl
KCk7CisjZW5kaWYKICAgICAgICAgfQogCiAgICAgICAgIGNvbnN0IGNoYXIqIGxvZ1N0cmluZygp
IGNvbnN0IHsgcmV0dXJuIG1fbG9nU3RyaW5nOyB9CkBAIC0xMDMsNyArMTExLDcgQEAgcHVibGlj
OgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgc2l6ZV90IHBsYXRmb3JtTWVtb3J5VXNhZ2UoKTsK
LSAgICAgICAgdm9pZCBwbGF0Zm9ybUxvZygpOworICAgICAgICB2b2lkIGxvZ01lbW9yeVVzYWdl
Q2hhbmdlKCk7CiAKICAgICAgICAgY29uc3QgY2hhciogbV9sb2dTdHJpbmc7CiAgICAgICAgIHNp
emVfdCBtX2luaXRpYWxNZW1vcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCmluZGV4IDZjMjUyYjVm
MmM4NTkyMDkwZDcxNDk5OGM1ZmY3MjUxMjBjYzc3YzIuLmU5NDU2YTM5Y2ZjNmEzZDgzZGQzOTIy
YTk1M2U3ZTkzZWIxMTUyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCkBAIC0yMzQsMjMgKzIz
NCw2IEBAIHNpemVfdCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZv
cm1NZW1vcnlVc2FnZSgpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4odm1JbmZvLmlu
dGVybmFsKTsKIH0KIAotdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6
cGxhdGZvcm1Mb2coKQotewotICAgIHNpemVfdCBjdXJyZW50TWVtb3J5ID0gcGxhdGZvcm1NZW1v
cnlVc2FnZSgpOwotICAgIGlmIChjdXJyZW50TWVtb3J5ID09IHN0YXRpY19jYXN0PHNpemVfdD4o
LTEpIHx8IG1faW5pdGlhbE1lbW9yeSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKSkgewotICAg
ICAgICBOU0xvZyhAIiVzIChVbmFibGUgdG8gZ2V0IGRpcnR5IG1lbW9yeSBpbmZvcm1hdGlvbiBm
b3IgcHJvY2VzcylcbiIsIG1fbG9nU3RyaW5nKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIHNzaXplX3QgbWVtb3J5RGlmZiA9IGN1cnJlbnRNZW1vcnkgLSBtX2luaXRpYWxNZW1vcnk7
Ci0gICAgaWYgKG1lbW9yeURpZmYgPCAwKQotICAgICAgICBOU0xvZyhAIlByZXNzdXJlIHJlbGll
ZjogJXM6IC1kaXJ0eSAlbGQgYnl0ZXMgKGZyb20gJWxkIHRvICVsZClcbiIsIG1fbG9nU3RyaW5n
LCAobWVtb3J5RGlmZiAqIC0xKSwgbV9pbml0aWFsTWVtb3J5LCBjdXJyZW50TWVtb3J5KTsKLSAg
ICBlbHNlIGlmIChtZW1vcnlEaWZmID4gMCkKLSAgICAgICAgTlNMb2coQCJQcmVzc3VyZSByZWxp
ZWY6ICVzOiArZGlydHkgJWxkIGJ5dGVzIChmcm9tICVsZCB0byAlbGQpXG4iLCBtX2xvZ1N0cmlu
ZywgbWVtb3J5RGlmZiwgbV9pbml0aWFsTWVtb3J5LCBjdXJyZW50TWVtb3J5KTsKLSAgICBlbHNl
Ci0gICAgICAgIE5TTG9nKEAiUHJlc3N1cmUgcmVsaWVmOiAlczogPWRpcnR5IChhdCAlbGQgYnl0
ZXMpXG4iLCBtX2xvZ1N0cmluZywgY3VycmVudE1lbW9yeSk7Ci19Ci0KICNpZiBQTEFURk9STShJ
T1MpCiBzdGF0aWMgdm9pZCByZXNwb25kVG9NZW1vcnlQcmVzc3VyZUNhbGxiYWNrKENGUnVuTG9v
cE9ic2VydmVyUmVmIG9ic2VydmVyLCBDRlJ1bkxvb3BBY3Rpdml0eSAvKmFjdGl2aXR5Ki8sIHZv
aWQqIC8qaW5mbyovKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlu
dXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwCmluZGV4IGZlYjY5YmRiZjNl
ZjM5ZjUwMGYyODc5ZmMwOTNhMmU1ZDMwMjIwMzUuLmQwZDEzNmFjYzEzNGViZTk5NzFiYzQxZGQz
MDU0NTJhM2E0NTExOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4
L01lbW9yeVByZXNzdXJlSGFuZGxlckxpbnV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHAKQEAgLTIwNywyMyArMjA3
LDYgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnBsYXRmb3JtUmVsZWFzZU1lbW9yeShD
cml0aWNhbCkKICNlbmRpZgogfQogCi12b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVm
TG9nZ2VyOjpwbGF0Zm9ybUxvZygpCi17Ci0gICAgc2l6ZV90IGN1cnJlbnRNZW1vcnkgPSBwbGF0
Zm9ybU1lbW9yeVVzYWdlKCk7Ci0gICAgaWYgKGN1cnJlbnRNZW1vcnkgPT0gc3RhdGljX2Nhc3Q8
c2l6ZV90PigtMSkgfHwgbV9pbml0aWFsTWVtb3J5ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEp
KSB7Ci0gICAgICAgIExPRyhNZW1vcnlQcmVzc3VyZSwgIiVzIChVbmFibGUgdG8gZ2V0IGRpcnR5
IG1lbW9yeSBpbmZvcm1hdGlvbiBmb3IgcHJvY2VzcykiLCBtX2xvZ1N0cmluZyk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBzc2l6ZV90IG1lbW9yeURpZmYgPSBjdXJyZW50TWVtb3J5
IC0gbV9pbml0aWFsTWVtb3J5OwotICAgIGlmIChtZW1vcnlEaWZmIDwgMCkKLSAgICAgICAgTE9H
KE1lbW9yeVByZXNzdXJlLCAiUHJlc3N1cmUgcmVsaWVmOiAlczogLWRpcnR5ICVsdSBieXRlcyAo
ZnJvbSAlbHUgdG8gJWx1KSIsIG1fbG9nU3RyaW5nLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25n
PihtZW1vcnlEaWZmICogLTEpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihtX2luaXRpYWxN
ZW1vcnkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihjdXJyZW50TWVtb3J5KSk7Ci0gICAg
ZWxzZSBpZiAobWVtb3J5RGlmZiA+IDApCi0gICAgICAgIExPRyhNZW1vcnlQcmVzc3VyZSwgIlBy
ZXNzdXJlIHJlbGllZjogJXM6ICtkaXJ0eSAlbHUgYnl0ZXMgKGZyb20gJWx1IHRvICVsdSkiLCBt
X2xvZ1N0cmluZywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obWVtb3J5RGlmZiksIHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGxvbmc+KG1faW5pdGlhbE1lbW9yeSksIHN0YXRpY19jYXN0PHVuc2ln
bmVkIGxvbmc+KGN1cnJlbnRNZW1vcnkpKTsKLSAgICBlbHNlCi0gICAgICAgIExPRyhNZW1vcnlQ
cmVzc3VyZSwgIlByZXNzdXJlIHJlbGllZjogJXM6ID1kaXJ0eSAoYXQgJWx1IGJ5dGVzKSIsIG1f
bG9nU3RyaW5nLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihjdXJyZW50TWVtb3J5KSk7Ci19
Ci0KIHNpemVfdCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1N
ZW1vcnlVc2FnZSgpCiB7CiAgICAgRklMRSogZmlsZSA9IGZvcGVuKHNfcHJvY2Vzc1N0YXR1cywg
InIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NZW1vcnlQcmVz
c3VyZUhhbmRsZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01lbW9yeVBy
ZXNzdXJlSGFuZGxlcldpbi5jcHAKaW5kZXggMGQ1MjNiODhhNjAxNzZjNjdmMTdjMjM4NWFlM2Zm
NWQxNjdmMzEyOS4uZGM5N2M3MzE2MWJmYTczMjljZjIzOWYxNGQxMWI3NzdhOTliNmRlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01lbW9yeVByZXNzdXJlSGFuZGxl
cldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01lbW9yeVByZXNzdXJl
SGFuZGxlcldpbi5jcHAKQEAgLTEyOCw4ICsxMjgsNCBAQCBzaXplX3QgTWVtb3J5UHJlc3N1cmVI
YW5kbGVyOjpSZWxpZWZMb2dnZXI6OnBsYXRmb3JtTWVtb3J5VXNhZ2UoKQogICAgIHJldHVybiAw
OwogfQogCi12b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpwbGF0Zm9y
bUxvZygpCi17Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4
IGU5YzllNjA1N2Q0Mjk5ODRkYWYzMmY0NDQxNzJjZDFkNWMxM2UxN2IuLmI4NTA4ZTgyNjNmOGZj
OTZkZTcyZTRhYWQ5OGM5NGM3ZWQwMmI1ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNDYsNiArNDYs
OSBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorI2RlZmluZSBORVRXT1JLUkVTT1VS
Q0VMT0FERVJfTE9HX0FMV0FZUyguLi4pIExPR19BTFdBWVMoaXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCksIF9fVkFfQVJHU19fKQorI2RlZmluZSBORVRXT1JLUkVTT1VSQ0VMT0FERVJfTE9HX0FM
V0FZU19FUlJPUiguLi4pIExPR19BTFdBWVNfRVJST1IoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2Vk
KCksIF9fVkFfQVJHU19fKQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSB7CkBAIC0yMDAsNiArMjAzLDggQEAg
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKICNlbmRpZgogCisgICAgTkVUV09SS1JFU09VUkNFTE9BREVS
X0xPR19BTFdBWVMoIlN0YXJ0aW5nIG5ldHdvcmsgcmVzb3VyY2UgbG9hZDogbG9hZGVyID0gJXAs
IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5
bmNocm9ub3VzID0gJWQiLCB0aGlzLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRl
cnMud2ViRnJhbWVJRCwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKKwogICAg
IE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gbV9wYXJhbWV0ZXJzOwogICAgIHBh
cmFtZXRlcnMuZGVmZXJzTG9hZGluZyA9IG1fZGVmZXJzTG9hZGluZzsKICAgICBwYXJhbWV0ZXJz
LnJlcXVlc3QgPSByZXF1ZXN0OwpAQCAtMjcxLDYgKzI3Niw4IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjphYm9ydCgpCiAKIGF1dG8gTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVjZWl2ZWRSZXNwb25zZSkgLT4g
U2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UKIHsKKyAgICBORVRXT1JLUkVTT1VSQ0VM
T0FERVJfTE9HX0FMV0FZUygiUmVjZWl2ZWQgbmV0d29yayByZXNvdXJjZSByZXNwb25zZTogbG9h
ZGVyID0gJXAsIHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCBpc01haW5SZXNvdXJjZSA9
ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIGh0dHBTdGF0dXNDb2RlID0gJWQiLCB0aGlzLCBtX3Bh
cmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgaXNNYWluUmVzb3Vy
Y2UoKSwgaXNTeW5jaHJvbm91cygpLCByZWNlaXZlZFJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkp
OworCiAgICAgbV9yZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAKICAgICAvLyBGb3IgbXVs
dGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyBnZXRzIGNhbGxl
ZCBtdWx0aXBsZSB0aW1lcyBhbmQgYnVmZmVyaW5nIHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBoYW5k
bGluZy4KQEAgLTI5NiwxMyArMzAzLDE2IEBAIGF1dG8gTmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVjZWl2ZWRSCiAgICAg
c2hvdWxkU2VuZERpZFJlY2VpdmVSZXNwb25zZSA9ICFtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9u
OwogI2VuZGlmCiAKLSAgICBib29sIHNob3VsZFdhaXRDb250aW51ZURpZFJlY2VpdmVSZXNwb25z
ZSA9IG9yaWdpbmFsUmVxdWVzdCgpLnJlcXVlc3RlcigpID09IFJlc291cmNlUmVxdWVzdDo6UmVx
dWVzdGVyOjpNYWluOworICAgIGJvb2wgc2hvdWxkV2FpdENvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlID0gaXNNYWluUmVzb3VyY2UoKTsKICAgICBpZiAoc2hvdWxkU2VuZERpZFJlY2VpdmVSZXNw
b25zZSkgewogICAgICAgICBpZiAoaXNTeW5jaHJvbm91cygpKQogICAgICAgICAgICAgbV9zeW5j
aHJvbm91c0xvYWREYXRhLT5yZXNwb25zZSA9IG1fcmVzcG9uc2U7CiAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgaWYgKCFzZW5kQWJvcnRpbmdPbkZhaWx1cmUoTWVzc2FnZXM6OldlYlJlc291
cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UobV9yZXNwb25zZSwgc2hvdWxkV2FpdENvbnRp
bnVlRGlkUmVjZWl2ZVJlc3BvbnNlKSkpCisgICAgICAgICAgICBORVRXT1JLUkVTT1VSQ0VMT0FE
RVJfTE9HX0FMV0FZUygiU2VuZGluZyBkaWRSZWNlaXZlUmVzcG9uc2UgbWVzc2FnZSB0byB0aGUg
V2ViQ29udGVudCBwcm9jZXNzOiBsb2FkZXIgPSAlcCwgcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9
ICVsbHUsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCIsIHRoaXMsIG1f
cGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBpc01haW5SZXNv
dXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICAgICAgaWYgKCFzZW5kQWJvcnRpbmdP
bkZhaWx1cmUoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2Uo
bV9yZXNwb25zZSwgc2hvdWxkV2FpdENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKSkpIHsKKyAg
ICAgICAgICAgICAgICBORVRXT1JLUkVTT1VSQ0VMT0FERVJfTE9HX0FMV0FZU19FUlJPUigiRmFp
bGVkIHRvIHNlbmQgdGhlIGRpZFJlY2VpdmVSZXNwb25zZSBJUEMgbWVzc2FnZSB0byB0aGUgV2Vi
Q29udGVudCBwcm9jZXNzOiBsb2FkZXIgPSAlcCwgcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVs
bHUsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCIsIHRoaXMsIG1fcGFy
YW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBpc01haW5SZXNvdXJj
ZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAgICAgICAgICAgIHJldHVybiBTaG91bGRDb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZTo6Tm87CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTMxMiw2ICszMjIsMTEgQEAgYXV0byBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWNlaXZlZFIKICAgICBz
aG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSA9IHNob3VsZENvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlIHx8IG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb247CiAjZW5kaWYKIAorICAgIGlm
IChzaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSkKKyAgICAgICAgTkVUV09SS1JFU09V
UkNFTE9BREVSX0xPR19BTFdBWVMoIlNob3VsZCB3YWl0IGZvciBtZXNzYWdlIGZyb20gV2ViQ29u
dGVudCBwcm9jZXNzIGJlZm9yZSBjb250aW51aW5nIHJlc291cmNlIGxvYWQ6IGxvYWRlciA9ICVw
LCBwYWdlSUQgPSAlbGx1LCBmcmFtZUlEID0gJWxsdSwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNT
eW5jaHJvbm91cyA9ICVkIiwgdGhpcywgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CisgICAg
ZWxzZQorICAgICAgICBORVRXT1JLUkVTT1VSQ0VMT0FERVJfTE9HX0FMV0FZUygiU2hvdWxkIG5v
dCB3YWl0IGZvciBtZXNzYWdlIGZyb20gV2ViQ29udGVudCBwcm9jZXNzIGJlZm9yZSBjb250aW51
aW5nIHJlc291cmNlIGxvYWQ6IGxvYWRlciA9ICVwLCBwYWdlSUQgPSAlbGx1LCBmcmFtZUlEID0g
JWxsdSwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkIiwgdGhpcywgbV9w
YXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIGlzTWFpblJlc291
cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CisKICAgICByZXR1cm4gc2hvdWxkQ29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2UgPyBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZTo6WWVzIDog
U2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2U6Ok5vOwogfQogCkBAIC0zNDQsNiArMzU5
LDggQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludAogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGltZSkKIHsKKyAgICBORVRXT1JLUkVT
T1VSQ0VMT0FERVJfTE9HX0FMV0FZUygiRmluaXNoZWQgbG9hZGluZyBuZXR3b3JrIHJlc291cmNl
OiBsb2FkZXIgPSAlcCwgcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIGlzTWFpblJlc291
cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCIsIHRoaXMsIG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9u
b3VzKCkpOworCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEUpCiAgICAgaWYgKG1fY2FjaGVFbnRy
eUZvclZhbGlkYXRpb24pIHsKICAgICAgICAgLy8gMzA0IE5vdCBNb2RpZmllZApAQCAtMzc1LDYg
KzM5Miw4IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGRv
dWJsZSBmaW5pc2hUaW1lKQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbExv
YWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CisgICAgTkVUV09SS1JFU09VUkNF
TE9BREVSX0xPR19BTFdBWVMoIkZhaWxlZCBsb2FkaW5nIG5ldHdvcmsgcmVzb3VyY2U6IGxvYWRl
ciA9ICVwLCBwYWdlSUQgPSAlbGx1LCBmcmFtZUlEID0gJWxsdSwgaXNNYWluUmVzb3VyY2UgPSAl
ZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBpc1RpbWVvdXQgPSAlZCwgaXNDYW5jZWxsYXRpb24gPSAl
ZCwgZXJyQ29kZSA9ICVkIiwgdGhpcywgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSwgZXJyb3Iu
aXNUaW1lb3V0KCksIGVycm9yLmlzQ2FuY2VsbGF0aW9uKCksIGVycm9yLmVycm9yQ29kZSgpKTsK
KwogICAgIEFTU0VSVCghZXJyb3IuaXNOdWxsKCkpOwogCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FD
SEUpCkBAIC00MTksNiArNDM4LDggQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxT
ZW5kUmVkaXJlY3RlZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXEKIAogdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCkKIHsKKyAgICBORVRXT1JLUkVTT1VSQ0VMT0FERVJfTE9H
X0FMV0FZUygiRm9sbG93aW5nIHJlZGlyZWN0IG9mIG5ldHdvcmsgcmVzb3VyY2U6IGxvYWRlciA9
ICVwLCBwYWdlSUQgPSAlbGx1LCBmcmFtZUlEID0gJWxsdSwgaXNNYWluUmVzb3VyY2UgPSAlZCwg
aXNTeW5jaHJvbm91cyA9ICVkIiwgdGhpcywgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJh
bWV0ZXJzLndlYkZyYW1lSUQsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CisK
ICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRSkKICAgICBpZiAobV9pc1dhaXRpbmdDb250aW51ZVdp
bGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0KSB7CiAgICAgICAgIExPRyhOZXR3b3JrQ2Fj
aGUsICIoTmV0d29ya1Byb2Nlc3MpIFJldHJpZXZpbmcgY2FjaGVkIHJlZGlyZWN0Iik7CkBAIC01
MTAsNyArNTMxLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJldHJpZXZlQ2Fj
aGVFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjoKICAgICAgICAgbV9zeW5jaHJv
bm91c0xvYWREYXRhLT5yZXNwb25zZSA9IGVudHJ5LT5yZXNwb25zZSgpOwogICAgICAgICBzZW5k
UmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBlbnRyeS0+
YnVmZmVyKCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGJvb2wgbmVlZHNDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZU1lc3NhZ2UgPSBvcmlnaW5hbFJlcXVlc3QoKS5yZXF1ZXN0ZXIoKSA9PSBS
ZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbjsKKyAgICAgICAgYm9vbCBuZWVkc0NvbnRp
bnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSA9IGlzTWFpblJlc291cmNlKCk7CiAgICAgICAg
IHNlbmRBYm9ydGluZ09uRmFpbHVyZShNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJl
Y2VpdmVSZXNwb25zZShlbnRyeS0+cmVzcG9uc2UoKSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZU1lc3NhZ2UpKTsKIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCkBAIC02
MjQsNCArNjQ1LDkgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlQ2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sIHIKIH0KICNlbmRpZgogCitib29s
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gc2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBkOTlkYzNhNjhlMTNjNDdh
OTRmZDQ5MGFkOTllNjhmMDYzNWFlOTRlLi45NmJjMmVlY2M2YzM3ZDE3NjMyZTI2NzBjNzdkNDRm
MDE3MWNlMjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtOTgsNiArOTgsOSBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgdm9pZCBkaWRDb252ZXJ0VG9Eb3dubG9hZCgpOwogCisgICAgYm9vbCBpc01haW5SZXNvdXJj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5yZXF1ZXN0LnJlcXVlc3RlcigpID09IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpNYWluOyB9CisgICAgYm9vbCBpc0Fs
d2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrUmVz
b3VyY2VMb2FkZXIoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmLCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlZlB0cjxNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseT4mJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAppbmRleCA4MTY2
YzlhMmU5NGI4MDMyODNmM2JlNzhmMGMwYTk2YzllNWE4NGJjLi45MmY0MzRiYTNmZjMxMmEwNGE3
ZGY3ZTkzZGU4OWFhZTVjODU0NDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uY3BwCkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKKyNkZWZp
bmUgQ09OTkVDVElPTl9MT0dfQUxXQVlTX0VSUk9SKC4uLikgTE9HX0FMV0FZU19FUlJPUih0cnVl
LCBfX1ZBX0FSR1NfXykKKwogbmFtZXNwYWNlIElQQyB7CiAKIHN0cnVjdCBXYWl0Rm9yTWVzc2Fn
ZVN0YXRlIHsKQEAgLTU3NSw2ICs1NzcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29k
ZXI+IENvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlcwogICAg
ICAgICAvLyBJZiB0aGF0IGhhcHBlbnMsIHdlIG5lZWQgdG8gc3RvcCB3YWl0aW5nLCBvciB3ZSds
bCBoYW5nIHNpbmNlIHdlIHdvbid0IGdldAogICAgICAgICAvLyBhbnkgbW9yZSBpbmNvbWluZyBt
ZXNzYWdlcy4KICAgICAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIENPTk5FQ1RJ
T05fTE9HX0FMV0FZU19FUlJPUigiQ29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseTogQ29ubmVj
dGlvbiBubyBsb25nZXIgdmFsaWQsIGlkID0gJWxsdSIsIHN5bmNSZXF1ZXN0SUQpOwogICAgICAg
ICAgICAgZGlkUmVjZWl2ZVN5bmNSZXBseShzeW5jU2VuZEZsYWdzKTsKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICB9CkBAIC01ODUsNiArNTg4LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPE1lc3NhZ2VEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90
IHN5bmNSZXF1ZXMKICAgICAgICAgdGltZWRPdXQgPSAhU3luY01lc3NhZ2VTdGF0ZTo6c2luZ2xl
dG9uKCkud2FpdChhYnNvbHV0ZVRpbWUpOwogICAgIH0KIAorICAgIENPTk5FQ1RJT05fTE9HX0FM
V0FZU19FUlJPUigiQ29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseTogVGltZWQtb3V0IHdoaWxl
IHdhaXRpbmcgZm9yIHJlcGx5LCBpZCA9ICVsbHUiLCBzeW5jUmVxdWVzdElEKTsKICAgICBkaWRS
ZWNlaXZlU3luY1JlcGx5KHN5bmNTZW5kRmxhZ3MpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCmluZGV4IDNiM2MxMmE2YjlhODVlOGJl
ODQwYWQxYjI5MTQxMzQzZjIxZjE1ZDUuLjgwNThiZDcxNDJmNzM0N2ExZWYyZmQ0NTY5ZDNjNTVm
YmZhYTNmNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCkBAIC0yOSw2
ICsyOSw4IEBACiAjaW5jbHVkZSAiU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIgog
I2luY2x1ZGUgPHVuaXN0ZC5oPgogCisjZGVmaW5lIENISUxEUFJPQ0VTU19MT0dfQUxXQVlTX0VS
Uk9SKC4uLikgTE9HX0FMV0FZU19FUlJPUih0cnVlLCBfX1ZBX0FSR1NfXykKKwogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIENoaWxkUHJvY2Vzczo6Q2hpbGRQcm9jZXNzKCkKQEAgLTUzLDYgKzU1LDcg
QEAgc3RhdGljIHZvaWQgZGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoSVBDOjpDb25uZWN0
aW9uKikKICAgICAgICAgLy8gV2UgdXNlIF9leGl0IGhlcmUgc2luY2UgdGhlIHdhdGNoZG9nIGNh
bGxiYWNrIGlzIGNhbGxlZCBmcm9tIGFub3RoZXIgdGhyZWFkIGFuZCB3ZSBkb24ndCB3YW50CiAg
ICAgICAgIC8vIGdsb2JhbCBkZXN0cnVjdG9ycyBvciBhdGV4aXQgaGFuZGxlcnMgdG8gYmUgY2Fs
bGVkIGZyb20gdGhpcyB0aHJlYWQgd2hpbGUgdGhlIG1haW4gdGhyZWFkIGlzIGJ1c3kKICAgICAg
ICAgLy8gZG9pbmcgaXRzIHRoaW5nLgorICAgICAgICBDSElMRFBST0NFU1NfTE9HX0FMV0FZU19F
UlJPUigiRXhpdGluZyBwcm9jZXNzIGVhcmx5IGR1ZSB0byB1bmFja25vd2xlZGdlZCBjbG9zZWQt
Y29ubmVjdGlvbiIpOwogICAgICAgICBfZXhpdChFWElUX0ZBSUxVUkUpOwogICAgIH0pOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5jcHAKaW5kZXggZjE4ZGRkMmM1NmU5ZjY0OWVjMzJhNDM1NjY4MmU0MDNkYzVhMjdi
Ny4uNTYxYTA3MzdmYzAwMDUwMDcyNDM1OWViZGQ1MmE2NWI3NWIzNTVhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3ku
Y3BwCkBAIC01Nyw2ICs1Nyw5IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCisjZGVm
aW5lIFdFQkxPQURFUlNUUkFURUdZX0xPR19BTFdBWVMoLi4uKSBMT0dfQUxXQVlTKGxvYWRQYXJh
bWV0ZXJzLnNlc3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgX19WQV9BUkdTX18p
CisjZGVmaW5lIFdFQkxPQURFUlNUUkFURUdZX0xPR19BTFdBWVNfRVJST1IoLi4uKSBMT0dfQUxX
QVlTX0VSUk9SKGxvYWRQYXJhbWV0ZXJzLnNlc3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93
ZWQoKSwgX19WQV9BUkdTX18pCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJMb2FkZXJTdHJh
dGVneTo6V2ViTG9hZGVyU3RyYXRlZ3koKQpAQCAtMTcwLDcgKzE3Myw3IEBAIHZvaWQgV2ViTG9h
ZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIs
IENhY2hlZFJlc291CiAgICAgfQogI2VuZGlmCiAKLSAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcs
ICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycg
d2lsbCBiZSBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3Mgd2l0aCBwcmlvcml0eSAl
ZCIsIHJlc291cmNlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzdGF0aWNf
Y2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLT5yZXF1ZXN0KCkucHJpb3JpdHkoKSkpOworICAgIExP
RyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2No
ZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJv
Y2VzcyB3aXRoIHByaW9yaXR5ICVkIiwgcmVzb3VyY2VMb2FkZXItPnVybCgpLnN0cmluZygpLmxh
dGluMSgpLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci0+cmVxdWVzdCgp
LnByaW9yaXR5KCkpKTsKIAogICAgIENvbnRlbnRTbmlmZmluZ1BvbGljeSBjb250ZW50U25pZmZp
bmdQb2xpY3kgPSByZXNvdXJjZUxvYWRlci0+c2hvdWxkU25pZmZDb250ZW50KCkgPyBTbmlmZkNv
bnRlbnQgOiBEb05vdFNuaWZmQ29udGVudDsKICAgICBTdG9yZWRDcmVkZW50aWFscyBhbGxvd1N0
b3JlZENyZWRlbnRpYWxzID0gcmVzb3VyY2VMb2FkZXItPnNob3VsZFVzZUNyZWRlbnRpYWxTdG9y
YWdlKCkgPyBBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRp
YWxzOwpAQCAtMjAwLDEzICsyMDMsMTYgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1
bGVMb2FkKFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKICAgICBB
U1NFUlQoKGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRCAmJiBsb2FkUGFyYW1ldGVycy53ZWJGcmFt
ZUlEKSB8fCBsb2FkUGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IERvTm90QXNr
Q2xpZW50Rm9yQW55Q3JlZGVudGlhbHMpOwogCiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTY2hlZHVsZVJlc291cmNlTG9hZChsb2FkUGFy
YW1ldGVycyksIDApKSB7CisgICAgICAgIFdFQkxPQURFUlNUUkFURUdZX0xPR19BTFdBWVNfRVJS
T1IoIldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQ6IFVuYWJsZSB0byBzY2hlZHVsZSBy
ZXNvdXJjZSB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyB3aXRoIHByaW9yaXR5ID0gJWQsIHBhZ2VJ
RCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1Iiwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRl
ci0+cmVxdWVzdCgpLnByaW9yaXR5KCkpLCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQsIGxvYWRQ
YXJhbWV0ZXJzLndlYkZyYW1lSUQpOwogICAgICAgICAvLyBXZSBwcm9iYWJseSBmYWlsZWQgdG8g
c2NoZWR1bGUgdGhpcyBsb2FkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIGJlY2F1c2UgaXQgaGFk
IGNyYXNoZWQuCiAgICAgICAgIC8vIFRoaXMgbG9hZCB3aWxsIG5ldmVyIHN1Y2NlZWQgc28gd2Ug
d2lsbCBzY2hlZHVsZSBpdCB0byBmYWlsIGFzeW5jaHJvbm91c2x5LgogICAgICAgICBzY2hlZHVs
ZUludGVybmFsbHlGYWlsZWRMb2FkKHJlc291cmNlTG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICAKLSAgICBtX3dlYlJlc291cmNlTG9hZGVycy5zZXQoaWRlbnRpZmllciwgV2Vi
UmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShyZXNvdXJjZUxvYWRlcikpOworCisgICAgYXV0byB3ZWJS
ZXNvdXJjZUxvYWRlciA9IFdlYlJlc291cmNlTG9hZGVyOjpjcmVhdGUocmVzb3VyY2VMb2FkZXIp
OworICAgIFdFQkxPQURFUlNUUkFURUdZX0xPR19BTFdBWVMoIldlYkxvYWRlclN0cmF0ZWd5Ojpz
Y2hlZHVsZUxvYWQ6IFJlc291cmNlIHdpbGwgYmUgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQ
cm9jZXNzIHdpdGggcHJpb3JpdHkgPSAlZCwgcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUs
IFdlYlJlc291cmNlTG9hZGVyID0gJXAiLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVy
LT5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbG9hZFBh
cmFtZXRlcnMud2ViRnJhbWVJRCwgd2ViUmVzb3VyY2VMb2FkZXIucHRyKCkpOworICAgIG1fd2Vi
UmVzb3VyY2VMb2FkZXJzLnNldChpZGVudGlmaWVyLCBXVEZNb3ZlKHdlYlJlc291cmNlTG9hZGVy
KSk7CiB9CiAKIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlSW50ZXJuYWxseUZhaWxl
ZExvYWQoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5j
cHAKaW5kZXggMmEwZjU1OWFjZjVkMmM2NjBjYzkwNGM4NWY5OTkwZGU1MzVhZGY3Zi4uZWIzMmFh
MmZlMGZiOTg4NDE0NTFlOWViZjE0OGZmNzE4Y2FmZWVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC00
Miw2ICs0Miw4IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCisjZGVmaW5lIFdFQlJF
U09VUkNFTE9BREVSX0xPR19BTFdBWVMoLi4uKSBMT0dfQUxXQVlTKGlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpLCBfX1ZBX0FSR1NfXykKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFJlZjxXZWJS
ZXNvdXJjZUxvYWRlcj4gV2ViUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShQYXNzUmVmUHRyPFJlc291
cmNlTG9hZGVyPiBjb3JlTG9hZGVyKQpAQCAtNzUsNyArNzcsOCBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZGVyOjpkZXRhY2hGcm9tQ29yZUxvYWRlcigpCiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6
OndpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHByb3Bvc2VkUmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKIHsKLSAgICBMT0coTmV0
d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0IHRv
ICclcyciLCBwcm9wb3NlZFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5k
UmVxdWVzdCB0byAnJXMnIiwgcHJvcG9zZWRSZXF1ZXN0LnVybCgpLnN0cmluZygpLmxhdGluMSgp
LmRhdGEoKSk7CisgICAgV0VCUkVTT1VSQ0VMT0FERVJfTE9HX0FMV0FZUygiV2ViUmVzb3VyY2VM
b2FkZXI6OndpbGxTZW5kUmVxdWVzdCwgV2ViUmVzb3VyY2VMb2FkZXIgPSAlcCIsIHRoaXMpOwog
CiAgICAgUmVmUHRyPFdlYlJlc291cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOwogCkBAIC05OCw3
ICsxMDEsOCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRTZW5kRGF0YSh1aW50NjRfdCBi
eXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlUwogCiB2b2lkIFdlYlJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCiB7Ci0gICAgTE9H
KE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZSBmb3IgJyVzJy4gU3RhdHVzICVkLiIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CisgICAgTE9HKE5ldHdv
cmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSBm
b3IgJyVzJy4gU3RhdHVzICVkLiIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4x
KCkuZGF0YSgpLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKKyAgICBXRUJSRVNPVVJDRUxP
QURFUl9MT0dfQUxXQVlTKCJXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlLCBX
ZWJSZXNvdXJjZUxvYWRlciA9ICVwLCBzdGF0dXMgPSAlZC4iLCB0aGlzLCByZXNwb25zZS5odHRw
U3RhdHVzQ29kZSgpKTsKIAogICAgIFJlZjxXZWJSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCgqdGhp
cyk7CiAKQEAgLTEyOSw3ICsxMzMsOCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvbwogCiB2b2lk
IFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgTE9HKE5ldHdvcmss
ICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhIG9mIHNpemUg
JWkgZm9yICclcyciLCAoaW50KWRhdGEuc2l6ZSgpLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSBvZiBzaXplICVsdSBmb3IgJyVzJyIsIGRhdGEu
c2l6ZSgpLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Cisg
ICAgV0VCUkVTT1VSQ0VMT0FERVJfTE9HX0FMV0FZUygiV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVEYXRhLCBXZWJSZXNvdXJjZUxvYWRlciA9ICVwLCBzaXplID0gJWx1IiwgdGhpcywgZGF0
YS5zaXplKCkpOwogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgaWYgKFF1aWNrTG9va0hhbmRs
ZSogcXVpY2tMb29rSGFuZGxlID0gbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5xdWlj
a0xvb2tIYW5kbGUoKSkgewpAQCAtMTQyLDcgKzE0Nyw4IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRf
dCBlCiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJlc291cmNlTG9hZChkb3Vi
bGUgZmluaXNoVGltZSkKIHsKLSAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNv
dXJjZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVy
LT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0coTmV0d29yaywgIihXZWJQ
cm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkIGZvciAnJXMn
IiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOworICAgIFdF
QlJFU09VUkNFTE9BREVSX0xPR19BTFdBWVMoIldlYlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hS
ZXNvdXJjZUxvYWQsIFdlYlJlc291cmNlTG9hZGVyID0gJXAiLCB0aGlzKTsKIAogI2lmIFVTRShR
VUlDS19MT09LKQogICAgIGlmIChRdWlja0xvb2tIYW5kbGUqIHF1aWNrTG9va0hhbmRsZSA9IG1f
Y29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+cXVpY2tMb29rSGFuZGxlKCkpIHsKQEAgLTE1
NSw4ICsxNjEsOSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hSZXNvdXJjZUxv
YWQoZG91YmxlIGZpbmlzaFRpbWUpCiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxS
ZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgTE9HKE5ldHdv
cmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQg
Zm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwot
ICAgIAorICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpk
aWRGYWlsUmVzb3VyY2VMb2FkIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmco
KS5sYXRpbjEoKS5kYXRhKCkpOworICAgIFdFQlJFU09VUkNFTE9BREVSX0xPR19BTFdBWVMoIldl
YlJlc291cmNlTG9hZGVyOjpkaWRGYWlsUmVzb3VyY2VMb2FkLCBXZWJSZXNvdXJjZUxvYWRlciA9
ICVwIiwgdGhpcyk7CisKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBpZiAoUXVpY2tMb29rSGFu
ZGxlKiBxdWlja0xvb2tIYW5kbGUgPSBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnF1
aWNrTG9va0hhbmRsZSgpKQogICAgICAgICBxdWlja0xvb2tIYW5kbGUtPmRpZEZhaWwoKTsKQEAg
LTE2OSw3ICsxNzYsOCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGYWlsUmVzb3VyY2VM
b2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVT
T1VSQ0UpCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UoY29uc3Qg
U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYgaGFuZGxlLCBkb3VibGUgZmluaXNoVGltZSkKIHsK
LSAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZVJlc291cmNlIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKKyAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZVJlc291cmNlIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5z
dHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOworICAgIFdFQlJFU09VUkNFTE9BREVSX0xPR19BTFdB
WVMoIldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UsIFdlYlJlc291cmNlTG9h
ZGVyID0gJXAiLCB0aGlzKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhh
bmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKIApAQCAtMjEzLDQgKzIyMSw5IEBAIHZvaWQg
V2ViUmVzb3VyY2VMb2FkZXI6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2Uo
Y29uc3QgUHJvdGVjdGlvblNwCiB9CiAjZW5kaWYKIAorYm9vbCBXZWJSZXNvdXJjZUxvYWRlcjo6
aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVzb3VyY2VM
b2FkZXIoKSAmJiByZXNvdXJjZUxvYWRlcigpLT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCmluZGV4IGJjYTkyYjQ1M2Q0MzNi
YzY5MGMxMjU0ZWRiNTRmNzI0YmIzMzkzZDUuLjU2YWM4YjBiNDBmNmFiZWY0NGYzNGEzZGJhY2I1
MGZkMWNjMzI3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCkBAIC02Niw2ICs2Niw4IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgZGV0YWNoRnJvbUNvcmVMb2FkZXIoKTsKIAorICAgIGJvb2wgaXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgV2ViUmVzb3VyY2VMb2FkZXIoUGFz
c1JlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4pOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273268</attachid>
            <date>2016-03-07 21:46:04 -0800</date>
            <delta_ts>2016-03-07 22:44:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154499-20160307214550.patch</filename>
            <type>text/plain</type>
            <size>39745</size>
            <attacher name="Keith Rollin">krollin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI1NmQxYmNkODMwMjA5ZTQzZjU0OGJk
NTQxMzAzYTYxYmNiYjIzOGQuLjA2ZjJiMTI5OTc3NmVkOTYxYTQyNDk3MmIyYTJmN2EyMzk2Nzkx
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMDMtMDcgIEtlaXRoIFJvbGxpbiAgPGtyb2xs
aW5AYXBwbGUuY29tPgorCisgICAgICAgIEVuaGFuY2UgbG9nZ2luZzogVXNlICJhbHdheXMgb24i
IG1hY3JvcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU0NDk5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNDc1NzczMD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICBVcGRhdGUgTE9HX0FMV0FZUyBhbmQgTE9H
X0FMV0FZU19FUlJPUiBtYWNyb3MgdG8gdGFrZSBhbiBleHByZXNzaW9uIHRvCisgICAgICAgIGJl
IGV2YWx1YXRlZC4gSWYgdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIFRydWUsIHRoZSBhc3Nv
Y2lhdGVkCisgICAgICAgIG1lc3NhZ2UgaXMgbG9nZ2VkLiBUaGlzIGZhY2lsaXR5IGlzIHVzZWQg
dG8gcHJldmVudCBsb2dnaW5nIGZyb20gYmVpbmcKKyAgICAgICAgcGVyZm9ybWVkIGluIHByaXZh
dGUgc2Vzc2lvbnMsIGJ1dCBpdCBjb3VsZCBiZSBleHRlbmRlZCB0byBwcmV2ZW50CisgICAgICAg
IGxvZ2dpbmcgdW5kZXIgb3RoZXIgY2lyY3Vtc3RhbmNlcyBhcyB3ZWxsLgorCisgICAgICAgICog
d3RmL0Fzc2VydGlvbnMuaDoKKwogMjAxNi0wMy0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSB2Y3hwcm9qIGJ1aWxkIHN5c3Rl
bQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDIxZjY3ZTI3YTRkY2I0OTA4ODY3MDNiNThmNWYwZTM3N2VhNmY3YzEu
LmNkOTMyZGQyYTNkMDYzOGZlN2RjMTY2MjRkMTQ3YTgxMWNkZjQzNzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw1MSBAQAorMjAxNi0wMy0wNyAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgRW5oYW5jZSBsb2dnaW5nOiBVc2UgImFsd2F5cyBvbiIgbWFjcm9zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ0OTkKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0NzU3NzMwPgorCisgICAgICAgIFJldmlld2VkIGJ5IENo
cmlzIER1bWV6LgorCisgICAgICAgIE1ha2UgdXNlIG9mIG5ldyBsb2dnaW5nIG1hY3JvcyBieSBy
ZXBvcnRpbmcgb24gZnJhbWUgYW5kIHJlc291cmNlCisgICAgICAgIGxvYWQgYWN0aXZpdHkuCisK
KyAgICAgICAgQWRkIG5ldyBsb2dnaW5nIHRvIG1lbW9yeSBwcmVzc3VyZSBoYW5kbGVyIHRvIHNo
b3cgd2hlbiBpdCdzIGNhbGxlZAorICAgICAgICBhbmQgaXRzIGVmZmVjdGl2ZW5lc3MuIEFzIHBh
cnQgb2YgdGhpcyBjaGFuZ2UsIHRoZSB2YXJpb3VzCisgICAgICAgIHBsYXRmb3JtLXNwZWNpZmlj
IGltcGxlbWVudGF0aW9ucyBoYXZlIGJlZW4gdW5pZmllZC4KKworICAgICAgICBObyBuZXcgdGVz
dHMuIE5vIG5ldyBiYXNpYyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIGFkZGVkLiBPbmx5IG5ldwor
ICAgICAgICBsb2dnaW5nIGhhcyBiZWVuIGFkZGVkIGluIHJlbGVhc2UgbW9kZSBvciBoYXMgYmVl
biBlbmFibGVkIHRvIGV4ZWN1dGUKKyAgICAgICAgaW4gcmVsZWFzZSBtb2RlIGFzIHdlbGwgYXMg
ZGVidWcgbW9kZS4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cHJlcGFyZUZvckxvYWRTdGFydCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCk6Cisg
ICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjppc0Fsd2F5c09u
TG9nZ2luZ0FsbG93ZWQpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAg
ICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmlzQWx3YXlz
T25Mb2dnaW5nQWxsb3dlZCk6CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBh
Z2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjppc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAqIHBhZ2UvU2Vzc2lvbklE
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTZXNzaW9uSUQ6OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dl
ZCk6CisgICAgICAgICogcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpsb2dNZW1v
cnlVc2FnZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1Mb2cpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L01lbW9yeVByZXNzdXJlSGFuZGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1
cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OlJlbGllZkxvZ2dlcik6CisgICAgICAgIChXZWJDb3Jl
OjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6flJlbGllZkxvZ2dlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW06Cisg
ICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxh
dGZvcm1Mb2cpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2xpbnV4L01lbW9yeVByZXNz
dXJlSGFuZGxlckxpbnV4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFu
ZGxlcjo6UmVsaWVmTG9nZ2VyOjpwbGF0Zm9ybUxvZyk6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vd2luL01lbW9yeVByZXNzdXJlSGFuZGxlcldpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1Mb2cpOiBEZWxl
dGVkLgorCiAyMDE2LTAzLTA2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fu
b24uZnI+CiAKICAgICAgICAgRW5hYmxlIERPTSBjbGFzcyBjcmVhdGUgZnVuY3Rpb25zIHRvIHRh
a2UgcGFyYW1ldGVycyBpbiBjYXNlIG9mIEpTQnVpbHRpbkNvbnN0cnVjdG9yCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggOWMzYTdmZjg1MjU3YjRlNjc0YThmMDRlNjY0OWZhMzBmOWIzYzY0OC4uMGEwNjUzOTI3YTNm
ZjZjYWU3ZmI5NjNlZWYxMWE0Nzk1MWE5MTc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBA
CisyMDE2LTAzLTA3ICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KKworICAgICAg
ICBFbmhhbmNlIGxvZ2dpbmc6IFVzZSAiYWx3YXlzIG9uIiBtYWNyb3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDQ5OQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMjQ3NTc3MzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisK
KyAgICAgICAgTWFrZSB1c2Ugb2YgbmV3IGxvZ2dpbmcgbWFjcm9zIGJ5IHJlcG9ydGluZyBvbiBm
cmFtZSBhbmQgcmVzb3VyY2UKKyAgICAgICAgbG9hZCBhY3Rpdml0eS4KKworICAgICAgICBDb25u
ZWN0aW9uIHVwZGF0ZWQgdG8gcmVwb3J0IElQQyBlcnJvcnMsIGhlbHBpbmcgdXMgaWRlbnRpZnkg
d2hlbgorICAgICAgICBtZXNzYWdpbmcgYmV0d2VlbiBwcm9jZXNzZXMgYnJlYWtzIGRvd24uCisK
KyAgICAgICAgQ2hpbGRQcm9jZXNzIHVwZGF0ZWQgdG8gbG9nIGlmIGl0IGlzIHRlcm1pbmF0aW5n
IGVhcmx5LiBTb21lCisgICAgICAgIHN5c2RpYWdub3NlIGxvZ2dpbmcgZnJvbSBjdXN0b21lcnMg
aW5kaWNhdGUgdGhhdCB0aGlzIGlzIGhhcHBlbmluZyBpbgorICAgICAgICB0aGUgd2lsZC4KKwor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNl
bmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjppc0Fs
d2F5c09uTG9nZ2luZ0FsbG93ZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcDoK
KyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseSk6CisgICAgICAgICog
U2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmRpZENsb3NlT25Db25u
ZWN0aW9uV29ya1F1ZXVlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1
bGVMb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hSZXNvdXJjZUxv
YWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbFJlc291cmNl
TG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVz
b3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6aXNBbHdheXNPbkxv
Z2dpbmdBbGxvd2VkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuaDoKKwogMjAxNi0wMy0wNiAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+
CiAKICAgICAgICAgUmVkdWNlIHBhZ2UgY2FjaGUgY2FwYWNpdHkgZnJvbSAzIHRvIDIuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmggYi9Tb3VyY2UvV1RGL3d0Zi9Bc3Nl
cnRpb25zLmgKaW5kZXggYmYyZjE5YTE0MWRkOWY2ZDNmOTgyZWU3YTdmMzI3NGMwYWQ1MjU4ZS4u
YjQ4Yzg2MjNiN2Q1ZDRiYjQxZmRjN2FhNjY0NDQxMDE0NmU2MjQzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMu
aApAQCAtMzg0LDEyICszODQsMTIgQEAgV1RGX0VYUE9SVF9QUklWQVRFIE5PX1JFVFVSTl9EVUVf
VE9fQ1JBU0ggdm9pZCBXVEZDcmFzaFdpdGhTZWN1cml0eUltcGxpY2F0aW9uKCkKIAogI2RlZmlu
ZSBXVEZfTE9HR0lOR19QUkVGSVggIiNXSzogIgogI2lmIExPR19BTFdBWVNfRElTQUJMRUQKLSNk
ZWZpbmUgTE9HX0FMV0FZUyhmb3JtYXQsIC4uLikgICAgICAgKCh2b2lkKTApCi0jZGVmaW5lIExP
R19BTFdBWVNfRVJST1IoZm9ybWF0LCAuLi4pIFdURlJlcG9ydEVycm9yKF9fRklMRV9fLCBfX0xJ
TkVfXywgV1RGX1BSRVRUWV9GVU5DVElPTiwgZm9ybWF0LCAjI19fVkFfQVJHU19fKQorI2RlZmlu
ZSBMT0dfQUxXQVlTKGlzQWxsb3dlZCwgZm9ybWF0LCAuLi4pICAgICAgICgodm9pZCkwKQorI2Rl
ZmluZSBMT0dfQUxXQVlTX0VSUk9SKGlzQWxsb3dlZCwgZm9ybWF0LCAuLi4pIFdURlJlcG9ydEVy
cm9yKF9fRklMRV9fLCBfX0xJTkVfXywgV1RGX1BSRVRUWV9GVU5DVElPTiwgZm9ybWF0LCAjI19f
VkFfQVJHU19fKQogI2Vsc2UKICNkZWZpbmUgV1RGX0xPR19ERUZBVUxUIE9TX0xPR19ERUZBVUxU
Ci0jZGVmaW5lIExPR19BTFdBWVMoZm9ybWF0LCAuLi4pICAgICAgIG9zX2xvZyhXVEZfTE9HX0RF
RkFVTFQsIFdURl9MT0dHSU5HX1BSRUZJWCBmb3JtYXQsICMjX19WQV9BUkdTX18pCi0jZGVmaW5l
IExPR19BTFdBWVNfRVJST1IoZm9ybWF0LCAuLi4pIG9zX2xvZ19lcnJvcihXVEZfTE9HX0RFRkFV
TFQsIFdURl9MT0dHSU5HX1BSRUZJWCBmb3JtYXQsICMjX19WQV9BUkdTX18pCisjZGVmaW5lIExP
R19BTFdBWVMoaXNBbGxvd2VkLCBmb3JtYXQsIC4uLikgICAgICAgZG8geyBpZiAoaXNBbGxvd2Vk
KSBvc19sb2coV1RGX0xPR19ERUZBVUxULCBXVEZfTE9HR0lOR19QUkVGSVggZm9ybWF0LCAjI19f
VkFfQVJHU19fKTsgfSB3aGlsZSAoMCkKKyNkZWZpbmUgTE9HX0FMV0FZU19FUlJPUihpc0FsbG93
ZWQsIGZvcm1hdCwgLi4uKSBkbyB7IGlmIChpc0FsbG93ZWQpIG9zX2xvZ19lcnJvcihXVEZfTE9H
X0RFRkFVTFQsIFdURl9MT0dHSU5HX1BSRUZJWCBmb3JtYXQsICMjX19WQV9BUkdTX18pOyB9IHdo
aWxlICgwKQogI2VuZGlmCiAKIC8qIFJFTEVBU0VfQVNTRVJUICovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAppbmRleCBkYWE3NTM0YmUyYTI5NDE1YjkxYTIzZjRlMGM3NjIzYjQ2
ODFiMTI1Li40NDc0OWVlMmJmY2VmMzBhNDVkZDY2ZWUwMzlmYjY1MGFhMGZiM2Y2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTE0MCw2ICsxNDAsOCBAQAogI2luY2x1
ZGUgIldLQ29udGVudE9ic2VydmF0aW9uLmgiCiAjZW5kaWYKIAorI2RlZmluZSBGUkFNRUxPQURF
Ul9MT0dfQUxXQVlTKC4uLikgTE9HX0FMV0FZUyhpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwg
X19WQV9BUkdTX18pCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKQEAgLTEwODQsNiArMTA4Niw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0YXJ0ZWQo
KQogCiB2b2lkIEZyYW1lTG9hZGVyOjpwcmVwYXJlRm9yTG9hZFN0YXJ0KCkKIHsKKyAgICBGUkFN
RUxPQURFUl9MT0dfQUxXQVlTKCJTdGFydGluZyBmcmFtZSBsb2FkLCBmcmFtZSA9ICVwLCBtYWlu
ID0gJWQiLCAmbV9mcmFtZSwgbV9mcmFtZS5pc01haW5GcmFtZSgpKTsKKwogICAgIG1fcHJvZ3Jl
c3NUcmFja2VyLT5wcm9ncmVzc1N0YXJ0ZWQoKTsKICAgICBtX2NsaWVudC5kaXNwYXRjaERpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAKQEAgLTIyNzcsOSArMjI4MSwxMSBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNGcmFtZSgpCiAKICAgICAgICAgICAgIEFY
T2JqZWN0Q2FjaGU6OkFYTG9hZGluZ0V2ZW50IGxvYWRpbmdFdmVudDsKICAgICAgICAgICAgIGlm
ICghZXJyb3IuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgICAgICBGUkFNRUxPQURFUl9MT0dfQUxX
QVlTKCJGaW5pc2hlZCBmcmFtZSBsb2FkIHdpdGggZXJyb3IsIGZyYW1lID0gJXAsIG1haW4gPSAl
ZCwgaXNUaW1lb3V0ID0gJWQsIGlzQ2FuY2VsbGF0aW9uID0gJWQsIGVycm9yQ29kZSA9ICVkIiwg
Jm1fZnJhbWUsIG1fZnJhbWUuaXNNYWluRnJhbWUoKSwgZXJyb3IuaXNUaW1lb3V0KCksIGVycm9y
LmlzQ2FuY2VsbGF0aW9uKCksIGVycm9yLmVycm9yQ29kZSgpKTsKICAgICAgICAgICAgICAgICBt
X2NsaWVudC5kaXNwYXRjaERpZEZhaWxMb2FkKGVycm9yKTsKICAgICAgICAgICAgICAgICBsb2Fk
aW5nRXZlbnQgPSBBWE9iamVjdENhY2hlOjpBWExvYWRpbmdGYWlsZWQ7CiAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIEZSQU1FTE9BREVSX0xPR19BTFdBWVMoIkZpbmlzaGVk
IGZyYW1lIGxvYWQgd2l0aG91dCBlcnJvciwgZnJhbWUgPSAlcCwgbWFpbiA9ICVkIiwgJm1fZnJh
bWUsIG1fZnJhbWUuaXNNYWluRnJhbWUoKSk7CiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQog
ICAgICAgICAgICAgICAgIGlmIChtX2ZyYW1lLnNldHRpbmdzKCkuZGF0YURldGVjdG9yVHlwZXMo
KSAhPSBEYXRhRGV0ZWN0b3JUeXBlTm9uZSkgewogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8
UmFuZ2U+IGRvY3VtZW50UmFuZ2UgPSBtYWtlUmFuZ2UoZmlyc3RQb3NpdGlvbkluTm9kZShtX2Zy
YW1lLmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpKSwgbGFzdFBvc2l0aW9uSW5Ob2RlKG1f
ZnJhbWUuZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpKTsKQEAgLTM1NjYsNiArMzU3Miwx
MSBAQCB2b2lkIEZyYW1lTG9hZGVyOjphcHBseVNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lU
b05ld0RvY3VtZW50TG9hZGVyKERvY3VtZW50TAogICAgIGRvY3VtZW50TG9hZGVyLnNldFNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvQXBw
bHkobV9mcmFtZSwgcHJvcGFnYXRlZFBvbGljeSkpOwogfQogCitib29sIEZyYW1lTG9hZGVyOjpp
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdAoreworICAgIHJldHVybiBmcmFtZSgpLmlz
QWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpOworfQorCiBib29sIEZyYW1lTG9hZGVyQ2xpZW50Ojpo
YXNIVE1MVmlldygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCmluZGV4IGQwODczNDFjODY5ZTA1OTU0MmRjMjYwZTk1M2ExZjYwYTNlZTll
YTkuLmYyNGQ0NGVlMzUxMTc5MjYyZjhiMjE1OTUzNmM5ZWI3MGQ5MWM3NWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC0yOTYsNiArMjk2LDggQEAgcHVibGljOgogICAgIGNv
bnN0IFVSTCYgcHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwoKSBjb25zdCB7IHJl
dHVybiBtX3Byb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMOyB9CiAgICAgdm9pZCBz
ZXRQcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTChjb25zdCBVUkwmIHVybCkgeyBt
X3Byb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMID0gdXJsOyB9CiAKKyAgICBib29s
IGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIGVudW0g
Rm9ybVN1Ym1pc3Npb25DYWNoZUxvYWRQb2xpY3kgewogICAgICAgICBNYXlBdHRlbXB0Q2FjaGVP
bmx5TG9hZEZvckZvcm1TdWJtaXNzaW9uSXRlbSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuY3BwCmluZGV4IGQwYzgyMGFkNDAyZTg5ZDk0ZDVlZDkyMjlmM2I5YjMwNjBhZTlj
OTIuLmNlZjA2YTM2YmU5MjY5ZjMzYjVkMWE4NDUyMGE5MWQ5NjI4ZWVlYzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNzU0LDQgKzc1NCw5IEBAIHZvaWQg
UmVzb3VyY2VMb2FkZXI6OmRpZENyZWF0ZVF1aWNrTG9va0hhbmRsZShRdWlja0xvb2tIYW5kbGUm
IGhhbmRsZSkKIH0KICNlbmRpZgogCitib29sIFJlc291cmNlTG9hZGVyOjppc0Fsd2F5c09uTG9n
Z2luZ0FsbG93ZWQoKSBjb25zdAoreworICAgIHJldHVybiBmcmFtZUxvYWRlcigpICYmIGZyYW1l
TG9hZGVyKCktPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpOworfQorCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDA3MDY0ZDcwMDlhNjQzODg2YjE3ZjJlMjYw
NWFlNzUwNDIyYTVlMjYuLmM3MGRjMmJjOTUzM2RlZmYwZGIzYzhkNzhjY2RmOWI4NDIwMmI0MGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC0xNDUsNiArMTQ1LDgg
QEAgcHVibGljOgogICAgIHZvaWQgdW5zY2hlZHVsZShXVEY6OlNjaGVkdWxlUGFpciYpOwogI2Vu
ZGlmCiAKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgp
IGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgUmVzb3VyY2VMb2FkZXIoRnJhbWUqLCBSZXNvdXJj
ZUxvYWRlck9wdGlvbnMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDU5MjdjYmZiOWY0MmQ3
YWY3MDgyM2Y5YjgwOGJkNzNiMDZhNmUyYjcuLjVkNDYxNmY1Mzg0ZmIyNjgxMjM4YjJhOWFjMzdm
NTVlNDg2MTMzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0xMDUzLDQgKzEwNTMsOSBAQCBi
b29sIEZyYW1lOjppc1VSTEFsbG93ZWQoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKK2Jvb2wgRnJhbWU6OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHBhZ2UoKSAmJiBwYWdlKCktPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dl
ZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggYTAw
YTdjODExM2E3NjVkYTI1OGQ4NjgyNjMyZGJmNDBlMmVlYjg0Yy4uZjMwNTA3NWVlNDA2YmI5YjRi
ZTNhYjdkYThmMTM3M2Y5MzY0NjBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMjcyLDYgKzI3Miw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBhY3RpdmVET01PYmplY3RzQW5k
QW5pbWF0aW9uc1N1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlRE9NT2JqZWN0c0Fu
ZEFuaW1hdGlvbnNTdXNwZW5kZWRDb3VudCA+IDA7IH0KIAogICAgICAgICBib29sIGlzVVJMQWxs
b3dlZChjb25zdCBVUkwmKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKSBjb25zdDsKIAogICAgIC8vID09PT09PT09CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4
IGQ2NTU4YWJjNzRiZjQ5MTkxNmMyYWIyMmZjZmEyM2FkYzRmMzJkMjguLjIzNzM3OWU3N2E4MDE2
NzdkOGZkMmI4MzY0ZjEyODBlMDQ3NmFmMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMjAwNCw0
ICsyMDA0LDkgQEAgdm9pZCBQYWdlOjpzZXRSZXNvdXJjZVVzYWdlT3ZlcmxheVZpc2libGUoYm9v
bCB2aXNpYmxlKQogfQogI2VuZGlmCiAKK2Jvb2wgUGFnZTo6aXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXgg
YzQ3MDYxNWU4MDMxNDE2YjMxMzY3ZDExNjNiZDFhNTY2MjNhN2YxOS4uNGE2MjI4MWU5ZTE5ZTU0
Yjk1NjI2MzEwY2U3NTM0YTUyYjQ1Y2JkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTUwNyw2ICs1MDcs
OCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oKSBjb25zdCB7
IHJldHVybiBtX2NvbnRyb2xsZWRCeUF1dG9tYXRpb247IH0KICAgICB2b2lkIHNldENvbnRyb2xs
ZWRCeUF1dG9tYXRpb24oYm9vbCBjb250cm9sbGVkKSB7IG1fY29udHJvbGxlZEJ5QXV0b21hdGlv
biA9IGNvbnRyb2xsZWQ7IH0KIAorICAgIGJvb2wgaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkg
Y29uc3Q7CisKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0R3JvdXAoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXNzaW9uSUQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2Vzc2lvbklELmgKaW5kZXggMGRiYWExYjQ3MTUxOTgzZTdhODBiNmQ2NzY1
MjRhOWQ5ZDBlNzFjYS4uNWI5YjcxZGE1ZWMyNzRhOGZmYTA3YThjYWViYjE2NGE0YWMzNWYzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXNzaW9uSUQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1Nlc3Npb25JRC5oCkBAIC00Miw2ICs0Miw3IEBAIHB1YmxpYzoKICAgICB1
aW50NjRfdCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQogICAgIGJv
b2wgb3BlcmF0b3I9PShTZXNzaW9uSUQgc2Vzc2lvbklEKSBjb25zdCB7IHJldHVybiBtX3Nlc3Np
b25JRCA9PSBzZXNzaW9uSUQubV9zZXNzaW9uSUQ7IH0KICAgICBib29sIG9wZXJhdG9yIT0oU2Vz
c2lvbklEIHNlc3Npb25JRCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQgIT0gc2Vzc2lvbklE
Lm1fc2Vzc2lvbklEOyB9CisgICAgYm9vbCBpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25z
dCB7IHJldHVybiAhaXNFcGhlbWVyYWwoKTsgfQogCiAgICAgc3RhdGljIFNlc3Npb25JRCBlbXB0
eVNlc3Npb25JRCgpIHsgcmV0dXJuIFNlc3Npb25JRCgwKTsgfQogICAgIHN0YXRpYyBTZXNzaW9u
SUQgZGVmYXVsdFNlc3Npb25JRCgpIHsgcmV0dXJuIFNlc3Npb25JRCgxKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKaW5kZXggNjYw
MTk0MjBiMjEyZTM3NmE1M2Q4ODVmNzk3ODc5MjFmZDZiNTc3OC4uNWI0ODBiZmM3ZGQyYTYzZjZi
NTI2NmEzMzNhNGIzMDRmNWMxNDI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCkBAIC0xODAsMTMgKzE4MCwzNyBAQCB2b2lkIE1l
bW9yeVByZXNzdXJlSGFuZGxlcjo6cmVsZWFzZU1lbW9yeShDcml0aWNhbCBjcml0aWNhbCwgU3lu
Y2hyb25vdXMgc3luY2hybwogICAgIH0KIH0KIAordm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OlJlbGllZkxvZ2dlcjo6bG9nTWVtb3J5VXNhZ2VDaGFuZ2UoKQoreworI2lmICFMT0dfQUxXQVlT
X0RJU0FCTEVECisjZGVmaW5lIFNUUklOR19TUEVDSUZJQ0FUSU9OICIle3B1YmxpY31zIgorI2Rl
ZmluZSBNRU1PUllQUkVTU1VSRV9MT0coLi4uKSBMT0dfQUxXQVlTKHRydWUsIF9fVkFfQVJHU19f
KQorI2Vsc2UKKyNkZWZpbmUgU1RSSU5HX1NQRUNJRklDQVRJT04gIiVzIgorI2RlZmluZSBNRU1P
UllQUkVTU1VSRV9MT0coLi4uKSBXVEZMb2dBbHdheXMoX19WQV9BUkdTX18pCisjZW5kaWYKKwor
ICAgIHNpemVfdCBjdXJyZW50TWVtb3J5ID0gcGxhdGZvcm1NZW1vcnlVc2FnZSgpOworICAgIGlm
IChjdXJyZW50TWVtb3J5ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpIHx8IG1faW5pdGlhbE1l
bW9yeSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKSkgeworICAgICAgICBNRU1PUllQUkVTU1VS
RV9MT0coIk1lbW9yeSBwcmVzc3VyZSByZWxpZWY6ICIgU1RSSU5HX1NQRUNJRklDQVRJT04gIjog
KFVuYWJsZSB0byBnZXQgZGlydHkgbWVtb3J5IGluZm9ybWF0aW9uIGZvciBwcm9jZXNzKSIsIG1f
bG9nU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNzaXplX3QgbWVtb3J5
RGlmZiA9IGN1cnJlbnRNZW1vcnkgLSBtX2luaXRpYWxNZW1vcnk7CisgICAgaWYgKG1lbW9yeURp
ZmYgPCAwKQorICAgICAgICBNRU1PUllQUkVTU1VSRV9MT0coIk1lbW9yeSBwcmVzc3VyZSByZWxp
ZWY6ICIgU1RSSU5HX1NQRUNJRklDQVRJT04gIjogLWRpcnR5ICVsZCBieXRlcyAoZnJvbSAlbHUg
dG8gJWx1KSIsIG1fbG9nU3RyaW5nLCAobWVtb3J5RGlmZiAqIC0xKSwgbV9pbml0aWFsTWVtb3J5
LCBjdXJyZW50TWVtb3J5KTsKKyAgICBlbHNlIGlmIChtZW1vcnlEaWZmID4gMCkKKyAgICAgICAg
TUVNT1JZUFJFU1NVUkVfTE9HKCJNZW1vcnkgcHJlc3N1cmUgcmVsaWVmOiAiIFNUUklOR19TUEVD
SUZJQ0FUSU9OICI6ICtkaXJ0eSAlbGQgYnl0ZXMgKGZyb20gJWx1IHRvICVsdSkiLCBtX2xvZ1N0
cmluZywgbWVtb3J5RGlmZiwgbV9pbml0aWFsTWVtb3J5LCBjdXJyZW50TWVtb3J5KTsKKyAgICBl
bHNlCisgICAgICAgIE1FTU9SWVBSRVNTVVJFX0xPRygiTWVtb3J5IHByZXNzdXJlIHJlbGllZjog
IiBTVFJJTkdfU1BFQ0lGSUNBVElPTiAiOiA9ZGlydHkgKGF0ICVsdSBieXRlcykiLCBtX2xvZ1N0
cmluZywgY3VycmVudE1lbW9yeSk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFPUyhM
SU5VWCkgJiYgIVBMQVRGT1JNKFdJTikKIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjppbnN0
YWxsKCkgeyB9CiB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6dW5pbnN0YWxsKCkgeyB9CiB2
b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aG9sZE9mZih1bnNpZ25lZCkgeyB9CiB2b2lkIE1l
bW9yeVByZXNzdXJlSGFuZGxlcjo6cmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUoQ3JpdGljYWwsIFN5
bmNocm9ub3VzKSB7IH0KIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpwbGF0Zm9ybVJlbGVh
c2VNZW1vcnkoQ3JpdGljYWwpIHsgfQotdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGll
ZkxvZ2dlcjo6cGxhdGZvcm1Mb2coKSB7IH0KIHNpemVfdCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1NZW1vcnlVc2FnZSgpIHsgcmV0dXJuIDA7IH0KICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhh
bmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5o
CmluZGV4IGJjNDE1MjdkNWJkMDRjMWRiOWZlZmQyMTNkMzM4ZWFkYmU3MzM5MDMuLjcxMTRkMmMy
NTc1YTk5ZjEwZDM5MmEyYjY2MDFiNDc3ZjdmN2RkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCkBAIC04NywxNCArODcsMjIgQEAgcHVi
bGljOgogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgUmVsaWVmTG9nZ2VyKGNvbnN0IGNo
YXIgKmxvZykKICAgICAgICAgICAgIDogbV9sb2dTdHJpbmcobG9nKQorI2lmICFMT0dfQUxXQVlT
X0RJU0FCTEVECisgICAgICAgICAgICAsIG1faW5pdGlhbE1lbW9yeShwbGF0Zm9ybU1lbW9yeVVz
YWdlKCkpCisjZWxzZQogICAgICAgICAgICAgLCBtX2luaXRpYWxNZW1vcnkoc19sb2dnaW5nRW5h
YmxlZCA/IHBsYXRmb3JtTWVtb3J5VXNhZ2UoKSA6IDApCisjZW5kaWYKICAgICAgICAgewogICAg
ICAgICB9CiAKICAgICAgICAgflJlbGllZkxvZ2dlcigpCiAgICAgICAgIHsKKyNpZiAhTE9HX0FM
V0FZU19ESVNBQkxFRAorICAgICAgICAgICAgbG9nTWVtb3J5VXNhZ2VDaGFuZ2UoKTsKKyNlbHNl
CiAgICAgICAgICAgICBpZiAoc19sb2dnaW5nRW5hYmxlZCkKLSAgICAgICAgICAgICAgICBwbGF0
Zm9ybUxvZygpOworICAgICAgICAgICAgICAgIGxvZ01lbW9yeVVzYWdlQ2hhbmdlKCk7CisjZW5k
aWYKICAgICAgICAgfQogCiAgICAgICAgIGNvbnN0IGNoYXIqIGxvZ1N0cmluZygpIGNvbnN0IHsg
cmV0dXJuIG1fbG9nU3RyaW5nOyB9CkBAIC0xMDMsNyArMTExLDcgQEAgcHVibGljOgogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgc2l6ZV90IHBsYXRmb3JtTWVtb3J5VXNhZ2UoKTsKLSAgICAgICAg
dm9pZCBwbGF0Zm9ybUxvZygpOworICAgICAgICB2b2lkIGxvZ01lbW9yeVVzYWdlQ2hhbmdlKCk7
CiAKICAgICAgICAgY29uc3QgY2hhciogbV9sb2dTdHJpbmc7CiAgICAgICAgIHNpemVfdCBtX2lu
aXRpYWxNZW1vcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9N
ZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCmluZGV4IDZjMjUyYjVmMmM4NTkyMDkw
ZDcxNDk5OGM1ZmY3MjUxMjBjYzc3YzIuLmU5NDU2YTM5Y2ZjNmEzZDgzZGQzOTIyYTk1M2U3ZTkz
ZWIxMTUyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01lbW9y
eVByZXNzdXJlSGFuZGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCkBAIC0yMzQsMjMgKzIzNCw2IEBAIHNp
emVfdCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1NZW1vcnlV
c2FnZSgpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4odm1JbmZvLmludGVybmFsKTsK
IH0KIAotdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1M
b2coKQotewotICAgIHNpemVfdCBjdXJyZW50TWVtb3J5ID0gcGxhdGZvcm1NZW1vcnlVc2FnZSgp
OwotICAgIGlmIChjdXJyZW50TWVtb3J5ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpIHx8IG1f
aW5pdGlhbE1lbW9yeSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKSkgewotICAgICAgICBOU0xv
ZyhAIiVzIChVbmFibGUgdG8gZ2V0IGRpcnR5IG1lbW9yeSBpbmZvcm1hdGlvbiBmb3IgcHJvY2Vz
cylcbiIsIG1fbG9nU3RyaW5nKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHNzaXpl
X3QgbWVtb3J5RGlmZiA9IGN1cnJlbnRNZW1vcnkgLSBtX2luaXRpYWxNZW1vcnk7Ci0gICAgaWYg
KG1lbW9yeURpZmYgPCAwKQotICAgICAgICBOU0xvZyhAIlByZXNzdXJlIHJlbGllZjogJXM6IC1k
aXJ0eSAlbGQgYnl0ZXMgKGZyb20gJWxkIHRvICVsZClcbiIsIG1fbG9nU3RyaW5nLCAobWVtb3J5
RGlmZiAqIC0xKSwgbV9pbml0aWFsTWVtb3J5LCBjdXJyZW50TWVtb3J5KTsKLSAgICBlbHNlIGlm
IChtZW1vcnlEaWZmID4gMCkKLSAgICAgICAgTlNMb2coQCJQcmVzc3VyZSByZWxpZWY6ICVzOiAr
ZGlydHkgJWxkIGJ5dGVzIChmcm9tICVsZCB0byAlbGQpXG4iLCBtX2xvZ1N0cmluZywgbWVtb3J5
RGlmZiwgbV9pbml0aWFsTWVtb3J5LCBjdXJyZW50TWVtb3J5KTsKLSAgICBlbHNlCi0gICAgICAg
IE5TTG9nKEAiUHJlc3N1cmUgcmVsaWVmOiAlczogPWRpcnR5IChhdCAlbGQgYnl0ZXMpXG4iLCBt
X2xvZ1N0cmluZywgY3VycmVudE1lbW9yeSk7Ci19Ci0KICNpZiBQTEFURk9STShJT1MpCiBzdGF0
aWMgdm9pZCByZXNwb25kVG9NZW1vcnlQcmVzc3VyZUNhbGxiYWNrKENGUnVuTG9vcE9ic2VydmVy
UmVmIG9ic2VydmVyLCBDRlJ1bkxvb3BBY3Rpdml0eSAvKmFjdGl2aXR5Ki8sIHZvaWQqIC8qaW5m
byovKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgvTWVtb3J5
UHJlc3N1cmVIYW5kbGVyTGludXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgv
TWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwCmluZGV4IGZlYjY5YmRiZjNlZjM5ZjUwMGYy
ODc5ZmMwOTNhMmU1ZDMwMjIwMzUuLmQwZDEzNmFjYzEzNGViZTk5NzFiYzQxZGQzMDU0NTJhM2E0
NTExOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L01lbW9yeVBy
ZXNzdXJlSGFuZGxlckxpbnV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saW51
eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHAKQEAgLTIwNywyMyArMjA3LDYgQEAgdm9p
ZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnBsYXRmb3JtUmVsZWFzZU1lbW9yeShDcml0aWNhbCkK
ICNlbmRpZgogfQogCi12b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpw
bGF0Zm9ybUxvZygpCi17Ci0gICAgc2l6ZV90IGN1cnJlbnRNZW1vcnkgPSBwbGF0Zm9ybU1lbW9y
eVVzYWdlKCk7Ci0gICAgaWYgKGN1cnJlbnRNZW1vcnkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90Pigt
MSkgfHwgbV9pbml0aWFsTWVtb3J5ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpKSB7Ci0gICAg
ICAgIExPRyhNZW1vcnlQcmVzc3VyZSwgIiVzIChVbmFibGUgdG8gZ2V0IGRpcnR5IG1lbW9yeSBp
bmZvcm1hdGlvbiBmb3IgcHJvY2VzcykiLCBtX2xvZ1N0cmluZyk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBzc2l6ZV90IG1lbW9yeURpZmYgPSBjdXJyZW50TWVtb3J5IC0gbV9pbml0
aWFsTWVtb3J5OwotICAgIGlmIChtZW1vcnlEaWZmIDwgMCkKLSAgICAgICAgTE9HKE1lbW9yeVBy
ZXNzdXJlLCAiUHJlc3N1cmUgcmVsaWVmOiAlczogLWRpcnR5ICVsdSBieXRlcyAoZnJvbSAlbHUg
dG8gJWx1KSIsIG1fbG9nU3RyaW5nLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihtZW1vcnlE
aWZmICogLTEpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihtX2luaXRpYWxNZW1vcnkpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihjdXJyZW50TWVtb3J5KSk7Ci0gICAgZWxzZSBpZiAo
bWVtb3J5RGlmZiA+IDApCi0gICAgICAgIExPRyhNZW1vcnlQcmVzc3VyZSwgIlByZXNzdXJlIHJl
bGllZjogJXM6ICtkaXJ0eSAlbHUgYnl0ZXMgKGZyb20gJWx1IHRvICVsdSkiLCBtX2xvZ1N0cmlu
Zywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obWVtb3J5RGlmZiksIHN0YXRpY19jYXN0PHVu
c2lnbmVkIGxvbmc+KG1faW5pdGlhbE1lbW9yeSksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+
KGN1cnJlbnRNZW1vcnkpKTsKLSAgICBlbHNlCi0gICAgICAgIExPRyhNZW1vcnlQcmVzc3VyZSwg
IlByZXNzdXJlIHJlbGllZjogJXM6ID1kaXJ0eSAoYXQgJWx1IGJ5dGVzKSIsIG1fbG9nU3RyaW5n
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihjdXJyZW50TWVtb3J5KSk7Ci19Ci0KIHNpemVf
dCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1NZW1vcnlVc2Fn
ZSgpCiB7CiAgICAgRklMRSogZmlsZSA9IGZvcGVuKHNfcHJvY2Vzc1N0YXR1cywgInIiKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NZW1vcnlQcmVzc3VyZUhhbmRs
ZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01lbW9yeVByZXNzdXJlSGFu
ZGxlcldpbi5jcHAKaW5kZXggMGQ1MjNiODhhNjAxNzZjNjdmMTdjMjM4NWFlM2ZmNWQxNjdmMzEy
OS4uZGM5N2M3MzE2MWJmYTczMjljZjIzOWYxNGQxMWI3NzdhOTliNmRlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01lbW9yeVByZXNzdXJlSGFuZGxlcldpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01lbW9yeVByZXNzdXJlSGFuZGxlcldp
bi5jcHAKQEAgLTEyOCw4ICsxMjgsNCBAQCBzaXplX3QgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpS
ZWxpZWZMb2dnZXI6OnBsYXRmb3JtTWVtb3J5VXNhZ2UoKQogICAgIHJldHVybiAwOwogfQogCi12
b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpwbGF0Zm9ybUxvZygpCi17
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGU5YzllNjA1
N2Q0Mjk5ODRkYWYzMmY0NDQxNzJjZDFkNWMxM2UxN2IuLmZmZWY4MDk5NGVlMDBlNGU2OGU3NDcz
MjNjMjBjNDQ4NzBiOWU1ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNDYsNiArNDYsOSBAQAogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorI2RlZmluZSBORVRXT1JLUkVTT1VSQ0VMT0FERVJf
TE9HX0FMV0FZUyguLi4pIExPR19BTFdBWVMoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIF9f
VkFfQVJHU19fKQorI2RlZmluZSBORVRXT1JLUkVTT1VSQ0VMT0FERVJfTE9HX0FMV0FZU19FUlJP
UiguLi4pIExPR19BTFdBWVNfRVJST1IoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIF9fVkFf
QVJHU19fKQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSB7CkBAIC0yMDAsNiArMjAzLDggQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKICNlbmRpZgogCisgICAgTkVUV09SS1JFU09VUkNFTE9BREVSX0xPR19BTFdB
WVMoIlN0YXJ0aW5nIG5ldHdvcmsgcmVzb3VyY2UgbG9hZDogbG9hZGVyID0gJXAsIHBhZ2VJRCA9
ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3Vz
ID0gJWQiLCB0aGlzLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJh
bWVJRCwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKKwogICAgIE5ldHdvcmtM
b2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gbV9wYXJhbWV0ZXJzOwogICAgIHBhcmFtZXRlcnMu
ZGVmZXJzTG9hZGluZyA9IG1fZGVmZXJzTG9hZGluZzsKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3Qg
PSByZXF1ZXN0OwpAQCAtMjcxLDYgKzI3Niw4IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjphYm9ydCgpCiAKIGF1dG8gTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVjZWl2ZWRSZXNwb25zZSkgLT4gU2hvdWxkQ29u
dGludWVEaWRSZWNlaXZlUmVzcG9uc2UKIHsKKyAgICBORVRXT1JLUkVTT1VSQ0VMT0FERVJfTE9H
X0FMV0FZUygiUmVjZWl2ZWQgbmV0d29yayByZXNvdXJjZSByZXNwb25zZTogbG9hZGVyID0gJXAs
IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5
bmNocm9ub3VzID0gJWQsIGh0dHBTdGF0dXNDb2RlID0gJWQiLCB0aGlzLCBtX3BhcmFtZXRlcnMu
d2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgaXNNYWluUmVzb3VyY2UoKSwgaXNT
eW5jaHJvbm91cygpLCByZWNlaXZlZFJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOworCiAgICAg
bV9yZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAKICAgICAvLyBGb3IgbXVsdGlwYXJ0L3gt
bWl4ZWQtcmVwbGFjZSBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyBnZXRzIGNhbGxlZCBtdWx0aXBs
ZSB0aW1lcyBhbmQgYnVmZmVyaW5nIHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBoYW5kbGluZy4KQEAg
LTI5NiwxMyArMzAzLDE2IEBAIGF1dG8gTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVjZWl2ZWRSCiAgICAgc2hvdWxkU2Vu
ZERpZFJlY2VpdmVSZXNwb25zZSA9ICFtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uOwogI2VuZGlm
CiAKLSAgICBib29sIHNob3VsZFdhaXRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSA9IG9yaWdp
bmFsUmVxdWVzdCgpLnJlcXVlc3RlcigpID09IFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpN
YWluOworICAgIGJvb2wgc2hvdWxkV2FpdENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlID0gaXNN
YWluUmVzb3VyY2UoKTsKICAgICBpZiAoc2hvdWxkU2VuZERpZFJlY2VpdmVSZXNwb25zZSkgewog
ICAgICAgICBpZiAoaXNTeW5jaHJvbm91cygpKQogICAgICAgICAgICAgbV9zeW5jaHJvbm91c0xv
YWREYXRhLT5yZXNwb25zZSA9IG1fcmVzcG9uc2U7CiAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgaWYgKCFzZW5kQWJvcnRpbmdPbkZhaWx1cmUoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVy
OjpEaWRSZWNlaXZlUmVzcG9uc2UobV9yZXNwb25zZSwgc2hvdWxkV2FpdENvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlKSkpCisgICAgICAgICAgICBORVRXT1JLUkVTT1VSQ0VMT0FERVJfTE9HX0FM
V0FZUygiU2VuZGluZyBkaWRSZWNlaXZlUmVzcG9uc2UgbWVzc2FnZSB0byB0aGUgV2ViQ29udGVu
dCBwcm9jZXNzOiBsb2FkZXIgPSAlcCwgcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIGlz
TWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCIsIHRoaXMsIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBpc01haW5SZXNvdXJjZSgpLCBp
c1N5bmNocm9ub3VzKCkpOworICAgICAgICAgICAgaWYgKCFzZW5kQWJvcnRpbmdPbkZhaWx1cmUo
TWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UobV9yZXNwb25z
ZSwgc2hvdWxkV2FpdENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKSkpIHsKKyAgICAgICAgICAg
ICAgICBORVRXT1JLUkVTT1VSQ0VMT0FERVJfTE9HX0FMV0FZU19FUlJPUigiRmFpbGVkIHRvIHNl
bmQgdGhlIGRpZFJlY2VpdmVSZXNwb25zZSBJUEMgbWVzc2FnZSB0byB0aGUgV2ViQ29udGVudCBw
cm9jZXNzOiBsb2FkZXIgPSAlcCwgcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIGlzTWFp
blJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCIsIHRoaXMsIG1fcGFyYW1ldGVycy53
ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBpc01haW5SZXNvdXJjZSgpLCBpc1N5
bmNocm9ub3VzKCkpOwogICAgICAgICAgICAgICAgIHJldHVybiBTaG91bGRDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZTo6Tm87CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAg
LTMxMiw3ICszMjIsMTMgQEAgYXV0byBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWNlaXZlZFIKICAgICBzaG91bGRDb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZSA9IHNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
IHx8IG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb247CiAjZW5kaWYKIAotICAgIHJldHVybiBzaG91
bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSA/IFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlOjpZZXMgOiBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZTo6Tm87CisgICAg
aWYgKHNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKSB7CisgICAgICAgIE5FVFdPUktS
RVNPVVJDRUxPQURFUl9MT0dfQUxXQVlTKCJTaG91bGQgd2FpdCBmb3IgbWVzc2FnZSBmcm9tIFdl
YkNvbnRlbnQgcHJvY2VzcyBiZWZvcmUgY29udGludWluZyByZXNvdXJjZSBsb2FkOiBsb2FkZXIg
PSAlcCwgcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIGlzTWFpblJlc291cmNlID0gJWQs
IGlzU3luY2hyb25vdXMgPSAlZCIsIHRoaXMsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFy
YW1ldGVycy53ZWJGcmFtZUlELCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwor
ICAgICAgICByZXR1cm4gU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2U6OlllczsKKyAg
ICB9CisKKyAgICBORVRXT1JLUkVTT1VSQ0VMT0FERVJfTE9HX0FMV0FZUygiU2hvdWxkIG5vdCB3
YWl0IGZvciBtZXNzYWdlIGZyb20gV2ViQ29udGVudCBwcm9jZXNzIGJlZm9yZSBjb250aW51aW5n
IHJlc291cmNlIGxvYWQ6IGxvYWRlciA9ICVwLCBwYWdlSUQgPSAlbGx1LCBmcmFtZUlEID0gJWxs
dSwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkIiwgdGhpcywgbV9wYXJh
bWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIGlzTWFpblJlc291cmNl
KCksIGlzU3luY2hyb25vdXMoKSk7CisgICAgcmV0dXJuIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlOjpObzsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoKQpAQCAtMzQ0LDYgKzM2MCw4IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQK
IAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZp
bmlzaFRpbWUpCiB7CisgICAgTkVUV09SS1JFU09VUkNFTE9BREVSX0xPR19BTFdBWVMoIkZpbmlz
aGVkIGxvYWRpbmcgbmV0d29yayByZXNvdXJjZTogbG9hZGVyID0gJXAsIHBhZ2VJRCA9ICVsbHUs
IGZyYW1lSUQgPSAlbGx1LCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQi
LCB0aGlzLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwg
aXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKKwogI2lmIEVOQUJMRShORVRXT1JL
X0NBQ0hFKQogICAgIGlmIChtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKSB7CiAgICAgICAgIC8v
IDMwNCBOb3QgTW9kaWZpZWQKQEAgLTM3NSw2ICszOTMsOCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGltZSkKIAogdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxMb2FkaW5nKGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKQogeworICAgIE5FVFdPUktSRVNPVVJDRUxPQURFUl9MT0dfQUxXQVlTKCJGYWlsZWQgbG9h
ZGluZyBuZXR3b3JrIHJlc291cmNlOiBsb2FkZXIgPSAlcCwgcGFnZUlEID0gJWxsdSwgZnJhbWVJ
RCA9ICVsbHUsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwgaXNUaW1l
b3V0ID0gJWQsIGlzQ2FuY2VsbGF0aW9uID0gJWQsIGVyckNvZGUgPSAlZCIsIHRoaXMsIG1fcGFy
YW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBpc01haW5SZXNvdXJj
ZSgpLCBpc1N5bmNocm9ub3VzKCksIGVycm9yLmlzVGltZW91dCgpLCBlcnJvci5pc0NhbmNlbGxh
dGlvbigpLCBlcnJvci5lcnJvckNvZGUoKSk7CisKICAgICBBU1NFUlQoIWVycm9yLmlzTnVsbCgp
KTsKIAogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFKQpAQCAtNDE5LDYgKzQzOSw4IEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51
ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QpCiB7Cisg
ICAgTkVUV09SS1JFU09VUkNFTE9BREVSX0xPR19BTFdBWVMoIkZvbGxvd2luZyByZWRpcmVjdCBv
ZiBuZXR3b3JrIHJlc291cmNlOiBsb2FkZXIgPSAlcCwgcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9
ICVsbHUsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCIsIHRoaXMsIG1f
cGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBpc01haW5SZXNv
dXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEUpCiAg
ICAgaWYgKG1faXNXYWl0aW5nQ29udGludWVXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRpcmVj
dCkgewogICAgICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSBSZXRyaWV2
aW5nIGNhY2hlZCByZWRpcmVjdCIpOwpAQCAtNTEwLDcgKzUzMiw3IEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpkaWRSZXRyaWV2ZUNhY2hlRW50cnkoc3RkOjp1bmlxdWVfcHRyPE5ldHdv
cmtDYWNoZTo6CiAgICAgICAgIG1fc3luY2hyb25vdXNMb2FkRGF0YS0+cmVzcG9uc2UgPSBlbnRy
eS0+cmVzcG9uc2UoKTsKICAgICAgICAgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoKm1f
c3luY2hyb25vdXNMb2FkRGF0YSwgZW50cnktPmJ1ZmZlcigpKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlID0gb3JpZ2lu
YWxSZXF1ZXN0KCkucmVxdWVzdGVyKCkgPT0gUmVzb3VyY2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6Ok1h
aW47CisgICAgICAgIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2Ug
PSBpc01haW5SZXNvdXJjZSgpOwogICAgICAgICBzZW5kQWJvcnRpbmdPbkZhaWx1cmUoTWVzc2Fn
ZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UoZW50cnktPnJlc3BvbnNl
KCksIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSk7CiAKICNpZiBFTkFC
TEUoU0hBUkVBQkxFX1JFU09VUkNFKQpAQCAtNjI0LDQgKzY0Niw5IEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3Bh
Y2UoYm9vbCByCiB9CiAjZW5kaWYKIAorYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmlzQWx3
YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNlc3Npb25JRCgpLmlz
QWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmgKaW5kZXggZDk5ZGMzYTY4ZTEzYzQ3YTk0ZmQ0OTBhZDk5ZTY4ZjA2MzVhZTk0ZS4uOTZi
YzJlZWNjNmMzN2QxNzYzMmUyNjcwYzc3ZDQ0ZjAxNzFjZTI0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTk4
LDYgKzk4LDkgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgZGlkQ29udmVydFRvRG93bmxvYWQo
KTsKIAorICAgIGJvb2wgaXNNYWluUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRl
cnMucmVxdWVzdC5yZXF1ZXN0ZXIoKSA9PSBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OlJlcXVl
c3Rlcjo6TWFpbjsgfQorICAgIGJvb2wgaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3Q7
CisKIHByaXZhdGU6CiAgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyKGNvbnN0IE5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzJiwgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZWZQ
dHI8TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hy
b25vdXNMb2FkOjpEZWxheWVkUmVwbHk+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9J
UEMvQ29ubmVjdGlvbi5jcHAKaW5kZXggODE2NmM5YTJlOTRiODAzMjgzZjNiZTc4ZjBjMGE5NmM5
ZTVhODRiYy4uNDk0OThkMmU1MjYzMzdkNjhhM2U3ZjY1Y2RkZjgwYmM3YTEwNDI4NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApAQCAtMzQsNiArMzQsOCBA
QAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRz
L0JpbmFyeVNlbWFwaG9yZS5oPgogCisjZGVmaW5lIENPTk5FQ1RJT05fTE9HX0FMV0FZU19FUlJP
UiguLi4pIExPR19BTFdBWVNfRVJST1IodHJ1ZSwgX19WQV9BUkdTX18pCisKIG5hbWVzcGFjZSBJ
UEMgewogCiBzdHJ1Y3QgV2FpdEZvck1lc3NhZ2VTdGF0ZSB7CkBAIC01NzUsNiArNTc3LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1Jl
cGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXMKICAgICAgICAgLy8gSWYgdGhhdCBoYXBwZW5zLCB3ZSBu
ZWVkIHRvIHN0b3Agd2FpdGluZywgb3Igd2UnbGwgaGFuZyBzaW5jZSB3ZSB3b24ndCBnZXQKICAg
ICAgICAgLy8gYW55IG1vcmUgaW5jb21pbmcgbWVzc2FnZXMuCiAgICAgICAgIGlmICghaXNWYWxp
ZCgpKSB7CisgICAgICAgICAgICBDT05ORUNUSU9OX0xPR19BTFdBWVNfRVJST1IoIkNvbm5lY3Rp
b246OndhaXRGb3JTeW5jUmVwbHk6IENvbm5lY3Rpb24gbm8gbG9uZ2VyIHZhbGlkLCBpZCA9ICUi
IFBSSXU2NCwgc3luY1JlcXVlc3RJRCk7CiAgICAgICAgICAgICBkaWRSZWNlaXZlU3luY1JlcGx5
KHN5bmNTZW5kRmxhZ3MpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0K
QEAgLTU4NSw2ICs1ODgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+IENvbm5l
Y3Rpb246OndhaXRGb3JTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlcwogICAgICAgICB0aW1l
ZE91dCA9ICFTeW5jTWVzc2FnZVN0YXRlOjpzaW5nbGV0b24oKS53YWl0KGFic29sdXRlVGltZSk7
CiAgICAgfQogCisgICAgQ09OTkVDVElPTl9MT0dfQUxXQVlTX0VSUk9SKCJDb25uZWN0aW9uOjp3
YWl0Rm9yU3luY1JlcGx5OiBUaW1lZC1vdXQgd2hpbGUgd2FpdGluZyBmb3IgcmVwbHksIGlkID0g
JSIgUFJJdTY0LCBzeW5jUmVxdWVzdElEKTsKICAgICBkaWRSZWNlaXZlU3luY1JlcGx5KHN5bmNT
ZW5kRmxhZ3MpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGls
ZFByb2Nlc3MuY3BwCmluZGV4IDNiM2MxMmE2YjlhODVlOGJlODQwYWQxYjI5MTQxMzQzZjIxZjE1
ZDUuLjgwNThiZDcxNDJmNzM0N2ExZWYyZmQ0NTY5ZDNjNTVmYmZhYTNmNjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAi
U2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPHVuaXN0ZC5oPgog
CisjZGVmaW5lIENISUxEUFJPQ0VTU19MT0dfQUxXQVlTX0VSUk9SKC4uLikgTE9HX0FMV0FZU19F
UlJPUih0cnVlLCBfX1ZBX0FSR1NfXykKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIENoaWxkUHJv
Y2Vzczo6Q2hpbGRQcm9jZXNzKCkKQEAgLTUzLDYgKzU1LDcgQEAgc3RhdGljIHZvaWQgZGlkQ2xv
c2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoSVBDOjpDb25uZWN0aW9uKikKICAgICAgICAgLy8gV2Ug
dXNlIF9leGl0IGhlcmUgc2luY2UgdGhlIHdhdGNoZG9nIGNhbGxiYWNrIGlzIGNhbGxlZCBmcm9t
IGFub3RoZXIgdGhyZWFkIGFuZCB3ZSBkb24ndCB3YW50CiAgICAgICAgIC8vIGdsb2JhbCBkZXN0
cnVjdG9ycyBvciBhdGV4aXQgaGFuZGxlcnMgdG8gYmUgY2FsbGVkIGZyb20gdGhpcyB0aHJlYWQg
d2hpbGUgdGhlIG1haW4gdGhyZWFkIGlzIGJ1c3kKICAgICAgICAgLy8gZG9pbmcgaXRzIHRoaW5n
LgorICAgICAgICBDSElMRFBST0NFU1NfTE9HX0FMV0FZU19FUlJPUigiRXhpdGluZyBwcm9jZXNz
IGVhcmx5IGR1ZSB0byB1bmFja25vd2xlZGdlZCBjbG9zZWQtY29ubmVjdGlvbiIpOwogICAgICAg
ICBfZXhpdChFWElUX0ZBSUxVUkUpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggZjE4
ZGRkMmM1NmU5ZjY0OWVjMzJhNDM1NjY4MmU0MDNkYzVhMjdiNy4uNTYxYTA3MzdmYzAwMDUwMDcy
NDM1OWViZGQ1MmE2NWI3NWIzNTVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC01Nyw2ICs1Nyw5IEBA
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCisjZGVmaW5lIFdFQkxPQURFUlNUUkFURUdZ
X0xPR19BTFdBWVMoLi4uKSBMT0dfQUxXQVlTKGxvYWRQYXJhbWV0ZXJzLnNlc3Npb25JRC5pc0Fs
d2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgX19WQV9BUkdTX18pCisjZGVmaW5lIFdFQkxPQURFUlNU
UkFURUdZX0xPR19BTFdBWVNfRVJST1IoLi4uKSBMT0dfQUxXQVlTX0VSUk9SKGxvYWRQYXJhbWV0
ZXJzLnNlc3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgX19WQV9BUkdTX18pCisK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJMb2FkZXJTdHJhdGVneTo6V2ViTG9hZGVyU3RyYXRl
Z3koKQpAQCAtMTcwLDcgKzE3Myw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxl
TG9hZChSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAgICAgfQog
I2VuZGlmCiAKLSAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9h
ZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBzY2hlZHVsZWQgd2l0
aCB0aGUgTmV0d29ya1Byb2Nlc3Mgd2l0aCBwcmlvcml0eSAlZCIsIHJlc291cmNlTG9hZGVyLT51
cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9h
ZGVyLT5yZXF1ZXN0KCkucHJpb3JpdHkoKSkpOworICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywg
IihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3
aWxsIGJlIHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyB3aXRoIHByaW9yaXR5ICVk
IiwgcmVzb3VyY2VMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSwgc3RhdGlj
X2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci0+cmVxdWVzdCgpLnByaW9yaXR5KCkpKTsKIAogICAg
IENvbnRlbnRTbmlmZmluZ1BvbGljeSBjb250ZW50U25pZmZpbmdQb2xpY3kgPSByZXNvdXJjZUxv
YWRlci0+c2hvdWxkU25pZmZDb250ZW50KCkgPyBTbmlmZkNvbnRlbnQgOiBEb05vdFNuaWZmQ29u
dGVudDsKICAgICBTdG9yZWRDcmVkZW50aWFscyBhbGxvd1N0b3JlZENyZWRlbnRpYWxzID0gcmVz
b3VyY2VMb2FkZXItPnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCkgPyBBbGxvd1N0b3JlZENy
ZWRlbnRpYWxzIDogRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzOwpAQCAtMjAwLDEzICsyMDMs
MTYgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVy
KiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKICAgICBBU1NFUlQoKGxvYWRQYXJhbWV0ZXJz
LndlYlBhZ2VJRCAmJiBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlEKSB8fCBsb2FkUGFyYW1ldGVy
cy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IERvTm90QXNrQ2xpZW50Rm9yQW55Q3JlZGVudGlh
bHMpOwogCiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlv
bigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpTY2hlZHVsZVJlc291cmNlTG9hZChsb2FkUGFyYW1ldGVycyksIDApKSB7CisgICAg
ICAgIFdFQkxPQURFUlNUUkFURUdZX0xPR19BTFdBWVNfRVJST1IoIldlYkxvYWRlclN0cmF0ZWd5
OjpzY2hlZHVsZUxvYWQ6IFVuYWJsZSB0byBzY2hlZHVsZSByZXNvdXJjZSB3aXRoIHRoZSBOZXR3
b3JrUHJvY2VzcyB3aXRoIHByaW9yaXR5ID0gJWQsIHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAl
bGx1Iiwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci0+cmVxdWVzdCgpLnByaW9yaXR5
KCkpLCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQsIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQp
OwogICAgICAgICAvLyBXZSBwcm9iYWJseSBmYWlsZWQgdG8gc2NoZWR1bGUgdGhpcyBsb2FkIHdp
dGggdGhlIE5ldHdvcmtQcm9jZXNzIGJlY2F1c2UgaXQgaGFkIGNyYXNoZWQuCiAgICAgICAgIC8v
IFRoaXMgbG9hZCB3aWxsIG5ldmVyIHN1Y2NlZWQgc28gd2Ugd2lsbCBzY2hlZHVsZSBpdCB0byBm
YWlsIGFzeW5jaHJvbm91c2x5LgogICAgICAgICBzY2hlZHVsZUludGVybmFsbHlGYWlsZWRMb2Fk
KHJlc291cmNlTG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICBtX3dl
YlJlc291cmNlTG9hZGVycy5zZXQoaWRlbnRpZmllciwgV2ViUmVzb3VyY2VMb2FkZXI6OmNyZWF0
ZShyZXNvdXJjZUxvYWRlcikpOworCisgICAgYXV0byB3ZWJSZXNvdXJjZUxvYWRlciA9IFdlYlJl
c291cmNlTG9hZGVyOjpjcmVhdGUocmVzb3VyY2VMb2FkZXIpOworICAgIFdFQkxPQURFUlNUUkFU
RUdZX0xPR19BTFdBWVMoIldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQ6IFJlc291cmNl
IHdpbGwgYmUgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIHdpdGggcHJpb3JpdHkg
PSAlZCwgcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIFdlYlJlc291cmNlTG9hZGVyID0g
JXAiLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLT5yZXF1ZXN0KCkucHJpb3JpdHko
KSksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCwg
d2ViUmVzb3VyY2VMb2FkZXIucHRyKCkpOworICAgIG1fd2ViUmVzb3VyY2VMb2FkZXJzLnNldChp
ZGVudGlmaWVyLCBXVEZNb3ZlKHdlYlJlc291cmNlTG9hZGVyKSk7CiB9CiAKIHZvaWQgV2ViTG9h
ZGVyU3RyYXRlZ3k6OnNjaGVkdWxlSW50ZXJuYWxseUZhaWxlZExvYWQoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXIqIHJlc291cmNlTG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMmEwZjU1OWFjZjVk
MmM2NjBjYzkwNGM4NWY5OTkwZGU1MzVhZGY3Zi4uZWIzMmFhMmZlMGZiOTg4NDE0NTFlOWViZjE0
OGZmNzE4Y2FmZWVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC00Miw2ICs0Miw4IEBACiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCisjZGVmaW5lIFdFQlJFU09VUkNFTE9BREVSX0xPR19BTFdB
WVMoLi4uKSBMT0dfQUxXQVlTKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBfX1ZBX0FSR1Nf
XykKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFJlZjxXZWJSZXNvdXJjZUxvYWRlcj4gV2ViUmVz
b3VyY2VMb2FkZXI6OmNyZWF0ZShQYXNzUmVmUHRyPFJlc291cmNlTG9hZGVyPiBjb3JlTG9hZGVy
KQpAQCAtNzUsNyArNzcsOCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkZXRhY2hGcm9tQ29y
ZUxvYWRlcigpCiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHByb3Bvc2VkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVkaXJlY3RSZXNwb25zZSkKIHsKLSAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBX
ZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0IHRvICclcyciLCBwcm9wb3NlZFJlcXVl
c3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HKE5ldHdvcmssICIoV2Vi
UHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCB0byAnJXMnIiwgcHJv
cG9zZWRSZXF1ZXN0LnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CisgICAgV0VCUkVT
T1VSQ0VMT0FERVJfTE9HX0FMV0FZUygiV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVz
dCwgV2ViUmVzb3VyY2VMb2FkZXIgPSAlcCIsIHRoaXMpOwogCiAgICAgUmVmUHRyPFdlYlJlc291
cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOwogCkBAIC05OCw3ICsxMDEsOCBAQCB2b2lkIFdlYlJl
c291cmNlTG9hZGVyOjpkaWRTZW5kRGF0YSh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRv
dGFsQnl0ZXNUb0JlUwogCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCiB7Ci0gICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2Vz
cykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSBmb3IgJyVzJy4gU3RhdHVz
ICVkLiIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcmVzcG9u
c2UuaHR0cFN0YXR1c0NvZGUoKSk7CisgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2Vi
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSBmb3IgJyVzJy4gU3RhdHVzICVkLiIs
IG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpLCByZXNwb25zZS5o
dHRwU3RhdHVzQ29kZSgpKTsKKyAgICBXRUJSRVNPVVJDRUxPQURFUl9MT0dfQUxXQVlTKCJXZWJS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlLCBXZWJSZXNvdXJjZUxvYWRlciA9ICVw
LCBzdGF0dXMgPSAlZC4iLCB0aGlzLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKIAogICAg
IFJlZjxXZWJSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CiAKQEAgLTEyOSw3ICsxMzMs
OCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvbwogCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5j
b2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhIG9mIHNpemUgJWkgZm9yICclcyciLCAoaW50KWRh
dGEuc2l6ZSgpLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YSBvZiBzaXplICVsdSBmb3IgJyVzJyIsIGRhdGEuc2l6ZSgpLCBtX2NvcmVMb2FkZXIt
PnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CisgICAgV0VCUkVTT1VSQ0VMT0FERVJf
TE9HX0FMV0FZUygiV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhLCBXZWJSZXNvdXJj
ZUxvYWRlciA9ICVwLCBzaXplID0gJWx1IiwgdGhpcywgZGF0YS5zaXplKCkpOwogCiAjaWYgVVNF
KFFVSUNLX0xPT0spCiAgICAgaWYgKFF1aWNrTG9va0hhbmRsZSogcXVpY2tMb29rSGFuZGxlID0g
bV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5xdWlja0xvb2tIYW5kbGUoKSkgewpAQCAt
MTQyLDcgKzE0Nyw4IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAKIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZEZpbmlzaFJlc291cmNlTG9hZChkb3VibGUgZmluaXNoVGltZSkKIHsKLSAg
ICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNo
UmVzb3VyY2VMb2FkIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKKyAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxv
YWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwo
KS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOworICAgIFdFQlJFU09VUkNFTE9BREVSX0xPR19B
TFdBWVMoIldlYlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hSZXNvdXJjZUxvYWQsIFdlYlJlc291
cmNlTG9hZGVyID0gJXAiLCB0aGlzKTsKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIGlmIChR
dWlja0xvb2tIYW5kbGUqIHF1aWNrTG9va0hhbmRsZSA9IG1fY29yZUxvYWRlci0+ZG9jdW1lbnRM
b2FkZXIoKS0+cXVpY2tMb29rSGFuZGxlKCkpIHsKQEAgLTE1NSw4ICsxNjEsOSBAQCB2b2lkIFdl
YlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hSZXNvdXJjZUxvYWQoZG91YmxlIGZpbmlzaFRpbWUp
CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2Vi
UmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQgZm9yICclcyciLCBtX2NvcmVMb2Fk
ZXItPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIAorICAgIExPRyhOZXR3b3Jr
LCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGYWlsUmVzb3VyY2VMb2FkIGZv
ciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwor
ICAgIFdFQlJFU09VUkNFTE9BREVSX0xPR19BTFdBWVMoIldlYlJlc291cmNlTG9hZGVyOjpkaWRG
YWlsUmVzb3VyY2VMb2FkLCBXZWJSZXNvdXJjZUxvYWRlciA9ICVwIiwgdGhpcyk7CisKICNpZiBV
U0UoUVVJQ0tfTE9PSykKICAgICBpZiAoUXVpY2tMb29rSGFuZGxlKiBxdWlja0xvb2tIYW5kbGUg
PSBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnF1aWNrTG9va0hhbmRsZSgpKQogICAg
ICAgICBxdWlja0xvb2tIYW5kbGUtPmRpZEZhaWwoKTsKQEAgLTE2OSw3ICsxNzYsOCBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZGVyOjpkaWRGYWlsUmVzb3VyY2VMb2FkKGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiB2b2lkIFdlYlJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6Okhh
bmRsZSYgaGFuZGxlLCBkb3VibGUgZmluaXNoVGltZSkKIHsKLSAgICBMT0coTmV0d29yaywgIihX
ZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cmNlIGZvciAnJXMn
IiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0co
TmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291
cmNlIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRh
KCkpOworICAgIFdFQlJFU09VUkNFTE9BREVSX0xPR19BTFdBWVMoIldlYlJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlUmVzb3VyY2UsIFdlYlJlc291cmNlTG9hZGVyID0gJXAiLCB0aGlzKTsKIAog
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRC
dWZmZXIoKTsKIApAQCAtMjEzLDQgKzIyMSw5IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29uc3QgUHJvdGVjdGlvblNwCiB9
CiAjZW5kaWYKIAorYm9vbCBXZWJSZXNvdXJjZUxvYWRlcjo6aXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVzb3VyY2VMb2FkZXIoKSAmJiByZXNvdXJjZUxv
YWRlcigpLT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5oCmluZGV4IGJjYTkyYjQ1M2Q0MzNiYzY5MGMxMjU0ZWRiNTRmNzI0YmIz
MzkzZDUuLjU2YWM4YjBiNDBmNmFiZWY0NGYzNGEzZGJhY2I1MGZkMWNjMzI3NjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5oCkBAIC02Niw2ICs2Niw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGV0YWNoRnJvbUNvcmVM
b2FkZXIoKTsKIAorICAgIGJvb2wgaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3Q7CisK
IHByaXZhdGU6CiAgICAgV2ViUmVzb3VyY2VMb2FkZXIoUGFzc1JlZlB0cjxXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcj4pOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>