<?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>183602</bug_id>
          
          <creation_ts>2018-03-13 11:23:03 -0700</creation_ts>
          <short_desc>imported/w3c/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.worker.html is crashing</short_desc>
          <delta_ts>2018-03-14 15:53:21 -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>WebCore Misc.</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=183614</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=170907</see_also>
          <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>183619</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>kangil.han</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1406168</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-13 11:23:03 -0700</bug_when>
    <thetext>Crypto API should not ref the context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406170</commentid>
    <comment_count>1</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-13 11:30:12 -0700</bug_when>
    <thetext>Looking at the Crypto code, I also noted two issues:
1. CryptoKeyRSA::generatePair can leak memory
2. encrypt (decrypt probably as well) are passing strings through different threads without doing any cross-thread copying.

I added a FIXME for 1.
I&apos;ll do a follow-up patch for (at least partially 2).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406171</commentid>
    <comment_count>2</comment_count>
      <attachid>335705</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-13 11:35:48 -0700</bug_when>
    <thetext>Created attachment 335705
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406194</commentid>
    <comment_count>3</comment_count>
      <attachid>335714</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-13 12:47:49 -0700</bug_when>
    <thetext>Created attachment 335714
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406207</commentid>
    <comment_count>4</comment_count>
      <attachid>335718</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-13 13:03:06 -0700</bug_when>
    <thetext>Created attachment 335718
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406231</commentid>
    <comment_count>5</comment_count>
      <attachid>335725</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-13 13:59:44 -0700</bug_when>
    <thetext>Created attachment 335725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406263</commentid>
    <comment_count>6</comment_count>
      <attachid>335725</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-03-13 15:20:43 -0700</bug_when>
    <thetext>Comment on attachment 335725
Patch

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

Hi Youenn, thanks for making this patch. However, I don&apos;t think a lock is necessary. A context can be referred to Document or WorkerGlobalScope, as far as I understood.

In Document, the postTask method invokes callOnMainThread() which has a lock already.
In WorkerGlobalScope, the postTask method ends up with MessageQueue::append() which has a lock as well.

Therefore, I am not sure if adding a lock is useful here. I propose we should just get rid of the context.ref() and context.deref() to see if that works. r- because of the locking mechanism. Will talk to Youenn offline.

&gt; Source/WebCore/ChangeLog:10
&gt; +        Use that method in Crypto instead of refing/unrefing  the context.

Extra space.

&gt; Source/WebCore/dom/Document.cpp:571
&gt; +    allDocumentsMap().remove(m_identifier);

Is this relevant to this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406264</commentid>
    <comment_count>7</comment_count>
      <attachid>335725</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-13 15:31:06 -0700</bug_when>
    <thetext>Comment on attachment 335725
Patch

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

