<?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>183626</bug_id>
          
          <creation_ts>2018-03-13 20:14:41 -0700</creation_ts>
          <short_desc>Reduce use of SWServerToContextConnection::globalServerToContextConnection()</short_desc>
          <delta_ts>2018-03-15 09:18:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Service Workers</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>
          
          <blocked>183600</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1406344</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-13 20:14:41 -0700</bug_when>
    <thetext>Reduce use of SWServerToContextConnection::globalServerToContextConnection() as we are moving towards having multiple context connections.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406425</commentid>
    <comment_count>1</comment_count>
      <attachid>335776</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-14 09:37:00 -0700</bug_when>
    <thetext>Created attachment 335776
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406435</commentid>
    <comment_count>2</comment_count>
      <attachid>335779</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-14 10:35:13 -0700</bug_when>
    <thetext>Created attachment 335779
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406487</commentid>
    <comment_count>3</comment_count>
      <attachid>335779</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-14 13:24:12 -0700</bug_when>
    <thetext>Comment on attachment 335779
Patch

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

&gt; Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.cpp:202
&gt; +    server().runServiceWorkerIfNecessary(destinationIdentifier, [destinationIdentifier, message = WTFMove(message), sourceData = WTFMove(*sourceData)](bool success, auto* contextConnection) mutable {

Can we get rid of success if we now pass a pointer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406516</commentid>
    <comment_count>4</comment_count>
      <attachid>335803</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-14 14:37:22 -0700</bug_when>
    <thetext>Created attachment 335803
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406517</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-14 14:38:22 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #3)
&gt; Comment on attachment 335779 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=335779&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.cpp:202
&gt; &gt; +    server().runServiceWorkerIfNecessary(destinationIdentifier, [destinationIdentifier, message = WTFMove(message), sourceData = WTFMove(*sourceData)](bool success, auto* contextConnection) mutable {
&gt; 
&gt; Can we get rid of success if we now pass a pointer?

Done before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406518</commentid>
    <comment_count>6</comment_count>
      <attachid>335803</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-14 14:39:40 -0700</bug_when>
    <thetext>Comment on attachment 335803
Patch

Rejecting attachment 335803 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 335803, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/WebCore/ChangeLog contains OOPS!.

Full output: http://webkit-queues.webkit.org/results/6955395</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406521</commentid>
    <comment_count>7</comment_count>
      <attachid>335804</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-14 14:54:58 -0700</bug_when>
    <thetext>Created attachment 335804
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406525</commentid>
    <comment_count>8</comment_count>
      <attachid>335804</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-14 15:32:32 -0700</bug_when>
    <thetext>Comment on attachment 335804
Patch

Clearing flags on attachment: 335804

Committed r229615: &lt;https://trac.webkit.org/changeset/229615&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406526</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-14 15:32:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406527</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-03-14 15:33:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/38476618&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406666</commentid>
    <comment_count>11</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-03-15 08:59:04 -0700</bug_when>
    <thetext>This change appears to have caused the following ServiceWorker API tests to fail an assertion:

Tests that timed out:
  ServiceWorkers.FetchAfterRestoreFromDisk
  ServiceWorkers.InterceptFirstLoadAfterRestoreFromDisk
  ServiceWorkers.RestoreFromDisk
  ServiceWorkers.WaitForPolicyDelegate

ASSERTION FAILED: !HashTranslator::equal(KeyTraits::emptyValue(), key)
/Volumes/Data/slave/sierra-debug/build/WebKitBuild/Debug/usr/local/include/wtf/HashTable.h(587) : void WTF::HashTable&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WTF::KeyValuePair&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WebCore::SWServerToContextConnection *&gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WebCore::SWServerToContextConnection *&gt; &gt;, WTF::ObjectIdentifierHash&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WTF::HashMap&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WebCore::SWServerToContextConnection *, WTF::ObjectIdentifierHash&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; &gt;, WTF::HashTraits&lt;WebCore::SWServerToContextConnection *&gt; &gt;::KeyValuePairTraits, WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; &gt; &gt;::checkKey(const T &amp;) [Key = WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, Value = WTF::KeyValuePair&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WebCore::SWServerToContextConnection *&gt;, Extractor = WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WebCore::SWServerToContextConnection *&gt; &gt;, HashFunctions = WTF::ObjectIdentifierHash&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, Traits = WTF::HashMap&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WebCore::SWServerToContextConnection *, WTF::ObjectIdentifierHash&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; &gt;, WTF::HashTraits&lt;WebCore::SWServerToContextConnection *&gt; &gt;::KeyValuePairTraits, KeyTraits = WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; &gt;, HashTranslator = WTF::HashMapTranslatorAdapter&lt;WTF::HashMap&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WebCore::SWServerToContextConnection *, WTF::ObjectIdentifierHash&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; &gt;, WTF::HashTraits&lt;WebCore::SWServerToContextConnection *&gt; &gt;::KeyValuePairTraits, WTF::IdentityHashTranslator&lt;WTF::HashMap&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WebCore::SWServerToContextConnection *, WTF::ObjectIdentifierHash&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; &gt;, WTF::HashTraits&lt;WebCore::SWServerToContextConnection *&gt; &gt;::KeyValuePairTraits, WTF::ObjectIdentifierHash&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; &gt; &gt;, T = WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;]
1   0x10aff7a7d WTFCrash
2   0x114fbb339 void WTF::HashTable&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WTF::KeyValuePair&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WebCore::SWServerToContextConnection*&gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WebCore::SWServerToContextConnection*&gt; &gt;, WTF::ObjectIdentifierHash&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WTF::HashMap&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WebCore::SWServerToContextConnection*, WTF::ObjectIdentifierHash&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; &gt;, WTF::HashTraits&lt;WebCore::SWServerToContextConnection*&gt; &gt;::KeyValuePairTraits, WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; &gt; &gt;::checkKey&lt;WTF::HashMapTranslatorAdapter&lt;WTF::HashMap&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WebCore::SWServerToContextConnection*, WTF::ObjectIdentifierHash&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; &gt;, WTF::HashTraits&lt;WebCore::SWServerToContextConnection*&gt; &gt;::KeyValuePairTraits, WTF::IdentityHashTranslator&lt;WTF::HashMap&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WebCore::SWServerToContextConnection*, WTF::ObjectIdentifierHash&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; &gt;, WTF::HashTraits&lt;WebCore::SWServerToContextConnection*&gt; &gt;::KeyValuePairTraits, WTF::ObjectIdentifierHash&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; &gt; &gt;, WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; &gt;(WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; const&amp;)
3   0x114fbb1df WTF::KeyValuePair&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WebCore::SWServerToContextConnection*&gt;* WTF::HashTable&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WTF::KeyValuePair&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WebCore::SWServerToContextConnection*&gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WebCore::SWServerToContextConnection*&gt; &gt;, WTF::ObjectIdentifierHash&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WTF::HashMap&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WebCore::SWServerToContextConnection*, WTF::ObjectIdentifierHash&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; &gt;, WTF::HashTraits&lt;WebCore::SWServerToContextConnection*&gt; &gt;::KeyValuePairTraits, WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; &gt; &gt;::inlineLookup&lt;WTF::HashMapTranslatorAdapter&lt;WTF::HashMap&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WebCore::SWServerToContextConnection*, WTF::ObjectIdentifierHash&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; &gt;, WTF::HashTraits&lt;WebCore::SWServerToContextConnection*&gt; &gt;::KeyValuePairTraits, WTF::IdentityHashTranslator&lt;WTF::HashMap&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WebCore::SWServerToContextConnection*, WTF::ObjectIdentifierHash&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; &gt;, WTF::HashTraits&lt;WebCore::SWServerToContextConnection*&gt; &gt;::KeyValuePairTraits, WTF::ObjectIdentifierHash&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; &gt; &gt;, WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; &gt;(WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; const&amp;)
4   0x114fbb14d WTF::KeyValuePair&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WebCore::SWServerToContextConnection*&gt;* WTF::HashTable&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WTF::KeyValuePair&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WebCore::SWServerToContextConnection*&gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WebCore::SWServerToContextConnection*&gt; &gt;, WTF::ObjectIdentifierHash&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WTF::HashMap&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WebCore::SWServerToContextConnection*, WTF::ObjectIdentifierHash&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; &gt;, WTF::HashTraits&lt;WebCore::SWServerToContextConnection*&gt; &gt;::KeyValuePairTraits, WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; &gt; &gt;::lookup&lt;WTF::HashMapTranslatorAdapter&lt;WTF::HashMap&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WebCore::SWServerToContextConnection*, WTF::ObjectIdentifierHash&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; &gt;, WTF::HashTraits&lt;WebCore::SWServerToContextConnection*&gt; &gt;::KeyValuePairTraits, WTF::IdentityHashTranslator&lt;WTF::HashMap&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WebCore::SWServerToContextConnection*, WTF::ObjectIdentifierHash&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; &gt;, WTF::HashTraits&lt;WebCore::SWServerToContextConnection*&gt; &gt;::KeyValuePairTraits, WTF::ObjectIdentifierHash&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; &gt; &gt;, WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; &gt;(WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; const&amp;)
5   0x114fbb0dd WebCore::SWServerToContextConnection* WTF::HashMap&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WebCore::SWServerToContextConnection*, WTF::ObjectIdentifierHash&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; &gt;, WTF::HashTraits&lt;WebCore::SWServerToContextConnection*&gt; &gt;::get&lt;WTF::IdentityHashTranslator&lt;WTF::HashMap&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WebCore::SWServerToContextConnection*, WTF::ObjectIdentifierHash&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; &gt;, WTF::HashTraits&lt;WebCore::SWServerToContextConnection*&gt; &gt;::KeyValuePairTraits, WTF::ObjectIdentifierHash&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; &gt;, WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; &gt;(WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; const&amp;) const
6   0x114f7840d WTF::HashMap&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WebCore::SWServerToContextConnection*, WTF::ObjectIdentifierHash&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;, WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; &gt;, WTF::HashTraits&lt;WebCore::SWServerToContextConnection*&gt; &gt;::get(WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt; const&amp;) const
7   0x114f783dd WebCore::SWServerToContextConnection::connectionForIdentifier(WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;)
8   0x114f71598 WebCore::SWServerWorker::contextConnection()
9   0x114f713fd WebCore::SWServer::runServiceWorkerIfNecessary(WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerIdentifierType&gt;, WTF::Function&lt;void (WebCore::SWServerToContextConnection*)&gt;&amp;&amp;)
10  0x1040a355b WebKit::WebSWServerConnection::startFetch(unsigned long long, WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerRegistrationIdentifierType&gt;, WebCore::ResourceRequest&amp;&amp;, WebCore::FetchOptions&amp;&amp;, IPC::FormDataReference&amp;&amp;, WTF::String&amp;&amp;)::$_0::operator()(bool)
11  0x1040a2a9b WebKit::WebSWServerConnection::startFetch(unsigned long long, WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerRegistrationIdentifierType&gt;, WebCore::ResourceRequest&amp;&amp;, WebCore::FetchOptions&amp;&amp;, IPC::FormDataReference&amp;&amp;, WTF::String&amp;&amp;)
12  0x1040bc37a void IPC::callMemberFunctionImpl&lt;WebKit::WebSWServerConnection, void (WebKit::WebSWServerConnection::*)(unsigned long long, WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerRegistrationIdentifierType&gt;, WebCore::ResourceRequest&amp;&amp;, WebCore::FetchOptions&amp;&amp;, IPC::FormDataReference&amp;&amp;, WTF::String&amp;&amp;), std::__1::tuple&lt;unsigned long long, WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerRegistrationIdentifierType&gt;, WebCore::ResourceRequest, WebCore::FetchOptions, IPC::FormDataReference, WTF::String&gt;, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul&gt;(WebKit::WebSWServerConnection*, void (WebKit::WebSWServerConnection::*)(unsigned long long, WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerRegistrationIdentifierType&gt;, WebCore::ResourceRequest&amp;&amp;, WebCore::FetchOptions&amp;&amp;, IPC::FormDataReference&amp;&amp;, WTF::String&amp;&amp;), std::__1::tuple&lt;unsigned long long, WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerRegistrationIdentifierType&gt;, WebCore::ResourceRequest, WebCore::FetchOptions, IPC::FormDataReference, WTF::String&gt;&amp;&amp;, std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul&gt;)
13  0x1040bbd48 void IPC::callMemberFunction&lt;WebKit::WebSWServerConnection, void (WebKit::WebSWServerConnection::*)(unsigned long long, WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerRegistrationIdentifierType&gt;, WebCore::ResourceRequest&amp;&amp;, WebCore::FetchOptions&amp;&amp;, IPC::FormDataReference&amp;&amp;, WTF::String&amp;&amp;), std::__1::tuple&lt;unsigned long long, WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerRegistrationIdentifierType&gt;, WebCore::ResourceRequest, WebCore::FetchOptions, IPC::FormDataReference, WTF::String&gt;, std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul&gt; &gt;(std::__1::tuple&lt;unsigned long long, WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerRegistrationIdentifierType&gt;, WebCore::ResourceRequest, WebCore::FetchOptions, IPC::FormDataReference, WTF::String&gt;&amp;&amp;, WebKit::WebSWServerConnection*, void (WebKit::WebSWServerConnection::*)(unsigned long long, WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerRegistrationIdentifierType&gt;, WebCore::ResourceRequest&amp;&amp;, WebCore::FetchOptions&amp;&amp;, IPC::FormDataReference&amp;&amp;, WTF::String&amp;&amp;))
14  0x1040b85a1 void IPC::handleMessage&lt;Messages::WebSWServerConnection::StartFetch, WebKit::WebSWServerConnection, void (WebKit::WebSWServerConnection::*)(unsigned long long, WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerRegistrationIdentifierType&gt;, WebCore::ResourceRequest&amp;&amp;, WebCore::FetchOptions&amp;&amp;, IPC::FormDataReference&amp;&amp;, WTF::String&amp;&amp;)&gt;(IPC::Decoder&amp;, WebKit::WebSWServerConnection*, void (WebKit::WebSWServerConnection::*)(unsigned long long, WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerRegistrationIdentifierType&gt;, WebCore::ResourceRequest&amp;&amp;, WebCore::FetchOptions&amp;&amp;, IPC::FormDataReference&amp;&amp;, WTF::String&amp;&amp;))
15  0x1040b7aac WebKit::WebSWServerConnection::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
16  0x103924523 WebKit::StorageToWebProcessConnection::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
17  0x10338e243 IPC::Connection::dispatchMessage(IPC::Decoder&amp;)
18  0x103383868 IPC::Connection::dispatchMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)
19  0x10338e840 IPC::Connection::dispatchOneMessage()
20  0x1033a6c0d IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)::$_14::operator()()
21  0x1033a6b69 WTF::Function&lt;void ()&gt;::CallableWrapper&lt;IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)::$_14&gt;::call()
22  0x10b013a7b WTF::Function&lt;void ()&gt;::operator()() const
23  0x10b0587d3 WTF::RunLoop::performWork()
24  0x10b059074 WTF::RunLoop::performWork(void*)
25  0x7fff930723e1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
26  0x7fff9305365c __CFRunLoopDoSources0
27  0x7fff93052b46 __CFRunLoopRun
28  0x7fff93052544 CFRunLoopRunSpecific
29  0x7fff94a83252 -[NSRunLoop(NSRunLoop) runMode:beforeDate:]
30  0x7fff94a8312a -[NSRunLoop(NSRunLoop) run]
31  0x7fffa8fe589b _xpc_objc_main

https://build.webkit.org/builders/Apple%20Sierra%20Debug%20WK2%20%28Tests%29/builds/5628</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406676</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-15 09:06:19 -0700</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #11)
&gt; This change appears to have caused the following ServiceWorker API tests to
&gt; fail an assertion:
&gt; 
&gt; Tests that timed out:
&gt;   ServiceWorkers.FetchAfterRestoreFromDisk
&gt;   ServiceWorkers.InterceptFirstLoadAfterRestoreFromDisk
&gt;   ServiceWorkers.RestoreFromDisk
&gt;   ServiceWorkers.WaitForPolicyDelegate
&gt; 
&gt; ASSERTION FAILED: !HashTranslator::equal(KeyTraits::emptyValue(), key)
&gt; /Volumes/Data/slave/sierra-debug/build/WebKitBuild/Debug/usr/local/include/
&gt; wtf/HashTable.h(587) : void
&gt; WTF::HashTable&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WTF::KeyValuePair&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WebCore::SWServerToContextConnection *&gt;,
&gt; WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WTF::
&gt; ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;,
&gt; WebCore::SWServerToContextConnection *&gt; &gt;,
&gt; WTF::ObjectIdentifierHash&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WTF::HashMap&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WebCore::SWServerToContextConnection *,
&gt; WTF::ObjectIdentifierHash&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt; &gt;,
&gt; WTF::HashTraits&lt;WebCore::SWServerToContextConnection *&gt;
&gt; &gt;::KeyValuePairTraits,
&gt; WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt; &gt; &gt;::checkKey(const T &amp;) [Key =
&gt; WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;,
&gt; Value =
&gt; WTF::KeyValuePair&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WebCore::SWServerToContextConnection *&gt;, Extractor =
&gt; WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WTF::
&gt; ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;,
&gt; WebCore::SWServerToContextConnection *&gt; &gt;, HashFunctions =
&gt; WTF::ObjectIdentifierHash&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;, Traits =
&gt; WTF::HashMap&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WebCore::SWServerToContextConnection *,
&gt; WTF::ObjectIdentifierHash&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt; &gt;,
&gt; WTF::HashTraits&lt;WebCore::SWServerToContextConnection *&gt;
&gt; &gt;::KeyValuePairTraits, KeyTraits =
&gt; WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt; &gt;, HashTranslator =
&gt; WTF::HashMapTranslatorAdapter&lt;WTF::HashMap&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WebCore::SWServerToContextConnection *,
&gt; WTF::ObjectIdentifierHash&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt; &gt;,
&gt; WTF::HashTraits&lt;WebCore::SWServerToContextConnection *&gt;
&gt; &gt;::KeyValuePairTraits,
&gt; WTF::IdentityHashTranslator&lt;WTF::HashMap&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WebCore::SWServerToContextConnection *,
&gt; WTF::ObjectIdentifierHash&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt; &gt;,
&gt; WTF::HashTraits&lt;WebCore::SWServerToContextConnection *&gt;
&gt; &gt;::KeyValuePairTraits,
&gt; WTF::ObjectIdentifierHash&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt; &gt; &gt;, T =
&gt; WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;]
&gt; 1   0x10aff7a7d WTFCrash
&gt; 2   0x114fbb339 void
&gt; WTF::HashTable&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WTF::KeyValuePair&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WebCore::SWServerToContextConnection*&gt;,
&gt; WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WTF::
&gt; ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;,
&gt; WebCore::SWServerToContextConnection*&gt; &gt;,
&gt; WTF::ObjectIdentifierHash&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WTF::HashMap&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WebCore::SWServerToContextConnection*,
&gt; WTF::ObjectIdentifierHash&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt; &gt;,
&gt; WTF::HashTraits&lt;WebCore::SWServerToContextConnection*&gt;
&gt; &gt;::KeyValuePairTraits,
&gt; WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt; &gt;
&gt; &gt;::checkKey&lt;WTF::HashMapTranslatorAdapter&lt;WTF::HashMap&lt;WTF::
&gt; ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;,
&gt; WebCore::SWServerToContextConnection*,
&gt; WTF::ObjectIdentifierHash&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt; &gt;,
&gt; WTF::HashTraits&lt;WebCore::SWServerToContextConnection*&gt;
&gt; &gt;::KeyValuePairTraits,
&gt; WTF::IdentityHashTranslator&lt;WTF::HashMap&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WebCore::SWServerToContextConnection*,
&gt; WTF::ObjectIdentifierHash&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt; &gt;,
&gt; WTF::HashTraits&lt;WebCore::SWServerToContextConnection*&gt;
&gt; &gt;::KeyValuePairTraits,
&gt; WTF::ObjectIdentifierHash&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt; &gt; &gt;,
&gt; WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;
&gt; &gt;(WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;
&gt; const&amp;)
&gt; 3   0x114fbb1df
&gt; WTF::KeyValuePair&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WebCore::SWServerToContextConnection*&gt;*
&gt; WTF::HashTable&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WTF::KeyValuePair&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WebCore::SWServerToContextConnection*&gt;,
&gt; WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WTF::
&gt; ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;,
&gt; WebCore::SWServerToContextConnection*&gt; &gt;,
&gt; WTF::ObjectIdentifierHash&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WTF::HashMap&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WebCore::SWServerToContextConnection*,
&gt; WTF::ObjectIdentifierHash&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt; &gt;,
&gt; WTF::HashTraits&lt;WebCore::SWServerToContextConnection*&gt;
&gt; &gt;::KeyValuePairTraits,
&gt; WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt; &gt;
&gt; &gt;::inlineLookup&lt;WTF::HashMapTranslatorAdapter&lt;WTF::HashMap&lt;WTF::
&gt; ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;,
&gt; WebCore::SWServerToContextConnection*,
&gt; WTF::ObjectIdentifierHash&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt; &gt;,
&gt; WTF::HashTraits&lt;WebCore::SWServerToContextConnection*&gt;
&gt; &gt;::KeyValuePairTraits,
&gt; WTF::IdentityHashTranslator&lt;WTF::HashMap&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WebCore::SWServerToContextConnection*,
&gt; WTF::ObjectIdentifierHash&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt; &gt;,
&gt; WTF::HashTraits&lt;WebCore::SWServerToContextConnection*&gt;
&gt; &gt;::KeyValuePairTraits,
&gt; WTF::ObjectIdentifierHash&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt; &gt; &gt;,
&gt; WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;
&gt; &gt;(WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;
&gt; const&amp;)
&gt; 4   0x114fbb14d
&gt; WTF::KeyValuePair&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WebCore::SWServerToContextConnection*&gt;*
&gt; WTF::HashTable&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WTF::KeyValuePair&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WebCore::SWServerToContextConnection*&gt;,
&gt; WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WTF::
&gt; ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;,
&gt; WebCore::SWServerToContextConnection*&gt; &gt;,
&gt; WTF::ObjectIdentifierHash&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WTF::HashMap&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WebCore::SWServerToContextConnection*,
&gt; WTF::ObjectIdentifierHash&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt; &gt;,
&gt; WTF::HashTraits&lt;WebCore::SWServerToContextConnection*&gt;
&gt; &gt;::KeyValuePairTraits,
&gt; WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt; &gt;
&gt; &gt;::lookup&lt;WTF::HashMapTranslatorAdapter&lt;WTF::HashMap&lt;WTF::
&gt; ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;,
&gt; WebCore::SWServerToContextConnection*,
&gt; WTF::ObjectIdentifierHash&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt; &gt;,
&gt; WTF::HashTraits&lt;WebCore::SWServerToContextConnection*&gt;
&gt; &gt;::KeyValuePairTraits,
&gt; WTF::IdentityHashTranslator&lt;WTF::HashMap&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WebCore::SWServerToContextConnection*,
&gt; WTF::ObjectIdentifierHash&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt; &gt;,
&gt; WTF::HashTraits&lt;WebCore::SWServerToContextConnection*&gt;
&gt; &gt;::KeyValuePairTraits,
&gt; WTF::ObjectIdentifierHash&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt; &gt; &gt;,
&gt; WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;
&gt; &gt;(WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;
&gt; const&amp;)
&gt; 5   0x114fbb0dd WebCore::SWServerToContextConnection*
&gt; WTF::HashMap&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WebCore::SWServerToContextConnection*,
&gt; WTF::ObjectIdentifierHash&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt; &gt;,
&gt; WTF::HashTraits&lt;WebCore::SWServerToContextConnection*&gt;
&gt; &gt;::get&lt;WTF::IdentityHashTranslator&lt;WTF::HashMap&lt;WTF::
&gt; ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;,
&gt; WebCore::SWServerToContextConnection*,
&gt; WTF::ObjectIdentifierHash&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt; &gt;,
&gt; WTF::HashTraits&lt;WebCore::SWServerToContextConnection*&gt;
&gt; &gt;::KeyValuePairTraits,
&gt; WTF::ObjectIdentifierHash&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt; &gt;,
&gt; WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;
&gt; &gt;(WTF::ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;
&gt; const&amp;) const
&gt; 6   0x114f7840d
&gt; WTF::HashMap&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WebCore::SWServerToContextConnection*,
&gt; WTF::ObjectIdentifierHash&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt;,
&gt; WTF::HashTraits&lt;WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt; &gt;,
&gt; WTF::HashTraits&lt;WebCore::SWServerToContextConnection*&gt;
&gt; &gt;::get(WTF::ObjectIdentifier&lt;WebCore::
&gt; SWServerToContextConnectionIdentifierType&gt; const&amp;) const
&gt; 7   0x114f783dd
&gt; WebCore::SWServerToContextConnection::connectionForIdentifier(WTF::
&gt; ObjectIdentifier&lt;WebCore::SWServerToContextConnectionIdentifierType&gt;)
&gt; 8   0x114f71598 WebCore::SWServerWorker::contextConnection()
&gt; 9   0x114f713fd
&gt; WebCore::SWServer::runServiceWorkerIfNecessary(WTF::ObjectIdentifier&lt;WebCore:
&gt; :ServiceWorkerIdentifierType&gt;, WTF::Function&lt;void
&gt; (WebCore::SWServerToContextConnection*)&gt;&amp;&amp;)
&gt; 10  0x1040a355b WebKit::WebSWServerConnection::startFetch(unsigned long
&gt; long,
&gt; WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerRegistrationIdentifierType&gt;,
&gt; WebCore::ResourceRequest&amp;&amp;, WebCore::FetchOptions&amp;&amp;,
&gt; IPC::FormDataReference&amp;&amp;, WTF::String&amp;&amp;)::$_0::operator()(bool)
&gt; 11  0x1040a2a9b WebKit::WebSWServerConnection::startFetch(unsigned long
&gt; long,
&gt; WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerRegistrationIdentifierType&gt;,
&gt; WebCore::ResourceRequest&amp;&amp;, WebCore::FetchOptions&amp;&amp;,
&gt; IPC::FormDataReference&amp;&amp;, WTF::String&amp;&amp;)
&gt; 12  0x1040bc37a void
&gt; IPC::callMemberFunctionImpl&lt;WebKit::WebSWServerConnection, void
&gt; (WebKit::WebSWServerConnection::*)(unsigned long long,
&gt; WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerRegistrationIdentifierType&gt;,
&gt; WebCore::ResourceRequest&amp;&amp;, WebCore::FetchOptions&amp;&amp;,
&gt; IPC::FormDataReference&amp;&amp;, WTF::String&amp;&amp;), std::__1::tuple&lt;unsigned long
&gt; long,
&gt; WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerRegistrationIdentifierType&gt;,
&gt; WebCore::ResourceRequest, WebCore::FetchOptions, IPC::FormDataReference,
&gt; WTF::String&gt;, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul&gt;(WebKit::WebSWServerConnection*,
&gt; void (WebKit::WebSWServerConnection::*)(unsigned long long,
&gt; WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerRegistrationIdentifierType&gt;,
&gt; WebCore::ResourceRequest&amp;&amp;, WebCore::FetchOptions&amp;&amp;,
&gt; IPC::FormDataReference&amp;&amp;, WTF::String&amp;&amp;), std::__1::tuple&lt;unsigned long
&gt; long,
&gt; WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerRegistrationIdentifierType&gt;,
&gt; WebCore::ResourceRequest, WebCore::FetchOptions, IPC::FormDataReference,
&gt; WTF::String&gt;&amp;&amp;, std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul, 2ul,
&gt; 3ul, 4ul, 5ul&gt;)
&gt; 13  0x1040bbd48 void IPC::callMemberFunction&lt;WebKit::WebSWServerConnection,
&gt; void (WebKit::WebSWServerConnection::*)(unsigned long long,
&gt; WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerRegistrationIdentifierType&gt;,
&gt; WebCore::ResourceRequest&amp;&amp;, WebCore::FetchOptions&amp;&amp;,
&gt; IPC::FormDataReference&amp;&amp;, WTF::String&amp;&amp;), std::__1::tuple&lt;unsigned long
&gt; long,
&gt; WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerRegistrationIdentifierType&gt;,
&gt; WebCore::ResourceRequest, WebCore::FetchOptions, IPC::FormDataReference,
&gt; WTF::String&gt;, std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul, 2ul, 3ul,
&gt; 4ul, 5ul&gt; &gt;(std::__1::tuple&lt;unsigned long long,
&gt; WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerRegistrationIdentifierType&gt;,
&gt; WebCore::ResourceRequest, WebCore::FetchOptions, IPC::FormDataReference,
&gt; WTF::String&gt;&amp;&amp;, WebKit::WebSWServerConnection*, void
&gt; (WebKit::WebSWServerConnection::*)(unsigned long long,
&gt; WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerRegistrationIdentifierType&gt;,
&gt; WebCore::ResourceRequest&amp;&amp;, WebCore::FetchOptions&amp;&amp;,
&gt; IPC::FormDataReference&amp;&amp;, WTF::String&amp;&amp;))
&gt; 14  0x1040b85a1 void
&gt; IPC::handleMessage&lt;Messages::WebSWServerConnection::StartFetch,
&gt; WebKit::WebSWServerConnection, void
&gt; (WebKit::WebSWServerConnection::*)(unsigned long long,
&gt; WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerRegistrationIdentifierType&gt;,
&gt; WebCore::ResourceRequest&amp;&amp;, WebCore::FetchOptions&amp;&amp;,
&gt; IPC::FormDataReference&amp;&amp;, WTF::String&amp;&amp;)&gt;(IPC::Decoder&amp;,
&gt; WebKit::WebSWServerConnection*, void
&gt; (WebKit::WebSWServerConnection::*)(unsigned long long,
&gt; WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerRegistrationIdentifierType&gt;,
&gt; WebCore::ResourceRequest&amp;&amp;, WebCore::FetchOptions&amp;&amp;,
&gt; IPC::FormDataReference&amp;&amp;, WTF::String&amp;&amp;))
&gt; 15  0x1040b7aac
&gt; WebKit::WebSWServerConnection::didReceiveMessage(IPC::Connection&amp;,
&gt; IPC::Decoder&amp;)
&gt; 16  0x103924523
&gt; WebKit::StorageToWebProcessConnection::didReceiveMessage(IPC::Connection&amp;,
&gt; IPC::Decoder&amp;)
&gt; 17  0x10338e243 IPC::Connection::dispatchMessage(IPC::Decoder&amp;)
&gt; 18  0x103383868
&gt; IPC::Connection::dispatchMessage(std::__1::unique_ptr&lt;IPC::Decoder,
&gt; std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)
&gt; 19  0x10338e840 IPC::Connection::dispatchOneMessage()
&gt; 20  0x1033a6c0d
&gt; IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::Decoder,
&gt; std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)::$_14::operator()()
&gt; 21  0x1033a6b69 WTF::Function&lt;void
&gt; ()&gt;::CallableWrapper&lt;IPC::Connection::enqueueIncomingMessage(std::__1::
&gt; unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt;
&gt; &gt;)::$_14&gt;::call()
&gt; 22  0x10b013a7b WTF::Function&lt;void ()&gt;::operator()() const
&gt; 23  0x10b0587d3 WTF::RunLoop::performWork()
&gt; 24  0x10b059074 WTF::RunLoop::performWork(void*)
&gt; 25  0x7fff930723e1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
&gt; 26  0x7fff9305365c __CFRunLoopDoSources0
&gt; 27  0x7fff93052b46 __CFRunLoopRun
&gt; 28  0x7fff93052544 CFRunLoopRunSpecific
&gt; 29  0x7fff94a83252 -[NSRunLoop(NSRunLoop) runMode:beforeDate:]
&gt; 30  0x7fff94a8312a -[NSRunLoop(NSRunLoop) run]
&gt; 31  0x7fffa8fe589b _xpc_objc_main
&gt; 
&gt; https://build.webkit.org/builders/Apple%20Sierra%20Debug%20WK2%20%28Tests%29/
&gt; builds/5628

Found the issue, will fix shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406680</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-15 09:18:06 -0700</bug_when>
    <thetext>Follow-up fix in &lt;https://trac.webkit.org/changeset/229625&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335776</attachid>
            <date>2018-03-14 09:37:00 -0700</date>
            <delta_ts>2018-03-14 10:35:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183626-20180314093700.patch</filename>
            <type>text/plain</type>
            <size>21740</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY1Zjc3MjY1ZGVhOTQ5
Y2QyMTJiYmVmZjBkZTQ0ZDEwNWVmYTNhZS4uMzQ5YzA3NDNjNjRjMDA2MGY1YzljMWIxNTI1NDEw
M2M2NzZjNjg2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE4LTAzLTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24o
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNjI2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNl
IHVzZSBvZiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24oKSBhcyB3ZSBhcmUgbW92aW5nIHRvd2FyZHMKKyAgICAgICAgaGF2aW5nIG11
bHRpcGxlIGNvbnRleHQgY29ubmVjdGlvbnMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBl
eHBlY3RlZCBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjptYXRjaEFsbCk6
CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNy
ZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJ1blNlcnZpY2VXb3JrZXJJZk5l
Y2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6cnVuU2VydmljZVdvcmtlcik6
CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6dGVybWluYXRlV29ya2VySW50ZXJuYWwpOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6Om1hcmtBbGxXb3JrZXJzQXNUZXJtaW5hdGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp3b3JrZXJDb250ZXh0VGVybWluYXRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6ZmlyZUluc3RhbGxFdmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcjo6ZmlyZUFjdGl2YXRlRXZlbnQpOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZpbmRDbGllbnRCeUlkZW50aWZpZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptYXRjaEFsbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNsYWltKToKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpjb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6bWF0Y2hBbGwpOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaDoKKwogMjAxOC0wMy0xMyAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIGZhc3QvbG9hZGVyL2phdmFzY3JpcHQt
dXJsLWlmcmFtZS1yZW1vdmUtb24tbmF2aWdhdGUuaHRtbCBpcyBhIGZsYWt5IGNyYXNoIG9uIGlP
UyB3aXRoIGFzeW5jIGRlbGVnYXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhZTI5NjUxMDU2N2E4NjNjOTNlYzA4
ZTUyZWFlZDg0MWRiZjAwOWVjLi5kMzBjOWZkZWNmN2YzNTJkYzNkNTVmMGJmZWQzMDA4Y2EyZTU1
NDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE4LTAzLTE0ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNjI2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24oKSBhcyB3ZSBhcmUgbW92aW5nCisgICAgICAgIHRvd2FyZHMgaGF2aW5nIG11bHRpcGxlIGNv
bnRleHQgY29ubmVjdGlvbnMuCisKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVy
Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIpOgorCiAyMDE4LTAzLTEzICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBtaXNzaW5nIGFy
dHdvcmsgZm9yIGZ1bGxzY3JlZW4gbW9kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggMzNhMzNhYzdjYWJlNmIyYTllMWZh
YTBkZjExZDQzYWVjOTkzMDg4Ny4uZjhjOGM3NjkwMDAzNmIyODRiOTI1OTNiNGZjMDU5MjVmMWIw
YTk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5jcHAKQEAgLTQxMCw3ICs0MTAsNyBAQCB2b2lkIFNXU2VydmVyOjpkaWRGaW5pc2hB
Y3RpdmF0aW9uKFNXU2VydmVyV29ya2VyJiB3b3JrZXIpCiB9CiAKIC8vIGh0dHBzOi8vdzNjLmdp
dGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNjbGllbnRzLWdldGFsbAotdm9pZCBTV1NlcnZlcjo6bWF0
Y2hBbGwoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlciwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1
ZXJ5T3B0aW9ucyYgb3B0aW9ucywgU2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNr
JiYgY2FsbGJhY2spCit2b2lkIFNXU2VydmVyOjptYXRjaEFsbChTV1NlcnZlcldvcmtlciYgd29y
a2VyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zJiBvcHRpb25zLCBjb25z
dCBTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2smIGNhbGxiYWNrKQogewogICAg
IC8vIEZJWE1FOiBTdXBwb3J0IHJlc2VydmVkIGNsaWVudCBmaWx0ZXJpbmcuCiAgICAgLy8gRklY
TUU6IFN1cHBvcnQgV2luZG93Q2xpZW50IGFkZGl0aW9uYWwgcHJvcGVydGllcy4KQEAgLTUxMyw2
ICs1MTMsMTAgQEAgdm9pZCBTV1NlcnZlcjo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0
ZWQoKQogICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
Omdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKICAgICBBU1NFUlQoY29ubmVjdGlv
bik7CiAKKyAgICAvLyBGSVhNRTogVGhpcyB3aWxsIG5lZWQgdG8gdXBkYXRlIG9ubHkgd29ya2Vy
cyB1c2luZyB0aGlzIGNvbm5lY3Rpb24gb25jZSB3ZSB1c2Ugc2V2ZXJhbCBjb250ZXh0IGNvbm5l
Y3Rpb25zLgorICAgIGZvciAoYXV0byogd29ya2VyIDogU1dTZXJ2ZXJXb3JrZXI6OmFsbFdvcmtl
cnMoKS52YWx1ZXMoKSkKKyAgICAgICAgd29ya2VyLT5zZXRDb250ZXh0Q29ubmVjdGlvbklkZW50
aWZpZXIoY29ubmVjdGlvbi0+aWRlbnRpZmllcigpKTsKKwogICAgIGF1dG8gcGVuZGluZ0NvbnRl
eHREYXRhcyA9IFdURk1vdmUobV9wZW5kaW5nQ29udGV4dERhdGFzKTsKICAgICBmb3IgKGF1dG8m
IGRhdGEgOiBwZW5kaW5nQ29udGV4dERhdGFzKQogICAgICAgICBpbnN0YWxsQ29udGV4dERhdGEo
ZGF0YSk7CkBAIC01MjEsNyArNTI1LDcgQEAgdm9pZCBTV1NlcnZlcjo6c2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbkNyZWF0ZWQoKQogICAgIGZvciAoYXV0byYgaXRlbSA6IHNlcnZpY2VXb3JrZXJS
dW5SZXF1ZXN0cykgewogICAgICAgICBib29sIHN1Y2Nlc3MgPSBydW5TZXJ2aWNlV29ya2VyKGl0
ZW0ua2V5KTsKICAgICAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGl0ZW0udmFsdWUpCi0gICAg
ICAgICAgICBjYWxsYmFjayhzdWNjZXNzLCAqY29ubmVjdGlvbik7CisgICAgICAgICAgICBjYWxs
YmFjayhzdWNjZXNzLCBjb25uZWN0aW9uKTsKICAgICB9CiB9CiAKQEAgLTU1NCwyMyArNTU4LDI3
IEBAIHZvaWQgU1dTZXJ2ZXI6Omluc3RhbGxDb250ZXh0RGF0YShjb25zdCBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEmIGRhdGEpCiAKIHZvaWQgU1dTZXJ2ZXI6OnJ1blNlcnZpY2VXb3JrZXJJZk5l
Y2Vzc2FyeShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBSdW5TZXJ2aWNlV29y
a2VyQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpnbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7
Ci0gICAgaWYgKGF1dG8qIHdvcmtlciA9IG1fcnVubmluZ09yVGVybWluYXRpbmdXb3JrZXJzLmdl
dChpZGVudGlmaWVyKSkgewotICAgICAgICBpZiAod29ya2VyLT5pc1J1bm5pbmcoKSkgewotICAg
ICAgICAgICAgQVNTRVJUKGNvbm5lY3Rpb24pOwotICAgICAgICAgICAgY2FsbGJhY2sodHJ1ZSwg
KmNvbm5lY3Rpb24pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgYXV0byog
d29ya2VyID0gd29ya2VyQnlJRChpZGVudGlmaWVyKTsKKyAgICBpZiAoIXdvcmtlcikgeworICAg
ICAgICBjYWxsYmFjayhmYWxzZSwgbnVsbHB0cik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBpZiAoIWNvbm5lY3Rpb24pIHsKKyAgICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IHdv
cmtlci0+Y29udGV4dENvbm5lY3Rpb24oKTsKKyAgICBpZiAod29ya2VyLT5pc1J1bm5pbmcoKSkg
eworICAgICAgICBBU1NFUlQoY29udGV4dENvbm5lY3Rpb24pOworICAgICAgICBjYWxsYmFjayh0
cnVlLCBjb250ZXh0Q29ubmVjdGlvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAoIWNvbnRleHRDb25uZWN0aW9uKSB7CiAgICAgICAgIG1fc2VydmljZVdvcmtlclJ1blJlcXVl
c3RzLmVuc3VyZShpZGVudGlmaWVyLCBbJl0gewogICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxS
dW5TZXJ2aWNlV29ya2VyQ2FsbGJhY2s+IHsgfTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
LmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBjYWxsYmFjayhydW5TZXJ2aWNlV29ya2VyKGlkZW50aWZpZXIpLCAqY29ubmVjdGlvbik7Cisg
ICAgY2FsbGJhY2socnVuU2VydmljZVdvcmtlcihpZGVudGlmaWVyKSwgY29udGV4dENvbm5lY3Rp
b24pOwogfQogCiBib29sIFNXU2VydmVyOjpydW5TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCkBAIC01ODksMTQgKzU5NywxMCBAQCBib29sIFNXU2VydmVy
OjpydW5TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAK
ICAgICB3b3JrZXItPnNldFN0YXRlKFNXU2VydmVyV29ya2VyOjpTdGF0ZTo6UnVubmluZyk7CiAK
LSAgICBhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpnbG9i
YWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7Ci0gICAgQVNTRVJUKGNvbm5lY3Rpb24pOwot
Ci0gICAgLy8gV2hlbiByZS1ydW5uaW5nIGEgc2VydmljZSB3b3JrZXIgYWZ0ZXIgYSBjb250ZXh0
IHByb2Nlc3MgY3Jhc2gsIHRoZSBjb25uZWN0aW9uIGlkZW50aWZpZXIgbWF5IGhhdmUgY2hhbmdl
ZAotICAgIC8vIHNvIHdlIHVwZGF0ZSBpdCBoZXJlLgotICAgIHdvcmtlci0+c2V0Q29udGV4dENv
bm5lY3Rpb25JZGVudGlmaWVyKGNvbm5lY3Rpb24tPmlkZW50aWZpZXIoKSk7CisgICAgYXV0byog
Y29udGV4dENvbm5lY3Rpb24gPSB3b3JrZXItPmNvbnRleHRDb25uZWN0aW9uKCk7CisgICAgQVNT
RVJUKGNvbnRleHRDb25uZWN0aW9uKTsKIAotICAgIGNvbm5lY3Rpb24tPmluc3RhbGxTZXJ2aWNl
V29ya2VyQ29udGV4dCh3b3JrZXItPmNvbnRleHREYXRhKCksIG1fc2Vzc2lvbklEKTsKKyAgICBj
b250ZXh0Q29ubmVjdGlvbi0+aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KHdvcmtlci0+Y29u
dGV4dERhdGEoKSwgbV9zZXNzaW9uSUQpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC02MjAs
MTcgKzYyNCw5IEBAIHZvaWQgU1dTZXJ2ZXI6OnRlcm1pbmF0ZVdvcmtlckludGVybmFsKFNXU2Vy
dmVyV29ya2VyJiB3b3JrZXIsIFRlcm1pbmF0aW9uTW9kZSBtCiAKICAgICB3b3JrZXIuc2V0U3Rh
dGUoU1dTZXJ2ZXJXb3JrZXI6OlN0YXRlOjpUZXJtaW5hdGluZyk7CiAKLSAgICBhdXRvIGNvbnRl
eHRDb25uZWN0aW9uSWRlbnRpZmllciA9IHdvcmtlci5jb250ZXh0Q29ubmVjdGlvbklkZW50aWZp
ZXIoKTsKLSAgICBBU1NFUlQoY29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAo
IWNvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcikgewotICAgICAgICBMT0dfRVJST1IoIlJlcXVl
c3QgdG8gdGVybWluYXRlIGEgd29ya2VyIHdob3NlIGNvbnRleHRDb25uZWN0aW9uSWRlbnRpZmll
ciBpcyBpbnZhbGlkIik7Ci0gICAgICAgIHdvcmtlckNvbnRleHRUZXJtaW5hdGVkKHdvcmtlcik7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9ySWRlbnRpZmllcigqY29udGV4dENv
bm5lY3Rpb25JZGVudGlmaWVyKTsKLSAgICBBU1NFUlQoY29ubmVjdGlvbik7Ci0gICAgaWYgKCFj
b25uZWN0aW9uKSB7CisgICAgYXV0byogY29udGV4dENvbm5lY3Rpb24gPSB3b3JrZXIuY29udGV4
dENvbm5lY3Rpb24oKTsKKyAgICBBU1NFUlQoY29udGV4dENvbm5lY3Rpb24pOworICAgIGlmICgh
Y29udGV4dENvbm5lY3Rpb24pIHsKICAgICAgICAgTE9HX0VSUk9SKCJSZXF1ZXN0IHRvIHRlcm1p
bmF0ZSBhIHdvcmtlciB3aG9zZSBjb250ZXh0IGNvbm5lY3Rpb24gZG9lcyBub3QgZXhpc3QiKTsK
ICAgICAgICAgd29ya2VyQ29udGV4dFRlcm1pbmF0ZWQod29ya2VyKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtNjM4LDI0ICs2MzQsMjYgQEAgdm9pZCBTV1NlcnZlcjo6dGVybWluYXRlV29ya2VySW50
ZXJuYWwoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlciwgVGVybWluYXRpb25Nb2RlIG0KIAogICAgIHN3
aXRjaCAobW9kZSkgewogICAgIGNhc2UgQXN5bmNocm9ub3VzOgotICAgICAgICBjb25uZWN0aW9u
LT50ZXJtaW5hdGVXb3JrZXIod29ya2VyLmlkZW50aWZpZXIoKSk7CisgICAgICAgIGNvbnRleHRD
b25uZWN0aW9uLT50ZXJtaW5hdGVXb3JrZXIod29ya2VyLmlkZW50aWZpZXIoKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgU3luY2hyb25vdXM6Ci0gICAgICAgIGNvbm5lY3Rpb24tPnN5bmNU
ZXJtaW5hdGVXb3JrZXIod29ya2VyLmlkZW50aWZpZXIoKSk7CisgICAgICAgIGNvbnRleHRDb25u
ZWN0aW9uLT5zeW5jVGVybWluYXRlV29ya2VyKHdvcmtlci5pZGVudGlmaWVyKCkpOwogICAgICAg
ICBicmVhazsKICAgICB9OwogfQogCiB2b2lkIFNXU2VydmVyOjptYXJrQWxsV29ya2Vyc0FzVGVy
bWluYXRlZCgpCiB7Ci0gICAgd2hpbGUgKCFtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy5p
c0VtcHR5KCkpCi0gICAgICAgIHdvcmtlckNvbnRleHRUZXJtaW5hdGVkKG1fcnVubmluZ09yVGVy
bWluYXRpbmdXb3JrZXJzLmJlZ2luKCktPnZhbHVlKTsKKyAgICB3aGlsZSAoIW1fcnVubmluZ09y
VGVybWluYXRpbmdXb3JrZXJzLmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvJiB3b3JrZXIgPSBt
X3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy5iZWdpbigpLT52YWx1ZTsKKyAgICAgICAgd29y
a2VyLT5zZXRDb250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIoc3RkOjpudWxsb3B0KTsKKyAgICAg
ICAgd29ya2VyQ29udGV4dFRlcm1pbmF0ZWQod29ya2VyKTsKKyAgICB9CiB9CiAKIHZvaWQgU1dT
ZXJ2ZXI6OndvcmtlckNvbnRleHRUZXJtaW5hdGVkKFNXU2VydmVyV29ya2VyJiB3b3JrZXIpCiB7
CiAgICAgd29ya2VyLnNldFN0YXRlKFNXU2VydmVyV29ya2VyOjpTdGF0ZTo6Tm90UnVubmluZyk7
Ci0gICAgd29ya2VyLnNldENvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcihzdGQ6Om51bGxvcHQp
OwogCiAgICAgaWYgKGF1dG8qIGpvYlF1ZXVlID0gbV9qb2JRdWV1ZXMuZ2V0KHdvcmtlci5yZWdp
c3RyYXRpb25LZXkoKSkpCiAgICAgICAgIGpvYlF1ZXVlLT5jYW5jZWxKb2JzRnJvbVNlcnZpY2VX
b3JrZXIod29ya2VyLmlkZW50aWZpZXIoKSk7CkBAIC02NjgsMzUgKzY2NiwyNCBAQCB2b2lkIFNX
U2VydmVyOjp3b3JrZXJDb250ZXh0VGVybWluYXRlZChTV1NlcnZlcldvcmtlciYgd29ya2VyKQog
CiB2b2lkIFNXU2VydmVyOjpmaXJlSW5zdGFsbEV2ZW50KFNXU2VydmVyV29ya2VyJiB3b3JrZXIp
CiB7Ci0gICAgYXV0byBjb250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgPSB3b3JrZXIuY29udGV4
dENvbm5lY3Rpb25JZGVudGlmaWVyKCk7Ci0gICAgaWYgKCFjb250ZXh0Q29ubmVjdGlvbklkZW50
aWZpZXIpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJSZXF1ZXN0IHRvIGZpcmUgaW5zdGFsbCBldmVu
dCBvbiBhIHdvcmtlciB3aG9zZSBjb250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgaXMgaW52YWxp
ZCIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Gb3JJZGVudGlmaWVyKCpjb250ZXh0
Q29ubmVjdGlvbklkZW50aWZpZXIpOwotICAgIGlmICghY29ubmVjdGlvbikgeworICAgIGF1dG8q
IGNvbnRleHRDb25uZWN0aW9uID0gd29ya2VyLmNvbnRleHRDb25uZWN0aW9uKCk7CisgICAgaWYg
KCFjb250ZXh0Q29ubmVjdGlvbikgewogICAgICAgICBMT0dfRVJST1IoIlJlcXVlc3QgdG8gZmly
ZSBpbnN0YWxsIGV2ZW50IG9uIGEgd29ya2VyIHdob3NlIGNvbnRleHQgY29ubmVjdGlvbiBkb2Vz
IG5vdCBleGlzdCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29ubmVjdGlvbi0+
ZmlyZUluc3RhbGxFdmVudCh3b3JrZXIuaWRlbnRpZmllcigpKTsKKyAgICBjb250ZXh0Q29ubmVj
dGlvbi0+ZmlyZUluc3RhbGxFdmVudCh3b3JrZXIuaWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBT
V1NlcnZlcjo6ZmlyZUFjdGl2YXRlRXZlbnQoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikKIHsKLSAg
ICBhdXRvIGNvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciA9IHdvcmtlci5jb250ZXh0Q29ubmVj
dGlvbklkZW50aWZpZXIoKTsKLSAgICBpZiAoIWNvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcikg
ewotICAgICAgICBMT0dfRVJST1IoIlJlcXVlc3QgdG8gZmlyZSBpbnN0YWxsIGV2ZW50IG9uIGEg
d29ya2VyIHdob3NlIGNvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciBpcyBpbnZhbGlkIik7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9ySWRlbnRpZmllcigqY29udGV4dENvbm5l
Y3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIWNvbm5lY3Rpb24pIHsKKyAgICBhdXRvKiBjb250
ZXh0Q29ubmVjdGlvbiA9IHdvcmtlci5jb250ZXh0Q29ubmVjdGlvbigpOworICAgIGlmICghY29u
dGV4dENvbm5lY3Rpb24pIHsKICAgICAgICAgTE9HX0VSUk9SKCJSZXF1ZXN0IHRvIGZpcmUgaW5z
dGFsbCBldmVudCBvbiBhIHdvcmtlciB3aG9zZSBjb250ZXh0IGNvbm5lY3Rpb24gZG9lcyBub3Qg
ZXhpc3QiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbm5lY3Rpb24tPmZpcmVB
Y3RpdmF0ZUV2ZW50KHdvcmtlci5pZGVudGlmaWVyKCkpOworICAgIGNvbnRleHRDb25uZWN0aW9u
LT5maXJlQWN0aXZhdGVFdmVudCh3b3JrZXIuaWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBTV1Nl
cnZlcjo6cmVnaXN0ZXJDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggNWYy
NzA0N2U2OWI0ZDBhM2EwZDIyNjk5NmU3Mzc5NDE1MGFjMmZjZi4uNDA2MjhjZjA2OWIwOWUwY2Nl
YmQ1YTM5NGRjMGMxM2YwNTIxMmEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtMTU0LDcgKzE1NCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Sm9iRGF0YUlkZW50aWZpZXI+JiwgU1dTZXJ2ZXJXb3JrZXImLCBib29sIHdhc1N1Y2Nlc3NmdWwp
OwogICAgIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbihTV1NlcnZlcldvcmtlciYpOwogICAgIHZv
aWQgd29ya2VyQ29udGV4dFRlcm1pbmF0ZWQoU1dTZXJ2ZXJXb3JrZXImKTsKLSAgICB2b2lkIG1h
dGNoQWxsKFNXU2VydmVyV29ya2VyJiwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0
aW9ucyYsIFNlcnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayYmKTsKKyAgICB2b2lk
IG1hdGNoQWxsKFNXU2VydmVyV29ya2VyJiwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5
T3B0aW9ucyYsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayYpOwog
ICAgIHZvaWQgY2xhaW0oU1dTZXJ2ZXJXb3JrZXImKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoKTsKQEAgLTE2NCw3ICsxNjQsNyBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnQoQ2xpZW50T3JpZ2luJiYsIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+Jik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBD
bGllbnRPcmlnaW4mLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcik7CiAKLSAgICB1c2lu
ZyBSdW5TZXJ2aWNlV29ya2VyQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCwgU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik+OworICAgIHVzaW5nIFJ1blNlcnZpY2VXb3JrZXJD
YWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChib29sLCBTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24qKT47CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBydW5TZXJ2aWNlV29ya2VySWZOZWNl
c3NhcnkoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJ1blNlcnZpY2VXb3JrZXJDYWxsYmFjayYm
KTsKIAogICAgIHZvaWQgcmVzb2x2ZVJlZ2lzdHJhdGlvblJlYWR5UmVxdWVzdHMoU1dTZXJ2ZXJS
ZWdpc3RyYXRpb24mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApp
bmRleCBiMjNhZjFjNzk1NmQ4Yjc2YWFmMTljNTcxMTUwZDkwMGU4ZjhhZDUzLi4xN2Y1YzI0NjIy
ZDU4YmE3MTU5YzJjY2Y0ZWNhOTA4NDc2NDA2NGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uY3BwCkBAIC0xMTEsMTQgKzExMSwxNCBAQCB2b2lkIFNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6d29ya2VyVGVybWluYXRlZChTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzZXJ2aQogdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZpbmRDbGllbnRCeUlk
ZW50aWZpZXIodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
ciBjbGllbnRJZCkKIHsKICAgICBpZiAoYXV0byogd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4
aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpCi0gICAg
ICAgIGdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKS0+ZmluZENsaWVudEJ5SWRlbnRp
ZmllckNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgd29ya2VyLT5maW5kQ2xpZW50QnlJZGVu
dGlmaWVyKGNsaWVudElkKSwgZmFsc2UpOworICAgICAgICB3b3JrZXItPmNvbnRleHRDb25uZWN0
aW9uKCktPmZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIs
IHdvcmtlci0+ZmluZENsaWVudEJ5SWRlbnRpZmllcihjbGllbnRJZCksIGZhbHNlKTsKIH0KIAog
dm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1hdGNoQWxsKHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYgb3B0aW9ucykKIHsK
ICAgICBpZiAoYXV0byogd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9y
SWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpIHsKLSAgICAgICAgd29ya2VyLT5t
YXRjaEFsbChvcHRpb25zLCBbcmVxdWVzdElkZW50aWZpZXJdIChhdXRvJiYgZGF0YSkgewotICAg
ICAgICAgICAgZ2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpLT5tYXRjaEFsbENvbXBs
ZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgZGF0YSk7CisgICAgICAgIHdvcmtlci0+bWF0Y2hBbGwo
b3B0aW9ucywgWyZdIChhdXRvJiYgZGF0YSkgeworICAgICAgICAgICAgd29ya2VyLT5jb250ZXh0
Q29ubmVjdGlvbigpLT5tYXRjaEFsbENvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgZGF0YSk7
CiAgICAgICAgIH0pOwogICAgIH0KIH0KQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIFNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6Y2xhaW0odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFNl
cnZpY2VXb3JrZQogewogICAgIGlmIChhdXRvKiB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhp
c3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkgewogICAg
ICAgICB3b3JrZXItPmNsYWltKCk7Ci0gICAgICAgIGdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24oKS0+Y2xhaW1Db21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICB3b3Jr
ZXItPmNvbnRleHRDb25uZWN0aW9uKCktPmNsYWltQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVy
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKaW5kZXggOTY4ODExYzkwZTBhYzg4YjljZTM4
M2YwYmY5ODg1MDUxYjQ3YWIwNC4uYjAyNzlmOGU5N2Y2Y2I4ZjQwMzc4ZmZkMjFjYzI5NDc4NzFi
M2VjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlcldvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlcldvcmtlci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1zdGF0aWMgSGFzaE1hcDxTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU1dTZXJ2
ZXJXb3JrZXIqPiYgYWxsV29ya2VycygpCitIYXNoTWFwPFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBTV1NlcnZlcldvcmtlcio+JiBTV1NlcnZlcldvcmtlcjo6YWxsV29ya2VycygpCiB7CiAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNX
U2VydmVyV29ya2VyKj4+IHdvcmtlcnM7CiAgICAgcmV0dXJuIHdvcmtlcnM7CkBAIC05MCw2ICs5
MCwxNCBAQCBjb25zdCBDbGllbnRPcmlnaW4mIFNXU2VydmVyV29ya2VyOjpvcmlnaW4oKSBjb25z
dAogICAgIHJldHVybiAqbV9vcmlnaW47CiB9CiAKK1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
biogU1dTZXJ2ZXJXb3JrZXI6OmNvbnRleHRDb25uZWN0aW9uKCkKK3sKKyAgICBpZiAoIW1fY29u
dGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IHJldHVybiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Gb3JJZGVudGlm
aWVyKCptX2NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcik7Cit9CisKIHZvaWQgU1dTZXJ2ZXJX
b3JrZXI6OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2Vy
dmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYgam9iRGF0YUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkKIHsKICAgICBtX3NlcnZlci5zY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFy
dChqb2JEYXRhSWRlbnRpZmllciwgKnRoaXMsIG1lc3NhZ2UpOwpAQCAtMTIwLDkgKzEyOCw5IEBA
IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNXU2VydmVyV29ya2VyOjpm
aW5kQ2xpZW50QnlJZGVudGlmaWVyKGNvCiAgICAgcmV0dXJuIG1fc2VydmVyLnNlcnZpY2VXb3Jr
ZXJDbGllbnRXaXRoT3JpZ2luQnlJRChvcmlnaW4oKSwgY2xpZW50SWQpOwogfQogCi12b2lkIFNX
U2VydmVyV29ya2VyOjptYXRjaEFsbChjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRp
b25zJiBvcHRpb25zLCBTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3ZvaWQgU1dTZXJ2ZXJXb3JrZXI6Om1hdGNoQWxsKGNvbnN0IFNlcnZpY2VXb3JrZXJD
bGllbnRRdWVyeU9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRzTWF0
Y2hBbGxDYWxsYmFjayYgY2FsbGJhY2spCiB7Ci0gICAgcmV0dXJuIG1fc2VydmVyLm1hdGNoQWxs
KCp0aGlzLCBvcHRpb25zLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgcmV0dXJuIG1fc2VydmVy
Lm1hdGNoQWxsKCp0aGlzLCBvcHRpb25zLCBjYWxsYmFjayk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXJX
b3JrZXI6OmNsYWltKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAppbmRleCA0ZDg0YmE5NTU1N2Q5NWJiMzU4MmE5M2Mx
ODNlYmNlZThlODllY2IxLi4yOGEwZDA5YmNlNTQzYjgzM2U0ZmQzYTk4MDg4ZWI4YmVjMjlhZDI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlcldvcmtlci5oCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0
cnVjdCBDbGllbnRPcmlnaW47CiBjbGFzcyBTV1NlcnZlcjsKIGNsYXNzIFNXU2VydmVyUmVnaXN0
cmF0aW9uOworY2xhc3MgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOwogc3RydWN0IFNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhOwogc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
Owogc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnM7CkBAIC03OCw3ICs3OSw2
IEBAIHB1YmxpYzoKIAogICAgIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX2RhdGEuaWRlbnRpZmllcjsgfQogCi0gICAgc3RkOjpvcHRpb25hbDxT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyPiBjb250ZXh0Q29ubmVjdGlvbklk
ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcjsg
fQogICAgIHZvaWQgc2V0Q29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKHN0ZDo6b3B0aW9uYWw8
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcj4gaWRlbnRpZmllcikgeyBtX2Nv
bnRleHRDb25uZWN0aW9uSWRlbnRpZmllciA9IGlkZW50aWZpZXI7IH0KIAogICAgIFNlcnZpY2VX
b3JrZXJTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5zdGF0ZTsgfQpAQCAtOTMs
MTggKzkzLDIxIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oKTsKICAg
ICB2b2lkIGNvbnRleHRUZXJtaW5hdGVkKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRp
b25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gZmluZENsaWVudEJ5SWRlbnRpZmllcihjb25z
dCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYpIGNvbnN0OwotICAgIHZvaWQgbWF0Y2hB
bGwoY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYsIFNlcnZpY2VXb3JrZXJD
bGllbnRzTWF0Y2hBbGxDYWxsYmFjayYmKTsKKyAgICB2b2lkIG1hdGNoQWxsKGNvbnN0IFNlcnZp
Y2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50c01h
dGNoQWxsQ2FsbGJhY2smKTsKICAgICB2b2lkIGNsYWltKCk7CiAKICAgICB2b2lkIHNraXBXYWl0
aW5nKCk7CiAgICAgYm9vbCBpc1NraXBXYWl0aW5nRmxhZ1NldCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNTa2lwV2FpdGluZ0ZsYWdTZXQ7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTV1Nl
cnZlcldvcmtlciogZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKTsKKyAgICBzdGF0aWMgSGFzaE1hcDxTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU1dT
ZXJ2ZXJXb3JrZXIqPiYgYWxsV29ya2VycygpOwogCiAgICAgY29uc3QgU2VydmljZVdvcmtlckRh
dGEmIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KICAgICBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEgY29udGV4dERhdGEoKSBjb25zdDsKICAgICBjb25zdCBDbGllbnRPcmlnaW4mIG9y
aWdpbigpIGNvbnN0OwogCisgICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uKiBjb250ZXh0Q29ubmVjdGlvbigpOworCiBwcml2YXRlOgogICAgIFNXU2VydmVyV29y
a2VyKFNXU2VydmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBzdGQ6Om9wdGlvbmFsPFNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXI+LCBjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmIHNjcmlwdCwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwg
IFdvcmtlclR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCBhNTFkOTc3Yzc5NGQ1OGVkYmQ4NTQwNmY5NWZi
MzY3ZmJhNTE5MGQzLi5mNDQ0ODQ1YzFjOTRmMWEyNjM1YmU0YWQ4MzIyZjY5ZjlmNDFlZDc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMTU0LDEzICsxNTQs
MTQgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2godWludDY0X3QgZmV0
Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmUKICAgICAgICAgaWYgKCFTdG9yYWdlUHJvY2Vz
czo6c2luZ2xldG9uKCkuZ2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpKQogICAgICAg
ICAgICAgU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLmNyZWF0ZVNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24oc2VydmVyKCkuc2Vzc2lvbklEKCkpOwogCi0gICAgICAgIHNlcnZlcigpLnJ1blNl
cnZpY2VXb3JrZXJJZk5lY2Vzc2FyeShzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgW3dlYWtUaGlz
ID0gV1RGTW92ZSh3ZWFrVGhpcyksIHRoaXMsIGZldGNoSWRlbnRpZmllciwgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zID0gV1RGTW92
ZShvcHRpb25zKSwgZm9ybURhdGEgPSBXVEZNb3ZlKGZvcm1EYXRhKSwgcmVmZXJyZXIgPSBXVEZN
b3ZlKHJlZmVycmVyKV0oYm9vbCBzdWNjZXNzLCBhdXRvJiBjb250ZXh0Q29ubmVjdGlvbikgewor
ICAgICAgICBzZXJ2ZXIoKS5ydW5TZXJ2aWNlV29ya2VySWZOZWNlc3Nhcnkoc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCB0aGlzLCBmZXRjaElk
ZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1
ZXN0KSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9ucyksIGZvcm1EYXRhID0gV1RGTW92ZShmb3Jt
RGF0YSksIHJlZmVycmVyID0gV1RGTW92ZShyZWZlcnJlcildKGJvb2wgc3VjY2VzcywgYXV0byog
Y29udGV4dENvbm5lY3Rpb24pIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBpZiAoc3VjY2VzcykgewogICAgICAgICAg
ICAgICAgIFNXU0VSVkVSQ09OTkVDVElPTl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydEZl
dGNoOiBTdGFydGluZyBmZXRjaCAlbGx1IHZpYSBzZXJ2aWNlIHdvcmtlciAlbGx1IiwgZmV0Y2hJ
ZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKLSAgICAgICAg
ICAgICAgICBzZW5kVG9Db250ZXh0UHJvY2Vzcyhjb250ZXh0Q29ubmVjdGlvbiwgTWVzc2FnZXM6
OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTdGFydEZldGNoIHsgdGhpcy0+aWRlbnRp
ZmllcigpLCBmZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCByZXF1ZXN0
LCBvcHRpb25zLCBmb3JtRGF0YSwgcmVmZXJyZXIgfSk7CisgICAgICAgICAgICAgICAgQVNTRVJU
KGNvbnRleHRDb25uZWN0aW9uKTsKKyAgICAgICAgICAgICAgICBzZW5kVG9Db250ZXh0UHJvY2Vz
cygqY29udGV4dENvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6U3RhcnRGZXRjaCB7IHRoaXMtPmlkZW50aWZpZXIoKSwgZmV0Y2hJZGVudGlmaWVyLCBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucywgZm9ybURhdGEsIHJlZmVy
cmVyIH0pOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBTV1NFUlZFUkNP
Tk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRGZXRjaDogZmV0Y2hJ
ZGVudGlmaWVyOiAlbGx1IC0+IERpZE5vdEhhbmRsZSBiZWNhdXNlIGZhaWxlZCB0byBydW4gc2Vy
dmljZSB3b3JrZXIiLCBmZXRjaElkZW50aWZpZXIpOwogICAgICAgICAgICAgICAgIG1fY29udGVu
dENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlk
Tm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKQEAgLTE5OCw5ICsxOTksMTEgQEAgdm9p
ZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIGQKICAgICAgICAgU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigp
LmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oc2VydmVyKCkuc2Vzc2lvbklEKCkpOwog
CiAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGlzIHNwZWNpZmljIHdvcmtlciBjYW5ub3QgYmUgcmUt
cnVuIChlLmcuIGl0cyByZWdpc3RyYXRpb24gaGFzIGJlZW4gcmVtb3ZlZCkKLSAgICBzZXJ2ZXIo
KS5ydW5TZXJ2aWNlV29ya2VySWZOZWNlc3NhcnkoZGVzdGluYXRpb25JZGVudGlmaWVyLCBbZGVz
dGluYXRpb25JZGVudGlmaWVyLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgc291cmNlRGF0
YSA9IFdURk1vdmUoKnNvdXJjZURhdGEpXShib29sIHN1Y2Nlc3MsIGF1dG8mIGNvbnRleHRDb25u
ZWN0aW9uKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKHN1Y2Nlc3MpCi0gICAgICAgICAgICBzZW5k
VG9Db250ZXh0UHJvY2Vzcyhjb250ZXh0Q29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlciB7IGRlc3RpbmF0
aW9uSWRlbnRpZmllciwgV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShzb3VyY2VEYXRhKSB9KTsK
KyAgICBzZXJ2ZXIoKS5ydW5TZXJ2aWNlV29ya2VySWZOZWNlc3NhcnkoZGVzdGluYXRpb25JZGVu
dGlmaWVyLCBbZGVzdGluYXRpb25JZGVudGlmaWVyLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdl
KSwgc291cmNlRGF0YSA9IFdURk1vdmUoKnNvdXJjZURhdGEpXShib29sIHN1Y2Nlc3MsIGF1dG8q
IGNvbnRleHRDb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKKyAg
ICAgICAgICAgIEFTU0VSVChjb250ZXh0Q29ubmVjdGlvbik7CisgICAgICAgICAgICBzZW5kVG9D
b250ZXh0UHJvY2VzcygqY29udGV4dENvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIgeyBkZXN0aW5hdGlv
bklkZW50aWZpZXIsIFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoc291cmNlRGF0YSkgfSk7Cisg
ICAgICAgIH0KICAgICB9KTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335779</attachid>
            <date>2018-03-14 10:35:13 -0700</date>
            <delta_ts>2018-03-14 14:37:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183626-20180314103512.patch</filename>
            <type>text/plain</type>
            <size>23076</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzE0MzRiNWU2ZGNlYThh