&gt; Source/WebCore/crypto/CryptoAlgorithm.cpp:99
&gt; +        [operation = WTFMove(operation), callback = WTFMove(callback), exceptionCallback = WTFMove(exceptionCallback), identifier = context.contextIdentifier()]() mutable {

I think contextIdentifier would be a better name than identifier here.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmECDH.cpp:120
&gt; +        [baseKey = WTFMove(baseKey), publicKey = ecParameters.publicKey.releaseNonNull(), length, unifiedCallback = WTFMove(unifiedCallback), identifier = context.contextIdentifier()]() mutable {

ditto.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA1.cpp:54
&gt; +    workQueue.dispatch([digest = WTFMove(digest), message = WTFMove(message), callback = WTFMove(callback), identifier = context.contextIdentifier()]() mutable {

ditto.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA224.cpp:54
&gt; +    workQueue.dispatch([digest = WTFMove(digest), message = WTFMove(message), callback = WTFMove(callback), identifier = context.contextIdentifier()]() mutable {

ditto.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA256.cpp:54
&gt; +    workQueue.dispatch([digest = WTFMove(digest), message = WTFMove(message), callback = WTFMove(callback), identifier = context.contextIdentifier()]() mutable {

ditto.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA384.cpp:54
&gt; +    workQueue.dispatch([digest = WTFMove(digest), message = WTFMove(message), callback = WTFMove(callback), identifier = context.contextIdentifier()]() mutable {

ditto.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA512.cpp:54
&gt; +    workQueue.dispatch([digest = WTFMove(digest), message = WTFMove(message), callback = WTFMove(callback), identifier = context.contextIdentifier()]() mutable {

ditto.

&gt; Source/WebCore/crypto/mac/CryptoKeyRSAMac.cpp:296
&gt; +    auto identifier = context-&gt;contextIdentifier();

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406265</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-13 15:32:03 -0700</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #6)
&gt; Comment on attachment 335725 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=335725&amp;action=review
&gt; 
&gt; Hi Youenn, thanks for making this patch. However, I don&apos;t think a lock is
&gt; necessary. A context can be referred to Document or WorkerGlobalScope, as
&gt; far as I understood.
&gt; 
&gt; In Document, the postTask method invokes callOnMainThread() which has a lock
&gt; already.
&gt; In WorkerGlobalScope, the postTask method ends up with
&gt; MessageQueue::append() which has a lock as well.

We obviously need the lock since the map of scriptExecutionContexts gets modified / queried from various threads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406266</commentid>
    <comment_count>9</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-13 15:36:07 -0700</bug_when>
    <thetext>&gt; In Document, the postTask method invokes callOnMainThread() which has a lock
&gt; already.
&gt; In WorkerGlobalScope, the postTask method ends up with
&gt; MessageQueue::append() which has a lock as well.
&gt; 
&gt; Therefore, I am not sure if adding a lock is useful here. I propose we
&gt; should just get rid of the context.ref() and context.deref() to see if that
&gt; works. r- because of the locking mechanism. Will talk to Youenn offline.

As Chris said, we are reading and modifying from a non main thread.
We in particular need to ensure that the context is stopped early in its destructor while actually posting the task.

&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        Use that method in Crypto instead of refing/unrefing  the context.
&gt; 
&gt; Extra space.

OK

&gt; &gt; Source/WebCore/dom/Document.cpp:571
&gt; &gt; +    allDocumentsMap().remove(m_identifier);
&gt; 
&gt; Is this relevant to this patch?

Not really, it seems more readable.

(In reply to Chris Dumez from comment #7)
&gt; Comment on attachment 335725 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=335725&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/crypto/CryptoAlgorithm.cpp:99
&gt; &gt; +        [operation = WTFMove(operation), callback = WTFMove(callback), exceptionCallback = WTFMove(exceptionCallback), identifier = context.contextIdentifier()]() mutable {
&gt; 
&gt; I think contextIdentifier would be a better name than identifier here.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406268</commentid>
    <comment_count>10</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-03-13 15:46:33 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; (In reply to Jiewen Tan from comment #6)
&gt; &gt; Comment on attachment 335725 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=335725&amp;action=review
&gt; &gt; 
&gt; &gt; Hi Youenn, thanks for making this patch. However, I don&apos;t think a lock is
&gt; &gt; necessary. A context can be referred to Document or WorkerGlobalScope, as
&gt; &gt; far as I understood.
&gt; &gt; 
&gt; &gt; In Document, the postTask method invokes callOnMainThread() which has a lock
&gt; &gt; already.
&gt; &gt; In WorkerGlobalScope, the postTask method ends up with
&gt; &gt; MessageQueue::append() which has a lock as well.
&gt; 
&gt; We obviously need the lock since the map of scriptExecutionContexts gets
&gt; modified / queried from various threads.

Let me rephrase. I don&apos;t understand what difference this extra layer of protection makes. Will talk to Youenn in person.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406272</commentid>
    <comment_count>11</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-03-13 16:01:43 -0700</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #10)
&gt; (In reply to Chris Dumez from comment #8)
&gt; &gt; (In reply to Jiewen Tan from comment #6)
&gt; &gt; &gt; Comment on attachment 335725 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=335725&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; Hi Youenn, thanks for making this patch. However, I don&apos;t think a lock is
&gt; &gt; &gt; necessary. A context can be referred to Document or WorkerGlobalScope, as
&gt; &gt; &gt; far as I understood.
&gt; &gt; &gt; 
&gt; &gt; &gt; In Document, the postTask method invokes callOnMainThread() which has a lock
&gt; &gt; &gt; already.
&gt; &gt; &gt; In WorkerGlobalScope, the postTask method ends up with
&gt; &gt; &gt; MessageQueue::append() which has a lock as well.
&gt; &gt; 
&gt; &gt; We obviously need the lock since the map of scriptExecutionContexts gets
&gt; &gt; modified / queried from various threads.
&gt; 
&gt; Let me rephrase. I don&apos;t understand what difference this extra layer of
&gt; protection makes. Will talk to Youenn in person.

Youenn explains that this patch tries to provide a more general way to postTask than just solving the bug. I am okay with that. I think renaming the title is necessary then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406285</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-13 16:23:44 -0700</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #11)
&gt; (In reply to Jiewen Tan from comment #10)
&gt; &gt; (In reply to Chris Dumez from comment #8)
&gt; &gt; &gt; (In reply to Jiewen Tan from comment #6)
&gt; &gt; &gt; &gt; Comment on attachment 335725 [details]
&gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; View in context:
&gt; &gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=335725&amp;action=review
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Hi Youenn, thanks for making this patch. However, I don&apos;t think a lock is
&gt; &gt; &gt; &gt; necessary. A context can be referred to Document or WorkerGlobalScope, as
&gt; &gt; &gt; &gt; far as I understood.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; In Document, the postTask method invokes callOnMainThread() which has a lock
&gt; &gt; &gt; &gt; already.
&gt; &gt; &gt; &gt; In WorkerGlobalScope, the postTask method ends up with
&gt; &gt; &gt; &gt; MessageQueue::append() which has a lock as well.
&gt; &gt; &gt; 
&gt; &gt; &gt; We obviously need the lock since the map of scriptExecutionContexts gets
&gt; &gt; &gt; modified / queried from various threads.
&gt; &gt; 
&gt; &gt; Let me rephrase. I don&apos;t understand what difference this extra layer of
&gt; &gt; protection makes. Will talk to Youenn in person.
&gt; 
&gt; Youenn explains that this patch tries to provide a more general way to
&gt; postTask than just solving the bug. I am okay with that. I think renaming
&gt; the title is necessary then.

I do not think it needs renaming. This is a way to fix flakiness in this crash.

If you believe you have a better way, let us know.

What you&apos;ve proposed so far is:
&quot;&quot;&quot;
I propose we should just get rid of the context.ref() and context.deref() to see if that works.
&quot;&quot;&quot;

I do not think this is OK. You cannot call postTask() on the context from your workQueue then because the ScriptExecutionContext may get destroyed on its thread while your workQueue is running.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406289</commentid>
    <comment_count>13</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-13 16:32:07 -0700</bug_when>
    <thetext>Ryosuke has some concern of locking when creating ScriptExecutionContext.
Plan is to lazily add the context to the map when needed, at identifier getter time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406291</commentid>
    <comment_count>14</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-03-13 16:40:18 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #12)
&gt; (In reply to Jiewen Tan from comment #11)
&gt; &gt; (In reply to Jiewen Tan from comment #10)
&gt; &gt; &gt; (In reply to Chris Dumez from comment #8)
&gt; &gt; &gt; &gt; (In reply to Jiewen Tan from comment #6)
&gt; &gt; &gt; &gt; &gt; Comment on attachment 335725 [details]
&gt; &gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; View in context:
&gt; &gt; &gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=335725&amp;action=review
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Hi Youenn, thanks for making this patch. However, I don&apos;t think a lock is
&gt; &gt; &gt; &gt; &gt; necessary. A context can be referred to Document or WorkerGlobalScope, as
&gt; &gt; &gt; &gt; &gt; far as I understood.
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; In Document, the postTask method invokes callOnMainThread() which has a lock
&gt; &gt; &gt; &gt; &gt; already.
&gt; &gt; &gt; &gt; &gt; In WorkerGlobalScope, the postTask method ends up with
&gt; &gt; &gt; &gt; &gt; MessageQueue::append() which has a lock as well.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; We obviously need the lock since the map of scriptExecutionContexts gets
&gt; &gt; &gt; &gt; modified / queried from various threads.
&gt; &gt; &gt; 
&gt; &gt; &gt; Let me rephrase. I don&apos;t understand what difference this extra layer of
&gt; &gt; &gt; protection makes. Will talk to Youenn in person.
&gt; &gt; 
&gt; &gt; Youenn explains that this patch tries to provide a more general way to
&gt; &gt; postTask than just solving the bug. I am okay with that. I think renaming
&gt; &gt; the title is necessary then.
&gt; 
&gt; I do not think it needs renaming. This is a way to fix flakiness in this
&gt; crash.
&gt; 
&gt; If you believe you have a better way, let us know.
&gt; 
&gt; What you&apos;ve proposed so far is:
&gt; &quot;&quot;&quot;
&gt; I propose we should just get rid of the context.ref() and context.deref() to
&gt; see if that works.
&gt; &quot;&quot;&quot;
&gt; 
&gt; I do not think this is OK. You cannot call postTask() on the context from
&gt; your workQueue then because the ScriptExecutionContext may get destroyed on
&gt; its thread while your workQueue is running.

You are right. I have some misunderstanding of the patch before. Now I walk myself through it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406317</commentid>
    <comment_count>15</comment_count>
      <attachid>335749</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-13 17:49:44 -0700</bug_when>
    <thetext>Created attachment 335749
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406399</commentid>
    <comment_count>16</comment_count>
      <attachid>335770</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-14 08:50:49 -0700</bug_when>
    <thetext>Created attachment 335770
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406423</commentid>
    <comment_count>17</comment_count>
      <attachid>335770</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-14 09:19:37 -0700</bug_when>
    <thetext>Comment on attachment 335770
Patch

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

&gt; Source/WebCore/crypto/CryptoAlgorithm.cpp:98
&gt; +    // There is no guarantee that callback and exceptionCallback will be destroyed in the thread in which they were created.

Shouldn&apos;t this be a FIXME comment?

&gt; Source/WebCore/crypto/mac/CryptoKeyRSAMac.cpp:299
&gt; +    // Fix this by using unique pointers and move them from one lambda to the other.

But then it won&apos;t necessarily be destroyed on the right thread, right?

&gt; Source/WebCore/dom/Document.cpp:572
&gt; +    // We need to remove from the contexts map very early in the destructor so that posting task to that Document from another thread is safe.

s/so that posting task to that Document/so that calling postTask() on this document/

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:70
&gt; +    static NeverDestroyed&lt;HashMap&lt;ScriptExecutionContextIdentifier, ScriptExecutionContext*&gt;&gt; contexts;

Please add an ASSERT(allScriptExecutionContextsMapLock().isLocked());

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:74
&gt; +static Lock&amp; allScriptExecutionContextsMapLock()

Should probably be moved up so you can add the assertion above.

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:104
&gt; +    if (!m_contextIdentifier.toUInt64()) {

Could we add a isValid() method to ObjectIdentifier ? I initially did not add it because I wasn&apos;t planning on adding a default constructor. However, now that we have a default constructor, I think we need such method.

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:105
&gt; +        Locker&lt;Lock&gt; locker(allScriptExecutionContextsMapLock());

I am not convinced this is thread safe, assuming this method can be called from several threads in parallel, because the check for an invalid identifier is outside the lock. 2 threads may end up thinking the identifier is invalid, then both generate a new identifier for the same document and add the context to the map twice with different identifiers. One way to fix this efficiently would be to add a second if (!m_contextIdentifier.isValid()) check *after* the locking.

Maybe we just need an assertion to make sure this method is always called from the scriptExecutionContext&apos;s context thread?

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:117
&gt; +    if (m_contextIdentifier.toUInt64()) {

I&apos;d suggest an early return. Note importantly, I am not convinced this is thread safe if contextIdentifier() can get called on another thread while removeFromContextsMap() is running, and after this valid identifier check. You might not remove yourself from the map, and then the other thread may add you to the map by calling contextIdentifier().

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:155
&gt; +        ASSERT(!allScriptExecutionContextsMap().contains(m_contextIdentifier));

I&apos;d suggest an ASSERT_WITH_MESSAGE() explaining that the subclass implementing postTask() should have removed us from the map already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406428</commentid>
    <comment_count>18</comment_count>
      <attachid>335770</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-14 09:58:34 -0700</bug_when>
    <thetext>Comment on attachment 335770
Patch

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

&gt;&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:105
&gt;&gt; +        Locker&lt;Lock&gt; locker(allScriptExecutionContextsMapLock());
&gt; 
&gt; I am not convinced this is thread safe, assuming this method can be called from several threads in parallel, because the check for an invalid identifier is outside the lock. 2 threads may end up thinking the identifier is invalid, then both generate a new identifier for the same document and add the context to the map twice with different identifiers. One way to fix this efficiently would be to add a second if (!m_contextIdentifier.isValid()) check *after* the locking.
&gt; 
&gt; Maybe we just need an assertion to make sure this method is always called from the scriptExecutionContext&apos;s context thread?

e.g. ASSERT(isContextThread());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406433</commentid>
    <comment_count>19</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-14 10:24:40 -0700</bug_when>
    <thetext>Thanks for the feedback, I&apos;ll add the assertions accordingly.
As of the thread safety potential issue related to contextIdentifier() getter, the model is to call it from context thread only. The pattern is usually to start posting a task from context thread, go to another thread and then go back to context thread.

(In reply to Chris Dumez from comment #17)
&gt; Comment on attachment 335770 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=335770&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/crypto/CryptoAlgorithm.cpp:98
&gt; &gt; +    // There is no guarantee that callback and exceptionCallback will be destroyed in the thread in which they were created.
&gt; 
&gt; Shouldn&apos;t this be a FIXME comment?

No, it is just a note so that someone calling this method should make sure that destroying lambdas on another thread is ok.
I can remove the comment if not really necessary.

If we really need to destroy these in the worker thread, we should change the implementation.
It is true that, we have a false sense of security by creating lambdas and passing them across threads. Maybe we should add a pattern that would allow these kind of lambdas-being-destroyed-in-a-specific-thread for simplicity, but they do not seem required, at least in WebCrypto implementation.

&gt; &gt; Source/WebCore/crypto/mac/CryptoKeyRSAMac.cpp:299
&gt; &gt; +    // Fix this by using unique pointers and move them from one lambda to the other.
&gt; 
&gt; But then it won&apos;t necessarily be destroyed on the right thread, right?

The callbacks should be made so that it is fine destroying them from another thread.

&gt; &gt; Source/WebCore/dom/Document.cpp:572
&gt; &gt; +    // We need to remove from the contexts map very early in the destructor so that posting task to that Document from another thread is safe.
&gt; 
&gt; s/so that posting task to that Document/so that calling postTask() on this
&gt; document/

OK

&gt; &gt; Source/WebCore/dom/ScriptExecutionContext.cpp:70
&gt; &gt; +    static NeverDestroyed&lt;HashMap&lt;ScriptExecutionContextIdentifier, ScriptExecutionContext*&gt;&gt; contexts;
&gt; 
&gt; Please add an ASSERT(allScriptExecutionContextsMapLock().isLocked());

OK

&gt; &gt; Source/WebCore/dom/ScriptExecutionContext.cpp:104
&gt; &gt; +    if (!m_contextIdentifier.toUInt64()) {
&gt; 
&gt; Could we add a isValid() method to ObjectIdentifier ? I initially did not
&gt; add it because I wasn&apos;t planning on adding a default constructor. However,
&gt; now that we have a default constructor, I think we need such method.

isValid or operator bool maybe?

&gt; &gt; Source/WebCore/dom/ScriptExecutionContext.cpp:105
&gt; &gt; +        Locker&lt;Lock&gt; locker(allScriptExecutionContextsMapLock());
&gt; 
&gt; I am not convinced this is thread safe, assuming this method can be called
&gt; from several threads in parallel, because the check for an invalid
&gt; identifier is outside the lock. 2 threads may end up thinking the identifier
&gt; is invalid, then both generate a new identifier for the same document and
&gt; add the context to the map twice with different identifiers. One way to fix
&gt; this efficiently would be to add a second if
&gt; (!m_contextIdentifier.isValid()) check *after* the locking.
&gt; 
&gt; Maybe we just need an assertion to make sure this method is always called
&gt; from the scriptExecutionContext&apos;s context thread?

Right, the getter should only be called from the context thread.
I haven&apos;t seen any use case for calling this getter from another thread.
I&apos;ll add the assertion for now.

&gt; &gt; Source/WebCore/dom/ScriptExecutionContext.cpp:155
&gt; &gt; +        ASSERT(!allScriptExecutionContextsMap().contains(m_contextIdentifier));
&gt; 
&gt; I&apos;d suggest an ASSERT_WITH_MESSAGE() explaining that the subclass
&gt; implementing postTask() should have removed us from the map already.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406474</commentid>
    <comment_count>20</comment_count>
      <attachid>335790</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-14 13:00:25 -0700</bug_when>
    <thetext>Created attachment 335790
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406496</commentid>
    <comment_count>21</comment_count>
      <attachid>335790</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-14 13:48:41 -0700</bug_when>
    <thetext>Comment on attachment 335790
Patch

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

r=me with changes.

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:119
&gt; +    if (m_contextIdentifier.toUInt64()) {

if (m_contextIdentifier) {

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:122
&gt; +            &quot;ScriptExecution subclass implementing postTask should have already removed itself from the map&quot;);

This assertion message does not make sense here.

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:156
&gt; +    if (m_contextIdentifier.toUInt64()) {

if (m_contextIdentifier) {

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:158
&gt; +        ASSERT(!allScriptExecutionContextsMap().contains(m_contextIdentifier));

This is the assertion that should have been an ASSERT_WITH_MESSAGE() and which should have used the message above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406514</commentid>
    <comment_count>22</comment_count>
      <attachid>335801</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-14 14:27:12 -0700</bug_when>
    <thetext>Created attachment 335801
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406528</commentid>
    <comment_count>23</comment_count>
      <attachid>335801</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-14 15:52:14 -0700</bug_when>
    <thetext>Comment on attachment 335801
Patch for landing

Clearing flags on attachment: 335801

Committed r229616: &lt;https://trac.webkit.org/changeset/229616&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406529</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-14 15:52:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406530</commentid>
    <comment_count>25</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-03-14 15:53:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/38477604&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335705</attachid>
            <date>2018-03-13 11:35:48 -0700</date>
            <delta_ts>2018-03-13 12:47:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183602-20180313113547.patch</filename>
            <type>text/plain</type>
            <size>22102</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQxODdmMDkxZWI1ZmJm
ZDM3YTNmZTlhM2M4YjZmNTU4NjdjYjNiOS4uNDhiMjg0MDE4NjkxNmZjNzAxODFmMjNjZmFhYjE4
ODliZGY3ZjM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE4LTAzLTEzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL1dlYkNyeXB0b0FQSS93cmFwS2V5X3Vud3JhcEtleS93cmFwS2V5X3Vu
d3JhcEtleS53b3JrZXIuaHRtbCBpcyBjcmFzaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNjAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIGEgbWFwIG9mIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgdGhhdCBpcyByZWFkL3dyaXRlIHByb3RlY3RlZCB1c2luZyBhIExvY2suCisgICAg
ICAgIFRoaXMgYWxsb3dzIGludHJvZHVjaW5nIHBvc3RUYXNrVG8gdGFraW5nIGEgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCBpZGVudGlmaWVyIGFuZCBjYWxsYWJsZSBmcm9tIGFueSB0aHJlYWQuCisg
ICAgICAgIFVzZSB0aGF0IG1ldGhvZCBpbiBDcnlwdG8gaW5zdGVhZCBvZiByZWZpbmcvdW5yZWZp
bmcgIHRoZSBjb250ZXh0LgorCisgICAgICAgIENvdmVyZWQgYnkgY3J5cHRvIHRlc3RzIG5vIGxv
bmdlciBmYWlsaW5nIG1fd29ya2VyR2xvYmFsU2NvcGUtPmhhc09uZVJlZigpIGFzc2VydGlvbi4K
KworICAgICAgICAqIGNyeXB0by9DcnlwdG9BbGdvcml0aG0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZGlzcGF0Y2hBbGdvcml0aG1PcGVyYXRpb24pOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobUVDREguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxn
b3JpdGhtRUNESDo6ZGVyaXZlQml0cyk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtU0hBMS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1T
SEExOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVNIQTIyNC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRp
Z2VzdCk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTI1Njo6ZGlnZXN0KToK
KyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QpOgorICAgICAg
ICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdCk6CisgICAgICAgICogY3J5
cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIpOgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvS2V5
UlNBTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6Z2VuZXJhdGVQYWly
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6On5Eb2N1bWVudCk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXBMb2NrKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVt
b3ZlRnJvbUNvbnRleHRzTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OmNoZWNrQ29uc2lzdGVuY3kgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OmNvbnRleHRJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjp+V29ya2Vy
R2xvYmFsU2NvcGUpOgorCiAyMDE4LTAzLTEyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KIAogICAgICAgICBDYWxsaW5nIHJlbW92ZVRyYWNrIHdpdGggUlRDUnRwU2VuZGVyIGRv
ZXMgbm90IHNldCBTZW5kZXJUcmFjayB0byBudWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9Dcnlw
dG9BbGdvcml0aG0uY3BwCmluZGV4IDU1OTNjZmI2NmI0ZTBhMmI0MTZkMTgzM2RhYzgwOGM2NWY5
MzZjMjkuLjliMTcwOTA5MjQ2MzZmMjcwMDM5OTQ0MWY2MjNlNzhiZmNkNmIxNzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uY3BwCkBAIC05NSwyNSArOTUsMjIgQEAg
RXhjZXB0aW9uT3I8c2l6ZV90PiBDcnlwdG9BbGdvcml0aG06OmdldEtleUxlbmd0aChjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXIKIHRlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdENhbGxiYWNr
VHlwZSwgdHlwZW5hbWUgT3BlcmF0aW9uVHlwZT4KIHN0YXRpYyB2b2lkIGRpc3BhdGNoQWxnb3Jp
dGhtT3BlcmF0aW9uKFdvcmtRdWV1ZSYgd29ya1F1ZXVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBSZXN1bHRDYWxsYmFja1R5cGUmJiBjYWxsYmFjaywgQ3J5cHRvQWxnb3JpdGht
OjpFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBPcGVyYXRpb25UeXBlJiYg
b3BlcmF0aW9uKQogewotICAgIGNvbnRleHQucmVmKCk7CiAgICAgd29ya1F1ZXVlLmRpc3BhdGNo
KAotICAgICAgICBbb3BlcmF0aW9uID0gV1RGTW92ZShvcGVyYXRpb24pLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2Fs
bGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICAgICAgW29wZXJhdGlvbiA9IFdURk1v
dmUob3BlcmF0aW9uKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgaWRlbnRpZmllciA9IGNvbnRleHQu
Y29udGV4dElkZW50aWZpZXIoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGF1dG8gcmVzdWx0
ID0gb3BlcmF0aW9uKCk7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7
CiAgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tz
IGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAg
ICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAgICAgICAgICAgIFtlYyA9IHJl
c3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhpZGVudGlmaWVyLAorICAgICAgICAgICAgICAgICAg
ICBbZWMgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxi
YWNrKV0oYXV0byYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNr
KGVjKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKICAgICAgICAg
ICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0
ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAg
ICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtyZXN1bHQgPSByZXN1bHQucmVs
ZWFzZVJldHVyblZhbHVlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlv
bkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBv
c3RUYXNrVG8oaWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICBbcmVzdWx0ID0gcmVzdWx0LnJl
bGVhc2VSZXR1cm5WYWx1ZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRp
b25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShhdXRvJikgewogICAgICAg
ICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LmRlcmVmKCk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNE
SC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1F
Q0RILmNwcAppbmRleCAzNzdmOGM2YjAzZjI2ZDQyZDY0ODM1NDJjZDc1N2Y2OTAwOTI2MDI0Li43
YmE4NjE5ZDcwZTgzNzFhOGNmOGExOTI1MTgyNWRhZjNlMTI0NWUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RILmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RILmNw
cApAQCAtMTE2LDE1ICsxMTYsMTIgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1FQ0RIOjpkZXJpdmVC
aXRzKHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYKIAogICAgIC8v
IFRoaXMgaXMgYSBzcGVjaWFsIGNhc2UgdGhhdCBjYW4ndCB1c2UgZGlzcGF0Y2hPcGVyYXRpb24o
KSBiZWNhdXNlIGl0IGJ1bmRsZXMKICAgICAvLyB0aGUgcmVzdWx0IHZhbGlkYXRpb24gYW5kIGNh
bGxiYWNrIGRpc3BhdGNoIGludG8gdW5pZmllZENhbGxiYWNrLgotICAgIGNvbnRleHQucmVmKCk7
CiAgICAgd29ya1F1ZXVlLmRpc3BhdGNoKAotICAgICAgICBbYmFzZUtleSA9IFdURk1vdmUoYmFz
ZUtleSksIHB1YmxpY0tleSA9IGVjUGFyYW1ldGVycy5wdWJsaWNLZXkucmVsZWFzZU5vbk51bGwo
KSwgbGVuZ3RoLCB1bmlmaWVkQ2FsbGJhY2sgPSBXVEZNb3ZlKHVuaWZpZWRDYWxsYmFjayksICZj
b250ZXh0XSgpIG11dGFibGUgeworICAgICAgICBbYmFzZUtleSA9IFdURk1vdmUoYmFzZUtleSks
IHB1YmxpY0tleSA9IGVjUGFyYW1ldGVycy5wdWJsaWNLZXkucmVsZWFzZU5vbk51bGwoKSwgbGVu
Z3RoLCB1bmlmaWVkQ2FsbGJhY2sgPSBXVEZNb3ZlKHVuaWZpZWRDYWxsYmFjayksIGlkZW50aWZp
ZXIgPSBjb250ZXh0LmNvbnRleHRJZGVudGlmaWVyKCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBhdXRvIGRlcml2ZWRLZXkgPSBwbGF0Zm9ybURlcml2ZUJpdHMoZG93bmNhc3Q8Q3J5cHRvS2V5
RUM+KGJhc2VLZXkuZ2V0KCkpLCBkb3duY2FzdDxDcnlwdG9LZXlFQz4ocHVibGljS2V5LmdldCgp
KSk7Ci0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtkZXJp
dmVkS2V5ID0gV1RGTW92ZShkZXJpdmVkS2V5KSwgbGVuZ3RoLCB1bmlmaWVkQ2FsbGJhY2sgPSBX
VEZNb3ZlKHVuaWZpZWRDYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IG11dGFibGUgewotICAgICAgICAgICAgICAgICAgICB1bmlmaWVkQ2FsbGJhY2soV1RGTW92ZShk
ZXJpdmVkS2V5KSwgbGVuZ3RoKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigp
OwotICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6cG9zdFRhc2tUbyhpZGVudGlmaWVyLCBbZGVyaXZlZEtleSA9IFdURk1vdmUoZGVyaXZlZEtl
eSksIGxlbmd0aCwgdW5pZmllZENhbGxiYWNrID0gV1RGTW92ZSh1bmlmaWVkQ2FsbGJhY2spXShh
dXRvJikgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgdW5pZmllZENhbGxiYWNrKFdURk1vdmUo
ZGVyaXZlZEtleSksIGxlbmd0aCk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVNIQTEuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtU0hBMS5jcHAKaW5kZXggOTQ3NDA5YzhiMjYwNDllODIzMWY3M2IyNGMxZTI2YzNjYmQy
MWM2Yy4uYzI1MWVkZTMzMTU4ZTJjYWRkM2FjMTAzZWI5NjE3ZDE5OGYyYmViYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
U0hBMS5jcHAKQEAgLTUxLDEzICs1MSwxMSBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTE6OmRp
Z2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbAogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUu
ZGlzcGF0Y2goW2RpZ2VzdCA9IFdURk1vdmUoZGlnZXN0KSwgbWVzc2FnZSA9IFdURk1vdmUobWVz
c2FnZSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUg
eworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChbZGlnZXN0ID0gV1RGTW92ZShkaWdlc3QpLCBtZXNz
YWdlID0gV1RGTW92ZShtZXNzYWdlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgaWRl
bnRpZmllciA9IGNvbnRleHQuY29udGV4dElkZW50aWZpZXIoKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgZGlnZXN0LT5hZGRCeXRlcyhtZXNzYWdlLmRhdGEoKSwgbWVzc2FnZS5zaXplKCkpOwogICAg
ICAgICBhdXRvIHJlc3VsdCA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKLSAgICAgICAgY29udGV4
dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gV1RGTW92
ZShyZXN1bHQpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oaWRlbnRpZmllciwgW2NhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oYXV0byYpIHsKICAg
ICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7
CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAKaW5kZXggZDkwNjc4
M2E2NGMzNGVlNzdiYzU3OTdlZjQ4ODlkNTJjMWY0NjJmZC4uYTkxYjk2MDQzMGFiYWQ4MzNjMTU0
OTA4YjUwNjBiMzc4MTM2Y2Q5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwCkBAIC01MSwxMyArNTEs
MTEgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4m
JiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtkaWdlc3QgPSBXVEZN
b3ZlKGRpZ2VzdCksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICB3b3JrUXVldWUuZGlzcGF0
Y2goW2RpZ2VzdCA9IFdURk1vdmUoZGlnZXN0KSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSks
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGlkZW50aWZpZXIgPSBjb250ZXh0LmNvbnRl
eHRJZGVudGlmaWVyKCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMobWVz
c2FnZS5kYXRhKCksIG1lc3NhZ2Uuc2l6ZSgpKTsKICAgICAgICAgYXV0byByZXN1bHQgPSBkaWdl
c3QtPmNvbXB1dGVIYXNoKCk7Ci0gICAgICAgIGNvbnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpw
b3N0VGFza1RvKGlkZW50aWZpZXIsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZXN1
bHQgPSBXVEZNb3ZlKHJlc3VsdCldKGF1dG8mKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhyZXN1
bHQpOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwogICAgICAgICB9KTsKICAgICB9KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVNIQTI1Ni5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1TSEEyNTYuY3BwCmluZGV4IDY0MjcxZmE5YWE2MjgzMzg5ODA4NmIyZGI1MTFk
YWYxNjhkM2Y5MGMuLjFiYjJiYWFhMTA1ODg0MzYwZTM0Zjg5YjFmNTE1MmFiOTAxNzhhNmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVNIQTI1Ni5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtU0hBMjU2LmNwcApAQCAtNTEsMTMgKzUxLDExIEBAIHZvaWQgQ3J5cHRvQWxnb3Jp
dGhtU0hBMjU2OjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJh
Y2smJiBjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb250ZXh0LnJlZigpOwotICAg
IHdvcmtRdWV1ZS5kaXNwYXRjaChbZGlnZXN0ID0gV1RGTW92ZShkaWdlc3QpLCBtZXNzYWdlID0g
V1RGTW92ZShtZXNzYWdlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgJmNvbnRleHRd
KCkgbXV0YWJsZSB7CisgICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtkaWdlc3QgPSBXVEZNb3ZlKGRp
Z2VzdCksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spLCBpZGVudGlmaWVyID0gY29udGV4dC5jb250ZXh0SWRlbnRpZmllcigpXSgpIG11dGFi
bGUgewogICAgICAgICBkaWdlc3QtPmFkZEJ5dGVzKG1lc3NhZ2UuZGF0YSgpLCBtZXNzYWdlLnNp
emUoKSk7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gZGlnZXN0LT5jb21wdXRlSGFzaCgpOwotICAg
ICAgICBjb250ZXh0LnBvc3RUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZXN1
bHQgPSBXVEZNb3ZlKHJlc3VsdCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsK
KyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhpZGVudGlmaWVyLCBb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXShh
dXRvJikgewogICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgIGNvbnRl
eHQuZGVyZWYoKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcApp
bmRleCBmMjJiYTZmZWNmMDMxYWZlMGIyMjNhZTk3Y2I3N2E2NjFkMzRlYmI4Li5hYzVhNzBmNjll
NTc0NDg4ZWUwMWZkNGM2NDI3NDlkZWFlOTFmY2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAKQEAg
LTUxLDEzICs1MSwxMSBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTM4NDo6ZGlnZXN0KFZlY3Rv
cjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgYwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW2Rp
Z2VzdCA9IFdURk1vdmUoZGlnZXN0KSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgeworICAgIHdvcmtR
dWV1ZS5kaXNwYXRjaChbZGlnZXN0ID0gV1RGTW92ZShkaWdlc3QpLCBtZXNzYWdlID0gV1RGTW92
ZShtZXNzYWdlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgaWRlbnRpZmllciA9IGNv
bnRleHQuY29udGV4dElkZW50aWZpZXIoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgZGlnZXN0LT5h
ZGRCeXRlcyhtZXNzYWdlLmRhdGEoKSwgbWVzc2FnZS5zaXplKCkpOwogICAgICAgICBhdXRvIHJl
c3VsdCA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKLSAgICAgICAgY29udGV4dC5wb3N0VGFzayhb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OnBvc3RUYXNrVG8oaWRlbnRpZmllciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oYXV0byYpIHsKICAgICAgICAgICAgIGNh
bGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CiAgICAgICAgIH0p
OwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAKaW5kZXggMTQxMTFkMjM5NDhiZWNiNjg0
YTZiYWQwOGM4OGM2MWZiOTMwYmNiMi4uNDc2ZGRjYmViNzJjYzI5MDdhNGQ2NDBjZGQ4MzBmNWY3
ZTM5N2YyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtU0hBNTEyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwCkBAIC01MSwxMyArNTEsMTEgQEAgdm9pZCBD
cnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBW
ZWN0b3JDYWxsYmFjayYmIGMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbnRleHQu
cmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtkaWdlc3QgPSBXVEZNb3ZlKGRpZ2VzdCks
IG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICB3b3JrUXVldWUuZGlzcGF0Y2goW2RpZ2VzdCA9
IFdURk1vdmUoZGlnZXN0KSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIGlkZW50aWZpZXIgPSBjb250ZXh0LmNvbnRleHRJZGVudGlmaWVy
KCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMobWVzc2FnZS5kYXRhKCks
IG1lc3NhZ2Uuc2l6ZSgpKTsKICAgICAgICAgYXV0byByZXN1bHQgPSBkaWdlc3QtPmNvbXB1dGVI
YXNoKCk7Ci0gICAgICAgIGNvbnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgeworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKGlk
ZW50aWZpZXIsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZXN1bHQgPSBXVEZNb3Zl
KHJlc3VsdCldKGF1dG8mKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAg
ICAgICAgY29udGV4dC5kZXJlZigpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNwcAppbmRl
eCA5MWNiNjQ0ODhiMzFiODg5ZTBkZmY5MTJhZjliYzIwOGRmNWYwYWE5Li4wODAyMDk5NTQ0Yzg0
ZDNkYjE4MzcwNjNiNDk3ZTU5ZGJkZmI2ZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwCkBAIC0yMzEsMTQgKzIzMSwxMiBA
QCB2b2lkIENyeXB0b0tleVJTQTo6Z2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIgYWxnb3JpdGhtLCBDcnlwdG9BbGdvcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
Y29udGV4dC0+cmVmKCk7CiAgICAgY29udGV4dC0+cG9zdFRhc2soCi0gICAgICAgIFthbGdvcml0
aG0sIGhhc2gsIGhhc0hhc2gsIGV4dHJhY3RhYmxlLCB1c2FnZSwgcHVibGljS2V5U2V4cCA9IHB1
YmxpY0tleVNleHAucmVsZWFzZSgpLCBwcml2YXRlS2V5U2V4cCA9IHByaXZhdGVLZXlTZXhwLnJl
bGVhc2UoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIFthbGdvcml0aG0sIGhhc2gsIGhhc0hh
c2gsIGV4dHJhY3RhYmxlLCB1c2FnZSwgcHVibGljS2V5U2V4cCA9IHB1YmxpY0tleVNleHAucmVs
ZWFzZSgpLCBwcml2YXRlS2V5U2V4cCA9IHByaXZhdGVLZXlTZXhwLnJlbGVhc2UoKSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYpIG11dGFibGUgewogICAgICAgICAgICAgYXV0
byBwdWJsaWNLZXkgPSBDcnlwdG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gsIGhhc0hh
c2gsIENyeXB0b0tleVR5cGU6OlB1YmxpYywgcHVibGljS2V5U2V4cCwgdHJ1ZSwgdXNhZ2UpOwog
ICAgICAgICAgICAgYXV0byBwcml2YXRlS2V5ID0gQ3J5cHRvS2V5UlNBOjpjcmVhdGUoYWxnb3Jp
dGhtLCBoYXNoLCBoYXNIYXNoLCBDcnlwdG9LZXlUeXBlOjpQcml2YXRlLCBwcml2YXRlS2V5U2V4
cCwgZXh0cmFjdGFibGUsIHVzYWdlKTsKIAogICAgICAgICAgICAgY2FsbGJhY2soQ3J5cHRvS2V5
UGFpciB7IFdURk1vdmUocHVibGljS2V5KSwgV1RGTW92ZShwcml2YXRlS2V5KSB9KTsKLSAgICAg
ICAgICAgIGNvbnRleHQuZGVyZWYoKTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcAppbmRleCBiYzAyYzI5MmQ0NTRlY2Uz
NzVlZDhjMzcwMjUzYzlmMzJhNDNhYjZhLi4wZDJiMTgwOTMzNGE0OWFiNTgxNDk1YWQ1MDBjNDlh
YWEzZTEzZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0tl
eVJTQU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FN
YWMuY3BwCkBAIC0yOTMsMjQgKzI5MywyNCBAQCB2b2lkIENyeXB0b0tleVJTQTo6Z2VuZXJhdGVQ
YWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGhtLCBDcnlwdG9BbGdvcgogICAg
IC8vIFdlIG9ubHkgdXNlIHRoZSBjYWxsYmFjayBmdW5jdGlvbnMgd2hlbiBiYWNrIG9uIHRoZSBt
YWluL3dvcmtlciB0aHJlYWQsIGJ1dCBjYXB0dXJlZCB2YXJpYWJsZXMgYXJlIGNvcGllZCBvbiBh
IHNlY29uZGFyeSB0aHJlYWQgdG9vLgogICAgIEtleVBhaXJDYWxsYmFjayogbG9jYWxDYWxsYmFj
ayA9IG5ldyBLZXlQYWlyQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpOwogICAgIFZvaWRDYWxs
YmFjayogbG9jYWxGYWlsdXJlQ2FsbGJhY2sgPSBuZXcgVm9pZENhbGxiYWNrKFdURk1vdmUoZmFp
bHVyZUNhbGxiYWNrKSk7Ci0gICAgY29udGV4dC0+cmVmKCk7CisgICAgYXV0byBpZGVudGlmaWVy
ID0gY29udGV4dC0+Y29udGV4dElkZW50aWZpZXIoKTsKIAorICAgIC8vIEZJWE1FOiBUaGVyZSBp
cyBhIHJpc2sgdGhhdCBsb2NhbENhbGxiYWNrIGFuZCBsb2NhbEZhaWx1cmVDYWxsYmFjayBhcmUg
bmV2ZXIgZnJlZWQuCisgICAgLy8gRml4IHRoaXMgYnkgdXNpbmcgdW5pcXVlIHBvaW50ZXJzIGFu
ZCBtb3ZlIHRoZW0gZnJvbSBvbmUgbGFtYmRhIHRvIHRoZSBvdGhlci4KICAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RF
RkFVTFQsIDApLCBeewotICAgICAgICBBU1NFUlQoY29udGV4dCk7CiAgICAgICAgIENDUlNBQ3J5
cHRvclJlZiBjY1B1YmxpY0tleTsKICAgICAgICAgQ0NSU0FDcnlwdG9yUmVmIGNjUHJpdmF0ZUtl
eTsKICAgICAgICAgQ0NDcnlwdG9yU3RhdHVzIHN0YXR1cyA9IENDUlNBQ3J5cHRvckdlbmVyYXRl
UGFpcihtb2R1bHVzTGVuZ3RoLCBlLCAmY2NQdWJsaWNLZXksICZjY1ByaXZhdGVLZXkpOwogICAg
ICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkNvdWxkIG5vdCBn
ZW5lcmF0ZSBhIGtleSBwYWlyLCBzdGF0dXMgJWQiLCBzdGF0dXMpOwotICAgICAgICAgICAgY29u
dGV4dC0+cG9zdFRhc2soW2xvY2FsQ2FsbGJhY2ssIGxvY2FsRmFpbHVyZUNhbGxiYWNrXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0Ojpwb3N0VGFza1RvKGlkZW50aWZpZXIsIFtsb2NhbENhbGxiYWNrLCBsb2NhbEZh
aWx1cmVDYWxsYmFja10oYXV0byYpIHsKICAgICAgICAgICAgICAgICAoKmxvY2FsRmFpbHVyZUNh
bGxiYWNrKSgpOwogICAgICAgICAgICAgICAgIGRlbGV0ZSBsb2NhbENhbGxiYWNrOwogICAgICAg
ICAgICAgICAgIGRlbGV0ZSBsb2NhbEZhaWx1cmVDYWxsYmFjazsKLSAgICAgICAgICAgICAgICBj
b250ZXh0LmRlcmVmKCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQotICAgICAgICBjb250ZXh0LT5wb3N0VGFzayhbYWxnb3JpdGhtLCBoYXNoLCBoYXNI
YXNoLCBleHRyYWN0YWJsZSwgdXNhZ2UsIGxvY2FsQ2FsbGJhY2ssIGxvY2FsRmFpbHVyZUNhbGxi
YWNrLCBjY1B1YmxpY0tleSwgY2NQcml2YXRlS2V5XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSB7CisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oaWRl
bnRpZmllciwgW2FsZ29yaXRobSwgaGFzaCwgaGFzSGFzaCwgZXh0cmFjdGFibGUsIHVzYWdlLCBs
b2NhbENhbGxiYWNrLCBsb2NhbEZhaWx1cmVDYWxsYmFjaywgY2NQdWJsaWNLZXksIGNjUHJpdmF0
ZUtleV0oYXV0byYpIHsKICAgICAgICAgICAgIGF1dG8gcHVibGljS2V5ID0gQ3J5cHRvS2V5UlNB
OjpjcmVhdGUoYWxnb3JpdGhtLCBoYXNoLCBoYXNIYXNoLCBDcnlwdG9LZXlUeXBlOjpQdWJsaWMs
IGNjUHVibGljS2V5LCB0cnVlLCB1c2FnZSk7CiAgICAgICAgICAgICBhdXRvIHByaXZhdGVLZXkg
PSBDcnlwdG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gsIGhhc0hhc2gsIENyeXB0b0tl
eVR5cGU6OlByaXZhdGUsIGNjUHJpdmF0ZUtleSwgZXh0cmFjdGFibGUsIHVzYWdlKTsKIApAQCAt
MzE4LDcgKzMxOCw2IEBAIHZvaWQgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIoQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0sIENyeXB0b0FsZ29yCiAKICAgICAgICAgICAgIGRl
bGV0ZSBsb2NhbENhbGxiYWNrOwogICAgICAgICAgICAgZGVsZXRlIGxvY2FsRmFpbHVyZUNhbGxi
YWNrOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwogICAgICAgICB9KTsKICAgICB9KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDJiYzIwNjU1ODFlMDEwMWIwYWE1MzlmMDRm
MGIyODRkYjYwZmI0ZjEuLmFmNzhjMGE5MDE2YmNkZDM1MjI0MGU4ZmIzYjE2YTBjZTBlYjY1YzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTY3LDggKzU2Nyw5IEBAIFJlZjxEb2N1bWVu
dD4gRG9jdW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgY29udGV4dERvY3VtZW50KQogCiBEb2N1bWVu
dDo6fkRvY3VtZW50KCkKIHsKLSAgICBib29sIHdhc1JlbW92ZWQgPSBhbGxEb2N1bWVudHNNYXAo
KS5yZW1vdmUobV9pZGVudGlmaWVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHdhc1JlbW92ZWQsIHdh
c1JlbW92ZWQpOworICAgIEFTU0VSVChhbGxEb2N1bWVudHNNYXAoKS5jb250YWlucyhtX2lkZW50
aWZpZXIpKTsKKyAgICBhbGxEb2N1bWVudHNNYXAoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKKyAg
ICByZW1vdmVGcm9tQ29udGV4dHNNYXAoKTsKIAogICAgIEFTU0VSVCghcmVuZGVyVmlldygpKTsK
ICAgICBBU1NFUlQobV9wYWdlQ2FjaGVTdGF0ZSAhPSBJblBhZ2VDYWNoZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggNTFlMzFkMzhlZjlj
MzZjNmQ2NzZmNDQwNmJlMzZjMTExN2NmOTM4Mi4uZGNkYjZjMmU0ZGRmNDc3OTFjYjA5NjE3YmI4
NjkzNTljYzEyMTVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcApAQCAtNjUsNiArNjUsMTggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKK3N0YXRpYyBIYXNoTWFwPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kj4mIGFsbFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRzTWFwKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+
PiBjb250ZXh0czsKKyAgICByZXR1cm4gY29udGV4dHM7Cit9CisKK3N0YXRpYyBMb2NrJiBhbGxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2soKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxMb2NrPiBsb2NrOworICAgIHJldHVybiBsb2NrOworfQorCiBzdHJ1Y3QgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6UGVuZGluZ0V4Y2VwdGlvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CkBAIC04NCw3ICs5NiwxOCBAQCBwdWJsaWM6CiB9OwogCiBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKKyAgICA6IG1fY29udGV4
dElkZW50aWZpZXIoZ2VuZXJhdGVUaHJlYWRTYWZlT2JqZWN0SWRlbnRpZmllcjxTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllclR5cGU+KCkpCit7CisgICAgTG9ja2VyPExvY2s+IGxvY2tl
cihhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2soKSk7CisgICAgQVNTRVJUKCFhbGxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpLmNvbnRhaW5zKG1fY29udGV4dElkZW50aWZpZXIp
KTsKKyAgICBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpLmFkZChtX2NvbnRleHRJZGVu
dGlmaWVyLCB0aGlzKTsKK30KKwordm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZW1vdmVG
cm9tQ29udGV4dHNNYXAoKQogeworICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoYWxsU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dHNNYXBMb2NrKCkpOworICAgIEFTU0VSVChhbGxTY3JpcHRFeGVjdXRpb25D
b250ZXh0c01hcCgpLmNvbnRhaW5zKG1fY29udGV4dElkZW50aWZpZXIpKTsKKyAgICBhbGxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0c01hcCgpLnJlbW92ZShtX2NvbnRleHRJZGVudGlmaWVyKTsKIH0K
IAogI2lmIEFTU0VSVF9ESVNBQkxFRApAQCAtMTE2LDYgKzEzOSw5IEBAIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6On5TY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKICAgICBjaGVja0NvbnNpc3RlbmN5
KCk7CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgTG9ja2VyPExvY2s+IGxvY2tlcihhbGxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2soKSk7CisgICAgQVNTRVJUKCFhbGxTY3JpcHRF
eGVjdXRpb25Db250ZXh0c01hcCgpLmNvbnRhaW5zKG1fY29udGV4dElkZW50aWZpZXIpKTsKKwog
ICAgIG1faW5TY3JpcHRFeGVjdXRpb25Db250ZXh0RGVzdHJ1Y3RvciA9IHRydWU7CiAjZW5kaWYK
IApAQCAtNTYwLDYgKzU4NiwxOCBAQCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyKiBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpzZXJ2aWNlV29ya2VyQ29udGFpbmVyKCkKICAgICByZXR1cm4gbmF2aWdh
dG9yID8gJm5hdmlnYXRvci0+c2VydmljZVdvcmtlcigpIDogbnVsbHB0cjsKIH0KIAorYm9vbCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFRhc2smJiB0YXNrKQoreworICAgIExvY2tlcjxMb2NrPiBs
b2NrZXIoYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXBMb2NrKCkpOworICAgIGF1dG8qIGNv
bnRleHQgPSBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpLmdldChpZGVudGlmaWVyKTsK
KworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29udGV4
dC0+cG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhjb25zdCBEb2N1bWVudE9yV29ya2Vy
SWRlbnRpZmllciYgY29udGV4dElkZW50aWZpZXIsIFdURjo6RnVuY3Rpb248dm9pZChTY3JpcHRF
eGVjdXRpb25Db250ZXh0Jik+JiYgdGFzaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggYWY3
NTAyMDcxYTVlZjllZDdjOGI4YTlhNDBiNjg4ZjZkOGQ5YjE0OS4uYjYwMmNhODA2YmU3ZGFhNzAz
NzJhNmU4ZGZkZDBhMWFjMzBmYWI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oCkBAIC03OCw2ICs3OCw5IEBAIG5hbWVzcGFjZSBJREJDbGllbnQgewog
Y2xhc3MgSURCQ29ubmVjdGlvblByb3h5OwogfQogCitlbnVtIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRp
ZmllciA9IE9iamVjdElkZW50aWZpZXI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXJU
eXBlPjsKKwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCA6IHB1YmxpYyBTZWN1cml0eUNv
bnRleHQgewogcHVibGljOgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTI1Myw2
ICsyNTYsOSBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBwb3N0
VGFza1RvKGNvbnN0IERvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVyJiwgV1RGOjpGdW5jdGlvbjx2
b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJik7CiAjZW5kaWYKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgYm9vbCBwb3N0VGFza1RvKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyLCBUYXNrJiYpOworCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgY29u
dGV4dElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRJZGVudGlmaWVyOyB9CiAK
IHByb3RlY3RlZDoKICAgICBjbGFzcyBBZGRDb25zb2xlTWVzc2FnZVRhc2sgOiBwdWJsaWMgVGFz
ayB7CkBAIC0yNzUsNiArMjgxLDcgQEAgcHJvdGVjdGVkOgogICAgIEFjdGl2ZURPTU9iamVjdDo6
UmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb25Gb3JTdXNwZW5kaW5nQWN0aXZlRE9NT2JqZWN0cygp
IGNvbnN0IHsgcmV0dXJuIG1fcmVhc29uRm9yU3VzcGVuZGluZ0FjdGl2ZURPTU9iamVjdHM7IH0K
IAogICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CisgICAgdm9pZCByZW1vdmVG
cm9tQ29udGV4dHNNYXAoKTsKIAogcHJpdmF0ZToKICAgICAvLyBUaGUgZm9sbG93aW5nIGFkZE1l
c3NhZ2UgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZC4KQEAgLTMyOCw2ICszMzUsNyBAQCBwcml2YXRl
OgogI2VuZGlmCiAKICAgICBTdHJpbmcgbV9kb21haW5Gb3JDYWNoZVBhcnRpdGlvbjsKKyAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBtX2NvbnRleHRJZGVudGlmaWVyOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmNwcAppbmRleCA0MTVhYmFjMzBlNTM0MmFiZGMzMGQyYWIxNTk2Y2YzYjRl
YzZiOGQ1Li5lNmU4MDg4MzQ4OGQyODFiOGJiMmYzZDAwZGMxZTRhMGI2MTBmOTUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtODksNiArODks
NyBAQCBXb3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgYwogV29ya2VyR2xvYmFsU2NvcGU6On5Xb3JrZXJH
bG9iYWxTY29wZSgpCiB7CiAgICAgQVNTRVJUKHRocmVhZCgpLnRocmVhZCgpID09ICZUaHJlYWQ6
OmN1cnJlbnQoKSk7CisgICAgcmVtb3ZlRnJvbUNvbnRleHRzTWFwKCk7CiAKICAgICBtX3BlcmZv
cm1hbmNlID0gbnVsbHB0cjsKICAgICBtX2NyeXB0byA9IG51bGxwdHI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335714</attachid>
            <date>2018-03-13 12:47:49 -0700</date>
            <delta_ts>2018-03-13 13:03:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183602-20180313124749.patch</filename>
            <type>text/plain</type>
            <size>22294</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQxODdmMDkxZWI1ZmJm
ZDM3YTNmZTlhM2M4YjZmNTU4NjdjYjNiOS4uNDhiMjg0MDE4NjkxNmZjNzAxODFmMjNjZmFhYjE4
ODliZGY3ZjM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE4LTAzLTEzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL1dlYkNyeXB0b0FQSS93cmFwS2V5X3Vud3JhcEtleS93cmFwS2V5X3Vu
d3JhcEtleS53b3JrZXIuaHRtbCBpcyBjcmFzaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNjAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIGEgbWFwIG9mIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgdGhhdCBpcyByZWFkL3dyaXRlIHByb3RlY3RlZCB1c2luZyBhIExvY2suCisgICAg
ICAgIFRoaXMgYWxsb3dzIGludHJvZHVjaW5nIHBvc3RUYXNrVG8gdGFraW5nIGEgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCBpZGVudGlmaWVyIGFuZCBjYWxsYWJsZSBmcm9tIGFueSB0aHJlYWQuCisg
ICAgICAgIFVzZSB0aGF0IG1ldGhvZCBpbiBDcnlwdG8gaW5zdGVhZCBvZiByZWZpbmcvdW5yZWZp
bmcgIHRoZSBjb250ZXh0LgorCisgICAgICAgIENvdmVyZWQgYnkgY3J5cHRvIHRlc3RzIG5vIGxv
bmdlciBmYWlsaW5nIG1fd29ya2VyR2xvYmFsU2NvcGUtPmhhc09uZVJlZigpIGFzc2VydGlvbi4K
KworICAgICAgICAqIGNyeXB0by9DcnlwdG9BbGdvcml0aG0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZGlzcGF0Y2hBbGdvcml0aG1PcGVyYXRpb24pOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobUVDREguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxn
b3JpdGhtRUNESDo6ZGVyaXZlQml0cyk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtU0hBMS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1T
SEExOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVNIQTIyNC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRp
Z2VzdCk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTI1Njo6ZGlnZXN0KToK
KyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QpOgorICAgICAg
ICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdCk6CisgICAgICAgICogY3J5
cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIpOgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvS2V5
UlNBTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6Z2VuZXJhdGVQYWly
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6On5Eb2N1bWVudCk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXBMb2NrKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVt
b3ZlRnJvbUNvbnRleHRzTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OmNoZWNrQ29uc2lzdGVuY3kgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OmNvbnRleHRJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjp+V29ya2Vy
R2xvYmFsU2NvcGUpOgorCiAyMDE4LTAzLTEyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KIAogICAgICAgICBDYWxsaW5nIHJlbW92ZVRyYWNrIHdpdGggUlRDUnRwU2VuZGVyIGRv
ZXMgbm90IHNldCBTZW5kZXJUcmFjayB0byBudWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9Dcnlw
dG9BbGdvcml0aG0uY3BwCmluZGV4IDU1OTNjZmI2NmI0ZTBhMmI0MTZkMTgzM2RhYzgwOGM2NWY5
MzZjMjkuLjliMTcwOTA5MjQ2MzZmMjcwMDM5OTQ0MWY2MjNlNzhiZmNkNmIxNzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uY3BwCkBAIC05NSwyNSArOTUsMjIgQEAg
RXhjZXB0aW9uT3I8c2l6ZV90PiBDcnlwdG9BbGdvcml0aG06OmdldEtleUxlbmd0aChjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXIKIHRlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdENhbGxiYWNr
VHlwZSwgdHlwZW5hbWUgT3BlcmF0aW9uVHlwZT4KIHN0YXRpYyB2b2lkIGRpc3BhdGNoQWxnb3Jp
dGhtT3BlcmF0aW9uKFdvcmtRdWV1ZSYgd29ya1F1ZXVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBSZXN1bHRDYWxsYmFja1R5cGUmJiBjYWxsYmFjaywgQ3J5cHRvQWxnb3JpdGht
OjpFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBPcGVyYXRpb25UeXBlJiYg
b3BlcmF0aW9uKQogewotICAgIGNvbnRleHQucmVmKCk7CiAgICAgd29ya1F1ZXVlLmRpc3BhdGNo
KAotICAgICAgICBbb3BlcmF0aW9uID0gV1RGTW92ZShvcGVyYXRpb24pLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2Fs
bGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICAgICAgW29wZXJhdGlvbiA9IFdURk1v
dmUob3BlcmF0aW9uKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgaWRlbnRpZmllciA9IGNvbnRleHQu
Y29udGV4dElkZW50aWZpZXIoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGF1dG8gcmVzdWx0
ID0gb3BlcmF0aW9uKCk7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7
CiAgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tz
IGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAg
ICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAgICAgICAgICAgIFtlYyA9IHJl
c3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhpZGVudGlmaWVyLAorICAgICAgICAgICAgICAgICAg
ICBbZWMgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxi
YWNrKV0oYXV0byYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNr
KGVjKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKICAgICAgICAg
ICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0
ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAg
ICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtyZXN1bHQgPSByZXN1bHQucmVs
ZWFzZVJldHVyblZhbHVlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlv
bkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBv
c3RUYXNrVG8oaWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICBbcmVzdWx0ID0gcmVzdWx0LnJl
bGVhc2VSZXR1cm5WYWx1ZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRp
b25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShhdXRvJikgewogICAgICAg
ICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LmRlcmVmKCk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNE
SC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1F
Q0RILmNwcAppbmRleCAzNzdmOGM2YjAzZjI2ZDQyZDY0ODM1NDJjZDc1N2Y2OTAwOTI2MDI0Li43
YmE4NjE5ZDcwZTgzNzFhOGNmOGExOTI1MTgyNWRhZjNlMTI0NWUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RILmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RILmNw
cApAQCAtMTE2LDE1ICsxMTYsMTIgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1FQ0RIOjpkZXJpdmVC
aXRzKHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYKIAogICAgIC8v
IFRoaXMgaXMgYSBzcGVjaWFsIGNhc2UgdGhhdCBjYW4ndCB1c2UgZGlzcGF0Y2hPcGVyYXRpb24o
KSBiZWNhdXNlIGl0IGJ1bmRsZXMKICAgICAvLyB0aGUgcmVzdWx0IHZhbGlkYXRpb24gYW5kIGNh
bGxiYWNrIGRpc3BhdGNoIGludG8gdW5pZmllZENhbGxiYWNrLgotICAgIGNvbnRleHQucmVmKCk7
CiAgICAgd29ya1F1ZXVlLmRpc3BhdGNoKAotICAgICAgICBbYmFzZUtleSA9IFdURk1vdmUoYmFz
ZUtleSksIHB1YmxpY0tleSA9IGVjUGFyYW1ldGVycy5wdWJsaWNLZXkucmVsZWFzZU5vbk51bGwo
KSwgbGVuZ3RoLCB1bmlmaWVkQ2FsbGJhY2sgPSBXVEZNb3ZlKHVuaWZpZWRDYWxsYmFjayksICZj
b250ZXh0XSgpIG11dGFibGUgeworICAgICAgICBbYmFzZUtleSA9IFdURk1vdmUoYmFzZUtleSks
IHB1YmxpY0tleSA9IGVjUGFyYW1ldGVycy5wdWJsaWNLZXkucmVsZWFzZU5vbk51bGwoKSwgbGVu
Z3RoLCB1bmlmaWVkQ2FsbGJhY2sgPSBXVEZNb3ZlKHVuaWZpZWRDYWxsYmFjayksIGlkZW50aWZp
ZXIgPSBjb250ZXh0LmNvbnRleHRJZGVudGlmaWVyKCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBhdXRvIGRlcml2ZWRLZXkgPSBwbGF0Zm9ybURlcml2ZUJpdHMoZG93bmNhc3Q8Q3J5cHRvS2V5
RUM+KGJhc2VLZXkuZ2V0KCkpLCBkb3duY2FzdDxDcnlwdG9LZXlFQz4ocHVibGljS2V5LmdldCgp
KSk7Ci0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtkZXJp
dmVkS2V5ID0gV1RGTW92ZShkZXJpdmVkS2V5KSwgbGVuZ3RoLCB1bmlmaWVkQ2FsbGJhY2sgPSBX
VEZNb3ZlKHVuaWZpZWRDYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IG11dGFibGUgewotICAgICAgICAgICAgICAgICAgICB1bmlmaWVkQ2FsbGJhY2soV1RGTW92ZShk
ZXJpdmVkS2V5KSwgbGVuZ3RoKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigp
OwotICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6cG9zdFRhc2tUbyhpZGVudGlmaWVyLCBbZGVyaXZlZEtleSA9IFdURk1vdmUoZGVyaXZlZEtl
eSksIGxlbmd0aCwgdW5pZmllZENhbGxiYWNrID0gV1RGTW92ZSh1bmlmaWVkQ2FsbGJhY2spXShh
dXRvJikgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgdW5pZmllZENhbGxiYWNrKFdURk1vdmUo
ZGVyaXZlZEtleSksIGxlbmd0aCk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVNIQTEuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtU0hBMS5jcHAKaW5kZXggOTQ3NDA5YzhiMjYwNDllODIzMWY3M2IyNGMxZTI2YzNjYmQy
MWM2Yy4uYzI1MWVkZTMzMTU4ZTJjYWRkM2FjMTAzZWI5NjE3ZDE5OGYyYmViYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
U0hBMS5jcHAKQEAgLTUxLDEzICs1MSwxMSBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTE6OmRp
Z2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbAogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUu
ZGlzcGF0Y2goW2RpZ2VzdCA9IFdURk1vdmUoZGlnZXN0KSwgbWVzc2FnZSA9IFdURk1vdmUobWVz
c2FnZSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUg
eworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChbZGlnZXN0ID0gV1RGTW92ZShkaWdlc3QpLCBtZXNz
YWdlID0gV1RGTW92ZShtZXNzYWdlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgaWRl
bnRpZmllciA9IGNvbnRleHQuY29udGV4dElkZW50aWZpZXIoKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgZGlnZXN0LT5hZGRCeXRlcyhtZXNzYWdlLmRhdGEoKSwgbWVzc2FnZS5zaXplKCkpOwogICAg
ICAgICBhdXRvIHJlc3VsdCA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKLSAgICAgICAgY29udGV4
dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gV1RGTW92
ZShyZXN1bHQpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oaWRlbnRpZmllciwgW2NhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oYXV0byYpIHsKICAg
ICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7
CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAKaW5kZXggZDkwNjc4
M2E2NGMzNGVlNzdiYzU3OTdlZjQ4ODlkNTJjMWY0NjJmZC4uYTkxYjk2MDQzMGFiYWQ4MzNjMTU0
OTA4YjUwNjBiMzc4MTM2Y2Q5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwCkBAIC01MSwxMyArNTEs
MTEgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4m
JiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtkaWdlc3QgPSBXVEZN
b3ZlKGRpZ2VzdCksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICB3b3JrUXVldWUuZGlzcGF0
Y2goW2RpZ2VzdCA9IFdURk1vdmUoZGlnZXN0KSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSks
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGlkZW50aWZpZXIgPSBjb250ZXh0LmNvbnRl
eHRJZGVudGlmaWVyKCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMobWVz
c2FnZS5kYXRhKCksIG1lc3NhZ2Uuc2l6ZSgpKTsKICAgICAgICAgYXV0byByZXN1bHQgPSBkaWdl
c3QtPmNvbXB1dGVIYXNoKCk7Ci0gICAgICAgIGNvbnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpw
b3N0VGFza1RvKGlkZW50aWZpZXIsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZXN1
bHQgPSBXVEZNb3ZlKHJlc3VsdCldKGF1dG8mKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhyZXN1
bHQpOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwogICAgICAgICB9KTsKICAgICB9KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVNIQTI1Ni5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1TSEEyNTYuY3BwCmluZGV4IDY0MjcxZmE5YWE2MjgzMzg5ODA4NmIyZGI1MTFk
YWYxNjhkM2Y5MGMuLjFiYjJiYWFhMTA1ODg0MzYwZTM0Zjg5YjFmNTE1MmFiOTAxNzhhNmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVNIQTI1Ni5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtU0hBMjU2LmNwcApAQCAtNTEsMTMgKzUxLDExIEBAIHZvaWQgQ3J5cHRvQWxnb3Jp
dGhtU0hBMjU2OjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJh
Y2smJiBjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb250ZXh0LnJlZigpOwotICAg
IHdvcmtRdWV1ZS5kaXNwYXRjaChbZGlnZXN0ID0gV1RGTW92ZShkaWdlc3QpLCBtZXNzYWdlID0g
V1RGTW92ZShtZXNzYWdlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgJmNvbnRleHRd
KCkgbXV0YWJsZSB7CisgICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtkaWdlc3QgPSBXVEZNb3ZlKGRp
Z2VzdCksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spLCBpZGVudGlmaWVyID0gY29udGV4dC5jb250ZXh0SWRlbnRpZmllcigpXSgpIG11dGFi
bGUgewogICAgICAgICBkaWdlc3QtPmFkZEJ5dGVzKG1lc3NhZ2UuZGF0YSgpLCBtZXNzYWdlLnNp
emUoKSk7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gZGlnZXN0LT5jb21wdXRlSGFzaCgpOwotICAg
ICAgICBjb250ZXh0LnBvc3RUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZXN1
bHQgPSBXVEZNb3ZlKHJlc3VsdCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsK
KyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhpZGVudGlmaWVyLCBb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXShh
dXRvJikgewogICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgIGNvbnRl
eHQuZGVyZWYoKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcApp
bmRleCBmMjJiYTZmZWNmMDMxYWZlMGIyMjNhZTk3Y2I3N2E2NjFkMzRlYmI4Li5hYzVhNzBmNjll
NTc0NDg4ZWUwMWZkNGM2NDI3NDlkZWFlOTFmY2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAKQEAg
LTUxLDEzICs1MSwxMSBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTM4NDo6ZGlnZXN0KFZlY3Rv
cjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgYwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW2Rp
Z2VzdCA9IFdURk1vdmUoZGlnZXN0KSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgeworICAgIHdvcmtR
dWV1ZS5kaXNwYXRjaChbZGlnZXN0ID0gV1RGTW92ZShkaWdlc3QpLCBtZXNzYWdlID0gV1RGTW92
ZShtZXNzYWdlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgaWRlbnRpZmllciA9IGNv
bnRleHQuY29udGV4dElkZW50aWZpZXIoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgZGlnZXN0LT5h
ZGRCeXRlcyhtZXNzYWdlLmRhdGEoKSwgbWVzc2FnZS5zaXplKCkpOwogICAgICAgICBhdXRvIHJl
c3VsdCA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKLSAgICAgICAgY29udGV4dC5wb3N0VGFzayhb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OnBvc3RUYXNrVG8oaWRlbnRpZmllciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oYXV0byYpIHsKICAgICAgICAgICAgIGNh
bGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CiAgICAgICAgIH0p
OwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAKaW5kZXggMTQxMTFkMjM5NDhiZWNiNjg0
YTZiYWQwOGM4OGM2MWZiOTMwYmNiMi4uNDc2ZGRjYmViNzJjYzI5MDdhNGQ2NDBjZGQ4MzBmNWY3
ZTM5N2YyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtU0hBNTEyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwCkBAIC01MSwxMyArNTEsMTEgQEAgdm9pZCBD
cnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBW
ZWN0b3JDYWxsYmFjayYmIGMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbnRleHQu
cmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtkaWdlc3QgPSBXVEZNb3ZlKGRpZ2VzdCks
IG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICB3b3JrUXVldWUuZGlzcGF0Y2goW2RpZ2VzdCA9
IFdURk1vdmUoZGlnZXN0KSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIGlkZW50aWZpZXIgPSBjb250ZXh0LmNvbnRleHRJZGVudGlmaWVy
KCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMobWVzc2FnZS5kYXRhKCks
IG1lc3NhZ2Uuc2l6ZSgpKTsKICAgICAgICAgYXV0byByZXN1bHQgPSBkaWdlc3QtPmNvbXB1dGVI
YXNoKCk7Ci0gICAgICAgIGNvbnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgeworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKGlk
ZW50aWZpZXIsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZXN1bHQgPSBXVEZNb3Zl
KHJlc3VsdCldKGF1dG8mKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAg
ICAgICAgY29udGV4dC5kZXJlZigpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNwcAppbmRl
eCA5MWNiNjQ0ODhiMzFiODg5ZTBkZmY5MTJhZjliYzIwOGRmNWYwYWE5Li4wODAyMDk5NTQ0Yzg0
ZDNkYjE4MzcwNjNiNDk3ZTU5ZGJkZmI2ZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwCkBAIC0yMzEsMTQgKzIzMSwxMiBA
QCB2b2lkIENyeXB0b0tleVJTQTo6Z2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIgYWxnb3JpdGhtLCBDcnlwdG9BbGdvcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
Y29udGV4dC0+cmVmKCk7CiAgICAgY29udGV4dC0+cG9zdFRhc2soCi0gICAgICAgIFthbGdvcml0
aG0sIGhhc2gsIGhhc0hhc2gsIGV4dHJhY3RhYmxlLCB1c2FnZSwgcHVibGljS2V5U2V4cCA9IHB1
YmxpY0tleVNleHAucmVsZWFzZSgpLCBwcml2YXRlS2V5U2V4cCA9IHByaXZhdGVLZXlTZXhwLnJl
bGVhc2UoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIFthbGdvcml0aG0sIGhhc2gsIGhhc0hh
c2gsIGV4dHJhY3RhYmxlLCB1c2FnZSwgcHVibGljS2V5U2V4cCA9IHB1YmxpY0tleVNleHAucmVs
ZWFzZSgpLCBwcml2YXRlS2V5U2V4cCA9IHByaXZhdGVLZXlTZXhwLnJlbGVhc2UoKSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYpIG11dGFibGUgewogICAgICAgICAgICAgYXV0
byBwdWJsaWNLZXkgPSBDcnlwdG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gsIGhhc0hh
c2gsIENyeXB0b0tleVR5cGU6OlB1YmxpYywgcHVibGljS2V5U2V4cCwgdHJ1ZSwgdXNhZ2UpOwog
ICAgICAgICAgICAgYXV0byBwcml2YXRlS2V5ID0gQ3J5cHRvS2V5UlNBOjpjcmVhdGUoYWxnb3Jp
dGhtLCBoYXNoLCBoYXNIYXNoLCBDcnlwdG9LZXlUeXBlOjpQcml2YXRlLCBwcml2YXRlS2V5U2V4
cCwgZXh0cmFjdGFibGUsIHVzYWdlKTsKIAogICAgICAgICAgICAgY2FsbGJhY2soQ3J5cHRvS2V5
UGFpciB7IFdURk1vdmUocHVibGljS2V5KSwgV1RGTW92ZShwcml2YXRlS2V5KSB9KTsKLSAgICAg
ICAgICAgIGNvbnRleHQuZGVyZWYoKTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcAppbmRleCBiYzAyYzI5MmQ0NTRlY2Uz
NzVlZDhjMzcwMjUzYzlmMzJhNDNhYjZhLi4wZDJiMTgwOTMzNGE0OWFiNTgxNDk1YWQ1MDBjNDlh
YWEzZTEzZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0tl
eVJTQU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FN
YWMuY3BwCkBAIC0yOTMsMjQgKzI5MywyNCBAQCB2b2lkIENyeXB0b0tleVJTQTo6Z2VuZXJhdGVQ
YWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGhtLCBDcnlwdG9BbGdvcgogICAg
IC8vIFdlIG9ubHkgdXNlIHRoZSBjYWxsYmFjayBmdW5jdGlvbnMgd2hlbiBiYWNrIG9uIHRoZSBt
YWluL3dvcmtlciB0aHJlYWQsIGJ1dCBjYXB0dXJlZCB2YXJpYWJsZXMgYXJlIGNvcGllZCBvbiBh
IHNlY29uZGFyeSB0aHJlYWQgdG9vLgogICAgIEtleVBhaXJDYWxsYmFjayogbG9jYWxDYWxsYmFj
ayA9IG5ldyBLZXlQYWlyQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpOwogICAgIFZvaWRDYWxs
YmFjayogbG9jYWxGYWlsdXJlQ2FsbGJhY2sgPSBuZXcgVm9pZENhbGxiYWNrKFdURk1vdmUoZmFp
bHVyZUNhbGxiYWNrKSk7Ci0gICAgY29udGV4dC0+cmVmKCk7CisgICAgYXV0byBpZGVudGlmaWVy
ID0gY29udGV4dC0+Y29udGV4dElkZW50aWZpZXIoKTsKIAorICAgIC8vIEZJWE1FOiBUaGVyZSBp
cyBhIHJpc2sgdGhhdCBsb2NhbENhbGxiYWNrIGFuZCBsb2NhbEZhaWx1cmVDYWxsYmFjayBhcmUg
bmV2ZXIgZnJlZWQuCisgICAgLy8gRml4IHRoaXMgYnkgdXNpbmcgdW5pcXVlIHBvaW50ZXJzIGFu
ZCBtb3ZlIHRoZW0gZnJvbSBvbmUgbGFtYmRhIHRvIHRoZSBvdGhlci4KICAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RF
RkFVTFQsIDApLCBeewotICAgICAgICBBU1NFUlQoY29udGV4dCk7CiAgICAgICAgIENDUlNBQ3J5
cHRvclJlZiBjY1B1YmxpY0tleTsKICAgICAgICAgQ0NSU0FDcnlwdG9yUmVmIGNjUHJpdmF0ZUtl
eTsKICAgICAgICAgQ0NDcnlwdG9yU3RhdHVzIHN0YXR1cyA9IENDUlNBQ3J5cHRvckdlbmVyYXRl
UGFpcihtb2R1bHVzTGVuZ3RoLCBlLCAmY2NQdWJsaWNLZXksICZjY1ByaXZhdGVLZXkpOwogICAg
ICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkNvdWxkIG5vdCBn
ZW5lcmF0ZSBhIGtleSBwYWlyLCBzdGF0dXMgJWQiLCBzdGF0dXMpOwotICAgICAgICAgICAgY29u
dGV4dC0+cG9zdFRhc2soW2xvY2FsQ2FsbGJhY2ssIGxvY2FsRmFpbHVyZUNhbGxiYWNrXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0Ojpwb3N0VGFza1RvKGlkZW50aWZpZXIsIFtsb2NhbENhbGxiYWNrLCBsb2NhbEZh
aWx1cmVDYWxsYmFja10oYXV0byYpIHsKICAgICAgICAgICAgICAgICAoKmxvY2FsRmFpbHVyZUNh
bGxiYWNrKSgpOwogICAgICAgICAgICAgICAgIGRlbGV0ZSBsb2NhbENhbGxiYWNrOwogICAgICAg
ICAgICAgICAgIGRlbGV0ZSBsb2NhbEZhaWx1cmVDYWxsYmFjazsKLSAgICAgICAgICAgICAgICBj
b250ZXh0LmRlcmVmKCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQotICAgICAgICBjb250ZXh0LT5wb3N0VGFzayhbYWxnb3JpdGhtLCBoYXNoLCBoYXNI
YXNoLCBleHRyYWN0YWJsZSwgdXNhZ2UsIGxvY2FsQ2FsbGJhY2ssIGxvY2FsRmFpbHVyZUNhbGxi
YWNrLCBjY1B1YmxpY0tleSwgY2NQcml2YXRlS2V5XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSB7CisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oaWRl
bnRpZmllciwgW2FsZ29yaXRobSwgaGFzaCwgaGFzSGFzaCwgZXh0cmFjdGFibGUsIHVzYWdlLCBs
b2NhbENhbGxiYWNrLCBsb2NhbEZhaWx1cmVDYWxsYmFjaywgY2NQdWJsaWNLZXksIGNjUHJpdmF0
ZUtleV0oYXV0byYpIHsKICAgICAgICAgICAgIGF1dG8gcHVibGljS2V5ID0gQ3J5cHRvS2V5UlNB
OjpjcmVhdGUoYWxnb3JpdGhtLCBoYXNoLCBoYXNIYXNoLCBDcnlwdG9LZXlUeXBlOjpQdWJsaWMs
IGNjUHVibGljS2V5LCB0cnVlLCB1c2FnZSk7CiAgICAgICAgICAgICBhdXRvIHByaXZhdGVLZXkg
PSBDcnlwdG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gsIGhhc0hhc2gsIENyeXB0b0tl
eVR5cGU6OlByaXZhdGUsIGNjUHJpdmF0ZUtleSwgZXh0cmFjdGFibGUsIHVzYWdlKTsKIApAQCAt
MzE4LDcgKzMxOCw2IEBAIHZvaWQgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIoQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0sIENyeXB0b0FsZ29yCiAKICAgICAgICAgICAgIGRl
bGV0ZSBsb2NhbENhbGxiYWNrOwogICAgICAgICAgICAgZGVsZXRlIGxvY2FsRmFpbHVyZUNhbGxi
YWNrOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwogICAgICAgICB9KTsKICAgICB9KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDJiYzIwNjU1ODFlMDEwMWIwYWE1MzlmMDRm
MGIyODRkYjYwZmI0ZjEuLmFmNzhjMGE5MDE2YmNkZDM1MjI0MGU4ZmIzYjE2YTBjZTBlYjY1YzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTY3LDggKzU2Nyw5IEBAIFJlZjxEb2N1bWVu
dD4gRG9jdW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgY29udGV4dERvY3VtZW50KQogCiBEb2N1bWVu
dDo6fkRvY3VtZW50KCkKIHsKLSAgICBib29sIHdhc1JlbW92ZWQgPSBhbGxEb2N1bWVudHNNYXAo
KS5yZW1vdmUobV9pZGVudGlmaWVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHdhc1JlbW92ZWQsIHdh
c1JlbW92ZWQpOworICAgIEFTU0VSVChhbGxEb2N1bWVudHNNYXAoKS5jb250YWlucyhtX2lkZW50
aWZpZXIpKTsKKyAgICBhbGxEb2N1bWVudHNNYXAoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKKyAg
ICByZW1vdmVGcm9tQ29udGV4dHNNYXAoKTsKIAogICAgIEFTU0VSVCghcmVuZGVyVmlldygpKTsK
ICAgICBBU1NFUlQobV9wYWdlQ2FjaGVTdGF0ZSAhPSBJblBhZ2VDYWNoZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggNTFlMzFkMzhlZjlj
MzZjNmQ2NzZmNDQwNmJlMzZjMTExN2NmOTM4Mi4uZGNkYjZjMmU0ZGRmNDc3OTFjYjA5NjE3YmI4
NjkzNTljYzEyMTVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcApAQCAtNjUsNiArNjUsMTggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKK3N0YXRpYyBIYXNoTWFwPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kj4mIGFsbFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRzTWFwKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+
PiBjb250ZXh0czsKKyAgICByZXR1cm4gY29udGV4dHM7Cit9CisKK3N0YXRpYyBMb2NrJiBhbGxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2soKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxMb2NrPiBsb2NrOworICAgIHJldHVybiBsb2NrOworfQorCiBzdHJ1Y3QgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6UGVuZGluZ0V4Y2VwdGlvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CkBAIC04NCw3ICs5NiwxOCBAQCBwdWJsaWM6CiB9OwogCiBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKKyAgICA6IG1fY29udGV4
dElkZW50aWZpZXIoZ2VuZXJhdGVUaHJlYWRTYWZlT2JqZWN0SWRlbnRpZmllcjxTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllclR5cGU+KCkpCit7CisgICAgTG9ja2VyPExvY2s+IGxvY2tl
cihhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2soKSk7CisgICAgQVNTRVJUKCFhbGxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpLmNvbnRhaW5zKG1fY29udGV4dElkZW50aWZpZXIp
KTsKKyAgICBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpLmFkZChtX2NvbnRleHRJZGVu
dGlmaWVyLCB0aGlzKTsKK30KKwordm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZW1vdmVG
cm9tQ29udGV4dHNNYXAoKQogeworICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoYWxsU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dHNNYXBMb2NrKCkpOworICAgIEFTU0VSVChhbGxTY3JpcHRFeGVjdXRpb25D
b250ZXh0c01hcCgpLmNvbnRhaW5zKG1fY29udGV4dElkZW50aWZpZXIpKTsKKyAgICBhbGxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0c01hcCgpLnJlbW92ZShtX2NvbnRleHRJZGVudGlmaWVyKTsKIH0K
IAogI2lmIEFTU0VSVF9ESVNBQkxFRApAQCAtMTE2LDYgKzEzOSw5IEBAIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6On5TY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKICAgICBjaGVja0NvbnNpc3RlbmN5
KCk7CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgTG9ja2VyPExvY2s+IGxvY2tlcihhbGxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2soKSk7CisgICAgQVNTRVJUKCFhbGxTY3JpcHRF
eGVjdXRpb25Db250ZXh0c01hcCgpLmNvbnRhaW5zKG1fY29udGV4dElkZW50aWZpZXIpKTsKKwog
ICAgIG1faW5TY3JpcHRFeGVjdXRpb25Db250ZXh0RGVzdHJ1Y3RvciA9IHRydWU7CiAjZW5kaWYK
IApAQCAtNTYwLDYgKzU4NiwxOCBAQCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyKiBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpzZXJ2aWNlV29ya2VyQ29udGFpbmVyKCkKICAgICByZXR1cm4gbmF2aWdh
dG9yID8gJm5hdmlnYXRvci0+c2VydmljZVdvcmtlcigpIDogbnVsbHB0cjsKIH0KIAorYm9vbCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFRhc2smJiB0YXNrKQoreworICAgIExvY2tlcjxMb2NrPiBs
b2NrZXIoYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXBMb2NrKCkpOworICAgIGF1dG8qIGNv
bnRleHQgPSBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpLmdldChpZGVudGlmaWVyKTsK
KworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29udGV4
dC0+cG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhjb25zdCBEb2N1bWVudE9yV29ya2Vy
SWRlbnRpZmllciYgY29udGV4dElkZW50aWZpZXIsIFdURjo6RnVuY3Rpb248dm9pZChTY3JpcHRF
eGVjdXRpb25Db250ZXh0Jik+JiYgdGFzaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggYWY3
NTAyMDcxYTVlZjllZDdjOGI4YTlhNDBiNjg4ZjZkOGQ5YjE0OS4uMTJiYzFlNzRlMTQ3YzFkZjQ0
YWFlMWVlYTA3MzQ5MjZkYzA2OWE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhy
ZWFkVGFzay5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC03OCw2ICs3OSw5IEBAIG5h
bWVzcGFjZSBJREJDbGllbnQgewogY2xhc3MgSURCQ29ubmVjdGlvblByb3h5OwogfQogCitlbnVt
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0SWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dElkZW50aWZpZXJUeXBlPjsKKwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCA6IHB1YmxpYyBTZWN1cml0eUNvbnRleHQgewogcHVibGljOgogICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKQEAgLTI1Myw2ICsyNTcsOSBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgYm9vbCBwb3N0VGFza1RvKGNvbnN0IERvY3VtZW50T3JXb3JrZXJJZGVudGlm
aWVyJiwgV1RGOjpGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJik7CiAj
ZW5kaWYKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBwb3N0VGFza1RvKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBUYXNrJiYpOworCisgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2Nv
bnRleHRJZGVudGlmaWVyOyB9CiAKIHByb3RlY3RlZDoKICAgICBjbGFzcyBBZGRDb25zb2xlTWVz
c2FnZVRhc2sgOiBwdWJsaWMgVGFzayB7CkBAIC0yNzUsNiArMjgyLDcgQEAgcHJvdGVjdGVkOgog
ICAgIEFjdGl2ZURPTU9iamVjdDo6UmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb25Gb3JTdXNwZW5k
aW5nQWN0aXZlRE9NT2JqZWN0cygpIGNvbnN0IHsgcmV0dXJuIG1fcmVhc29uRm9yU3VzcGVuZGlu
Z0FjdGl2ZURPTU9iamVjdHM7IH0KIAogICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29u
c3Q7CisgICAgdm9pZCByZW1vdmVGcm9tQ29udGV4dHNNYXAoKTsKIAogcHJpdmF0ZToKICAgICAv
LyBUaGUgZm9sbG93aW5nIGFkZE1lc3NhZ2UgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZC4KQEAgLTMy
OCw2ICszMzYsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBTdHJpbmcgbV9kb21haW5Gb3JD
YWNoZVBhcnRpdGlvbjsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBtX2Nv
bnRleHRJZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA0MTVhYmFjMzBlNTM0
MmFiZGMzMGQyYWIxNTk2Y2YzYjRlYzZiOGQ1Li5lNmU4MDg4MzQ4OGQyODFiOGJiMmYzZDAwZGMx
ZTRhMGI2MTBmOTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlLmNwcApAQCAtODksNiArODksNyBAQCBXb3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFs
U2NvcGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgYwogV29ya2Vy
R2xvYmFsU2NvcGU6On5Xb3JrZXJHbG9iYWxTY29wZSgpCiB7CiAgICAgQVNTRVJUKHRocmVhZCgp
LnRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CisgICAgcmVtb3ZlRnJvbUNvbnRleHRz
TWFwKCk7CiAKICAgICBtX3BlcmZvcm1hbmNlID0gbnVsbHB0cjsKICAgICBtX2NyeXB0byA9IG51
bGxwdHI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335718</attachid>
            <date>2018-03-13 13:03:06 -0700</date>
            <delta_ts>2018-03-13 13:59:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183602-20180313130305.patch</filename>
            <type>text/plain</type>
            <size>22126</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQxODdmMDkxZWI1ZmJm
ZDM3YTNmZTlhM2M4YjZmNTU4NjdjYjNiOS4uNDhiMjg0MDE4NjkxNmZjNzAxODFmMjNjZmFhYjE4
ODliZGY3ZjM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE4LTAzLTEzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL1dlYkNyeXB0b0FQSS93cmFwS2V5X3Vud3JhcEtleS93cmFwS2V5X3Vu
d3JhcEtleS53b3JrZXIuaHRtbCBpcyBjcmFzaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNjAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIGEgbWFwIG9mIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgdGhhdCBpcyByZWFkL3dyaXRlIHByb3RlY3RlZCB1c2luZyBhIExvY2suCisgICAg
ICAgIFRoaXMgYWxsb3dzIGludHJvZHVjaW5nIHBvc3RUYXNrVG8gdGFraW5nIGEgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCBpZGVudGlmaWVyIGFuZCBjYWxsYWJsZSBmcm9tIGFueSB0aHJlYWQuCisg
ICAgICAgIFVzZSB0aGF0IG1ldGhvZCBpbiBDcnlwdG8gaW5zdGVhZCBvZiByZWZpbmcvdW5yZWZp
bmcgIHRoZSBjb250ZXh0LgorCisgICAgICAgIENvdmVyZWQgYnkgY3J5cHRvIHRlc3RzIG5vIGxv
bmdlciBmYWlsaW5nIG1fd29ya2VyR2xvYmFsU2NvcGUtPmhhc09uZVJlZigpIGFzc2VydGlvbi4K
KworICAgICAgICAqIGNyeXB0by9DcnlwdG9BbGdvcml0aG0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZGlzcGF0Y2hBbGdvcml0aG1PcGVyYXRpb24pOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobUVDREguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxn
b3JpdGhtRUNESDo6ZGVyaXZlQml0cyk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtU0hBMS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1T
SEExOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVNIQTIyNC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRp
Z2VzdCk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTI1Njo6ZGlnZXN0KToK
KyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QpOgorICAgICAg
ICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdCk6CisgICAgICAgICogY3J5
cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIpOgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvS2V5
UlNBTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6Z2VuZXJhdGVQYWly
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6On5Eb2N1bWVudCk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXBMb2NrKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVt
b3ZlRnJvbUNvbnRleHRzTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OmNoZWNrQ29uc2lzdGVuY3kgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OmNvbnRleHRJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjp+V29ya2Vy
R2xvYmFsU2NvcGUpOgorCiAyMDE4LTAzLTEyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KIAogICAgICAgICBDYWxsaW5nIHJlbW92ZVRyYWNrIHdpdGggUlRDUnRwU2VuZGVyIGRv
ZXMgbm90IHNldCBTZW5kZXJUcmFjayB0byBudWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9Dcnlw
dG9BbGdvcml0aG0uY3BwCmluZGV4IDU1OTNjZmI2NmI0ZTBhMmI0MTZkMTgzM2RhYzgwOGM2NWY5
MzZjMjkuLjliMTcwOTA5MjQ2MzZmMjcwMDM5OTQ0MWY2MjNlNzhiZmNkNmIxNzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uY3BwCkBAIC05NSwyNSArOTUsMjIgQEAg
RXhjZXB0aW9uT3I8c2l6ZV90PiBDcnlwdG9BbGdvcml0aG06OmdldEtleUxlbmd0aChjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXIKIHRlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdENhbGxiYWNr
VHlwZSwgdHlwZW5hbWUgT3BlcmF0aW9uVHlwZT4KIHN0YXRpYyB2b2lkIGRpc3BhdGNoQWxnb3Jp
dGhtT3BlcmF0aW9uKFdvcmtRdWV1ZSYgd29ya1F1ZXVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBSZXN1bHRDYWxsYmFja1R5cGUmJiBjYWxsYmFjaywgQ3J5cHRvQWxnb3JpdGht
OjpFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBPcGVyYXRpb25UeXBlJiYg
b3BlcmF0aW9uKQogewotICAgIGNvbnRleHQucmVmKCk7CiAgICAgd29ya1F1ZXVlLmRpc3BhdGNo
KAotICAgICAgICBbb3BlcmF0aW9uID0gV1RGTW92ZShvcGVyYXRpb24pLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2Fs
bGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICAgICAgW29wZXJhdGlvbiA9IFdURk1v
dmUob3BlcmF0aW9uKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgaWRlbnRpZmllciA9IGNvbnRleHQu
Y29udGV4dElkZW50aWZpZXIoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGF1dG8gcmVzdWx0
ID0gb3BlcmF0aW9uKCk7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7
CiAgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tz
IGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAg
ICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAgICAgICAgICAgIFtlYyA9IHJl
c3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhpZGVudGlmaWVyLAorICAgICAgICAgICAgICAgICAg
ICBbZWMgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxi
YWNrKV0oYXV0byYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNr
KGVjKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKICAgICAgICAg
ICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0
ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAg
ICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtyZXN1bHQgPSByZXN1bHQucmVs
ZWFzZVJldHVyblZhbHVlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlv
bkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBv
c3RUYXNrVG8oaWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICBbcmVzdWx0ID0gcmVzdWx0LnJl
bGVhc2VSZXR1cm5WYWx1ZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRp
b25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShhdXRvJikgewogICAgICAg
ICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LmRlcmVmKCk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNE
SC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1F
Q0RILmNwcAppbmRleCAzNzdmOGM2YjAzZjI2ZDQyZDY0ODM1NDJjZDc1N2Y2OTAwOTI2MDI0Li43
YmE4NjE5ZDcwZTgzNzFhOGNmOGExOTI1MTgyNWRhZjNlMTI0NWUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RILmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RILmNw
cApAQCAtMTE2LDE1ICsxMTYsMTIgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1FQ0RIOjpkZXJpdmVC
aXRzKHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYKIAogICAgIC8v
IFRoaXMgaXMgYSBzcGVjaWFsIGNhc2UgdGhhdCBjYW4ndCB1c2UgZGlzcGF0Y2hPcGVyYXRpb24o
KSBiZWNhdXNlIGl0IGJ1bmRsZXMKICAgICAvLyB0aGUgcmVzdWx0IHZhbGlkYXRpb24gYW5kIGNh
bGxiYWNrIGRpc3BhdGNoIGludG8gdW5pZmllZENhbGxiYWNrLgotICAgIGNvbnRleHQucmVmKCk7
CiAgICAgd29ya1F1ZXVlLmRpc3BhdGNoKAotICAgICAgICBbYmFzZUtleSA9IFdURk1vdmUoYmFz
ZUtleSksIHB1YmxpY0tleSA9IGVjUGFyYW1ldGVycy5wdWJsaWNLZXkucmVsZWFzZU5vbk51bGwo
KSwgbGVuZ3RoLCB1bmlmaWVkQ2FsbGJhY2sgPSBXVEZNb3ZlKHVuaWZpZWRDYWxsYmFjayksICZj
b250ZXh0XSgpIG11dGFibGUgeworICAgICAgICBbYmFzZUtleSA9IFdURk1vdmUoYmFzZUtleSks
IHB1YmxpY0tleSA9IGVjUGFyYW1ldGVycy5wdWJsaWNLZXkucmVsZWFzZU5vbk51bGwoKSwgbGVu
Z3RoLCB1bmlmaWVkQ2FsbGJhY2sgPSBXVEZNb3ZlKHVuaWZpZWRDYWxsYmFjayksIGlkZW50aWZp
ZXIgPSBjb250ZXh0LmNvbnRleHRJZGVudGlmaWVyKCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBhdXRvIGRlcml2ZWRLZXkgPSBwbGF0Zm9ybURlcml2ZUJpdHMoZG93bmNhc3Q8Q3J5cHRvS2V5
RUM+KGJhc2VLZXkuZ2V0KCkpLCBkb3duY2FzdDxDcnlwdG9LZXlFQz4ocHVibGljS2V5LmdldCgp
KSk7Ci0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtkZXJp
dmVkS2V5ID0gV1RGTW92ZShkZXJpdmVkS2V5KSwgbGVuZ3RoLCB1bmlmaWVkQ2FsbGJhY2sgPSBX
VEZNb3ZlKHVuaWZpZWRDYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IG11dGFibGUgewotICAgICAgICAgICAgICAgICAgICB1bmlmaWVkQ2FsbGJhY2soV1RGTW92ZShk
ZXJpdmVkS2V5KSwgbGVuZ3RoKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigp
OwotICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6cG9zdFRhc2tUbyhpZGVudGlmaWVyLCBbZGVyaXZlZEtleSA9IFdURk1vdmUoZGVyaXZlZEtl
eSksIGxlbmd0aCwgdW5pZmllZENhbGxiYWNrID0gV1RGTW92ZSh1bmlmaWVkQ2FsbGJhY2spXShh
dXRvJikgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgdW5pZmllZENhbGxiYWNrKFdURk1vdmUo
ZGVyaXZlZEtleSksIGxlbmd0aCk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVNIQTEuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtU0hBMS5jcHAKaW5kZXggOTQ3NDA5YzhiMjYwNDllODIzMWY3M2IyNGMxZTI2YzNjYmQy
MWM2Yy4uYzI1MWVkZTMzMTU4ZTJjYWRkM2FjMTAzZWI5NjE3ZDE5OGYyYmViYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
U0hBMS5jcHAKQEAgLTUxLDEzICs1MSwxMSBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTE6OmRp
Z2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbAogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUu
ZGlzcGF0Y2goW2RpZ2VzdCA9IFdURk1vdmUoZGlnZXN0KSwgbWVzc2FnZSA9IFdURk1vdmUobWVz
c2FnZSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUg
eworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChbZGlnZXN0ID0gV1RGTW92ZShkaWdlc3QpLCBtZXNz
YWdlID0gV1RGTW92ZShtZXNzYWdlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgaWRl
bnRpZmllciA9IGNvbnRleHQuY29udGV4dElkZW50aWZpZXIoKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgZGlnZXN0LT5hZGRCeXRlcyhtZXNzYWdlLmRhdGEoKSwgbWVzc2FnZS5zaXplKCkpOwogICAg
ICAgICBhdXRvIHJlc3VsdCA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKLSAgICAgICAgY29udGV4
dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gV1RGTW92
ZShyZXN1bHQpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oaWRlbnRpZmllciwgW2NhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oYXV0byYpIHsKICAg
ICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7
CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAKaW5kZXggZDkwNjc4
M2E2NGMzNGVlNzdiYzU3OTdlZjQ4ODlkNTJjMWY0NjJmZC4uYTkxYjk2MDQzMGFiYWQ4MzNjMTU0
OTA4YjUwNjBiMzc4MTM2Y2Q5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwCkBAIC01MSwxMyArNTEs
MTEgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4m
JiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtkaWdlc3QgPSBXVEZN
b3ZlKGRpZ2VzdCksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICB3b3JrUXVldWUuZGlzcGF0
Y2goW2RpZ2VzdCA9IFdURk1vdmUoZGlnZXN0KSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSks
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGlkZW50aWZpZXIgPSBjb250ZXh0LmNvbnRl
eHRJZGVudGlmaWVyKCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMobWVz
c2FnZS5kYXRhKCksIG1lc3NhZ2Uuc2l6ZSgpKTsKICAgICAgICAgYXV0byByZXN1bHQgPSBkaWdl
c3QtPmNvbXB1dGVIYXNoKCk7Ci0gICAgICAgIGNvbnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpw
b3N0VGFza1RvKGlkZW50aWZpZXIsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZXN1
bHQgPSBXVEZNb3ZlKHJlc3VsdCldKGF1dG8mKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhyZXN1
bHQpOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwogICAgICAgICB9KTsKICAgICB9KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVNIQTI1Ni5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1TSEEyNTYuY3BwCmluZGV4IDY0MjcxZmE5YWE2MjgzMzg5ODA4NmIyZGI1MTFk
YWYxNjhkM2Y5MGMuLjFiYjJiYWFhMTA1ODg0MzYwZTM0Zjg5YjFmNTE1MmFiOTAxNzhhNmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVNIQTI1Ni5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtU0hBMjU2LmNwcApAQCAtNTEsMTMgKzUxLDExIEBAIHZvaWQgQ3J5cHRvQWxnb3Jp
dGhtU0hBMjU2OjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJh
Y2smJiBjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb250ZXh0LnJlZigpOwotICAg
IHdvcmtRdWV1ZS5kaXNwYXRjaChbZGlnZXN0ID0gV1RGTW92ZShkaWdlc3QpLCBtZXNzYWdlID0g
V1RGTW92ZShtZXNzYWdlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgJmNvbnRleHRd
KCkgbXV0YWJsZSB7CisgICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtkaWdlc3QgPSBXVEZNb3ZlKGRp
Z2VzdCksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spLCBpZGVudGlmaWVyID0gY29udGV4dC5jb250ZXh0SWRlbnRpZmllcigpXSgpIG11dGFi
bGUgewogICAgICAgICBkaWdlc3QtPmFkZEJ5dGVzKG1lc3NhZ2UuZGF0YSgpLCBtZXNzYWdlLnNp
emUoKSk7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gZGlnZXN0LT5jb21wdXRlSGFzaCgpOwotICAg
ICAgICBjb250ZXh0LnBvc3RUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZXN1
bHQgPSBXVEZNb3ZlKHJlc3VsdCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsK
KyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhpZGVudGlmaWVyLCBb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXShh
dXRvJikgewogICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgIGNvbnRl
eHQuZGVyZWYoKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcApp
bmRleCBmMjJiYTZmZWNmMDMxYWZlMGIyMjNhZTk3Y2I3N2E2NjFkMzRlYmI4Li5hYzVhNzBmNjll
NTc0NDg4ZWUwMWZkNGM2NDI3NDlkZWFlOTFmY2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAKQEAg
LTUxLDEzICs1MSwxMSBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTM4NDo6ZGlnZXN0KFZlY3Rv
cjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgYwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW2Rp
Z2VzdCA9IFdURk1vdmUoZGlnZXN0KSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgeworICAgIHdvcmtR
dWV1ZS5kaXNwYXRjaChbZGlnZXN0ID0gV1RGTW92ZShkaWdlc3QpLCBtZXNzYWdlID0gV1RGTW92
ZShtZXNzYWdlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgaWRlbnRpZmllciA9IGNv
bnRleHQuY29udGV4dElkZW50aWZpZXIoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgZGlnZXN0LT5h
ZGRCeXRlcyhtZXNzYWdlLmRhdGEoKSwgbWVzc2FnZS5zaXplKCkpOwogICAgICAgICBhdXRvIHJl
c3VsdCA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKLSAgICAgICAgY29udGV4dC5wb3N0VGFzayhb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OnBvc3RUYXNrVG8oaWRlbnRpZmllciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oYXV0byYpIHsKICAgICAgICAgICAgIGNh
bGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CiAgICAgICAgIH0p
OwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAKaW5kZXggMTQxMTFkMjM5NDhiZWNiNjg0
YTZiYWQwOGM4OGM2MWZiOTMwYmNiMi4uNDc2ZGRjYmViNzJjYzI5MDdhNGQ2NDBjZGQ4MzBmNWY3
ZTM5N2YyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtU0hBNTEyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwCkBAIC01MSwxMyArNTEsMTEgQEAgdm9pZCBD
cnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBW
ZWN0b3JDYWxsYmFjayYmIGMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbnRleHQu
cmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtkaWdlc3QgPSBXVEZNb3ZlKGRpZ2VzdCks
IG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICB3b3JrUXVldWUuZGlzcGF0Y2goW2RpZ2VzdCA9
IFdURk1vdmUoZGlnZXN0KSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIGlkZW50aWZpZXIgPSBjb250ZXh0LmNvbnRleHRJZGVudGlmaWVy
KCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMobWVzc2FnZS5kYXRhKCks
IG1lc3NhZ2Uuc2l6ZSgpKTsKICAgICAgICAgYXV0byByZXN1bHQgPSBkaWdlc3QtPmNvbXB1dGVI
YXNoKCk7Ci0gICAgICAgIGNvbnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgeworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKGlk
ZW50aWZpZXIsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZXN1bHQgPSBXVEZNb3Zl
KHJlc3VsdCldKGF1dG8mKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAg
ICAgICAgY29udGV4dC5kZXJlZigpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNwcAppbmRl
eCA5MWNiNjQ0ODhiMzFiODg5ZTBkZmY5MTJhZjliYzIwOGRmNWYwYWE5Li4wODAyMDk5NTQ0Yzg0
ZDNkYjE4MzcwNjNiNDk3ZTU5ZGJkZmI2ZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwCkBAIC0yMzEsMTQgKzIzMSwxMiBA
QCB2b2lkIENyeXB0b0tleVJTQTo6Z2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIgYWxnb3JpdGhtLCBDcnlwdG9BbGdvcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
Y29udGV4dC0+cmVmKCk7CiAgICAgY29udGV4dC0+cG9zdFRhc2soCi0gICAgICAgIFthbGdvcml0
aG0sIGhhc2gsIGhhc0hhc2gsIGV4dHJhY3RhYmxlLCB1c2FnZSwgcHVibGljS2V5U2V4cCA9IHB1
YmxpY0tleVNleHAucmVsZWFzZSgpLCBwcml2YXRlS2V5U2V4cCA9IHByaXZhdGVLZXlTZXhwLnJl
bGVhc2UoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIFthbGdvcml0aG0sIGhhc2gsIGhhc0hh
c2gsIGV4dHJhY3RhYmxlLCB1c2FnZSwgcHVibGljS2V5U2V4cCA9IHB1YmxpY0tleVNleHAucmVs
ZWFzZSgpLCBwcml2YXRlS2V5U2V4cCA9IHByaXZhdGVLZXlTZXhwLnJlbGVhc2UoKSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYpIG11dGFibGUgewogICAgICAgICAgICAgYXV0
byBwdWJsaWNLZXkgPSBDcnlwdG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gsIGhhc0hh
c2gsIENyeXB0b0tleVR5cGU6OlB1YmxpYywgcHVibGljS2V5U2V4cCwgdHJ1ZSwgdXNhZ2UpOwog
ICAgICAgICAgICAgYXV0byBwcml2YXRlS2V5ID0gQ3J5cHRvS2V5UlNBOjpjcmVhdGUoYWxnb3Jp
dGhtLCBoYXNoLCBoYXNIYXNoLCBDcnlwdG9LZXlUeXBlOjpQcml2YXRlLCBwcml2YXRlS2V5U2V4
cCwgZXh0cmFjdGFibGUsIHVzYWdlKTsKIAogICAgICAgICAgICAgY2FsbGJhY2soQ3J5cHRvS2V5
UGFpciB7IFdURk1vdmUocHVibGljS2V5KSwgV1RGTW92ZShwcml2YXRlS2V5KSB9KTsKLSAgICAg
ICAgICAgIGNvbnRleHQuZGVyZWYoKTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcAppbmRleCBiYzAyYzI5MmQ0NTRlY2Uz
NzVlZDhjMzcwMjUzYzlmMzJhNDNhYjZhLi4wZDJiMTgwOTMzNGE0OWFiNTgxNDk1YWQ1MDBjNDlh
YWEzZTEzZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0tl
eVJTQU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FN
YWMuY3BwCkBAIC0yOTMsMjQgKzI5MywyNCBAQCB2b2lkIENyeXB0b0tleVJTQTo6Z2VuZXJhdGVQ
YWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGhtLCBDcnlwdG9BbGdvcgogICAg
IC8vIFdlIG9ubHkgdXNlIHRoZSBjYWxsYmFjayBmdW5jdGlvbnMgd2hlbiBiYWNrIG9uIHRoZSBt
YWluL3dvcmtlciB0aHJlYWQsIGJ1dCBjYXB0dXJlZCB2YXJpYWJsZXMgYXJlIGNvcGllZCBvbiBh
IHNlY29uZGFyeSB0aHJlYWQgdG9vLgogICAgIEtleVBhaXJDYWxsYmFjayogbG9jYWxDYWxsYmFj
ayA9IG5ldyBLZXlQYWlyQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpOwogICAgIFZvaWRDYWxs
YmFjayogbG9jYWxGYWlsdXJlQ2FsbGJhY2sgPSBuZXcgVm9pZENhbGxiYWNrKFdURk1vdmUoZmFp
bHVyZUNhbGxiYWNrKSk7Ci0gICAgY29udGV4dC0+cmVmKCk7CisgICAgYXV0byBpZGVudGlmaWVy
ID0gY29udGV4dC0+Y29udGV4dElkZW50aWZpZXIoKTsKIAorICAgIC8vIEZJWE1FOiBUaGVyZSBp
cyBhIHJpc2sgdGhhdCBsb2NhbENhbGxiYWNrIGFuZCBsb2NhbEZhaWx1cmVDYWxsYmFjayBhcmUg
bmV2ZXIgZnJlZWQuCisgICAgLy8gRml4IHRoaXMgYnkgdXNpbmcgdW5pcXVlIHBvaW50ZXJzIGFu
ZCBtb3ZlIHRoZW0gZnJvbSBvbmUgbGFtYmRhIHRvIHRoZSBvdGhlci4KICAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RF
RkFVTFQsIDApLCBeewotICAgICAgICBBU1NFUlQoY29udGV4dCk7CiAgICAgICAgIENDUlNBQ3J5
cHRvclJlZiBjY1B1YmxpY0tleTsKICAgICAgICAgQ0NSU0FDcnlwdG9yUmVmIGNjUHJpdmF0ZUtl
eTsKICAgICAgICAgQ0NDcnlwdG9yU3RhdHVzIHN0YXR1cyA9IENDUlNBQ3J5cHRvckdlbmVyYXRl
UGFpcihtb2R1bHVzTGVuZ3RoLCBlLCAmY2NQdWJsaWNLZXksICZjY1ByaXZhdGVLZXkpOwogICAg
ICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkNvdWxkIG5vdCBn
ZW5lcmF0ZSBhIGtleSBwYWlyLCBzdGF0dXMgJWQiLCBzdGF0dXMpOwotICAgICAgICAgICAgY29u
dGV4dC0+cG9zdFRhc2soW2xvY2FsQ2FsbGJhY2ssIGxvY2FsRmFpbHVyZUNhbGxiYWNrXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0Ojpwb3N0VGFza1RvKGlkZW50aWZpZXIsIFtsb2NhbENhbGxiYWNrLCBsb2NhbEZh
aWx1cmVDYWxsYmFja10oYXV0byYpIHsKICAgICAgICAgICAgICAgICAoKmxvY2FsRmFpbHVyZUNh
bGxiYWNrKSgpOwogICAgICAgICAgICAgICAgIGRlbGV0ZSBsb2NhbENhbGxiYWNrOwogICAgICAg
ICAgICAgICAgIGRlbGV0ZSBsb2NhbEZhaWx1cmVDYWxsYmFjazsKLSAgICAgICAgICAgICAgICBj
b250ZXh0LmRlcmVmKCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQotICAgICAgICBjb250ZXh0LT5wb3N0VGFzayhbYWxnb3JpdGhtLCBoYXNoLCBoYXNI
YXNoLCBleHRyYWN0YWJsZSwgdXNhZ2UsIGxvY2FsQ2FsbGJhY2ssIGxvY2FsRmFpbHVyZUNhbGxi
YWNrLCBjY1B1YmxpY0tleSwgY2NQcml2YXRlS2V5XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSB7CisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oaWRl
bnRpZmllciwgW2FsZ29yaXRobSwgaGFzaCwgaGFzSGFzaCwgZXh0cmFjdGFibGUsIHVzYWdlLCBs
b2NhbENhbGxiYWNrLCBsb2NhbEZhaWx1cmVDYWxsYmFjaywgY2NQdWJsaWNLZXksIGNjUHJpdmF0
ZUtleV0oYXV0byYpIHsKICAgICAgICAgICAgIGF1dG8gcHVibGljS2V5ID0gQ3J5cHRvS2V5UlNB
OjpjcmVhdGUoYWxnb3JpdGhtLCBoYXNoLCBoYXNIYXNoLCBDcnlwdG9LZXlUeXBlOjpQdWJsaWMs
IGNjUHVibGljS2V5LCB0cnVlLCB1c2FnZSk7CiAgICAgICAgICAgICBhdXRvIHByaXZhdGVLZXkg
PSBDcnlwdG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gsIGhhc0hhc2gsIENyeXB0b0tl
eVR5cGU6OlByaXZhdGUsIGNjUHJpdmF0ZUtleSwgZXh0cmFjdGFibGUsIHVzYWdlKTsKIApAQCAt
MzE4LDcgKzMxOCw2IEBAIHZvaWQgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIoQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0sIENyeXB0b0FsZ29yCiAKICAgICAgICAgICAgIGRl
bGV0ZSBsb2NhbENhbGxiYWNrOwogICAgICAgICAgICAgZGVsZXRlIGxvY2FsRmFpbHVyZUNhbGxi
YWNrOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwogICAgICAgICB9KTsKICAgICB9KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDJiYzIwNjU1ODFlMDEwMWIwYWE1MzlmMDRm
MGIyODRkYjYwZmI0ZjEuLmFmNzhjMGE5MDE2YmNkZDM1MjI0MGU4ZmIzYjE2YTBjZTBlYjY1YzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTY3LDggKzU2Nyw5IEBAIFJlZjxEb2N1bWVu
dD4gRG9jdW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgY29udGV4dERvY3VtZW50KQogCiBEb2N1bWVu
dDo6fkRvY3VtZW50KCkKIHsKLSAgICBib29sIHdhc1JlbW92ZWQgPSBhbGxEb2N1bWVudHNNYXAo
KS5yZW1vdmUobV9pZGVudGlmaWVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHdhc1JlbW92ZWQsIHdh
c1JlbW92ZWQpOworICAgIEFTU0VSVChhbGxEb2N1bWVudHNNYXAoKS5jb250YWlucyhtX2lkZW50
aWZpZXIpKTsKKyAgICBhbGxEb2N1bWVudHNNYXAoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKKyAg
ICByZW1vdmVGcm9tQ29udGV4dHNNYXAoKTsKIAogICAgIEFTU0VSVCghcmVuZGVyVmlldygpKTsK
ICAgICBBU1NFUlQobV9wYWdlQ2FjaGVTdGF0ZSAhPSBJblBhZ2VDYWNoZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggNTFlMzFkMzhlZjlj
MzZjNmQ2NzZmNDQwNmJlMzZjMTExN2NmOTM4Mi4uNWQyNzM1MTU1YjllOWYzN2YxNWQ0MjI4OWM5
ZTBkMDEwNjFlOWUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcApAQCAtNjUsNiArNjUsMTggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKK3N0YXRpYyBIYXNoTWFwPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kj4mIGFsbFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRzTWFwKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+
PiBjb250ZXh0czsKKyAgICByZXR1cm4gY29udGV4dHM7Cit9CisKK3N0YXRpYyBMb2NrJiBhbGxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2soKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxMb2NrPiBsb2NrOworICAgIHJldHVybiBsb2NrOworfQorCiBzdHJ1Y3QgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6UGVuZGluZ0V4Y2VwdGlvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CkBAIC04NCw3ICs5NiwxOCBAQCBwdWJsaWM6CiB9OwogCiBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKKyAgICA6IG1fY29udGV4
dElkZW50aWZpZXIoZ2VuZXJhdGVUaHJlYWRTYWZlT2JqZWN0SWRlbnRpZmllcjxTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllclR5cGU+KCkpCit7CisgICAgTG9ja2VyPExvY2s+IGxvY2tl
cihhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2soKSk7CisgICAgQVNTRVJUKCFhbGxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpLmNvbnRhaW5zKG1fY29udGV4dElkZW50aWZpZXIp
KTsKKyAgICBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpLmFkZChtX2NvbnRleHRJZGVu
dGlmaWVyLCB0aGlzKTsKK30KKwordm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZW1vdmVG
cm9tQ29udGV4dHNNYXAoKQogeworICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoYWxsU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dHNNYXBMb2NrKCkpOworICAgIEFTU0VSVChhbGxTY3JpcHRFeGVjdXRpb25D
b250ZXh0c01hcCgpLmNvbnRhaW5zKG1fY29udGV4dElkZW50aWZpZXIpKTsKKyAgICBhbGxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0c01hcCgpLnJlbW92ZShtX2NvbnRleHRJZGVudGlmaWVyKTsKIH0K
IAogI2lmIEFTU0VSVF9ESVNBQkxFRApAQCAtMTE2LDYgKzEzOSw5IEBAIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6On5TY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKICAgICBjaGVja0NvbnNpc3RlbmN5
KCk7CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgTG9ja2VyPExvY2s+IGxvY2tlcihhbGxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2soKSk7CisgICAgQVNTRVJUKCFhbGxTY3JpcHRF
eGVjdXRpb25Db250ZXh0c01hcCgpLmNvbnRhaW5zKG1fY29udGV4dElkZW50aWZpZXIpKTsKKwog
ICAgIG1faW5TY3JpcHRFeGVjdXRpb25Db250ZXh0RGVzdHJ1Y3RvciA9IHRydWU7CiAjZW5kaWYK
IApAQCAtNTgwLDYgKzYwNiwxOSBAQCBib29sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RU
YXNrVG8oY29uc3QgRG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXImIGNvbnRleAogICAgIH0pOwog
ICAgIHJldHVybiB3YXNQb3N0ZWQ7CiB9CisKK2Jvb2wgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
cG9zdFRhc2tUbyhTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBpZGVudGlmaWVyLCBU
YXNrJiYgdGFzaykKK3sKKyAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFsbFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRzTWFwTG9jaygpKTsKKyAgICBhdXRvKiBjb250ZXh0ID0gYWxsU2NyaXB0RXhlY3V0
aW9uQ29udGV4dHNNYXAoKS5nZXQoaWRlbnRpZmllcik7CisKKyAgICBpZiAoIWNvbnRleHQpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnRleHQtPnBvc3RUYXNrKFdURk1vdmUodGFz
aykpOworICAgIHJldHVybiB0cnVlOworfQorCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXgg
YWY3NTAyMDcxYTVlZjllZDdjOGI4YTlhNDBiNjg4ZjZkOGQ5YjE0OS4uMTJiYzFlNzRlMTQ3YzFk
ZjQ0YWFlMWVlYTA3MzQ5MjZkYzA2OWE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL0Nyb3Nz
VGhyZWFkVGFzay5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC03OCw2ICs3OSw5IEBA
IG5hbWVzcGFjZSBJREJDbGllbnQgewogY2xhc3MgSURCQ29ubmVjdGlvblByb3h5OwogfQogCitl
bnVtIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXJUeXBlPjsKKwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCA6IHB1YmxpYyBTZWN1cml0eUNvbnRleHQgewogcHVibGljOgogICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKQEAgLTI1Myw2ICsyNTcsOSBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgYm9vbCBwb3N0VGFza1RvKGNvbnN0IERvY3VtZW50T3JXb3JrZXJJZGVu
dGlmaWVyJiwgV1RGOjpGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJik7
CiAjZW5kaWYKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBwb3N0VGFza1RvKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBUYXNrJiYpOworCisgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2NvbnRleHRJZGVudGlmaWVyOyB9CiAKIHByb3RlY3RlZDoKICAgICBjbGFzcyBBZGRDb25zb2xl
TWVzc2FnZVRhc2sgOiBwdWJsaWMgVGFzayB7CkBAIC0yNzUsNiArMjgyLDcgQEAgcHJvdGVjdGVk
OgogICAgIEFjdGl2ZURPTU9iamVjdDo6UmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb25Gb3JTdXNw
ZW5kaW5nQWN0aXZlRE9NT2JqZWN0cygpIGNvbnN0IHsgcmV0dXJuIG1fcmVhc29uRm9yU3VzcGVu
ZGluZ0FjdGl2ZURPTU9iamVjdHM7IH0KIAogICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkg
Y29uc3Q7CisgICAgdm9pZCByZW1vdmVGcm9tQ29udGV4dHNNYXAoKTsKIAogcHJpdmF0ZToKICAg
ICAvLyBUaGUgZm9sbG93aW5nIGFkZE1lc3NhZ2UgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZC4KQEAg
LTMyOCw2ICszMzYsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBTdHJpbmcgbV9kb21haW5G
b3JDYWNoZVBhcnRpdGlvbjsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBt
X2NvbnRleHRJZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA0MTVhYmFjMzBl
NTM0MmFiZGMzMGQyYWIxNTk2Y2YzYjRlYzZiOGQ1Li5lNmU4MDg4MzQ4OGQyODFiOGJiMmYzZDAw
ZGMxZTRhMGI2MTBmOTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmNwcApAQCAtODksNiArODksNyBAQCBXb3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xv
YmFsU2NvcGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgYwogV29y
a2VyR2xvYmFsU2NvcGU6On5Xb3JrZXJHbG9iYWxTY29wZSgpCiB7CiAgICAgQVNTRVJUKHRocmVh
ZCgpLnRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CisgICAgcmVtb3ZlRnJvbUNvbnRl
eHRzTWFwKCk7CiAKICAgICBtX3BlcmZvcm1hbmNlID0gbnVsbHB0cjsKICAgICBtX2NyeXB0byA9
IG51bGxwdHI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335725</attachid>
            <date>2018-03-13 13:59:44 -0700</date>
            <delta_ts>2018-03-13 17:49:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183602-20180313135943.patch</filename>
            <type>text/plain</type>
            <size>22126</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQxODdmMDkxZWI1ZmJm
ZDM3YTNmZTlhM2M4YjZmNTU4NjdjYjNiOS4uNDhiMjg0MDE4NjkxNmZjNzAxODFmMjNjZmFhYjE4
ODliZGY3ZjM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE4LTAzLTEzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL1dlYkNyeXB0b0FQSS93cmFwS2V5X3Vud3JhcEtleS93cmFwS2V5X3Vu
d3JhcEtleS53b3JrZXIuaHRtbCBpcyBjcmFzaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNjAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIGEgbWFwIG9mIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgdGhhdCBpcyByZWFkL3dyaXRlIHByb3RlY3RlZCB1c2luZyBhIExvY2suCisgICAg
ICAgIFRoaXMgYWxsb3dzIGludHJvZHVjaW5nIHBvc3RUYXNrVG8gdGFraW5nIGEgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCBpZGVudGlmaWVyIGFuZCBjYWxsYWJsZSBmcm9tIGFueSB0aHJlYWQuCisg
ICAgICAgIFVzZSB0aGF0IG1ldGhvZCBpbiBDcnlwdG8gaW5zdGVhZCBvZiByZWZpbmcvdW5yZWZp
bmcgIHRoZSBjb250ZXh0LgorCisgICAgICAgIENvdmVyZWQgYnkgY3J5cHRvIHRlc3RzIG5vIGxv
bmdlciBmYWlsaW5nIG1fd29ya2VyR2xvYmFsU2NvcGUtPmhhc09uZVJlZigpIGFzc2VydGlvbi4K
KworICAgICAgICAqIGNyeXB0by9DcnlwdG9BbGdvcml0aG0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZGlzcGF0Y2hBbGdvcml0aG1PcGVyYXRpb24pOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobUVDREguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxn
b3JpdGhtRUNESDo6ZGVyaXZlQml0cyk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtU0hBMS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1T
SEExOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVNIQTIyNC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRp
Z2VzdCk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTI1Njo6ZGlnZXN0KToK
KyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QpOgorICAgICAg
ICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdCk6CisgICAgICAgICogY3J5
cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIpOgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvS2V5
UlNBTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6Z2VuZXJhdGVQYWly
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6On5Eb2N1bWVudCk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXBMb2NrKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVt
b3ZlRnJvbUNvbnRleHRzTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OmNoZWNrQ29uc2lzdGVuY3kgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OmNvbnRleHRJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjp+V29ya2Vy
R2xvYmFsU2NvcGUpOgorCiAyMDE4LTAzLTEyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KIAogICAgICAgICBDYWxsaW5nIHJlbW92ZVRyYWNrIHdpdGggUlRDUnRwU2VuZGVyIGRv
ZXMgbm90IHNldCBTZW5kZXJUcmFjayB0byBudWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9Dcnlw
dG9BbGdvcml0aG0uY3BwCmluZGV4IDU1OTNjZmI2NmI0ZTBhMmI0MTZkMTgzM2RhYzgwOGM2NWY5
MzZjMjkuLjliMTcwOTA5MjQ2MzZmMjcwMDM5OTQ0MWY2MjNlNzhiZmNkNmIxNzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uY3BwCkBAIC05NSwyNSArOTUsMjIgQEAg
RXhjZXB0aW9uT3I8c2l6ZV90PiBDcnlwdG9BbGdvcml0aG06OmdldEtleUxlbmd0aChjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXIKIHRlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdENhbGxiYWNr
VHlwZSwgdHlwZW5hbWUgT3BlcmF0aW9uVHlwZT4KIHN0YXRpYyB2b2lkIGRpc3BhdGNoQWxnb3Jp
dGhtT3BlcmF0aW9uKFdvcmtRdWV1ZSYgd29ya1F1ZXVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBSZXN1bHRDYWxsYmFja1R5cGUmJiBjYWxsYmFjaywgQ3J5cHRvQWxnb3JpdGht
OjpFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBPcGVyYXRpb25UeXBlJiYg
b3BlcmF0aW9uKQogewotICAgIGNvbnRleHQucmVmKCk7CiAgICAgd29ya1F1ZXVlLmRpc3BhdGNo
KAotICAgICAgICBbb3BlcmF0aW9uID0gV1RGTW92ZShvcGVyYXRpb24pLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2Fs
bGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICAgICAgW29wZXJhdGlvbiA9IFdURk1v
dmUob3BlcmF0aW9uKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgaWRlbnRpZmllciA9IGNvbnRleHQu
Y29udGV4dElkZW50aWZpZXIoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGF1dG8gcmVzdWx0
ID0gb3BlcmF0aW9uKCk7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7
CiAgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tz
IGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAg
ICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAgICAgICAgICAgIFtlYyA9IHJl
c3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhpZGVudGlmaWVyLAorICAgICAgICAgICAgICAgICAg
ICBbZWMgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxi
YWNrKV0oYXV0byYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNr
KGVjKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKICAgICAgICAg
ICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0
ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAg
ICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtyZXN1bHQgPSByZXN1bHQucmVs
ZWFzZVJldHVyblZhbHVlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlv
bkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBv
c3RUYXNrVG8oaWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICBbcmVzdWx0ID0gcmVzdWx0LnJl
bGVhc2VSZXR1cm5WYWx1ZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRp
b25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShhdXRvJikgewogICAgICAg
ICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LmRlcmVmKCk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNE
SC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1F
Q0RILmNwcAppbmRleCAzNzdmOGM2YjAzZjI2ZDQyZDY0ODM1NDJjZDc1N2Y2OTAwOTI2MDI0Li43
YmE4NjE5ZDcwZTgzNzFhOGNmOGExOTI1MTgyNWRhZjNlMTI0NWUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RILmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RILmNw
cApAQCAtMTE2LDE1ICsxMTYsMTIgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1FQ0RIOjpkZXJpdmVC
aXRzKHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYKIAogICAgIC8v
IFRoaXMgaXMgYSBzcGVjaWFsIGNhc2UgdGhhdCBjYW4ndCB1c2UgZGlzcGF0Y2hPcGVyYXRpb24o
KSBiZWNhdXNlIGl0IGJ1bmRsZXMKICAgICAvLyB0aGUgcmVzdWx0IHZhbGlkYXRpb24gYW5kIGNh
bGxiYWNrIGRpc3BhdGNoIGludG8gdW5pZmllZENhbGxiYWNrLgotICAgIGNvbnRleHQucmVmKCk7
CiAgICAgd29ya1F1ZXVlLmRpc3BhdGNoKAotICAgICAgICBbYmFzZUtleSA9IFdURk1vdmUoYmFz
ZUtleSksIHB1YmxpY0tleSA9IGVjUGFyYW1ldGVycy5wdWJsaWNLZXkucmVsZWFzZU5vbk51bGwo
KSwgbGVuZ3RoLCB1bmlmaWVkQ2FsbGJhY2sgPSBXVEZNb3ZlKHVuaWZpZWRDYWxsYmFjayksICZj
b250ZXh0XSgpIG11dGFibGUgeworICAgICAgICBbYmFzZUtleSA9IFdURk1vdmUoYmFzZUtleSks
IHB1YmxpY0tleSA9IGVjUGFyYW1ldGVycy5wdWJsaWNLZXkucmVsZWFzZU5vbk51bGwoKSwgbGVu
Z3RoLCB1bmlmaWVkQ2FsbGJhY2sgPSBXVEZNb3ZlKHVuaWZpZWRDYWxsYmFjayksIGlkZW50aWZp
ZXIgPSBjb250ZXh0LmNvbnRleHRJZGVudGlmaWVyKCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBhdXRvIGRlcml2ZWRLZXkgPSBwbGF0Zm9ybURlcml2ZUJpdHMoZG93bmNhc3Q8Q3J5cHRvS2V5
RUM+KGJhc2VLZXkuZ2V0KCkpLCBkb3duY2FzdDxDcnlwdG9LZXlFQz4ocHVibGljS2V5LmdldCgp
KSk7Ci0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtkZXJp
dmVkS2V5ID0gV1RGTW92ZShkZXJpdmVkS2V5KSwgbGVuZ3RoLCB1bmlmaWVkQ2FsbGJhY2sgPSBX
VEZNb3ZlKHVuaWZpZWRDYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IG11dGFibGUgewotICAgICAgICAgICAgICAgICAgICB1bmlmaWVkQ2FsbGJhY2soV1RGTW92ZShk
ZXJpdmVkS2V5KSwgbGVuZ3RoKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigp
OwotICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6cG9zdFRhc2tUbyhpZGVudGlmaWVyLCBbZGVyaXZlZEtleSA9IFdURk1vdmUoZGVyaXZlZEtl
eSksIGxlbmd0aCwgdW5pZmllZENhbGxiYWNrID0gV1RGTW92ZSh1bmlmaWVkQ2FsbGJhY2spXShh
dXRvJikgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgdW5pZmllZENhbGxiYWNrKFdURk1vdmUo
ZGVyaXZlZEtleSksIGxlbmd0aCk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVNIQTEuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtU0hBMS5jcHAKaW5kZXggOTQ3NDA5YzhiMjYwNDllODIzMWY3M2IyNGMxZTI2YzNjYmQy
MWM2Yy4uYzI1MWVkZTMzMTU4ZTJjYWRkM2FjMTAzZWI5NjE3ZDE5OGYyYmViYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
U0hBMS5jcHAKQEAgLTUxLDEzICs1MSwxMSBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTE6OmRp
Z2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbAogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUu
ZGlzcGF0Y2goW2RpZ2VzdCA9IFdURk1vdmUoZGlnZXN0KSwgbWVzc2FnZSA9IFdURk1vdmUobWVz
c2FnZSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUg
eworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChbZGlnZXN0ID0gV1RGTW92ZShkaWdlc3QpLCBtZXNz
YWdlID0gV1RGTW92ZShtZXNzYWdlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgaWRl
bnRpZmllciA9IGNvbnRleHQuY29udGV4dElkZW50aWZpZXIoKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgZGlnZXN0LT5hZGRCeXRlcyhtZXNzYWdlLmRhdGEoKSwgbWVzc2FnZS5zaXplKCkpOwogICAg
ICAgICBhdXRvIHJlc3VsdCA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKLSAgICAgICAgY29udGV4
dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gV1RGTW92
ZShyZXN1bHQpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oaWRlbnRpZmllciwgW2NhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oYXV0byYpIHsKICAg
ICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7
CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAKaW5kZXggZDkwNjc4
M2E2NGMzNGVlNzdiYzU3OTdlZjQ4ODlkNTJjMWY0NjJmZC4uYTkxYjk2MDQzMGFiYWQ4MzNjMTU0
OTA4YjUwNjBiMzc4MTM2Y2Q5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwCkBAIC01MSwxMyArNTEs
MTEgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4m
JiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtkaWdlc3QgPSBXVEZN
b3ZlKGRpZ2VzdCksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICB3b3JrUXVldWUuZGlzcGF0
Y2goW2RpZ2VzdCA9IFdURk1vdmUoZGlnZXN0KSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSks
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGlkZW50aWZpZXIgPSBjb250ZXh0LmNvbnRl
eHRJZGVudGlmaWVyKCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMobWVz
c2FnZS5kYXRhKCksIG1lc3NhZ2Uuc2l6ZSgpKTsKICAgICAgICAgYXV0byByZXN1bHQgPSBkaWdl
c3QtPmNvbXB1dGVIYXNoKCk7Ci0gICAgICAgIGNvbnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpw
b3N0VGFza1RvKGlkZW50aWZpZXIsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZXN1
bHQgPSBXVEZNb3ZlKHJlc3VsdCldKGF1dG8mKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhyZXN1
bHQpOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwogICAgICAgICB9KTsKICAgICB9KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVNIQTI1Ni5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1TSEEyNTYuY3BwCmluZGV4IDY0MjcxZmE5YWE2MjgzMzg5ODA4NmIyZGI1MTFk
YWYxNjhkM2Y5MGMuLjFiYjJiYWFhMTA1ODg0MzYwZTM0Zjg5YjFmNTE1MmFiOTAxNzhhNmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVNIQTI1Ni5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtU0hBMjU2LmNwcApAQCAtNTEsMTMgKzUxLDExIEBAIHZvaWQgQ3J5cHRvQWxnb3Jp
dGhtU0hBMjU2OjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJh
Y2smJiBjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb250ZXh0LnJlZigpOwotICAg
IHdvcmtRdWV1ZS5kaXNwYXRjaChbZGlnZXN0ID0gV1RGTW92ZShkaWdlc3QpLCBtZXNzYWdlID0g
V1RGTW92ZShtZXNzYWdlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgJmNvbnRleHRd
KCkgbXV0YWJsZSB7CisgICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtkaWdlc3QgPSBXVEZNb3ZlKGRp
Z2VzdCksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spLCBpZGVudGlmaWVyID0gY29udGV4dC5jb250ZXh0SWRlbnRpZmllcigpXSgpIG11dGFi
bGUgewogICAgICAgICBkaWdlc3QtPmFkZEJ5dGVzKG1lc3NhZ2UuZGF0YSgpLCBtZXNzYWdlLnNp
emUoKSk7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gZGlnZXN0LT5jb21wdXRlSGFzaCgpOwotICAg
ICAgICBjb250ZXh0LnBvc3RUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZXN1
bHQgPSBXVEZNb3ZlKHJlc3VsdCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsK
KyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhpZGVudGlmaWVyLCBb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXShh
dXRvJikgewogICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgIGNvbnRl
eHQuZGVyZWYoKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcApp
bmRleCBmMjJiYTZmZWNmMDMxYWZlMGIyMjNhZTk3Y2I3N2E2NjFkMzRlYmI4Li5hYzVhNzBmNjll
NTc0NDg4ZWUwMWZkNGM2NDI3NDlkZWFlOTFmY2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAKQEAg
LTUxLDEzICs1MSwxMSBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTM4NDo6ZGlnZXN0KFZlY3Rv
cjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgYwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW2Rp
Z2VzdCA9IFdURk1vdmUoZGlnZXN0KSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgeworICAgIHdvcmtR
dWV1ZS5kaXNwYXRjaChbZGlnZXN0ID0gV1RGTW92ZShkaWdlc3QpLCBtZXNzYWdlID0gV1RGTW92
ZShtZXNzYWdlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgaWRlbnRpZmllciA9IGNv
bnRleHQuY29udGV4dElkZW50aWZpZXIoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgZGlnZXN0LT5h
ZGRCeXRlcyhtZXNzYWdlLmRhdGEoKSwgbWVzc2FnZS5zaXplKCkpOwogICAgICAgICBhdXRvIHJl
c3VsdCA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKLSAgICAgICAgY29udGV4dC5wb3N0VGFzayhb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OnBvc3RUYXNrVG8oaWRlbnRpZmllciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oYXV0byYpIHsKICAgICAgICAgICAgIGNh
bGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CiAgICAgICAgIH0p
OwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAKaW5kZXggMTQxMTFkMjM5NDhiZWNiNjg0
YTZiYWQwOGM4OGM2MWZiOTMwYmNiMi4uNDc2ZGRjYmViNzJjYzI5MDdhNGQ2NDBjZGQ4MzBmNWY3
ZTM5N2YyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtU0hBNTEyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwCkBAIC01MSwxMyArNTEsMTEgQEAgdm9pZCBD
cnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBW
ZWN0b3JDYWxsYmFjayYmIGMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbnRleHQu
cmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtkaWdlc3QgPSBXVEZNb3ZlKGRpZ2VzdCks
IG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICB3b3JrUXVldWUuZGlzcGF0Y2goW2RpZ2VzdCA9
IFdURk1vdmUoZGlnZXN0KSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIGlkZW50aWZpZXIgPSBjb250ZXh0LmNvbnRleHRJZGVudGlmaWVy
KCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMobWVzc2FnZS5kYXRhKCks
IG1lc3NhZ2Uuc2l6ZSgpKTsKICAgICAgICAgYXV0byByZXN1bHQgPSBkaWdlc3QtPmNvbXB1dGVI
YXNoKCk7Ci0gICAgICAgIGNvbnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgeworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKGlk
ZW50aWZpZXIsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZXN1bHQgPSBXVEZNb3Zl
KHJlc3VsdCldKGF1dG8mKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAg
ICAgICAgY29udGV4dC5kZXJlZigpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNwcAppbmRl
eCA5MWNiNjQ0ODhiMzFiODg5ZTBkZmY5MTJhZjliYzIwOGRmNWYwYWE5Li4wODAyMDk5NTQ0Yzg0
ZDNkYjE4MzcwNjNiNDk3ZTU5ZGJkZmI2ZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwCkBAIC0yMzEsMTQgKzIzMSwxMiBA
QCB2b2lkIENyeXB0b0tleVJTQTo6Z2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIgYWxnb3JpdGhtLCBDcnlwdG9BbGdvcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
Y29udGV4dC0+cmVmKCk7CiAgICAgY29udGV4dC0+cG9zdFRhc2soCi0gICAgICAgIFthbGdvcml0
aG0sIGhhc2gsIGhhc0hhc2gsIGV4dHJhY3RhYmxlLCB1c2FnZSwgcHVibGljS2V5U2V4cCA9IHB1
YmxpY0tleVNleHAucmVsZWFzZSgpLCBwcml2YXRlS2V5U2V4cCA9IHByaXZhdGVLZXlTZXhwLnJl
bGVhc2UoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIFthbGdvcml0aG0sIGhhc2gsIGhhc0hh
c2gsIGV4dHJhY3RhYmxlLCB1c2FnZSwgcHVibGljS2V5U2V4cCA9IHB1YmxpY0tleVNleHAucmVs
ZWFzZSgpLCBwcml2YXRlS2V5U2V4cCA9IHByaXZhdGVLZXlTZXhwLnJlbGVhc2UoKSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYpIG11dGFibGUgewogICAgICAgICAgICAgYXV0
byBwdWJsaWNLZXkgPSBDcnlwdG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gsIGhhc0hh
c2gsIENyeXB0b0tleVR5cGU6OlB1YmxpYywgcHVibGljS2V5U2V4cCwgdHJ1ZSwgdXNhZ2UpOwog
ICAgICAgICAgICAgYXV0byBwcml2YXRlS2V5ID0gQ3J5cHRvS2V5UlNBOjpjcmVhdGUoYWxnb3Jp
dGhtLCBoYXNoLCBoYXNIYXNoLCBDcnlwdG9LZXlUeXBlOjpQcml2YXRlLCBwcml2YXRlS2V5U2V4
cCwgZXh0cmFjdGFibGUsIHVzYWdlKTsKIAogICAgICAgICAgICAgY2FsbGJhY2soQ3J5cHRvS2V5
UGFpciB7IFdURk1vdmUocHVibGljS2V5KSwgV1RGTW92ZShwcml2YXRlS2V5KSB9KTsKLSAgICAg
ICAgICAgIGNvbnRleHQuZGVyZWYoKTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcAppbmRleCBiYzAyYzI5MmQ0NTRlY2Uz
NzVlZDhjMzcwMjUzYzlmMzJhNDNhYjZhLi4wZDJiMTgwOTMzNGE0OWFiNTgxNDk1YWQ1MDBjNDlh
YWEzZTEzZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0tl
eVJTQU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FN
YWMuY3BwCkBAIC0yOTMsMjQgKzI5MywyNCBAQCB2b2lkIENyeXB0b0tleVJTQTo6Z2VuZXJhdGVQ
YWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGhtLCBDcnlwdG9BbGdvcgogICAg
IC8vIFdlIG9ubHkgdXNlIHRoZSBjYWxsYmFjayBmdW5jdGlvbnMgd2hlbiBiYWNrIG9uIHRoZSBt
YWluL3dvcmtlciB0aHJlYWQsIGJ1dCBjYXB0dXJlZCB2YXJpYWJsZXMgYXJlIGNvcGllZCBvbiBh
IHNlY29uZGFyeSB0aHJlYWQgdG9vLgogICAgIEtleVBhaXJDYWxsYmFjayogbG9jYWxDYWxsYmFj
ayA9IG5ldyBLZXlQYWlyQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpOwogICAgIFZvaWRDYWxs
YmFjayogbG9jYWxGYWlsdXJlQ2FsbGJhY2sgPSBuZXcgVm9pZENhbGxiYWNrKFdURk1vdmUoZmFp
bHVyZUNhbGxiYWNrKSk7Ci0gICAgY29udGV4dC0+cmVmKCk7CisgICAgYXV0byBpZGVudGlmaWVy
ID0gY29udGV4dC0+Y29udGV4dElkZW50aWZpZXIoKTsKIAorICAgIC8vIEZJWE1FOiBUaGVyZSBp
cyBhIHJpc2sgdGhhdCBsb2NhbENhbGxiYWNrIGFuZCBsb2NhbEZhaWx1cmVDYWxsYmFjayBhcmUg
bmV2ZXIgZnJlZWQuCisgICAgLy8gRml4IHRoaXMgYnkgdXNpbmcgdW5pcXVlIHBvaW50ZXJzIGFu
ZCBtb3ZlIHRoZW0gZnJvbSBvbmUgbGFtYmRhIHRvIHRoZSBvdGhlci4KICAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RF
RkFVTFQsIDApLCBeewotICAgICAgICBBU1NFUlQoY29udGV4dCk7CiAgICAgICAgIENDUlNBQ3J5
cHRvclJlZiBjY1B1YmxpY0tleTsKICAgICAgICAgQ0NSU0FDcnlwdG9yUmVmIGNjUHJpdmF0ZUtl
eTsKICAgICAgICAgQ0NDcnlwdG9yU3RhdHVzIHN0YXR1cyA9IENDUlNBQ3J5cHRvckdlbmVyYXRl
UGFpcihtb2R1bHVzTGVuZ3RoLCBlLCAmY2NQdWJsaWNLZXksICZjY1ByaXZhdGVLZXkpOwogICAg
ICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkNvdWxkIG5vdCBn
ZW5lcmF0ZSBhIGtleSBwYWlyLCBzdGF0dXMgJWQiLCBzdGF0dXMpOwotICAgICAgICAgICAgY29u
dGV4dC0+cG9zdFRhc2soW2xvY2FsQ2FsbGJhY2ssIGxvY2FsRmFpbHVyZUNhbGxiYWNrXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0Ojpwb3N0VGFza1RvKGlkZW50aWZpZXIsIFtsb2NhbENhbGxiYWNrLCBsb2NhbEZh
aWx1cmVDYWxsYmFja10oYXV0byYpIHsKICAgICAgICAgICAgICAgICAoKmxvY2FsRmFpbHVyZUNh
bGxiYWNrKSgpOwogICAgICAgICAgICAgICAgIGRlbGV0ZSBsb2NhbENhbGxiYWNrOwogICAgICAg
ICAgICAgICAgIGRlbGV0ZSBsb2NhbEZhaWx1cmVDYWxsYmFjazsKLSAgICAgICAgICAgICAgICBj
b250ZXh0LmRlcmVmKCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQotICAgICAgICBjb250ZXh0LT5wb3N0VGFzayhbYWxnb3JpdGhtLCBoYXNoLCBoYXNI
YXNoLCBleHRyYWN0YWJsZSwgdXNhZ2UsIGxvY2FsQ2FsbGJhY2ssIGxvY2FsRmFpbHVyZUNhbGxi
YWNrLCBjY1B1YmxpY0tleSwgY2NQcml2YXRlS2V5XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSB7CisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oaWRl
bnRpZmllciwgW2FsZ29yaXRobSwgaGFzaCwgaGFzSGFzaCwgZXh0cmFjdGFibGUsIHVzYWdlLCBs
b2NhbENhbGxiYWNrLCBsb2NhbEZhaWx1cmVDYWxsYmFjaywgY2NQdWJsaWNLZXksIGNjUHJpdmF0
ZUtleV0oYXV0byYpIHsKICAgICAgICAgICAgIGF1dG8gcHVibGljS2V5ID0gQ3J5cHRvS2V5UlNB
OjpjcmVhdGUoYWxnb3JpdGhtLCBoYXNoLCBoYXNIYXNoLCBDcnlwdG9LZXlUeXBlOjpQdWJsaWMs
IGNjUHVibGljS2V5LCB0cnVlLCB1c2FnZSk7CiAgICAgICAgICAgICBhdXRvIHByaXZhdGVLZXkg
PSBDcnlwdG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gsIGhhc0hhc2gsIENyeXB0b0tl
eVR5cGU6OlByaXZhdGUsIGNjUHJpdmF0ZUtleSwgZXh0cmFjdGFibGUsIHVzYWdlKTsKIApAQCAt
MzE4LDcgKzMxOCw2IEBAIHZvaWQgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIoQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0sIENyeXB0b0FsZ29yCiAKICAgICAgICAgICAgIGRl
bGV0ZSBsb2NhbENhbGxiYWNrOwogICAgICAgICAgICAgZGVsZXRlIGxvY2FsRmFpbHVyZUNhbGxi
YWNrOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwogICAgICAgICB9KTsKICAgICB9KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDJiYzIwNjU1ODFlMDEwMWIwYWE1MzlmMDRm
MGIyODRkYjYwZmI0ZjEuLmFmNzhjMGE5MDE2YmNkZDM1MjI0MGU4ZmIzYjE2YTBjZTBlYjY1YzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTY3LDggKzU2Nyw5IEBAIFJlZjxEb2N1bWVu
dD4gRG9jdW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgY29udGV4dERvY3VtZW50KQogCiBEb2N1bWVu
dDo6fkRvY3VtZW50KCkKIHsKLSAgICBib29sIHdhc1JlbW92ZWQgPSBhbGxEb2N1bWVudHNNYXAo
KS5yZW1vdmUobV9pZGVudGlmaWVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHdhc1JlbW92ZWQsIHdh
c1JlbW92ZWQpOworICAgIEFTU0VSVChhbGxEb2N1bWVudHNNYXAoKS5jb250YWlucyhtX2lkZW50
aWZpZXIpKTsKKyAgICBhbGxEb2N1bWVudHNNYXAoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKKyAg
ICByZW1vdmVGcm9tQ29udGV4dHNNYXAoKTsKIAogICAgIEFTU0VSVCghcmVuZGVyVmlldygpKTsK
ICAgICBBU1NFUlQobV9wYWdlQ2FjaGVTdGF0ZSAhPSBJblBhZ2VDYWNoZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggNTFlMzFkMzhlZjlj
MzZjNmQ2NzZmNDQwNmJlMzZjMTExN2NmOTM4Mi4uZjVmMjkwNWYwYjJmMWE1Y2JhOGZmNDAwZjM4
MDljZGM0Y2YyNWIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcApAQCAtNjUsNiArNjUsMTggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKK3N0YXRpYyBIYXNoTWFwPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kj4mIGFsbFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRzTWFwKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+
PiBjb250ZXh0czsKKyAgICByZXR1cm4gY29udGV4dHM7Cit9CisKK3N0YXRpYyBMb2NrJiBhbGxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2soKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxMb2NrPiBsb2NrOworICAgIHJldHVybiBsb2NrOworfQorCiBzdHJ1Y3QgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6UGVuZGluZ0V4Y2VwdGlvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CkBAIC04NCw3ICs5NiwxOCBAQCBwdWJsaWM6CiB9OwogCiBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKKyAgICA6IG1fY29udGV4
dElkZW50aWZpZXIoZ2VuZXJhdGVUaHJlYWRTYWZlT2JqZWN0SWRlbnRpZmllcjxTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllclR5cGU+KCkpCit7CisgICAgTG9ja2VyPExvY2s+IGxvY2tl
cihhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2soKSk7CisgICAgQVNTRVJUKCFhbGxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpLmNvbnRhaW5zKG1fY29udGV4dElkZW50aWZpZXIp
KTsKKyAgICBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpLmFkZChtX2NvbnRleHRJZGVu
dGlmaWVyLCB0aGlzKTsKK30KKwordm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZW1vdmVG
cm9tQ29udGV4dHNNYXAoKQogeworICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoYWxsU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dHNNYXBMb2NrKCkpOworICAgIEFTU0VSVChhbGxTY3JpcHRFeGVjdXRpb25D
b250ZXh0c01hcCgpLmNvbnRhaW5zKG1fY29udGV4dElkZW50aWZpZXIpKTsKKyAgICBhbGxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0c01hcCgpLnJlbW92ZShtX2NvbnRleHRJZGVudGlmaWVyKTsKIH0K
IAogI2lmIEFTU0VSVF9ESVNBQkxFRApAQCAtMTE2LDYgKzEzOSw5IEBAIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6On5TY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKICAgICBjaGVja0NvbnNpc3RlbmN5
KCk7CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgTG9ja2VyPExvY2s+IGxvY2tlcihhbGxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2soKSk7CisgICAgQVNTRVJUKCFhbGxTY3JpcHRF
eGVjdXRpb25Db250ZXh0c01hcCgpLmNvbnRhaW5zKG1fY29udGV4dElkZW50aWZpZXIpKTsKKwog
ICAgIG1faW5TY3JpcHRFeGVjdXRpb25Db250ZXh0RGVzdHJ1Y3RvciA9IHRydWU7CiAjZW5kaWYK
IApAQCAtNTgwLDYgKzYwNiwxOSBAQCBib29sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RU
YXNrVG8oY29uc3QgRG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXImIGNvbnRleAogICAgIH0pOwog
ICAgIHJldHVybiB3YXNQb3N0ZWQ7CiB9CisKICNlbmRpZgogCitib29sIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OnBvc3RUYXNrVG8oU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgaWRl
bnRpZmllciwgVGFzayYmIHRhc2spCit7CisgICAgTG9ja2VyPExvY2s+IGxvY2tlcihhbGxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0c01hcExvY2soKSk7CisgICAgYXV0byogY29udGV4dCA9IGFsbFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKCkuZ2V0KGlkZW50aWZpZXIpOworCisgICAgaWYgKCFj
b250ZXh0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjb250ZXh0LT5wb3N0VGFzayhX
VEZNb3ZlKHRhc2spKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXgg
YWY3NTAyMDcxYTVlZjllZDdjOGI4YTlhNDBiNjg4ZjZkOGQ5YjE0OS4uMTJiYzFlNzRlMTQ3YzFk
ZjQ0YWFlMWVlYTA3MzQ5MjZkYzA2OWE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL0Nyb3Nz
VGhyZWFkVGFzay5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC03OCw2ICs3OSw5IEBA
IG5hbWVzcGFjZSBJREJDbGllbnQgewogY2xhc3MgSURCQ29ubmVjdGlvblByb3h5OwogfQogCitl
bnVtIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXJUeXBlPjsKKwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCA6IHB1YmxpYyBTZWN1cml0eUNvbnRleHQgewogcHVibGljOgogICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKQEAgLTI1Myw2ICsyNTcsOSBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgYm9vbCBwb3N0VGFza1RvKGNvbnN0IERvY3VtZW50T3JXb3JrZXJJZGVu
dGlmaWVyJiwgV1RGOjpGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJik7
CiAjZW5kaWYKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBwb3N0VGFza1RvKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBUYXNrJiYpOworCisgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2NvbnRleHRJZGVudGlmaWVyOyB9CiAKIHByb3RlY3RlZDoKICAgICBjbGFzcyBBZGRDb25zb2xl
TWVzc2FnZVRhc2sgOiBwdWJsaWMgVGFzayB7CkBAIC0yNzUsNiArMjgyLDcgQEAgcHJvdGVjdGVk
OgogICAgIEFjdGl2ZURPTU9iamVjdDo6UmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb25Gb3JTdXNw
ZW5kaW5nQWN0aXZlRE9NT2JqZWN0cygpIGNvbnN0IHsgcmV0dXJuIG1fcmVhc29uRm9yU3VzcGVu
ZGluZ0FjdGl2ZURPTU9iamVjdHM7IH0KIAogICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkg
Y29uc3Q7CisgICAgdm9pZCByZW1vdmVGcm9tQ29udGV4dHNNYXAoKTsKIAogcHJpdmF0ZToKICAg
ICAvLyBUaGUgZm9sbG93aW5nIGFkZE1lc3NhZ2UgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZC4KQEAg
LTMyOCw2ICszMzYsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBTdHJpbmcgbV9kb21haW5G
b3JDYWNoZVBhcnRpdGlvbjsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBt
X2NvbnRleHRJZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA0MTVhYmFjMzBl
NTM0MmFiZGMzMGQyYWIxNTk2Y2YzYjRlYzZiOGQ1Li5lNmU4MDg4MzQ4OGQyODFiOGJiMmYzZDAw
ZGMxZTRhMGI2MTBmOTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmNwcApAQCAtODksNiArODksNyBAQCBXb3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xv
YmFsU2NvcGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgYwogV29y
a2VyR2xvYmFsU2NvcGU6On5Xb3JrZXJHbG9iYWxTY29wZSgpCiB7CiAgICAgQVNTRVJUKHRocmVh
ZCgpLnRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CisgICAgcmVtb3ZlRnJvbUNvbnRl
eHRzTWFwKCk7CiAKICAgICBtX3BlcmZvcm1hbmNlID0gbnVsbHB0cjsKICAgICBtX2NyeXB0byA9
IG51bGxwdHI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335749</attachid>
            <date>2018-03-13 17:49:44 -0700</date>
            <delta_ts>2018-03-14 08:50:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183602-20180313174943.patch</filename>
            <type>text/plain</type>
            <size>23100</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQxODdmMDkxZWI1ZmJm
ZDM3YTNmZTlhM2M4YjZmNTU4NjdjYjNiOS4uNWVlNTQ2MWNjNjVkYzk2N2QzMWRlODNjMzA0NDhh
ZjlmOTEwNTg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE4LTAzLTEzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL1dlYkNyeXB0b0FQSS93cmFwS2V5X3Vud3JhcEtleS93cmFwS2V5X3Vu
d3JhcEtleS53b3JrZXIuaHRtbCBpcyBjcmFzaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNjAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIGEgbWFwIG9mIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgdGhhdCBpcyByZWFkL3dyaXRlIHByb3RlY3RlZCB1c2luZyBhIExvY2suCisgICAg
ICAgIFRoaXMgYWxsb3dzIGludHJvZHVjaW5nIHBvc3RUYXNrVG8gdGFraW5nIGEgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCBpZGVudGlmaWVyIGFuZCBjYWxsYWJsZSBmcm9tIGFueSB0aHJlYWQuCisg
ICAgICAgIFVzZSB0aGF0IG1ldGhvZCBpbiBDcnlwdG8gaW5zdGVhZCBvZiByZWZpbmcvdW5yZWZp
bmcgIHRoZSBjb250ZXh0LgorICAgICAgICBMb2NrIG9ubHkgaGFwcGVucyBpZiBjb250ZXh0IGRv
ZXMgc29tZSBwb3N0VGFzayBhY3Rpdml0eS4gVGhpcyBpcyBnb3Zlcm5lZCBieSBjYWxsaW5nIG9y
IG5vdCB0aGUgbmV3IGNvbnRleHRJZGVudGlmaWVyKCkgZ2V0dGVyLgorCisgICAgICAgIENvdmVy
ZWQgYnkgY3J5cHRvIHRlc3RzIG5vIGxvbmdlciBmYWlsaW5nIG1fd29ya2VyR2xvYmFsU2NvcGUt
Pmhhc09uZVJlZigpIGFzc2VydGlvbi4KKworICAgICAgICAqIGNyeXB0by9DcnlwdG9BbGdvcml0
aG0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hBbGdvcml0aG1PcGVyYXRpb24pOgor
ICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDREguY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtRUNESDo6ZGVyaXZlQml0cyk6CisgICAgICAg
ICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
cnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRpZ2VzdCk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0Fs
Z29yaXRobVNIQTI1Njo6ZGlnZXN0KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1TSEEzODQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGht
U0hBMzg0OjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVNIQTUxMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEE1MTI6
OmRpZ2VzdCk6CisgICAgICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIpOgorICAgICAg
ICAqIGNyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNy
eXB0b0tleVJTQTo6Z2VuZXJhdGVQYWlyKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgICogZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWxsU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dHNNYXBMb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6cmVtb3ZlRnJvbUNvbnRleHRzTWFwKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNoZWNrQ29uc2lzdGVuY3kgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyk6Cisg
ICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNvbnRleHRJZGVudGlmaWVyIGNvbnN0KToKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckdsb2JhbFNjb3BlOjp+V29ya2VyR2xvYmFsU2NvcGUpOgorCiAyMDE4LTAzLTEyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBDYWxsaW5nIHJlbW92ZVRy
YWNrIHdpdGggUlRDUnRwU2VuZGVyIGRvZXMgbm90IHNldCBTZW5kZXJUcmFjayB0byBudWxsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uY3BwCmluZGV4IDU1OTNjZmI2NmI0
ZTBhMmI0MTZkMTgzM2RhYzgwOGM2NWY5MzZjMjkuLjRiZmJkN2RkNDM3MjBhNTIyMTAzOWZhMjc0
OGY4MTM4YjJmN2E2ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9B
bGdvcml0aG0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0u
Y3BwCkBAIC05NSwyNiArOTUsMTcgQEAgRXhjZXB0aW9uT3I8c2l6ZV90PiBDcnlwdG9BbGdvcml0
aG06OmdldEtleUxlbmd0aChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXIKIHRlbXBsYXRl
PHR5cGVuYW1lIFJlc3VsdENhbGxiYWNrVHlwZSwgdHlwZW5hbWUgT3BlcmF0aW9uVHlwZT4KIHN0
YXRpYyB2b2lkIGRpc3BhdGNoQWxnb3JpdGhtT3BlcmF0aW9uKFdvcmtRdWV1ZSYgd29ya1F1ZXVl
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZXN1bHRDYWxsYmFja1R5cGUmJiBj
YWxsYmFjaywgQ3J5cHRvQWxnb3JpdGhtOjpFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNh
bGxiYWNrLCBPcGVyYXRpb25UeXBlJiYgb3BlcmF0aW9uKQogewotICAgIGNvbnRleHQucmVmKCk7
CisgICAgLy8gVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgY2FsbGJhY2sgYW5kIGV4Y2VwdGlv
bkNhbGxiYWNrIHdpbGwgYmUgZGVzdHJveWVkIGluIHRoZSB0aHJlYWQgaW4gd2hpY2ggdGhleSB3
ZXJlIGNyZWF0ZWQuCiAgICAgd29ya1F1ZXVlLmRpc3BhdGNoKAotICAgICAgICBbb3BlcmF0aW9u
ID0gV1RGTW92ZShvcGVyYXRpb24pLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNl
cHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBt
dXRhYmxlIHsKKyAgICAgICAgW29wZXJhdGlvbiA9IFdURk1vdmUob3BlcmF0aW9uKSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2Vw
dGlvbkNhbGxiYWNrKSwgY29udGV4dElkZW50aWZpZXIgPSBjb250ZXh0LmNvbnRleHRJZGVudGlm
aWVyKCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG9wZXJhdGlvbigp
OwotICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAgICAgICAgICAg
ICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBi
YWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgICAgICBjb250
ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgICAgICBbZWMgPSByZXN1bHQucmVsZWFzZUV4
Y2VwdGlvbigpLmNvZGUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9u
Q2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJh
Y2soZWMpOwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAg
ICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBh
ZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAg
ICAgIGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAgICAgICAgW3Jlc3VsdCA9IHJlc3VsdC5y
ZWxlYXNlUmV0dXJuVmFsdWUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0
aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQp
OwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKGNvbnRl
eHRJZGVudGlmaWVyLCBbcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KHJlc3VsdCksIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRp
b25DYWxsYmFjayldKGF1dG8mKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0
Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNr
KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1
bHQucmVsZWFzZVJldHVyblZhbHVlKCkpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1FQ0RILmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobUVDREguY3BwCmluZGV4IDM3N2Y4YzZiMDNmMjZkNDJkNjQ4MzU0MmNkNzU3ZjY5
MDA5MjYwMjQuLjdiYTg2MTlkNzBlODM3MWE4Y2Y4YTE5MjUxODI1ZGFmM2UxMjQ1ZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVD
REguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobUVDREguY3BwCkBAIC0xMTYsMTUgKzExNiwxMiBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUVD
REg6OmRlcml2ZUJpdHMoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+
JgogCiAgICAgLy8gVGhpcyBpcyBhIHNwZWNpYWwgY2FzZSB0aGF0IGNhbid0IHVzZSBkaXNwYXRj
aE9wZXJhdGlvbigpIGJlY2F1c2UgaXQgYnVuZGxlcwogICAgIC8vIHRoZSByZXN1bHQgdmFsaWRh
dGlvbiBhbmQgY2FsbGJhY2sgZGlzcGF0Y2ggaW50byB1bmlmaWVkQ2FsbGJhY2suCi0gICAgY29u
dGV4dC5yZWYoKTsKICAgICB3b3JrUXVldWUuZGlzcGF0Y2goCi0gICAgICAgIFtiYXNlS2V5ID0g
V1RGTW92ZShiYXNlS2V5KSwgcHVibGljS2V5ID0gZWNQYXJhbWV0ZXJzLnB1YmxpY0tleS5yZWxl
YXNlTm9uTnVsbCgpLCBsZW5ndGgsIHVuaWZpZWRDYWxsYmFjayA9IFdURk1vdmUodW5pZmllZENh
bGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7CisgICAgICAgIFtiYXNlS2V5ID0gV1RGTW92
ZShiYXNlS2V5KSwgcHVibGljS2V5ID0gZWNQYXJhbWV0ZXJzLnB1YmxpY0tleS5yZWxlYXNlTm9u
TnVsbCgpLCBsZW5ndGgsIHVuaWZpZWRDYWxsYmFjayA9IFdURk1vdmUodW5pZmllZENhbGxiYWNr
KSwgaWRlbnRpZmllciA9IGNvbnRleHQuY29udGV4dElkZW50aWZpZXIoKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGF1dG8gZGVyaXZlZEtleSA9IHBsYXRmb3JtRGVyaXZlQml0cyhkb3duY2Fz
dDxDcnlwdG9LZXlFQz4oYmFzZUtleS5nZXQoKSksIGRvd25jYXN0PENyeXB0b0tleUVDPihwdWJs
aWNLZXkuZ2V0KCkpKTsKLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAg
ICAgICAgW2Rlcml2ZWRLZXkgPSBXVEZNb3ZlKGRlcml2ZWRLZXkpLCBsZW5ndGgsIHVuaWZpZWRD
YWxsYmFjayA9IFdURk1vdmUodW5pZmllZENhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgICAgIHVuaWZpZWRDYWxsYmFj
ayhXVEZNb3ZlKGRlcml2ZWRLZXkpLCBsZW5ndGgpOwotICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKGlkZW50aWZpZXIsIFtkZXJpdmVkS2V5ID0gV1RGTW92
ZShkZXJpdmVkS2V5KSwgbGVuZ3RoLCB1bmlmaWVkQ2FsbGJhY2sgPSBXVEZNb3ZlKHVuaWZpZWRD
YWxsYmFjayldKGF1dG8mKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICB1bmlmaWVkQ2FsbGJh
Y2soV1RGTW92ZShkZXJpdmVkS2V5KSwgbGVuZ3RoKTsKKyAgICAgICAgICAgIH0pOwogICAgICAg
ICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtU0hBMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1TSEExLmNwcAppbmRleCA5NDc0MDljOGIyNjA0OWU4MjMxZjczYjI0
YzFlMjZjM2NiZDIxYzZjLi5jMjUxZWRlMzMxNThlMmNhZGQzYWMxMDNlYjk2MTdkMTk4ZjJiZWJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1TSEExLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1TSEExLmNwcApAQCAtNTEsMTMgKzUxLDExIEBAIHZvaWQgQ3J5cHRvQWxnb3Jp
dGhtU0hBMTo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNr
JiYgY2FsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb250ZXh0LnJlZigpOwotICAg
IHdvcmtRdWV1ZS5kaXNwYXRjaChbZGlnZXN0ID0gV1RGTW92ZShkaWdlc3QpLCBtZXNzYWdlID0g
V1RGTW92ZShtZXNzYWdlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgJmNvbnRleHRd
KCkgbXV0YWJsZSB7CisgICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtkaWdlc3QgPSBXVEZNb3ZlKGRp
Z2VzdCksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spLCBpZGVudGlmaWVyID0gY29udGV4dC5jb250ZXh0SWRlbnRpZmllcigpXSgpIG11dGFi
bGUgewogICAgICAgICBkaWdlc3QtPmFkZEJ5dGVzKG1lc3NhZ2UuZGF0YSgpLCBtZXNzYWdlLnNp
emUoKSk7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gZGlnZXN0LT5jb21wdXRlSGFzaCgpOwotICAg
ICAgICBjb250ZXh0LnBvc3RUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZXN1
bHQgPSBXVEZNb3ZlKHJlc3VsdCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsK
KyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhpZGVudGlmaWVyLCBb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXShh
dXRvJikgewogICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgIGNvbnRl
eHQuZGVyZWYoKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcApp
bmRleCBkOTA2NzgzYTY0YzM0ZWU3N2JjNTc5N2VmNDg4OWQ1MmMxZjQ2MmZkLi5hOTFiOTYwNDMw
YWJhZDgzM2MxNTQ5MDhiNTA2MGIzNzgxMzZjZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAKQEAg
LTUxLDEzICs1MSwxMSBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTIyNDo6ZGlnZXN0KFZlY3Rv
cjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgYwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW2Rp
Z2VzdCA9IFdURk1vdmUoZGlnZXN0KSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgeworICAgIHdvcmtR
dWV1ZS5kaXNwYXRjaChbZGlnZXN0ID0gV1RGTW92ZShkaWdlc3QpLCBtZXNzYWdlID0gV1RGTW92
ZShtZXNzYWdlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgaWRlbnRpZmllciA9IGNv
bnRleHQuY29udGV4dElkZW50aWZpZXIoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgZGlnZXN0LT5h
ZGRCeXRlcyhtZXNzYWdlLmRhdGEoKSwgbWVzc2FnZS5zaXplKCkpOwogICAgICAgICBhdXRvIHJl
c3VsdCA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKLSAgICAgICAgY29udGV4dC5wb3N0VGFzayhb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OnBvc3RUYXNrVG8oaWRlbnRpZmllciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oYXV0byYpIHsKICAgICAgICAgICAgIGNh
bGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CiAgICAgICAgIH0p
OwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAKaW5kZXggNjQyNzFmYTlhYTYyODMzODk4
MDg2YjJkYjUxMWRhZjE2OGQzZjkwYy4uMWJiMmJhYWExMDU4ODQzNjBlMzRmODliMWY1MTUyYWI5
MDE3OGE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtU0hBMjU2LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwCkBAIC01MSwxMyArNTEsMTEgQEAgdm9pZCBD
cnlwdG9BbGdvcml0aG1TSEEyNTY6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBW
ZWN0b3JDYWxsYmFjayYmIGMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbnRleHQu
cmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtkaWdlc3QgPSBXVEZNb3ZlKGRpZ2VzdCks
IG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICB3b3JrUXVldWUuZGlzcGF0Y2goW2RpZ2VzdCA9
IFdURk1vdmUoZGlnZXN0KSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIGlkZW50aWZpZXIgPSBjb250ZXh0LmNvbnRleHRJZGVudGlmaWVy
KCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMobWVzc2FnZS5kYXRhKCks
IG1lc3NhZ2Uuc2l6ZSgpKTsKICAgICAgICAgYXV0byByZXN1bHQgPSBkaWdlc3QtPmNvbXB1dGVI
YXNoKCk7Ci0gICAgICAgIGNvbnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgeworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKGlk
ZW50aWZpZXIsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZXN1bHQgPSBXVEZNb3Zl
KHJlc3VsdCldKGF1dG8mKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAg
ICAgICAgY29udGV4dC5kZXJlZigpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4
NC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1T
SEEzODQuY3BwCmluZGV4IGYyMmJhNmZlY2YwMzFhZmUwYjIyM2FlOTdjYjc3YTY2MWQzNGViYjgu
LmFjNWE3MGY2OWU1NzQ0ODhlZTAxZmQ0YzY0Mjc0OWRlYWU5MWZjZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hB
Mzg0LmNwcApAQCAtNTEsMTMgKzUxLDExIEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMzg0Ojpk
aWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb250ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5k
aXNwYXRjaChbZGlnZXN0ID0gV1RGTW92ZShkaWdlc3QpLCBtZXNzYWdlID0gV1RGTW92ZShtZXNz
YWdlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7
CisgICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtkaWdlc3QgPSBXVEZNb3ZlKGRpZ2VzdCksIG1lc3Nh
Z2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBpZGVu
dGlmaWVyID0gY29udGV4dC5jb250ZXh0SWRlbnRpZmllcigpXSgpIG11dGFibGUgewogICAgICAg
ICBkaWdlc3QtPmFkZEJ5dGVzKG1lc3NhZ2UuZGF0YSgpLCBtZXNzYWdlLnNpemUoKSk7CiAgICAg
ICAgIGF1dG8gcmVzdWx0ID0gZGlnZXN0LT5jb21wdXRlSGFzaCgpOwotICAgICAgICBjb250ZXh0
LnBvc3RUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZXN1bHQgPSBXVEZNb3Zl
KHJlc3VsdCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhpZGVudGlmaWVyLCBbY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXShhdXRvJikgewogICAg
ICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsK
ICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcAppbmRleCAxNDExMWQy
Mzk0OGJlY2I2ODRhNmJhZDA4Yzg4YzYxZmI5MzBiY2IyLi40NzZkZGNiZWI3MmNjMjkwN2E0ZDY0
MGNkZDgzMGY1ZjdlMzk3ZjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAKQEAgLTUxLDEzICs1MSwx
MSBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTUxMjo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYm
IG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgYwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW2RpZ2VzdCA9IFdURk1v
dmUoZGlnZXN0KSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgeworICAgIHdvcmtRdWV1ZS5kaXNwYXRj
aChbZGlnZXN0ID0gV1RGTW92ZShkaWdlc3QpLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgaWRlbnRpZmllciA9IGNvbnRleHQuY29udGV4
dElkZW50aWZpZXIoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgZGlnZXN0LT5hZGRCeXRlcyhtZXNz
YWdlLmRhdGEoKSwgbWVzc2FnZS5zaXplKCkpOwogICAgICAgICBhdXRvIHJlc3VsdCA9IGRpZ2Vz
dC0+Y29tcHV0ZUhhc2goKTsKLSAgICAgICAgY29udGV4dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBv
c3RUYXNrVG8oaWRlbnRpZmllciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJlc3Vs
dCA9IFdURk1vdmUocmVzdWx0KV0oYXV0byYpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3Vs
dCk7Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CiAgICAgICAgIH0pOwogICAgIH0pOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FH
Q3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5
cHQuY3BwCmluZGV4IDkxY2I2NDQ4OGIzMWI4ODllMGRmZjkxMmFmOWJjMjA4ZGY1ZjBhYTkuLjA4
MDIwOTk1NDRjODRkM2RiMTgzNzA2M2I0OTdlNTlkYmRmYjZmZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAKQEAgLTIzMSwx
NCArMjMxLDEyIEBAIHZvaWQgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIoQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciBhbGdvcml0aG0sIENyeXB0b0FsZ29yCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBjb250ZXh0LT5yZWYoKTsKICAgICBjb250ZXh0LT5wb3N0VGFzaygKLSAgICAg
ICAgW2FsZ29yaXRobSwgaGFzaCwgaGFzSGFzaCwgZXh0cmFjdGFibGUsIHVzYWdlLCBwdWJsaWNL
ZXlTZXhwID0gcHVibGljS2V5U2V4cC5yZWxlYXNlKCksIHByaXZhdGVLZXlTZXhwID0gcHJpdmF0
ZUtleVNleHAucmVsZWFzZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgW2FsZ29yaXRobSwg
aGFzaCwgaGFzSGFzaCwgZXh0cmFjdGFibGUsIHVzYWdlLCBwdWJsaWNLZXlTZXhwID0gcHVibGlj
S2V5U2V4cC5yZWxlYXNlKCksIHByaXZhdGVLZXlTZXhwID0gcHJpdmF0ZUtleVNleHAucmVsZWFz
ZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJikgbXV0YWJsZSB7CiAgICAg
ICAgICAgICBhdXRvIHB1YmxpY0tleSA9IENyeXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRobSwg
aGFzaCwgaGFzSGFzaCwgQ3J5cHRvS2V5VHlwZTo6UHVibGljLCBwdWJsaWNLZXlTZXhwLCB0cnVl
LCB1c2FnZSk7CiAgICAgICAgICAgICBhdXRvIHByaXZhdGVLZXkgPSBDcnlwdG9LZXlSU0E6OmNy
ZWF0ZShhbGdvcml0aG0sIGhhc2gsIGhhc0hhc2gsIENyeXB0b0tleVR5cGU6OlByaXZhdGUsIHBy
aXZhdGVLZXlTZXhwLCBleHRyYWN0YWJsZSwgdXNhZ2UpOwogCiAgICAgICAgICAgICBjYWxsYmFj
ayhDcnlwdG9LZXlQYWlyIHsgV1RGTW92ZShwdWJsaWNLZXkpLCBXVEZNb3ZlKHByaXZhdGVLZXkp
IH0pOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwogICAgICAgICB9KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMuY3BwCmluZGV4IGJjMDJj
MjkyZDQ1NGVjZTM3NWVkOGMzNzAyNTNjOWYzMmE0M2FiNmEuLjllNzI5OGFhYTcyNjU1MjY1MTMy
MWVjODBkZDUyNDcwMDk0MjRmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9t
YWMvQ3J5cHRvS2V5UlNBTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0Ny
eXB0b0tleVJTQU1hYy5jcHAKQEAgLTI5MywyNCArMjkzLDI0IEBAIHZvaWQgQ3J5cHRvS2V5UlNB
OjpnZW5lcmF0ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0sIENyeXB0
b0FsZ29yCiAgICAgLy8gV2Ugb25seSB1c2UgdGhlIGNhbGxiYWNrIGZ1bmN0aW9ucyB3aGVuIGJh
Y2sgb24gdGhlIG1haW4vd29ya2VyIHRocmVhZCwgYnV0IGNhcHR1cmVkIHZhcmlhYmxlcyBhcmUg
Y29waWVkIG9uIGEgc2Vjb25kYXJ5IHRocmVhZCB0b28uCiAgICAgS2V5UGFpckNhbGxiYWNrKiBs
b2NhbENhbGxiYWNrID0gbmV3IEtleVBhaXJDYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSk7CiAg
ICAgVm9pZENhbGxiYWNrKiBsb2NhbEZhaWx1cmVDYWxsYmFjayA9IG5ldyBWb2lkQ2FsbGJhY2so
V1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKLSAgICBjb250ZXh0LT5yZWYoKTsKKyAgICBhdXRv
IGNvbnRleHRJZGVudGlmaWVyID0gY29udGV4dC0+Y29udGV4dElkZW50aWZpZXIoKTsKIAorICAg
IC8vIEZJWE1FOiBUaGVyZSBpcyBhIHJpc2sgdGhhdCBsb2NhbENhbGxiYWNrIGFuZCBsb2NhbEZh
aWx1cmVDYWxsYmFjayBhcmUgbmV2ZXIgZnJlZWQuCisgICAgLy8gRml4IHRoaXMgYnkgdXNpbmcg
dW5pcXVlIHBvaW50ZXJzIGFuZCBtb3ZlIHRoZW0gZnJvbSBvbmUgbGFtYmRhIHRvIHRoZSBvdGhl
ci4KICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENI
X1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBeewotICAgICAgICBBU1NFUlQoY29udGV4dCk7
CiAgICAgICAgIENDUlNBQ3J5cHRvclJlZiBjY1B1YmxpY0tleTsKICAgICAgICAgQ0NSU0FDcnlw
dG9yUmVmIGNjUHJpdmF0ZUtleTsKICAgICAgICAgQ0NDcnlwdG9yU3RhdHVzIHN0YXR1cyA9IEND
UlNBQ3J5cHRvckdlbmVyYXRlUGFpcihtb2R1bHVzTGVuZ3RoLCBlLCAmY2NQdWJsaWNLZXksICZj
Y1ByaXZhdGVLZXkpOwogICAgICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICBXVEZMb2dB
bHdheXMoIkNvdWxkIG5vdCBnZW5lcmF0ZSBhIGtleSBwYWlyLCBzdGF0dXMgJWQiLCBzdGF0dXMp
OwotICAgICAgICAgICAgY29udGV4dC0+cG9zdFRhc2soW2xvY2FsQ2FsbGJhY2ssIGxvY2FsRmFp
bHVyZUNhbGxiYWNrXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAg
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKGNvbnRleHRJZGVudGlmaWVy
LCBbbG9jYWxDYWxsYmFjaywgbG9jYWxGYWlsdXJlQ2FsbGJhY2tdKGF1dG8mKSB7CiAgICAgICAg
ICAgICAgICAgKCpsb2NhbEZhaWx1cmVDYWxsYmFjaykoKTsKICAgICAgICAgICAgICAgICBkZWxl
dGUgbG9jYWxDYWxsYmFjazsKICAgICAgICAgICAgICAgICBkZWxldGUgbG9jYWxGYWlsdXJlQ2Fs
bGJhY2s7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwogICAgICAgICAgICAgfSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgY29udGV4dC0+cG9zdFRh
c2soW2FsZ29yaXRobSwgaGFzaCwgaGFzSGFzaCwgZXh0cmFjdGFibGUsIHVzYWdlLCBsb2NhbENh
bGxiYWNrLCBsb2NhbEZhaWx1cmVDYWxsYmFjaywgY2NQdWJsaWNLZXksIGNjUHJpdmF0ZUtleV0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0Ojpwb3N0VGFza1RvKGNvbnRleHRJZGVudGlmaWVyLCBbYWxnb3JpdGhtLCBoYXNo
LCBoYXNIYXNoLCBleHRyYWN0YWJsZSwgdXNhZ2UsIGxvY2FsQ2FsbGJhY2ssIGxvY2FsRmFpbHVy
ZUNhbGxiYWNrLCBjY1B1YmxpY0tleSwgY2NQcml2YXRlS2V5XShhdXRvJikgewogICAgICAgICAg
ICAgYXV0byBwdWJsaWNLZXkgPSBDcnlwdG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gs
IGhhc0hhc2gsIENyeXB0b0tleVR5cGU6OlB1YmxpYywgY2NQdWJsaWNLZXksIHRydWUsIHVzYWdl
KTsKICAgICAgICAgICAgIGF1dG8gcHJpdmF0ZUtleSA9IENyeXB0b0tleVJTQTo6Y3JlYXRlKGFs
Z29yaXRobSwgaGFzaCwgaGFzSGFzaCwgQ3J5cHRvS2V5VHlwZTo6UHJpdmF0ZSwgY2NQcml2YXRl
S2V5LCBleHRyYWN0YWJsZSwgdXNhZ2UpOwogCkBAIC0zMTgsNyArMzE4LDYgQEAgdm9pZCBDcnlw
dG9LZXlSU0E6OmdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRo
bSwgQ3J5cHRvQWxnb3IKIAogICAgICAgICAgICAgZGVsZXRlIGxvY2FsQ2FsbGJhY2s7CiAgICAg
ICAgICAgICBkZWxldGUgbG9jYWxGYWlsdXJlQ2FsbGJhY2s7Ci0gICAgICAgICAgICBjb250ZXh0
LmRlcmVmKCk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
aW5kZXggMmJjMjA2NTU4MWUwMTAxYjBhYTUzOWYwNGYwYjI4NGRiNjBmYjRmMS4uNjVlYTZkMzIy
ODk3ZjdiNTU3ODQzOGIzZTNiODNkNDE0NTMwYmU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CkBAIC01NjcsOCArNTY3LDEwIEBAIFJlZjxEb2N1bWVudD4gRG9jdW1lbnQ6OmNyZWF0ZShEb2N1
bWVudCYgY29udGV4dERvY3VtZW50KQogCiBEb2N1bWVudDo6fkRvY3VtZW50KCkKIHsKLSAgICBi
b29sIHdhc1JlbW92ZWQgPSBhbGxEb2N1bWVudHNNYXAoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsK
LSAgICBBU1NFUlRfVU5VU0VEKHdhc1JlbW92ZWQsIHdhc1JlbW92ZWQpOworICAgIEFTU0VSVChh
bGxEb2N1bWVudHNNYXAoKS5jb250YWlucyhtX2lkZW50aWZpZXIpKTsKKyAgICBhbGxEb2N1bWVu
dHNNYXAoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKKyAgICAvLyBXZSBuZWVkIHRvIHJlbW92ZSBm
cm9tIHRoZSBjb250ZXh0cyBtYXAgdmVyeSBlYXJseSBpbiB0aGUgZGVzdHJ1Y3RvciBzbyB0aGF0
IHBvc3RpbmcgdGFzayB0byB0aGF0IERvY3VtZW50IGZyb20gYW5vdGhlciB0aHJlYWQgaXMgc2Fm
ZS4KKyAgICByZW1vdmVGcm9tQ29udGV4dHNNYXAoKTsKIAogICAgIEFTU0VSVCghcmVuZGVyVmll
dygpKTsKICAgICBBU1NFUlQobV9wYWdlQ2FjaGVTdGF0ZSAhPSBJblBhZ2VDYWNoZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggNTFlMzFk
MzhlZjljMzZjNmQ2NzZmNDQwNmJlMzZjMTExN2NmOTM4Mi4uNDRmNGU0NzNkYmU1ODNiZjFlYjM3
YTAzYThjNzM2MzFjYmVjODA1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmNwcApAQCAtNjUsNiArNjUsMTggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKK3N0YXRpYyBIYXNoTWFwPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRJZGVudGlmaWVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kj4mIGFsbFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRzTWFwKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFz
aE1hcDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCo+PiBjb250ZXh0czsKKyAgICByZXR1cm4gY29udGV4dHM7Cit9CisKK3N0YXRpYyBMb2Nr
JiBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2soKQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxMb2NrPiBsb2NrOworICAgIHJldHVybiBsb2NrOworfQorCiBzdHJ1Y3QgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6UGVuZGluZ0V4Y2VwdGlvbiB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC04Nyw2ICs5OSwyOCBAQCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKIHsKIH0KIAorU2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y29udGV4dElkZW50aWZp
ZXIoKSBjb25zdAoreworICAgIGlmICghbV9jb250ZXh0SWRlbnRpZmllci50b1VJbnQ2NCgpKSB7
CisgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNN
YXBMb2NrKCkpOworCisgICAgICAgIG1fY29udGV4dElkZW50aWZpZXIgPSBnZW5lcmF0ZU9iamVj
dElkZW50aWZpZXI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXJUeXBlPigpOworCisg
ICAgICAgIEFTU0VSVCghYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXAoKS5jb250YWlucyht
X2NvbnRleHRJZGVudGlmaWVyKSk7CisgICAgICAgIGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRz
TWFwKCkuYWRkKG1fY29udGV4dElkZW50aWZpZXIsIGNvbnN0X2Nhc3Q8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCo+KHRoaXMpKTsKKyAgICB9CisgICAgcmV0dXJuIG1fY29udGV4dElkZW50aWZpZXI7
Cit9CisKK3ZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVtb3ZlRnJvbUNvbnRleHRzTWFw
KCkKK3sKKyAgICBpZiAobV9jb250ZXh0SWRlbnRpZmllci50b1VJbnQ2NCgpKSB7CisgICAgICAg
IExvY2tlcjxMb2NrPiBsb2NrZXIoYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXBMb2NrKCkp
OworICAgICAgICBBU1NFUlQoYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXAoKS5jb250YWlu
cyhtX2NvbnRleHRJZGVudGlmaWVyKSk7CisgICAgICAgIGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRzTWFwKCkucmVtb3ZlKG1fY29udGV4dElkZW50aWZpZXIpOworICAgIH0KK30KKwogI2lmIEFT
U0VSVF9ESVNBQkxFRAogCiBpbmxpbmUgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjaGVj
a0NvbnNpc3RlbmN5KCkgY29uc3QKQEAgLTExNiw2ICsxNTAsMTEgQEAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQogICAgIGNoZWNrQ29uc2lzdGVuY3ko
KTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBpZiAobV9jb250ZXh0SWRlbnRpZmllci50
b1VJbnQ2NCgpKSB7CisgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoYWxsU2NyaXB0RXhlY3V0
aW9uQ29udGV4dHNNYXBMb2NrKCkpOworICAgICAgICBBU1NFUlQoIWFsbFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRzTWFwKCkuY29udGFpbnMobV9jb250ZXh0SWRlbnRpZmllcikpOworICAgIH0KKwog
ICAgIG1faW5TY3JpcHRFeGVjdXRpb25Db250ZXh0RGVzdHJ1Y3RvciA9IHRydWU7CiAjZW5kaWYK
IApAQCAtNTgwLDYgKzYxOSwxOSBAQCBib29sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RU
YXNrVG8oY29uc3QgRG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXImIGNvbnRleAogICAgIH0pOwog
ICAgIHJldHVybiB3YXNQb3N0ZWQ7CiB9CisKICNlbmRpZgogCitib29sIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OnBvc3RUYXNrVG8oU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgaWRl
bnRpZmllciwgVGFzayYmIHRhc2spCit7CisgICAgTG9ja2VyPExvY2s+IGxvY2tlcihhbGxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0c01hcExvY2soKSk7CisgICAgYXV0byogY29udGV4dCA9IGFsbFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKCkuZ2V0KGlkZW50aWZpZXIpOworCisgICAgaWYgKCFj
b250ZXh0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjb250ZXh0LT5wb3N0VGFzayhX
VEZNb3ZlKHRhc2spKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXgg
YWY3NTAyMDcxYTVlZjllZDdjOGI4YTlhNDBiNjg4ZjZkOGQ5YjE0OS4uMmFkMjdlZjM3ZDc2MTIz
M2E2ZTVmZTBjOWViNzkwMmM0ZDAyNjQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL0Nyb3Nz
VGhyZWFkVGFzay5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC03OCw2ICs3OSw5IEBA
IG5hbWVzcGFjZSBJREJDbGllbnQgewogY2xhc3MgSURCQ29ubmVjdGlvblByb3h5OwogfQogCitl
bnVtIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXJUeXBlPjsKKwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCA6IHB1YmxpYyBTZWN1cml0eUNvbnRleHQgewogcHVibGljOgogICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKQEAgLTI1Myw2ICsyNTcsOSBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgYm9vbCBwb3N0VGFza1RvKGNvbnN0IERvY3VtZW50T3JXb3JrZXJJZGVu
dGlmaWVyJiwgV1RGOjpGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJik7
CiAjZW5kaWYKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBwb3N0VGFza1RvKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBUYXNrJiYpOworCisgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkZW50aWZpZXIoKSBjb25zdDsKIAogcHJvdGVj
dGVkOgogICAgIGNsYXNzIEFkZENvbnNvbGVNZXNzYWdlVGFzayA6IHB1YmxpYyBUYXNrIHsKQEAg
LTI3NSw2ICsyODIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgQWN0aXZlRE9NT2JqZWN0OjpSZWFzb25G
b3JTdXNwZW5zaW9uIHJlYXNvbkZvclN1c3BlbmRpbmdBY3RpdmVET01PYmplY3RzKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWFzb25Gb3JTdXNwZW5kaW5nQWN0aXZlRE9NT2JqZWN0czsgfQogCiAgICAg
Ym9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdDsKKyAgICB2b2lkIHJlbW92ZUZyb21Db250
ZXh0c01hcCgpOwogCiBwcml2YXRlOgogICAgIC8vIFRoZSBmb2xsb3dpbmcgYWRkTWVzc2FnZSBm
dW5jdGlvbiBpcyBkZXByZWNhdGVkLgpAQCAtMzI4LDYgKzMzNiw3IEBAIHByaXZhdGU6CiAjZW5k
aWYKIAogICAgIFN0cmluZyBtX2RvbWFpbkZvckNhY2hlUGFydGl0aW9uOworICAgIG11dGFibGUg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgbV9jb250ZXh0SWRlbnRpZmllcjsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggNDE1YWJhYzMwZTUzNDJhYmRjMzBkMmFiMTU5NmNmM2I0
ZWM2YjhkNS4uZjk0YWI4NTRkOWIzNjUwNWU2MzBkNWNkN2VlMzUzNjk2ZmM2MzUxNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTg5LDYgKzg5
LDggQEAgV29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGMKIFdvcmtlckdsb2JhbFNjb3BlOjp+V29ya2Vy
R2xvYmFsU2NvcGUoKQogewogICAgIEFTU0VSVCh0aHJlYWQoKS50aHJlYWQoKSA9PSAmVGhyZWFk
OjpjdXJyZW50KCkpOworICAgIC8vIFdlIG5lZWQgdG8gcmVtb3ZlIGZyb20gdGhlIGNvbnRleHRz
IG1hcCB2ZXJ5IGVhcmx5IGluIHRoZSBkZXN0cnVjdG9yIHNvIHRoYXQgcG9zdGluZyB0YXNrIHRv
IHRoYXQgd29ya2VyIGZyb20gYW5vdGhlciB0aHJlYWQgaXMgc2FmZS4KKyAgICByZW1vdmVGcm9t
Q29udGV4dHNNYXAoKTsKIAogICAgIG1fcGVyZm9ybWFuY2UgPSBudWxscHRyOwogICAgIG1fY3J5
cHRvID0gbnVsbHB0cjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335770</attachid>
            <date>2018-03-14 08:50:49 -0700</date>
            <delta_ts>2018-03-14 13:00:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183602-20180314085047.patch</filename>
            <type>text/plain</type>
            <size>23184</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQxODdmMDkxZWI1ZmJm
ZDM3YTNmZTlhM2M4YjZmNTU4NjdjYjNiOS4uNWVlNTQ2MWNjNjVkYzk2N2QzMWRlODNjMzA0NDhh
ZjlmOTEwNTg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE4LTAzLTEzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL1dlYkNyeXB0b0FQSS93cmFwS2V5X3Vud3JhcEtleS93cmFwS2V5X3Vu
d3JhcEtleS53b3JrZXIuaHRtbCBpcyBjcmFzaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNjAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIGEgbWFwIG9mIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgdGhhdCBpcyByZWFkL3dyaXRlIHByb3RlY3RlZCB1c2luZyBhIExvY2suCisgICAg
ICAgIFRoaXMgYWxsb3dzIGludHJvZHVjaW5nIHBvc3RUYXNrVG8gdGFraW5nIGEgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCBpZGVudGlmaWVyIGFuZCBjYWxsYWJsZSBmcm9tIGFueSB0aHJlYWQuCisg
ICAgICAgIFVzZSB0aGF0IG1ldGhvZCBpbiBDcnlwdG8gaW5zdGVhZCBvZiByZWZpbmcvdW5yZWZp
bmcgIHRoZSBjb250ZXh0LgorICAgICAgICBMb2NrIG9ubHkgaGFwcGVucyBpZiBjb250ZXh0IGRv
ZXMgc29tZSBwb3N0VGFzayBhY3Rpdml0eS4gVGhpcyBpcyBnb3Zlcm5lZCBieSBjYWxsaW5nIG9y
IG5vdCB0aGUgbmV3IGNvbnRleHRJZGVudGlmaWVyKCkgZ2V0dGVyLgorCisgICAgICAgIENvdmVy
ZWQgYnkgY3J5cHRvIHRlc3RzIG5vIGxvbmdlciBmYWlsaW5nIG1fd29ya2VyR2xvYmFsU2NvcGUt
Pmhhc09uZVJlZigpIGFzc2VydGlvbi4KKworICAgICAgICAqIGNyeXB0by9DcnlwdG9BbGdvcml0
aG0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hBbGdvcml0aG1PcGVyYXRpb24pOgor
ICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDREguY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtRUNESDo6ZGVyaXZlQml0cyk6CisgICAgICAg
ICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
cnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRpZ2VzdCk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0Fs
Z29yaXRobVNIQTI1Njo6ZGlnZXN0KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1TSEEzODQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGht
U0hBMzg0OjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVNIQTUxMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEE1MTI6
OmRpZ2VzdCk6CisgICAgICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIpOgorICAgICAg
ICAqIGNyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNy
eXB0b0tleVJTQTo6Z2VuZXJhdGVQYWlyKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgICogZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWxsU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dHNNYXBMb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6cmVtb3ZlRnJvbUNvbnRleHRzTWFwKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNoZWNrQ29uc2lzdGVuY3kgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyk6Cisg
ICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNvbnRleHRJZGVudGlmaWVyIGNvbnN0KToKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckdsb2JhbFNjb3BlOjp+V29ya2VyR2xvYmFsU2NvcGUpOgorCiAyMDE4LTAzLTEyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBDYWxsaW5nIHJlbW92ZVRy
YWNrIHdpdGggUlRDUnRwU2VuZGVyIGRvZXMgbm90IHNldCBTZW5kZXJUcmFjayB0byBudWxsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uY3BwCmluZGV4IDU1OTNjZmI2NmI0
ZTBhMmI0MTZkMTgzM2RhYzgwOGM2NWY5MzZjMjkuLjRiZmJkN2RkNDM3MjBhNTIyMTAzOWZhMjc0
OGY4MTM4YjJmN2E2ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9B
bGdvcml0aG0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0u
Y3BwCkBAIC05NSwyNiArOTUsMTcgQEAgRXhjZXB0aW9uT3I8c2l6ZV90PiBDcnlwdG9BbGdvcml0
aG06OmdldEtleUxlbmd0aChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXIKIHRlbXBsYXRl
PHR5cGVuYW1lIFJlc3VsdENhbGxiYWNrVHlwZSwgdHlwZW5hbWUgT3BlcmF0aW9uVHlwZT4KIHN0
YXRpYyB2b2lkIGRpc3BhdGNoQWxnb3JpdGhtT3BlcmF0aW9uKFdvcmtRdWV1ZSYgd29ya1F1ZXVl
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZXN1bHRDYWxsYmFja1R5cGUmJiBj
YWxsYmFjaywgQ3J5cHRvQWxnb3JpdGhtOjpFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNh
bGxiYWNrLCBPcGVyYXRpb25UeXBlJiYgb3BlcmF0aW9uKQogewotICAgIGNvbnRleHQucmVmKCk7
CisgICAgLy8gVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgY2FsbGJhY2sgYW5kIGV4Y2VwdGlv
bkNhbGxiYWNrIHdpbGwgYmUgZGVzdHJveWVkIGluIHRoZSB0aHJlYWQgaW4gd2hpY2ggdGhleSB3
ZXJlIGNyZWF0ZWQuCiAgICAgd29ya1F1ZXVlLmRpc3BhdGNoKAotICAgICAgICBbb3BlcmF0aW9u
ID0gV1RGTW92ZShvcGVyYXRpb24pLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNl
cHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBt
dXRhYmxlIHsKKyAgICAgICAgW29wZXJhdGlvbiA9IFdURk1vdmUob3BlcmF0aW9uKSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2Vw
dGlvbkNhbGxiYWNrKSwgY29udGV4dElkZW50aWZpZXIgPSBjb250ZXh0LmNvbnRleHRJZGVudGlm
aWVyKCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG9wZXJhdGlvbigp
OwotICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAgICAgICAgICAg
ICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBi
YWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgICAgICBjb250
ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgICAgICBbZWMgPSByZXN1bHQucmVsZWFzZUV4
Y2VwdGlvbigpLmNvZGUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9u
Q2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJh
Y2soZWMpOwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAg
ICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBh
ZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAg
ICAgIGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAgICAgICAgW3Jlc3VsdCA9IHJlc3VsdC5y
ZWxlYXNlUmV0dXJuVmFsdWUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0
aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQp
OwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKGNvbnRl
eHRJZGVudGlmaWVyLCBbcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KHJlc3VsdCksIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRp
b25DYWxsYmFjayldKGF1dG8mKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0
Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNr
KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1
bHQucmVsZWFzZVJldHVyblZhbHVlKCkpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1FQ0RILmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobUVDREguY3BwCmluZGV4IDM3N2Y4YzZiMDNmMjZkNDJkNjQ4MzU0MmNkNzU3ZjY5
MDA5MjYwMjQuLjE2M2JkOWMxOTIyNTk2YTFhNWVhZGRjNDNjNWNmYWM5NDE0MTljMmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVD
REguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobUVDREguY3BwCkBAIC0xMTYsMTUgKzExNiwxMiBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUVD
REg6OmRlcml2ZUJpdHMoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+
JgogCiAgICAgLy8gVGhpcyBpcyBhIHNwZWNpYWwgY2FzZSB0aGF0IGNhbid0IHVzZSBkaXNwYXRj
aE9wZXJhdGlvbigpIGJlY2F1c2UgaXQgYnVuZGxlcwogICAgIC8vIHRoZSByZXN1bHQgdmFsaWRh
dGlvbiBhbmQgY2FsbGJhY2sgZGlzcGF0Y2ggaW50byB1bmlmaWVkQ2FsbGJhY2suCi0gICAgY29u
dGV4dC5yZWYoKTsKICAgICB3b3JrUXVldWUuZGlzcGF0Y2goCi0gICAgICAgIFtiYXNlS2V5ID0g
V1RGTW92ZShiYXNlS2V5KSwgcHVibGljS2V5ID0gZWNQYXJhbWV0ZXJzLnB1YmxpY0tleS5yZWxl
YXNlTm9uTnVsbCgpLCBsZW5ndGgsIHVuaWZpZWRDYWxsYmFjayA9IFdURk1vdmUodW5pZmllZENh
bGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7CisgICAgICAgIFtiYXNlS2V5ID0gV1RGTW92
ZShiYXNlS2V5KSwgcHVibGljS2V5ID0gZWNQYXJhbWV0ZXJzLnB1YmxpY0tleS5yZWxlYXNlTm9u
TnVsbCgpLCBsZW5ndGgsIHVuaWZpZWRDYWxsYmFjayA9IFdURk1vdmUodW5pZmllZENhbGxiYWNr
KSwgY29udGV4dElkZW50aWZpZXIgPSBjb250ZXh0LmNvbnRleHRJZGVudGlmaWVyKCldKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBhdXRvIGRlcml2ZWRLZXkgPSBwbGF0Zm9ybURlcml2ZUJpdHMo
ZG93bmNhc3Q8Q3J5cHRvS2V5RUM+KGJhc2VLZXkuZ2V0KCkpLCBkb3duY2FzdDxDcnlwdG9LZXlF
Qz4ocHVibGljS2V5LmdldCgpKSk7Ci0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAg
ICAgICAgICAgICAgIFtkZXJpdmVkS2V5ID0gV1RGTW92ZShkZXJpdmVkS2V5KSwgbGVuZ3RoLCB1
bmlmaWVkQ2FsbGJhY2sgPSBXVEZNb3ZlKHVuaWZpZWRDYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewotICAgICAgICAgICAgICAgICAgICB1bmlmaWVk
Q2FsbGJhY2soV1RGTW92ZShkZXJpdmVkS2V5KSwgbGVuZ3RoKTsKLSAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhjb250ZXh0SWRlbnRpZmllciwgW2Rlcml2
ZWRLZXkgPSBXVEZNb3ZlKGRlcml2ZWRLZXkpLCBsZW5ndGgsIHVuaWZpZWRDYWxsYmFjayA9IFdU
Rk1vdmUodW5pZmllZENhbGxiYWNrKV0oYXV0byYpIG11dGFibGUgeworICAgICAgICAgICAgICAg
IHVuaWZpZWRDYWxsYmFjayhXVEZNb3ZlKGRlcml2ZWRLZXkpLCBsZW5ndGgpOworICAgICAgICAg
ICAgfSk7CiAgICAgICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTEuY3BwCmluZGV4IDk0NzQwOWM4YjI2
MDQ5ZTgyMzFmNzNiMjRjMWUyNmMzY2JkMjFjNmMuLjlmOTQzM2Y3ZTcyMjMwODg3MDg5YzI2Mjlh
ZDljNDBhMzc2N2MzMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVNIQTEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTEuY3BwCkBAIC01MSwxMyArNTEsMTEgQEAgdm9p
ZCBDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwg
VmVjdG9yQ2FsbGJhY2smJiBjYWwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbnRl
eHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtkaWdlc3QgPSBXVEZNb3ZlKGRpZ2Vz
dCksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICB3b3JrUXVldWUuZGlzcGF0Y2goW2RpZ2Vz
dCA9IFdURk1vdmUoZGlnZXN0KSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayksIGNvbnRleHRJZGVudGlmaWVyID0gY29udGV4dC5jb250ZXh0
SWRlbnRpZmllcigpXSgpIG11dGFibGUgewogICAgICAgICBkaWdlc3QtPmFkZEJ5dGVzKG1lc3Nh
Z2UuZGF0YSgpLCBtZXNzYWdlLnNpemUoKSk7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gZGlnZXN0
LT5jb21wdXRlSGFzaCgpOwotICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cG9z
dFRhc2tUbyhjb250ZXh0SWRlbnRpZmllciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oYXV0byYpIHsKICAgICAgICAgICAgIGNhbGxiYWNr
KHJlc3VsdCk7Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CiAgICAgICAgIH0pOwogICAg
IH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtU0hBMjI0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAKaW5kZXggZDkwNjc4M2E2NGMzNGVlNzdiYzU3OTdl
ZjQ4ODlkNTJjMWY0NjJmZC4uOWJjNDM4YTM5ZGY0N2MwMWQ3YTBiZDhlZDZjZDIwNDdkNWQ5Zjlj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtU0hBMjI0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwCkBAIC01MSwxMyArNTEsMTEgQEAgdm9pZCBDcnlwdG9B
bGdvcml0aG1TSEEyMjQ6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JD
YWxsYmFjayYmIGMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbnRleHQucmVmKCk7
Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtkaWdlc3QgPSBXVEZNb3ZlKGRpZ2VzdCksIG1lc3Nh
Z2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCAmY29u
dGV4dF0oKSBtdXRhYmxlIHsKKyAgICB3b3JrUXVldWUuZGlzcGF0Y2goW2RpZ2VzdCA9IFdURk1v
dmUoZGlnZXN0KSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIGNvbnRleHRJZGVudGlmaWVyID0gY29udGV4dC5jb250ZXh0SWRlbnRpZmll
cigpXSgpIG11dGFibGUgewogICAgICAgICBkaWdlc3QtPmFkZEJ5dGVzKG1lc3NhZ2UuZGF0YSgp
LCBtZXNzYWdlLnNpemUoKSk7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gZGlnZXN0LT5jb21wdXRl
SGFzaCgpOwotICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIHsKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhj
b250ZXh0SWRlbnRpZmllciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCA9
IFdURk1vdmUocmVzdWx0KV0oYXV0byYpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7
Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtU0hBMjU2LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVNIQTI1Ni5jcHAKaW5kZXggNjQyNzFmYTlhYTYyODMzODk4MDg2YjJkYjUxMWRhZjE2
OGQzZjkwYy4uZjQ3YzUwZjFmYmY2ZWRmZTY1NDQ0ZGJjOThhNjA2Mzg3YWY2NjE3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hB
MjU2LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1TSEEyNTYuY3BwCkBAIC01MSwxMyArNTEsMTEgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1T
SEEyNTY6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYm
IGMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29y
a1F1ZXVlLmRpc3BhdGNoKFtkaWdlc3QgPSBXVEZNb3ZlKGRpZ2VzdCksIG1lc3NhZ2UgPSBXVEZN
b3ZlKG1lc3NhZ2UpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCAmY29udGV4dF0oKSBt
dXRhYmxlIHsKKyAgICB3b3JrUXVldWUuZGlzcGF0Y2goW2RpZ2VzdCA9IFdURk1vdmUoZGlnZXN0
KSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayksIGNvbnRleHRJZGVudGlmaWVyID0gY29udGV4dC5jb250ZXh0SWRlbnRpZmllcigpXSgpIG11
dGFibGUgewogICAgICAgICBkaWdlc3QtPmFkZEJ5dGVzKG1lc3NhZ2UuZGF0YSgpLCBtZXNzYWdl
LnNpemUoKSk7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gZGlnZXN0LT5jb21wdXRlSGFzaCgpOwot
ICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBy
ZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IHsKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhjb250ZXh0SWRl
bnRpZmllciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCA9IFdURk1vdmUo
cmVzdWx0KV0oYXV0byYpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAg
ICAgICBjb250ZXh0LmRlcmVmKCk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNI
QTM4NC5jcHAKaW5kZXggZjIyYmE2ZmVjZjAzMWFmZTBiMjIzYWU5N2NiNzdhNjYxZDM0ZWJiOC4u
YTI1NTg0OWYyZWIyNDJhNmM0MTZmMjNlMDcxNTM2YzE0MmFjODlkYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEz
ODQuY3BwCkBAIC01MSwxMyArNTEsMTEgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmRp
Z2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGMKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRp
c3BhdGNoKFtkaWdlc3QgPSBXVEZNb3ZlKGRpZ2VzdCksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3Nh
Z2UpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsK
KyAgICB3b3JrUXVldWUuZGlzcGF0Y2goW2RpZ2VzdCA9IFdURk1vdmUoZGlnZXN0KSwgbWVzc2Fn
ZSA9IFdURk1vdmUobWVzc2FnZSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGNvbnRl
eHRJZGVudGlmaWVyID0gY29udGV4dC5jb250ZXh0SWRlbnRpZmllcigpXSgpIG11dGFibGUgewog
ICAgICAgICBkaWdlc3QtPmFkZEJ5dGVzKG1lc3NhZ2UuZGF0YSgpLCBtZXNzYWdlLnNpemUoKSk7
CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gZGlnZXN0LT5jb21wdXRlSGFzaCgpOwotICAgICAgICBj
b250ZXh0LnBvc3RUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZXN1bHQgPSBX
VEZNb3ZlKHJlc3VsdCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhjb250ZXh0SWRlbnRpZmllciwg
W2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0o
YXV0byYpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICBjb250
ZXh0LmRlcmVmKCk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAK
aW5kZXggMTQxMTFkMjM5NDhiZWNiNjg0YTZiYWQwOGM4OGM2MWZiOTMwYmNiMi4uZDU3ZDhjOWU3
ZDE0OWNiZTU5MmJkMGZhOGIyNDM1NTM0Zjg2YzNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwCkBA
IC01MSwxMyArNTEsMTEgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdChWZWN0
b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGMKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtk
aWdlc3QgPSBXVEZNb3ZlKGRpZ2VzdCksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICB3b3Jr
UXVldWUuZGlzcGF0Y2goW2RpZ2VzdCA9IFdURk1vdmUoZGlnZXN0KSwgbWVzc2FnZSA9IFdURk1v
dmUobWVzc2FnZSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGNvbnRleHRJZGVudGlm
aWVyID0gY29udGV4dC5jb250ZXh0SWRlbnRpZmllcigpXSgpIG11dGFibGUgewogICAgICAgICBk
aWdlc3QtPmFkZEJ5dGVzKG1lc3NhZ2UuZGF0YSgpLCBtZXNzYWdlLnNpemUoKSk7CiAgICAgICAg
IGF1dG8gcmVzdWx0ID0gZGlnZXN0LT5jb21wdXRlSGFzaCgpOwotICAgICAgICBjb250ZXh0LnBv
c3RUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZXN1bHQgPSBXVEZNb3ZlKHJl
c3VsdCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhjb250ZXh0SWRlbnRpZmllciwgW2NhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oYXV0byYpIHsK
ICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVm
KCk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwCmluZGV4IDkxY2I2NDQ4OGIzMWI4ODll
MGRmZjkxMmFmOWJjMjA4ZGY1ZjBhYTkuLjA4MDIwOTk1NDRjODRkM2RiMTgzNzA2M2I0OTdlNTlk
YmRmYjZmZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRv
S2V5UlNBR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0tleVJTQUdDcnlwdC5jcHAKQEAgLTIzMSwxNCArMjMxLDEyIEBAIHZvaWQgQ3J5cHRvS2V5UlNB
OjpnZW5lcmF0ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0sIENyeXB0
b0FsZ29yCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb250ZXh0LT5yZWYoKTsKICAg
ICBjb250ZXh0LT5wb3N0VGFzaygKLSAgICAgICAgW2FsZ29yaXRobSwgaGFzaCwgaGFzSGFzaCwg
ZXh0cmFjdGFibGUsIHVzYWdlLCBwdWJsaWNLZXlTZXhwID0gcHVibGljS2V5U2V4cC5yZWxlYXNl
KCksIHByaXZhdGVLZXlTZXhwID0gcHJpdmF0ZUtleVNleHAucmVsZWFzZSgpLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRh
YmxlIHsKKyAgICAgICAgW2FsZ29yaXRobSwgaGFzaCwgaGFzSGFzaCwgZXh0cmFjdGFibGUsIHVz
YWdlLCBwdWJsaWNLZXlTZXhwID0gcHVibGljS2V5U2V4cC5yZWxlYXNlKCksIHByaXZhdGVLZXlT
ZXhwID0gcHJpdmF0ZUtleVNleHAucmVsZWFzZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXShhdXRvJikgbXV0YWJsZSB7CiAgICAgICAgICAgICBhdXRvIHB1YmxpY0tleSA9IENyeXB0
b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRobSwgaGFzaCwgaGFzSGFzaCwgQ3J5cHRvS2V5VHlwZTo6
UHVibGljLCBwdWJsaWNLZXlTZXhwLCB0cnVlLCB1c2FnZSk7CiAgICAgICAgICAgICBhdXRvIHBy
aXZhdGVLZXkgPSBDcnlwdG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gsIGhhc0hhc2gs
IENyeXB0b0tleVR5cGU6OlByaXZhdGUsIHByaXZhdGVLZXlTZXhwLCBleHRyYWN0YWJsZSwgdXNh
Z2UpOwogCiAgICAgICAgICAgICBjYWxsYmFjayhDcnlwdG9LZXlQYWlyIHsgV1RGTW92ZShwdWJs
aWNLZXkpLCBXVEZNb3ZlKHByaXZhdGVLZXkpIH0pOwotICAgICAgICAgICAgY29udGV4dC5kZXJl
ZigpOwogICAgICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L21hYy9DcnlwdG9LZXlSU0FNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9Dcnlw
dG9LZXlSU0FNYWMuY3BwCmluZGV4IGJjMDJjMjkyZDQ1NGVjZTM3NWVkOGMzNzAyNTNjOWYzMmE0
M2FiNmEuLjllNzI5OGFhYTcyNjU1MjY1MTMyMWVjODBkZDUyNDcwMDk0MjRmNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0tleVJTQU1hYy5jcHAKQEAgLTI5MywyNCAr
MjkzLDI0IEBAIHZvaWQgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIoQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllciBhbGdvcml0aG0sIENyeXB0b0FsZ29yCiAgICAgLy8gV2Ugb25seSB1c2UgdGhl
IGNhbGxiYWNrIGZ1bmN0aW9ucyB3aGVuIGJhY2sgb24gdGhlIG1haW4vd29ya2VyIHRocmVhZCwg
YnV0IGNhcHR1cmVkIHZhcmlhYmxlcyBhcmUgY29waWVkIG9uIGEgc2Vjb25kYXJ5IHRocmVhZCB0
b28uCiAgICAgS2V5UGFpckNhbGxiYWNrKiBsb2NhbENhbGxiYWNrID0gbmV3IEtleVBhaXJDYWxs
YmFjayhXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgVm9pZENhbGxiYWNrKiBsb2NhbEZhaWx1cmVD
YWxsYmFjayA9IG5ldyBWb2lkQ2FsbGJhY2soV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKLSAg
ICBjb250ZXh0LT5yZWYoKTsKKyAgICBhdXRvIGNvbnRleHRJZGVudGlmaWVyID0gY29udGV4dC0+
Y29udGV4dElkZW50aWZpZXIoKTsKIAorICAgIC8vIEZJWE1FOiBUaGVyZSBpcyBhIHJpc2sgdGhh
dCBsb2NhbENhbGxiYWNrIGFuZCBsb2NhbEZhaWx1cmVDYWxsYmFjayBhcmUgbmV2ZXIgZnJlZWQu
CisgICAgLy8gRml4IHRoaXMgYnkgdXNpbmcgdW5pcXVlIHBvaW50ZXJzIGFuZCBtb3ZlIHRoZW0g
ZnJvbSBvbmUgbGFtYmRhIHRvIHRoZSBvdGhlci4KICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBe
ewotICAgICAgICBBU1NFUlQoY29udGV4dCk7CiAgICAgICAgIENDUlNBQ3J5cHRvclJlZiBjY1B1
YmxpY0tleTsKICAgICAgICAgQ0NSU0FDcnlwdG9yUmVmIGNjUHJpdmF0ZUtleTsKICAgICAgICAg
Q0NDcnlwdG9yU3RhdHVzIHN0YXR1cyA9IENDUlNBQ3J5cHRvckdlbmVyYXRlUGFpcihtb2R1bHVz
TGVuZ3RoLCBlLCAmY2NQdWJsaWNLZXksICZjY1ByaXZhdGVLZXkpOwogICAgICAgICBpZiAoc3Rh
dHVzKSB7CiAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkNvdWxkIG5vdCBnZW5lcmF0ZSBhIGtl
eSBwYWlyLCBzdGF0dXMgJWQiLCBzdGF0dXMpOwotICAgICAgICAgICAgY29udGV4dC0+cG9zdFRh
c2soW2xvY2FsQ2FsbGJhY2ssIGxvY2FsRmFpbHVyZUNhbGxiYWNrXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpw
b3N0VGFza1RvKGNvbnRleHRJZGVudGlmaWVyLCBbbG9jYWxDYWxsYmFjaywgbG9jYWxGYWlsdXJl
Q2FsbGJhY2tdKGF1dG8mKSB7CiAgICAgICAgICAgICAgICAgKCpsb2NhbEZhaWx1cmVDYWxsYmFj
aykoKTsKICAgICAgICAgICAgICAgICBkZWxldGUgbG9jYWxDYWxsYmFjazsKICAgICAgICAgICAg
ICAgICBkZWxldGUgbG9jYWxGYWlsdXJlQ2FsbGJhY2s7Ci0gICAgICAgICAgICAgICAgY29udGV4
dC5kZXJlZigpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KLSAgICAgICAgY29udGV4dC0+cG9zdFRhc2soW2FsZ29yaXRobSwgaGFzaCwgaGFzSGFzaCwg
ZXh0cmFjdGFibGUsIHVzYWdlLCBsb2NhbENhbGxiYWNrLCBsb2NhbEZhaWx1cmVDYWxsYmFjaywg
Y2NQdWJsaWNLZXksIGNjUHJpdmF0ZUtleV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkgeworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKGNvbnRleHRJ
ZGVudGlmaWVyLCBbYWxnb3JpdGhtLCBoYXNoLCBoYXNIYXNoLCBleHRyYWN0YWJsZSwgdXNhZ2Us
IGxvY2FsQ2FsbGJhY2ssIGxvY2FsRmFpbHVyZUNhbGxiYWNrLCBjY1B1YmxpY0tleSwgY2NQcml2
YXRlS2V5XShhdXRvJikgewogICAgICAgICAgICAgYXV0byBwdWJsaWNLZXkgPSBDcnlwdG9LZXlS
U0E6OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gsIGhhc0hhc2gsIENyeXB0b0tleVR5cGU6OlB1Ymxp
YywgY2NQdWJsaWNLZXksIHRydWUsIHVzYWdlKTsKICAgICAgICAgICAgIGF1dG8gcHJpdmF0ZUtl
eSA9IENyeXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRobSwgaGFzaCwgaGFzSGFzaCwgQ3J5cHRv
S2V5VHlwZTo6UHJpdmF0ZSwgY2NQcml2YXRlS2V5LCBleHRyYWN0YWJsZSwgdXNhZ2UpOwogCkBA
IC0zMTgsNyArMzE4LDYgQEAgdm9pZCBDcnlwdG9LZXlSU0E6OmdlbmVyYXRlUGFpcihDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgQ3J5cHRvQWxnb3IKIAogICAgICAgICAgICAg
ZGVsZXRlIGxvY2FsQ2FsbGJhY2s7CiAgICAgICAgICAgICBkZWxldGUgbG9jYWxGYWlsdXJlQ2Fs
bGJhY2s7Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CiAgICAgICAgIH0pOwogICAgIH0p
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMmJjMjA2NTU4MWUwMTAxYjBhYTUzOWYw
NGYwYjI4NGRiNjBmYjRmMS4uNjVlYTZkMzIyODk3ZjdiNTU3ODQzOGIzZTNiODNkNDE0NTMwYmU4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01NjcsOCArNTY3LDEwIEBAIFJlZjxEb2N1
bWVudD4gRG9jdW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgY29udGV4dERvY3VtZW50KQogCiBEb2N1
bWVudDo6fkRvY3VtZW50KCkKIHsKLSAgICBib29sIHdhc1JlbW92ZWQgPSBhbGxEb2N1bWVudHNN
YXAoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHdhc1JlbW92ZWQs
IHdhc1JlbW92ZWQpOworICAgIEFTU0VSVChhbGxEb2N1bWVudHNNYXAoKS5jb250YWlucyhtX2lk
ZW50aWZpZXIpKTsKKyAgICBhbGxEb2N1bWVudHNNYXAoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsK
KyAgICAvLyBXZSBuZWVkIHRvIHJlbW92ZSBmcm9tIHRoZSBjb250ZXh0cyBtYXAgdmVyeSBlYXJs
eSBpbiB0aGUgZGVzdHJ1Y3RvciBzbyB0aGF0IHBvc3RpbmcgdGFzayB0byB0aGF0IERvY3VtZW50
IGZyb20gYW5vdGhlciB0aHJlYWQgaXMgc2FmZS4KKyAgICByZW1vdmVGcm9tQ29udGV4dHNNYXAo
KTsKIAogICAgIEFTU0VSVCghcmVuZGVyVmlldygpKTsKICAgICBBU1NFUlQobV9wYWdlQ2FjaGVT
dGF0ZSAhPSBJblBhZ2VDYWNoZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5jcHAKaW5kZXggNTFlMzFkMzhlZjljMzZjNmQ2NzZmNDQwNmJlMzZjMTExN2Nm
OTM4Mi4uNDRmNGU0NzNkYmU1ODNiZjFlYjM3YTAzYThjNzM2MzFjYmVjODA1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAtNjUsNiArNjUs
MTggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAK
K3N0YXRpYyBIYXNoTWFwPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0Kj4mIGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKCkKK3sKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+PiBjb250ZXh0czsKKyAgICByZXR1cm4g
Y29udGV4dHM7Cit9CisKK3N0YXRpYyBMb2NrJiBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01h
cExvY2soKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMb2NrPiBsb2NrOworICAgIHJl
dHVybiBsb2NrOworfQorCiBzdHJ1Y3QgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6UGVuZGluZ0V4
Y2VwdGlvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC04Nyw2
ICs5OSwyOCBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkKIHsKIH0KIAorU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6Y29udGV4dElkZW50aWZpZXIoKSBjb25zdAoreworICAgIGlmICghbV9jb250
ZXh0SWRlbnRpZmllci50b1VJbnQ2NCgpKSB7CisgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIo
YWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXBMb2NrKCkpOworCisgICAgICAgIG1fY29udGV4
dElkZW50aWZpZXIgPSBnZW5lcmF0ZU9iamVjdElkZW50aWZpZXI8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dElkZW50aWZpZXJUeXBlPigpOworCisgICAgICAgIEFTU0VSVCghYWxsU2NyaXB0RXhlY3V0
aW9uQ29udGV4dHNNYXAoKS5jb250YWlucyhtX2NvbnRleHRJZGVudGlmaWVyKSk7CisgICAgICAg
IGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKCkuYWRkKG1fY29udGV4dElkZW50aWZpZXIs
IGNvbnN0X2Nhc3Q8U2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+KHRoaXMpKTsKKyAgICB9CisgICAg
cmV0dXJuIG1fY29udGV4dElkZW50aWZpZXI7Cit9CisKK3ZvaWQgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6cmVtb3ZlRnJvbUNvbnRleHRzTWFwKCkKK3sKKyAgICBpZiAobV9jb250ZXh0SWRlbnRp
Zmllci50b1VJbnQ2NCgpKSB7CisgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoYWxsU2NyaXB0
RXhlY3V0aW9uQ29udGV4dHNNYXBMb2NrKCkpOworICAgICAgICBBU1NFUlQoYWxsU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dHNNYXAoKS5jb250YWlucyhtX2NvbnRleHRJZGVudGlmaWVyKSk7CisgICAg
ICAgIGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKCkucmVtb3ZlKG1fY29udGV4dElkZW50
aWZpZXIpOworICAgIH0KK30KKwogI2lmIEFTU0VSVF9ESVNBQkxFRAogCiBpbmxpbmUgdm9pZCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpjaGVja0NvbnNpc3RlbmN5KCkgY29uc3QKQEAgLTExNiw2
ICsxNTAsMTEgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKQogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKKyAg
ICBpZiAobV9jb250ZXh0SWRlbnRpZmllci50b1VJbnQ2NCgpKSB7CisgICAgICAgIExvY2tlcjxM
b2NrPiBsb2NrZXIoYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXBMb2NrKCkpOworICAgICAg
ICBBU1NFUlQoIWFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKCkuY29udGFpbnMobV9jb250
ZXh0SWRlbnRpZmllcikpOworICAgIH0KKwogICAgIG1faW5TY3JpcHRFeGVjdXRpb25Db250ZXh0
RGVzdHJ1Y3RvciA9IHRydWU7CiAjZW5kaWYKIApAQCAtNTgwLDYgKzYxOSwxOSBAQCBib29sIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oY29uc3QgRG9jdW1lbnRPcldvcmtlcklk
ZW50aWZpZXImIGNvbnRleAogICAgIH0pOwogICAgIHJldHVybiB3YXNQb3N0ZWQ7CiB9CisKICNl
bmRpZgogCitib29sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXIgaWRlbnRpZmllciwgVGFzayYmIHRhc2spCit7CisgICAg
TG9ja2VyPExvY2s+IGxvY2tlcihhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2soKSk7
CisgICAgYXV0byogY29udGV4dCA9IGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKCkuZ2V0
KGlkZW50aWZpZXIpOworCisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBjb250ZXh0LT5wb3N0VGFzayhXVEZNb3ZlKHRhc2spKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggYWY3NTAyMDcxYTVlZjllZDdjOGI4YTlhNDBiNjg4
ZjZkOGQ5YjE0OS4uMmFkMjdlZjM3ZDc2MTIzM2E2ZTVmZTBjOWViNzkwMmM0ZDAyNjQ1MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0zNiw2ICsz
Niw3IEBACiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkVGFzay5oPgogI2luY2x1ZGUgPHd0Zi9G
dW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL09iamVj
dElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CkBAIC03OCw2ICs3OSw5IEBAIG5hbWVzcGFjZSBJREJDbGllbnQgewogY2xhc3Mg
SURCQ29ubmVjdGlvblByb3h5OwogfQogCitlbnVtIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyVHlwZSB7IH07Cit1c2luZyBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciA9
IE9iamVjdElkZW50aWZpZXI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXJUeXBlPjsK
KwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCA6IHB1YmxpYyBTZWN1cml0eUNvbnRleHQg
ewogcHVibGljOgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTI1Myw2ICsyNTcs
OSBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBwb3N0VGFza1Rv
KGNvbnN0IERvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVyJiwgV1RGOjpGdW5jdGlvbjx2b2lkKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJik7CiAjZW5kaWYKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgYm9vbCBwb3N0VGFza1RvKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBU
YXNrJiYpOworCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElk
ZW50aWZpZXIoKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIGNsYXNzIEFkZENvbnNvbGVNZXNz
YWdlVGFzayA6IHB1YmxpYyBUYXNrIHsKQEAgLTI3NSw2ICsyODIsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgQWN0aXZlRE9NT2JqZWN0OjpSZWFzb25Gb3JTdXNwZW5zaW9uIHJlYXNvbkZvclN1c3BlbmRp
bmdBY3RpdmVET01PYmplY3RzKCkgY29uc3QgeyByZXR1cm4gbV9yZWFzb25Gb3JTdXNwZW5kaW5n
QWN0aXZlRE9NT2JqZWN0czsgfQogCiAgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25z
dDsKKyAgICB2b2lkIHJlbW92ZUZyb21Db250ZXh0c01hcCgpOwogCiBwcml2YXRlOgogICAgIC8v
IFRoZSBmb2xsb3dpbmcgYWRkTWVzc2FnZSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkLgpAQCAtMzI4
LDYgKzMzNiw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFN0cmluZyBtX2RvbWFpbkZvckNh
Y2hlUGFydGl0aW9uOworICAgIG11dGFibGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXIgbV9jb250ZXh0SWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggNDE1YWJh
YzMwZTUzNDJhYmRjMzBkMmFiMTU5NmNmM2I0ZWM2YjhkNS4uZjk0YWI4NTRkOWIzNjUwNWU2MzBk
NWNkN2VlMzUzNjk2ZmM2MzUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZS5jcHAKQEAgLTg5LDYgKzg5LDggQEAgV29ya2VyR2xvYmFsU2NvcGU6Oldvcmtl
ckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGMK
IFdvcmtlckdsb2JhbFNjb3BlOjp+V29ya2VyR2xvYmFsU2NvcGUoKQogewogICAgIEFTU0VSVCh0
aHJlYWQoKS50aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOworICAgIC8vIFdlIG5lZWQg
dG8gcmVtb3ZlIGZyb20gdGhlIGNvbnRleHRzIG1hcCB2ZXJ5IGVhcmx5IGluIHRoZSBkZXN0cnVj
dG9yIHNvIHRoYXQgcG9zdGluZyB0YXNrIHRvIHRoYXQgd29ya2VyIGZyb20gYW5vdGhlciB0aHJl
YWQgaXMgc2FmZS4KKyAgICByZW1vdmVGcm9tQ29udGV4dHNNYXAoKTsKIAogICAgIG1fcGVyZm9y
bWFuY2UgPSBudWxscHRyOwogICAgIG1fY3J5cHRvID0gbnVsbHB0cjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335790</attachid>
            <date>2018-03-14 13:00:25 -0700</date>
            <delta_ts>2018-03-14 14:27:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183602-20180314130024.patch</filename>
            <type>text/plain</type>
            <size>23920</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQxODdmMDkxZWI1ZmJm
ZDM3YTNmZTlhM2M4YjZmNTU4NjdjYjNiOS4uNWVlNTQ2MWNjNjVkYzk2N2QzMWRlODNjMzA0NDhh
ZjlmOTEwNTg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE4LTAzLTEzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL1dlYkNyeXB0b0FQSS93cmFwS2V5X3Vud3JhcEtleS93cmFwS2V5X3Vu
d3JhcEtleS53b3JrZXIuaHRtbCBpcyBjcmFzaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNjAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIGEgbWFwIG9mIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgdGhhdCBpcyByZWFkL3dyaXRlIHByb3RlY3RlZCB1c2luZyBhIExvY2suCisgICAg
ICAgIFRoaXMgYWxsb3dzIGludHJvZHVjaW5nIHBvc3RUYXNrVG8gdGFraW5nIGEgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCBpZGVudGlmaWVyIGFuZCBjYWxsYWJsZSBmcm9tIGFueSB0aHJlYWQuCisg
ICAgICAgIFVzZSB0aGF0IG1ldGhvZCBpbiBDcnlwdG8gaW5zdGVhZCBvZiByZWZpbmcvdW5yZWZp
bmcgIHRoZSBjb250ZXh0LgorICAgICAgICBMb2NrIG9ubHkgaGFwcGVucyBpZiBjb250ZXh0IGRv
ZXMgc29tZSBwb3N0VGFzayBhY3Rpdml0eS4gVGhpcyBpcyBnb3Zlcm5lZCBieSBjYWxsaW5nIG9y
IG5vdCB0aGUgbmV3IGNvbnRleHRJZGVudGlmaWVyKCkgZ2V0dGVyLgorCisgICAgICAgIENvdmVy
ZWQgYnkgY3J5cHRvIHRlc3RzIG5vIGxvbmdlciBmYWlsaW5nIG1fd29ya2VyR2xvYmFsU2NvcGUt
Pmhhc09uZVJlZigpIGFzc2VydGlvbi4KKworICAgICAgICAqIGNyeXB0by9DcnlwdG9BbGdvcml0
aG0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hBbGdvcml0aG1PcGVyYXRpb24pOgor
ICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDREguY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtRUNESDo6ZGVyaXZlQml0cyk6CisgICAgICAg
ICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
cnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRpZ2VzdCk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0Fs
Z29yaXRobVNIQTI1Njo6ZGlnZXN0KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1TSEEzODQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGht
U0hBMzg0OjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVNIQTUxMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEE1MTI6
OmRpZ2VzdCk6CisgICAgICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIpOgorICAgICAg
ICAqIGNyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNy
eXB0b0tleVJTQTo6Z2VuZXJhdGVQYWlyKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgICogZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWxsU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dHNNYXBMb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6cmVtb3ZlRnJvbUNvbnRleHRzTWFwKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNoZWNrQ29uc2lzdGVuY3kgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyk6Cisg
ICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNvbnRleHRJZGVudGlmaWVyIGNvbnN0KToKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckdsb2JhbFNjb3BlOjp+V29ya2VyR2xvYmFsU2NvcGUpOgorCiAyMDE4LTAzLTEyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBDYWxsaW5nIHJlbW92ZVRy
YWNrIHdpdGggUlRDUnRwU2VuZGVyIGRvZXMgbm90IHNldCBTZW5kZXJUcmFjayB0byBudWxsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmggYi9Tb3VyY2UvV1RG
L3d0Zi9PYmplY3RJZGVudGlmaWVyLmgKaW5kZXggNGJlMGM4ODRhM2I5NzA5MzI5ZjI5YzFkOGU3
ZDI4NTkzNmNjY2E3Mi4uMGEwNjg3YzI0NGIxODVlNWQ4N2M4NWMwMGYwZjY3NDU4M2E2ZDJjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvT2JqZWN0SWRlbnRpZmllci5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaApAQCAtNjYsNyArNjYsOCBAQCBwdWJsaWM6CiAg
ICAgfQogCiAgICAgdWludDY0X3QgdG9VSW50NjQoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZp
ZXI7IH0KLSAgICAKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4g
bV9pZGVudGlmaWVyOyB9CisKICAgICBTdHJpbmcgbG9nZ2luZ1N0cmluZygpIGNvbnN0CiAgICAg
ewogICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIobV9pZGVudGlmaWVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uY3BwIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5jcHAKaW5kZXggNTU5M2NmYjY2YjRlMGEyYjQx
NmQxODMzZGFjODA4YzY1ZjkzNmMyOS4uNGJmYmQ3ZGQ0MzcyMGE1MjIxMDM5ZmEyNzQ4ZjgxMzhi
MmY3YTZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRo
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5jcHAKQEAg
LTk1LDI2ICs5NSwxNyBAQCBFeGNlcHRpb25PcjxzaXplX3Q+IENyeXB0b0FsZ29yaXRobTo6Z2V0
S2V5TGVuZ3RoKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcgogdGVtcGxhdGU8dHlwZW5h
bWUgUmVzdWx0Q2FsbGJhY2tUeXBlLCB0eXBlbmFtZSBPcGVyYXRpb25UeXBlPgogc3RhdGljIHZv
aWQgZGlzcGF0Y2hBbGdvcml0aG1PcGVyYXRpb24oV29ya1F1ZXVlJiB3b3JrUXVldWUsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlc3VsdENhbGxiYWNrVHlwZSYmIGNhbGxiYWNr
LCBDcnlwdG9BbGdvcml0aG06OkV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ss
IE9wZXJhdGlvblR5cGUmJiBvcGVyYXRpb24pCiB7Ci0gICAgY29udGV4dC5yZWYoKTsKKyAgICAv
LyBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBjYWxsYmFjayBhbmQgZXhjZXB0aW9uQ2FsbGJh
Y2sgd2lsbCBiZSBkZXN0cm95ZWQgaW4gdGhlIHRocmVhZCBpbiB3aGljaCB0aGV5IHdlcmUgY3Jl
YXRlZC4KICAgICB3b3JrUXVldWUuZGlzcGF0Y2goCi0gICAgICAgIFtvcGVyYXRpb24gPSBXVEZN
b3ZlKG9wZXJhdGlvbiksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNh
bGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUg
eworICAgICAgICBbb3BlcmF0aW9uID0gV1RGTW92ZShvcGVyYXRpb24pLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2Fs
bGJhY2spLCBjb250ZXh0SWRlbnRpZmllciA9IGNvbnRleHQuY29udGV4dElkZW50aWZpZXIoKV0o
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gb3BlcmF0aW9uKCk7Ci0gICAg
ICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7Ci0gICAgICAgICAgICAgICAgLy8g
V2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8g
dGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgICAgIGNvbnRleHQucG9z
dFRhc2soCi0gICAgICAgICAgICAgICAgICAgIFtlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9u
KCkuY29kZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFj
ayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhlYyk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAg
ICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJl
aW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29u
dGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICBbcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxs
YmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oY29udGV4dElkZW50
aWZpZXIsIFtyZXN1bHQgPSBjcm9zc1RocmVhZENvcHkocmVzdWx0KSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxi
YWNrKV0oYXV0byYpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhj
ZXB0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2socmVzdWx0
LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdC5yZWxl
YXNlUmV0dXJuVmFsdWUoKSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bUVDREguY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtRUNESC5jcHAKaW5kZXggMzc3ZjhjNmIwM2YyNmQ0MmQ2NDgzNTQyY2Q3NTdmNjkwMDkyNjAy
NC4uMTYzYmQ5YzE5MjI1OTZhMWE1ZWFkZGM0M2M1Y2ZhYzk0MTQxOWMyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNESC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNE
SC5jcHAKQEAgLTExNiwxNSArMTE2LDEyIEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtRUNESDo6ZGVy
aXZlQml0cyhzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mCiAKICAg
ICAvLyBUaGlzIGlzIGEgc3BlY2lhbCBjYXNlIHRoYXQgY2FuJ3QgdXNlIGRpc3BhdGNoT3BlcmF0
aW9uKCkgYmVjYXVzZSBpdCBidW5kbGVzCiAgICAgLy8gdGhlIHJlc3VsdCB2YWxpZGF0aW9uIGFu
ZCBjYWxsYmFjayBkaXNwYXRjaCBpbnRvIHVuaWZpZWRDYWxsYmFjay4KLSAgICBjb250ZXh0LnJl
ZigpOwogICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKLSAgICAgICAgW2Jhc2VLZXkgPSBXVEZNb3Zl
KGJhc2VLZXkpLCBwdWJsaWNLZXkgPSBlY1BhcmFtZXRlcnMucHVibGljS2V5LnJlbGVhc2VOb25O
dWxsKCksIGxlbmd0aCwgdW5pZmllZENhbGxiYWNrID0gV1RGTW92ZSh1bmlmaWVkQ2FsbGJhY2sp
LCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICAgICAgW2Jhc2VLZXkgPSBXVEZNb3ZlKGJhc2VL
ZXkpLCBwdWJsaWNLZXkgPSBlY1BhcmFtZXRlcnMucHVibGljS2V5LnJlbGVhc2VOb25OdWxsKCks
IGxlbmd0aCwgdW5pZmllZENhbGxiYWNrID0gV1RGTW92ZSh1bmlmaWVkQ2FsbGJhY2spLCBjb250
ZXh0SWRlbnRpZmllciA9IGNvbnRleHQuY29udGV4dElkZW50aWZpZXIoKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGF1dG8gZGVyaXZlZEtleSA9IHBsYXRmb3JtRGVyaXZlQml0cyhkb3duY2Fz
dDxDcnlwdG9LZXlFQz4oYmFzZUtleS5nZXQoKSksIGRvd25jYXN0PENyeXB0b0tleUVDPihwdWJs
aWNLZXkuZ2V0KCkpKTsKLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAg
ICAgICAgW2Rlcml2ZWRLZXkgPSBXVEZNb3ZlKGRlcml2ZWRLZXkpLCBsZW5ndGgsIHVuaWZpZWRD
YWxsYmFjayA9IFdURk1vdmUodW5pZmllZENhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgICAgIHVuaWZpZWRDYWxsYmFj
ayhXVEZNb3ZlKGRlcml2ZWRLZXkpLCBsZW5ndGgpOwotICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKGNvbnRleHRJZGVudGlmaWVyLCBbZGVyaXZlZEtleSA9
IFdURk1vdmUoZGVyaXZlZEtleSksIGxlbmd0aCwgdW5pZmllZENhbGxiYWNrID0gV1RGTW92ZSh1
bmlmaWVkQ2FsbGJhY2spXShhdXRvJikgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgdW5pZmll
ZENhbGxiYWNrKFdURk1vdmUoZGVyaXZlZEtleSksIGxlbmd0aCk7CisgICAgICAgICAgICB9KTsK
ICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTEuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHAKaW5kZXggOTQ3NDA5YzhiMjYwNDllODIz
MWY3M2IyNGMxZTI2YzNjYmQyMWM2Yy4uOWY5NDMzZjdlNzIyMzA4ODcwODljMjYyOWFkOWM0MGEz
NzY3YzMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtU0hBMS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHAKQEAgLTUxLDEzICs1MSwxMSBAQCB2b2lkIENyeXB0
b0FsZ29yaXRobVNIQTE6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JD
YWxsYmFjayYmIGNhbAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29udGV4dC5yZWYo
KTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW2RpZ2VzdCA9IFdURk1vdmUoZGlnZXN0KSwgbWVz
c2FnZSA9IFdURk1vdmUobWVzc2FnZSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksICZj
b250ZXh0XSgpIG11dGFibGUgeworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChbZGlnZXN0ID0gV1RG
TW92ZShkaWdlc3QpLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgY29udGV4dElkZW50aWZpZXIgPSBjb250ZXh0LmNvbnRleHRJZGVudGlm
aWVyKCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMobWVzc2FnZS5kYXRh
KCksIG1lc3NhZ2Uuc2l6ZSgpKTsKICAgICAgICAgYXV0byByZXN1bHQgPSBkaWdlc3QtPmNvbXB1
dGVIYXNoKCk7Ci0gICAgICAgIGNvbnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgeworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1Rv
KGNvbnRleHRJZGVudGlmaWVyLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0
ID0gV1RGTW92ZShyZXN1bHQpXShhdXRvJikgewogICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0
KTsKLSAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1TSEEyMjQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtU0hBMjI0LmNwcAppbmRleCBkOTA2NzgzYTY0YzM0ZWU3N2JjNTc5N2VmNDg4OWQ1
MmMxZjQ2MmZkLi45YmM0MzhhMzlkZjQ3YzAxZDdhMGJkOGVkNmNkMjA0N2Q1ZDlmOWM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1T
SEEyMjQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVNIQTIyNC5jcHAKQEAgLTUxLDEzICs1MSwxMSBAQCB2b2lkIENyeXB0b0FsZ29yaXRo
bVNIQTIyNDo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNr
JiYgYwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3
b3JrUXVldWUuZGlzcGF0Y2goW2RpZ2VzdCA9IFdURk1vdmUoZGlnZXN0KSwgbWVzc2FnZSA9IFdU
Rk1vdmUobWVzc2FnZSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksICZjb250ZXh0XSgp
IG11dGFibGUgeworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChbZGlnZXN0ID0gV1RGTW92ZShkaWdl
c3QpLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKSwgY29udGV4dElkZW50aWZpZXIgPSBjb250ZXh0LmNvbnRleHRJZGVudGlmaWVyKCldKCkg
bXV0YWJsZSB7CiAgICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMobWVzc2FnZS5kYXRhKCksIG1lc3Nh
Z2Uuc2l6ZSgpKTsKICAgICAgICAgYXV0byByZXN1bHQgPSBkaWdlc3QtPmNvbXB1dGVIYXNoKCk7
Ci0gICAgICAgIGNvbnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkgeworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKGNvbnRleHRJ
ZGVudGlmaWVyLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gV1RGTW92
ZShyZXN1bHQpXShhdXRvJikgewogICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAg
ICAgICAgIGNvbnRleHQuZGVyZWYoKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEy
NTYuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
U0hBMjU2LmNwcAppbmRleCA2NDI3MWZhOWFhNjI4MzM4OTgwODZiMmRiNTExZGFmMTY4ZDNmOTBj
Li5mNDdjNTBmMWZiZjZlZGZlNjU0NDRkYmM5OGE2MDYzODdhZjY2MTc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNI
QTI1Ni5jcHAKQEAgLTUxLDEzICs1MSwxMSBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTI1Njo6
ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgYwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUu
ZGlzcGF0Y2goW2RpZ2VzdCA9IFdURk1vdmUoZGlnZXN0KSwgbWVzc2FnZSA9IFdURk1vdmUobWVz
c2FnZSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUg
eworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChbZGlnZXN0ID0gV1RGTW92ZShkaWdlc3QpLCBtZXNz
YWdlID0gV1RGTW92ZShtZXNzYWdlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgY29u
dGV4dElkZW50aWZpZXIgPSBjb250ZXh0LmNvbnRleHRJZGVudGlmaWVyKCldKCkgbXV0YWJsZSB7
CiAgICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMobWVzc2FnZS5kYXRhKCksIG1lc3NhZ2Uuc2l6ZSgp
KTsKICAgICAgICAgYXV0byByZXN1bHQgPSBkaWdlc3QtPmNvbXB1dGVIYXNoKCk7Ci0gICAgICAg
IGNvbnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCA9
IFdURk1vdmUocmVzdWx0KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAg
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKGNvbnRleHRJZGVudGlmaWVy
LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQp
XShhdXRvJikgewogICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgIGNv
bnRleHQuZGVyZWYoKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNw
cAppbmRleCBmMjJiYTZmZWNmMDMxYWZlMGIyMjNhZTk3Y2I3N2E2NjFkMzRlYmI4Li5hMjU1ODQ5
ZjJlYjI0MmE2YzQxNmYyM2UwNzE1MzZjMTQyYWM4OWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAK
QEAgLTUxLDEzICs1MSwxMSBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTM4NDo6ZGlnZXN0KFZl
Y3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgYwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2go
W2RpZ2VzdCA9IFdURk1vdmUoZGlnZXN0KSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgeworICAgIHdv
cmtRdWV1ZS5kaXNwYXRjaChbZGlnZXN0ID0gV1RGTW92ZShkaWdlc3QpLCBtZXNzYWdlID0gV1RG
TW92ZShtZXNzYWdlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgY29udGV4dElkZW50
aWZpZXIgPSBjb250ZXh0LmNvbnRleHRJZGVudGlmaWVyKCldKCkgbXV0YWJsZSB7CiAgICAgICAg
IGRpZ2VzdC0+YWRkQnl0ZXMobWVzc2FnZS5kYXRhKCksIG1lc3NhZ2Uuc2l6ZSgpKTsKICAgICAg
ICAgYXV0byByZXN1bHQgPSBkaWdlc3QtPmNvbXB1dGVIYXNoKCk7Ci0gICAgICAgIGNvbnRleHQu
cG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCA9IFdURk1vdmUo
cmVzdWx0KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKGNvbnRleHRJZGVudGlmaWVyLCBbY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXShhdXRvJikg
ewogICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgIGNvbnRleHQuZGVy
ZWYoKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcAppbmRleCAx
NDExMWQyMzk0OGJlY2I2ODRhNmJhZDA4Yzg4YzYxZmI5MzBiY2IyLi5kNTdkOGM5ZTdkMTQ5Y2Jl
NTkyYmQwZmE4YjI0MzU1MzRmODZjM2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAKQEAgLTUxLDEz
ICs1MSwxMSBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTUxMjo6ZGlnZXN0KFZlY3Rvcjx1aW50
OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgYwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW2RpZ2VzdCA9
IFdURk1vdmUoZGlnZXN0KSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgeworICAgIHdvcmtRdWV1ZS5k
aXNwYXRjaChbZGlnZXN0ID0gV1RGTW92ZShkaWdlc3QpLCBtZXNzYWdlID0gV1RGTW92ZShtZXNz
YWdlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgY29udGV4dElkZW50aWZpZXIgPSBj
b250ZXh0LmNvbnRleHRJZGVudGlmaWVyKCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGRpZ2VzdC0+
YWRkQnl0ZXMobWVzc2FnZS5kYXRhKCksIG1lc3NhZ2Uuc2l6ZSgpKTsKICAgICAgICAgYXV0byBy
ZXN1bHQgPSBkaWdlc3QtPmNvbXB1dGVIYXNoKCk7Ci0gICAgICAgIGNvbnRleHQucG9zdFRhc2so
W2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0Ojpwb3N0VGFza1RvKGNvbnRleHRJZGVudGlmaWVyLCBbY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXShhdXRvJikgewogICAgICAg
ICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKICAg
ICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Z2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2Ny
eXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAKaW5kZXggOTFjYjY0NDg4YjMxYjg4OWUwZGZmOTEy
YWY5YmMyMDhkZjVmMGFhOS4uMDgwMjA5OTU0NGM4NGQzZGIxODM3MDYzYjQ5N2U1OWRiZGZiNmZl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FH
Q3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNB
R0NyeXB0LmNwcApAQCAtMjMxLDE0ICsyMzEsMTIgQEAgdm9pZCBDcnlwdG9LZXlSU0E6OmdlbmVy
YXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgQ3J5cHRvQWxnb3IK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbnRleHQtPnJlZigpOwogICAgIGNvbnRl
eHQtPnBvc3RUYXNrKAotICAgICAgICBbYWxnb3JpdGhtLCBoYXNoLCBoYXNIYXNoLCBleHRyYWN0
YWJsZSwgdXNhZ2UsIHB1YmxpY0tleVNleHAgPSBwdWJsaWNLZXlTZXhwLnJlbGVhc2UoKSwgcHJp
dmF0ZUtleVNleHAgPSBwcml2YXRlS2V5U2V4cC5yZWxlYXNlKCksIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewor
ICAgICAgICBbYWxnb3JpdGhtLCBoYXNoLCBoYXNIYXNoLCBleHRyYWN0YWJsZSwgdXNhZ2UsIHB1
YmxpY0tleVNleHAgPSBwdWJsaWNLZXlTZXhwLnJlbGVhc2UoKSwgcHJpdmF0ZUtleVNleHAgPSBw
cml2YXRlS2V5U2V4cC5yZWxlYXNlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1
dG8mKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGF1dG8gcHVibGljS2V5ID0gQ3J5cHRvS2V5UlNB
OjpjcmVhdGUoYWxnb3JpdGhtLCBoYXNoLCBoYXNIYXNoLCBDcnlwdG9LZXlUeXBlOjpQdWJsaWMs
IHB1YmxpY0tleVNleHAsIHRydWUsIHVzYWdlKTsKICAgICAgICAgICAgIGF1dG8gcHJpdmF0ZUtl
eSA9IENyeXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRobSwgaGFzaCwgaGFzSGFzaCwgQ3J5cHRv
S2V5VHlwZTo6UHJpdmF0ZSwgcHJpdmF0ZUtleVNleHAsIGV4dHJhY3RhYmxlLCB1c2FnZSk7CiAK
ICAgICAgICAgICAgIGNhbGxiYWNrKENyeXB0b0tleVBhaXIgeyBXVEZNb3ZlKHB1YmxpY0tleSks
IFdURk1vdmUocHJpdmF0ZUtleSkgfSk7Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CiAg
ICAgICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0Ny
eXB0b0tleVJTQU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0tleVJT
QU1hYy5jcHAKaW5kZXggYmMwMmMyOTJkNDU0ZWNlMzc1ZWQ4YzM3MDI1M2M5ZjMyYTQzYWI2YS4u
OWU3Mjk4YWFhNzI2NTUyNjUxMzIxZWM4MGRkNTI0NzAwOTQyNGY1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcApAQCAtMjkzLDI0ICsyOTMsMjQg
QEAgdm9pZCBDcnlwdG9LZXlSU0E6OmdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyIGFsZ29yaXRobSwgQ3J5cHRvQWxnb3IKICAgICAvLyBXZSBvbmx5IHVzZSB0aGUgY2FsbGJh
Y2sgZnVuY3Rpb25zIHdoZW4gYmFjayBvbiB0aGUgbWFpbi93b3JrZXIgdGhyZWFkLCBidXQgY2Fw
dHVyZWQgdmFyaWFibGVzIGFyZSBjb3BpZWQgb24gYSBzZWNvbmRhcnkgdGhyZWFkIHRvby4KICAg
ICBLZXlQYWlyQ2FsbGJhY2sqIGxvY2FsQ2FsbGJhY2sgPSBuZXcgS2V5UGFpckNhbGxiYWNrKFdU
Rk1vdmUoY2FsbGJhY2spKTsKICAgICBWb2lkQ2FsbGJhY2sqIGxvY2FsRmFpbHVyZUNhbGxiYWNr
ID0gbmV3IFZvaWRDYWxsYmFjayhXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjaykpOwotICAgIGNvbnRl
eHQtPnJlZigpOworICAgIGF1dG8gY29udGV4dElkZW50aWZpZXIgPSBjb250ZXh0LT5jb250ZXh0
SWRlbnRpZmllcigpOwogCisgICAgLy8gRklYTUU6IFRoZXJlIGlzIGEgcmlzayB0aGF0IGxvY2Fs
Q2FsbGJhY2sgYW5kIGxvY2FsRmFpbHVyZUNhbGxiYWNrIGFyZSBuZXZlciBmcmVlZC4KKyAgICAv
LyBGaXggdGhpcyBieSB1c2luZyB1bmlxdWUgcG9pbnRlcnMgYW5kIG1vdmUgdGhlbSBmcm9tIG9u
ZSBsYW1iZGEgdG8gdGhlIG90aGVyLgogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9n
bG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIF57Ci0gICAg
ICAgIEFTU0VSVChjb250ZXh0KTsKICAgICAgICAgQ0NSU0FDcnlwdG9yUmVmIGNjUHVibGljS2V5
OwogICAgICAgICBDQ1JTQUNyeXB0b3JSZWYgY2NQcml2YXRlS2V5OwogICAgICAgICBDQ0NyeXB0
b3JTdGF0dXMgc3RhdHVzID0gQ0NSU0FDcnlwdG9yR2VuZXJhdGVQYWlyKG1vZHVsdXNMZW5ndGgs
IGUsICZjY1B1YmxpY0tleSwgJmNjUHJpdmF0ZUtleSk7CiAgICAgICAgIGlmIChzdGF0dXMpIHsK
ICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiQ291bGQgbm90IGdlbmVyYXRlIGEga2V5IHBhaXIs
IHN0YXR1cyAlZCIsIHN0YXR1cyk7Ci0gICAgICAgICAgICBjb250ZXh0LT5wb3N0VGFzayhbbG9j
YWxDYWxsYmFjaywgbG9jYWxGYWlsdXJlQ2FsbGJhY2tdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIHsKKyAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNr
VG8oY29udGV4dElkZW50aWZpZXIsIFtsb2NhbENhbGxiYWNrLCBsb2NhbEZhaWx1cmVDYWxsYmFj
a10oYXV0byYpIHsKICAgICAgICAgICAgICAgICAoKmxvY2FsRmFpbHVyZUNhbGxiYWNrKSgpOwog
ICAgICAgICAgICAgICAgIGRlbGV0ZSBsb2NhbENhbGxiYWNrOwogICAgICAgICAgICAgICAgIGRl
bGV0ZSBsb2NhbEZhaWx1cmVDYWxsYmFjazsKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVm
KCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAg
ICAgICBjb250ZXh0LT5wb3N0VGFzayhbYWxnb3JpdGhtLCBoYXNoLCBoYXNIYXNoLCBleHRyYWN0
YWJsZSwgdXNhZ2UsIGxvY2FsQ2FsbGJhY2ssIGxvY2FsRmFpbHVyZUNhbGxiYWNrLCBjY1B1Ymxp
Y0tleSwgY2NQcml2YXRlS2V5XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Cisg
ICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oY29udGV4dElkZW50aWZp
ZXIsIFthbGdvcml0aG0sIGhhc2gsIGhhc0hhc2gsIGV4dHJhY3RhYmxlLCB1c2FnZSwgbG9jYWxD
YWxsYmFjaywgbG9jYWxGYWlsdXJlQ2FsbGJhY2ssIGNjUHVibGljS2V5LCBjY1ByaXZhdGVLZXld
KGF1dG8mKSB7CiAgICAgICAgICAgICBhdXRvIHB1YmxpY0tleSA9IENyeXB0b0tleVJTQTo6Y3Jl
YXRlKGFsZ29yaXRobSwgaGFzaCwgaGFzSGFzaCwgQ3J5cHRvS2V5VHlwZTo6UHVibGljLCBjY1B1
YmxpY0tleSwgdHJ1ZSwgdXNhZ2UpOwogICAgICAgICAgICAgYXV0byBwcml2YXRlS2V5ID0gQ3J5
cHRvS2V5UlNBOjpjcmVhdGUoYWxnb3JpdGhtLCBoYXNoLCBoYXNIYXNoLCBDcnlwdG9LZXlUeXBl
OjpQcml2YXRlLCBjY1ByaXZhdGVLZXksIGV4dHJhY3RhYmxlLCB1c2FnZSk7CiAKQEAgLTMxOCw3
ICszMTgsNiBAQCB2b2lkIENyeXB0b0tleVJTQTo6Z2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXIgYWxnb3JpdGhtLCBDcnlwdG9BbGdvcgogCiAgICAgICAgICAgICBkZWxldGUg
bG9jYWxDYWxsYmFjazsKICAgICAgICAgICAgIGRlbGV0ZSBsb2NhbEZhaWx1cmVDYWxsYmFjazsK
LSAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAyYmMyMDY1NTgxZTAxMDFiMGFhNTM5ZjA0ZjBiMjg0
ZGI2MGZiNGYxLi4yZGEwZjQ3NmE2NTZiMWRlZTdhNDlkMDk5MDdhMTM0NTgzYzUxMzYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTU2Nyw4ICs1NjcsMTAgQEAgUmVmPERvY3VtZW50PiBE
b2N1bWVudDo6Y3JlYXRlKERvY3VtZW50JiBjb250ZXh0RG9jdW1lbnQpCiAKIERvY3VtZW50Ojp+
RG9jdW1lbnQoKQogewotICAgIGJvb2wgd2FzUmVtb3ZlZCA9IGFsbERvY3VtZW50c01hcCgpLnJl
bW92ZShtX2lkZW50aWZpZXIpOwotICAgIEFTU0VSVF9VTlVTRUQod2FzUmVtb3ZlZCwgd2FzUmVt
b3ZlZCk7CisgICAgQVNTRVJUKGFsbERvY3VtZW50c01hcCgpLmNvbnRhaW5zKG1faWRlbnRpZmll
cikpOworICAgIGFsbERvY3VtZW50c01hcCgpLnJlbW92ZShtX2lkZW50aWZpZXIpOworICAgIC8v
IFdlIG5lZWQgdG8gcmVtb3ZlIGZyb20gdGhlIGNvbnRleHRzIG1hcCB2ZXJ5IGVhcmx5IGluIHRo
ZSBkZXN0cnVjdG9yIHNvIHRoYXQgY2FsbGluZyBwb3N0VGFzaygpIG9uIHRoaXMgRG9jdW1lbnQg
ZnJvbSBhbm90aGVyIHRocmVhZCBpcyBzYWZlLgorICAgIHJlbW92ZUZyb21Db250ZXh0c01hcCgp
OwogCiAgICAgQVNTRVJUKCFyZW5kZXJWaWV3KCkpOwogICAgIEFTU0VSVChtX3BhZ2VDYWNoZVN0
YXRlICE9IEluUGFnZUNhY2hlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmNwcAppbmRleCA1MWUzMWQzOGVmOWMzNmM2ZDY3NmY0NDA2YmUzNmMxMTE3Y2Y5
MzgyLi42Zjg0ZTdjZDU3OTYwMjNkYWY3YmMwM2UzNDYwMmFlOTZhNTdjNDhlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC02NSw2ICs2NSwx
OSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAor
c3RhdGljIExvY2smIGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwTG9jaygpCit7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPExvY2s+IGxvY2s7CisgICAgcmV0dXJuIGxvY2s7Cit9CisK
K3N0YXRpYyBIYXNoTWFwPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0Kj4mIGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKCkKK3sKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+PiBjb250ZXh0czsKKyAgICBBU1NFUlQo
YWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXBMb2NrKCkuaXNMb2NrZWQoKSk7CisgICAgcmV0
dXJuIGNvbnRleHRzOworfQorCiBzdHJ1Y3QgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6UGVuZGlu
Z0V4Y2VwdGlvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC04
Nyw2ICsxMDAsMzAgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpCiB7CiB9CiAKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OmNvbnRleHRJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
aXNDb250ZXh0VGhyZWFkKCkpOworICAgIGlmICghbV9jb250ZXh0SWRlbnRpZmllcikgeworICAg
ICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwTG9j
aygpKTsKKworICAgICAgICBtX2NvbnRleHRJZGVudGlmaWVyID0gZ2VuZXJhdGVPYmplY3RJZGVu
dGlmaWVyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyVHlwZT4oKTsKKworICAgICAg
ICBBU1NFUlQoIWFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKCkuY29udGFpbnMobV9jb250
ZXh0SWRlbnRpZmllcikpOworICAgICAgICBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgp
LmFkZChtX2NvbnRleHRJZGVudGlmaWVyLCBjb25zdF9jYXN0PFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqPih0aGlzKSk7CisgICAgfQorICAgIHJldHVybiBtX2NvbnRleHRJZGVudGlmaWVyOworfQor
Cit2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlbW92ZUZyb21Db250ZXh0c01hcCgpCit7
CisgICAgaWYgKG1fY29udGV4dElkZW50aWZpZXIudG9VSW50NjQoKSkgeworICAgICAgICBMb2Nr
ZXI8TG9jaz4gbG9ja2VyKGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwTG9jaygpKTsKKyAg
ICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgp
LmNvbnRhaW5zKG1fY29udGV4dElkZW50aWZpZXIpLAorICAgICAgICAgICAgIlNjcmlwdEV4ZWN1
dGlvbiBzdWJjbGFzcyBpbXBsZW1lbnRpbmcgcG9zdFRhc2sgc2hvdWxkIGhhdmUgYWxyZWFkeSBy
ZW1vdmVkIGl0c2VsZiBmcm9tIHRoZSBtYXAiKTsKKyAgICAgICAgYWxsU2NyaXB0RXhlY3V0aW9u
Q29udGV4dHNNYXAoKS5yZW1vdmUobV9jb250ZXh0SWRlbnRpZmllcik7CisgICAgfQorfQorCiAj
aWYgQVNTRVJUX0RJU0FCTEVECiAKIGlubGluZSB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OmNoZWNrQ29uc2lzdGVuY3koKSBjb25zdApAQCAtMTE2LDYgKzE1MywxMSBAQCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCiAgICAgY2hlY2tDb25zaXN0
ZW5jeSgpOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIGlmIChtX2NvbnRleHRJZGVudGlm
aWVyLnRvVUludDY0KCkpIHsKKyAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihhbGxTY3JpcHRF
eGVjdXRpb25Db250ZXh0c01hcExvY2soKSk7CisgICAgICAgIEFTU0VSVCghYWxsU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dHNNYXAoKS5jb250YWlucyhtX2NvbnRleHRJZGVudGlmaWVyKSk7CisgICAg
fQorCiAgICAgbV9pblNjcmlwdEV4ZWN1dGlvbkNvbnRleHREZXN0cnVjdG9yID0gdHJ1ZTsKICNl
bmRpZgogCkBAIC01ODAsNiArNjIyLDE5IEBAIGJvb2wgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
cG9zdFRhc2tUbyhjb25zdCBEb2N1bWVudE9yV29ya2VySWRlbnRpZmllciYgY29udGV4CiAgICAg
fSk7CiAgICAgcmV0dXJuIHdhc1Bvc3RlZDsKIH0KKwogI2VuZGlmCiAKK2Jvb2wgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmll
ciBpZGVudGlmaWVyLCBUYXNrJiYgdGFzaykKK3sKKyAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFs
bFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwTG9jaygpKTsKKyAgICBhdXRvKiBjb250ZXh0ID0g
YWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXAoKS5nZXQoaWRlbnRpZmllcik7CisKKyAgICBp
ZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnRleHQtPnBvc3RU
YXNrKFdURk1vdmUodGFzaykpOworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApp
bmRleCBhZjc1MDIwNzFhNWVmOWVkN2M4YjhhOWE0MGI2ODhmNmQ4ZDliMTQ5Li4yYWQyN2VmMzdk
NzYxMjMzYTZlNWZlMGM5ZWI3OTAyYzRkMDI2NDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYv
Q3Jvc3NUaHJlYWRUYXNrLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTc4LDYgKzc5
LDkgQEAgbmFtZXNwYWNlIElEQkNsaWVudCB7CiBjbGFzcyBJREJDb25uZWN0aW9uUHJveHk7CiB9
CiAKK2VudW0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5n
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllclR5cGU+OworCiBjbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0IDogcHVibGljIFNlY3VyaXR5Q29udGV4dCB7CiBwdWJsaWM6CiAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOwpAQCAtMjUzLDYgKzI1Nyw5IEBAIHB1YmxpYzoKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHBvc3RUYXNrVG8oY29uc3QgRG9jdW1lbnRPcldvcmtl
cklkZW50aWZpZXImLCBXVEY6OkZ1bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
PiYmKTsKICNlbmRpZgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHBvc3RUYXNrVG8o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIFRhc2smJik7CisKKyAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWRlbnRpZmllcigpIGNvbnN0OwogCiBw
cm90ZWN0ZWQ6CiAgICAgY2xhc3MgQWRkQ29uc29sZU1lc3NhZ2VUYXNrIDogcHVibGljIFRhc2sg
ewpAQCAtMjc1LDYgKzI4Miw3IEBAIHByb3RlY3RlZDoKICAgICBBY3RpdmVET01PYmplY3Q6OlJl
YXNvbkZvclN1c3BlbnNpb24gcmVhc29uRm9yU3VzcGVuZGluZ0FjdGl2ZURPTU9iamVjdHMoKSBj
b25zdCB7IHJldHVybiBtX3JlYXNvbkZvclN1c3BlbmRpbmdBY3RpdmVET01PYmplY3RzOyB9CiAK
ICAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0OworICAgIHZvaWQgcmVtb3ZlRnJv
bUNvbnRleHRzTWFwKCk7CiAKIHByaXZhdGU6CiAgICAgLy8gVGhlIGZvbGxvd2luZyBhZGRNZXNz
YWdlIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQuCkBAIC0zMjgsNiArMzM2LDcgQEAgcHJpdmF0ZToK
ICNlbmRpZgogCiAgICAgU3RyaW5nIG1fZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb247CisgICAgbXV0
YWJsZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBtX2NvbnRleHRJZGVudGlmaWVy
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA0MTVhYmFjMzBlNTM0MmFiZGMzMGQyYWIxNTk2
Y2YzYjRlYzZiOGQ1Li4wNTE2N2RjMTdiM2VkNTk5NWI5YjZhZTlhYjNiODY5NDkwZjU4YmZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtODks
NiArODksOCBAQCBXb3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgYwogV29ya2VyR2xvYmFsU2NvcGU6On5X
b3JrZXJHbG9iYWxTY29wZSgpCiB7CiAgICAgQVNTRVJUKHRocmVhZCgpLnRocmVhZCgpID09ICZU
aHJlYWQ6OmN1cnJlbnQoKSk7CisgICAgLy8gV2UgbmVlZCB0byByZW1vdmUgZnJvbSB0aGUgY29u
dGV4dHMgbWFwIHZlcnkgZWFybHkgaW4gdGhlIGRlc3RydWN0b3Igc28gdGhhdCBjYWxsaW5nIHBv
c3RUYXNrKCkgb24gdGhpcyBXb3JrZXJHbG9iYWxTY29wZSBmcm9tIGFub3RoZXIgdGhyZWFkIGlz
IHNhZmUuCisgICAgcmVtb3ZlRnJvbUNvbnRleHRzTWFwKCk7CiAKICAgICBtX3BlcmZvcm1hbmNl
ID0gbnVsbHB0cjsKICAgICBtX2NyeXB0byA9IG51bGxwdHI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335801</attachid>
            <date>2018-03-14 14:27:12 -0700</date>
            <delta_ts>2018-03-14 15:52:14 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-183602-20180314142711.patch</filename>
            <type>text/plain</type>
            <size>23913</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQxODdmMDkxZWI1ZmJm
ZDM3YTNmZTlhM2M4YjZmNTU4NjdjYjNiOS4uNGYwZjNhYzNkODZlOGFlNjA3MzdlMTE3YTYyZmU5
ZTBkMDU2MTdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE4LTAzLTEzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL1dlYkNyeXB0b0FQSS93cmFwS2V5X3Vud3JhcEtleS93cmFwS2V5X3Vu
d3JhcEtleS53b3JrZXIuaHRtbCBpcyBjcmFzaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNjAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hy
aXMgRHVtZXouCisKKyAgICAgICAgSW50cm9kdWNlIGEgbWFwIG9mIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQgdGhhdCBpcyByZWFkL3dyaXRlIHByb3RlY3RlZCB1c2luZyBhIExvY2suCisgICAgICAg
IFRoaXMgYWxsb3dzIGludHJvZHVjaW5nIHBvc3RUYXNrVG8gdGFraW5nIGEgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCBpZGVudGlmaWVyIGFuZCBjYWxsYWJsZSBmcm9tIGFueSB0aHJlYWQuCisgICAg
ICAgIFVzZSB0aGF0IG1ldGhvZCBpbiBDcnlwdG8gaW5zdGVhZCBvZiByZWZpbmcvdW5yZWZpbmcg
IHRoZSBjb250ZXh0LgorICAgICAgICBMb2NrIG9ubHkgaGFwcGVucyBpZiBjb250ZXh0IGRvZXMg
c29tZSBwb3N0VGFzayBhY3Rpdml0eS4gVGhpcyBpcyBnb3Zlcm5lZCBieSBjYWxsaW5nIG9yIG5v
dCB0aGUgbmV3IGNvbnRleHRJZGVudGlmaWVyKCkgZ2V0dGVyLgorCisgICAgICAgIENvdmVyZWQg
YnkgY3J5cHRvIHRlc3RzIG5vIGxvbmdlciBmYWlsaW5nIG1fd29ya2VyR2xvYmFsU2NvcGUtPmhh
c09uZVJlZigpIGFzc2VydGlvbi4KKworICAgICAgICAqIGNyeXB0by9DcnlwdG9BbGdvcml0aG0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hBbGdvcml0aG1PcGVyYXRpb24pOgorICAg
ICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDREguY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtRUNESDo6ZGVyaXZlQml0cyk6CisgICAgICAgICog
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG9BbGdvcml0aG1TSEEyMjQ6OmRpZ2VzdCk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29y
aXRobVNIQTI1Njo6ZGlnZXN0KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1TSEEzODQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hB
Mzg0OjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVNIQTUxMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmRp
Z2VzdCk6CisgICAgICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIpOgorICAgICAgICAq
IGNyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0
b0tleVJTQTo6Z2VuZXJhdGVQYWlyKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgICogZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWxsU2NyaXB0RXhlY3V0
aW9uQ29udGV4dHNNYXBMb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6cmVtb3ZlRnJvbUNvbnRleHRzTWFwKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNoZWNrQ29uc2lzdGVuY3kgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyk6CisgICAg
ICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNvbnRleHRJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckdsb2JhbFNjb3BlOjp+V29ya2VyR2xvYmFsU2NvcGUpOgorCiAyMDE4LTAzLTEyICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBDYWxsaW5nIHJlbW92ZVRyYWNr
IHdpdGggUlRDUnRwU2VuZGVyIGRvZXMgbm90IHNldCBTZW5kZXJUcmFjayB0byBudWxsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmggYi9Tb3VyY2UvV1RGL3d0
Zi9PYmplY3RJZGVudGlmaWVyLmgKaW5kZXggNGJlMGM4ODRhM2I5NzA5MzI5ZjI5YzFkOGU3ZDI4
NTkzNmNjY2E3Mi4uMGEwNjg3YzI0NGIxODVlNWQ4N2M4NWMwMGYwZjY3NDU4M2E2ZDJjZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvT2JqZWN0SWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL09iamVjdElkZW50aWZpZXIuaApAQCAtNjYsNyArNjYsOCBAQCBwdWJsaWM6CiAgICAg
fQogCiAgICAgdWludDY0X3QgdG9VSW50NjQoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7
IH0KLSAgICAKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9p
ZGVudGlmaWVyOyB9CisKICAgICBTdHJpbmcgbG9nZ2luZ1N0cmluZygpIGNvbnN0CiAgICAgewog
ICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIobV9pZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uY3BwIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5jcHAKaW5kZXggNTU5M2NmYjY2YjRlMGEyYjQxNmQx
ODMzZGFjODA4YzY1ZjkzNmMyOS4uNGJmYmQ3ZGQ0MzcyMGE1MjIxMDM5ZmEyNzQ4ZjgxMzhiMmY3
YTZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5jcHAKQEAgLTk1
LDI2ICs5NSwxNyBAQCBFeGNlcHRpb25PcjxzaXplX3Q+IENyeXB0b0FsZ29yaXRobTo6Z2V0S2V5
TGVuZ3RoKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcgogdGVtcGxhdGU8dHlwZW5hbWUg
UmVzdWx0Q2FsbGJhY2tUeXBlLCB0eXBlbmFtZSBPcGVyYXRpb25UeXBlPgogc3RhdGljIHZvaWQg
ZGlzcGF0Y2hBbGdvcml0aG1PcGVyYXRpb24oV29ya1F1ZXVlJiB3b3JrUXVldWUsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlc3VsdENhbGxiYWNrVHlwZSYmIGNhbGxiYWNrLCBD
cnlwdG9BbGdvcml0aG06OkV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIE9w
ZXJhdGlvblR5cGUmJiBvcGVyYXRpb24pCiB7Ci0gICAgY29udGV4dC5yZWYoKTsKKyAgICAvLyBU
aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBjYWxsYmFjayBhbmQgZXhjZXB0aW9uQ2FsbGJhY2sg
d2lsbCBiZSBkZXN0cm95ZWQgaW4gdGhlIHRocmVhZCBpbiB3aGljaCB0aGV5IHdlcmUgY3JlYXRl
ZC4KICAgICB3b3JrUXVldWUuZGlzcGF0Y2goCi0gICAgICAgIFtvcGVyYXRpb24gPSBXVEZNb3Zl
KG9wZXJhdGlvbiksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxi
YWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewor
ICAgICAgICBbb3BlcmF0aW9uID0gV1RGTW92ZShvcGVyYXRpb24pLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJh
Y2spLCBjb250ZXh0SWRlbnRpZmllciA9IGNvbnRleHQuY29udGV4dElkZW50aWZpZXIoKV0oKSBt
dXRhYmxlIHsKICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gb3BlcmF0aW9uKCk7Ci0gICAgICAg
ICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2Ug
c2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhl
IERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRh
c2soCi0gICAgICAgICAgICAgICAgICAgIFtlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCku
Y29kZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9
IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhlYyk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5n
IGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29udGV4
dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICBbcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1
cm5WYWx1ZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFj
ayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oY29udGV4dElkZW50aWZp
ZXIsIFtyZXN1bHQgPSBjcm9zc1RocmVhZENvcHkocmVzdWx0KSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNr
KV0oYXV0byYpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0
aW9uKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2socmVzdWx0LnJl
bGVhc2VFeGNlcHRpb24oKS5jb2RlKCkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdC5yZWxlYXNl
UmV0dXJuVmFsdWUoKSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVD
REguY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
RUNESC5jcHAKaW5kZXggMzc3ZjhjNmIwM2YyNmQ0MmQ2NDgzNTQyY2Q3NTdmNjkwMDkyNjAyNC4u
MTYzYmQ5YzE5MjI1OTZhMWE1ZWFkZGM0M2M1Y2ZhYzk0MTQxOWMyZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNESC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNESC5j
cHAKQEAgLTExNiwxNSArMTE2LDEyIEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtRUNESDo6ZGVyaXZl
Qml0cyhzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mCiAKICAgICAv
LyBUaGlzIGlzIGEgc3BlY2lhbCBjYXNlIHRoYXQgY2FuJ3QgdXNlIGRpc3BhdGNoT3BlcmF0aW9u
KCkgYmVjYXVzZSBpdCBidW5kbGVzCiAgICAgLy8gdGhlIHJlc3VsdCB2YWxpZGF0aW9uIGFuZCBj
YWxsYmFjayBkaXNwYXRjaCBpbnRvIHVuaWZpZWRDYWxsYmFjay4KLSAgICBjb250ZXh0LnJlZigp
OwogICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKLSAgICAgICAgW2Jhc2VLZXkgPSBXVEZNb3ZlKGJh
c2VLZXkpLCBwdWJsaWNLZXkgPSBlY1BhcmFtZXRlcnMucHVibGljS2V5LnJlbGVhc2VOb25OdWxs
KCksIGxlbmd0aCwgdW5pZmllZENhbGxiYWNrID0gV1RGTW92ZSh1bmlmaWVkQ2FsbGJhY2spLCAm
Y29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICAgICAgW2Jhc2VLZXkgPSBXVEZNb3ZlKGJhc2VLZXkp
LCBwdWJsaWNLZXkgPSBlY1BhcmFtZXRlcnMucHVibGljS2V5LnJlbGVhc2VOb25OdWxsKCksIGxl
bmd0aCwgdW5pZmllZENhbGxiYWNrID0gV1RGTW92ZSh1bmlmaWVkQ2FsbGJhY2spLCBjb250ZXh0
SWRlbnRpZmllciA9IGNvbnRleHQuY29udGV4dElkZW50aWZpZXIoKV0oKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIGF1dG8gZGVyaXZlZEtleSA9IHBsYXRmb3JtRGVyaXZlQml0cyhkb3duY2FzdDxD
cnlwdG9LZXlFQz4oYmFzZUtleS5nZXQoKSksIGRvd25jYXN0PENyeXB0b0tleUVDPihwdWJsaWNL
ZXkuZ2V0KCkpKTsKLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAgICAg
ICAgW2Rlcml2ZWRLZXkgPSBXVEZNb3ZlKGRlcml2ZWRLZXkpLCBsZW5ndGgsIHVuaWZpZWRDYWxs
YmFjayA9IFdURk1vdmUodW5pZmllZENhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgICAgIHVuaWZpZWRDYWxsYmFjayhX
VEZNb3ZlKGRlcml2ZWRLZXkpLCBsZW5ndGgpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0Ojpwb3N0VGFza1RvKGNvbnRleHRJZGVudGlmaWVyLCBbZGVyaXZlZEtleSA9IFdU
Rk1vdmUoZGVyaXZlZEtleSksIGxlbmd0aCwgdW5pZmllZENhbGxiYWNrID0gV1RGTW92ZSh1bmlm
aWVkQ2FsbGJhY2spXShhdXRvJikgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgdW5pZmllZENh
bGxiYWNrKFdURk1vdmUoZGVyaXZlZEtleSksIGxlbmd0aCk7CisgICAgICAgICAgICB9KTsKICAg
ICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVNIQTEuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHAKaW5kZXggOTQ3NDA5YzhiMjYwNDllODIzMWY3
M2IyNGMxZTI2YzNjYmQyMWM2Yy4uOWY5NDMzZjdlNzIyMzA4ODcwODljMjYyOWFkOWM0MGEzNzY3
YzMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtU0hBMS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtU0hBMS5jcHAKQEAgLTUxLDEzICs1MSwxMSBAQCB2b2lkIENyeXB0b0Fs
Z29yaXRobVNIQTE6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxs
YmFjayYmIGNhbAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29udGV4dC5yZWYoKTsK
LSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW2RpZ2VzdCA9IFdURk1vdmUoZGlnZXN0KSwgbWVzc2Fn
ZSA9IFdURk1vdmUobWVzc2FnZSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksICZjb250
ZXh0XSgpIG11dGFibGUgeworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChbZGlnZXN0ID0gV1RGTW92
ZShkaWdlc3QpLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKSwgY29udGV4dElkZW50aWZpZXIgPSBjb250ZXh0LmNvbnRleHRJZGVudGlmaWVy
KCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMobWVzc2FnZS5kYXRhKCks
IG1lc3NhZ2Uuc2l6ZSgpKTsKICAgICAgICAgYXV0byByZXN1bHQgPSBkaWdlc3QtPmNvbXB1dGVI
YXNoKCk7Ci0gICAgICAgIGNvbnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgeworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKGNv
bnRleHRJZGVudGlmaWVyLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0g
V1RGTW92ZShyZXN1bHQpXShhdXRvJikgewogICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsK
LSAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1TSEEyMjQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtU0hBMjI0LmNwcAppbmRleCBkOTA2NzgzYTY0YzM0ZWU3N2JjNTc5N2VmNDg4OWQ1MmMx
ZjQ2MmZkLi45YmM0MzhhMzlkZjQ3YzAxZDdhMGJkOGVkNmNkMjA0N2Q1ZDlmOWM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEy
MjQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVNIQTIyNC5jcHAKQEAgLTUxLDEzICs1MSwxMSBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNI
QTIyNDo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYg
YwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3Jr
UXVldWUuZGlzcGF0Y2goW2RpZ2VzdCA9IFdURk1vdmUoZGlnZXN0KSwgbWVzc2FnZSA9IFdURk1v
dmUobWVzc2FnZSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksICZjb250ZXh0XSgpIG11
dGFibGUgeworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChbZGlnZXN0ID0gV1RGTW92ZShkaWdlc3Qp
LCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgY29udGV4dElkZW50aWZpZXIgPSBjb250ZXh0LmNvbnRleHRJZGVudGlmaWVyKCldKCkgbXV0
YWJsZSB7CiAgICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMobWVzc2FnZS5kYXRhKCksIG1lc3NhZ2Uu
c2l6ZSgpKTsKICAgICAgICAgYXV0byByZXN1bHQgPSBkaWdlc3QtPmNvbXB1dGVIYXNoKCk7Ci0g
ICAgICAgIGNvbnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJl
c3VsdCA9IFdURk1vdmUocmVzdWx0KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
eworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKGNvbnRleHRJZGVu
dGlmaWVyLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gV1RGTW92ZShy
ZXN1bHQpXShhdXRvJikgewogICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAg
ICAgIGNvbnRleHQuZGVyZWYoKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hB
MjU2LmNwcAppbmRleCA2NDI3MWZhOWFhNjI4MzM4OTgwODZiMmRiNTExZGFmMTY4ZDNmOTBjLi5m
NDdjNTBmMWZiZjZlZGZlNjU0NDRkYmM5OGE2MDYzODdhZjY2MTc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1
Ni5jcHAKQEAgLTUxLDEzICs1MSwxMSBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTI1Njo6ZGln
ZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgYwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlz
cGF0Y2goW2RpZ2VzdCA9IFdURk1vdmUoZGlnZXN0KSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2Fn
ZSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewor
ICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChbZGlnZXN0ID0gV1RGTW92ZShkaWdlc3QpLCBtZXNzYWdl
ID0gV1RGTW92ZShtZXNzYWdlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgY29udGV4
dElkZW50aWZpZXIgPSBjb250ZXh0LmNvbnRleHRJZGVudGlmaWVyKCldKCkgbXV0YWJsZSB7CiAg
ICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMobWVzc2FnZS5kYXRhKCksIG1lc3NhZ2Uuc2l6ZSgpKTsK
ICAgICAgICAgYXV0byByZXN1bHQgPSBkaWdlc3QtPmNvbXB1dGVIYXNoKCk7Ci0gICAgICAgIGNv
bnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCA9IFdU
Rk1vdmUocmVzdWx0KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKGNvbnRleHRJZGVudGlmaWVyLCBb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXShh
dXRvJikgewogICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgIGNvbnRl
eHQuZGVyZWYoKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcApp
bmRleCBmMjJiYTZmZWNmMDMxYWZlMGIyMjNhZTk3Y2I3N2E2NjFkMzRlYmI4Li5hMjU1ODQ5ZjJl
YjI0MmE2YzQxNmYyM2UwNzE1MzZjMTQyYWM4OWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAKQEAg
LTUxLDEzICs1MSwxMSBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTM4NDo6ZGlnZXN0KFZlY3Rv
cjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgYwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW2Rp
Z2VzdCA9IFdURk1vdmUoZGlnZXN0KSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgeworICAgIHdvcmtR
dWV1ZS5kaXNwYXRjaChbZGlnZXN0ID0gV1RGTW92ZShkaWdlc3QpLCBtZXNzYWdlID0gV1RGTW92
ZShtZXNzYWdlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgY29udGV4dElkZW50aWZp
ZXIgPSBjb250ZXh0LmNvbnRleHRJZGVudGlmaWVyKCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGRp
Z2VzdC0+YWRkQnl0ZXMobWVzc2FnZS5kYXRhKCksIG1lc3NhZ2Uuc2l6ZSgpKTsKICAgICAgICAg
YXV0byByZXN1bHQgPSBkaWdlc3QtPmNvbXB1dGVIYXNoKCk7Ci0gICAgICAgIGNvbnRleHQucG9z
dFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCA9IFdURk1vdmUocmVz
dWx0KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKGNvbnRleHRJZGVudGlmaWVyLCBbY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXShhdXRvJikgewog
ICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgIGNvbnRleHQuZGVyZWYo
KTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcAppbmRleCAxNDEx
MWQyMzk0OGJlY2I2ODRhNmJhZDA4Yzg4YzYxZmI5MzBiY2IyLi5kNTdkOGM5ZTdkMTQ5Y2JlNTky
YmQwZmE4YjI0MzU1MzRmODZjM2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAKQEAgLTUxLDEzICs1
MSwxMSBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTUxMjo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90
PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgYwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW2RpZ2VzdCA9IFdU
Rk1vdmUoZGlnZXN0KSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgeworICAgIHdvcmtRdWV1ZS5kaXNw
YXRjaChbZGlnZXN0ID0gV1RGTW92ZShkaWdlc3QpLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdl
KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgY29udGV4dElkZW50aWZpZXIgPSBjb250
ZXh0LmNvbnRleHRJZGVudGlmaWVyKCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGRpZ2VzdC0+YWRk
Qnl0ZXMobWVzc2FnZS5kYXRhKCksIG1lc3NhZ2Uuc2l6ZSgpKTsKICAgICAgICAgYXV0byByZXN1
bHQgPSBkaWdlc3QtPmNvbXB1dGVIYXNoKCk7Ci0gICAgICAgIGNvbnRleHQucG9zdFRhc2soW2Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0Ojpwb3N0VGFza1RvKGNvbnRleHRJZGVudGlmaWVyLCBbY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXShhdXRvJikgewogICAgICAgICAg
ICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKICAgICAg
ICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2Ny
eXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0
L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAKaW5kZXggOTFjYjY0NDg4YjMxYjg4OWUwZGZmOTEyYWY5
YmMyMDhkZjVmMGFhOS4uMDgwMjA5OTU0NGM4NGQzZGIxODM3MDYzYjQ5N2U1OWRiZGZiNmZlNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5
cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0Ny
eXB0LmNwcApAQCAtMjMxLDE0ICsyMzEsMTIgQEAgdm9pZCBDcnlwdG9LZXlSU0E6OmdlbmVyYXRl
UGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgQ3J5cHRvQWxnb3IKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbnRleHQtPnJlZigpOwogICAgIGNvbnRleHQt
PnBvc3RUYXNrKAotICAgICAgICBbYWxnb3JpdGhtLCBoYXNoLCBoYXNIYXNoLCBleHRyYWN0YWJs
ZSwgdXNhZ2UsIHB1YmxpY0tleVNleHAgPSBwdWJsaWNLZXlTZXhwLnJlbGVhc2UoKSwgcHJpdmF0
ZUtleVNleHAgPSBwcml2YXRlS2V5U2V4cC5yZWxlYXNlKCksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAg
ICAgICBbYWxnb3JpdGhtLCBoYXNoLCBoYXNIYXNoLCBleHRyYWN0YWJsZSwgdXNhZ2UsIHB1Ymxp
Y0tleVNleHAgPSBwdWJsaWNLZXlTZXhwLnJlbGVhc2UoKSwgcHJpdmF0ZUtleVNleHAgPSBwcml2
YXRlS2V5U2V4cC5yZWxlYXNlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8m
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGF1dG8gcHVibGljS2V5ID0gQ3J5cHRvS2V5UlNBOjpj
cmVhdGUoYWxnb3JpdGhtLCBoYXNoLCBoYXNIYXNoLCBDcnlwdG9LZXlUeXBlOjpQdWJsaWMsIHB1
YmxpY0tleVNleHAsIHRydWUsIHVzYWdlKTsKICAgICAgICAgICAgIGF1dG8gcHJpdmF0ZUtleSA9
IENyeXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRobSwgaGFzaCwgaGFzSGFzaCwgQ3J5cHRvS2V5
VHlwZTo6UHJpdmF0ZSwgcHJpdmF0ZUtleVNleHAsIGV4dHJhY3RhYmxlLCB1c2FnZSk7CiAKICAg
ICAgICAgICAgIGNhbGxiYWNrKENyeXB0b0tleVBhaXIgeyBXVEZNb3ZlKHB1YmxpY0tleSksIFdU
Rk1vdmUocHJpdmF0ZUtleSkgfSk7Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CiAgICAg
ICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0
b0tleVJTQU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0tleVJTQU1h
Yy5jcHAKaW5kZXggYmMwMmMyOTJkNDU0ZWNlMzc1ZWQ4YzM3MDI1M2M5ZjMyYTQzYWI2YS4uOWU3
Mjk4YWFhNzI2NTUyNjUxMzIxZWM4MGRkNTI0NzAwOTQyNGY1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcApAQCAtMjkzLDI0ICsyOTMsMjQgQEAg
dm9pZCBDcnlwdG9LZXlSU0E6OmdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
IGFsZ29yaXRobSwgQ3J5cHRvQWxnb3IKICAgICAvLyBXZSBvbmx5IHVzZSB0aGUgY2FsbGJhY2sg
ZnVuY3Rpb25zIHdoZW4gYmFjayBvbiB0aGUgbWFpbi93b3JrZXIgdGhyZWFkLCBidXQgY2FwdHVy
ZWQgdmFyaWFibGVzIGFyZSBjb3BpZWQgb24gYSBzZWNvbmRhcnkgdGhyZWFkIHRvby4KICAgICBL
ZXlQYWlyQ2FsbGJhY2sqIGxvY2FsQ2FsbGJhY2sgPSBuZXcgS2V5UGFpckNhbGxiYWNrKFdURk1v
dmUoY2FsbGJhY2spKTsKICAgICBWb2lkQ2FsbGJhY2sqIGxvY2FsRmFpbHVyZUNhbGxiYWNrID0g
bmV3IFZvaWRDYWxsYmFjayhXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjaykpOwotICAgIGNvbnRleHQt
PnJlZigpOworICAgIGF1dG8gY29udGV4dElkZW50aWZpZXIgPSBjb250ZXh0LT5jb250ZXh0SWRl
bnRpZmllcigpOwogCisgICAgLy8gRklYTUU6IFRoZXJlIGlzIGEgcmlzayB0aGF0IGxvY2FsQ2Fs
bGJhY2sgYW5kIGxvY2FsRmFpbHVyZUNhbGxiYWNrIGFyZSBuZXZlciBmcmVlZC4KKyAgICAvLyBG
aXggdGhpcyBieSB1c2luZyB1bmlxdWUgcG9pbnRlcnMgYW5kIG1vdmUgdGhlbSBmcm9tIG9uZSBs
YW1iZGEgdG8gdGhlIG90aGVyLgogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9nbG9i
YWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIF57Ci0gICAgICAg
IEFTU0VSVChjb250ZXh0KTsKICAgICAgICAgQ0NSU0FDcnlwdG9yUmVmIGNjUHVibGljS2V5Owog
ICAgICAgICBDQ1JTQUNyeXB0b3JSZWYgY2NQcml2YXRlS2V5OwogICAgICAgICBDQ0NyeXB0b3JT
dGF0dXMgc3RhdHVzID0gQ0NSU0FDcnlwdG9yR2VuZXJhdGVQYWlyKG1vZHVsdXNMZW5ndGgsIGUs
ICZjY1B1YmxpY0tleSwgJmNjUHJpdmF0ZUtleSk7CiAgICAgICAgIGlmIChzdGF0dXMpIHsKICAg
ICAgICAgICAgIFdURkxvZ0Fsd2F5cygiQ291bGQgbm90IGdlbmVyYXRlIGEga2V5IHBhaXIsIHN0
YXR1cyAlZCIsIHN0YXR1cyk7Ci0gICAgICAgICAgICBjb250ZXh0LT5wb3N0VGFzayhbbG9jYWxD
YWxsYmFjaywgbG9jYWxGYWlsdXJlQ2FsbGJhY2tdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIHsKKyAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8o
Y29udGV4dElkZW50aWZpZXIsIFtsb2NhbENhbGxiYWNrLCBsb2NhbEZhaWx1cmVDYWxsYmFja10o
YXV0byYpIHsKICAgICAgICAgICAgICAgICAoKmxvY2FsRmFpbHVyZUNhbGxiYWNrKSgpOwogICAg
ICAgICAgICAgICAgIGRlbGV0ZSBsb2NhbENhbGxiYWNrOwogICAgICAgICAgICAgICAgIGRlbGV0
ZSBsb2NhbEZhaWx1cmVDYWxsYmFjazsKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7
CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAg
ICBjb250ZXh0LT5wb3N0VGFzayhbYWxnb3JpdGhtLCBoYXNoLCBoYXNIYXNoLCBleHRyYWN0YWJs
ZSwgdXNhZ2UsIGxvY2FsQ2FsbGJhY2ssIGxvY2FsRmFpbHVyZUNhbGxiYWNrLCBjY1B1YmxpY0tl
eSwgY2NQcml2YXRlS2V5XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAg
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oY29udGV4dElkZW50aWZpZXIs
IFthbGdvcml0aG0sIGhhc2gsIGhhc0hhc2gsIGV4dHJhY3RhYmxlLCB1c2FnZSwgbG9jYWxDYWxs
YmFjaywgbG9jYWxGYWlsdXJlQ2FsbGJhY2ssIGNjUHVibGljS2V5LCBjY1ByaXZhdGVLZXldKGF1
dG8mKSB7CiAgICAgICAgICAgICBhdXRvIHB1YmxpY0tleSA9IENyeXB0b0tleVJTQTo6Y3JlYXRl
KGFsZ29yaXRobSwgaGFzaCwgaGFzSGFzaCwgQ3J5cHRvS2V5VHlwZTo6UHVibGljLCBjY1B1Ymxp
Y0tleSwgdHJ1ZSwgdXNhZ2UpOwogICAgICAgICAgICAgYXV0byBwcml2YXRlS2V5ID0gQ3J5cHRv
S2V5UlNBOjpjcmVhdGUoYWxnb3JpdGhtLCBoYXNoLCBoYXNIYXNoLCBDcnlwdG9LZXlUeXBlOjpQ
cml2YXRlLCBjY1ByaXZhdGVLZXksIGV4dHJhY3RhYmxlLCB1c2FnZSk7CiAKQEAgLTMxOCw3ICsz
MTgsNiBAQCB2b2lkIENyeXB0b0tleVJTQTo6Z2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIgYWxnb3JpdGhtLCBDcnlwdG9BbGdvcgogCiAgICAgICAgICAgICBkZWxldGUgbG9j
YWxDYWxsYmFjazsKICAgICAgICAgICAgIGRlbGV0ZSBsb2NhbEZhaWx1cmVDYWxsYmFjazsKLSAg
ICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAppbmRleCAyYmMyMDY1NTgxZTAxMDFiMGFhNTM5ZjA0ZjBiMjg0ZGI2
MGZiNGYxLi4yZGEwZjQ3NmE2NTZiMWRlZTdhNDlkMDk5MDdhMTM0NTgzYzUxMzYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKQEAgLTU2Nyw4ICs1NjcsMTAgQEAgUmVmPERvY3VtZW50PiBEb2N1
bWVudDo6Y3JlYXRlKERvY3VtZW50JiBjb250ZXh0RG9jdW1lbnQpCiAKIERvY3VtZW50Ojp+RG9j
dW1lbnQoKQogewotICAgIGJvb2wgd2FzUmVtb3ZlZCA9IGFsbERvY3VtZW50c01hcCgpLnJlbW92
ZShtX2lkZW50aWZpZXIpOwotICAgIEFTU0VSVF9VTlVTRUQod2FzUmVtb3ZlZCwgd2FzUmVtb3Zl
ZCk7CisgICAgQVNTRVJUKGFsbERvY3VtZW50c01hcCgpLmNvbnRhaW5zKG1faWRlbnRpZmllcikp
OworICAgIGFsbERvY3VtZW50c01hcCgpLnJlbW92ZShtX2lkZW50aWZpZXIpOworICAgIC8vIFdl
IG5lZWQgdG8gcmVtb3ZlIGZyb20gdGhlIGNvbnRleHRzIG1hcCB2ZXJ5IGVhcmx5IGluIHRoZSBk
ZXN0cnVjdG9yIHNvIHRoYXQgY2FsbGluZyBwb3N0VGFzaygpIG9uIHRoaXMgRG9jdW1lbnQgZnJv
bSBhbm90aGVyIHRocmVhZCBpcyBzYWZlLgorICAgIHJlbW92ZUZyb21Db250ZXh0c01hcCgpOwog
CiAgICAgQVNTRVJUKCFyZW5kZXJWaWV3KCkpOwogICAgIEFTU0VSVChtX3BhZ2VDYWNoZVN0YXRl
ICE9IEluUGFnZUNhY2hlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcAppbmRleCA1MWUzMWQzOGVmOWMzNmM2ZDY3NmY0NDA2YmUzNmMxMTE3Y2Y5Mzgy
Li5jMGMyNmY2ZTc0NzhmOGI1NWJmYTMzMmJhOTY0OTg1YmE2Njg2MThjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC02NSw2ICs2NSwxOSBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAorc3Rh
dGljIExvY2smIGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwTG9jaygpCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPExvY2s+IGxvY2s7CisgICAgcmV0dXJuIGxvY2s7Cit9CisKK3N0
YXRpYyBIYXNoTWFwPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0Kj4mIGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRp
ZmllciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+PiBjb250ZXh0czsKKyAgICBBU1NFUlQoYWxs
U2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXBMb2NrKCkuaXNMb2NrZWQoKSk7CisgICAgcmV0dXJu
IGNvbnRleHRzOworfQorCiBzdHJ1Y3QgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6UGVuZGluZ0V4
Y2VwdGlvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC04Nyw2
ICsxMDAsMjkgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpCiB7CiB9CiAKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OmNvbnRleHRJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXND
b250ZXh0VGhyZWFkKCkpOworICAgIGlmICghbV9jb250ZXh0SWRlbnRpZmllcikgeworICAgICAg
ICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwTG9jaygp
KTsKKworICAgICAgICBtX2NvbnRleHRJZGVudGlmaWVyID0gZ2VuZXJhdGVPYmplY3RJZGVudGlm
aWVyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyVHlwZT4oKTsKKworICAgICAgICBB
U1NFUlQoIWFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKCkuY29udGFpbnMobV9jb250ZXh0
SWRlbnRpZmllcikpOworICAgICAgICBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpLmFk
ZChtX2NvbnRleHRJZGVudGlmaWVyLCBjb25zdF9jYXN0PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
Pih0aGlzKSk7CisgICAgfQorICAgIHJldHVybiBtX2NvbnRleHRJZGVudGlmaWVyOworfQorCit2
b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlbW92ZUZyb21Db250ZXh0c01hcCgpCit7Cisg
ICAgaWYgKG1fY29udGV4dElkZW50aWZpZXIpIHsKKyAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tl
cihhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2soKSk7CisgICAgICAgIEFTU0VSVChh
bGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpLmNvbnRhaW5zKG1fY29udGV4dElkZW50aWZp
ZXIpKTsKKyAgICAgICAgYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXAoKS5yZW1vdmUobV9j
b250ZXh0SWRlbnRpZmllcik7CisgICAgfQorfQorCiAjaWYgQVNTRVJUX0RJU0FCTEVECiAKIGlu
bGluZSB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNoZWNrQ29uc2lzdGVuY3koKSBjb25z
dApAQCAtMTE2LDYgKzE1MiwxMiBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpCiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAorICAgIGlmIChtX2NvbnRleHRJZGVudGlmaWVyKSB7CisgICAgICAgIExvY2tlcjxM
b2NrPiBsb2NrZXIoYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXBMb2NrKCkpOworICAgICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpLmNv
bnRhaW5zKG1fY29udGV4dElkZW50aWZpZXIpLAorICAgICAgICAgICAgIkEgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCBzdWJjbGFzcyBpbnN0YW5jZSBpbXBsZW1lbnRpbmcgcG9zdFRhc2sgc2hvdWxk
IGhhdmUgYWxyZWFkeSByZW1vdmVkIGl0c2VsZiBmcm9tIHRoZSBtYXAiKTsKKyAgICB9CisKICAg
ICBtX2luU2NyaXB0RXhlY3V0aW9uQ29udGV4dERlc3RydWN0b3IgPSB0cnVlOwogI2VuZGlmCiAK
QEAgLTU4MCw2ICs2MjIsMTkgQEAgYm9vbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFz
a1RvKGNvbnN0IERvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVyJiBjb250ZXgKICAgICB9KTsKICAg
ICByZXR1cm4gd2FzUG9zdGVkOwogfQorCiAjZW5kaWYKIAorYm9vbCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0Ojpwb3N0VGFza1RvKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGlkZW50
aWZpZXIsIFRhc2smJiB0YXNrKQoreworICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoYWxsU2NyaXB0
RXhlY3V0aW9uQ29udGV4dHNNYXBMb2NrKCkpOworICAgIGF1dG8qIGNvbnRleHQgPSBhbGxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0c01hcCgpLmdldChpZGVudGlmaWVyKTsKKworICAgIGlmICghY29u
dGV4dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29udGV4dC0+cG9zdFRhc2soV1RG
TW92ZSh0YXNrKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IGFm
NzUwMjA3MWE1ZWY5ZWQ3YzhiOGE5YTQwYjY4OGY2ZDhkOWIxNDkuLjJhZDI3ZWYzN2Q3NjEyMzNh
NmU1ZmUwYzllYjc5MDJjNGQwMjY0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9Dcm9zc1Ro
cmVhZFRhc2suaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgorI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNzgsNiArNzksOSBAQCBu
YW1lc3BhY2UgSURCQ2xpZW50IHsKIGNsYXNzIElEQkNvbm5lY3Rpb25Qcm94eTsKIH0KIAorZW51
bSBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRJZGVudGlmaWVyVHlwZT47CisKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQgOiBwdWJsaWMgU2VjdXJpdHlDb250ZXh0IHsKIHB1YmxpYzoKICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7CkBAIC0yNTMsNiArMjU3LDkgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIGJvb2wgcG9zdFRhc2tUbyhjb25zdCBEb2N1bWVudE9yV29ya2VySWRlbnRp
ZmllciYsIFdURjo6RnVuY3Rpb248dm9pZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+JiYpOwog
I2VuZGlmCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgcG9zdFRhc2tUbyhTY3JpcHRF
eGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgVGFzayYmKTsKKworICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZGVudGlmaWVyKCkgY29uc3Q7CiAKIHByb3RlY3Rl
ZDoKICAgICBjbGFzcyBBZGRDb25zb2xlTWVzc2FnZVRhc2sgOiBwdWJsaWMgVGFzayB7CkBAIC0y
NzUsNiArMjgyLDcgQEAgcHJvdGVjdGVkOgogICAgIEFjdGl2ZURPTU9iamVjdDo6UmVhc29uRm9y
U3VzcGVuc2lvbiByZWFzb25Gb3JTdXNwZW5kaW5nQWN0aXZlRE9NT2JqZWN0cygpIGNvbnN0IHsg
cmV0dXJuIG1fcmVhc29uRm9yU3VzcGVuZGluZ0FjdGl2ZURPTU9iamVjdHM7IH0KIAogICAgIGJv
b2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CisgICAgdm9pZCByZW1vdmVGcm9tQ29udGV4
dHNNYXAoKTsKIAogcHJpdmF0ZToKICAgICAvLyBUaGUgZm9sbG93aW5nIGFkZE1lc3NhZ2UgZnVu
Y3Rpb24gaXMgZGVwcmVjYXRlZC4KQEAgLTMyOCw2ICszMzYsNyBAQCBwcml2YXRlOgogI2VuZGlm
CiAKICAgICBTdHJpbmcgbV9kb21haW5Gb3JDYWNoZVBhcnRpdGlvbjsKKyAgICBtdXRhYmxlIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIG1fY29udGV4dElkZW50aWZpZXI7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCmluZGV4IDQxNWFiYWMzMGU1MzQyYWJkYzMwZDJhYjE1OTZjZjNiNGVj
NmI4ZDUuLjA1MTY3ZGMxN2IzZWQ1OTk1YjliNmFlOWFiM2I4Njk0OTBmNThiZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC04OSw2ICs4OSw4
IEBAIFdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjCiBXb3JrZXJHbG9iYWxTY29wZTo6fldvcmtlckds
b2JhbFNjb3BlKCkKIHsKICAgICBBU1NFUlQodGhyZWFkKCkudGhyZWFkKCkgPT0gJlRocmVhZDo6
Y3VycmVudCgpKTsKKyAgICAvLyBXZSBuZWVkIHRvIHJlbW92ZSBmcm9tIHRoZSBjb250ZXh0cyBt
YXAgdmVyeSBlYXJseSBpbiB0aGUgZGVzdHJ1Y3RvciBzbyB0aGF0IGNhbGxpbmcgcG9zdFRhc2so
KSBvbiB0aGlzIFdvcmtlckdsb2JhbFNjb3BlIGZyb20gYW5vdGhlciB0aHJlYWQgaXMgc2FmZS4K
KyAgICByZW1vdmVGcm9tQ29udGV4dHNNYXAoKTsKIAogICAgIG1fcGVyZm9ybWFuY2UgPSBudWxs
cHRyOwogICAgIG1fY3J5cHRvID0gbnVsbHB0cjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>