MjJhNGRiZGU2YzE3Nzg1ZmI5ODE5MDlmYy4uNTc2NmQzMTQyOTY4NDhkN2M3ZDk0NjEyZmJlMDQ1
NWMxZWJkNWIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE4LTAzLTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24o
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNjI2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNl
IHVzZSBvZiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24oKSBhcyB3ZSBhcmUgbW92aW5nIHRvd2FyZHMKKyAgICAgICAgaGF2aW5nIG11
bHRpcGxlIGNvbnRleHQgY29ubmVjdGlvbnMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBl
eHBlY3RlZCBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjptYXRjaEFsbCk6
CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNy
ZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJ1blNlcnZpY2VXb3JrZXJJZk5l
Y2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6cnVuU2VydmljZVdvcmtlcik6
CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6dGVybWluYXRlV29ya2VySW50ZXJuYWwpOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6Om1hcmtBbGxXb3JrZXJzQXNUZXJtaW5hdGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp3b3JrZXJDb250ZXh0VGVybWluYXRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6ZmlyZUluc3RhbGxFdmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcjo6ZmlyZUFjdGl2YXRlRXZlbnQpOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZpbmRDbGllbnRCeUlkZW50aWZpZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptYXRjaEFsbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNsYWltKToKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpjb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6bWF0Y2hBbGwpOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaDoKKwogMjAxOC0wMy0xNCAgVGltIEhvcnRv
biAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdGhlIGJ1aWxkIGFm
dGVyIHIyMjk1NjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDBlODM5YTBiY2IwYjU1ZDMxZGRiNGYxNjZmZmU1M2Rj
YjRlOTgyYy4uNTEyM2RjOWM3NmRhZjBhN2RlMDBmN2Y2Y2E1OGZhNWY0MGVkZjE4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOC0wMy0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjpnbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzYyNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpnbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkgYXMgd2Ug
YXJlIG1vdmluZworICAgICAgICB0b3dhcmRzIGhhdmluZyBtdWx0aXBsZSBjb250ZXh0IGNvbm5l
Y3Rpb25zLgorCisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rp
b246OnN0YXJ0RmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246
OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKToKKwogMjAxOC0wMy0xNCAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdGhlIGJ1aWxkIGFmdGVy
IHIyMjk1NjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5jcHAKaW5kZXggMzNhMzNhYzdjYWJlNmIyYTllMWZhYTBkZjExZDQzYWVjOTkzMDg4
Ny4uZjhjOGM3NjkwMDAzNmIyODRiOTI1OTNiNGZjMDU5MjVmMWIwYTk5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTQx
MCw3ICs0MTAsNyBAQCB2b2lkIFNXU2VydmVyOjpkaWRGaW5pc2hBY3RpdmF0aW9uKFNXU2VydmVy
V29ya2VyJiB3b3JrZXIpCiB9CiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29y
a2VyLyNjbGllbnRzLWdldGFsbAotdm9pZCBTV1NlcnZlcjo6bWF0Y2hBbGwoU1dTZXJ2ZXJXb3Jr
ZXImIHdvcmtlciwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYgb3B0aW9u
cywgU2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lk
IFNXU2VydmVyOjptYXRjaEFsbChTV1NlcnZlcldvcmtlciYgd29ya2VyLCBjb25zdCBTZXJ2aWNl
V29ya2VyQ2xpZW50UXVlcnlPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xp
ZW50c01hdGNoQWxsQ2FsbGJhY2smIGNhbGxiYWNrKQogewogICAgIC8vIEZJWE1FOiBTdXBwb3J0
IHJlc2VydmVkIGNsaWVudCBmaWx0ZXJpbmcuCiAgICAgLy8gRklYTUU6IFN1cHBvcnQgV2luZG93
Q2xpZW50IGFkZGl0aW9uYWwgcHJvcGVydGllcy4KQEAgLTUxMyw2ICs1MTMsMTAgQEAgdm9pZCBT
V1NlcnZlcjo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoKQogICAgIGF1dG8qIGNv
bm5lY3Rpb24gPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24oKTsKICAgICBBU1NFUlQoY29ubmVjdGlvbik7CiAKKyAgICAvLyBGSVhN
RTogVGhpcyB3aWxsIG5lZWQgdG8gdXBkYXRlIG9ubHkgd29ya2VycyB1c2luZyB0aGlzIGNvbm5l
Y3Rpb24gb25jZSB3ZSB1c2Ugc2V2ZXJhbCBjb250ZXh0IGNvbm5lY3Rpb25zLgorICAgIGZvciAo
YXV0byogd29ya2VyIDogU1dTZXJ2ZXJXb3JrZXI6OmFsbFdvcmtlcnMoKS52YWx1ZXMoKSkKKyAg
ICAgICAgd29ya2VyLT5zZXRDb250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIoY29ubmVjdGlvbi0+
aWRlbnRpZmllcigpKTsKKwogICAgIGF1dG8gcGVuZGluZ0NvbnRleHREYXRhcyA9IFdURk1vdmUo
bV9wZW5kaW5nQ29udGV4dERhdGFzKTsKICAgICBmb3IgKGF1dG8mIGRhdGEgOiBwZW5kaW5nQ29u
dGV4dERhdGFzKQogICAgICAgICBpbnN0YWxsQ29udGV4dERhdGEoZGF0YSk7CkBAIC01MjEsNyAr
NTI1LDcgQEAgdm9pZCBTV1NlcnZlcjo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQo
KQogICAgIGZvciAoYXV0byYgaXRlbSA6IHNlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0cykgewogICAg
ICAgICBib29sIHN1Y2Nlc3MgPSBydW5TZXJ2aWNlV29ya2VyKGl0ZW0ua2V5KTsKICAgICAgICAg
Zm9yIChhdXRvJiBjYWxsYmFjayA6IGl0ZW0udmFsdWUpCi0gICAgICAgICAgICBjYWxsYmFjayhz
dWNjZXNzLCAqY29ubmVjdGlvbik7CisgICAgICAgICAgICBjYWxsYmFjayhzdWNjZXNzLCBjb25u
ZWN0aW9uKTsKICAgICB9CiB9CiAKQEAgLTU1NCwyMyArNTU4LDI3IEBAIHZvaWQgU1dTZXJ2ZXI6
Omluc3RhbGxDb250ZXh0RGF0YShjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEp
CiAKIHZvaWQgU1dTZXJ2ZXI6OnJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeShTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBSdW5TZXJ2aWNlV29ya2VyQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKLSAgICBhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjpnbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7Ci0gICAgaWYgKGF1dG8qIHdv
cmtlciA9IG1fcnVubmluZ09yVGVybWluYXRpbmdXb3JrZXJzLmdldChpZGVudGlmaWVyKSkgewot
ICAgICAgICBpZiAod29ya2VyLT5pc1J1bm5pbmcoKSkgewotICAgICAgICAgICAgQVNTRVJUKGNv
bm5lY3Rpb24pOwotICAgICAgICAgICAgY2FsbGJhY2sodHJ1ZSwgKmNvbm5lY3Rpb24pOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgYXV0byogd29ya2VyID0gd29ya2VyQnlJ
RChpZGVudGlmaWVyKTsKKyAgICBpZiAoIXdvcmtlcikgeworICAgICAgICBjYWxsYmFjayhmYWxz
ZSwgbnVsbHB0cik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIWNvbm5lY3Rp
b24pIHsKKyAgICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IHdvcmtlci0+Y29udGV4dENvbm5l
Y3Rpb24oKTsKKyAgICBpZiAod29ya2VyLT5pc1J1bm5pbmcoKSkgeworICAgICAgICBBU1NFUlQo
Y29udGV4dENvbm5lY3Rpb24pOworICAgICAgICBjYWxsYmFjayh0cnVlLCBjb250ZXh0Q29ubmVj
dGlvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWNvbnRleHRDb25uZWN0
aW9uKSB7CiAgICAgICAgIG1fc2VydmljZVdvcmtlclJ1blJlcXVlc3RzLmVuc3VyZShpZGVudGlm
aWVyLCBbJl0gewogICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxSdW5TZXJ2aWNlV29ya2VyQ2Fs
bGJhY2s+IHsgfTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChXVEZNb3ZlKGNh
bGxiYWNrKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjYWxsYmFjayhydW5TZXJ2
aWNlV29ya2VyKGlkZW50aWZpZXIpLCAqY29ubmVjdGlvbik7CisgICAgY2FsbGJhY2socnVuU2Vy
dmljZVdvcmtlcihpZGVudGlmaWVyKSwgY29udGV4dENvbm5lY3Rpb24pOwogfQogCiBib29sIFNX
U2VydmVyOjpydW5TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCkBAIC01ODksMTQgKzU5NywxMCBAQCBib29sIFNXU2VydmVyOjpydW5TZXJ2aWNlV29ya2Vy
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAKICAgICB3b3JrZXItPnNldFN0
YXRlKFNXU2VydmVyV29ya2VyOjpTdGF0ZTo6UnVubmluZyk7CiAKLSAgICBhdXRvKiBjb25uZWN0
aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpnbG9iYWxTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKCk7Ci0gICAgQVNTRVJUKGNvbm5lY3Rpb24pOwotCi0gICAgLy8gV2hlbiByZS1y
dW5uaW5nIGEgc2VydmljZSB3b3JrZXIgYWZ0ZXIgYSBjb250ZXh0IHByb2Nlc3MgY3Jhc2gsIHRo
ZSBjb25uZWN0aW9uIGlkZW50aWZpZXIgbWF5IGhhdmUgY2hhbmdlZAotICAgIC8vIHNvIHdlIHVw
ZGF0ZSBpdCBoZXJlLgotICAgIHdvcmtlci0+c2V0Q29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVy
KGNvbm5lY3Rpb24tPmlkZW50aWZpZXIoKSk7CisgICAgYXV0byogY29udGV4dENvbm5lY3Rpb24g
PSB3b3JrZXItPmNvbnRleHRDb25uZWN0aW9uKCk7CisgICAgQVNTRVJUKGNvbnRleHRDb25uZWN0
aW9uKTsKIAotICAgIGNvbm5lY3Rpb24tPmluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dCh3b3Jr
ZXItPmNvbnRleHREYXRhKCksIG1fc2Vzc2lvbklEKTsKKyAgICBjb250ZXh0Q29ubmVjdGlvbi0+
aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KHdvcmtlci0+Y29udGV4dERhdGEoKSwgbV9zZXNz
aW9uSUQpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC02MjAsMTcgKzYyNCw5IEBAIHZvaWQg
U1dTZXJ2ZXI6OnRlcm1pbmF0ZVdvcmtlckludGVybmFsKFNXU2VydmVyV29ya2VyJiB3b3JrZXIs
IFRlcm1pbmF0aW9uTW9kZSBtCiAKICAgICB3b3JrZXIuc2V0U3RhdGUoU1dTZXJ2ZXJXb3JrZXI6
OlN0YXRlOjpUZXJtaW5hdGluZyk7CiAKLSAgICBhdXRvIGNvbnRleHRDb25uZWN0aW9uSWRlbnRp
ZmllciA9IHdvcmtlci5jb250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIoKTsKLSAgICBBU1NFUlQo
Y29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIWNvbnRleHRDb25uZWN0aW9u
SWRlbnRpZmllcikgewotICAgICAgICBMT0dfRVJST1IoIlJlcXVlc3QgdG8gdGVybWluYXRlIGEg
d29ya2VyIHdob3NlIGNvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciBpcyBpbnZhbGlkIik7Ci0g
ICAgICAgIHdvcmtlckNvbnRleHRUZXJtaW5hdGVkKHdvcmtlcik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjpjb25uZWN0aW9uRm9ySWRlbnRpZmllcigqY29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVy
KTsKLSAgICBBU1NFUlQoY29ubmVjdGlvbik7Ci0gICAgaWYgKCFjb25uZWN0aW9uKSB7CisgICAg
YXV0byogY29udGV4dENvbm5lY3Rpb24gPSB3b3JrZXIuY29udGV4dENvbm5lY3Rpb24oKTsKKyAg
ICBBU1NFUlQoY29udGV4dENvbm5lY3Rpb24pOworICAgIGlmICghY29udGV4dENvbm5lY3Rpb24p
IHsKICAgICAgICAgTE9HX0VSUk9SKCJSZXF1ZXN0IHRvIHRlcm1pbmF0ZSBhIHdvcmtlciB3aG9z
ZSBjb250ZXh0IGNvbm5lY3Rpb24gZG9lcyBub3QgZXhpc3QiKTsKICAgICAgICAgd29ya2VyQ29u
dGV4dFRlcm1pbmF0ZWQod29ya2VyKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjM4LDI0ICs2MzQs
MjYgQEAgdm9pZCBTV1NlcnZlcjo6dGVybWluYXRlV29ya2VySW50ZXJuYWwoU1dTZXJ2ZXJXb3Jr
ZXImIHdvcmtlciwgVGVybWluYXRpb25Nb2RlIG0KIAogICAgIHN3aXRjaCAobW9kZSkgewogICAg
IGNhc2UgQXN5bmNocm9ub3VzOgotICAgICAgICBjb25uZWN0aW9uLT50ZXJtaW5hdGVXb3JrZXIo
d29ya2VyLmlkZW50aWZpZXIoKSk7CisgICAgICAgIGNvbnRleHRDb25uZWN0aW9uLT50ZXJtaW5h
dGVXb3JrZXIod29ya2VyLmlkZW50aWZpZXIoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
U3luY2hyb25vdXM6Ci0gICAgICAgIGNvbm5lY3Rpb24tPnN5bmNUZXJtaW5hdGVXb3JrZXIod29y
a2VyLmlkZW50aWZpZXIoKSk7CisgICAgICAgIGNvbnRleHRDb25uZWN0aW9uLT5zeW5jVGVybWlu
YXRlV29ya2VyKHdvcmtlci5pZGVudGlmaWVyKCkpOwogICAgICAgICBicmVhazsKICAgICB9Owog
fQogCiB2b2lkIFNXU2VydmVyOjptYXJrQWxsV29ya2Vyc0FzVGVybWluYXRlZCgpCiB7Ci0gICAg
d2hpbGUgKCFtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy5pc0VtcHR5KCkpCi0gICAgICAg
IHdvcmtlckNvbnRleHRUZXJtaW5hdGVkKG1fcnVubmluZ09yVGVybWluYXRpbmdXb3JrZXJzLmJl
Z2luKCktPnZhbHVlKTsKKyAgICB3aGlsZSAoIW1fcnVubmluZ09yVGVybWluYXRpbmdXb3JrZXJz
LmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvJiB3b3JrZXIgPSBtX3J1bm5pbmdPclRlcm1pbmF0
aW5nV29ya2Vycy5iZWdpbigpLT52YWx1ZTsKKyAgICAgICAgd29ya2VyLT5zZXRDb250ZXh0Q29u
bmVjdGlvbklkZW50aWZpZXIoc3RkOjpudWxsb3B0KTsKKyAgICAgICAgd29ya2VyQ29udGV4dFRl
cm1pbmF0ZWQod29ya2VyKTsKKyAgICB9CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OndvcmtlckNvbnRl
eHRUZXJtaW5hdGVkKFNXU2VydmVyV29ya2VyJiB3b3JrZXIpCiB7CiAgICAgd29ya2VyLnNldFN0
YXRlKFNXU2VydmVyV29ya2VyOjpTdGF0ZTo6Tm90UnVubmluZyk7Ci0gICAgd29ya2VyLnNldENv
bnRleHRDb25uZWN0aW9uSWRlbnRpZmllcihzdGQ6Om51bGxvcHQpOwogCiAgICAgaWYgKGF1dG8q
IGpvYlF1ZXVlID0gbV9qb2JRdWV1ZXMuZ2V0KHdvcmtlci5yZWdpc3RyYXRpb25LZXkoKSkpCiAg
ICAgICAgIGpvYlF1ZXVlLT5jYW5jZWxKb2JzRnJvbVNlcnZpY2VXb3JrZXIod29ya2VyLmlkZW50
aWZpZXIoKSk7CkBAIC02NjgsMzUgKzY2NiwyNCBAQCB2b2lkIFNXU2VydmVyOjp3b3JrZXJDb250
ZXh0VGVybWluYXRlZChTV1NlcnZlcldvcmtlciYgd29ya2VyKQogCiB2b2lkIFNXU2VydmVyOjpm
aXJlSW5zdGFsbEV2ZW50KFNXU2VydmVyV29ya2VyJiB3b3JrZXIpCiB7Ci0gICAgYXV0byBjb250
ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgPSB3b3JrZXIuY29udGV4dENvbm5lY3Rpb25JZGVudGlm
aWVyKCk7Ci0gICAgaWYgKCFjb250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIpIHsKLSAgICAgICAg
TE9HX0VSUk9SKCJSZXF1ZXN0IHRvIGZpcmUgaW5zdGFsbCBldmVudCBvbiBhIHdvcmtlciB3aG9z
ZSBjb250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgaXMgaW52YWxpZCIpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OmNvbm5lY3Rpb25Gb3JJZGVudGlmaWVyKCpjb250ZXh0Q29ubmVjdGlvbklkZW50aWZp
ZXIpOwotICAgIGlmICghY29ubmVjdGlvbikgeworICAgIGF1dG8qIGNvbnRleHRDb25uZWN0aW9u
ID0gd29ya2VyLmNvbnRleHRDb25uZWN0aW9uKCk7CisgICAgaWYgKCFjb250ZXh0Q29ubmVjdGlv
bikgewogICAgICAgICBMT0dfRVJST1IoIlJlcXVlc3QgdG8gZmlyZSBpbnN0YWxsIGV2ZW50IG9u
IGEgd29ya2VyIHdob3NlIGNvbnRleHQgY29ubmVjdGlvbiBkb2VzIG5vdCBleGlzdCIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29ubmVjdGlvbi0+ZmlyZUluc3RhbGxFdmVudCh3
b3JrZXIuaWRlbnRpZmllcigpKTsKKyAgICBjb250ZXh0Q29ubmVjdGlvbi0+ZmlyZUluc3RhbGxF
dmVudCh3b3JrZXIuaWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6ZmlyZUFjdGl2
YXRlRXZlbnQoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikKIHsKLSAgICBhdXRvIGNvbnRleHRDb25u
ZWN0aW9uSWRlbnRpZmllciA9IHdvcmtlci5jb250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIoKTsK
LSAgICBpZiAoIWNvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcikgewotICAgICAgICBMT0dfRVJS
T1IoIlJlcXVlc3QgdG8gZmlyZSBpbnN0YWxsIGV2ZW50IG9uIGEgd29ya2VyIHdob3NlIGNvbnRl
eHRDb25uZWN0aW9uSWRlbnRpZmllciBpcyBpbnZhbGlkIik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Ojpjb25uZWN0aW9uRm9ySWRlbnRpZmllcigqY29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKTsK
LSAgICBpZiAoIWNvbm5lY3Rpb24pIHsKKyAgICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IHdv
cmtlci5jb250ZXh0Q29ubmVjdGlvbigpOworICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJSZXF1ZXN0IHRvIGZpcmUgaW5zdGFsbCBldmVudCBvbiBhIHdv
cmtlciB3aG9zZSBjb250ZXh0IGNvbm5lY3Rpb24gZG9lcyBub3QgZXhpc3QiKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGNvbm5lY3Rpb24tPmZpcmVBY3RpdmF0ZUV2ZW50KHdvcmtl
ci5pZGVudGlmaWVyKCkpOworICAgIGNvbnRleHRDb25uZWN0aW9uLT5maXJlQWN0aXZhdGVFdmVu
dCh3b3JrZXIuaWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6cmVnaXN0ZXJDb25u
ZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggNWYyNzA0N2U2OWI0ZDBhM2EwZDIy
Njk5NmU3Mzc5NDE1MGFjMmZjZi4uNDA2MjhjZjA2OWIwOWUwY2NlYmQ1YTM5NGRjMGMxM2YwNTIx
MmEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuaApAQCAtMTU0LDcgKzE1NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZpbmlzaElu
c3RhbGwoY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+
JiwgU1dTZXJ2ZXJXb3JrZXImLCBib29sIHdhc1N1Y2Nlc3NmdWwpOwogICAgIHZvaWQgZGlkRmlu
aXNoQWN0aXZhdGlvbihTV1NlcnZlcldvcmtlciYpOwogICAgIHZvaWQgd29ya2VyQ29udGV4dFRl
cm1pbmF0ZWQoU1dTZXJ2ZXJXb3JrZXImKTsKLSAgICB2b2lkIG1hdGNoQWxsKFNXU2VydmVyV29y
a2VyJiwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYsIFNlcnZpY2VXb3Jr
ZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayYmKTsKKyAgICB2b2lkIG1hdGNoQWxsKFNXU2VydmVy
V29ya2VyJiwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYsIGNvbnN0IFNl
cnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayYpOwogICAgIHZvaWQgY2xhaW0oU1dT
ZXJ2ZXJXb3JrZXImKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbkNyZWF0ZWQoKTsKQEAgLTE2NCw3ICsxNjQsNyBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoQ2xpZW50T3JpZ2lu
JiYsIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBDbGllbnRPcmlnaW4mLCBTZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcik7CiAKLSAgICB1c2luZyBSdW5TZXJ2aWNlV29ya2Vy
Q2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCwgU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uJik+OworICAgIHVzaW5nIFJ1blNlcnZpY2VXb3JrZXJDYWxsYmFjayA9IFdURjo6RnVu
Y3Rpb248dm9pZChib29sLCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qKT47CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBydW5TZXJ2aWNlV29ya2VySWZOZWNlc3NhcnkoU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFJ1blNlcnZpY2VXb3JrZXJDYWxsYmFjayYmKTsKIAogICAgIHZvaWQgcmVz
b2x2ZVJlZ2lzdHJhdGlvblJlYWR5UmVxdWVzdHMoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCBiMjNhZjFjNzk1NmQ4
Yjc2YWFmMTljNTcxMTUwZDkwMGU4ZjhhZDUzLi4xN2Y1YzI0NjIyZDU4YmE3MTU5YzJjY2Y0ZWNh
OTA4NDc2NDA2NGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3Bw
CkBAIC0xMTEsMTQgKzExMSwxNCBAQCB2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
d29ya2VyVGVybWluYXRlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aQogdm9pZCBTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZpbmRDbGllbnRCeUlkZW50aWZpZXIodWludDY0X3Qg
cmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZCkKIHsKICAg
ICBpZiAoYXV0byogd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRl
bnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpCi0gICAgICAgIGdsb2JhbFNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24oKS0+ZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZChyZXF1
ZXN0SWRlbnRpZmllciwgd29ya2VyLT5maW5kQ2xpZW50QnlJZGVudGlmaWVyKGNsaWVudElkKSwg
ZmFsc2UpOworICAgICAgICB3b3JrZXItPmNvbnRleHRDb25uZWN0aW9uKCktPmZpbmRDbGllbnRC
eUlkZW50aWZpZXJDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHdvcmtlci0+ZmluZENsaWVu
dEJ5SWRlbnRpZmllcihjbGllbnRJZCksIGZhbHNlKTsKIH0KIAogdm9pZCBTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246Om1hdGNoQWxsKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU2Vydmlj
ZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoYXV0byogd29y
a2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNl
V29ya2VySWRlbnRpZmllcikpIHsKLSAgICAgICAgd29ya2VyLT5tYXRjaEFsbChvcHRpb25zLCBb
cmVxdWVzdElkZW50aWZpZXJdIChhdXRvJiYgZGF0YSkgewotICAgICAgICAgICAgZ2xvYmFsU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbigpLT5tYXRjaEFsbENvbXBsZXRlZChyZXF1ZXN0SWRlbnRp
ZmllciwgZGF0YSk7CisgICAgICAgIHdvcmtlci0+bWF0Y2hBbGwob3B0aW9ucywgWyZdIChhdXRv
JiYgZGF0YSkgeworICAgICAgICAgICAgd29ya2VyLT5jb250ZXh0Q29ubmVjdGlvbigpLT5tYXRj
aEFsbENvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgZGF0YSk7CiAgICAgICAgIH0pOwogICAg
IH0KIH0KQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6Y2xhaW0odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZQogewogICAg
IGlmIChhdXRvKiB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVu
dGlmaWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkgewogICAgICAgICB3b3JrZXItPmNsYWlt
KCk7Ci0gICAgICAgIGdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKS0+Y2xhaW1Db21w
bGV0ZWQocmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICB3b3JrZXItPmNvbnRleHRDb25uZWN0
aW9uKCktPmNsYWltQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
cldvcmtlci5jcHAKaW5kZXggOTY4ODExYzkwZTBhYzg4YjljZTM4M2YwYmY5ODg1MDUxYjQ3YWIw
NC4uYjAyNzlmOGU5N2Y2Y2I4ZjQwMzc4ZmZkMjFjYzI5NDc4NzFiM2VjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtl
ci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMg
SGFzaE1hcDxTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU1dTZXJ2ZXJXb3JrZXIqPiYgYWxsV29y
a2VycygpCitIYXNoTWFwPFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTV1NlcnZlcldvcmtlcio+
JiBTV1NlcnZlcldvcmtlcjo6YWxsV29ya2VycygpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEhhc2hNYXA8U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNXU2VydmVyV29ya2VyKj4+IHdv
cmtlcnM7CiAgICAgcmV0dXJuIHdvcmtlcnM7CkBAIC05MCw2ICs5MCwxNCBAQCBjb25zdCBDbGll
bnRPcmlnaW4mIFNXU2VydmVyV29ya2VyOjpvcmlnaW4oKSBjb25zdAogICAgIHJldHVybiAqbV9v
cmlnaW47CiB9CiAKK1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogU1dTZXJ2ZXJXb3JrZXI6
OmNvbnRleHRDb25uZWN0aW9uKCkKK3sKKyAgICBpZiAoIW1fY29udGV4dENvbm5lY3Rpb25JZGVu
dGlmaWVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Gb3JJZGVudGlmaWVyKCptX2NvbnRleHRDb25u
ZWN0aW9uSWRlbnRpZmllcik7Cit9CisKIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnNjcmlwdENvbnRl
eHRGYWlsZWRUb1N0YXJ0KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJ
ZGVudGlmaWVyPiYgam9iRGF0YUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsK
ICAgICBtX3NlcnZlci5zY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChqb2JEYXRhSWRlbnRpZmll
ciwgKnRoaXMsIG1lc3NhZ2UpOwpAQCAtMTIwLDkgKzEyOCw5IEBAIHN0ZDo6b3B0aW9uYWw8U2Vy
dmljZVdvcmtlckNsaWVudERhdGE+IFNXU2VydmVyV29ya2VyOjpmaW5kQ2xpZW50QnlJZGVudGlm
aWVyKGNvCiAgICAgcmV0dXJuIG1fc2VydmVyLnNlcnZpY2VXb3JrZXJDbGllbnRXaXRoT3JpZ2lu
QnlJRChvcmlnaW4oKSwgY2xpZW50SWQpOwogfQogCi12b2lkIFNXU2VydmVyV29ya2VyOjptYXRj
aEFsbChjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zJiBvcHRpb25zLCBTZXJ2
aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgU1dTZXJ2
ZXJXb3JrZXI6Om1hdGNoQWxsKGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMm
IG9wdGlvbnMsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayYgY2Fs
bGJhY2spCiB7Ci0gICAgcmV0dXJuIG1fc2VydmVyLm1hdGNoQWxsKCp0aGlzLCBvcHRpb25zLCBX
VEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgcmV0dXJuIG1fc2VydmVyLm1hdGNoQWxsKCp0aGlzLCBv
cHRpb25zLCBjYWxsYmFjayk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OmNsYWltKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuaAppbmRleCA0ZDg0YmE5NTU1N2Q5NWJiMzU4MmE5M2MxODNlYmNlZThlODllY2IxLi4y
OGEwZDA5YmNlNTQzYjgzM2U0ZmQzYTk4MDg4ZWI4YmVjMjlhZDI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBA
IC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBDbGllbnRPcmlnaW47
CiBjbGFzcyBTV1NlcnZlcjsKIGNsYXNzIFNXU2VydmVyUmVnaXN0cmF0aW9uOworY2xhc3MgU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOwogc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnREYXRh
Owogc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOwogc3RydWN0IFNlcnZpY2VX
b3JrZXJDbGllbnRRdWVyeU9wdGlvbnM7CkBAIC03OCw3ICs3OSw2IEBAIHB1YmxpYzoKIAogICAg
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGEuaWRlbnRpZmllcjsgfQogCi0gICAgc3RkOjpvcHRpb25hbDxTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25JZGVudGlmaWVyPiBjb250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcjsgfQogICAgIHZvaWQgc2V0Q29u
dGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKHN0ZDo6b3B0aW9uYWw8U1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uSWRlbnRpZmllcj4gaWRlbnRpZmllcikgeyBtX2NvbnRleHRDb25uZWN0aW9uSWRl
bnRpZmllciA9IGlkZW50aWZpZXI7IH0KIAogICAgIFNlcnZpY2VXb3JrZXJTdGF0ZSBzdGF0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5zdGF0ZTsgfQpAQCAtOTMsMTggKzkzLDIxIEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oKTsKICAgICB2b2lkIGNvbnRleHRUZXJt
aW5hdGVkKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YT4gZmluZENsaWVudEJ5SWRlbnRpZmllcihjb25zdCBTZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllciYpIGNvbnN0OwotICAgIHZvaWQgbWF0Y2hBbGwoY29uc3QgU2VydmljZVdv
cmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYsIFNlcnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxs
YmFjayYmKTsKKyAgICB2b2lkIG1hdGNoQWxsKGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVy
eU9wdGlvbnMmLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2smKTsK
ICAgICB2b2lkIGNsYWltKCk7CiAKICAgICB2b2lkIHNraXBXYWl0aW5nKCk7CiAgICAgYm9vbCBp
c1NraXBXYWl0aW5nRmxhZ1NldCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTa2lwV2FpdGluZ0ZsYWdT
ZXQ7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTV1NlcnZlcldvcmtlciogZXhpc3Rp
bmdXb3JrZXJGb3JJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBzdGF0
aWMgSGFzaE1hcDxTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU1dTZXJ2ZXJXb3JrZXIqPiYgYWxs
V29ya2VycygpOwogCiAgICAgY29uc3QgU2VydmljZVdvcmtlckRhdGEmIGRhdGEoKSBjb25zdCB7
IHJldHVybiBtX2RhdGE7IH0KICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgY29udGV4dERh
dGEoKSBjb25zdDsKICAgICBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbigpIGNvbnN0OwogCisg
ICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBjb250ZXh0Q29u
bmVjdGlvbigpOworCiBwcml2YXRlOgogICAgIFNXU2VydmVyV29ya2VyKFNXU2VydmVyJiwgU1dT
ZXJ2ZXJSZWdpc3RyYXRpb24mLCBzdGQ6Om9wdGlvbmFsPFNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbklkZW50aWZpZXI+LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3Qg
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgIFdvcmtlclR5cGUsIFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdl
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmNwcAppbmRleCBhNTFkOTc3Yzc5NGQ1OGVkYmQ4NTQwNmY5NWZiMzY3ZmJhNTE5MGQzLi45YTZl
YjM5ZWIyOGU1YTAyNzcxODdhZjQ4ZTk2YmJjZTMzMWFkZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMTU0LDEzICsxNTQsMTQgQEAgdm9pZCBXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2godWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBTZXJ2
aWNlV29ya2VyUmUKICAgICAgICAgaWYgKCFTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkuZ2xv
YmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpKQogICAgICAgICAgICAgU3RvcmFnZVByb2Nl
c3M6OnNpbmdsZXRvbigpLmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oc2VydmVyKCku
c2Vzc2lvbklEKCkpOwogCi0gICAgICAgIHNlcnZlcigpLnJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vz
c2FyeShzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhp
cyksIHRoaXMsIGZldGNoSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHJlcXVl
c3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25zKSwgZm9ybURh
dGEgPSBXVEZNb3ZlKGZvcm1EYXRhKSwgcmVmZXJyZXIgPSBXVEZNb3ZlKHJlZmVycmVyKV0oYm9v
bCBzdWNjZXNzLCBhdXRvJiBjb250ZXh0Q29ubmVjdGlvbikgeworICAgICAgICBzZXJ2ZXIoKS5y
dW5TZXJ2aWNlV29ya2VySWZOZWNlc3Nhcnkoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFt3ZWFr
VGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCB0aGlzLCBmZXRjaElkZW50aWZpZXIsIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucyA9IFdU
Rk1vdmUob3B0aW9ucyksIGZvcm1EYXRhID0gV1RGTW92ZShmb3JtRGF0YSksIHJlZmVycmVyID0g
V1RGTW92ZShyZWZlcnJlcildKGJvb2wgc3VjY2VzcywgYXV0byogY29udGV4dENvbm5lY3Rpb24p
IHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgICAgICBpZiAoc3VjY2VzcykgewogICAgICAgICAgICAgICAgIFNXU0VSVkVSQ09O
TkVDVElPTl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydEZldGNoOiBTdGFydGluZyBmZXRj
aCAlbGx1IHZpYSBzZXJ2aWNlIHdvcmtlciAlbGx1IiwgZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNl
V29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKLSAgICAgICAgICAgICAgICBzZW5kVG9Db250
ZXh0UHJvY2Vzcyhjb250ZXh0Q29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpTdGFydEZldGNoIHsgdGhpcy0+aWRlbnRpZmllcigpLCBmZXRjaElkZW50
aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRpb25zLCBmb3JtRGF0
YSwgcmVmZXJyZXIgfSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGNvbnRleHRDb25uZWN0aW9u
KTsKKyAgICAgICAgICAgICAgICBzZW5kVG9Db250ZXh0UHJvY2VzcygqY29udGV4dENvbm5lY3Rp
b24sIE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3RhcnRGZXRjaCB7
IHRoaXMtPmlkZW50aWZpZXIoKSwgZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgcmVxdWVzdCwgb3B0aW9ucywgZm9ybURhdGEsIHJlZmVycmVyIH0pOwogICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9M
T0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlbGx1IC0+
IERpZE5vdEhhbmRsZSBiZWNhdXNlIGZhaWxlZCB0byBydW4gc2VydmljZSB3b3JrZXIiLCBmZXRj
aElkZW50aWZpZXIpOwogICAgICAgICAgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0
Y2hJZGVudGlmaWVyKTsKQEAgLTE5OCw5ICsxOTksMTEgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGQKICAgICAgICAgU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLmNyZWF0ZVNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24oc2VydmVyKCkuc2Vzc2lvbklEKCkpOwogCiAgICAgLy8gSXQncyBwb3Nz
aWJsZSB0aGlzIHNwZWNpZmljIHdvcmtlciBjYW5ub3QgYmUgcmUtcnVuIChlLmcuIGl0cyByZWdp
c3RyYXRpb24gaGFzIGJlZW4gcmVtb3ZlZCkKLSAgICBzZXJ2ZXIoKS5ydW5TZXJ2aWNlV29ya2Vy
SWZOZWNlc3NhcnkoZGVzdGluYXRpb25JZGVudGlmaWVyLCBbZGVzdGluYXRpb25JZGVudGlmaWVy
LCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgc291cmNlRGF0YSA9IFdURk1vdmUoKnNvdXJj
ZURhdGEpXShib29sIHN1Y2Nlc3MsIGF1dG8mIGNvbnRleHRDb25uZWN0aW9uKSBtdXRhYmxlIHsK
LSAgICAgICAgaWYgKHN1Y2Nlc3MpCi0gICAgICAgICAgICBzZW5kVG9Db250ZXh0UHJvY2Vzcyhj
b250ZXh0Q29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlciB7IGRlc3RpbmF0aW9uSWRlbnRpZmllciwgV1RG
TW92ZShtZXNzYWdlKSwgV1RGTW92ZShzb3VyY2VEYXRhKSB9KTsKKyAgICBzZXJ2ZXIoKS5ydW5T
ZXJ2aWNlV29ya2VySWZOZWNlc3NhcnkoZGVzdGluYXRpb25JZGVudGlmaWVyLCBbZGVzdGluYXRp
b25JZGVudGlmaWVyLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgc291cmNlRGF0YSA9IFdU
Rk1vdmUoKnNvdXJjZURhdGEpXShib29sIHN1Y2Nlc3MsIGF1dG8qIGNvbnRleHRDb25uZWN0aW9u
KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKKyAgICAgICAgICAgIEFTU0VSVChj
b250ZXh0Q29ubmVjdGlvbik7CisgICAgICAgICAgICBzZW5kVG9Db250ZXh0UHJvY2VzcygqY29u
dGV4dENvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIgeyBkZXN0aW5hdGlvbklkZW50aWZpZXIsIFdURk1v
dmUobWVzc2FnZSksIFdURk1vdmUoc291cmNlRGF0YSkgfSk7CisgICAgICAgIH0KICAgICB9KTsK
IH0KIApAQCAtMjk1LDEyICsyOTgsNiBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6dW5y
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VydmljZVdvcmtlckNsaQogICAgIG1f
Y2xpZW50T3JpZ2lucy5yZW1vdmUoaXRlcmF0b3IpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBV
PiB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2VuZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1l
c3NhZ2UpCi17Ci0gICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBTdG9yYWdlUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZ2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpKQotICAgICAgICBjb25u
ZWN0aW9uLT5zZW5kKFdURk1vdmUobWVzc2FnZSkpOwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBV
PiB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2VuZFRvQ29udGV4dFByb2Nlc3MoV2ViQ29y
ZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBVJiYgbWVzc2FnZSkK
IHsKICAgICBzdGF0aWNfY2FzdDxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mPihjb25u
ZWN0aW9uKS5zZW5kKFdURk1vdmUobWVzc2FnZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oIGIv
U291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29u
bmVjdGlvbi5oCmluZGV4IDcxNWZjMmVjMDAyOTRlYmFjYWM1ZmYzNDFlNDdmZWY2MzMzYzMxNzgu
LjcyNmQwMmU2NzZkMzViNGFlMjZhZjAyZjkzMGU4NjU5ZmYyNWM1NGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTk4LDcgKzk4LDYgQEAgcHJpdmF0ZToKICAgICBJ
UEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgZmluYWwgeyByZXR1cm4g
bV9jb250ZW50Q29ubmVjdGlvbi5wdHIoKTsgfQogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJE
ZXN0aW5hdGlvbklEKCkgZmluYWwgeyByZXR1cm4gaWRlbnRpZmllcigpLnRvVUludDY0KCk7IH0K
ICAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lkIHNlbmRUb0NvbnRleHRQcm9jZXNz
KFUmJiBtZXNzYWdlKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBzdGF0aWMgdm9pZCBzZW5k
VG9Db250ZXh0UHJvY2VzcyhXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mLCBV
JiYgbWVzc2FnZSk7CiAKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335803</attachid>
            <date>2018-03-14 14:37:22 -0700</date>
            <delta_ts>2018-03-14 14:54:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183626-20180314143721.patch</filename>
            <type>text/plain</type>
            <size>23222</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NjEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVmYjdmODgwNzMzMDg3
OGUyZGUzOWI0ZDQ4ODM0OWFhY2UwOGQ1OC4uN2NlM2ViYTA5MTUwMzE0ZjJjOGM2YWI0MjM0ZjM3
YWRiZDYwNGI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE4LTAzLTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24o
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNjI2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNl
IHVzZSBvZiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24oKSBhcyB3ZSBhcmUgbW92aW5nIHRvd2FyZHMKKyAgICAgICAgaGF2aW5nIG11
bHRpcGxlIGNvbnRleHQgY29ubmVjdGlvbnMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBl
eHBlY3RlZCBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjptYXRjaEFsbCk6
CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNy
ZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJ1blNlcnZpY2VXb3JrZXJJZk5l
Y2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6cnVuU2VydmljZVdvcmtlcik6
CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6dGVybWluYXRlV29ya2VySW50ZXJuYWwpOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6Om1hcmtBbGxXb3JrZXJzQXNUZXJtaW5hdGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp3b3JrZXJDb250ZXh0VGVybWluYXRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6ZmlyZUluc3RhbGxFdmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcjo6ZmlyZUFjdGl2YXRlRXZlbnQpOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZpbmRDbGllbnRCeUlkZW50aWZpZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptYXRjaEFsbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNsYWltKToKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpjb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6bWF0Y2hBbGwpOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaDoKKwogMjAxOC0wMy0xNCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3AgdW5uZWNlc3NhcnkgU3RvcmFn
ZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OndvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbkNy
ZWF0ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCBiYjdlZDBiNjI2MDRmYmM0MmZmMmRjMzhkZjNlODI2MmE0MGRi
ZjJiLi5jYWNhMDEwODkzNDgyMTVlMzhiOTY1OGQ0MTBjYTYyYTViMzdlOTViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE3IEBACisyMDE4LTAzLTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
Omdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNjI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKSBhcyB3ZSBhcmUg
bW92aW5nCisgICAgICAgIHRvd2FyZHMgaGF2aW5nIG11bHRpcGxlIGNvbnRleHQgY29ubmVjdGlv
bnMuCisKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6
c3RhcnRGZXRjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIpOgorCiAyMDE4LTAzLTE0ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRHJvcCB1bm5lY2Vzc2FyeSBTdG9yYWdlVG9XZWJQ
cm9jZXNzQ29ubmVjdGlvbjo6d29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uQ3JlYXRlZCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
Y3BwCmluZGV4IDIzMGRhNjVhYjM0YWY1NzYwMzYwZmY4N2RhNmMxNmI3ZjU2YWFjZTEuLjlkM2Qw
NzgwMjM0YWY0Y2E5ZjA1MzQ3YTM2MTk2MDNhODQzZDA0NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC00MTAsNyArNDEw
LDcgQEAgdm9pZCBTV1NlcnZlcjo6ZGlkRmluaXNoQWN0aXZhdGlvbihTV1NlcnZlcldvcmtlciYg
d29ya2VyKQogfQogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jY2xp
ZW50cy1nZXRhbGwKLXZvaWQgU1dTZXJ2ZXI6Om1hdGNoQWxsKFNXU2VydmVyV29ya2VyJiB3b3Jr
ZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmIG9wdGlvbnMsIFNlcnZp
Y2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBTV1NlcnZl
cjo6bWF0Y2hBbGwoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlciwgY29uc3QgU2VydmljZVdvcmtlckNs
aWVudFF1ZXJ5T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU2VydmljZVdvcmtlckNsaWVudHNNYXRj
aEFsbENhbGxiYWNrJiBjYWxsYmFjaykKIHsKICAgICAvLyBGSVhNRTogU3VwcG9ydCByZXNlcnZl
ZCBjbGllbnQgZmlsdGVyaW5nLgogICAgIC8vIEZJWE1FOiBTdXBwb3J0IFdpbmRvd0NsaWVudCBh
ZGRpdGlvbmFsIHByb3BlcnRpZXMuCkBAIC01MTAsNiArNTEwLDEwIEBAIHZvaWQgU1dTZXJ2ZXI6
OnRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBkYXRhKQog
CiB2b2lkIFNXU2VydmVyOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9uKQogeworICAgIC8vIEZJWE1F
OiBUaGlzIHdpbGwgbmVlZCB0byB1cGRhdGUgb25seSB3b3JrZXJzIHVzaW5nIHRoaXMgY29ubmVj
dGlvbiBvbmNlIHdlIHVzZSBzZXZlcmFsIGNvbnRleHQgY29ubmVjdGlvbnMuCisgICAgZm9yIChh
dXRvKiB3b3JrZXIgOiBTV1NlcnZlcldvcmtlcjo6YWxsV29ya2VycygpLnZhbHVlcygpKQorICAg
ICAgICB3b3JrZXItPnNldENvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcihjb250ZXh0Q29ubmVj
dGlvbi5pZGVudGlmaWVyKCkpOworCiAgICAgYXV0byBwZW5kaW5nQ29udGV4dERhdGFzID0gV1RG
TW92ZShtX3BlbmRpbmdDb250ZXh0RGF0YXMpOwogICAgIGZvciAoYXV0byYgZGF0YSA6IHBlbmRp
bmdDb250ZXh0RGF0YXMpCiAgICAgICAgIGluc3RhbGxDb250ZXh0RGF0YShkYXRhKTsKQEAgLTUx
OCw3ICs1MjIsNyBAQCB2b2lkIFNXU2VydmVyOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uQ3Jl
YXRlZChTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbgogICAgIGZvciAoYXV0byYgaXRl
bSA6IHNlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0cykgewogICAgICAgICBib29sIHN1Y2Nlc3MgPSBy
dW5TZXJ2aWNlV29ya2VyKGl0ZW0ua2V5KTsKICAgICAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6
IGl0ZW0udmFsdWUpCi0gICAgICAgICAgICBjYWxsYmFjayhzdWNjZXNzLCBjb250ZXh0Q29ubmVj
dGlvbik7CisgICAgICAgICAgICBjYWxsYmFjayhzdWNjZXNzID8gJmNvbnRleHRDb25uZWN0aW9u
IDogbnVsbHB0cik7CiAgICAgfQogfQogCkBAIC01NTEsMjMgKzU1NSwyOCBAQCB2b2lkIFNXU2Vy
dmVyOjppbnN0YWxsQ29udGV4dERhdGEoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBk
YXRhKQogCiB2b2lkIFNXU2VydmVyOjpydW5TZXJ2aWNlV29ya2VySWZOZWNlc3NhcnkoU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgUnVuU2VydmljZVdvcmtlckNhbGxiYWNrJiYg
Y2FsbGJhY2spCiB7Ci0gICAgYXV0byogY29ubmVjdGlvbiA9IFNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6Z2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOwotICAgIGlmIChhdXRv
KiB3b3JrZXIgPSBtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy5nZXQoaWRlbnRpZmllcikp
IHsKLSAgICAgICAgaWYgKHdvcmtlci0+aXNSdW5uaW5nKCkpIHsKLSAgICAgICAgICAgIEFTU0VS
VChjb25uZWN0aW9uKTsKLSAgICAgICAgICAgIGNhbGxiYWNrKHRydWUsICpjb25uZWN0aW9uKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgIGF1dG8qIHdvcmtlciA9IHdvcmtl
ckJ5SUQoaWRlbnRpZmllcik7CisgICAgaWYgKCF3b3JrZXIpIHsKKyAgICAgICAgY2FsbGJhY2so
bnVsbHB0cik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIWNvbm5lY3Rpb24p
IHsKKyAgICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IHdvcmtlci0+Y29udGV4dENvbm5lY3Rp
b24oKTsKKyAgICBpZiAod29ya2VyLT5pc1J1bm5pbmcoKSkgeworICAgICAgICBBU1NFUlQoY29u
dGV4dENvbm5lY3Rpb24pOworICAgICAgICBjYWxsYmFjayhjb250ZXh0Q29ubmVjdGlvbik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWNvbnRleHRDb25uZWN0aW9uKSB7CiAg
ICAgICAgIG1fc2VydmljZVdvcmtlclJ1blJlcXVlc3RzLmVuc3VyZShpZGVudGlmaWVyLCBbJl0g
ewogICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxSdW5TZXJ2aWNlV29ya2VyQ2FsbGJhY2s+IHsg
fTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjYWxsYmFjayhydW5TZXJ2aWNlV29ya2Vy
KGlkZW50aWZpZXIpLCAqY29ubmVjdGlvbik7CisgICAgYm9vbCBzdWNjZXNzID0gcnVuU2Vydmlj
ZVdvcmtlcihpZGVudGlmaWVyKTsKKyAgICBjYWxsYmFjayhzdWNjZXNzID8gY29udGV4dENvbm5l
Y3Rpb24gOiBudWxscHRyKTsKIH0KIAogYm9vbCBTV1NlcnZlcjo6cnVuU2VydmljZVdvcmtlcihT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQpAQCAtNTg2LDE0ICs1OTUsMTAgQEAg
Ym9vbCBTV1NlcnZlcjo6cnVuU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBp
ZGVudGlmaWVyKQogCiAgICAgd29ya2VyLT5zZXRTdGF0ZShTV1NlcnZlcldvcmtlcjo6U3RhdGU6
OlJ1bm5pbmcpOwogCi0gICAgYXV0byogY29ubmVjdGlvbiA9IFNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6Z2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOwotICAgIEFTU0VSVChj
b25uZWN0aW9uKTsKLQotICAgIC8vIFdoZW4gcmUtcnVubmluZyBhIHNlcnZpY2Ugd29ya2VyIGFm
dGVyIGEgY29udGV4dCBwcm9jZXNzIGNyYXNoLCB0aGUgY29ubmVjdGlvbiBpZGVudGlmaWVyIG1h
eSBoYXZlIGNoYW5nZWQKLSAgICAvLyBzbyB3ZSB1cGRhdGUgaXQgaGVyZS4KLSAgICB3b3JrZXIt
PnNldENvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcihjb25uZWN0aW9uLT5pZGVudGlmaWVyKCkp
OworICAgIGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gd29ya2VyLT5jb250ZXh0Q29ubmVjdGlv
bigpOworICAgIEFTU0VSVChjb250ZXh0Q29ubmVjdGlvbik7CiAKLSAgICBjb25uZWN0aW9uLT5p
bnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQod29ya2VyLT5jb250ZXh0RGF0YSgpLCBtX3Nlc3Np
b25JRCk7CisgICAgY29udGV4dENvbm5lY3Rpb24tPmluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4
dCh3b3JrZXItPmNvbnRleHREYXRhKCksIG1fc2Vzc2lvbklEKTsKIAogICAgIHJldHVybiB0cnVl
OwogfQpAQCAtNjE3LDE3ICs2MjIsOSBAQCB2b2lkIFNXU2VydmVyOjp0ZXJtaW5hdGVXb3JrZXJJ
bnRlcm5hbChTV1NlcnZlcldvcmtlciYgd29ya2VyLCBUZXJtaW5hdGlvbk1vZGUgbQogCiAgICAg
d29ya2VyLnNldFN0YXRlKFNXU2VydmVyV29ya2VyOjpTdGF0ZTo6VGVybWluYXRpbmcpOwogCi0g
ICAgYXV0byBjb250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgPSB3b3JrZXIuY29udGV4dENvbm5l
Y3Rpb25JZGVudGlmaWVyKCk7Ci0gICAgQVNTRVJUKGNvbnRleHRDb25uZWN0aW9uSWRlbnRpZmll
cik7Ci0gICAgaWYgKCFjb250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIpIHsKLSAgICAgICAgTE9H
X0VSUk9SKCJSZXF1ZXN0IHRvIHRlcm1pbmF0ZSBhIHdvcmtlciB3aG9zZSBjb250ZXh0Q29ubmVj
dGlvbklkZW50aWZpZXIgaXMgaW52YWxpZCIpOwotICAgICAgICB3b3JrZXJDb250ZXh0VGVybWlu
YXRlZCh3b3JrZXIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byogY29ubmVj
dGlvbiA9IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvcklkZW50aWZp
ZXIoKmNvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcik7Ci0gICAgQVNTRVJUKGNvbm5lY3Rpb24p
OwotICAgIGlmICghY29ubmVjdGlvbikgeworICAgIGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0g
d29ya2VyLmNvbnRleHRDb25uZWN0aW9uKCk7CisgICAgQVNTRVJUKGNvbnRleHRDb25uZWN0aW9u
KTsKKyAgICBpZiAoIWNvbnRleHRDb25uZWN0aW9uKSB7CiAgICAgICAgIExPR19FUlJPUigiUmVx
dWVzdCB0byB0ZXJtaW5hdGUgYSB3b3JrZXIgd2hvc2UgY29udGV4dCBjb25uZWN0aW9uIGRvZXMg
bm90IGV4aXN0Iik7CiAgICAgICAgIHdvcmtlckNvbnRleHRUZXJtaW5hdGVkKHdvcmtlcik7CiAg
ICAgICAgIHJldHVybjsKQEAgLTYzNSwyNCArNjMyLDI2IEBAIHZvaWQgU1dTZXJ2ZXI6OnRlcm1p
bmF0ZVdvcmtlckludGVybmFsKFNXU2VydmVyV29ya2VyJiB3b3JrZXIsIFRlcm1pbmF0aW9uTW9k
ZSBtCiAKICAgICBzd2l0Y2ggKG1vZGUpIHsKICAgICBjYXNlIEFzeW5jaHJvbm91czoKLSAgICAg
ICAgY29ubmVjdGlvbi0+dGVybWluYXRlV29ya2VyKHdvcmtlci5pZGVudGlmaWVyKCkpOworICAg
ICAgICBjb250ZXh0Q29ubmVjdGlvbi0+dGVybWluYXRlV29ya2VyKHdvcmtlci5pZGVudGlmaWVy
KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bmNocm9ub3VzOgotICAgICAgICBjb25u
ZWN0aW9uLT5zeW5jVGVybWluYXRlV29ya2VyKHdvcmtlci5pZGVudGlmaWVyKCkpOworICAgICAg
ICBjb250ZXh0Q29ubmVjdGlvbi0+c3luY1Rlcm1pbmF0ZVdvcmtlcih3b3JrZXIuaWRlbnRpZmll
cigpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6bWFya0Fs
bFdvcmtlcnNBc1Rlcm1pbmF0ZWQoKQogewotICAgIHdoaWxlICghbV9ydW5uaW5nT3JUZXJtaW5h
dGluZ1dvcmtlcnMuaXNFbXB0eSgpKQotICAgICAgICB3b3JrZXJDb250ZXh0VGVybWluYXRlZCht
X3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy5iZWdpbigpLT52YWx1ZSk7CisgICAgd2hpbGUg
KCFtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0
byYgd29ya2VyID0gbV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtlcnMuYmVnaW4oKS0+dmFsdWU7
CisgICAgICAgIHdvcmtlci0+c2V0Q29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKHN0ZDo6bnVs
bG9wdCk7CisgICAgICAgIHdvcmtlckNvbnRleHRUZXJtaW5hdGVkKHdvcmtlcik7CisgICAgfQog
fQogCiB2b2lkIFNXU2VydmVyOjp3b3JrZXJDb250ZXh0VGVybWluYXRlZChTV1NlcnZlcldvcmtl
ciYgd29ya2VyKQogewogICAgIHdvcmtlci5zZXRTdGF0ZShTV1NlcnZlcldvcmtlcjo6U3RhdGU6
Ok5vdFJ1bm5pbmcpOwotICAgIHdvcmtlci5zZXRDb250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIo
c3RkOjpudWxsb3B0KTsKIAogICAgIGlmIChhdXRvKiBqb2JRdWV1ZSA9IG1fam9iUXVldWVzLmdl
dCh3b3JrZXIucmVnaXN0cmF0aW9uS2V5KCkpKQogICAgICAgICBqb2JRdWV1ZS0+Y2FuY2VsSm9i
c0Zyb21TZXJ2aWNlV29ya2VyKHdvcmtlci5pZGVudGlmaWVyKCkpOwpAQCAtNjY1LDM1ICs2NjQs
MjQgQEAgdm9pZCBTV1NlcnZlcjo6d29ya2VyQ29udGV4dFRlcm1pbmF0ZWQoU1dTZXJ2ZXJXb3Jr
ZXImIHdvcmtlcikKIAogdm9pZCBTV1NlcnZlcjo6ZmlyZUluc3RhbGxFdmVudChTV1NlcnZlcldv
cmtlciYgd29ya2VyKQogewotICAgIGF1dG8gY29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyID0g
d29ya2VyLmNvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcigpOwotICAgIGlmICghY29udGV4dENv
bm5lY3Rpb25JZGVudGlmaWVyKSB7Ci0gICAgICAgIExPR19FUlJPUigiUmVxdWVzdCB0byBmaXJl
IGluc3RhbGwgZXZlbnQgb24gYSB3b3JrZXIgd2hvc2UgY29udGV4dENvbm5lY3Rpb25JZGVudGlm
aWVyIGlzIGludmFsaWQiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBhdXRvKiBjb25u
ZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9ySWRlbnRp
ZmllcigqY29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIWNvbm5lY3Rpb24p
IHsKKyAgICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IHdvcmtlci5jb250ZXh0Q29ubmVjdGlv
bigpOworICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pIHsKICAgICAgICAgTE9HX0VSUk9SKCJS
ZXF1ZXN0IHRvIGZpcmUgaW5zdGFsbCBldmVudCBvbiBhIHdvcmtlciB3aG9zZSBjb250ZXh0IGNv
bm5lY3Rpb24gZG9lcyBub3QgZXhpc3QiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGNvbm5lY3Rpb24tPmZpcmVJbnN0YWxsRXZlbnQod29ya2VyLmlkZW50aWZpZXIoKSk7CisgICAg
Y29udGV4dENvbm5lY3Rpb24tPmZpcmVJbnN0YWxsRXZlbnQod29ya2VyLmlkZW50aWZpZXIoKSk7
CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OmZpcmVBY3RpdmF0ZUV2ZW50KFNXU2VydmVyV29ya2VyJiB3
b3JrZXIpCiB7Ci0gICAgYXV0byBjb250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgPSB3b3JrZXIu
Y29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKCk7Ci0gICAgaWYgKCFjb250ZXh0Q29ubmVjdGlv
bklkZW50aWZpZXIpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJSZXF1ZXN0IHRvIGZpcmUgaW5zdGFs
bCBldmVudCBvbiBhIHdvcmtlciB3aG9zZSBjb250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgaXMg
aW52YWxpZCIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byogY29ubmVjdGlv
biA9IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvcklkZW50aWZpZXIo
KmNvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCFjb25uZWN0aW9uKSB7Cisg
ICAgYXV0byogY29udGV4dENvbm5lY3Rpb24gPSB3b3JrZXIuY29udGV4dENvbm5lY3Rpb24oKTsK
KyAgICBpZiAoIWNvbnRleHRDb25uZWN0aW9uKSB7CiAgICAgICAgIExPR19FUlJPUigiUmVxdWVz
dCB0byBmaXJlIGluc3RhbGwgZXZlbnQgb24gYSB3b3JrZXIgd2hvc2UgY29udGV4dCBjb25uZWN0
aW9uIGRvZXMgbm90IGV4aXN0Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb25u
ZWN0aW9uLT5maXJlQWN0aXZhdGVFdmVudCh3b3JrZXIuaWRlbnRpZmllcigpKTsKKyAgICBjb250
ZXh0Q29ubmVjdGlvbi0+ZmlyZUFjdGl2YXRlRXZlbnQod29ya2VyLmlkZW50aWZpZXIoKSk7CiB9
CiAKIHZvaWQgU1dTZXJ2ZXI6OnJlZ2lzdGVyQ29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0
aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5oCmluZGV4IGU2MDhmMWZkOGU3NzQ0NTcwZWNhNmMxOTkxOWJlMWFkYjdjYmI3MGEuLjg1YmRj
M2FmYjY3NjFmZjVlNTJkZjdkZmZkN2I0ZTE5MjI4NWUwNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTE1NCw3ICsxNTQsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGaW5pc2hJbnN0YWxsKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYsIFNXU2VydmVyV29ya2VyJiwgYm9vbCB3
YXNTdWNjZXNzZnVsKTsKICAgICB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oU1dTZXJ2ZXJXb3Jr
ZXImKTsKICAgICB2b2lkIHdvcmtlckNvbnRleHRUZXJtaW5hdGVkKFNXU2VydmVyV29ya2VyJik7
Ci0gICAgdm9pZCBtYXRjaEFsbChTV1NlcnZlcldvcmtlciYsIGNvbnN0IFNlcnZpY2VXb3JrZXJD
bGllbnRRdWVyeU9wdGlvbnMmLCBTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2sm
Jik7CisgICAgdm9pZCBtYXRjaEFsbChTV1NlcnZlcldvcmtlciYsIGNvbnN0IFNlcnZpY2VXb3Jr
ZXJDbGllbnRRdWVyeU9wdGlvbnMmLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxs
Q2FsbGJhY2smKTsKICAgICB2b2lkIGNsYWltKFNXU2VydmVyV29ya2VyJik7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiYpOwpAQCAtMTY0LDcgKzE2NCw3IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChDbGllbnRPcmln
aW4mJiwgU2VydmljZVdvcmtlckNsaWVudERhdGEmJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IENsaWVudE9yaWdpbiYsIFNl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKTsKIAotICAgIHVzaW5nIFJ1blNlcnZpY2VXb3Jr
ZXJDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChib29sLCBTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24mKT47CisgICAgdXNpbmcgUnVuU2VydmljZVdvcmtlckNhbGxiYWNrID0gV1RGOjpG
dW5jdGlvbjx2b2lkKFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiopPjsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeShTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgUnVuU2VydmljZVdvcmtlckNhbGxiYWNrJiYpOwogCiAgICAgdm9pZCByZXNvbHZl
UmVnaXN0cmF0aW9uUmVhZHlSZXF1ZXN0cyhTV1NlcnZlclJlZ2lzdHJhdGlvbiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IGIyM2FmMWM3OTU2ZDhiNzZh
YWYxOWM1NzExNTBkOTAwZThmOGFkNTMuLjE3ZjVjMjQ2MjJkNThiYTcxNTljMmNjZjRlY2E5MDg0
NzY0MDY0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAg
LTExMSwxNCArMTExLDE0IEBAIHZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp3b3Jr
ZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpCiB2b2lkIFNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6ZmluZENsaWVudEJ5SWRlbnRpZmllcih1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElkKQogewogICAgIGlm
IChhdXRvKiB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlm
aWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkKLSAgICAgICAgZ2xvYmFsU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbigpLT5maW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHJlcXVlc3RJ
ZGVudGlmaWVyLCB3b3JrZXItPmZpbmRDbGllbnRCeUlkZW50aWZpZXIoY2xpZW50SWQpLCBmYWxz
ZSk7CisgICAgICAgIHdvcmtlci0+Y29udGV4dENvbm5lY3Rpb24oKS0+ZmluZENsaWVudEJ5SWRl
bnRpZmllckNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgd29ya2VyLT5maW5kQ2xpZW50QnlJ
ZGVudGlmaWVyKGNsaWVudElkKSwgZmFsc2UpOwogfQogCiB2b2lkIFNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6bWF0Y2hBbGwodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29y
a2VyQ2xpZW50UXVlcnlPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChhdXRvKiB3b3JrZXIg
PSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKSkgewotICAgICAgICB3b3JrZXItPm1hdGNoQWxsKG9wdGlvbnMsIFtyZXF1
ZXN0SWRlbnRpZmllcl0gKGF1dG8mJiBkYXRhKSB7Ci0gICAgICAgICAgICBnbG9iYWxTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKCktPm1hdGNoQWxsQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVy
LCBkYXRhKTsKKyAgICAgICAgd29ya2VyLT5tYXRjaEFsbChvcHRpb25zLCBbJl0gKGF1dG8mJiBk
YXRhKSB7CisgICAgICAgICAgICB3b3JrZXItPmNvbnRleHRDb25uZWN0aW9uKCktPm1hdGNoQWxs
Q29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCBkYXRhKTsKICAgICAgICAgfSk7CiAgICAgfQog
fQpAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpj
bGFpbSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU2VydmljZVdvcmtlCiB7CiAgICAgaWYg
KGF1dG8qIHdvcmtlciA9IFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZp
ZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKSB7CiAgICAgICAgIHdvcmtlci0+Y2xhaW0oKTsK
LSAgICAgICAgZ2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpLT5jbGFpbUNvbXBsZXRl
ZChyZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIHdvcmtlci0+Y29udGV4dENvbm5lY3Rpb24o
KS0+Y2xhaW1Db21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmNwcAppbmRleCA5Njg4MTFjOTBlMGFjODhiOWNlMzgzZjBiZjk4ODUwNTFiNDdhYjA0Li5i
MDI3OWY4ZTk3ZjZjYjhmNDAzNzhmZmQyMWNjMjk0Nzg3MWIzZWM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNw
cApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBIYXNo
TWFwPFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTV1NlcnZlcldvcmtlcio+JiBhbGxXb3JrZXJz
KCkKK0hhc2hNYXA8U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNXU2VydmVyV29ya2VyKj4mIFNX
U2VydmVyV29ya2VyOjphbGxXb3JrZXJzKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SGFzaE1hcDxTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU1dTZXJ2ZXJXb3JrZXIqPj4gd29ya2Vy
czsKICAgICByZXR1cm4gd29ya2VyczsKQEAgLTkwLDYgKzkwLDE0IEBAIGNvbnN0IENsaWVudE9y
aWdpbiYgU1dTZXJ2ZXJXb3JrZXI6Om9yaWdpbigpIGNvbnN0CiAgICAgcmV0dXJuICptX29yaWdp
bjsKIH0KIAorU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBTV1NlcnZlcldvcmtlcjo6Y29u
dGV4dENvbm5lY3Rpb24oKQoreworICAgIGlmICghbV9jb250ZXh0Q29ubmVjdGlvbklkZW50aWZp
ZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIFNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkZvcklkZW50aWZpZXIoKm1fY29udGV4dENvbm5lY3Rp
b25JZGVudGlmaWVyKTsKK30KKwogdm9pZCBTV1NlcnZlcldvcmtlcjo6c2NyaXB0Q29udGV4dEZh
aWxlZFRvU3RhcnQoY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50
aWZpZXI+JiBqb2JEYXRhSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAg
IG1fc2VydmVyLnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGpvYkRhdGFJZGVudGlmaWVyLCAq
dGhpcywgbWVzc2FnZSk7CkBAIC0xMjAsOSArMTI4LDkgQEAgc3RkOjpvcHRpb25hbDxTZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YT4gU1dTZXJ2ZXJXb3JrZXI6OmZpbmRDbGllbnRCeUlkZW50aWZpZXIo
Y28KICAgICByZXR1cm4gbV9zZXJ2ZXIuc2VydmljZVdvcmtlckNsaWVudFdpdGhPcmlnaW5CeUlE
KG9yaWdpbigpLCBjbGllbnRJZCk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXJXb3JrZXI6Om1hdGNoQWxs
KGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmIG9wdGlvbnMsIFNlcnZpY2VX
b3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBTV1NlcnZlcldv
cmtlcjo6bWF0Y2hBbGwoY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYgb3B0
aW9ucywgY29uc3QgU2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiBjYWxsYmFj
aykKIHsKLSAgICByZXR1cm4gbV9zZXJ2ZXIubWF0Y2hBbGwoKnRoaXMsIG9wdGlvbnMsIFdURk1v
dmUoY2FsbGJhY2spKTsKKyAgICByZXR1cm4gbV9zZXJ2ZXIubWF0Y2hBbGwoKnRoaXMsIG9wdGlv
bnMsIGNhbGxiYWNrKTsKIH0KIAogdm9pZCBTV1NlcnZlcldvcmtlcjo6Y2xhaW0oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtl
ci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtl
ci5oCmluZGV4IDRkODRiYTk1NTU3ZDk1YmIzNTgyYTkzYzE4M2ViY2VlOGU4OWVjYjEuLjI4YTBk
MDliY2U1NDNiODMzZTRmZDNhOTgwODhlYjhiZWMyOWFkMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKQEAgLTQw
LDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IENsaWVudE9yaWdpbjsKIGNs
YXNzIFNXU2VydmVyOwogY2xhc3MgU1dTZXJ2ZXJSZWdpc3RyYXRpb247CitjbGFzcyBTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb247CiBzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudERhdGE7CiBz
dHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI7CiBzdHJ1Y3QgU2VydmljZVdvcmtl
ckNsaWVudFF1ZXJ5T3B0aW9uczsKQEAgLTc4LDcgKzc5LDYgQEAgcHVibGljOgogCiAgICAgU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5p
ZGVudGlmaWVyOyB9CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbklkZW50aWZpZXI+IGNvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1fY29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyOyB9CiAgICAgdm9pZCBzZXRDb250ZXh0
Q29ubmVjdGlvbklkZW50aWZpZXIoc3RkOjpvcHRpb25hbDxTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb25JZGVudGlmaWVyPiBpZGVudGlmaWVyKSB7IG1fY29udGV4dENvbm5lY3Rpb25JZGVudGlm
aWVyID0gaWRlbnRpZmllcjsgfQogCiAgICAgU2VydmljZVdvcmtlclN0YXRlIHN0YXRlKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhLnN0YXRlOyB9CkBAIC05MywxOCArOTMsMjEgQEAgcHVibGljOgog
ICAgIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbigpOwogICAgIHZvaWQgY29udGV4dFRlcm1pbmF0
ZWQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGll
bnREYXRhPiBmaW5kQ2xpZW50QnlJZGVudGlmaWVyKGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyJikgY29uc3Q7Ci0gICAgdm9pZCBtYXRjaEFsbChjb25zdCBTZXJ2aWNlV29ya2Vy
Q2xpZW50UXVlcnlPcHRpb25zJiwgU2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNr
JiYpOworICAgIHZvaWQgbWF0Y2hBbGwoY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0
aW9ucyYsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayYpOwogICAg
IHZvaWQgY2xhaW0oKTsKIAogICAgIHZvaWQgc2tpcFdhaXRpbmcoKTsKICAgICBib29sIGlzU2tp
cFdhaXRpbmdGbGFnU2V0KCkgY29uc3QgeyByZXR1cm4gbV9pc1NraXBXYWl0aW5nRmxhZ1NldDsg
fQogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNXU2VydmVyV29ya2VyKiBleGlzdGluZ1dv
cmtlckZvcklkZW50aWZpZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIHN0YXRpYyBI
YXNoTWFwPFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTV1NlcnZlcldvcmtlcio+JiBhbGxXb3Jr
ZXJzKCk7CiAKICAgICBjb25zdCBTZXJ2aWNlV29ya2VyRGF0YSYgZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YTsgfQogICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBjb250ZXh0RGF0YSgp
IGNvbnN0OwogICAgIGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKCkgY29uc3Q7CiAKKyAgICBX
RUJDT1JFX0VYUE9SVCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIGNvbnRleHRDb25uZWN0
aW9uKCk7CisKIHByaXZhdGU6CiAgICAgU1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImLCBTV1NlcnZl
clJlZ2lzdHJhdGlvbiYsIHN0ZDo6b3B0aW9uYWw8U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
SWRlbnRpZmllcj4sIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDb250
ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCAgV29ya2VyVHlwZSwgU2VydmljZVdv
cmtlcklkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3Bw
CmluZGV4IGE1MWQ5NzdjNzk0ZDU4ZWRiZDg1NDA2Zjk1ZmIzNjdmYmE1MTkwZDMuLmJmMzk3OWEy
MzJkMjQyMDhiYmZjNTk1YTZlNjBhMTE3NjA1OGRlNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xNTQsMTMgKzE1NCwxMyBAQCB2b2lkIFdlYlNXU2VydmVy
Q29ubmVjdGlvbjo6c3RhcnRGZXRjaCh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIFNlcnZpY2VX
b3JrZXJSZQogICAgICAgICBpZiAoIVN0b3JhZ2VQcm9jZXNzOjpzaW5nbGV0b24oKS5nbG9iYWxT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkpCiAgICAgICAgICAgICBTdG9yYWdlUHJvY2Vzczo6
c2luZ2xldG9uKCkuY3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihzZXJ2ZXIoKS5zZXNz
aW9uSUQoKSk7CiAKLSAgICAgICAgc2VydmVyKCkucnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5
KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwg
dGhpcywgZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCA9
IFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnMpLCBmb3JtRGF0YSA9
IFdURk1vdmUoZm9ybURhdGEpLCByZWZlcnJlciA9IFdURk1vdmUocmVmZXJyZXIpXShib29sIHN1
Y2Nlc3MsIGF1dG8mIGNvbnRleHRDb25uZWN0aW9uKSB7CisgICAgICAgIHNlcnZlcigpLnJ1blNl
cnZpY2VXb3JrZXJJZk5lY2Vzc2FyeShzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgW3dlYWtUaGlz
ID0gV1RGTW92ZSh3ZWFrVGhpcyksIHRoaXMsIGZldGNoSWRlbnRpZmllciwgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zID0gV1RGTW92
ZShvcHRpb25zKSwgZm9ybURhdGEgPSBXVEZNb3ZlKGZvcm1EYXRhKSwgcmVmZXJyZXIgPSBXVEZN
b3ZlKHJlZmVycmVyKV0oYXV0byogY29udGV4dENvbm5lY3Rpb24pIHsKICAgICAgICAgICAgIGlm
ICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBpZiAo
c3VjY2VzcykgeworICAgICAgICAgICAgaWYgKGNvbnRleHRDb25uZWN0aW9uKSB7CiAgICAgICAg
ICAgICAgICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0
RmV0Y2g6IFN0YXJ0aW5nIGZldGNoICVsbHUgdmlhIHNlcnZpY2Ugd29ya2VyICVsbHUiLCBmZXRj
aElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOwotICAgICAg
ICAgICAgICAgIHNlbmRUb0NvbnRleHRQcm9jZXNzKGNvbnRleHRDb25uZWN0aW9uLCBNZXNzYWdl
czo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlN0YXJ0RmV0Y2ggeyB0aGlzLT5pZGVu
dGlmaWVyKCksIGZldGNoSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHJlcXVl
c3QsIG9wdGlvbnMsIGZvcm1EYXRhLCByZWZlcnJlciB9KTsKKyAgICAgICAgICAgICAgICBzZW5k
VG9Db250ZXh0UHJvY2VzcygqY29udGV4dENvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3RhcnRGZXRjaCB7IHRoaXMtPmlkZW50aWZpZXIoKSwgZmV0
Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucywg
Zm9ybURhdGEsIHJlZmVycmVyIH0pOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3Rh
cnRGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlbGx1IC0+IERpZE5vdEhhbmRsZSBiZWNhdXNlIGZh
aWxlZCB0byBydW4gc2VydmljZSB3b3JrZXIiLCBmZXRjaElkZW50aWZpZXIpOwogICAgICAgICAg
ICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKQEAgLTE5OCw5
ICsxOTgsOSBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZp
Y2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgZAogICAgICAgICBTdG9yYWdlUHJvY2Vz
czo6c2luZ2xldG9uKCkuY3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihzZXJ2ZXIoKS5z
ZXNzaW9uSUQoKSk7CiAKICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoaXMgc3BlY2lmaWMgd29ya2Vy
IGNhbm5vdCBiZSByZS1ydW4gKGUuZy4gaXRzIHJlZ2lzdHJhdGlvbiBoYXMgYmVlbiByZW1vdmVk
KQotICAgIHNlcnZlcigpLnJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeShkZXN0aW5hdGlvbklk
ZW50aWZpZXIsIFtkZXN0aW5hdGlvbklkZW50aWZpZXIsIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3Nh
Z2UpLCBzb3VyY2VEYXRhID0gV1RGTW92ZSgqc291cmNlRGF0YSldKGJvb2wgc3VjY2VzcywgYXV0
byYgY29udGV4dENvbm5lY3Rpb24pIG11dGFibGUgewotICAgICAgICBpZiAoc3VjY2VzcykKLSAg
ICAgICAgICAgIHNlbmRUb0NvbnRleHRQcm9jZXNzKGNvbnRleHRDb25uZWN0aW9uLCBNZXNzYWdl
czo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyIHsgZGVzdGluYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHNv
dXJjZURhdGEpIH0pOworICAgIHNlcnZlcigpLnJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeShk
ZXN0aW5hdGlvbklkZW50aWZpZXIsIFtkZXN0aW5hdGlvbklkZW50aWZpZXIsIG1lc3NhZ2UgPSBX
VEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VEYXRhID0gV1RGTW92ZSgqc291cmNlRGF0YSldKGF1dG8q
IGNvbnRleHRDb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGNvbnRleHRDb25uZWN0
aW9uKQorICAgICAgICAgICAgc2VuZFRvQ29udGV4dFByb2Nlc3MoKmNvbnRleHRDb25uZWN0aW9u
LCBNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlBvc3RNZXNzYWdlVG9T
ZXJ2aWNlV29ya2VyIHsgZGVzdGluYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBX
VEZNb3ZlKHNvdXJjZURhdGEpIH0pOwogICAgIH0pOwogfQogCkBAIC0yOTUsMTIgKzI5NSw2IEBA
IHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dChjb25zdCBTZXJ2aWNlV29ya2VyQ2xpCiAgICAgbV9jbGllbnRPcmlnaW5zLnJlbW92ZShpdGVy
YXRvcik7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjpzZW5kVG9Db250ZXh0UHJvY2VzcyhVJiYgbWVzc2FnZSkKLXsKLSAgICBpZiAoYXV0byog
Y29ubmVjdGlvbiA9IFN0b3JhZ2VQcm9jZXNzOjpzaW5nbGV0b24oKS5nbG9iYWxTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKCkpCi0gICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoV1RGTW92ZShtZXNz
YWdlKSk7Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjpzZW5kVG9Db250ZXh0UHJvY2VzcyhXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIFUmJiBtZXNzYWdlKQogewogICAgIHN0YXRpY19jYXN0PFdlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiY+KGNvbm5lY3Rpb24pLnNlbmQoV1RGTW92ZShtZXNz
YWdlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggNzE1ZmMyZWMw
MDI5NGViYWNhYzVmZjM0MWU0N2ZlZjYzMzNjMzE3OC4uNzI2ZDAyZTY3NmQzNWI0YWUyNmFmMDJm
OTMwZTg2NTlmZjI1YzU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaApA
QCAtOTgsNyArOTgsNiBAQCBwcml2YXRlOgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNl
bmRlckNvbm5lY3Rpb24oKSBmaW5hbCB7IHJldHVybiBtX2NvbnRlbnRDb25uZWN0aW9uLnB0cigp
OyB9CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBmaW5hbCB7IHJl
dHVybiBpZGVudGlmaWVyKCkudG9VSW50NjQoKTsgfQogICAgIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFU+IHZvaWQgc2VuZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1lc3NhZ2UpOwogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFU+IHN0YXRpYyB2b2lkIHNlbmRUb0NvbnRleHRQcm9jZXNzKFdlYkNvcmU6
OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYsIFUmJiBtZXNzYWdlKTsKIAogICAgIFBBTDo6
U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335804</attachid>
            <date>2018-03-14 14:54:58 -0700</date>
            <delta_ts>2018-03-14 15:32:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183626-20180314145457.patch</filename>
            <type>text/plain</type>
            <size>23167</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVmYjdmODgwNzMzMDg3
OGUyZGUzOWI0ZDQ4ODM0OWFhY2UwOGQ1OC4uZGZkYjZhYWE5ZjdkZWVhYzYzOTI0ZWU4YWM4ZDhl
NmQzNWU3NDY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE4LTAzLTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24o
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNjI2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBSZWR1Y2Ug
dXNlIG9mIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Z2xvYmFsU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbigpIGFzIHdlIGFyZSBtb3ZpbmcgdG93YXJkcworICAgICAgICBoYXZpbmcgbXVs
dGlwbGUgY29udGV4dCBjb25uZWN0aW9ucy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGV4
cGVjdGVkIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6Om1hdGNoQWxsKToK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uQ3Jl
YXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6cnVuU2VydmljZVdvcmtlcklmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpydW5TZXJ2aWNlV29ya2VyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp0ZXJtaW5hdGVXb3JrZXJJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6bWFya0FsbFdvcmtlcnNBc1Rlcm1pbmF0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OndvcmtlckNvbnRleHRUZXJtaW5hdGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpmaXJlSW5zdGFsbEV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNXU2VydmVyOjpmaXJlQWN0aXZhdGVFdmVudCk6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZmluZENsaWVudEJ5SWRlbnRpZmllcik6CisgICAg
ICAgIChXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1hdGNoQWxsKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y2xhaW0pOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OmNvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjptYXRjaEFsbCk6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oOgorCiAyMDE4LTAzLTE0ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRHJvcCB1bm5lY2Vzc2FyeSBTdG9yYWdl
VG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6d29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uQ3Jl
YXRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDg3NDA1NmRkZTU0YWYzY2Q2YjNmNjFlNjhlZThhOWJjZWMxOTFl
YWIuLjEyMGNjZDRjMDlmZTkyYmU0MzFiYTkwYjgyZGNiMjZkZjM5ODc4ZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTgtMDMtMTQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBSZWR1Y2UgdXNlIG9mIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
Z2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM2MjYKKworICAgICAgICBSZXZpZXdlZCBieSBZ
b3Vlbm4gRmFibGV0LgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpnbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkgYXMgd2UgYXJlIG1v
dmluZworICAgICAgICB0b3dhcmRzIGhhdmluZyBtdWx0aXBsZSBjb250ZXh0IGNvbm5lY3Rpb25z
LgorCisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNv
bm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN0
YXJ0RmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OnBvc3RN
ZXNzYWdlVG9TZXJ2aWNlV29ya2VyKToKKwogMjAxOC0wMy0xNCAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgcG9saWN5IGRlY2lzaW9ucyBhc3luY2hyb25v
dXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5jcHAKaW5kZXggMjMwZGE2NWFiMzRhZjU3NjAzNjBmZjg3ZGE2YzE2YjdmNTZhYWNlMS4uOWQz
ZDA3ODAyMzRhZjRjYTlmMDUzNDdhMzYxOTYwM2E4NDNkMDQ2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTQxMCw3ICs0
MTAsNyBAQCB2b2lkIFNXU2VydmVyOjpkaWRGaW5pc2hBY3RpdmF0aW9uKFNXU2VydmVyV29ya2Vy
JiB3b3JrZXIpCiB9CiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNj
bGllbnRzLWdldGFsbAotdm9pZCBTV1NlcnZlcjo6bWF0Y2hBbGwoU1dTZXJ2ZXJXb3JrZXImIHdv
cmtlciwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYgb3B0aW9ucywgU2Vy
dmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIFNXU2Vy
dmVyOjptYXRjaEFsbChTV1NlcnZlcldvcmtlciYgd29ya2VyLCBjb25zdCBTZXJ2aWNlV29ya2Vy
Q2xpZW50UXVlcnlPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50c01h
dGNoQWxsQ2FsbGJhY2smIGNhbGxiYWNrKQogewogICAgIC8vIEZJWE1FOiBTdXBwb3J0IHJlc2Vy
dmVkIGNsaWVudCBmaWx0ZXJpbmcuCiAgICAgLy8gRklYTUU6IFN1cHBvcnQgV2luZG93Q2xpZW50
IGFkZGl0aW9uYWwgcHJvcGVydGllcy4KQEAgLTUxMCw2ICs1MTAsMTAgQEAgdm9pZCBTV1NlcnZl
cjo6dHJ5SW5zdGFsbENvbnRleHREYXRhKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEp
CiAKIHZvaWQgU1dTZXJ2ZXI6OnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24pCiB7CisgICAgLy8gRklY
TUU6IFRoaXMgd2lsbCBuZWVkIHRvIHVwZGF0ZSBvbmx5IHdvcmtlcnMgdXNpbmcgdGhpcyBjb25u
ZWN0aW9uIG9uY2Ugd2UgdXNlIHNldmVyYWwgY29udGV4dCBjb25uZWN0aW9ucy4KKyAgICBmb3Ig
KGF1dG8qIHdvcmtlciA6IFNXU2VydmVyV29ya2VyOjphbGxXb3JrZXJzKCkudmFsdWVzKCkpCisg
ICAgICAgIHdvcmtlci0+c2V0Q29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKGNvbnRleHRDb25u
ZWN0aW9uLmlkZW50aWZpZXIoKSk7CisKICAgICBhdXRvIHBlbmRpbmdDb250ZXh0RGF0YXMgPSBX
VEZNb3ZlKG1fcGVuZGluZ0NvbnRleHREYXRhcyk7CiAgICAgZm9yIChhdXRvJiBkYXRhIDogcGVu
ZGluZ0NvbnRleHREYXRhcykKICAgICAgICAgaW5zdGFsbENvbnRleHREYXRhKGRhdGEpOwpAQCAt
NTE4LDcgKzUyMiw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25D
cmVhdGVkKFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29uCiAgICAgZm9yIChhdXRvJiBp
dGVtIDogc2VydmljZVdvcmtlclJ1blJlcXVlc3RzKSB7CiAgICAgICAgIGJvb2wgc3VjY2VzcyA9
IHJ1blNlcnZpY2VXb3JrZXIoaXRlbS5rZXkpOwogICAgICAgICBmb3IgKGF1dG8mIGNhbGxiYWNr
IDogaXRlbS52YWx1ZSkKLSAgICAgICAgICAgIGNhbGxiYWNrKHN1Y2Nlc3MsIGNvbnRleHRDb25u
ZWN0aW9uKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHN1Y2Nlc3MgPyAmY29udGV4dENvbm5lY3Rp
b24gOiBudWxscHRyKTsKICAgICB9CiB9CiAKQEAgLTU1MSwyMyArNTU1LDI4IEBAIHZvaWQgU1dT
ZXJ2ZXI6Omluc3RhbGxDb250ZXh0RGF0YShjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEm
IGRhdGEpCiAKIHZvaWQgU1dTZXJ2ZXI6OnJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeShTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBSdW5TZXJ2aWNlV29ya2VyQ2FsbGJhY2sm
JiBjYWxsYmFjaykKIHsKLSAgICBhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpnbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7Ci0gICAgaWYgKGF1
dG8qIHdvcmtlciA9IG1fcnVubmluZ09yVGVybWluYXRpbmdXb3JrZXJzLmdldChpZGVudGlmaWVy
KSkgewotICAgICAgICBpZiAod29ya2VyLT5pc1J1bm5pbmcoKSkgewotICAgICAgICAgICAgQVNT
RVJUKGNvbm5lY3Rpb24pOwotICAgICAgICAgICAgY2FsbGJhY2sodHJ1ZSwgKmNvbm5lY3Rpb24p
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgYXV0byogd29ya2VyID0gd29y
a2VyQnlJRChpZGVudGlmaWVyKTsKKyAgICBpZiAoIXdvcmtlcikgeworICAgICAgICBjYWxsYmFj
ayhudWxscHRyKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghY29ubmVjdGlv
bikgeworICAgIGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gd29ya2VyLT5jb250ZXh0Q29ubmVj
dGlvbigpOworICAgIGlmICh3b3JrZXItPmlzUnVubmluZygpKSB7CisgICAgICAgIEFTU0VSVChj
b250ZXh0Q29ubmVjdGlvbik7CisgICAgICAgIGNhbGxiYWNrKGNvbnRleHRDb25uZWN0aW9uKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pIHsK
ICAgICAgICAgbV9zZXJ2aWNlV29ya2VyUnVuUmVxdWVzdHMuZW5zdXJlKGlkZW50aWZpZXIsIFsm
XSB7CiAgICAgICAgICAgICByZXR1cm4gVmVjdG9yPFJ1blNlcnZpY2VXb3JrZXJDYWxsYmFjaz4g
eyB9OwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKFdURk1vdmUoY2FsbGJhY2sp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNhbGxiYWNrKHJ1blNlcnZpY2VXb3Jr
ZXIoaWRlbnRpZmllciksICpjb25uZWN0aW9uKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBydW5TZXJ2
aWNlV29ya2VyKGlkZW50aWZpZXIpOworICAgIGNhbGxiYWNrKHN1Y2Nlc3MgPyBjb250ZXh0Q29u
bmVjdGlvbiA6IG51bGxwdHIpOwogfQogCiBib29sIFNXU2VydmVyOjpydW5TZXJ2aWNlV29ya2Vy
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCkBAIC01ODYsMTQgKzU5NSwxMCBA
QCBib29sIFNXU2VydmVyOjpydW5TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIpCiAKICAgICB3b3JrZXItPnNldFN0YXRlKFNXU2VydmVyV29ya2VyOjpTdGF0
ZTo6UnVubmluZyk7CiAKLSAgICBhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpnbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7Ci0gICAgQVNTRVJU
KGNvbm5lY3Rpb24pOwotCi0gICAgLy8gV2hlbiByZS1ydW5uaW5nIGEgc2VydmljZSB3b3JrZXIg
YWZ0ZXIgYSBjb250ZXh0IHByb2Nlc3MgY3Jhc2gsIHRoZSBjb25uZWN0aW9uIGlkZW50aWZpZXIg
bWF5IGhhdmUgY2hhbmdlZAotICAgIC8vIHNvIHdlIHVwZGF0ZSBpdCBoZXJlLgotICAgIHdvcmtl
ci0+c2V0Q29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKGNvbm5lY3Rpb24tPmlkZW50aWZpZXIo
KSk7CisgICAgYXV0byogY29udGV4dENvbm5lY3Rpb24gPSB3b3JrZXItPmNvbnRleHRDb25uZWN0
aW9uKCk7CisgICAgQVNTRVJUKGNvbnRleHRDb25uZWN0aW9uKTsKIAotICAgIGNvbm5lY3Rpb24t
Pmluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dCh3b3JrZXItPmNvbnRleHREYXRhKCksIG1fc2Vz
c2lvbklEKTsKKyAgICBjb250ZXh0Q29ubmVjdGlvbi0+aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250
ZXh0KHdvcmtlci0+Y29udGV4dERhdGEoKSwgbV9zZXNzaW9uSUQpOwogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CkBAIC02MTcsMTcgKzYyMiw5IEBAIHZvaWQgU1dTZXJ2ZXI6OnRlcm1pbmF0ZVdvcmtl
ckludGVybmFsKFNXU2VydmVyV29ya2VyJiB3b3JrZXIsIFRlcm1pbmF0aW9uTW9kZSBtCiAKICAg
ICB3b3JrZXIuc2V0U3RhdGUoU1dTZXJ2ZXJXb3JrZXI6OlN0YXRlOjpUZXJtaW5hdGluZyk7CiAK
LSAgICBhdXRvIGNvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciA9IHdvcmtlci5jb250ZXh0Q29u
bmVjdGlvbklkZW50aWZpZXIoKTsKLSAgICBBU1NFUlQoY29udGV4dENvbm5lY3Rpb25JZGVudGlm
aWVyKTsKLSAgICBpZiAoIWNvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllcikgewotICAgICAgICBM
T0dfRVJST1IoIlJlcXVlc3QgdG8gdGVybWluYXRlIGEgd29ya2VyIHdob3NlIGNvbnRleHRDb25u
ZWN0aW9uSWRlbnRpZmllciBpcyBpbnZhbGlkIik7Ci0gICAgICAgIHdvcmtlckNvbnRleHRUZXJt
aW5hdGVkKHdvcmtlcik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvKiBjb25u
ZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9ySWRlbnRp
ZmllcigqY29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKTsKLSAgICBBU1NFUlQoY29ubmVjdGlv
bik7Ci0gICAgaWYgKCFjb25uZWN0aW9uKSB7CisgICAgYXV0byogY29udGV4dENvbm5lY3Rpb24g
PSB3b3JrZXIuY29udGV4dENvbm5lY3Rpb24oKTsKKyAgICBBU1NFUlQoY29udGV4dENvbm5lY3Rp
b24pOworICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pIHsKICAgICAgICAgTE9HX0VSUk9SKCJS
ZXF1ZXN0IHRvIHRlcm1pbmF0ZSBhIHdvcmtlciB3aG9zZSBjb250ZXh0IGNvbm5lY3Rpb24gZG9l
cyBub3QgZXhpc3QiKTsKICAgICAgICAgd29ya2VyQ29udGV4dFRlcm1pbmF0ZWQod29ya2VyKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtNjM1LDI0ICs2MzIsMjYgQEAgdm9pZCBTV1NlcnZlcjo6dGVy
bWluYXRlV29ya2VySW50ZXJuYWwoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlciwgVGVybWluYXRpb25N
b2RlIG0KIAogICAgIHN3aXRjaCAobW9kZSkgewogICAgIGNhc2UgQXN5bmNocm9ub3VzOgotICAg
ICAgICBjb25uZWN0aW9uLT50ZXJtaW5hdGVXb3JrZXIod29ya2VyLmlkZW50aWZpZXIoKSk7Cisg
ICAgICAgIGNvbnRleHRDb25uZWN0aW9uLT50ZXJtaW5hdGVXb3JrZXIod29ya2VyLmlkZW50aWZp
ZXIoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3luY2hyb25vdXM6Ci0gICAgICAgIGNv
bm5lY3Rpb24tPnN5bmNUZXJtaW5hdGVXb3JrZXIod29ya2VyLmlkZW50aWZpZXIoKSk7CisgICAg
ICAgIGNvbnRleHRDb25uZWN0aW9uLT5zeW5jVGVybWluYXRlV29ya2VyKHdvcmtlci5pZGVudGlm
aWVyKCkpOwogICAgICAgICBicmVhazsKICAgICB9OwogfQogCiB2b2lkIFNXU2VydmVyOjptYXJr
QWxsV29ya2Vyc0FzVGVybWluYXRlZCgpCiB7Ci0gICAgd2hpbGUgKCFtX3J1bm5pbmdPclRlcm1p
bmF0aW5nV29ya2Vycy5pc0VtcHR5KCkpCi0gICAgICAgIHdvcmtlckNvbnRleHRUZXJtaW5hdGVk
KG1fcnVubmluZ09yVGVybWluYXRpbmdXb3JrZXJzLmJlZ2luKCktPnZhbHVlKTsKKyAgICB3aGls
ZSAoIW1fcnVubmluZ09yVGVybWluYXRpbmdXb3JrZXJzLmlzRW1wdHkoKSkgeworICAgICAgICBh
dXRvJiB3b3JrZXIgPSBtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy5iZWdpbigpLT52YWx1
ZTsKKyAgICAgICAgd29ya2VyLT5zZXRDb250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIoc3RkOjpu
dWxsb3B0KTsKKyAgICAgICAgd29ya2VyQ29udGV4dFRlcm1pbmF0ZWQod29ya2VyKTsKKyAgICB9
CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OndvcmtlckNvbnRleHRUZXJtaW5hdGVkKFNXU2VydmVyV29y
a2VyJiB3b3JrZXIpCiB7CiAgICAgd29ya2VyLnNldFN0YXRlKFNXU2VydmVyV29ya2VyOjpTdGF0
ZTo6Tm90UnVubmluZyk7Ci0gICAgd29ya2VyLnNldENvbnRleHRDb25uZWN0aW9uSWRlbnRpZmll
cihzdGQ6Om51bGxvcHQpOwogCiAgICAgaWYgKGF1dG8qIGpvYlF1ZXVlID0gbV9qb2JRdWV1ZXMu
Z2V0KHdvcmtlci5yZWdpc3RyYXRpb25LZXkoKSkpCiAgICAgICAgIGpvYlF1ZXVlLT5jYW5jZWxK
b2JzRnJvbVNlcnZpY2VXb3JrZXIod29ya2VyLmlkZW50aWZpZXIoKSk7CkBAIC02NjUsMzUgKzY2
NCwyNCBAQCB2b2lkIFNXU2VydmVyOjp3b3JrZXJDb250ZXh0VGVybWluYXRlZChTV1NlcnZlcldv
cmtlciYgd29ya2VyKQogCiB2b2lkIFNXU2VydmVyOjpmaXJlSW5zdGFsbEV2ZW50KFNXU2VydmVy
V29ya2VyJiB3b3JrZXIpCiB7Ci0gICAgYXV0byBjb250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIg
PSB3b3JrZXIuY29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKCk7Ci0gICAgaWYgKCFjb250ZXh0
Q29ubmVjdGlvbklkZW50aWZpZXIpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJSZXF1ZXN0IHRvIGZp
cmUgaW5zdGFsbCBldmVudCBvbiBhIHdvcmtlciB3aG9zZSBjb250ZXh0Q29ubmVjdGlvbklkZW50
aWZpZXIgaXMgaW52YWxpZCIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGF1dG8qIGNv
bm5lY3Rpb24gPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Gb3JJZGVu
dGlmaWVyKCpjb250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIpOwotICAgIGlmICghY29ubmVjdGlv
bikgeworICAgIGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gd29ya2VyLmNvbnRleHRDb25uZWN0
aW9uKCk7CisgICAgaWYgKCFjb250ZXh0Q29ubmVjdGlvbikgewogICAgICAgICBMT0dfRVJST1Io
IlJlcXVlc3QgdG8gZmlyZSBpbnN0YWxsIGV2ZW50IG9uIGEgd29ya2VyIHdob3NlIGNvbnRleHQg
Y29ubmVjdGlvbiBkb2VzIG5vdCBleGlzdCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgY29ubmVjdGlvbi0+ZmlyZUluc3RhbGxFdmVudCh3b3JrZXIuaWRlbnRpZmllcigpKTsKKyAg
ICBjb250ZXh0Q29ubmVjdGlvbi0+ZmlyZUluc3RhbGxFdmVudCh3b3JrZXIuaWRlbnRpZmllcigp
KTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6ZmlyZUFjdGl2YXRlRXZlbnQoU1dTZXJ2ZXJXb3JrZXIm
IHdvcmtlcikKIHsKLSAgICBhdXRvIGNvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciA9IHdvcmtl
ci5jb250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIoKTsKLSAgICBpZiAoIWNvbnRleHRDb25uZWN0
aW9uSWRlbnRpZmllcikgewotICAgICAgICBMT0dfRVJST1IoIlJlcXVlc3QgdG8gZmlyZSBpbnN0
YWxsIGV2ZW50IG9uIGEgd29ya2VyIHdob3NlIGNvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciBp
cyBpbnZhbGlkIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvKiBjb25uZWN0
aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9ySWRlbnRpZmll
cigqY29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIWNvbm5lY3Rpb24pIHsK
KyAgICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IHdvcmtlci5jb250ZXh0Q29ubmVjdGlvbigp
OworICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pIHsKICAgICAgICAgTE9HX0VSUk9SKCJSZXF1
ZXN0IHRvIGZpcmUgaW5zdGFsbCBldmVudCBvbiBhIHdvcmtlciB3aG9zZSBjb250ZXh0IGNvbm5l
Y3Rpb24gZG9lcyBub3QgZXhpc3QiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNv
bm5lY3Rpb24tPmZpcmVBY3RpdmF0ZUV2ZW50KHdvcmtlci5pZGVudGlmaWVyKCkpOworICAgIGNv
bnRleHRDb25uZWN0aW9uLT5maXJlQWN0aXZhdGVFdmVudCh3b3JrZXIuaWRlbnRpZmllcigpKTsK
IH0KIAogdm9pZCBTV1NlcnZlcjo6cmVnaXN0ZXJDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmgKaW5kZXggZTYwOGYxZmQ4ZTc3NDQ1NzBlY2E2YzE5OTE5YmUxYWRiN2NiYjcwYS4uODVi
ZGMzYWZiNjc2MWZmNWU1MmRmN2RmZmQ3YjRlMTkyMjg1ZTA2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtMTU0LDcgKzE1NCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoY29uc3Qgc3RkOjpvcHRpb25h
bDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiwgU1dTZXJ2ZXJXb3JrZXImLCBib29s
IHdhc1N1Y2Nlc3NmdWwpOwogICAgIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbihTV1NlcnZlcldv
cmtlciYpOwogICAgIHZvaWQgd29ya2VyQ29udGV4dFRlcm1pbmF0ZWQoU1dTZXJ2ZXJXb3JrZXIm
KTsKLSAgICB2b2lkIG1hdGNoQWxsKFNXU2VydmVyV29ya2VyJiwgY29uc3QgU2VydmljZVdvcmtl
ckNsaWVudFF1ZXJ5T3B0aW9ucyYsIFNlcnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFj
ayYmKTsKKyAgICB2b2lkIG1hdGNoQWxsKFNXU2VydmVyV29ya2VyJiwgY29uc3QgU2VydmljZVdv
cmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hB
bGxDYWxsYmFjayYpOwogICAgIHZvaWQgY2xhaW0oU1dTZXJ2ZXJXb3JrZXImKTsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CkBAIC0xNjQsNyArMTY0LDcgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KENsaWVudE9y
aWdpbiYmLCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiwg
U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIpOwogCi0gICAgdXNpbmcgUnVuU2VydmljZVdv
cmtlckNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wsIFNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbiYpPjsKKyAgICB1c2luZyBSdW5TZXJ2aWNlV29ya2VyQ2FsbGJhY2sgPSBXVEY6
OkZ1bmN0aW9uPHZvaWQoU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKik+OwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBSdW5TZXJ2aWNlV29ya2VyQ2FsbGJhY2smJik7CiAKICAgICB2b2lkIHJlc29s
dmVSZWdpc3RyYXRpb25SZWFkeVJlcXVlc3RzKFNXU2VydmVyUmVnaXN0cmF0aW9uJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggYjIzYWYxYzc5NTZkOGI3
NmFhZjE5YzU3MTE1MGQ5MDBlOGY4YWQ1My4uMTdmNWMyNDYyMmQ1OGJhNzE1OWMyY2NmNGVjYTkw
ODQ3NjQwNjRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApA
QCAtMTExLDE0ICsxMTEsMTQgQEAgdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Ondv
cmtlclRlcm1pbmF0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmkKIHZvaWQgU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaW5kQ2xpZW50QnlJZGVudGlmaWVyKHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgY2xpZW50SWQpCiB7CiAgICAg
aWYgKGF1dG8qIHdvcmtlciA9IFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50
aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKQotICAgICAgICBnbG9iYWxTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKCktPmZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQocmVxdWVz
dElkZW50aWZpZXIsIHdvcmtlci0+ZmluZENsaWVudEJ5SWRlbnRpZmllcihjbGllbnRJZCksIGZh
bHNlKTsKKyAgICAgICAgd29ya2VyLT5jb250ZXh0Q29ubmVjdGlvbigpLT5maW5kQ2xpZW50QnlJ
ZGVudGlmaWVyQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCB3b3JrZXItPmZpbmRDbGllbnRC
eUlkZW50aWZpZXIoY2xpZW50SWQpLCBmYWxzZSk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjptYXRjaEFsbCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VX
b3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKGF1dG8qIHdvcmtl
ciA9IFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoc2VydmljZVdv
cmtlcklkZW50aWZpZXIpKSB7Ci0gICAgICAgIHdvcmtlci0+bWF0Y2hBbGwob3B0aW9ucywgW3Jl
cXVlc3RJZGVudGlmaWVyXSAoYXV0byYmIGRhdGEpIHsKLSAgICAgICAgICAgIGdsb2JhbFNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24oKS0+bWF0Y2hBbGxDb21wbGV0ZWQocmVxdWVzdElkZW50aWZp
ZXIsIGRhdGEpOworICAgICAgICB3b3JrZXItPm1hdGNoQWxsKG9wdGlvbnMsIFsmXSAoYXV0byYm
IGRhdGEpIHsKKyAgICAgICAgICAgIHdvcmtlci0+Y29udGV4dENvbm5lY3Rpb24oKS0+bWF0Y2hB
bGxDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIGRhdGEpOwogICAgICAgICB9KTsKICAgICB9
CiB9CkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OmNsYWltKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2UKIHsKICAgICBp
ZiAoYXV0byogd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRp
ZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpIHsKICAgICAgICAgd29ya2VyLT5jbGFpbSgp
OwotICAgICAgICBnbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCktPmNsYWltQ29tcGxl
dGVkKHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgd29ya2VyLT5jb250ZXh0Q29ubmVjdGlv
bigpLT5jbGFpbUNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuY3BwCmluZGV4IDk2ODgxMWM5MGUwYWM4OGI5Y2UzODNmMGJmOTg4NTA1MWI0N2FiMDQu
LmIwMjc5ZjhlOTdmNmNiOGY0MDM3OGZmZDIxY2MyOTQ3ODcxYjNlYzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIu
Y3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIEhh
c2hNYXA8U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNXU2VydmVyV29ya2VyKj4mIGFsbFdvcmtl
cnMoKQorSGFzaE1hcDxTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU1dTZXJ2ZXJXb3JrZXIqPiYg
U1dTZXJ2ZXJXb3JrZXI6OmFsbFdvcmtlcnMoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxIYXNoTWFwPFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTV1NlcnZlcldvcmtlcio+PiB3b3Jr
ZXJzOwogICAgIHJldHVybiB3b3JrZXJzOwpAQCAtOTAsNiArOTAsMTQgQEAgY29uc3QgQ2xpZW50
T3JpZ2luJiBTV1NlcnZlcldvcmtlcjo6b3JpZ2luKCkgY29uc3QKICAgICByZXR1cm4gKm1fb3Jp
Z2luOwogfQogCitTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIFNXU2VydmVyV29ya2VyOjpj
b250ZXh0Q29ubmVjdGlvbigpCit7CisgICAgaWYgKCFtX2NvbnRleHRDb25uZWN0aW9uSWRlbnRp
ZmllcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9ySWRlbnRpZmllcigqbV9jb250ZXh0Q29ubmVj
dGlvbklkZW50aWZpZXIpOworfQorCiB2b2lkIFNXU2VydmVyV29ya2VyOjpzY3JpcHRDb250ZXh0
RmFpbGVkVG9TdGFydChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRl
bnRpZmllcj4mIGpvYkRhdGFJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAg
ICAgbV9zZXJ2ZXIuc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoam9iRGF0YUlkZW50aWZpZXIs
ICp0aGlzLCBtZXNzYWdlKTsKQEAgLTEyMCw5ICsxMjgsOSBAQCBzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhPiBTV1NlcnZlcldvcmtlcjo6ZmluZENsaWVudEJ5SWRlbnRpZmll
cihjbwogICAgIHJldHVybiBtX3NlcnZlci5zZXJ2aWNlV29ya2VyQ2xpZW50V2l0aE9yaWdpbkJ5
SUQob3JpZ2luKCksIGNsaWVudElkKTsKIH0KIAotdm9pZCBTV1NlcnZlcldvcmtlcjo6bWF0Y2hB
bGwoY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYgb3B0aW9ucywgU2Vydmlj
ZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIFNXU2VydmVy
V29ya2VyOjptYXRjaEFsbChjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zJiBv
cHRpb25zLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2smIGNhbGxi
YWNrKQogewotICAgIHJldHVybiBtX3NlcnZlci5tYXRjaEFsbCgqdGhpcywgb3B0aW9ucywgV1RG
TW92ZShjYWxsYmFjaykpOworICAgIHJldHVybiBtX3NlcnZlci5tYXRjaEFsbCgqdGhpcywgb3B0
aW9ucywgY2FsbGJhY2spOwogfQogCiB2b2lkIFNXU2VydmVyV29ya2VyOjpjbGFpbSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmgKaW5kZXggNGQ4NGJhOTU1NTdkOTViYjM1ODJhOTNjMTgzZWJjZWU4ZTg5ZWNiMS4uMjhh
MGQwOWJjZTU0M2I4MzNlNGZkM2E5ODA4OGViOGJlYzI5YWQyOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaApAQCAt
NDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgQ2xpZW50T3JpZ2luOwog
Y2xhc3MgU1dTZXJ2ZXI7CiBjbGFzcyBTV1NlcnZlclJlZ2lzdHJhdGlvbjsKK2NsYXNzIFNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTsK
IHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcjsKIHN0cnVjdCBTZXJ2aWNlV29y
a2VyQ2xpZW50UXVlcnlPcHRpb25zOwpAQCAtNzgsNyArNzksNiBAQCBwdWJsaWM6CiAKICAgICBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
LmlkZW50aWZpZXI7IH0KIAotICAgIHN0ZDo6b3B0aW9uYWw8U1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uSWRlbnRpZmllcj4gY29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXI7IH0KICAgICB2b2lkIHNldENvbnRl
eHRDb25uZWN0aW9uSWRlbnRpZmllcihzdGQ6Om9wdGlvbmFsPFNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbklkZW50aWZpZXI+IGlkZW50aWZpZXIpIHsgbV9jb250ZXh0Q29ubmVjdGlvbklkZW50
aWZpZXIgPSBpZGVudGlmaWVyOyB9CiAKICAgICBTZXJ2aWNlV29ya2VyU3RhdGUgc3RhdGUoKSBj
b25zdCB7IHJldHVybiBtX2RhdGEuc3RhdGU7IH0KQEAgLTkzLDE4ICs5MywyMSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkaWRGaW5pc2hBY3RpdmF0aW9uKCk7CiAgICAgdm9pZCBjb250ZXh0VGVybWlu
YXRlZCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNs
aWVudERhdGE+IGZpbmRDbGllbnRCeUlkZW50aWZpZXIoY29uc3QgU2VydmljZVdvcmtlckNsaWVu
dElkZW50aWZpZXImKSBjb25zdDsKLSAgICB2b2lkIG1hdGNoQWxsKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJDbGllbnRRdWVyeU9wdGlvbnMmLCBTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJh
Y2smJik7CisgICAgdm9pZCBtYXRjaEFsbChjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlP
cHRpb25zJiwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJik7CiAg
ICAgdm9pZCBjbGFpbSgpOwogCiAgICAgdm9pZCBza2lwV2FpdGluZygpOwogICAgIGJvb2wgaXNT
a2lwV2FpdGluZ0ZsYWdTZXQoKSBjb25zdCB7IHJldHVybiBtX2lzU2tpcFdhaXRpbmdGbGFnU2V0
OyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU1dTZXJ2ZXJXb3JrZXIqIGV4aXN0aW5n
V29ya2VyRm9ySWRlbnRpZmllcihTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisgICAgc3RhdGlj
IEhhc2hNYXA8U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNXU2VydmVyV29ya2VyKj4mIGFsbFdv
cmtlcnMoKTsKIAogICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJEYXRhJiBkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhOyB9CiAgICAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIGNvbnRleHREYXRh
KCkgY29uc3Q7CiAgICAgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4oKSBjb25zdDsKIAorICAg
IFdFQkNPUkVfRVhQT1JUIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogY29udGV4dENvbm5l
Y3Rpb24oKTsKKwogcHJpdmF0ZToKICAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2Vy
dmVyUmVnaXN0cmF0aW9uJiwgc3RkOjpvcHRpb25hbDxTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b25JZGVudGlmaWVyPiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENv
bnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsICBXb3JrZXJUeXBlLCBTZXJ2aWNl
V29ya2VySWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5j
cHAKaW5kZXggYTUxZDk3N2M3OTRkNThlZGJkODU0MDZmOTVmYjM2N2ZiYTUxOTBkMy4uYmYzOTc5
YTIzMmQyNDIwOGJiZmM1OTVhNmU2MGExMTc2MDU4ZGU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTE1NCwxMyArMTU0LDEzIEBAIHZvaWQgV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgU2Vydmlj
ZVdvcmtlclJlCiAgICAgICAgIGlmICghU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLmdsb2Jh
bFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKSkKICAgICAgICAgICAgIFN0b3JhZ2VQcm9jZXNz
OjpzaW5nbGV0b24oKS5jcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKHNlcnZlcigpLnNl
c3Npb25JRCgpKTsKIAotICAgICAgICBzZXJ2ZXIoKS5ydW5TZXJ2aWNlV29ya2VySWZOZWNlc3Nh
cnkoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMp
LCB0aGlzLCBmZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCByZXF1ZXN0
ID0gV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9ucyksIGZvcm1EYXRh
ID0gV1RGTW92ZShmb3JtRGF0YSksIHJlZmVycmVyID0gV1RGTW92ZShyZWZlcnJlcildKGJvb2wg
c3VjY2VzcywgYXV0byYgY29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAgICAgc2VydmVyKCkucnVu
U2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbd2Vha1Ro
aXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgdGhpcywgZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMgPSBXVEZN
b3ZlKG9wdGlvbnMpLCBmb3JtRGF0YSA9IFdURk1vdmUoZm9ybURhdGEpLCByZWZlcnJlciA9IFdU
Rk1vdmUocmVmZXJyZXIpXShhdXRvKiBjb250ZXh0Q29ubmVjdGlvbikgewogICAgICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIGlm
IChzdWNjZXNzKSB7CisgICAgICAgICAgICBpZiAoY29udGV4dENvbm5lY3Rpb24pIHsKICAgICAg
ICAgICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3Rh
cnRGZXRjaDogU3RhcnRpbmcgZmV0Y2ggJWxsdSB2aWEgc2VydmljZSB3b3JrZXIgJWxsdSIsIGZl
dGNoSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7Ci0gICAg
ICAgICAgICAgICAgc2VuZFRvQ29udGV4dFByb2Nlc3MoY29udGV4dENvbm5lY3Rpb24sIE1lc3Nh
Z2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3RhcnRGZXRjaCB7IHRoaXMtPmlk
ZW50aWZpZXIoKSwgZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVx
dWVzdCwgb3B0aW9ucywgZm9ybURhdGEsIHJlZmVycmVyIH0pOworICAgICAgICAgICAgICAgIHNl
bmRUb0NvbnRleHRQcm9jZXNzKCpjb250ZXh0Q29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTdGFydEZldGNoIHsgdGhpcy0+aWRlbnRpZmllcigpLCBm
ZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRpb25z
LCBmb3JtRGF0YSwgcmVmZXJyZXIgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgIFNXU0VSVkVSQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJz
dGFydEZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVsbHUgLT4gRGlkTm90SGFuZGxlIGJlY2F1c2Ug
ZmFpbGVkIHRvIHJ1biBzZXJ2aWNlIHdvcmtlciIsIGZldGNoSWRlbnRpZmllcik7CiAgICAgICAg
ICAgICAgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtl
ckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIpOwpAQCAtMTk4
LDkgKzE5OCw5IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2Vy
dmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkCiAgICAgICAgIFN0b3JhZ2VQcm9j
ZXNzOjpzaW5nbGV0b24oKS5jcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKHNlcnZlcigp
LnNlc3Npb25JRCgpKTsKIAogICAgIC8vIEl0J3MgcG9zc2libGUgdGhpcyBzcGVjaWZpYyB3b3Jr
ZXIgY2Fubm90IGJlIHJlLXJ1biAoZS5nLiBpdHMgcmVnaXN0cmF0aW9uIGhhcyBiZWVuIHJlbW92
ZWQpCi0gICAgc2VydmVyKCkucnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KGRlc3RpbmF0aW9u
SWRlbnRpZmllciwgW2Rlc3RpbmF0aW9uSWRlbnRpZmllciwgbWVzc2FnZSA9IFdURk1vdmUobWVz
c2FnZSksIHNvdXJjZURhdGEgPSBXVEZNb3ZlKCpzb3VyY2VEYXRhKV0oYm9vbCBzdWNjZXNzLCBh
dXRvJiBjb250ZXh0Q29ubmVjdGlvbikgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChzdWNjZXNzKQot
ICAgICAgICAgICAgc2VuZFRvQ29udGV4dFByb2Nlc3MoY29udGV4dENvbm5lY3Rpb24sIE1lc3Nh
Z2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXIgeyBkZXN0aW5hdGlvbklkZW50aWZpZXIsIFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUo
c291cmNlRGF0YSkgfSk7CisgICAgc2VydmVyKCkucnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5
KGRlc3RpbmF0aW9uSWRlbnRpZmllciwgW2Rlc3RpbmF0aW9uSWRlbnRpZmllciwgbWVzc2FnZSA9
IFdURk1vdmUobWVzc2FnZSksIHNvdXJjZURhdGEgPSBXVEZNb3ZlKCpzb3VyY2VEYXRhKV0oYXV0
byogY29udGV4dENvbm5lY3Rpb24pIG11dGFibGUgeworICAgICAgICBpZiAoY29udGV4dENvbm5l
Y3Rpb24pCisgICAgICAgICAgICBzZW5kVG9Db250ZXh0UHJvY2VzcygqY29udGV4dENvbm5lY3Rp
b24sIE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXIgeyBkZXN0aW5hdGlvbklkZW50aWZpZXIsIFdURk1vdmUobWVzc2FnZSks
IFdURk1vdmUoc291cmNlRGF0YSkgfSk7CiAgICAgfSk7CiB9CiAKQEAgLTI5NSwxMiArMjk1LDYg
QEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xp
ZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJDbGkKICAgICBtX2NsaWVudE9yaWdpbnMucmVtb3ZlKGl0
ZXJhdG9yKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OnNlbmRUb0NvbnRleHRQcm9jZXNzKFUmJiBtZXNzYWdlKQotewotICAgIGlmIChhdXRv
KiBjb25uZWN0aW9uID0gU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLmdsb2JhbFNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24oKSkKLSAgICAgICAgY29ubmVjdGlvbi0+c2VuZChXVEZNb3ZlKG1l
c3NhZ2UpKTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OnNlbmRUb0NvbnRleHRQcm9jZXNzKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgVSYmIG1lc3NhZ2UpCiB7CiAgICAgc3RhdGljX2Nhc3Q8V2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJj4oY29ubmVjdGlvbikuc2VuZChXVEZNb3ZlKG1l
c3NhZ2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAppbmRleCA3MTVmYzJl
YzAwMjk0ZWJhY2FjNWZmMzQxZTQ3ZmVmNjMzM2MzMTc4Li43MjZkMDJlNjc2ZDM1YjRhZTI2YWYw
MmY5MzBlODY1OWZmMjVjNTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5o
CkBAIC05OCw3ICs5OCw2IEBAIHByaXZhdGU6CiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdl
U2VuZGVyQ29ubmVjdGlvbigpIGZpbmFsIHsgcmV0dXJuIG1fY29udGVudENvbm5lY3Rpb24ucHRy
KCk7IH0KICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGZpbmFsIHsg
cmV0dXJuIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpOyB9CiAgICAgCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVT4gdm9pZCBzZW5kVG9Db250ZXh0UHJvY2VzcyhVJiYgbWVzc2FnZSk7CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVT4gc3RhdGljIHZvaWQgc2VuZFRvQ29udGV4dFByb2Nlc3MoV2ViQ29y
ZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiwgVSYmIG1lc3NhZ2UpOwogCiAgICAgUEFM
OjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>